export interface MicrophoneOption {
    value: string;
    label: string;
}
export interface MicrophoneInfo {
    channelCount: {
        min: number | undefined;
        max: number | undefined;
        value: number | undefined;
    };
    sampleRate: {
        min: number | undefined;
        max: number | undefined;
        value: number | undefined;
    };
    sampleSize: {
        min: number | undefined;
        max: number | undefined;
        value: number | undefined;
    };
    latency: {
        min: number | undefined;
        max: number | undefined;
    };
    autoGainControl: boolean | undefined;
    echoCancellation: boolean | undefined;
    noiseSuppression: boolean | undefined;
}
export default class Microphone {
    devices: MediaDeviceInfo[];
    selectedDevice?: MediaStream;
    selectedDeviceId?: string;
    stream: MediaStream | undefined;
    track: MediaStreamTrack | undefined;
    constructor();
    get isReady(): boolean;
    get currentTrack(): MediaStreamTrack | undefined;
    get currentMicrophone(): MicrophoneOption | undefined;
    get streamingStream(): MediaStream | undefined;
    get microphoneOptions(): MicrophoneOption[];
    get systemInputs(): MediaDeviceInfo[];
    get microphoneDetails(): MicrophoneInfo;
    init: () => Promise<boolean>;
    loadDefault: () => Promise<boolean>;
    loadSystemDevices: () => Promise<boolean>;
    setMediaStreamTrack: (stream: MediaStream | undefined) => boolean;
    onMicrophoneChange: (newValue: MicrophoneOption | null | undefined) => Promise<boolean>;
    setSelectedDevice: (device: MediaStream, deviceId: string) => void;
    startStream: () => Promise<boolean>;
    stopStreaming: () => void;
    pauseStreaming: () => void;
    resumeStreaming: () => void;
    resetMicData: () => void;
    printStreamInfo: () => void;
}
