export type GenerateType = 'UNKNOWN' | 'IMAGE' | 'VIDEO' | 'TEXT';

export type GenerationStatus = 'pending' | 'running' | 'completed' | 'failed';

export interface TemplateGeneration {
  id: string;
  userId: string;
  templateId: string;
  type: GenerateType;
  resultUrl: string[];
  status: GenerationStatus;
  creditsCost?: number;
  creditsTransactionId?: string;
  createdAt: string;
  updatedAt: string;
}

export interface TemplateGenerationResponse {
  success: boolean;
  data: TemplateGeneration;
}

export interface RunTemplateResponse {
  success: boolean;
  data: string; // generation ID
}

export interface FormFieldOption {
  label: string;
  value: string | number;
}

export interface FormFieldSchema {
  name: string;
  label: string;
  type: 'text' | 'number' | 'textarea' | 'select' | 'image' | 'video' | 'color';
  required?: boolean;
  placeholder?: string;
  options?: FormFieldOption[];
  min?: number;
  max?: number;
  defaultValue?: any;
  description?: string;
}

export interface RunFormSchema {
  fields: FormFieldSchema[];
  validation?: {
    [fieldName: string]: {
      required?: boolean;
      min?: number;
      max?: number;
      pattern?: string;
      message?: string;
    };
  };
}

export interface RunTemplateData {
  [fieldName: string]: any;
}

export interface RunProgress {
  status: GenerationStatus;
  progress: number; // 0-100
  message: string;
  result?: TemplateGeneration;
}