//
//     Generated by class-dump 3.5 (64 bit).
//
//     class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2013 by Steve Nygard.
//

#pragma mark Blocks

typedef void (^CDUnknownBlockType)(void); // return type and parameters are unknown

#pragma mark Named Structures

struct IMFileLocation_t {
    char *_field1;
    char *_field2;
    char *_field3;
    char *_field4;
    int _field5;
};

typedef struct IMPreviewConstraints {
    CGFloat maxPxWidth;
    CGSize minThumbnailPxSize;
    CGFloat scale;
    BOOL isSticker;
    BOOL generateMetadata;
} IMPreviewConstraints;

extern IMPreviewConstraints IMPreviewConstraintsFromDictionary(NSDictionary *dictionary);
extern NSDictionary *IMPreviewConstraintsDictionaryFromConstraint(IMPreviewConstraints constraint);
extern BOOL IMPreviewConstraintsEqualToConstraints(IMPreviewConstraints constraints1, IMPreviewConstraints constraints2);
extern IMPreviewConstraints IMPreviewConstraintsZero(void);

struct _TidyDoc {
    int _field1;
};

struct __va_list_tag {
    unsigned int _field1;
    unsigned int _field2;
    void *_field3;
    void *_field4;
};

#pragma mark -

//
// File: Versions/A/IMSharedUtilities
// UUID: 889CA3DD-770D-3AAB-85AE-7A6E5B8E4FAE
//
//                           Arch: x86_64
//                Current version: 1.0.0
//          Compatibility version: 1.0.0
//                 Source version: 1981.1.15.0.0
//
// Objective-C Garbage Collection: Unsupported
//

@interface IMItem : NSObject <NSSecureCoding, NSCopying>
{
    NSString *_handle;
    NSString *_service;
    NSString *_account;
    NSString *_unformattedID;
    NSString *_accountID;
    NSString *_roomName;
    NSDictionary *_senderInfo;
    NSString *_guid;
    NSDate *_time;
    NSString *_countryCode;
    long long _messageID;
    id _context;
    long long _type;
    NSString *_balloonBundleID;
    unsigned long long _sortID;
    NSString *_destinationCallerID;
    NSDate *_clientSendTime;
    NSString *_personCentric;
    long long _cloudKitSyncState;
    NSString *_cloudKitRecordID;
    NSData *_cloudKitServerChangeTokenBlob;
    NSString *_cloudKitRecordChangeTag;
    NSString *_parentChatID;
    long long _srCloudKitSyncState;
    NSString *_srCloudKitRecordID;
    NSString *_srCloudKitRecordChangeTag;
}

+ (BOOL)supportsSecureCoding;
+ (Class)classForMessageItemDictionary:(id)arg1;
+ (Class)classForIMItemType:(long long)arg1;
@property(copy, nonatomic) NSString *srCloudKitRecordChangeTag; // @synthesize srCloudKitRecordChangeTag=_srCloudKitRecordChangeTag;
@property(copy, nonatomic) NSString *srCloudKitRecordID; // @synthesize srCloudKitRecordID=_srCloudKitRecordID;
@property(nonatomic) long long srCloudKitSyncState; // @synthesize srCloudKitSyncState=_srCloudKitSyncState;
@property(copy, nonatomic) NSString *parentChatID; // @synthesize parentChatID=_parentChatID;
@property(copy, nonatomic) NSString *cloudKitRecordChangeTag; // @synthesize cloudKitRecordChangeTag=_cloudKitRecordChangeTag;
@property(copy, nonatomic) NSData *cloudKitServerChangeTokenBlob; // @synthesize cloudKitServerChangeTokenBlob=_cloudKitServerChangeTokenBlob;
@property(copy, nonatomic) NSString *cloudKitRecordID; // @synthesize cloudKitRecordID=_cloudKitRecordID;
@property(nonatomic) long long cloudKitSyncState; // @synthesize cloudKitSyncState=_cloudKitSyncState;
@property(retain, nonatomic) NSString *personCentric; // @synthesize personCentric=_personCentric;
@property(retain, nonatomic) NSDate *clientSendTime; // @synthesize clientSendTime=_clientSendTime;
@property(retain, nonatomic) NSString *destinationCallerID; // @synthesize destinationCallerID=_destinationCallerID;
@property(nonatomic) unsigned long long sortID; // @synthesize sortID=_sortID;
@property(retain, nonatomic) NSString *balloonBundleID; // @synthesize balloonBundleID=_balloonBundleID;
@property(nonatomic) long long type; // @synthesize type=_type;
@property(retain, nonatomic) id context; // @synthesize context=_context;
@property(nonatomic, setter=_setMessageID:) long long messageID; // @synthesize messageID=_messageID;
@property(retain, nonatomic) NSString *countryCode; // @synthesize countryCode=_countryCode;
@property(retain, nonatomic) NSDate *time; // @synthesize time=_time;
@property(retain, nonatomic) NSString *guid; // @synthesize guid=_guid;
@property(retain, nonatomic) NSDictionary *senderInfo; // @synthesize senderInfo=_senderInfo;
@property(retain, nonatomic) NSString *roomName; // @synthesize roomName=_roomName;
@property(retain, nonatomic) NSString *accountID; // @synthesize accountID=_accountID;
@property(retain, nonatomic) NSString *unformattedID; // @synthesize unformattedID=_unformattedID;
@property(retain, nonatomic) NSString *account; // @synthesize account=_account;
@property(retain, nonatomic) NSString *service; // @synthesize service=_service;
@property(retain, nonatomic) NSString *handle; // @synthesize handle=_handle;
@property(readonly, nonatomic) BOOL isLastMessageCandidate;
@property(readonly, nonatomic) BOOL isFirstMessageCandidate;
- (unsigned long long)hash;
- (BOOL)isOlderThanItem:(id)arg1;
- (BOOL)isEqual:(id)arg1;
@property(retain, nonatomic) NSString *personCentricID;
@property(retain, nonatomic) NSString *sender;
@property(readonly, nonatomic) BOOL isFromMe;
- (id)dictionaryRepresentation;
- (id)copyDictionaryRepresentation;
- (id)initWithIMRemoteObjectSerializedDictionary:(id)arg1;
- (void)encodeWithIMRemoteObjectSerializedDictionary:(id)arg1;
- (void)encodeWithCoder:(id)arg1;
- (id)initWithCoder:(id)arg1;
- (id)copyWithZone:(struct _NSZone *)arg1;
- (void)dealloc;
- (id)initWithSenderInfo:(id)arg1 time:(id)arg2 guid:(id)arg3 messageID:(long long)arg4 account:(id)arg5 accountID:(id)arg6 service:(id)arg7 handle:(id)arg8 roomName:(id)arg9 unformattedID:(id)arg10 countryCode:(id)arg11 type:(long long)arg12;
- (id)initWithSender:(id)arg1 time:(id)arg2 guid:(id)arg3 type:(long long)arg4;
- (id)initWithDictionary:(id)arg1;
- (id)description;
- (struct _NSRange)associatedMessageRange;
- (BOOL)isSticker;
- (BOOL)isMessageEdit;
- (BOOL)isBreadcrumb;
- (BOOL)isMessageAcknowledgment;
- (long long)associatedMessageType;
- (id)associatedMessageGUID;
- (BOOL)isAssociatedMessageItem;
- (id)pluginSessionGUID;
- (id)consumedSessionPayloads;

@end


@protocol IMEventListenerResponse <NSObject>
@property(readonly, nonatomic) NSError *error;
@property(readonly, nonatomic) NSDictionary *userInfo;
@property(readonly, nonatomic, getter=didSucceed) BOOL success;
@end

@protocol IMKeyValueCollectionStorage <NSObject, NSCopying>
- (void)removeObjectForKey:(id)arg1;
- (id)objectForKey:(id)arg1;
- (void)setObject:(id)arg1 forKey:(id)arg2;
@end

extern NSURL* IMAttachmentPreviewFileURL(NSURL *attachmentURL, NSString *extension, BOOL generateIntermediaryDirectories);

@protocol IMPreviewGeneratorProtocol
+ (BOOL)shouldShadePreview;
+ (BOOL)shouldScaleUpPreview;
+ (BOOL)writesToDisk;
+ (double)maxUpScale;
+ (NSString *)previewExtension;
+ (NSURL *)generateAndPersistPreviewFromSourceURL:(NSURL *)arg1 withPreviewConstraints:(struct IMPreviewConstraints)arg2 error:(id *)arg3;
+ (struct CGImage *)newPreviewFromSourceURL:(NSURL *)arg1 withPreviewConstraints:(struct IMPreviewConstraints)arg2 error:(id *)arg3;
@end

@protocol IMRemoteObjectCoding
- (id)initWithIMRemoteObjectSerializedDictionary:(NSDictionary *)arg1;
- (void)encodeWithIMRemoteObjectSerializedDictionary:(NSMutableDictionary *)arg1;
@end

@protocol IMSingletonOverriding <NSObject>

@optional
- (BOOL)shouldInvokeSelector:(SEL)arg1 onSingleton:(id)arg2;
- (void)didOverrideSingleton:(id)arg1;
@end

@protocol IMUTITypeInformation
+ (NSArray *)UTITypes;
@end


@interface IMTUConversationItem : IMItem <NSSecureCoding, NSCopying, IMRemoteObjectCoding>
{
    unsigned long long _flags;
}

@property(nonatomic) unsigned long long flags; // @synthesize flags=_flags;
- (BOOL)isFromMe;
- (id)conversationUUID;
- (id)copyDictionaryRepresentation;
- (void)encodeWithCoder:(id)arg1;
- (id)initWithDictionary:(id)arg1;
- (id)initWithCoder:(id)arg1;

@end



@interface IMMessageItem : IMItem <NSSecureCoding, NSCopying, IMRemoteObjectCoding>
{
    BOOL _blockingRichLinks;
    BOOL _updatingDataSourcePayload;
    BOOL _backwardsCompatibleVersion;
    BOOL _isSOS;
    unsigned int _error;
    NSString *_subject;
    NSString *_plainBody;
    NSArray *_fileTransferGUIDs;
    unsigned long long _flags;
    NSAttributedString *_body;
    NSData *_bodyData;
    long long _replaceID;
    NSDate *_timeRead;
    NSDate *_timeDelivered;
    NSDate *_timePlayed;
    long long _expireState;
    NSData *_payloadData;
    NSData *_contactsAvatarRecipeData;
    NSString *_expressiveSendStyleID;
    NSDate *_timeExpressiveSendPlayed;
    NSData *_typingIndicatorIcon;
    NSDictionary *_messageSummaryInfo;
    NSDictionary *_bizIntent;
    NSString *_locale;
    NSString *_notificationIDSTokenURI;
}

