import { EmptyObject } from "../game/nlcore/elements/transition/type"; type ConfigHandler = (config: T) => U; type ConfigHandlersDataType> = { [K in keyof T]?: any; }; export type MergeConfig, Handlers extends ConfigHandlersDataType = Record> = { [K in keyof Raw]: K extends keyof Handlers ? Handlers[K] : Raw[K]; }; export type ConfigHandlers, Handlers extends ConfigHandlersDataType> = { [K in keyof Raw]?: ConfigHandler; }; export declare class ConfigConstructor, Handlers extends ConfigHandlersDataType = EmptyObject> { private defaultConfig; private readonly handlers; constructor(defaultConfig: Raw, handlers?: ConfigHandlers); create(config?: Partial): Config; copy(): ConfigConstructor; keys(): (keyof Raw)[]; getDefaultConfig(): Raw; private mergeWithDefaultConfig; private mergeValue; private isPlainObject; private applyHandler; } export declare class Config, Handlers extends ConfigHandlersDataType = EmptyObject> { private config; constructor(config: MergeConfig); get(): MergeConfig; copy(): Config; join>(config: T | Config): Config & T, Handlers>; extract, string>>(keys: T[]): [ picked: Config, T>, Handlers>, rest: Config, T>, Handlers> ]; assign(config: Partial>): Config; } export {};