import { types as MediaSoup, Device } from 'mediasoup-client';
import { Dispatch } from '@reduxjs/toolkit';
import { ContextObj as SocketContext, WebsocketMessage } from "../MediaRoomSocketService";
import { ChatMessage, PollCreatePayload, PollVotePayload } from "../../types/APITypes";
import { MediaStreamTrack } from 'react-native-webrtc';
import { WebinarAcceptRequestType } from "../../types/newTypes";
interface AcceptPeerMsgType {
    id: string;
    requestToJoinType: string;
    type: WebinarAcceptRequestType;
}
export default class MediaRoomClient {
    private socketObj;
    device: Device;
    peerid: string;
    private dispatch;
    private sendTransport?;
    private recvTransport?;
    consumers: Map<string, MediaSoup.Consumer>;
    closedConsumers: string[];
    webCamProducer?: MediaSoup.Producer;
    micProducer?: MediaSoup.Producer;
    screenShareVideoProducer?: MediaSoup.Producer;
    screenShareAudioProducer?: MediaSoup.Producer;
    legacyMode: boolean;
    hidden: boolean;
    private autoTune;
    constructor(peerId: string, socketObj: SocketContext, dispatch: Dispatch, autoTune?: boolean);
    handleSockets(message: WebsocketMessage, callBack?: (arg?: string) => void): void;
    loadRouter(): Promise<void>;
    getRoomState(): Promise<void>;
    changeRoomDisplayTitle(displayTitle: string): Promise<void>;
    joinRoom(displayName: string, audioMuted: boolean, roomTitle?: string): Promise<WebsocketMessage>;
    createRecvTransport(): Promise<void>;
    createSendTransport(): Promise<void>;
    createConsumer(request: any, callback?: (arg?: string) => void): Promise<void>;
    closeConsumer(request: {
        id: string;
    }): Promise<void>;
    pauseConsumer(request: {
        id: string;
    }): Promise<void>;
    resumeConsumer(request: {
        id: string;
    }): Promise<void>;
    shareWebcam(videoTrack?: MediaStreamTrack): Promise<void>;
    shareScreen(tracks: {
        video?: MediaStreamTrack;
        audio?: MediaStreamTrack;
    }): Promise<void>;
    shareMic(audioTrack?: MediaStreamTrack, defaultState?: boolean): Promise<void>;
    pauseMic(): void;
    pauseWebcam(): void;
    resumeMic(): void;
    resumeWebcam(): void;
    disableWebcam(data?: {
        silent?: boolean;
    }): Promise<void>;
    disableMic(data?: {
        silent?: boolean;
    }): Promise<void>;
    disableScreenShare(): Promise<void>;
    stopAllProducers(): void;
    stopAllTransports(): Promise<void>;
    resetVideoProducers(videoTrack: MediaStreamTrack, screenShareTrack?: MediaStreamTrack): Promise<void>;
    private createProducer;
    private removeProducer;
    sendMessage(message: ChatMessage): Promise<void>;
    getMesssages(): Promise<void>;
    getPolls(): Promise<void>;
    newPoll(poll: PollCreatePayload): Promise<void>;
    votePoll(poll: PollVotePayload): Promise<void>;
    acceptWaitingRequest(peerId: string): Promise<void>;
    rejectWaitingRequest(peerId: string): Promise<void>;
    muteAll(allowUnMute: boolean): Promise<void>;
    rejectRequestToJoinStage(peerId: string): Promise<void>;
    muteAllVideo(): Promise<void>;
    pin(peerId: string): Promise<void>;
    disableAudio(peerId: string): Promise<void>;
    disableVideo(peerId: string): Promise<void>;
    kickAll(): Promise<void>;
    kick(peerId: string): Promise<void>;
    getPage(pageNum: string): Promise<void>;
    setRecordingStatus(status: boolean): Promise<void>;
    muteSelf(): Promise<void>;
    unmuteSelf(): Promise<void>;
    requestToJoinStage(requestToJoinType: string): Promise<void>;
    acceptAllRequestToJoinStage(peers: AcceptPeerMsgType[]): Promise<void>;
    removePeerFromStage(peerId: string, type: WebinarAcceptRequestType): Promise<void>;
    startPresenting(): Promise<void>;
    stopPresenting(): Promise<void>;
    updatePreset(peerId: string, presetName: string): Promise<void>;
}
export {};
