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

#import "IMSharedUtilities_ClassDump.h"

NSAttributedString *IMCreateSuperFormatStringWithAppendedFileTransfers(NSAttributedString *inString, NSArray *fileTransferGUIDs) NS_RETURNS_RETAINED;
NSAttributedString *IMCreateSuperFormatStringByAttachingMessageParts(NSAttributedString *inString) NS_RETURNS_RETAINED;

typedef NS_ENUM(uint64_t, IMMessageFlags) {
    kIMMessageFinished          =          0x1,
    kIMMessageIsEmote           =          0x2,
    kIMMessageIsFromMe          =          0x4,
    kIMMessageIsEmpty           =          0x8,
    kIMMessageIsDelayed         =         0x20,
    kIMMessageIsAutoReply       =         0x40,
    kIMMessageIsAlert           =        0x200,
    kIMMessageIsAddressedToMe   =        0x800,
    kIMMessageIsDelivered       =       0x1000,
    kIMMessageIsRead            =       0x2000,
    kIMMessageIsSystemMessage   =       0x4000,
    kIMMessageIsSent            =       0x8000,
    kIMMessageHasDDResults      =      0x10000,
    kIMMessageIsServiceMessage  =      0x20000,
    kIMMessageIsForward         =      0x40000,
    kIMMessageWasDowngraded     =      0x80000,
    kIMMessageWasDataDetected   =     0x100000,
    kIMMessageIsAudioMessage    =     0x200000,
    kIMMessageIsPlayed          =     0x400000,
    kIMMessageIsLocatingMessage =     0x800000,
    kIMMessageIsExpirable       =    0x1000000,
    kIMMessageIsFromExtSource   =    0x2000000,
    kIMMessageLegacyBits       = 0xee000000,
};

typedef uint32_t FZListenerCapabilities;
extern const FZListenerCapabilities kFZListenerCapManageStatus;
extern const FZListenerCapabilities kFZListenerCapNotifications;
extern const FZListenerCapabilities kFZListenerCapChats;
extern const FZListenerCapabilities kFZListenerCapAppleVC;
extern const FZListenerCapabilities kFZListenerCapAVChatInfo;
extern const FZListenerCapabilities kFZListenerCapAuxInput;
extern const FZListenerCapabilities kFZListenerCapVCInvitations;
extern const FZListenerCapabilities kFZListenerCapAppleLegacyVC;
extern const FZListenerCapabilities kFZListenerCapFileTransfers;
extern const FZListenerCapabilities kFZListenerCapAccounts;
extern const FZListenerCapabilities kFZListenerCapBuddyList;
extern const FZListenerCapabilities kFZListenerCapSendMessages;
extern const FZListenerCapabilities kFZListenerCapMessageHistory;
extern const FZListenerCapabilities kFZListenerCapIDQueries;
extern const FZListenerCapabilities kFZListenerCapChatCountsObserver;
extern const FZListenerCapabilities kFZListenerCapSentMessageObserver;
extern const FZListenerCapabilities kFZListenerCapDatabaseUpdateObserver;
extern const FZListenerCapabilities kFZListenerCapModifyReadState;
extern const FZListenerCapabilities kFZListenerCapAppleAC;
extern const FZListenerCapabilities kFZListenerCapAVObserver;
extern const FZListenerCapabilities kFZListenerCapOnDemandChatRegistry;
extern const FZListenerCapabilities kFZListenerCapTruncatedChatRegistry;
extern const FZListenerCapabilities kFZListenerCapOneTimeCode;
extern const FZListenerCapabilities kFZListenerCapSkipLastMessageLoad;
extern const FZListenerCapabilities kFZListenerCapEvenMoreTruncatedChatRegistry;
extern const FZListenerCapabilities kFZListenerCapBlackholedChatRegistry;

extern NSString *const IMChatMessageReceivedNotification;   // IMChatValueKey = IMMessage
extern NSString *const IMChatMessageSendFailedNotification; // IMChatValueKey = IMMessage
extern NSString *const IMChatRegistryDidLoadNotification;
extern NSString *const IMChatItemsDidChangeNotification;
extern NSString *const IMChatRegistryUnreadCountChangedNotification;

extern NSString *const IMChatValueKey;
extern NSString *const IMChatOldValueKey;
extern NSString *const IMChatIndexKey;
extern NSString *const IMChatQueryIDKey;
extern NSString *const IMChatErrorKey;

#pragma mark Blocks

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

#pragma mark Named Structures

struct IMAssociatedMessageGeometryDescriptor {
    unsigned long long layoutIntent;
    unsigned long long associatedLayoutIntent;
    float parentPreviewWidth;
    float xScalar;
    float yScalar;
    float scale;
    float rotation;
};

struct _FZChatRoomValidity {
    int _field1;
    unsigned short _field2;
};


#pragma mark -

//
// File: Versions/A/IMCore
// UUID: CF1C1FD6-2BE4-320F-BDFD-C9547A2D9010
//
//                           Arch: x86_64
//                Current version: 800.0.0
//          Compatibility version: 1.0.0
//                 Source version: 1981.1.15.0.0
//
// Objective-C Garbage Collection: Unsupported
//

@interface IMDirectlyObservableObject : NSObject
{
    NSArray *_observers;
}

@property(retain) NSArray *observers; // @synthesize observers=_observers;

- (void)informObserversOfNotification:(id)arg1;
- (void)removeObserver:(id)arg1;
- (void)addObserver:(id)arg1;
- (void)_objectDidPostNotification:(id)arg1;
- (void)dealloc;

@end

__attribute__((visibility("default"))) @interface IMService : NSObject { }

+ (NSURL *)imageURLForStatus:(NSNumber *)status;

+ (NSArray *)allServices;
+ (IMService *)serviceWithName:(NSString *)name;
+ (NSNotificationCenter *)notificationCenter;
+ (NSNumber *)myStatus;
+ (NSDate*)myIdleTime;
- (NSString *)localizedName;
- (NSString *)localizedShortName;
- (NSString*)name;
- (NSNumber *)status;
- (NSDictionary *)infoForScreenName: (NSString*)screenName;
- (NSArray *)infoForAllScreenNames;
- (NSArray *)infoForPreferredScreenNames;
- (NSArray *)peopleWithScreenName:(NSString *)screenName;
// - (NSArray *)screenNamesForPerson:(ABPerson *)person;

@end


@interface IMService (IMService_GetService)
+ (id)smsService;
+ (id)iMessageService;
+ (id)facetimeService;
+ (id)callService;
+ (id)jabberService;
+ (id)subnetService;
+ (id)aimService;
@end


@class IMAccount;
@interface IMServiceImpl : IMService
{
    NSString *_name;
    NSString *_localizedName;
    NSString *_localizedShortName;
    NSMutableDictionary *_cardMap;
    NSDictionary *_personToIDMap;
    NSString *_countryCode;
    IMAccount *_bestAccount;
    NSDictionary *_serviceDefaults;
    NSDictionary *_serviceProps;
    NSDictionary *_defaultSettings;
    NSData *_imageData;
    NSArray *_abProperties;
    NSArray *_emailDomains;
    NSArray *_siblingServiceNames;
    unsigned int _screenNameSensitivity;
    BOOL _hasLoadedServiceProperties;
    BOOL _handlesChatInvites;
    BOOL _supportsSMS;
    BOOL _supportsPhoneNumberMapping;
    BOOL _supportsGroupAttachments;
    BOOL _supportsMutatingGroupMembers;
    BOOL _supportsOneSessionForAllAccounts;
    BOOL _supportsAuthorization;
    BOOL _supportsRegistration;
    BOOL _supportsAdding;
    BOOL _supportsPresence;
    BOOL _supportsIDStatusLookup;
    BOOL _supportsDatabaseStorage;
    BOOL _supportsAudioMessages;
    BOOL _shouldInternationalizeNumbers;
    BOOL _supportsOfflineTransfers;
    BOOL _shouldDisableDeactivation;
    BOOL _ignoresNetworkConnectivity;
    BOOL _isPersistent;
    BOOL _isPlugInService;
    BOOL _allowsMultipleConnections;
}

+ (BOOL)systemSupportsSendingAttachmentsOfTypes:(id)arg1 error:(long long *)arg2;
+ (BOOL)systemSupportsSMSSending;
+ (id)supportedCountryCodes;
+ (BOOL)iMessageEnabled;
+ (BOOL)mmsEnabled;
+ (BOOL)smsEnabled;
+ (BOOL)iMessageEnabledForSenderLastAddressedHandle:(id)arg1 simID:(id)arg2 previousService:(id)arg3;
+ (BOOL)iMessageEnabledForSenderLastAddressedHandle:(id)arg1 simID:(id)arg2;
+ (BOOL)hasAlias:(id)arg1 onAccountForService:(id)arg2;
+ (BOOL)mmsEnabledforPhoneNumber:(id)arg1 simID:(id)arg2;
+ (id)operationalServicesWithCapability:(unsigned long long)arg1;
+ (id)connectedServicesWithCapability:(unsigned long long)arg1;
+ (id)servicesWithCapability:(unsigned long long)arg1;
+ (id)connectedServices;
+ (id)activeServices;
+ (id)serviceWithInternalName:(id)arg1;
+ (id)serviceWithName:(id)arg1;
+ (id)allServicesNonBlocking;
+ (id)allServices;
+ (void)setServiceClass:(Class)arg1;
+ (Class)serviceClass;
@property(readonly, nonatomic) NSString *shortName; // @synthesize shortName=_localizedShortName;
@property(readonly, nonatomic) NSString *name; // @synthesize name=_name;
@property(readonly, nonatomic) NSArray *emailDomains; // @synthesize emailDomains=_emailDomains;
@property(readonly, nonatomic) NSArray *addressBookProperties; // @synthesize addressBookProperties=_abProperties;
@property(readonly, nonatomic) unsigned int IDSensitivity; // @synthesize IDSensitivity=_screenNameSensitivity;
@property(readonly, nonatomic) BOOL shouldDisableDeactivation; // @synthesize shouldDisableDeactivation=_shouldDisableDeactivation;
@property(readonly, nonatomic) BOOL allowsMultipleConnections; // @synthesize allowsMultipleConnections=_allowsMultipleConnections;
@property(readonly, nonatomic) BOOL isPlugInService; // @synthesize isPlugInService=_isPlugInService;
@property(readonly, nonatomic) BOOL supportsAdding; // @synthesize supportsAdding=_supportsAdding;
@property(readonly, nonatomic) BOOL supportsGroupAttachments; // @synthesize supportsGroupAttachments=_supportsGroupAttachments;
@property(readonly, nonatomic) BOOL supportsOneSessionForAllAccounts; // @synthesize supportsOneSessionForAllAccounts=_supportsOneSessionForAllAccounts;
@property(readonly, nonatomic) BOOL supportsMutatingGroupMembers; // @synthesize supportsMutatingGroupMembers=_supportsMutatingGroupMembers;
@property(readonly, nonatomic) BOOL supportsPresence; // @synthesize supportsPresence=_supportsPresence;
@property(readonly, nonatomic) BOOL supportsOfflineTransfers; // @synthesize supportsOfflineTransfers=_supportsOfflineTransfers;
@property(readonly, nonatomic) BOOL ignoresNetworkConnectivity; // @synthesize ignoresNetworkConnectivity=_ignoresNetworkConnectivity;
@property(readonly, nonatomic) BOOL supportsRegistration; // @synthesize supportsRegistration=_supportsRegistration;
@property(readonly, nonatomic) BOOL handlesChatInvites; // @synthesize handlesChatInvites=_handlesChatInvites;
@property(readonly, nonatomic) BOOL isPersistent; // @synthesize isPersistent=_isPersistent;
@property(readonly, nonatomic) BOOL supportsAuthorization; // @synthesize supportsAuthorization=_supportsAuthorization;
@property(readonly, nonatomic) BOOL supportsPhoneNumberMapping; // @synthesize supportsPhoneNumberMapping=_supportsPhoneNumberMapping;
@property(readonly, nonatomic) BOOL supportsAudioMessages; // @synthesize supportsAudioMessages=_supportsAudioMessages;
@property(readonly, nonatomic) BOOL supportsIDStatusLookup; // @synthesize supportsIDStatusLookup=_supportsIDStatusLookup;
@property(retain, nonatomic) NSDictionary *defaultAccountSettings; // @synthesize defaultAccountSettings=_defaultSettings;
@property(retain, nonatomic) NSDictionary *serviceDefaults; // @synthesize serviceDefaults=_serviceDefaults;

@property(readonly, nonatomic) Class accountClass;
- (void)activeAccountsChanged:(id)arg1;
- (void)defaultsChanged:(id)arg1;
- (id)screenNamesForPerson:(id)arg1;
- (id)screenNamesForIMPerson:(id)arg1;
- (id)_personToIDMap;
- (id)peopleWithScreenName:(id)arg1;
- (id)imABPeopleWithScreenName:(id)arg1 options:(unsigned long long)arg2;
- (id)imABPeopleWithScreenName:(id)arg1;
- (id)imABPeopleWithScreenName:(id)arg1 identifier:(int *)arg2;
- (id)imABPeopleWithScreenName:(id)arg1 countryCode:(id)arg2 identifier:(int *)arg3;
@property(readonly, nonatomic) NSDictionary *cardMap;
- (void)clearIDToCardMap;
@property(retain, nonatomic) NSString *countryCode;
- (void)updateIDToCardMapWithNotification:(id)arg1;
- (id)_newIDToCardMap;
- (void)_dumpCardMap;
- (void)_addAddressBookCards:(id)arg1 toMap:(id)arg2;
- (id)_IDsToMapForIMPerson:(id)arg1;
- (id)description;
@property(readonly, nonatomic) NSArray *accountIDs;
@property(readonly, nonatomic) long long buddyNotesMaxByteLength;
@property(readonly, nonatomic) NSString *internalName;
@property(readonly, nonatomic) NSArray *siblingServices;
@property(readonly, nonatomic) NSString *addressBookProperty;
- (id)localizedShortName;
- (id)localizedName;
@property(readonly, nonatomic) BOOL _wantsInternationizedNumbers;
@property(readonly, nonatomic) BOOL _supportsDatabaseStorage;
- (BOOL)isEnabled;
@property(readonly, nonatomic) long long maxAttachmentSize;
- (long long)maxChatParticipantsForHandle:(id)arg1 simID:(id)arg2;
@property(readonly, nonatomic) NSData *serviceImageData;
- (id)subtypeInformationForAccount:(id)arg1;
@property(retain, nonatomic) NSDictionary *serviceProperties;
- (void)_loadPropertiesIfNeeded;
- (id)_abPropertiesBySanitizingABProperties:(id)arg1;
- (id)myScreenNames;
- (id)infoForPreferredScreenNames;
- (id)infoForAllScreenNames;
- (id)infoForScreenName:(id)arg1;
- (unsigned long long)status;
- (void)_blockUntilInitialSyncPerformed;
- (long long)compareNames:(id)arg1;
- (id)canonicalFormOfID:(id)arg1;
- (id)normalizedFormOfID:(id)arg1;
- (BOOL)equalID:(id)arg1 andID:(id)arg2;
- (void)statusChangedForAccount:(id)arg1 from:(unsigned long long)arg2 to:(unsigned long long)arg3;
- (void)disconnect;
- (void)doneSetup;
- (BOOL)initialSyncPerformed;
- (void)_calculateBestAccount;
- (void)_syncWithRemoteBuddies;
- (void)dealloc;
- (id)initWithName:(id)arg1;
@property(readonly, nonatomic, getter=isDiscontinued) BOOL discontinued;
@property(readonly, getter=isLegacyService) BOOL legacyService; // @dynamic legacyService;

@end

@class IMPeople, IMHandle;
@interface IMAccount : NSObject
{
    IMServiceImpl *_service;
    IMPeople *_buddyList;
    NSRecursiveLock *_lock;
    NSMapTable *_imHandles;
    IMHandle *_loginIMHandle;
    NSArray *_cachedAllowList;
    NSArray *_cachedBlockList;
    NSString *_loginID;
    NSString *_displayName;
    NSString *_uniqueID;
    long long _accountType;
    NSString *_strippedLogin;
    NSDictionary *_data;
    NSMutableDictionary *_dataChanges;
    NSMutableDictionary *_localCache;
    NSDictionary *_profile;
    NSMutableDictionary *_profileChanges;
    NSString *_countryCode;
    long long _profileStatus;
    NSDictionary *_accountPreferences;
    NSMutableDictionary *_accountPreferencesChanges;
    NSDictionary *_accountPersistentProperties;
    NSMutableDictionary *_accountPersistentPropertiesChanges;
    NSArray *_groups;
    NSMutableDictionary *_sortOrders;
    NSDictionary *_members;
    NSMutableDictionary *_coalescedChanges;
    NSArray *_targetGroupState;
    NSArray *_lastReceivedGroupState;
    NSDictionary *_subtypeInfo;
    NSArray *_vettedAliases;
    NSArray *_aliases;
    unsigned long long _myStatus;
    NSMutableDictionary *_currentAccountStatus;
    NSString *_myStatusMessage;
    NSDictionary *_myNowPlaying;
    NSDate *_myIdleSince;
    NSData *_myPictureData;
    NSData *_accountImageData;
    unsigned long long _capabilities;
    unsigned long long _defaultHandleCapabilities;
    BOOL _hasCheckedDefaultHandleCapabilities;
    NSAttributedString *_myProfile;
    long long _registrationStatus;
    long long _registrationFailureReason;
    NSDictionary *_registrationAlertInfo;
    unsigned long long _loginStatus;
    BOOL _isActive;
    BOOL _hasPostedOfflineNotification;
    BOOL _justLoggedIn;
    BOOL _useMeCardName;
    unsigned int _cachedBlockingMode;
    BOOL _blockIdleStatus;
    BOOL _syncedWithRemoteBuddyList;
    BOOL _hasReceivedSync;
    int _numHolding;
    int _coalesceCount;
    BOOL _needToCheckForWatchedIMHandles;
    BOOL _iconChecked;
    BOOL _hasBeenRemoved;
    id _smallImage;
    id _accountImage;
    BOOL _asleep;
}

+ (id)allBuddyListIMHandles;
+ (id)arrayOfAllIMHandles;
+ (id)nameOfLoginStatus:(unsigned long long)arg1;
+ (id)_groupSummaryFromGroupList:(id)arg1;
+ (void)removeTemporaryPasswordForAccount:(id)arg1 forServiceName:(id)arg2;
+ (void)setTemporaryPassword:(id)arg1 forAccount:(id)arg2 forAuthID:(id)arg3 forServiceName:(id)arg4;
+ (id)temporaryPasswordForAccount:(id)arg1 forAuthID:(id)arg2 forServiceName:(id)arg3;
+ (void)removePasswordForAccount:(id)arg1 forServiceName:(id)arg2;
+ (void)setPassword:(id)arg1 forAccount:(id)arg2 forAuthID:(id)arg3 forServiceName:(id)arg4;
+ (id)passwordForAccount:(id)arg1 forServiceName:(id)arg2;
@property(readonly, nonatomic) BOOL justLoggedIn; // @synthesize justLoggedIn=_justLoggedIn;
@property(readonly, nonatomic) IMPeople *buddyList; // @synthesize buddyList=_buddyList;
@property(readonly, nonatomic) id loginIMHandle; // @synthesize loginIMHandle=_loginIMHandle;
@property(readonly, nonatomic) NSDictionary *accountSubtypeInfo; // @synthesize accountSubtypeInfo=_subtypeInfo;
@property(readonly, nonatomic) BOOL isActive; // @synthesize isActive=_isActive;
@property(nonatomic) unsigned int blockingMode; // @synthesize blockingMode=_cachedBlockingMode;
@property(nonatomic) BOOL blockIdleStatus; // @synthesize blockIdleStatus=_blockIdleStatus;
@property(readonly, nonatomic) unsigned long long loginStatus; // @synthesize loginStatus=_loginStatus;
@property(readonly, nonatomic) unsigned long long capabilities; // @synthesize capabilities=_capabilities;
@property(readonly, nonatomic) NSDate *myIdleSince; // @synthesize myIdleSince=_myIdleSince;
@property(readonly, nonatomic) NSData *myPictureData; // @synthesize myPictureData=_myPictureData;
@property(readonly, nonatomic) NSString *myStatusMessage; // @synthesize myStatusMessage=_myStatusMessage;
@property(readonly, nonatomic) unsigned long long myStatus; // @synthesize myStatus=_myStatus;
@property(readonly, nonatomic) NSAttributedString *myProfile; // @synthesize myProfile=_myProfile;
@property(readonly, nonatomic) NSDictionary *myStatusDictionary; // @synthesize myStatusDictionary=_currentAccountStatus;
@property(readonly, nonatomic) __weak IMServiceImpl *service; // @synthesize service=_service;
@property(readonly, nonatomic) NSString *strippedLogin; // @synthesize strippedLogin=_strippedLogin;
@property(retain, nonatomic) NSString *login; // @synthesize login=_loginID;

- (void)_handleIncomingCommand:(id)arg1 withProperties:(id)arg2 fromBuddyInfo:(id)arg3;
- (void)_handleDeliveredCommand:(id)arg1 withProperties:(id)arg2 fromBuddyInfo:(id)arg3;
- (BOOL)_updateDisplayName:(id)arg1;
@property(copy, nonatomic) NSString *displayName;
- (void)setInteger:(int)arg1 forPreferenceKey:(id)arg2;
- (int)integerForPreferenceKey:(id)arg1;
- (void)setBool:(BOOL)arg1 forPreferenceKey:(id)arg2;
- (BOOL)boolForPreferenceKey:(id)arg1;
- (void)setString:(id)arg1 forPreferenceKey:(id)arg2;
- (id)stringForPreferenceKey:(id)arg1;
- (id)dictionaryDataForPreferenceKey:(id)arg1;
- (void)setDictionaryData:(id)arg1 forPreferenceKey:(id)arg2;
- (void)removeObjectForPreferenceKey:(id)arg1;
- (void)setObject:(id)arg1 forPreferenceKey:(id)arg2;
- (id)objectForPreferenceKey:(id)arg1;
@property(readonly, nonatomic) NSDictionary *accountPreferences;
- (void)_removePersistentPropertyForKey:(id)arg1;
- (void)_setPersistentPropertyObject:(id)arg1 forKey:(id)arg2;
- (id)_persistentPropertyForKey:(id)arg1;
@property(readonly, nonatomic) NSDictionary *_persistentProperties;
@property(readonly, nonatomic) BOOL isAsleep;
- (void)systemWillSleep;
- (void)systemDidWake;
- (void)_setInteger:(long long)arg1 forKey:(id)arg2;
- (void)setInteger:(long long)arg1 forKey:(id)arg2;
- (long long)integerForKey:(id)arg1;
- (void)_setBool:(BOOL)arg1 forKey:(id)arg2;
- (void)setBool:(BOOL)arg1 forKey:(id)arg2;
- (BOOL)boolForKey:(id)arg1;
- (void)_setString:(id)arg1 forKey:(id)arg2;
- (void)setString:(id)arg1 forKey:(id)arg2;
- (id)stringForKey:(id)arg1;
- (id)dictionaryDataForKey:(id)arg1;
- (void)_setDictionaryData:(id)arg1 forKey:(id)arg2;
- (void)setDictionaryData:(id)arg1 forKey:(id)arg2;
- (void)_removeObjectForKey:(id)arg1;
- (void)removeObjectForKey:(id)arg1;
- (void)setObject:(id)arg1 forKey:(id)arg2;
- (void)_setLocalCachedObject:(id)arg1 forKey:(id)arg2;
- (void)_setObject:(id)arg1 forKey:(id)arg2;
- (id)objectForKey:(id)arg1;
- (long long)validationErrorReasonForAlias:(id)arg1 type:(long long)arg2;
- (long long)validationErrorReasonForAlias:(id)arg1;
- (long long)validationStatusForAlias:(id)arg1 type:(long long)arg2;
- (long long)validationStatusForAlias:(id)arg1;
- (BOOL)validateAlias:(id)arg1 type:(long long)arg2;
- (BOOL)validateAliases:(id)arg1;
- (BOOL)validateAlias:(id)arg1;
- (BOOL)unvalidateAliases:(id)arg1;
- (BOOL)unvalidateAlias:(id)arg1;
- (long long)typeForAlias:(id)arg1;
- (BOOL)removeAlias:(id)arg1 type:(long long)arg2;
- (BOOL)removeAliases:(id)arg1;
- (BOOL)removeAlias:(id)arg1;
- (BOOL)addAlias:(id)arg1 type:(long long)arg2;
- (BOOL)addAliases:(id)arg1;
- (BOOL)addAlias:(id)arg1;
- (id)aliasesForType:(long long)arg1;
- (BOOL)hasAlias:(id)arg1 type:(long long)arg2;
- (BOOL)hasAlias:(id)arg1;
- (void)_invalidateCachedAliases;
@property(readonly, nonatomic) NSArray *aliases;
@property(readonly, nonatomic, getter=isMakoAccount) BOOL makoAccount;
- (id)_statuses;
- (id)_aliasInfoForAlias:(id)arg1;
- (BOOL)_aliasIsVisible:(id)arg1;
- (id)_aliases;
@property(readonly, nonatomic) NSArray *aliasesToRegister;
@property(readonly, nonatomic) NSArray *vettedAliases;
- (void)_updateProfileInfo:(id)arg1;
- (long long)profileValidationErrorReason;
- (long long)profileValidationStatus;
- (BOOL)validateProfile;
- (BOOL)setProfileString:(id)arg1 forKey:(id)arg2;
- (BOOL)setProfileValue:(id)arg1 forKey:(id)arg2;
- (BOOL)removeProfileValueForKey:(id)arg1;
- (id)profileStringForKey:(id)arg1;
- (id)profileValueForKey:(id)arg1;
@property(readonly, nonatomic) NSDictionary *profileInfo;
@property(readonly, nonatomic) NSString *countryCode;
- (BOOL)updateAuthorizationCredentials:(id)arg1 token:(id)arg2;
- (void)enrollSelfDeviceInSMSRelay;
- (void)unEnrollDeviceInSMSRelay:(id)arg1;
- (void)enrollDeviceInSMSRelay:(id)arg1;
- (BOOL)authenticateAccount;
- (BOOL)requestNewAuthorizationCredentials;
@property(readonly, nonatomic) NSString *authorizationToken;
@property(readonly, nonatomic) NSString *authorizationID;
@property(readonly, nonatomic) BOOL supportsAuthorization;
- (struct _FZChatRoomValidity)validityOfChatRoomName:(id)arg1;
- (id)defaultChatSuffix;
- (id)chatIDForRoomName:(id)arg1;
- (void)nowLoggedOut;
- (void)nowLoggedIn;
- (void)handleSubscriptionRequestFrom:(id)arg1 withMessage:(id)arg2;
- (void)imHandle:(id)arg1 buddyStatusChanged:(BOOL)arg2;
- (void)disconnectAllIMHandles;
- (void)unregisterIMHandleWithID:(id)arg1;
- (void)registerIMHandle:(id)arg1;
- (void)_refreshLoginIMHandle;
- (void)forgetAllWatches;
- (void)stopWatchingIMHandle:(id)arg1;
- (void)startWatchingIMHandle:(id)arg1;
- (void)watchBuddiesIfNecessary;
- (void)_watchBuddiesIfNecessary;
- (BOOL)removeIMHandle:(id)arg1 fromIMPerson:(id)arg2;
- (BOOL)addIMHandle:(id)arg1 toIMPerson:(id)arg2;
- (id)imHandlesForIMPerson:(id)arg1;
- (void)requestBuddyListAuthorizationFromIMHandle:(id)arg1;
- (void)setBuddyListAuthorization:(BOOL)arg1 forIMHandle:(id)arg2;
- (unsigned long long)sortOrderForIMHandle:(id)arg1 inGroup:(id)arg2;
- (id)personSibsForIMHandle:(id)arg1;
- (id)personForIMHandle:(id)arg1 identifier:(int *)arg2;
- (id)personForIMHandle:(id)arg1;
- (id)imHandleWithID:(id)arg1;
- (id)existingIMHandleWithID:(id)arg1 countryCode:(id)arg2;
- (id)imHandleWithID:(id)arg1 countryCode:(id)arg2;
- (id)_imHandleWithID:(id)arg1 alreadyCanonical:(BOOL)arg2 originalID:(id)arg3 countryCode:(id)arg4;
- (id)imHandleWithID:(id)arg1 alreadyCanonical:(BOOL)arg2;
- (unsigned long long)defaultHandleCapabilities;
- (id)existingIMHandleWithID:(id)arg1;
- (id)existingIMHandleWithID:(id)arg1 alreadyCanonical:(BOOL)arg2;
- (id)existingIMHandleWithInfo:(id)arg1 alreadyCanonical:(BOOL)arg2;
- (id)imHandleWithInfo:(id)arg1 alreadyCanonical:(BOOL)arg2;
- (id)existingIMHandleWithInfo:(id)arg1;
- (id)imHandleWithInfo:(id)arg1;
- (Class)imHandleClass;
@property(readonly, nonatomic) NSArray *arrayOfAllIMHandles;
- (void)recalculateSubtypeInfo;
- (void)_clearImageCache;
- (id)recalculatedSubtypeInfo;
- (long long)compareNames:(id)arg1;
- (void)groupsChanged:(id)arg1 error:(id)arg2;
- (void)_syncWithRemoteBuddies;
- (void)setIMAccountLoginStatus:(unsigned long long)arg1 errorMessage:(id)arg2 reason:(int)arg3;
- (void)setIMAccountLoginStatus:(unsigned long long)arg1 errorMessage:(id)arg2;
- (void)setIMAccountLoginStatus:(unsigned long long)arg1;
- (void)setIsActive:(BOOL)arg1;
@property(readonly, nonatomic) BOOL isConnected;
@property(readonly, nonatomic) BOOL isConnecting;
@property(readonly, nonatomic) NSString *loginStatusMessage;
- (void)_notJustLoggedIn;
- (BOOL)unregisterAccount;
- (BOOL)registerAccount;
@property(readonly, nonatomic) long long registrationFailureReason;
@property(readonly, nonatomic) long long registrationStatus;
- (void)_updateRegistrationStatus:(int)arg1 error:(int)arg2 info:(id)arg3;
@property(readonly, nonatomic) BOOL supportsRegistration;
@property(readonly, nonatomic) NSDictionary *registrationFailureAlertInfo;
@property(readonly, nonatomic) BOOL canSendMessages;
@property(readonly, nonatomic) BOOL isOperational;
@property(readonly, nonatomic) BOOL isRegistered;
@property(readonly, nonatomic) BOOL _isUsableForSending;
- (void)accountDidDeactivate;
- (void)accountDidBecomeActive;
- (void)accountWillBeRemoved;
- (void)_serviceDidDisconnect:(id)arg1;
- (void)_serviceDidReconnect:(id)arg1;
- (void)_serviceDidConnect:(id)arg1;
- (void)_registrationStatusChanged:(id)arg1;
- (void)setBuddyProperties:(id)arg1 buddyPictures:(id)arg2;
- (void)buddyPictureChanged:(id)arg1 imageData:(id)arg2 imageHash:(id)arg3;
- (void)buddyPropertiesChanged:(id)arg1;
- (void)resumeBuddyUpdates;
- (void)_resumeBuddyUpdatesNow;
- (void)holdBuddyUpdates;
@property(readonly, nonatomic) BOOL makingChanges;
- (void)endChanges;
- (id)memberGroups:(id)arg1;
@property(readonly, nonatomic) NSArray *groupList;
- (id)groupMembers:(id)arg1;
- (id)propertiesForGroup:(id)arg1;
- (void)reorderGroups:(id)arg1;
- (void)reorderGroup:(id)arg1 order:(id)arg2;
- (void)renameGroup:(id)arg1 to:(id)arg2;
- (void)changeBuddyList:(id)arg1 add:(BOOL)arg2 groups:(id)arg3 atLocation:(long long)arg4;
- (void)addBuddyToBuddyList:(id)arg1;
- (BOOL)removeIMHandle:(id)arg1 fromGroups:(id)arg2;
- (BOOL)addIMHandle:(id)arg1 toGroups:(id)arg2 atLocation:(long long)arg3;
- (BOOL)removePeople:(id)arg1 fromGroups:(id)arg2;
- (BOOL)addPeople:(id)arg1 toGroups:(id)arg2 atLocation:(long long)arg3;
- (void)_ensureGroupsExists:(id)arg1;
- (void)syncWithRemoteBuddies;
- (void)_markHasSyncedWithRemoteBuddies;
@property(readonly, nonatomic) BOOL hasSyncedWithRemoteBuddies;
- (void)requestGroups;
- (void)hookupToDaemon;
- (void)beginChanges;
- (void)_applyChangesToTemporaryCache:(id)arg1;
- (void)setTargetGroupsState:(id)arg1;
- (void)updateWithTargetGroups;
- (void)setWaitForTargetState;
- (void)targetGroupStateTimeout;
@property(readonly, nonatomic) BOOL hasTargetGroupStateBeenMet;
@property(readonly, nonatomic) BOOL isAwaitingTargetGroupState;
- (void)clearTargetState;
@property(nonatomic) BOOL blockOtherAddresses;
@property(retain, nonatomic) NSArray *allowList;
@property(retain, nonatomic) NSArray *blockList;
- (void)blockMessages:(BOOL)arg1 fromID:(id)arg2;
- (void)setCachedBlockIdleStatus:(BOOL)arg1;
- (void)setCachedBlockingMode:(unsigned int)arg1;
- (void)setCachedBlockList:(id)arg1;
- (void)setCachedAllowList:(id)arg1;
@property(readonly, nonatomic) NSArray *emailDomains;
@property(readonly, nonatomic) NSString *addressBookProperty;
@property(readonly, nonatomic) NSArray *addressBookProperties;
@property(readonly, nonatomic) NSDictionary *dictionary;
- (void)loadFromDictionary:(id)arg1;
- (void)_loadFromDictionary:(id)arg1 force:(BOOL)arg2;
- (void)setValue:(id)arg1 ofExtraProperty:(id)arg2 ofIMHandle:(id)arg3;
- (void)requestProperty:(id)arg1 ofIMHandle:(id)arg2;
@property(readonly, nonatomic) long long invalidSettings;
@property(readonly, nonatomic) BOOL isManaged;
@property(readonly, nonatomic) BOOL validServer;
@property(readonly, nonatomic) BOOL validPort;
@property(readonly, nonatomic) BOOL validLogin;
@property(readonly, nonatomic) BOOL canActivate;
@property(readonly, nonatomic) BOOL isSMSRelayCapable;
@property(readonly, nonatomic) BOOL allowsMMSRelay;
@property(readonly, nonatomic) BOOL allowsSMSRelay;
@property(nonatomic) BOOL allowsVCRelay;
@property(nonatomic) BOOL goIdle;
@property(readonly, nonatomic) long long port;
@property(readonly, nonatomic) NSString *server;
- (id)_serverWithSSL:(BOOL)arg1;
- (id)description;
@property(readonly, nonatomic) BOOL useSSL;
@property(nonatomic) BOOL autoLogin;
@property(readonly, nonatomic) BOOL hasCustomDescription;
@property(retain, nonatomic) NSString *accountDescription;
@property(nonatomic, getter=isInvisible) BOOL invisible;
- (void)removeTemporaryPassword;
- (void)setTemporaryPassword:(id)arg1;
@property(readonly, nonatomic) NSString *temporaryPassword;
- (void)removePassword;
- (void)setPassword:(id)arg1;
@property(readonly, nonatomic) NSString *password;
@property(readonly, nonatomic) BOOL handlesChatInvites;
- (void)updateCapabilities:(unsigned long long)arg1;
- (BOOL)hasCapability:(unsigned long long)arg1;
- (long long)compareServices:(id)arg1;
- (long long)compareIDs:(id)arg1;
- (long long)compareStatus:(id)arg1;
- (long long)compareAccountNames:(id)arg1;
- (long long)compareLoginStatus:(id)arg1;
- (BOOL)emailAddressIsID:(id)arg1;
- (void)resetToDefaults;
- (void)writeSettings;
- (BOOL)equalID:(id)arg1 andID:(id)arg2;
- (id)canonicalFormOfID:(id)arg1 countryCode:(id)arg2;
- (id)canonicalFormOfID:(id)arg1;
@property(readonly, nonatomic) NSData *accountImageData;
@property(readonly, nonatomic) NSString *serviceName;
@property(readonly, nonatomic) NSString *name;
@property(readonly, nonatomic) NSString *internalName;
@property(readonly, nonatomic) NSString *shortName;
- (void)setUniqueID:(id)arg1;
@property(readonly, nonatomic) NSString *uniqueID;
@property(readonly, nonatomic) NSString *myNowPlayingString;
- (void)setCurrentAccountStatus:(id)arg1;
- (void)_updateMyStatus:(unsigned long long)arg1 message:(id)arg2;
@property(readonly, nonatomic) long long accountType;
- (void)_updateLogin:(id)arg1;
- (void)loginStatusChanged:(unsigned int)arg1 message:(id)arg2 reason:(int)arg3 properties:(id)arg4;
- (void)logoutAccount;
- (void)loginAccount;
- (void)autoLoginAccount;
- (void)_loginWithAutoLogin:(BOOL)arg1;
- (id)initWithUniqueID:(id)arg1 service:(id)arg2;
- (id)initWithService:(id)arg1;
- (void)clearServiceCaches;
- (void)dealloc;

@end

