export interface AppConfig {
  server: {
    port: number;
  };
  selenium: {
    remoteUrl: string;
    browser: string;
  };
  cache: {
    basePath: string;
  };
  addons: {
    directory: string;
  };
}

export interface TocSelector {
  scope: string;
  linkPattern: string;
}

export interface ContentSelector {
  scope: string;
}

export interface StealthConfig {
  enabled: boolean;
  waitMs: number;
  addons: string[];
}

export interface DownloadConfig {
  parallelism: number;
  minContentBytes: number;
}

export interface NovelDefinition {
  slug: string;
  type: 'epub' | 'web-scraped';
  source: {
    url?: string;
    urls?: string[];
  };
  selectors?: {
    toc?: TocSelector;
    content?: ContentSelector;
  };
  stealth?: StealthConfig;
  download?: DownloadConfig;
}

export interface NovelsConfig {
  novels: NovelDefinition[];
}
