import type { AudioCaptureModeOptions } from '@voxeet/voxeet-web-sdk/types/models/Audio';
import type { ConferencePermission } from '@voxeet/voxeet-web-sdk/types/models/Conference';
import type Conference from '@voxeet/voxeet-web-sdk/types/models/Conference';
import type ConferenceOptions from '@voxeet/voxeet-web-sdk/types/models/ConferenceOptions';
import type { MediaStreamWithType } from '@voxeet/voxeet-web-sdk/types/models/MediaStream';
import type { JoinOptions, ScreenshareOptions } from '@voxeet/voxeet-web-sdk/types/models/Options';
import type { Participant } from '@voxeet/voxeet-web-sdk/types/models/Participant';
import type { ParticipantQuality } from '@voxeet/voxeet-web-sdk/types/models/Simulcast';
import type { VideoForwardingOptions } from '@voxeet/voxeet-web-sdk/types/models/VideoForwarding';
export type HandledEventStatus = 'ended' | 'joined' | 'left' | 'error';
export default class ConferenceService {
    static create(options: ConferenceOptions): Promise<Conference>;
    static setPackageUrlPrefix(prefix?: string): void;
    static listeners(eventName: string): number;
    static listen(conference: Conference): Promise<Conference>;
    static current(): Conference | null;
    static participants(): Map<string, Participant>;
    static fetch(conferenceId: string): Promise<Conference>;
    static join(conference: Conference, options: JoinOptions): Promise<Conference>;
    static stopRemoteVideo(participant: Participant): Promise<void>;
    static startRemoteVideo(participant: Participant): Promise<void>;
    static startRemoteAudio(participant: Participant): Promise<void>;
    static stopRemoteAudio(participant: Participant): Promise<void>;
    static startLocalAudio(): Promise<MediaStreamTrack>;
    static stopLocalAudio(): Promise<void>;
    static muteOutput(isMuted: boolean): Promise<void>;
    static getCaptureMode(): Promise<AudioCaptureModeOptions>;
    static setCaptureMode(options: AudioCaptureModeOptions): Promise<void>;
    static startLocalVideo({ deviceId, constraints, isBlurred, }: {
        deviceId?: string;
        isBlurred?: boolean;
        constraints?: MediaTrackConstraints;
    }): Promise<MediaStreamTrack>;
    static stopLocalVideo(): Promise<void>;
    static onLocalVideoUpdated(handler: (track: MediaStreamTrack) => void): () => import("@voxeet/voxeet-web-sdk/types/models/LocalVideo").LocalVideo;
    static isSpeaking(participant: Participant, callback: (value: boolean) => void): any;
    static startScreenShare(screenshareOptions: ScreenshareOptions): Promise<void>;
    static stopScreenShare(): Promise<any>;
    static onParticipantsChange(handler: (data: Participant) => void): () => void;
    static onStreamsChange(handler: (data: Participant) => void): () => void;
    static onScreenShareChange(onStartHandler: (participant: Participant, stream: MediaStreamWithType) => void, onStopHandler: (participant: Participant, stream: MediaStreamWithType) => void): () => void;
    static onConferenceStatusChange(handler: (data: HandledEventStatus, info: any) => void): () => void;
    static onPermissionsChange(handler: (data: ConferencePermission[]) => void): () => void;
    static onConferenceError(handler: (error: Error) => void): () => void;
    static leave(): Promise<void>;
    static playBlockedAudio(): Promise<void>;
    static startBackgroundBlur(): Promise<void>;
    static stopVideoProcessing(): Promise<void>;
    static setVideoForwarding(options: VideoForwardingOptions): Promise<void>;
    static setQuality(quality: Array<ParticipantQuality>): Promise<any>;
}
