export declare enum MicState {
    Idle = 0,
    Initializing = 1,
    Recording = 2
}
export declare enum MicEvents {
    StateChanged = "stateChanged",
    Data = "data",
    Level = "level",
    Finished = "finished",
    Abort = "abort",
    Error = "error"
}
type MicEventMap = {
    [MicEvents.StateChanged]: (payload: {
        state: MicState;
    }) => void;
    [MicEvents.Data]: (data: Blob) => void;
    [MicEvents.Level]: (levels: number[]) => void;
    [MicEvents.Finished]: (data: Blob) => void;
    [MicEvents.Abort]: () => void;
    [MicEvents.Error]: (error: Error) => void;
};
export declare class MicStateManager {
    private recorder;
    private state;
    private chunks;
    private stream;
    private listeners;
    private initialized;
    on<K extends MicEvents>(event: K, handler: MicEventMap[K]): () => void;
    private emit;
    init(): void;
    start(): Promise<void>;
    stop(): void;
    abort(): void;
    dispose(): void;
    private reset;
    private pauseStream;
    private releaseStream;
    private setState;
}
export {};