+ (BOOL)messageContainsSurfDD:(id)arg1;
+ (BOOL)supportsSecureCoding;
@property(nonatomic) BOOL isSOS; // @synthesize isSOS=_isSOS;
@property(nonatomic) BOOL backwardsCompatibleVersion; // @synthesize backwardsCompatibleVersion=_backwardsCompatibleVersion;
@property(nonatomic, getter=isUpdatingDataSourcePayload) BOOL updatingDataSourcePayload; // @synthesize updatingDataSourcePayload=_updatingDataSourcePayload;
@property(retain, nonatomic) NSString *notificationIDSTokenURI; // @synthesize notificationIDSTokenURI=_notificationIDSTokenURI;
@property(nonatomic) BOOL blockingRichLinks; // @synthesize blockingRichLinks=_blockingRichLinks;
@property(retain, nonatomic) NSString *locale; // @synthesize locale=_locale;
@property(retain, nonatomic) NSDictionary *bizIntent; // @synthesize bizIntent=_bizIntent;
@property(retain, nonatomic) NSDictionary *messageSummaryInfo; // @synthesize messageSummaryInfo=_messageSummaryInfo;
@property(retain, nonatomic) NSData *typingIndicatorIcon; // @synthesize typingIndicatorIcon=_typingIndicatorIcon;
@property(retain, nonatomic) NSDate *timeExpressiveSendPlayed; // @synthesize timeExpressiveSendPlayed=_timeExpressiveSendPlayed;
@property(retain, nonatomic) NSString *expressiveSendStyleID; // @synthesize expressiveSendStyleID=_expressiveSendStyleID;
@property(retain, nonatomic) NSData *contactsAvatarRecipeData; // @synthesize contactsAvatarRecipeData=_contactsAvatarRecipeData;
@property(retain, nonatomic) NSData *payloadData; // @synthesize payloadData=_payloadData;
@property(nonatomic) long long expireState; // @synthesize expireState=_expireState;
@property(retain, nonatomic) NSDate *timePlayed; // @synthesize timePlayed=_timePlayed;
@property(retain, nonatomic) NSDate *timeDelivered; // @synthesize timeDelivered=_timeDelivered;
@property(retain, nonatomic) NSDate *timeRead; // @synthesize timeRead=_timeRead;
@property(nonatomic) long long replaceID; // @synthesize replaceID=_replaceID;
@property(retain, nonatomic) NSData *bodyData; // @synthesize bodyData=_bodyData;
@property(nonatomic) unsigned long long flags; // @synthesize flags=_flags;
@property(retain, nonatomic) NSArray *fileTransferGUIDs; // @synthesize fileTransferGUIDs=_fileTransferGUIDs;
@property(nonatomic) unsigned int errorCode; // @synthesize errorCode=_error;
@property(retain, nonatomic) NSString *plainBody; // @synthesize plainBody=_plainBody;
@property(retain, nonatomic) NSString *subject; // @synthesize subject=_subject;
- (id)_localizedBackwardsCompatibleExpressiveSendText;
- (BOOL)isLastMessageCandidate;
- (BOOL)isFirstMessageCandidate;
- (id)description;
@property(readonly, copy, nonatomic) NSAttributedString *breadcrumbText;
- (BOOL)isEqual:(id)arg1;
@property(retain, nonatomic) NSAttributedString *body; // @synthesize body=_body;
- (void)_clearBodyData;
- (void)_regenerateBodyData;
- (void)_regenerateBodyText;
- (void)_generateBodyTextIfNeeded;
- (void)_generateBodyDataIfNeeded;
- (void)adjustIsEmptyFlag;
- (void)_updateFlags:(unsigned long long)arg1;
- (void)setWasDataDetected:(BOOL)arg1;
@property(readonly, nonatomic) BOOL wasDataDetected;
@property(nonatomic) BOOL hasDataDetectorResults;
@property(nonatomic) BOOL isCorrupt;
@property(readonly, nonatomic) BOOL isFromExternalSource;
@property(readonly, nonatomic) BOOL wasDowngraded;
@property(readonly, nonatomic) BOOL isSent;
@property(readonly, nonatomic) BOOL isEmote;
@property(readonly, nonatomic) BOOL isLocatingMessage;
@property(readonly, nonatomic) BOOL isTypingMessage;
@property(readonly, nonatomic) BOOL isPrepared;
@property(readonly, nonatomic) BOOL isDelivered;
- (BOOL)isFromMe;
@property(readonly, nonatomic) BOOL isPlayed;
@property(readonly, nonatomic) BOOL isExpirable;
@property(readonly, nonatomic) BOOL isAudioMessage;
@property(readonly, nonatomic) BOOL isRead;
@property(readonly, nonatomic) BOOL isEmpty;
@property(readonly, nonatomic) BOOL isFinished;
@property(readonly, nonatomic) BOOL isAlert;
- (id)sender;
- (void)dealloc;
- (id)initWithSenderInfo:(id)arg1 time:(id)arg2 timeRead:(id)arg3 timeDelivered:(id)arg4 timePlayed:(id)arg5 subject:(id)arg6 body:(id)arg7 bodyData:(id)arg8 attributes:(id)arg9 fileTransferGUIDs:(id)arg10 flags:(unsigned long long)arg11 guid:(id)arg12 messageID:(long long)arg13 account:(id)arg14 accountID:(id)arg15 service:(id)arg16 handle:(id)arg17 roomName:(id)arg18 unformattedID:(id)arg19 countryCode:(id)arg20 expireState:(long long)arg21 balloonBundleID:(id)arg22 payloadData:(id)arg23 expressiveSendStyleID:(id)arg24 timeExpressiveSendPlayed:(id)arg25 bizIntent:(id)arg26 locale:(id)arg27 errorType:(unsigned int)arg28 type:(long long)arg29;
- (id)initWithSenderInfo:(id)arg1 time:(id)arg2 timeRead:(id)arg3 timeDelivered:(id)arg4 timePlayed:(id)arg5 subject:(id)arg6 body:(id)arg7 bodyData:(id)arg8 attributes:(id)arg9 fileTransferGUIDs:(id)arg10 flags:(unsigned long long)arg11 guid:(id)arg12 messageID:(long long)arg13 account:(id)arg14 accountID:(id)arg15 service:(id)arg16 handle:(id)arg17 roomName:(id)arg18 unformattedID:(id)arg19 countryCode:(id)arg20 expireState:(long long)arg21 balloonBundleID:(id)arg22 payloadData:(id)arg23 expressiveSendStyleID:(id)arg24 timeExpressiveSendPlayed:(id)arg25 bizIntent:(id)arg26 locale:(id)arg27 errorType:(unsigned int)arg28;
- (id)initWithSenderInfo:(id)arg1 time:(id)arg2 guid:(id)arg3 messageID:(long long)arg4 account:(id)arg5 accountID:(id)arg6 service:(id)arg7 handle:(id)arg8 roomName:(id)arg9 unformattedID:(id)arg10 countryCode:(id)arg11;
- (id)initWithSender:(id)arg1 time:(id)arg2 guid:(id)arg3 type:(long long)arg4;
- (id)initWithSender:(id)arg1 time:(id)arg2 body:(id)arg3 attributes:(id)arg4 fileTransferGUIDs:(id)arg5 flags:(unsigned long long)arg6 error:(id)arg7 guid:(id)arg8 type:(long long)arg9;
- (id)initWithSender:(id)arg1 time:(id)arg2 body:(id)arg3 attributes:(id)arg4 fileTransferGUIDs:(id)arg5 flags:(unsigned long long)arg6 error:(id)arg7 guid:(id)arg8;
- (id)copyDictionaryRepresentation;
- (id)initWithDictionary:(id)arg1;
- (id)initWithDictionary:(id)arg1 hint:(id)arg2;
- (void)encodeWithCoder:(id)arg1;
- (id)initWithCoder:(id)arg1;
- (void)enumerateAttachmentGUIDsWithBlock:(CDUnknownBlockType)arg1;
- (id)copyForBackwardsCompatibility;
- (id)copyWithFlags:(unsigned long long)arg1;
- (id)copyWithZone:(struct _NSZone *)arg1;

@end

@interface FZMessage : IMMessageItem <NSSecureCoding, NSCopying>
{
}

+ (BOOL)supportsSecureCoding;
- (id)initWithIMRemoteObjectSerializedDictionary:(id)arg1;
- (void)encodeWithIMRemoteObjectSerializedDictionary:(id)arg1;
- (void)encodeWithCoder:(id)arg1;
- (id)initWithCoder:(id)arg1;
- (id)copyWithZone:(struct _NSZone *)arg1;

@end



@interface IMDeviceConditions : NSObject
{
}

+ (id)sharedInstance;
@property(readonly) BOOL isDeviceCharging;
- (id)_batteryStatus;
@property(readonly) BOOL isDeviceOnWifi;

@end

@interface IMCoreAutomationNotifications : NSObject
{
    long long _chatsWrittenCount;
    long long _messagesWrittenCount;
    long long _attachmentsWrittenCount;
}

+ (id)sharedInstance;
@property(readonly) long long attachmentsWrittenCount; // @synthesize attachmentsWrittenCount=_attachmentsWrittenCount;
@property(readonly) long long messagesWrittenCount; // @synthesize messagesWrittenCount=_messagesWrittenCount;
@property(readonly) long long chatsWrittenCount; // @synthesize chatsWrittenCount=_chatsWrittenCount;
- (void)addNewMessagesSyncedCount:(long long)arg1;
- (void)addNewAttachmentsSyncedCount:(long long)arg1;
- (void)addNewChatsSyncedCount:(long long)arg1;
- (void)postCoreAutomationNotificationFinishedTapToDownload:(id)arg1 downloadedFromCloudKitSuccessfully:(BOOL)arg2;
- (void)postCoreAutomationNotificationFinishedPurgingAttachments:(id)arg1 withErrorString:(id)arg2;
- (void)postCoreAutomationNotificationWithDictionary:(id)arg1 withVerboseLogging:(BOOL)arg2;
- (void)postCoreAutomationNotificationWithAction:(id)arg1;
- (void)postCoreAutomationNotificationFinishedPeriodicSyncNotificationWithStartTime:(id)arg1 chatsDidsync:(BOOL)arg2 messagesDidSync:(BOOL)arg3 attachmentsDidSync:(BOOL)arg4;
- (void)clearSyncCounts;
- (id)init;

@end

@interface IMEventNotificationManager : NSObject

@property long long busyCount; // @synthesize busyCount=_busyCount;
@property(readonly, nonatomic) NSMutableArray *registeredNotificationQueues; // @synthesize registeredNotificationQueues=_registeredNotificationQueues;
//@property(readonly, nonatomic) IMEventListenerList *eventListeners; // @synthesize eventListeners=_eventListeners;
@property double eventTimeout; // @synthesize eventTimeout=_eventTimeout;
//@property(readonly, nonatomic) IMAutomaticEventNotificationQueue *notificationQueue; // @synthesize notificationQueue=_notificationQueue;

- (void)appendNotificationForEventHandler:(id)arg1 sender:(id)arg2 eventNotificationBlock:(CDUnknownBlockType)arg3;
- (void)pushNotificationForEventHandler:(id)arg1 sender:(id)arg2 eventNotificationBlock:(CDUnknownBlockType)arg3;
- (void)appendNotificationForEventHandler:(id)arg1 eventNotificationBlock:(CDUnknownBlockType)arg2;
- (void)pushNotificationForEventHandler:(id)arg1 eventNotificationBlock:(CDUnknownBlockType)arg2;
- (void)pauseEventNotifications:(BOOL)arg1;
- (void)cancelAllEventNotifications;
- (void)cancelEventNotificationsForEventHandler:(id)arg1;
- (id)createEventListenerForNotificationName:(id)arg1 object:(id)arg2;
- (void)registerEventListener:(id)arg1;
- (void)eventListenerDidFinish:(id)arg1;
- (void)registerNotificationQueue:(id)arg1;
- (void)eventNotificationQueue:(id)arg1 didChangeBusyState:(BOOL)arg2;
@property(readonly, getter=isBusy) BOOL busy;
- (void)dealloc;
- (id)init;

