type CommonEnv = Record; export declare const nodeEnvSource: () => any; export declare const denoEnvSource: () => CommonEnv; export declare const bunEnvSource: () => CommonEnv; export declare const storageEnvSource: (storages?: Storage[]) => CommonEnv; export declare const autoEnvSource: (fallback?: () => Record) => CommonEnv; type Parser = { parse: (v: string | undefined) => unknown; } | ((v: string | undefined) => unknown); type ParserReturn = T extends { parse: (v: string | undefined) => infer R; } ? R : T extends (v: string | undefined) => infer R ? R : unknown; type SaveEnvReturn> = { [K in keyof T]: T[K] extends Parser ? ParserReturn : never; }; /** * @example * ```ts * const safeEnv = defineSafeEnv({ * // use zod * STR: z.string().default("123"), * NUM: z.number().default(456), * * // use custom parser * BINT: (value) => BigInt(String(value ?? "0")), * }); * * const r1 = safeEnv(); // will auto use runtime env: support bun/deno/node/vite/browser(sessionStorage+localStorage) * r1.STR; // safe type: string * r1.NUM; // safe type: number * r1.BINT; // safe type: bigint * * console.log(r1); // { STR: "114514", NUM: 123, BINT: 0n } * * const r2 = safeEnv({STR: "qqq"}); * console.log(r2); // { STR: "114514", NUM: 123, BINT: 0n } * ``` * @param envShape * @returns */ export declare const defineSafeEnv: >(envShape: ENV) => ((source?: CommonEnv) => SaveEnvReturn); export {}; //# sourceMappingURL=env.d.ts.map