package org.dromara.talk.service;

import org.dromara.talk.domain.vo.TalkAgentVo;

import java.util.function.BiConsumer;

/**
 * TTS语音合成服务接口
 */
public interface ITtsService {

    /**
     * 合成语音
     *
     * @param text 要合成的文本
     * @param agentConfig 客服配置（包含TTS参数）
     * @param callback 音频回调接口
     */
    void synthesize(String text, TalkAgentVo agentConfig, AudioCallback callback);

    /**
     * 流式合成语音
     */
    void synthesizeStream(String text, TalkAgentVo agentConfig, BiConsumer<String, Integer> callback);

    /**
     * 音频回调接口
     */
    interface AudioCallback {
        /**
         * 接收音频数据
         *
         * @param base64Audio Base64编码的音频数据
         * @param status 状态（1=进行中，2=完成）
         */
        void onAudio(String base64Audio, int status);

        /**
         * 错误回调
         *
         * @param code 错误码
         * @param message 错误信息
         */
        void onError(int code, String message);
    }
}