// Remaining properties
@property(readonly, copy) NSString *debugDescription;
@property(readonly, copy) NSString *description;
@property(readonly) unsigned long long hash;
@property(readonly) Class superclass;

@end

@interface IMStickerPack : NSObject
{
    NSMutableSet *_stickers;
    struct NSString *_GUID;
    NSString *_name;
    NSURL *_displayAssetURL;
    NSURL *_fileURL;
    NSString *_appBundleIdentifier;
    NSString *_appVersion;
}

@property(copy, nonatomic) NSString *appVersion; // @synthesize appVersion=_appVersion;
@property(copy, nonatomic) NSString *appBundleIdentifier; // @synthesize appBundleIdentifier=_appBundleIdentifier;
@property(copy, nonatomic) NSURL *fileURL; // @synthesize fileURL=_fileURL;
@property(copy, nonatomic) NSURL *displayAssetURL; // @synthesize displayAssetURL=_displayAssetURL;
@property(copy, nonatomic) NSString *name; // @synthesize name=_name;
@property(copy, nonatomic) NSString *GUID; // @synthesize GUID=_GUID;
- (id)initWithStickerPackProperties:(id)arg1 stickerPackBundleURL:(id)arg2 appBundleIdentifier:(id)arg3 appVersion:(id)arg4;
- (id)_generatePackGUIDWithPackID:(id)arg1 appBundleID:(id)arg2 appVersion:(id)arg3;
- (id)description;
- (id)initWithDictionary:(id)arg1;
- (id)dictionaryRepresentation;
- (void)addSticker:(id)arg1;
- (void)dealloc;
@property(readonly, nonatomic) NSSet *stickers;
- (id)initWithGUID:(struct NSString *)arg1 name:(id)arg2 displayAssetURL:(id)arg3 fileURL:(id)arg4 appBundleIdentifier:(id)arg5 appVersion:(id)arg6;

@end


@interface IMPreviewGeneratorManager : NSObject
{
    NSDictionary *_UTITypes;
    NSDictionary *_dynamicTypes;
}

+ (id)previewGeneratorClasses;
+ (id)sharedInstance;
@property(copy, nonatomic) NSDictionary *dynamicTypes; // @synthesize dynamicTypes=_dynamicTypes;
@property(copy, nonatomic) NSDictionary *UTITypes; // @synthesize UTITypes=_UTITypes;
- (void)dealloc;
- (Class)_classForUTIType:(id)arg1;
- (Class)_previewGeneratorClassForSourceURL:(id)arg1;
- (BOOL)movePreviewToDiskCache:(id)arg1 previewURL:(id)arg2 error:(id *)arg3;
- (BOOL)persistPreviewToDiskCache:(struct CGImage *)arg1 previewURL:(id)arg2 error:(id *)arg3;
- (struct CGImage *)newPreviewFromSourceURL:(id)arg1 withPreviewConstraints:(struct IMPreviewConstraints)arg2 error:(id *)arg3;
- (BOOL)generateAndPersistPreviewFromSourceURL:(id)arg1 previewURL:(id)arg2 previewConstraints:(struct IMPreviewConstraints)arg3 error:(id *)arg4;
- (id)init;

@end

@interface IMDeviceUtilities : NSObject
{
}

+ (BOOL)IMDeviceIsGreenTea;
+ (BOOL)IMDeviceIsChinaRegion;
+ (BOOL)IMSupportsASTC;

@end

@interface IMRecentItem : NSObject
{
    NSNumber *_timestamp;
    NSString *_GUID;
    NSURL *_fileURL;
    NSData *_payloadData;
    NSDictionary *_messageItemInfo;
    NSString *_accessibilityString;
}

@property(retain, nonatomic) NSString *accessibilityString; // @synthesize accessibilityString=_accessibilityString;
@property(retain, nonatomic) NSDictionary *messageItemInfo; // @synthesize messageItemInfo=_messageItemInfo;
@property(retain, nonatomic) NSNumber *timestamp; // @synthesize timestamp=_timestamp;
@property(retain, nonatomic) NSData *payloadData; // @synthesize payloadData=_payloadData;
@property(retain, nonatomic) NSURL *fileURL; // @synthesize fileURL=_fileURL;
@property(copy, nonatomic) NSString *GUID; // @synthesize GUID=_GUID;
- (id)asJSONObject;
- (unsigned long long)hash;
- (BOOL)isEqual:(id)arg1;
- (id)initWithGUID:(id)arg1 data:(id)arg2 messageItemInfo:(id)arg3;
- (void)dealloc;

@end

@interface IMRecentItemsList : NSObject
{
    NSObject<OS_dispatch_queue> *_diskWritingQueue;
}

+ (id)sharedInstance;
- (id)_guidForFileURL:(id)arg1;
- (void)_updateRecentsCache:(id)arg1 forDomain:(id)arg2;
- (id)_recentsCacheForDomain:(id)arg1;
- (id)_buildLRUCacheUsingArray:(id)arg1 forDomain:(id)arg2;
- (void)_removeRecentDataPayloadEntryFromDisk:(id)arg1 forDomain:(id)arg2;
- (void)_saveRecentDataPayloadEntryToDisk:(id)arg1 forDomain:(id)arg2;
- (void)_removeRecentDataPayloadEntry:(id)arg1 forDomain:(id)arg2;
- (void)addRecentItemAtFileURL:(id)arg1 GUID:(id)arg2 infoDictionary:(id)arg3 forDomain:(id)arg4;
- (void)_addRecentDataPayloadEntry:(id)arg1 toDomain:(id)arg2;
- (void)fetchRecentItemsForDomain:(id)arg1 completion:(CDUnknownBlockType)arg2;
- (void)fetchRecentStickersWithCompletion:(CDUnknownBlockType)arg1;
- (void)addRecentItemWithData:(id)arg1 GUID:(id)arg2 infoDictionary:(id)arg3 forDomain:(id)arg4;
- (void)deleteRecentsInFirstLaunch;
- (void)deleteAllRecentItemsForDomain:(id)arg1;
- (void)deleteRecentItemWithData:(id)arg1 GUID:(id)arg2 forDomain:(id)arg3;
- (void)deleteRecentItemWithFileURL:(id)arg1 GUID:(id)arg2 forDomain:(id)arg3;
- (void)dispatchCacheUpdateWithBlock:(CDUnknownBlockType)arg1;
- (long long)cacheSizeForDomain:(id)arg1;
- (void)dealloc;
- (id)init;

@end


@interface IMTranscoderTelemetry : NSObject
{
    unsigned char _signpostId;
}

- (void)emitSignpostTranscodeSkipSourceUTI:(id)arg1;
- (void)emitSignpostTranscodeFinalForDestinationUTI:(id)arg1;
- (void)emitSignpostTranscodeStepForDestinationUTI:(id)arg1;
- (void)emitSignpostNoTranscodeFromUTI:(id)arg1;
- (void)_emitSignpostTranscodeRange:(long long)arg1 begin:(BOOL)arg2;
- (void)_emitSignpostPreviewGenerationRange:(long long)arg1 begin:(BOOL)arg2;
- (void)emitPreviewGenerationEndFromUTI:(id)arg1;
- (void)emitPreviewGenerationBeginFromUTI:(id)arg1;
- (void)emitTranscodeEndFromUTI:(id)arg1;
- (void)emitTranscodeBeginFromUTI:(id)arg1;
- (long long)_telemetryImageTypeForUTI:(id)arg1;
- (id)init;

@end

@interface IMLocationShareStatusChangeItem : IMItem <NSSecureCoding, NSCopying, IMRemoteObjectCoding>
{
    BOOL _actionable;
    BOOL _expired;
    long long _status;
    NSString *_otherCountryCode;
    NSString *_otherHandle;
    NSString *_otherUnformattedID;
    long long _direction;
}

+ (BOOL)supportsSecureCoding;
@property(nonatomic) long long direction; // @synthesize direction=_direction;
@property(retain, nonatomic) NSString *otherUnformattedID; // @synthesize otherUnformattedID=_otherUnformattedID;
@property(retain, nonatomic) NSString *otherHandle; // @synthesize otherHandle=_otherHandle;
@property(retain, nonatomic) NSString *otherCountryCode; // @synthesize otherCountryCode=_otherCountryCode;
@property(nonatomic) BOOL expired; // @synthesize expired=_expired;
@property(nonatomic) BOOL actionable; // @synthesize actionable=_actionable;
@property(nonatomic) long long status; // @synthesize status=_status;
- (BOOL)isLastMessageCandidate;
- (id)copyDictionaryRepresentation;
- (id)initWithDictionary:(id)arg1;
- (BOOL)isEqual:(id)arg1;
- (void)encodeWithCoder:(id)arg1;
- (id)initWithCoder:(id)arg1;
- (id)copyWithZone:(struct _NSZone *)arg1;
- (void)dealloc;

@end

@interface IMGroupTitleChangeItem : IMItem <NSSecureCoding, NSCopying, IMRemoteObjectCoding>
{
    NSString *_title;
    NSString *_otherCountryCode;
    NSString *_otherHandle;
    NSString *_otherUnformattedID;
}

+ (BOOL)supportsSecureCoding;
@property(retain, nonatomic) NSString *otherUnformattedID; // @synthesize otherUnformattedID=_otherUnformattedID;
@property(retain, nonatomic) NSString *otherHandle; // @synthesize otherHandle=_otherHandle;
@property(retain, nonatomic) NSString *otherCountryCode; // @synthesize otherCountryCode=_otherCountryCode;
@property(retain, nonatomic) NSString *title; // @synthesize title=_title;
- (id)copyDictionaryRepresentation;
- (id)initWithDictionary:(id)arg1;
- (BOOL)isEqual:(id)arg1;
- (void)encodeWithCoder:(id)arg1;
- (id)initWithCoder:(id)arg1;
- (id)copyWithZone:(struct _NSZone *)arg1;
- (void)dealloc;

@end

@interface IMCTSMSUtilities : NSObject
{
}