@class IMPerson;
@interface IMHandle : IMDirectlyObservableObject <NSSecureCoding>
{
    IMAccount *_account;
    NSString *_id;
    NSString *_uncanonicalID;
    NSString *_countryCode;
    NSDictionary *_otherServiceIDs;
    NSDate *_idleSince;
    NSDate *_feedUpdatedDate;
    NSDictionary *_extraProps;
    NSDictionary *_certs;
    NSSet *_groups;
    IMPerson *_person;
    NSString *_abFirstName;
    NSString *_abLastName;
    NSString *_abFullName;
    NSString *_abNickname;
    NSString *_displayID;
    NSString *_firstName;
    NSString *_lastName;
    NSString *_fullName;
    NSString *_nickname;
    NSArray *_emails;
    NSString *_normalizedFormOfID;
    NSString *_IDWithoutResource;
    NSString *_IDWithTrimmedServer;
    NSString *_uniqueName;
    NSData *_pictureData;
    NSString *_statusMsg;
    NSString *_processedStatusMsg;
    NSAttributedString *_richStatusMsg;
    NSDate *_whenWentOffline;
    NSDate *_whenStatusChanged;
    NSString *_prevStatusMsg;
    NSMutableArray *_notificationNameQueue;
    NSMutableArray *_notificationQueue;
    struct __CFPhoneNumber *_phoneNumberRef;
    NSString *_formattedNumber;
    BOOL _hasCheckedPhoneNumber;
    unsigned long long _status;
    unsigned long long _prevStatus;
    unsigned long long _capabilities;
    unsigned int _authRequestStatus;
    unsigned long long _resourceIndex;
    long long _IDStatus;
    BOOL _blockNotifications;
    BOOL _hasTemporaryWatch;
    BOOL _isMobile;
    BOOL _isBot;
    BOOL _isAnonymous;
    BOOL _beingTornDown;
    BOOL _hasCheckedCardMap;
    long long _priority;
    int _addressBookIdentifier;
    int _notificationQueueCount;
    NSNumber *_isBusiness;
    NSNumber *_isMako;
    NSNumber *_isApple;
    BOOL _hasCheckedForSuggestions;
    NSString *_personCentricID;
    NSString *_guid;
    
    NSData *_mapItemImageData;
    NSData *_mapItemBannerImageData;
    
    NSURL *_statusURL;
    id _cachedStatusMessageAsURL;
    NSString *_suggestedName;
}

+ (id)filterIMHandlesForBestAccountSiblings:(id)arg1;
+ (id)filterIMHandlesForAccountSiblings:(id)arg1 onAccount:(id)arg2;
+ (id)bestIMHandleInArray:(id)arg1;
+ (id)imHandlesForIMPerson:(id)arg1;
+ (BOOL)supportsSecureCoding;
+ (id)nameOfStatus:(unsigned long long)arg1;
+ (void)_loadStatusNames;
+ (BOOL)notificationsEnabled;
+ (void)setNotificationsEnabled:(BOOL)arg1;
+ (void)handlesForPersons:(id)arg1 useBestHandle:(BOOL)arg2 useExtendedAsyncLookup:(BOOL)arg3 completion:(CDUnknownBlockType)arg4;
+ (void)validHandlesForPersons:(id)arg1 useExtendedAsyncLookup:(BOOL)arg2 completion:(CDUnknownBlockType)arg3;
+ (void)validHandlesForPersons:(id)arg1 completion:(CDUnknownBlockType)arg2;
+ (void)bestHandlesForPersons:(id)arg1 useExtendedAsyncLookup:(BOOL)arg2 completion:(CDUnknownBlockType)arg3;
+ (void)bestHandlesForPersons:(id)arg1 completion:(CDUnknownBlockType)arg2;
@property(nonatomic) BOOL hasCheckedForSuggestions; // @synthesize hasCheckedForSuggestions=_hasCheckedForSuggestions;
@property(copy, nonatomic) NSString *suggestedName; // @synthesize suggestedName=_suggestedName;
@property(retain, nonatomic) id cachedStatusMessageAsURL; // @synthesize cachedStatusMessageAsURL=_cachedStatusMessageAsURL;
@property(retain, nonatomic) NSURL *statusURL; // @synthesize statusURL=_statusURL;
@property(nonatomic) long long IDStatus; // @synthesize IDStatus=_IDStatus;
// @property(retain, nonatomic) CNContact *cnContact; // @synthesize cnContact=_cnContact;
@property(retain, nonatomic) NSData *mapItemBannerImageData; // @synthesize mapItemBannerImageData=_mapItemBannerImageData;
@property(retain, nonatomic) NSData *mapItemImageData; // @synthesize mapItemImageData=_mapItemImageData;
// @property(retain, nonatomic) MKMapItem *mapItem; // @synthesize mapItem=_mapItem;
@property(readonly, retain, nonatomic) NSString *guid; // @synthesize guid=_guid;
@property(readonly, nonatomic) int addressBookIdentifier; // @synthesize addressBookIdentifier=_addressBookIdentifier;
@property(retain, nonatomic) NSDictionary *otherServiceIDs; // @synthesize otherServiceIDs=_otherServiceIDs;
@property(readonly, retain, nonatomic) NSData *pictureData; // @synthesize pictureData=_pictureData;
@property(readonly, nonatomic) BOOL isMobile; // @synthesize isMobile=_isMobile;
@property(readonly, nonatomic) BOOL isBot; // @synthesize isBot=_isBot;
@property(nonatomic) long long priority; // @synthesize priority=_priority;
@property(readonly, retain, nonatomic) NSDate *feedUpdatedDate; // @synthesize feedUpdatedDate=_feedUpdatedDate;
@property(readonly, nonatomic) unsigned int authRequestStatus; // @synthesize authRequestStatus=_authRequestStatus;
@property(readonly, retain, nonatomic) IMAccount *account; // @synthesize account=_account;
@property(readonly, retain, nonatomic) NSString *uniqueName; // @synthesize uniqueName=_uniqueName;
@property(retain, nonatomic) NSString *personCentricID; // @synthesize personCentricID=_personCentricID;
@property(readonly, retain, nonatomic) NSString *ID; // @synthesize ID=_id;
@property(readonly, retain, nonatomic) NSAttributedString *richStatusMessage; // @synthesize richStatusMessage=_richStatusMsg;
@property(readonly, retain, nonatomic) NSString *previousStatusMessage; // @synthesize previousStatusMessage=_prevStatusMsg;
@property(readonly, nonatomic) unsigned long long previousStatus; // @synthesize previousStatus=_prevStatus;
@property(readonly, retain, nonatomic) NSDictionary *extraProperties; // @synthesize extraProperties=_extraProps;
@property(readonly, retain, nonatomic) NSString *originalID; // @synthesize originalID=_uncanonicalID;

- (void)_mapItemBannerImageDataFetchedWithResponse:(id)arg1 statusCode:(long long)arg2 resultData:(id)arg3 remoteURLConnectionError:(id)arg4;
- (void)_fetchMapItemBannerImageDataForMapItem:(id)arg1;
- (void)_mapItemImageDataFetchedWithResponse:(id)arg1 statusCode:(long long)arg2 resultData:(id)arg3 remoteURLConnectionError:(id)arg4;
- (void)_fetchMapItemImageDataForMapItem:(id)arg1;
- (void)_postOnScreenChangedNotificationForProperty:(id)arg1;
- (void)_mapItemFetchedWithMapItems:(id)arg1 error:(id)arg2;
- (void)_fetchBusinessInfo;
- (void)sendNotificationABPersonChanged;
- (id)description;
- (void)setCustomPictureData:(id)arg1 key:(id)arg2;
- (void)setCustomPictureData:(id)arg1;
- (id)customPictureData;
- (void)customPictureDataChanged:(id)arg1 key:(id)arg2;
- (void)_imPersonPictureChanged:(id)arg1;
- (void)_sendCommand:(id)arg1 properties:(id)arg2;
- (void)_sendAutomationData:(id)arg1 properties:(id)arg2;
@property(readonly, nonatomic) BOOL hasMultiwayAudio;
@property(readonly, nonatomic) BOOL hasAudio;
@property(readonly, nonatomic) BOOL hasMultiwayVideo;
@property(readonly, nonatomic) BOOL hasVideo;
@property(readonly, nonatomic) BOOL isConferenceAvailable;
@property(readonly, nonatomic) BOOL hasConferencing;
- (BOOL)hasCapability:(unsigned long long)arg1;
- (BOOL)_setCapabilities:(unsigned long long)arg1;
- (void)setCapabilities:(unsigned long long)arg1;
@property(readonly, nonatomic) unsigned long long capabilities;
- (id)_bestChatSibling;
- (id)_chatSiblingsArray;
- (id)_chatSiblings;
- (BOOL)_isChatSiblingOf:(id)arg1;
- (BOOL)isSiblingOf:(id)arg1;
- (BOOL)isAccountSiblingOf:(id)arg1;
@property(readonly, retain, nonatomic) NSSet *siblings;
- (id)chatSiblingsArray;
- (id)existingChatSiblingsArray;
@property(readonly, retain, nonatomic) NSArray *accountSiblingsArray;
@property(readonly, retain, nonatomic) NSArray *existingAccountSiblingsArray;
@property(readonly, retain, nonatomic) NSArray *siblingsArray;
@property(readonly, nonatomic) BOOL hasOtherSiblings;
- (BOOL)matchesIMHandle:(id)arg1;
- (long long)compareAccountNames:(id)arg1;
- (long long)compareNormalizedIDs:(id)arg1;
- (long long)compareIDs:(id)arg1;
- (long long)compareStatus:(id)arg1;
- (long long)compareLastNames:(id)arg1;
- (long long)compareFirstNames:(id)arg1;
- (id)_nameForComparisonPreferFirst:(BOOL)arg1;
@property(readonly, nonatomic) double timeSinceStatusChanged;
@property(readonly, nonatomic) double timeSinceWentOffline;
- (void)setStatus:(unsigned long long)arg1 message:(id)arg2 richMessage:(id)arg3;
- (void)_clearStatusMessageURLCache;
@property(readonly, retain, nonatomic) NSString *statusMessage;
- (void)_filterStatusMessage;
@property(readonly, retain, nonatomic) NSString *idleString;
@property(readonly, retain, nonatomic) NSString *offlineString;
- (void)setFeedUpdatedDate:(id)arg1;
- (void)setIdleSince:(id)arg1;
- (void)_setIDStatus:(long long)arg1;
@property(readonly, nonatomic) double idleTime;
@property(readonly, retain, nonatomic) NSString *nameOfStatus;
- (void)statusChanged:(unsigned long long)arg1;
- (void)statusMessageChanged:(id)arg1;
- (void)statusChanged:(unsigned long long)arg1 message:(id)arg2;
- (void)setPersonStatus:(unsigned long long)arg1;
@property(readonly, nonatomic) unsigned long long status;
- (void)setAuthRequestStatus:(unsigned int)arg1;
- (void)_updateStatusBasedOnAuthRequestStatus;
- (void)_stopRetainingAccount:(id)arg1;
- (id)dependentIMHandles;
- (id)existingIMHandleWithoutResource;
- (id)imHandleWithoutResource;
@property(readonly, retain, nonatomic) NSString *IDWithoutResource;
@property(readonly, retain, nonatomic) NSString *resource;
@property(readonly, retain, nonatomic) NSString *accountTypeName;
- (unsigned int)sortOrderInGroup:(id)arg1;
@property(nonatomic, setter=setBlocked:) BOOL isBlocked;
@property(readonly, nonatomic) BOOL isVisiblyBlocked;
- (BOOL)_isMyIDInList:(id)arg1;
- (void)propertiesChanged:(id)arg1;
- (void)_setExtraProperties:(id)arg1;
@property(readonly, nonatomic) id bestSibling;
- (id)bestIMHandleForAccount:(id)arg1 onService:(id)arg2 inGroup:(id)arg3 otherThan:(id)arg4;
@property(readonly, retain, nonatomic) id bestAccountSibling;
- (id)bestIMHandleForAccount:(id)arg1;
- (id)bestIMHandleForService:(id)arg1;
- (BOOL)isBetterThanIMHandle:(id)arg1;
- (void)setHasTemporaryWatch:(BOOL)arg1;
@property(readonly, nonatomic) BOOL watchingIMHandle;
- (void)setValue:(id)arg1 ofExtraProperty:(id)arg2;
- (void)requestValueOfProperty:(id)arg1;
- (id)_formattedPhoneNumber;
- (void)_updateOriginalID:(id)arg1;
- (struct __CFPhoneNumber *)phoneNumberRef;
- (void)_createPhoneNumberRefIfNeeded;
@property(readonly, nonatomic) BOOL isLoginIMHandle;
@property(readonly, nonatomic) BOOL isLoginIMHandleForAnyAccount;
@property(readonly, nonatomic) BOOL isBuddy;
@property(readonly, retain, nonatomic) NSString *server;
- (BOOL)hasResource;
@property(readonly, nonatomic) BOOL hasLocation;
- (BOOL)hasServer;
@property(readonly, retain, nonatomic) NSString *mobileDeviceName;
- (void)setIsBot:(BOOL)arg1;
- (void)setIsMobile:(BOOL)arg1;
@property(readonly, nonatomic) BOOL isSystemUser;
@property(readonly, nonatomic) BOOL canBeAdded;
- (void)_contactStoreDidChange:(id)arg1;
- (void)setEmails:(id)arg1;
- (void)setEmail:(id)arg1;
- (void)setFirstName:(id)arg1 lastName:(id)arg2;
@property(readonly, retain, nonatomic) NSArray *emails;
- (void)setEmails:(id)arg1 andUpdateABPerson:(BOOL)arg2;
@property(readonly, retain, nonatomic) NSString *email;
- (void)setEmail:(id)arg1 andUpdateABPerson:(BOOL)arg2;
- (void)setFirstName:(id)arg1 lastName:(id)arg2 fullName:(id)arg3 andUpdateABPerson:(BOOL)arg4;
- (void)setLocalNickname:(id)arg1;
- (void)setImageData:(id)arg1;
- (void)_setBaseFirstName:(id)arg1 lastName:(id)arg2 fullName:(id)arg3;
- (void)_setABPersonFirstName:(id)arg1 lastName:(id)arg2;
@property(readonly, retain, nonatomic) NSString *lastName;
@property(readonly, retain, nonatomic) NSString *firstName;
@property(readonly, retain, nonatomic) NSString *nickname;
@property(readonly, nonatomic) BOOL hasName;
- (void)resetUniqueName;
@property(readonly, retain, nonatomic) NSString *nameAndID;
@property(readonly, retain, nonatomic) NSString *fullName;
@property(readonly, retain, nonatomic) NSString *_displayNameWithAbbreviation;
- (id)displayNameForChat:(id)arg1;
@property(readonly, retain, nonatomic) NSString *normalizedID;
@property(readonly, retain, nonatomic) NSString *displayID;
- (id)immediateNameWithNeedsSuggestedNameFetch:(char *)arg1 useSuggestedName:(BOOL)arg2;
- (void)scheduleSuggestedNameFetchIfNecessary;
@property(readonly, retain, nonatomic) NSString *name;
- (BOOL)_hasABName;
- (BOOL)_hasServiceNameProperties;
- (id)_IDWithTrimmedServer;
@property(retain, nonatomic, setter=setIMPerson:) IMPerson *person;
- (id)_cachedPerson;
- (void)_clearABPersonLookup;
- (void)resetABProperties;
- (void)_clearABProperties;
- (BOOL)areABPropertiesRecent;
- (id)_abPersonCreateIfNeeded;
- (BOOL)resetABPerson;
- (void)clearABPerson;
- (BOOL)isContact;
- (unsigned long long)hash;
@property(readonly, retain, nonatomic) IMServiceImpl *service;
@property(readonly, retain, nonatomic) NSString *nameAndEmail;
- (void)setUniqueName:(id)arg1;
- (void)postNotificationName:(id)arg1;
- (void)_postNotificationName:(id)arg1 userInfo:(id)arg2;
- (void)_postNotification:(id)arg1;
- (void)_registerForNotifications;
@property(readonly, nonatomic) BOOL isAnonymous;
- (void)setAnonymous:(BOOL)arg1;
@property(readonly, retain, nonatomic) NSSet *groups;
@property(readonly, retain, nonatomic) NSArray *groupsArray;
- (id)imHandleForOtherAccount:(id)arg1;
@property(readonly, nonatomic) BOOL canBeDeleted;
- (id)copyWithZone:(struct _NSZone *)arg1;
- (void)encodeWithCoder:(id)arg1;
- (id)initWithCoder:(id)arg1;
- (BOOL)isApple;
- (BOOL)isMako;
- (BOOL)isBusiness;
- (void)_setOriginalID:(id)arg1;
- (void)_setCountryCode:(id)arg1 updateSiblings:(BOOL)arg2;
- (void)_setOriginalID:(id)arg1 updateSiblings:(BOOL)arg2;
@property(readonly, retain, nonatomic) NSString *countryCode;
- (void)_setOriginalID:(id)arg1 countryCode:(id)arg2 updateSiblings:(BOOL)arg3;
- (id)_handleInfo;
- (void)dealloc;
- (id)initWithAccount:(id)arg1 ID:(id)arg2;
- (id)initWithAccount:(id)arg1 ID:(id)arg2 alreadyCanonical:(BOOL)arg3;
- (id)init;
- (void)setStatusURLFromString:(id)arg1;
@property(readonly, nonatomic) NSURL *statusMessageAsURL;
- (id)fmfSiblingHandles;
- (id)fmfHandle;
- (void)releaseNotificationQueue;
- (void)beginNotificationQueue;
- (BOOL)shouldQueueNotifications;
- (id)publicAPIPropertiesDictionary;
- (void)_sendRemoteLogDumpRequest;
- (void)_sendRemoteLogDumpRequest:(id)arg1;

@end



@protocol IMDaemonListenerProtocol <NSObject>
- (void)lastMessageForAllChats:(NSDictionary *)arg1;
- (void)didFetchCloudKitSyncDebuggingInfo:(NSDictionary *)arg1;
- (void)receivedUrgentRequestForMessages:(NSArray *)arg1;
- (void)oneTimeCodesDidChange:(NSArray *)arg1;
- (void)didAttemptToDisableiCloudBackups:(long long)arg1 error:(NSError *)arg2;
- (void)didFetchRampState:(NSDictionary *)arg1;
- (void)didFetchSyncStateStats:(NSDictionary *)arg1;
- (void)didAttemptToDisableAllDevicesResult:(BOOL)arg1;
- (void)didPerformAdditionalStorageRequiredCheckWithSuccess:(BOOL)arg1 additionalStorageRequired:(unsigned long long)arg2 forAccountId:(NSString *)arg3 error:(NSError *)arg4;
- (void)didAttemptToSetEnabledTo:(BOOL)arg1 result:(BOOL)arg2;
- (void)returnMOCEnabledState:(unsigned long long)arg1;
- (void)updateCloudKitStateWithDictionary:(NSDictionary *)arg1;
- (void)updateCloudKitState;
- (void)qosClassWhileServicingRequestsResponse:(unsigned int)arg1 identifier:(NSString *)arg2;
- (void)stickerPackRemoved:(NSArray *)arg1;
- (void)stickerPackUpdated:(NSDictionary *)arg1;
- (void)pinCodeAlertCompleted:(NSString *)arg1 deviceName:(NSString *)arg2 deviceType:(NSString *)arg3 phoneNumber:(NSString *)arg4 responseFromDevice:(BOOL)arg5 wasCancelled:(BOOL)arg6;
- (void)displayPinCodeForAccount:(NSString *)arg1 pinCode:(NSNumber *)arg2 deviceName:(NSString *)arg3 deviceType:(NSString *)arg4 phoneNumber:(NSString *)arg5;
- (void)lastFailedMessageDateChanged:(long long)arg1;
- (void)unreadCountChanged:(long long)arg1;
- (void)databaseChatSpamUpdated:(NSString *)arg1;
- (void)databaseNoLongerFull;
- (void)databaseFull;
- (void)databaseUpdated:(NSString *)arg1;
- (void)databaseUpdated;
- (void)account:(NSString *)arg1 relay:(NSString *)arg2 handleCancel:(NSDictionary *)arg3 fromPerson:(NSDictionary *)arg4;
- (void)account:(NSString *)arg1 relay:(NSString *)arg2 handleUpdate:(NSDictionary *)arg3 fromPerson:(NSDictionary *)arg4;
- (void)account:(NSString *)arg1 relay:(NSString *)arg2 handleInitate:(NSDictionary *)arg3 fromPerson:(NSDictionary *)arg4;
- (void)account:(NSString *)arg1 postedError:(NSError *)arg2;
- (void)account:(NSString *)arg1 statusChanged:(NSDictionary *)arg2;
- (void)persistentProperty:(NSString *)arg1 changedTo:(id)arg2 from:(id)arg3;
- (void)property:(NSString *)arg1 changedTo:(id)arg2 from:(id)arg3;
- (void)showForgotPasswordNotificationForAccount:(NSString *)arg1;
- (void)showInvalidCertNotificationForAccount:(NSString *)arg1;
- (void)account:(NSString *)arg1 avAction:(unsigned int)arg2 withArguments:(NSDictionary *)arg3 toAVChat:(NSString *)arg4 isVideo:(BOOL)arg5;
- (void)account:(NSString *)arg1 conference:(NSString *)arg2 invitationSentSuccessfully:(BOOL)arg3;
- (void)account:(NSString *)arg1 conference:(NSString *)arg2 peerID:(NSString *)arg3 propertiesUpdated:(NSDictionary *)arg4;
- (void)account:(NSString *)arg1 conference:(NSString *)arg2 peerIDChangedFromID:(NSString *)arg3 toID:(NSString *)arg4;
- (void)account:(NSString *)arg1 conference:(NSString *)arg2 changedToNewConferenceID:(NSString *)arg3;
- (void)account:(NSString *)arg1 conference:(NSString *)arg2 receivedAVMessage:(unsigned int)arg3 from:(NSDictionary *)arg4 sessionID:(unsigned int)arg5 userInfo:(NSDictionary *)arg6;
- (void)account:(NSString *)arg1 conference:(NSString *)arg2 receivedUpdateFrom:(NSDictionary *)arg3 data:(NSData *)arg4;
- (void)account:(NSString *)arg1 conference:(NSString *)arg2 receivedCounterProposalFrom:(NSDictionary *)arg3 properties:(NSDictionary *)arg4;
- (void)account:(NSString *)arg1 conference:(NSString *)arg2 receivedCancelInvitationFrom:(NSDictionary *)arg3 properties:(NSDictionary *)arg4;
- (void)account:(NSString *)arg1 conference:(NSString *)arg2 receivedResponseToInvitationFrom:(NSDictionary *)arg3 properties:(NSDictionary *)arg4;
- (void)account:(NSString *)arg1 conference:(NSString *)arg2 receivedInvitationFrom:(NSDictionary *)arg3 properties:(NSDictionary *)arg4;
- (void)fileTransferHighQualityDownloadFailed:(NSString *)arg1;
- (void)fileTransfer:(NSString *)arg1 highQualityDownloadSucceededWithPath:(NSString *)arg2;
- (void)fileTransfer:(NSString *)arg1 updatedWithCurrentBytes:(unsigned long long)arg2 totalBytes:(unsigned long long)arg3 averageTransferRate:(unsigned long long)arg4;
- (void)fileTransfers:(NSArray *)arg1 createdWithLocalPaths:(NSArray *)arg2;
- (void)fileTransfer:(NSString *)arg1 updatedWithProperties:(NSDictionary *)arg2;
- (void)fileTransfer:(NSString *)arg1 createdWithProperties:(NSDictionary *)arg2;
- (void)standaloneFileTransferRegistered:(NSString *)arg1;
- (void)chatLoadedWithChatIdentifier:(NSString *)arg1 chats:(NSArray *)arg2;
- (void)frequentRepliesQuery:(NSString *)arg1 chatID:(NSString *)arg2 services:(NSArray *)arg3 finishedWithResult:(NSArray *)arg4 limit:(unsigned long long)arg5;
- (void)historicalMessageGUIDsDeleted:(NSArray *)arg1 chatGUIDs:(NSArray *)arg2 queryID:(NSString *)arg3;
- (void)markAsSpamQuery:(NSString *)arg1 chatID:(NSString *)arg2 services:(NSArray *)arg3 finishedWithResult:(NSNumber *)arg4;
- (void)finishedDownloadingPurgedAssetsForChatIDs:(NSArray *)arg1;
- (void)downloadedPurgedAssetBatchForChatIDs:(NSArray *)arg1 completedTransferGUIDs:(NSArray *)arg2;
- (void)isDownloadingQuery:(NSString *)arg1 chatID:(NSString *)arg2 services:(NSArray *)arg3 finishedWithResult:(BOOL)arg4;
- (void)uncachedAttachmentCountQuery:(NSString *)arg1 chatID:(NSString *)arg2 services:(NSArray *)arg3 finishedWithResult:(NSNumber *)arg4;
- (void)attachmentQuery:(NSString *)arg1 chatID:(NSString *)arg2 services:(NSArray *)arg3 finishedWithResult:(NSArray *)arg4;
- (void)pagedHistoryQuery:(NSString *)arg1 chatID:(NSString *)arg2 services:(NSArray *)arg3 numberOfMessagesBefore:(unsigned long long)arg4 numberOfMessagesAfter:(unsigned long long)arg5 finishedWithResult:(NSArray *)arg6;
- (void)historyQuery:(NSString *)arg1 chatID:(NSString *)arg2 services:(NSArray *)arg3 finishedWithResult:(NSArray *)arg4 limit:(unsigned long long)arg5;
- (void)messageQuery:(NSString *)arg1 finishedWithResult:(IMMessageItem *)arg2 chatGUIDs:(NSArray *)arg3;
- (void)account:(NSString *)arg1 chat:(NSString *)arg2 style:(unsigned char)arg3 chatProperties:(NSDictionary *)arg4 member:(NSDictionary *)arg5 statusChanged:(int)arg6;
- (void)account:(NSString *)arg1 chat:(NSString *)arg2 style:(unsigned char)arg3 chatProperties:(NSDictionary *)arg4 groupID:(NSString *)arg5 chatPersonCentricID:(NSString *)arg6 statusChanged:(int)arg7 handleInfo:(NSArray *)arg8;
- (void)account:(NSString *)arg1 chat:(NSString *)arg2 style:(unsigned char)arg3 chatProperties:(NSDictionary *)arg4 error:(NSError *)arg5;
- (void)account:(NSString *)arg1 chat:(NSString *)arg2 style:(unsigned char)arg3 chatProperties:(NSDictionary *)arg4 messagesUpdated:(NSArray *)arg5;
- (void)account:(NSString *)arg1 chat:(NSString *)arg2 style:(unsigned char)arg3 chatProperties:(NSDictionary *)arg4 notifySentMessage:(IMMessageItem *)arg5 sendTime:(NSNumber *)arg6;
- (void)account:(NSString *)arg1 chat:(NSString *)arg2 style:(unsigned char)arg3 chatProperties:(NSDictionary *)arg4 messageUpdated:(IMItem *)arg5;
- (void)account:(NSString *)arg1 chat:(NSString *)arg2 style:(unsigned char)arg3 chatProperties:(NSDictionary *)arg4 groupID:(NSString *)arg5 chatPersonCentricID:(NSString *)arg6 messagesReceived:(NSArray *)arg7;
- (void)account:(NSString *)arg1 chat:(NSString *)arg2 style:(unsigned char)arg3 chatProperties:(NSDictionary *)arg4 groupID:(NSString *)arg5 chatPersonCentricID:(NSString *)arg6 messageReceived:(IMItem *)arg7;
- (void)account:(NSString *)arg1 chat:(NSString *)arg2 style:(unsigned char)arg3 chatProperties:(NSDictionary *)arg4 groupID:(NSString *)arg5 chatPersonCentricID:(NSString *)arg6 messageSent:(IMMessageItem *)arg7;
- (void)account:(NSString *)arg1 chat:(NSString *)arg2 style:(unsigned char)arg3 chatProperties:(NSDictionary *)arg4 updateProperties:(NSDictionary *)arg5;
- (void)account:(NSString *)arg1 chat:(NSString *)arg2 style:(unsigned char)arg3 chatProperties:(NSDictionary *)arg4 invitationReceived:(IMMessageItem *)arg5;
- (void)loadedChats:(NSArray *)arg1;
- (void)engroupParticipantsUpdatedForChat:(NSString *)arg1;
- (void)leftChat:(NSString *)arg1;
- (void)chat:(NSString *)arg1 engramIDUpdated:(NSString *)arg2;
- (void)chat:(NSString *)arg1 isFilteredUpdated:(BOOL)arg2;
- (void)chat:(NSString *)arg1 lastAddressedSIMIDUpdated:(NSString *)arg2;
- (void)chat:(NSString *)arg1 lastAddressedHandleUpdated:(NSString *)arg2;
- (void)chat:(NSString *)arg1 displayNameUpdated:(NSString *)arg2;
- (void)chat:(NSString *)arg1 propertiesUpdated:(NSDictionary *)arg2;
- (void)chat:(NSString *)arg1 updated:(NSDictionary *)arg2;
- (void)account:(NSString *)arg1 buddyInfo:(NSDictionary *)arg2 commandDelivered:(NSNumber *)arg3 properties:(NSDictionary *)arg4;
- (void)account:(NSString *)arg1 buddyInfo:(NSDictionary *)arg2 commandReceived:(NSNumber *)arg3 properties:(NSDictionary *)arg4;
- (void)account:(NSString *)arg1 handleSubscriptionRequestFrom:(NSDictionary *)arg2 withMessage:(NSString *)arg3;
- (void)account:(NSString *)arg1 buddyProperties:(NSDictionary *)arg2 buddyPictures:(NSDictionary *)arg3;
- (void)account:(NSString *)arg1 groupsChanged:(NSArray *)arg2 error:(NSError *)arg3;
- (void)account:(NSString *)arg1 buddyPictureChanged:(NSString *)arg2 imageData:(NSData *)arg3 imageHash:(NSString *)arg4;
- (void)account:(NSString *)arg1 blockIdleStatusChanged:(BOOL)arg2;
- (void)account:(NSString *)arg1 blockingModeChanged:(unsigned int)arg2;
- (void)account:(NSString *)arg1 allowListChanged:(NSArray *)arg2;
- (void)account:(NSString *)arg1 blockListChanged:(NSArray *)arg2;
- (void)account:(NSString *)arg1 buddyPropertiesChanged:(NSArray *)arg2;
- (void)accountRemoved:(NSString *)arg1;
- (void)accountAdded:(NSString *)arg1 defaults:(NSDictionary *)arg2 service:(NSString *)arg3;
- (void)account:(NSString *)arg1 capabilitiesChanged:(unsigned long long)arg2;
- (void)account:(NSString *)arg1 defaultsChanged:(NSDictionary *)arg2;
- (void)account:(NSString *)arg1 loginStatusChanged:(unsigned int)arg2 message:(NSString *)arg3 reason:(int)arg4 properties:(NSDictionary *)arg5;
- (void)account:(NSString *)arg1 defaults:(NSDictionary *)arg2 blockList:(NSArray *)arg3 allowList:(NSArray *)arg4 blockingMode:(unsigned int)arg5 blockIdleStatus:(BOOL)arg6 status:(NSDictionary *)arg7 capabilities:(unsigned long long)arg8 serviceLoginStatus:(unsigned int)arg9 loginStatusMessage:(NSString *)arg10;
- (void)activeAccountsChanged:(NSArray *)arg1 forService:(NSString *)arg2;
- (void)defaultsChanged:(NSDictionary *)arg1 forService:(NSString *)arg2;
- (void)vcCapabilitiesChanged:(unsigned long long)arg1;
- (void)pendingACRequestComplete;
- (void)pendingVCRequestComplete;
- (void)setupComplete;
- (void)setupComplete:(BOOL)arg1 info:(NSDictionary *)arg2;
@end

@protocol IMMessageChatItem <NSObject>
@property(readonly, nonatomic) IMHandle *sender;
@property(readonly, nonatomic) NSDate *time;
@property(readonly, nonatomic) BOOL failed;
@property(readonly, nonatomic) BOOL isFromMe;
@end

@protocol IMPluginChatItemProtocol <NSObject>
@property(readonly, nonatomic) BOOL isFromMe;
// @property(readonly, retain, nonatomic) IMBalloonPluginDataSource *dataSource;
@property(readonly, retain, nonatomic) NSString *type;
@end

@protocol IMRemoteAppExtensionContextProtocol /* <IMAppExtensionContextProtocol> */
@end

