/// declare namespace Cloudflare { interface Env { PUBLISHER_MEDIA?: import("@/lib/publisher/server").MediaBucket; ACTIVITY_CACHE?: import("@/lib/activity").ActivityCacheStore; ACTIVITY_STORE?: import("@/lib/activity/durable").ActivityDurableNamespace; ACTIVITY_STORE_MODE?: string; LIVE_VISITORS?: import("@/lib/visitors/durable").VisitorNamespace; GITHUB_ACTIVITY_TOKEN?: string; PLUNK_SECRET_KEY?: string; NEWSLETTER_DB?: import("@/lib/newsletter/types").NewsletterDB; NEWSLETTER_TOKEN_SECRET?: string; NEWSLETTER_ADMIN_SECRET?: string; NEWSLETTER_WEBHOOK_SECRET?: string; NEWSLETTER_DISCORD_WEBHOOK_URL?: string; NEWSLETTER_ORIGIN?: string; PARAGRAPH_API_KEY?: string; PARAGRAPH_PUBLICATION_SLUG?: string; ANTHROPIC_API_KEY?: string; ANTHROPIC_MODEL?: string; } } declare module "cloudflare:workers" { export const env: Cloudflare.Env; export function waitUntil(work: Promise): void; } // the adapter puts the Worker's ExecutionContext on locals, which is what lets // a page hand work to `waitUntil` and answer before that work finishes type CloudflareRuntime = import("@astrojs/cloudflare").Runtime; declare namespace App { // biome-ignore lint/suspicious/noEmptyInterface: declaration merging needs an interface, not an alias interface Locals extends CloudflareRuntime {} } interface ImportMetaEnv { readonly FLOW_ID_HOST?: string; readonly FLOW_ID_API_URL?: string; readonly PARAGRAPH_API_KEY?: string; readonly PARAGRAPH_PUBLICATION_SLUG?: string; } interface ImportMeta { readonly env: ImportMetaEnv; } declare module "ffprobe-static" { const binary: { path: string }; export default binary; }