import { ImageType } from '@/types/image'
import { Gender, GenderText } from '@/types/user'

/**
 * AiDictOut
 */
export interface AiDictOutResponse {
  /**
   * 性格字典
   */
  characterDictList?: DictOutput[]
  /**
   * 形象风格字典
   */
  imageStyleDictList?: ImageStyleDict[]
  /**
   * 角色字典
   */
  roleDictList?: DictOutput[]
  /**
   * 标签字典
   */
  tagDictList?: DictOutput[]
  /**
   * 所有音色列表
   */
  timbreDictList?: TimbreDict[]
}

/**
 * CreateEditAiUserInput
 */
export interface CreateOrEditAiRequest {
  /**
   * AI的id,编辑时才会传
   */
  aiId?: number
  /**
   * 对应Ai用户扩展表
   */
  aiUserExt?: AiUserExtInput
  /**
   * 出生日期
   */
  birthday: number
  /**
   * 性格code
   */
  characterCode: string
  /**
   * 头像
   */
  headImg: string
  /**
   * 形象图-高
   */
  imageHeight: string
  /**
   * 形象图
   */
  imageUrl: string
  /**
   * 形象图-宽
   */
  imageWidth: string
  /**
   * 简介
   */
  introduction: string
  /**
   * AI基础信息
   * 昵称
   */
  nickname: string
  /**
   * 权限 1: 公开 2：私密
   */
  permission: number
  /**
   * 角色code
   */
  roleCode: string
  /**
   * 0,男;1,女;2,自定义
   */
  sex: number
  /**
   * 标签code
   */
  tagCode: string
}

/**
 * GenAiUserContentInput
 */
export interface GenerateContentRequest {
  /**
   * ai形象描述信息（肤色、服饰、发型、五官、动作、背景等）
   */
  appearance?: string
  /**
   * 出生日期
   */
  birthday?: string
  /**
   * ai对话风格（角色的聊天方式、对话语气）
   */
  dialogue?: string
  /**
   * ai的人物基础信息（背景、性格、身份）
   */
  figure?: string
  /**
   * ai的个人简介
   */
  introduction?: string
  nickname?: string
  /**
   * ai开场白信息
   */
  prologue?: string
  /**
   * 提示词类型
   */
  ptType: PtType
  sex?: string | Gender
  characterCode?: string
  tagCode?: string
  content?: string
}

/**
 * 提示词类型
 */
export enum PtType {
  GenAIDialogStylePrologue = 'GEN_AI_DIALOG_STYLE_PROLOGUE',
  GenAIImageDesc = 'GEN_AI_IMAGE_DESC',
  GenAIProfilePt = 'GEN_AI_PROFILE_PT',
  GenAIProfileV1 = 'GEN_AI_PROFILE_V1',
  GenAIProfileV2 = 'GEN_AI_PROFILE_V2',
  GenAIProfileByNon = 'GEN_PROFILE_BY_NON',
  GenAIProfileByContent = 'GEN_PROFILE_BY_CONTENT',
  GenAIDialogStyleByNon = 'GEN_DIALOG_STYLE_BY_NON',
  GenAIDialogStyleByContent = 'GEN_DIALOG_STYLE_BY_CONTENT',
  GenAIPrologueByNon = 'GEN_PROLOGUE_BY_NON',
  GenAIPrologueByContent = 'GEN_PROLOGUE_BY_CONTENT',
  GenAIIntroduction = 'GEN_INTRODUCTION',
  GenAIImageDescByNon = 'GEN_AI_IMAGE_DESC_BY_NON',
  GenAIImageDescByContent = 'GEN_AI_IMAGE_DESC_BY_CONTENT',
  ExtractJsonContent = 'EXTRACT_JSON_CONTENT',
}

export enum AIPermission {
  Public = 1,
  Private = 2,
}

/**
 * GenAiUserContentOutput
 */
export interface GenAiUserContentOutput {
  content: string
}

/**
 * 对应Ai用户扩展表
 *
 * AiUserExtInput
 */
export interface AiUserExtInput {
  /**
   * 人物设定增强json
   */
  userProfileExtJson?: string
  /**
   * 对话开场白
   */
  dialoguePrologue: string
  /**
   * 对话风格
   */
  dialogueStyle: string
  /**
   * 对话音色Code
   */
  dialogueTimbreCode: string
  /**
   * 形象描述
   */
  imageDesc: string
  /**
   * 形象参考
   */
  imageReferenceUrl?: string
  /**
   * 形象风格code
   */
  imageStyleCode: string
  /**
   * 形象风格url
   */
  imageStyleUrl: string
  /**
   * 人物设定
   */
  profile: string
}

/**
 * AiUserInfoOutput
 */
export interface AiUserInfoOutput {
  /**
   * AI的id
   */
  aiId?: number
  /**
   * 对应Ai用户扩展表
   */
  aiUserExt?: AiUserExtOutput
  /**
   * 出生日期
   */
  birthday?: string
  /**
   * 性格
   */
  character?: string
  /**
   * 性格code
   */
  characterCode?: string
  /**
   * 头像
   */
  headImg?: string
  /**
   * 形象图
   */
  imageUrl?: string
  /**
   * 简介
   */
  introduction?: string
  /**
   * AI基础信息
   * 昵称
   */
  nickname?: string
  /**
   * 权限 1: 公开 2：私密
   */
  permission?: number
  /**
   * 角色
   */
  role?: string
  /**
   * 角色code
   */
  roleCode?: string
  /**
   * 0,男;1,女;2,自定义
   */
  sex: number
  /**
   * 标签
   */
  tag?: string
  /**
   * 标签code
   */
  tagCode?: string
}

/**
 * 对应Ai用户扩展表
 *
 * AiUserExtOutput
 */
