/**
 * AI 3D 生成结果
 */
export interface AI3DGenerateResult {
  taskId: string; // 外部任务ID
  status: 'pending' | 'processing' | 'completed' | 'failed';
  resultUrl?: string; // 3D模型URL（单个结果，兼容旧数据）
  previewUrl?: string; // 预览图URL（单个结果，兼容旧数据）
  resultUrls?: string[]; // 3D模型URL数组（多个结果，文生3D生成4个）
  previewUrls?: string[]; // 预览图URL数组（多个结果）
  errorMessage?: string; // 错误信息
}

/**
 * 多视图图片
 */
export interface MultiViewImage {
  viewType: string;  // left, right, back, top, bottom, left_front, right_front
  imageUrl: string;
}

/**
 * 模型生成配置选项
 */
export interface AI3DGenerateOptions {
  /** 模型生成类型：Normal-带纹理, LowPoly-低多边形, Geometry-白模, Sketch-草图 */
  generateType?: 'Normal' | 'LowPoly' | 'Geometry' | 'Sketch';
  /** 模型面数：10000-1500000，默认500000 */
  faceCount?: number;
  /** 多视图图片（图生3D支持） */
  multiViewImages?: MultiViewImage[];
}

/**
 * AI 3D 服务提供者接口
 * 支持 Mock、腾讯混元、Meshy 等实现
 */
export interface AI3DProvider {
  /**
   * 提交生成任务
   * @param inputType 输入类型：text | image
   * @param inputContent 输入内容：文字描述或图片URL
   * @param options 可选配置项（仅文生3D支持）
   * @returns 外部任务ID
   */
  submitTask(
    inputType: 'text' | 'image',
    inputContent: string,
    options?: AI3DGenerateOptions,
  ): Promise<string>;

  /**
   * 查询任务状态
   * @param taskId 外部任务ID
   * @returns 任务状态和结果
   */
  queryTask(taskId: string): Promise<AI3DGenerateResult>;
}

/**
 * AI 3D Provider 注入令牌
 */
export const AI3D_PROVIDER = 'AI3D_PROVIDER';