+ (BOOL)IMMessagesFilteringSettingForPreferedSubscription;
+ (void)IMSynchronizePreferredSubscriptionMMSCapabilityToWatch;
+ (void)IMSynchronizeMMSCapabilityToWatch:(BOOL)arg1;
+ (BOOL)MMSRestrictedModeEnabledForPhoneNumber:(id)arg1 simID:(id)arg2 reset:(BOOL)arg3;
+ (BOOL)IMMMSRestrictedModeEnabledForPhoneNumber:(id)arg1 simID:(id)arg2;
+ (BOOL)IMMMSEagerUploadDisabledInCarrierBundleForPhoneNumber:(id)arg1 simID:(id)arg2;
+ (BOOL)IMIsEagerUploadEnabledForPhoneNumber:(id)arg1 simID:(id)arg2;
+ (BOOL)IMShouldShowMMSEmailAddress:(id)arg1 simID:(id)arg2;
+ (id)IMMMSEmailAddressToMatchForPhoneNumber:(id)arg1 simID:(id)arg2;
+ (unsigned long long)IMiMessageMaxTransferVideoFileSizeForWifiForPhoneNumber:(unsigned long long *)arg1 cellSize:(unsigned long long *)arg2 serverConfigurationBag:(id)arg3 phoneNumber:(id)arg4 simID:(id)arg5;
+ (unsigned long long)IMiMessageMaxTransferAudioFileSizeForWifiForPhoneNumber:(unsigned long long *)arg1 cellSize:(unsigned long long *)arg2 serverConfigurationBag:(id)arg3 phoneNumber:(id)arg4 simID:(id)arg5;
+ (void)IMiMessageMaxTransferFileSizeForWifiForPhoneNumber:(unsigned long long *)arg1 cellSize:(unsigned long long *)arg2 serverConfigurationBag:(id)arg3 phoneNumber:(id)arg4 simID:(id)arg5;
+ (double)IMMMSMaximumDurationWithPreset:(id)arg1 phoneNumber:(id)arg2 simID:(id)arg3;
+ (double)IMMMSMaximumVideoDurationForPhoneNumber:(id)arg1 simID:(id)arg2;
+ (double)IMMMSMaximumAudioDurationForPhoneNumber:(id)arg1 simID:(id)arg2;
+ (BOOL)IMMMSSupportsH264VideoForPhoneNumber:(id)arg1 simID:(id)arg2;
+ (int)IMMMSMaxImageDimensionForPhoneNumber:(id)arg1 simID:(id)arg2;
+ (int)IMMMSMaxRecipientsForPhoneNumber:(id)arg1 simID:(id)arg2;
+ (BOOL)IMMMSGroupTextOnlyMessagesSendAsMMSForPhoneNumber:(id)arg1 simID:(id)arg2;
+ (int)IMMMSMaximumMessageByteCountForPhoneNumber:(id)arg1 simID:(id)arg2;
+ (int)IMMMSMaximumSlideCountForPhoneNumber:(id)arg1 simID:(id)arg2;
+ (BOOL)IMMMSSupportedAndConfiguredForPhoneNumber:(id)arg1 simID:(id)arg2;
+ (unsigned long long)IMReadAttachmentPreviewTranscodingQualitySizeCarrierValueForPhoneNumber:(id)arg1 simID:(id)arg2;
+ (BOOL)IMReadEnablePreviewTranscodingQualityCarrierValueForPhoneNumber:(id)arg1 simID:(id)arg2;
+ (BOOL)IMMMSEnabledForPhoneNumber:(id)arg1 simID:(id)arg2;
+ (id)IMPhoneNumbersEnabledForMultipleSubscriptionDevice;
+ (BOOL)IMReadMMSUserOverrideForPhoneNumber:(id)arg1 simID:(id)arg2;
+ (id)IMUniqueIdentifierForPhoneNumber:(id)arg1 simID:(id)arg2;

@end

@interface IMEventNotificationQueue : NSObject
{
    BOOL _paused;
    BOOL _scheduled;
    BOOL _busy;
}

//@property(readonly, nonatomic) IMDoubleLinkedList *eventNotificationList; // @synthesize eventNotificationList=_eventNotificationList;
//@property __weak id <IMEventNotificationQueueDelegate> delegate; // @synthesize delegate=_delegate;
- (BOOL)containsNotificationTarget:(id)arg1;
@property(readonly) long long count;
@property(getter=isPaused) BOOL paused; // @synthesize paused=_paused;
@property(readonly, getter=isScheduled) BOOL scheduled; // @synthesize scheduled=_scheduled;
- (void)_didChangePausedState:(BOOL)arg1;
- (void)pushEventTarget:(id)arg1 sender:(id)arg2 eventNotificationBlock:(CDUnknownBlockType)arg3;
- (void)appendEventTarget:(id)arg1 sender:(id)arg2 eventNotificationBlock:(CDUnknownBlockType)arg3;
- (void)pushEventTarget:(id)arg1 eventNotificationBlock:(CDUnknownBlockType)arg2;
- (void)appendEventTarget:(id)arg1 eventNotificationBlock:(CDUnknownBlockType)arg2;
- (void)cancelAllEventNotifications;
- (void)cancelEventNotificationsForNotificationTarget:(id)arg1;
- (void)_didCancelNotifications;
- (void)appendEventNotification:(id)arg1;
- (void)pushEventNotification:(id)arg1;
- (void)_didAddNotification:(id)arg1;
- (void)_processQueue;
- (void)_invokeNotifications;
- (void)enumerateObjectsUsingBlock:(CDUnknownBlockType)arg1;
- (void)_willProcessQueue;
- (void)_didProcessQueue;
- (void)_setBusy:(BOOL)arg1;
- (void)_didChangeBusyState:(BOOL)arg1;
@property(readonly, getter=isBusy) BOOL busy; // @synthesize busy=_busy;
- (void)_invokeEvent:(id)arg1;
- (void)_scheduleIfNeeded:(BOOL)arg1;
- (void)_dispatchProcessQueue;
- (id)init;

@end

@interface IMAutomaticEventNotificationQueue : IMEventNotificationQueue
{
}

- (void)_didCancelNotifications;
- (void)_didAddNotification:(id)arg1;
- (void)_didProcessQueue;
- (void)_invokeEvent:(id)arg1;

@end

@interface IMEventNotificationBroadcaster : IMEventNotificationQueue
{
}

- (void)broadcastEventToListeners:(CDUnknownBlockType)arg1;
- (void)_didProcessQueue;
- (void)_willProcessQueue;

@end

@interface IMEventNotification : NSObject // IMDoubleLinkedListNode
{
    id _target;
    id _sender;
    CDUnknownBlockType _eventNotificationWithSenderBlock;
    CDUnknownBlockType _eventNotificationBlock;
}

+ (id)eventNotification:(id)arg1;
+ (id)eventNotification:(id)arg1 sender:(id)arg2 eventNotificationBlock:(CDUnknownBlockType)arg3;
+ (id)eventNotification:(id)arg1 eventNotificationBlock:(CDUnknownBlockType)arg2;
@property(copy) CDUnknownBlockType eventNotificationBlock; // @synthesize eventNotificationBlock=_eventNotificationBlock;
@property(copy) CDUnknownBlockType eventNotificationWithSenderBlock; // @synthesize eventNotificationWithSenderBlock=_eventNotificationWithSenderBlock;
@property __weak id sender; // @synthesize sender=_sender;
@property __weak id target; // @synthesize target=_target;
- (void)cache;
- (BOOL)wasCancelled;
- (void)cancel;
- (BOOL)invoke;

@end


@interface IMParticipantChangeItem : IMItem <NSSecureCoding, NSCopying, IMRemoteObjectCoding>
{
    long long _changeType;
    NSString *_otherCountryCode;
    NSString *_otherHandle;
    NSString *_otherUnformattedID;
}

+ (BOOL)supportsSecureCoding;
@property(retain, nonatomic) NSString *otherUnformattedID; // @synthesize otherUnformattedID=_otherUnformattedID;
@property(retain, nonatomic) NSString *otherHandle; // @synthesize otherHandle=_otherHandle;
@property(retain, nonatomic) NSString *otherCountryCode; // @synthesize otherCountryCode=_otherCountryCode;
@property(nonatomic) long long changeType; // @synthesize changeType=_changeType;
- (BOOL)isEqual:(id)arg1;
- (id)copyDictionaryRepresentation;
- (id)initWithDictionary:(id)arg1;
- (void)encodeWithCoder:(id)arg1;
- (id)initWithCoder:(id)arg1;
- (id)copyWithZone:(struct _NSZone *)arg1;
- (void)dealloc;

@end


@interface IMKeyValueCollectionUserDefaultsStorage : NSObject <IMKeyValueCollectionStorage>
{
    NSString *_domain;
}

@property(readonly, copy, nonatomic) NSString *domain; // @synthesize domain=_domain;

@property(readonly, copy) NSString *description;
- (id)copyWithZone:(struct _NSZone *)arg1;
- (void)removeObjectForKey:(id)arg1;
- (void)setObject:(id)arg1 forKey:(id)arg2;
- (id)objectForKey:(id)arg1;
- (void)_actuallyWriteObject:(id)arg1 forKey:(id)arg2;
- (id)_actuallyReadObjectForKey:(id)arg1;
- (id)_decodeData:(id)arg1 forKey:(id)arg2;
- (id)initWithDomain:(id)arg1;
- (id)init;

// Remaining properties
@property(readonly, copy) NSString *debugDescription;

@property(readonly) Class superclass;

@end

@interface IMImageUtilities : NSObject
{
}

+ (struct CGImage *)newThumbnailForTargetSize:(struct CGSize)arg1 imageSize:(struct CGSize)arg2 imageSource:(struct CGImageSource *)arg3 atIndex:(unsigned long long)arg4 mode:(long long)arg5 scale:(double)arg6;
+ (struct CGImage *)newThumbnailForTargetSize:(struct CGSize)arg1 imageSize:(struct CGSize)arg2 imageSource:(struct CGImageSource *)arg3 mode:(long long)arg4 scale:(double)arg5;
+ (BOOL)persistCPBitmapWithImage:(struct CGImage *)arg1 url:(id)arg2;
+ (void)sampleImageEdges:(char *)arg1 usingRect:(struct CGRect)arg2 forMostlyWhitePixels:(unsigned long long *)arg3 otherPixels:(unsigned long long *)arg4 bytesPerRow:(long long)arg5;
+ (struct CGSize)imageRefPxSize:(struct CGImage *)arg1;
+ (struct CGSize)imageSourcePxSize:(struct CGImageSource *)arg1;

@end

@interface IMOneTimeCodeUtilities : NSObject
{
}

- (id)createOTCFromMessageBody:(id)arg1 sender:(id)arg2 guid:(id)arg3;
- (BOOL)isValidOneTimeCode:(id)arg1;

@end

@interface IMEventListenerResponse : NSObject <IMEventListenerResponse>
{
    BOOL _success;
    NSDictionary *_userInfo;
    NSError *_error;
}

@property(retain, nonatomic) NSError *error; // @synthesize error=_error;
@property(retain, nonatomic) NSDictionary *userInfo; // @synthesize userInfo=_userInfo;
@property(nonatomic, getter=didSucceed) BOOL success; // @synthesize success=_success;
@property(readonly, copy) NSString *description;
- (id)initWithSuccess:(BOOL)arg1 userInfo:(id)arg2 error:(id)arg3;

// Remaining properties
@property(readonly, copy) NSString *debugDescription;
@property(readonly) Class superclass;

@end

@interface IMEventListener : NSObject
{
    BOOL _willRepeat;
    double _timerStart;
    NSObject<OS_dispatch_semaphore> *_semaphore;
    double _timeListeningStarted;
    double _timeListeningStopped;
    double _timeLastEventReceived;
    double _timeout;
    unsigned long long _eventCount;
    id _target;
    CDUnknownBlockType _completionBlock;
    CDUnknownBlockType _willInvokeCompletion;
    CDUnknownBlockType _didInvokeCompletion;
}

