export declare type UnifiedEnvReturnObject = { [key in keyof Obj]: TypeFromConstructor; }; export declare type TypeFromConstructor = T extends BooleanConstructor ? boolean : T extends NumberConstructor ? number : string; export declare type UnifiedEnvErrorObject = { [key in keyof Obj]: string[]; }; export declare type ValidType = StringConstructor | NumberConstructor | BooleanConstructor; export declare type LogLevel = 'log' | 'debug' | 'info' | 'warn' | 'error'; export declare type TieBreakers = 'env' | 'argv' | 'file' | '__defaultValue'; export interface IEnvOptionsObject { [key: string]: IEnvOption | true; } export interface IEnvOption { required?: boolean; defaultValue?: string | boolean | number; acceptableValues?: (string | boolean | number)[]; type?: ValidType; tieBreaker?: TieBreakers; } export interface IObjectOfStings { [key: string]: string; } export interface IUnifiedEnvOptions { logLevel: LogLevel; logger: ILogger; } export interface ILogger { log(...args: any[]): void; debug(...args: any[]): void; info(...args: any[]): void; warn(...args: any[]): void; error(...args: any[]): void; } export interface IFileOptions { filePath: string; encoding: string; failIfNotFound: boolean; }