import { VaniEvent, MeetingStartRequest, MessagePayload, MeetingHandler } from "..";
import { Participant } from "../model/Participant";
import { Track, TrackKind } from "../model/Track";
import { WebSocketEvents, WebsocketHandler, WebSocketMessageBody } from "../websocket-handler/WebsocketHandler";
import { BaseVideoCallHandler } from "../video-call-handler/BaseVideoCallHandler";
import { VaniEventListener } from "../utility/VaniEventListener";
export declare class CommunicationHandler {
    isStartAndSetupWithServerCalled: boolean;
    eventEmitter: VaniEventListener;
    private allParticipants;
    private selfTracks;
    private allTracks;
    private meetingStartRequest?;
    private websocketCallHandler?;
    private videoCallHandler?;
    private meetingHandler?;
    private internetReachbilityTimeout?;
    private isReachable;
    constructor(meetingHandler: MeetingHandler);
    setMeetingStartRequest(_meetingStartRequest: MeetingStartRequest): void;
    setWebsocketCallHandler(_websocketCallHandler: WebsocketHandler): void;
    setVideoCallHandler(_videoCallHandler: BaseVideoCallHandler): void;
    isReady(): boolean;
    emitMessageToSource(emitType: VaniEvent, payload: any): Promise<void>;
    getEventEmitter(): VaniEventListener;
    onAudioVideoStatusUpdated(data: any): void;
    restartTransport: () => Promise<void>;
    getSelfParticipant(): Participant | undefined;
    downloadParticipantsData(): void;
    onServerParticipants(data: any): void;
    getAllParticipants(): Participant[];
    participantByUserId(userId: string): Participant | undefined;
    addParticipantIfNotExist(participant: Participant, shouldInfrom?: boolean): Participant | undefined;
    removeParticipant(participant: Participant, shouldInfrom?: boolean): void;
    onUserLeft(data: any): void;
    private updateParticipantAudioVideoDataAccordingToTrack;
    getSelfTrackByType(trackKind: TrackKind): Track | undefined;
    getAllSelfTracks(): Track[];
    getAllTracks(): Track[];
    getTrackById(trackId: string): Track | undefined;
    getLocalTrackById(trackId: string): Track | undefined;
    getAllTracksForParticipant(participant: Participant): Track[];
    removeTrack(track: Track, shouldInfromVideoController?: boolean): void;
    resumeProducerOrConsumerForTrack(track: Track): void;
    pauseProducerOrConsumerForTrack(track: Track): void;
    getConsumerForTrack(track: Track): void | undefined;
    addUpdateRemoteTrack(track: Track, participant: Participant, shouldInfromIfNotExist?: boolean): Track;
    addUpdateLocalTrack(track: Track): void;
    onOldMessages(data: any): void;
    requestToCloseTheRoom: () => Promise<void>;
    onMessage(message: any, shouldInfromSource?: boolean): MessagePayload;
    sendWebSocketMessage(type: WebSocketEvents, data: any): void;
    onVideoCallWebSocketMessage(websocketMessage: WebSocketMessageBody): Promise<void>;
    onReconnect(): Promise<void>;
    onStartMeeingCalled(): void;
    onAudioBlocked(data: any): void;
    onAudioUnblocked(data: any): void;
    onVideoBlocked(data: any): void;
    onVideoUnblocked(data: any): void;
    destoryRoomForcefully: () => void;
    onIceCandidateDisconnected(): void;
    checkIfInternetReachable: (count: number) => void;
    private onApiResponded;
    restartSFU: () => Promise<void>;
    private reloadSFUCleanUpDone;
    cleanup(): void;
}