+ (id)eventListenerWithNotificationName:(id)arg1 object:(id)arg2;
+ (id)eventListener;
+ (id)allListeners;
+ (id)_mutableListenerDictionary;
@property(nonatomic) BOOL willRepeat; // @synthesize willRepeat=_willRepeat;
@property(copy) CDUnknownBlockType didInvokeCompletion; // @synthesize didInvokeCompletion=_didInvokeCompletion;
@property(copy) CDUnknownBlockType willInvokeCompletion; // @synthesize willInvokeCompletion=_willInvokeCompletion;
@property __weak id target; // @synthesize target=_target;
@property(readonly) unsigned long long eventCount; // @synthesize eventCount=_eventCount;
@property(readonly, nonatomic) NSObject<OS_dispatch_semaphore> *semaphore; // @synthesize semaphore=_semaphore;
@property(nonatomic) double timerStart; // @synthesize timerStart=_timerStart;
- (void)_didReceiveEvent:(BOOL)arg1 userInfo:(id)arg2 error:(id)arg3;
@property double timeout; // @synthesize timeout=_timeout;
- (void)reset;
@property(copy) CDUnknownBlockType completionBlock; // @synthesize completionBlock=_completionBlock;
@property(readonly) double elapsedWaitingTime;
@property(readonly) double timeLastEventReceived; // @synthesize timeLastEventReceived=_timeLastEventReceived;
@property(readonly) double timeListeningStopped; // @synthesize timeListeningStopped=_timeListeningStopped;
@property(readonly) double timeListeningStarted; // @synthesize timeListeningStarted=_timeListeningStarted;
- (void)startListening;
- (void)stopListening;
@property(readonly, getter=isListening) BOOL listening;
- (void)startListeningForEventTarget:(id)arg1 completion:(CDUnknownBlockType)arg2;
- (void)startListeningForEventTarget:(id)arg1 sendStartingEvent:(CDUnknownBlockType)arg2 completion:(CDUnknownBlockType)arg3;
- (void)waitForCompletion;
- (void)_dispatchStartEventBlock:(CDUnknownBlockType)arg1;
- (void)_startTimeoutTimerIfNeeded;
- (void)_reset;
- (void)willReset;
- (void)_cancelTimeoutTimer;
- (void)_stopListening;
- (void)willStopListening;
- (void)_startListening;
- (void)willStartListening;
- (void)_handleTimeout:(id)arg1;
- (void)_invokeCompletion:(BOOL)arg1 userInfo:(id)arg2 error:(id)arg3;
- (id)createResult:(BOOL)arg1 userInfo:(id)arg2 error:(id)arg3;
- (void)_addToListeners;
- (void)_removeFromListeners;

@end

@interface IMNotificationCenterEventListener : IMEventListener
{
    NSString *_registeredNotificationName;
    NSString *_notificationName;
    id _notificationObject;
}

+ (id)eventListenerForNotificationName:(id)arg1 object:(id)arg2;
+ (id)eventListenerForNotificationName:(id)arg1;
@property(readonly) __weak id notificationObject; // @synthesize notificationObject=_notificationObject;
@property(readonly, copy) NSString *notificationName; // @synthesize notificationName=_notificationName;
@property(readonly, nonatomic) NSString *registeredNotificationName; // @synthesize registeredNotificationName=_registeredNotificationName;
- (void)willReset;
- (void)willStopListening;
- (void)willStartListening;
- (BOOL)isListening;
- (void)dealloc;
- (void)registerForNotificationName:(id)arg1 object:(id)arg2;
- (void)registerForNotificationName:(id)arg1;
- (void)_notification:(id)arg1;
@property(readonly) BOOL isRegisteredForNotification;

@end

@interface IMEventListenerReference : NSObject
{
    IMEventListener *_eventListener;
}

@property(readonly, nonatomic) __weak IMEventListener *eventListener; // @synthesize eventListener=_eventListener;
- (id)initWithEventListener:(id)arg1;

@end

@interface IMEventListenerList : NSObject
{
    NSMutableArray *_eventListeners;
}

- (void)enumerateObjectsUsingBlock:(CDUnknownBlockType)arg1;
- (BOOL)containsObject:(id)arg1;
- (void)removeObject:(id)arg1;
- (void)addObject:(id)arg1;
- (unsigned long long)count;
- (id)init;

@end

@interface IMSticker : NSObject
{
    NSURL *_fileURL;
    struct NSString *_stickerGUID;
    struct NSString *_stickerPackGUID;
    NSString *_accessibilityLabel;
    NSString *_moodCategory;
    NSString *_stickerName;
    NSData *_recipe;
    NSString *_ballonBundleID;
    NSDictionary *_attributionInfo;
}

@property(copy, nonatomic) NSDictionary *attributionInfo; // @synthesize attributionInfo=_attributionInfo;
@property(copy, nonatomic) NSString *ballonBundleID; // @synthesize ballonBundleID=_ballonBundleID;
@property(retain, nonatomic) NSData *recipe; // @synthesize recipe=_recipe;
@property(copy, nonatomic) NSString *stickerName; // @synthesize stickerName=_stickerName;
@property(copy, nonatomic) NSString *moodCategory; // @synthesize moodCategory=_moodCategory;
@property(copy, nonatomic) NSString *accessibilityLabel; // @synthesize accessibilityLabel=_accessibilityLabel;
@property(readonly, copy, nonatomic) NSString *stickerPackGUID; // @synthesize stickerPackGUID=_stickerPackGUID;
@property(readonly, copy, nonatomic) NSString *stickerGUID; // @synthesize stickerGUID=_stickerGUID;
@property(readonly, copy, nonatomic) NSURL *fileURL; // @synthesize fileURL=_fileURL;
- (id)initWithStickerPropertyDictionary:(id)arg1 stickerPackID:(struct NSString *)arg2 stickerPackBundlePath:(id)arg3;
- (unsigned long long)hash;
- (BOOL)isEqual:(id)arg1;
- (void)dealloc;
- (id)description;
- (id)initWithStickerID:(struct NSString *)arg1 stickerPackID:(struct NSString *)arg2 fileURL:(id)arg3 accessibilityLabel:(id)arg4 moodCategory:(id)arg5 stickerName:(id)arg6;
- (id)init;

@end

@interface IMMessageActionItem : IMItem <NSSecureCoding, NSCopying, IMRemoteObjectCoding>
{
    long long _actionType;
    NSString *_otherCountryCode;
    NSString *_otherHandle;
    NSString *_otherUnformattedID;
    NSString *_originalMessageGUID;
}

+ (BOOL)supportsSecureCoding;
@property(retain, nonatomic) NSString *originalMessageGUID; // @synthesize originalMessageGUID=_originalMessageGUID;
@property(retain, nonatomic) NSString *otherUnformattedID; // @synthesize otherUnformattedID=_otherUnformattedID;
@property(retain, nonatomic) NSString *otherHandle; // @synthesize otherHandle=_otherHandle;
@property(retain, nonatomic) NSString *otherCountryCode; // @synthesize otherCountryCode=_otherCountryCode;
@property(nonatomic) long long actionType; // @synthesize actionType=_actionType;
- (BOOL)isEqual:(id)arg1;
- (id)copyDictionaryRepresentation;
- (id)initWithDictionary:(id)arg1;
- (void)encodeWithCoder:(id)arg1;
- (id)initWithCoder:(id)arg1;
- (id)copyWithZone:(struct _NSZone *)arg1;
- (id)description;
- (void)dealloc;

@end


@interface IMXMLParserContext : NSObject
{
    NSData *_inContentAsData;
}

@property(readonly, retain) NSData *inContentAsData; // @synthesize inContentAsData=_inContentAsData;
@property(readonly, retain) NSArray *resultsForLogging;
@property(readonly, retain) NSString *name;
- (id)inContent;
- (void)reset;
- (void)dealloc;
- (id)initWithContentAsData:(id)arg1;
- (id)initWithContent:(id)arg1;

@end

@interface IMXMLParserFrame : NSObject
{
}

- (void)parser:(id)arg1 context:(id)arg2 foundIgnorableWhitespace:(id)arg3;
- (void)parser:(id)arg1 context:(id)arg2 foundCharacters:(id)arg3;
- (void)parser:(id)arg1 context:(id)arg2 didEndElement:(id)arg3 namespaceURI:(id)arg4 qualifiedName:(id)arg5;
- (void)parser:(id)arg1 context:(id)arg2 didStartElement:(id)arg3 namespaceURI:(id)arg4 qualifiedName:(id)arg5 attributes:(id)arg6;

@end

@interface IMSharedMessageSendingUtilities : NSObject
{
    long long _serviceAvailability;
}

+ (void)_setupAccountMonitor;
+ (id)sharedInstance;
+ (void)initialize;
@property long long serviceAvailability; // @synthesize serviceAvailability=_serviceAvailability;
- (BOOL)canSendPhotos:(int)arg1 videos:(int)arg2 audioClips:(int)arg3;
- (long long)_maxMMSMessageByteCount;
- (long long)_maxMMSAttachmentCount;
- (BOOL)_isiMessageSupported;
- (BOOL)isSupportedAttachmentUTI:(id)arg1;
- (BOOL)isiMessageEnabled;
- (BOOL)isMMSEnabled;
- (BOOL)canSendText;
- (id)_managedConfigAppWhitelist;
- (void)_updateServiceAvailability;
- (BOOL)_canSendText;
- (BOOL)_hasSMSCapability;

@end

@interface IMXMLParser : NSObject <NSXMLParserDelegate>
{
    NSXMLParser *_parser;
    IMXMLParserContext *_context;
    IMXMLParserFrame *_topFrame;
    NSMutableArray *_otherFrames;
    struct _TidyDoc *_tidyDoc;
    struct __CFDictionary *_framespace;
}

+ (id)sharedInstance;
- (void)parser:(id)arg1 parseErrorOccurred:(id)arg2;
- (void)parser:(id)arg1 foundIgnorableWhitespace:(id)arg2;
- (void)parser:(id)arg1 foundCharacters:(id)arg2;
- (void)parser:(id)arg1 didEndElement:(id)arg2 namespaceURI:(id)arg3 qualifiedName:(id)arg4;
- (void)parser:(id)arg1 didStartElement:(id)arg2 namespaceURI:(id)arg3 qualifiedName:(id)arg4 attributes:(id)arg5;
- (BOOL)parseContext:(id)arg1;
- (id)_newDataByTidyingData:(id)arg1;
- (void)_teardownTidy;
- (void)_setupTidy;

// Remaining properties
@property(readonly, copy) NSString *debugDescription;
@property(readonly, copy) NSString *description;
@property(readonly) Class superclass;

@end


@interface IMToSuperParserContext : IMXMLParserContext
{
    unsigned long long _underlineCount;
    unsigned long long _boldCount;
    unsigned long long _italicCount;
    unsigned long long _strikethroughCount;
    unsigned long long _messagePartNumber;
    NSMutableArray *_fontFamilyStack;
    NSMutableArray *_fontSizeStack;
    NSMutableArray *_linkStack;
    NSMutableArray *_backgroundColorStack;
    NSMutableArray *_foregroundColorStack;
    NSMutableDictionary *_currentAttributes;
    BOOL _didAddBodyAttributes;
    NSMutableAttributedString *_body;
    NSMutableArray *_fileTransferGUIDs;
    NSString *_backgroundColor;
    NSString *_foregroundColor;
    long long _baseWritingDirection;
}

