// API Response Types
export interface ApiResponse<T> {
  data: T;
  status: number;
  statusText: string;
}

// Image Generation Types
export type ImageFormat = 'png' | 'jpeg' | 'webp';
export type ImageModel = 'dall-e-3' | 'dall-e-2';

export interface ImageGenerationOptions {
  width: number;
  height: number;
  prompt: string;
  model?: ImageModel;
  format?: ImageFormat;
  quality?: number;
  optimize?: boolean;
}

export interface SupportedModel {
  id: string;
  name: string;
  description: string;
  maxWidth: number;
  maxHeight: number;
}

export interface SupportedSize {
  width: number;
  height: number;
  aspectRatio: string;
}

// Image Processing Types
export interface ResizeImageOptions {
  width: number;
  height: number;
  format: ImageFormat;
  quality: number;
}

export interface ConvertImageOptions {
  format: ImageFormat;
  quality: number;
}

export interface OptimizeImageOptions {
  format: ImageFormat;
  quality: number;
}

export interface SupportedFormat {
  id: string;
  name: string;
  mimeType: string;
  extensions: string[];
}

// Monitoring Types
export interface HealthStatus {
  status: string;
  info?: Record<string, { status: string }>;
  error?: Record<string, { status: string; message: string }>;
  details: Record<string, { status: string; message?: string }>;
}

export interface Metrics {
  uptime: number;
  requestCount: number;
  successRate: number;
  averageResponseTime: number;
}

// Client Configuration
export interface ClientConfig {
  baseUrl: string;
  apiKey?: string;
  timeout?: number;
}
