// 模型类型枚举
export enum ModelTypeEnum {
  Chat = 0,
  Image = 1,
  Embedding = 2,
  PremiumChat = 3,
}

// 模型API类型枚举
export enum ModelApiTypeEnum {
  OpenAi = 0,
  Claude = 1,
}

// AI应用DTO
export interface AiAppDto {
  id: string;
  name: string;
  endpoint: string;
  extraUrl?: string;
  apiKey: string;
  orderNum: number;
  creationTime: string;
}

// 创建AI应用输入
export interface AiAppCreateInput {
  name: string;
  endpoint: string;
  extraUrl?: string;
  apiKey: string;
  orderNum: number;
}

// 更新AI应用输入
export interface AiAppUpdateInput {
  id: string;
  name: string;
  endpoint: string;
  extraUrl?: string;
  apiKey: string;
  orderNum: number;
}

// 获取AI应用列表输入
export interface AiAppGetListInput {
  searchKey?: string;
  skipCount?: number;
  maxResultCount?: number;
}

// AI模型DTO
export interface AiModelDto {
  id: string;
  handlerName: string;
  modelId: string;
  name: string;
  description?: string;
  orderNum: number;
  aiAppId: string;
  extraInfo?: string;
  modelType: ModelTypeEnum;
  modelApiType: ModelApiTypeEnum;
  multiplier: number;
  multiplierShow: number;
  providerName?: string;
  iconUrl?: string;
  isPremium: boolean;
  isEnabled: boolean;
}

// 创建AI模型输入
export interface AiModelCreateInput {
  handlerName: string;
  modelId: string;
  name: string;
  description?: string;
  orderNum: number;
  aiAppId: string;
  extraInfo?: string;
  modelType: ModelTypeEnum;
  modelApiType: ModelApiTypeEnum;
  multiplier: number;
  multiplierShow: number;
  providerName?: string;
  iconUrl?: string;
  isPremium: boolean;
  isEnabled: boolean;
}

// 更新AI模型输入
export interface AiModelUpdateInput {
  id: string;
  handlerName: string;
  modelId: string;
  name: string;
  description?: string;
  orderNum: number;
  aiAppId: string;
  extraInfo?: string;
  modelType: ModelTypeEnum;
  modelApiType: ModelApiTypeEnum;
  multiplier: number;
  multiplierShow: number;
  providerName?: string;
  iconUrl?: string;
  isPremium: boolean;
  isEnabled: boolean;
}

// 获取AI模型列表输入
export interface AiModelGetListInput {
  searchKey?: string;
  aiAppId?: string;
  isPremiumOnly?: boolean;
  skipCount?: number;
  maxResultCount?: number;
}

// 快捷渠道DTO
export interface AppShortcutDto {
  id: string;
  name: string;
  endpoint: string;
  extraUrl?: string;
  apiKey: string;
  orderNum: number;
  creationTime: string;
}

// 分页结果
export interface PagedResultDto<T> {
  items: T[];
  totalCount: number;
}
