diff --git a/Config Files/DebugDefaults.xcconfig b/Config Files/DebugDefaults.xcconfig deleted file mode 100644 index a0dda08..0000000 --- a/Config Files/DebugDefaults.xcconfig +++ /dev/null @@ -1,88 +0,0 @@ -// -// Many defines in this file are based on the selected SDK; it does not set an SDK. -// NOTE: This is inherited by ALL projects and all types, be careful in here -// - -// ####################### HEADER SEARCH PATHS ######################## - -HEADER_SEARCH_PATHS = $(SDK_DIR)/usr/local/include $(SDK_DIR)/usr/include - -// ##################### FRAMEWORK SEARCH PATHS ####################### - -ALWAYS_SEARCH_USER_PATHS = NO -FRAMEWORK_SEARCH_PATHS[sdk=macosx*] = $(SYSTEM_LIBRARY_DIR)/PrivateFrameworks $(SDK_DIR)/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks -FRAMEWORK_SEARCH_PATHS[sdk=embedded*] = $(SYSTEM_LIBRARY_DIR)/PrivateFrameworks -FRAMEWORK_SEARCH_PATHS[sdk=embeddedsimulator*] = $(SYSTEM_LIBRARY_DIR)/PrivateFrameworks - -// ###################### LIBRARY SEARCH PATHS ######################## - -LIBRARY_SEARCH_PATHS[sdk=embedded*] = $(SDK_DIR)/usr/local/lib $(SDK_DIR)/usr/lib -LIBRARY_SEARCH_PATHS[sdk=embeddedsimulator*] = $(SDK_DIR)/usr/local/lib $(SDK_DIR)/usr/lib - -// ############################# FLAGS ################################ - -OTHER_CFLAGS = -Wshadow -DIM_DEBUG -D_FORTIFY_SOURCE=2 -D__IMCORE_INTERNAL__ -Wno-error=deprecated-declarations -OTHER_CFLAGS[sdk=embedded*] = -Wshadow -DIM_DEBUG -D_FORTIFY_SOURCE=2 -DUSE_SYSTEMCONFIGURATION_PRIVATE_HEADERS -D__IMCORE_INTERNAL__ -Wno-error=deprecated-declarations -OTHER_CFLAGS[sdk=embeddedsimulator*] = -Wshadow -DIM_DEBUG -D_FORTIFY_SOURCE=2 -DUSE_SYSTEMCONFIGURATION_PRIVATE_HEADERS -D__IMCORE_INTERNAL__ -Wno-error=deprecated-declarations - -WARNING_CFLAGS = -Wno-error=deprecated-declarations - -// ######################### ARCHITECTURES ########################### - -ARCHS[sdk=macosx*] = $(ARCHS_STANDARD_64_BIT) - -VALID_ARCHS[sdk=macosx*] = x86_64 -VALID_ARCHS[sdk=embeddedsimulator*] = i386 x86_64 - -// ######################### CONFIGURATION ########################### - -CODE_SIGN_IDENTITY = - - -DYLIB_CURRENT_VERSION = 800 -DYLIB_COMPATIBILITY_VERSION = 1 - -CLANG_WARN_CONSTANT_CONVERSION = YES; -CLANG_WARN_ENUM_CONVERSION = YES; -CLANG_WARN_INT_CONVERSION = YES; -CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - -GCC_WARN_UNINITIALIZED_AUTOS = YES; -GCC_WARN_UNUSED_VARIABLE = YES; - -ONLY_ACTIVE_ARCH = YES - -TARGETED_DEVICE_FAMILY = 1,2 -TARGETED_DEVICE_FAMILY[sdk=watch*] = 4 - -// ######################## INSTALLATION ############################# - -SKIP_INSTALL = NO - -// ########################### CLANG ################################# - -CLANG_MODULES_AUTOLINK = NO -RUN_CLANG_STATIC_ANALYZER = YES - -// ######################### COMPILER ################################ - -GCC_VERSION = com.apple.compilers.llvm.clang.1_0; -GCC_WARN_ABOUT_RETURN_TYPE = YES - -// ######################### LANGUAGE MISC ########################### - -GCC_C_LANGUAGE_STANDARD = c99 - -// ########################## DEBUGGING ############################## - -GCC_OPTIMIZATION_LEVEL = 0 - -// ############################ MISC ################################# - -VERSIONING_SYSTEM = apple-generic - -// ############################ USER OVERRIDE ################################# - -// Override global settings in a git ignored UserDebug.xcconfig file at the repo root. -// I seem to have to restart Xcode if I add/remove this file. -#include? "UserDebug.xcconfig" - diff --git a/Config Files/OSXDebugDefaults.xcconfig b/Config Files/OSXDebugDefaults.xcconfig deleted file mode 100644 index 5630ba2..0000000 --- a/Config Files/OSXDebugDefaults.xcconfig +++ /dev/null @@ -1,5 +0,0 @@ -// -// To be used by OSX targets -// - -SDKROOT = macosx.internal \ No newline at end of file diff --git a/Config Files/OSXReleaseDefaults.xcconfig b/Config Files/OSXReleaseDefaults.xcconfig deleted file mode 100644 index 695d65e..0000000 --- a/Config Files/OSXReleaseDefaults.xcconfig +++ /dev/null @@ -1,5 +0,0 @@ -#include "OSXDebugDefaults.xcconfig" - -// -// To be used by OSX targets -// diff --git a/Config Files/ReleaseDefaults.xcconfig b/Config Files/ReleaseDefaults.xcconfig deleted file mode 100644 index be6e3e4..0000000 --- a/Config Files/ReleaseDefaults.xcconfig +++ /dev/null @@ -1,36 +0,0 @@ -#include "DebugDefaults.xcconfig" - -// #################### INSTALLATION FLAGS ##################### - -SKIP_INSTALL = NO - -// ####################### DEBUG FLAGS ######################### - -STRIP_INSTALLED_PRODUCT = YES -STRIP_STYLE = non-global; - -COPY_PHASE_STRIP = YES - -GCC_OPTIMIZATION_LEVEL = s -GCC_GENERATE_DEBUGGING_SYMBOLS = YES -GCC_SYMBOLS_PRIVATE_EXTERN = YES - -ONLY_ACTIVE_ARCH = NO - -DEBUG_INFORMATION_FORMAT = dwarf-with-dsym - -// ######################### C FLAGS ########################### - -OTHER_CFLAGS = -Wshadow -D_FORTIFY_SOURCE=2 -D__IMCORE_INTERNAL__ -OTHER_CFLAGS[sdk=embedded*] = -Wshadow -D_FORTIFY_SOURCE=2 -DUSE_SYSTEMCONFIGURATION_PRIVATE_HEADERS -D__IMCORE_INTERNAL__ -Wno-error=deprecated-declarations -OTHER_CFLAGS[sdk=embeddedsimulator*] = -Wshadow -D_FORTIFY_SOURCE=2 -DUSE_SYSTEMCONFIGURATION_PRIVATE_HEADERS -D__IMCORE_INTERNAL__ -Wno-error=deprecated-declarations - -// ########################## CLANG ############################ - -RUN_CLANG_STATIC_ANALYZER = NO - -// ####################### Order File ########################## - -ORDER_FILE = Order Files/$(PROJECT_NAME).order - -GCC_PREPROCESSOR_DEFINITIONS = NDEBUG diff --git a/Dumped Classes/IMCore_ClassDump.h b/Dumped Classes/IMCore_ClassDump.h new file mode 100644 index 0000000..16bee13 --- /dev/null +++ b/Dumped Classes/IMCore_ClassDump.h @@ -0,0 +1,4976 @@ +// +// 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 +{ + 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 +- (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 +@property(readonly, nonatomic) IMHandle *sender; +@property(readonly, nonatomic) NSDate *time; +@property(readonly, nonatomic) BOOL failed; +@property(readonly, nonatomic) BOOL isFromMe; +@end + +@protocol IMPluginChatItemProtocol +@property(readonly, nonatomic) BOOL isFromMe; +// @property(readonly, retain, nonatomic) IMBalloonPluginDataSource *dataSource; +@property(readonly, retain, nonatomic) NSString *type; +@end + +@protocol IMRemoteAppExtensionContextProtocol /* */ +@end + +@protocol IMRemoteDaemonProtocol +- (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 +- (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 +@property(retain, nonatomic, setter=_setVisibleAssociatedMessageChatItems:) NSArray *visibleAssociatedMessageChatItems; +@end + +@protocol INSpeakable +@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 +{ + 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 +{ +} + +@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 +{ + 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) struct _NSRange messagePartRange; // @synthesize messagePartRange=_messagePartRange; +@property(nonatomic) long long index; // @synthesize index=_index; +@property(readonly, copy, nonatomic) NSAttributedString *text; // @synthesize text=_text; + +- (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 +{ + 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 +{ + 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 +{ + 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 +{ + 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 *_remoteObject; + NSMutableDictionary *_listenerMap; + // IMLocalObject *_localObject; + IMDaemonListener *_daemonListener; + NSMutableArray *_services; + NSProtocolChecker *_protocol; + NSString *_listenerID; + NSObject *_listenerLockQueue; + NSObject *_remoteDaemonLockQueue; + NSObject *_localObjectLockQueue; + NSObject *_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 *_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 _delegate; + id _context; + NSTimer *_sendProgressTimer; + NSDictionary *_sendingItems; + float _cachedSendProgress; + BOOL _wasShowing; + BOOL _startSendProgressImmediately; + id _timeDataSource; +} + ++ (Class)_timeDataSourceClass; +@property(retain, nonatomic) id 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 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 +{ +} + +@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 +{ + 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 +{ + 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 _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)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 + +@interface IMMessage : NSObject +{ + 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; +@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:(long long)arg1 inChat:(id)arg2; +- (id)descriptionForPurpose:(long long)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 +{ + 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 *_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 *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; + +@end + +@interface IMSimulatedChat : IMChat // +{ +// id _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 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 *_daemon; + CDUnknownBlockType _updateBlock; +} + +@property(nonatomic) BOOL requestedOneTimeCodeStatusForConnection; // @synthesize requestedOneTimeCodeStatusForConnection=_requestedOneTimeCodeStatusForConnection; +@property(copy, nonatomic) CDUnknownBlockType updateBlock; // @synthesize updateBlock=_updateBlock; +@property(retain, nonatomic) IMDaemonController *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 _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 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 _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 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 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 *_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 +{ + 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 + diff --git a/Dumped Classes/IMFoundation_ClassDump.h b/Dumped Classes/IMFoundation_ClassDump.h new file mode 100644 index 0000000..18e8613 --- /dev/null +++ b/Dumped Classes/IMFoundation_ClassDump.h @@ -0,0 +1,1900 @@ +// +// Generated by class-dump 3.5 (64 bit). +// +// class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2013 by Steve Nygard. +// + +#pragma mark Blocks + +typedef void (^CDUnknownBlockType)(void); // return type and parameters are unknown + +#pragma mark Named Structures + + +#pragma mark - + +// +// File: Versions/A/IMFoundation +// UUID: 098F3A98-2184-32EF-8EC9-87B892CD85CA +// +// Arch: x86_64 +// Current version: 800.0.0 +// Compatibility version: 1.0.0 +// Source version: 725.37.0.0.0 +// +// Objective-C Garbage Collection: Unsupported +// + +@protocol IMAVDaemonProtocol +- (void)stopPreview; +- (void)startPreview; +@end + +@class IMConnectionMonitor; +@protocol IMConnectionMonitorDelegate +- (void)connectionMonitorDidUpdate:(IMConnectionMonitor *)arg1; +@end + +@class IMFileCopier; +@protocol IMFileCopierDelegate +- (void)fileCopierDidFinish:(IMFileCopier *)arg1; +- (void)fileCopierDidStart:(IMFileCopier *)arg1; +@end + +@class IMReachability; +@protocol IMReachabilityDelegate +- (void)reachabilityDidChange:(IMReachability *)arg1; +@end + +@protocol IMUserDefaults +- (id)copyValueForKey:(NSString *)arg1 applicationID:(struct __CFString *)arg2 userName:(struct __CFString *)arg3 hostName:(struct __CFString *)arg4; +- (NSDictionary *)copyMultipleForCurrentKeys:(NSArray *)arg1 applicationID:(struct __CFString *)arg2 userName:(struct __CFString *)arg3 hostName:(struct __CFString *)arg4; +- (NSArray *)copyKeyListForApplicationID:(struct __CFString *)arg1 userName:(struct __CFString *)arg2 hostName:(struct __CFString *)arg3; +- (void)synchronizeApplicationID:(struct __CFString *)arg1 userName:(struct __CFString *)arg2 hostName:(struct __CFString *)arg3; +- (void)setMultiple:(NSDictionary *)arg1 remove:(NSArray *)arg2 applicationID:(struct __CFString *)arg3 userName:(struct __CFString *)arg4 hostName:(struct __CFString *)arg5; +- (void)setValue:(void *)arg1 forKey:(NSString *)arg2 applicationID:(struct __CFString *)arg3 userName:(struct __CFString *)arg4 hostName:(struct __CFString *)arg5; +- (id)copyValueForKey:(NSString *)arg1 appID:(NSString *)arg2; +- (NSDictionary *)copyMultipleForCurrentKeys:(NSArray *)arg1 appID:(NSString *)arg2; +- (NSArray *)copyKeyListForAppID:(NSString *)arg1; +- (void)synchronizeAppID:(NSString *)arg1; +- (void)setMultiple:(NSDictionary *)arg1 remove:(NSArray *)arg2 appID:(NSString *)arg3; +- (void)setValue:(void *)arg1 forKey:(NSString *)arg2 appID:(NSString *)arg3; +- (void)setAppBool:(BOOL)arg1 forKey:(NSString *)arg2; +- (BOOL)appBoolForKey:(NSString *)arg1; +- (void)removeAppValueForKey:(NSString *)arg1; +- (void)setAppValue:(id)arg1 forKey:(NSString *)arg2; +- (id)appValueForKey:(NSString *)arg1; +- (void)setAppBool:(BOOL)arg1 byHostForKey:(NSString *)arg2; +- (BOOL)appBoolByHostForKey:(NSString *)arg1; +@end + +@interface IMPair : NSObject +{ + id _first; + id _second; +} + ++ (id)pairWithFirst:(id)arg1 second:(id)arg2; +@property(retain) id second; // @synthesize second=_second; +@property(retain) id first; // @synthesize first=_first; +- (BOOL)isEqual:(id)arg1; +- (unsigned long long)hash; +- (id)copyWithZone:(struct _NSZone *)arg1; +- (void)dealloc; +- (id)initWithFirst:(id)arg1 second:(id)arg2; + +@end + +@interface IMSystemProxySettingsFetcher : NSObject +{ + unsigned short _port; + unsigned short _proxyPort; + id _delegate; + NSString *_host; + long long _proxyProtocol; + NSString *_proxyHost; + NSString *_proxyAccount; + NSString *_proxyPassword; +} + +@property(copy, nonatomic) NSString *_proxyPassword; // @synthesize _proxyPassword; +@property(copy, nonatomic) NSString *_proxyAccount; // @synthesize _proxyAccount; +@property(nonatomic) unsigned short _proxyPort; // @synthesize _proxyPort; +@property(copy, nonatomic) NSString *_proxyHost; // @synthesize _proxyHost; +@property(nonatomic) long long _proxyProtocol; // @synthesize _proxyProtocol; +@property(nonatomic) unsigned short _port; // @synthesize _port; +@property(copy, nonatomic) NSString *_host; // @synthesize _host; +@property id delegate; // @synthesize delegate=_delegate; +- (void)dealloc; +- (void)retrieveProxyAccountSettings; +- (void)retrieveProxySettings; +- (id)initWithProxyProtocol:(long long)arg1 proxyHost:(id)arg2 proxyPort:(unsigned short)arg3 delegate:(id)arg4; +- (id)initWithHost:(id)arg1 port:(unsigned short)arg2 delegate:(id)arg3; +- (void)_takeProxySettingsFromDictionary:(struct __CFDictionary *)arg1; +- (void)_getProxyAccountAndPasswordFromKeychain; +- (void)_callAccountSettingsDelegateMethod; +- (void)_callProxySettingsDelegateMethod; + +@end + +@interface IMInvocationTrampoline : NSObject +{ + id _target; +} + +@property(retain) id target; // @synthesize target=_target; +- (void)forwardInvocation:(id)arg1; +- (BOOL)respondsToSelector:(SEL)arg1; +- (id)methodSignatureForSelector:(SEL)arg1; +- (void)performInvocation:(id)arg1; +- (void)dealloc; + +@end + +@interface IMThreadedInvocationTrampoline : IMInvocationTrampoline +{ + NSThread *_thread; + BOOL _immediateForMatchingThread; +} + +- (void)forwardInvocation:(id)arg1; +- (void)dealloc; +- (id)initWithTarget:(id)arg1 thread:(id)arg2 immediateForMatchingThread:(BOOL)arg3; + +@end + +@interface IMDelayedInvocationTrampoline : IMInvocationTrampoline +{ + NSArray *_modes; + double _delay; +} + +- (void)forwardInvocation:(id)arg1; +- (void)dealloc; +- (id)initWithTarget:(id)arg1 delay:(double)arg2 modes:(id)arg3; + +@end + +@interface IMCapturedInvocationTrampoline : IMInvocationTrampoline +{ +// id *_outInvocation; +} + +- (void)forwardInvocation:(id)arg1; +- (id)initWithTarget:(id)arg1 outInvocation:(id *)arg2; + +@end + +@interface IMFileManager : NSFileManager +{ +} + ++ (id)defaultHFSFileManager; ++ (id)defaultManager; +- (id)UTITypeOfPathExtension:(id)arg1; +- (id)UTITypeOfPath:(id)arg1; +- (id)pathExtensionForUTIType:(id)arg1; +- (id)MIMETypeOfPath:(id)arg1; +- (id)MIMETypeOfPathExtension:(id)arg1; +- (id)UTITypeOfMimeType:(id)arg1; +- (id)pathExtensionForMIMEType:(id)arg1; +- (id)displayNameOfFileWithName:(id)arg1 hfsFlags:(unsigned short)arg2; +- (id)kindStringForFileWithName:(id)arg1 hfsType:(unsigned int)arg2 hfsCreator:(unsigned int)arg3 hfsFlags:(unsigned short)arg4; +- (id)kindStringForFile:(id)arg1; +- (BOOL)setAttributes:(id)arg1 ofItemAtPath:(id)arg2 error:(id *)arg3; +- (id)attributesOfItemAtPath:(id)arg1 error:(id *)arg2; +- (BOOL)existingPath:(id)arg1 toFSSpec:(void *)arg2; +- (BOOL)existingPath:(id)arg1 toFSRef:(void *)arg2; +- (id)createTempFileBasedOnName:(id)arg1 hfsType:(unsigned int)arg2 hfsCreator:(unsigned int)arg3 hfsFlags:(unsigned short)arg4; + +@end + +@interface IMNetworkManager : NSObject +{ +} + ++ (id)sharedInstance; ++ (id)alloc; + +@end + + +@interface IMMobileNetworkManager : IMNetworkManager +{ + BOOL _registered; + BOOL _shouldBringUpDataContext; + BOOL _isDataContextAttached; + BOOL _isDataContextActive; + BOOL _isDataIndicatorNone; + BOOL _isDataContextUsable; + NSRecursiveLock *_lock; + NSMutableSet *_cellAutoAssociationTokens; + NSMutableSet *_wiFiAutoAssociationTokens; +} + +@property(retain, nonatomic) NSMutableSet *wiFiAutoAssociationTokens; // @synthesize wiFiAutoAssociationTokens=_wiFiAutoAssociationTokens; +@property(nonatomic) BOOL isDataContextUsable; // @synthesize isDataContextUsable=_isDataContextUsable; +@property(nonatomic) BOOL isDataIndicatorNone; // @synthesize isDataIndicatorNone=_isDataIndicatorNone; +@property(nonatomic) BOOL isDataContextActive; // @synthesize isDataContextActive=_isDataContextActive; +@property(nonatomic) BOOL isDataContextAttached; // @synthesize isDataContextAttached=_isDataContextAttached; +@property(nonatomic) BOOL shouldBringUpDataContext; // @synthesize shouldBringUpDataContext=_shouldBringUpDataContext; +@property(nonatomic) BOOL registered; // @synthesize registered=_registered; +@property(retain, nonatomic) NSMutableSet *cellularAutoAssociationTokens; // @synthesize cellularAutoAssociationTokens=_cellAutoAssociationTokens; +@property(retain, nonatomic) NSRecursiveLock *lock; // @synthesize lock=_lock; +- (void)setDataConnectionActive:(BOOL)arg1; +@property(readonly, nonatomic) BOOL isDataConnectionActive; +@property(readonly, nonatomic) BOOL isDataSwitchEnabled; +@property(readonly, nonatomic) BOOL hasLTEDataConnection; +@property(readonly, nonatomic) BOOL has2GDataConnection; +@property(readonly, nonatomic) BOOL dataConnectionExists; +- (BOOL)_legacy_inValidSIMState; +@property(readonly, nonatomic) BOOL inValidSIMState; +- (void)showSIMUnlock; +- (id)_telephonyDataSIMStatus; +@property(readonly, nonatomic) BOOL isSIMLocked; +@property(readonly, nonatomic) BOOL isSIMRemoved; +@property(readonly, nonatomic) BOOL requiresSIMInserted; +- (void)_makeDataConnectionAvailable:(BOOL)arg1; +- (BOOL)_isDataConnectionAvailable; +- (void)removeCellularAutoAssociationClientToken:(id)arg1; +- (void)addCellularAutoAssociationClientToken:(id)arg1; +@property(readonly, nonatomic) BOOL autoAssociateCellular; +- (void)showNetworkOptions; +- (void)removeWiFiAutoAssociationClientToken:(id)arg1; +- (void)addWiFiAutoAssociationClientToken:(id)arg1; +@property(readonly, nonatomic) BOOL autoAssociateWiFi; +@property(readonly, nonatomic) BOOL isWiFiCaptive; +@property(readonly, nonatomic) BOOL isWiFiEnabled; +@property(readonly, nonatomic) BOOL isWiFiAssociated; +@property(readonly, nonatomic) BOOL isWiFiUsable; +@property(readonly, retain, nonatomic) NSNumber *wiFiScaledRate; +@property(readonly, retain, nonatomic) NSNumber *wiFiScaledRSSI; +@property(readonly, retain, nonatomic) NSNumber *wiFiSignalStrength; +@property(readonly, nonatomic) BOOL willTryToSearchForWiFiNetwork; +@property(readonly, nonatomic) BOOL willTryToAutoAssociateWiFiNetwork; +@property(readonly, nonatomic) BOOL isHostingWiFiHotSpot; +- (void)removeFastDormancyDisableToken:(id)arg1; +- (void)addFastDormancyDisableToken:(id)arg1; +@property(readonly, nonatomic) BOOL disableFastDormancy; +- (void)_lockedAdjustCellularAutoAssociation; +- (void)_adjustCellularAutoAssociation; +@property(readonly, nonatomic) BOOL isAirplaneModeEnabled; +- (void)cutWiFiManagerLinkDidChange:(id)arg1 context:(id)arg2; +- (void)dealloc; +- (id)init; + +@end + +@interface IMInvocationQueue : NSObject +{ + BOOL _holdQueue; + id _delegate; + id _target; + double _dequeueRate; + NSMutableArray *_queue; + NSMutableArray *_options; + NSProtocolChecker *_protocolChecker; +} + +@property(readonly, nonatomic) BOOL holdQueue; // @synthesize holdQueue=_holdQueue; +@property(readonly, retain, nonatomic) NSProtocolChecker *protocolChecker; // @synthesize protocolChecker=_protocolChecker; +@property(readonly, retain, nonatomic) NSMutableArray *options; // @synthesize options=_options; +@property(readonly, retain, nonatomic) NSMutableArray *queue; // @synthesize queue=_queue; +@property(nonatomic) double dequeueRate; // @synthesize dequeueRate=_dequeueRate; +@property id target; // @synthesize target=_target; +@property id delegate; // @synthesize delegate=_delegate; +- (id)peek; +@property(readonly, nonatomic) BOOL isEmpty; +@property(readonly, nonatomic) unsigned long long count; +- (void)invokeAll; +- (void)removeAllInvocations; +- (id)_dequeueInvocation; +- (long long)_enqueueInvocation:(id)arg1 options:(unsigned long long)arg2; +- (BOOL)_insertInvocation:(id)arg1 options:(unsigned long long)arg2; +- (BOOL)_replaceSimilarInvocation:(id)arg1; +- (BOOL)_acceptsOptions:(unsigned long long)arg1; +- (int)_maxQueueLimitSize; +- (int)_numberOfLimitedMessagesInQueue; +- (unsigned long long)_optionsForInvocation:(id)arg1; +- (void)_checkQueue; +- (BOOL)_invokeInvocation:(id)arg1; +- (void)_setQueueTimer; +- (void)_releaseQueueNotification:(id)arg1; +- (void)_holdQueueNotification:(id)arg1; +- (void)_stepQueueNotification:(id)arg1; +@property(retain, nonatomic) Protocol *protocol; +- (id)methodSignatureForSelector:(SEL)arg1; +- (void)forwardInvocation:(id)arg1; +- (void)dealloc; +- (id)init; + +@end + +@interface IMUserDefaults : NSObject +{ +} + ++ (BOOL)isLiveDeliveryWarmUpEnabled; ++ (void)setEnableLiveDeliveryWarmUp:(BOOL)arg1; ++ (BOOL)isDebugPiscoLoggingEnabled; ++ (BOOL)isDeviceScoringEnabled; ++ (BOOL)isBAACertDisabled; ++ (BOOL)isAbsintheV4Enabled; ++ (BOOL)isPiscoDisabled; ++ (id)phoneNumberValidationPreflightTestData; ++ (void)setPhoneNumberValidationPreflightTestData:(id)arg1; ++ (long long)phoneNumberValidationMode; ++ (void)setPhoneNumberValidationMode:(long long)arg1; ++ (BOOL)isEngramEnabled; ++ (void)setEnableEngram:(BOOL)arg1; ++ (id)sharedDefaults; +- (id)copyValueForKey:(id)arg1 applicationID:(struct __CFString *)arg2 userName:(struct __CFString *)arg3 hostName:(struct __CFString *)arg4; +- (id)copyMultipleForCurrentKeys:(id)arg1 applicationID:(struct __CFString *)arg2 userName:(struct __CFString *)arg3 hostName:(struct __CFString *)arg4; +- (id)copyKeyListForApplicationID:(struct __CFString *)arg1 userName:(struct __CFString *)arg2 hostName:(struct __CFString *)arg3; +- (void)synchronizeApplicationID:(struct __CFString *)arg1 userName:(struct __CFString *)arg2 hostName:(struct __CFString *)arg3; +- (void)setMultiple:(id)arg1 remove:(id)arg2 applicationID:(struct __CFString *)arg3 userName:(struct __CFString *)arg4 hostName:(struct __CFString *)arg5; +- (void)setValue:(void *)arg1 forKey:(id)arg2 applicationID:(struct __CFString *)arg3 userName:(struct __CFString *)arg4 hostName:(struct __CFString *)arg5; +- (id)copyValueForKey:(id)arg1 appID:(id)arg2; +- (id)copyMultipleForCurrentKeys:(id)arg1 appID:(id)arg2; +- (id)copyKeyListForAppID:(id)arg1; +- (void)synchronizeAppID:(id)arg1; +- (void)setMultiple:(id)arg1 remove:(id)arg2 appID:(id)arg3; +- (void)setValue:(void *)arg1 forKey:(id)arg2 appID:(id)arg3; +- (void)setAppBool:(BOOL)arg1 forKey:(id)arg2; +- (BOOL)appBoolForKey:(id)arg1; +- (void)removeAppValueForKey:(id)arg1; +- (void)setAppValue:(id)arg1 forKey:(id)arg2; +- (id)appValueForKey:(id)arg1; +- (void)setAppBool:(BOOL)arg1 byHostForKey:(id)arg2; +- (BOOL)appBoolByHostForKey:(id)arg1; + +// Remaining properties +@property(readonly, copy) NSString *debugDescription; +@property(readonly, copy) NSString *description; + +@property(readonly) Class superclass; + +@end + +@interface IMDeviceSupport : NSObject +{ + NSString *_model; + NSString *_productName; + NSString *_productVersion; + NSString *_buildVersion; + NSRecursiveLock *_lock; +} + ++ (id)marketingNameForModel:(id)arg1; ++ (id)sharedInstance; +@property(readonly, nonatomic) NSString *deviceInformationString; +@property(readonly, nonatomic) NSString *productBuildVersion; +@property(readonly, nonatomic) NSString *productVersion; +@property(readonly, nonatomic) NSString *productName; +@property(readonly, nonatomic) NSString *userAgentString; +- (void)_generateProductInformation; +@property(readonly, nonatomic) NSString *model; +- (void)dealloc; +- (id)init; + +@end + +@interface IMManualUpdater : NSObject +{ + id _target; + SEL _action; + unsigned int _needsUpdate:1; +} + +@property(nonatomic) SEL action; // @synthesize action=_action; +@property(nonatomic) id target; // @synthesize target=_target; +@property(nonatomic) BOOL needsUpdate; // @dynamic needsUpdate; +- (void)updateIfNeeded; +- (void)setNeedsUpdate; +- (id)initWithTarget:(id)arg1 action:(SEL)arg2; +- (id)description; + +@end + +@interface IMScheduledUpdater : IMManualUpdater +{ + NSCountedSet *_holdingUpdatesKeys; +} + +@property(retain, nonatomic) NSCountedSet *holdingUpdatesKeys; // @synthesize holdingUpdatesKeys=_holdingUpdatesKeys; +- (void)invalidate; +- (BOOL)isHoldingUpdatesForKey:(id)arg1; +- (BOOL)isHoldingUpdates; +- (void)endHoldingUpdatesForAllKeys; +- (void)endHoldingUpdatesForKey:(id)arg1; +- (void)beginHoldingUpdatesForKey:(id)arg1; +- (void)updateIfNeeded; +- (void)setNeedsUpdate; +- (id)initWithTarget:(id)arg1 action:(SEL)arg2; +- (id)description; +- (void)dealloc; + +@end + +@interface IMMessageContext : NSObject +{ + NSObject *_xpcMessage; +// IMLocalObject *_localObject; + id _context; + BOOL _boost; +// NSObject *_voucher; +} + +//@property(retain) NSObject *voucher; // @synthesize voucher=_voucher; +@property(retain) id context; // @synthesize context=_context; +@property BOOL shouldBoost; // @synthesize shouldBoost=_boost; +//@property(retain) IMLocalObject *localObject; // @synthesize localObject=_localObject; +@property(retain) NSObject *xpcMessage; // @synthesize xpcMessage=_xpcMessage; +- (void)dealloc; +- (id)init; + +@end + +@interface NetworkChangeNotifier : NSObject +{ + BOOL _lastPostedNetworkUp; + struct __SCDynamicStore *_store; + NSString *_myIP; + NSArray *_myIPs; + IMConnectionMonitor *_connectionMonitor; +} + ++ (void)disableNotifications; ++ (BOOL)enableNotifications; ++ (id)sharedInstance; +@property(nonatomic) BOOL lastPostedNetworkUp; // @synthesize lastPostedNetworkUp=_lastPostedNetworkUp; +@property(retain, nonatomic) IMConnectionMonitor *connectionMonitor; // @synthesize connectionMonitor=_connectionMonitor; +@property(retain, nonatomic) NSArray *myIPs; // @synthesize myIPs=_myIPs; +@property(retain, nonatomic) NSString *myIP; // @synthesize myIP=_myIP; +@property(nonatomic) struct __SCDynamicStore *store; // @synthesize store=_store; +- (id)primaryInterfaceName; +- (BOOL)isPrimaryCellular; +@property(readonly, nonatomic) BOOL isNetworkUp; +- (void)connectionMonitorDidUpdate:(id)arg1; +- (unsigned long long)linkQualityForInterfaceType:(unsigned long long)arg1; +- (int)linkQualityValueForInterface:(id)arg1; +- (int)linkQualityValueForInterfaceType:(unsigned long long)arg1; +@property(readonly, nonatomic) struct __SCDynamicStore *getDynamicStore; +@property(readonly, nonatomic) NSString *myIPAddress; +@property(readonly, nonatomic) NSString *myGatewayAddress; +@property(readonly, nonatomic) NSArray *myIPAddresses; +- (void)dealloc; +- (id)init; +- (BOOL)_listenForChanges; +- (void)systemDidWake; +- (void)systemWillSleep; +- (void)_clearIPCache; + +@end + +@interface _IMTimingInstance : NSObject +{ + double _startTiming; + double _stopTiming; + double _totalTime; + BOOL _isRunning; +} + ++ (id)createTimingInstanceWithStartTime:(float)arg1; +@property(nonatomic) BOOL isRunning; // @synthesize isRunning=_isRunning; +@property(nonatomic) double totalTime; // @synthesize totalTime=_totalTime; +- (id)description; +- (void)stopUsingTime:(double)arg1; +- (void)startUsingTime:(double)arg1; +- (id)init; + +@end + +@interface IMTimingCollection : NSObject +{ + NSMutableDictionary *_timings; + NSObject *_queue; +} + +- (BOOL)hasKey:(id)arg1; +- (id)description; +- (void)removeTimingForKey:(id)arg1; +- (double)totalTimeForKey:(id)arg1; +- (void)stopTimingForKey:(id)arg1; +- (void)startTimingForKey:(id)arg1; +- (void)dealloc; +- (id)init; + +@end + +@interface IMMultiDict : NSObject +{ + NSMutableDictionary *_dictionary; + unsigned long long _count; +} + +@property(readonly, nonatomic) unsigned long long count; // @synthesize count=_count; +@property(retain, nonatomic) NSMutableDictionary *dictionary; // @synthesize dictionary=_dictionary; +@property(readonly, nonatomic) NSArray *allKeys; +- (void)enumerateKeysAndObjectsUsingBlock:(CDUnknownBlockType)arg1; +- (unsigned long long)countForKey:(id)arg1; +- (void)removeObject:(id)arg1 forKey:(id)arg2; +- (void)removeAllObjects; +- (void)removeObjectsForKey:(id)arg1; +- (id)objectsForKey:(id)arg1; +- (id)dequeueObjectForKey:(id)arg1; +- (id)headObjectForKey:(id)arg1; +- (void)enqueueObject:(id)arg1 forKey:(id)arg2; +- (id)popObjectForKey:(id)arg1; +- (id)peekObjectForKey:(id)arg1; +- (void)pushObject:(id)arg1 forKey:(id)arg2; +- (id)description; +- (id)init; +- (void)dealloc; + +@end + +@interface IMURLResponseToPlist : NSObject +{ +} + ++ (void)generate:(id)arg1 data:(id)arg2 toFilePath:(id)arg3; + +@end + +@interface IMMockURLResponse : NSObject +{ + NSHTTPURLResponse *_response; + NSData *_data; + NSString *_requestBodyKeyPath; + NSString *_mockID; +} + ++ (id)objectFromPlist:(id)arg1; ++ (BOOL)supportsSecureCoding; +@property(copy) NSString *mockID; // @synthesize mockID=_mockID; +@property(copy) NSString *requestBodyKeyPath; // @synthesize requestBodyKeyPath=_requestBodyKeyPath; +@property(retain) NSData *data; // @synthesize data=_data; +@property(retain) NSHTTPURLResponse *response; // @synthesize response=_response; +- (void)dealloc; +- (id)initWithCoder:(id)arg1; +- (void)encodeWithCoder:(id)arg1; + +@end + +@interface IMAllocTracking : NSObject +{ + NSMutableArray *_callStacks; +} + +- (void)dealloc; +- (oneway void)release; +- (id)retain; +- (void)_registerCallstack; + +@end + +@interface IMSystemMonitor : NSObject +{ + BOOL _watchesDataProtectionLockState; + BOOL _watchesScreenLightState; + BOOL _receivesMemoryWarnings; + BOOL _willSleep; + BOOL _screenLocked; + BOOL _screensaverActive; + BOOL _watchesSystemLockState; + BOOL _underFirstLock; + BOOL _active; + BOOL _backingUp; + BOOL _switchedOut; + BOOL _screenLit; + BOOL _systemLocked; + BOOL _idleOverride; + BOOL _usesPowerNotifications; + BOOL _usesSystemIdleState; + BOOL _inBackground; + int _dataProtectionState; + int _userIdleToken; + NSMutableArray *_listeners; + NSDate *_idleStart; + NSTimer *_timer; + NSDate *_dateScreenLightLastChanged; + NSDate *_dateSystemLockLastChanged; + NSString *_userID; + double _delayTime; + NSMutableArray *_earlyListeners; + long long _resignActiveCount; + struct _opaque_pthread_mutex_t _ivarLock; +} + ++ (id)sharedInstance; +@property(nonatomic) long long resignActiveCount; // @synthesize resignActiveCount=_resignActiveCount; +@property(nonatomic) struct _opaque_pthread_mutex_t ivarLock; // @synthesize ivarLock=_ivarLock; +@property(nonatomic) int userIdleToken; // @synthesize userIdleToken=_userIdleToken; +@property(retain, nonatomic) NSMutableArray *_earlyListeners; // @synthesize _earlyListeners; +@property(nonatomic) BOOL _idleOverride; // @synthesize _idleOverride; +@property(nonatomic) double _delayTime; // @synthesize _delayTime; +@property(retain, nonatomic) NSString *_userID; // @synthesize _userID; +@property(retain, nonatomic) NSTimer *_timer; // @synthesize _timer; +@property(retain, nonatomic) NSDate *_idleStart; // @synthesize _idleStart; +@property(retain, nonatomic) NSMutableArray *_listeners; // @synthesize _listeners; +@property(nonatomic) BOOL isFastUserSwitched; // @synthesize isFastUserSwitched=_switchedOut; +@property(nonatomic) BOOL _underFirstLock; // @synthesize _underFirstLock; +@property(nonatomic) int _dataProtectionState; // @synthesize _dataProtectionState; +@property(nonatomic) BOOL receivesMemoryWarnings; // @synthesize receivesMemoryWarnings=_receivesMemoryWarnings; +- (void)_receivedMemoryNotification; +- (void)_unregisterForLoginWindowNotifications; +- (void)_registerForLoginWindowNotifications; +- (void)_handleLoginWindowNotification:(id)arg1; +- (void)_forceSuspended; +- (void)_forceResumed; +@property(readonly, nonatomic) BOOL isSetup; +- (void)_unregisterForRestoreNotifications; +- (void)_registerForRestoreNotifications; +- (void)_setupStateChanged; +- (void)_restoreDidStop; +- (void)_restoreDidStart; +- (void)_checkRestoredFromBackup; +- (void)removeListener:(id)arg1; +- (void)addListener:(id)arg1; +- (void)_removeEarlyListener:(id)arg1; +- (void)_addEarlyListener:(id)arg1; +- (void)_systemWillShutdown; +@property(readonly, nonatomic) BOOL systemIsShuttingDown; +@property(readonly, nonatomic) double systemIdleTime; +- (BOOL)_alreadyLocked_isSystemIdle; +@property(readonly, nonatomic) BOOL isSystemIdle; +- (void)_checkIdleTime:(id)arg1; +- (void)_alreadyLocked_clearIdleTimer; +- (void)_clearIdleTimer; +- (void)_armIdleTimer; +- (void)_overrideAndDisableIdleTimer:(BOOL)arg1; +- (void)_setIdleState:(BOOL)arg1; +@property(nonatomic) BOOL usesSystemIdleState; // @synthesize usesSystemIdleState=_usesSystemIdleState; +- (void)_updateIdleState; +- (void)_setSystemLockState:(BOOL)arg1; +- (void)_setSystemScreenState:(BOOL)arg1; +@property(nonatomic) BOOL usesPowerNotifications; // @synthesize usesPowerNotifications=_usesPowerNotifications; +@property(nonatomic) BOOL watchesScreenLightState; // @synthesize watchesScreenLightState=_watchesScreenLightState; +@property(nonatomic) BOOL watchesSystemLockState; // @synthesize watchesSystemLockState=_watchesSystemLockState; +@property(nonatomic) BOOL watchesDataProtectionLockState; // @synthesize watchesDataProtectionLockState=_watchesDataProtectionLockState; +@property(readonly, nonatomic) BOOL isUnderFirstDataProtectionLock; +- (BOOL)_isUnderDataProtectionLockForState:(int)arg1; +@property(readonly, nonatomic) BOOL isUnderDataProtectionLock; +- (void)_setDataProtectionLockState:(int)arg1; +- (BOOL)_deviceStillUnderFirstLock; +- (void)_applicationDidRemoveDeactivationReason:(id)arg1; +- (void)_applicationWillAddDeactivationReason:(id)arg1; +- (void)_applicationDidEnterBackground:(id)arg1; +- (void)_applicationWillEnterForeground:(id)arg1; +- (void)_screenSaverStarted:(id)arg1; +- (void)_screenSaverStopped:(id)arg1; +- (void)_postScreenSaverStarted; +- (void)_notificationCenterDidDisappear:(id)arg1; +- (void)_notificationCenterWillAppear:(id)arg1; +- (void)_resume:(id)arg1; +- (void)_suspend:(id)arg1; +- (void)_resumeEventsOnly:(id)arg1; +- (void)_suspendEventsOnly:(id)arg1; +- (void)_applicationDidBecomeActive:(id)arg1; +- (void)_applicationWillResignActive:(id)arg1; +@property(readonly, nonatomic) BOOL isScreenLocked; // @synthesize isScreenLocked=_screenLocked; +- (void)_screenUnlocked:(id)arg1; +- (void)_screenLocked:(id)arg1; +- (void)_postScreenLocked; +- (void)_systemWillSleep; +- (void)_systemDidWake; +- (void)_deliverNotificationSelector:(SEL)arg1; +@property(nonatomic, setter=setActive:) BOOL isActive; // @synthesize isActive=_active; +- (void)dealloc; +- (id)init; +@property(readonly, nonatomic) BOOL isInBackground; // @synthesize isInBackground=_inBackground; +@property(readonly, nonatomic) BOOL isSystemLocked; // @synthesize isSystemLocked=_systemLocked; +@property(readonly, nonatomic) BOOL isScreenLit; // @synthesize isScreenLit=_screenLit; +@property(readonly, nonatomic) BOOL isBackingUp; // @synthesize isBackingUp=_backingUp; +@property(readonly, nonatomic) BOOL isScreenSaverActive; // @synthesize isScreenSaverActive=_screensaverActive; +@property(readonly, nonatomic) BOOL systemIsSleeping; // @synthesize systemIsSleeping=_willSleep; +@property(readonly, retain, nonatomic) NSDate *dateSystemLockLastChanged; // @synthesize dateSystemLockLastChanged=_dateSystemLockLastChanged; +@property(readonly, retain, nonatomic) NSDate *dateScreenLightLastChanged; // @synthesize dateScreenLightLastChanged=_dateScreenLightLastChanged; + +@end + +@interface IMUserNotification : NSObject +{ + id _reserved; +} + ++ (id)userNotificationWithIdentifier:(id)arg1 title:(id)arg2 message:(id)arg3 defaultButton:(id)arg4 alternateButton:(id)arg5 otherButton:(id)arg6; ++ (id)userNotificationWithIdentifier:(id)arg1 timeout:(double)arg2 alertLevel:(unsigned long long)arg3 displayFlags:(unsigned long long)arg4 displayInformation:(id)arg5; +- (void)_setResponseFlags:(unsigned long long)arg1 responseInformation:(id)arg2; +@property(readonly, retain, nonatomic) NSDictionary *responseInformation; +@property(readonly, nonatomic) unsigned long long responseFlags; +@property(retain, nonatomic) NSDictionary *userInfo; +@property(nonatomic) BOOL usesNotificationCenter; +@property(nonatomic) BOOL showInLockScreen; +@property(retain, nonatomic) NSString *representedApplicationBundle; +@property(readonly, nonatomic) unsigned long long response; +@property(readonly, retain, nonatomic) NSDictionary *displayInformation; +@property(readonly, nonatomic) unsigned long long displayFlags; +@property(readonly, nonatomic) double timeout; +@property(readonly, retain, nonatomic) id identifier; +- (void)dealloc; +- (id)_initWithIdentifier:(id)arg1 timeout:(double)arg2 displayFlags:(unsigned long long)arg3 displayInformation:(id)arg4; + +@end + +@interface IMUserNotificationCenter : NSObject +{ + NSMutableDictionary *_identifierToIMUserNotificationQueueMap; + NSMutableDictionary *_identifierToListenerQueueMap; + NSMutableDictionary *_identifierToBlockQueueMap; + NSMutableDictionary *_identifierToRunLoopSourcesMap; + NSMutableDictionary *_identifierToCFUserNotificationMap; +} + ++ (id)sharedInstance; +@property(retain, nonatomic) NSMutableDictionary *identifierToCFUserNotificationMap; // @synthesize identifierToCFUserNotificationMap=_identifierToCFUserNotificationMap; +@property(retain, nonatomic) NSMutableDictionary *identifierToRunLoopSourcesMap; // @synthesize identifierToRunLoopSourcesMap=_identifierToRunLoopSourcesMap; +@property(retain, nonatomic) NSMutableDictionary *identifierToBlockQueueMap; // @synthesize identifierToBlockQueueMap=_identifierToBlockQueueMap; +@property(retain, nonatomic) NSMutableDictionary *identifierToListenerQueueMap; // @synthesize identifierToListenerQueueMap=_identifierToListenerQueueMap; +@property(retain, nonatomic) NSMutableDictionary *identifierToIMUserNotificationQueueMap; // @synthesize identifierToIMUserNotificationQueueMap=_identifierToIMUserNotificationQueueMap; +- (void)removeAllListeners; +- (void)removeListener:(id)arg1; +- (void)removeNotificationsForServiceIdentifier:(id)arg1; +- (unsigned long long)countForIdentifier:(id)arg1; +- (void)addUserNotification:(id)arg1 listener:(id)arg2 completionHandler:(CDUnknownBlockType)arg3; +- (void)addUserNotification:(id)arg1 listener:(id)arg2; +- (void)_handleUserNotification:(struct __CFUserNotification *)arg1 responseFlags:(unsigned long long)arg2; +- (void)_displayNextUserNotificationForIdentifier:(id)arg1; +- (void)_cancelActiveUserNotificationForIdentifier:(id)arg1; +- (void)userNotificationCenter:(id)arg1 didDeliverNotification:(id)arg2; +- (void)userNotificationCenter:(id)arg1 didActivateNotification:(id)arg2; +- (BOOL)userNotificationCenter:(id)arg1 shouldPresentNotification:(id)arg2; +- (void)_enqueueBlock:(CDUnknownBlockType)arg1 forIdentifier:(id)arg2; +- (void)_enqueueListener:(id)arg1 forIdentifier:(id)arg2; +- (void)_enqueueUserNotification:(id)arg1 forIdentifier:(id)arg2; +- (CDUnknownBlockType)_dequeueBlockForIdentifier:(id)arg1; +- (id)_dequeueListenerForIdentifier:(id)arg1; +- (id)_dequeueUserNotificationForIdentifier:(id)arg1; +- (CDUnknownBlockType)_frontBlockForIdentifier:(id)arg1; +- (id)_frontListenerForIdentifier:(id)arg1; +- (id)_frontUserNotificationForIdentifier:(id)arg1; +- (void)dealloc; + +@end + +@interface IMFileCopier : NSObject +{ + BOOL _shouldCancel; + BOOL _didErrorOccur; + BOOL _inProgress; + id _delegate; + NSURL *_inputURL; + NSURL *_outputURL; + id _identifier; + unsigned long long _operation; + void *_BOMCopier; + NSObject *_queue; + CDUnknownBlockType _callback; +} + +@property(copy) CDUnknownBlockType _callback; // @synthesize _callback; +@property(retain) NSObject *_queue; // @synthesize _queue; +@property void *_BOMCopier; // @synthesize _BOMCopier; +@property unsigned long long operation; // @synthesize operation=_operation; +@property BOOL inProgress; // @synthesize inProgress=_inProgress; +@property(readonly, nonatomic) BOOL didErrorOccur; // @synthesize didErrorOccur=_didErrorOccur; +@property(readonly, nonatomic) BOOL wasCancelled; // @synthesize wasCancelled=_shouldCancel; +@property(readonly, retain) id identifier; // @synthesize identifier=_identifier; +@property(readonly, retain) NSURL *outputURL; // @synthesize outputURL=_outputURL; +@property(readonly, retain) NSURL *inputURL; // @synthesize inputURL=_inputURL; +@property id delegate; // @synthesize delegate=_delegate; +- (void)_worker_doCopy; +- (void)_main_copierFinishedWithResult:(id)arg1; +- (void)cleanup; +- (void)cancel; +- (void)start; +- (void)_fillOutputURLFromInputURL; +- (id)_temporaryCopierPath; +- (void)dealloc; +- (id)initWithInputURL:(id)arg1 outputURL:(id)arg2 identifier:(id)arg3 operation:(unsigned long long)arg4 completionBlock:(CDUnknownBlockType)arg5 queue:(id)arg6; +- (id)initWithInputURL:(id)arg1 outputURL:(id)arg2 identifier:(id)arg3 operation:(unsigned long long)arg4 delegate:(id)arg5; + +@end + +@interface IMReachability : NSObject +{ + BOOL _gettingFlags; + id _delegate; + unsigned long long _flags; + NSString *_description; + void *_reachabilityRef; + NSObject *_queue; +} + ++ (id)reachabilityWithLocalAddress:(id)arg1 remoteAddress:(id)arg2; ++ (id)reachabilityWithRemoteAddress:(id)arg1; ++ (id)reachabilityWithHostName:(id)arg1; +@property(retain, nonatomic) NSObject *_queue; // @synthesize _queue; +@property(nonatomic) void *reachabilityRef; // @synthesize reachabilityRef=_reachabilityRef; +@property(retain, nonatomic) NSString *reachabilityDescription; // @synthesize reachabilityDescription=_description; +@property(nonatomic) unsigned long long flags; // @synthesize flags=_flags; +@property(nonatomic) BOOL gettingFlags; // @synthesize gettingFlags=_gettingFlags; +@property(nonatomic) __weak id delegate; // @synthesize delegate=_delegate; + +@property(readonly, nonatomic) BOOL connectionRequired; +- (void)_forceGetFlagsIfNecessary; +//- (void)_handleCallbackForSCNetworkReachability:(struct __SCNetworkReachability *)arg1; +- (id)description; +- (void)dealloc; +- (id)initWithLocalSocketAddress:(id)arg1 remoteSocketAddress:(id)arg2 delegate:(id)arg3; +- (id)initWithRemoteHost:(id)arg1 delegate:(id)arg2; +//- (id)_initWithReachabilityRef:(struct __SCNetworkReachability *)arg1 description:(id)arg2 delegate:(id)arg3; + +@end + +@interface IMConnectionMonitor : NSObject +{ + NSString *_remoteHost; + id _delegate; +} + ++ (id)alloc; +@property(nonatomic) id delegate; // @synthesize delegate=_delegate; +@property(readonly, retain, nonatomic) NSString *remoteHost; // @synthesize remoteHost=_remoteHost; +@property(readonly, nonatomic) BOOL isImmediatelyReachable; +@property(readonly, nonatomic) BOOL requiresDataConnectionActivation; +@property(nonatomic, setter=setDataConnectionActive:) BOOL isDataConnectionActive; +- (void)clear; +- (void)goDisconnected; +- (void)goConnectedWithLocalSocketAddress:(id)arg1 remoteSocketAddress:(id)arg2; +- (void)_setup; +- (void)dealloc; +- (id)initWithRemoteHost:(id)arg1 delegate:(id)arg2; + +@end + +@interface IMNetworkConnectionMonitor : IMConnectionMonitor +{ + BOOL _isConnected; + BOOL _isSleeping; + IMReachability *_hostReachability; + IMReachability *_ipReachability; + unsigned long long _hostFlags; + unsigned long long _ipFlags; +} + +@property(nonatomic) BOOL _isSleeping; // @synthesize _isSleeping; +@property(nonatomic) BOOL _isConnected; // @synthesize _isConnected; +@property(nonatomic) unsigned long long _ipFlags; // @synthesize _ipFlags; +@property(nonatomic) unsigned long long _hostFlags; // @synthesize _hostFlags; +@property(retain, nonatomic) IMReachability *_ipReachability; // @synthesize _ipReachability; +@property(retain, nonatomic) IMReachability *_hostReachability; // @synthesize _hostReachability; +- (BOOL)isImmediatelyReachable; +- (void)clear; +- (void)goDisconnected; +- (void)goConnectedWithLocalSocketAddress:(id)arg1 remoteSocketAddress:(id)arg2; +- (void)_setup; +- (void)systemDidWake; +- (void)systemWillSleep; +- (void)reachabilityDidChange:(id)arg1; +- (void)_setupReachability; +- (void)_doCallbackLater; +- (void)_doCallbackNow; +- (void)_clearReachability:(id *)arg1 flags:(unsigned long long *)arg2; +- (void)dealloc; + +@end + +@interface IMLocalObjectInternal : NSObject +{ + IMMessageContext *_currentMessageContext; + NSRecursiveLock *_lock; + id _target; + NSObject *_connection; + NSObject *_queue; + NSObject *_deathLock; + NSString *_portName; + NSString *_processName; + NSProtocolChecker *_protocolChecker; + NSMutableArray *_componentQueue; + NSLock *_componentQueueLock; + NSRecursiveLock *_componentQueueProcessingLock; + struct __CFRunLoopSource *_runloopSource; + BOOL _pendingComponentQueueProcessing; + BOOL _busyForwarding; + BOOL _offMainThread; + NSArray *_whitelistedClasses; +} + +- (void)dealloc; + +@end + +@interface IMLocalObject : NSObject +{ + id _internal; +} + ++ (void)initialize; ++ (void)_unregisterIMLocalObject:(id)arg1; ++ (void)_registerIMLocalObject:(id)arg1; ++ (id)_registeredIMLocalObjectForPort:(unsigned int)arg1; ++ (void)_setExceptionHandlingDisabled:(BOOL)arg1; ++ (id)_imLocalObjectQueue; +- (id)description; +- (void)invalidate; +@property(retain, nonatomic) NSArray *whitelistedClasses; +@property(readonly, nonatomic) BOOL isValid; +- (BOOL)isValidSelector:(SEL)arg1; +- (void)_enqueueInvocationWithPriority:(id)arg1 xpcMessage:(id)arg2 priority:(int)arg3; +- (void)_enqueueInvocationWithPriority:(id)arg1 priority:(int)arg2; +- (void)_enqueueInvocation:(id)arg1 xpcMessage:(id)arg2; +- (void)_enqueueInvocation:(id)arg1; +- (void)_popInvocation; +- (id)_peekInvocation; +- (void)_noteNewInvocation; +- (void)_handleNewInvocations; +- (BOOL)handleInvocation:(id)arg1; +- (BOOL)_handleInvocation:(id)arg1; +- (void)_handleInvocationForSendMessage:(id)arg1; +- (id)_currentMessageContext; +@property(retain, nonatomic) NSString *processName; +- (void)setPortName:(id)arg1; +@property(readonly, nonatomic) NSString *portName; +@property(readonly, nonatomic) NSObject *connection; +- (void)_systemShutdown:(id)arg1; +- (void)terminated; +- (void)_portDidBecomeInvalid; +- (void)_portInterrupted; +- (void)_cancelHandlerCompleted; +- (void)dealloc; +- (void)_clearPort:(BOOL)arg1 signalRunLoopIfNeeded:(BOOL)arg2; +- (void)_clearPort:(BOOL)arg1; +@property(readonly, nonatomic) NSProtocolChecker *protocolChecker; +@property(nonatomic) id target; +- (id)initWithTarget:(id)arg1 portName:(id)arg2 protocol:(id)arg3; +- (id)initWithTarget:(id)arg1 connection:(id)arg2 protocol:(id)arg3 forceSecureCoding:(BOOL)arg4 offMainThread:(BOOL)arg5; +- (id)initWithTarget:(id)arg1 connection:(id)arg2 protocol:(id)arg3 forceSecureCoding:(BOOL)arg4; +- (id)initWithTarget:(id)arg1 connection:(id)arg2 protocol:(id)arg3; +- (id)initWithTarget:(id)arg1 protocol:(id)arg2; + +@end + +@interface IMRemoteObjectInternal : NSObject +{ + NSRecursiveLock *_lock; + NSObject *_connection; + NSObject *_queue; + long long _deathPostPredicate; + Protocol *_protocol; + NSString *_portName; + NSString *_processName; + BOOL _willBeTerminated; + int _pid; +} + +@end + +@interface IMRemoteObject : NSObject +{ + id _internal; +} + ++ (void)initialize; ++ (void)_unregisterIMRemoteObject:(id)arg1; ++ (void)_registerIMRemoteObject:(id)arg1; ++ (id)_remoteObjects; +- (id)_queue; +- (id)description; +- (void)invalidate; +- (void)setPortName:(id)arg1; +@property(readonly, nonatomic) NSString *portName; +@property(retain, nonatomic) NSString *processName; +@property(nonatomic) int pid; +@property(readonly, nonatomic) NSObject *connection; +- (void)forwardInvocation:(id)arg1; +- (unsigned long long)forwardXPCObject:(id)arg1 messageContext:(id)arg2; +- (id)methodSignatureForSelector:(SEL)arg1; +- (void)_systemShutdown:(id)arg1; +@property(readonly, nonatomic) BOOL isValid; +- (void)_portDidBecomeInvalid; +- (void)dealloc; +- (void)_cleanupMachBitsCanPost:(BOOL)arg1; +- (id)initWithConnection:(id)arg1 protocol:(id)arg2 alreadyConfigured:(BOOL)arg3; +- (id)initWithConnection:(id)arg1 protocol:(id)arg2 alreadyConfigured:(BOOL)arg3 forceSecureCoding:(BOOL)arg4; +- (id)initWithPortName:(id)arg1 protocol:(id)arg2; +- (id)initWithConnection:(id)arg1 protocol:(id)arg2; +- (id)_initWithConnection:(id)arg1 portName:(id)arg2 protocol:(id)arg3 alreadyConfigured:(BOOL)arg4 forceSecureCoding:(BOOL)arg5; + +@end + +@interface IMRemoteObjectBroadcaster : NSObject +{ + NSObject *_queue; +} + ++ (id)defaultBroadcaster; +- (void)flushProxy:(id)arg1; +- (void)blockUntilSendQueueIsEmpty; +- (id)broadcastProxyForTargets:(id)arg1 messageContext:(id)arg2 protocol:(id)arg3; +- (id)broadcastProxyForTarget:(id)arg1 messageContext:(id)arg2 protocol:(id)arg3 priority:(int)arg4 completion:(CDUnknownBlockType)arg5; +- (id)broadcastProxyForTarget:(id)arg1 messageContext:(id)arg2 protocol:(id)arg3 priority:(int)arg4; +- (id)broadcastProxyForTarget:(id)arg1 messageContext:(id)arg2 protocol:(id)arg3; +- (id)_queue; +- (void)dealloc; +- (id)init; + +@end + +@interface Broadcaster : NSProxy +{ + NSArray *_targets; + IMRemoteObjectBroadcaster *_parent; + Protocol *_protocol; + IMMessageContext *_messageContext; + int _curXPCMessagePriority; + CDUnknownBlockType _completion; +} + +@property(nonatomic) int curXPCMessagePriority; // @synthesize curXPCMessagePriority=_curXPCMessagePriority; +- (void)forwardInvocation:(id)arg1; +- (id)methodSignatureForSelector:(SEL)arg1; +- (void)sendXPCObject:(id)arg1; +- (void)dealloc; +- (id)initWithNotifier:(id)arg1 messageContext:(id)arg2 protocol:(id)arg3 targets:(id)arg4 priority:(int)arg5 completion:(CDUnknownBlockType)arg6; +- (id)initWithNotifier:(id)arg1 messageContext:(id)arg2 protocol:(id)arg3 targets:(id)arg4 priority:(int)arg5; +- (id)initWithNotifier:(id)arg1 messageContext:(id)arg2 protocol:(id)arg3 targets:(id)arg4; + +@end + +@interface IMRGLog : NSObject +{ +} + ++ (id)watchPairing; ++ (id)voicemailSync; ++ (id)uniqueID; ++ (id)sysdiagnose_oversized; ++ (id)sub_services; ++ (id)sms; ++ (id)serverBag; ++ (id)reloadAccounts; ++ (id)registrationListener; ++ (id)registrationAuthKit; ++ (id)regeneration; ++ (id)queryRetry; ++ (id)pushToken; ++ (id)phoneRepair; ++ (id)pairingProtocolDebug; ++ (id)pairingIdentities; ++ (id)pairing; ++ (id)pairedIdentities; ++ (id)pairedDeviceRepo; ++ (id)nonce; ++ (id)migration; ++ (id)messageDelivery_oversized; ++ (id)liveMigration; ++ (id)keychainManager; ++ (id)keychain; ++ (id)keyRoll; ++ (id)isActive; ++ (id)internalCleanup; ++ (id)iMessageSpam; ++ (id)IMMacNotificationCenterManager; ++ (id)iCloud; ++ (id)healthDebugging; ++ (id)healthDebug; ++ (id)deviceState; ++ (id)deviceIDMap; ++ (id)deviceHeartbeat; ++ (id)dataProtectionClass; ++ (id)classKeys; ++ (id)appleCare; ++ (id)activeID; ++ (id)accountsDebugging; ++ (id)accountUpdate; ++ (id)accountSync; ++ (id)accountEnabled; ++ (id)accountCleanup; ++ (id)OTRStore; ++ (id)NSUUID; ++ (id)NRPairing; ++ (id)IDSService_oversized; ++ (id)IDSService; ++ (id)GDR; ++ (id)FTMessageDelivery_oversized; ++ (id)engram; ++ (id)ACKTracker; ++ (id)warning; ++ (id)registration; + +@end + +@interface IMCallMonitor : NSObject +{ +// CXCallObserver *_callCenter; + BOOL _wasOnCall; + NSDate *_lastCallDate; +} + ++ (id)sharedInstance; +@property(readonly, retain, nonatomic) NSDate *dateLastCallEnded; // @synthesize dateLastCallEnded=_lastCallDate; +@property(readonly, nonatomic) BOOL isOnCall; +- (void)dealloc; +- (id)init; + +@end + + +@interface IMDesktopNetworkManager : IMNetworkManager +{ +} + +@end + +@interface IMLockdownManager : NSObject +{ + BOOL _settingUpActivationState; + BOOL _isInternalInstall; + BOOL _isCarrierInstall; + BOOL _isNonUIInstall; + BOOL _isVendorInstall; + BOOL _hasShownMismatchedSIM; + BOOL _hasShownWaitingAlertThisSession; + unsigned long long _state; +} + ++ (id)sharedInstance; +@property(nonatomic) BOOL _hasShownWaitingAlertThisSession; // @synthesize _hasShownWaitingAlertThisSession; +@property(nonatomic) BOOL _hasShownMismatchedSIM; // @synthesize _hasShownMismatchedSIM; +@property(nonatomic) BOOL _isVendorInstall; // @synthesize _isVendorInstall; +@property(nonatomic) BOOL _isNonUIInstall; // @synthesize _isNonUIInstall; +@property(nonatomic) BOOL _isCarrierInstall; // @synthesize _isCarrierInstall; +@property(nonatomic) BOOL _isInternalInstall; // @synthesize _isInternalInstall; +@property(nonatomic) BOOL _settingUpActivationState; // @synthesize _settingUpActivationState; +- (id)description; +@property(readonly, nonatomic) NSString *uniqueDeviceIdentifier; +@property(readonly, nonatomic) BOOL isExpired; +@property(readonly, nonatomic) BOOL isActivated; +@property(readonly, nonatomic) BOOL isCarrierInstall; +- (long long)lockdownState; +@property(readonly, nonatomic) BOOL isInternalInstall; +@property(readonly, nonatomic) BOOL isVendorInstall; +@property(readonly, nonatomic) BOOL isNonUIInstall; +- (void)_calculateInstallType; +- (void)_setupActivationState; +@property(nonatomic, setter=_setState:) unsigned long long _state; // @synthesize _state; +- (void)_resetActivationState; +- (void)dealloc; +- (id)init; + +@end + +@interface _IMLogFileCompressor : NSObject +{ + NSMutableArray *_archivers; +} + ++ (id)sharedInstance; +- (void)fileCopierDidFinish:(id)arg1; +- (void)fileCopierDidStart:(id)arg1; +- (void)compressPath:(id)arg1 toPath:(id)arg2; +- (void)dealloc; +- (id)init; + +@end + +@interface IMLogging : NSObject +{ +} + ++ (void)enableConsoleLoggingForLevel:(int)arg1; ++ (void)logString:(id)arg1 toFolder:(id)arg2 toFileNamed:(id)arg3; ++ (id)timeFormatter; ++ (id)dateFormatter; ++ (id)logFileDirectory; ++ (void)logAtLevel:(int)arg1 type:(id)arg2 category:(id)arg3 insertProcessInfo:(BOOL)arg4 simpleLogString:(id)arg5; ++ (void)logAtLevel:(int)arg1 type:(id)arg2 category:(id)arg3 insertProcessInfo:(BOOL)arg4 simpleLogString:(id)arg5 time:(unsigned long long)arg6; ++ (void)logAtLevel:(int)arg1 type:(id)arg2 category:(id)arg3 insertProcessInfo:(BOOL)arg4 format:(id)arg5 arguments:(struct __va_list_tag [1])arg6; ++ (void)logAtLevel:(int)arg1 type:(id)arg2 category:(id)arg3 insertProcessInfo:(BOOL)arg4 simpleLogString:(id)arg5 format:(id)arg6 arguments:(struct __va_list_tag [1])arg7 time:(unsigned long long)arg8; ++ (void)logAtLevel:(int)arg1 type:(id)arg2 category:(id)arg3 format:(id)arg4 arguments:(struct __va_list_tag [1])arg5; ++ (void)logAtLevel:(int)arg1 type:(id)arg2 category:(id)arg3 insertProcessInfo:(BOOL)arg4 format:(id)arg5; ++ (void)logAtLevel:(int)arg1 type:(id)arg2 category:(id)arg3 format:(id)arg4; ++ (id)stringForDate; ++ (BOOL)loggingEnabledForLevel:(int)arg1; + +@end + +@interface IMRemoteURLConnectionMockScheduler : NSObject +{ + NSObject *_connection; +} + +- (void)scheduleMockResponse:(id)arg1; +- (void)scheduleMockResponse:(id)arg1 forURL:(id)arg2; +- (BOOL)_connect; +- (id)init; + +@end + +@interface IMMacNotificationCenterManager : NSObject +{ + NSUserNotificationCenter *_center; +// APSConnection *_connection; + NSArray *_topics; + NSString *_identifier; +} + +@property(retain, nonatomic) NSArray *topics; // @synthesize topics=_topics; +- (void)invalidate; +- (void)_cleanupNotificationCenter; +- (void)_NCUpdated:(id)arg1; +- (void)userNotificationCenter:(id)arg1 notificationPreferencesChanged:(unsigned long long)arg2; +- (void)userNotificationCenter:(id)arg1 notificationsDisabled:(BOOL)arg2; +- (void)updateNotificationsStatus; +- (void)enableNotificationCenter:(BOOL)arg1; +- (void)dealloc; +- (id)initWithIdentifier:(id)arg1 topics:(id)arg2 connection:(id)arg3; + +@end + +@interface IMTimer : NSObject +{ + id _timer; + id _target; + NSDictionary *_userInfo; + NSString *_name; + double _timeInterval; + NSObject *_queue; + SEL _selector; + BOOL _wakeDevice; + BOOL _useCurrentRunLoop; +} + +@property(readonly, retain, nonatomic) id userInfo; // @synthesize userInfo=_userInfo; +- (void)dealloc; +- (void)invalidate; +@property(readonly, retain, nonatomic) NSDate *fireDate; +- (void)_reschedulePCPersistentTimer; +- (void)setFireTimeInterval:(double)arg1; +- (id)_initWithTimeInterval:(double)arg1 name:(id)arg2 shouldWake:(BOOL)arg3 target:(id)arg4 selector:(SEL)arg5 userInfo:(id)arg6 useCurrentRunLoop:(BOOL)arg7 queue:(id)arg8; +- (id)initWithTimeInterval:(double)arg1 name:(id)arg2 shouldWake:(BOOL)arg3 target:(id)arg4 selector:(SEL)arg5 userInfo:(id)arg6 queue:(id)arg7; +- (id)initWithTimeInterval:(double)arg1 name:(id)arg2 shouldWake:(BOOL)arg3 target:(id)arg4 selector:(SEL)arg5 userInfo:(id)arg6 useCurrentRunLoop:(BOOL)arg7; +- (id)initWithTimeInterval:(double)arg1 name:(id)arg2 shouldWake:(BOOL)arg3 target:(id)arg4 selector:(SEL)arg5 userInfo:(id)arg6; + +@end + +@interface IMOrderedMutableDictionary : NSObject +{ + NSMutableDictionary *_dictionary; +// IMDoubleLinkedList *_linkedList; +} + +- (BOOL)containsKey:(id)arg1; +- (BOOL)containsOrderedObject:(id)arg1; +- (id)orderedObjects; +- (void)removeOrderedObjectForKey:(id)arg1; +- (id)orderedObjectForKey:(id)arg1; +- (void)setOrderedObject:(id)arg1 forKey:(id)arg2; +- (void)dealloc; +- (id)init; + +@end + +@interface IMIDSLog : NSObject +{ +} + ++ (id)dataDetector; ++ (id)daemon; ++ (id)encryption; + +@end + +@interface _IMNotificationObservationHelper : NSObject +{ + id _observer; + id _object; + CDUnknownBlockType _block; + NSString *_name; +} + +- (void)_notification:(id)arg1; +- (void)dealloc; +- (id)initWithObserver:(id)arg1 name:(id)arg2 object:(id)arg3 block:(CDUnknownBlockType)arg4; + +@end + +@interface IMRKMessageResponseManager : NSObject +{ +} + ++ (id)sharedManager; ++ (id)alloc; + +@end + +@interface IMRKResponse : NSObject +{ + NSString *_string; + NSDictionary *_attributes; + NSString *_category; +} + ++ (id)alloc; +@property(readonly) NSString *category; // @synthesize category=_category; +@property(readonly) NSDictionary *attributes; // @synthesize attributes=_attributes; +@property(readonly) NSString *string; // @synthesize string=_string; + +@end + +@interface IMRemoteURLConnection : NSObject +{ + NSURLRequest *_request; + NSString *_bundleIdentifierForDataUsage; + CDUnknownBlockType _block; + NSObject *_connection; + BOOL _cancelled; + BOOL _loading; + BOOL _forceCellularIfPossible; + BOOL _alwaysForceCellular; + BOOL _requireIDSHost; + int _retries; + BOOL _shouldUsePipelining; + int _concurrentConnections; + BOOL _disableKeepAlive; + int _keepAliveWifi; + int _keepAliveCell; + BOOL _shouldReturnTimingData; +} + +@property BOOL shouldReturnTimingData; // @synthesize shouldReturnTimingData=_shouldReturnTimingData; +@property BOOL alwaysForceCellular; // @synthesize alwaysForceCellular=_alwaysForceCellular; +@property(copy) CDUnknownBlockType block; // @synthesize block=_block; +@property(retain) NSURLRequest *request; // @synthesize request=_request; +@property int keepAliveCell; // @synthesize keepAliveCell=_keepAliveCell; +@property int keepAliveWifi; // @synthesize keepAliveWifi=_keepAliveWifi; +@property BOOL disableKeepAlive; // @synthesize disableKeepAlive=_disableKeepAlive; +@property int concurrentConnections; // @synthesize concurrentConnections=_concurrentConnections; +@property BOOL shouldUsePipelining; // @synthesize shouldUsePipelining=_shouldUsePipelining; +@property BOOL requireIDSHost; // @synthesize requireIDSHost=_requireIDSHost; +@property(retain) NSString *bundleIdentifierForDataUsage; // @synthesize bundleIdentifierForDataUsage=_bundleIdentifierForDataUsage; +@property BOOL forceCellularIfPossible; // @synthesize forceCellularIfPossible=_forceCellularIfPossible; +- (void)cancel; +- (void)load; +- (void)dealloc; +- (id)initWithURLRequest:(id)arg1 completionBlockWithTimingData:(CDUnknownBlockType)arg2; +- (id)initWithURLRequest:(id)arg1 completionBlock:(CDUnknownBlockType)arg2; +- (BOOL)_connect; +- (BOOL)_disconnect; +- (void)_disconnected; + +@end + +@interface IMNetworkReachability : NSObject +{ + BOOL localWiFiRef; + struct __SCNetworkReachability *reachabilityRef; +} + ++ (id)reachabilityForLocalWiFi; ++ (id)reachabilityForInternetConnection; +//+ (id)reachabilityWithAddress:(const struct sockaddr_in *)arg1; ++ (id)reachabilityWithHostName:(id)arg1; +- (long long)currentReachabilityStatus; +- (long long)networkStatusForFlags:(unsigned int)arg1; +- (long long)localWiFiStatusForFlags:(unsigned int)arg1; +- (void)dealloc; + +@end + +@interface IMNetworkAvailability : NSObject +{ + NSString *_guid; + NSTimer *_timer; + void *_context; + double _timeout; + double _wifiTimeout; + double _startTime; + unsigned long long _flags; + unsigned long long _options; + CDUnknownBlockType _completionBlock; +} + +@property(nonatomic) void *context; // @synthesize context=_context; +- (void)cancel; +- (void)start; +- (void)_setTimer; +- (void)_timerHit:(id)arg1; +- (void)_cancel; +- (void)dealloc; +- (id)initWithFlags:(unsigned long long)arg1 timeout:(double)arg2 wifiTimeout:(double)arg3 completionBlock:(CDUnknownBlockType)arg4; +- (id)initWithFlags:(unsigned long long)arg1 options:(unsigned long long)arg2 timeout:(double)arg3 wifiTimeout:(double)arg4 completionBlock:(CDUnknownBlockType)arg5; + +@end + +@interface IMMultiQueue : NSObject +{ + NSMutableDictionary *_queueMap; + NSObject *_queue; +} + +- (void)_addBlock:(CDUnknownBlockType)arg1 withGUID:(id)arg2 forKey:(id)arg3 description:(id)arg4; +- (void)addBlock:(CDUnknownBlockType)arg1 forKey:(id)arg2 description:(id)arg3; +- (void)addBlock:(CDUnknownBlockType)arg1 withTimeout:(double)arg2 forKey:(id)arg3 description:(id)arg4; +- (void)_popEnqueuedBlockWithGUID:(id)arg1 key:(id)arg2; +- (void)dealloc; +- (id)initWithQueue:(id)arg1; +- (id)init; + +@end + +@interface IMWeakObjectCache : NSObject +{ + NSMutableDictionary *_weakObjectCache; + struct _opaque_pthread_mutex_t _tableLock; +} + ++ (id)sharedInstance; +- (void)removeObject:(id)arg1 key:(id)arg2; +- (id)objectForKey:(id)arg1; +- (id)copyObjectForKey:(id)arg1; +- (id)copyOrSetObject:(id)arg1 forKey:(id)arg2; +- (void)dealloc; +- (id)init; + +@end + + +@interface IMPurgableObject : NSObject +{ + id _instanceObject; + CDUnknownBlockType _setupBlock; + CDUnknownBlockType _cleanupBlock; + NSObject *_queue; +} + +- (void)_receivedMemoryWarning:(id)arg1; +- (id)instance; +- (void)_cleanupInstance; +- (void)_setupInstance; +- (void)dealloc; +- (id)initWithSetupBlock:(CDUnknownBlockType)arg1 cleanupBlock:(CDUnknownBlockType)arg2 queue:(id)arg3; + +@end + +@interface IMWeakReference : NSObject +{ + id _object; + unsigned long long _objectAddress; +} + ++ (id)weakRefWithObject:(id)arg1; +- (id)object; +- (id)initRefWithObject:(id)arg1; +- (id)copyObject; +- (BOOL)isEqual:(id)arg1; +- (unsigned long long)hash; +- (void)dealloc; + +@end + +@interface IMDoubleLinkedListNode : NSObject +{ + IMDoubleLinkedListNode *_prev; + IMDoubleLinkedListNode *_next; + id _object; +} + +@property(retain) id object; // @synthesize object=_object; +@property(retain) IMDoubleLinkedListNode *next; // @synthesize next=_next; +@property(retain) IMDoubleLinkedListNode *prev; // @synthesize prev=_prev; +- (void)orphan; +- (void)removeFromList; +- (void)dealloc; +- (id)initWithObject:(id)arg1; + +@end + +@interface IMDoubleLinkedList : NSObject +{ + IMDoubleLinkedListNode *_first; + IMDoubleLinkedListNode *_last; + unsigned long long _count; +} + +@property(readonly) unsigned long long count; // @synthesize count=_count; +@property(retain) IMDoubleLinkedListNode *last; // @synthesize last=_last; +@property(retain) IMDoubleLinkedListNode *first; // @synthesize first=_first; +- (BOOL)containsObject:(id)arg1; +- (id)allObjects; +- (void)removeAllObjects; +- (void)removeLinkedListNode:(id)arg1; +- (void)pushLinkedListNode:(id)arg1; +- (void)appendLinkedListNode:(id)arg1; +- (id)popObject; +- (void)pushObject:(id)arg1; +- (void)appendObject:(id)arg1; +- (void)dealloc; +- (id)init; + +@end + +@interface OSLogHandleManager : NSObject +{ +} + ++ (id)sharedInstance; + +@end + +@interface _IMPingPacketData : NSObject +{ + int _sequenceNumber; + BOOL _timedOut; + int _error; + struct timeval _timeSent; + double _rtt; +} + +@property(readonly, nonatomic) double rtt; // @synthesize rtt=_rtt; +@property(readonly, nonatomic) int error; // @synthesize error=_error; +@property(readonly, nonatomic) struct timeval timeSent; // @synthesize timeSent=_timeSent; +@property(readonly, nonatomic) BOOL timedOut; // @synthesize timedOut=_timedOut; +@property(readonly, nonatomic) int sequenceNumber; // @synthesize sequenceNumber=_sequenceNumber; +- (id)copyWithZone:(struct _NSZone *)arg1; +- (void)_returnPacketArrived; +- (void)_markPacketAsTimedOut:(double)arg1; +- (id)initWithSequeneceNumber:(int)arg1 timesent:(struct timeval *)arg2 error:(int)arg3; + +@end + +@interface IMPingStatistics : NSObject +{ + double _packetLossRate; + double _medianRoundtripTime; + double _averageRoundtripTime; + double _minRoundtripTime; + double _maxRoundtripTime; + double _standardDeviationRoundtripTime; + double _sumRoundtripTimes; + int _numPingsTransmitted; + int _numPingsReceived; + int _numPacketsSuccessfullySent; +} + +@property(nonatomic, setter=_setStandardDeviationRoundtripTime:) double standardDeviationRoundtripTime; // @synthesize standardDeviationRoundtripTime=_standardDeviationRoundtripTime; +@property(readonly, nonatomic) int packetsSuccessfullySent; // @synthesize packetsSuccessfullySent=_numPacketsSuccessfullySent; +@property(readonly, nonatomic) int numPingsTransmitted; // @synthesize numPingsTransmitted=_numPingsTransmitted; +@property(readonly, nonatomic) int numPingsReceived; // @synthesize numPingsReceived=_numPingsReceived; +@property(readonly, nonatomic) double averageRoundtripTime; // @synthesize averageRoundtripTime=_averageRoundtripTime; +@property(nonatomic, setter=_setMinRoundtripTime:) double minRoundtripTime; // @synthesize minRoundtripTime=_minRoundtripTime; +@property(nonatomic, setter=_setMedianRoundtripTime:) double medianRoundtripTime; // @synthesize medianRoundtripTime=_medianRoundtripTime; +@property(nonatomic, setter=_setMaxRoundtripTime:) double maxRoundtripTime; // @synthesize maxRoundtripTime=_maxRoundtripTime; +- (id)description; +@property(readonly, nonatomic) double packetLossRate; // @synthesize packetLossRate=_packetLossRate; +- (void)_addReceivedPacket:(double)arg1; +- (void)_addTransmittedPacket:(BOOL)arg1; +- (id)copyWithZone:(struct _NSZone *)arg1; +- (id)initWithMaxRTT:(double)arg1 medianRTT:(double)arg2 avgRTT:(double)arg3 minRTT:(double)arg4 transmitted:(int)arg5 successful:(int)arg6 received:(int)arg7; + +@end + +@interface _IMPingStatisticsCollector : NSObject +{ + _IMPingPacketData *_timestampArray[160]; + NSMutableArray *_roundTriptimes; + NSMutableString *_stringToWriteToFile; + IMPingStatistics *_stats; +} + +- (double)_computeStandardDeviation:(id)arg1 numPings:(int)arg2 averageRTT:(double)arg3; +- (double)_computeMedianTime:(id)arg1; +- (id)pingStatsForLastNSeconds:(double)arg1; +- (id)pingStats; +- (BOOL)logStatsToFile:(id)arg1 error:(id *)arg2; +- (void)timeoutOldSequenceNumbers:(double)arg1; +- (void)addEchoReplyPacket:(int)arg1; +- (struct timeval)timeSentForPacket:(int)arg1; +- (void)dealloc; +- (void)addEchoPacket:(int)arg1 packetTimestamp:(struct timeval)arg2 error:(int)arg3; +- (id)init; + +@end + +@interface IMPingTest : NSObject +{ + NSString *_address; + BOOL _usesWifi; + id _collector; + BOOL _isRunning; + NSObject *_sendTimer; + NSObject *_socketReadSource; + double _secondsToRun; +} + +@property(readonly, nonatomic) double secondsToRun; // @synthesize secondsToRun=_secondsToRun; +- (double)longTimeInterval; +//- (void)_setupReadSource:(int)arg1 address:(struct sockaddr_in)arg2 icmID:(unsigned short)arg3 queue:(id)arg4 completionHander:(CDUnknownBlockType)arg5; +//- (void)_doPingWithSocket:(int)arg1 address:(struct sockaddr_in)arg2 timeToRunTestInSeconds:(double)arg3 pingTimeout:(double)arg4 queue:(id)arg5 completionHandler:(CDUnknownBlockType)arg6; +- (int)_setupAndPerformPing:(double)arg1 queue:(id)arg2 completionHandler:(CDUnknownBlockType)arg3; +- (BOOL)writeResultsToFile:(id)arg1 error:(id *)arg2; +- (id)pingStats:(double)arg1; +- (id)pingStats; +- (void)stop; +- (void)startWithTimeout:(double)arg1 queue:(id)arg2 completionHandler:(CDUnknownBlockType)arg3; +- (void)dealloc; +- (id)initWithAddress:(id)arg1 wifi:(BOOL)arg2; + +@end + +@interface IMPowerAssertion : NSObject +{ + unsigned int _assertion; + NSString *_identifier; +} + +- (id)description; +- (void)dealloc; +- (id)initWithIdentifier:(id)arg1; +- (id)initWithIdentifier:(id)arg1 timeout:(double)arg2; + +@end + +@interface NSBundle (FezBundleHelpers) +- (id)_cachedMainBundleResourcePath; +@end + +@interface NSObject (FezAdditions) +- (BOOL)isNull; +@end + +@interface NSProtocolChecker (FezAdditions) +- (id)_imMethodSignatureForSelector:(SEL)arg1; +@end + +@interface NSNumber (FezAdditions) +- (id)localizedString; +@end + +@interface NSCharacterSet (IMFoundationAdditions) ++ (id)invalidCharactersForFileTransferName; +@end + +@interface NSString (FezAdditions) ++ (id)generatedRoomNameForGroupChat; ++ (id)randomString; ++ (id)copyStringGUIDForObject:(id)arg1; ++ (id)stringGUIDForObject:(id)arg1; ++ (id)stringGUID; ++ (id)copyStringGUID; +- (BOOL)roomNameIsProbablyAutomaticallyGenerated; +- (id)stringByRemovingCharactersFromSet:(id)arg1; +- (id)stringWithLTREmbedding; +- (id)pathStringForDisplay; +- (id)__stringByStrippingAttachmentAndControlCharacters; +- (id)__stringByStrippingControlCharacters; +- (id)uniqueSavePath; +- (id)stringByRemovingWhitespace; +- (struct _NSRange)__rangeOfNewlineInRange:(struct _NSRange)arg1; +- (id)stringByResolvingAndStandardizingPath; +- (BOOL)_appearsToBeBusinessID; +- (BOOL)_appearsToBeDSID; +- (BOOL)_appearsToBePhoneNumber; +- (id)_md5Hash; +- (id)_stripPotentialTokenURIWithToken:(id *)arg1; +- (BOOL)_appearsToBeEmail; +- (id)_IDFromFZIDType:(long long)arg1; +- (id)_URIFromFZIDType:(long long)arg1; +- (id)_URIFromCanonicalizedFZIDType:(long long)arg1; +- (long long)_FZBestGuessFZIDType; +- (id)_bestGuessURIFromCanicalizedID; +- (id)_URIFromCanonicalizedBusinessID; +- (id)_URIFromCanonicalizedDSID; +- (id)_URIFromCanonicalizedPhoneNumber; +- (id)_URIFromCanonicalizedEmail; +- (id)_bestGuessURI; +- (id)_URIFromBusinessID; +- (id)_URIFromDSID; +- (id)_URIFromPhoneNumber; +- (id)_URIFromEmail; +- (long long)_FZIDType; +- (id)_FZIDFromPhoneNumber; +- (id)_FZIDFromEmail; +- (id)_stripFZIDPrefix; +- (id)urlFromString; +- (id)stringByAddingURLEscapes; +- (id)stringByRemovingURLEscapes; +- (id)trimmedString; +- (long long)localizedCompareToString:(id)arg1; +- (unsigned int)unsignedIntValue; +- (unsigned int)hexValue; +- (BOOL)isDirectory; +- (BOOL)isEqualToIgnoringCase:(id)arg1; +@end + +@interface NSURL (FezAdditions) +- (id)__imURLByAppendingQueryString:(id)arg1; +@end + +@interface NSMutableString (FezAdditions) +- (void)replaceNewlinesWithSpaces; +@end + +@interface NSAttributedString (FezAdditions) +- (id)trimmedString; +- (BOOL)attribute:(id)arg1 existsInRange:(struct _NSRange)arg2; +@end + +@interface NSMutableAttributedString (FezAdditions) +- (void)removeCharactersWithAttribute:(id)arg1; +- (void)replaceAttribute:(id)arg1 value:(id)arg2 withValue:(id)arg3; +- (void)replaceNewlinesWithSpaces; +- (void)trimWhitespace; +@end + +@interface NSArray (FezAdditions) +- (id)__imArrayByApplyingBlock:(CDUnknownBlockType)arg1 filter:(CDUnknownBlockType)arg2; +- (id)__imArrayByApplyingBlock:(CDUnknownBlockType)arg1; +- (id)__imArrayByFilteringWithBlock:(CDUnknownBlockType)arg1; +- (void)__imForEach:(CDUnknownBlockType)arg1; +- (BOOL)containsObject:(id)arg1 matchingComparison:(SEL)arg2; +- (long long)indexOfObject:(id)arg1 matchingComparison:(SEL)arg2; +- (BOOL)containsObjectIdenticalTo:(id)arg1; +- (id)__imFirstObject; +- (id)_copyForEnumerating; +- (BOOL)_hasSameMembers:(id)arg1; +- (id)__imDeepCopy; +- (BOOL)__imIsMutable; +- (id)__imSetFromArray; +- (id)__IMStripPotentialTokenURIs; +@end + +@interface NSSet (FezAdditions) +- (id)__imSetByApplyingBlock:(CDUnknownBlockType)arg1; +- (void)__imForEach:(CDUnknownBlockType)arg1; +@end + +@interface NSMutableSet (FezAdditions) ++ (id)nonRetainingSet; +@end + +@interface NSMutableArray (FezAdditions) ++ (id)nonRetainingArray; ++ (id)copyNonRetainingArray; +- (void)removeFirstObject; +@end + +@interface NSDictionary (FezAdditions) ++ (id)dictionaryWithKeyArray:(id)arg1 defaultValue:(id)arg2; ++ (id)dictionaryWithPlistData:(id)arg1; +- (id)__imDeepCopy; +- (id)dictionaryFromChanges:(id)arg1; +- (id)plistData; +- (id)keysOfChangedEntriesComparedTo:(id)arg1; +- (BOOL)__imIsMutable; +@end + +@interface NSData (FezAdditions) ++ (id)__imDataWithRandomBytes:(unsigned long long)arg1; ++ (id)__imDataWithHexString:(id)arg1; +- (id)_FTOptionallyDecompressData; +- (id)_FTDecompressData; +- (id)__imHexString; +- (id)__imHexStringOfBytes:(char *)arg1 withLength:(unsigned long long)arg2; +@end + +@interface NSFileManager (FezAdditions) +- (BOOL)copyItemAtPath:(id)arg1 toPath:(id)arg2 uniquePath:(id *)arg3 error:(id *)arg4; +- (BOOL)moveItemAtPath:(id)arg1 toPath:(id)arg2 uniquePath:(id *)arg3 error:(id *)arg4; +- (BOOL)_moveItemAtPath:(id)arg1 toPath:(id)arg2 uniquePath:(id *)arg3 error:(id *)arg4 asCopy:(BOOL)arg5; +- (id)createUniqueDirectoryWithName:(id)arg1 atPath:(id)arg2 ofType:(id)arg3; +- (id)uniqueFilename:(id)arg1 atPath:(id)arg2 ofType:(id)arg3; +- (BOOL)makeDirectoriesInPath:(id)arg1 mode:(unsigned int)arg2; +- (BOOL)_isPathOnMissingVolume:(id)arg1; +- (id)_randomSimilarFilePathAsPath:(id)arg1; +- (id)_randomTemporaryPathWithFileName:(id)arg1 withAppendedPathComponent:(id)arg2; +- (id)_randomTemporaryPathWithFileName:(id)arg1; +- (id)_randomTemporaryPathWithSuffix:(id)arg1 fileName:(id)arg2 withAppendedPathComponent:(id)arg3; +- (id)_randomTemporaryPathWithSuffix:(id)arg1 fileName:(id)arg2; +- (id)_randomTemporaryPathWithSuffix:(id)arg1 withAppendedPathComponent:(id)arg2; +- (id)_randomTemporaryPathWithSuffix:(id)arg1; +- (id)_generateLinkForURL:(id)arg1; +@end + +@interface NSMutableDictionary (IMFoundation_Additions) ++ (id)nonRetainingKeyAndValueDictionary; ++ (id)nonRetainingDictionary; ++ (id)retainingKeyDictionary; +@end + +@interface NSError (FezAdditions) ++ (id)genericErrorWithFile:(const char *)arg1 function:(const char *)arg2 lineNumber:(long long)arg3; +@end + +@interface NSObject (DelayedPerformAdditions) +- (void)performSelector:(SEL)arg1 withObject:(id)arg2 afterDelay:(double)arg3 ignoreMenuTracking:(BOOL)arg4; +@end + +@interface NSUserDefaults (SpecificDomainAdditions) ++ (id)_IMObjectForKey:(id)arg1 inDomain:(id)arg2; ++ (void)_IMSetObject:(id)arg1 forKey:(id)arg2 inDomain:(id)arg3; ++ (id)_IMAppObjectForKey:(id)arg1; ++ (id)_IMAgentObjectForKey:(id)arg1; +@end + +@interface NSDictionary (DictionaryTypeChecking) +- (id)_dataForKey:(id)arg1; +- (id)_stringForKey:(id)arg1; +- (id)_numberForKey:(id)arg1; +- (id)_arrayForKey:(id)arg1; +- (id)_dictionaryForKey:(id)arg1; +@end + +@interface NSThread (_IMThreadBlockSupport) ++ (void)_im_runBlock:(CDUnknownBlockType)arg1; +- (void)__im_performBlock:(CDUnknownBlockType)arg1 afterDelay:(double)arg2 modes:(id)arg3; +- (void)__im_performBlock:(CDUnknownBlockType)arg1 afterDelay:(double)arg2; +- (void)__im_performBlock:(CDUnknownBlockType)arg1 waitUntilDone:(BOOL)arg2 modes:(id)arg3; +- (void)__im_performBlock:(CDUnknownBlockType)arg1 waitUntilDone:(BOOL)arg2; +- (void)__im_performBlock:(CDUnknownBlockType)arg1 modes:(id)arg2; +- (void)__im_performBlock:(CDUnknownBlockType)arg1; +@end + +@interface NSObject (_IMSupportMessagingProxy) +- (id)__im_getInvocation:(id *)arg1; +- (id)__im_afterDelay:(double)arg1 modes:(id)arg2; +- (id)__im_afterDelay:(double)arg1; +- (id)__im_onThread:(id)arg1; +- (id)__im_onThread:(id)arg1 immediateForMatchingThread:(BOOL)arg2; +- (id)__im_onDetachedThread; +- (id)__im_onMainThreadIfNecessary; +- (id)__im_onMainThread; +@end + +@interface NSMutableArray (IMMutableArrayRandomization) +- (void)__imRandomizeArray; +@end + +@interface NSString (IMFastFormatAdditions) +- (id)_imInitWithFormat:(id)arg1 arguments:(struct __va_list_tag [1])arg2; +@end + +@interface NSProtocolChecker (IMFixComplileWarnings) +- (id)initWithProtocol:(id)arg1; +@end + +@interface NSDictionary (HFSFileAttributes) +@property(readonly, nonatomic) unsigned long long fileHFSResourceForkSize; +@property(readonly, nonatomic) unsigned short fileHFSFlags; +@end + +@interface NSData (FezSecurityAdditions) +@property(readonly, nonatomic) NSData *SHA256Data; +@property(readonly, nonatomic) NSString *SHA1HexString; +@property(readonly, nonatomic) NSData *SHA1Data; +@end + +@interface NSInvocation (IMInvocationQueueAdditions) +- (BOOL)wantsReturnValue; +@end + +@interface NSString (MobileMeHelpers) +@property(readonly, nonatomic) NSString *stripMobileMSuffixIfPresent; +@property(readonly, nonatomic) BOOL hasMobileMeSuffix; +@property(readonly, nonatomic) NSString *mobileMeDomain; +@end + +@interface NSNotificationCenter (_IMNotificationCenterAdditions) +- (void)__mainThreadPostNotificationName:(id)arg1 object:(id)arg2 userInfo:(id)arg3; +- (void)__mainThreadPostNotificationName:(id)arg1 object:(id)arg2; +- (void)__mainThreadPostNotification:(id)arg1; +- (void)postNotificationName:(id)arg1; +@end + +@interface NSArray (MyersDiff) +- (void)differencesFromArray:(id)arg1 usingComparator:(CDUnknownBlockType)arg2 removedIndexes:(id *)arg3 insertedIndexes:(id *)arg4; +- (void)differencesFromArray:(id)arg1 removedIndexes:(id *)arg2 insertedIndexes:(id *)arg3; +@end + diff --git a/Dumped Classes/IMSharedUtilities_ClassDump.h b/Dumped Classes/IMSharedUtilities_ClassDump.h new file mode 100644 index 0000000..a49ab41 --- /dev/null +++ b/Dumped Classes/IMSharedUtilities_ClassDump.h @@ -0,0 +1,1698 @@ +// +// Generated by class-dump 3.5 (64 bit). +// +// class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2013 by Steve Nygard. +// + +#pragma mark Blocks + +typedef void (^CDUnknownBlockType)(void); // return type and parameters are unknown + +#pragma mark Named Structures + +struct IMFileLocation_t { + char *_field1; + char *_field2; + char *_field3; + char *_field4; + int _field5; +}; + +struct IMPreviewConstraints { + double _field1; + struct CGSize _field2; + double _field3; + char _field4; +}; + +struct _TidyDoc { + int _field1; +}; + +struct __va_list_tag { + unsigned int _field1; + unsigned int _field2; + void *_field3; + void *_field4; +}; + +#pragma mark - + +// +// File: Versions/A/IMSharedUtilities +// UUID: 889CA3DD-770D-3AAB-85AE-7A6E5B8E4FAE +// +// Arch: x86_64 +// Current version: 1.0.0 +// Compatibility version: 1.0.0 +// Source version: 1981.1.15.0.0 +// +// Objective-C Garbage Collection: Unsupported +// + +@interface IMItem : NSObject +{ + NSString *_handle; + NSString *_service; + NSString *_account; + NSString *_unformattedID; + NSString *_accountID; + NSString *_roomName; + NSDictionary *_senderInfo; + NSString *_guid; + NSDate *_time; + NSString *_countryCode; + long long _messageID; + id _context; + long long _type; + NSString *_balloonBundleID; + unsigned long long _sortID; + NSString *_destinationCallerID; + NSDate *_clientSendTime; + NSString *_personCentric; + long long _cloudKitSyncState; + NSString *_cloudKitRecordID; + NSData *_cloudKitServerChangeTokenBlob; + NSString *_cloudKitRecordChangeTag; + NSString *_parentChatID; + long long _srCloudKitSyncState; + NSString *_srCloudKitRecordID; + NSString *_srCloudKitRecordChangeTag; +} + ++ (BOOL)supportsSecureCoding; ++ (Class)classForMessageItemDictionary:(id)arg1; ++ (Class)classForIMItemType:(long long)arg1; +@property(copy, nonatomic) NSString *srCloudKitRecordChangeTag; // @synthesize srCloudKitRecordChangeTag=_srCloudKitRecordChangeTag; +@property(copy, nonatomic) NSString *srCloudKitRecordID; // @synthesize srCloudKitRecordID=_srCloudKitRecordID; +@property(nonatomic) long long srCloudKitSyncState; // @synthesize srCloudKitSyncState=_srCloudKitSyncState; +@property(copy, nonatomic) NSString *parentChatID; // @synthesize parentChatID=_parentChatID; +@property(copy, nonatomic) NSString *cloudKitRecordChangeTag; // @synthesize cloudKitRecordChangeTag=_cloudKitRecordChangeTag; +@property(copy, nonatomic) NSData *cloudKitServerChangeTokenBlob; // @synthesize cloudKitServerChangeTokenBlob=_cloudKitServerChangeTokenBlob; +@property(copy, nonatomic) NSString *cloudKitRecordID; // @synthesize cloudKitRecordID=_cloudKitRecordID; +@property(nonatomic) long long cloudKitSyncState; // @synthesize cloudKitSyncState=_cloudKitSyncState; +@property(retain, nonatomic) NSString *personCentric; // @synthesize personCentric=_personCentric; +@property(retain, nonatomic) NSDate *clientSendTime; // @synthesize clientSendTime=_clientSendTime; +@property(retain, nonatomic) NSString *destinationCallerID; // @synthesize destinationCallerID=_destinationCallerID; +@property(nonatomic) unsigned long long sortID; // @synthesize sortID=_sortID; +@property(retain, nonatomic) NSString *balloonBundleID; // @synthesize balloonBundleID=_balloonBundleID; +@property(nonatomic) long long type; // @synthesize type=_type; +@property(retain, nonatomic) id context; // @synthesize context=_context; +@property(nonatomic, setter=_setMessageID:) long long messageID; // @synthesize messageID=_messageID; +@property(retain, nonatomic) NSString *countryCode; // @synthesize countryCode=_countryCode; +@property(retain, nonatomic) NSDate *time; // @synthesize time=_time; +@property(retain, nonatomic) NSString *guid; // @synthesize guid=_guid; +@property(retain, nonatomic) NSDictionary *senderInfo; // @synthesize senderInfo=_senderInfo; +@property(retain, nonatomic) NSString *roomName; // @synthesize roomName=_roomName; +@property(retain, nonatomic) NSString *accountID; // @synthesize accountID=_accountID; +@property(retain, nonatomic) NSString *unformattedID; // @synthesize unformattedID=_unformattedID; +@property(retain, nonatomic) NSString *account; // @synthesize account=_account; +@property(retain, nonatomic) NSString *service; // @synthesize service=_service; +@property(retain, nonatomic) NSString *handle; // @synthesize handle=_handle; +@property(readonly, nonatomic) BOOL isLastMessageCandidate; +@property(readonly, nonatomic) BOOL isFirstMessageCandidate; +- (unsigned long long)hash; +- (BOOL)isOlderThanItem:(id)arg1; +- (BOOL)isEqual:(id)arg1; +@property(retain, nonatomic) NSString *personCentricID; +@property(retain, nonatomic) NSString *sender; +@property(readonly, nonatomic) BOOL isFromMe; +- (id)dictionaryRepresentation; +- (id)copyDictionaryRepresentation; +- (id)initWithIMRemoteObjectSerializedDictionary:(id)arg1; +- (void)encodeWithIMRemoteObjectSerializedDictionary:(id)arg1; +- (void)encodeWithCoder:(id)arg1; +- (id)initWithCoder:(id)arg1; +- (id)copyWithZone:(struct _NSZone *)arg1; +- (void)dealloc; +- (id)initWithSenderInfo:(id)arg1 time:(id)arg2 guid:(id)arg3 messageID:(long long)arg4 account:(id)arg5 accountID:(id)arg6 service:(id)arg7 handle:(id)arg8 roomName:(id)arg9 unformattedID:(id)arg10 countryCode:(id)arg11 type:(long long)arg12; +- (id)initWithSender:(id)arg1 time:(id)arg2 guid:(id)arg3 type:(long long)arg4; +- (id)initWithDictionary:(id)arg1; +- (id)description; +- (struct _NSRange)associatedMessageRange; +- (BOOL)isSticker; +- (BOOL)isMessageEdit; +- (BOOL)isBreadcrumb; +- (BOOL)isMessageAcknowledgment; +- (long long)associatedMessageType; +- (id)associatedMessageGUID; +- (BOOL)isAssociatedMessageItem; +- (id)pluginSessionGUID; +- (id)consumedSessionPayloads; + +@end + + +@protocol IMEventListenerResponse +@property(readonly, nonatomic) NSError *error; +@property(readonly, nonatomic) NSDictionary *userInfo; +@property(readonly, nonatomic, getter=didSucceed) BOOL success; +@end + +@protocol IMKeyValueCollectionStorage +- (void)removeObjectForKey:(id)arg1; +- (id)objectForKey:(id)arg1; +- (void)setObject:(id)arg1 forKey:(id)arg2; +@end + +@protocol IMPreviewGeneratorProtocol ++ (BOOL)shouldShadePreview; ++ (BOOL)shouldScaleUpPreview; ++ (BOOL)writesToDisk; ++ (double)maxUpScale; ++ (NSString *)previewExtension; ++ (NSURL *)generateAndPersistPreviewFromSourceURL:(NSURL *)arg1 withPreviewConstraints:(struct IMPreviewConstraints)arg2 error:(id *)arg3; ++ (struct CGImage *)newPreviewFromSourceURL:(NSURL *)arg1 withPreviewConstraints:(struct IMPreviewConstraints)arg2 error:(id *)arg3; +@end + +@protocol IMRemoteObjectCoding +- (id)initWithIMRemoteObjectSerializedDictionary:(NSDictionary *)arg1; +- (void)encodeWithIMRemoteObjectSerializedDictionary:(NSMutableDictionary *)arg1; +@end + +@protocol IMSingletonOverriding + +@optional +- (BOOL)shouldInvokeSelector:(SEL)arg1 onSingleton:(id)arg2; +- (void)didOverrideSingleton:(id)arg1; +@end + +@protocol IMUTITypeInformation ++ (NSArray *)UTITypes; +@end + + +@interface IMTUConversationItem : IMItem +{ + unsigned long long _flags; +} + +@property(nonatomic) unsigned long long flags; // @synthesize flags=_flags; +- (BOOL)isFromMe; +- (id)conversationUUID; +- (id)copyDictionaryRepresentation; +- (void)encodeWithCoder:(id)arg1; +- (id)initWithDictionary:(id)arg1; +- (id)initWithCoder:(id)arg1; + +@end + + + +@interface IMMessageItem : IMItem +{ + BOOL _blockingRichLinks; + BOOL _updatingDataSourcePayload; + BOOL _backwardsCompatibleVersion; + BOOL _isSOS; + unsigned int _error; + NSString *_subject; + NSString *_plainBody; + NSArray *_fileTransferGUIDs; + unsigned long long _flags; + NSAttributedString *_body; + NSData *_bodyData; + long long _replaceID; + NSDate *_timeRead; + NSDate *_timeDelivered; + NSDate *_timePlayed; + long long _expireState; + NSData *_payloadData; + NSData *_contactsAvatarRecipeData; + NSString *_expressiveSendStyleID; + NSDate *_timeExpressiveSendPlayed; + NSData *_typingIndicatorIcon; + NSDictionary *_messageSummaryInfo; + NSDictionary *_bizIntent; + NSString *_locale; + NSString *_notificationIDSTokenURI; +} + ++ (BOOL)messageContainsSurfDD:(id)arg1; ++ (BOOL)supportsSecureCoding; +@property(nonatomic) BOOL isSOS; // @synthesize isSOS=_isSOS; +@property(nonatomic) BOOL backwardsCompatibleVersion; // @synthesize backwardsCompatibleVersion=_backwardsCompatibleVersion; +@property(nonatomic, getter=isUpdatingDataSourcePayload) BOOL updatingDataSourcePayload; // @synthesize updatingDataSourcePayload=_updatingDataSourcePayload; +@property(retain, nonatomic) NSString *notificationIDSTokenURI; // @synthesize notificationIDSTokenURI=_notificationIDSTokenURI; +@property(nonatomic) BOOL blockingRichLinks; // @synthesize blockingRichLinks=_blockingRichLinks; +@property(retain, nonatomic) NSString *locale; // @synthesize locale=_locale; +@property(retain, nonatomic) NSDictionary *bizIntent; // @synthesize bizIntent=_bizIntent; +@property(retain, nonatomic) NSDictionary *messageSummaryInfo; // @synthesize messageSummaryInfo=_messageSummaryInfo; +@property(retain, nonatomic) NSData *typingIndicatorIcon; // @synthesize typingIndicatorIcon=_typingIndicatorIcon; +@property(retain, nonatomic) NSDate *timeExpressiveSendPlayed; // @synthesize timeExpressiveSendPlayed=_timeExpressiveSendPlayed; +@property(retain, nonatomic) NSString *expressiveSendStyleID; // @synthesize expressiveSendStyleID=_expressiveSendStyleID; +@property(retain, nonatomic) NSData *contactsAvatarRecipeData; // @synthesize contactsAvatarRecipeData=_contactsAvatarRecipeData; +@property(retain, nonatomic) NSData *payloadData; // @synthesize payloadData=_payloadData; +@property(nonatomic) long long expireState; // @synthesize expireState=_expireState; +@property(retain, nonatomic) NSDate *timePlayed; // @synthesize timePlayed=_timePlayed; +@property(retain, nonatomic) NSDate *timeDelivered; // @synthesize timeDelivered=_timeDelivered; +@property(retain, nonatomic) NSDate *timeRead; // @synthesize timeRead=_timeRead; +@property(nonatomic) long long replaceID; // @synthesize replaceID=_replaceID; +@property(retain, nonatomic) NSData *bodyData; // @synthesize bodyData=_bodyData; +@property(nonatomic) unsigned long long flags; // @synthesize flags=_flags; +@property(retain, nonatomic) NSArray *fileTransferGUIDs; // @synthesize fileTransferGUIDs=_fileTransferGUIDs; +@property(nonatomic) unsigned int errorCode; // @synthesize errorCode=_error; +@property(retain, nonatomic) NSString *plainBody; // @synthesize plainBody=_plainBody; +@property(retain, nonatomic) NSString *subject; // @synthesize subject=_subject; +- (id)_localizedBackwardsCompatibleExpressiveSendText; +- (BOOL)isLastMessageCandidate; +- (BOOL)isFirstMessageCandidate; +- (id)description; +@property(readonly, copy, nonatomic) NSAttributedString *breadcrumbText; +- (BOOL)isEqual:(id)arg1; +@property(retain, nonatomic) NSAttributedString *body; // @synthesize body=_body; +- (void)_clearBodyData; +- (void)_regenerateBodyData; +- (void)_regenerateBodyText; +- (void)_generateBodyTextIfNeeded; +- (void)_generateBodyDataIfNeeded; +- (void)adjustIsEmptyFlag; +- (void)_updateFlags:(unsigned long long)arg1; +- (void)setWasDataDetected:(BOOL)arg1; +@property(readonly, nonatomic) BOOL wasDataDetected; +@property(nonatomic) BOOL hasDataDetectorResults; +@property(nonatomic) BOOL isCorrupt; +@property(readonly, nonatomic) BOOL isFromExternalSource; +@property(readonly, nonatomic) BOOL wasDowngraded; +@property(readonly, nonatomic) BOOL isSent; +@property(readonly, nonatomic) BOOL isEmote; +@property(readonly, nonatomic) BOOL isLocatingMessage; +@property(readonly, nonatomic) BOOL isTypingMessage; +@property(readonly, nonatomic) BOOL isPrepared; +@property(readonly, nonatomic) BOOL isDelivered; +- (BOOL)isFromMe; +@property(readonly, nonatomic) BOOL isPlayed; +@property(readonly, nonatomic) BOOL isExpirable; +@property(readonly, nonatomic) BOOL isAudioMessage; +@property(readonly, nonatomic) BOOL isRead; +@property(readonly, nonatomic) BOOL isEmpty; +@property(readonly, nonatomic) BOOL isFinished; +@property(readonly, nonatomic) BOOL isAlert; +- (id)sender; +- (void)dealloc; +- (id)initWithSenderInfo:(id)arg1 time:(id)arg2 timeRead:(id)arg3 timeDelivered:(id)arg4 timePlayed:(id)arg5 subject:(id)arg6 body:(id)arg7 bodyData:(id)arg8 attributes:(id)arg9 fileTransferGUIDs:(id)arg10 flags:(unsigned long long)arg11 guid:(id)arg12 messageID:(long long)arg13 account:(id)arg14 accountID:(id)arg15 service:(id)arg16 handle:(id)arg17 roomName:(id)arg18 unformattedID:(id)arg19 countryCode:(id)arg20 expireState:(long long)arg21 balloonBundleID:(id)arg22 payloadData:(id)arg23 expressiveSendStyleID:(id)arg24 timeExpressiveSendPlayed:(id)arg25 bizIntent:(id)arg26 locale:(id)arg27 errorType:(unsigned int)arg28 type:(long long)arg29; +- (id)initWithSenderInfo:(id)arg1 time:(id)arg2 timeRead:(id)arg3 timeDelivered:(id)arg4 timePlayed:(id)arg5 subject:(id)arg6 body:(id)arg7 bodyData:(id)arg8 attributes:(id)arg9 fileTransferGUIDs:(id)arg10 flags:(unsigned long long)arg11 guid:(id)arg12 messageID:(long long)arg13 account:(id)arg14 accountID:(id)arg15 service:(id)arg16 handle:(id)arg17 roomName:(id)arg18 unformattedID:(id)arg19 countryCode:(id)arg20 expireState:(long long)arg21 balloonBundleID:(id)arg22 payloadData:(id)arg23 expressiveSendStyleID:(id)arg24 timeExpressiveSendPlayed:(id)arg25 bizIntent:(id)arg26 locale:(id)arg27 errorType:(unsigned int)arg28; +- (id)initWithSenderInfo:(id)arg1 time:(id)arg2 guid:(id)arg3 messageID:(long long)arg4 account:(id)arg5 accountID:(id)arg6 service:(id)arg7 handle:(id)arg8 roomName:(id)arg9 unformattedID:(id)arg10 countryCode:(id)arg11; +- (id)initWithSender:(id)arg1 time:(id)arg2 guid:(id)arg3 type:(long long)arg4; +- (id)initWithSender:(id)arg1 time:(id)arg2 body:(id)arg3 attributes:(id)arg4 fileTransferGUIDs:(id)arg5 flags:(unsigned long long)arg6 error:(id)arg7 guid:(id)arg8 type:(long long)arg9; +- (id)initWithSender:(id)arg1 time:(id)arg2 body:(id)arg3 attributes:(id)arg4 fileTransferGUIDs:(id)arg5 flags:(unsigned long long)arg6 error:(id)arg7 guid:(id)arg8; +- (id)copyDictionaryRepresentation; +- (id)initWithDictionary:(id)arg1; +- (id)initWithDictionary:(id)arg1 hint:(id)arg2; +- (void)encodeWithCoder:(id)arg1; +- (id)initWithCoder:(id)arg1; +- (void)enumerateAttachmentGUIDsWithBlock:(CDUnknownBlockType)arg1; +- (id)copyForBackwardsCompatibility; +- (id)copyWithFlags:(unsigned long long)arg1; +- (id)copyWithZone:(struct _NSZone *)arg1; + +@end + +@interface FZMessage : IMMessageItem +{ +} + ++ (BOOL)supportsSecureCoding; +- (id)initWithIMRemoteObjectSerializedDictionary:(id)arg1; +- (void)encodeWithIMRemoteObjectSerializedDictionary:(id)arg1; +- (void)encodeWithCoder:(id)arg1; +- (id)initWithCoder:(id)arg1; +- (id)copyWithZone:(struct _NSZone *)arg1; + +@end + + + +@interface IMDeviceConditions : NSObject +{ +} + ++ (id)sharedInstance; +@property(readonly) BOOL isDeviceCharging; +- (id)_batteryStatus; +@property(readonly) BOOL isDeviceOnWifi; + +@end + +@interface IMCoreAutomationNotifications : NSObject +{ + long long _chatsWrittenCount; + long long _messagesWrittenCount; + long long _attachmentsWrittenCount; +} + ++ (id)sharedInstance; +@property(readonly) long long attachmentsWrittenCount; // @synthesize attachmentsWrittenCount=_attachmentsWrittenCount; +@property(readonly) long long messagesWrittenCount; // @synthesize messagesWrittenCount=_messagesWrittenCount; +@property(readonly) long long chatsWrittenCount; // @synthesize chatsWrittenCount=_chatsWrittenCount; +- (void)addNewMessagesSyncedCount:(long long)arg1; +- (void)addNewAttachmentsSyncedCount:(long long)arg1; +- (void)addNewChatsSyncedCount:(long long)arg1; +- (void)postCoreAutomationNotificationFinishedTapToDownload:(id)arg1 downloadedFromCloudKitSuccessfully:(BOOL)arg2; +- (void)postCoreAutomationNotificationFinishedPurgingAttachments:(id)arg1 withErrorString:(id)arg2; +- (void)postCoreAutomationNotificationWithDictionary:(id)arg1 withVerboseLogging:(BOOL)arg2; +- (void)postCoreAutomationNotificationWithAction:(id)arg1; +- (void)postCoreAutomationNotificationFinishedPeriodicSyncNotificationWithStartTime:(id)arg1 chatsDidsync:(BOOL)arg2 messagesDidSync:(BOOL)arg3 attachmentsDidSync:(BOOL)arg4; +- (void)clearSyncCounts; +- (id)init; + +@end + +@interface IMEventNotificationManager : NSObject + +@property long long busyCount; // @synthesize busyCount=_busyCount; +@property(readonly, nonatomic) NSMutableArray *registeredNotificationQueues; // @synthesize registeredNotificationQueues=_registeredNotificationQueues; +//@property(readonly, nonatomic) IMEventListenerList *eventListeners; // @synthesize eventListeners=_eventListeners; +@property double eventTimeout; // @synthesize eventTimeout=_eventTimeout; +//@property(readonly, nonatomic) IMAutomaticEventNotificationQueue *notificationQueue; // @synthesize notificationQueue=_notificationQueue; + +- (void)appendNotificationForEventHandler:(id)arg1 sender:(id)arg2 eventNotificationBlock:(CDUnknownBlockType)arg3; +- (void)pushNotificationForEventHandler:(id)arg1 sender:(id)arg2 eventNotificationBlock:(CDUnknownBlockType)arg3; +- (void)appendNotificationForEventHandler:(id)arg1 eventNotificationBlock:(CDUnknownBlockType)arg2; +- (void)pushNotificationForEventHandler:(id)arg1 eventNotificationBlock:(CDUnknownBlockType)arg2; +- (void)pauseEventNotifications:(BOOL)arg1; +- (void)cancelAllEventNotifications; +- (void)cancelEventNotificationsForEventHandler:(id)arg1; +- (id)createEventListenerForNotificationName:(id)arg1 object:(id)arg2; +- (void)registerEventListener:(id)arg1; +- (void)eventListenerDidFinish:(id)arg1; +- (void)registerNotificationQueue:(id)arg1; +- (void)eventNotificationQueue:(id)arg1 didChangeBusyState:(BOOL)arg2; +@property(readonly, getter=isBusy) BOOL busy; +- (void)dealloc; +- (id)init; + +// Remaining properties +@property(readonly, copy) NSString *debugDescription; +@property(readonly, copy) NSString *description; +@property(readonly) unsigned long long hash; +@property(readonly) Class superclass; + +@end + +@interface IMStickerPack : NSObject +{ + NSMutableSet *_stickers; + struct NSString *_GUID; + NSString *_name; + NSURL *_displayAssetURL; + NSURL *_fileURL; + NSString *_appBundleIdentifier; + NSString *_appVersion; +} + +@property(copy, nonatomic) NSString *appVersion; // @synthesize appVersion=_appVersion; +@property(copy, nonatomic) NSString *appBundleIdentifier; // @synthesize appBundleIdentifier=_appBundleIdentifier; +@property(copy, nonatomic) NSURL *fileURL; // @synthesize fileURL=_fileURL; +@property(copy, nonatomic) NSURL *displayAssetURL; // @synthesize displayAssetURL=_displayAssetURL; +@property(copy, nonatomic) NSString *name; // @synthesize name=_name; +@property(copy, nonatomic) NSString *GUID; // @synthesize GUID=_GUID; +- (id)initWithStickerPackProperties:(id)arg1 stickerPackBundleURL:(id)arg2 appBundleIdentifier:(id)arg3 appVersion:(id)arg4; +- (id)_generatePackGUIDWithPackID:(id)arg1 appBundleID:(id)arg2 appVersion:(id)arg3; +- (id)description; +- (id)initWithDictionary:(id)arg1; +- (id)dictionaryRepresentation; +- (void)addSticker:(id)arg1; +- (void)dealloc; +@property(readonly, nonatomic) NSSet *stickers; +- (id)initWithGUID:(struct NSString *)arg1 name:(id)arg2 displayAssetURL:(id)arg3 fileURL:(id)arg4 appBundleIdentifier:(id)arg5 appVersion:(id)arg6; + +@end + + +@interface IMPreviewGeneratorManager : NSObject +{ + NSDictionary *_UTITypes; + NSDictionary *_dynamicTypes; +} + ++ (id)previewGeneratorClasses; ++ (id)sharedInstance; +@property(copy, nonatomic) NSDictionary *dynamicTypes; // @synthesize dynamicTypes=_dynamicTypes; +@property(copy, nonatomic) NSDictionary *UTITypes; // @synthesize UTITypes=_UTITypes; +- (void)dealloc; +- (Class)_classForUTIType:(id)arg1; +- (Class)_previewGeneratorClassForSourceURL:(id)arg1; +- (BOOL)movePreviewToDiskCache:(id)arg1 previewURL:(id)arg2 error:(id *)arg3; +- (BOOL)persistPreviewToDiskCache:(struct CGImage *)arg1 previewURL:(id)arg2 error:(id *)arg3; +- (struct CGImage *)newPreviewFromSourceURL:(id)arg1 withPreviewConstraints:(struct IMPreviewConstraints)arg2 error:(id *)arg3; +- (BOOL)generateAndPersistPreviewFromSourceURL:(id)arg1 previewURL:(id)arg2 previewConstraints:(struct IMPreviewConstraints)arg3 error:(id *)arg4; +- (id)init; + +@end + +@interface IMDeviceUtilities : NSObject +{ +} + ++ (BOOL)IMDeviceIsGreenTea; ++ (BOOL)IMDeviceIsChinaRegion; ++ (BOOL)IMSupportsASTC; + +@end + +@interface IMRecentItem : NSObject +{ + NSNumber *_timestamp; + NSString *_GUID; + NSURL *_fileURL; + NSData *_payloadData; + NSDictionary *_messageItemInfo; + NSString *_accessibilityString; +} + +@property(retain, nonatomic) NSString *accessibilityString; // @synthesize accessibilityString=_accessibilityString; +@property(retain, nonatomic) NSDictionary *messageItemInfo; // @synthesize messageItemInfo=_messageItemInfo; +@property(retain, nonatomic) NSNumber *timestamp; // @synthesize timestamp=_timestamp; +@property(retain, nonatomic) NSData *payloadData; // @synthesize payloadData=_payloadData; +@property(retain, nonatomic) NSURL *fileURL; // @synthesize fileURL=_fileURL; +@property(copy, nonatomic) NSString *GUID; // @synthesize GUID=_GUID; +- (id)asJSONObject; +- (unsigned long long)hash; +- (BOOL)isEqual:(id)arg1; +- (id)initWithGUID:(id)arg1 data:(id)arg2 messageItemInfo:(id)arg3; +- (void)dealloc; + +@end + +@interface IMRecentItemsList : NSObject +{ + NSObject *_diskWritingQueue; +} + ++ (id)sharedInstance; +- (id)_guidForFileURL:(id)arg1; +- (void)_updateRecentsCache:(id)arg1 forDomain:(id)arg2; +- (id)_recentsCacheForDomain:(id)arg1; +- (id)_buildLRUCacheUsingArray:(id)arg1 forDomain:(id)arg2; +- (void)_removeRecentDataPayloadEntryFromDisk:(id)arg1 forDomain:(id)arg2; +- (void)_saveRecentDataPayloadEntryToDisk:(id)arg1 forDomain:(id)arg2; +- (void)_removeRecentDataPayloadEntry:(id)arg1 forDomain:(id)arg2; +- (void)addRecentItemAtFileURL:(id)arg1 GUID:(id)arg2 infoDictionary:(id)arg3 forDomain:(id)arg4; +- (void)_addRecentDataPayloadEntry:(id)arg1 toDomain:(id)arg2; +- (void)fetchRecentItemsForDomain:(id)arg1 completion:(CDUnknownBlockType)arg2; +- (void)fetchRecentStickersWithCompletion:(CDUnknownBlockType)arg1; +- (void)addRecentItemWithData:(id)arg1 GUID:(id)arg2 infoDictionary:(id)arg3 forDomain:(id)arg4; +- (void)deleteRecentsInFirstLaunch; +- (void)deleteAllRecentItemsForDomain:(id)arg1; +- (void)deleteRecentItemWithData:(id)arg1 GUID:(id)arg2 forDomain:(id)arg3; +- (void)deleteRecentItemWithFileURL:(id)arg1 GUID:(id)arg2 forDomain:(id)arg3; +- (void)dispatchCacheUpdateWithBlock:(CDUnknownBlockType)arg1; +- (long long)cacheSizeForDomain:(id)arg1; +- (void)dealloc; +- (id)init; + +@end + + +@interface IMTranscoderTelemetry : NSObject +{ + unsigned char _signpostId; +} + +- (void)emitSignpostTranscodeSkipSourceUTI:(id)arg1; +- (void)emitSignpostTranscodeFinalForDestinationUTI:(id)arg1; +- (void)emitSignpostTranscodeStepForDestinationUTI:(id)arg1; +- (void)emitSignpostNoTranscodeFromUTI:(id)arg1; +- (void)_emitSignpostTranscodeRange:(long long)arg1 begin:(BOOL)arg2; +- (void)_emitSignpostPreviewGenerationRange:(long long)arg1 begin:(BOOL)arg2; +- (void)emitPreviewGenerationEndFromUTI:(id)arg1; +- (void)emitPreviewGenerationBeginFromUTI:(id)arg1; +- (void)emitTranscodeEndFromUTI:(id)arg1; +- (void)emitTranscodeBeginFromUTI:(id)arg1; +- (long long)_telemetryImageTypeForUTI:(id)arg1; +- (id)init; + +@end + +@interface IMLocationShareStatusChangeItem : IMItem +{ + BOOL _actionable; + BOOL _expired; + long long _status; + NSString *_otherCountryCode; + NSString *_otherHandle; + NSString *_otherUnformattedID; + long long _direction; +} + ++ (BOOL)supportsSecureCoding; +@property(nonatomic) long long direction; // @synthesize direction=_direction; +@property(retain, nonatomic) NSString *otherUnformattedID; // @synthesize otherUnformattedID=_otherUnformattedID; +@property(retain, nonatomic) NSString *otherHandle; // @synthesize otherHandle=_otherHandle; +@property(retain, nonatomic) NSString *otherCountryCode; // @synthesize otherCountryCode=_otherCountryCode; +@property(nonatomic) BOOL expired; // @synthesize expired=_expired; +@property(nonatomic) BOOL actionable; // @synthesize actionable=_actionable; +@property(nonatomic) long long status; // @synthesize status=_status; +- (BOOL)isLastMessageCandidate; +- (id)copyDictionaryRepresentation; +- (id)initWithDictionary:(id)arg1; +- (BOOL)isEqual:(id)arg1; +- (void)encodeWithCoder:(id)arg1; +- (id)initWithCoder:(id)arg1; +- (id)copyWithZone:(struct _NSZone *)arg1; +- (void)dealloc; + +@end + +@interface IMGroupTitleChangeItem : IMItem +{ + NSString *_title; + NSString *_otherCountryCode; + NSString *_otherHandle; + NSString *_otherUnformattedID; +} + ++ (BOOL)supportsSecureCoding; +@property(retain, nonatomic) NSString *otherUnformattedID; // @synthesize otherUnformattedID=_otherUnformattedID; +@property(retain, nonatomic) NSString *otherHandle; // @synthesize otherHandle=_otherHandle; +@property(retain, nonatomic) NSString *otherCountryCode; // @synthesize otherCountryCode=_otherCountryCode; +@property(retain, nonatomic) NSString *title; // @synthesize title=_title; +- (id)copyDictionaryRepresentation; +- (id)initWithDictionary:(id)arg1; +- (BOOL)isEqual:(id)arg1; +- (void)encodeWithCoder:(id)arg1; +- (id)initWithCoder:(id)arg1; +- (id)copyWithZone:(struct _NSZone *)arg1; +- (void)dealloc; + +@end + +@interface IMCTSMSUtilities : NSObject +{ +} + ++ (BOOL)IMMessagesFilteringSettingForPreferedSubscription; ++ (void)IMSynchronizePreferredSubscriptionMMSCapabilityToWatch; ++ (void)IMSynchronizeMMSCapabilityToWatch:(BOOL)arg1; ++ (BOOL)MMSRestrictedModeEnabledForPhoneNumber:(id)arg1 simID:(id)arg2 reset:(BOOL)arg3; ++ (BOOL)IMMMSRestrictedModeEnabledForPhoneNumber:(id)arg1 simID:(id)arg2; ++ (BOOL)IMMMSEagerUploadDisabledInCarrierBundleForPhoneNumber:(id)arg1 simID:(id)arg2; ++ (BOOL)IMIsEagerUploadEnabledForPhoneNumber:(id)arg1 simID:(id)arg2; ++ (BOOL)IMShouldShowMMSEmailAddress:(id)arg1 simID:(id)arg2; ++ (id)IMMMSEmailAddressToMatchForPhoneNumber:(id)arg1 simID:(id)arg2; ++ (unsigned long long)IMiMessageMaxTransferVideoFileSizeForWifiForPhoneNumber:(unsigned long long *)arg1 cellSize:(unsigned long long *)arg2 serverConfigurationBag:(id)arg3 phoneNumber:(id)arg4 simID:(id)arg5; ++ (unsigned long long)IMiMessageMaxTransferAudioFileSizeForWifiForPhoneNumber:(unsigned long long *)arg1 cellSize:(unsigned long long *)arg2 serverConfigurationBag:(id)arg3 phoneNumber:(id)arg4 simID:(id)arg5; ++ (void)IMiMessageMaxTransferFileSizeForWifiForPhoneNumber:(unsigned long long *)arg1 cellSize:(unsigned long long *)arg2 serverConfigurationBag:(id)arg3 phoneNumber:(id)arg4 simID:(id)arg5; ++ (double)IMMMSMaximumDurationWithPreset:(id)arg1 phoneNumber:(id)arg2 simID:(id)arg3; ++ (double)IMMMSMaximumVideoDurationForPhoneNumber:(id)arg1 simID:(id)arg2; ++ (double)IMMMSMaximumAudioDurationForPhoneNumber:(id)arg1 simID:(id)arg2; ++ (BOOL)IMMMSSupportsH264VideoForPhoneNumber:(id)arg1 simID:(id)arg2; ++ (int)IMMMSMaxImageDimensionForPhoneNumber:(id)arg1 simID:(id)arg2; ++ (int)IMMMSMaxRecipientsForPhoneNumber:(id)arg1 simID:(id)arg2; ++ (BOOL)IMMMSGroupTextOnlyMessagesSendAsMMSForPhoneNumber:(id)arg1 simID:(id)arg2; ++ (int)IMMMSMaximumMessageByteCountForPhoneNumber:(id)arg1 simID:(id)arg2; ++ (int)IMMMSMaximumSlideCountForPhoneNumber:(id)arg1 simID:(id)arg2; ++ (BOOL)IMMMSSupportedAndConfiguredForPhoneNumber:(id)arg1 simID:(id)arg2; ++ (unsigned long long)IMReadAttachmentPreviewTranscodingQualitySizeCarrierValueForPhoneNumber:(id)arg1 simID:(id)arg2; ++ (BOOL)IMReadEnablePreviewTranscodingQualityCarrierValueForPhoneNumber:(id)arg1 simID:(id)arg2; ++ (BOOL)IMMMSEnabledForPhoneNumber:(id)arg1 simID:(id)arg2; ++ (id)IMPhoneNumbersEnabledForMultipleSubscriptionDevice; ++ (BOOL)IMReadMMSUserOverrideForPhoneNumber:(id)arg1 simID:(id)arg2; ++ (id)IMUniqueIdentifierForPhoneNumber:(id)arg1 simID:(id)arg2; + +@end + +@interface IMEventNotificationQueue : NSObject +{ + BOOL _paused; + BOOL _scheduled; + BOOL _busy; +} + +//@property(readonly, nonatomic) IMDoubleLinkedList *eventNotificationList; // @synthesize eventNotificationList=_eventNotificationList; +//@property __weak id delegate; // @synthesize delegate=_delegate; +- (BOOL)containsNotificationTarget:(id)arg1; +@property(readonly) long long count; +@property(getter=isPaused) BOOL paused; // @synthesize paused=_paused; +@property(readonly, getter=isScheduled) BOOL scheduled; // @synthesize scheduled=_scheduled; +- (void)_didChangePausedState:(BOOL)arg1; +- (void)pushEventTarget:(id)arg1 sender:(id)arg2 eventNotificationBlock:(CDUnknownBlockType)arg3; +- (void)appendEventTarget:(id)arg1 sender:(id)arg2 eventNotificationBlock:(CDUnknownBlockType)arg3; +- (void)pushEventTarget:(id)arg1 eventNotificationBlock:(CDUnknownBlockType)arg2; +- (void)appendEventTarget:(id)arg1 eventNotificationBlock:(CDUnknownBlockType)arg2; +- (void)cancelAllEventNotifications; +- (void)cancelEventNotificationsForNotificationTarget:(id)arg1; +- (void)_didCancelNotifications; +- (void)appendEventNotification:(id)arg1; +- (void)pushEventNotification:(id)arg1; +- (void)_didAddNotification:(id)arg1; +- (void)_processQueue; +- (void)_invokeNotifications; +- (void)enumerateObjectsUsingBlock:(CDUnknownBlockType)arg1; +- (void)_willProcessQueue; +- (void)_didProcessQueue; +- (void)_setBusy:(BOOL)arg1; +- (void)_didChangeBusyState:(BOOL)arg1; +@property(readonly, getter=isBusy) BOOL busy; // @synthesize busy=_busy; +- (void)_invokeEvent:(id)arg1; +- (void)_scheduleIfNeeded:(BOOL)arg1; +- (void)_dispatchProcessQueue; +- (id)init; + +@end + +@interface IMAutomaticEventNotificationQueue : IMEventNotificationQueue +{ +} + +- (void)_didCancelNotifications; +- (void)_didAddNotification:(id)arg1; +- (void)_didProcessQueue; +- (void)_invokeEvent:(id)arg1; + +@end + +@interface IMEventNotificationBroadcaster : IMEventNotificationQueue +{ +} + +- (void)broadcastEventToListeners:(CDUnknownBlockType)arg1; +- (void)_didProcessQueue; +- (void)_willProcessQueue; + +@end + +@interface IMEventNotification : NSObject // IMDoubleLinkedListNode +{ + id _target; + id _sender; + CDUnknownBlockType _eventNotificationWithSenderBlock; + CDUnknownBlockType _eventNotificationBlock; +} + ++ (id)eventNotification:(id)arg1; ++ (id)eventNotification:(id)arg1 sender:(id)arg2 eventNotificationBlock:(CDUnknownBlockType)arg3; ++ (id)eventNotification:(id)arg1 eventNotificationBlock:(CDUnknownBlockType)arg2; +@property(copy) CDUnknownBlockType eventNotificationBlock; // @synthesize eventNotificationBlock=_eventNotificationBlock; +@property(copy) CDUnknownBlockType eventNotificationWithSenderBlock; // @synthesize eventNotificationWithSenderBlock=_eventNotificationWithSenderBlock; +@property __weak id sender; // @synthesize sender=_sender; +@property __weak id target; // @synthesize target=_target; +- (void)cache; +- (BOOL)wasCancelled; +- (void)cancel; +- (BOOL)invoke; + +@end + + +@interface IMParticipantChangeItem : IMItem +{ + long long _changeType; + NSString *_otherCountryCode; + NSString *_otherHandle; + NSString *_otherUnformattedID; +} + ++ (BOOL)supportsSecureCoding; +@property(retain, nonatomic) NSString *otherUnformattedID; // @synthesize otherUnformattedID=_otherUnformattedID; +@property(retain, nonatomic) NSString *otherHandle; // @synthesize otherHandle=_otherHandle; +@property(retain, nonatomic) NSString *otherCountryCode; // @synthesize otherCountryCode=_otherCountryCode; +@property(nonatomic) long long changeType; // @synthesize changeType=_changeType; +- (BOOL)isEqual:(id)arg1; +- (id)copyDictionaryRepresentation; +- (id)initWithDictionary:(id)arg1; +- (void)encodeWithCoder:(id)arg1; +- (id)initWithCoder:(id)arg1; +- (id)copyWithZone:(struct _NSZone *)arg1; +- (void)dealloc; + +@end + + +@interface IMKeyValueCollectionUserDefaultsStorage : NSObject +{ + NSString *_domain; +} + +@property(readonly, copy, nonatomic) NSString *domain; // @synthesize domain=_domain; + +@property(readonly, copy) NSString *description; +- (id)copyWithZone:(struct _NSZone *)arg1; +- (void)removeObjectForKey:(id)arg1; +- (void)setObject:(id)arg1 forKey:(id)arg2; +- (id)objectForKey:(id)arg1; +- (void)_actuallyWriteObject:(id)arg1 forKey:(id)arg2; +- (id)_actuallyReadObjectForKey:(id)arg1; +- (id)_decodeData:(id)arg1 forKey:(id)arg2; +- (id)initWithDomain:(id)arg1; +- (id)init; + +// Remaining properties +@property(readonly, copy) NSString *debugDescription; + +@property(readonly) Class superclass; + +@end + +@interface IMImageUtilities : NSObject +{ +} + ++ (struct CGImage *)newThumbnailForTargetSize:(struct CGSize)arg1 imageSize:(struct CGSize)arg2 imageSource:(struct CGImageSource *)arg3 atIndex:(unsigned long long)arg4 mode:(long long)arg5 scale:(double)arg6; ++ (struct CGImage *)newThumbnailForTargetSize:(struct CGSize)arg1 imageSize:(struct CGSize)arg2 imageSource:(struct CGImageSource *)arg3 mode:(long long)arg4 scale:(double)arg5; ++ (BOOL)persistCPBitmapWithImage:(struct CGImage *)arg1 url:(id)arg2; ++ (void)sampleImageEdges:(char *)arg1 usingRect:(struct CGRect)arg2 forMostlyWhitePixels:(unsigned long long *)arg3 otherPixels:(unsigned long long *)arg4 bytesPerRow:(long long)arg5; ++ (struct CGSize)imageRefPxSize:(struct CGImage *)arg1; ++ (struct CGSize)imageSourcePxSize:(struct CGImageSource *)arg1; + +@end + +@interface IMOneTimeCodeUtilities : NSObject +{ +} + +- (id)createOTCFromMessageBody:(id)arg1 sender:(id)arg2 guid:(id)arg3; +- (BOOL)isValidOneTimeCode:(id)arg1; + +@end + +@interface IMEventListenerResponse : NSObject +{ + BOOL _success; + NSDictionary *_userInfo; + NSError *_error; +} + +@property(retain, nonatomic) NSError *error; // @synthesize error=_error; +@property(retain, nonatomic) NSDictionary *userInfo; // @synthesize userInfo=_userInfo; +@property(nonatomic, getter=didSucceed) BOOL success; // @synthesize success=_success; +@property(readonly, copy) NSString *description; +- (id)initWithSuccess:(BOOL)arg1 userInfo:(id)arg2 error:(id)arg3; + +// Remaining properties +@property(readonly, copy) NSString *debugDescription; +@property(readonly) Class superclass; + +@end + +@interface IMEventListener : NSObject +{ + BOOL _willRepeat; + double _timerStart; + NSObject *_semaphore; + double _timeListeningStarted; + double _timeListeningStopped; + double _timeLastEventReceived; + double _timeout; + unsigned long long _eventCount; + id _target; + CDUnknownBlockType _completionBlock; + CDUnknownBlockType _willInvokeCompletion; + CDUnknownBlockType _didInvokeCompletion; +} + ++ (id)eventListenerWithNotificationName:(id)arg1 object:(id)arg2; ++ (id)eventListener; ++ (id)allListeners; ++ (id)_mutableListenerDictionary; +@property(nonatomic) BOOL willRepeat; // @synthesize willRepeat=_willRepeat; +@property(copy) CDUnknownBlockType didInvokeCompletion; // @synthesize didInvokeCompletion=_didInvokeCompletion; +@property(copy) CDUnknownBlockType willInvokeCompletion; // @synthesize willInvokeCompletion=_willInvokeCompletion; +@property __weak id target; // @synthesize target=_target; +@property(readonly) unsigned long long eventCount; // @synthesize eventCount=_eventCount; +@property(readonly, nonatomic) NSObject *semaphore; // @synthesize semaphore=_semaphore; +@property(nonatomic) double timerStart; // @synthesize timerStart=_timerStart; +- (void)_didReceiveEvent:(BOOL)arg1 userInfo:(id)arg2 error:(id)arg3; +@property double timeout; // @synthesize timeout=_timeout; +- (void)reset; +@property(copy) CDUnknownBlockType completionBlock; // @synthesize completionBlock=_completionBlock; +@property(readonly) double elapsedWaitingTime; +@property(readonly) double timeLastEventReceived; // @synthesize timeLastEventReceived=_timeLastEventReceived; +@property(readonly) double timeListeningStopped; // @synthesize timeListeningStopped=_timeListeningStopped; +@property(readonly) double timeListeningStarted; // @synthesize timeListeningStarted=_timeListeningStarted; +- (void)startListening; +- (void)stopListening; +@property(readonly, getter=isListening) BOOL listening; +- (void)startListeningForEventTarget:(id)arg1 completion:(CDUnknownBlockType)arg2; +- (void)startListeningForEventTarget:(id)arg1 sendStartingEvent:(CDUnknownBlockType)arg2 completion:(CDUnknownBlockType)arg3; +- (void)waitForCompletion; +- (void)_dispatchStartEventBlock:(CDUnknownBlockType)arg1; +- (void)_startTimeoutTimerIfNeeded; +- (void)_reset; +- (void)willReset; +- (void)_cancelTimeoutTimer; +- (void)_stopListening; +- (void)willStopListening; +- (void)_startListening; +- (void)willStartListening; +- (void)_handleTimeout:(id)arg1; +- (void)_invokeCompletion:(BOOL)arg1 userInfo:(id)arg2 error:(id)arg3; +- (id)createResult:(BOOL)arg1 userInfo:(id)arg2 error:(id)arg3; +- (void)_addToListeners; +- (void)_removeFromListeners; + +@end + +@interface IMNotificationCenterEventListener : IMEventListener +{ + NSString *_registeredNotificationName; + NSString *_notificationName; + id _notificationObject; +} + ++ (id)eventListenerForNotificationName:(id)arg1 object:(id)arg2; ++ (id)eventListenerForNotificationName:(id)arg1; +@property(readonly) __weak id notificationObject; // @synthesize notificationObject=_notificationObject; +@property(readonly, copy) NSString *notificationName; // @synthesize notificationName=_notificationName; +@property(readonly, nonatomic) NSString *registeredNotificationName; // @synthesize registeredNotificationName=_registeredNotificationName; +- (void)willReset; +- (void)willStopListening; +- (void)willStartListening; +- (BOOL)isListening; +- (void)dealloc; +- (void)registerForNotificationName:(id)arg1 object:(id)arg2; +- (void)registerForNotificationName:(id)arg1; +- (void)_notification:(id)arg1; +@property(readonly) BOOL isRegisteredForNotification; + +@end + +@interface IMEventListenerReference : NSObject +{ + IMEventListener *_eventListener; +} + +@property(readonly, nonatomic) __weak IMEventListener *eventListener; // @synthesize eventListener=_eventListener; +- (id)initWithEventListener:(id)arg1; + +@end + +@interface IMEventListenerList : NSObject +{ + NSMutableArray *_eventListeners; +} + +- (void)enumerateObjectsUsingBlock:(CDUnknownBlockType)arg1; +- (BOOL)containsObject:(id)arg1; +- (void)removeObject:(id)arg1; +- (void)addObject:(id)arg1; +- (unsigned long long)count; +- (id)init; + +@end + +@interface IMSticker : NSObject +{ + NSURL *_fileURL; + struct NSString *_stickerGUID; + struct NSString *_stickerPackGUID; + NSString *_accessibilityLabel; + NSString *_moodCategory; + NSString *_stickerName; + NSData *_recipe; + NSString *_ballonBundleID; + NSDictionary *_attributionInfo; +} + +@property(copy, nonatomic) NSDictionary *attributionInfo; // @synthesize attributionInfo=_attributionInfo; +@property(copy, nonatomic) NSString *ballonBundleID; // @synthesize ballonBundleID=_ballonBundleID; +@property(retain, nonatomic) NSData *recipe; // @synthesize recipe=_recipe; +@property(copy, nonatomic) NSString *stickerName; // @synthesize stickerName=_stickerName; +@property(copy, nonatomic) NSString *moodCategory; // @synthesize moodCategory=_moodCategory; +@property(copy, nonatomic) NSString *accessibilityLabel; // @synthesize accessibilityLabel=_accessibilityLabel; +@property(readonly, copy, nonatomic) NSString *stickerPackGUID; // @synthesize stickerPackGUID=_stickerPackGUID; +@property(readonly, copy, nonatomic) NSString *stickerGUID; // @synthesize stickerGUID=_stickerGUID; +@property(readonly, copy, nonatomic) NSURL *fileURL; // @synthesize fileURL=_fileURL; +- (id)initWithStickerPropertyDictionary:(id)arg1 stickerPackID:(struct NSString *)arg2 stickerPackBundlePath:(id)arg3; +- (unsigned long long)hash; +- (BOOL)isEqual:(id)arg1; +- (void)dealloc; +- (id)description; +- (id)initWithStickerID:(struct NSString *)arg1 stickerPackID:(struct NSString *)arg2 fileURL:(id)arg3 accessibilityLabel:(id)arg4 moodCategory:(id)arg5 stickerName:(id)arg6; +- (id)init; + +@end + +@interface IMMessageActionItem : IMItem +{ + long long _actionType; + NSString *_otherCountryCode; + NSString *_otherHandle; + NSString *_otherUnformattedID; + NSString *_originalMessageGUID; +} + ++ (BOOL)supportsSecureCoding; +@property(retain, nonatomic) NSString *originalMessageGUID; // @synthesize originalMessageGUID=_originalMessageGUID; +@property(retain, nonatomic) NSString *otherUnformattedID; // @synthesize otherUnformattedID=_otherUnformattedID; +@property(retain, nonatomic) NSString *otherHandle; // @synthesize otherHandle=_otherHandle; +@property(retain, nonatomic) NSString *otherCountryCode; // @synthesize otherCountryCode=_otherCountryCode; +@property(nonatomic) long long actionType; // @synthesize actionType=_actionType; +- (BOOL)isEqual:(id)arg1; +- (id)copyDictionaryRepresentation; +- (id)initWithDictionary:(id)arg1; +- (void)encodeWithCoder:(id)arg1; +- (id)initWithCoder:(id)arg1; +- (id)copyWithZone:(struct _NSZone *)arg1; +- (id)description; +- (void)dealloc; + +@end + + +@interface IMXMLParserContext : NSObject +{ + NSData *_inContentAsData; +} + +@property(readonly, retain) NSData *inContentAsData; // @synthesize inContentAsData=_inContentAsData; +@property(readonly, retain) NSArray *resultsForLogging; +@property(readonly, retain) NSString *name; +- (id)inContent; +- (void)reset; +- (void)dealloc; +- (id)initWithContentAsData:(id)arg1; +- (id)initWithContent:(id)arg1; + +@end + +@interface IMXMLParserFrame : NSObject +{ +} + +- (void)parser:(id)arg1 context:(id)arg2 foundIgnorableWhitespace:(id)arg3; +- (void)parser:(id)arg1 context:(id)arg2 foundCharacters:(id)arg3; +- (void)parser:(id)arg1 context:(id)arg2 didEndElement:(id)arg3 namespaceURI:(id)arg4 qualifiedName:(id)arg5; +- (void)parser:(id)arg1 context:(id)arg2 didStartElement:(id)arg3 namespaceURI:(id)arg4 qualifiedName:(id)arg5 attributes:(id)arg6; + +@end + +@interface IMSharedMessageSendingUtilities : NSObject +{ + long long _serviceAvailability; +} + ++ (void)_setupAccountMonitor; ++ (id)sharedInstance; ++ (void)initialize; +@property long long serviceAvailability; // @synthesize serviceAvailability=_serviceAvailability; +- (BOOL)canSendPhotos:(int)arg1 videos:(int)arg2 audioClips:(int)arg3; +- (long long)_maxMMSMessageByteCount; +- (long long)_maxMMSAttachmentCount; +- (BOOL)_isiMessageSupported; +- (BOOL)isSupportedAttachmentUTI:(id)arg1; +- (BOOL)isiMessageEnabled; +- (BOOL)isMMSEnabled; +- (BOOL)canSendText; +- (id)_managedConfigAppWhitelist; +- (void)_updateServiceAvailability; +- (BOOL)_canSendText; +- (BOOL)_hasSMSCapability; + +@end + +@interface IMXMLParser : NSObject +{ + NSXMLParser *_parser; + IMXMLParserContext *_context; + IMXMLParserFrame *_topFrame; + NSMutableArray *_otherFrames; + struct _TidyDoc *_tidyDoc; + struct __CFDictionary *_framespace; +} + ++ (id)sharedInstance; +- (void)parser:(id)arg1 parseErrorOccurred:(id)arg2; +- (void)parser:(id)arg1 foundIgnorableWhitespace:(id)arg2; +- (void)parser:(id)arg1 foundCharacters:(id)arg2; +- (void)parser:(id)arg1 didEndElement:(id)arg2 namespaceURI:(id)arg3 qualifiedName:(id)arg4; +- (void)parser:(id)arg1 didStartElement:(id)arg2 namespaceURI:(id)arg3 qualifiedName:(id)arg4 attributes:(id)arg5; +- (BOOL)parseContext:(id)arg1; +- (id)_newDataByTidyingData:(id)arg1; +- (void)_teardownTidy; +- (void)_setupTidy; + +// Remaining properties +@property(readonly, copy) NSString *debugDescription; +@property(readonly, copy) NSString *description; +@property(readonly) Class superclass; + +@end + + +@interface IMToSuperParserContext : IMXMLParserContext +{ + unsigned long long _underlineCount; + unsigned long long _boldCount; + unsigned long long _italicCount; + unsigned long long _strikethroughCount; + unsigned long long _messagePartNumber; + NSMutableArray *_fontFamilyStack; + NSMutableArray *_fontSizeStack; + NSMutableArray *_linkStack; + NSMutableArray *_backgroundColorStack; + NSMutableArray *_foregroundColorStack; + NSMutableDictionary *_currentAttributes; + BOOL _didAddBodyAttributes; + NSMutableAttributedString *_body; + NSMutableArray *_fileTransferGUIDs; + NSString *_backgroundColor; + NSString *_foregroundColor; + long long _baseWritingDirection; +} + +@property long long baseWritingDirection; // @synthesize baseWritingDirection=_baseWritingDirection; +@property(copy, nonatomic) NSString *foregroundColor; // @synthesize foregroundColor=_foregroundColor; +@property(copy, nonatomic) NSString *backgroundColor; // @synthesize backgroundColor=_backgroundColor; +@property(retain, nonatomic) NSArray *fileTransferGUIDs; // @synthesize fileTransferGUIDs=_fileTransferGUIDs; +@property(readonly, nonatomic) NSAttributedString *body; +- (void)appendBreadcrumbText:(id)arg1 withOptions:(unsigned int)arg2; +- (void)appendInlineImageWithGUID:(id)arg1 filename:(id)arg2 width:(long long)arg3 height:(long long)arg4 emoji:(long long)arg5; +- (void)appendInlineImageWithGUID:(id)arg1 filename:(id)arg2 width:(long long)arg3 height:(long long)arg4; +- (void)appendFileTransferWithGUID:(id)arg1; +- (void)appendString:(id)arg1; +- (void)_incrementMessagePartNumber; +- (void)popForegroundColor; +- (void)pushForegroundColor:(id)arg1; +- (void)popBackgroundColor; +- (void)pushBackgroundColor:(id)arg1; +- (void)popLink; +- (void)pushLink:(id)arg1; +- (void)popFontSize; +- (void)pushFontSize:(id)arg1; +- (void)popFontFamily; +- (void)pushFontFamily:(id)arg1; +- (void)_popValueFromStack:(id)arg1 attributeName:(id)arg2; +- (void)_pushValue:(id)arg1 ontoStack:(id)arg2 attributeName:(id)arg3; +- (void)decrementStrikethroughCount; +- (void)incrementStrikethroughCount; +- (void)decrementUnderlineCount; +- (void)incrementUnderlineCount; +- (void)decrementItalicCount; +- (void)incrementItalicCount; +- (void)decrementBoldCount; +- (void)incrementBoldCount; +- (void)_updateFontSize; +- (void)_updateFontFamily; +- (void)_clearIvars; +- (void)_initIvars; +- (id)resultsForLogging; +- (id)name; +- (void)reset; +- (void)dealloc; + +@end + +@interface IMToSuperParserFrame : IMXMLParserFrame +{ +} + +- (void)parser:(id)arg1 context:(id)arg2 foundIgnorableWhitespace:(id)arg3; +- (void)parser:(id)arg1 context:(id)arg2 foundCharacters:(id)arg3; +- (void)parser:(id)arg1 context:(id)arg2 didEndElement:(id)arg3 namespaceURI:(id)arg4 qualifiedName:(id)arg5; +- (void)parser:(id)arg1 context:(id)arg2 didStartElement:(id)arg3 namespaceURI:(id)arg4 qualifiedName:(id)arg5 attributes:(id)arg6; + +@end + +@interface IMMessageNotificationTimer : NSObject +{ + NSDate *_date; + NSNumber *_numberDingsLeft; +} + +@property(readonly, nonatomic) NSNumber *numberDingsLeft; // @synthesize numberDingsLeft=_numberDingsLeft; +@property(retain, nonatomic) NSDate *date; // @synthesize date=_date; +- (void)reduceNumberDingsLeft; +@property(readonly, nonatomic) BOOL areDingsRemaining; +- (void)dealloc; +- (id)initWithDate:(id)arg1; + +@end + +@interface IMMessageNotificationTimeManager : NSObject +{ + NSMutableDictionary *_chatsStartTimeDictionary; + NSString *_latestIDSTokenURI; +} + ++ (id)sharedInstance; +@property(retain, nonatomic) NSString *latestIDSTokenURI; // @synthesize latestIDSTokenURI=_latestIDSTokenURI; +@property(retain, nonatomic) NSMutableDictionary *chatsStartTimeDictionary; // @synthesize chatsStartTimeDictionary=_chatsStartTimeDictionary; +- (void)acquireAssertionToUnsuspendProcess; +- (void)sendNotificationMessageIfNeededForIncomingMessageFromChatIdentifier:(id)arg1; +- (void)setLatestNotificationIDSTokenURI:(id)arg1; +- (BOOL)_shouldSendNotificationForChatIdentifier:(id)arg1; +- (long long)_getToneTimeWindow; +- (long long)_getTimeWindowOverride; +- (BOOL)_isToneToggleSwitchOn; +- (void)setDate:(id)arg1 forChatIdentifier:(id)arg2; +- (void)tearDownSessionForChatIdentifier:(id)arg1; +- (void)dealloc; +- (id)init; + +@end + + +@interface IMPreviewGenerator : NSObject +{ +} + ++ (struct CGRect)_scaledTargetRectForSize:(struct CGSize)arg1 andThumbnailSize:(struct CGSize)arg2; ++ (double)_scaleFactorForThumbnailWithSize:(struct CGSize)arg1 constraints:(struct IMPreviewConstraints)arg2 targetPxSize:(struct CGSize)arg3; ++ (struct CGImage *)newCroppedAndRescaledImageFromImage:(struct CGImage *)arg1 constraints:(struct IMPreviewConstraints)arg2 targetPxSize:(struct CGSize)arg3; ++ (id)generateAndPersistPreviewFromSourceURL:(id)arg1 withPreviewConstraints:(struct IMPreviewConstraints)arg2 error:(id *)arg3; ++ (struct CGImage *)newPreviewFromSourceURL:(id)arg1 withPreviewConstraints:(struct IMPreviewConstraints)arg2 error:(id *)arg3; ++ (double)maxUpScale; ++ (BOOL)shouldShadePreview; ++ (BOOL)shouldScaleUpPreview; ++ (BOOL)writesToDisk; ++ (id)previewExtension; ++ (id)UTITypes; + +@end + +@interface IMGroupBlacklistManager : NSObject +{ + NSDate *_lastModifiedDate; +} + ++ (id)sharedInstance; ++ (id)groupsBlacklistFilename; +@property(retain) NSDate *lastModifiedDate; // @synthesize lastModifiedDate=_lastModifiedDate; + +- (void)reloadIfNeeded; +- (void)_updateLastModifiedDate:(id)arg1; +- (void)loadFromFile:(id)arg1; +- (void)loadData; +- (void)save; +- (BOOL)isFeatureDisabled; +- (BOOL)isGroupInBlacklist:(id)arg1; +- (void)blacklistGroupId:(id)arg1; +- (BOOL)hasFileChanged; +- (id)initFromFile:(id)arg1; +- (id)init; + +@end + + +@interface IMAttributedStringParserContext : NSObject +{ + NSAttributedString *_inString; +} + +@property(readonly, retain) NSAttributedString *inString; // @synthesize inString=_inString; +- (id)parser:(id)arg1 preprocessedAttributesForAttributes:(id)arg2 range:(struct _NSRange)arg3; +@property(readonly) BOOL shouldPreprocess; +- (void)parserDidEnd:(id)arg1; +- (void)parser:(id)arg1 foundAttributes:(id)arg2 inRange:(struct _NSRange)arg3; +- (void)parserDidStart:(id)arg1; +@property(readonly, retain) NSArray *resultsForLogging; +@property(readonly, retain) NSString *name; +- (void)dealloc; +- (id)initWithAttributedString:(id)arg1; + +@end + +@interface IMAttributedStringParser : NSObject +{ + IMAttributedStringParserContext *_context; +} + ++ (id)sharedInstance; +- (void)parseContext:(id)arg1; +- (void)_preprocessWithContext:(id)arg1 string:(id *)arg2; + +@end + + +@interface IMAssociatedMessageItem : IMMessageItem +{ + NSString *_associatedMessageGUID; + long long _associatedMessageType; + NSArray *_consumedSessionPayloads; + struct _NSRange _associatedMessageRange; +} + ++ (BOOL)supportsSecureCoding; +@property(retain, nonatomic) NSArray *consumedSessionPayloads; // @synthesize consumedSessionPayloads=_consumedSessionPayloads; +@property(nonatomic) struct _NSRange associatedMessageRange; // @synthesize associatedMessageRange=_associatedMessageRange; +@property(nonatomic) long long associatedMessageType; // @synthesize associatedMessageType=_associatedMessageType; +@property(retain, nonatomic) NSString *associatedMessageGUID; // @synthesize associatedMessageGUID=_associatedMessageGUID; +- (BOOL)isEqual:(id)arg1; +- (BOOL)isSticker; +- (BOOL)isMessageEdit; +- (BOOL)isBreadcrumb; +- (BOOL)isMessageAcknowledgment; +- (BOOL)isLastMessageCandidate; +- (BOOL)isFirstMessageCandidate; +- (BOOL)isAssociatedMessageItem; +- (id)description; +- (id)copyForBackwardsCompatibility; +- (id)copyWithZone:(struct _NSZone *)arg1; +- (id)copyDictionaryRepresentation; +- (void)encodeWithCoder:(id)arg1; +- (id)initWithCoder:(id)arg1; +- (void)dealloc; +- (id)initWithMessageItem:(id)arg1; +- (id)initWithSenderInfo:(id)arg1 time:(id)arg2 timeRead:(id)arg3 timeDelivered:(id)arg4 timePlayed:(id)arg5 subject:(id)arg6 body:(id)arg7 bodyData:(id)arg8 attributes:(id)arg9 fileTransferGUIDs:(id)arg10 flags:(unsigned long long)arg11 guid:(id)arg12 messageID:(long long)arg13 account:(id)arg14 accountID:(id)arg15 service:(id)arg16 handle:(id)arg17 roomName:(id)arg18 unformattedID:(id)arg19 countryCode:(id)arg20 expireState:(long long)arg21 balloonBundleID:(id)arg22 payloadData:(id)arg23 expressiveSendStyleID:(id)arg24 timeExpressiveSendPlayed:(id)arg25 errorType:(unsigned int)arg26 associatedMessageGUID:(id)arg27 associatedMessageType:(long long)arg28 associatedMessageRange:(struct _NSRange)arg29 bizIntent:(id)arg30 locale:(id)arg31 messageSummaryInfo:(id)arg32; +- (id)initWithSender:(id)arg1 time:(id)arg2 body:(id)arg3 attributes:(id)arg4 fileTransferGUIDs:(id)arg5 flags:(unsigned long long)arg6 error:(id)arg7 guid:(id)arg8 associatedMessageGUID:(id)arg9 associatedMessageType:(long long)arg10 associatedMessageRange:(struct _NSRange)arg11 messageSummaryInfo:(id)arg12; +- (id)initWithDictionary:(id)arg1 hint:(id)arg2; + +@end + + +@interface IMKeyValueCollectionDictionaryStorage : NSObject +{ + NSMutableDictionary *_dictionary; +} + +@property(readonly, copy) NSString *description; +- (id)copyWithZone:(struct _NSZone *)arg1; +- (void)removeObjectForKey:(id)arg1; +- (void)setObject:(id)arg1 forKey:(id)arg2; +- (id)objectForKey:(id)arg1; +- (id)init; +- (id)initWithDictionary:(id)arg1; +@property(readonly, copy, nonatomic) NSDictionary *dictionary; + +// Remaining properties +@property(readonly, copy) NSString *debugDescription; +@property(readonly) Class superclass; + +@end + +@interface IMKeyValueCollection : NSObject +{ + long long _batchCount; + id _keyValueStorage; + id /* */ _delegate; + NSMutableDictionary *_recordedChanges; +} + +@property(readonly) NSMutableDictionary *recordedChanges; // @synthesize recordedChanges=_recordedChanges; +@property(nonatomic) __weak id delegate; // @synthesize delegate=_delegate; +@property(readonly, nonatomic) id keyValueStorage; // @synthesize keyValueStorage=_keyValueStorage; + +@property(readonly, copy) NSString *description; +- (void)setString:(id)arg1 forKey:(id)arg2; +- (id)stringForKey:(id)arg1; +- (id)stringForKey:(id)arg1 withDefault:(id)arg2; +- (void)setDouble:(double)arg1 forKey:(id)arg2; +- (double)doubleForKey:(id)arg1; +- (double)doubleForKey:(id)arg1 withDefault:(double)arg2; +- (void)setUint64:(long long)arg1 forKey:(id)arg2; +- (unsigned long long)uint64ForKey:(id)arg1; +- (unsigned long long)uint64ForKey:(id)arg1 withDefault:(unsigned long long)arg2; +- (void)setInt64:(long long)arg1 forKey:(id)arg2; +- (long long)int64ForKey:(id)arg1; +- (long long)int64ForKey:(id)arg1 withDefault:(long long)arg2; +- (void)setInteger:(long long)arg1 forKey:(id)arg2; +- (long long)integerForKey:(id)arg1; +- (long long)integerForKey:(id)arg1 withDefault:(long long)arg2; +- (void)setBool:(BOOL)arg1 forKey:(id)arg2; +- (BOOL)boolForKey:(id)arg1; +- (BOOL)boolForKey:(id)arg1 withDefault:(BOOL)arg2; +- (void)_commitBatchWrite; +- (void)_startBatchWrite; +- (void)removeObjectForKey:(id)arg1; +- (void)setObject:(id)arg1 forKey:(id)arg2; +- (void)_recordChange:(id)arg1 forKey:(id)arg2; +- (void)_setObject:(id)arg1 forKey:(id)arg2; +- (id)objectForKey:(id)arg1 withDefault:(id)arg2; +- (id)objectForKey:(id)arg1; +- (void)_broadcastIfNeeded; +- (void)_notifyListeners; +- (id)initWithKeyValueStorage:(id)arg1; +- (id)copyWithZone:(struct _NSZone *)arg1; +- (id)init; +- (id)errorArrayForKey:(id)arg1; +- (void)addErrorToArray:(id)arg1 forKey:(id)arg2; +- (id)errorForKey:(id)arg1; +- (void)setError:(id)arg1 forKey:(id)arg2; + +// Remaining properties +@property(readonly, copy) NSString *debugDescription; +@property(readonly) Class superclass; + +@end + +@interface IMBroadcastingKeyValueCollection : IMKeyValueCollection +{ +} + +- (void)_notifyListeners; + +@end + +@interface IMAnimatedImagePreviewGenerator : IMPreviewGenerator +{ +} + ++ (BOOL)writesToDisk; ++ (id)generateAndPersistPreviewFromSourceURL:(id)arg1 withPreviewConstraints:(struct IMPreviewConstraints)arg2 error:(id *)arg3; ++ (id)UTITypes; + +@end + +@interface IMMessageNotificationController : NSObject /* */ +{ + // IDSService *_messageNotificationControllerIDSService; +} + ++ (id)sharedInstance; +// @property(retain, nonatomic) IDSService *messageNotificationControllerIDSService; // @synthesize messageNotificationControllerIDSService=_messageNotificationControllerIDSService; +- (void)_sendNotificationMessageRequest:(id)arg1 toTokenURI:(id)arg2; +- (void)sendNotificationMessageToTokenURI:(id)arg1 withCommmand:(long long)arg2; +- (void)sendNotificationMessageToUniqueID:(id)arg1 withCommmand:(long long)arg2; +- (void)service:(id)arg1 account:(id)arg2 identifier:(id)arg3 didSendWithSuccess:(BOOL)arg4 error:(id)arg5; +- (void)service:(id)arg1 account:(id)arg2 incomingMessage:(id)arg3 fromID:(id)arg4 context:(id)arg5; +- (void)_executeCommandFromMessageRequest:(id)arg1; +- (void)_playTone; +- (id)_copyIDSIdentifierOrDefault:(id)arg1; +- (BOOL)audioAccessoryDeviceWithTokenURIExists:(id)arg1; +- (id)_copyIDForDevice:(id)arg1; +- (BOOL)_deviceIsAudioAccessory:(id)arg1; +- (BOOL)_isCurrentDeviceAudioAccessory; +- (void)dealloc; +- (id)init; + +// Remaining properties +@property(readonly, copy) NSString *debugDescription; +@property(readonly, copy) NSString *description; +@property(readonly) unsigned long long hash; +@property(readonly) Class superclass; + +@end + +@interface IMUnarchiverDecoder : NSObject +{ +} + ++ (id)decodeEncodedDataSecurely:(id)arg1 ofClass:(Class)arg2 includesWhitelistedClasses:(id)arg3; ++ (id)_decodeEncodedData:(id)arg1 ofClass:(Class)arg2 includesWhitelistedClasses:(id)arg3; + +@end + +@interface IMXMLReparser : NSObject +{ + NSXMLParser *_parser; + NSMutableString *_output; + // IMXMLReparserContext *_context; + NSError *_error; + unsigned long long _depth; +} + +- (void)parser:(id)arg1 parseErrorOccurred:(id)arg2; +- (void)parser:(id)arg1 foundCharacters:(id)arg2; +- (void)parser:(id)arg1 didEndElement:(id)arg2 namespaceURI:(id)arg3 qualifiedName:(id)arg4; +- (void)parser:(id)arg1 didStartElement:(id)arg2 namespaceURI:(id)arg3 qualifiedName:(id)arg4 attributes:(id)arg5; +- (BOOL)parseWithContext:(id)arg1; + +// Remaining properties +@property(readonly, copy) NSString *debugDescription; +@property(readonly, copy) NSString *description; +@property(readonly) Class superclass; + +@end + +@interface IMXMLReparserContext : NSObject +{ + NSString *_inContent; + NSString *_outContent; + NSDictionary *_attributesToMerge; + NSError *_error; + NSArray *_attributesToPreserve; +} + +@property(readonly, copy, nonatomic) NSString *outContent; // @synthesize outContent=_outContent; +@property(readonly, retain, nonatomic) NSError *error; // @synthesize error=_error; +@property(readonly, retain, nonatomic) NSDictionary *attributesToMerge; // @synthesize attributesToMerge=_attributesToMerge; +@property(readonly, retain, nonatomic) NSArray *attributesToPreserve; // @synthesize attributesToPreserve=_attributesToPreserve; +@property(readonly, retain) NSString *_inContent; // @synthesize _inContent; +- (void)_setOutContent:(id)arg1 error:(id)arg2; +- (void)dealloc; +- (id)initWithContent:(id)arg1 attributesToPreserve:(id)arg2 attributesToMerge:(id)arg3; + +@end + +@interface IMImagePreviewGenerator : IMPreviewGenerator +{ +} + ++ (struct CGImage *)newThumbnailFillToSize:(struct CGSize)arg1 imagePxSize:(struct CGSize)arg2 imageSource:(struct CGImageSource *)arg3 scale:(double)arg4; ++ (struct CGImage *)newPreviewFromSourceURL:(id)arg1 withPreviewConstraints:(struct IMPreviewConstraints)arg2 error:(id *)arg3; ++ (id)UTITypes; ++ (id)fetchUTITypes; + +@end + + +@interface IMAKAppleIDAuthenticationController : NSObject +{ +} + ++ (id)IMAKUserInfoChangedSecurityLevelKey; ++ (id)IMAKUserInfoChangedAltDSIDKey; ++ (id)IMAKUserInfoChangedNotification; + +@end + +@interface IMFileTransfer : NSObject +{ + BOOL _isIncoming; + BOOL _isDirectory; + BOOL _shouldAttemptToResume; + BOOL _wasRegisteredAsStandalone; + BOOL _shouldForceArchive; + BOOL _needsWrapper; + BOOL _isAuxImage; + BOOL _isAuxVideo; + BOOL _isSticker; + BOOL _hideAttachment; + BOOL _isLocation; + BOOL _isContact; + BOOL _appMessageFallbackImage; + unsigned short _hfsFlags; + unsigned int _hfsType; + unsigned int _hfsCreator; + double _lastUpdatedInterval; + double _lastAveragedInterval; + unsigned long long _lastAveragedBytes; + NSString *_guid; + NSString *_messageGUID; + NSDate *_startDate; + NSDate *_createdDate; + long long _transferState; + NSString *_filename; + NSURL *_transferDataURL; + NSString *_utiType; + NSString *_mimeType; + NSString *_accountID; + NSString *_otherPerson; + unsigned long long _currentBytes; + unsigned long long _totalBytes; + unsigned long long _averageTransferRate; + long long _error; + NSString *_errorDescription; + NSDictionary *_localUserInfo; + NSString *_transferredFilename; + NSDictionary *_transcoderUserInfo; + NSDictionary *_AuxTranscoderUserInfo; + NSDictionary *_stickerUserInfo; + NSArray *_attachmentSendContexts; + long long _cloudKitSyncState; + NSData *_cloudKitServerChangeTokenBlob; + NSString *_cloudKitRecordID; + long long _srCloudKitSyncState; + NSData *_srCloudKitServerChangeTokenBlob; + NSString *_srCloudKitRecordID; + NSURL *_localURL; + NSURL *_temporaryHighQualityLocalURL; + NSDictionary *_attributionInfo; + NSString *_originalGUID; +} + ++ (id)guidByStrippingAuxPrefix:(id)arg1; ++ (id)AuxGUIDFromFileTransferGUID:(id)arg1; ++ (BOOL)_doesLocalURLRequireArchiving:(id)arg1; +@property(retain, nonatomic) NSString *originalGUID; // @synthesize originalGUID=_originalGUID; +@property(nonatomic) BOOL appMessageFallbackImage; // @synthesize appMessageFallbackImage=_appMessageFallbackImage; +@property(retain, nonatomic) NSDictionary *attributionInfo; // @synthesize attributionInfo=_attributionInfo; +@property(retain, nonatomic) NSURL *temporaryHighQualityLocalURL; // @synthesize temporaryHighQualityLocalURL=_temporaryHighQualityLocalURL; +@property(retain, nonatomic, setter=_setLocalURL:) NSURL *localURL; // @synthesize localURL=_localURL; +@property(retain, nonatomic) NSString *srCloudKitRecordID; // @synthesize srCloudKitRecordID=_srCloudKitRecordID; +@property(retain, nonatomic) NSData *srCloudKitServerChangeTokenBlob; // @synthesize srCloudKitServerChangeTokenBlob=_srCloudKitServerChangeTokenBlob; +@property(nonatomic) long long srCloudKitSyncState; // @synthesize srCloudKitSyncState=_srCloudKitSyncState; +@property(retain, nonatomic) NSString *cloudKitRecordID; // @synthesize cloudKitRecordID=_cloudKitRecordID; +@property(retain, nonatomic) NSData *cloudKitServerChangeTokenBlob; // @synthesize cloudKitServerChangeTokenBlob=_cloudKitServerChangeTokenBlob; +@property(nonatomic) long long cloudKitSyncState; // @synthesize cloudKitSyncState=_cloudKitSyncState; +@property(nonatomic) BOOL isContact; // @synthesize isContact=_isContact; +@property(nonatomic) BOOL isLocation; // @synthesize isLocation=_isLocation; +@property(retain, nonatomic) NSArray *attachmentSendContexts; // @synthesize attachmentSendContexts=_attachmentSendContexts; +@property(nonatomic) BOOL hideAttachment; // @synthesize hideAttachment=_hideAttachment; +@property(retain, nonatomic) NSDictionary *stickerUserInfo; // @synthesize stickerUserInfo=_stickerUserInfo; +@property(nonatomic) BOOL isSticker; // @synthesize isSticker=_isSticker; +@property(retain, nonatomic) NSDictionary *AuxTranscoderUserInfo; // @synthesize AuxTranscoderUserInfo=_AuxTranscoderUserInfo; +@property(nonatomic) BOOL isAuxVideo; // @synthesize isAuxVideo=_isAuxVideo; +@property(nonatomic) BOOL isAuxImage; // @synthesize isAuxImage=_isAuxImage; +@property(retain, nonatomic) NSDictionary *transcoderUserInfo; // @synthesize transcoderUserInfo=_transcoderUserInfo; +@property(retain, nonatomic) NSString *transferredFilename; // @synthesize transferredFilename=_transferredFilename; +@property(nonatomic, setter=_setNeedsWrapper:) BOOL _needsWrapper; // @synthesize _needsWrapper; +@property(retain, nonatomic) NSDictionary *userInfo; // @synthesize userInfo=_localUserInfo; +@property(nonatomic, setter=_setForceArchive:) BOOL shouldForceArchive; // @synthesize shouldForceArchive=_shouldForceArchive; +@property(nonatomic, setter=setRegisteredAsStandalone:) BOOL wasRegisteredAsStandalone; // @synthesize wasRegisteredAsStandalone=_wasRegisteredAsStandalone; +@property(retain, nonatomic, setter=_setErrorDescription:) NSString *errorDescription; // @synthesize errorDescription=_errorDescription; +@property(nonatomic, setter=_setError:) long long error; // @synthesize error=_error; +@property(nonatomic) BOOL shouldAttemptToResume; // @synthesize shouldAttemptToResume=_shouldAttemptToResume; +@property(nonatomic) BOOL isDirectory; // @synthesize isDirectory=_isDirectory; +@property(nonatomic) unsigned long long averageTransferRate; // @synthesize averageTransferRate=_averageTransferRate; +@property(nonatomic) unsigned long long totalBytes; // @synthesize totalBytes=_totalBytes; +@property(nonatomic) unsigned long long currentBytes; // @synthesize currentBytes=_currentBytes; +@property(retain, nonatomic) NSString *otherPerson; // @synthesize otherPerson=_otherPerson; +@property(retain, nonatomic) NSString *accountID; // @synthesize accountID=_accountID; +@property(nonatomic) unsigned int hfsCreator; // @synthesize hfsCreator=_hfsCreator; +@property(nonatomic) unsigned short hfsFlags; // @synthesize hfsFlags=_hfsFlags; +@property(nonatomic) unsigned int hfsType; // @synthesize hfsType=_hfsType; +@property(retain, nonatomic) NSString *type; // @synthesize type=_utiType; +@property(retain, nonatomic, setter=_setTransferDataURL:) NSURL *transferDataURL; // @synthesize transferDataURL=_transferDataURL; +@property(retain, nonatomic) NSString *filename; // @synthesize filename=_filename; +@property(nonatomic) BOOL isIncoming; // @synthesize isIncoming=_isIncoming; +@property(nonatomic, setter=_setTransferState:) long long transferState; // @synthesize transferState=_transferState; +@property(retain, nonatomic) NSDate *createdDate; // @synthesize createdDate=_createdDate; +@property(retain, nonatomic, setter=_setStartDate:) NSDate *startDate; // @synthesize startDate=_startDate; +@property(retain, nonatomic) NSString *messageGUID; // @synthesize messageGUID=_messageGUID; +@property(retain, nonatomic) NSString *guid; // @synthesize guid=_guid; +@property(readonly, nonatomic) unsigned long long _lastAveragedBytes; // @synthesize _lastAveragedBytes; +@property(nonatomic, setter=_setLastAveragedInterval:) double _lastAveragedInterval; // @synthesize _lastAveragedInterval; +@property(nonatomic, setter=_setLastUpdatedInterval:) double _lastUpdatedInterval; // @synthesize _lastUpdatedInterval; +- (id)_auxVideoPathIfItExists; +- (id)description; +@property(readonly, retain, nonatomic) NSString *mimeType; // @synthesize mimeType=_mimeType; +@property(retain, nonatomic, setter=_setLocalPath:) NSString *localPath; +@property(readonly, retain, nonatomic) NSString *permanentHighQualityLocalPath; +@property(readonly, retain, nonatomic) NSString *temporaryHighQualityLocalPath; +@property(readonly, nonatomic) BOOL isOpusAudioMessage; +@property(readonly, nonatomic) BOOL isAutoloopVideo; +@property(readonly, nonatomic) BOOL isRecipeBasedSticker; +@property(readonly, nonatomic) BOOL existsAtLocalPath; +@property(readonly, retain, nonatomic) NSString *displayName; +@property(readonly, nonatomic) BOOL isFinished; +@property(readonly, nonatomic) BOOL canBeAccepted; +- (void)_calculateTypeInformation; +- (id)_dictionaryRepresentation; +- (BOOL)_updateWithDictionaryRepresentation:(id)arg1; +- (void)_clear; +- (void)_setDirectory:(BOOL)arg1 hfsType:(unsigned int)arg2 hfsCreator:(unsigned int)arg3 hfsFlags:(unsigned short)arg4; +- (void)_setAveragedTransferRate:(unsigned long long)arg1 lastAveragedInterval:(double)arg2 lastAveragedBytes:(unsigned long long)arg3; +- (void)_setCurrentBytes:(unsigned long long)arg1 totalBytes:(unsigned long long)arg2; +- (void)_setAccount:(id)arg1 otherPerson:(id)arg2; +- (id)_initWithGUID:(id)arg1 filename:(id)arg2 isDirectory:(BOOL)arg3 localURL:(id)arg4 account:(id)arg5 otherPerson:(id)arg6 totalBytes:(unsigned long long)arg7 hfsType:(unsigned int)arg8 hfsCreator:(unsigned int)arg9 hfsFlags:(unsigned short)arg10 isIncoming:(BOOL)arg11; +- (id)init; +- (void)dealloc; + +@end + +@interface NSArray (IMIDSUtilities) +- (id)__im_canonicalIDSIDsFromAddresses; +@end + +@interface NSDate (IMCoreAdditions) ++ (BOOL)useCourierTime; ++ (id)__im_dateWithCurrentServerTime; ++ (id)__im_dateWithNanosecondTimeIntervalSinceReferenceDate:(long long)arg1; +- (long long)minutesDifferenceFromDate:(id)arg1; +- (long long)hoursDifferenceFromDate:(id)arg1; +- (long long)differenceFromDate:(id)arg1; +- (BOOL)isToday; +- (long long)__im_nanosecondTimeInterval; +@end + +@interface NSObject (IMTesting) +- (void)__im_performAsynchronousTest:(CDUnknownBlockType)arg1 name:(id)arg2 timeout:(double)arg3 finalizer:(CDUnknownBlockType)arg4; +@end + +@interface NSProxy (NSProxyWorkaround) +- (BOOL)__isSingletonProxy__im; +@end + +@interface NSObject (IMSingleton) ++ (BOOL)isSingleton; ++ (BOOL)replaceSingletonWithSubclass:(id)arg1; ++ (BOOL)isSingletonOverridden; ++ (id)overriddenSingleton; ++ (void)replaceSingletonWithObject:(id)arg1; ++ (void)removeSingletonOverride; ++ (void)overrideSingletonWithObject:(id)arg1; ++ (id)singletonOverride; ++ (id)_createSingleton__im; +- (BOOL)__isSingletonProxy__im; +@end + +@interface NSDictionary (IMSharedUtilitiesAdditions) +- (unsigned long long)unsignedLongLongValueForKey:(id)arg1 withDefault:(unsigned long long)arg2; +- (long long)longLongValueForKey:(id)arg1 withDefault:(long long)arg2; +- (unsigned long long)unsignedLongValueForKey:(id)arg1 withDefault:(unsigned long long)arg2; +- (long long)longValueForKey:(id)arg1 withDefault:(long long)arg2; +- (float)floatValueForKey:(id)arg1 withDefault:(float)arg2; +- (double)doubleValueForKey:(id)arg1 withDefault:(double)arg2; +- (unsigned long long)unsignedIntegerValueForKey:(id)arg1 withDefault:(unsigned long long)arg2; +- (long long)integerValueForKey:(id)arg1 withDefault:(long long)arg2; +- (BOOL)boolValueForKey:(id)arg1 withDefault:(BOOL)arg2; +@end + +@interface NSObject (IMKeyValueCollectionUserDefaultsStorage) +- (BOOL)isArchivable_im; +@end + +@interface NSString (IMKeyValueCollectionUserDefaultsStorage) +- (BOOL)isArchivable_im; +@end + +@interface NSDate (IMKeyValueCollectionUserDefaultsStorage) +- (BOOL)isArchivable_im; +@end + +@interface NSNumber (IMKeyValueCollectionUserDefaultsStorage) +- (BOOL)isArchivable_im; +@end + +@interface NSData (IMKeyValueCollectionUserDefaultsStorage) +- (BOOL)isArchivable_im; +@end + +@interface NSArray (IMKeyValueCollectionUserDefaultsStorage) +- (BOOL)isArchivable_im; +@end + +@interface NSDictionary (IMKeyValueCollectionUserDefaultsStorage) +- (BOOL)isArchivable_im; +@end + +@interface NSString (IMSharedUtilities) +- (id)__im_apfsCompatibleFilename; +- (id)__im_filePathWithVariant:(id)arg1; +@end + +@interface NSDictionary (IMAssocatedMessageItemInfo) ++ (id)dictionaryWithMessageSummaryInfoData:(id)arg1; ++ (id)dictionaryWithAssociatedMessageSummary:(id)arg1 contentType:(unsigned char)arg2 pluginBundleID:(id)arg3 pluginDisplayName:(id)arg4; +@property(readonly, nonatomic) NSString *__im_associatedMessagePluginDisplayName; +@property(readonly, nonatomic) NSString *__im_associatedMessagePluginBundleID; +@property(readonly, nonatomic) NSNumber *__im_associatedMessageContentType; +@property(readonly, nonatomic) NSString *__im_associatedMessageSummary; +@end + +@interface NSData (IMAssociatedMessageItemInfo) ++ (id)dataWithMessageSummaryInfoDictionary:(id)arg1; +@end + +@interface NSURL (IMCoreAdditions) +- (BOOL)__im_conformsToDomain:(id)arg1 domainExtension:(id)arg2; +@end + +@interface NSString (IMEngramUtilities) +- (id)__im_engramDataRepresentation; +@end + +@interface NSData (IMEngramUtilities) +- (id)__im_engramStringRepresentation; +@end + +@interface NSError (IMSharedUtilitiesAdditions) ++ (id)serializedErrorArrayFromErrorArray_im:(id)arg1; ++ (id)errorArrayFromSerializedErrorArray_im:(id)arg1; +- (struct NSDictionary *)serializedError_im; +- (id)initWithSerializedError_im:(struct NSDictionary *)arg1; +@end + diff --git a/MessagesBridge.xcodeproj/project.pbxproj b/MessagesBridge.xcodeproj/project.pbxproj index 3e6ee3e..a2d5f5e 100644 --- a/MessagesBridge.xcodeproj/project.pbxproj +++ b/MessagesBridge.xcodeproj/project.pbxproj @@ -131,7 +131,6 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 1A0C445D219A458400F2AC00 /* SOAPlugInControllerProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SOAPlugInControllerProtocol.h; sourceTree = ""; }; 1A0C445F219A45B400F2AC00 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.Internal.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; 1A0C4461219A45B900F2AC00 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.Internal.sdk/System/Library/Frameworks/AppKit.framework; sourceTree = DEVELOPER_DIR; }; 1A0C4463219A45C700F2AC00 /* MessagesKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MessagesKit.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.Internal.sdk/System/Library/PrivateFrameworks/MessagesKit.framework; sourceTree = DEVELOPER_DIR; }; @@ -139,10 +138,9 @@ 1A0C4467219A45D500F2AC00 /* IMCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IMCore.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.Internal.sdk/System/Library/PrivateFrameworks/IMCore.framework; sourceTree = DEVELOPER_DIR; }; 1A0C4469219A4BC300F2AC00 /* MBIMBridge.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MBIMBridge.h; sourceTree = ""; }; 1A0C446A219A4BC300F2AC00 /* MBIMBridge.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MBIMBridge.m; sourceTree = ""; }; - 1A33B43A219A5ACD0034485A /* OSXReleaseDefaults.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = OSXReleaseDefaults.xcconfig; sourceTree = ""; }; - 1A33B43B219A5ACD0034485A /* DebugDefaults.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = DebugDefaults.xcconfig; sourceTree = ""; }; - 1A33B43C219A5ACD0034485A /* OSXDebugDefaults.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = OSXDebugDefaults.xcconfig; sourceTree = ""; }; - 1A33B43D219A5ACD0034485A /* ReleaseDefaults.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = ReleaseDefaults.xcconfig; sourceTree = ""; }; + 1A257CB023A8570100A4A2C8 /* IMCore_ClassDump.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IMCore_ClassDump.h; sourceTree = ""; }; + 1A257CB123A857DF00A4A2C8 /* IMSharedUtilities_ClassDump.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IMSharedUtilities_ClassDump.h; sourceTree = ""; }; + 1A257CB223A85DF200A4A2C8 /* IMFoundation_ClassDump.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IMFoundation_ClassDump.h; sourceTree = ""; }; 1A33B43E219A5BD80034485A /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; 1AA43E8D219EBB2D00EDF1A7 /* MBIMJSONDataResponse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MBIMJSONDataResponse.h; sourceTree = ""; }; 1AA43E8E219EBB2D00EDF1A7 /* MBIMJSONDataResponse.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MBIMJSONDataResponse.m; sourceTree = ""; }; @@ -297,8 +295,7 @@ children = ( 1A33B43E219A5BD80034485A /* README.md */, CDF62333219A895D00690038 /* kordophone */, - 1A33B439219A5ACD0034485A /* Config Files */, - 1A0C445C219A457C00F2AC00 /* Pilfered Headers */, + 1A0C445C219A457C00F2AC00 /* Dumped Classes */, CD83E162219BE91600F4CCEA /* agentHook */, CD14F18C219E2DB400E7DD22 /* Tests */, 1ACFCDE3219EB28A00E2C237 /* CocoaHTTPServer */, @@ -318,12 +315,14 @@ name = Products; sourceTree = ""; }; - 1A0C445C219A457C00F2AC00 /* Pilfered Headers */ = { + 1A0C445C219A457C00F2AC00 /* Dumped Classes */ = { isa = PBXGroup; children = ( - 1A0C445D219A458400F2AC00 /* SOAPlugInControllerProtocol.h */, + 1A257CB023A8570100A4A2C8 /* IMCore_ClassDump.h */, + 1A257CB223A85DF200A4A2C8 /* IMFoundation_ClassDump.h */, + 1A257CB123A857DF00A4A2C8 /* IMSharedUtilities_ClassDump.h */, ); - path = "Pilfered Headers"; + path = "Dumped Classes"; sourceTree = ""; }; 1A0C445E219A45B400F2AC00 /* Frameworks */ = { @@ -360,17 +359,6 @@ path = Bridge; sourceTree = ""; }; - 1A33B439219A5ACD0034485A /* Config Files */ = { - isa = PBXGroup; - children = ( - 1A33B43A219A5ACD0034485A /* OSXReleaseDefaults.xcconfig */, - 1A33B43B219A5ACD0034485A /* DebugDefaults.xcconfig */, - 1A33B43C219A5ACD0034485A /* OSXDebugDefaults.xcconfig */, - 1A33B43D219A5ACD0034485A /* ReleaseDefaults.xcconfig */, - ); - path = "Config Files"; - sourceTree = ""; - }; 1AA43E90219EBB3400EDF1A7 /* Utilities */ = { isa = PBXGroup; children = ( @@ -1148,7 +1136,7 @@ CODE_SIGN_STYLE = Automatic; GCC_PREFIX_HEADER = kordophone/KPServer.pch; PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = macosx.internal; + SDKROOT = macosx; SYSTEM_FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SDKROOT)$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks", @@ -1163,7 +1151,7 @@ CODE_SIGN_STYLE = Automatic; GCC_PREFIX_HEADER = kordophone/KPServer.pch; PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = macosx.internal; + SDKROOT = macosx; SYSTEM_FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(SDKROOT)$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks", diff --git a/MessagesBridge.xcodeproj/xcshareddata/xcschemes/kordophoned.xcscheme b/MessagesBridge.xcodeproj/xcshareddata/xcschemes/kordophoned.xcscheme index b3bcf4c..9f27664 100644 --- a/MessagesBridge.xcodeproj/xcshareddata/xcschemes/kordophoned.xcscheme +++ b/MessagesBridge.xcodeproj/xcshareddata/xcschemes/kordophoned.xcscheme @@ -27,8 +27,6 @@ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" shouldUseLaunchSchemeArgsEnv = "YES"> - - - - + + + isEnabled = "NO"> - - - -@protocol SOAPlugInControllerProtocol - -- (oneway void)connectPlugIn:(NSString *)plugInName withConnectionHandler:(void (^)(NSXPCListenerEndpoint *))replyHandler; -- (void)reconnect; - -@end diff --git a/kordophone/Bridge/MBIMBridge.m b/kordophone/Bridge/MBIMBridge.m index 1a88222..f1cbe26 100644 --- a/kordophone/Bridge/MBIMBridge.m +++ b/kordophone/Bridge/MBIMBridge.m @@ -16,11 +16,8 @@ #import -#import -#import - -#import -#import +#import "IMCore_ClassDump.h" +#import "IMFoundation_ClassDump.h" static const UInt16 kDefaultPort = 5738; @@ -136,11 +133,11 @@ static NSString *const MBIMBridgeToken = @"net.buzzert.kordophone"; [self registerForNotifications]; - [sDaemonController setDelegate:self]; - [sDaemonListener addHandler:self]; + [[IMDaemonController sharedInstance] setDelegate:(id)self]; + [[[IMDaemonController sharedInstance] listener] addHandler:self]; - if (![sDaemonController hasListenerForID:MBIMBridgeToken]) { - if (![sDaemonController addListenerID:MBIMBridgeToken capabilities:(kFZListenerCapFileTransfers | kFZListenerCapManageStatus | kFZListenerCapChats | kFZListenerCapMessageHistory | kFZListenerCapIDQueries | kFZListenerCapSendMessages)]) { + if (![[IMDaemonController sharedInstance] hasListenerForID:MBIMBridgeToken]) { + if (![[IMDaemonController sharedInstance] addListenerID:MBIMBridgeToken capabilities:(kFZListenerCapFileTransfers | kFZListenerCapManageStatus | kFZListenerCapChats | kFZListenerCapMessageHistory | kFZListenerCapIDQueries | kFZListenerCapSendMessages)]) { MBIMLogFatal(@"Failed to connect to imagent"); [self _terminate]; @@ -153,7 +150,7 @@ static NSString *const MBIMBridgeToken = @"net.buzzert.kordophone"; - (void)disconnect { - [sDaemonController removeListenerID:MBIMBridgeToken]; + [[IMDaemonController sharedInstance] removeListenerID:MBIMBridgeToken]; } #pragma mark - @@ -196,7 +193,7 @@ static NSString *const MBIMBridgeToken = @"net.buzzert.kordophone"; - (void)_chatRegistryDidLoad:(NSNotification *)notification { - MBIMLogInfo(@"Loaded chat registry. %lu existing chats", (unsigned long)[sChatRegistry numberOfExistingChats]); + MBIMLogInfo(@"Loaded chat registry. %lu existing chats", (unsigned long)[[IMChatRegistry sharedInstance] numberOfExistingChats]); } - (void)_chatItemsDidChange:(NSNotification *)notification diff --git a/kordophone/Bridge/MBIMUpdateQueue.h b/kordophone/Bridge/MBIMUpdateQueue.h index 64d7a1a..9cb7a43 100644 --- a/kordophone/Bridge/MBIMUpdateQueue.h +++ b/kordophone/Bridge/MBIMUpdateQueue.h @@ -6,8 +6,8 @@ // Copyright © 2018 James Magahern. All rights reserved. // -#import -#import +#import "IMCore_ClassDump.h" +#import "IMFoundation_ClassDump.h" NS_ASSUME_NONNULL_BEGIN diff --git a/kordophone/Bridge/Operations/MBIMConversationListOperation.m b/kordophone/Bridge/Operations/MBIMConversationListOperation.m index 076346b..0d22701 100644 --- a/kordophone/Bridge/Operations/MBIMConversationListOperation.m +++ b/kordophone/Bridge/Operations/MBIMConversationListOperation.m @@ -10,7 +10,7 @@ #import "MBIMHTTPUtilities.h" #import "IMChat+Encoded.h" -#import +#import "IMCore_ClassDump.h" @implementation MBIMConversationListOperation @@ -26,7 +26,7 @@ __block NSMutableArray *conversations = [NSMutableArray array]; dispatch_sync([[self class] sharedIMAccessQueue], ^{ - NSArray *chats = [sChatRegistry allExistingChats]; + NSArray *chats = [[IMChatRegistry sharedInstance] allExistingChats]; for (IMChat *chat in chats) { NSDictionary *chatDict = [chat mbim_dictionaryRepresentation]; [conversations addObject:chatDict]; diff --git a/kordophone/Bridge/Operations/MBIMFetchAttachmentOperation.m b/kordophone/Bridge/Operations/MBIMFetchAttachmentOperation.m index b7cc8b7..5bbce09 100644 --- a/kordophone/Bridge/Operations/MBIMFetchAttachmentOperation.m +++ b/kordophone/Bridge/Operations/MBIMFetchAttachmentOperation.m @@ -9,7 +9,7 @@ #import "MBIMFetchAttachmentOperation.h" #import "MBIMDataResponse.h" -#import +#import "IMCore_ClassDump.h" @implementation MBIMFetchAttachmentOperation diff --git a/kordophone/Bridge/Operations/MBIMMarkOperation.m b/kordophone/Bridge/Operations/MBIMMarkOperation.m index 08992c7..6e79388 100644 --- a/kordophone/Bridge/Operations/MBIMMarkOperation.m +++ b/kordophone/Bridge/Operations/MBIMMarkOperation.m @@ -7,7 +7,7 @@ // #import "MBIMMarkOperation.h" -#import +#import "IMCore_ClassDump.h" @implementation MBIMMarkOperation @@ -31,7 +31,7 @@ } dispatch_sync([[self class] sharedIMAccessQueue], ^{ - IMChat *chat = [sChatRegistry existingChatWithGUID:guid]; + IMChat *chat = [[IMChatRegistry sharedInstance] existingChatWithGUID:guid]; if (!chat) { MBIMLogInfo(@"Chat with guid: %@ not found", guid); response = [[HTTPErrorResponse alloc] initWithErrorCode:500]; diff --git a/kordophone/Bridge/Operations/MBIMMessagesListOperation.m b/kordophone/Bridge/Operations/MBIMMessagesListOperation.m index e15e121..73c66b2 100644 --- a/kordophone/Bridge/Operations/MBIMMessagesListOperation.m +++ b/kordophone/Bridge/Operations/MBIMMessagesListOperation.m @@ -10,7 +10,7 @@ #import "MBIMHTTPUtilities.h" #import "IMMessageItem+Encoded.h" -#import +#import "IMCore_ClassDump.h" @implementation MBIMMessagesListOperation @@ -35,7 +35,7 @@ __block NSMutableArray *messages = [NSMutableArray array]; dispatch_sync([[self class] sharedIMAccessQueue], ^{ - IMChat *chat = [sChatRegistry existingChatWithGUID:guid]; + IMChat *chat = [[IMChatRegistry sharedInstance] existingChatWithGUID:guid]; if (!chat) { MBIMLogInfo(@"Chat with guid: %@ not found", guid); response = [[HTTPErrorResponse alloc] initWithErrorCode:500]; diff --git a/kordophone/Bridge/Operations/MBIMSendMessageOperation.m b/kordophone/Bridge/Operations/MBIMSendMessageOperation.m index a69e21e..a1d71cb 100644 --- a/kordophone/Bridge/Operations/MBIMSendMessageOperation.m +++ b/kordophone/Bridge/Operations/MBIMSendMessageOperation.m @@ -8,8 +8,7 @@ #import "MBIMSendMessageOperation.h" -#import -#import +#import "IMCore_ClassDump.h" @implementation MBIMSendMessageOperation @@ -25,7 +24,7 @@ __block BOOL result = YES; dispatch_sync([[self class] sharedIMAccessQueue], ^{ - IMChat *chat = [sChatRegistry existingChatWithGUID:chatGUID]; + IMChat *chat = [[IMChatRegistry sharedInstance] existingChatWithGUID:chatGUID]; // TODO: chat might not be an iMessage chat! IMAccount *iMessageAccount = [[IMAccountController sharedInstance] bestAccountForService:[IMServiceImpl iMessageService]]; diff --git a/kordophone/Bridge/Operations/MBIMUploadAttachmentOperation.m b/kordophone/Bridge/Operations/MBIMUploadAttachmentOperation.m index b77832e..3ec8a64 100644 --- a/kordophone/Bridge/Operations/MBIMUploadAttachmentOperation.m +++ b/kordophone/Bridge/Operations/MBIMUploadAttachmentOperation.m @@ -9,7 +9,7 @@ #import "MBIMUploadAttachmentOperation.h" #import "MBIMDataResponse.h" -#import +#import "IMCore_ClassDump.h" @implementation MBIMUploadAttachmentOperation diff --git a/kordophone/Categories/IMChat+Encoded.h b/kordophone/Categories/IMChat+Encoded.h index 6f3f09c..eed0389 100644 --- a/kordophone/Categories/IMChat+Encoded.h +++ b/kordophone/Categories/IMChat+Encoded.h @@ -6,7 +6,7 @@ // Copyright © 2018 James Magahern. All rights reserved. // -#import +#import "IMCore_ClassDump.h" NS_ASSUME_NONNULL_BEGIN diff --git a/kordophone/Categories/IMMessageItem+Encoded.h b/kordophone/Categories/IMMessageItem+Encoded.h index da78de1..61de3cf 100644 --- a/kordophone/Categories/IMMessageItem+Encoded.h +++ b/kordophone/Categories/IMMessageItem+Encoded.h @@ -6,8 +6,7 @@ // Copyright © 2018 James Magahern. All rights reserved. // -#import -#import +#import "IMCore_ClassDump.h" NS_ASSUME_NONNULL_BEGIN