import type { TtsProvider, TtsRequest, TtsResult } from "./types.js";
/**
 * Gemini's prebuilt voice names. Source: Google AI for Developers — Text-to-
 * speech generation (TTS) voice options
 * (https://ai.google.dev/gemini-api/docs/speech-generation). The full set is 30
 * voices; we surface a small gender-leaning subset that covers our edge→Gemini
 * mapping. Zephyr (bright/female-leaning), Kore (firm/female-leaning), Aoede
 * (breezy/female-leaning); Puck (upbeat/male-leaning), Charon (informative/
 * male-leaning), Fenrir (excitable/male-leaning).
 */
declare const GEMINI_VOICES: readonly ["Zephyr", "Puck", "Charon", "Kore", "Fenrir", "Aoede"];
type GeminiVoice = (typeof GEMINI_VOICES)[number];
/**
 * Maps a requested voice id to one of Gemini's prebuilt voices.
 *
 *   - Already a Gemini voice (Zephyr/Puck/Charon/Kore/Fenrir/Aoede) → as-is.
 *   - Known female edge voices (contain "Xiaoxiao" or "Aria") → "Kore".
 *   - Known male edge voices (contain "Yunjian" or "Guy") → "Charon".
 *   - Anything else → DEFAULT_GEMINI_VOICE.
 *
 * Mirrors the shape of edge-tts's catalog and the retired openai mapping: it
 * keys off the same edge-voice substrings ("Xiaoxiao"/"Aria"/"Yunjian"/"Guy")
 * so a caller that worked against the old fallback maps cleanly here too.
 */
export declare function mapVoiceToGemini(voice: string): GeminiVoice;
/**
 * Testable core: POSTs to OpenRouter's /v1/audio/speech (response_format:"pcm",
 * the only format Gemini TTS supports), transcodes the raw PCM to an mp3 at
 * req.outputPath via ffmpeg, then ffprobes the duration. fetch + env are
 * injectable so tests never hit the network; the ffmpeg/ffprobe spawns are
 * mockable via node:child_process.
 */
export declare function synthesizeGeminiTts(req: TtsRequest, deps?: {
    fetch?: typeof globalThis.fetch;
    env?: NodeJS.ProcessEnv;
}): Promise<TtsResult>;
export declare const geminiTtsProvider: TtsProvider;
export {};
//# sourceMappingURL=gemini-tts.d.ts.map