@protocol IMRemoteDaemonProtocol <NSObject>
- (void)preWarm;
- (void)simulateMessageReceive:(NSString *)arg1 serviceName:(NSString *)arg2 handles:(NSArray *)arg3 sender:(NSString *)arg4;
- (void)simulateOneTimeCodeArriving:(NSDictionary *)arg1;
- (void)consumeCodeWithMessageGUID:(NSString *)arg1;
- (void)requestOneTimeCodeStatus;
- (void)closeSessionChatID:(NSString *)arg1 identifier:(NSString *)arg2 style:(unsigned char)arg3 account:(NSString *)arg4;
- (void)requestMOCEnabledState;
- (void)tryToAutoCollectLogsWithErrorString:(NSString *)arg1 sendLogsTo:(NSString *)arg2;
- (void)fetchCloudKitSyncStateDebuggingInfo:(NSDictionary *)arg1;
- (void)syncDeletesToCloudKit;
- (void)printCachedRampState;
- (void)fetchLatestRampState;
- (void)reportMetricToCK:(NSString *)arg1 withDict:(NSDictionary *)arg2;
- (void)writeCloudKitSyncCounts:(NSDictionary *)arg1;
- (void)fetchSyncStateStatistics;
- (void)fetchSyncStateStats;
- (void)updateAttachmentFileSizes;
- (void)metricAttachments:(long long)arg1;
- (void)purgeAttachments:(long long)arg1;
- (void)deleteSalt;
- (void)printCachedSalt;
- (void)fetchLatestSalt;
- (void)fetchSecurityLevelAndUpdateMiCSwitchEligibility;
- (void)broadcastCloudKitStateAfterClearingErrors;
- (void)clearAnalyticDefaultsAndLocalSyncState;
- (void)uploadDailyAnalyticstoCloudKit;
- (void)broadcastCloudKitStateAfterFetchingAccountStatus;
- (void)broadcastCloudKitState;
- (void)initiateSync;
- (void)tryToDisableAllDevices;
- (void)performAdditionalStorageRequiredCheck;
- (void)setCloudKitEnabled:(BOOL)arg1;
- (void)sendRestoreFailuresLogDumps;
- (void)clearDataFromCloudKit;
- (void)clearLocalCloudKitSyncState;
- (void)deleteExitRecord;
- (void)fetchExitRecord;
- (void)writeExitRecord;
- (void)loadDeletedMessagesWithLimit:(long long)arg1;
- (void)loadDirtyMessagesWithLimit:(long long)arg1;
- (void)initiatePeriodicSync;
- (void)syncMessages;
- (void)deleteMessagesZone;
- (void)writeDirtyMessages;
- (void)downloadAttachmentAssets;
- (void)syncAttachments;
- (void)writeAttachments;
- (void)deleteAttachmentZone;
- (void)createAttachmentZone;
- (void)clearChatZoneSyncToken;
- (void)markAllChatsAsDirty;
- (void)syncChats;
- (void)writeDirtyChats;
- (void)deleteChatZone;
- (void)createChatZone;
- (void)requestQOSClassWhileServicingRequestsWithID:(NSString *)arg1;
- (void)stopRecordingMessagesReplayDatabase;
- (void)beginRecordingMessagesToReplayDatabase:(NSString *)arg1;
- (void)replayMessagesFromDatabasePath:(NSString *)arg1;
- (void)downloadStickerPackWithGUID:(NSString *)arg1 isIncomingMessage:(BOOL)arg2 ignoreCache:(BOOL)arg3;
- (void)downloadStickerWithGUID:(NSString *)arg1;
- (void)enrollSelfDeviceForSMSRelay:(NSString *)arg1;
- (void)unEnrollDeviceForSMSRelay:(NSString *)arg1 account:(NSString *)arg2;
- (void)enrollDeviceForSMSRelay:(NSString *)arg1 account:(NSString *)arg2;
- (void)importMessage:(NSDictionary *)arg1 isRead:(BOOL)arg2;
- (void)validateProfileAccount:(NSString *)arg1;
- (void)unvalidateAliases:(NSArray *)arg1 account:(NSString *)arg2;
- (void)validateAliases:(NSArray *)arg1 account:(NSString *)arg2;
- (void)removeAliases:(NSArray *)arg1 account:(NSString *)arg2;
- (void)addAliases:(NSArray *)arg1 account:(NSString *)arg2;
- (void)relay:(NSString *)arg1 sendCancel:(NSDictionary *)arg2 toPerson:(NSString *)arg3 account:(NSString *)arg4;
- (void)relay:(NSString *)arg1 sendUpdate:(NSDictionary *)arg2 toPerson:(NSString *)arg3 account:(NSString *)arg4;
- (void)relay:(NSString *)arg1 sendInitateRequest:(NSDictionary *)arg2 toPerson:(NSString *)arg3 account:(NSString *)arg4;
- (void)sendAVMessageToPerson:(NSString *)arg1 sessionID:(unsigned int)arg2 type:(unsigned int)arg3 userInfo:(NSDictionary *)arg4 conference:(NSString *)arg5 account:(NSString *)arg6;
- (void)sendVCUpdate:(NSData *)arg1 toPerson:(NSString *)arg2 conference:(NSString *)arg3 account:(NSString *)arg4;
- (void)sendCounterProposalToPerson:(NSString *)arg1 properties:(NSDictionary *)arg2 conference:(NSString *)arg3 account:(NSString *)arg4;
- (void)cancelVCRequestWithPerson:(NSString *)arg1 properties:(NSDictionary *)arg2 conference:(NSString *)arg3 reason:(NSNumber *)arg4 account:(NSString *)arg5;
- (void)cancelVCRequestWithPerson:(NSString *)arg1 properties:(NSDictionary *)arg2 conference:(NSString *)arg3 account:(NSString *)arg4;
- (void)respondToVCInvitationWithPerson:(NSString *)arg1 properties:(NSDictionary *)arg2 conference:(NSString *)arg3 account:(NSString *)arg4;
- (void)requestVCWithPerson:(NSString *)arg1 properties:(NSDictionary *)arg2 conference:(NSString *)arg3 account:(NSString *)arg4;
- (void)sendCommand:(NSNumber *)arg1 withProperties:(NSDictionary *)arg2 toPerson:(NSString *)arg3 account:(NSString *)arg4 toChatID:(NSString *)arg5 identifier:(NSString *)arg6 style:(unsigned char)arg7;
- (void)sendCommand:(NSNumber *)arg1 withProperties:(NSDictionary *)arg2 toPerson:(NSString *)arg3 account:(NSString *)arg4;
- (void)sendNotificationMessageToUniqueID:(NSString *)arg1 withCommand:(long long)arg2;
- (void)passwordUpdatedAccount:(NSString *)arg1;
- (void)setBlockIdleStatus:(BOOL)arg1 account:(NSString *)arg2;
- (void)setBlockList:(NSArray *)arg1 account:(NSString *)arg2;
- (void)setAllowList:(NSArray *)arg1 account:(NSString *)arg2;
- (void)setBlockingMode:(unsigned int)arg1 account:(NSString *)arg2;
- (void)setProperties:(NSDictionary *)arg1 ofParticipant:(NSString *)arg2 inChatID:(NSString *)arg3 identifier:(NSString *)arg4 style:(unsigned char)arg5 account:(NSString *)arg6;
- (void)updateBalloonPayload:(NSData *)arg1 attachments:(NSArray *)arg2 forMessageGUID:(NSString *)arg3;
- (void)sendBalloonPayload:(NSData *)arg1 attachments:(NSArray *)arg2 withMessageGUID:(NSString *)arg3 bundleID:(NSString *)arg4;
- (void)sendSavedReceiptForMessage:(IMMessageItem *)arg1 toChatID:(NSString *)arg2 identifier:(NSString *)arg3 style:(unsigned char)arg4 account:(NSString *)arg5;
- (void)sendPlayedReceiptForMessage:(IMMessageItem *)arg1 toChatID:(NSString *)arg2 identifier:(NSString *)arg3 style:(unsigned char)arg4 account:(NSString *)arg5;
- (void)sendReadReceiptForMessage:(IMMessageItem *)arg1 toChatID:(NSString *)arg2 identifier:(NSString *)arg3 style:(unsigned char)arg4 account:(NSString *)arg5;
- (void)sendStickerAtPath:(NSString *)arg1 toChatID:(NSString *)arg2 forNBubbleFromTheBottom:(unsigned long long)arg3 atX:(NSString *)arg4 atY:(NSString *)arg5 scale:(NSString *)arg6 balloonWidth:(NSString *)arg7;
- (void)logDumpAndSendMessageTo:(NSString *)arg1 forHours:(int)arg2;
- (void)sendMessage:(IMMessageItem *)arg1 toChatID:(NSString *)arg2 identifier:(NSString *)arg3 style:(unsigned char)arg4 account:(NSString *)arg5;
- (void)eagerUploadCancel:(NSURL *)arg1;
- (void)eagerUploadTransfer:(NSDictionary *)arg1;
- (void)declineInvitationToChatID:(NSString *)arg1 identifier:(NSString *)arg2 style:(unsigned char)arg3 account:(NSString *)arg4;
- (void)removePersonInfoFromiMessageChat:(NSDictionary *)arg1 chatID:(NSString *)arg2 identifier:(NSString *)arg3 style:(unsigned char)arg4 account:(NSString *)arg5;
- (void)removePersonInfo:(NSDictionary *)arg1 chatID:(NSString *)arg2 identifier:(NSString *)arg3 style:(unsigned char)arg4 account:(NSString *)arg5;
- (void)invitePersonInfoToiMessageChat:(NSDictionary *)arg1 withMessage:(IMMessageItem *)arg2 toChatID:(NSString *)arg3 identifier:(NSString *)arg4 style:(unsigned char)arg5 account:(NSString *)arg6;
- (void)invitePersonInfo:(NSDictionary *)arg1 withMessage:(IMMessageItem *)arg2 toChatID:(NSString *)arg3 identifier:(NSString *)arg4 style:(unsigned char)arg5 account:(NSString *)arg6;
- (void)removeChatID:(NSString *)arg1 identifier:(NSString *)arg2 style:(unsigned char)arg3 account:(NSString *)arg4;
- (void)leaveiMessageChatID:(NSString *)arg1 identifier:(NSString *)arg2 style:(unsigned char)arg3 account:(NSString *)arg4;
- (void)leaveChatID:(NSString *)arg1 identifier:(NSString *)arg2 style:(unsigned char)arg3 account:(NSString *)arg4;
- (void)joinChatID:(NSString *)arg1 handleInfo:(NSArray *)arg2 identifier:(NSString *)arg3 style:(unsigned char)arg4 groupID:(NSString *)arg5 lastAddressedHandle:(NSString *)arg6 lastAddressedSIMID:(NSString *)arg7 joinProperties:(NSDictionary *)arg8 account:(NSString *)arg9;
- (void)joinChatID:(NSString *)arg1 handleInfo:(NSArray *)arg2 identifier:(NSString *)arg3 style:(unsigned char)arg4 joinProperties:(NSDictionary *)arg5 account:(NSString *)arg6;
- (void)updateAuthorizationCredentials:(NSString *)arg1 token:(NSString *)arg2 account:(NSString *)arg3;
- (void)setValue:(id)arg1 ofProperty:(NSString *)arg2 ofPerson:(NSString *)arg3 account:(NSString *)arg4;
- (void)requestProperty:(NSString *)arg1 ofPerson:(NSString *)arg2 account:(NSString *)arg3;
- (void)stopWatchingBuddy:(NSString *)arg1 account:(NSString *)arg2;
- (void)startWatchingBuddy:(NSString *)arg1 account:(NSString *)arg2;
- (void)requestSubscriptionTo:(NSString *)arg1 account:(NSString *)arg2;
- (void)acceptSubscriptionRequest:(BOOL)arg1 from:(NSString *)arg2 account:(NSString *)arg3;
- (void)renameGroup:(NSString *)arg1 to:(NSString *)arg2 account:(NSString *)arg3;
- (void)changeGroup:(NSString *)arg1 changes:(NSDictionary *)arg2 account:(NSString *)arg3;
- (void)changeGroups:(NSDictionary *)arg1 account:(NSString *)arg2;
- (void)requestGroupsAccount:(NSString *)arg1;
- (void)unregisterAccount:(NSString *)arg1;
- (void)registerAccount:(NSString *)arg1;
- (void)authenticateAccount:(NSString *)arg1;
- (void)resumeBuddyUpdatesAccount:(NSString *)arg1;
- (void)holdBuddyUpdatesAccount:(NSString *)arg1;
- (void)sendMappingPacket:(NSString *)arg1 toHandle:(NSString *)arg2 account:(NSString *)arg3;
- (void)logoutAccount:(NSString *)arg1;
- (void)loginAccount:(NSString *)arg1;
- (void)autoReconnectAccount:(NSString *)arg1;
- (void)autoLoginAccount:(NSString *)arg1;
- (void)archiveChat:(NSString *)arg1;
- (void)initiateCNContactBasedChatMerge:(BOOL)arg1;
- (void)debugUpdateGroupParticipantversion:(unsigned long long)arg1 chatIdentifier:(NSString *)arg2;
- (void)loadChatWithChatIdentifier:(NSString *)arg1;
- (void)removeChat:(NSString *)arg1;
- (void)silenceChat:(NSString *)arg1 untilDate:(NSDate *)arg2;
- (void)chat:(NSString *)arg1 updateLastAddressedSIMID:(NSString *)arg2;
- (void)chat:(NSString *)arg1 updateLastAddressHandle:(NSString *)arg2;
- (void)chat:(NSString *)arg1 updateIsFiltered:(BOOL)arg2;
- (void)chat:(NSString *)arg1 updateDisplayName:(NSString *)arg2;
- (void)chat:(NSString *)arg1 updateProperties:(NSDictionary *)arg2;
- (void)cleanupAttachments;
- (void)requestLastMessagesForChats;
- (void)loadIsDownloadingPurgedAttachmentsForIDs:(NSArray *)arg1 style:(unsigned char)arg2 onServices:(NSArray *)arg3 chatID:(NSString *)arg4 queryID:(NSString *)arg5;
- (void)downloadPurgedAttachmentsForIDs:(NSArray *)arg1 style:(unsigned char)arg2 onServices:(NSArray *)arg3 chatID:(NSString *)arg4;
- (unsigned long long)loadUncachedAttachmentCountForIDs:(NSArray *)arg1 style:(unsigned char)arg2 onServices:(NSArray *)arg3 chatID:(NSString *)arg4 queryID:(NSString *)arg5;
- (void)loadAttachmentsForIDs:(NSArray *)arg1 style:(unsigned char)arg2 onServices:(NSArray *)arg3 chatID:(NSString *)arg4 queryID:(NSString *)arg5;
- (void)loadUnreadForIDs:(NSArray *)arg1 style:(unsigned char)arg2 onServices:(NSArray *)arg3 limit:(unsigned long long)arg4 fallbackGUID:(NSString *)arg5 chatId:(NSString *)arg6 queryID:(NSString *)arg7;
- (void)loadFrequentRepliesForIDs:(NSArray *)arg1 style:(unsigned char)arg2 onServices:(NSArray *)arg3 limit:(unsigned long long)arg4 chatID:(NSString *)arg5 queryID:(NSString *)arg6;
- (void)updateUnformattedID:(NSString *)arg1 forBuddyID:(NSString *)arg2 onService:(NSString *)arg3;
- (void)markHasHadSuccessfulQueryForIDs:(NSArray *)arg1 style:(unsigned char)arg2 onServices:(NSArray *)arg3;
- (void)markSavedForIDs:(NSArray *)arg1 style:(unsigned char)arg2 onServices:(NSArray *)arg3 message:(IMMessageItem *)arg4;
- (void)markSavedForMessageGUID:(NSString *)arg1;
- (void)markPlayedExpressiveSendForIDs:(NSArray *)arg1 style:(unsigned char)arg2 onServices:(NSArray *)arg3 message:(IMMessageItem *)arg4;
- (void)markPlayedForIDs:(NSArray *)arg1 style:(unsigned char)arg2 onServices:(NSArray *)arg3 message:(IMMessageItem *)arg4;
- (void)markPlayedForMessageGUID:(NSString *)arg1;
- (void)storeItem:(IMItem *)arg1 inChatGUID:(NSString *)arg2;
- (void)markReadForIDs:(NSArray *)arg1 style:(unsigned char)arg2 onServices:(NSArray *)arg3 messages:(NSArray *)arg4 clientUnreadCount:(unsigned long long)arg5;
- (void)markReadForMessageGUID:(NSString *)arg1 callerOrigin:(long long)arg2;
- (void)markReadForMessageGUID:(NSString *)arg1;
- (void)markMessageAsCorrupt:(NSString *)arg1 setCorrupt:(BOOL)arg2;
- (void)updateMessage:(IMMessageItem *)arg1;
- (void)markAsSpamForIDs:(NSArray *)arg1 style:(unsigned char)arg2 onServices:(NSArray *)arg3 chatID:(NSString *)arg4 queryID:(NSString *)arg5 autoReport:(BOOL)arg6;
- (void)clearHistoryForIDs:(NSArray *)arg1 style:(unsigned char)arg2 onServices:(NSArray *)arg3 beforeGUID:(NSString *)arg4 afterGUID:(NSString *)arg5 chatID:(NSString *)arg6 queryID:(NSString *)arg7;
- (void)deleteMessageWithGUIDs:(NSArray *)arg1 queryID:(NSString *)arg2;
- (void)requestPendingMessages;
- (void)loadPagedHistoryForGUID:(NSString *)arg1 chatIdentifiers:(NSArray *)arg2 style:(unsigned char)arg3 onServices:(NSArray *)arg4 numberOfMessagesBefore:(unsigned long long)arg5 numberOfMessagesAfter:(unsigned long long)arg6 chatID:(NSString *)arg7 queryID:(NSString *)arg8;
- (void)loadHistoryForIDs:(NSArray *)arg1 style:(unsigned char)arg2 onServices:(NSArray *)arg3 limit:(unsigned long long)arg4 beforeGUID:(NSString *)arg5 afterGUID:(NSString *)arg6 chatID:(NSString *)arg7 queryID:(NSString *)arg8;
- (void)loadMessageWithGUID:(NSString *)arg1 queryID:(NSString *)arg2;
- (void)loadChatsWithChatID:(NSString *)arg1;
- (void)setListenerCapabilities:(unsigned int)arg1;
- (void)account:(NSString *)arg1 avAction:(unsigned int)arg2 withArguments:(NSDictionary *)arg3 toAVChat:(NSString *)arg4 isVideo:(BOOL)arg5;
- (void)conference:(NSString *)arg1 account:(NSString *)arg2 notifyInvitationCancelledFromPerson:(NSString *)arg3;
- (void)clearPendingVCRequestsWithPerson:(NSString *)arg1 forAccount:(NSString *)arg2;
- (BOOL)markAttachment:(NSString *)arg1 sender:(NSString *)arg2 recipients:(NSArray *)arg3 isIncoming:(BOOL)arg4;
- (void)fileTransferRemoved:(NSString *)arg1;
- (void)fileTransferStopped:(NSString *)arg1;
- (void)fileTransfer:(NSString *)arg1 acceptedWithPath:(NSString *)arg2 autoRename:(BOOL)arg3 overwrite:(BOOL)arg4;
- (void)fileTransfer:(NSString *)arg1 updatedWithProperties:(NSDictionary *)arg2;
- (void)fileTransfer:(NSString *)arg1 createdWithProperties:(NSDictionary *)arg2;
- (void)downloadHighQualityVariantOfFileTransferWithGUID:(NSString *)arg1;
- (void)deleteFileTransferWithGUID:(NSString *)arg1;
- (void)sendStandaloneFileTransfer:(NSString *)arg1;
- (void)requestBuddyPicturesAndPropertiesForAccount:(NSString *)arg1;
- (void)writeAccount:(NSString *)arg1 defaults:(NSDictionary *)arg2;
- (void)removeAccount:(NSString *)arg1;
- (void)addAccount:(NSString *)arg1 defaults:(NSDictionary *)arg2 service:(NSString *)arg3;
- (void)deactivateAccounts:(NSArray *)arg1;
- (void)activateAccounts:(NSArray *)arg1;
- (void)requestPendingACInvites;
- (void)requestPendingVCInvites;
- (void)setVCCapabilities:(unsigned long long)arg1;
- (void)setValue:(id)arg1 ofPersistentProperty:(NSString *)arg2;
- (void)setValue:(id)arg1 ofProperty:(NSString *)arg2;
- (void)changeMyStatus:(NSDictionary *)arg1 forAccount:(NSString *)arg2;
- (void)terminateForcingIfNeeded:(BOOL)arg1;
- (void)logoutAllAccounts;
- (void)loginAllAccounts;
- (void)autoLoginActiveAccountsIfNecessary;
@end

@class IMSendProgress;
@protocol IMSendProgressDelegate <NSObject>
- (void)sendProgress:(IMSendProgress *)arg1 progressDidChange:(float)arg2 sendingMessages:(NSDictionary *)arg3 sendCount:(unsigned long long)arg4 totalCount:(unsigned long long)arg5 finished:(BOOL)arg6;
@end

@protocol IMSendProgressTimeDataSource
@property(readonly) double timeIntervalSinceReferenceDate;
@end


@protocol IMSystemMonitorListener

@optional
- (void)systemDidEnterDataProtectionLock;
- (void)systemDidLeaveDataProtectionLock;
- (void)systemDidLeaveFirstDataProtectionLock;
- (void)systemScreenDidPowerDown;
- (void)systemScreenDidPowerUp;
- (void)systemDidUnlock;
- (void)systemDidLock;
- (void)systemDidLogout;
- (void)systemDidFastUserSwitchIn;
- (void)systemDidFastUserSwitchOut;
- (void)systemRestoreStateDidChange;
- (void)systemDidFinishMigration;
- (void)systemDidStopBackup;
- (void)systemDidStartBackup;
- (void)notificationCenterDidDisappear;
- (void)notificationCenterWillAppear;
- (void)systemApplicationDidResumeForEventsOnly;
- (void)systemApplicationDidSuspendForEventsOnly;
- (void)systemApplicationDidResume;
- (void)systemApplicationDidSuspend;
- (void)systemApplicationWillResignActive;
- (void)systemApplicationDidBecomeActive;
- (void)systemApplicationWillEnterForeground;
- (void)systemApplicationDidEnterBackground;
- (void)systemWillShutdown;
- (void)systemDidLeaveMemoryPressure;
- (void)systemDidEnterMemoryPressure;
- (void)systemDidWake;
- (void)systemWillSleep;
- (void)screenUnlocked;
- (void)screenLocked;
- (void)screenSaverDidStop;
- (void)screenSaverDidStart;
- (void)systemDidBecomeUnidle;
- (void)systemDidBecomeIdle;
@end

@protocol IMVisibleAssociatedMessageHost <NSObject>
@property(retain, nonatomic, setter=_setVisibleAssociatedMessageChatItems:) NSArray *visibleAssociatedMessageChatItems;
@end

@protocol INSpeakable <NSObject>
@property(readonly) NSArray *alternativeSpeakableMatches;
@property(readonly) NSString *vocabularyIdentifier;
@property(readonly) NSString *pronunciationHint;
@property(readonly) NSString *spokenPhrase;

@optional
@property(readonly) NSString *identifier;
@end


@interface IMTranscriptEffectHelper : NSObject
{
}

+ (BOOL)shouldShowReplayButtonForEffectIdentifier:(id)arg1;
+ (BOOL)isFeatureEnabled;
+ (id)sendWithStringForEffectIdentifier:(id)arg1;
+ (id)replayStringForEffectIdentifier:(id)arg1;
+ (id)nameForEffectIdentifier:(id)arg1;
+ (id)findIdentifierByMathcingPartialSufix:(id)arg1;
+ (id)sendWithEffectStringMap;
+ (id)replayStringMap;
+ (id)identifierNameMap;
+ (BOOL)effectIdentifierIsImpactEffect:(id)arg1;
+ (BOOL)effectIdentifierIsFullScreenMoment:(id)arg1;
+ (BOOL)identifierIsEffectIdentifier:(id)arg1;
+ (id)allEffectIdentifiers;
+ (void)setFeatureEnabled:(BOOL)arg1;

@end

@interface IMCloudKitSyncState : NSObject
{
    BOOL _hasExited;
    BOOL _isDisablingDevices;
    BOOL _accountIsEnabled;
    unsigned long long _syncControllerSyncState;
    long long _syncControllerSyncType;
    long long _syncControllerRecordType;
    NSDate *_exitDate;
    long long _changingEnabledState;
    NSDate *_lastSyncDate;
    NSArray *_errors;
    long long _accountStatus;
    long long _syncState;
}

+ (id)logHandle;
@property(readonly, nonatomic) long long syncState; // @synthesize syncState=_syncState;
@property(readonly, nonatomic) BOOL accountIsEnabled; // @synthesize accountIsEnabled=_accountIsEnabled;
@property(readonly, nonatomic) long long accountStatus; // @synthesize accountStatus=_accountStatus;
@property(readonly, nonatomic) NSArray *errors; // @synthesize errors=_errors;
@property(readonly, nonatomic) NSDate *lastSyncDate; // @synthesize lastSyncDate=_lastSyncDate;
@property(readonly, nonatomic) BOOL isDisablingDevices; // @synthesize isDisablingDevices=_isDisablingDevices;
@property(readonly, nonatomic) long long changingEnabledState; // @synthesize changingEnabledState=_changingEnabledState;
@property(readonly, copy, nonatomic) NSDate *exitDate; // @synthesize exitDate=_exitDate;
@property(readonly, nonatomic) BOOL hasExited; // @synthesize hasExited=_hasExited;
@property(readonly, nonatomic) long long syncControllerRecordType; // @synthesize syncControllerRecordType=_syncControllerRecordType;
@property(readonly, nonatomic) long long syncControllerSyncType; // @synthesize syncControllerSyncType=_syncControllerSyncType;
@property(readonly, nonatomic) unsigned long long syncControllerSyncState; // @synthesize syncControllerSyncState=_syncControllerSyncState;

@property(readonly, nonatomic) BOOL isSyncEnabledForDisplayOnly;
@property(readonly, nonatomic) BOOL canChangeEnabledSetting;
@property(readonly, nonatomic) BOOL canStartSyncing;
- (BOOL)_isChangingEnabledState;
@property(readonly, nonatomic) BOOL canEnableSyncing;
- (id)description;
@property(readonly, nonatomic) BOOL syncingFailed;
@property(readonly, nonatomic) BOOL isSyncingAvailable;
@property(readonly, nonatomic) BOOL isSyncingEnabled;
- (id)syncErrorWithDomain:(id)arg1 code:(long long)arg2;
@property(readonly, nonatomic) BOOL isSyncingPaused;
@property(readonly, nonatomic) BOOL isSyncing;
- (id)initWithAccountEnabled:(BOOL)arg1 stateDictionary:(id)arg2;
- (id)logHandle;
- (id)createSyncProgressWithSyncStatistics:(id)arg1;
- (BOOL)shouldFetchSyncStatistics;
- (BOOL)shouldRescheduleSyncSyncProgress;
- (BOOL)_shouldHideProgressInFirstSevenDays;

@end

@interface IMItemsController : NSObject
{
    struct __CFArray *_items;
    unsigned long long _capacity;
}

+ (id)_charactersToIgnoreWhenParsingTextContent;
@property(nonatomic) unsigned long long capacity; // @synthesize capacity=_capacity;
- (BOOL)_trimIfNeeded;
- (id)_lastRelatedIncomingFinishedMessageTextContentWithLimit:(long long)arg1;
- (id)_lastIncomingFinishedMessageWithTextContent;
- (id)_lastIncomingFinishedMessage;
- (id)_lastIncomingMessage;
- (id)_lastFinishedMessage;
- (id)_lastSentMessage;
- (id)_lastMessage;
- (id)_firstMessage;
- (id)_typingMessage;
- (id)_itemForGUID:(id)arg1;
- (id)_member:(id)arg1;
- (unsigned long long)_indexOfItem:(id)arg1;
- (void)_setSortID:(id)arg1;
- (void)_replaceStaleTypingMessage;
- (void)_removeAllItems;
- (void)_replaceItems:(id)arg1;
- (void)_removeItem:(id)arg1;
- (void)_handleItem:(id)arg1;
- (void)_itemsDidChange:(id)arg1;
- (id)_items;
- (id)_initWithItems:(id)arg1;
- (void)assignSortIDsToItems:(id)arg1;
@property(readonly, nonatomic) BOOL isMoreToLoad;
- (void)dealloc;
- (id)init;

@end

@interface IMAutomationPersonCentricChats : NSObject
{
}

- (void)initiateCNContactBasedMerging;

@end

@class IMChat, IMPluginPayload, IMMessage;
@interface IMBalloonPluginDataSource : NSObject
{
    BOOL _payloadInShelf;
    BOOL _initialMessageIsFromMe;
    BOOL _isLast;
    BOOL _isShowingLatestMessageAsBreadcrumb;
    BOOL _hasInvalidatedSize;
    BOOL _parentChatHasAllUnknownRecipients;
    BOOL _showingLatestMessageAsBreadcrumb;
    IMChat *_chat;
    IMPluginPayload *_pluginPayload;
    NSURL *_url;
     // DDScannerResult *_dataDetectedResult;
    NSArray *_attachmentGUIDs;
    NSURL *_URLToOpenOnTapAction;
    NSArray *_pendingAttachmentData;
    NSMutableSet *_temporaryAttachmentURLs;
    NSString *__imMessageGUID;
    NSString *_messageGUID;
    NSString *_sessionGUID;
    NSString *_bundleID;
    NSArray *_consumedPayloads;
    NSString *_guidOfLastMessageInSession;
    long long _messageIDOfLastMessageInSession;
}

+ (id)replaceHandleWithContactNameInString:(id)arg1 forAccount:(id)arg2 additionalHandles:(id)arg3;
+ (BOOL)supportsIndividualPreviewSummaries;
+ (id)previewSummary;
+ (id)previewSummaryForPluginPayload:(id)arg1 withBundleID:(id)arg2 previewAttachmentURL:(id *)arg3 previewAttachmentUTI:(id *)arg4;
+ (id)previewSummaryForPluginBundle:(id)arg1;
+ (id)unlocalizedPreviewSummaryForPluginBundle:(id)arg1 pluginDisplayName:(id)arg2;
+ (BOOL)supportsURL:(id)arg1;
@property(readonly, nonatomic) long long messageIDOfLastMessageInSession; // @synthesize messageIDOfLastMessageInSession=_messageIDOfLastMessageInSession;
@property(readonly, retain, nonatomic) NSString *guidOfLastMessageInSession; // @synthesize guidOfLastMessageInSession=_guidOfLastMessageInSession;
@property(readonly, nonatomic, getter=isShowingLatestMessageAsBreadcrumb) BOOL showingLatestMessageAsBreadcrumb; // @synthesize showingLatestMessageAsBreadcrumb=_showingLatestMessageAsBreadcrumb;
@property(nonatomic) BOOL parentChatHasAllUnknownRecipients; // @synthesize parentChatHasAllUnknownRecipients=_parentChatHasAllUnknownRecipients;
@property(retain, nonatomic) NSArray *consumedPayloads; // @synthesize consumedPayloads=_consumedPayloads;
@property(nonatomic) BOOL hasInvalidatedSize; // @synthesize hasInvalidatedSize=_hasInvalidatedSize;
@property(readonly, retain, nonatomic) NSString *bundleID; // @synthesize bundleID=_bundleID;
@property(retain, nonatomic) NSString *sessionGUID; // @synthesize sessionGUID=_sessionGUID;
@property(retain, nonatomic) NSString *messageGUID; // @synthesize messageGUID=_messageGUID;
@property(nonatomic, setter=setShowingLatestMessageAsBreadcrumb:) BOOL isShowingLatestMessageAsBreadcrumb; // @synthesize isShowingLatestMessageAsBreadcrumb=_isShowingLatestMessageAsBreadcrumb;
@property(retain, nonatomic) NSString *_imMessageGUID; // @synthesize _imMessageGUID=__imMessageGUID;
@property(retain, nonatomic) NSMutableSet *temporaryAttachmentURLs; // @synthesize temporaryAttachmentURLs=_temporaryAttachmentURLs;
@property(retain, nonatomic) NSArray *pendingAttachmentData; // @synthesize pendingAttachmentData=_pendingAttachmentData;
@property(nonatomic, setter=setLast:) BOOL isLast; // @synthesize isLast=_isLast;
@property(nonatomic) BOOL initialMessageIsFromMe; // @synthesize initialMessageIsFromMe=_initialMessageIsFromMe;
@property(readonly, nonatomic) NSURL *URLToOpenOnTapAction; // @synthesize URLToOpenOnTapAction=_URLToOpenOnTapAction;
@property(retain, nonatomic) NSArray *attachmentGUIDs; // @synthesize attachmentGUIDs=_attachmentGUIDs;
// @property(retain, nonatomic) DDScannerResult *dataDetectedResult; // @synthesize dataDetectedResult=_dataDetectedResult;
@property(retain, nonatomic) NSURL *url; // @synthesize url=_url;
@property(nonatomic) BOOL payloadInShelf; // @synthesize payloadInShelf=_payloadInShelf;
@property(retain, nonatomic) IMPluginPayload *pluginPayload; // @synthesize pluginPayload=_pluginPayload;
@property(retain, nonatomic) IMChat *chat; // @synthesize chat=_chat;

- (id)description;
- (void)_reloadLatestUnconsumedBreadcrumb;
- (void)endShowingLastConsumedBreadcrumb;
- (void)beginShowingLastConsumedBreadcrumbForOutgoingPayload:(id)arg1;
- (id)_replaceHandleWithContactNameInString:(id)arg1;
// @property(readonly, nonatomic) LPLinkMetadata *richLinkMetadata;
- (void)datasourceWasMovedToNewGuid:(id)arg1;
- (struct CGSize)sizeThatFits:(struct CGSize)arg1;
- (id)individualPreviewAttachmentFileAndUTI:(id *)arg1;
- (id)_summaryText;
- (id)individualPreviewSummary;
- (void)stopPlayback;
- (void)playbackWithCompletionBlock:(CDUnknownBlockType)arg1;
- (unsigned long long)playbackType;
- (void)markAsPlayed;
- (void)needsResize;
@property(readonly, nonatomic) BOOL supportsDynamicSize;
- (void)statusStringNeedsUpdate;
@property(readonly, nonatomic) BOOL wantsReplyFromContentView;
- (void)didTapStatusItem;
@property(readonly, retain, nonatomic) NSAttributedString *statusAttributedString;
@property(readonly, retain, nonatomic) NSString *statusString;
@property(readonly, nonatomic) BOOL wantsStatusItem;
- (void)payloadWillSendFromShelf;
- (void)payloadWillEnterShelf;
- (void)thumbnailURLWithSize:(struct CGSize)arg1 completion:(CDUnknownBlockType)arg2;
- (void)payloadDidChange;
- (void)pluginPayloadDidChange:(unsigned long long)arg1;
@property(readonly, nonatomic) BOOL isPlayed;
@property(readonly, nonatomic) BOOL isFromMe;
- (unsigned long long)_updateWithPluginPayload:(id)arg1 messageID:(long long)arg2 messageGUID:(id)arg3;
- (void)_removeTemporaryAttachmentURLs;
- (void)_updateTemporaryAttachmentURLsForPluginPayload;
- (BOOL)_senderIsSameBetweenPayload:(id)arg1 andOtherPayload:(id)arg2;
- (void)_updatePayload:(id)arg1 messageID:(long long)arg2 messageGUID:(id)arg3;
- (void)updatePayload:(id)arg1 attachments:(id)arg2;
- (void)updatePayload:(id)arg1;
- (void)sendPayload:(id)arg1 attachments:(id)arg2;
- (void)sendPayload:(id)arg1;
@property(readonly, nonatomic) IMMessage *imMessage;
@property(readonly, retain, nonatomic) NSData *messagePayloadDataForSending;
- (void)setPayload:(id)arg1 attachments:(id)arg2;
@property(retain, nonatomic) NSData *payload;
@property(readonly, nonatomic) NSArray *allPayloads;
- (id)initWithPluginPayload:(id)arg1;
- (id)initWithMessageGUID:(id)arg1 payload:(id)arg2 dataDetectedResult:(id)arg3 url:(id)arg4;

@end

@interface IMChatItem : NSObject <NSCopying>
{
    IMItem *_item;
}


@property(readonly, retain, nonatomic) NSString *balloonBundleID;
- (void)_setTimeAdded:(id)arg1;
- (id)_timeAdded;
- (id)_timeStale;
- (id)_item;
- (id)_initWithItem:(id)arg1;
@property(readonly, nonatomic) BOOL canDelete;
- (id)copyWithZone:(struct _NSZone *)arg1;
- (id)description;

@end


@interface IMTranscriptChatItem : IMChatItem
{
    NSString *_guid;
    unsigned char _contiguousType;
    unsigned char _attachmentContiguousType;
    unsigned int _contiguousLoaded:1;
}

@property(copy, nonatomic, setter=_setGUID:) NSString *guid; // @synthesize guid=_guid;

- (void)_setAttachmentContiguousType:(unsigned char)arg1;
- (void)_setContiguousType:(unsigned char)arg1;
- (void)_setContiguousLoaded:(BOOL)arg1;
- (BOOL)_isContiguousLoaded;
@property(readonly, nonatomic, getter=isContiguous) BOOL contiguous;
@property(readonly, nonatomic) unsigned char attachmentContiguousType;
@property(readonly, nonatomic) unsigned char contiguousType;
- (BOOL)isAttachmentContiguousWithChatItem:(id)arg1;
- (BOOL)isContiguousWithChatItem:(id)arg1;
- (id)copyWithZone:(struct _NSZone *)arg1;
- (BOOL)isEqual:(id)arg1;
- (unsigned long long)hash;
- (id)description;

@end

@interface IMReportSpamChatItem : IMTranscriptChatItem
{
    BOOL _wasReportedAsSpam;
    BOOL _isGroupMessage;
    BOOL _hasMultipleMessages;
    BOOL _showReportSMSSpam;
}

@property(readonly, nonatomic) BOOL showReportSMSSpam; // @synthesize showReportSMSSpam=_showReportSMSSpam;
@property(readonly, nonatomic) BOOL hasMultipleMessages; // @synthesize hasMultipleMessages=_hasMultipleMessages;
@property(readonly, nonatomic) BOOL isGroupMessage; // @synthesize isGroupMessage=_isGroupMessage;
@property(readonly, nonatomic) BOOL wasReportedAsSpam; // @synthesize wasReportedAsSpam=_wasReportedAsSpam;
- (id)_initWithItem:(id)arg1 wasReportedAsSpam:(BOOL)arg2 isGroup:(BOOL)arg3 hasMultipleMessages:(BOOL)arg4 showReportSMSSpam:(BOOL)arg5;

@end

@interface IMServiceChatItem : IMTranscriptChatItem
{
    IMHandle *_handle;
    IMServiceImpl *_service;
}

@property(readonly, nonatomic) IMHandle *handle; // @synthesize handle=_handle;
@property(readonly, nonatomic) IMServiceImpl *service; // @synthesize service=_service;

- (id)_initWithItem:(id)arg1 service:(id)arg2 handle:(id)arg3;
- (id)copyWithZone:(struct _NSZone *)arg1;

@end

@interface IMNumberChangedChatItem : IMTranscriptChatItem
{
    NSString *_sender;
}

@property(readonly, nonatomic) NSString *sender; // @synthesize sender=_sender;

- (id)_initWithItem:(id)arg1 senderHandle:(id)arg2;

@end

@interface IMDateChatItem : IMTranscriptChatItem
{
}

- (id)_initWithItem:(id)arg1;
@property(readonly, nonatomic) NSDate *date;

@end

@interface IMSenderChatItem : IMTranscriptChatItem
{
    IMHandle *_handle;
}

@property(readonly, nonatomic) IMHandle *handle; // @synthesize handle=_handle;

- (id)_initWithItem:(id)arg1 handle:(id)arg2;
- (id)copyWithZone:(struct _NSZone *)arg1;

@end

@interface IMMessageChatItem : IMTranscriptChatItem <IMMessageChatItem>
{
}

@property(readonly, nonatomic) IMHandle *sender;
@property(readonly, nonatomic) NSDate *time;
@property(readonly, nonatomic) BOOL failed;
@property(readonly, nonatomic) BOOL isFromMe;
@property(readonly, nonatomic) IMMessage *message;

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

@end

@interface IMMessagePartChatItem : IMMessageChatItem <IMVisibleAssociatedMessageHost>
{
    NSAttributedString *_text;
    NSAttributedString *_fallbackCorruptText;
    long long _index;
    struct _NSRange _messagePartRange;
    NSArray *_visibleAssociatedMessageChatItems;
    NSArray *_messageEditChatItems;
    BOOL _isBusiness;
    BOOL _chatInScrutinyMode;
    BOOL _whitelistedRichLinkSender;
}

+ (id)_messageItemWithPartsDeleted:(id)arg1 fromMessageItem:(id)arg2;
+ (id)_newMessagePartsForMessageItem:(id)arg1 shouldDisplayLink:(BOOL)arg2 isBusiness:(BOOL)arg3 parentChatIsSpam:(BOOL)arg4 hasKnownParticipants:(BOOL)arg5;
+ (BOOL)_supportsRichLinkURL:(id)arg1 forSender:(id)arg2 isWhitelistedRichLinkSender:(BOOL)arg3;
+ (id)_richLinkRangesForMessageText:(id)arg1 sender:(id)arg2 isWhitelistedRichLinkSender:(BOOL)arg3;
+ (id)_additionalSupportedRichLinkSchemesForWhitelistedSender:(id)arg1;
+ (BOOL)_isWhitelistedRichLinkSender:(id)arg1 isBusiness:(BOOL)arg2;
+ (id)_defaultRichLinkSenderWhitelist;
+ (BOOL)_isWhiteListedURL:(id)arg1;
+ (id)_defaultRichLinkWhiteList;
+ (id)_newMessagePartsForMessageItem:(id)arg1;
+ (id)_guidForMessage:(id)arg1 url:(id)arg2;
@property(nonatomic, getter=isWhitelistedRichLinkSender) BOOL whitelistedRichLinkSender; // @synthesize whitelistedRichLinkSender=_whitelistedRichLinkSender;
@property(readonly, copy, nonatomic) NSAttributedString *fallbackCorruptText; // @synthesize fallbackCorruptText=_fallbackCorruptText;
@property(nonatomic) BOOL chatInScrutinyMode; // @synthesize chatInScrutinyMode=_chatInScrutinyMode;
@property(readonly, nonatomic) NSArray *messageEditChatItems; // @synthesize messageEditChatItems=_messageEditChatItems;
@property(retain, nonatomic, setter=_setVisibleAssociatedMessageChatItems:) NSArray *visibleAssociatedMessageChatItems; // @synthesize visibleAssociatedMessageChatItems=_visibleAssociatedMessageChatItems;
@property(nonatomic) long long index; // @synthesize index=_index;
@property(readonly, copy, nonatomic) NSAttributedString *text; // @synthesize text=_text;

@property (nonatomic, copy, readonly) NSString *threadIdentifier;
@property(nonatomic) struct _NSRange messagePartRange; // @synthesize messagePartRange=_messagePartRange;


- (BOOL)canSendMessageAcknowledgment;
- (void)_setMessageEditChatItems:(id)arg1;
- (id)_initWithItem:(id)arg1 text:(id)arg2 index:(long long)arg3 messagePartRange:(struct _NSRange)arg4 visibleAssociatedMessageChatItems:(id)arg5;
- (id)_initWithItem:(id)arg1 messagePartRange:(struct _NSRange)arg2;
@property(readonly, nonatomic) BOOL isCorrupt;
@property(nonatomic) BOOL isBusiness; // @synthesize isBusiness=_isBusiness;
- (BOOL)canDelete;
- (id)copyWithZone:(struct _NSZone *)arg1;
@property(readonly, copy) NSString *description;

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

@end

@interface IMTextMessagePartChatItem : IMMessagePartChatItem
{
    NSAttributedString *_subject;
}

