export interface GenerateImageRequest {
  tokenId: string;
  prompt: string;
  modelId: string;
  referenceImagesPrefixBase64?: string[];
}

export interface TaskStatusResponse {
  id: string;
  prompt: string;
  storePrefixBase64?: string;
  storeUrl?: string;
  taskStatus: 'Processing' | 'Success' | 'Fail';
  publishStatus: string;
  categories: string[];
  creationTime: string;
  errorInfo?: string;
}

export interface TaskListRequest {
  SkipCount: number;
  MaxResultCount: number;
  TaskStatus?: 'Processing' | 'Success' | 'Fail';
  Prompt?: string;
  PublishStatus?: 'Unpublished' | 'Published';
  StartTime?: string;
  EndTime?: string;
  OrderByColumn?: string;
  IsAsc?: string;
  IsAscending?: boolean;
  Sorting?: string;
  Categories?: string;
  UserName?: string;
}

export interface TaskItem {
  id: string;
  prompt: string;
  storePrefixBase64?: string;
  storeUrl?: string;
  taskStatus: 'Processing' | 'Success' | 'Fail';
  publishStatus: string;
  categories: string[];
  creationTime: string;
  errorInfo?: string;
  isAnonymous?: boolean;
  userName?: string | null;
  userId?: string | null;
}

export interface TaskListResponse {
  total: number;
  items: TaskItem[];
}

export interface PublishImageRequest {
  taskId: string;
  categories: string[];
  isAnonymous?: boolean;
}

export interface ImageModel {
  id: string;
  modelId: string;
  modelName: string;
  modelDescribe: string;
  remark: string;
  isPremiumPackage: boolean;
}
