/**
 * 科大讯飞 TTS 语音合成模块
 * @description 基于 WebSocket 的流式语音合成，支持多种音色、语速调节、多种音频格式
 */
import { BaseWebSocketClient } from './base-websocket-client';
import type { TTSAudioFormat, TTSVoiceName, SynthesizerState, TTSError, TTSEventHandlers, XfyunTTSOptions } from './types';
export type { TTSAudioFormat, TTSVoiceName, SynthesizerState, TTSError, TTSEventHandlers, XfyunTTSOptions, };
/**
 * 科大讯飞语音合成类
 *
 * 继承 BaseWebSocketClient，复用 WebSocket 连接管理、状态管理、错误处理等通用逻辑。
 * 专注于语音合成特有的功能：文本转语音、音频流处理、缓存管理等。
 *
 * @example
 * ```typescript
 * const synthesizer = new XfyunTTS({
 *   appId: 'your-app-id',
 *   apiKey: 'your-api-key',
 *   apiSecret: 'your-api-secret'
 * }, {
 *   onAudioData: (buffer) => console.log('音频数据:', buffer),
 *   onEnd: () => console.log('合成完成')
 * });
 *
 * await synthesizer.speak('你好，这是语音合成测试');
 * await synthesizer.stop();
 * ```
 */
export declare class XfyunTTS extends BaseWebSocketClient<SynthesizerState, XfyunTTSOptions, TTSEventHandlers> {
    private audioChunks;
    private currentText;
    private textIndex;
    protected readonly STATE_TRANSITIONS: Record<SynthesizerState, SynthesizerState[]>;
    /**
     * 创建 TTS 合成器实例
     * @param options 配置选项
     * @param handlers 事件处理程序
     */
    constructor(options: XfyunTTSOptions, handlers?: TTSEventHandlers);
    protected getModulePrefix(): string;
    protected getErrorCodePrefix(): number;
    protected generateAuthUrl(): string;
    protected parseMessage(data: string | ArrayBuffer): void;
    /**
     * 开始语音合成
     * @param text 要合成的文本
     */
    start(text: string): void;
    /**
     * 停止合成
     */
    stop(): void;
    /**
     * 获取累积的音频数据
     */
    getAudioData(): ArrayBuffer | null;
    /**
     * Export audio blob
     * @returns Audio Blob object, or null if no audio data
     */
    exportAudio(): Blob | null;
    /**
     * Download audio file
     * @param filename - Name of the file to download
     */
    downloadAudio(filename?: string): void;
    /**
     * Get file extension based on audio format
     */
    private getFileExtension;
    /**
     * 获取 MIME 类型
     */
    getMimeType(): string;
    /**
     * 发送开始帧
     */
    private sendStartFrame;
}
