package com.yaoai.ai.providers.service;

import com.yaoai.ai.providers.model.VideoTaskResult;

import java.util.List;

public interface SeedanceService {

    /**
     * 提交图生视频任务（单图，兼容旧调用）
     *
     * @param imageUrl 输入图片 URL（TOS presigned URL 或公开 URL）
     * @param prompt   视频描述提示词（可为 null）
     * @return 外部任务 ID
     */
    default String submitVideoTask(String imageUrl, String prompt) {
        return submitVideoTask(List.of(imageUrl), prompt, 5, false, "16:9", null);
    }

    /**
     * 提交图生视频任务（多图 + 参数，model 由实现兜底）
     */
    default String submitVideoTask(List<String> imageUrls, String prompt,
                                   int durationSeconds, boolean generateAudio, String ratio) {
        return submitVideoTask(imageUrls, prompt, durationSeconds, generateAudio, ratio, null);
    }

    /**
     * 提交图生视频任务（多图 + 参数 + 显式模型）
     *
     * @param imageUrls       参考图 URL 列表，顺序对应 @图1、@图2...（至少 1 个）
     * @param prompt          视频描述提示词，可含 @图N 引用
     * @param durationSeconds 视频时长（秒）
     * @param generateAudio   是否生成配音
     * @param ratio           视频宽高比，如 "16:9" / "9:16" / "1:1"；空/非法值由实现兜底为 "16:9"
     * @param model           Seedance 模型 ID；空/null 时由实现回退到 ArkProperties.videoModel
     * @return 外部任务 ID
     */
    String submitVideoTask(List<String> imageUrls, String prompt,
                           int durationSeconds, boolean generateAudio, String ratio, String model);

    /**
     * 查询任务状态
     */
    VideoTaskResult getTaskStatus(String externalTaskId);

    /** 当前使用的 Seedance 模型 ID，用于计费明细 */
    String getModelId();

    /** 模型展示名 */
    String getModelName();

    /** Provider 标识 */
    default String getProvider() {
        return "volcengine";
    }
}
