type MergerFunc = (base: T, layer: T) => T; type Merger = MergerFunc | ConfigMerger; type MergerMap = { [K in keyof T]?: Merger; }; type PreTransformer = (value: Partial) => Partial; export declare const RESET_TOKEN: unique symbol; export type ResetObject = { [RESET_TOKEN]?: any; }; export declare class ConfigMerger { preTransform?: PreTransformer; constructor(map?: MergerMap, preTransform?: PreTransformer); private keyMergers; mergeConfigs(base: T, ...layers: Partial<(T & ResetObject)>[]): T; defineMergeHandler(key: K | K[], merger: MergerFunc | ConfigMerger): void; } export declare function merger(spec?: MergerMap, preTransform?: PreTransformer): ConfigMerger; export {};