// Custom environment variable type definitions // These extend the auto-generated Env interface from worker-configuration.d.ts declare namespace Cloudflare { interface Env { R2: R2Bucket; OAUTH_KV: KVNamespace; // Durable Object backing the onboarding strategy chat (see wrangler.jsonc). ONBOARDING_CHAT: DurableObjectNamespace; // Durable Object backing the SAM in-app agent (see wrangler.jsonc). SAM_CHAT: DurableObjectNamespace; // Durable Object holding per-audit crawl scratch state (frontier, link // edges, page mirror). Bound ONLY in the open-seo-audit aux worker; // untyped here — getAuditScratchpad narrows the stub. AUDIT_SCRATCHPAD: DurableObjectNamespace; // Service binding to the audit worker's AuditEngine entrypoint (cancel + // GDPR erasure of scratchpad state). The inline import() is required: a // top-level import would turn this ambient file into a module and break // the global augmentation. // oxlint-disable-next-line typescript-eslint/consistent-type-imports AUDIT_ENGINE: Service; AUTH_MODE?: "cloudflare_access" | "local_noauth" | "hosted"; BYPASS_EMAIL_VERIFICATION?: string; TEAM_DOMAIN?: string; POLICY_AUD?: string; POSTHOG_PUBLIC_KEY?: string; POSTHOG_HOST?: string; BETTER_AUTH_SECRET?: string; BETTER_AUTH_URL?: string; DATABASE_PROVIDER?: "d1" | "postgres"; HYPERDRIVE?: { connectionString: string; }; GOOGLE_CLIENT_ID?: string; GOOGLE_CLIENT_SECRET?: string; LOOPS_API_KEY?: string; LOOPS_TRANSACTIONAL_VERIFY_EMAIL_ID?: string; LOOPS_TRANSACTIONAL_RESET_PASSWORD_ID?: string; AUTUMN_SECRET_KEY?: string; AUTUMN_WEBHOOK_SECRET?: string; // Dub referral conversion tracking (hosted only); all Dub code no-ops // when unset. DUB_API_KEY?: string; // HMAC secret for the operator-only GDPR storage-erasure endpoint. GDPR_ERASURE_SECRET?: string; // Cloudflare Turnstile — signup captcha (hosted only). Secret verifies // tokens server-side; site key is public and inlined into the client build. TURNSTILE_SECRET_KEY?: string; TURNSTILE_SITE_KEY?: string; // DataForSEO API Basic auth value (base64 of login:password) DATAFORSEO_API_KEY: string; // OpenRouter API key for the in-app chat agents (onboarding + SAM). OPENROUTER_API_KEY?: string; // Optional OpenRouter model slug override (defaults in openrouter.ts). OPENROUTER_MODEL?: string; } } interface ImportMetaEnv { readonly AUTH_MODE?: "cloudflare_access" | "local_noauth" | "hosted"; readonly DATABASE_PROVIDER?: "d1" | "postgres"; readonly BYPASS_EMAIL_VERIFICATION?: string; readonly POSTHOG_PUBLIC_KEY?: string; readonly POSTHOG_HOST?: string; readonly TURNSTILE_SITE_KEY?: string; readonly VITE_E2E_DOMAIN_FIXTURES?: string; readonly VITE_E2E_KEYWORD_FIXTURES?: string; } interface ImportMeta { readonly env: ImportMetaEnv; } declare module "*.md?raw" { const content: string; export default content; }