import { CoreInterop } from '../detail/coreInterop.js';
import { LiveAudioTranscriptionResponse } from './liveAudioTypes.js';
/**
 * Audio format settings for a streaming session.
 * Must be configured before calling start().
 * Settings are frozen once the session starts.
 */
export declare class LiveAudioTranscriptionOptions {
    /** PCM sample rate in Hz. Default: 16000. */
    sampleRate: number;
    /** Number of audio channels. Default: 1 (mono). */
    channels: number;
    /** Bits per sample. Default: 16. */
    bitsPerSample: number;
    /** Optional BCP-47 language hint (e.g., "en", "zh"). */
    language?: string;
    /** Maximum number of audio chunks buffered in the internal push queue. Default: 100. */
    pushQueueCapacity: number;
    /** @internal Create a frozen copy of these settings. */
    snapshot(): LiveAudioTranscriptionOptions;
}
/**
 * Client for real-time audio streaming ASR (Automatic Speech Recognition).
 * Audio data from a microphone (or other source) is pushed in as PCM chunks,
 * and transcription results are returned as an async iterable.
 *
 * Mirrors the C# LiveAudioTranscriptionSession.
 */
export declare class LiveAudioTranscriptionSession {
    private modelId;
    private coreInterop;
    private sessionHandle;
    private started;
    private stopped;
    private outputQueue;
    private pushQueue;
    private pushLoopPromise;
    private activeSettings;
    private sessionAbortController;
    private streamConsumed;
    /**
     * Configuration settings for the streaming session.
     * Must be configured before calling start(). Settings are snapshotted at start();
     * changes made after start() are ignored for the current session.
     */
    settings: LiveAudioTranscriptionOptions;
    /**
     * @internal
     * Users should create sessions via AudioClient.createLiveTranscriptionSession().
     */
    constructor(modelId: string, coreInterop: CoreInterop);
    /**
     * Start a real-time audio streaming session.
     * Must be called before append() or getStream().
     * Settings are frozen after this call.
     */
    start(): Promise<void>;
    /**
     * Push a chunk of raw PCM audio data to the streaming session.
     * Can be called from any context. Chunks are internally queued
     * and serialized to native core one at a time.
     *
     * @param pcmData - Raw PCM audio bytes matching the configured format.
     */
    append(pcmData: Uint8Array): Promise<void>;
    /**
     * Internal loop that drains the push queue and sends chunks to native core one at a time.
     * Terminates the session on any native error.
     * @internal
     */
    private pushLoop;
    /**
     * Get the async iterable of transcription results.
     * Results arrive as the native ASR engine processes audio data.
     *
     * Usage:
     * ```ts
     * for await (const result of session.getStream()) {
     *     console.log(result.content[0].text);
     * }
     * ```
     */
    getStream(): AsyncGenerator<LiveAudioTranscriptionResponse>;
    /**
     * Signal end-of-audio and stop the streaming session.
     * Any remaining buffered audio in the push queue will be drained to native core first.
     * Final results are delivered through getStream() before it completes.
     */
    stop(): Promise<void>;
    /**
     * Dispose the client and stop any active session.
     * Safe to call multiple times.
     */
    dispose(): Promise<void>;
}