@property(readonly, copy, nonatomic) NSAttributedString *subject; // @synthesize subject=_subject;

- (id)_initWithItem:(id)arg1 text:(id)arg2 index:(long long)arg3 messagePartRange:(struct _NSRange)arg4 subject:(id)arg5 visibleAssociatedMessageChatItems:(id)arg6;
- (id)_initWithItem:(id)arg1 text:(id)arg2 index:(long long)arg3 messagePartRange:(struct _NSRange)arg4 subject:(id)arg5;
- (id)_initWithItem:(id)arg1 text:(id)arg2 index:(long long)arg3 messagePartRange:(struct _NSRange)arg4 subject:(id)arg5 shouldDisplayLink:(BOOL)arg6;
- (id)copyWithZone:(struct _NSZone *)arg1;
- (id)description;
- (void)setShouldDisplayRichLink:(BOOL)arg1;
- (BOOL)shouldDisplayRichLink;

@end

@interface IMTranscriptPluginChatItem : IMMessagePartChatItem <IMPluginChatItemProtocol>
{
    BOOL _isLastChatItemOfPluginType;
    BOOL _hasSetIsLastChatItemOfPluginType;
    BOOL _parentChatHasKnownParticipants;
    IMPluginPayload *_initialPayload;
    NSString *_bundleIdentifier;
    IMBalloonPluginDataSource *_dataSource;
}

@property(retain, nonatomic) IMBalloonPluginDataSource *dataSource; // @synthesize dataSource=_dataSource;
@property(readonly, nonatomic) BOOL parentChatHasKnownParticipants; // @synthesize parentChatHasKnownParticipants=_parentChatHasKnownParticipants;
@property(nonatomic) BOOL hasSetIsLastChatItemOfPluginType; // @synthesize hasSetIsLastChatItemOfPluginType=_hasSetIsLastChatItemOfPluginType;
@property(nonatomic, setter=setLastChatItemOfPluginType:) BOOL isLastChatItemOfPluginType; // @synthesize isLastChatItemOfPluginType=_isLastChatItemOfPluginType;
@property(retain, nonatomic) NSString *bundleIdentifier; // @synthesize bundleIdentifier=_bundleIdentifier;
@property(retain, nonatomic) IMPluginPayload *initialPayload; // @synthesize initialPayload=_initialPayload;

- (BOOL)wantsAutoPlayback;
@property(readonly, nonatomic) BOOL isSaved;
@property(readonly, nonatomic) BOOL isPlayed;
@property(readonly, nonatomic) unsigned long long playbackType;
@property(readonly, nonatomic) NSString *pluginSessionGUID;
@property(readonly, nonatomic) BOOL isDataSourceInitialized;
- (id)_initWithItem:(id)arg1 initialPayload:(id)arg2 messagePartRange:(struct _NSRange)arg3 parentChatHasKnownParticipants:(BOOL)arg4;
- (id)copyWithZone:(struct _NSZone *)arg1;
@property(readonly, copy) NSString *description;
@property(readonly, retain, nonatomic) NSString *type;

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

@end

@interface IMTranscriptPluginBreadcrumbChatItem : IMTranscriptChatItem <IMPluginChatItemProtocol>
{
    IMBalloonPluginDataSource *_dataSource;
    NSString *_rawStatusText;
    NSString *_statusText;
    unsigned long long _optionFlags;
}

@property(readonly, nonatomic) unsigned long long optionFlags; // @synthesize optionFlags=_optionFlags;
@property(readonly, nonatomic) NSString *statusText; // @synthesize statusText=_statusText;
@property(readonly, nonatomic) NSString *rawStatusText; // @synthesize rawStatusText=_rawStatusText;
@property(retain, nonatomic) IMBalloonPluginDataSource *dataSource; // @synthesize dataSource=_dataSource;

@property(readonly, nonatomic) BOOL isFromMe;
@property(readonly, retain, nonatomic) NSString *type;
- (void)configureStatusTextWithAccount:(id)arg1;
- (BOOL)isEqual:(id)arg1;
- (id)_initWithItem:(id)arg1 datasource:(id)arg2 statusText:(id)arg3 optionFlags:(unsigned long long)arg4;

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

@end

@interface IMAttachmentMessagePartChatItem : IMMessagePartChatItem
{
    NSString *_transferGUID;
    unsigned int _wantsAttachmentContiguous:1;
    BOOL _parentChatIsSpam;
}

@property(readonly, nonatomic) BOOL parentChatIsSpam; // @synthesize parentChatIsSpam=_parentChatIsSpam;
@property(readonly, copy, nonatomic) NSString *transferGUID; // @synthesize transferGUID=_transferGUID;

- (id)_initWithItem:(id)arg1 text:(id)arg2 index:(long long)arg3 messagePartRange:(struct _NSRange)arg4 transferGUID:(id)arg5 parentChatIsSpam:(BOOL)arg6 visibleAssociatedMessageChatItems:(id)arg7;
- (id)_initWithItem:(id)arg1 text:(id)arg2 index:(long long)arg3 messagePartRange:(struct _NSRange)arg4 transferGUID:(id)arg5 parentChatIsSpam:(BOOL)arg6;
- (BOOL)isAttachmentContiguousWithChatItem:(id)arg1;
- (id)copyWithZone:(struct _NSZone *)arg1;
- (id)description;

@end

@interface IMAnimatedEmojiMessagePartChatItem : IMAttachmentMessagePartChatItem
{
}

- (BOOL)isAttachmentContiguousWithChatItem:(id)arg1;

@end

@interface IMErrorMessagePartChatItem : IMAttachmentMessagePartChatItem
{
}

@end

@interface IMExpirableMessageChatItem : IMAttachmentMessagePartChatItem
{
}

@property(readonly, nonatomic) BOOL isSaved;
@property(readonly, nonatomic) BOOL isPlayed;

@end

@interface IMAudioMessageChatItem : IMExpirableMessageChatItem
{
}

- (BOOL)isAttachmentContiguousWithChatItem:(id)arg1;

@end

@interface IMTypingChatItem : IMMessageChatItem
{
}

- (id)_initWithItem:(id)arg1;

@end

@interface IMTypingPluginChatItem : IMTypingChatItem <IMPluginChatItemProtocol>
{
    NSData *_typingIndicatorIcon;
    IMBalloonPluginDataSource *_dataSource;
}

@property(retain, nonatomic) IMBalloonPluginDataSource *dataSource; // @synthesize dataSource=_dataSource;
@property(readonly, nonatomic) NSData *typingIndicatorIcon; // @synthesize typingIndicatorIcon=_typingIndicatorIcon;

- (id)_initWithItem:(id)arg1 dataSource:(id)arg2;
@property(readonly, retain, nonatomic) NSString *type;

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

@end

@interface IMLocatingChatItem : IMMessageChatItem
{
}

- (id)_initWithItem:(id)arg1;

@end

@interface IMEmoteMessageChatItem : IMMessageChatItem
{
}

- (id)_initWithItem:(id)arg1;
@property(readonly, copy, nonatomic) NSAttributedString *text;

@end

@interface IMMessageStatusChatItem : IMTranscriptChatItem
{
    long long _statusType;
    NSDate *_time;
    long long _expireStatusType;
    NSDate *_timeAdded;
    NSDate *_timeStale;
    unsigned long long _count;
}

@property(readonly, nonatomic) unsigned long long count; // @synthesize count=_count;
@property(readonly, nonatomic) long long expireStatusType; // @synthesize expireStatusType=_expireStatusType;
@property(readonly, nonatomic) NSDate *time; // @synthesize time=_time;
@property(readonly, nonatomic) long long statusType; // @synthesize statusType=_statusType;

- (id)_initWithItem:(id)arg1 statusType:(long long)arg2 time:(id)arg3 count:(unsigned long long)arg4 expireStatusType:(long long)arg5;
- (id)_initWithItem:(id)arg1 expireStatusType:(long long)arg2 count:(unsigned long long)arg3;
- (id)_initWithItem:(id)arg1 statusType:(long long)arg2 time:(id)arg3 count:(unsigned long long)arg4;
@property(readonly, nonatomic) long long messageStatusType;
@property(readonly, nonatomic) NSString *errorText;
@property(readonly, nonatomic) BOOL isFromMe;
- (void)_setTimeAdded:(id)arg1;
- (id)_timeAdded;
- (id)_timeStale;
- (id)copyWithZone:(struct _NSZone *)arg1;
- (id)description;

@end

@interface IMMessageEffectControlChatItem : IMMessageStatusChatItem
{
    NSString *_effectStyleID;
}

@property(readonly, copy, nonatomic) NSString *effectStyleID; // @synthesize effectStyleID=_effectStyleID;

- (id)_initWithItem:(id)arg1 effectStyleID:(id)arg2;

@end

@interface IMMessageAttributionChatItem : IMMessageStatusChatItem
{
    NSDictionary *_attributionInfo;
    long long _attributionType;
}

@property(readonly, nonatomic) long long attributionType; // @synthesize attributionType=_attributionType;
@property(readonly, copy, nonatomic) NSDictionary *attributionInfo; // @synthesize attributionInfo=_attributionInfo;

@property(readonly, copy, nonatomic) NSString *bundleID;
- (id)_initWithItem:(id)arg1 attributionInfo:(id)arg2 attributionType:(long long)arg3;

@end

@interface IMTranscriptPluginStatusChatItem : IMMessageStatusChatItem
{
    IMBalloonPluginDataSource *_dataSource;
}

@property(readonly, nonatomic) IMBalloonPluginDataSource *dataSource; // @synthesize dataSource=_dataSource;

- (id)_initWithItem:(id)arg1 dataSource:(id)arg2;

@end

@interface IMGroupActionChatItem : IMTranscriptChatItem
{
    IMHandle *_sender;
}

@property(readonly, nonatomic) IMHandle *sender; // @synthesize sender=_sender;

- (id)_initWithItem:(id)arg1 sender:(id)arg2;
@property(readonly, nonatomic) long long actionType;
- (id)copyWithZone:(struct _NSZone *)arg1;

@end

@interface IMGroupTitleChangeChatItem : IMTranscriptChatItem
{
    IMHandle *_sender;
}

@property(readonly, nonatomic) IMHandle *sender; // @synthesize sender=_sender;

- (id)_initWithItem:(id)arg1 sender:(id)arg2;
@property(readonly, copy, nonatomic) NSString *title;
- (id)copyWithZone:(struct _NSZone *)arg1;

@end

@interface IMParticipantChangeChatItem : IMTranscriptChatItem
{
    IMHandle *_sender;
    IMHandle *_otherHandle;
}

@property(readonly, nonatomic) IMHandle *otherHandle; // @synthesize otherHandle=_otherHandle;
@property(readonly, nonatomic) IMHandle *sender; // @synthesize sender=_sender;

- (id)_initWithItem:(id)arg1 sender:(id)arg2 otherHandle:(id)arg3;
@property(readonly, nonatomic) long long changeType;
- (id)copyWithZone:(struct _NSZone *)arg1;

@end

@interface IMLocationShareActionChatItem : IMTranscriptChatItem
{
    IMHandle *_sender;
    IMHandle *_otherHandle;
}

@property(readonly, nonatomic) IMHandle *otherHandle; // @synthesize otherHandle=_otherHandle;
@property(readonly, nonatomic) IMHandle *sender; // @synthesize sender=_sender;

- (id)_initWithItem:(id)arg1 sender:(id)arg2 otherHandle:(id)arg3;
@property(readonly, nonatomic) long long direction;
@property(readonly, nonatomic) long long actionType;
@property(readonly, nonatomic) BOOL isFromMe;
- (id)copyWithZone:(struct _NSZone *)arg1;

@end

@interface IMTUConversationChatItem : IMTranscriptChatItem
{
    IMHandle *_conversationInitiator;
}

@property(readonly, nonatomic) IMHandle *conversationInitiator; // @synthesize conversationInitiator=_conversationInitiator;

- (BOOL)canDelete;
@property(readonly, nonatomic) NSDate *time;
@property(readonly, nonatomic) BOOL isFromMe;
// @property(readonly, nonatomic) __weak TUConversation *tuConversation;
@property(readonly, nonatomic) NSUUID *tuConversationUUID;
- (id)activeCall;
- (id)_initWithItem:(id)arg1 conversationInitiator:(id)arg2;
- (id)copyWithZone:(struct _NSZone *)arg1;

@end

@interface IMMessageActionChatItem : IMTranscriptChatItem
{
    IMHandle *_sender;
    IMHandle *_otherHandle;
}

@property(readonly, nonatomic) IMHandle *otherHandle; // @synthesize otherHandle=_otherHandle;
@property(readonly, nonatomic) IMHandle *sender; // @synthesize sender=_sender;

- (id)_initWithItem:(id)arg1 sender:(id)arg2 otherHandle:(id)arg3;
@property(readonly, nonatomic) long long actionType;
- (id)copyWithZone:(struct _NSZone *)arg1;

@end

@interface IMAssociatedMessageChatItem : IMTranscriptChatItem
{
    struct IMAssociatedMessageGeometryDescriptor _geometryDescriptor;
    BOOL _parentMessageIsFromMe;
    IMHandle *_sender;
}

@property(readonly, nonatomic) IMHandle *sender; // @synthesize sender=_sender;
@property(readonly, nonatomic) struct IMAssociatedMessageGeometryDescriptor geometryDescriptor; // @synthesize geometryDescriptor=_geometryDescriptor;

@property(readonly, nonatomic) NSDictionary *messageSummaryInfo;
@property(readonly, nonatomic) BOOL failed;
- (void)_setParentMessageIsFromMe:(BOOL)arg1;
@property(readonly, nonatomic) BOOL parentMessageIsFromMe;
@property(readonly, nonatomic) struct _NSRange associatedMessageRange;
@property(readonly, nonatomic) long long associatedMessageType;
@property(readonly, nonatomic) NSString *associatedMessageGUID;
@property(readonly, nonatomic) BOOL isFromMe;
@property(readonly, nonatomic) NSDate *time;
- (id)message;
- (id)_imAssociatedMessageItem;
- (id)_initWithItem:(id)arg1 sender:(id)arg2;
- (id)copyWithZone:(struct _NSZone *)arg1;

@end

@interface IMMessageEditChatItem : IMAssociatedMessageChatItem <IMVisibleAssociatedMessageHost>
{
    NSArray *_visibleAssociatedMessageChatItems;
}

@property(retain, nonatomic, setter=_setVisibleAssociatedMessageChatItems:) NSArray *visibleAssociatedMessageChatItems; // @synthesize visibleAssociatedMessageChatItems=_visibleAssociatedMessageChatItems;

@property(readonly, retain, nonatomic) NSAttributedString *editedBody;

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

@end

@interface IMMessageAcknowledgmentChatItem : IMAssociatedMessageChatItem
{
    long long _messageAcknowledgmentType;
}

@property(readonly, nonatomic) long long messageAcknowledgmentType; // @synthesize messageAcknowledgmentType=_messageAcknowledgmentType;
- (id)_initWithItem:(id)arg1 sender:(id)arg2 messageAcknowledgmentType:(long long)arg3;
- (id)copyWithZone:(struct _NSZone *)arg1;

@end

@interface IMAssociatedStickerChatItem : IMAssociatedMessageChatItem
{
    NSString *_transferGUID;
}

@property(readonly, copy, nonatomic) NSString *transferGUID; // @synthesize transferGUID=_transferGUID;

- (id)_initWithItem:(id)arg1 sender:(id)arg2 transferGUID:(id)arg3;
- (BOOL)canDelete;
- (id)copyWithZone:(struct _NSZone *)arg1;
- (id)description;

@end

@interface IMAggregateAcknowledgmentChatItem : IMAssociatedMessageChatItem
{
    BOOL _latestIsFromMe;
    BOOL _includesMultiple;
    NSArray *_acknowledgments;
    IMMessageAcknowledgmentChatItem *_fromMeAcknowledgement;
    long long _latestAcknowledgmentType;
}

@property(readonly, nonatomic) long long latestAcknowledgmentType; // @synthesize latestAcknowledgmentType=_latestAcknowledgmentType;
@property(readonly, nonatomic) BOOL includesMultiple; // @synthesize includesMultiple=_includesMultiple;
@property(readonly, nonatomic) BOOL latestIsFromMe; // @synthesize latestIsFromMe=_latestIsFromMe;
@property(readonly, nonatomic) IMMessageAcknowledgmentChatItem *fromMeAcknowledgement; // @synthesize fromMeAcknowledgement=_fromMeAcknowledgement;
@property(readonly, copy, nonatomic) NSArray *acknowledgments; // @synthesize acknowledgments=_acknowledgments;

- (id)copyWithZone:(struct _NSZone *)arg1;
- (BOOL)isEqual:(id)arg1;
- (unsigned long long)hash;
- (id)_initWithAcknowledgments:(id)arg1;
@property(readonly, nonatomic) BOOL includesFromMe;

@end

@interface IMExpressiveSendAsTextChatItem : IMTranscriptChatItem
{
    NSString *_text;
}

@property(readonly, copy, nonatomic) NSString *text; // @synthesize text=_text;

- (id)_initWithItem:(id)arg1 text:(id)arg2;

@end


@interface IMDaemonListener : NSObject
{
    NSMutableDictionary *_properties;
    NSMutableDictionary *_persistentProperties;
    NSMutableArray *_deferredChatMessages;
    NSMutableArray *_handlers;
    NSProtocolChecker *_protocol;
    NSMutableDictionary *_services;
    NSDate *_myIdleSince;
    NSData *_myPicture;
    NSMutableDictionary *_contexts;
    NSString *_myStatusMessage;
    NSString *_myNowPlayingString;
    unsigned long long _myStatus;
    unsigned long long _vcCapabilities;
    BOOL _setupComplete;
    BOOL _postedSetupComplete;
    BOOL _holdingChatMessages;
    BOOL _hidingDisconnect;
    BOOL _hasPendingProcessChange;
}

@property(readonly, nonatomic) NSDictionary *persistentProperties; // @synthesize persistentProperties=_persistentProperties;
@property(readonly, nonatomic) NSDictionary *properties; // @synthesize properties=_properties;
@property(readonly, nonatomic) BOOL hasPostedSetupComplete; // @synthesize hasPostedSetupComplete=_postedSetupComplete;
@property(readonly, nonatomic) BOOL shouldHoldChatMessages; // @synthesize shouldHoldChatMessages=_holdingChatMessages;
@property(readonly, nonatomic) unsigned long long vcCapabilities; // @synthesize vcCapabilities=_vcCapabilities;
@property(readonly, nonatomic) NSString *myStatusMessage; // @synthesize myStatusMessage=_myStatusMessage;
@property(readonly, nonatomic) BOOL isSetupComplete; // @synthesize isSetupComplete=_setupComplete;
@property(readonly, nonatomic) NSArray *handlers; // @synthesize handlers=_handlers;
@property(nonatomic, setter=_setHidingDisconnect:) BOOL _hidingDisconnect; // @synthesize _hidingDisconnect;
@property(readonly, nonatomic) NSMutableDictionary *_contexts; // @synthesize _contexts;

- (void)oneTimeCodesDidChange:(id)arg1;
- (void)receivedUrgentRequestForMessages:(id)arg1;
- (void)returnMOCEnabledState:(unsigned long long)arg1;
- (void)updateCloudKitStateWithDictionary:(id)arg1;
- (void)updateCloudKitState;
- (void)didAttemptToDisableAllDevicesResult:(BOOL)arg1;
- (void)didPerformAdditionalStorageRequiredCheckWithSuccess:(BOOL)arg1 additionalStorageRequired:(unsigned long long)arg2 forAccountId:(id)arg3 error:(id)arg4;
- (void)didAttemptToSetEnabledTo:(BOOL)arg1 result:(BOOL)arg2;
- (void)qosClassWhileServicingRequestsResponse:(unsigned int)arg1 identifier:(id)arg2;
- (void)forwardInvocation:(id)arg1;
- (id)methodSignatureForSelector:(SEL)arg1;
- (void)didFetchCloudKitSyncDebuggingInfo:(id)arg1;
- (void)didAttemptToDisableiCloudBackups:(long long)arg1 error:(id)arg2;
- (void)didFetchRampState:(id)arg1;
- (void)didFetchSyncStateStats:(id)arg1;
- (void)databaseChatSpamUpdated:(id)arg1;
- (void)databaseNoLongerFull;
- (void)databaseFull;
- (void)databaseUpdated:(id)arg1;
- (void)_deferredSetup:(id)arg1;
- (void)setupComplete:(BOOL)arg1 info:(id)arg2;
- (void)account:(id)arg1 defaults:(id)arg2 blockList:(id)arg3 allowList:(id)arg4 blockingMode:(unsigned int)arg5 blockIdleStatus:(BOOL)arg6 status:(id)arg7 capabilities:(unsigned long long)arg8 serviceLoginStatus:(unsigned int)arg9 loginStatusMessage:(id)arg10;
- (void)service:(id)arg1 properties:(id)arg2 defaults:(id)arg3 defaultAccountSettings:(id)arg4 allAccounts:(id)arg5 activeAccounts:(id)arg6;
- (void)services:(id)arg1 properties:(id)arg2 persistentProperties:(id)arg3;
- (void)account:(id)arg1 status:(id)arg2 capabilities:(unsigned long long)arg3 serviceLoginStatus:(unsigned int)arg4 loginStatusMessage:(id)arg5;
- (void)persistentProperty:(id)arg1 changedTo:(id)arg2 from:(id)arg3;
- (void)_cacheValue:(id)arg1 forPersistentProperty:(id)arg2;
- (id)valueOfPersistentProperty:(id)arg1;
- (void)property:(id)arg1 changedTo:(id)arg2 from:(id)arg3;
- (void)_cacheValue:(id)arg1 forProperty:(id)arg2;
- (id)valueOfProperty:(id)arg1;
- (id)_stampForContext:(id)arg1;
- (void)_setStamp:(id)arg1 forContext:(id)arg2;
- (void)account:(id)arg1 postedError:(id)arg2;
- (void)account:(id)arg1 blockIdleStatusChanged:(BOOL)arg2;
- (void)account:(id)arg1 blockingModeChanged:(unsigned int)arg2;
- (void)account:(id)arg1 allowListChanged:(id)arg2;
- (void)account:(id)arg1 blockListChanged:(id)arg2;
- (void)account:(id)arg1 handleSubscriptionRequestFrom:(id)arg2 withMessage:(id)arg3;
- (void)account:(id)arg1 groupsChanged:(id)arg2 error:(id)arg3;
- (void)fileTransferHighQualityDownloadFailed:(id)arg1;
- (void)fileTransfer:(id)arg1 highQualityDownloadSucceededWithPath:(id)arg2;
- (void)fileTransfer:(id)arg1 updatedWithCurrentBytes:(unsigned long long)arg2 totalBytes:(unsigned long long)arg3 averageTransferRate:(unsigned long long)arg4;
- (void)fileTransfer:(id)arg1 updatedWithProperties:(id)arg2;
- (void)fileTransfers:(id)arg1 createdWithLocalPaths:(id)arg2;
- (void)fileTransfer:(id)arg1 createdWithProperties:(id)arg2;
- (void)standaloneFileTransferRegistered:(id)arg1;
- (void)account:(id)arg1 chat:(id)arg2 style:(unsigned char)arg3 chatProperties:(id)arg4 messagesReceived:(id)arg5;
- (void)account:(id)arg1 chat:(id)arg2 style:(unsigned char)arg3 chatProperties:(id)arg4 messageReceived:(id)arg5;
- (void)account:(id)arg1 chat:(id)arg2 style:(unsigned char)arg3 chatProperties:(id)arg4 invitationReceived:(id)arg5;
- (void)account:(id)arg1 buddyInfo:(id)arg2 commandDelivered:(id)arg3 properties:(id)arg4;
- (void)account:(id)arg1 buddyInfo:(id)arg2 commandReceived:(id)arg3 properties:(id)arg4;
- (void)account:(id)arg1 buddyProperties:(id)arg2 buddyPictures:(id)arg3;
- (void)pinCodeAlertCompleted:(id)arg1 deviceName:(id)arg2 deviceType:(id)arg3 phoneNumber:(id)arg4 responseFromDevice:(BOOL)arg5 wasCancelled:(BOOL)arg6;
- (void)displayPinCodeForAccount:(id)arg1 pinCode:(id)arg2 deviceName:(id)arg3 deviceType:(id)arg4 phoneNumber:(id)arg5;
- (void)account:(id)arg1 buddyPictureChanged:(id)arg2 imageData:(id)arg3 imageHash:(id)arg4;
- (void)account:(id)arg1 buddyPropertiesChanged:(id)arg2;
- (void)vcCapabilitiesChanged:(unsigned long long)arg1;
- (void)account:(id)arg1 capabilitiesChanged:(unsigned long long)arg2;
- (void)account:(id)arg1 statusChanged:(id)arg2;
- (void)account:(id)arg1 loginStatusChanged:(unsigned int)arg2 message:(id)arg3 reason:(int)arg4 properties:(id)arg5;
- (void)accountRemoved:(id)arg1;
- (void)accountAdded:(id)arg1 defaults:(id)arg2 service:(id)arg3;
- (void)account:(id)arg1 defaultsChanged:(id)arg2;
- (void)activeAccountsChanged:(id)arg1 forService:(id)arg2;
- (void)defaultsChanged:(id)arg1 forService:(id)arg2;
- (void)releaseHeldChatMessages;
- (void)holdChatMessages;
@property(readonly, nonatomic) BOOL isHoldingChatMessages;
- (void)_deferNotification:(id)arg1;
- (void)_processDeferredInvitationDictionary:(id)arg1;
@property(readonly, nonatomic) unsigned int myIdleTime;
@property(readonly, nonatomic) unsigned long long myStatus;
- (void)_processMyStatusChanged;
- (void)_reallyProcessMyStatusChanged;
- (id)serviceWithName:(id)arg1;
@property(readonly, nonatomic) NSArray *allServices;
- (void)removeHandler:(id)arg1;
- (void)addHandler:(id)arg1;
- (void)_noteDisconnected;
- (id)init;

@end

@interface IMDaemonController : NSObject
{
    id _delegate;
    // IMRemoteObject<IMRemoteDaemonProtocol> *_remoteObject;
    NSMutableDictionary *_listenerMap;
    // IMLocalObject *_localObject;
    IMDaemonListener *_daemonListener;
    NSMutableArray *_services;
    NSProtocolChecker *_protocol;
    NSString *_listenerID;
    NSObject<OS_dispatch_queue> *_listenerLockQueue;
    NSObject<OS_dispatch_queue> *_remoteDaemonLockQueue;
    NSObject<OS_dispatch_queue> *_localObjectLockQueue;
    NSObject<OS_dispatch_queue> *_remoteMessageQueue;
    NSRecursiveLock *_connectionLock;
    NSArray *_servicesToAllow;
    NSArray *_servicesToDeny;
    struct __CFRunLoopSource *_runLoopSource;
    NSLock *_blockingLock;
    BOOL _hasCheckedForDaemon;
    BOOL _preventReconnect;
    BOOL _inBlockingConnect;
    BOOL _acquiringDaemonConnection;
    BOOL _autoReconnect;
    BOOL _blocksConnectionAtResume;
    BOOL _hasBeenSuspended;
    unsigned int _gMyFZListenerCapabilities;
    unsigned int _cachedCapabilities;
    unsigned int _lastUpdatedCapabilities;
    BOOL _requestingConnection;
    NSMutableDictionary *_requestQOSClassCompletionBlocks;
    CDUnknownBlockType _prewarmingBlock;
}

+ (void)_setApplicationWillTerminate;
+ (void)_blockUntilSendQueueIsEmpty;
+ (BOOL)_applicationWillTerminate;
+ (id)sharedController;
+ (id)sharedInstance;
@property(copy, nonatomic) CDUnknownBlockType prewarmingBlock; // @synthesize prewarmingBlock=_prewarmingBlock;
@property(retain, nonatomic) NSMutableDictionary *requestQOSClassCompletionBlocks; // @synthesize requestQOSClassCompletionBlocks=_requestQOSClassCompletionBlocks;
@property(readonly, nonatomic, getter=isRequestingConnection) BOOL requestingConnection; // @synthesize requestingConnection=_requestingConnection;
@property(readonly, nonatomic) NSObject<OS_dispatch_queue> *_remoteMessageQueue; // @synthesize _remoteMessageQueue;
@property(retain, setter=_setServicesToDeny:) NSArray *_servicesToDeny; // @synthesize _servicesToDeny;
@property(retain, setter=_setServicesToAllow:) NSArray *_servicesToAllow; // @synthesize _servicesToAllow;
@property(setter=__setCapabilities:) unsigned int _capabilities; // @synthesize _capabilities=_gMyFZListenerCapabilities;
@property(setter=_setAutoReconnect:) BOOL _autoReconnect; // @synthesize _autoReconnect;
@property(retain, nonatomic, setter=_setListenerID:) NSString *_listenerID; // @synthesize _listenerID;
@property(nonatomic) __weak id delegate; // @synthesize delegate=_delegate;
@property(nonatomic, setter=_setBlocksConnectionAtResume:) BOOL _blocksConnectionAtResume; // @synthesize _blocksConnectionAtResume;
@property(readonly, nonatomic) IMDaemonListener *listener; // @synthesize listener=_daemonListener;

- (void)systemApplicationDidResume;
- (void)systemApplicationWillEnterForeground;
- (void)systemApplicationDidEnterBackground;
- (void)systemApplicationDidSuspend;
- (void)forwardInvocation:(id)arg1;
- (id)methodSignatureForSelector:(SEL)arg1;
- (void)setDaemonLogsOutWithoutStatusListeners:(BOOL)arg1;
- (void)setDaemonTerminatesWithoutListeners:(BOOL)arg1;
- (void)listener:(id)arg1 setValue:(id)arg2 ofPersistentProperty:(id)arg3;
- (void)listener:(id)arg1 setValue:(id)arg2 ofProperty:(id)arg3;
- (void)remoteObjectDiedNotification:(id)arg1;
- (void)localObjectDiedNotification:(id)arg1;
- (void)_setCapabilities:(unsigned int)arg1;
@property(readonly, nonatomic) unsigned int capabilities;
- (void)listener:(id)arg1 setListenerCapabilities:(unsigned int)arg2;
- (void)_remoteObjectCleanup;
- (void)_localObjectCleanup;
- (BOOL)localObjectExists;
- (BOOL)remoteObjectExists;
- (BOOL)__isRemoteObjectValidOnQueue:(id)arg1;
- (BOOL)__isLocalObjectValidOnQueue:(id)arg1;
- (void)_noteSetupComplete;
- (void)blockUntilConnected;
- (double)_connectionTimeout;
@property(readonly, nonatomic) BOOL isConnected;
@property(readonly, nonatomic) BOOL isConnecting;
- (BOOL)_acquiringDaemonConnection;
- (void)_addressBookChanged:(id)arg1;
- (void)setMyStatus:(unsigned long long)arg1 message:(id)arg2 forAccount:(id)arg3;
- (void)setMyStatus:(unsigned long long)arg1 message:(id)arg2;
- (void)setMyPicture:(id)arg1 smallPictureData:(id)arg2;
- (id)_remoteObject;
- (BOOL)setCapabilities:(unsigned int)arg1 forListenerID:(id)arg2;
- (unsigned int)capabilitiesForListenerID:(id)arg1;
- (BOOL)removeListenerID:(id)arg1;
- (BOOL)hasListenerForID:(id)arg1;
- (BOOL)addListenerID:(id)arg1 capabilities:(unsigned int)arg2;
- (void)_listenerSetUpdated;
- (void)sendABInformationToDaemon;
- (BOOL)connectToDaemonWithLaunch:(BOOL)arg1 capabilities:(unsigned int)arg2 blockUntilConnected:(BOOL)arg3;
- (BOOL)connectToDaemon;
- (BOOL)connectToDaemonWithLaunch:(BOOL)arg1;
- (void)_connectToDaemonWithLaunch:(BOOL)arg1 capabilities:(unsigned int)arg2;
- (void)disconnectFromDaemon;
- (void)_disconnectFromDaemonWithForce:(BOOL)arg1;
- (void)disconnectFromDaemonWithForce:(BOOL)arg1;
- (void)killDaemon;
- (void)_blockUntilSendQueueIsEmpty;
- (BOOL)_makeConnectionWithLaunch:(BOOL)arg1 completionBlock:(CDUnknownBlockType)arg2;
- (void)_handleDaemonException:(id)arg1;
- (void)_agentDidLaunchNotification:(id)arg1;
- (void)dealloc;
- (void)_handleReceivedQOSClassWhileServicingRequestsNotification:(id)arg1;
- (void)requestQOSClassOfAgentWhileServicingRequests:(CDUnknownBlockType)arg1;
- (id)init;

@end

@interface IMAutomation : NSObject
{
}

- (id)startConversationFrom:(id)arg1 andReceiveAt:(id)arg2;
- (id)IMCoreAutomationPerformOperationWithDictionary:(id)arg1;
- (id)callIMCoreMethodWithDictionary:(id)arg1;
- (_Bool)checkArgumentValidity:(id)arg1 forExpectedNumberOfArguments:(int)arg2;

@end


@interface IMAccountController : NSObject
{
    NSMutableDictionary *_accountMap;
    BOOL _isReadOnly;
    BOOL _cachesEnabled;
    NSArray *_operationalAccountsCache;
    NSMutableDictionary *_serviceToActiveAccountsMap;
    NSMutableDictionary *_serviceToAccountsMap;
    NSMutableDictionary *_serviceToConnectedAccountsMap;
    NSMutableDictionary *_serviceToOperationalAccountsMap;
    NSArray *_accounts;
}

+ (id)bestAccountFromAccounts:(id)arg1;
+ (id)sharedInstance;
@property(copy) NSArray *accounts; // @synthesize accounts=_accounts;

- (void)_rebuildOperationalAccountsCache:(BOOL)arg1;
- (void)_disableCache;
- (void)_enableCache;
- (id)jabberAccount;
- (id)aimAccount;
- (id)mostLoggedInAccount;
- (id)bestAccountWithCapability:(unsigned long long)arg1;
- (id)bestConnectedAccountForService:(id)arg1;
- (id)bestActiveAccountForService:(id)arg1;
- (id)bestOperationalAccountForService:(id)arg1;
- (id)bestAccountForService:(id)arg1;
- (id)bestConnectedAccountForService:(id)arg1 withLogin:(id)arg2;
- (id)bestActiveAccountForService:(id)arg1 withLogin:(id)arg2;
- (id)bestOperationalAccountForService:(id)arg1 withLogin:(id)arg2;
- (id)bestAccountForService:(id)arg1 withLogin:(id)arg2;
- (id)bestAccountForService:(id)arg1 login:(id)arg2 guid:(id)arg3;
- (id)activeAccountsSupportingStatus;
@property(readonly, nonatomic) id bestAccountForStatus;
- (BOOL)canActivateAccounts:(id)arg1;
- (BOOL)canActivateAccount:(id)arg1;
- (BOOL)accountConnected:(id)arg1;
- (BOOL)accountConnecting:(id)arg1;
- (BOOL)activateAndHandleReconnectAccount:(id)arg1;
- (BOOL)activateAndHandleReconnectAccounts:(id)arg1;
- (BOOL)activateAccount:(id)arg1 force:(BOOL)arg2 locally:(BOOL)arg3;
- (BOOL)activateAccount:(id)arg1 force:(BOOL)arg2;
- (BOOL)activateAccount:(id)arg1;
- (BOOL)activateAccount:(id)arg1 locally:(BOOL)arg2;
- (BOOL)activateAccounts:(id)arg1;
- (BOOL)activateAccounts:(id)arg1 force:(BOOL)arg2 locally:(BOOL)arg3;
- (BOOL)deactivateAccount:(id)arg1 withDisable:(BOOL)arg2;
- (BOOL)deactivateAccounts:(id)arg1;
- (BOOL)_deactivateAccounts:(id)arg1;
- (BOOL)deactivateAccount:(id)arg1;
- (BOOL)_deactivateAccount:(id)arg1;
- (BOOL)deactivateAccounts:(id)arg1 withDisable:(BOOL)arg2;
- (BOOL)deleteAccount:(id)arg1 locally:(BOOL)arg2;
- (BOOL)deleteAccount:(id)arg1;
- (BOOL)addAccount:(id)arg1 locally:(BOOL)arg2;
- (BOOL)addAccount:(id)arg1 atIndex:(int)arg2 locally:(BOOL)arg3;
- (BOOL)addAccount:(id)arg1 atIndex:(int)arg2;
- (BOOL)addAccount:(id)arg1;
- (void)_accountRegistrationStatusChanged:(id)arg1;
- (void)_activeAccountChanged:(id)arg1;
- (void)setReadOnly:(BOOL)arg1;
- (BOOL)readOnly;
- (BOOL)accountActive:(id)arg1;
- (BOOL)canDeleteAccount:(id)arg1;
- (id)connectedAccountsWithCapability:(unsigned long long)arg1;
- (id)operationalAccountsWithCapability:(unsigned long long)arg1;
- (id)accountsWithCapability:(unsigned long long)arg1;
- (id)connectedAccountsForService:(id)arg1;
- (id)operationalAccountsForService:(id)arg1;
- (id)activeAccountsForService:(id)arg1;
- (id)accountsForService:(id)arg1;
@property(readonly, nonatomic) NSArray *operationalAccounts;
@property(readonly, nonatomic) NSArray *connectedAccounts;
@property(readonly, nonatomic) NSArray *activeAccounts;
@property(readonly, nonatomic) int numberOfAccounts;
- (id)accountAtIndex:(int)arg1;
- (id)accountForUniqueID:(id)arg1;
- (void)dealloc;
- (id)init;
- (void)autoLogin;
@property(readonly, nonatomic) IMAccount *activeSMSAccount;
@property(readonly, nonatomic) IMAccount *activeIMessageAccount;
- (id)_bestOperationalAccountForSendingForService:(id)arg1;
- (id)__iCloudSystemAccountForService:(id)arg1;
- (id)_bestAccountForAddresses:(id)arg1;
- (id)_operationalPhoneAccountForService:(id)arg1;

@end