@property long long baseWritingDirection; // @synthesize baseWritingDirection=_baseWritingDirection;
@property(copy, nonatomic) NSString *foregroundColor; // @synthesize foregroundColor=_foregroundColor;
@property(copy, nonatomic) NSString *backgroundColor; // @synthesize backgroundColor=_backgroundColor;
@property(retain, nonatomic) NSArray *fileTransferGUIDs; // @synthesize fileTransferGUIDs=_fileTransferGUIDs;
@property(readonly, nonatomic) NSAttributedString *body;
- (void)appendBreadcrumbText:(id)arg1 withOptions:(unsigned int)arg2;
- (void)appendInlineImageWithGUID:(id)arg1 filename:(id)arg2 width:(long long)arg3 height:(long long)arg4 emoji:(long long)arg5;
- (void)appendInlineImageWithGUID:(id)arg1 filename:(id)arg2 width:(long long)arg3 height:(long long)arg4;
- (void)appendFileTransferWithGUID:(id)arg1;
- (void)appendString:(id)arg1;
- (void)_incrementMessagePartNumber;
- (void)popForegroundColor;
- (void)pushForegroundColor:(id)arg1;
- (void)popBackgroundColor;
- (void)pushBackgroundColor:(id)arg1;
- (void)popLink;
- (void)pushLink:(id)arg1;
- (void)popFontSize;
- (void)pushFontSize:(id)arg1;
- (void)popFontFamily;
- (void)pushFontFamily:(id)arg1;
- (void)_popValueFromStack:(id)arg1 attributeName:(id)arg2;
- (void)_pushValue:(id)arg1 ontoStack:(id)arg2 attributeName:(id)arg3;
- (void)decrementStrikethroughCount;
- (void)incrementStrikethroughCount;
- (void)decrementUnderlineCount;
- (void)incrementUnderlineCount;
- (void)decrementItalicCount;
- (void)incrementItalicCount;
- (void)decrementBoldCount;
- (void)incrementBoldCount;
- (void)_updateFontSize;
- (void)_updateFontFamily;
- (void)_clearIvars;
- (void)_initIvars;
- (id)resultsForLogging;
- (id)name;
- (void)reset;
- (void)dealloc;

@end

@interface IMToSuperParserFrame : IMXMLParserFrame
{
}

- (void)parser:(id)arg1 context:(id)arg2 foundIgnorableWhitespace:(id)arg3;
- (void)parser:(id)arg1 context:(id)arg2 foundCharacters:(id)arg3;
- (void)parser:(id)arg1 context:(id)arg2 didEndElement:(id)arg3 namespaceURI:(id)arg4 qualifiedName:(id)arg5;
- (void)parser:(id)arg1 context:(id)arg2 didStartElement:(id)arg3 namespaceURI:(id)arg4 qualifiedName:(id)arg5 attributes:(id)arg6;

@end

@interface IMMessageNotificationTimer : NSObject
{
    NSDate *_date;
    NSNumber *_numberDingsLeft;
}

@property(readonly, nonatomic) NSNumber *numberDingsLeft; // @synthesize numberDingsLeft=_numberDingsLeft;
@property(retain, nonatomic) NSDate *date; // @synthesize date=_date;
- (void)reduceNumberDingsLeft;
@property(readonly, nonatomic) BOOL areDingsRemaining;
- (void)dealloc;
- (id)initWithDate:(id)arg1;

@end

@interface IMMessageNotificationTimeManager : NSObject
{
    NSMutableDictionary *_chatsStartTimeDictionary;
    NSString *_latestIDSTokenURI;
}

+ (id)sharedInstance;
@property(retain, nonatomic) NSString *latestIDSTokenURI; // @synthesize latestIDSTokenURI=_latestIDSTokenURI;
@property(retain, nonatomic) NSMutableDictionary *chatsStartTimeDictionary; // @synthesize chatsStartTimeDictionary=_chatsStartTimeDictionary;
- (void)acquireAssertionToUnsuspendProcess;
- (void)sendNotificationMessageIfNeededForIncomingMessageFromChatIdentifier:(id)arg1;
- (void)setLatestNotificationIDSTokenURI:(id)arg1;
- (BOOL)_shouldSendNotificationForChatIdentifier:(id)arg1;
- (long long)_getToneTimeWindow;
- (long long)_getTimeWindowOverride;
- (BOOL)_isToneToggleSwitchOn;
- (void)setDate:(id)arg1 forChatIdentifier:(id)arg2;
- (void)tearDownSessionForChatIdentifier:(id)arg1;
- (void)dealloc;
- (id)init;

@end


@interface IMPreviewGenerator : NSObject <IMPreviewGeneratorProtocol, IMUTITypeInformation>
{
}

+ (struct CGRect)_scaledTargetRectForSize:(struct CGSize)arg1 andThumbnailSize:(struct CGSize)arg2;
+ (double)_scaleFactorForThumbnailWithSize:(struct CGSize)arg1 constraints:(struct IMPreviewConstraints)arg2 targetPxSize:(struct CGSize)arg3;
+ (struct CGImage *)newCroppedAndRescaledImageFromImage:(struct CGImage *)arg1 constraints:(struct IMPreviewConstraints)arg2 targetPxSize:(struct CGSize)arg3;
+ (id)generateAndPersistPreviewFromSourceURL:(id)arg1 withPreviewConstraints:(struct IMPreviewConstraints)arg2 error:(id *)arg3;
+ (struct CGImage *)newPreviewFromSourceURL:(id)arg1 withPreviewConstraints:(struct IMPreviewConstraints)arg2 error:(id *)arg3;
+ (double)maxUpScale;
+ (BOOL)shouldShadePreview;
+ (BOOL)shouldScaleUpPreview;
+ (BOOL)writesToDisk;
+ (id)previewExtension;
+ (id)UTITypes;

@end

@interface IMGroupBlacklistManager : NSObject
{
    NSDate *_lastModifiedDate;
}

+ (id)sharedInstance;
+ (id)groupsBlacklistFilename;
@property(retain) NSDate *lastModifiedDate; // @synthesize lastModifiedDate=_lastModifiedDate;

- (void)reloadIfNeeded;
- (void)_updateLastModifiedDate:(id)arg1;
- (void)loadFromFile:(id)arg1;
- (void)loadData;
- (void)save;
- (BOOL)isFeatureDisabled;
- (BOOL)isGroupInBlacklist:(id)arg1;
- (void)blacklistGroupId:(id)arg1;
- (BOOL)hasFileChanged;
- (id)initFromFile:(id)arg1;
- (id)init;

@end


@interface IMAttributedStringParserContext : NSObject
{
    NSAttributedString *_inString;
}

@property(readonly, retain) NSAttributedString *inString; // @synthesize inString=_inString;
- (id)parser:(id)arg1 preprocessedAttributesForAttributes:(id)arg2 range:(struct _NSRange)arg3;
@property(readonly) BOOL shouldPreprocess;
- (void)parserDidEnd:(id)arg1;
- (void)parser:(id)arg1 foundAttributes:(id)arg2 inRange:(struct _NSRange)arg3;
- (void)parserDidStart:(id)arg1;
@property(readonly, retain) NSArray *resultsForLogging;
@property(readonly, retain) NSString *name;
- (void)dealloc;
- (id)initWithAttributedString:(id)arg1;

@end

@interface IMAttributedStringParser : NSObject
{
    IMAttributedStringParserContext *_context;
}

+ (id)sharedInstance;
- (void)parseContext:(id)arg1;
- (void)_preprocessWithContext:(id)arg1 string:(id *)arg2;

@end


@interface IMAssociatedMessageItem : IMMessageItem <NSSecureCoding, NSCopying, IMRemoteObjectCoding>
{
    NSString *_associatedMessageGUID;
    long long _associatedMessageType;
    NSArray *_consumedSessionPayloads;
    struct _NSRange _associatedMessageRange;
}

+ (BOOL)supportsSecureCoding;
@property(retain, nonatomic) NSArray *consumedSessionPayloads; // @synthesize consumedSessionPayloads=_consumedSessionPayloads;
@property(nonatomic) struct _NSRange associatedMessageRange; // @synthesize associatedMessageRange=_associatedMessageRange;
@property(nonatomic) long long associatedMessageType; // @synthesize associatedMessageType=_associatedMessageType;
@property(retain, nonatomic) NSString *associatedMessageGUID; // @synthesize associatedMessageGUID=_associatedMessageGUID;
- (BOOL)isEqual:(id)arg1;
- (BOOL)isSticker;
- (BOOL)isMessageEdit;
- (BOOL)isBreadcrumb;
- (BOOL)isMessageAcknowledgment;
- (BOOL)isLastMessageCandidate;
- (BOOL)isFirstMessageCandidate;
- (BOOL)isAssociatedMessageItem;
- (id)description;
- (id)copyForBackwardsCompatibility;
- (id)copyWithZone:(struct _NSZone *)arg1;
- (id)copyDictionaryRepresentation;
- (void)encodeWithCoder:(id)arg1;
- (id)initWithCoder:(id)arg1;
- (void)dealloc;
- (id)initWithMessageItem:(id)arg1;
- (id)initWithSenderInfo:(id)arg1 time:(id)arg2 timeRead:(id)arg3 timeDelivered:(id)arg4 timePlayed:(id)arg5 subject:(id)arg6 body:(id)arg7 bodyData:(id)arg8 attributes:(id)arg9 fileTransferGUIDs:(id)arg10 flags:(unsigned long long)arg11 guid:(id)arg12 messageID:(long long)arg13 account:(id)arg14 accountID:(id)arg15 service:(id)arg16 handle:(id)arg17 roomName:(id)arg18 unformattedID:(id)arg19 countryCode:(id)arg20 expireState:(long long)arg21 balloonBundleID:(id)arg22 payloadData:(id)arg23 expressiveSendStyleID:(id)arg24 timeExpressiveSendPlayed:(id)arg25 errorType:(unsigned int)arg26 associatedMessageGUID:(id)arg27 associatedMessageType:(long long)arg28 associatedMessageRange:(struct _NSRange)arg29 bizIntent:(id)arg30 locale:(id)arg31 messageSummaryInfo:(id)arg32;
- (id)initWithSender:(id)arg1 time:(id)arg2 body:(id)arg3 attributes:(id)arg4 fileTransferGUIDs:(id)arg5 flags:(unsigned long long)arg6 error:(id)arg7 guid:(id)arg8 associatedMessageGUID:(id)arg9 associatedMessageType:(long long)arg10 associatedMessageRange:(struct _NSRange)arg11 messageSummaryInfo:(id)arg12;
- (id)initWithDictionary:(id)arg1 hint:(id)arg2;

@end


@interface IMKeyValueCollectionDictionaryStorage : NSObject <IMKeyValueCollectionStorage>
{
    NSMutableDictionary *_dictionary;
}

@property(readonly, copy) NSString *description;
- (id)copyWithZone:(struct _NSZone *)arg1;
- (void)removeObjectForKey:(id)arg1;
- (void)setObject:(id)arg1 forKey:(id)arg2;
- (id)objectForKey:(id)arg1;
- (id)init;
- (id)initWithDictionary:(id)arg1;
@property(readonly, copy, nonatomic) NSDictionary *dictionary;

// Remaining properties
@property(readonly, copy) NSString *debugDescription;
@property(readonly) Class superclass;

@end

@interface IMKeyValueCollection : NSObject <IMKeyValueCollectionStorage, NSCopying>
{
    long long _batchCount;
    id <IMKeyValueCollectionStorage> _keyValueStorage;
    id /* <IMKeyValueCollectionDelegate> */ _delegate;
    NSMutableDictionary *_recordedChanges;
}

@property(readonly) NSMutableDictionary *recordedChanges; // @synthesize recordedChanges=_recordedChanges;
@property(nonatomic) __weak id  delegate; // @synthesize delegate=_delegate;
@property(readonly, nonatomic) id <IMKeyValueCollectionStorage> keyValueStorage; // @synthesize keyValueStorage=_keyValueStorage;

