import { z } from "zod"; /** * The full set of environment variables recognized by a Rebase backend. */ declare const rebaseEnvSchema: z.ZodObject<{ NODE_ENV: z.ZodDefault>; PORT: z.ZodPipe, z.ZodTransform>; DATABASE_URL: z.ZodString; ADMIN_CONNECTION_STRING: z.ZodOptional; JWT_SECRET: z.ZodString; JWT_ACCESS_EXPIRES_IN: z.ZodDefault; JWT_REFRESH_EXPIRES_IN: z.ZodDefault; GOOGLE_CLIENT_ID: z.ZodOptional; GOOGLE_CLIENT_SECRET: z.ZodOptional; REBASE_SERVICE_KEY: z.ZodOptional; ALLOW_REGISTRATION: z.ZodPipe>, z.ZodTransform>; ALLOW_LOCALHOST_IN_PRODUCTION: z.ZodPipe>, z.ZodTransform>; CORS_ORIGINS: z.ZodOptional; FRONTEND_URL: z.ZodOptional; DB_POOL_MAX: z.ZodPipe, z.ZodTransform>; DB_POOL_IDLE_TIMEOUT: z.ZodPipe, z.ZodTransform>; DB_POOL_CONNECT_TIMEOUT: z.ZodPipe, z.ZodTransform>; DATABASE_DIRECT_URL: z.ZodOptional; DATABASE_READ_URL: z.ZodOptional; FORCE_LOCAL_STORAGE: z.ZodPipe>, z.ZodTransform>; STORAGE_TYPE: z.ZodDefault>; STORAGE_PATH: z.ZodOptional; S3_BUCKET: z.ZodOptional; S3_REGION: z.ZodOptional; S3_ACCESS_KEY_ID: z.ZodOptional; S3_SECRET_ACCESS_KEY: z.ZodOptional; S3_ENDPOINT: z.ZodOptional; S3_FORCE_PATH_STYLE: z.ZodPipe>, z.ZodTransform>; }, z.core.$strip>; /** Inferred type of the validated environment. */ export type RebaseEnv = z.infer; /** * Load and validate the Rebase environment configuration from `process.env`. * * Call this **after** your `.env` file has been loaded (via `dotenv`, `--env-file`, * container injection, etc.). This function does not load `.env` files itself — * that is a deployment concern, not a framework concern. * * Behavior: * - Auto-generates ephemeral `JWT_SECRET` and `REBASE_SERVICE_KEY` in * non-production mode so developers can start without manual setup. * - Blocks auto-generated secrets in production. * - Returns a fully typed, validated env object. * * Use `extend` to add your own typed env variables on top of the base Rebase schema: * * @example * ```ts * import dotenv from "dotenv"; * import { z } from "zod"; * import { loadEnv } from "@rebasepro/server-core"; * * dotenv.config({ path: "../../.env" }); * * // Basic — just Rebase env vars: * export const env = loadEnv(); * * // Extended — add your own typed vars: * export const env = loadEnv({ * extend: z.object({ * SMTP_HOST: z.string().optional(), * SMTP_PORT: z.string().default("587").transform(Number), * STRIPE_SECRET_KEY: z.string(), * }) * }); * // env.SMTP_HOST → string | undefined (fully typed) * // env.STRIPE_SECRET_KEY → string (validated, required) * ``` */ export declare function loadEnv(): RebaseEnv; export declare function loadEnv>(options: { extend: E; }): RebaseEnv & z.infer; export {};