import { APIClient, ResponseCallback, CloseCallback } from './types';
import { AudioProcessorParameters, ContextOptions, StreamOptions, VadOptions } from '../client';
/**
 * Controller to communicate with the web worker
 * @internal
 */
export declare class WebWorkerController implements APIClient {
    private readonly worker;
    private onInitResolve?;
    private onInitReject?;
    private resolveSourceSampleRateSet?;
    private startCbs;
    private stopCbs;
    private onResponseCb;
    private onCloseCb;
    onResponse(cb: ResponseCallback): void;
    onClose(cb: CloseCallback): void;
    constructor();
    initialize(apiUrl: string, authToken: string, targetSampleRate: number, debug: boolean): Promise<void>;
    initAudioProcessor(sourceSampleRate: number, frameMillis: number, historyFrames: number, vadOptions?: VadOptions): Promise<void>;
    /**
     * Control audio processor parameters
     * @param ap - Audio processor parameters to adjust
     */
    adjustAudioProcessor(ap: AudioProcessorParameters): void;
    close(): Promise<void>;
    startStream(streamOptions: StreamOptions): Promise<void>;
    stopStream(): Promise<void>;
    startContext(options?: ContextOptions): Promise<string>;
    stopContext(): Promise<string>;
    switchContext(options: ContextOptions): Promise<string>;
    postMessage(message: Object): void;
    sendAudio(audioChunk: Float32Array): void;
    setContextOptions(options: ContextOptions): Promise<void>;
    private readonly onWebsocketMessage;
}
