export interface Boolean { kind: "boolean"; envVars: string[]; defaultValue?: boolean; mandatory?: boolean; } export interface String { kind: "string"; envVars: string[]; defaultValue?: string; mandatory?: boolean; } export interface Any { kind: "any"; mandatory?: boolean; __type: T; } export declare type BaseVar = Any | String | Boolean; export declare type Mandatory = { kind: "mandatory"; mandatory: T; }; export declare type Default = { kind: "default"; default: T; }; export declare type Var = Mandatory | Default | BaseVar; export declare function anyVar(mandatory?: false): Any; export declare function anyVar(mandatory: true): Mandatory>; export declare function stringVar(envVars: string[], defaultValue?: undefined, mandatory?: false): String; export declare function stringVar(envVars: string[], defaultValue: undefined, mandatory: true): Mandatory; export declare function stringVar(envVars: string[], defaultValue: string, mandatory?: boolean): Default; export declare function booleanVar(envVars: string[], defaultValue?: undefined, mandatory?: false): Boolean; export declare function booleanVar(envVars: string[], defaultValue: undefined, mandatory: true): Mandatory; export declare function booleanVar(envVars: string[], defaultValue: boolean, mandatory?: boolean): Default; declare type BaseType = T extends String ? string : T extends Boolean ? boolean : T extends Any ? U : never; declare type FieldType = F extends Mandatory ? BaseType : F extends Default ? BaseType : BaseType | undefined; declare type InpufFieldType = FieldType | undefined; declare type Optionalize = OmitBy & Partial>; declare type OmitBy = Omit ? K : never; }[keyof T]>; declare type PickBy = Pick ? K : never; }[keyof T]>; export declare type ConfigType = Optionalize<{ [K in keyof C]: FieldType; }>; export declare type InputConfigType = Optionalize<{ [K in keyof C]: InpufFieldType; }>; export declare function loadConfig>(confDef: CD, input: InputConfigType): ConfigType; export {};