/**
 * 非流式音频处理工具
 * 用于处理非流式接口返回的音频数据，支持多种数据格式和字段路径提取
 */
/**
 * 音频数据类型
 */
export type AudioDataType = 'base64' | 'blob' | 'arraybuffer' | 'file';
/**
 * 非流式音频处理选项
 */
export interface NonStreamAudioOptions {
    /**
     * 音频数据字段路径
     * 例如：'data.audio' 或 'audio' 或 'result.voice.content'
     * 支持嵌套路径，用点号分隔
     */
    audioField?: string;
    /**
     * 音频数据类型
     * - 'base64': Base64编码的字符串
     * - 'blob': Blob对象
     * - 'arraybuffer': ArrayBuffer对象
     * - 'file': File对象或服务端返回的文件响应
     * 如果不指定，会自动检测
     */
    dataType?: AudioDataType;
    /**
     * MIME类型
     * 默认为 'audio/mpeg'
     */
    mimeType?: string;
    /**
     * 是否自动播放
     * 默认为 false
     */
    autoPlay?: boolean;
    /**
     * 是否启用调试日志
     * 默认为 false
     */
    debug?: boolean;
    /**
     * 音频数据回调
     * 当成功提取并转换音频数据时触发
     */
    onAudioData?: (blob: Blob) => void;
    /**
     * 错误回调
     * 当处理过程中发生错误时触发
     */
    onError?: (error: Error) => void;
    /**
     * 完成回调
     * 当处理完成时触发（无论成功或失败）
     */
    onComplete?: (blob?: Blob) => void;
}
/**
 * 非流式音频处理结果
 */
export interface NonStreamAudioResult {
    /** 音频Blob对象 */
    blob: Blob;
    /** 音频URL（可用于audio标签的src） */
    url: string;
    /** 音频大小（字节） */
    size: number;
    /** 音频MIME类型 */
    mimeType: string;
    /** 播放控制（如果启用了自动播放） */
    audio?: HTMLAudioElement;
}
/**
 * 处理非流式音频响应
 *
 * @param response 响应数据，可以是：
 *   - 完整的响应对象（如 axios response）
 *   - 纯数据对象（如 { msg: "123", code: "asd", data: { audio: "base64..." } }）
 *   - 直接的音频数据（Base64字符串、Blob、ArrayBuffer等）
 * @param options 处理选项
 * @returns Promise<NonStreamAudioResult> 处理结果
 *
 * @example
 * ```typescript
 * // 示例1: 处理嵌套字段的Base64数据
 * const response = {
 *   msg: "success",
 *   code: 200,
 *   data: {
 *     audio: "UklGRiQAAABXQVZFZm10..." // Base64音频数据
 *   }
 * };
 *
 * const result = await processNonStreamAudio(response, {
 *   audioField: 'data.audio',
 *   dataType: 'base64',
 *   mimeType: 'audio/wav',
 *   autoPlay: true
 * });
 *
 * console.log('音频URL:', result.url);
 * console.log('音频大小:', result.size);
 *
 * // 示例2: 处理直接字段的Base64数据
 * const response2 = {
 *   msg: "success",
 *   audio: "UklGRiQAAABXQVZFZm10..." // Base64音频数据
 * };
 *
 * const result2 = await processNonStreamAudio(response2, {
 *   audioField: 'audio',
 *   autoPlay: true
 * });
 *
 * // 示例3: 处理ArrayBuffer响应
 * const response3 = await axios.get('/api/audio', {
 *   responseType: 'arraybuffer'
 * });
 *
 * const result3 = await processNonStreamAudio(response3.data, {
 *   dataType: 'arraybuffer',
 *   mimeType: 'audio/mp3'
 * });
 *
 * // 示例4: 处理Blob响应
 * const response4 = await fetch('/api/audio');
 * const blob = await response4.blob();
 *
 * const result4 = await processNonStreamAudio(blob, {
 *   dataType: 'blob'
 * });
 *
 * // 示例5: 自动检测数据类型
 * const result5 = await processNonStreamAudio(response, {
 *   audioField: 'data.audio',
 *   // 不指定dataType，会自动检测
 *   onAudioData: (blob) => {
 *     console.log('收到音频数据:', blob.size);
 *   },
 *   onComplete: (blob) => {
 *     console.log('处理完成');
 *   }
 * });
 * ```
 */
export declare function processNonStreamAudio(response: any, options?: NonStreamAudioOptions): Promise<NonStreamAudioResult>;
/**
 * 批量处理多个非流式音频响应
 *
 * @param responses 响应数据数组
 * @param options 处理选项
 * @returns Promise<NonStreamAudioResult[]> 处理结果数组
 *
 * @example
 * ```typescript
 * const responses = [
 *   { data: { audio: "base64data1..." } },
 *   { data: { audio: "base64data2..." } },
 *   { data: { audio: "base64data3..." } }
 * ];
 *
 * const results = await processBatchNonStreamAudio(responses, {
 *   audioField: 'data.audio',
 *   dataType: 'base64',
 *   mimeType: 'audio/wav'
 * });
 *
 * results.forEach((result, index) => {
 *   console.log(`音频${index + 1} URL:`, result.url);
 * });
 * ```
 */
export declare function processBatchNonStreamAudio(responses: any[], options?: NonStreamAudioOptions): Promise<NonStreamAudioResult[]>;
/**
 * 简化版的音频处理函数，直接返回Blob
 *
 * @param response 响应数据
 * @param audioField 音频字段路径（可选）
 * @param dataType 数据类型（可选，不指定则自动检测）
 * @returns Promise<Blob> 音频Blob对象
 *
 * @example
 * ```typescript
 * // 快速提取音频Blob
 * const blob = await getAudioBlob(response, 'data.audio', 'base64');
 *
 * // 使用Blob
 * const url = URL.createObjectURL(blob);
 * audioElement.src = url;
 * ```
 */
export declare function getAudioBlob(response: any, audioField?: string, dataType?: AudioDataType): Promise<Blob>;
/**
 * 创建音频URL（用于audio标签的src）
 *
 * @param response 响应数据
 * @param options 处理选项
 * @returns Promise<string> 音频URL
 *
 * @example
 * ```typescript
 * const url = await createAudioUrl(response, {
 *   audioField: 'data.audio',
 *   dataType: 'base64'
 * });
 *
 * audioElement.src = url;
 * ```
 */
export declare function createAudioUrl(response: any, options?: NonStreamAudioOptions): Promise<string>;
/**
 * 下载音频文件
 *
 * @param response 响应数据
 * @param filename 文件名
 * @param options 处理选项
 *
 * @example
 * ```typescript
 * await downloadAudio(response, 'audio.mp3', {
 *   audioField: 'data.audio',
 *   dataType: 'base64'
 * });
 * ```
 */
export declare function downloadAudio(response: any, filename: string, options?: NonStreamAudioOptions): Promise<void>;
/**
 * 导出所有函数
 */
declare const _default: {
    processNonStreamAudio: typeof processNonStreamAudio;
    processBatchNonStreamAudio: typeof processBatchNonStreamAudio;
    getAudioBlob: typeof getAudioBlob;
    createAudioUrl: typeof createAudioUrl;
    downloadAudio: typeof downloadAudio;
};
export default _default;
