@class NSMutableDictionary, IMHandle, NSDate, NSDictionary, NSObject, IMAccount, IMAVChatParticipant, NSMutableArray, IMTimingCollection, NSString, NSTimer, NSArray, NSData, NSNumber, NSError; @protocol OS_dispatch_queue; @interface IMAVChat : NSObject { NSMutableDictionary *_conferenceStateCache; NSDate *_dateStartedConnecting; NSDate *_dateReceivedRelayInitiate; NSDate *_dateReceivedRelayUpdate; IMTimingCollection *_timingCollection; NSError *_error; unsigned int _lastPostedState; double _connectionTimeoutTime; double _invitationTimeoutTime; BOOL _hasGatheredInfo; BOOL _hasReceivedFirstFrame; BOOL _hasPendingAccept; BOOL _hasPendingInit; } @property (nonatomic) void *localVideoLayer; @property (nonatomic) void *localVideoBackLayer; @property (nonatomic) unsigned int cameraOrientation; @property (nonatomic) unsigned int cameraType; @property (nonatomic) double invitationTimeoutTime; @property (nonatomic) double connectionTimeoutTime; @property (nonatomic, setter=setMute:) BOOL isMute; @property (nonatomic, setter=setRemoteMute:) BOOL isRemoteMute; @property (nonatomic) BOOL isSendingAudio; @property (readonly, nonatomic) BOOL didRemoteMute; @property (nonatomic, setter=setPaused:) BOOL isPaused; @property (readonly, nonatomic) BOOL hasReceivedFirstFrame; @property (nonatomic) BOOL isSendingVideo; @property (readonly, nonatomic) BOOL didRemotePause; @property (readonly, nonatomic) BOOL _allParticipantsUsingICE; @property (readonly) NSMutableDictionary *_extraServerContext; @property (retain, nonatomic, setter=_setConferenceID:) NSString *conferenceID; @property (retain, nonatomic, setter=_setCallStatisticsGUID:) NSString *_callStatisticsGUID; @property (nonatomic, setter=_setConferenceController:) id _conferenceController; @property (retain, nonatomic, setter=_setGUID:) NSString *GUID; @property (retain, nonatomic, setter=_setNatType:) NSNumber *_natType; @property (readonly, nonatomic) NSNumber *_remoteNatType; @property (readonly, nonatomic) NSNumber *_currentNatType; @property (nonatomic, setter=_setConnectionType:) int _connectionType; @property (readonly, nonatomic) long long _bustedCallID; @property (readonly, nonatomic) NSNumber *_connectDuration; @property (readonly, nonatomic) NSNumber *_callDuration; @property (readonly, nonatomic) NSNumber *_relayConnectDuration; @property (readonly, nonatomic) BOOL _usesRelay; @property (readonly, nonatomic) BOOL _isProxy; @property (retain, nonatomic, setter=_setRelayRemotePrimaryIdentifier:) NSData *_relayRemotePrimaryIdentifier; @property (retain, nonatomic, setter=_setInterruptionBegan:) NSDate *_interruptionBegan; @property (retain, nonatomic, setter=_setFrontCameraCaptureTime:) NSNumber *_frontCameraCaptureTime; @property (retain, nonatomic, setter=_setBackCameraCaptureTime:) NSNumber *_backCameraCaptureTime; @property (retain, nonatomic, setter=setDataRate:) NSNumber *dataRate; @property (retain, nonatomic, setter=setDataUploaded:) NSNumber *dataUploaded; @property (retain, nonatomic, setter=setDataDownloaded:) NSNumber *dataDownloaded; @property (nonatomic, setter=_setIsVideoInterrupted:) BOOL _isVideoInterrupted; @property (nonatomic, setter=_setIsAudioInterrupted:) BOOL _isAudioInterrupted; @property (nonatomic, setter=_setLocalNetworkConnectionType:) unsigned long long _localNetworkConnectionType; @property (nonatomic, setter=_setRemoteNetworkConnectionType:) unsigned long long _remoteNetworkConnectionType; @property (nonatomic, setter=_setNeedsAudioRestart:) BOOL _needsAudioRestart; @property (nonatomic, setter=_setNeedsVideoRestart:) BOOL _needsVideoRestart; @property (retain, nonatomic) NSObject *_conferenceQueue; @property (retain, nonatomic, setter=_setPingTestResults:) NSDictionary *_pingTestResults; @property (nonatomic, setter=_setPingTestResult:) long long _pingTestResult; @property (nonatomic, setter=_setNetworkCheckResult:) long long _networkCheckResult; @property (retain, nonatomic, setter=_setCallerProperties:) NSDictionary *callerProperties; @property (nonatomic, setter=_setConnectionStarted:) BOOL _connectionStarted; @property (readonly, nonatomic) NSArray *_imHandles; @property (nonatomic) BOOL mayRequireBreakBeforeMake; @property (retain, nonatomic, setter=_setInviteTimeoutTimer:) NSTimer *inviteTimeoutTimer; @property (retain, nonatomic, setter=_setInviteTimeoutTimerStart:) NSDate *inviteTimeoutTimerStart; @property (retain, nonatomic, setter=_setFirstFrameTimeoutTimer:) NSTimer *firstFrameTimeoutTimer; @property (retain, nonatomic, setter=_setConnectionTimeoutTimer:) NSTimer *connectionTimeoutTimer; @property (nonatomic, setter=_setPortraitAspectRatios:) struct CGSize { double width; double height; } portraitAspectRatios; @property (nonatomic, setter=_setLandscapeAspectRatios:) struct CGSize { double width; double height; } landscapeAspectRatios; @property (nonatomic, getter=isTerminating, setter=_setTerminating:) BOOL terminating; @property (nonatomic, setter=_setDidRemoteMute:) BOOL didRemoteMute; @property (nonatomic, setter=_setDidRemotePause:) BOOL didRemotePause; @property (nonatomic, setter=_setAirplaneModeEnabled:) BOOL airplaneModeEnabled; @property (nonatomic, setter=_setMetadataFinalized:) BOOL metadataFinalized; @property (readonly, nonatomic) unsigned int sessionID; @property (readonly, nonatomic) IMHandle *initiatorIMHandle; @property (readonly, nonatomic) IMHandle *otherIMHandle; @property (readonly, nonatomic) IMAccount *account; @property (readonly, nonatomic) IMAVChatParticipant *initiatorParticipant; @property (readonly, nonatomic) IMAVChatParticipant *localParticipant; @property (readonly, nonatomic) NSMutableArray *participants; @property (readonly, nonatomic) NSArray *remoteParticipants; @property (readonly, nonatomic) unsigned int state; @property (readonly, nonatomic) BOOL isActive; @property (readonly, nonatomic) BOOL isStateFinal; @property (readonly, nonatomic) int endedError; @property (readonly, nonatomic) unsigned int endedReason; @property (readonly, nonatomic) NSDate *dateCreated; @property (readonly, nonatomic) NSDate *dateConnected; @property (readonly, nonatomic) NSDate *dateEnded; @property (readonly, nonatomic) BOOL isCaller; @property (readonly, nonatomic) BOOL isVideo; @property (readonly, nonatomic) BOOL isUsingWifi; @property (nonatomic, getter=isRelayed) BOOL relayed; + (id)chatList; + (id)_avChatWithMatchingIMHandles:(id)a0 video:(BOOL)a1; + (id)_activeChat; + (id)connectingChats; + (id)acceptedChats; + (id)connectedChats; + (id)_connectedChat; + (void)setDefaultInvitationTimeoutTime:(double)a0; + (id)_bestGuessAVChatWithIMHandle:(id)a0 conferenceID:(id)a1 sessionID:(unsigned int)a2 properties:(id)a3; + (id)avChatWithGUID:(id)a0; + (id)_chatWithSessionID:(unsigned int)a0; + (id)_connectingChats; + (double)defaultConnectionTimeoutTime; + (id)_outgoingInvitations; + (void)setDefaultConnectionTimeoutTime:(double)a0; + (id)connectedChat; + (id)nonFinalChat; + (id)outgoingInvitations; + (id)_connectedChats; + (id)_incomingInvitations; + (id)activeChat; + (id)_nonFinalChat; + (id)_imHandleFromProxyRepresentation:(id)a0; + (id)_avChatWithGUID:(id)a0; + (id)_avChatConnectingFromIMHandle:(id)a0; + (int)systemSupportsNewOutgoingConferenceTo:(id)a0 isVideo:(BOOL)a1; + (id)_avChatWithConferenceID:(id)a0; + (id)_avChatWaitingForReplyFromIMHandle:(id)a0 orConferenceID:(id)a1; + (id)_proxyRepresentationForIMHandle:(id)a0; + (id)chatsWithIMAVChatState:(unsigned int)a0; + (double)defaultInvitationTimeoutTime; + (id)_chatList; + (id)_avChatInvitedByIMHandle:(id)a0 orConferenceID:(id)a1; + (id)_acceptedChats; + (id)_avChatArray; + (id)_chatListLock; + (id)incomingInvitations; + (id)_chatsWithIMAVChatState:(unsigned int)a0; - (void)systemApplicationDidResume; - (void)toggleMute; - (void)dealloc; - (void)systemApplicationDidSuspend; - (void)_applicationWillTerminate:(id)a0; - (id)description; - (void)systemApplicationDidEnterBackground; - (void).cxx_destruct; - (void)systemApplicationWillEnterForeground; - (BOOL)isActive; - (void)systemApplicationDidBecomeActive; - (void)_postNotificationName:(id)a0 userInfo:(id)a1; - (void)notificationCenterDidDisappear; - (void)notificationCenterWillAppear; - (void)systemApplicationDidResumeForEventsOnly; - (void)systemDidFastUserSwitchOut; - (void)systemWillShutdown; - (id)_timings; - (BOOL)stopPreview; - (void)acceptInvitation; - (void)cancelInvitation; - (void)declineInvitation; - (void)setRemoteVideoPresentationSize:(struct CGSize { double x0; double x1; })a0; - (void)setRemoteVideoPresentationState:(unsigned int)a0; - (void)_clearCache; - (id)remoteParticipants; - (BOOL)_moveVCPartyID:(id)a0 toIndex:(unsigned int)a1 inCount:(unsigned int)a2; - (void)_noteFirstFrame; - (void)_postStateToDelegateIfNecessary; - (void)conferencePersonWithID:(id)a0 didMute:(BOOL)a1; - (void)_handleAVError:(id)a0; - (void)_initParticipantsWithIMHandles:(id)a0; - (void)endChat; - (void)invite:(id)a0; - (void)__responseToVCInvite:(id)a0; - (void)__sendEndCallMetricToAWDWithReason:(unsigned int)a0 andError:(int)a1; - (void)__sendEndCallMetricToViceroyWithReason:(unsigned int)a0 andError:(int)a1; - (void)_airplaneModeChanged:(id)a0; - (void)_cacheBool:(BOOL)a0 forKey:(id)a1; - (BOOL)_cachedBoolForKey:(id)a0; - (void)_cancelInvitationWithReason:(unsigned int)a0 error:(int)a1; - (void)_clearConnectionTimeoutTimer; - (void)_clearFirstFrameTimeoutTimer; - (void)_clearInvitationTimeoutTimer; - (void)_conferenceOtherParticipant:(id)a0 didConnect:(BOOL)a1; - (void)_connectionTimeout:(id)a0; - (void)_endChatWithReason:(unsigned int)a0 andError:(int)a1; - (void)_entitlementsChanged:(id)a0; - (void)_firstFrameTimeout:(id)a0; - (void)_handleGenericAVMessageFromParticipant:(id)a0 type:(unsigned int)a1 userInfo:(id)a2 handled:(BOOL)a3; - (void)_handleRelayCancel:(id)a0 fromParticipant:(id)a1; - (void)_handleRelayInitate:(id)a0 fromParticipant:(id)a1; - (void)_handleRelayUpdate:(id)a0 fromParticipant:(id)a1; - (BOOL)_hasCachedBoolForKey:(id)a0; - (id)_initOutgoingTo:(id)a0 isVideo:(BOOL)a1 isRelayed:(BOOL)a2 GUID:(id)a3; - (id)_initWith:(id)a0 invitedBy:(id)a1 sessionID:(unsigned int)a2 GUID:(id)a3 video:(BOOL)a4 extraProperties:(id)a5; - (id)_initWith:(id)a0 invitedBy:(id)a1 sessionID:(unsigned int)a2 isRelayed:(BOOL)a3 GUID:(id)a4 video:(BOOL)a5 extraProperties:(id)a6; - (void)_insertRemoteParticipant:(id)a0 atIndex:(unsigned long long)a1; - (void)_invitationTimeout:(id)a0; - (BOOL)_isCallUpgradeTo:(id)a0; - (BOOL)_isVideoUpgradeTo:(id)a0; - (id)_participantMatchingVCPartyID:(id)a0; - (BOOL)_participantsCheckOut; - (void)_peerID:(id)a0 changedTo:(id)a1; - (void)_postNotificationName:(id)a0 participant:(id)a1 userInfo:(id)a2; - (void)_postParticipantMediaChangeNotification:(id)a0 cameraChanged:(BOOL)a1 orientationChanged:(BOOL)a2 aspectChanged:(BOOL)a3 cameraWillSwitch:(BOOL)a4 camera:(unsigned int)a5 orientation:(unsigned int)a6 aspect:(struct CGSize { double x0; double x1; })a7; - (BOOL)_processVCResponseDict:(id)a0; - (id)_proxyRepresentation; - (id)_proxyRepresentationForIMAVChatParticipant:(id)a0; - (void)_reduceInvitationTimeoutTime; - (void)_responseToVCInvite:(id)a0; - (void)_resumeAudioState; - (void)_resumeVideoState; - (void)_saveAudioRestartState; - (void)_saveVideoRestartState; - (void)_setActiveConference; - (void)_setConnectionTimeoutTimer; - (void)_setCreationDate; - (void)_setDateConnected; - (void)_setFirstFrameTimeoutTimer; - (void)_setInvitationTimeoutTimer; - (void)_setStateDisconnected; - (void)_submitCallConnectedLogging; - (void)_submitCallEndedLoggingWithReason:(unsigned int)a0 andError:(int)a1; - (void)_submitCallInterruptionBeganLogging; - (void)_submitCallInterruptionEndedLogging; - (void)_submitCallStartedLoggingWithRecipientID:(id)a0 isCaller:(BOOL)a1 isVideo:(BOOL)a2; - (void)_updateIMHandleInBuddyList:(id)a0; - (void)_vccInitDidFinish:(id)a0; - (void)beginChat; - (void)conferenceAVConferenceCallID:(long long)a0 didConnect:(BOOL)a1; - (void)conferenceDidPauseAudioWithCallID:(long long)a0 didPauseAudio:(BOOL)a1; - (void)conferenceDidStopWithCallID:(long long)a0 error:(id)a1; - (void)conferencePersonWithID:(id)a0 didDegrade:(BOOL)a1; - (void)conferencePersonWithID:(id)a0 didPause:(BOOL)a1; - (void)conferencePersonWithID:(id)a0 localIPDidChange:(id)a1; - (void)conferencePersonWithID:(id)a0 mediaDidStall:(BOOL)a1; - (void)conferencePersonWithID:(id)a0 sendRelayCancel:(id)a1; - (void)conferencePersonWithID:(id)a0 sendRelayRequest:(id)a1; - (void)conferencePersonWithID:(id)a0 sendRelayUpdate:(id)a1; - (void)declineInvitationWithResponse:(unsigned int)a0; - (void)endChatWithError:(int)a0; - (void)endChatWithReason:(unsigned int)a0; - (void)endChatWithReason:(unsigned int)a0 error:(int)a1; - (void)handleGenericAVMessageFromParticipant:(id)a0 type:(unsigned int)a1 userInfo:(id)a2; - (id)initIncomingFrom:(id)a0 isVideo:(BOOL)a1 callerProperties:(id)a2; - (id)initOutgoingTo:(id)a0 isVideo:(BOOL)a1; - (id)initOutgoingTo:(id)a0 isVideo:(BOOL)a1 isRelayed:(BOOL)a2; - (id)initOutgoingTo:(id)a0 isVideo:(BOOL)a1 isRelayed:(BOOL)a2 GUID:(id)a3; - (id)initiatorParticipant; - (void)invite:(id)a0 additionalPeers:(id)a1; - (void)invite:(id)a0 additionalPeers:(id)a1 excludingPushTokens:(id)a2; - (void)inviteAll; - (id)inviteesInfo; - (BOOL)isConferenceSilent; - (BOOL)isStateFinal; - (struct CGSize { double x0; double x1; })localAspectRatioForCameraOrientation:(unsigned int)a0 cameraType:(unsigned int)a1; - (void)participant:(id)a0 changedFromState:(unsigned int)a1 toState:(unsigned int)a2; - (id)participantMatchingIMHandle:(id)a0; - (id)participantWithAVConferenceCallID:(long long)a0; - (id)participantWithID:(id)a0; - (void)setLocalAspectRatio:(struct CGSize { double x0; double x1; })a0 cameraOrientation:(unsigned int)a1 cameraType:(unsigned int)a2; - (void)setMetadataFinalized; - (BOOL)startPreviewWithError:(id *)a0; - (void)togglePaused; - (id)vcPartyIDForIMHandle:(id)a0; @end