@interface IMMessageAcknowledgmentStringHelper : NSObject
{
}

+ (id)generateBackwardCompatibilityStringForMessageAcknowledgmentType:(long long)arg1 messageSummaryInfo:(id)arg2;
+ (id)generateBackwardCompatibilityStringForMessageAcknowledgmentType:(long long)arg1 messageSummaryInfo:(id)arg2 isGroupMessage:(BOOL)arg3;
+ (id)generateBackwardCompatibilityFormatStringForMessageAcknowledgmentType:(long long)arg1 messageSummaryInfo:(id)arg2 format:(long long *)arg3;
+ (id)generatePreviewStringForMessageAcknowledgmentType:(long long)arg1 acknowledgmentSenderAddress:(id)arg2 messageSummaryInfo:(id)arg3;
+ (id)generatePreviewStringForMessageAcknowledgmentType:(long long)arg1 acknowledgmentSenderAddress:(id)arg2 messageSummaryInfo:(id)arg3 isGroupMessage:(BOOL)arg4;
+ (id)generateFormatStringForMessageAcknowledgmentType:(long long)arg1 acknowledgmentSenderAddress:(id)arg2 messageSummaryInfo:(id)arg3 format:(long long *)arg4;
+ (id)displayNameForAddress:(id)arg1;
+ (BOOL)isLoginAddress:(id)arg1;
+ (id)handleForAddress:(id)arg1;
+ (id)bestAccountForAddress:(id)arg1;
+ (id)longContentTypeStringForContentType:(id)arg1;
+ (id)longContentTypeStringForPluginBundleID:(id)arg1 pluginDisplayName:(id)arg2;
+ (BOOL)shouldQuoteContentString:(id)arg1;
+ (id)messageAcknowledgmentString:(long long)arg1 lowercase:(BOOL)arg2;

@end

@interface IMParentalControlsService : NSObject
{
    BOOL _disableService;
    BOOL _forceWhiteList;
    NSSet *_whitelist;
    NSString *_name;
}

@property(retain) NSString *name; // @synthesize name=_name;
@property(retain) NSSet *whitelist; // @synthesize whitelist=_whitelist;
@property BOOL forceWhiteList; // @synthesize forceWhiteList=_forceWhiteList;
@property BOOL disableService; // @synthesize disableService=_disableService;

- (void)dealloc;

@end

@interface IMParentalControls : NSObject
{
    BOOL _shouldPostNotifications;
    BOOL _active;
    BOOL _disableAV;
    BOOL _forceChatLogging;
    NSMutableDictionary *_parentalControls;
}

+ (id)standardControls;
+ (id)objectForKey:(id)arg1;
@property(readonly, nonatomic) BOOL _forceChatLogging; // @synthesize _forceChatLogging;
@property(readonly, nonatomic) BOOL _disableAV; // @synthesize _disableAV;
@property(readonly, nonatomic) NSMutableDictionary *_parentalControls; // @synthesize _parentalControls;
@property(readonly, nonatomic) BOOL active; // @synthesize active=_active;
@property(nonatomic) BOOL shouldPostNotifications; // @synthesize shouldPostNotifications=_shouldPostNotifications;

- (BOOL)accountHasWhitelist:(id)arg1;
- (BOOL)accountIsEnabled:(id)arg1;
- (BOOL)okToConnectAccount:(id)arg1;
- (BOOL)forceWhitelistForAccount:(id)arg1;
- (id)whitelistForAccount:(id)arg1;
- (BOOL)forceWhitelistForService:(id)arg1;
- (id)whitelistForService:(id)arg1;
- (BOOL)disableAccount:(id)arg1;
- (BOOL)disableService:(id)arg1;
@property(readonly, nonatomic) BOOL forceChatLogging;
@property(readonly, nonatomic) BOOL disableAV;
- (void)_managedPrefsNotification:(id)arg1;
- (void)_updateParentalSettings;
- (id)_serviceWithName:(id)arg1;
- (void)dealloc;
- (id)init;

@end

@interface IMFileTransferCenter : NSObject
{
    NSMutableDictionary *_guidToTransferMap;
    NSMutableDictionary *_guidToRemovedTransferMap;
    NSMutableDictionary *_accountIDToTransferGUIDsMap;
    NSMutableArray *_preauthorizedInfos;
    NSMutableArray *_preauthorizedGUIDs;
    NSMutableSet *_activeTransfers;
    NSMutableSet *_pendingTransfers;
    BOOL _disconnectionListenerSetUp;
    NSMutableDictionary *_fetchHighQualityVariantCompletionHandlers;
}

+ (Class)fileTransferClass;
+ (Class)transferCenterClass;
+ (void)setTransferCenterClass:(Class)arg1;
+ (id)sharedInstance;

- (void)preWarmConnection;
- (void)_daemonRestarted:(id)arg1;
- (void)_initiateHighQualityVariantDownloadWithDaemonForGUID:(id)arg1;
- (void)_fetchHighQualityVariantForTransferGUID:(id)arg1 completion:(CDUnknownBlockType)arg2;
- (void)fetchHighQualityVariantForTransfer:(id)arg1 completion:(CDUnknownBlockType)arg2;
- (id)guidsForStoredAttachmentPayloadData:(id)arg1 messageGUID:(id)arg2;
- (void)setAuxVideoForTransfer:(id)arg1 value:(BOOL)arg2;
- (void)setAuxImageForTransfer:(id)arg1 value:(BOOL)arg2;
- (void)_handleFileTransferHighQualityDownloadFailed:(id)arg1;
- (void)_handleFileTransfer:(id)arg1 highQualityDownloadSucceededWithPath:(id)arg2;
- (void)_handleFileTransfer:(id)arg1 updatedWithCurrentBytes:(unsigned long long)arg2 totalBytes:(unsigned long long)arg3 averageTransferRate:(unsigned long long)arg4;
- (void)_handleFileTransfer:(id)arg1 updatedWithProperties:(id)arg2;
- (void)_handleFileTransfers:(id)arg1 createdWithLocalPaths:(id)arg2;
- (void)_handleFileTransfer:(id)arg1 createdWithProperties:(id)arg2;
- (void)_handleAllFileTransfers:(id)arg1;
- (void)_handleStandaloneFileTransferRegistered:(id)arg1;
- (void)acceptFileTransferIfPreauthorzed:(id)arg1;
- (BOOL)wasFileTransferPreauthorized:(id)arg1;
- (void)preauthorizeFileTransferFromOtherPerson:(id)arg1 account:(id)arg2 filename:(id)arg3 saveToPath:(id)arg4;
- (BOOL)isFileTransfer:(id)arg1 preauthorizedWithDictionary:(id)arg2;
- (void)clearFinishedTransfers;
@property(readonly, nonatomic) NSArray *orderedTransfersGUIDs;
@property(readonly, nonatomic) __weak NSArray *orderedTransfers;
@property(readonly, nonatomic) NSArray *activeTransferGUIDs;
@property(readonly, nonatomic) __weak NSArray *activeTransfers;
@property(readonly, nonatomic) NSDictionary *transfers;
- (id)transfersForAccount:(id)arg1;
- (void)retargetTransfer:(id)arg1 toPath:(id)arg2;
- (void)deleteTransfer:(id)arg1;
- (void)removeTransfer:(id)arg1;
- (void)stopTransfer:(id)arg1;
- (void)acceptTransfer:(id)arg1;
- (void)acceptTransfer:(id)arg1 withPath:(id)arg2 autoRename:(BOOL)arg3 overwrite:(BOOL)arg4;
- (void)sendTransfer:(id)arg1;
- (id)transferForGUID:(id)arg1 includeRemoved:(BOOL)arg2;
- (id)transferForGUID:(id)arg1;
- (id)chatForTransfer:(id)arg1;
- (void)registerTransferWithDaemon:(id)arg1;
- (void)assignTransfer:(id)arg1 toHandle:(id)arg2;
- (void)assignTransfer:(id)arg1 toMessage:(id)arg2 account:(id)arg3;
- (void)_addSpotlightProperties:(id)arg1 sender:(id)arg2 recipients:(id)arg3 incoming:(BOOL)arg4;
- (BOOL)registerGUID:(id)arg1 forNewOutgoingTransferWithLocalURL:(id)arg2;
- (id)guidForNewOutgoingTransferWithLocalURL:(id)arg1;
- (BOOL)doesLocalURLRequireArchiving:(id)arg1 toHandle:(id)arg2;
- (void)_addTransfer:(id)arg1;
- (void)_addTransfer:(id)arg1 toAccount:(id)arg2;
- (void)_clearTransfers;
- (void)_removeAllActiveTransfers;
- (void)_removeActiveTransfer:(id)arg1;
- (void)_addActiveTransfer:(id)arg1;
@property(readonly, nonatomic) BOOL hasActiveFileTransfers;
- (void)acknowledgeAllPendingTransfers;
- (void)acknowledgePendingTransfer:(id)arg1;
- (void)_removePendingTransfer:(id)arg1;
- (void)_addPendingTransfer:(id)arg1;
@property(readonly, nonatomic) BOOL hasPendingFileTransfers;
- (void)dealloc;

@end

@interface IMServiceAgent : NSObject
{
    NSDictionary *_currentAVChatInfo;
}

+ (id)notificationCenter;
+ (void)forgetStatusImageAppearance;
+ (id)imageNameForStatus:(unsigned long long)arg1;
+ (id)imageURLForStatus:(unsigned long long)arg1;
+ (id)sharedAgent;
+ (long long)serviceAgentCapabilities;
+ (void)setServiceAgentCapabilities:(long long)arg1;

- (id)myPictureData;
- (void)launchIfNecessary;
@property(readonly, nonatomic) unsigned long long vcCapabilities;
- (unsigned long long)requestVideoStillForPerson:(id)arg1;
@property(readonly, nonatomic) unsigned long long requestAudioReflectorStop;
@property(readonly, nonatomic) unsigned long long requestAudioReflectorStart;
@property(readonly, nonatomic) __weak NSDictionary *currentAVChatInfo;
@property(retain, nonatomic) NSArray *myAwayMessages;
@property(retain, nonatomic) NSArray *myAvailableMessages;
- (void)setMyStatus:(unsigned long long)arg1 message:(id)arg2;
- (id)notificationCenter;
- (id)serviceWithNameNonBlocking:(id)arg1;
- (id)serviceWithName:(id)arg1;

@end



@interface IMServiceAgentImpl : IMServiceAgent
{
}

+ (id)imageURLForStatus:(unsigned long long)arg1;
+ (id)imageNameForStatus:(unsigned long long)arg1;
+ (void)_determineStatusImageAppearance;
+ (void)_statusImageAppearanceChanged:(id)arg1;
+ (void)forgetStatusImageAppearance;
+ (id)notificationCenter;
+ (void)initialize;
+ (id)sharedAgent;
- (unsigned long long)vcCapabilities;
- (void)vcCapabilitiesChanged:(unsigned long long)arg1;
- (void)setupComplete;
- (void)setMyAwayMessages:(id)arg1;
- (void)setMyAvailableMessages:(id)arg1;
- (id)myAwayMessages;
- (id)myAvailableMessages;
- (void)_customMessagesChanged:(id)arg1;
- (void)setMyStatus:(unsigned long long)arg1 message:(id)arg2;
- (void)_statusImageAppearanceChanged:(id)arg1;
- (id)notificationCenter;
- (id)serviceWithName:(id)arg1;
- (void)launchIfNecessary;
- (void)_daemonDisconnected:(id)arg1;
- (void)_daemonConnected:(id)arg1;
- (void)dealloc;
- (id)init;

@end



@interface IMAppExtensionContext : NSExtensionContext
{
}

@end


@interface IMHandleRegistrar : NSObject
{
    NSMutableDictionary *_siblingsMap;
    NSHashTable *_allIMHandles;
    BOOL _addressBookIsEmpty;
    // IMBusinessNameManager *_businessNameManager;
}

+ (id)sharedInstance;

- (id)businessNameForUID:(id)arg1 updateHandler:(CDUnknownBlockType)arg2;
- (id)_existingChatSiblingsForHandle:(id)arg1;
- (BOOL)_addressBookIsEmpty;
- (id)_chatSiblingsForHandle:(id)arg1;
- (id)_existingAccountSiblingsForHandle:(id)arg1;
- (id)_accountSiblingsForHandle:(id)arg1;
- (void)_dumpOutAllIMHandlesForAccount:(id)arg1;
- (void)_dumpOutAllIMHandles;
- (id)allIMHandles;
- (id)siblingsForIMHandle:(id)arg1;
- (void)clearSiblingCacheForIMHandle:(id)arg1;
- (void)unregisterIMHandle:(id)arg1;
- (void)registerIMHandle:(id)arg1;
- (void)_clearSiblingsCacheForIMHandle:(id)arg1 rebuildAfter:(BOOL)arg2;
- (void)_buildSiblingsForIMHandle:(id)arg1;
- (void)_emptySiblingCacheForIMHandleGUID:(id)arg1;
- (id)init;
- (void)_addressBookChanged:(id)arg1;

@end

@interface IMPeople : NSObject
{
    NSMutableArray *_people;
    int _coalesceCount;
    BOOL _hidePeople;
}

@property(nonatomic, setter=setShouldHidePeople:) BOOL hidePeople; // @synthesize hidePeople=_hidePeople;

- (void)imHandle:(id)arg1 buddyStatusChanged:(BOOL)arg2;
- (BOOL)addPeopleFromArray:(id)arg1;
- (BOOL)addPeopleFromArray:(id)arg1 skipMe:(BOOL)arg2;
- (BOOL)removePeopleFromArray:(id)arg1;
- (BOOL)removeIMHandle:(id)arg1;
- (BOOL)addIMHandle:(id)arg1;
@property(readonly, nonatomic) BOOL coalescingChanges;
- (void)endCoalescedChanges;
- (void)beginCoalescedChanges;
- (void)removedIMHandle:(id)arg1;
- (void)_addedPeople:(id)arg1;
- (void)addedIMHandle:(id)arg1;
@property(readonly, nonatomic) NSArray *people;
@property(readonly, nonatomic) NSArray *groups;
- (BOOL)containsIMHandle:(id)arg1;
@property(readonly, nonatomic) unsigned long long count;
- (void)addNotificationObserver:(id)arg1 selector:(SEL)arg2;
- (void)removeNotificationObserver:(id)arg1;
- (void)dealloc;

@end

@interface IMPeopleCollection : IMPeople
{
    NSMutableArray *_collectedPeople;
}

@property(retain, nonatomic) NSMutableArray *_collectedPeople; // @synthesize _collectedPeople;

- (BOOL)containsPerson:(id)arg1;
- (id)groups;
- (id)people;
- (void)_collectionNotification:(id)arg1;
- (void)removeIMPeople:(id)arg1;
- (void)addIMPeople:(id)arg1;
- (BOOL)collectsIMPeople:(id)arg1;
@property(readonly, nonatomic) NSArray *collectedIMPeople;
- (id)init;

@end


@interface IMCloudKitMockSyncState : NSObject
{
    BOOL _IMCloudKitSyncingEnabled;
    BOOL _IMCloudKitIsSyncing;
    BOOL _IMCloudKitSyncPaused;
    BOOL _IMCloudKitIsEligibleForTruthZone;
    BOOL _IMCloudKitIsInExitState;
    BOOL _IMCloudKitIsRemovedFromBackup;
    BOOL _IMCloudKitStartingPeriodicSync;
    BOOL _IMCloudKitStartingInitialSync;
    BOOL _IMCloudKitStartingDisableDevices;
    NSDate *_IMCloudKitSyncDate;
    long long _IMCloudKitStartingEnabledSettingChange;
    unsigned long long _IMCloudKitSyncControllerSyncState;
    long long _IMCloudKitSyncControllerSyncType;
    long long _IMCloudKitSyncControllerSyncRecordType;
    NSArray *_IMCloudKitSyncErrors;
}

@property(retain) NSArray *IMCloudKitSyncErrors; // @synthesize IMCloudKitSyncErrors=_IMCloudKitSyncErrors;
@property long long IMCloudKitSyncControllerSyncRecordType; // @synthesize IMCloudKitSyncControllerSyncRecordType=_IMCloudKitSyncControllerSyncRecordType;
@property long long IMCloudKitSyncControllerSyncType; // @synthesize IMCloudKitSyncControllerSyncType=_IMCloudKitSyncControllerSyncType;
@property unsigned long long IMCloudKitSyncControllerSyncState; // @synthesize IMCloudKitSyncControllerSyncState=_IMCloudKitSyncControllerSyncState;
@property BOOL IMCloudKitStartingDisableDevices; // @synthesize IMCloudKitStartingDisableDevices=_IMCloudKitStartingDisableDevices;
@property long long IMCloudKitStartingEnabledSettingChange; // @synthesize IMCloudKitStartingEnabledSettingChange=_IMCloudKitStartingEnabledSettingChange;
@property BOOL IMCloudKitStartingInitialSync; // @synthesize IMCloudKitStartingInitialSync=_IMCloudKitStartingInitialSync;
@property BOOL IMCloudKitStartingPeriodicSync; // @synthesize IMCloudKitStartingPeriodicSync=_IMCloudKitStartingPeriodicSync;
@property(retain) NSDate *IMCloudKitSyncDate; // @synthesize IMCloudKitSyncDate=_IMCloudKitSyncDate;
@property BOOL IMCloudKitIsRemovedFromBackup; // @synthesize IMCloudKitIsRemovedFromBackup=_IMCloudKitIsRemovedFromBackup;
@property BOOL IMCloudKitIsInExitState; // @synthesize IMCloudKitIsInExitState=_IMCloudKitIsInExitState;
@property BOOL IMCloudKitIsEligibleForTruthZone; // @synthesize IMCloudKitIsEligibleForTruthZone=_IMCloudKitIsEligibleForTruthZone;
@property BOOL IMCloudKitSyncPaused; // @synthesize IMCloudKitSyncPaused=_IMCloudKitSyncPaused;
@property BOOL IMCloudKitIsSyncing; // @synthesize IMCloudKitIsSyncing=_IMCloudKitIsSyncing;
@property BOOL IMCloudKitSyncingEnabled; // @synthesize IMCloudKitSyncingEnabled=_IMCloudKitSyncingEnabled;

- (id)convertToDictionary;

@end

@interface IMMe : NSObject
{
    IMPerson *_person;
    NSString *_abNickname;
    NSString *_abFirstName;
    NSString *_abFullName;
    NSString *_abLastName;
    NSArray *_abEmails;
    NSMutableArray *_abIMHandles;
    NSMutableArray *_loginIMHandles;
}

+ (id)imHandleForService:(id)arg1;
+ (id)me;
+ (id)fallbackUserName;

- (id)description;
- (void)myPictureChanged;
@property(readonly, nonatomic) NSArray *imHandles;
@property(readonly, nonatomic) IMHandle *bestIMHandle;
@property(readonly, nonatomic) NSString *fullName;
@property(readonly, nonatomic) NSString *lastName;
@property(readonly, nonatomic) NSString *email;
@property(readonly, nonatomic) NSArray *emails;
@property(readonly, nonatomic) NSString *firstName;
@property(readonly, nonatomic) NSString *nickname;
- (void)setFirstName:(id)arg1 lastName:(id)arg2;
- (BOOL)removeIMHandle:(id)arg1;
- (BOOL)isIMHandleLoginIMHandle:(id)arg1;
- (BOOL)addIMHandle:(id)arg1;
- (id)loginIMHandles;
- (BOOL)removeLoginIMHandle:(id)arg1;
- (BOOL)addLoginIMHandle:(id)arg1;
@property(readonly, nonatomic) IMPerson *person;
- (void)setIMPerson:(id)arg1;
- (void)resetABPerson;
- (void)rebuildIMHandles;
- (id)_imHandlesWithIDs:(id)arg1 onAccount:(id)arg2;
@property(readonly, nonatomic) NSString *guid;
- (id)init;

@end

@interface IMSendProgress : NSObject
{
    id <IMSendProgressDelegate> _delegate;
    id _context;
    NSTimer *_sendProgressTimer;
    NSDictionary *_sendingItems;
    float _cachedSendProgress;
    BOOL _wasShowing;
    BOOL _startSendProgressImmediately;
    id <IMSendProgressTimeDataSource> _timeDataSource;
}

+ (Class)_timeDataSourceClass;
@property(retain, nonatomic) id <IMSendProgressTimeDataSource> timeDataSource; // @synthesize timeDataSource=_timeDataSource;
@property(nonatomic) BOOL startSendProgressImmediately; // @synthesize startSendProgressImmediately=_startSendProgressImmediately;
@property(copy, nonatomic) NSDictionary *sendingItems; // @synthesize sendingItems=_sendingItems;
@property(nonatomic) __weak id context; // @synthesize context=_context;
@property(nonatomic) __weak id <IMSendProgressDelegate> delegate; // @synthesize delegate=_delegate;

- (void)_sendProgressTimerFired:(id)arg1;
- (void)_scheduleSendProgressTimerIfNeeded;
- (void)_updateSendProgress;
- (void)_resetSendProgress;
- (BOOL)_hasSendingMessages;
- (void)invalidate;
- (void)updateForItems:(id)arg1 forced:(BOOL)arg2;
- (id)initWithDelegate:(id)arg1 context:(id)arg2;
- (id)description;
- (void)dealloc;

@end

@interface IMSendProgressRealTimeDataSource : NSObject <IMSendProgressTimeDataSource>
{
}

@property(readonly) double timeIntervalSinceReferenceDate;

@end

@interface IMSimulatedDaemonController : IMDaemonController
{
    NSArray *_listeners;
}

+ (id)dictionaryForChat:(id)arg1;
+ (void)beginSimulatingDaemon;
+ (id)sharedInstance;
@property(retain, nonatomic) NSArray *listeners; // @synthesize listeners=_listeners;

- (unsigned int)capabilitiesForListenerID:(id)arg1;
- (BOOL)isConnected;
- (BOOL)connectToDaemonWithLaunch:(BOOL)arg1;
- (BOOL)connectToDaemonWithLaunch:(BOOL)arg1 capabilities:(unsigned int)arg2 blockUntilConnected:(BOOL)arg3;
- (void)sendBalloonPayload:(id)arg1 attachments:(id)arg2 withMessageGUID:(id)arg3 bundleID:(id)arg4;

@end

/*
@interface IMLocationManager : NSObject <CLLocationManagerDelegate, IMLocationManager>
{
    CLLocationManager *_locationManager;
    NSMutableArray *_handlers;
    NSTimer *_timeoutHandler;
    CLLocation *_location;
    NSError *_error;
    NSDate *_locateStartTime;
    NSTimer *_locationUpdateTimer;
}

+ (Class)__CLLocationManagerClass;
+ (id)sharedInstance;
@property(retain, nonatomic) CLLocation *location; // @synthesize location=_location;
@property(retain, nonatomic) NSTimer *locationUpdateTimer; // @synthesize locationUpdateTimer=_locationUpdateTimer;
@property(retain, nonatomic) NSDate *locateStartTime; // @synthesize locateStartTime=_locateStartTime;
@property(retain, nonatomic) NSError *error; // @synthesize error=_error;
@property(retain, nonatomic) CLLocationManager *locationManager; // @synthesize locationManager=_locationManager;
@property(retain, nonatomic) NSMutableArray *handlers; // @synthesize handlers=_handlers;

- (void)_fireCompletionHandlers;
- (void)_locationManagerTimedOut;
- (void)_locationUpdateTimerFired:(id)arg1;
- (BOOL)_shouldSendLocation:(id)arg1 timeIntervalSinceStart:(double)arg2;
- (void)locationManager:(id)arg1 didFailWithError:(id)arg2;
- (void)locationManager:(id)arg1 didUpdateLocations:(id)arg2;
@property(readonly, nonatomic) BOOL locationAuthorizationDenied;
- (void)startUpdatingCurrentLocationWithHandler:(CDUnknownBlockType)arg1;
- (id)init;
- (void)dealloc;

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

@end
 
 */

@interface IMAutomationBatchMessageOperations : NSObject
{
}

- (id)stopRecordingDatabaseError:(id *)arg1;
- (id)beginRecordingMessagesToReplayDatabase:(id)arg1 error:(id *)arg2;
- (id)sendMessagesfromReplayDatabase:(id)arg1 userInfo:(id)arg2 error:(id *)arg3;

@end

@interface IMAttachment : NSObject
{
    NSString *_guid;
    NSString *_path;
    BOOL _isSticker;
    BOOL _isTransferComplete;
    NSDate *_createdDate;
}


- (id)fileTransfer;
- (BOOL)isTransferComplete;
- (BOOL)isSticker;
- (id)createdDate;
- (id)path;
- (id)guid;
- (id)description;
- (id)initWithPath:(id)arg1 guid:(id)arg2 createdDate:(id)arg3 isSticker:(BOOL)arg4 isTransferComplete:(BOOL)arg5;
- (id)initWithPath:(id)arg1 guid:(id)arg2;

@end

@interface IMPerson : NSObject
{
    BOOL _registered;
//    ABPerson *_abPerson;
//    ABAddressBook *_customBook;
    NSString *_uniqueID;
    NSString *_cachedFirstName;
    NSString *_cachedLastName;
    NSString *_cachedFullName;
    NSString *_cachedCompanyName;
    NSString *_cachedNickName;
//    CNContact *_cnContact;
}

+ (void)_setCachedQueriesEnabled:(BOOL)arg1;
+ (id)_initialABPropertyLabelForProperty:(id)arg1;
+ (id)personWithABPerson:(id)arg1;
+ (BOOL)shouldPurgeCacheForIMPerson:(id)arg1;
+ (id)existingABPeopleWithInstantMessageAddress:(id)arg1 onServices:(id)arg2 allowSubstringMatch:(BOOL)arg3;
+ (id)existingABPersonWithInstantMessageAddress:(id)arg1 onServices:(id)arg2 allowSubstringMatch:(BOOL)arg3;
+ (id)existingABPersonWithFirstName:(id)arg1 andLastName:(id)arg2 andNickName:(id)arg3 orEmail:(id)arg4 orNumber:(id)arg5;
+ (id)existingABPersonWithFirstName:(id)arg1 andLastName:(id)arg2 andNickName:(id)arg3 orEmail:(id)arg4 orNumber:(id)arg5 countryCode:(id)arg6 identifier:(int *)arg7;
+ (id)existingABPersonWithFirstName:(id)arg1 andLastName:(id)arg2 andNickName:(id)arg3 orEmail:(id)arg4 orNumber:(id)arg5 identifier:(int *)arg6;
+ (id)existingABPersonWithFirstName:(id)arg1 andLastName:(id)arg2 orEmail:(id)arg3 orNumber:(id)arg4;
+ (id)existingABPersonForPerson:(id)arg1;
+ (id)existingABPersonWithFirstName:(id)arg1 andLastName:(id)arg2 orEmail:(id)arg3;
+ (id)existingABPersonWithFirstName:(id)arg1 lastName:(id)arg2;
+ (id)allPeople;
//@property(retain, nonatomic) CNContact *cnContact; // @synthesize cnContact=_cnContact;
@property(readonly, nonatomic) BOOL _registered; // @synthesize _registered;
@property(retain, nonatomic) NSString *cachedNickName; // @synthesize cachedNickName=_cachedNickName;
@property(retain, nonatomic) NSString *cachedCompanyName; // @synthesize cachedCompanyName=_cachedCompanyName;
@property(retain, nonatomic) NSString *cachedFullName; // @synthesize cachedFullName=_cachedFullName;
@property(retain, nonatomic) NSString *cachedLastName; // @synthesize cachedLastName=_cachedLastName;
@property(retain, nonatomic) NSString *cachedFirstName; // @synthesize cachedFirstName=_cachedFirstName;
@property(retain, nonatomic, setter=_setUniqueID:) NSString *uniqueID; // @synthesize uniqueID=_uniqueID;
//@property(retain, nonatomic, setter=_setCustomBook:) ABAddressBook *_customBook; // @synthesize _customBook;
//@property(readonly, nonatomic) ABPerson *_abPerson; // @synthesize _abPerson;

- (unsigned long long)hash;
@property(readonly, nonatomic) unsigned long long status;
@property(readonly, nonatomic) NSData *imageDataWithoutLoading;
@property(retain, nonatomic) NSData *imageData;
- (void)_abPersonChanged:(id)arg1;
@property(readonly, nonatomic) NSArray *groups;
- (id)description;
- (BOOL)isEqual:(id)arg1;
- (BOOL)isEqualToIMPerson:(id)arg1;
- (BOOL)containsHandle:(id)arg1 forServiceProperty:(id)arg2;
- (void)appendID:(id)arg1 toProperty:(id)arg2;
- (void)save;
@property(readonly, nonatomic) NSArray *mobileNumbers;
@property(retain, nonatomic) NSArray *phoneNumbers;
- (id)allHandlesForProperty:(id)arg1;
- (void)setValues:(id)arg1 forProperty:(id)arg2;
- (void)setValues:(id)arg1 forIMProperty:(id)arg2;
- (id)valuesForProperty:(id)arg1;
- (id)_valuesAndLabelsForProperty:(id)arg1;
- (id)valuesForIMProperty:(id)arg1;
@property(readonly, nonatomic) BOOL isInAddressBook;
@property(copy, nonatomic) NSArray *emails;
@property(readonly, nonatomic) NSArray *allEmails;
- (id)emailHandlesForService:(id)arg1;
- (id)emailHandlesForService:(id)arg1 includeBaseEmail:(BOOL)arg2;
- (void)setFirstName:(id)arg1 lastName:(id)arg2;
@property(copy, nonatomic) NSString *lastName;
@property(copy, nonatomic) NSString *firstName;
@property(readonly, nonatomic) NSString *fullName;
@property(copy, nonatomic) NSString *nickname;
@property(readonly, nonatomic) NSString *name;
@property(readonly, nonatomic) NSString *displayName;
@property(readonly, nonatomic) NSString *abbreviatedName;
@property(readonly, nonatomic) NSString *companyName;
@property(readonly, nonatomic) BOOL isCompany;
- (void)dealloc;
@property(readonly, copy, nonatomic) NSString *cnContactID;
//@property(readonly, nonatomic) ABPerson *abPerson;
- (id)initWithABPerson:(id)arg1;
- (id)init;
- (id)idsAddresses;

@end

@interface IMSimulatedAccount : IMAccount
{
    IMHandle *_loginHandle;
}

@property(retain, nonatomic) IMHandle *loginHandle; // @synthesize loginHandle=_loginHandle;

- (BOOL)isConnected;
- (BOOL)isOperational;
- (BOOL)supportsRegistration;
- (id)loginIMHandle;

@end

@class IMChatRegistry;
@interface IMChat : IMItemsController <INSpeakable, IMSendProgressDelegate>
{
    NSString *_guid;
    NSString *_typingGUID;
    NSString *_localUserIsComposing;
    NSString *_currentLocationGUID;
    NSString *_identifier;
    IMAccount *_account;
    NSString *_displayName;
    NSString *_roomName;
    NSString *_roomNameWithoutSuffix;
    NSString *_lastAddressedHandleID;
    NSString *_lastAddressedSIMID;
    NSString *_groupID;
    NSData *_engramID;
    NSArray *_participants;
    NSMutableDictionary *_participantStates;
    IMMessage *_invitationForPendingParticipants;
    NSMutableArray *_messagesPendingJoin;
    NSMutableSet *_guids;
    NSMutableDictionary *_chatProperties;
    NSMutableDictionary *_participantProperties;
    NSArray *_frequentReplies;
    NSArray *_attachments;
    NSNumber *_countOfAttachmentsNotCachedLocally;
    NSNumber *_countOfMessagesMarkedAsSpam;
//    IMTimingCollection *_timingCollection;
    NSDate *_dateCreated;
    NSDate *_dateModified;
    unsigned long long _overallChatStatus;
    double _joinedTimeInterval;
//    id <IMChatItemRules> _chatItemRules;
//    IMScheduledUpdater *_chatItemsUpdater;
    IMSendProgress *_sendProgress;
    BOOL _downgradeState;
//    IMScheduledUpdater *_downgradeStateUpdater;
    long long _joinState;
    unsigned char _style;
    unsigned long long _dbFailedCount;
    unsigned long long _dbUnreadCount;
    void *_context;
    unsigned int _hasBeenConfigured:1;
    unsigned int _isFirstMessageInvitation:1;
    unsigned int _wasInvitationHandled:1;
    unsigned int _didSendAFinishedMessage:1;
    unsigned int _hasPendingMarkRead:1;
    unsigned int _isUpdatingChatItems:1;
    unsigned int _ignoreDowngradeStatusUpdates:1;
    unsigned int _isFiltered:1;
    unsigned int _forceMMS:1;
    BOOL _hasRefreshedServiceForSending;
    BOOL _hasHadSuccessfulQuery;
    long long _lastMessageTimeStampOnLoad;
    unsigned int _shouldAnnouncePeopleJoin:1;
    NSString *_currentUnreadHistoryQuery;
    BOOL _hasEarlierMessagesToLoad;
    BOOL _hasMoreRecentMessagesToLoad;
    BOOL _isCurrentlyDownloadingPurgedAssets;
    BOOL _hasSurfRequest;
    NSString *_personCentricID;
    NSDictionary *_bizIntent;
    double _latestTypingIndicatorTimeInterval;
//    TUConversation *_conversation;
}

+ (Class)chatItemRulesClass;
+ (void)setChatItemRulesClass:(Class)arg1;
+ (void)_initializeFMF;
+ (void)moveVIPChatAtIndex:(long long)arg1 toIndex:(long long)arg2;
+ (void)updateVIPChatIdentifiers:(CDUnknownBlockType)arg1;
+ (CDUnknownBlockType)watermarkComparator;
+ (void)cleanWatermarkCache;
+ (void)removeGUIDInAttemptingListInScrutinyMode:(id)arg1;
+ (BOOL)isGUIDInAttemptingListInScrutinyMode:(id)arg1;
+ (void)storeGUIDInAttemptingListInScrutinyMode:(id)arg1;
+ (void)_removeGUID:(id)arg1 fromList:(id)arg2;
+ (void)_storeGUID:(id)arg1 forKey:(id)arg2;
+ (id)_GUIDsForKey:(id)arg1;
+ (id)__im_adjustMessageSummaryInfoForSending:(id)arg1;
//@property(readonly, nonatomic) TUConversation *conversation; // @synthesize conversation=_conversation;
@property(retain, nonatomic) NSString *lastAddressedSIMID; // @synthesize lastAddressedSIMID=_lastAddressedSIMID;
@property(nonatomic) double latestTypingIndicatorTimeInterval; // @synthesize latestTypingIndicatorTimeInterval=_latestTypingIndicatorTimeInterval;
@property(copy, nonatomic) NSDictionary *bizIntent; // @synthesize bizIntent=_bizIntent;
@property(readonly, nonatomic) long long lastMessageTimeStampOnLoad; // @synthesize lastMessageTimeStampOnLoad=_lastMessageTimeStampOnLoad;
@property(nonatomic) BOOL hasSurfRequest; // @synthesize hasSurfRequest=_hasSurfRequest;
@property(readonly, nonatomic) NSData *engramID; // @synthesize engramID=_engramID;
@property(retain, nonatomic) NSString *personCentricID; // @synthesize personCentricID=_personCentricID;
@property(retain, nonatomic) IMMessage *invitationForPendingParticipants; // @synthesize invitationForPendingParticipants=_invitationForPendingParticipants;
@property(readonly, nonatomic) long long joinState; // @synthesize joinState=_joinState;
@property(readonly, nonatomic) NSDate *dateModified; // @synthesize dateModified=_dateModified;
@property(readonly, nonatomic) NSDate *dateCreated; // @synthesize dateCreated=_dateCreated;
@property(retain, nonatomic) NSString *displayName; // @synthesize displayName=_displayName;
@property(readonly, nonatomic) NSString *roomName; // @synthesize roomName=_roomName;
@property(nonatomic) void *contextInfo; // @synthesize contextInfo=_context;
@property(readonly, nonatomic) unsigned char chatStyle; // @synthesize chatStyle=_style;
@property(readonly, nonatomic) NSArray *participants; // @synthesize participants=_participants;
@property(readonly, nonatomic) IMAccount *account; // @synthesize account=_account;
@property(readonly, nonatomic) NSString *guid; // @synthesize guid=_guid;
@property(retain, nonatomic, setter=_setGUIDs:) NSMutableSet *_guids; // @synthesize _guids;
@property(retain, nonatomic) NSString *groupID; // @synthesize groupID=_groupID;
@property(retain, nonatomic) NSString *lastAddressedHandleID; // @synthesize lastAddressedHandleID=_lastAddressedHandleID;
@property(retain, nonatomic) NSArray *frequentReplies; // @synthesize frequentReplies=_frequentReplies;

