import { type Corti, type CortiAuth } from "@corti/sdk";
import type { ReactiveController, ReactiveControllerHost } from "lit";
import type { ProxyOptions } from "../types.js";
interface DictationControllerHost extends ReactiveControllerHost {
    dispatchEvent: (event: Event) => void;
    _accessToken?: string;
    _authConfig?: CortiAuth.AuthTokenDerivable;
    _region?: string;
    _tenantName?: string;
    _socketUrl?: string;
    _socketProxy?: ProxyOptions;
    _dictationConfig?: Corti.TranscribeConfig;
}
export type TranscribeMessage = Corti.TranscribeConfigStatusMessage | Corti.TranscribeUsageMessage | Corti.TranscribeDeltaUsageMessage | Corti.TranscribeEndedMessage | Corti.TranscribeErrorMessage | Corti.TranscribeTranscriptMessage | Corti.TranscribeCommandMessage | Corti.TranscribeFlushedMessage;
interface WebSocketCallbacks {
    onMessage?: (message: TranscribeMessage) => void;
    onError?: (error: Error) => void;
    onClose?: (event: unknown) => void;
    onNetworkActivity?: (direction: "sent" | "received", data: unknown) => void;
}
export declare class DictationController implements ReactiveController {
    #private;
    host: DictationControllerHost;
    constructor(host: DictationControllerHost);
    hostDisconnected(): void;
    connect(dictationConfig?: Corti.TranscribeConfig, callbacks?: WebSocketCallbacks): Promise<boolean | "superseded">;
    mediaRecorderHandler: (data: Blob) => void;
    pause(): Promise<void>;
    isConnectionOpen(): boolean;
    isConnecting(): boolean;
    waitForConnection(): Promise<void>;
    closeConnection(onClose?: (event: unknown) => void): Promise<void>;
    cleanup(): void;
}
export {};
