import { MeetingStartRequest, VaniEventListener, Device, MessagePayload } from ".";
import { BaseVideoCallHandler } from "./video-call-handler/BaseVideoCallHandler";
import { GetDevicesType } from "./user-media-handler/UserMediaHandler";
import { Track, TrackKind } from "./model/Track";
import { TaskResponse } from "./model/TaskResponse";
import { Participant } from "./model/Participant";
import { TrackStats } from "./model/TrackStats";
export declare class MeetingHandler {
    private meetingStartRequest?;
    private videoCallHandler?;
    private reactNativeWebrtcPlugin?;
    private websocketCallHandler?;
    private communicationHandler?;
    private userMediaHandler?;
    meetingStartRequestObject(roomId: string, userId: string, appId: string, wssUrl: string, shouldIgnoreCaseForRoomId?: boolean): MeetingStartRequest;
    endAndDestory(): void;
    cleanupWebsocket: () => void;
    isWebSocketInPreConnect: () => boolean;
    requestToCloseTheRoom: () => void;
    preconnect: (url: string) => Promise<void>;
    init(): Promise<boolean>;
    recreateVideoCallHandler: () => Promise<BaseVideoCallHandler>;
    switchCamera(): void;
    startLocalStream(isVideoRequired: boolean, isAudioRequired: boolean, shouldAddTrackImmediately?: boolean, userMediaPayload?: any): Promise<boolean>;
    startScreenShare(isAudioRequired?: boolean, shouldAddTrackImmediately?: boolean, screensharePayload?: any): Promise<void>;
    stopScreenSharing(): Promise<void>;
    getDevices(deviceType: GetDevicesType): Promise<Device[] | undefined>;
    pauseCamera(userId?: string): Promise<TaskResponse>;
    muteUser(userId?: string): Promise<TaskResponse>;
    getClientStats: () => Promise<TrackStats[] | undefined>;
    resumeCamera(userId?: string): Promise<TaskResponse>;
    refetchTrackForParticipant: (participant: Participant) => Promise<void>;
    unmute(userId?: string): Promise<TaskResponse>;
    resumeStreamWithoutAdding(streamKind: TrackKind): TaskResponse | undefined;
    pauseStreamWithoutStopping(streamKind: TrackKind): TaskResponse | undefined;
    stopTrack(track: Track): void;
    addCustomTrack(track: Track): void;
    pauseIncomingTrack(track: Track): void;
    resumeIncomingTrack(track: Track): void;
    updateSpatialForTrack(track: Track, spatialLayerIndex: number): Promise<void>;
    resumeProducerOrConsumerForTrack(track: Track): Promise<void>;
    pauseProducerOrConsumerForTrack(track: Track): Promise<void>;
    getConsumerForTrack(track: Track): void;
    participantByUserId(userId: string): Participant | undefined;
    updateParticipantData(participant: Participant): Participant | undefined;
    updateParticipantUserData(participant: Participant): Participant | undefined;
    getUpdatedParticipantsListFromServer(): void;
    getAllParticipants(): Participant[];
    getAllTracks(): Track[];
    getTracksByParticipantId(participantId: string): Track[];
    isWebScoketConnected(): boolean;
    isStartMeetingCalled: () => boolean;
    sendMessage(message: MessagePayload): TaskResponse;
    getOldMessages(): Promise<void>;
    onOldMessages(data: any): Promise<void>;
    checkSocket(): Promise<boolean>;
    startMeeting(): Promise<void>;
    getMeetingStartTime(): Promise<boolean>;
    startRTMPStream(urls: string[]): Promise<void>;
    getEventEmitter(): VaniEventListener | undefined;
    restartTransport: () => Promise<void>;
    private emitMessageToSource;
    restartSFU: () => Promise<void>;
    private cleanup;
    private handleGA;
}
