/** * Configuration management type definitions */ import type { BaseConfig } from '@wundr.io/core'; export interface ConfigSource { readonly name: string; readonly priority: number; load(): Promise> | Record; save?(config: Record): Promise | void; watch?(callback: (config: Record) => void): () => void; } export interface ConfigManager { get(key: string, defaultValue?: T): T; set(key: string, value: unknown): void; has(key: string): boolean; delete(key: string): void; clear(): void; getAll(): Record; reload(): Promise; save(): Promise; watch(key: string, callback: (value: unknown, oldValue: unknown) => void): () => void; watchAll(callback: (config: Record) => void): () => void; addSource(source: ConfigSource): void; removeSource(sourceName: string): void; getSources(): ConfigSource[]; validate(): ValidationResult; } export interface ValidationRule { readonly key: string; readonly validator: (value: unknown) => boolean | string; readonly required?: boolean; readonly description?: string; } export interface ValidationResult { readonly valid: boolean; readonly errors: ValidationError[]; } export interface ValidationError { readonly key: string; readonly message: string; readonly value: unknown; } export interface ConfigOptions { sources?: ConfigSource[]; validationRules?: ValidationRule[]; autoReload?: boolean; autoSave?: boolean; debounceMs?: number; freezeConfig?: boolean; } export interface WundrConfig extends BaseConfig { readonly core?: { logLevel?: string; logFormat?: 'json' | 'simple' | 'detailed'; maxMemory?: number; tempDir?: string; }; readonly plugins?: { enabled?: boolean; directory?: string; autoLoad?: boolean; autoActivate?: boolean; maxConcurrentLoads?: number; }; readonly security?: { encryptionKey?: string; secretsProvider?: string; auditEnabled?: boolean; rbacEnabled?: boolean; }; readonly performance?: { monitoring?: boolean; metricsInterval?: number; benchmarking?: boolean; cacheSize?: number; }; readonly integrations?: { github?: { token?: string; baseUrl?: string; timeout?: number; }; claude?: { apiKey?: string; model?: string; maxTokens?: number; }; }; } export declare const DEFAULT_CONFIG: WundrConfig; export declare const CONFIG_EVENTS: { readonly CONFIG_LOADED: "config:loaded"; readonly CONFIG_CHANGED: "config:changed"; readonly CONFIG_SAVED: "config:saved"; readonly CONFIG_ERROR: "config:error"; readonly SOURCE_ADDED: "config:source:added"; readonly SOURCE_REMOVED: "config:source:removed"; readonly VALIDATION_FAILED: "config:validation:failed"; }; export type ConfigEventType = (typeof CONFIG_EVENTS)[keyof typeof CONFIG_EVENTS]; //# sourceMappingURL=index.d.ts.map