/// <reference types="astro/client" />
/// <reference types="@cloudflare/workers-types" />

type RateLimitBinding = { limit(options: { key: string }): Promise<{ success: boolean }> };

declare namespace Cloudflare {
  interface Env {
    DB?: D1Database;
    SESSION: KVNamespace;
    MEDIA: R2Bucket;
    STOREFRONT_LOGIN_LIMITER?: RateLimitBinding;
    CHECKOUT_LIMITER?: RateLimitBinding;
    ADMIN_LOGIN_LIMITER?: RateLimitBinding;
    ADMIN_API_LIMITER?: RateLimitBinding;
    SITE_ORIGIN?: string;
    AUTH_SECRET?: string;
    STRIPE_SECRET_KEY?: string;
    STRIPE_PUBLISHABLE_KEY?: string;
    STRIPE_WEBHOOK_SECRET?: string;
    DATABASE_URL?: string;
  }
}
