type Primitive = string | number | boolean | null | undefined;
type PlainObject = Record<any, Primitive>;
type EnvironmentVariable = Primitive | PlainObject | Array<Primitive | PlainObject>;
export interface Env {
    /**
     * Accepts an environment variable name. Returns the parsed value of the
     * variable, if it is set.
     *
     * Additionally accepts an optional `strict` argument that, when `true`, will
     * cause env to throw if the provided variable does not exist in process.env.
     */
    <T extends EnvironmentVariable = string>(variableName: string, strict: true): T;
    <T extends EnvironmentVariable = string>(variableName: string, strict?: boolean): T | undefined;
    /**
     * Returns `true` if the provided variable name is set and `false` otherwise.
     *
     * Shorthand for `Object.keys(process.env).includes(variableName)`.
     */
    has(variableName: string): boolean;
    /**
     * Accepts a variable name and a value and returns `true` if the variable name
     * is strictly equal to the provided value.
     *
     * Additionally accepts an optional `strict` argument that, when `true`, will
     * cause env.eq to throw if the provided variable does not exist in
     * process.env.
     *
     * Note: When comparing against non-primitives (objects, arrays), env.eq will
     * serialize the provided `value` and compare it against the serialized (re:
     * string) form of the environment variable.
     *
     * Shorthand for `env('SOME_VAR') === testValue`.
     */
    eq(variableName: string, value: any, strict?: boolean): boolean;
}
declare const env: Env;
export default env;
