/**
 * Provides volume and pitch data from the user's microphone using getUserMedia.
 * Intended to be used as a singleton
 */
export declare class Microphone {
    ready?: Promise<void>;
    started: boolean;
    private stream;
    private ctx;
    private analyser?;
    private source?;
    private soundData?;
    private pitchData?;
    private _lastVolumeUpdate?;
    private _lastPitchUpdate?;
    _volume: number;
    _low: number;
    _pitch: number;
    constructor(ctx: AudioContext);
    start(): Promise<void> | undefined;
    stop(): void;
    _onStreamReady(stream: MediaStream): void;
    _updateVolumeData(): void;
    _updatePitchData(): void;
    _getSoundStats(array: Uint8Array): {
        volume: number;
        low: number;
    };
    _correlatePitch(buf: Float32Array, sampleRate: number): number;
    _updateVolumeDataIfNeeded(): void;
    _updatePitchDataIfNeeded(): void;
    /**
     * Return the volume data from the microphone ( between 0 and 100 ) Updates if the data is stale
     */
    readonly volume: number;
    /**
     * Return the pitch data from the microphone ( between 0 and 100 ) Updates if the data is stale
     */
    readonly pitch: number;
}
