import { type PlayerCommand } from "./player.js";
/** Output gain applied while ducked (the user is speaking over the assistant). */
export declare const DUCK_GAIN = 0.25;
/** Injection seam for {@link streamingPlayerCommandsFor} — defaults to real PATH/tools lookups. */
export interface StreamingPlayerLookup {
    which?: (bin: string) => string | null;
    ffmpeg?: () => string | null;
}
/**
 * Ordered candidate commands for a persistent raw-PCM player on `platform`: each
 * reads 32-bit-float little-endian mono PCM at `sampleRate` from stdin (`pipe:0`)
 * and plays it to the default output device. An empty list means no streaming
 * backend is available and the caller should fall back to per-file playback.
 *
 * - darwin: `ffmpeg` (AudioToolbox output device) → sox's `play` (coreaudio).
 * - linux/other POSIX: `ffmpeg` (`-f pulse` then `-f alsa`) → `paplay`/`aplay`
 *   raw fallbacks.
 * - win32: none (PowerShell `SoundPlayer` is file-only).
 */
export declare function streamingPlayerCommandsFor(platform: NodeJS.Platform, sampleRate: number, lookup?: StreamingPlayerLookup): PlayerCommand[];
/**
 * Single-session gapless player. Lifecycle: {@link start} once, {@link write}
 * chunks in order, then {@link end} to drain or {@link stop} to abort. Not
 * reusable after stop/end — create a new instance per utterance.
 */
export declare class StreamingAudioPlayer {
    #private;
    /** Pick a backend and begin draining. Idempotent; the first call's rate wins. */
    start(sampleRate: number): void;
    /** Queue a mono float32 PCM chunk for playback in arrival order. */
    write(pcm: Float32Array): void;
    /** Scale subsequent output (1 = normal, <1 = ducked). Applies within {@link LEAD_SECONDS}. */
    setGain(gain: number): void;
    /** Close the input; resolves once all queued audio has finished playing. */
    end(): Promise<void>;
    /** Stop immediately: kill the player, drop everything still queued. */
    stop(): void;
}
/** Factory the vocalizer calls; a function so tests can stub it without spawning a player. */
export declare function createStreamingPlayer(): StreamingAudioPlayer;
