export interface RecordingHandle {
    stop(): Promise<void>;
}
/**
 * Returns available recording tools in priority order.
 */
export declare function detectRecordingTools(): string[];
export interface ResolvedRecorder {
    tool: "sox" | "ffmpeg" | "arecord" | "powershell";
    bin: string;
}
export declare function detectRecorder(): ResolvedRecorder | null;
/**
 * Ensure a recorder is available, downloading the static ffmpeg binary when
 * nothing is already present. Returns the resolved recorder.
 */
export declare function ensureRecorder(onProgress?: (p: {
    stage: string;
    percent?: number;
}) => void, signal?: AbortSignal): Promise<ResolvedRecorder>;
export declare function startRecording(outputPath: string): Promise<RecordingHandle>;
/**
 * Verify a recorded audio file is usable.
 * Returns the file size in bytes, or throws.
 */
export declare function verifyRecordingFile(filePath: string): Promise<number>;
export interface StreamingRecordingHandle {
    stop(): Promise<void>;
}
export declare function startStreamingRecording(onAudio: (samples: Float32Array) => void): Promise<StreamingRecordingHandle | null>;
