import { RefObject } from "react";
import { FirebaseWrapper } from "./firebaseLib";
import { Unsubscribe } from "firebase/firestore";
import { FirebaseOptions } from "firebase/app";
type OnUpdateStateCalBack = (state: RTCPeerConnectionState, event: Event) => void;
export interface Idevice {
    value: string;
    label: string;
    data: MediaDeviceInfo;
}
export declare class WebRTCManager {
    ref: string;
    fireBaseDb: FirebaseWrapper;
    peerConnection: RTCPeerConnection;
    localStream?: MediaStream;
    remoteStream?: MediaStream;
    onStateChange?: OnUpdateStateCalBack;
    localVidEle: RefObject<HTMLVideoElement>;
    remortVidEle: RefObject<HTMLVideoElement>;
    roomUnSub?: Unsubscribe;
    roomRole?: "owner" | "joiner";
    constructor(firebaseConfig: FirebaseOptions, localVidEle: RefObject<HTMLVideoElement>, remortVidEle: RefObject<HTMLVideoElement>, RTCConfiguration: RTCConfiguration);
    joinOrStartRoom(name: string): Promise<void>;
    onRemortTrack(event: RTCTrackEvent): void;
    getDevices(): Promise<{
        audioDevices: Idevice[];
        videoDevices: Idevice[];
    }>;
    selectDevice(camera: string | undefined, mic: string | undefined): Promise<void>;
    disconnectAll(): void;
    muteMic(isMiute: boolean): void;
}
export {};
