/*! Copyright 2023-2024 the gnablib contributors MPL-1.1 */
export type ConfigValue = boolean | string | number;
export type ValueSetter = (value: ConfigValue) => void;
export interface IConfigEnvCollector {
    importEnv(key: string, proc: (value: string | undefined, set: ValueSetter) => void): IConfigEnvCollector;
    importAvailEnv(key: string, proc: (value: string, set: ValueSetter) => void): IConfigEnvCollector;
}
export interface IConfigOracle {
    define(key: string, defaultValue: ConfigValue, guard?: boolean): IConfigEnvCollector;
    set(key: string, value: ConfigValue, reason?: string): void;
    getBool(key: string, def?: boolean): boolean;
    getInvertedBool(key: string, def?: boolean): boolean;
    getString(key: string, def?: string): string;
    getValueReason(key: string): [ConfigValue, string] | undefined;
}