export interface AiUserExtOutput {
  /**
   * 人物设定增强json
   */
  userProfileExtJson?: string
  /**
   * 人物设定
   */
  userDialogueStyle?: string
  /**
   * 对话开场白
   */
  dialoguePrologue?: string
  /**
   * 对话风格
   */
  dialogueStyle?: string
  /**
   * 对话音色code
   */
  dialogueTimbreCode?: string
  /**
   * 对话音色速度
   */
  dialogueSpeechRate?: number
  /**
   * 对话音色音调
   */
  dialoguePitch?: number
  /**
   * 形象描述
   */
  imageDesc?: string
  /**
   * 形象参考
   */
  imageReferenceUrl?: string
  /**
   * 形象风格code
   */
  imageStyleCode?: string
  /**
   * 形象风格code
   */
  imageStyleDict?: ImageStyleDict
  /**
   * 人物设定(增强内容)
   */
  profile?: string
  /**
   * 人物设定
   */
  userProfile?: string
  /**
   * 对话音色字典信息
   */
  timbreDict?: TimbreDict
}

/**
 * 形象风格code
 *
 * ImageStyleDict
 */
export interface ImageStyleDict {
  /**
   * 风格code
   */
  code?: string
  /**
   * 创建时间
   */
  createTime?: string
  /**
   * 主键ID
   */
  id?: number
  /**
   * 是否删除（1.是，0.否）
   */
  isDelete?: number
  /**
   * 风格名称
   */
  name?: string
  /**
   * 风格对应的图片prompt
   */
  prompt?: string
  /**
   * 排序
   */
  sort?: number
  /**
   * 风格对应的图片url
   */
  url?: string
}

/**
 * DictOutput
 */
export interface DictOutput {
  /**
   * 字典code
   */
  code?: string
  /**
   * 字典名称
   */
  name?: string
  /**
   * 字典子级
   */
  childDictList?: DictOutput[]
}

/**
 * ImageStyleDict
 */
export interface ImageStyleDict {
  /**
   * 风格code
   */
  code?: string
  /**
   * 创建时间
   */
  createTime?: string
  /**
   * 主键ID
   */
  id?: number
  /**
   * 是否删除（1.是，0.否）
   */
  isDelete?: number
  /**
   * 风格名称
   */
  name?: string
  /**
   * 风格对应的图片prompt
   */
  prompt?: string
  /**
   * 排序
   */
  sort?: number
  /**
   * 风格对应的图片url
   */
  url?: string
}

/**
 * 音色字典表
 *
 * TimbreDict
 */
export interface TimbreDict {
  /**
   * 音色code
   */
  code?: string
  /**
   * 创建时间
   */
  createTime?: string
  /**
   * 描述
   */
  description?: string
  /**
   * id
   */
  id?: number
  /**
   * 是否删除（1.是，0.否）
   */
  isDelete?: number
  /**
   * 支持的语种
   */
  language?: string
  /**
   * 音色名称
   */
  name?: string
  /**
   * 支持的情感
   */
  supportEmotions?: string
  /**
   * 1:男性，2:女性
   */
  type?: number
  /**
   * 音色地址
   */
  url?: string
  /**
   * 语音类型 第三方
   */
  voiceType?: string
  /**
   * voiceText
   */
  voiceText?: string
  /**
   * 音调
   */
  pitchRate?: number
  /**
   * 语速
   */
  speechRate?: number
}

/**
 * GenImageInput
 */
export interface GenerateImageRequest {
  aiId?: number
  /**
   * 形象描述内容
   */
  content?: string
  hl?: boolean
  /**
   * 形象参考图
   */
  imageReferenceUrl?: string
  /**
   * 形象风格提示词
   */
  imageStylePrompt?: string
  sex?: Gender
  birthday?: string
  type?: ImageType
  introduction?: string
}

/**
 * GenImageOutput
 */
export interface GenerateImageOutput {
  batchNo?: string
}

/**
 * GetGenImageInput
 */
export interface GetImageGenerateResultRequest {
  /**
   * 批次号
   */
  batchNo?: string
}

/**
 * GenImageListOutput
 */
export interface GenImageOutput {
  /**
   * 图片的URL
   */
  imageUrl?: string
  /**
   * 图片生成状态（PENDING 生成中、NSFW 黄图、COMPLETED 生成完成）
   */
  status?: ContentStatus
  /**
   * 图片宽度
   */
  width?: number
  /**
   * 图片高度
   */
  height?: number
}

export type GetImageGenerateResultResponse = GenImageOutput[]

/**
 * 图片生成状态（PENDING 生成中、NSFW 黄图、COMPLETED 生成完成）
 */
export enum ContentStatus {
  Completed = 'COMPLETED',
  Failed = 'FAILED',
  Nsfw = 'NSFW',
  Pending = 'PENDING',
}

/**
 * com.sonic.frog.domain.output.AiUserBaseListOutput
 *
 * AiUserBaseListOutput
 */
export interface AiUserBaseListOutput {
  /**
   * AI的id
   */
  aiId?: number
  /**
   * 出生日期
   */
  birthday?: string
  /**
   * 性格名称
   */
  characterName?: string
  /**
   * 头像
   */
  headImg?: string
  /**
   * 主页头图
   */
  homeImageUrl?: string
  /**
   * AI用户对外展示ID
   */
  idCard?: string
  /**
   * 简介
   */
  introduction?: string
  /**
   * 昵称
   */
  nickname?: string
  /**
   * 权限 1: 公开 2：私密
   */
  permission?: number
  /**
   * 角色名称
   */
  roleName?: string
  /**
   * 0,男;1,女;2,自定义
   */
  sex?: number
  /**
   * 标签名称
   */
  tagName?: string
  /**
   * 被喜欢数
   */
  likedNum?: number
}
