export type ConfigValue = number | string | boolean;
export interface PropertyDecl<T extends ConfigValue> {
    type: 'string' | 'boolean' | 'number';
    key: string;
    defaultValue?: T;
    parse(str: string): T;
}
export declare function getConfigDeclarations(): Map<string, PropertyDecl<any>>;
export declare function stringConfig(key: string, defaultValue?: string): PropertyDecl<string>;
export declare function booleanConfig(key: string, defaultValue?: boolean): PropertyDecl<boolean>;
export declare function numberConfig(key: string, defaultValue?: number): PropertyDecl<number>;
export declare class Configuration {
    values: Map<string, string>;
    resolve<T extends ConfigValue>(decl: PropertyDecl<T>): T | null;
    get<T extends ConfigValue>(decl: PropertyDecl<T>): T;
    setAll(object: {
        [key: string]: string | null | undefined;
    }): void;
    getMissingConfigs(): Array<PropertyDecl<any>>;
}
export declare class EnvConfiguration extends Configuration {
    constructor();
}
//# sourceMappingURL=config.d.ts.map