declare namespace Cloudflare {
interface Env {
SECRETS_KEY: string;
GITHUB_CLIENT_ID?: string;
GITHUB_CLIENT_SECRET?: string;
CF_API_TOKEN?: string;
SITES_COOKIE_SECRET?: string;
/** Turnstile widget secret; required whenever TURNSTILE_SITEKEY is set. */
TURNSTILE_SECRET?: string;
SCRATCH_SITES_PER_IP_PER_DAY?: string;
/** Local e2e only; ignored unless PUBLIC_URL is loopback. */
RATE_LIMITS_DISABLED?: string;
/** Stripe is enabled only when this is set; without it billing UIs hide and plans come from METERING_PLANS. */
STRIPE_SECRET_KEY?: string;
STRIPE_PUBLISHABLE_KEY?: string;
/** Signing secret of the /stripe/webhook endpoint (whsec_...). */
STRIPE_WEBHOOK_SECRET?: string;
/** Price id of the Pro monthly subscription. */
STRIPE_PRICE_PRO?: string;
/** JSON: {"<pack id from src/lib/pricing.ts PACKS>": "price_..."}; amounts and quantities come from pricing.ts. */
STRIPE_TOPUP_PRICES?: string;
/** "true" enables the loopback-only /__dev/stripe/replay route (test-mode keys only). */
STRIPE_DEV_REPLAY?: string;
/** PostHog project token (phc_...). Analytics is off unless this (or VITE_POSTHOG_PROJECT_TOKEN) is set. */
POSTHOG_KEY?: string;
/** PostHog ingestion host, e.g. https://us.i.posthog.com (default) or https://eu.i.posthog.com. */
POSTHOG_HOST?: string;
VITE_POSTHOG_PROJECT_TOKEN?: string;
VITE_POSTHOG_HOST?: string;
/** "true" attaches the signed-in user's email to their PostHog person. Off by default: no PII. */
POSTHOG_PERSON_EMAIL?: string;
}
}