/**
 * Provider Configuration Types
 * Defines the structure for provider-specific UI configurations
 */

export type ControlType = 'select' | 'number' | 'slider' | 'checkbox' | 'text' | 'textarea';

export interface ControlOption {
  value: string | number | boolean;
  label: string;
  description?: string;
}

export interface ProviderControl {
  name: string;
  label: string;
  type: ControlType;
  description?: string;
  default: any;
  options?: ControlOption[];
  min?: number;
  max?: number;
  step?: number;
  required?: boolean;
  dependsOn?: {
    control: string;
    value: any;
  };
}

export interface ProviderModel {
  id: string;
  name: string;
  description?: string;
  controls?: ProviderControl[];
}

export interface ProviderConfig {
  id: string;
  name: string;
  description?: string;
  models: ProviderModel[];
  defaultModel: string;
  commonControls: ProviderControl[];
  features: string[];
}

export interface ProviderCapabilities {
  [providerId: string]: ProviderConfig;
}
