import { AudioSourceState } from './types';
/**
 * Gets browser based microphone using the window.navigator.mediaDevices interface.
 * The exposed `mediaStream` can be attached to a `BrowserClient` instance.
 * @public
 */
export declare class BrowserMicrophone {
    private muted;
    private initialized;
    private state;
    private readonly nativeResamplingSupported;
    private readonly autoGainControlSupported;
    private readonly debug;
    mediaStream?: MediaStream;
    stateChangeCbs: Array<(state: AudioSourceState) => void>;
    constructor();
    /**
     * Adds a listener for the state changes of the client.
     * @param cb - the callback to invoke on a client state change.
     */
    onStateChange(cb: (state: AudioSourceState) => void): void;
    /**
     * Initializes the microphone. Needs to happen after a user interaction in the view.
     * The reason for that is that it's required for user to first interact with the page,
     * before it can capture or play audio and video, for privacy and user experience reasons.
     */
    initialize(): Promise<void>;
    setState(newState: AudioSourceState): void;
    /**
     * Closes the microphone, releases all resources and stops the Speechly client.
     */
    close(): Promise<void>;
    /**
     * @returns true if microphone is open
     */
    isRecording(): boolean;
}