- (void)downloadPurgedAttachments;
- (void)sendProgress:(id)arg1 progressDidChange:(float)arg2 sendingMessages:(id)arg3 sendCount:(unsigned long long)arg4 totalCount:(unsigned long long)arg5 finished:(BOOL)arg6;
- (id)sendProgressDelegate;
- (void)setSendProgressDelegate:(id)arg1;
- (id)_initWithDictionaryRepresentation:(id)arg1 items:(id)arg2 participantsHint:(id)arg3 accountHint:(id)arg4;
- (BOOL)hasStoredMessageWithGUID:(id)arg1;
@property(readonly, copy) NSString *description;
- (void)_daemonDied:(id)arg1;
- (void)_daemonAlive:(id)arg1;
- (void)_accountControllerUpdated:(id)arg1;
- (BOOL)_sanityCheckAccounts;
- (void)_handleAddressBookChangeForRecipientUID:(id)arg1;
- (void)addPendingParticipants:(id)arg1;
- (void)_removeParticipantsFromChat:(id)arg1 reason:(id)arg2 fromiMessageChat:(BOOL)arg3;
- (void)removeParticipantsFromiMessageChat:(id)arg1 reason:(id)arg2;
- (void)removeParticipants:(id)arg1 reason:(id)arg2;
- (void)_inviteParticipantsToChat:(id)arg1 reason:(id)arg2 toiMessageChat:(BOOL)arg3;
- (void)inviteParticipantsToiMessageChat:(id)arg1 reason:(id)arg2;
- (void)inviteParticipants:(id)arg1 reason:(id)arg2;
- (void)_invitePendingParticipants;
- (void)_inviteParticipants:(id)arg1 reason:(id)arg2 toiMessageChat:(BOOL)arg3;
- (id)_pendingParticipants;
- (BOOL)canAddParticipants:(id)arg1;
- (BOOL)canAddParticipant:(id)arg1;
@property(readonly, nonatomic) BOOL canLeaveChat;
- (void)_addParticipants:(id)arg1 withState:(unsigned long long)arg2;
- (void)archive;
- (void)remove;
- (void)_leaveChat:(BOOL)arg1;
- (void)leave;
- (void)leaveiMessageGroup;
- (void)join;
@property(retain, nonatomic) IMHandle *recipient;
- (void)setRecipient:(id)arg1 locally:(BOOL)arg2;
- (void)_setAccount:(id)arg1 locally:(BOOL)arg2;
- (void)_setAccount:(id)arg1;
- (BOOL)_hasCommunicatedOnService:(id)arg1;
- (void)setValue:(id)arg1 forProperty:(id)arg2 ofParticipant:(id)arg3;
- (id)valueForProperty:(id)arg1 ofParticipant:(id)arg2;
- (id)allPropertiesOfParticipant:(id)arg1;
- (void)userToggledReadReceiptSwitch:(BOOL)arg1;
- (void)setValue:(id)arg1 forChatProperty:(id)arg2;
- (id)valueForChatProperty:(id)arg1;
- (id)allChatProperties;
- (void)_setChatProperties:(id)arg1;
- (BOOL)_isDuplicate:(id)arg1;
- (void)markAllMessagesAsRead;
- (void)markMessagesAsRead:(id)arg1;
- (void)markMessageAsRead:(id)arg1;
- (void)_setTimerForReadMessageCache;
- (void)__clearReadMessageCache;
- (void)updateMessage:(id)arg1 flags:(unsigned long long)arg2;
- (void)updateMessage:(id)arg1;
- (BOOL)authorizedToSendCurrentLocationMessage;
- (BOOL)canSendCurrentLocationMessage;
- (BOOL)canSendTransfer:(id)arg1;
- (BOOL)canSendMessage:(id)arg1;
@property(nonatomic) BOOL localUserIsRecording;
@property(nonatomic) BOOL localUserIsTyping;
@property(retain, nonatomic) NSString *localUserIsComposing;
- (void)setLocalUserIsComposing:(id)arg1 typingIndicatorData:(id)arg2;
- (void)_setLocalUserIsComposing:(id)arg1 suppliedGUID:(id)arg2 typingIndicatorData:(id)arg3;
- (void)_setLocalUserIsComposing:(id)arg1 suppliedGUID:(id)arg2;
- (BOOL)_shouldSendCancelTypingIndicator;
@property(readonly, nonatomic) NSString *localTypingMessageGUID;
- (void)_sendCurrentLocationMessageUsingLocationManager:(id)arg1;
- (void)sendCurrentLocationMessage;
- (void)sendMessage:(id)arg1;
- (void)_fixItemForSendingMessageTime:(id)arg1;
- (void)_sendMessage:(id)arg1 adjustingSender:(BOOL)arg2 shouldQueue:(BOOL)arg3;
- (void)cancelMessage:(id)arg1;
- (void)declineInvitation;
- (void)acceptInvitation;
@property(readonly, nonatomic) BOOL hasUnhandledInvitation;
@property(readonly, nonatomic) NSString *roomNameWithoutSuffix;
@property(readonly, nonatomic) NSString *deviceIndependentID;
@property(readonly, nonatomic) NSString *persistentID;
- (void)_updateLastAddressedSIMID:(id)arg1;
- (void)_updateLastAddressedHandleID:(id)arg1;
- (void)_updateEngramID:(id)arg1;
- (void)_updateDisplayName:(id)arg1;
- (void)_setDisplayName:(id)arg1;
- (void)setRoomName:(id)arg1;
@property(readonly, nonatomic, getter=isGroupChat) BOOL groupChat;
@property(readonly, nonatomic) unsigned long long overallChatStatus;
@property(readonly, nonatomic) BOOL canHaveMultipleParticipants;
@property(readonly, nonatomic) NSString *chatIdentifier;
- (void)_clearCachedIdentifier;
- (unsigned long long)stateForParticipant:(id)arg1;
- (id)participantsWithState:(unsigned long long)arg1;
- (void)_engroupParticipantsUpdated;
- (void)_handleAttributionChanged;
- (void)beginListeningToAttributionChanges;
- (void)endListeningToAttributionChanges;
- (id)_performQueryWithKey:(id)arg1 loadImmediately:(BOOL)arg2 block:(CDUnknownBlockType)arg3;
- (id)_performQueryWithKey:(id)arg1 loadImmediately:(BOOL)arg2 block:(CDUnknownBlockType)arg3 completion:(CDUnknownBlockType)arg4;
- (void)_showErrorMessage:(id)arg1;
- (void)_participant:(id)arg1 statusChanged:(int)arg2;
- (void)_setJoinState:(long long)arg1 quietly:(BOOL)arg2;
- (void)_setJoinState:(long long)arg1;
- (BOOL)_handleIncomingItem:(id)arg1;
- (void)_fixSendingItemDateAndSortID:(id)arg1;
- (BOOL)hasSurfRequestNotFromMe:(id)arg1;
- (BOOL)hasSurfRequestForPaymentType:(unsigned long long)arg1;
- (unsigned long long)paymentTypeForMessage:(id)arg1;
- (void)_resetChatIdToLastMessageItemMap;
- (void)_handleMessageGUIDDeletions:(id)arg1;
- (void)_setParticipantState:(unsigned long long)arg1 forHandles:(id)arg2 quietly:(BOOL)arg3;
- (void)_setParticipantState:(unsigned long long)arg1 forHandle:(id)arg2 quietly:(BOOL)arg3;
- (void)_postIMChatItemsDidChangeNotificationWithInserted:(id)arg1 removed:(id)arg2 reload:(id)arg3 regenerate:(id)arg4 oldChatItems:(id)arg5 shouldLog:(BOOL)arg6;
- (void)_postNotification:(id)arg1 userInfo:(id)arg2 shouldLog:(BOOL)arg3;
- (void)_postNotification:(id)arg1 userInfo:(id)arg2;
- (void)_endTiming;
- (void)_startTiming:(id)arg1;
- (id)_timingCollection;
- (void)_accountLoggedOut:(id)arg1;
- (void)_unwatchHandleStatusChangedForHandle:(id)arg1;
- (void)_watchHandleStatusChangedForHandle:(id)arg1;
- (void)_handleHandleStatusChanged:(id)arg1;
- (void)_recomputeOverallChatStatusQuietly:(BOOL)arg1;
- (void)didUnregisterFromRegistry:(id)arg1;
- (void)clear;
@property(nonatomic) BOOL hasHadSuccessfulQuery;
- (long long)numberOfTimesRespondedToThread;
- (BOOL)containsMessageFromContactOrMe;
- (void)verifyChatShouldBeSMSSpam;
- (void)updateWasDetectedAsSMSSpam:(BOOL)arg1;
- (void)updateShouldForceToSMS:(BOOL)arg1;
- (BOOL)shouldForceToSMS;
- (BOOL)isSMS;
- (BOOL)hasKnownParticipants;
- (void)updateIsFiltered:(BOOL)arg1;
@property(nonatomic) BOOL isFiltered; // @dynamic isFiltered;
- (void)autoReportSpam;
- (void)markAsAutoSpamReported;
- (unsigned long long)markAsSpam;
- (BOOL)deleteAllHistory;
@property(readonly, nonatomic) unsigned long long messageFailureCount;
@property(readonly, nonatomic) unsigned long long unreadMessageCount;
@property(readonly, nonatomic) unsigned long long messageCount;
@property(readonly, nonatomic) long long lastFinishedMessageID;
@property(readonly, nonatomic) NSDate *lastSentMessageDate;
@property(readonly, nonatomic) IMMessage *lastSentMessage;
@property(readonly, nonatomic) NSDate *lastTUConversationCreatedDate;
@property(readonly, nonatomic) NSDate *lastFinishedMessageDate;
@property(readonly, nonatomic) BOOL lastMessageExists;
@property(readonly, nonatomic) IMMessage *lastMessage;
- (id)lastRelatedIncomingFinishedMessageTextContentWithLimit:(long long)arg1;
@property(readonly, nonatomic) IMMessage *lastIncomingFinishedMessageWithTextContent;
@property(readonly, nonatomic) IMMessage *lastIncomingFinishedMessage;
@property(readonly, nonatomic) IMMessage *lastIncomingMessage;
@property(readonly, nonatomic) IMMessageItem *lastFinishedMessageItem;
@property(readonly, nonatomic) IMMessage *lastFinishedMessage;
@property(readonly, nonatomic) IMMessage *firstMessage;
- (id)messageForGUID:(id)arg1;
- (id)_lastFinishedMessage;
- (id)_appendArchivedItemsToItemsArray:(id)arg1;
- (id)_archivedItemsToReplace:(id)arg1 numberOfMessagesBeforeGUID:(unsigned long long)arg2 numberOfMessagesAfterGUID:(unsigned long long)arg3;
- (void)_insertHistoricalMessages:(id)arg1 queryID:(id)arg2 isRefresh:(BOOL)arg3 isHistoryQuery:(BOOL)arg4 limit:(unsigned long long)arg5 numberOfMessagesBeforeGUID:(unsigned long long)arg6 numberOfMessagesAfterGUID:(unsigned long long)arg7;
- (void)_insertHistoricalMessages:(id)arg1 queryID:(id)arg2 isRefresh:(BOOL)arg3 isHistoryQuery:(BOOL)arg4 limit:(unsigned long long)arg5;
- (void)_insertHistoricalMessages:(id)arg1 queryID:(id)arg2 isRefresh:(BOOL)arg3 isHistoryQuery:(BOOL)arg4;
- (BOOL)_shouldAnnouncePeopleJoin;
- (void)_setDBFailedCount:(unsigned long long)arg1;
- (void)_setDBUnreadCount:(unsigned long long)arg1 postNotification:(BOOL)arg2;
- (void)_setDBUnreadCount:(unsigned long long)arg1;
- (void)_clearUnreadCount;
@property(readonly, nonatomic) BOOL _shouldRegisterChat;
- (void)_itemsDidChange:(id)arg1;
- (id)_initWithItems:(id)arg1;
- (void)dealloc;
- (id)init;
- (void)_initialize;
- (id)_initWithGUID:(id)arg1 account:(id)arg2 style:(unsigned char)arg3 roomName:(id)arg4 displayName:(id)arg5 lastAddressedHandle:(id)arg6 lastAddressedSIMID:(id)arg7 items:(id)arg8 participants:(id)arg9 isFiltered:(BOOL)arg10 hasHadSuccessfulQuery:(BOOL)arg11;
- (void)_setupObservation;
@property(readonly) NSArray *alternativeSpeakableMatches;
@property(readonly) NSString *vocabularyIdentifier;
@property(readonly) NSString *pronunciationHint;
@property(readonly) NSString *spokenPhrase;
- (long long)_compareChat:(id)arg1 withDate:(id)arg2 withDate:(id)arg3;
- (id)_tuDateForChat:(id)arg1;
- (long long)compareChatByTUDateAndLastFinishedMessageDate:(id)arg1;
- (long long)compareChatByDate:(id)arg1;
- (BOOL)_hasJustSentAMessage;
- (void)verifyFiltering;
- (void)saveWatermark;
- (void)updateWatermarks;
@property(getter=isVIP) BOOL VIP;
@property(readonly, copy) NSDate *watermarkDate;
@property(readonly) long long watermarkMessageID;
- (id)_storedWatermarkMessageID;
- (id)_privateInitWithAccount:(id)arg1 style:(unsigned char)arg2 roomName:(id)arg3 messages:(id)arg4 participants:(id)arg5 isFiltered:(BOOL)arg6 hasHadSuccessfulQuery:(BOOL)arg7;
- (void)deleteTransfers:(id)arg1;
@property(readonly, copy, nonatomic) NSArray *attachments;
@property(readonly, nonatomic) BOOL isCurrentlyDownloadingPurgedAttachments;
@property(readonly, copy, nonatomic) NSNumber *countOfAttachmentsNotCachedLocally;
- (void)loadAttachments:(CDUnknownBlockType)arg1;
- (void)_setIsDownloadingPurgedAssets:(BOOL)arg1;
- (void)_setCountOfAttachmentsNotCachedLocally:(id)arg1;
- (void)_setCountOfMessagesMarkedAsSpam:(id)arg1;
- (void)_setAttachments:(id)arg1;
- (id)loadUnreadMessagesWithLimit:(unsigned long long)arg1 fallbackToMessagesUpToGUID:(id)arg2;
- (id)loadFrequentRepliesLimit:(unsigned long long)arg1 loadImmediately:(BOOL)arg2;
- (id)loadMessagesBeforeAndAfterGUID:(id)arg1 numberOfMessagesToLoadBeforeGUID:(unsigned long long)arg2 numberOfMessagesToLoadAfterGUID:(unsigned long long)arg3 loadImmediately:(BOOL)arg4;
- (id)loadMessagesBeforeAndAfterGUID:(id)arg1 numberOfMessagesToLoadBeforeGUID:(unsigned long long)arg2 numberOfMessagesToLoadAfterGUID:(unsigned long long)arg3 loadImmediately:(BOOL)arg4 threadIdentifier:(id)tid;
- (id)loadMessagesUpToGUID:(id)arg1 date:(id)arg2 limit:(unsigned long long)arg3 loadImmediately:(BOOL)arg4;
- (id)loadMessagesBeforeDate:(id)arg1 limit:(unsigned long long)arg2 loadImmediately:(BOOL)arg3;
- (id)loadMessagesBeforeDate:(id)arg1 limit:(unsigned long long)arg2;
- (id)loadMessagesUpToGUID:(id)arg1 limit:(unsigned long long)arg2;
@property(readonly, nonatomic) BOOL hasMoreRecentMessagesToLoad;
@property(readonly, nonatomic) BOOL hasMoreMessagesToLoad;
@property(nonatomic) unsigned long long numberOfMessagesToKeepLoaded;
- (id)messagesToReportAsSpamFromChatItems:(id)arg1;
- (id)allMessagesToReportAsSpam;
- (id)chatItemsForItems:(id)arg1;
- (id)chatItemsForMessages:(id)arg1;
- (void)clearScrutinyMode;
- (void)watermarkOutForScrutinyMode;
- (BOOL)isInScrutinyMode;
- (BOOL)_serverBagPreventsScrutinyMode;
- (unsigned long long)scrutinyModeAttemptCount;
- (void)watermarkInForScrutinyMode;
- (void)_setRenderingDataDictionary:(id)arg1;
- (id)_renderingDataDictionary;
- (void)markChatItemAsPlayedExpressiveSend:(id)arg1;
- (void)_markItemAsPlayed:(id)arg1;
- (void)markChatItemAsPlayed:(id)arg1;
- (void)markChatItemAsSaved:(id)arg1;
- (void)deleteChatItems:(id)arg1;
- (id)_getMessageChatItemMap:(id)arg1 withDeleteMap:(id)arg2 andAllChatItems:(id)arg3;
- (id)_getDeleteChatItemMap:(id)arg1;
- (void)_replaceStaleChatItems;
- (void)_updateChatItemsWithReason:(id)arg1 block:(CDUnknownBlockType)arg2 shouldPost:(BOOL)arg3;
- (void)_updateChatItemsWithReason:(id)arg1 block:(CDUnknownBlockType)arg2;
- (void)_updateChatItems;
- (void)updateChatItemsIfNeeded;
- (void)endHoldingUpdatesForAllKeys;
- (BOOL)isHoldingUpdatesForKey:(id)arg1;
- (void)endHoldingUpdatesForKey:(id)arg1;
- (void)beginHoldingUpdatesForKey:(id)arg1;
- (id)chatItems;
- (void)_updateLocationShareItemsForSender:(id)arg1;
- (void)_configureLocationShareItem:(id)arg1;
- (void)stopTrackingParticipantLocations;
- (void)startTrackingParticipantLocations;
- (void)stopSharingLocation;
- (void)shareLocationUntilDate:(id)arg1;
@property(readonly, nonatomic) BOOL allRecipientsSharingLocation;
@property(readonly, nonatomic) BOOL hasSiblingRecipientsSharingLocation;
@property(readonly, nonatomic) BOOL hasRecipientsSharingLocation;
@property(readonly, nonatomic) BOOL allRecipientsFollowingLocation;
@property(readonly, nonatomic) BOOL hasRecipientsFollowingLocation;
@property(readonly, nonatomic) NSSet *allSiblingFMFHandles;
- (void)markAllLocationShareItemsAsUnactionable;
@property(readonly, nonatomic) NSSet *fmfHandles;
@property(readonly, nonatomic) IMChatRegistry *chatRegistry;
- (id)testChatItems;
- (BOOL)canEditChatItem:(id)arg1;
- (void)initiateTUConversationWithVideoEnabled:(BOOL)arg1;
- (void)joinExistingTUConversationWithVideoEnabled:(BOOL)arg1;
- (void)_launchAppForJoinRequest:(id)arg1;
- (BOOL)mapsToTUConversation:(id)arg1;
- (id)messageAcknowledgmentSummaryForConversationListWithMessage:(id)arg1;
- (void)sendMessageAcknowledgment:(long long)arg1 forChatItem:(id)arg2 withAssociatedMessageInfo:(id)arg3;
- (void)sendMessageAcknowledgment:(long long)arg1 forChatItem:(id)arg2 withMessageSummaryInfo:(id)arg3;
- (void)deleteExtensionPayloadData;
- (void)closeSession;
@property(readonly, nonatomic) BOOL isAppleChat;
@property(readonly, nonatomic) BOOL isMakoChat;
@property(readonly, nonatomic) BOOL isBusinessChat;
@property(readonly, nonatomic) BOOL isReplyEnabled;
//@property(readonly, nonatomic) MKMapItem *mapItem;
@property(nonatomic) BOOL forceMMS;
@property(readonly, nonatomic) BOOL suppressAccountRetargetingForNamedGroupConversation;
- (void)_calculateDowngradeState;
- (void)_setAndIncrementDowngradeMarkersForManual:(BOOL)arg1;
- (void)_clearDowngradeMarkers;
- (id)_consecutiveDowngradeAttemptsViaManualDowngrades:(BOOL)arg1;
- (void)_calculateDowngradeStateTimerFired;
- (void)_updateDowngradeState:(BOOL)arg1 checkAgainInterval:(double)arg2;
- (void)_invalidateDowngradeState;
- (BOOL)isDowngraded;
- (void)_targetToService:(id)arg1 newComposition:(BOOL)arg2;
- (void)_setPreviousAccount:(id)arg1 forService:(id)arg2;
- (id)_previousAccountForService:(id)arg1;
- (BOOL)_chatHasValidAccount:(id)arg1 forService:(id)arg2;
- (BOOL)_accountIsOperational:(id)arg1 forService:(id)arg2;
- (void)_delayedInvalidateDowngradeState;
- (void)_handleIncomingCommand:(id)arg1;
- (void)_handleDeliveredCommand:(id)arg1;
- (BOOL)sendDowngradeNotificationTo:(id)arg1;
- (void)sendDowngradePingForMessage:(id)arg1 manualDowngrade:(BOOL)arg2;
- (void)refreshServiceForSending;

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

@end

@interface IMItemChatContext : NSObject
{
    IMHandle *_senderHandle;
    IMHandle *_otherHandle;
}


- (void)dealloc;

@end

@interface IMMessageItemChatContext : IMItemChatContext
{
    IMMessage *_message;
    BOOL _invitation;
}


- (void)dealloc;

@end

@interface IMCloudKitHooks : NSObject
{
}

+ (id)logHandle;
+ (id)sharedInstance;
+ (void)__setSingleton__im:(id)arg1;
+ (id)__singleton__im;
- (BOOL)mocAccountsMatch;
- (void)reportMetricToCK:(id)arg1 withDict:(id)arg2;
- (void)reportMetricToCK:(id)arg1 withSuccess:(BOOL)arg2;
- (void)reportMetricToCK:(id)arg1;
- (void)broadcastCloudKitStateAfterClearingErrors;
- (void)broadcastCloudKitStateAfterFetchingAccountStatus;
- (void)broadcastCloudKitState;
- (void)tryToAutoCollectLogsWithErrorString:(id)arg1 sendLogsTo:(id)arg2;
- (void)fetchCloudKitSyncStateDebuggingInfo:(id)arg1;
- (id)syncStateDictionary;
- (void)syncDeletesToCloudKit;
- (void)printCachedRampState;
- (void)fetchLatestRampState;
- (void)writeCloudKitSyncCounts:(id)arg1;
- (void)fetchSyncStateStatistics;
- (void)updateAttachmentFileSizes;
- (void)purgeAttachments:(long long)arg1;
- (void)metricAttachments:(long long)arg1;
- (void)deleteSalt;
- (void)printCachedSalt;
- (void)fetchLatestSalt;
- (void)clearTombStoneMessagesTable;
- (void)loadDeletedMessagesWithLimit:(long long)arg1;
- (void)_updateCloudKitState;
- (void)_updateCloudKitStateWithDictionary:(id)arg1;
- (id)exitDate;
- (BOOL)isInExitState;
- (void)_didAttemptToDisableAllDevicesResult:(BOOL)arg1;
- (BOOL)isDisablingDevices;
- (void)_didPerformAdditionalStorageRequiredCheckWithSuccess:(BOOL)arg1 additionalStorageRequired:(unsigned long long)arg2 forAccountId:(id)arg3 error:(id)arg4;
- (long long)isChangingEnabledState;
- (void)_didAttemptToSetEnabledTo:(BOOL)arg1 result:(BOOL)arg2;
- (id)lastSyncDate;
- (BOOL)isSyncing;
- (BOOL)isStartingSync;
- (void)initiateSync;
- (void)_requestMOCEnabledReturned:(unsigned long long)arg1;
- (void)requestMOCEnabledState;
- (void)setShouldOptimizeAttachmentStorage:(BOOL)arg1;
- (BOOL)shouldOptimizeAttachmentStorage;
- (BOOL)eligibleForTruthZone;
- (BOOL)rampedIntoTruthZone;
- (BOOL)removedFromiCloudBackup;
- (void)tryToDisableAllDevices;
- (void)fetchSecurityLevelAndUpdateMiCSwitchEligibility;
- (void)performAdditionalStorageRequiredCheck;
- (void)setEnabled:(BOOL)arg1;
- (BOOL)isEnabled;
- (BOOL)shouldShowCloudKitUI;
- (void)sendRestoreFailuresLogDumps;
- (void)clearDataFromCloudKit;
- (void)clearLocalSyncState;
- (void)loadDirtyMessagesWithLimit:(long long)arg1;
- (void)initiatePeriodicSync;
- (void)downloadAttachmentAssets;
- (void)syncMessages;
- (void)deleteExitRecord;
- (void)fetchExitRecord;
- (void)writeExitRecord;
- (void)deleteMessagesZone;
- (void)writeDirtyMessages;
- (void)deleteAttachmentZone;
- (void)syncAttachments;
- (void)writeAttachments;
- (void)createAttachmentZone;
- (void)clearChatZoneSyncToken;
- (void)markAllChatsAsDirty;
- (void)syncChats;
- (void)deleteChatZone;
- (void)writeDirtyChats;
- (void)createChatZone;
- (void)setupIMCloudKitHooks;
- (void)clearAnalyticDefaultsAndLocalSyncState;
- (void)uploadDailyAnalyticstoCloudKit;
- (id)init;
- (id)logHandle;

@end

@interface IMBusinessNameManager : NSObject
{
    NSLock *_lock;
    NSMutableDictionary *_cache;
    NSMutableDictionary *_pendingRequests;
}

+ (id)sharedInstance;
@property(retain) NSMutableDictionary *pendingRequests; // @synthesize pendingRequests=_pendingRequests;
@property(retain) NSMutableDictionary *cache; // @synthesize cache=_cache;
@property(retain) NSLock *lock; // @synthesize lock=_lock;

- (id)businessNameForUID:(id)arg1 updateHandler:(CDUnknownBlockType)arg2;
- (id)init;

@end

typedef NS_ENUM(NSInteger, IMMessageDescriptionType) {
    IMMessageDescriptionAccessibility,
    IMMessageDescriptionAcknowledgement,
    IMMessageDescriptionConversationList,
    IMMessageDescriptionNotification,
    IMMessageDescriptionSiri,
    IMMessageDescriptionSPI,
};

typedef NS_ENUM(int64_t, IMAssociatedMessageType) {
    IMAssociatedMessageTypeUnspecified                          = 0,
    
    IMAssociatedMessageTypeBreadcrumbUnconsumed                 = 2,
    IMAssociatedMessageTypeBreadcrumbConsumed                   = 3,
    IMAssociatedMessageTypeSticker                              = 1000,
    IMAssociatedMessageTypeEmojiSticker                         = 1001,
    
    IMAssociatedMessageTypeAcknowledgmentHeart                  = 2000,
    IMAssociatedMessageTypeAcknowledgmentThumbsUp               = 2001,
    IMAssociatedMessageTypeAcknowledgmentThumbsDown             = 2002,
    IMAssociatedMessageTypeAcknowledgmentHa                     = 2003,
    IMAssociatedMessageTypeAcknowledgmentExclamation            = 2004,
    IMAssociatedMessageTypeAcknowledgmentQuestionMark           = 2005,

    IMAssociatedMessageTypeAcknowledgmentHeartRemoved           = 3000,
    IMAssociatedMessageTypeAcknowledgmentThumbsUpRemoved        = 3001,
    IMAssociatedMessageTypeAcknowledgmentThumbsDownRemoved      = 3002,
    IMAssociatedMessageTypeAcknowledgmentHaRemoved              = 3003,
    IMAssociatedMessageTypeAcknowledgmentExclamationRemoved     = 3004,
    IMAssociatedMessageTypeAcknowledgmentQuestionMarkRemoved    = 3005,
};

extern NSString * const IMMessageSummaryInfoSummary;
extern NSString * const IMMessageSummaryInfoContentType;
extern NSString * const IMMessageSummaryInfoPluginBundleID;
extern NSString * const IMMessageSummaryInfoPluginDisplayName;
extern NSString * const IMMessageSummaryInfoAssociatedBalloonBundleID;
extern NSString * const IMMessageSummaryInfoSourceApplicationID;
extern NSString * const IMMessageSummaryInfoUpdatedDateWithServerTime;
extern NSString * const IMMessageSummaryInfoHasBeenRetried;
extern NSString * const IMMessageSummaryInfoTapbackRepresentationKey;
extern NSString * const IMMessageSummaryInfoStickerRepositioningKey;
extern NSString * const IMMessageSummaryInfoTranscriptSharingMessageTypeKey;
extern NSString * const IMMessageSummaryInfoTranscriptSharingMessageFirstItemKey;
extern NSString * const IMMessageSummaryInfoEditedPartIndexes;
extern NSString * const IMMessageSummaryInfoRetractedPartIndexes;
extern NSString * const IMMessageSummaryInfoOriginalTextRangesByPartIndex;
extern NSString * const IMMessageSummaryInfoOriginalTextRangeLocationSubKey;
extern NSString * const IMMessageSummaryInfoOriginalTextRangeLengthSubKey;
extern NSString * const IMMessageSummaryInfoEditDeliveryFailedForPartIndexes;
extern NSString * const IMMessageSummaryInfoRetractDeliveryFailedForPartIndexes;
extern NSString * const IMMessageSummaryInfoEditUnsupportedByHandleIDs;
extern NSString * const IMMessageSummaryInfoTranslatedText;
extern NSString * const IMMessageSummaryInfoDetectedLanguage;
extern NSString * const IMMessageSummaryInfoCMMState;
extern NSString * const IMMessageSummaryInfoCMMAssetOffset;
extern NSString * const IMMessageItemErrorDomain;
extern NSString * const IMMessageSentDistributedNotification;
extern NSString * const IMMessageSentDistributedNotificationUserInfoMessageGUIDKey;
extern NSString * const IMMessageSentDistributedNotificationUserInfoSucessKey;


@interface IMMessage : NSObject <NSCopying>
{
    IMHandle *_sender;
    IMHandle *_subject;
    NSAttributedString *_text;
    NSString *_plainBody;
    NSDate *_time;
    NSDate *_timeDelivered;
    NSDate *_timeRead;
    NSDate *_timePlayed;
    NSString *_guid;
    NSAttributedString *_messageSubject;
    NSArray *_fileTransferGUIDs;
    NSError *_error;
    NSString *_balloonBundleID;
    NSData *_payloadData;
    NSString *_expressiveSendStyleID;
    NSDate *_timeExpressiveSendPlayed;
    unsigned long long _flags;
    BOOL _isInvitationMessage;
    long long _messageID;
    NSDictionary *_bizIntent;
    NSString *_locale;
    BOOL _isSOS;
    NSString *_associatedMessageGUID;
    long long _associatedMessageType;
    NSDictionary *_messageSummaryInfo;
    NSString *_associatedBalloonBundleID;
    NSData *_customTypingIndicatorIcon;
    NSString *_notificationIDSTokenURI;
    unsigned long long _sortID;
    struct _NSRange _associatedMessageRange;
}

+ (id)determineRichLinksInMessage:(id)arg1 additionalSupportedSchemes:(id)arg2;
+ (id)determineRichLinksInMessage:(id)arg1;
+ (BOOL)supportedRichLinkURL:(id)arg1 additionalSupportedSchemes:(id)arg2;
+ (BOOL)hasKnownSchemesForRichLinkURL:(id)arg1 additionalSupportedSchemes:(id)arg2;
+ (BOOL)hasKnownSchemesForRichLinkURL:(id)arg1;
+ (Class)richLinksDataSourceClass;
+ (id)messageFromIMMessageItemDictionary:(id)arg1 body:(id)arg2 sender:(id)arg3 subject:(id)arg4;
+ (id)messageFromIMMessageItem:(id)arg1 sender:(id)arg2 subject:(id)arg3;
+ (id)fromMeIMHandle:(id)arg1 withText:(id)arg2 fileTransferGUIDs:(id)arg3 flags:(unsigned long long)arg4;
+ (id)instantMessageWithText:(id)arg1 messageSubject:(id)arg2 fileTransferGUIDs:(id)arg3 flags:(unsigned long long)arg4 balloonBundleID:(id)arg5 payloadData:(id)arg6 expressiveSendStyleID:(id)arg7;
+ (id)instantMessageWithText:(id)arg1 messageSubject:(id)arg2 fileTransferGUIDs:(id)arg3 flags:(unsigned long long)arg4;
+ (id)instantMessageWithText:(id)arg1 messageSubject:(id)arg2 flags:(unsigned long long)arg3 expressiveSendStyleID:(id)arg4;
+ (id)instantMessageWithText:(id)arg1 messageSubject:(id)arg2 flags:(unsigned long long)arg3;
+ (id)instantMessageWithText:(id)arg1 flags:(unsigned long long)arg2;
+ (id)defaultInvitationMessageFromSender:(id)arg1 flags:(unsigned long long)arg2;
+ (id)locatingMessageWithGuid:(id)arg1 error:(id)arg2;
+ (id)messageWithLocation:(id)arg1 flags:(unsigned long long)arg2 error:(id)arg3 guid:(id)arg4;
+ (id)_vCardDataWithCLLocation:(id)arg1;
+ (id)breadcrumbMessageWithText:(id)arg1 associatedMessageGUID:(id)arg2 balloonBundleID:(id)arg3 fileTransferGUIDs:(id)arg4 payloadData:(id)arg5;
+ (id)editedMessageWithOriginalMessage:(id)arg1 originalPrefixedGUID:(id)arg2 newBody:(id)arg3;
+ (id)instantMessageWithAssociatedMessageContent:(id)arg1 flags:(unsigned long long)arg2 associatedMessageGUID:(id)arg3 associatedMessageType:(long long)arg4 associatedMessageRange:(struct _NSRange)arg5 messageSummaryInfo:(id)arg6;

+ (instancetype)instantMessageWithAssociatedMessageContent:(NSAttributedString *) content
                                                     flags:(IMMessageFlags)flags
                                     associatedMessageGUID:(NSString*) associatedMessageGUID
                                     associatedMessageType:(IMAssociatedMessageType) associatedMessageType
                                    associatedMessageRange:(NSRange) associatedMessageRange
                                        messageSummaryInfo:(NSDictionary*) messageSummaryInfo
                                          threadIdentifier:(NSString *)threadIdentifier;

+ (instancetype)breadcrumbMessageWithText:(NSAttributedString *)text
                    associatedMessageGUID:(NSString *)messageGUID
                          balloonBundleID:(NSString *)balloonBundleID
                        fileTransferGUIDs:(NSArray<NSString *> *)fileTransferGUIDs
                              payloadData:(NSData *)payloadData
                         threadIdentifier:(NSString *)threadIdentifier;

@property(nonatomic) unsigned long long sortID; // @synthesize sortID=_sortID;
@property(nonatomic) BOOL isSOS; // @synthesize isSOS=_isSOS;
@property(retain, nonatomic) NSString *notificationIDSTokenURI; // @synthesize notificationIDSTokenURI=_notificationIDSTokenURI;
@property(retain, nonatomic) NSData *customTypingIndicatorIcon; // @synthesize customTypingIndicatorIcon=_customTypingIndicatorIcon;
@property(retain, nonatomic) NSDate *timeExpressiveSendPlayed; // @synthesize timeExpressiveSendPlayed=_timeExpressiveSendPlayed;
@property(retain, nonatomic) NSString *expressiveSendStyleID; // @synthesize expressiveSendStyleID=_expressiveSendStyleID;
@property(retain, nonatomic) NSString *associatedBalloonBundleID; // @synthesize associatedBalloonBundleID=_associatedBalloonBundleID;
@property(retain, nonatomic) NSData *payloadData; // @synthesize payloadData=_payloadData;
@property(retain, nonatomic) NSString *balloonBundleID; // @synthesize balloonBundleID=_balloonBundleID;
@property(retain, nonatomic, setter=_updateLocale:) NSString *locale; // @synthesize locale=_locale;
@property(retain, nonatomic, setter=_updateBizIntent:) NSDictionary *bizIntent; // @synthesize bizIntent=_bizIntent;
@property(copy, nonatomic, setter=_messageSummaryInfo:) NSDictionary *messageSummaryInfo; // @synthesize messageSummaryInfo=_messageSummaryInfo;
@property(nonatomic, setter=_associatedMessageRange:) struct _NSRange associatedMessageRange; // @synthesize associatedMessageRange=_associatedMessageRange;
@property(nonatomic, setter=_associatedMessageType:) long long associatedMessageType; // @synthesize associatedMessageType=_associatedMessageType;
@property(copy, nonatomic, setter=_associatedMessageGUID:) NSString *associatedMessageGUID; // @synthesize associatedMessageGUID=_associatedMessageGUID;
@property(retain, nonatomic, setter=_updateTimePlayed:) NSDate *timePlayed; // @synthesize timePlayed=_timePlayed;
@property(retain, nonatomic, setter=_updateTimeRead:) NSDate *timeRead; // @synthesize timeRead=_timeRead;
@property(retain, nonatomic, setter=_updateTimeDelivered:) NSDate *timeDelivered; // @synthesize timeDelivered=_timeDelivered;
@property(copy, nonatomic, setter=_updateFileTransferGUIDs:) NSArray *fileTransferGUIDs; // @synthesize fileTransferGUIDs=_fileTransferGUIDs;
@property(nonatomic) BOOL isInvitationMessage; // @synthesize isInvitationMessage=_isInvitationMessage;
@property(retain, nonatomic, setter=_updateError:) NSError *error; // @synthesize error=_error;
@property(nonatomic, setter=_updateFlags:) unsigned long long flags; // @synthesize flags=_flags;
@property(nonatomic, setter=_updateMessageID:) long long messageID; // @synthesize messageID=_messageID;
@property(retain, nonatomic, setter=_updateGUID:) NSString *guid; // @synthesize guid=_guid;
@property(retain, nonatomic, setter=_updateText:) NSAttributedString *text; // @synthesize text=_text;
@property(retain, nonatomic, setter=_updateTime:) NSDate *time; // @synthesize time=_time;
@property(readonly, nonatomic) NSAttributedString *messageSubject; // @synthesize messageSubject=_messageSubject;
@property(readonly, nonatomic) IMHandle *subject; // @synthesize subject=_subject;
@property(retain, nonatomic, setter=_updateSender:) IMHandle *sender; // @synthesize sender=_sender;

