import type { StandardSchemaV1 } from '@standard-schema/spec'; export declare const CLIENT_PREFIX: "PUBLIC_"; export type EnvConfigInput = { server?: Record; client?: Record; /** Explicit value source for client vars (e.g. Vite's import.meta.env). */ runtimeEnv?: Record; }; export type BunderstackRole = 'all' | 'web' | 'worker'; /** Vars bunderstack itself consumes, always validated. */ export type BaseEnv = { NODE_ENV?: string; DATABASE_URL: string; DATABASE_AUTH_TOKEN?: string; AUTH_SECRET: string; REDIS_URL?: string; RESEND_API_KEY?: string; SMTP_URL?: string; BUNDERSTACK_EMAIL_PROVIDER?: string; BUNDERSTACK_EMAIL_FROM?: string; BUNDERHOST_ENVIRONMENT_ID?: string; BUNDERSTACK_ROLE: BunderstackRole; }; type InferVars = T extends Record ? { [K in keyof T]: StandardSchemaV1.InferOutput; } : unknown; export type ValidatedEnv = [ TEnv ] extends [EnvConfigInput] ? BaseEnv & InferVars['server']> & InferVars['client']> : BaseEnv; export declare class BunderstackEnvError extends Error { readonly issues: string[]; constructor(issues: string[]); } export type ValidateEnvOptions = { /** String tag of the configured email provider ('resend' | 'smtp'), if any. */ emailProvider?: string; /** Value source; defaults to process.env. Tests pass this explicitly. */ source?: Record; /** Dialect-aware DATABASE_URL fallback; createBunderstack passes it. */ defaultDatabaseUrl?: string; }; export declare function validateEnv(envConfig: TEnv, options?: ValidateEnvOptions): ValidatedEnv; /** * Browser-side companion (t3-env style): validates ONLY the client section. * Server keys exist on the returned object as traps that throw on access, so * a leaked import fails loudly instead of silently reading undefined. */ export declare function createClientEnv(envConfig: TEnv): InferVars; export {}; //# sourceMappingURL=env.d.ts.map