import { type Config } from '../api/config.js';
import { type ClassConstructor } from '../../../business/utils/class-constructor.type.js';
import { type ConfigSource } from '../spi/config-source.js';
export declare class LayeredConfig implements Config {
    readonly mergeSourceValues: boolean;
    private readonly _sources;
    constructor(sources: ConfigSource[], mergeSourceValues?: boolean);
    get sources(): ConfigSource[];
    addSource(source: ConfigSource): void;
    asBoolean(key: string): boolean | null;
    asNumber(key: string): number | null;
    asObject<T>(cls: ClassConstructor<T>, key?: string): T;
    asObjectArray<T>(cls: ClassConstructor<T>, key?: string): Array<T>;
    asString(key: string): string | null;
    asStringArray(key: string): string[] | null;
    properties(): Map<string, string>;
    propertyNames(): Set<string>;
    refresh(): Promise<void>;
    private primitiveScalar;
    private objectScalar;
    private objectArray;
}
