package com.sonic.cow.service;


import com.sonic.cow.client.rtc.Event;
import com.sonic.cow.event.inner.payload.EmotionScorePayload;
import com.sonic.cow.event.outer.payload.CalcHeartbeatLevelPayload;
import com.sonic.cow.event.outer.payload.UserDeductionStatPayload;

/**
 * @description: 发送消息到im的mq
 * @author: mzc
 * @create: 2025/07/15
 **/
public interface CommonSendMqService {

    /**
     * AI生成图片发送MQ-文生图
     *
     * @param batchNo
     * @param taskId
     * @param prompt
     */
    void aiTextGenImageSendMq(String batchNo, String taskId, String prompt, String imageUrl);

    /**
     * AI生成图片发送MQ-图生图
     *
     * @param batchNo
     * @param taskId
     * @param prompt
     */
    void aiImageGenImageSendMq(String batchNo, String taskId, String prompt, String imageUrl);

    /**
     * 计算心动等级发送mq
     *
     * @param payload
     */
    void calHeartbeatLevelSendMq(CalcHeartbeatLevelPayload payload);

    /**
     * 情绪打分发送mq
     *
     * @param payload
     */
    void emotionScoreSendMq(EmotionScorePayload payload);

    /**
     * 用户文本，语音，语音通话预扣款统计mq
     *
     * @param payload
     */
    void userDeductionStatSendMq(UserDeductionStatPayload payload);

    /**
     * 语音通话预扣费发送mq 1分钟后执行
     *
     * @param userId
     * @param aiId
     * @param voiceCallId 语音通话id  voice_chat_record表主键id
     */
    void voiceCallDeductionSendDeadMq(Long userId, Long aiId, Long voiceCallId);

    /**
     * 语音通话预扣费发送mq 立即执行
     *
     * @param userId
     * @param aiId
     * @param voiceCallId 语音通话id  voice_chat_record表主键id
     */
    void voiceCallDeductionSendMq(Long userId, Long aiId, Long voiceCallId);

    /**
     * 语音通话回调事件mq
     *
     * @param event
     */
    void voiceCallWebhookSendMq(Event event);

    /**
     * 用户余额不足，发起扣款mq
     *
     * @param userId
     */
    void userBalanceInsufficientCheckoutMq(Long userId);
}