- (id)description;
- (BOOL)isEqual:(id)arg1;
- (id)messagesBySeparatingRichLinks;
@property(readonly, nonatomic) IMMessageItem *_imMessageItem;
- (long long)compare:(id)arg1 comparisonType:(long long)arg2;
- (long long)compare:(id)arg1;
@property(readonly, nonatomic) BOOL wasDataDetected;
@property(readonly, nonatomic) BOOL wasDowngraded;
@property(readonly, nonatomic) BOOL isAlert;
@property(readonly, nonatomic) BOOL isAddressedToMe;
- (void)setIsAddressedToMe:(BOOL)arg1;
@property(readonly, nonatomic) BOOL isSystemMessage;
@property(readonly, nonatomic) BOOL isPlayed;
@property(readonly, nonatomic) BOOL isAudioMessage;
@property(readonly, nonatomic) BOOL isRead;
@property(readonly, nonatomic) BOOL isDelivered;
@property(readonly, nonatomic) BOOL isAutoReply;
@property(readonly, nonatomic) BOOL isDelayed;
@property(readonly, nonatomic) BOOL isEmpty;
@property(readonly, nonatomic) BOOL isFromMe;
@property(readonly, nonatomic) BOOL isEmote;
@property(readonly, nonatomic) NSArray *inlineAttachmentAttributesArray;
@property(readonly, nonatomic) BOOL hasInlineAttachments;
@property(readonly, nonatomic) BOOL isSent;
@property(readonly, nonatomic) BOOL isLocatingMessage;
@property(readonly, nonatomic) BOOL isTypingMessage;
@property(readonly, nonatomic) BOOL isFinished;
@property(readonly, nonatomic) BOOL hasDataDetectorResults;
@property(readonly, nonatomic) NSString *summaryString;
@property(readonly, nonatomic) NSString *senderName;
@property(readonly, nonatomic) NSString *plainBody;
- (id)initWithSender:(id)arg1 fileTransfer:(id)arg2;
- (id)initWithSender:(id)arg1 time:(id)arg2 text:(id)arg3 messageSubject:(id)arg4 fileTransferGUIDs:(id)arg5 flags:(unsigned long long)arg6 error:(id)arg7 guid:(id)arg8 subject:(id)arg9 associatedMessageGUID:(id)arg10 associatedMessageType:(long long)arg11 associatedMessageRange:(struct _NSRange)arg12 messageSummaryInfo:(id)arg13;
- (id)initWithSender:(id)arg1 time:(id)arg2 text:(id)arg3 messageSubject:(id)arg4 fileTransferGUIDs:(id)arg5 flags:(unsigned long long)arg6 error:(id)arg7 guid:(id)arg8 subject:(id)arg9 balloonBundleID:(id)arg10 payloadData:(id)arg11 expressiveSendStyleID:(id)arg12;
- (id)initWithSender:(id)arg1 time:(id)arg2 text:(id)arg3 fileTransferGUIDs:(id)arg4 flags:(unsigned long long)arg5 error:(id)arg6 guid:(id)arg7 subject:(id)arg8;
- (id)initWithSender:(id)arg1 time:(id)arg2 text:(id)arg3 messageSubject:(id)arg4 fileTransferGUIDs:(id)arg5 flags:(unsigned long long)arg6 error:(id)arg7 guid:(id)arg8 subject:(id)arg9;
- (id)_initWithSender:(id)arg1 time:(id)arg2 timeRead:(id)arg3 timeDelivered:(id)arg4 timePlayed:(id)arg5 plainText:(id)arg6 text:(id)arg7 messageSubject:(id)arg8 fileTransferGUIDs:(id)arg9 flags:(unsigned long long)arg10 error:(id)arg11 guid:(id)arg12 messageID:(long long)arg13 subject:(id)arg14 balloonBundleID:(id)arg15 payloadData:(id)arg16 expressiveSendStyleID:(id)arg17 timeExpressiveSendPlayed:(id)arg18 associatedMessageGUID:(id)arg19 associatedMessageType:(long long)arg20 associatedMessageRange:(struct _NSRange)arg21 messageSummaryInfo:(id)arg22;
- (id)_copyWithFlags:(unsigned long long)arg1;
- (id)copyWithZone:(struct _NSZone *)arg1;
- (id)descriptionForPurpose:(IMMessageDescriptionType)arg1 inChat:(id)arg2;
- (id)descriptionForPurpose:(IMMessageDescriptionType)arg1;
- (void)_ovverrideGUIDForTest:(id)arg1;
@property(readonly, nonatomic) BOOL isAssociatedMessage;
- (id)initWithSender:(id)arg1 time:(id)arg2 text:(id)arg3 messageSubject:(id)arg4 fileTransferGUIDs:(id)arg5 flags:(unsigned long long)arg6 error:(id)arg7 guid:(id)arg8 subject:(id)arg9 associatedMessageGUID:(id)arg10 associatedMessageType:(long long)arg11 associatedMessageRange:(struct _NSRange)arg12 associatedMessageInfo:(id)arg13;

@end

@interface IMChatRegistry : NSObject </* TUConversationManagerDelegate, */ NSFastEnumeration>
{
    NSMutableArray *_allChats;
    NSMutableDictionary *_chatGUIDToCurrentThreadMap;
    NSMutableDictionary *_chatGUIDToInfoMap;
    NSMutableDictionary *_chatGUIDToChatMap;
    NSMutableDictionary *_threadNameToChatMap;
    NSMutableDictionary *_chatGUIDToiMessageSentOrReceivedMap;
    NSMutableArray *_allChatsInThreadNameMap;
    NSMutableArray *_pendingQueries;
    NSMutableArray *_waitingForQueries;
    NSString *_historyModificationStamp;
    
    NSMutableDictionary *_queryCompletionBlocks;
    double _timerStartTimeInterval;
    BOOL _firstLoad;
    BOOL _loading;
    BOOL _daemonHadTerminated;
    BOOL _wantsHistoryReload;
    BOOL _postMessageSentNotifications;
    BOOL _isInternalInstall;
    unsigned long long _defaultNumberOfMessagesToLoad;
    unsigned long long _daemonUnreadCount;
    long long _daemonLastFailedMessageDate;
    NSUserActivity *_userActivity;
    NSMutableDictionary *_chatsBeingLoadedMap;
    NSMutableDictionary *_chatPersonIDToChatMap;
    NSMutableDictionary *_groupIDToChatMap;
    NSMutableDictionary *_groupParticipantToChatsMap;
    
    NSSet *_registryChangeHistoryChatsToObserve;
    NSSet *_registryChangeHistoryChatsToUnregister;
    BOOL _personaKitRetriveAPITimedOut;
    NSArray *_simulatedChats;
    IMChatRegistry *_batchProcessingRegistry;
    NSObject<OS_dispatch_queue> *_batchProcessingQueue;
    NSMutableArray *_updateBlocks;
    NSArray *_preExistingAllChats;
//    TUConversationManager *_conversationManager;
    NSDictionary *_chatIdToLastMessageItemMap;
}

+ (Class)messageClass;
+ (void)setMessageClass:(Class)arg1;
+ (id)sharedInstance;
+ (id)performanceLogHandle;
+ (void)setHasInitializedChatFiltering:(BOOL)arg1;
+ (BOOL)hasInitializedChatFiltering;
@property(retain, nonatomic) NSDictionary *chatIdToLastMessageItemMap; // @synthesize chatIdToLastMessageItemMap=_chatIdToLastMessageItemMap;
//@property(readonly, nonatomic) TUConversationManager *conversationManager; // @synthesize conversationManager=_conversationManager;
@property(retain, nonatomic) NSArray *preExistingAllChats; // @synthesize preExistingAllChats=_preExistingAllChats;
@property(retain, nonatomic) NSMutableArray *updateBlocks; // @synthesize updateBlocks=_updateBlocks;
@property(retain, nonatomic) NSObject<OS_dispatch_queue> *batchProcessingQueue; // @synthesize batchProcessingQueue=_batchProcessingQueue;
@property(retain, nonatomic) IMChatRegistry *batchProcessingRegistry; // @synthesize batchProcessingRegistry=_batchProcessingRegistry;
@property(retain, nonatomic, setter=_setSimulatedChats:) NSArray *simulatedChats; // @synthesize simulatedChats=_simulatedChats;
@property(nonatomic) BOOL personaKitRetriveAPITimedOut; // @synthesize personaKitRetriveAPITimedOut=_personaKitRetriveAPITimedOut;
@property(nonatomic, setter=_setPostMessageSentNotifications:) BOOL _postMessageSentNotifications; // @synthesize _postMessageSentNotifications;
@property(readonly, nonatomic) BOOL _isLoading; // @synthesize _isLoading=_loading;
@property(nonatomic, setter=_setDefaultNumberOfMessagesToLoad:) unsigned long long _defaultNumberOfMessagesToLoad; // @synthesize _defaultNumberOfMessagesToLoad;

@property(readonly, nonatomic) BOOL isBatchProcessing;
- (void)_setMetaDictionary:(id)arg1 forKey:(id)arg2;
- (id)_transcriptRenderingMetaDictionaryForKey:(id)arg1;
- (double)_maxDurationForScrutinyMode;
- (BOOL)_firstLoad;
- (void)systemApplicationDidResume;
- (void)_clearMarkAsReadTimerIfNecessary;
- (void)_startMarkAsReadTimerIfNecessary;
- (void)_registerCompletion:(CDUnknownBlockType)arg1 forQueryID:(id)arg2;
- (void)_chat:(id)arg1 handleCompletionOfQuery:(id)arg2 withUserInfo:(id)arg3 success:(BOOL)arg4 error:(id)arg5;
- (void)_blockUntilQueriesComplete:(id)arg1;
- (void)__blockUntilQueriesComplete;
- (id)_chatGUIDToChatMap;
- (id)_chatsWithMessageGUID:(id)arg1;
- (id)_chatsWithMessage:(id)arg1;
- (id)_allGUIDsForChat:(id)arg1;
- (void)_handleAddressBookChange:(id)arg1;
- (void)handleIMChatParticipantsDidChange:(id)arg1;
- (id)loadChatFromDaemonWithChatIdentifier:(id)arg1;
- (id)_sortedParticipantIDHashForParticipants:(id)arg1;
- (void)_addChat:(id)arg1 participantSet:(id)arg2;
- (void)_removeFromGroupParticipantToChatsMap:(id)arg1;
- (void)_resetChatReconstructionGroupMaps;
- (id)_chatForChatDictionary:(id)arg1 items:(id)arg2 allowCreate:(BOOL)arg3 createdChat:(char *)arg4 outGUID:(id *)arg5;
- (id)existingChatForRoom:(id)arg1 onAccount:(id)arg2 allowRetargeting:(BOOL)arg3;
- (id)existingChatForIMHandles:(id)arg1 allowRetargeting:(BOOL)arg2;
- (id)existingChatForIMHandles:(id)arg1 allowRetargeting:(BOOL)arg2 groupID:(id)arg3 displayName:(id)arg4 joinedChatsOnly:(BOOL)arg5;
- (id)existingChatForIMHandles:(id)arg1 allowRetargeting:(BOOL)arg2 groupID:(id)arg3 displayName:(id)arg4 ignoresDisplayName:(BOOL)arg5 joinedChatsOnly:(BOOL)arg6;
- (id)existingChatForAddresses:(id)arg1 allowRetargeting:(BOOL)arg2 bestHandles:(id *)arg3;
- (id)existingChatForIMHandles:(id)arg1 allowRetargeting:(BOOL)arg2 groupID:(id)arg3;
- (id)existingChatForIMHandle:(id)arg1 allowRetargeting:(BOOL)arg2;
- (id)existingConversationForTUConversationUUID:(id)arg1;
- (id)existingChatForEngramID:(id)arg1;
- (id)exisitingChatForGroupID:(id)arg1;
- (id)existingChatForRoom:(id)arg1 onAccount:(id)arg2;
- (id)existingChatForIMHandles:(id)arg1;
- (id)existingChatForIMHandle:(id)arg1;
- (id)existingChatWithGUID:(id)arg1;
- (id)existingChatForPersonID:(id)arg1;
- (id)existingChatWithChatIdentifier:(id)arg1;
- (id)existingChatWithGroupID:(id)arg1;
- (id)_lookupExistingChatWithIMHandle:(id)arg1;
- (id)_existingChatWithIdentifier:(id)arg1 style:(unsigned char)arg2 account:(id)arg3;
- (id)_existingChatWithIdentifier:(id)arg1 style:(unsigned char)arg2 service:(id)arg3;
@property(readonly, nonatomic) NSArray *allExistingChats;
@property(readonly, nonatomic) unsigned long long numberOfExistingChats;
- (void)_setChatHasCommunicatedOveriMessage:(id)arg1;
- (BOOL)_hasChat:(id)arg1 forService:(id)arg2;
- (void)markMessageAsNotCorrupt:(id)arg1;
- (void)markMessageAsCorrupt:(id)arg1;
// - (unsigned long long)countByEnumeratingWithState:(CDStruct_70511ce9 *)arg1 objects:(id *)arg2 count:(unsigned long long)arg3;
- (long long)lastFailedMessageDate;
- (unsigned long long)unreadCount;
- (id)registryChangeHistoryChatsToObserveSet;
- (id)registryChangeHistoryChatsToUnregisterSet;
- (id)_createdChatForRoom:(id)arg1 onAccount:(id)arg2;
- (id)_createdChatForIMHandles:(id)arg1 style:(unsigned char)arg2 groupID:(id)arg3 displayName:(id)arg4 joinedChatsOnly:(BOOL)arg5;
- (id)_createdChatForIMHandle:(id)arg1;
- (id)_createdChatWithIdentifier:(id)arg1 style:(unsigned char)arg2 account:(id)arg3;
- (id)_allCreatedChats;
- (void)setUserActivityForChat:(id)arg1 message:(id)arg2 orHandles:(id)arg3 title:(id)arg4;
- (id)_inPersonFromIMHandle:(id)arg1;
- (id)_inPersonNameForContact:(id)arg1 imHandle:(id)arg2;
- (id)_inPersonHandleFromIMHandle:(id)arg1 contact:(id)arg2;
- (void)setUserActivityForChat:(id)arg1 orHandles:(id)arg2 title:(id)arg3;
- (void)setActiveChatURL:(id)arg1;
- (id)chatForURL:(id)arg1 outMessageText:(id *)arg2 outRecipientIDs:(id *)arg3 outService:(id *)arg4 outMessageGUID:(id *)arg5;
- (id)messagesURLWithChat:(id)arg1 orHandles:(id)arg2 withMessageText:(id)arg3;
- (id)chatForRoom:(id)arg1 onAccount:(id)arg2;
- (id)chatForIMHandles:(id)arg1 chatName:(id)arg2 lastAddressedHandle:(id)arg3 lastAddressedSIMID:(id)arg4;
- (id)chatForIMHandles:(id)arg1 chatName:(id)arg2;
- (id)chatForIMHandles:(id)arg1 displayName:(id)arg2 joinedChatsOnly:(BOOL)arg3 lastAddressedHandle:(id)arg4 lastAddressedSIMID:(id)arg5;
- (id)chatForIMHandles:(id)arg1 displayName:(id)arg2 joinedChatsOnly:(BOOL)arg3;
- (id)chatForIMHandles:(id)arg1 lastAddressedHandle:(id)arg2 lastAddressedSIMID:(id)arg3;
- (id)chatForIMHandles:(id)arg1;
- (id)chatForIMHandle:(id)arg1 lastAddressedHandle:(id)arg2 lastAddressedSIMID:(id)arg3;
- (id)chatForIMHandle:(id)arg1;
- (void)_unregisterChatWithGUID:(id)arg1;
- (void)_unregisterChat:(id)arg1;
- (void)unregisterChatWithGUID:(id)arg1;
- (void)unregisterChat:(id)arg1;
- (void)_registerChat:(id)arg1 isIncoming:(BOOL)arg2 guid:(id)arg3;
- (void)_registerChatDictionary:(id)arg1 forChat:(id)arg2 isIncoming:(BOOL)arg3 newGUID:(id)arg4;
- (void)_registerChatDictionary:(id)arg1 forChat:(id)arg2 isIncoming:(BOOL)arg3 newGUID:(id)arg4 shouldPostNotification:(BOOL)arg5;
- (void)dealloc;
- (id)init;
- (id)_chatInstanceForGUID:(id)arg1;
- (void)_noteChatDealloc:(id)arg1;
- (void)_noteChatInit:(id)arg1;
- (id)performanceLogHandle;
- (void)_postMultiWayStateChangedNotification:(id)arg1;
- (void)conversationManager:(id)arg1 removedActiveConversation:(id)arg2;
- (void)conversationManager:(id)arg1 activeRemoteParticipantsChangedForConversation:(id)arg2;
- (void)conversationManager:(id)arg1 stateChangedForConversation:(id)arg2;
- (id)_existingChatForTUConversation:(id)arg1;
- (id)_activeTUConversations;
- (id)activeCallForConversationUUID:(id)arg1;
- (void)setUpInitialCallState;
- (void)verifyFilteringForAllChats;
- (void)_IMChatGetIdentifiersAndServicesTestHook:(id)arg1 identifiers:(id *)arg2 services:(id *)arg3 personCentricEnabled:(BOOL)arg4;
- (void)_chat_closeSession:(id)arg1;
- (void)_chat_isDownloadingPurgedAssetsForChat:(id)arg1 queryID:(id)arg2;
- (void)_chat_downloadPurgedAttachmentsForChat:(id)arg1;
- (void)_chat_loadUncachedAttachmentsCount:(id)arg1 queryID:(id)arg2;
- (void)_chat_loadAttachments:(id)arg1 queryID:(id)arg2;
- (void)_chat_loadUnreadMessages:(id)arg1 limit:(unsigned long long)arg2 fallbackGUID:(id)arg3 queryId:(id)arg4;
- (void)_chat_loadFrequentReplies:(id)arg1 limit:(unsigned long long)arg2 queryID:(id)arg3;
- (void)_chat_markAsSpam:(id)arg1 queryID:(id)arg2 autoReport:(BOOL)arg3;
- (void)_chat_markAsSpamAutomatically:(id)arg1;
- (void)_chat_markAsSpam:(id)arg1 queryID:(id)arg2;
- (void)_chat_clearHistory:(id)arg1 beforeGUID:(id)arg2 afterGUID:(id)arg3 queryID:(id)arg4;
- (void)_chat_loadPagedHistory:(id)arg1 numberOfMessagesBefore:(unsigned long long)arg2 numberOfMessagesAfter:(unsigned long long)arg3 messageGUID:(id)arg4 queryID:(id)arg5;
- (void)_chat_loadHistory:(id)arg1 limit:(unsigned long long)arg2 beforeGUID:(id)arg3 afterGUID:(id)arg4 queryID:(id)arg5;
- (void)_chat:(id)arg1 updateIsFiltered:(BOOL)arg2;
- (void)_chat:(id)arg1 updateLastAddressedSIMID:(id)arg2;
- (void)_chat:(id)arg1 updateLastAddressedHandle:(id)arg2;
- (void)_chat:(id)arg1 updateDisplayName:(id)arg2;
- (void)_chat:(id)arg1 setValue:(id)arg2 forChatProperty:(id)arg3;
- (void)_chat:(id)arg1 setProperties:(id)arg2 ofParticipant:(id)arg3;
- (void)_chat_declineInvitation:(id)arg1;
- (void)_chat_archive:(id)arg1;
- (void)_chat_remove:(id)arg1;
- (void)_chat_leave:(id)arg1 leavingiMessageChat:(BOOL)arg2;
- (void)_chat:(id)arg1 joinWithProperties:(id)arg2;
- (void)_chat:(id)arg1 removeParticipants:(id)arg2 reason:(id)arg3 fromiMessageChat:(BOOL)arg4;
- (void)_chat:(id)arg1 inviteParticipants:(id)arg2 reason:(id)arg3 toiMessageChat:(BOOL)arg4;
- (void)_chat:(id)arg1 sendMessage:(id)arg2;
- (void)_trackUsageForMessage:(id)arg1;
- (id)_eventForMessage:(id)arg1;
- (void)_markHasHadSuccessfulQueryForChat:(id)arg1;
- (void)_chat:(id)arg1 sendSavedReceiptForMessage:(id)arg2;
- (void)_chat:(id)arg1 setPlayedExpressiveSendForMessage:(id)arg2;
- (void)_chat:(id)arg1 sendPlayedReceiptForMessage:(id)arg2;
- (void)_chat_storeItem:(id)arg1 inChat:(id)arg2;
- (void)_chat_sendReadReceiptForAllMessages:(id)arg1;
- (void)_chat:(id)arg1 sendReadReceiptForMessages:(id)arg2;
- (void)_removeChatIdFromChatIdToLastMessageItemMap:(id)arg1;
- (void)lastMessageForAllChats:(id)arg1;
- (void)chatLoadedWithChatIdentifier:(id)arg1 chats:(id)arg2;
- (void)_chatLoadedWithChatIdentifier:(id)arg1 chats:(id)arg2;
- (void)setupComplete;
- (void)_daemonReallyDied:(id)arg1;
- (void)setupComplete:(BOOL)arg1 info:(id)arg2;
- (void)__handleChatReconstructions:(id)arg1;
- (void)_handleChatReconstructions:(id)arg1;
- (void)__handleMergedChatReconstructions:(id)arg1 fullReload:(BOOL)arg2;
- (void)updateChatDictionaryArray:(id)arg1 createdChat:(id)arg2 joinstate:(long long)arg3 setHasCommunicatedOveriMessage:(char *)arg4;
- (void)__handleMergedChatReconstructions:(id)arg1;
- (void)_resetChatRegistry;
- (id)chatPersonIDToChatMap;
- (void)_handleMergedChatReconstructions:(id)arg1;
- (id)_copyMergedChatsPairedArrayFromMergedChatsArray:(id)arg1;
- (void)chatsNeedRemerging:(id)arg1 groupedChats:(id)arg2;
- (void)frequentRepliesQuery:(id)arg1 finishedWithResult:(id)arg2 limit:(unsigned long long)arg3;
- (void)frequentRepliesQuery:(id)arg1 chatID:(id)arg2 services:(id)arg3 finishedWithResult:(id)arg4 limit:(unsigned long long)arg5;
- (void)markAsSpamQuery:(id)arg1 chatID:(id)arg2 services:(id)arg3 finishedWithResult:(id)arg4;
- (void)isDownloadingQuery:(id)arg1 chatID:(id)arg2 services:(id)arg3 finishedWithResult:(BOOL)arg4;
- (void)downloadedPurgedAssetBatchForChatIDs:(id)arg1 completedTransferGUIDs:(id)arg2;
- (void)finishedDownloadingPurgedAssetsForChatIDs:(id)arg1;
- (id)_chatForIdentifiers:(id)arg1;
- (void)uncachedAttachmentCountQuery:(id)arg1 chatID:(id)arg2 services:(id)arg3 finishedWithResult:(id)arg4;
- (void)attachmentQuery:(id)arg1 chatID:(id)arg2 services:(id)arg3 finishedWithResult:(id)arg4;
- (void)pagedHistoryQuery:(id)arg1 chatID:(id)arg2 services:(id)arg3 numberOfMessagesBefore:(unsigned long long)arg4 numberOfMessagesAfter:(unsigned long long)arg5 finishedWithResult:(id)arg6;
- (void)historyQuery:(id)arg1 chatID:(id)arg2 services:(id)arg3 finishedWithResult:(id)arg4 limit:(unsigned long long)arg5;
- (void)_checkIfItemIsCorrupt:(id)arg1;
- (void)_checkLimitAndSetMessagesToKeepLoadedIfNeeded:(unsigned long long)arg1 chat:(id)arg2;
- (void)historicalMessageGUIDsDeleted:(id)arg1 chatGUIDs:(id)arg2 queryID:(id)arg3;
- (void)lastFailedMessageDateChanged:(long long)arg1;
- (void)unreadCountChanged:(long long)arg1;
- (void)chat:(id)arg1 updated:(id)arg2;
- (void)_updateInfo:(id)arg1 forGUID:(id)arg2 updatingUnreadCount:(BOOL)arg3 shouldPostUnreadNotification:(BOOL)arg4;
- (void)_updateInfo:(id)arg1 forGUID:(id)arg2 updatingUnreadCount:(BOOL)arg3;
- (void)_updateUnreadCountForChat:(id)arg1 shouldPostNotification:(BOOL)arg2;
- (void)_updateUnreadCountForChat:(id)arg1;
- (void)engroupParticipantsUpdatedForChat:(id)arg1;
- (void)chat:(id)arg1 engramIDUpdated:(id)arg2;
- (void)chat:(id)arg1 isFilteredUpdated:(BOOL)arg2;
- (void)chat:(id)arg1 lastAddressedSIMIDUpdated:(id)arg2;
- (void)chat:(id)arg1 lastAddressedHandleUpdated:(id)arg2;
- (void)chat:(id)arg1 displayNameUpdated:(id)arg2;
- (void)chat:(id)arg1 propertiesUpdated:(id)arg2;
- (void)account:(id)arg1 chat:(id)arg2 style:(unsigned char)arg3 chatProperties:(id)arg4 member:(id)arg5 statusChanged:(int)arg6;
- (void)leftChat:(id)arg1;
- (void)account:(id)arg1 chat:(id)arg2 style:(unsigned char)arg3 chatProperties:(id)arg4 groupID:(id)arg5 chatPersonCentricID:(id)arg6 statusChanged:(int)arg7 handleInfo:(id)arg8;
- (void)account:(id)arg1 chat:(id)arg2 style:(unsigned char)arg3 chatProperties:(id)arg4 error:(id)arg5;
- (void)account:(id)arg1 chat:(id)arg2 style:(unsigned char)arg3 chatProperties:(id)arg4 updateProperties:(id)arg5;
- (void)account:(id)arg1 chat:(id)arg2 style:(unsigned char)arg3 chatProperties:(id)arg4 invitationReceived:(id)arg5;
- (void)account:(id)arg1 chat:(id)arg2 style:(unsigned char)arg3 chatProperties:(id)arg4 groupID:(id)arg5 chatPersonCentricID:(id)arg6 messagesReceived:(id)arg7;
- (void)account:(id)arg1 chat:(id)arg2 style:(unsigned char)arg3 chatProperties:(id)arg4 groupID:(id)arg5 chatPersonCentricID:(id)arg6 messageReceived:(id)arg7;
- (void)account:(id)arg1 chat:(id)arg2 style:(unsigned char)arg3 chatProperties:(id)arg4 notifySentMessage:(id)arg5 sendTime:(id)arg6;
- (void)account:(id)arg1 chat:(id)arg2 style:(unsigned char)arg3 chatProperties:(id)arg4 groupID:(id)arg5 chatPersonCentricID:(id)arg6 messageSent:(id)arg7;
- (void)_processMessageForAccount:(id)arg1 chat:(id)arg2 style:(unsigned char)arg3 chatProperties:(id)arg4 groupID:(id)arg5 chatPersonCentricID:(id)arg6 message:(id)arg7;
- (id)_existingChatForChatStyle:(unsigned char)arg1 groupID:(id)arg2 chatIdentifier:(id)arg3 accountID:(id)arg4;
- (void)account:(id)arg1 chat:(id)arg2 style:(unsigned char)arg3 chatProperties:(id)arg4 messageUpdated:(id)arg5;
- (void)account:(id)arg1 chat:(id)arg2 style:(unsigned char)arg3 chatProperties:(id)arg4 messagesUpdated:(id)arg5;
- (void)_account:(id)arg1 chat:(id)arg2 style:(unsigned char)arg3 chatProperties:(id)arg4 messagesUpdated:(id)arg5;
- (void)loadedChats:(id)arg1;
- (void)_startBackgroundProcessingChats:(id)arg1 completion:(CDUnknownBlockType)arg2;
- (void)mergeWithCopyRegistry:(id)arg1;
- (id)copyForBatchProcessing;
- (void)enumerateAllChatsAndIncludingSyncedAttachmentSizes:(BOOL)arg1 usingBlock:(CDUnknownBlockType)arg2;

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

- (IMChat *)chatWithHandle:(IMHandle *)handle;
- (IMChat *)chatWithHandle:(IMHandle *)handle lastAddressedHandle:( NSString *)lastAddressedHandle lastAddressedSIMID:( NSString *)lastAddressedSIMID;
- (IMChat *)chatWithHandles:(NSArray<IMHandle *> *)handles;
- (IMChat *)chatWithHandles:(NSArray<IMHandle *> *)handles lastAddressedHandle:( NSString *)lastAddressedHandle lastAddressedSIMID:( NSString *)lastAddressedSIMID;
- (IMChat *)chatWithHandles:(NSArray<IMHandle *> *)handles displayName:( NSString *)displayName joinedChatsOnly:(BOOL)joinedChatsOnly;
- (IMChat *)chatWithHandles:(NSArray<IMHandle *> *)handles displayName:( NSString *)displayName joinedChatsOnly:(BOOL)joinedChatsOnly lastAddressedHandle:( NSString *)lastAddressedHandle lastAddressedSIMID:( NSString *)lastAddressedSIMID;

- (NSArray<NSString *> *)allGUIDsForChat:(IMChat *)chat;
- ( IMChat *)existingChatWithHandle:(IMHandle *)handle;
- ( IMChat *)existingChatWithHandle:(IMHandle *)handle allowAlternativeService:(BOOL)allowAlternativeService;
- ( IMChat *)existingChatWithHandles:(NSArray<IMHandle *> *)handles;
- ( IMChat *)existingChatWithHandles:(NSArray<IMHandle *> *)handles allowAlternativeService:(BOOL)allowAlternativeService;
- ( IMChat *)existingChatWithHandles:(NSArray<IMHandle *> *)handles allowAlternativeService:(BOOL)allowAlternativeService groupID:(NSString *)groupID;
- ( IMChat *)existingChatWithHandles:(NSArray *)handles allowAlternativeService:(BOOL)allowAlternativeService groupID:( NSString *)groupID displayName:( NSString *)displayName joinedChatsOnly:(BOOL)joinedChatsOnly;
// - ( IMChat *)existingChatWithGUID:(NSString *)guid;
- ( IMChat *)existingChatWithPinningIdentifier:(NSString *)pinningIdentifier;
- ( IMChat *)existingChatWithDeviceIndependentID:(NSString *)deviceIndependentID;
// - ( IMChat *)existingChatWithChatIdentifier:(NSString *)identifier;
- ( IMChat *)existingChatWithPersonID:(NSString *)personID;
// - ( IMChat *)existingChatWithGroupID:(NSString *)groupID;
// - ( IMChat *)existingChatWithDisplayName:(NSString *)displayName;
- ( IMChat *)existingChatWithAddresses:(NSArray<NSString *> *)addresses allowAlternativeService:(BOOL)allowAlternativeService bestHandles:(NSArray<IMHandle *> * __autoreleasing*)outBestHandles;
- ( IMChat *)existingChatWithContacts:(NSSet /* <CNContact *> */ *)contacts bestHandles:(NSArray<IMHandle *> * __autoreleasing  * )outBestHandles;

@end

@interface IMSimulatedChat : IMChat // <IMSimulatedChatDelegate, IMSimulatedDaemonListener>
{
//    id <IMSimulatedChatDelegate> _delegate;
    IMSimulatedAccount *_simulatedAccount;
    unsigned long long _currentMessageID;
    NSString *_simulatedChatIdentifier;
    NSMutableArray *_simulatedAttachments;
    NSString *_simulatedDisplayName;
}

@property(copy, nonatomic) NSString *simulatedDisplayName; // @synthesize simulatedDisplayName=_simulatedDisplayName;
@property(readonly, nonatomic) NSMutableArray *simulatedAttachments; // @synthesize simulatedAttachments=_simulatedAttachments;
@property(copy, nonatomic) NSString *simulatedChatIdentifier; // @synthesize simulatedChatIdentifier=_simulatedChatIdentifier;
@property(readonly, nonatomic) unsigned long long currentMessageID; // @synthesize currentMessageID=_currentMessageID;
@property(readonly, nonatomic) IMSimulatedAccount *simulatedAccount; // @synthesize simulatedAccount=_simulatedAccount;
//@property(nonatomic) __weak id <IMSimulatedChatDelegate> delegate; // @synthesize delegate=_delegate;

- (id)_messageWithGUID:(id)arg1;
- (void)simulatedDaemon:(id)arg1 willSendBalloonPayload:(id)arg2 attachments:(id)arg3 messageGUID:(id)arg4 bundleID:(id)arg5;
- (void)chat:(id)arg1 didSendMessage:(id)arg2;
- (void)markAsAutoSpamReported;
- (id)attachments;
- (id)loadMessagesBeforeDate:(id)arg1 limit:(unsigned long long)arg2 loadImmediately:(BOOL)arg3;
- (long long)joinState;
- (void)setDisplayName:(id)arg1;
- (id)displayName;
- (id)account;
- (id)chatIdentifier;
- (BOOL)_handleIncomingItem:(id)arg1;
- (void)sendMessage:(id)arg1;
- (id)initWithIncomingIDs:(id)arg1 messageIDOffset:(unsigned long long)arg2 account:(id)arg3;

@end

@interface IMOneTimeCodeAccelerator : NSObject
{
    BOOL _requestedOneTimeCodeStatusForConnection;
    IMDaemonController<IMRemoteDaemonProtocol> *_daemon;
    CDUnknownBlockType _updateBlock;
}

@property(nonatomic) BOOL requestedOneTimeCodeStatusForConnection; // @synthesize requestedOneTimeCodeStatusForConnection=_requestedOneTimeCodeStatusForConnection;
@property(copy, nonatomic) CDUnknownBlockType updateBlock; // @synthesize updateBlock=_updateBlock;
@property(retain, nonatomic) IMDaemonController<IMRemoteDaemonProtocol> *daemon; // @synthesize daemon=_daemon;

- (void)daemonConnectionLost;
- (void)daemonControllerDidDisconnect;
- (void)daemonControllerDidConnect;
- (void)daemonControllerWillConnect;
- (void)_incomingCodeUpdateFromDaemon:(id)arg1;
- (void)setUpConnectionToDaemaon;
- (void)dealloc;
- (id)initWithDaemon:(id)arg1 andBlock:(CDUnknownBlockType)arg2;
- (void)consumeCodeWithGuid:(id)arg1;
- (id)initWithBlockForUpdates:(CDUnknownBlockType)arg1;

@end

@interface IMPersonRegistrar : NSObject
{
    NSMutableDictionary *_personMap;
}

+ (id)sharedInstance;
@property(retain) NSMutableDictionary *_personMap; // @synthesize _personMap;

- (void)_dumpAllPersons;
- (id)personForUniqueID:(id)arg1;
- (void)unregisterPerson:(id)arg1;
- (void)registerPerson:(id)arg1;

@end

@interface IMCloudKitSyncProgress : NSObject
{
    BOOL _shouldShowProgressBar;
    BOOL _shouldShowIndeterminateProgress;
    BOOL _shouldShowUserActionLabel;
    BOOL _shouldShowUserMessageLabel;
    NSString *_progressLabel;
    double _progressBarValue;
    double _progressBarMax;
    NSString *_userMessageLabel;
    NSString *_actionLabel;
    long long _actionType;
    IMCloudKitSyncState *_syncState;
//    IMCloudKitSyncStatistics *_syncStatistics;
    double _broadcastDeferralOverride;
}

@property(nonatomic) double broadcastDeferralOverride; // @synthesize broadcastDeferralOverride=_broadcastDeferralOverride;
//@property(readonly, nonatomic) IMCloudKitSyncStatistics *syncStatistics; // @synthesize syncStatistics=_syncStatistics;
@property(readonly, nonatomic) IMCloudKitSyncState *syncState; // @synthesize syncState=_syncState;
@property(nonatomic) long long actionType; // @synthesize actionType=_actionType;
@property(retain, nonatomic) NSString *actionLabel; // @synthesize actionLabel=_actionLabel;
@property(retain, nonatomic) NSString *userMessageLabel; // @synthesize userMessageLabel=_userMessageLabel;
@property(nonatomic) BOOL shouldShowUserMessageLabel; // @synthesize shouldShowUserMessageLabel=_shouldShowUserMessageLabel;
@property(nonatomic) BOOL shouldShowUserActionLabel; // @synthesize shouldShowUserActionLabel=_shouldShowUserActionLabel;
@property(nonatomic) double progressBarMax; // @synthesize progressBarMax=_progressBarMax;
@property(nonatomic) double progressBarValue; // @synthesize progressBarValue=_progressBarValue;
@property(nonatomic) BOOL shouldShowIndeterminateProgress; // @synthesize shouldShowIndeterminateProgress=_shouldShowIndeterminateProgress;
@property(nonatomic) BOOL shouldShowProgressBar; // @synthesize shouldShowProgressBar=_shouldShowProgressBar;
@property(retain, nonatomic) NSString *progressLabel; // @synthesize progressLabel=_progressLabel;

@property(readonly, nonatomic, getter=isHidden) BOOL hidden; // @dynamic hidden;
@property(readonly, nonatomic) NSArray *errors; // @dynamic errors;
@property(readonly, nonatomic) double remainingItems; // @dynamic remainingItems;
@property(readonly, nonatomic) double percentComplete; // @dynamic percentComplete;
- (id)description;
- (void)configureSelf;
@property(readonly, nonatomic) NSString *percentCompleteString; // @dynamic percentCompleteString;
- (id)initWithSyncState:(id)arg1 syncStatistics:(id)arg2;
- (id)init;

@end

@interface IMCloudKitSyncProgressIsSyncing : IMCloudKitSyncProgress
{
}

- (void)configureSelf;

@end

@interface IMCloudKitPausedSyncProgress : IMCloudKitSyncProgress
{
}

- (void)configureSelf;

@end

@interface IMCloudKitAccountNeedsRepairSyncProgress : IMCloudKitSyncProgress
{
}

- (void)configureSelf;

@end

@interface IMCloudKitDeviceStorageIsFullSyncProgress : IMCloudKitSyncProgress
{
}

- (void)configureSelf;

@end

@interface IMCloudKitCloudKitStorageIsFullSyncProgress : IMCloudKitSyncProgress
{
}

- (void)configureSelf;

@end

@interface IMCloudKitHiddenSyncProgress : IMCloudKitSyncProgress
{
}

- (id)description;
- (BOOL)isHidden;

@end

@interface IMCloudKitKeyRollPendingErrorProgress : IMCloudKitSyncProgress
{
}

- (void)configureSelf;

@end

@interface IMAddressBook : NSObject
{
}

+ (BOOL)addressBookEnabled;
+ (void)setAddressBookEnabled:(BOOL)arg1;
+ (id)abAddressBook;
+ (void)_watchLocaleChanges;
+ (void)_localeChanged:(id)arg1;

@end


@interface IMBalloonApp : NSObject
{
    BOOL _isBetaPlugin;
    BOOL _isLaunchProhibited;
    BOOL _isStickerPackOnly;
    BOOL _showInBrowser;
    BOOL _shouldBalloonHideAppIcon;
    BOOL _shouldHideAppSwitcher;
    BOOL _canSendDataPayloads;
    BOOL _pluginLoaded;
    Class _browserClass;
    Class _dataSourceClass;
    Class _customTypingIndicatorLayerClass;
    Class _bubbleClass;
    Class _entryClass;
    NSBundle *_appBundle;
    NSBundle *_pluginBundle;
    NSNumber *_itemID;
    NSString *_browserDisplayName;
    NSString *_identifier;
    NSString *_version;
//    id <PKPlugIn> _plugin;
    unsigned long long _presentationContexts;
}

