import type { TalkProviderConfig } from "../config/types.gateway.js"; import type { OpenClawConfig } from "../config/types.js"; import type { ResolvedTtsPersona } from "../config/types.tts.js"; export type SpeechProviderId = string; export type SpeechSynthesisTarget = "audio-file" | "voice-note" | "telephony"; export type SpeechProviderConfig = Record; export type SpeechProviderOverrides = Record; export type SpeechModelOverridePolicy = { enabled: boolean; allowText: boolean; allowProvider: boolean; allowVoice: boolean; allowModelId: boolean; allowVoiceSettings: boolean; allowNormalization: boolean; allowSeed: boolean; }; export type TtsDirectiveOverrides = { ttsText?: string; provider?: SpeechProviderId; providerOverrides?: Record; }; export type TtsDirectiveParseResult = { cleanedText: string; ttsText?: string; hasDirective: boolean; overrides: TtsDirectiveOverrides; warnings: string[]; }; export type SpeechProviderConfiguredContext = { cfg?: OpenClawConfig; providerConfig: SpeechProviderConfig; timeoutMs: number; }; export type SpeechSynthesisRequest = { text: string; cfg: OpenClawConfig; providerConfig: SpeechProviderConfig; target: SpeechSynthesisTarget; providerOverrides?: SpeechProviderOverrides; timeoutMs: number; }; export type SpeechSynthesisResult = { audioBuffer: Buffer; outputFormat: string; fileExtension: string; voiceCompatible: boolean; }; export type SpeechTelephonySynthesisRequest = { text: string; cfg: OpenClawConfig; providerConfig: SpeechProviderConfig; providerOverrides?: SpeechProviderOverrides; timeoutMs: number; }; export type SpeechTelephonySynthesisResult = { audioBuffer: Buffer; outputFormat: string; sampleRate: number; }; export type SpeechProviderPrepareSynthesisContext = { text: string; cfg: OpenClawConfig; providerConfig: SpeechProviderConfig; providerOverrides?: SpeechProviderOverrides; persona?: ResolvedTtsPersona; personaProviderConfig?: SpeechProviderConfig; target: SpeechSynthesisTarget; timeoutMs: number; }; export type SpeechProviderPreparedSynthesis = { text?: string; providerConfig?: SpeechProviderConfig; providerOverrides?: SpeechProviderOverrides; }; export type SpeechVoiceOption = { id: string; name?: string; category?: string; description?: string; locale?: string; gender?: string; personalities?: string[]; }; export type SpeechListVoicesRequest = { cfg?: OpenClawConfig; providerConfig?: SpeechProviderConfig; apiKey?: string; baseUrl?: string; }; export type SpeechProviderResolveConfigContext = { cfg: OpenClawConfig; rawConfig: Record; timeoutMs: number; }; export type SpeechDirectiveTokenParseContext = { key: string; value: string; policy: SpeechModelOverridePolicy; selectedProvider?: SpeechProviderId; providerConfig?: SpeechProviderConfig; currentOverrides?: SpeechProviderOverrides; }; export type SpeechDirectiveTokenParseResult = { handled: boolean; overrides?: SpeechProviderOverrides; warnings?: string[]; }; export type SpeechProviderResolveTalkConfigContext = { cfg: OpenClawConfig; baseTtsConfig: Record; talkProviderConfig: TalkProviderConfig; timeoutMs: number; }; export type SpeechProviderResolveTalkOverridesContext = { talkProviderConfig: TalkProviderConfig; params: Record; };