import { VoiceProviderRegistry } from './provider-registry.js'; import type { VoiceDescriptor, VoiceRealtimeSession, VoiceRealtimeSessionRequest, VoiceSynthesisRequest, VoiceSynthesisResult, VoiceSynthesisStreamResult, VoiceTranscriptionRequest, VoiceTranscriptionResult } from './types.js'; export interface VoiceServiceStatus { readonly enabled: boolean; readonly providerCount: number; readonly providers: Awaited>; readonly note: string; } /** One billable voice call (metered providers only; local emits nothing). */ export interface VoiceBillableUsage { readonly providerId: string; readonly modelId: string | undefined; readonly kind: 'tts' | 'stt'; /** The provider's billable unit count: characters submitted for TTS, seconds of audio for STT. */ readonly billableUnits: number; readonly unit: 'characters' | 'seconds'; } export declare class VoiceService { private readonly registry; /** Cost-attribution sink for METERED providers (wired by the runtime root). */ private readonly onBillableUsage?; constructor(registry: VoiceProviderRegistry, /** Cost-attribution sink for METERED providers (wired by the runtime root). */ onBillableUsage?: ((usage: VoiceBillableUsage) => void) | undefined); /** Record a metered call; a provider with billing 'none' emits nothing (honest no-dimension). */ private recordUsage; getStatus(enabled: boolean): Promise; listVoices(providerId?: string): Promise; synthesize(providerId: string | undefined, request: VoiceSynthesisRequest): Promise; synthesizeStream(providerId: string | undefined, request: VoiceSynthesisRequest): Promise; transcribe(providerId: string | undefined, request: VoiceTranscriptionRequest): Promise; openRealtimeSession(providerId: string | undefined, request: VoiceRealtimeSessionRequest): Promise; } //# sourceMappingURL=service.d.ts.map