+ (unsigned long long)presentationContextsForInfoPlistArray:(id)arg1 isStickerPackOnly:(BOOL)arg2;
+ (void)_setUnremovableDisabledApps:(id)arg1;
+ (id)_unremovableDisabledApps;
+ (id)appWithPluginBundle:(id)arg1 appBundle:(id)arg2;
+ (id)appWithPluginBundle:(id)arg1;
+ (id)appWithPluginBundle:(id)arg1 extension:(id)arg2;
+ (id)appWithPluginBundle:(id)arg1 pluginKitProxy:(id)arg2 extension:(id)arg3;
@property(nonatomic) BOOL pluginLoaded; // @synthesize pluginLoaded=_pluginLoaded;
@property(nonatomic) unsigned long long presentationContexts; // @synthesize presentationContexts=_presentationContexts;
//@property(retain, nonatomic) id <PKPlugIn> plugin; // @synthesize plugin=_plugin;
@property(readonly, nonatomic) NSString *version; // @synthesize version=_version;
@property(retain, nonatomic) NSString *identifier; // @synthesize identifier=_identifier;
@property(retain, nonatomic) NSString *browserDisplayName; // @synthesize browserDisplayName=_browserDisplayName;
@property(retain, nonatomic) NSNumber *itemID; // @synthesize itemID=_itemID;
@property(retain, nonatomic) NSBundle *pluginBundle; // @synthesize pluginBundle=_pluginBundle;
@property(retain, nonatomic) NSBundle *appBundle; // @synthesize appBundle=_appBundle;
@property(nonatomic) BOOL canSendDataPayloads; // @synthesize canSendDataPayloads=_canSendDataPayloads;
@property(nonatomic) BOOL shouldHideAppSwitcher; // @synthesize shouldHideAppSwitcher=_shouldHideAppSwitcher;
@property(nonatomic) BOOL shouldBalloonHideAppIcon; // @synthesize shouldBalloonHideAppIcon=_shouldBalloonHideAppIcon;
@property(nonatomic) BOOL showInBrowser; // @synthesize showInBrowser=_showInBrowser;
@property(readonly, nonatomic) BOOL isStickerPackOnly; // @synthesize isStickerPackOnly=_isStickerPackOnly;
@property(nonatomic) BOOL isLaunchProhibited; // @synthesize isLaunchProhibited=_isLaunchProhibited;
@property(readonly, nonatomic) BOOL isBetaPlugin; // @synthesize isBetaPlugin=_isBetaPlugin;
@property(retain, nonatomic) Class entryClass; // @synthesize entryClass=_entryClass;
@property(retain, nonatomic) Class bubbleClass; // @synthesize bubbleClass=_bubbleClass;
@property(retain, nonatomic) Class customTypingIndicatorLayerClass; // @synthesize customTypingIndicatorLayerClass=_customTypingIndicatorLayerClass;
@property(retain, nonatomic) Class dataSourceClass; // @synthesize dataSourceClass=_dataSourceClass;
@property(retain, nonatomic) Class browserClass; // @synthesize browserClass=_browserClass;

@property(nonatomic) BOOL isEnabled;
- (id)proxyWithErrorHandle:(CDUnknownBlockType)arg1;
- (id)extensionConnection;
- (void)_loadBundle;
- (id)initWithPluginBundle:(id)arg1 appBundle:(id)arg2;

@end

@interface IMActionsController : NSObject
{
}

+ (id)actionsController;

@end

@interface IMIDStatusController : NSObject
{
    NSRecursiveLock *_servicesLock;
    NSMutableSet *_servicesRegistered;
}

+ (id)sharedInstance;
@property(retain, nonatomic) NSMutableSet *_servicesRegistered; // @synthesize _servicesRegistered;
@property(retain, nonatomic) NSRecursiveLock *_servicesLock; // @synthesize _servicesLock;

- (long long)statusForID:(id)arg1 onService:(id)arg2;
- (void)requestStatusForID:(id)arg1 onAccount:(id)arg2;
- (void)requestStatusForID:(id)arg1 onService:(id)arg2;
- (void)_requestStatusForID:(id)arg1 onService:(id)arg2 onAccount:(id)arg3;
- (long long)_idStatusForID:(id)arg1 onAccount:(id)arg2;
- (long long)_statusForCanonicalizedID:(id)arg1 onService:(id)arg2;
- (long long)_idStatusForID:(id)arg1 onService:(id)arg2;
- (long long)__statusForID:(id)arg1 onService:(id)arg2 isCanonicalized:(BOOL)arg3;
- (void)_processIDStatusResponseForURI:(id)arg1 resultStatus:(long long)arg2 forService:(id)arg3;
- (id)init;

@end

@interface IMBalloonPlugin : NSObject
{
    BOOL _pluginLoaded;
    NSString *_browserImageName;
    NSString *_browserImagePath;
    long long _browserGroup;
    NSBundle *_bundle;
//    id <PKPlugIn> _plugin;
    IMBalloonApp *_app;
    NSMutableDictionary *_messageToDatasourceMap;
    NSMutableDictionary *_messageToBalloonControllerMap;
    Class _bubbleClass;
    Class _browserClass;
    Class _dataSourceClass;
    Class _customTypingIndicatorLayerClass;
    Class _entryClass;
    NSMutableArray *_balloonControllerPool;
}

@property(retain, nonatomic) NSMutableArray *balloonControllerPool; // @synthesize balloonControllerPool=_balloonControllerPool;
@property(retain, nonatomic) Class entryClass; // @synthesize entryClass=_entryClass;
@property(retain, nonatomic) Class customTypingIndicatorLayerClass; // @synthesize customTypingIndicatorLayerClass=_customTypingIndicatorLayerClass;
@property(retain, nonatomic) Class dataSourceClass; // @synthesize dataSourceClass=_dataSourceClass;
@property(retain, nonatomic) Class browserClass; // @synthesize browserClass=_browserClass;
@property(retain, nonatomic) Class bubbleClass; // @synthesize bubbleClass=_bubbleClass;
@property(retain, nonatomic) NSMutableDictionary *messageToBalloonControllerMap; // @synthesize messageToBalloonControllerMap=_messageToBalloonControllerMap;
@property(retain, nonatomic) NSMutableDictionary *messageToDatasourceMap; // @synthesize messageToDatasourceMap=_messageToDatasourceMap;
@property(retain, nonatomic) IMBalloonApp *app; // @synthesize app=_app;
@property(nonatomic) BOOL pluginLoaded; // @synthesize pluginLoaded=_pluginLoaded;
//@property(retain, nonatomic) id <PKPlugIn> plugin; // @synthesize plugin=_plugin;
@property(retain, nonatomic) NSBundle *bundle; // @synthesize bundle=_bundle;
@property(nonatomic) long long browserGroup; // @synthesize browserGroup=_browserGroup;
@property(retain, nonatomic) NSString *browserImagePath; // @synthesize browserImagePath=_browserImagePath;
@property(retain, nonatomic) NSString *browserImageName; // @synthesize browserImageName=_browserImageName;

@property(readonly, nonatomic) unsigned long long presentationContexts;
- (void)setIdentifier:(id)arg1;
@property(readonly, retain, nonatomic) NSBundle *pluginBundle;
@property(readonly, retain, nonatomic) NSBundle *appBundle;
@property(readonly, retain, nonatomic) NSString *browserDisplayName;
- (BOOL)isStickerPackOnly;
@property(readonly, nonatomic) BOOL shouldHideAppSwitcher;
@property(readonly, nonatomic) BOOL isEnabled;
@property(readonly, nonatomic) BOOL showInBrowser;
@property(readonly, nonatomic, getter=isBetaPlugin) BOOL betaPlugin;
@property(readonly, nonatomic) NSString *version;
@property(readonly, retain, nonatomic) NSString *identifier;
- (id)dataSourceForPluginPayload:(id)arg1;
- (void)insertDataSource:(id)arg1 forGUID:(id)arg2;
- (id)existingDataSourceForMessageGUID:(id)arg1;
- (BOOL)supportsControllerReuse;
- (void)removeController:(id)arg1 forChatItem:(id)arg2;
- (void)moveController:(id)arg1 toReusePoolFromChatItem:(id)arg2;
- (id)balloonControllerForChatItem:(id)arg1;
- (id)existingBalloonControllerWithMessageGUID:(id)arg1;
- (id)_getControllerFromReusePoolForChatItem:(id)arg1;
- (void)unloadBundle;
- (void)dealloc;
- (id)initWithBundle:(id)arg1 app:(id)arg2;
- (id)initWithBundle:(id)arg1;
- (id)init;

@end

@interface IMBalloonBrowserPlugin : IMBalloonPlugin
{
}

- (BOOL)isBetaPlugin;
- (id)version;
- (id)initWithIdentifier:(id)arg1 browserDisplayName:(id)arg2 browserImageName:(id)arg3 browserClass:(Class)arg4 presentationContext:(unsigned long long)arg5;
- (id)initWithIdentifier:(id)arg1 browserDisplayName:(id)arg2 browserImageName:(id)arg3;

@end

@interface IMBalloonAppExtension : IMBalloonPlugin
{
    BOOL _canSendDataPayloads;
    BOOL _shouldBalloonHideAppIcon;
//    NSExtension *_extension;
//    LSPlugInKitProxy *_proxy;
    NSUUID *_requestIdentifier;
}

@property(nonatomic) BOOL shouldBalloonHideAppIcon; // @synthesize shouldBalloonHideAppIcon=_shouldBalloonHideAppIcon;
@property(nonatomic) BOOL canSendDataPayloads; // @synthesize canSendDataPayloads=_canSendDataPayloads;
@property NSUUID *requestIdentifier; // @synthesize requestIdentifier=_requestIdentifier;
//@property(retain, nonatomic) LSPlugInKitProxy *proxy; // @synthesize proxy=_proxy;
//@property(readonly, retain, nonatomic) NSExtension *extension; // @synthesize extension=_extension;

@property(readonly, retain, nonatomic) NSNumber *itemID;
@property(readonly, nonatomic) BOOL isLaunchProhibited;
//@property(readonly, retain, nonatomic) id <PKPlugIn> plugin;
- (BOOL)isBetaPlugin;
- (id)version;
- (id)proxyWithErrorHandle:(CDUnknownBlockType)arg1;
- (id)extensionConnection;
- (id)initWithPluginBundle:(id)arg1 appBundle:(id)arg2;
- (id)_initWithPluginBundle:(id)arg1 extension:(id)arg2 pluginKitProxyClass:(Class)arg3;
- (id)initWithPluginBundle:(id)arg1 extension:(id)arg2;
- (id)initWithPluginBundle:(id)arg1 pluginKitProxy:(id)arg2 extension:(id)arg3;

@end

@interface IMBalloonPluginManager : NSObject
{
    NSMutableDictionary *_pluginsMap;
    id _extensionMatchingContext;
    NSString *_pluginMetaDataFolder;
    NSMutableDictionary *_pluginIDToMetadataCache;
    NSMutableSet *_pluginsToRemoveAfterExtensionsUpdate;
}

+ (BOOL)isRunningPPT;
+ (void)setIsRunningPPT:(BOOL)arg1;
+ (id)_extensionBlacklist;
+ (id)sharedInstance;
@property(retain, nonatomic) NSMutableSet *pluginsToRemoveAfterExtensionsUpdate; // @synthesize pluginsToRemoveAfterExtensionsUpdate=_pluginsToRemoveAfterExtensionsUpdate;
@property(retain, nonatomic) NSMutableDictionary *pluginIDToMetadataCache; // @synthesize pluginIDToMetadataCache=_pluginIDToMetadataCache;
@property(retain, nonatomic) NSString *pluginMetaDataFolder; // @synthesize pluginMetaDataFolder=_pluginMetaDataFolder;
@property(retain, nonatomic) id extensionMatchingContext; // @synthesize extensionMatchingContext=_extensionMatchingContext;
@property(retain, nonatomic) NSMutableDictionary *pluginsMap; // @synthesize pluginsMap=_pluginsMap;

- (id)balloonPluginForBundleID:(id)arg1;
- (id)allPlugins;
- (void)insertDataSource:(id)arg1 forGUID:(id)arg2;
- (id)existingDataSourceForMessageGUID:(id)arg1 bundleID:(id)arg2;
- (id)dataSourceForPluginPayload:(id)arg1;
- (id)_fallBackMessagesExtensionPluginForBundleID:(id)arg1;
- (Class)dataSourceClassForBundleID:(id)arg1;
- (void)_loadAllDataSources;
- (void)_findPluginsInPathInternal:(id)arg1;
- (void)_findPluginsInPaths:(id)arg1;
- (void)_moveExtensionDataSourcesFromMessagesExtensionPluginToAppExtensions;
- (BOOL)_isExtensionBlackListed:(id)arg1;
- (BOOL)_isServerBlackListedBundle:(id)arg1 serverBag:(id)arg2;
- (void)setPluginEnabled:(BOOL)arg1 identifier:(id)arg2;
- (void)_removePluginsForIdentifiers:(id)arg1;
- (void)_removePluginsWithDelay;
- (void)removePluginWithBundleID:(id)arg1;
- (id)_insertPluginForExtension:(id)arg1 balloonProviderBundle:(id)arg2 andTimingCollection:(id)arg3;
- (id)_insertPluginForAppBundle:(id)arg1 balloonProviderBundle:(id)arg2;
- (void)_updatePluginsForExtensions:(id)arg1;
- (void)_updatePluginsForBundles:(id)arg1;
- (void)_setPluginsToRemoveAndCallSelectorWithDelay:(id)arg1;
- (id)_appProxyBundleIdentifiersForAppPlugins;
- (void)_loadAppBundleDataSources;
- (void)_loadAppExtensionDataSources;
- (void)_clearPluginMetadataForUninstalledApps;
- (void)_deleteMetaDataForPlugins:(id)arg1;
- (id)_pluginsForWhichWeHaveMetadata;
- (id)_proxyIdentifiersForPlugins;
- (id)_identifiersForAppPlugins;
- (id)conversationID:(id)arg1 appID:(id)arg2;
- (id)recipientIDForRecipient:(id)arg1 appID:(id)arg2;
- (id)localParticipantIdentifierForAppID:(id)arg1 conversationID:(id)arg2;
- (void)_storeMetadata:(id)arg1 _forPlugin:(id)arg2;
- (id)_metadataForPluginIdentifier:(id)arg1;
- (id)_infoPlistPathForPluginCreatingFolderIfNeeded:(id)arg1;
- (id)_pluginPlistPath:(id)arg1;
- (void)dealloc;
- (void)pluginChatItem:(id)arg1 didRelenquishNonResuableController:(id)arg2;
- (void)pluginChatItem:(id)arg1 didRelinquishReusableController:(id)arg2;
- (id)init;

@end

@interface IMChatHistoryController : NSObject
{
    NSMutableDictionary *_runningQueries;
}

+ (id)sharedInstance;
@property(retain) NSMutableDictionary *_runningQueries; // @synthesize _runningQueries;

- (void)databaseNoLongerFull;
- (void)databaseFull;
- (void)messageQuery:(id)arg1 finishedWithResult:(id)arg2 chatGUIDs:(id)arg3;
- (void)loadMessageWithGUID:(id)arg1 completionBlock:(CDUnknownBlockType)arg2;
- (void)dealloc;
- (id)init;

@end

@interface IMCoreAutomationHook : NSObject
{
    IMAccount *_imessageAccount;
}

+ (id)stringFromAutomationErrorCode:(long long)arg1;

- (id)existingChatForGroupID:(id)arg1 error:(id *)arg2 results:(id)arg3;
- (id)handlesFromStrings:(id)arg1 error:(id *)arg2 results:(id)arg3;
- (id)chatForHandles:(id)arg1 error:(id *)arg2 results:(id)arg3;
@property(readonly) IMAccount *bestiMessageAccount;

@end

@interface IMDDController : NSObject
{
    NSObject<OS_dispatch_queue> *_scannerQueue;
}

+ (id)sharedInstance;

- (void)scanMessage:(id)arg1 waitUntilDone:(BOOL)arg2 completionBlock:(CDUnknownBlockType)arg3;
- (BOOL)_scanMessageUsingScanner:(id)arg1 attributedString:(id)arg2;
- (void)scanMessage:(id)arg1 completionBlock:(CDUnknownBlockType)arg2;
- (id)scannerQueue;
- (struct __DDScanner *)sharedScanner;
- (id)init;

@end

@interface IMAutomationMessageSend : NSObject
{
    NSMutableSet *_pendingSendGUIDs;
    NSMutableDictionary *_sentMessageInfo;
}

@property(retain, nonatomic) NSMutableDictionary *sentMessageInfo; // @synthesize sentMessageInfo=_sentMessageInfo;
@property(retain, nonatomic) NSMutableSet *pendingSendGUIDs; // @synthesize pendingSendGUIDs=_pendingSendGUIDs;

- (id)dictionaryFromGUID:(id)arg1;
- (id)fileSizeForMessageGUID:(id)arg1 withFilePathIndex:(long long)arg2;
- (id)uploadAttachmentToCloudkitWithMessageGUID:(id)arg1 andFilePathIndex:(long long)arg2;
- (id)clearAttachmentsUploadedToCloudkit;
- (id)deleteAttachmentWithMessageGUID:(id)arg1 andFilePathIndex:(long long)arg2;
- (id)loadHighResolutionFileForMessageGUID:(id)arg1 withFilePathIndex:(long long)arg2;
- (id)sendIMMessage:(id)arg1 chat:(id)arg2 timeOut:(double)arg3 resultDict:(id)arg4 error:(id *)arg5;
- (id)sendMessage:(id)arg1 destinationID:(id)arg2 filePaths:(id)arg3 groupID:(id)arg4 bundleID:(id)arg5 attributionInfoName:(id)arg6 service:(id)arg7 timeOut:(double)arg8 error:(id *)arg9;
- (id)sendMessage:(id)arg1 destinationID:(id)arg2 filePaths:(id)arg3 groupID:(id)arg4 service:(id)arg5 timeOut:(double)arg6 error:(id *)arg7;
- (id)createIMMessageToSendWithMessage:(id)arg1 filePaths:(id)arg2 bundleID:(id)arg3 attributionInfoName:(id)arg4;
- (id)init;
- (id)appendFilePathsWithGUIDs:(id)arg1 withText:(id)arg2;
- (void)deleteTmpFilePath:(id)arg1;
- (id)copyFilePathsToTmpLocation:(id)arg1;

@end

@interface IMSimulatedAccountController : IMAccountController
{
    NSMutableDictionary *_simulatedAccountsPerService;
}


- (id)init;
- (id)activeSMSAccount;
- (id)activeIMessageAccount;
- (id)activeAccounts;
- (void)setSimulatedAccounts:(id)arg1 forServiceNamed:(id)arg2;

@end

@interface IMSPIHandle : NSObject
{
    NSString *_address;
    NSString *_countryCode;
    BOOL _isMe;
    IMPerson *_imPerson;
    BOOL _haveFetchedIMPerson;
}

@property(readonly) BOOL isMe; // @synthesize isMe=_isMe;
@property(readonly) NSString *countryCode; // @synthesize countryCode=_countryCode;
@property(readonly) NSString *address; // @synthesize address=_address;

- (unsigned long long)hash;
- (BOOL)isEqual:(id)arg1;
@property(readonly) NSString *cnContactID;
@property(readonly) NSString *displayName;
- (id)person;
@property(readonly) NSString *businessName;
@property(readonly) BOOL isBusiness;
- (id)description;
- (id)initWithAddress:(id)arg1 countryCode:(id)arg2 isMe:(BOOL)arg3;

@end

@interface IMSPIRecentEvent : NSObject
{
    NSString *_handle;
    NSDate *_date;
    NSString *_labelID;
}

@property(retain) NSString *labelID; // @synthesize labelID=_labelID;
@property(retain) NSDate *date; // @synthesize date=_date;
@property(retain) NSString *handle; // @synthesize handle=_handle;

- (id)description;
- (id)initWithLabelID:(id)arg1 date:(id)arg2;
- (id)initWithHandle:(id)arg1 date:(id)arg2;

@end

@interface IMSPIAttachment : NSObject
{
    NSString *_guid;
    NSURL *_fileUrl;
    long long _fileTransferState;
    NSString *_uti;
    BOOL _isSticker;
    BOOL _isOutgoing;
    NSDictionary *_attributionInfo;
}

@property(retain) NSDictionary *attributionInfo; // @synthesize attributionInfo=_attributionInfo;
@property BOOL isOutgoing; // @synthesize isOutgoing=_isOutgoing;
@property BOOL isSticker; // @synthesize isSticker=_isSticker;
@property(retain) NSString *uti; // @synthesize uti=_uti;
@property(retain) NSString *guid; // @synthesize guid=_guid;
@property long long fileTransferState; // @synthesize fileTransferState=_fileTransferState;
@property(retain) NSURL *fileUrl; // @synthesize fileUrl=_fileUrl;

- (id)description;
- (id)bundleID;
- (id)initWithGuid:(id)arg1 fileUrl:(id)arg2 transferState:(long long)arg3 uti:(id)arg4 isSticker:(BOOL)arg5 isOutgoing:(BOOL)arg6 attributionInfo:(id)arg7;

@end

@interface IMSPIMessage : NSObject
{
    NSString *_guid;
    NSArray *_chatGuids;
    NSString *_text;
    NSAttributedString *_attributedText;
    NSString *_subject;
    NSString *_effect;
    NSArray *_recipients;
    NSDate *_date;
    NSDate *_dateRead;
    NSDate *_lastReadDate;
    IMSPIHandle *_sender;
    long long _messageID;
    NSArray *_attachments;
    BOOL _isOutgoing;
    BOOL _isRead;
    BOOL _isAudioMessage;
    BOOL _isGroupChat;
    long long _itemType;
    NSString *_groupID;
    NSString *_chatIdentifier;
    NSString *_displayName;
    NSString *_service;
    IMSPIMessage *_referencedMessage;
    NSString *_bundleId;
    long long _messageType;
    NSString *_displayAppName;
//    LPLinkMetadata *_richLinkMetadata;
//    PKCurrencyAmount *_peerPaymentAmount;
}

//@property(retain) PKCurrencyAmount *peerPaymentAmount; // @synthesize peerPaymentAmount=_peerPaymentAmount;
//@property(retain) LPLinkMetadata *richLinkMetadata; // @synthesize richLinkMetadata=_richLinkMetadata;
@property(retain) NSString *displayAppName; // @synthesize displayAppName=_displayAppName;
@property long long messageType; // @synthesize messageType=_messageType;
@property(retain) NSString *bundleId; // @synthesize bundleId=_bundleId;
@property(retain) IMSPIMessage *referencedMessage; // @synthesize referencedMessage=_referencedMessage;
@property(retain) NSDate *lastReadDate; // @synthesize lastReadDate=_lastReadDate;
@property(retain) NSDate *dateRead; // @synthesize dateRead=_dateRead;
@property(retain) NSString *service; // @synthesize service=_service;
@property(retain) NSString *displayName; // @synthesize displayName=_displayName;
@property(retain) NSString *effect; // @synthesize effect=_effect;
@property BOOL isGroupChat; // @synthesize isGroupChat=_isGroupChat;
@property(retain) NSString *chatIdentifier; // @synthesize chatIdentifier=_chatIdentifier;
@property(retain) NSString *groupID; // @synthesize groupID=_groupID;
@property long long itemType; // @synthesize itemType=_itemType;
@property(retain) NSArray *attachments; // @synthesize attachments=_attachments;
@property(retain) NSArray *chatGuids; // @synthesize chatGuids=_chatGuids;
@property BOOL isAudioMessage; // @synthesize isAudioMessage=_isAudioMessage;
@property(retain) NSDate *date; // @synthesize date=_date;
@property(retain) NSString *subject; // @synthesize subject=_subject;
@property(retain) NSArray *recipients; // @synthesize recipients=_recipients;
@property(retain) IMSPIHandle *sender; // @synthesize sender=_sender;
@property(retain) NSString *text; // @synthesize text=_text;
@property BOOL isOutgoing; // @synthesize isOutgoing=_isOutgoing;
@property BOOL isRead; // @synthesize isRead=_isRead;
@property(retain) NSAttributedString *attributedText; // @synthesize attributedText=_attributedText;
@property long long messageID; // @synthesize messageID=_messageID;
@property(retain) NSString *guid; // @synthesize guid=_guid;

@property(readonly) NSURL *url;
- (id)description;
- (void)dealloc;

@end

@interface IMPluginPayload : NSObject <NSSecureCoding, NSCopying>
{
    BOOL _update;
    BOOL _sticker;
    BOOL _shouldExpire;
    BOOL _isPlayed;
    BOOL _isFromMe;
    NSAttributedString *_text;
    NSData *_data;
    NSURL *_url;
    NSString *_breadcrumbText;
    NSString *_statusText;
    NSDictionary *_userInfo;
    NSString *_messageGUID;
    NSDate *_time;
    NSString *_associatedMessageGUID;
    NSString *_pluginBundleID;
    NSArray *_consumedSessionPayloads;
    NSString *_pluginSessionGUID;
//    DDScannerResult *_dataDetectedResult;
    NSArray *_attachments;
    IMBalloonPluginDataSource *_datasource;
    NSString *_sender;
}

+ (BOOL)supportsSecureCoding;
@property(copy, nonatomic) NSString *sender; // @synthesize sender=_sender;
@property(nonatomic) BOOL isFromMe; // @synthesize isFromMe=_isFromMe;
@property(nonatomic) __weak IMBalloonPluginDataSource *datasource; // @synthesize datasource=_datasource;
@property(retain, nonatomic) NSArray *attachments; // @synthesize attachments=_attachments;
//@property(retain, nonatomic) DDScannerResult *dataDetectedResult; // @synthesize dataDetectedResult=_dataDetectedResult;
@property(retain, nonatomic) NSString *pluginSessionGUID; // @synthesize pluginSessionGUID=_pluginSessionGUID;
@property(nonatomic) BOOL isPlayed; // @synthesize isPlayed=_isPlayed;
@property(retain, nonatomic) NSArray *consumedSessionPayloads; // @synthesize consumedSessionPayloads=_consumedSessionPayloads;
@property(retain, nonatomic) NSString *pluginBundleID; // @synthesize pluginBundleID=_pluginBundleID;
@property(retain, nonatomic) NSString *associatedMessageGUID; // @synthesize associatedMessageGUID=_associatedMessageGUID;
@property(retain, nonatomic) NSDate *time; // @synthesize time=_time;
@property(retain, nonatomic) NSString *messageGUID; // @synthesize messageGUID=_messageGUID;
@property(retain, nonatomic) NSDictionary *userInfo; // @synthesize userInfo=_userInfo;
@property(nonatomic) BOOL shouldExpire; // @synthesize shouldExpire=_shouldExpire;
@property(nonatomic, getter=isSticker) BOOL sticker; // @synthesize sticker=_sticker;
@property(nonatomic, getter=isUpdate) BOOL update; // @synthesize update=_update;
@property(retain, nonatomic) NSString *statusText; // @synthesize statusText=_statusText;
@property(retain, nonatomic) NSString *breadcrumbText; // @synthesize breadcrumbText=_breadcrumbText;
@property(retain, nonatomic) NSURL *url; // @synthesize url=_url;
@property(retain, nonatomic) NSData *data; // @synthesize data=_data;
@property(retain, nonatomic) NSAttributedString *text; // @synthesize text=_text;

- (id)copyWithZone:(struct _NSZone *)arg1;
- (id)initWithCoder:(id)arg1;
- (void)encodeWithCoder:(id)arg1;
- (BOOL)isEqual:(id)arg1;
- (unsigned long long)hash;
- (BOOL)isEqualToPluginPayload:(id)arg1;
@property(readonly, nonatomic) BOOL shouldHideAttachments;
- (void)addAttachmentsFromFileTransferGUIDs:(id)arg1;
- (id)initWithMessageItem:(id)arg1;
- (id)initWithMessage:(id)arg1;

@end


@interface IMBalloonPluginAttributionController : NSObject
{
    BOOL _hasPerformedFirstAppExtensionLoad;
    NSMutableDictionary *_expiredBundleIDToTimestampMap;
    NSMutableDictionary *_bundleIDsDisplayingAttribution;
}

+ (id)sharedInstance;
@property(nonatomic) BOOL hasPerformedFirstAppExtensionLoad; // @synthesize hasPerformedFirstAppExtensionLoad=_hasPerformedFirstAppExtensionLoad;
@property(retain, nonatomic) NSMutableDictionary *bundleIDsDisplayingAttribution; // @synthesize bundleIDsDisplayingAttribution=_bundleIDsDisplayingAttribution;
@property(retain, nonatomic) NSMutableDictionary *expiredBundleIDToTimestampMap; // @synthesize expiredBundleIDToTimestampMap=_expiredBundleIDToTimestampMap;

- (void)_handleInstalledPluginsChanged;
- (void)_purgeLeastRecentlySeenAppBundleIDsIfNecessary;
- (void)_saveToFile;
- (double)_expiryTimeout;
- (id)_currentTimestamp;
- (BOOL)shouldShowAttributionForBundleID:(id)arg1;
- (void)didShowAttributionForBundleIDs:(id)arg1;
- (void)startExpiryTimer;
- (void)dealloc;
- (id)init;

@end

@interface NSArray (IMItems)
@property(readonly, nonatomic) IMMessageItem *lastMessageItem;
@property(readonly, nonatomic) IMMessageItem *firstMessageItem;
@end

@interface NSArray (IMTranscriptChatItems)
- (id)indexesOfPartsOfMessageItem:(id)arg1;
- (id)indexesOfPartsOfMessage:(id)arg1;
@end

@interface IMRecentItemsList (FetchUtilities)
- (void)loadRecentHandwritingsAndStickersWithThumbnailSize:(struct CGSize)arg1 completion:(CDUnknownBlockType)arg2;
- (void)loadRecentHandwritingsWithThumbnailSize:(struct CGSize)arg1 completion:(CDUnknownBlockType)arg2;
- (void)loadRecentStickers:(CDUnknownBlockType)arg1;
@end

@interface NSArray (IMChatItems)
- (id)__imItems;
- (void)__enumerateItemsWithOptions:(unsigned long long)arg1 usingBlock:(CDUnknownBlockType)arg2;
- (id)__itemForChatItemAtIndex:(unsigned long long)arg1;
@property(readonly, nonatomic) IMMessageItem *__imLastMessageItem;
- (id)messages;
- (void)enumerateMessagesWithOptions:(NSEnumerationOptions)opts usingBlock:(void (^)(IMMessage *message, BOOL *stop))block;
- (id)messageForChatItemAtIndex:(unsigned long long)arg1;
@property(readonly, nonatomic) IMMessage *lastIncomingFinishedMessage;
@property(readonly, nonatomic) IMMessage *lastIncomingMessage;
@property(readonly, nonatomic) IMMessage *lastFinishedMessage;
@property(readonly, nonatomic) IMMessage *lastMessage;
@property(readonly, nonatomic) IMMessage *firstMessage;
@end

@interface NSString (IMAdditions)
+ (id)__im_handleIdentifierRegex;
- (id)__im_handleIdentifiers;
- (id)__im_IDForHandleIdentifierString;
- (id)__im_rangesOfHandleIdentifierStrings;
@end

@interface IMItem (IMChat_Internal)
+ (Class)contextClass;
- (id)_copy;
- (BOOL)_isInvitation;
- (void)_setInvitation:(BOOL)arg1;
- (id)_otherHandle;
- (id)_senderHandle;
- (void)_updateContextWithSenderHandle:(id)arg1 otherHandle:(id)arg2;
- (id)message;
@end

@interface IMMessageItem (IMChat_Internal)
+ (Class)contextClass;
- (id)_copyWithFlags:(unsigned long long)arg1;
- (id)_copy;
- (BOOL)_isInvitation;
- (void)_setInivtation:(BOOL)arg1;
- (id)message;
@end

@interface IMMessageItem (IMCoreDescription)
- (id)descriptionForPurpose:(long long)arg1 isGroupMessage:(BOOL)arg2 messageDataSource:(CDUnknownBlockType)arg3 attachmentDataSource:(CDUnknownBlockType)arg4;
@end

@interface IMItem (IMItemsController)
- (BOOL)isIncomingTypingOrCancelTypingMessage;
- (BOOL)isTypingOrCancelTypingMessage;
@end

@interface IMMessageItem (IMItemsController)
- (BOOL)isIncomingTypingOrCancelTypingMessage;
- (BOOL)isTypingOrCancelTypingMessage;
- (BOOL)isCancelTypingMessage;
- (BOOL)isIncomingTypingMessage;
- (BOOL)isSystemMessage;
@end

@interface IMAssociatedMessageItem (IMItemsController)
- (BOOL)isIncomingTypingOrCancelTypingMessage;
- (BOOL)isTypingOrCancelTypingMessage;
- (BOOL)isCancelTypingMessage;
- (BOOL)isIncomingTypingMessage;
@end

@interface NSString (IMCoreIDSLookupAdditions)
- (id)idsFormat;
@end


@interface IMItem (IMTranscriptChatItemRules)
- (BOOL)shouldGenerateTopLevelChatItem;
- (id)_serviceHandle;
- (id)_service;
- (id)_newChatItems;
- (BOOL)_hasMessageChatItem;
@end

@interface IMMessageItem (IMTranscriptChatItemRules)
- (BOOL)isExtensibleMessageWithPluginPayload:(id *)arg1;
- (id)_service;
- (id)_newChatItemsWithFilteredChat:(BOOL)arg1 isBusiness:(BOOL)arg2 parentChatIsSpam:(BOOL)arg3 hasKnownParticipants:(BOOL)arg4;
- (id)_newChatItems;
- (BOOL)_hasMessageChatItem;
@end

@interface IMParticipantChangeItem (IMTranscriptChatItemRules)
- (id)_newChatItems;
@end

@interface IMGroupTitleChangeItem (IMTranscriptChatItemRules)
- (id)_newChatItems;
@end

@interface IMLocationShareStatusChangeItem (IMTranscriptChatItemRules)
- (id)_newChatItems;
- (BOOL)_hasMessageChatItem;
@end

@interface IMTUConversationItem (IMTranscriptChatItemRules)
- (BOOL)_hasMessageChatItem;
- (id)_newChatItems;
@end

@interface IMMessageActionItem (IMTranscriptChatItemRules)
- (id)_newChatItems;
@end

@interface IMAssociatedMessageItem (IMTranscriptChatItemRules)
- (BOOL)shouldGenerateTopLevelChatItem;
- (id)_newChatItemsWithFilteredChat:(BOOL)arg1 isBusiness:(BOOL)arg2 parentChatIsSpam:(BOOL)arg3 hasKnownParticipants:(BOOL)arg4;
- (id)_newChatItems;
@end

@interface NSArray (IMHandleUtilities)
- (BOOL)equivalentToRecipients:(id)arg1;
@end

@interface NSString (IMDDUtilities)
- (struct __CFArray *)copyDDResultArrayByScanningStringForURLs;
@end

NS_ASSUME_NONNULL_BEGIN

typedef NS_ENUM(NSInteger, FZIDType) {
    FZUnknownIDType            = -1,
    FZPhoneNumberBasedID       =  0,
    FZEmailBasedID             =  1,
    FZDSBasedID                =  2,
    FZBusinessBasedID          =  3,
    FZTemporaryBasedID         =  4,
    FZPseudonymBasedID         =  5,
    FZHardwareBasedID          =  6,
    FZSIPBasedID               =  7,
};

@interface NSString (FezAdditions)

- (FZIDType) _FZIDType;
- (FZIDType) _FZBestGuessFZIDType;

- (NSString *) _IDFromFZIDType:(FZIDType)IDType;
- (NSString *) _stripFZIDPrefix;

- (NSString *) _URIFromFZIDType:(FZIDType)IDType;
- (NSString *) _bestGuessURI;

@end

extern BOOL IMStringIsEmail( NSString * string );
extern BOOL IMStringIsPhoneNumber( NSString * string );
extern BOOL IMStringIsBusinessID( NSString * string );
extern BOOL IMStringIsTemporaryID( NSString * string );
extern BOOL IMStringIsPseudonymID( NSString * string );
extern BOOL IMStringIsHardwareID( NSString * string );
extern BOOL IMStringIsSIPID( NSString * string );

enum {
    IMChatServiceForSendingAvailabilityErrorNone                        = 0,
    IMChatServiceForSendingAvailabilityErrorTooManyRecipients           = 1,
    IMChatServiceForSendingAvailabilityErrorIMessageRequired            = 2,
    IMChatServiceForSendingAvailabilityErrorMMSRequired                 = 3,
    IMChatServiceForSendingAvailabilityErrorNoAvailableServices         = 4,
    IMChatServiceForSendingAvailabilityErrorSpamFiltered                = 5,
};
typedef int8_t IMChatServiceForSendingAvailabilityError;

extern void IMChatCalculateServiceForSendingNewComposeMaybeForce(NSArray<NSString *> *canonicalIDSAddresses,
                                                                    NSString* _Nullable senderLastAddressedHandle,
                                                                    NSString* _Nullable senderLastAddressedSIMID,
                                                                    BOOL forceMMS,
                                                                    BOOL hasEmailRecipients,
                                                                    BOOL lastSentMessageWasNotDelivered,
                                                                    BOOL conversationWasDowngraded,
                                                                    BOOL hasConversationHistory,
                                                                    IMService * _Nullable previousService,
                                                                    void(^ _Nonnull completion)(BOOL allAddressesiMessageCapable,
                                                                                      NSDictionary * _Nullable perRecipientAvailability,
                                                                                      BOOL checkedServer,
                                                                                      IMChatServiceForSendingAvailabilityError error));

extern NSString *IMCopyIDForPhoneNumber(NSString *phoneNumber, NSString *_Nullable countryCode, BOOL useNetworkCountryCode) NS_RETURNS_RETAINED;
extern NSString *IMCopyIDForEmailAddress(NSString *emailAddress) NS_RETURNS_RETAINED;

NS_ASSUME_NONNULL_END
