import { AbstractTTSClient } from "../core/abstract-tts";
import type { SpeakOptions, TTSCredentials, UnifiedVoice } from "../types";
export interface MurfTTSOptions extends SpeakOptions {
    model?: string;
    voice?: string;
    providerOptions?: Record<string, unknown>;
}
export interface MurfTTSCredentials extends TTSCredentials {
    apiKey?: string;
    baseURL?: string;
    model?: string;
    properties?: Record<string, unknown> | string;
    propertiesJson?: string;
}
export declare class MurfTTSClient extends AbstractTTSClient {
    private apiKey;
    private baseUrl;
    private model;
    static readonly VOICES: ({
        id: string;
        name: string;
        gender: "Female";
        language: string;
    } | {
        id: string;
        name: string;
        gender: "Male";
        language: string;
    })[];
    constructor(credentials?: MurfTTSCredentials);
    private applyCredentialProperties;
    private prepareText;
    setModel(model: string): void;
    setVoice(voiceId: string): void;
    getProperty(property: string): any;
    setProperty(property: string, value: any): void;
    checkCredentials(): Promise<boolean>;
    protected getRequiredCredentials(): string[];
    protected _getVoices(): Promise<any[]>;
    protected _mapVoicesToUnified(rawVoices: any[]): Promise<UnifiedVoice[]>;
    synthToBytes(text: string, options?: MurfTTSOptions): Promise<Uint8Array>;
    synthToBytestream(text: string, options?: MurfTTSOptions): Promise<{
        audioStream: ReadableStream<Uint8Array>;
        wordBoundaries: Array<{
            text: string;
            offset: number;
            duration: number;
        }>;
    }>;
}
