import { ConfigRecord, ConfigValue, MergeOptions } from './types'; /** * Configuration merger with multiple strategies. */ export declare class ConfigMerger { private options; constructor(options?: MergeOptions); /** * Merge multiple configurations. */ merge(...configs: ConfigRecord[]): ConfigRecord; /** * Merge two configurations. */ mergeTwo(target: ConfigRecord, source: ConfigRecord): ConfigRecord; private shallowMerge; private deepMerge; private mergeArrays; private shouldIncludeValue; private isPlainObject; } /** * Deep merge configurations. */ export declare function deepMerge(...configs: ConfigRecord[]): ConfigRecord; /** * Shallow merge configurations. */ export declare function shallowMerge(...configs: ConfigRecord[]): ConfigRecord; /** * Replace merge (last config wins). */ export declare function replaceMerge(...configs: ConfigRecord[]): ConfigRecord; /** * Get a value at a path. */ export declare function getValueAtPath(config: ConfigRecord, path: string, defaultValue?: T): T; /** * Set a value at a path. */ export declare function setValueAtPath(config: ConfigRecord, path: string, value: ConfigValue): ConfigRecord; /** * Delete a value at a path. */ export declare function deleteValueAtPath(config: ConfigRecord, path: string): ConfigRecord; /** * Check if a path exists. */ export declare function hasPath(config: ConfigRecord, path: string): boolean; /** * Get all paths in a configuration. */ export declare function getAllPaths(config: ConfigRecord, prefix?: string): string[]; /** * Configuration difference. */ export interface ConfigDiff { readonly added: Record; readonly removed: string[]; readonly changed: Array<{ path: string; oldValue: ConfigValue; newValue: ConfigValue; }>; } /** * Calculate the difference between two configurations. */ export declare function diffConfigs(oldConfig: ConfigRecord, newConfig: ConfigRecord): ConfigDiff; /** * Flatten a nested configuration to dot-notation paths. */ export declare function flattenConfig(config: ConfigRecord, prefix?: string): Record; /** * Unflatten a dot-notation configuration to nested structure. */ export declare function unflattenConfig(flat: Record): ConfigRecord;