import type Configuration from '../Contracts/Configuration'; type WithProperty = T & { [P in K]: Exclude

; }; export default class GlobalConfig> { /** * The configuration object. * * @protected */ protected static configuration: Configuration & Record; /** * Keys marked for not be deeply cloned when setting and returning values. */ static usedAsReference: (PropertyKey | keyof Configuration)[]; /** * The config constructor. * * @param {object} configuration */ constructor(configuration?: T); /** * Get a value from the config. * * @param {string} key * @param {any=} defaultVal */ get(key: K, defaultVal?: T[K]): T[K]; get(key: PropertyKey, defaultVal?: D): D; /** * Determine whether a key is set in the config or not. * * @param {string} key */ has(key: K): this is GlobalConfig>; /** * Set a config value. * * @param {string} key * @param {any} value */ set(key: K, value: T[K]): asserts this is GlobalConfig>; set(key: K, value: V): asserts this is GlobalConfig>; /** * Remove a config value. * * @param {string} key */ unset(key: K): asserts this is GlobalConfig>; /** * Empty the configuration. * * @return {this} */ reset(): asserts this is GlobalConfig>; } export {}; //# sourceMappingURL=GlobalConfig.d.ts.map