export interface LlmModel {
  model_id: string;
  name?: string;
  is_active: boolean;
}

export interface LlmProvider {
  id?: string; // Optional for new providers
  name: string;
  api_base_url: string;
  api_key: string;
  models: LlmModel[];
}

export type LlmProvidersConfig = Record<string, LlmProvider>;

export enum DataSourceProvider {
  Tushare = "Tushare",
  Finnhub = "Finnhub",
  Alphavantage = "Alphavantage",
  Yfinance = "Yfinance",
}

export interface DataSourceConfig {
  provider: DataSourceProvider;
  api_key?: string;
  api_url?: string;
  enabled: boolean;
}

export type DataSourcesConfig = Record<string, DataSourceConfig>;

export interface AnalysisModuleConfig {
  name: string;
  provider_id: string;
  model_id: string;
  prompt_template: string;
  dependencies: string[];
}

export interface AnalysisTemplateSet {
  name: string;
  modules: Record<string, AnalysisModuleConfig>;
}

export type AnalysisTemplateSets = Record<string, AnalysisTemplateSet>;