@property(readonly, copy) NSString *description;
- (void)setString:(id)arg1 forKey:(id)arg2;
- (id)stringForKey:(id)arg1;
- (id)stringForKey:(id)arg1 withDefault:(id)arg2;
- (void)setDouble:(double)arg1 forKey:(id)arg2;
- (double)doubleForKey:(id)arg1;
- (double)doubleForKey:(id)arg1 withDefault:(double)arg2;
- (void)setUint64:(long long)arg1 forKey:(id)arg2;
- (unsigned long long)uint64ForKey:(id)arg1;
- (unsigned long long)uint64ForKey:(id)arg1 withDefault:(unsigned long long)arg2;
- (void)setInt64:(long long)arg1 forKey:(id)arg2;
- (long long)int64ForKey:(id)arg1;
- (long long)int64ForKey:(id)arg1 withDefault:(long long)arg2;
- (void)setInteger:(long long)arg1 forKey:(id)arg2;
- (long long)integerForKey:(id)arg1;
- (long long)integerForKey:(id)arg1 withDefault:(long long)arg2;
- (void)setBool:(BOOL)arg1 forKey:(id)arg2;
- (BOOL)boolForKey:(id)arg1;
- (BOOL)boolForKey:(id)arg1 withDefault:(BOOL)arg2;
- (void)_commitBatchWrite;
- (void)_startBatchWrite;
- (void)removeObjectForKey:(id)arg1;
- (void)setObject:(id)arg1 forKey:(id)arg2;
- (void)_recordChange:(id)arg1 forKey:(id)arg2;
- (void)_setObject:(id)arg1 forKey:(id)arg2;
- (id)objectForKey:(id)arg1 withDefault:(id)arg2;
- (id)objectForKey:(id)arg1;
- (void)_broadcastIfNeeded;
- (void)_notifyListeners;
- (id)initWithKeyValueStorage:(id)arg1;
- (id)copyWithZone:(struct _NSZone *)arg1;
- (id)init;
- (id)errorArrayForKey:(id)arg1;
- (void)addErrorToArray:(id)arg1 forKey:(id)arg2;
- (id)errorForKey:(id)arg1;
- (void)setError:(id)arg1 forKey:(id)arg2;

// Remaining properties
@property(readonly, copy) NSString *debugDescription;
@property(readonly) Class superclass;

@end

@interface IMBroadcastingKeyValueCollection : IMKeyValueCollection
{
}

- (void)_notifyListeners;

@end

@interface IMAnimatedImagePreviewGenerator : IMPreviewGenerator <IMPreviewGeneratorProtocol, IMUTITypeInformation>
{
}

+ (BOOL)writesToDisk;
+ (id)generateAndPersistPreviewFromSourceURL:(id)arg1 withPreviewConstraints:(struct IMPreviewConstraints)arg2 error:(id *)arg3;
+ (id)UTITypes;

@end

@interface IMMessageNotificationController : NSObject /* <IDSServiceDelegate>*/
{
    // IDSService *_messageNotificationControllerIDSService;
}

+ (id)sharedInstance;
// @property(retain, nonatomic) IDSService *messageNotificationControllerIDSService; // @synthesize messageNotificationControllerIDSService=_messageNotificationControllerIDSService;
- (void)_sendNotificationMessageRequest:(id)arg1 toTokenURI:(id)arg2;
- (void)sendNotificationMessageToTokenURI:(id)arg1 withCommmand:(long long)arg2;
- (void)sendNotificationMessageToUniqueID:(id)arg1 withCommmand:(long long)arg2;
- (void)service:(id)arg1 account:(id)arg2 identifier:(id)arg3 didSendWithSuccess:(BOOL)arg4 error:(id)arg5;
- (void)service:(id)arg1 account:(id)arg2 incomingMessage:(id)arg3 fromID:(id)arg4 context:(id)arg5;
- (void)_executeCommandFromMessageRequest:(id)arg1;
- (void)_playTone;
- (id)_copyIDSIdentifierOrDefault:(id)arg1;
- (BOOL)audioAccessoryDeviceWithTokenURIExists:(id)arg1;
- (id)_copyIDForDevice:(id)arg1;
- (BOOL)_deviceIsAudioAccessory:(id)arg1;
- (BOOL)_isCurrentDeviceAudioAccessory;
- (void)dealloc;
- (id)init;

// Remaining properties
@property(readonly, copy) NSString *debugDescription;
@property(readonly, copy) NSString *description;
@property(readonly) unsigned long long hash;
@property(readonly) Class superclass;

@end

@interface IMUnarchiverDecoder : NSObject
{
}

+ (id)decodeEncodedDataSecurely:(id)arg1 ofClass:(Class)arg2 includesWhitelistedClasses:(id)arg3;
+ (id)_decodeEncodedData:(id)arg1 ofClass:(Class)arg2 includesWhitelistedClasses:(id)arg3;

@end

@interface IMXMLReparser : NSObject <NSXMLParserDelegate>
{
    NSXMLParser *_parser;
    NSMutableString *_output;
    // IMXMLReparserContext *_context;
    NSError *_error;
    unsigned long long _depth;
}

- (void)parser:(id)arg1 parseErrorOccurred:(id)arg2;
- (void)parser:(id)arg1 foundCharacters:(id)arg2;
- (void)parser:(id)arg1 didEndElement:(id)arg2 namespaceURI:(id)arg3 qualifiedName:(id)arg4;
- (void)parser:(id)arg1 didStartElement:(id)arg2 namespaceURI:(id)arg3 qualifiedName:(id)arg4 attributes:(id)arg5;
- (BOOL)parseWithContext:(id)arg1;

// Remaining properties
@property(readonly, copy) NSString *debugDescription;
@property(readonly, copy) NSString *description;
@property(readonly) Class superclass;

@end

@interface IMXMLReparserContext : NSObject
{
    NSString *_inContent;
    NSString *_outContent;
    NSDictionary *_attributesToMerge;
    NSError *_error;
    NSArray *_attributesToPreserve;
}

@property(readonly, copy, nonatomic) NSString *outContent; // @synthesize outContent=_outContent;
@property(readonly, retain, nonatomic) NSError *error; // @synthesize error=_error;
@property(readonly, retain, nonatomic) NSDictionary *attributesToMerge; // @synthesize attributesToMerge=_attributesToMerge;
@property(readonly, retain, nonatomic) NSArray *attributesToPreserve; // @synthesize attributesToPreserve=_attributesToPreserve;
@property(readonly, retain) NSString *_inContent; // @synthesize _inContent;
- (void)_setOutContent:(id)arg1 error:(id)arg2;
- (void)dealloc;
- (id)initWithContent:(id)arg1 attributesToPreserve:(id)arg2 attributesToMerge:(id)arg3;

@end

@interface IMImagePreviewGenerator : IMPreviewGenerator <IMPreviewGeneratorProtocol, IMUTITypeInformation>
{
}

+ (struct CGImage *)newThumbnailFillToSize:(struct CGSize)arg1 imagePxSize:(struct CGSize)arg2 imageSource:(struct CGImageSource *)arg3 scale:(double)arg4;
+ (struct CGImage *)newPreviewFromSourceURL:(id)arg1 withPreviewConstraints:(struct IMPreviewConstraints)arg2 error:(id *)arg3;
+ (id)UTITypes;
+ (id)fetchUTITypes;

@end


@interface IMAKAppleIDAuthenticationController : NSObject
{
}

+ (id)IMAKUserInfoChangedSecurityLevelKey;
+ (id)IMAKUserInfoChangedAltDSIDKey;
+ (id)IMAKUserInfoChangedNotification;

@end

@interface IMFileTransfer : NSObject
{
    BOOL _isIncoming;
    BOOL _isDirectory;
    BOOL _shouldAttemptToResume;
    BOOL _wasRegisteredAsStandalone;
    BOOL _shouldForceArchive;
    BOOL _needsWrapper;
    BOOL _isAuxImage;
    BOOL _isAuxVideo;
    BOOL _isSticker;
    BOOL _hideAttachment;
    BOOL _isLocation;
    BOOL _isContact;
    BOOL _appMessageFallbackImage;
    unsigned short _hfsFlags;
    unsigned int _hfsType;
    unsigned int _hfsCreator;
    double _lastUpdatedInterval;
    double _lastAveragedInterval;
    unsigned long long _lastAveragedBytes;
    NSString *_guid;
    NSString *_messageGUID;
    NSDate *_startDate;
    NSDate *_createdDate;
    long long _transferState;
    NSString *_filename;
    NSURL *_transferDataURL;
    NSString *_utiType;
    NSString *_mimeType;
    NSString *_accountID;
    NSString *_otherPerson;
    unsigned long long _currentBytes;
    unsigned long long _totalBytes;
    unsigned long long _averageTransferRate;
    long long _error;
    NSString *_errorDescription;
    NSDictionary *_localUserInfo;
    NSString *_transferredFilename;
    NSDictionary *_transcoderUserInfo;
    NSDictionary *_AuxTranscoderUserInfo;
    NSDictionary *_stickerUserInfo;
    NSArray *_attachmentSendContexts;
    long long _cloudKitSyncState;
    NSData *_cloudKitServerChangeTokenBlob;
    NSString *_cloudKitRecordID;
    long long _srCloudKitSyncState;
    NSData *_srCloudKitServerChangeTokenBlob;
    NSString *_srCloudKitRecordID;
    NSURL *_localURL;
    NSURL *_temporaryHighQualityLocalURL;
    NSDictionary *_attributionInfo;
    NSString *_originalGUID;
}

