export enum EGender {
  MALE = 'male',
  FEMALE = 'femail'
}






export interface IPageParams {
  /**
   * Page number
   */
  page?: number;
  /**
   * Page size
   */
  pageSize?: number;
  [property: string]: any;
}


export interface ICharacter {
    /**
     * Avatar 头像
     */
    avatar?: string;
    /**
     * Badges 徽章
     */
    badges?: string[];
    /**
     * BanQuestions 禁用问题
     */
    banQuestions?: string[];
    /**
     * BanWords 禁用词
     */
    banWords?: string[];
    /**
     * BgColor 背景颜色
     */
    bgColor?: string;
    /**
     * BgImg 背景图片
     */
    bgImg?: string;
    /**
     * 公司
     */
    company?: string;
    createdAt?: string;
    /**
     * DefaultSystemVoice 默认系统音色
     */
    defaultSystemVoice?: string;
    /**
     * 部门
     */
    department?: string;
    /**
     * Gender cons.GenderOther
     */
    gender?: number;
    /**
     * Greeting 初始问候语
     */
    greeting?: string;
    /**
     * GreetingAudioUrl 初始问候语音频地址, 在第一次调用之后才会有值
     */
    greetingAudioUrl?: string;
    /**
     * 职位
     */
    job?: string;
    /**
     * Language 语言
     */
    language?: string;
    /**
     * Name 名称
     */
    name?: string;
    /**
     * Personality 任务设定
     */
    personality?: string;
    /**
     * ProfileId 用户Profile ID
     */
    profileId: string;
    /**
     * Style 风格
     */
    style?: string;
    /**
     * Voice 音色 ID
     */
    voice?: string;
    /**
     * VoicePlatform 音色平台
     */
    voicePlatform?: string;
    [property: string]: any;
    customStyled?: string; // 自定义样式，css 变量
    customBgImg?: string; // 自定义背景
    session?: string; // 角色聊天对话所需要的 session
}


/**
* model.UserProfile
*/
export interface IUserProfile {
  /**
   * Character 用户AI角色
   */
  character?: ICharacter;
  /**
   * Components 用户组件
   */
  components?: TEntityComponent[];
  /**
   * User 用户信息
   */
  user?: { [key: string]: any };
  [property: string]: any;
}

/**
* entity.Component
*/
export type TEntityComponent = {
  characterProfileId?: string;
  data?: { [key: string]: any };
  enabled?: boolean;
  id?: number;
  index?: number;
  name?: string;
  type?: string;
  userId?: number;
  // [property: string]: any;
}


export type TCompoentnType = 'title' | 'textarea' | 'image' | 'tel' | 'address' | 'location'
export enum EComponentType {
  title = 'title',
  textarea = 'textarea',
  image = 'image',
  tel = 'tel',
  address = 'address',
  location = 'location',
}


/**
* 联系人
*/
export interface IContactModel {
   /**
    * Alias 别名, 用户没有设置的情况下等于名称
    */
   alias?: string;
   avatar?: string;
   badges?: string[];
   /**
    * 公司
    */
   company?: string;
   contactProfileId: string;
   createdAt?: string;
   onTop?:string
   /**
    * 职位
    */
   job?: string;
   name?: string;
   [property: string]: any;
}



export interface IDocumentReq {
  characterProfileId: string
  filename: string;
  id?: number;
  link: string;
  size: number;
  /**
   * Status 文档状态，枚举值：uploaded, extracted, processed, failed. @see service.DocumentStatusPending
   */
  status?: string;
}
/**
 * entity.Document
 */
export interface IEntityDocument {
  createdAt?: string;
  filename?: string;
  id?: number;
  size?: number;
  status?: string;
}


/**
* model.UserProfile
*/
export type ModelUserProfile = {
  /**
   * Character 用户AI角色
   */
  character: ICharacter;
  /**
   * Components 用户组件
   */
  components: TEntityComponent[];
  /**
   * User 用户信息
   */
  user: { [key: string]: any };
  [property: string]: any;
}


/**
* model.AppConfig
*/
export type TModelAppConfig = {
  /**
   * ShareDomain 分享链接 Domain
   */
  shareDomain?: string;
  /**
   * VipRules 会员信息
   */
  vips?: TModelVipProduct[];
  wxOaQrCode: string
  auditing: boolean // 是否下在审核
  guidanceLink: string // 引导链接
  maxCloneNum: number // 最大克隆次数
  maxAvatarVideoSize: number // 头像视频最大 单位 MB
  [property: string]: any;
}

/**
* model.VipProduct
*/
export type TModelVipProduct = {
  description?: string;
  id?: string;
  metadata?: { [key: string]: any };
  name?: string;
  prices?: TModelVipPrice[];
  [property: string]: any;
}

