/** * Configuration File Loader (D-005) * * Loads configuration from .llmbrowserrc or .llmbrowserrc.json files. * Configuration precedence: Environment Variables > Config File > Defaults * * Search paths (in order): * 1. Current working directory * 2. Home directory (~/.llmbrowserrc) * 3. Package root (for npm package users) * * Supported file names: * - .llmbrowserrc (JSON format) * - .llmbrowserrc.json * - llmbrowserrc.json * - .unbrowserrc (alias) * - .unbrowserrc.json (alias) * * @example * // .llmbrowserrc in project root * { * "log": { * "level": "debug", * "prettyPrint": true * }, * "browserProvider": { * "timeout": 60000 * } * } */ import { z } from 'zod'; import { type LogConfig, type DatabaseConfig, type BrowserProviderConfig, type RedisConfig, type ProxyConfig, type ApiServerConfig, type StripeConfig, type McpServerConfig, type SdkConfig } from './config-schemas.js'; /** * Schema for configuration file contents. * All fields are optional - missing fields use defaults or env vars. */ export declare const configFileSchema: z.ZodObject<{ log: z.ZodOptional>; prettyPrint: z.ZodOptional; }, z.core.$strip>>; database: z.ZodOptional; sqlitePath: z.ZodOptional; vectorDbPath: z.ZodOptional; poolSize: z.ZodOptional; debugPrisma: z.ZodOptional; }, z.core.$strip>>; browserProvider: z.ZodOptional>; browserlessToken: z.ZodOptional; browserlessUrl: z.ZodOptional; brightdataAuth: z.ZodOptional; brightdataZone: z.ZodOptional>; brightdataCountry: z.ZodOptional; customEndpoint: z.ZodOptional; timeout: z.ZodOptional; }, z.core.$strip>>; redis: z.ZodOptional; host: z.ZodOptional; port: z.ZodOptional; password: z.ZodOptional; db: z.ZodOptional; keyPrefix: z.ZodOptional; connectTimeout: z.ZodOptional; maxRetriesPerRequest: z.ZodOptional; enableOfflineQueue: z.ZodOptional; }, z.core.$strip>>; proxy: z.ZodOptional>; ispUrls: z.ZodOptional>; brightdataAuth: z.ZodOptional; brightdataZone: z.ZodOptional>; brightdataCountry: z.ZodOptional; brightdataCountries: z.ZodOptional>; brightdataSessionRotation: z.ZodOptional; brightdataPort: z.ZodOptional; healthWindow: z.ZodOptional; cooldownMinutes: z.ZodOptional; blockThreshold: z.ZodOptional; riskCacheMinutes: z.ZodOptional; enableRiskLearning: z.ZodOptional; }, z.core.$strip>>; apiServer: z.ZodOptional>; port: z.ZodOptional; corsOrigins: z.ZodOptional>; }, z.core.$strip>>; stripe: z.ZodOptional; webhookSecret: z.ZodOptional; priceId: z.ZodOptional; meterEventName: z.ZodOptional; }, z.core.$strip>>; mcpServer: z.ZodOptional; adminMode: z.ZodOptional; tenantId: z.ZodOptional; }, z.core.$strip>>; sdk: z.ZodOptional; learningEnginePath: z.ZodOptional; disableProceduralMemory: z.ZodOptional; disableLearning: z.ZodOptional; }, z.core.$strip>>; }, z.core.$strict>; export type ConfigFile = z.infer; /** * Get the loaded config file (cached after first load). */ export declare function getConfigFile(): ConfigFile; /** * Clear the config file cache. * Useful for testing or reloading configuration. */ export declare function clearConfigFileCache(): void; /** * Get merged log configuration. * Config file values are used unless overridden by environment variables. */ export declare function getMergedLogConfig(): LogConfig; /** * Get merged database configuration. */ export declare function getMergedDatabaseConfig(): DatabaseConfig; /** * Get merged browser provider configuration. */ export declare function getMergedBrowserProviderConfig(): BrowserProviderConfig; /** * Get merged Redis configuration. */ export declare function getMergedRedisConfig(): RedisConfig; /** * Get merged proxy configuration. */ export declare function getMergedProxyConfig(): ProxyConfig; /** * Get merged API server configuration. */ export declare function getMergedApiServerConfig(): ApiServerConfig; /** * Get merged Stripe configuration. */ export declare function getMergedStripeConfig(): StripeConfig; /** * Get merged MCP server configuration. */ export declare function getMergedMcpServerConfig(): McpServerConfig; /** * Get merged SDK configuration. */ export declare function getMergedSdkConfig(): SdkConfig; /** * Get the path to the loaded config file, if any. * Uses cached path to avoid redundant filesystem scans. */ export declare function getConfigFilePath(): string | null; /** * Check if a config file exists. * Uses cached result to avoid redundant filesystem scans. */ export declare function hasConfigFile(): boolean; /** * Generate a sample .llmbrowserrc file with all available options. */ export declare function generateSampleConfig(): string; //# sourceMappingURL=config-loader.d.ts.map