import { BaseVideoCallHandler } from "./BaseVideoCallHandler";
import { WebSocketMessageBody } from "../websocket-handler/WebsocketHandler";
import { Track } from "../model/Track";
import { Consumer } from "mediasoup-client/lib/Consumer";
import { MeetingStartRequest } from '..';
import { CommunicationHandler } from '../inter-communication-handler/CommunicationHandler';
export declare class SFUHandler extends BaseVideoCallHandler {
    private device?;
    private transportCallBacks;
    private routerRtpCapabilities?;
    private sendTransport?;
    private consumerTransport?;
    private isProduceTrackIntialWorkDone;
    private producers;
    private consumers;
    private dataProducers;
    private dataConsumer;
    constructor(_meetingStartRequest: MeetingStartRequest, _communicationHandler: CommunicationHandler);
    reconnectedWithoutPing(): void;
    onReconnect(): Promise<void>;
    private onRestartIceCandidateResponse;
    stopTrack(track: Track): void;
    pauseTrack(track: Track): void;
    getConsumerForTrack(track: Track): Consumer<import("mediasoup-client/lib/types").AppData> | undefined;
    resumeProducerOrConsumerForTrack(track: Track): Promise<void>;
    pauseProducerOrConsumerForTrack(track: Track): Promise<void>;
    resumeTrack(track: Track): void;
    pauseIncomingTrack(track: Track): void;
    resumeIncomingTrack(track: Track): void;
    updateSpatialForTrack(track: Track, spatialLayerIndex: number): Promise<void>;
    sendTrack(track: Track): Promise<void>;
    createDataChannel(): Promise<void>;
    onParticipantUpdated(): void;
    sendMessageViaDataChannel(messagePayload: any): void;
    init(): Promise<void>;
    private onTransportNotFound;
    restartTransport(): void;
    private addObserverForDevice;
    private onAllProducers;
    private onRouterRtpCapabilities;
    private onTransportConnectDone;
    private onSendTransport;
    private onConsumeTransportCreated;
    private produceTracks;
    private onProduceSyncDone;
    private sendMessageReadyToConsume;
    private sendSFUMessageToSocket;
    onSocketMessage(websocketCallHandler: WebSocketMessageBody): void;
    private onConsumerNotFound;
    private onProducerNotFound;
    private onTrackEnded;
    private onNewProducer;
    private onServerConsumer;
    private onAudioVolumeChanged;
    private onSpeakerChanged;
    cleanup(shouldStopTracks?: boolean): void;
}
