UNPKG

website-to-markdown-mcp

Version:

Advanced MCP server for fetching websites and converting to markdown with AI-powered features and stealth capabilities

803 lines 30.4 kB
import { z } from 'zod'; declare const WebsiteSchema: z.ZodObject<{ name: z.ZodString; url: z.ZodString; description: z.ZodOptional<z.ZodString>; enabled: z.ZodDefault<z.ZodBoolean>; customSettings: z.ZodOptional<z.ZodObject<{ timeout: z.ZodOptional<z.ZodNumber>; retries: z.ZodOptional<z.ZodNumber>; useStealthBrowser: z.ZodOptional<z.ZodBoolean>; extractMainContent: z.ZodOptional<z.ZodBoolean>; removeAds: z.ZodOptional<z.ZodBoolean>; preserveImages: z.ZodOptional<z.ZodBoolean>; preserveLinks: z.ZodOptional<z.ZodBoolean>; customUserAgent: z.ZodOptional<z.ZodString>; customHeaders: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>; rateLimit: z.ZodOptional<z.ZodObject<{ requestsPerSecond: z.ZodOptional<z.ZodNumber>; burstLimit: z.ZodOptional<z.ZodNumber>; }, "strip", z.ZodTypeAny, { requestsPerSecond?: number | undefined; burstLimit?: number | undefined; }, { requestsPerSecond?: number | undefined; burstLimit?: number | undefined; }>>; }, "strip", z.ZodTypeAny, { timeout?: number | undefined; removeAds?: boolean | undefined; extractMainContent?: boolean | undefined; retries?: number | undefined; useStealthBrowser?: boolean | undefined; preserveImages?: boolean | undefined; preserveLinks?: boolean | undefined; customUserAgent?: string | undefined; customHeaders?: Record<string, string> | undefined; rateLimit?: { requestsPerSecond?: number | undefined; burstLimit?: number | undefined; } | undefined; }, { timeout?: number | undefined; removeAds?: boolean | undefined; extractMainContent?: boolean | undefined; retries?: number | undefined; useStealthBrowser?: boolean | undefined; preserveImages?: boolean | undefined; preserveLinks?: boolean | undefined; customUserAgent?: string | undefined; customHeaders?: Record<string, string> | undefined; rateLimit?: { requestsPerSecond?: number | undefined; burstLimit?: number | undefined; } | undefined; }>>; }, "strip", z.ZodTypeAny, { name: string; url: string; enabled: boolean; description?: string | undefined; customSettings?: { timeout?: number | undefined; removeAds?: boolean | undefined; extractMainContent?: boolean | undefined; retries?: number | undefined; useStealthBrowser?: boolean | undefined; preserveImages?: boolean | undefined; preserveLinks?: boolean | undefined; customUserAgent?: string | undefined; customHeaders?: Record<string, string> | undefined; rateLimit?: { requestsPerSecond?: number | undefined; burstLimit?: number | undefined; } | undefined; } | undefined; }, { name: string; url: string; description?: string | undefined; enabled?: boolean | undefined; customSettings?: { timeout?: number | undefined; removeAds?: boolean | undefined; extractMainContent?: boolean | undefined; retries?: number | undefined; useStealthBrowser?: boolean | undefined; preserveImages?: boolean | undefined; preserveLinks?: boolean | undefined; customUserAgent?: string | undefined; customHeaders?: Record<string, string> | undefined; rateLimit?: { requestsPerSecond?: number | undefined; burstLimit?: number | undefined; } | undefined; } | undefined; }>; declare const GlobalSettingsSchema: z.ZodObject<{ defaultTimeout: z.ZodDefault<z.ZodNumber>; defaultRetries: z.ZodDefault<z.ZodNumber>; defaultUserAgent: z.ZodDefault<z.ZodString>; maxConcurrentRequests: z.ZodDefault<z.ZodNumber>; enableGlobalRateLimit: z.ZodDefault<z.ZodBoolean>; globalRateLimit: z.ZodObject<{ requestsPerSecond: z.ZodDefault<z.ZodNumber>; burstLimit: z.ZodDefault<z.ZodNumber>; }, "strip", z.ZodTypeAny, { requestsPerSecond: number; burstLimit: number; }, { requestsPerSecond?: number | undefined; burstLimit?: number | undefined; }>; stealthBrowser: z.ZodObject<{ enabled: z.ZodDefault<z.ZodBoolean>; headless: z.ZodDefault<z.ZodBoolean>; blockResources: z.ZodDefault<z.ZodArray<z.ZodString, "many">>; useProxy: z.ZodDefault<z.ZodBoolean>; proxyUrl: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { enabled: boolean; headless: boolean; blockResources: string[]; useProxy: boolean; proxyUrl?: string | undefined; }, { enabled?: boolean | undefined; headless?: boolean | undefined; blockResources?: string[] | undefined; useProxy?: boolean | undefined; proxyUrl?: string | undefined; }>; contentProcessing: z.ZodObject<{ removeAds: z.ZodDefault<z.ZodBoolean>; removeNavigation: z.ZodDefault<z.ZodBoolean>; removeFooter: z.ZodDefault<z.ZodBoolean>; removeSidebar: z.ZodDefault<z.ZodBoolean>; extractMainContent: z.ZodDefault<z.ZodBoolean>; preserveImages: z.ZodDefault<z.ZodBoolean>; preserveLinks: z.ZodDefault<z.ZodBoolean>; minTextLength: z.ZodDefault<z.ZodNumber>; maxTextLength: z.ZodOptional<z.ZodNumber>; generateSummary: z.ZodDefault<z.ZodBoolean>; }, "strip", z.ZodTypeAny, { removeAds: boolean; removeNavigation: boolean; extractMainContent: boolean; preserveImages: boolean; preserveLinks: boolean; removeFooter: boolean; removeSidebar: boolean; minTextLength: number; generateSummary: boolean; maxTextLength?: number | undefined; }, { removeAds?: boolean | undefined; removeNavigation?: boolean | undefined; extractMainContent?: boolean | undefined; preserveImages?: boolean | undefined; preserveLinks?: boolean | undefined; removeFooter?: boolean | undefined; removeSidebar?: boolean | undefined; minTextLength?: number | undefined; maxTextLength?: number | undefined; generateSummary?: boolean | undefined; }>; caching: z.ZodObject<{ enabled: z.ZodDefault<z.ZodBoolean>; ttl: z.ZodDefault<z.ZodNumber>; maxSize: z.ZodDefault<z.ZodNumber>; useRedis: z.ZodDefault<z.ZodBoolean>; redisUrl: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { enabled: boolean; ttl: number; maxSize: number; useRedis: boolean; redisUrl?: string | undefined; }, { enabled?: boolean | undefined; ttl?: number | undefined; maxSize?: number | undefined; useRedis?: boolean | undefined; redisUrl?: string | undefined; }>; logging: z.ZodObject<{ level: z.ZodDefault<z.ZodEnum<["error", "warn", "info", "debug"]>>; enableFileLogging: z.ZodDefault<z.ZodBoolean>; enablePerformanceLogging: z.ZodDefault<z.ZodBoolean>; logDirectory: z.ZodDefault<z.ZodString>; }, "strip", z.ZodTypeAny, { level: "info" | "error" | "warn" | "debug"; enableFileLogging: boolean; enablePerformanceLogging: boolean; logDirectory: string; }, { level?: "info" | "error" | "warn" | "debug" | undefined; enableFileLogging?: boolean | undefined; enablePerformanceLogging?: boolean | undefined; logDirectory?: string | undefined; }>; monitoring: z.ZodObject<{ enabled: z.ZodDefault<z.ZodBoolean>; metricsPort: z.ZodOptional<z.ZodNumber>; healthCheckInterval: z.ZodDefault<z.ZodNumber>; }, "strip", z.ZodTypeAny, { enabled: boolean; healthCheckInterval: number; metricsPort?: number | undefined; }, { enabled?: boolean | undefined; metricsPort?: number | undefined; healthCheckInterval?: number | undefined; }>; }, "strip", z.ZodTypeAny, { logging: { level: "info" | "error" | "warn" | "debug"; enableFileLogging: boolean; enablePerformanceLogging: boolean; logDirectory: string; }; defaultTimeout: number; defaultRetries: number; defaultUserAgent: string; maxConcurrentRequests: number; enableGlobalRateLimit: boolean; globalRateLimit: { requestsPerSecond: number; burstLimit: number; }; stealthBrowser: { enabled: boolean; headless: boolean; blockResources: string[]; useProxy: boolean; proxyUrl?: string | undefined; }; contentProcessing: { removeAds: boolean; removeNavigation: boolean; extractMainContent: boolean; preserveImages: boolean; preserveLinks: boolean; removeFooter: boolean; removeSidebar: boolean; minTextLength: number; generateSummary: boolean; maxTextLength?: number | undefined; }; caching: { enabled: boolean; ttl: number; maxSize: number; useRedis: boolean; redisUrl?: string | undefined; }; monitoring: { enabled: boolean; healthCheckInterval: number; metricsPort?: number | undefined; }; }, { logging: { level?: "info" | "error" | "warn" | "debug" | undefined; enableFileLogging?: boolean | undefined; enablePerformanceLogging?: boolean | undefined; logDirectory?: string | undefined; }; globalRateLimit: { requestsPerSecond?: number | undefined; burstLimit?: number | undefined; }; stealthBrowser: { enabled?: boolean | undefined; headless?: boolean | undefined; blockResources?: string[] | undefined; useProxy?: boolean | undefined; proxyUrl?: string | undefined; }; contentProcessing: { removeAds?: boolean | undefined; removeNavigation?: boolean | undefined; extractMainContent?: boolean | undefined; preserveImages?: boolean | undefined; preserveLinks?: boolean | undefined; removeFooter?: boolean | undefined; removeSidebar?: boolean | undefined; minTextLength?: number | undefined; maxTextLength?: number | undefined; generateSummary?: boolean | undefined; }; caching: { enabled?: boolean | undefined; ttl?: number | undefined; maxSize?: number | undefined; useRedis?: boolean | undefined; redisUrl?: string | undefined; }; monitoring: { enabled?: boolean | undefined; metricsPort?: number | undefined; healthCheckInterval?: number | undefined; }; defaultTimeout?: number | undefined; defaultRetries?: number | undefined; defaultUserAgent?: string | undefined; maxConcurrentRequests?: number | undefined; enableGlobalRateLimit?: boolean | undefined; }>; declare const ConfigSchema: z.ZodObject<{ websites: z.ZodArray<z.ZodObject<{ name: z.ZodString; url: z.ZodString; description: z.ZodOptional<z.ZodString>; enabled: z.ZodDefault<z.ZodBoolean>; customSettings: z.ZodOptional<z.ZodObject<{ timeout: z.ZodOptional<z.ZodNumber>; retries: z.ZodOptional<z.ZodNumber>; useStealthBrowser: z.ZodOptional<z.ZodBoolean>; extractMainContent: z.ZodOptional<z.ZodBoolean>; removeAds: z.ZodOptional<z.ZodBoolean>; preserveImages: z.ZodOptional<z.ZodBoolean>; preserveLinks: z.ZodOptional<z.ZodBoolean>; customUserAgent: z.ZodOptional<z.ZodString>; customHeaders: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>; rateLimit: z.ZodOptional<z.ZodObject<{ requestsPerSecond: z.ZodOptional<z.ZodNumber>; burstLimit: z.ZodOptional<z.ZodNumber>; }, "strip", z.ZodTypeAny, { requestsPerSecond?: number | undefined; burstLimit?: number | undefined; }, { requestsPerSecond?: number | undefined; burstLimit?: number | undefined; }>>; }, "strip", z.ZodTypeAny, { timeout?: number | undefined; removeAds?: boolean | undefined; extractMainContent?: boolean | undefined; retries?: number | undefined; useStealthBrowser?: boolean | undefined; preserveImages?: boolean | undefined; preserveLinks?: boolean | undefined; customUserAgent?: string | undefined; customHeaders?: Record<string, string> | undefined; rateLimit?: { requestsPerSecond?: number | undefined; burstLimit?: number | undefined; } | undefined; }, { timeout?: number | undefined; removeAds?: boolean | undefined; extractMainContent?: boolean | undefined; retries?: number | undefined; useStealthBrowser?: boolean | undefined; preserveImages?: boolean | undefined; preserveLinks?: boolean | undefined; customUserAgent?: string | undefined; customHeaders?: Record<string, string> | undefined; rateLimit?: { requestsPerSecond?: number | undefined; burstLimit?: number | undefined; } | undefined; }>>; }, "strip", z.ZodTypeAny, { name: string; url: string; enabled: boolean; description?: string | undefined; customSettings?: { timeout?: number | undefined; removeAds?: boolean | undefined; extractMainContent?: boolean | undefined; retries?: number | undefined; useStealthBrowser?: boolean | undefined; preserveImages?: boolean | undefined; preserveLinks?: boolean | undefined; customUserAgent?: string | undefined; customHeaders?: Record<string, string> | undefined; rateLimit?: { requestsPerSecond?: number | undefined; burstLimit?: number | undefined; } | undefined; } | undefined; }, { name: string; url: string; description?: string | undefined; enabled?: boolean | undefined; customSettings?: { timeout?: number | undefined; removeAds?: boolean | undefined; extractMainContent?: boolean | undefined; retries?: number | undefined; useStealthBrowser?: boolean | undefined; preserveImages?: boolean | undefined; preserveLinks?: boolean | undefined; customUserAgent?: string | undefined; customHeaders?: Record<string, string> | undefined; rateLimit?: { requestsPerSecond?: number | undefined; burstLimit?: number | undefined; } | undefined; } | undefined; }>, "many">; settings: z.ZodOptional<z.ZodObject<{ defaultTimeout: z.ZodDefault<z.ZodNumber>; defaultRetries: z.ZodDefault<z.ZodNumber>; defaultUserAgent: z.ZodDefault<z.ZodString>; maxConcurrentRequests: z.ZodDefault<z.ZodNumber>; enableGlobalRateLimit: z.ZodDefault<z.ZodBoolean>; globalRateLimit: z.ZodObject<{ requestsPerSecond: z.ZodDefault<z.ZodNumber>; burstLimit: z.ZodDefault<z.ZodNumber>; }, "strip", z.ZodTypeAny, { requestsPerSecond: number; burstLimit: number; }, { requestsPerSecond?: number | undefined; burstLimit?: number | undefined; }>; stealthBrowser: z.ZodObject<{ enabled: z.ZodDefault<z.ZodBoolean>; headless: z.ZodDefault<z.ZodBoolean>; blockResources: z.ZodDefault<z.ZodArray<z.ZodString, "many">>; useProxy: z.ZodDefault<z.ZodBoolean>; proxyUrl: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { enabled: boolean; headless: boolean; blockResources: string[]; useProxy: boolean; proxyUrl?: string | undefined; }, { enabled?: boolean | undefined; headless?: boolean | undefined; blockResources?: string[] | undefined; useProxy?: boolean | undefined; proxyUrl?: string | undefined; }>; contentProcessing: z.ZodObject<{ removeAds: z.ZodDefault<z.ZodBoolean>; removeNavigation: z.ZodDefault<z.ZodBoolean>; removeFooter: z.ZodDefault<z.ZodBoolean>; removeSidebar: z.ZodDefault<z.ZodBoolean>; extractMainContent: z.ZodDefault<z.ZodBoolean>; preserveImages: z.ZodDefault<z.ZodBoolean>; preserveLinks: z.ZodDefault<z.ZodBoolean>; minTextLength: z.ZodDefault<z.ZodNumber>; maxTextLength: z.ZodOptional<z.ZodNumber>; generateSummary: z.ZodDefault<z.ZodBoolean>; }, "strip", z.ZodTypeAny, { removeAds: boolean; removeNavigation: boolean; extractMainContent: boolean; preserveImages: boolean; preserveLinks: boolean; removeFooter: boolean; removeSidebar: boolean; minTextLength: number; generateSummary: boolean; maxTextLength?: number | undefined; }, { removeAds?: boolean | undefined; removeNavigation?: boolean | undefined; extractMainContent?: boolean | undefined; preserveImages?: boolean | undefined; preserveLinks?: boolean | undefined; removeFooter?: boolean | undefined; removeSidebar?: boolean | undefined; minTextLength?: number | undefined; maxTextLength?: number | undefined; generateSummary?: boolean | undefined; }>; caching: z.ZodObject<{ enabled: z.ZodDefault<z.ZodBoolean>; ttl: z.ZodDefault<z.ZodNumber>; maxSize: z.ZodDefault<z.ZodNumber>; useRedis: z.ZodDefault<z.ZodBoolean>; redisUrl: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { enabled: boolean; ttl: number; maxSize: number; useRedis: boolean; redisUrl?: string | undefined; }, { enabled?: boolean | undefined; ttl?: number | undefined; maxSize?: number | undefined; useRedis?: boolean | undefined; redisUrl?: string | undefined; }>; logging: z.ZodObject<{ level: z.ZodDefault<z.ZodEnum<["error", "warn", "info", "debug"]>>; enableFileLogging: z.ZodDefault<z.ZodBoolean>; enablePerformanceLogging: z.ZodDefault<z.ZodBoolean>; logDirectory: z.ZodDefault<z.ZodString>; }, "strip", z.ZodTypeAny, { level: "info" | "error" | "warn" | "debug"; enableFileLogging: boolean; enablePerformanceLogging: boolean; logDirectory: string; }, { level?: "info" | "error" | "warn" | "debug" | undefined; enableFileLogging?: boolean | undefined; enablePerformanceLogging?: boolean | undefined; logDirectory?: string | undefined; }>; monitoring: z.ZodObject<{ enabled: z.ZodDefault<z.ZodBoolean>; metricsPort: z.ZodOptional<z.ZodNumber>; healthCheckInterval: z.ZodDefault<z.ZodNumber>; }, "strip", z.ZodTypeAny, { enabled: boolean; healthCheckInterval: number; metricsPort?: number | undefined; }, { enabled?: boolean | undefined; metricsPort?: number | undefined; healthCheckInterval?: number | undefined; }>; }, "strip", z.ZodTypeAny, { logging: { level: "info" | "error" | "warn" | "debug"; enableFileLogging: boolean; enablePerformanceLogging: boolean; logDirectory: string; }; defaultTimeout: number; defaultRetries: number; defaultUserAgent: string; maxConcurrentRequests: number; enableGlobalRateLimit: boolean; globalRateLimit: { requestsPerSecond: number; burstLimit: number; }; stealthBrowser: { enabled: boolean; headless: boolean; blockResources: string[]; useProxy: boolean; proxyUrl?: string | undefined; }; contentProcessing: { removeAds: boolean; removeNavigation: boolean; extractMainContent: boolean; preserveImages: boolean; preserveLinks: boolean; removeFooter: boolean; removeSidebar: boolean; minTextLength: number; generateSummary: boolean; maxTextLength?: number | undefined; }; caching: { enabled: boolean; ttl: number; maxSize: number; useRedis: boolean; redisUrl?: string | undefined; }; monitoring: { enabled: boolean; healthCheckInterval: number; metricsPort?: number | undefined; }; }, { logging: { level?: "info" | "error" | "warn" | "debug" | undefined; enableFileLogging?: boolean | undefined; enablePerformanceLogging?: boolean | undefined; logDirectory?: string | undefined; }; globalRateLimit: { requestsPerSecond?: number | undefined; burstLimit?: number | undefined; }; stealthBrowser: { enabled?: boolean | undefined; headless?: boolean | undefined; blockResources?: string[] | undefined; useProxy?: boolean | undefined; proxyUrl?: string | undefined; }; contentProcessing: { removeAds?: boolean | undefined; removeNavigation?: boolean | undefined; extractMainContent?: boolean | undefined; preserveImages?: boolean | undefined; preserveLinks?: boolean | undefined; removeFooter?: boolean | undefined; removeSidebar?: boolean | undefined; minTextLength?: number | undefined; maxTextLength?: number | undefined; generateSummary?: boolean | undefined; }; caching: { enabled?: boolean | undefined; ttl?: number | undefined; maxSize?: number | undefined; useRedis?: boolean | undefined; redisUrl?: string | undefined; }; monitoring: { enabled?: boolean | undefined; metricsPort?: number | undefined; healthCheckInterval?: number | undefined; }; defaultTimeout?: number | undefined; defaultRetries?: number | undefined; defaultUserAgent?: string | undefined; maxConcurrentRequests?: number | undefined; enableGlobalRateLimit?: boolean | undefined; }>>; }, "strip", z.ZodTypeAny, { websites: { name: string; url: string; enabled: boolean; description?: string | undefined; customSettings?: { timeout?: number | undefined; removeAds?: boolean | undefined; extractMainContent?: boolean | undefined; retries?: number | undefined; useStealthBrowser?: boolean | undefined; preserveImages?: boolean | undefined; preserveLinks?: boolean | undefined; customUserAgent?: string | undefined; customHeaders?: Record<string, string> | undefined; rateLimit?: { requestsPerSecond?: number | undefined; burstLimit?: number | undefined; } | undefined; } | undefined; }[]; settings?: { logging: { level: "info" | "error" | "warn" | "debug"; enableFileLogging: boolean; enablePerformanceLogging: boolean; logDirectory: string; }; defaultTimeout: number; defaultRetries: number; defaultUserAgent: string; maxConcurrentRequests: number; enableGlobalRateLimit: boolean; globalRateLimit: { requestsPerSecond: number; burstLimit: number; }; stealthBrowser: { enabled: boolean; headless: boolean; blockResources: string[]; useProxy: boolean; proxyUrl?: string | undefined; }; contentProcessing: { removeAds: boolean; removeNavigation: boolean; extractMainContent: boolean; preserveImages: boolean; preserveLinks: boolean; removeFooter: boolean; removeSidebar: boolean; minTextLength: number; generateSummary: boolean; maxTextLength?: number | undefined; }; caching: { enabled: boolean; ttl: number; maxSize: number; useRedis: boolean; redisUrl?: string | undefined; }; monitoring: { enabled: boolean; healthCheckInterval: number; metricsPort?: number | undefined; }; } | undefined; }, { websites: { name: string; url: string; description?: string | undefined; enabled?: boolean | undefined; customSettings?: { timeout?: number | undefined; removeAds?: boolean | undefined; extractMainContent?: boolean | undefined; retries?: number | undefined; useStealthBrowser?: boolean | undefined; preserveImages?: boolean | undefined; preserveLinks?: boolean | undefined; customUserAgent?: string | undefined; customHeaders?: Record<string, string> | undefined; rateLimit?: { requestsPerSecond?: number | undefined; burstLimit?: number | undefined; } | undefined; } | undefined; }[]; settings?: { logging: { level?: "info" | "error" | "warn" | "debug" | undefined; enableFileLogging?: boolean | undefined; enablePerformanceLogging?: boolean | undefined; logDirectory?: string | undefined; }; globalRateLimit: { requestsPerSecond?: number | undefined; burstLimit?: number | undefined; }; stealthBrowser: { enabled?: boolean | undefined; headless?: boolean | undefined; blockResources?: string[] | undefined; useProxy?: boolean | undefined; proxyUrl?: string | undefined; }; contentProcessing: { removeAds?: boolean | undefined; removeNavigation?: boolean | undefined; extractMainContent?: boolean | undefined; preserveImages?: boolean | undefined; preserveLinks?: boolean | undefined; removeFooter?: boolean | undefined; removeSidebar?: boolean | undefined; minTextLength?: number | undefined; maxTextLength?: number | undefined; generateSummary?: boolean | undefined; }; caching: { enabled?: boolean | undefined; ttl?: number | undefined; maxSize?: number | undefined; useRedis?: boolean | undefined; redisUrl?: string | undefined; }; monitoring: { enabled?: boolean | undefined; metricsPort?: number | undefined; healthCheckInterval?: number | undefined; }; defaultTimeout?: number | undefined; defaultRetries?: number | undefined; defaultUserAgent?: string | undefined; maxConcurrentRequests?: number | undefined; enableGlobalRateLimit?: boolean | undefined; } | undefined; }>; export type Website = z.infer<typeof WebsiteSchema>; export type GlobalSettings = z.infer<typeof GlobalSettingsSchema>; export type Config = z.infer<typeof ConfigSchema>; export declare class ConfigManager { private config; private configPath; private watchers; private isWatching; constructor(configPath?: string); private loadConfig; private getDefaultConfig; private setupFileWatcher; private notifyWatchers; getConfig(): Config; getWebsites(): Website[]; getWebsiteByName(name: string): Website | undefined; getGlobalSettings(): GlobalSettings; addWebsite(website: Omit<Website, 'enabled'>): void; updateWebsite(name: string, updates: Partial<Website>): void; removeWebsite(name: string): void; toggleWebsite(name: string): void; updateGlobalSettings(settings: Partial<GlobalSettings>): void; private saveConfig; validateConfig(): { isValid: boolean; errors: string[]; }; getStats(): { totalWebsites: number; enabledWebsites: number; disabledWebsites: number; configSize: number; lastModified?: Date; }; onConfigChange(callback: (config: Config) => void): () => void; exportConfig(): string; importConfig(configData: string): void; resetToDefault(): void; getMergedSettingsForWebsite(websiteName: string): GlobalSettings & Website['customSettings']; } export declare function getConfigManager(configPath?: string): ConfigManager; export declare function getConfig(): Config; export declare function getGlobalSettings(): GlobalSettings; export declare function getWebsites(): Website[]; export {}; //# sourceMappingURL=config-manager.d.ts.map