+ (id)guidByStrippingAuxPrefix:(id)arg1;
+ (id)AuxGUIDFromFileTransferGUID:(id)arg1;
+ (BOOL)_doesLocalURLRequireArchiving:(id)arg1;
@property(retain, nonatomic) NSString *originalGUID; // @synthesize originalGUID=_originalGUID;
@property(nonatomic) BOOL appMessageFallbackImage; // @synthesize appMessageFallbackImage=_appMessageFallbackImage;
@property(retain, nonatomic) NSDictionary *attributionInfo; // @synthesize attributionInfo=_attributionInfo;
@property(retain, nonatomic) NSURL *temporaryHighQualityLocalURL; // @synthesize temporaryHighQualityLocalURL=_temporaryHighQualityLocalURL;
@property(retain, nonatomic, setter=_setLocalURL:) NSURL *localURL; // @synthesize localURL=_localURL;
@property(retain, nonatomic) NSString *srCloudKitRecordID; // @synthesize srCloudKitRecordID=_srCloudKitRecordID;
@property(retain, nonatomic) NSData *srCloudKitServerChangeTokenBlob; // @synthesize srCloudKitServerChangeTokenBlob=_srCloudKitServerChangeTokenBlob;
@property(nonatomic) long long srCloudKitSyncState; // @synthesize srCloudKitSyncState=_srCloudKitSyncState;
@property(retain, nonatomic) NSString *cloudKitRecordID; // @synthesize cloudKitRecordID=_cloudKitRecordID;
@property(retain, nonatomic) NSData *cloudKitServerChangeTokenBlob; // @synthesize cloudKitServerChangeTokenBlob=_cloudKitServerChangeTokenBlob;
@property(nonatomic) long long cloudKitSyncState; // @synthesize cloudKitSyncState=_cloudKitSyncState;
@property(nonatomic) BOOL isContact; // @synthesize isContact=_isContact;
@property(nonatomic) BOOL isLocation; // @synthesize isLocation=_isLocation;
@property(retain, nonatomic) NSArray *attachmentSendContexts; // @synthesize attachmentSendContexts=_attachmentSendContexts;
@property(nonatomic) BOOL hideAttachment; // @synthesize hideAttachment=_hideAttachment;
@property(retain, nonatomic) NSDictionary *stickerUserInfo; // @synthesize stickerUserInfo=_stickerUserInfo;
@property(nonatomic) BOOL isSticker; // @synthesize isSticker=_isSticker;
@property(retain, nonatomic) NSDictionary *AuxTranscoderUserInfo; // @synthesize AuxTranscoderUserInfo=_AuxTranscoderUserInfo;
@property(nonatomic) BOOL isAuxVideo; // @synthesize isAuxVideo=_isAuxVideo;
@property(nonatomic) BOOL isAuxImage; // @synthesize isAuxImage=_isAuxImage;
@property(retain, nonatomic) NSDictionary *transcoderUserInfo; // @synthesize transcoderUserInfo=_transcoderUserInfo;
@property(retain, nonatomic) NSString *transferredFilename; // @synthesize transferredFilename=_transferredFilename;
@property(nonatomic, setter=_setNeedsWrapper:) BOOL _needsWrapper; // @synthesize _needsWrapper;
@property(retain, nonatomic) NSDictionary *userInfo; // @synthesize userInfo=_localUserInfo;
@property(nonatomic, setter=_setForceArchive:) BOOL shouldForceArchive; // @synthesize shouldForceArchive=_shouldForceArchive;
@property(nonatomic, setter=setRegisteredAsStandalone:) BOOL wasRegisteredAsStandalone; // @synthesize wasRegisteredAsStandalone=_wasRegisteredAsStandalone;
@property(retain, nonatomic, setter=_setErrorDescription:) NSString *errorDescription; // @synthesize errorDescription=_errorDescription;
@property(nonatomic, setter=_setError:) long long error; // @synthesize error=_error;
@property(nonatomic) BOOL shouldAttemptToResume; // @synthesize shouldAttemptToResume=_shouldAttemptToResume;
@property(nonatomic) BOOL isDirectory; // @synthesize isDirectory=_isDirectory;
@property(nonatomic) unsigned long long averageTransferRate; // @synthesize averageTransferRate=_averageTransferRate;
@property(nonatomic) unsigned long long totalBytes; // @synthesize totalBytes=_totalBytes;
@property(nonatomic) unsigned long long currentBytes; // @synthesize currentBytes=_currentBytes;
@property(retain, nonatomic) NSString *otherPerson; // @synthesize otherPerson=_otherPerson;
@property(retain, nonatomic) NSString *accountID; // @synthesize accountID=_accountID;
@property(nonatomic) unsigned int hfsCreator; // @synthesize hfsCreator=_hfsCreator;
@property(nonatomic) unsigned short hfsFlags; // @synthesize hfsFlags=_hfsFlags;
@property(nonatomic) unsigned int hfsType; // @synthesize hfsType=_hfsType;
@property(retain, nonatomic) NSString *type; // @synthesize type=_utiType;
@property(retain, nonatomic, setter=_setTransferDataURL:) NSURL *transferDataURL; // @synthesize transferDataURL=_transferDataURL;
@property(retain, nonatomic) NSString *filename; // @synthesize filename=_filename;
@property(nonatomic) BOOL isIncoming; // @synthesize isIncoming=_isIncoming;
@property(nonatomic, setter=_setTransferState:) long long transferState; // @synthesize transferState=_transferState;
@property(retain, nonatomic) NSDate *createdDate; // @synthesize createdDate=_createdDate;
@property(retain, nonatomic, setter=_setStartDate:) NSDate *startDate; // @synthesize startDate=_startDate;
@property(retain, nonatomic) NSString *messageGUID; // @synthesize messageGUID=_messageGUID;
@property(retain, nonatomic) NSString *guid; // @synthesize guid=_guid;
@property(readonly, nonatomic) unsigned long long _lastAveragedBytes; // @synthesize _lastAveragedBytes;
@property(nonatomic, setter=_setLastAveragedInterval:) double _lastAveragedInterval; // @synthesize _lastAveragedInterval;
@property(nonatomic, setter=_setLastUpdatedInterval:) double _lastUpdatedInterval; // @synthesize _lastUpdatedInterval;
- (id)_auxVideoPathIfItExists;
- (id)description;
@property(readonly, retain, nonatomic) NSString *mimeType; // @synthesize mimeType=_mimeType;
@property(retain, nonatomic, setter=_setLocalPath:) NSString *localPath;
@property(readonly, retain, nonatomic) NSString *permanentHighQualityLocalPath;
@property(readonly, retain, nonatomic) NSString *temporaryHighQualityLocalPath;
@property(readonly, nonatomic) BOOL isOpusAudioMessage;
@property(readonly, nonatomic) BOOL isAutoloopVideo;
@property(readonly, nonatomic) BOOL isRecipeBasedSticker;
@property(readonly, nonatomic) BOOL existsAtLocalPath;
@property(readonly, retain, nonatomic) NSString *displayName;
@property(readonly, nonatomic) BOOL isFinished;
@property(readonly, nonatomic) BOOL canBeAccepted;
- (void)_calculateTypeInformation;
- (id)_dictionaryRepresentation;
- (BOOL)_updateWithDictionaryRepresentation:(id)arg1;
- (void)_clear;
- (void)_setDirectory:(BOOL)arg1 hfsType:(unsigned int)arg2 hfsCreator:(unsigned int)arg3 hfsFlags:(unsigned short)arg4;
- (void)_setAveragedTransferRate:(unsigned long long)arg1 lastAveragedInterval:(double)arg2 lastAveragedBytes:(unsigned long long)arg3;
- (void)_setCurrentBytes:(unsigned long long)arg1 totalBytes:(unsigned long long)arg2;
- (void)_setAccount:(id)arg1 otherPerson:(id)arg2;
- (id)_initWithGUID:(id)arg1 filename:(id)arg2 isDirectory:(BOOL)arg3 localURL:(id)arg4 account:(id)arg5 otherPerson:(id)arg6 totalBytes:(unsigned long long)arg7 hfsType:(unsigned int)arg8 hfsCreator:(unsigned int)arg9 hfsFlags:(unsigned short)arg10 isIncoming:(BOOL)arg11;
- (id)init;
- (void)dealloc;

@end

@interface NSArray (IMIDSUtilities)
- (id)__im_canonicalIDSIDsFromAddresses;
@end

@interface NSDate (IMCoreAdditions)
+ (BOOL)useCourierTime;
+ (id)__im_dateWithCurrentServerTime;
+ (id)__im_dateWithNanosecondTimeIntervalSinceReferenceDate:(long long)arg1;
- (long long)minutesDifferenceFromDate:(id)arg1;
- (long long)hoursDifferenceFromDate:(id)arg1;
- (long long)differenceFromDate:(id)arg1;
- (BOOL)isToday;
- (long long)__im_nanosecondTimeInterval;
@end

@interface NSObject (IMTesting)
- (void)__im_performAsynchronousTest:(CDUnknownBlockType)arg1 name:(id)arg2 timeout:(double)arg3 finalizer:(CDUnknownBlockType)arg4;
@end

@interface NSProxy (NSProxyWorkaround)
- (BOOL)__isSingletonProxy__im;
@end

@interface NSObject (IMSingleton)
+ (BOOL)isSingleton;
+ (BOOL)replaceSingletonWithSubclass:(id)arg1;
+ (BOOL)isSingletonOverridden;
+ (id)overriddenSingleton;
+ (void)replaceSingletonWithObject:(id)arg1;
+ (void)removeSingletonOverride;
+ (void)overrideSingletonWithObject:(id)arg1;
+ (id)singletonOverride;
+ (id)_createSingleton__im;
- (BOOL)__isSingletonProxy__im;
@end

@interface NSDictionary (IMSharedUtilitiesAdditions)
- (unsigned long long)unsignedLongLongValueForKey:(id)arg1 withDefault:(unsigned long long)arg2;
- (long long)longLongValueForKey:(id)arg1 withDefault:(long long)arg2;
- (unsigned long long)unsignedLongValueForKey:(id)arg1 withDefault:(unsigned long long)arg2;
- (long long)longValueForKey:(id)arg1 withDefault:(long long)arg2;
- (float)floatValueForKey:(id)arg1 withDefault:(float)arg2;
- (double)doubleValueForKey:(id)arg1 withDefault:(double)arg2;
- (unsigned long long)unsignedIntegerValueForKey:(id)arg1 withDefault:(unsigned long long)arg2;
- (long long)integerValueForKey:(id)arg1 withDefault:(long long)arg2;
- (BOOL)boolValueForKey:(id)arg1 withDefault:(BOOL)arg2;
@end

@interface NSObject (IMKeyValueCollectionUserDefaultsStorage)
- (BOOL)isArchivable_im;
@end

@interface NSString (IMKeyValueCollectionUserDefaultsStorage)
- (BOOL)isArchivable_im;
@end

@interface NSDate (IMKeyValueCollectionUserDefaultsStorage)
- (BOOL)isArchivable_im;
@end

@interface NSNumber (IMKeyValueCollectionUserDefaultsStorage)
- (BOOL)isArchivable_im;
@end

@interface NSData (IMKeyValueCollectionUserDefaultsStorage)
- (BOOL)isArchivable_im;
@end

@interface NSArray (IMKeyValueCollectionUserDefaultsStorage)
- (BOOL)isArchivable_im;
@end

@interface NSDictionary (IMKeyValueCollectionUserDefaultsStorage)
- (BOOL)isArchivable_im;
@end

@interface NSString (IMSharedUtilities)
- (id)__im_apfsCompatibleFilename;
- (id)__im_filePathWithVariant:(id)arg1;
@end

@interface NSDictionary (IMAssocatedMessageItemInfo)
+ (id)dictionaryWithMessageSummaryInfoData:(id)arg1;
+ (id)dictionaryWithAssociatedMessageSummary:(id)arg1 contentType:(unsigned char)arg2 pluginBundleID:(id)arg3 pluginDisplayName:(id)arg4;
@property(readonly, nonatomic) NSString *__im_associatedMessagePluginDisplayName;
@property(readonly, nonatomic) NSString *__im_associatedMessagePluginBundleID;
@property(readonly, nonatomic) NSNumber *__im_associatedMessageContentType;
@property(readonly, nonatomic) NSString *__im_associatedMessageSummary;
@end

@interface NSData (IMAssociatedMessageItemInfo)
+ (id)dataWithMessageSummaryInfoDictionary:(id)arg1;
@end

@interface NSURL (IMCoreAdditions)
- (BOOL)__im_conformsToDomain:(id)arg1 domainExtension:(id)arg2;
@end

@interface NSString (IMEngramUtilities)
- (id)__im_engramDataRepresentation;
@end

@interface NSData (IMEngramUtilities)
- (id)__im_engramStringRepresentation;
@end

@interface NSError (IMSharedUtilitiesAdditions)
+ (id)serializedErrorArrayFromErrorArray_im:(id)arg1;
+ (id)errorArrayFromSerializedErrorArray_im:(id)arg1;
- (struct NSDictionary *)serializedError_im;
- (id)initWithSerializedError_im:(struct NSDictionary *)arg1;
@end

extern NSString *IMAssociatedMessageDecodeGUID(NSString* guid);
