import IChatToken from "../external/IC3Adapter/IChatToken";
import ScenarioMarker from "../telemetry/ScenarioMarker";
interface IVoiceVideoCallingParams {
    environment?: string;
    logger?: any;
    chatToken: IChatToken;
    OCClient: any;
    selfVideoHTMLElementId: string;
    remoteVideoHTMLElementId: string;
}
interface IAcceptCallConfig {
    withVideo?: boolean;
}
export declare class VoiceVideoCallingProxy {
    private static _instance;
    private debug;
    private callClientName;
    private logger;
    private proxy;
    private proxyInstance;
    private callingParams?;
    private callId?;
    private scenarioMarker?;
    private constructor();
    static getInstance(): VoiceVideoCallingProxy;
    setDebug(flag: boolean): void;
    useScenarioMarker(scenarioMarker: ScenarioMarker): void;
    load(params?: any): Promise<void>;
    isInitialized(): boolean;
    initialize(params: IVoiceVideoCallingParams): Promise<void>;
    addEventListener(eventName: string, callback: Function): void;
    isMicrophoneMuted(): boolean;
    acceptCall(params?: IAcceptCallConfig): Promise<void>;
    rejectCall(): Promise<void>;
    stopCall(): Promise<void>;
    toggleMute(): Promise<void>;
    isRemoteVideoEnabled(): boolean;
    isLocalVideoEnabled(): boolean;
    toggleLocalVideo(): Promise<void>;
    isInACall(): boolean;
    renderVideoStreams(): void;
    disposeVideoRenderers(): void;
    close(): void;
    onCallAdded(callback: Function): void;
    onLocalVideoStreamAdded(callback: Function): void;
    onLocalVideoStreamRemoved(callback: Function): void;
    onRemoteVideoStreamAdded(callback: Function): void;
    onRemoteVideoStreamRemoved(callback: Function): void;
    onCallDisconnected(callback: Function): void;
    private clearRemoteVideoElementChildren;
}
declare const createVoiceVideoCalling: (params?: any) => Promise<VoiceVideoCallingProxy>;
export default createVoiceVideoCalling;