/**
* model.VipPrice
*/
export type TModelVipPrice = {
  costPerDay: string;
  currency: string;
  duration: number;
  id: number;
  name: string;
  type: string;
  unitAmount: number;
  [property: string]: any;
}


export type TPaySign = {
  "appId": string,
  "timeStamp": string,
  "nonceStr": string,
  "package": string,
  "signType": string,
  "paySign": string
}

/**
* entity.User
*/
export type TEntityUser = {
  vip?: string
  vipExpireAt?: string
  
  avatar?: string;
  badges?: string[];
  /**
   * 公司
   */
  company?: string;
  email?: string;
  /**
   * Gender cons.GenderOther
   */
  gender?: number;
  /**
   * 职位
   */
  job?: string;
  name?: string;
  openId?: string;
  phone?: string;
  platform?: string;
  id?: number;
  [property: string]: any;
}

export type TWeeklyChatStatistics = {
  /**
   * 每周新增用户数
   */
  weeklyNewUsers: number;
  /**
   * 每周总聊天次数
   */
  weeklyTotalChats: number;
  [property: string]: any;
}

/**
* entity.ChatSession
*/
export type TEntityChatSession = {
  /**
   * CharacterProfileId 角色profile id
   */
  characterProfileId?: string;
  createdAt?: string;
  /**
   * Num 聊天次数
   */
  num?: number;
  /**
   * SessionId 会话id
   */
  sessionId: string;
  /**
   * UserName 用户名
   */
  userName?: string;
  [property: string]: any;
}

/**
* entity.ChatSessionRecord
*/
export type TEntityChatSessionRecord = {
  /**
   * AssistantAudioDuration 助手的音频时长，单位毫秒
   */
  assistantAudioDuration?: number;
  /**
   * AssistantMsg 助手消息
   */
  assistantMsg?: string;
  /**
   * AudioDuration 音频时长，单位毫秒
   */
  audioDuration?: number;
  /**
   * AudioUrl 音频url
   */
  audioUrl?: string;
  createdAt?: string;
  /**
   * IsCloneVoice 是否是克隆声音
   */
  isCloneVoice?: boolean;
  /**
   * SessionId 会话id
   */
  sessionId?: string;
  /**
   * UserMsg 用户消息
   */
  userMsg?: string;
  /**
   * Voice 声音
   */
  voice?: string;
  [property: string]: any;
}


/**
* service.AudioModel
*/
export type TServiceAudioModel = {
  /**
   * Avatar 头像
   */
  avatar: string;
  /**
   * Gender 性别 cons.Gender
   */
  gender: number;
  /**
   * Languages 语言
   */
  languages?: string[];
  /**
   * Name 名称
   */
  name: string;
  /**
   * Platform 平台 cons.Platform
   */
  platform?: string;
  /**
   * Style 风格
   */
  style?: string;
  /**
   * Voice 音色
   */
  voice: string;
  [property: string]: any;
}

export const enum EWidgeRowLayout {
  /**
   * 默认
   */
  DEFAULT = 'default',
  /**
   * 简洁
   */
  SIMPLE = 'simple',
  /**
   * 居中
   */
  CENTER = 'center',
  /**
   * left
   */
  LEFT = 'left',
}


// AI 状态
export enum ECharacterAISTATUS {
  IDLE = 1, // 空闲
  THINKING = 2, // 思考中
  RESPONDING = 3,// 回答中
}



export type TSocialMediaItem = {
  value: string,
  label: string,
  className: string,
  color: string,
  bgColor: string,
}

export type TEntityVoiceCloneRecord = {
  characterProfileId?: string;
  createdAt?: string;
  id?: number;
  note?: string;
  status?: string;
  updatedAt?: string;
  voiceName?: string;
  voiceAlias?: string;
  [property: string]: any;
}

export type TMediaType = {
  size?: number
  /** 视频的时间长度 */
  duration?: number
  /** 视频的高度 */
  height?: number
  /** 视频的宽度 */
  width?: number
  fileType: string
  url: string
}

/**
 * entity.Asset
 */
export type TEntityAsset = {
  createdAt?: string;
  id?: number;
  /**
   * IsSystem 是否是系统资产
   */
  isSystem?: boolean;
  /**
   * Link 资产链接
   */
  link?: string;
  /**
   * Name 资产名称
   */
  name?: string;
  [property: string]: any;
}


export type TModelGenQrCodeRequest = {
  autoColor?: boolean;
  envVersion?: string;
  isHyaline?: boolean;
  lineColor?: ModelColor;
  page?: string;
  scene: string;
  width?: number;
  [property: string]: any;
}

/**
* model.Color
*/
export type ModelColor = {
  b?: string;
  g?: string;
  r?: string;
  [property: string]: any;
}






