import { type SpeechState } from "./speech.js";
export interface LiveSocket {
    readonly readyState: number;
    /** Bytes queued to send; the phone's socket has it, ElevenLabs' need not. */
    readonly bufferedAmount?: number;
    send(data: string): void;
    close(code?: number, reason?: string): void;
    on(event: "message", listener: (data: Buffer, isBinary: boolean) => void): unknown;
    on(event: "open", listener: () => void): unknown;
    on(event: "close", listener: (code?: number, reason?: Buffer) => void): unknown;
    on(event: "error", listener: (error: Error) => void): unknown;
}
/** ElevenLabs' side: a socket that also reports a refused handshake with its
 * HTTP status and ElevenLabs' `detail.status`. */
export interface LiveUpstream extends LiveSocket {
    on(event: "message", listener: (data: Buffer, isBinary: boolean) => void): unknown;
    on(event: "open", listener: () => void): unknown;
    on(event: "close", listener: (code?: number, reason?: Buffer) => void): unknown;
    on(event: "error", listener: (error: Error) => void): unknown;
    on(event: "refused", listener: (status: number, code: string) => void): unknown;
}
export interface LiveSpeechOptions {
    key?: () => Promise<string | undefined>;
    connect?: (url: string, key: string) => LiveUpstream;
    /** Defaults to this computer's model and region settings. */
    model?: string;
    origin?: string;
    state?: SpeechState;
    maxSessionMs?: number;
    handshakeMs?: number;
    firstAudioMs?: number;
}
/** Text-to-dialogue serves v3 and v4; text-to-speech stream-input the rest. */
export declare function liveEndpoint(model: string): "dialogue" | "speech";
/** Markdown arriving a piece at a time, released a sentence or line at a time
 * as the words speakableText leaves of it. A code block is skipped until it
 * closes; the unfinished sentence waits for more text or `end`. */
export declare class SpeakableStream {
    private pending;
    private inFence;
    push(text: string): string;
    end(): string;
    private speak;
}
export declare function relayLiveSpeech(client: LiveSocket, query: URLSearchParams, options?: LiveSpeechOptions): Promise<void>;
