import { MastraVoice } from '@mastra/core/voice';
import type { SarvamTTSLanguage, SarvamSTTLanguage, SarvamSTTModel, SarvamTTSModel, SarvamVoiceId, SarvamSTTMode } from './voices.js';
interface SarvamVoiceConfig {
    apiKey?: string;
    model?: SarvamTTSModel;
    language?: SarvamTTSLanguage;
    properties?: {
        /** Controls the speed of the audio. Supported by bulbul:v2 (0.3–3.0) and bulbul:v3 (0.5–2.0). */
        pace?: number;
        /** Sampling temperature. bulbul:v3 only. Range: 0.01–2.0. Default: 0.6. */
        temperature?: number;
        /** Pronunciation dictionary ID. bulbul:v3 only. */
        dict_id?: string;
        /** Controls the pitch of the audio. bulbul:v2 only. Range: -0.75–0.75. */
        pitch?: number;
        /** Controls the loudness of the audio. bulbul:v2 only. Range: 0.3–3.0. */
        loudness?: number;
        /** Enables normalization of English words and numeric entities. bulbul:v2 only. */
        enable_preprocessing?: boolean;
        /** Audio sample rate in Hz. */
        speech_sample_rate?: 8000 | 16000 | 22050 | 24000 | 32000 | 44100 | 48000;
        /** Output audio codec. */
        output_audio_codec?: 'mp3' | 'wav' | 'linear16' | 'mulaw' | 'alaw' | 'opus' | 'flac' | 'aac';
    };
}
interface SarvamListenOptions {
    apiKey?: string;
    model?: SarvamSTTModel;
    languageCode?: SarvamSTTLanguage;
    filetype?: 'mp3' | 'wav';
    /** Operation mode for saaras:v3. Ignored by other models. */
    mode?: SarvamSTTMode;
}
export declare class SarvamVoice extends MastraVoice {
    private apiKey?;
    private model;
    private language;
    private properties;
    speaker: SarvamVoiceId;
    private baseUrl;
    constructor({ speechModel, speaker, listeningModel, }?: {
        speechModel?: SarvamVoiceConfig;
        speaker?: SarvamVoiceId;
        listeningModel?: SarvamListenOptions;
    });
    private makeRequest;
    private streamToString;
    speak(input: string | NodeJS.ReadableStream, options?: {
        speaker?: SarvamVoiceId;
    }): Promise<NodeJS.ReadableStream>;
    getSpeakers(): Promise<{
        voiceId: "shubh" | "aditya" | "ritu" | "priya" | "neha" | "rahul" | "pooja" | "rohan" | "simran" | "kavya" | "amit" | "dev" | "ishita" | "shreya" | "ratan" | "varun" | "manan" | "sumit" | "roopa" | "kabir" | "aayan" | "ashutosh" | "advait" | "amelia" | "sophia" | "anand" | "tanya" | "tarun" | "sunny" | "mani" | "gokul" | "vijay" | "shruti" | "suhani" | "mohit" | "kavitha" | "rehan" | "soham" | "rupali" | "anushka" | "manisha" | "vidya" | "arya" | "abhilash" | "karun" | "hitesh";
    }[]>;
    /**
     * Checks if listening capabilities are enabled.
     *
     * @returns {Promise<{ enabled: boolean }>}
     */
    getListener(): Promise<{
        enabled: boolean;
    }>;
    listen(input: NodeJS.ReadableStream, options?: SarvamListenOptions): Promise<string>;
}
export {};
//# sourceMappingURL=index.d.ts.map