/** * @module infra/audio-player * * Cross-platform local audio playback — the Windows/Linux counterpart of * macOS `afplay`. One resolver feeds every audible feature: spoken replies * (tui-speak), the reply ping and composed chimes (infra/sound), and any * future file playback. Returns a killable ChildProcess so barge-in and * stopSpeaking semantics carry over unchanged. * * Resolution per platform: * darwin: afplay (native, always present) * win32: ffplay when available (ships with the ffmpeg the voice listener * already requires) → PowerShell PresentationCore MediaPlayer * (dependency-free; handles mp3 + wav) * linux: ffplay → mpv → mpg123 (first available) */ import { type ChildProcess } from "node:child_process"; /** * Play an audio file (mp3/wav/aiff per platform player). Fire-and-forget by * default; `onExit` fires when playback ends or fails. Returns the process * (kill() stops playback) or null when no player exists on this system. */ export declare function playAudioFile(file: string, opts?: { volume?: number; rate?: number; onExit?: () => void; }): ChildProcess | null;