/** The node.js environment variable interface */
export interface Env {
    [key: string]: string | undefined;
}
/**
 * Get a string from the environment variable.
 * @throws Error if the variable is not found or empty and no default value was provided.
 */
export declare const getEnvVariableString: (env: Env, field: string, fallbackField: string, defaultValue?: string) => string;
/**
 * Get a string from the environment variable.
 * @throws Error if the variable is not found or empty and no default value was provided.
 */
export declare const getEnvVariableNumber: (env: Env, field: string, fallbackField: string, defaultValue?: number) => number;
/**
 * Get a boolean from the environment variable. The true/1 value return true, false/0 return false. Everything else throws an error.
 * @throws Error if the variable is not found or empty and no default value was provided.
 */
export declare const getEnvVariableBoolean: (env: Env, field: string, fallbackField: string, defaultValue?: boolean) => boolean;
/**
 * Transforms a constant formatted value to snake case formatted one
 * @param constantStr The CONSTANT_VALUE to convert to constantValue
 * @returns the formatted value
 */
export declare const constantToCamel: (constantStr: string) => string;
export interface StringSetting {
    constantName: string;
    default: string;
    func: typeof getEnvVariableString;
    skipFallback?: boolean;
    description: string;
}
export interface NumberSetting {
    constantName: string;
    default: number;
    func: typeof getEnvVariableNumber;
    skipFallback?: boolean;
    description: string;
}
export interface BooleanSetting {
    constantName: string;
    default: boolean;
    func: typeof getEnvVariableBoolean;
    skipFallback?: boolean;
    description: string;
}
/**
 * Loads the configuration settings from the ENV variables into the settings object.
 * @param map A mapping of all the env variables to config settings.
 * @param envPrefix The prefix for the env variables to check first (e.g. "TRX_OUTBOX_" or "TRX_INBOX_").
 * @param envPrefixFallback The fallback prefix if the other is not found. Useful for defining settings that should be used for both outbox and inbox.
 * @param env The process.env variable or a custom object
 * @returns The parsed configuration object.
 */
export declare const getConfigSettings: (map: (StringSetting | NumberSetting | BooleanSetting)[], envPrefix: string, envPrefixFallback: string, env?: Env) => Record<string, string | number | boolean>;
/**
 * Shows the available env variables and their default values.
 * @param map A mapping of all the env variables to config settings.
 * @param envPrefix The prefix for the env variables to check first (e.g. "TRX_OUTBOX_" or "TRX_INBOX_").
 * @param envPrefixFallback The fallback prefix if the other is not found. Useful for defining settings that should be used for both outbox and inbox.
 * @param defaultOverrides Default values for the overrides.
 * @returns A string with all the ENV config keys and their default values.
 */
export declare const getConfigSettingsEnvTemplate: (map: (StringSetting | NumberSetting | BooleanSetting)[], envPrefix: string, envPrefixFallback: string, defaultOverrides?: Record<string, string>) => string;
//# sourceMappingURL=env-settings.d.ts.map