import type { Spec, ValidatorSpec } from 'envalid'; /** A TCP/UDP port: an integer in 1..65535. */ export declare const port: (spec?: Spec) => (Spec & { _parse: (input: string) => number; }) | (Spec & { default: number; } & { _parse: (input: string) => number; }) | (Spec & { devDefault: number; } & { _parse: (input: string) => number; }) | (Spec & { testDefault: number; } & { _parse: (input: string) => number; }) | (Spec & { devDefault: number; default: number; } & { _parse: (input: string) => number; }) | (Spec & { testDefault: number; default: number; } & { _parse: (input: string) => number; }) | (Spec & { testDefault: number; devDefault: number; } & { _parse: (input: string) => number; }) | (Spec & { testDefault: number; devDefault: number; default: number; } & { _parse: (input: string) => number; }); /** An absolute URL, scheme included. */ export declare const url: (spec?: Spec) => (Spec & { _parse: (input: string) => string; }) | (Spec & { default: string; } & { _parse: (input: string) => string; }) | (Spec & { devDefault: string; } & { _parse: (input: string) => string; }) | (Spec & { testDefault: string; } & { _parse: (input: string) => string; }) | (Spec & { devDefault: string; default: string; } & { _parse: (input: string) => string; }) | (Spec & { testDefault: string; default: string; } & { _parse: (input: string) => string; }) | (Spec & { testDefault: string; devDefault: string; } & { _parse: (input: string) => string; }) | (Spec & { testDefault: string; devDefault: string; default: string; } & { _parse: (input: string) => string; }); /** A bare hostname or IP address — no scheme, port or path. */ export declare const host: (spec?: Spec) => (Spec & { _parse: (input: string) => string; }) | (Spec & { default: string; } & { _parse: (input: string) => string; }) | (Spec & { devDefault: string; } & { _parse: (input: string) => string; }) | (Spec & { testDefault: string; } & { _parse: (input: string) => string; }) | (Spec & { devDefault: string; default: string; } & { _parse: (input: string) => string; }) | (Spec & { testDefault: string; default: string; } & { _parse: (input: string) => string; }) | (Spec & { testDefault: string; devDefault: string; } & { _parse: (input: string) => string; }) | (Spec & { testDefault: string; devDefault: string; default: string; } & { _parse: (input: string) => string; }); /** An email address. */ export declare const email: (spec?: Spec) => (Spec & { _parse: (input: string) => string; }) | (Spec & { default: string; } & { _parse: (input: string) => string; }) | (Spec & { devDefault: string; } & { _parse: (input: string) => string; }) | (Spec & { testDefault: string; } & { _parse: (input: string) => string; }) | (Spec & { devDefault: string; default: string; } & { _parse: (input: string) => string; }) | (Spec & { testDefault: string; default: string; } & { _parse: (input: string) => string; }) | (Spec & { testDefault: string; devDefault: string; } & { _parse: (input: string) => string; }) | (Spec & { testDefault: string; devDefault: string; default: string; } & { _parse: (input: string) => string; }); /** A UUID in canonical 8-4-4-4-12 hex form. */ export declare const uuid: (spec?: Spec) => (Spec & { _parse: (input: string) => string; }) | (Spec & { default: string; } & { _parse: (input: string) => string; }) | (Spec & { devDefault: string; } & { _parse: (input: string) => string; }) | (Spec & { testDefault: string; } & { _parse: (input: string) => string; }) | (Spec & { devDefault: string; default: string; } & { _parse: (input: string) => string; }) | (Spec & { testDefault: string; default: string; } & { _parse: (input: string) => string; }) | (Spec & { testDefault: string; devDefault: string; } & { _parse: (input: string) => string; }) | (Spec & { testDefault: string; devDefault: string; default: string; } & { _parse: (input: string) => string; }); export type ListSpec = Omit, 'choices'> & { /** Item delimiter. Default: `,`. Use `:` for PATH-style vars. */ separator?: string; /** Admissable values for EACH item (envalid's `choices` compares the whole * parsed value, which for a list is the array itself). */ choices?: ReadonlyArray; }; /** * Comma-separated list of non-empty, trimmed strings. * * ```ts * list() // 'a, b' -> ['a','b'] * list({ choices: ['api_key', 'jwt'] as const }) // per-item membership, typed * list({ separator: ':' }) // PATH-style * withDefault(list, ['api_key']) // typed default for "unset" * ``` * * A var that is SET but yields no items (`''`, `','`) is an error, not `[]`: * "set but empty" is a deployment mistake, and an empty allowlist silently * means "allow nothing". Use a default (or `withDefault`) to express "unset is * fine". `parseEnvList` keeps the lenient semantics for non-schema callers. */ export declare const list: (spec?: ListSpec) => ValidatorSpec; export type NumSpec = Spec & { /** Inclusive lower bound. `min: 0` for "non-negative milliseconds". */ min?: number; /** Inclusive upper bound. */ max?: number; /** Reject non-integers. `num()` alone accepts `1.5` for a count. */ integer?: boolean; }; /** * Number, optionally bounded. A superset of envalid's `num`: same acceptance * for a plain `num()`, plus `min`/`max`/`integer`. * * ```ts * num({ min: 0 }) // non-negative (a duration in ms) * num({ min: 1, max: 64 }) // a concurrency dial * ``` */ export declare const num: (spec?: NumSpec) => ValidatorSpec; /** Integer, optionally bounded — `num({ integer: true })`. */ export declare const int: (spec?: Omit) => ValidatorSpec; export type DurationSpec = Spec & { /** Inclusive lower bound in milliseconds. Default: 0 (no negative durations). */ min?: number; /** Inclusive upper bound in milliseconds. */ max?: number; }; /** * Duration normalized to milliseconds, accepting a bare number of ms or a * suffixed value: `30s`, `5m`, `2h`, `1d`, `1w`, `500ms`. * * ```ts * duration() // '30s' -> 30000, '250' -> 250 * withDefault(duration, 30_000) // a default is plain milliseconds * ``` */ export declare const duration: (spec?: DurationSpec) => ValidatorSpec; /** * One of a fixed set of strings, typed as the union — `str({ choices })` with a * name consumers actually find. `oneOf` is an alias. * * ```ts * enumerated(['per-function', 'combined'] as const) * enumerated(['read', 'write'] as const, { default: 'read' }) * ``` */ export declare const enumerated: (choices: ReadonlyArray, spec?: Omit, "choices">) => ValidatorSpec; export declare const oneOf: (choices: ReadonlyArray, spec?: Omit, "choices">) => ValidatorSpec;