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>": {"price": "price_...", "meter": "compute.runner" | "ai.tokens" | ..., "quantity": n}}. */
STRIPE_TOPUP_PRICES?: string;
/** "true" enables the loopback-only /__dev/stripe/replay route (test-mode keys only). */
STRIPE_DEV_REPLAY?: string;
}
}