import { Pipeline, PipelineRecord } from "cloudflare:pipelines";

//#region ../config/dist/public-cHlOGnI4.d.mts

//#region src/utils.d.ts
/**
 * Represents any valid JSON value.
 */
type Json = string | number | boolean | null | Json[] | {
  [key: string]: Json;
};
//#endregion
//#region src/bindings.d.ts
interface AgentMemoryBindingOptions {
  /** The user-chosen namespace name. Must exist in Cloudflare at deploy time. */
  namespace: string;
  /** Whether the Agent Memory binding should be remote in local development. */
  remote?: boolean;
}
/**
 * Agent Memory namespace binding. Each binding is scoped to a namespace and
 * allows agents to persist and recall memory.
 */
interface AgentMemoryBinding extends AgentMemoryBindingOptions {
  type: "agent-memory";
}
interface AiBindingOptions {
  /** Whether the AI binding should be remote or not in local development. */
  remote?: boolean;
}
/**
 * Binding to the Workers AI project.
 *
 * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#workers-ai
 */
interface AiBinding extends AiBindingOptions {
  type: "ai";
}
/**
 * Binding to the Workers AI project.
 *
 * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#workers-ai
 */
interface TypedAiBinding<TAiModelList extends AiModelListType = AiModels> extends AiBinding {
  /** @internal Carries type parameters for inference */
  __typeParams: [TAiModelList];
}
interface AiSearchBindingOptions {
  /** The user-chosen instance name. Must exist in Cloudflare at deploy time. */
  name: string;
  /** Whether the AI Search instance binding should be remote in local development. */
  remote?: boolean;
}
/**
 * AI Search instance binding. Each binding is bound directly to a single
 * pre-existing instance within the "default" namespace.
 */
interface AiSearchBinding extends AiSearchBindingOptions {
  type: "ai-search";
}
interface AiSearchNamespaceBindingOptions {
  /** The user-chosen namespace name. Must exist in Cloudflare at deploy time. */
  namespace: string;
  /** Whether the AI Search namespace binding should be remote in local development. */
  remote?: boolean;
}
/**
 * AI Search namespace binding. Each binding is scoped to a namespace and
 * allows dynamic instance CRUD within it.
 */
interface AiSearchNamespaceBinding extends AiSearchNamespaceBindingOptions {
  type: "ai-search-namespace";
}
interface AnalyticsEngineDatasetBindingOptions {
  /** The name of this dataset to write to. */
  name?: string;
}
/**
 * Binding to an Analytics Engine dataset.
 *
 * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#analytics-engine-datasets
 */
interface AnalyticsEngineDatasetBinding extends AnalyticsEngineDatasetBindingOptions {
  type: "analytics-engine-dataset";
}
interface ArtifactsBindingOptions {
  /** The namespace to use. */
  namespace: string;
  /** Whether to use the remote Artifacts service in local dev. */
  remote?: boolean;
}
/**
 * Binding to an Artifacts instance. Artifacts provides git-compatible file
 * storage on Cloudflare Workers.
 */
interface ArtifactsBinding extends ArtifactsBindingOptions {
  type: "artifacts";
}
/**
 * Binding to the Worker's static assets.
 *
 * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#assets
 */
interface AssetsBinding {
  type: "assets";
}
interface BrowserBindingOptions {
  /** Whether the Browser binding should be remote or not in local development. */
  remote?: boolean;
}
/**
 * Binding to a headless browser usable from the Worker.
 *
 * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#browser-rendering
 */
interface BrowserBinding extends BrowserBindingOptions {
  type: "browser";
}
interface D1BindingOptions {
  /** The UUID of this D1 database (not required). */
  id?: string;
  /** The name of this D1 database. */
  name?: string;
  /** Whether the D1 database should be remote or not in local development. */
  remote?: boolean;
}
/**
 * Binding to a D1 database.
 *
 * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#d1-databases
 */
interface D1Binding extends D1BindingOptions {
  type: "d1";
}
interface DispatchNamespaceBindingOptions {
  /** The namespace to bind to. */
  namespace: string;
  /** Details about the outbound Worker which will handle outbound requests from your namespace. */
  outbound?: {
    /** Name of the Worker handling the outbound requests. */
    workerName: string;
    /** (Optional) List of parameter names, for sending context from your dispatch Worker to the outbound handler. */
    parameters?: string[];
  };
  /** Whether the Dispatch Namespace should be remote or not in local development. */
  remote?: boolean;
}
/**
 * Binding to a Workers for Platforms dispatch namespace.
 *
 * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#dispatch-namespace-bindings-workers-for-platforms
 */
interface DispatchNamespaceBinding extends DispatchNamespaceBindingOptions {
  type: "dispatch-namespace";
}
interface DurableObjectBindingOptions {
  /** The name of the Worker that defines the Durable Object class. */
  workerName: string;
  /** The exported class name of the Durable Object. */
  exportName: string;
}
/**
 * Binding to a Durable Object class. `workerName` is the name of the Worker
 * that defines the class; `exportName` is the exported class name.
 *
 * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#durable-objects
 */
interface DurableObjectBinding extends DurableObjectBindingOptions {
  type: "durable-object";
}
/**
 * Binding to a Durable Object class. `workerName` is the name of the Worker
 * that defines the class; `exportName` is the exported class name.
 *
 * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#durable-objects
 */
interface TypedDurableObjectBinding<TConfig$1, TExportName$1 extends string> extends DurableObjectBinding {
  workerName: string;
  exportName: TExportName$1;
  /** @internal Carries the config type for inference */
  __config: TConfig$1;
}
interface FlagshipBindingOptions {
  /** The Flagship app ID to bind to. */
  id: string;
  /** Set to `true` to suppress the remote binding warning in local dev. Flagship bindings are always remote. */
  remote?: boolean;
}
/** Binding to a Flagship feature-flag service. */
interface FlagshipBinding extends FlagshipBindingOptions {
  type: "flagship";
}
interface HyperdriveBindingOptions {
  /** The ID of the Hyperdrive configuration. */
  id: string;
  /** The local database connection string used during local development. */
  localConnectionString?: string;
}
/**
 * Binding to a Hyperdrive configuration.
 *
 * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#hyperdrive
 */
interface HyperdriveBinding extends HyperdriveBindingOptions {
  type: "hyperdrive";
}
interface ImagesBindingOptions {
  /** Whether the Images binding should be remote or not in local development. */
  remote?: boolean;
}
/**
 * Binding to Cloudflare Images.
 *
 * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#images
 */
interface ImagesBinding$1 extends ImagesBindingOptions {
  type: "images";
}
/**
 * Inline JSON value made available to the Worker on `env` under the
 * binding name.
 */
interface JsonBinding<T$1 extends Json = Json> {
  type: "json";
  /** The JSON value made available to the Worker. */
  value: T$1;
}
interface KvBindingOptions {
  /** The ID of the KV namespace. */
  id?: string;
  /** Whether the KV namespace should be remote or not in local development. */
  remote?: boolean;
}
/**
 * Binding to a Workers KV namespace.
 *
 * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#kv-namespaces
 */
interface KvBinding extends KvBindingOptions {
  type: "kv";
}
/**
 * Binding to a Workers KV namespace.
 *
 * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#kv-namespaces
 */
interface TypedKvBinding<TKey extends string = string> extends KvBinding {
  /** @internal Carries type parameters for inference */
  __typeParams: [TKey];
}
interface LogfwdrBindingOptions {
  /** The destination for this logged message. */
  destination: string;
}
/** Binding for forwarding logs to logfwdr. */
interface LogfwdrBinding extends LogfwdrBindingOptions {
  type: "logfwdr";
}
interface MediaBindingOptions {
  /** Whether the Media binding should be remote or not. */
  remote?: boolean;
}
/** Binding to Cloudflare Media Transformations. */
interface MediaBinding$1 extends MediaBindingOptions {
  type: "media";
}
interface MtlsCertificateBindingOptions {
  /** The UUID of the uploaded mTLS certificate. */
  id: string;
  /** Whether the mTLS fetcher should be remote or not in local development. */
  remote?: boolean;
}
/**
 * Binding to an uploaded mTLS certificate.
 *
 * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#mtls-certificates
 */
interface MtlsCertificateBinding extends MtlsCertificateBindingOptions {
  type: "mtls-certificate";
}
interface PipelineBindingOptions {
  /** Name of the Pipeline to bind. */
  name: string;
  /** Whether the pipeline should be remote or not in local development. */
  remote?: boolean;
}
/** Binding to a Cloudflare Pipeline. */
interface PipelineBinding extends PipelineBindingOptions {
  type: "pipeline";
}
/** Binding to a Cloudflare Pipeline. */
interface TypedPipelineBinding<TRecord extends PipelineRecord = PipelineRecord> extends PipelineBinding {
  /** @internal Carries type parameters for inference */
  __typeParams: [TRecord];
}
interface QueueBindingOptions {
  /** The name of this Queue. */
  name: string;
  /** The number of seconds to wait before delivering a message. */
  deliveryDelay?: number;
  /** Whether the Queue producer should be remote or not in local development. */
  remote?: boolean;
}
/**
 * Producer binding to a Cloudflare Queue.
 *
 * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#queues
 */
interface QueueBinding extends QueueBindingOptions {
  type: "queue";
}
/**
 * Producer binding to a Cloudflare Queue.
 *
 * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#queues
 */
interface TypedQueueBinding<TBody = unknown> extends QueueBinding {
  /** @internal Carries type parameters for inference */
  __typeParams: [TBody];
}
interface R2BindingOptions {
  /** The name of this R2 bucket at the edge. */
  name?: string;
  /** The jurisdiction that the bucket exists in. Default if not present. */
  jurisdiction?: string;
  /** Whether the R2 bucket should be remote or not in local development. */
  remote?: boolean;
}
/**
 * Binding to an R2 bucket.
 *
 * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#r2-buckets
 */
interface R2Binding extends R2BindingOptions {
  type: "r2";
}
interface RateLimitBindingOptions {
  /** The namespace ID for this rate limiter. */
  namespace: string;
  /** Simple rate limiting configuration. */
  simple: {
    /** The maximum number of requests allowed in the time period. */
    limit: number;
    /** The time period in seconds (10 for ten seconds, 60 for one minute). */
    period: 10 | 60;
  };
}
/** Binding to a rate limiter. */
interface RateLimitBinding extends RateLimitBindingOptions {
  type: "rate-limit";
}
/**
 * Declares a secret that is required by your Worker, exposed on `env` under
 * the binding name.
 *
 * When defined, this binding:
 * - Replaces .dev.vars/.env/process.env inference for type generation
 * - Enables local dev validation with warnings for missing secrets
 *
 * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#secrets-configuration-property
 */
interface SecretBinding {
  type: "secret";
}
interface SecretsStoreSecretBindingOptions {
  /** ID of the secret store. */
  storeId: string;
  /** Name of the secret. */
  secretName: string;
}
/** Binding to a Secrets Store secret. */
interface SecretsStoreSecretBinding extends SecretsStoreSecretBindingOptions {
  type: "secrets-store-secret";
}
interface SendEmailBindingOptions {
  /** If this binding should be restricted to a specific verified address. */
  destinationAddress?: string;
  /** If this binding should be restricted to a set of verified addresses. */
  allowedDestinationAddresses?: string[];
  /** If this binding should be restricted to a set of sender addresses. */
  allowedSenderAddresses?: string[];
  /** Whether the binding should be remote or not in local development. */
  remote?: boolean;
}
/**
 * Binding for sending email from inside the Worker.
 *
 * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#email-bindings
 */
interface SendEmailBinding extends SendEmailBindingOptions {
  type: "send-email";
}
interface StreamBindingOptions {
  /** Whether the Stream binding should be remote or not in local development. */
  remote?: boolean;
}
/** Binding to Cloudflare Stream. */
interface StreamBinding$1 extends StreamBindingOptions {
  type: "stream";
}
/**
 * Inline string value made available to the Worker on `env` under the
 * binding name.
 *
 * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#environment-variables
 */
interface TextBinding<T$1 extends string = string> {
  type: "text";
  /** The string value made available to the Worker. */
  value: T$1;
}
interface UnsafeBindingOptions {
  /** Local-dev plugin configuration for this unsafe binding. */
  dev?: {
    /** The plugin package that provides the binding's local-dev implementation. */
    plugin: {
      package: string;
      name: string;
    };
    /** Plugin-specific options. */
    options?: Record<string, unknown>;
  };
  [key: string]: unknown;
}
/**
 * Escape-hatch binding for runtime features that aren't directly supported
 * by this configuration. Included in the Worker's upload metadata without
 * changes.
 */
interface UnsafeBinding extends UnsafeBindingOptions {
  type: `unsafe:${string}`;
}
interface VectorizeBindingOptions {
  /** The name of the Vectorize index. */
  name: string;
  /** Whether the Vectorize index should be remote or not in local development. */
  remote?: boolean;
}
/**
 * Binding to a Vectorize index.
 *
 * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#vectorize-indexes
 */
interface VectorizeBinding extends VectorizeBindingOptions {
  type: "vectorize";
}
/** Binding to the Worker version's metadata. */
interface VersionMetadataBinding {
  type: "version-metadata";
}
type VpcNetworkBindingOptions = {
  /** The tunnel ID of the Cloudflare Tunnel to route traffic through. Mutually exclusive with `networkId`. */
  tunnelId: string;
  /** Whether the VPC network is remote or not. */
  remote?: boolean;
} | {
  /** The network ID to route traffic through. Mutually exclusive with `tunnelId`. */
  networkId: string;
  /** Whether the VPC network is remote or not. */
  remote?: boolean;
};
/** Binding to a VPC network. */
type VpcNetworkBinding = VpcNetworkBindingOptions & {
  type: "vpc-network";
};
interface VpcServiceBindingOptions {
  /** The service ID of the VPC connectivity service. */
  id: string;
  /** Whether the VPC service is remote or not. */
  remote?: boolean;
}
/** Binding to a VPC service. */
interface VpcServiceBinding extends VpcServiceBindingOptions {
  type: "vpc-service";
}
interface WebSearchBindingOptions {
  /** Whether the Web Search binding should be remote or not in local development. */
  remote?: boolean;
}
/**
 * Cloudflare Web Search binding. There is exactly one shared web corpus, so
 * the binding is zero-config — only the variable name is required.
 */
interface WebSearchBinding extends WebSearchBindingOptions {
  type: "web-search";
}
interface WorkerBindingOptions {
  /** The name of the bound Worker. */
  workerName: string;
  /** The named export to bind to (defaults to the default export). */
  exportName?: string;
  /** Optional properties that will be made available to the service via `ctx.props`. */
  props?: Record<string, unknown>;
  /** Whether the service binding should be remote or not in local development. */
  remote?: boolean;
}
/**
 * Service binding (Worker-to-Worker). `workerName` is the name of the bound
 * Worker; `exportName` selects a named `WorkerEntrypoint` export (defaults to
 * the default export).
 *
 * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#service-bindings
 */
interface WorkerBinding extends WorkerBindingOptions {
  type: "worker";
}
/**
 * Service binding (Worker-to-Worker). `workerName` is the name of the bound
 * Worker; `exportName` selects a named `WorkerEntrypoint` export (defaults to
 * the default export).
 *
 * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#service-bindings
 */
interface TypedWorkerBinding<TConfig$1, TExportName$1 extends string> extends WorkerBinding {
  workerName: string;
  exportName: TExportName$1;
  /** @internal Carries the config type for inference */
  __config: TConfig$1;
}
/** Binding to a Worker Loader. */
interface WorkerLoaderBinding {
  type: "worker-loader";
}
interface WorkflowBindingOptions {
  /** The name of the Worker that defines the Workflow. */
  workerName: string;
  /** The exported class name of the Workflow. */
  exportName: string;
  /** Whether the Workflow binding should be remote or not in local development. */
  remote?: boolean;
}
/**
 * Binding to a Workflow. `workerName` is the name of the Worker that defines
 * the Workflow; `exportName` is the exported `WorkflowEntrypoint` class name.
 */
interface WorkflowBinding extends WorkflowBindingOptions {
  type: "workflow";
}
/**
 * Binding to a Workflow. `workerName` is the name of the Worker that defines
 * the Workflow; `exportName` is the exported `WorkflowEntrypoint` class name.
 */
interface TypedWorkflowBinding<TConfig$1, TExportName$1 extends string> extends WorkflowBinding {
  workerName: string;
  exportName: TExportName$1;
  /** @internal Carries the config type for inference */
  __config: TConfig$1;
}
interface Bindings {
  /**
   * Agent Memory namespace binding. Each binding is scoped to a namespace and
   * allows agents to persist and recall memory.
   */
  agentMemory(options: AgentMemoryBindingOptions): AgentMemoryBinding;
  /**
   * Binding to the Workers AI project.
   *
   * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#workers-ai
   */
  ai<TAiModelList extends AiModelListType = AiModels>(options?: AiBindingOptions): TypedAiBinding<TAiModelList>;
  /**
   * AI Search instance binding. Each binding is bound directly to a single
   * pre-existing instance within the "default" namespace.
   */
  aiSearch(options: AiSearchBindingOptions): AiSearchBinding;
  /**
   * AI Search namespace binding. Each binding is scoped to a namespace and
   * allows dynamic instance CRUD within it.
   */
  aiSearchNamespace(options: AiSearchNamespaceBindingOptions): AiSearchNamespaceBinding;
  /**
   * Binding to an Analytics Engine dataset.
   *
   * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#analytics-engine-datasets
   */
  analyticsEngineDataset(options?: AnalyticsEngineDatasetBindingOptions): AnalyticsEngineDatasetBinding;
  /**
   * Binding to an Artifacts instance. Artifacts provides git-compatible file
   * storage on Cloudflare Workers.
   */
  artifacts(options: ArtifactsBindingOptions): ArtifactsBinding;
  /**
   * Binding to the Worker's static assets.
   *
   * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#assets
   */
  assets(): AssetsBinding;
  /**
   * Binding to a headless browser usable from the Worker.
   *
   * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#browser-rendering
   */
  browser(options?: BrowserBindingOptions): BrowserBinding;
  /**
   * Binding to a D1 database.
   *
   * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#d1-databases
   */
  d1(options?: D1BindingOptions): D1Binding;
  /**
   * Binding to a Workers for Platforms dispatch namespace.
   *
   * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#dispatch-namespace-bindings-workers-for-platforms
   */
  dispatchNamespace(options: DispatchNamespaceBindingOptions): DispatchNamespaceBinding;
  /**
   * Binding to a Durable Object class. `workerName` is the name of the Worker
   * that defines the class; `exportName` is the exported class name.
   *
   * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#durable-objects
   */
  durableObject(options: DurableObjectBindingOptions): DurableObjectBinding;
  /** Binding to a Flagship feature-flag service. */
  flagship(options: FlagshipBindingOptions): FlagshipBinding;
  /**
   * Binding to a Hyperdrive configuration.
   *
   * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#hyperdrive
   */
  hyperdrive(options: HyperdriveBindingOptions): HyperdriveBinding;
  /**
   * Binding to Cloudflare Images.
   *
   * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#images
   */
  images(options?: ImagesBindingOptions): ImagesBinding$1;
  /**
   * Inline JSON value made available to the Worker on `env` under the
   * binding name.
   */
  json<T$1 extends Json>(value: T$1): JsonBinding<T$1>;
  /**
   * Binding to a Workers KV namespace.
   *
   * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#kv-namespaces
   */
  kv<TKey extends string = string>(options?: KvBindingOptions): TypedKvBinding<TKey>;
  /** Binding for forwarding logs to logfwdr. */
  logfwdr(options: LogfwdrBindingOptions): LogfwdrBinding;
  /** Binding to Cloudflare Media Transformations. */
  media(options?: MediaBindingOptions): MediaBinding$1;
  /**
   * Binding to an uploaded mTLS certificate.
   *
   * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#mtls-certificates
   */
  mtlsCertificate(options: MtlsCertificateBindingOptions): MtlsCertificateBinding;
  /** Binding to a Cloudflare Pipeline. */
  pipeline<TRecord extends PipelineRecord = PipelineRecord>(options: PipelineBindingOptions): TypedPipelineBinding<TRecord>;
  /**
   * Producer binding to a Cloudflare Queue.
   *
   * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#queues
   */
  queue<TBody = unknown>(options: QueueBindingOptions): TypedQueueBinding<TBody>;
  /**
   * Binding to an R2 bucket.
   *
   * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#r2-buckets
   */
  r2(options?: R2BindingOptions): R2Binding;
  /** Binding to a rate limiter. */
  rateLimit(options: RateLimitBindingOptions): RateLimitBinding;
  /**
   * Declares a secret that is required by your Worker, exposed on `env` under
   * the binding name.
   *
   * When defined, this binding:
   * - Replaces .dev.vars/.env/process.env inference for type generation
   * - Enables local dev validation with warnings for missing secrets
   *
   * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#secrets-configuration-property
   */
  secret(): SecretBinding;
  /** Binding to a Secrets Store secret. */
  secretsStoreSecret(options: SecretsStoreSecretBindingOptions): SecretsStoreSecretBinding;
  /**
   * Binding for sending email from inside the Worker.
   *
   * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#email-bindings
   */
  sendEmail(options?: SendEmailBindingOptions): SendEmailBinding;
  /** Binding to Cloudflare Stream. */
  stream(options?: StreamBindingOptions): StreamBinding$1;
  /**
   * Inline string value made available to the Worker on `env` under the
   * binding name.
   *
   * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#environment-variables
   */
  text<T$1 extends string>(value: T$1): TextBinding<T$1>;
  /**
   * Binding to a Vectorize index.
   *
   * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#vectorize-indexes
   */
  vectorize(options: VectorizeBindingOptions): VectorizeBinding;
  /** Binding to the Worker version's metadata. */
  versionMetadata(): VersionMetadataBinding;
  /** Binding to a VPC network. */
  vpcNetwork(options: VpcNetworkBindingOptions): VpcNetworkBinding;
  /** Binding to a VPC service. */
  vpcService(options: VpcServiceBindingOptions): VpcServiceBinding;
  /**
   * Cloudflare Web Search binding. There is exactly one shared web corpus, so
   * the binding is zero-config — only the variable name is required.
   */
  webSearch(options?: WebSearchBindingOptions): WebSearchBinding;
  /**
   * Service binding (Worker-to-Worker). `workerName` is the name of the bound
   * Worker; `exportName` selects a named `WorkerEntrypoint` export (defaults to
   * the default export).
   *
   * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#service-bindings
   */
  worker(options: WorkerBindingOptions): WorkerBinding;
  /** Binding to a Worker Loader. */
  workerLoader(): WorkerLoaderBinding;
}
declare const bindings: Bindings;
//#endregion
//#region src/triggers.d.ts
interface FetchTriggerOptions {
  /**
   * A route that your Worker should be published to.
   *
   * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#types-of-routes
   */
  pattern: string;
  /**
   * The DNS zone the pattern is attached to. Required when the
   * pattern is ambiguous.
   */
  zone?: string;
}
/**
 * Fetch trigger — a route that your Worker should be published to.
 *
 * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#types-of-routes
 */
interface FetchTrigger extends FetchTriggerOptions {
  type: "fetch";
}
interface QueueConsumerTriggerOptions {
  /** The name of the queue from which this consumer should consume. */
  name: string;
  /** The queue to send messages that failed to be consumed. */
  deadLetterQueue?: string;
  /** The maximum number of messages per batch. */
  maxBatchSize?: number;
  /** The maximum number of seconds to wait to fill a batch with messages. */
  maxBatchTimeout?: number;
  /**
   * The maximum number of concurrent consumer Worker invocations.
   * Leaving this unset will allow your consumer to scale to the
   * maximum concurrency needed to keep up with the message backlog.
   */
  maxConcurrency?: number | null;
  /** The maximum number of retries for each message. */
  maxRetries?: number;
  /** The number of seconds to wait before retrying a message. */
  retryDelay?: number;
  /** The number of milliseconds to wait for pulled messages to become visible again. */
  visibilityTimeoutMs?: number;
}
/**
 * Queue consumer trigger — invokes this Worker when messages arrive on the
 * named queue.
 *
 * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#queues
 */
interface QueueConsumerTrigger extends QueueConsumerTriggerOptions {
  type: "queue";
}
interface ScheduledTriggerOptions {
  /**
   * A "cron" definition to trigger a Worker's "scheduled" function.
   *
   * Lets you call Workers periodically, much like a cron job.
   *
   * More details here https://developers.cloudflare.com/workers/platform/cron-triggers
   */
  schedule: string;
}
/**
 * Scheduled (cron) trigger — invokes this Worker on the given schedules.
 *
 * More details here https://developers.cloudflare.com/workers/platform/cron-triggers
 */
interface ScheduledTrigger extends ScheduledTriggerOptions {
  type: "scheduled";
}
/**
 * Event triggers — fetch routes, queue consumers, and cron schedules
 * — that invoke this Worker. Construct entries with `triggers.fetch(...)`,
 * `triggers.queue(...)`, or `triggers.scheduled(...)`.
 *
 * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#triggers
 */
interface Triggers {
  /**
   * Fetch trigger — a route that your Worker should be published to.
   *
   * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#types-of-routes
   */
  fetch(options: FetchTriggerOptions): FetchTrigger;
  /**
   * Queue consumer trigger — invokes this Worker when messages arrive on the
   * named queue.
   *
   * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#queues
   */
  queue(options: QueueConsumerTriggerOptions): QueueConsumerTrigger;
  /**
   * Scheduled (cron) trigger — invokes this Worker on the given schedules.
   *
   * More details here https://developers.cloudflare.com/workers/platform/cron-triggers
   */
  scheduled(options: ScheduledTriggerOptions): ScheduledTrigger;
}
/**
 * Triggers builder for configuring event triggers.
 *
 * @example
 * ```typescript
 * import { defineWorker, triggers } from "@cloudflare/config";
 *
 * export default defineWorker({
 *   triggers: [
 *     triggers.fetch({ pattern: "example.com/*", zone: "example.com" }),
 *     triggers.queue({ name: "my-queue" }),
 *     triggers.scheduled({ schedule: "0 * * * *" }),
 *     triggers.scheduled({ schedule: "30 0 * * *" }),
 *   ],
 * });
 * ```
 */
declare const triggers: Triggers;
//#endregion
//#region src/exports.d.ts
/**
 * Declares a provisioned Durable Object class exported from this Worker.
 *
 * For more information about Durable Objects, see the documentation at
 * https://developers.cloudflare.com/workers/learning/using-durable-objects
 *
 * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#durable-objects
 */
interface DurableObjectCreatedExportOptions {
  state?: "created";
  /**
   * Storage backend for the Durable Object.
   *
   * - `"sqlite"`: selects the SQLite-backed storage engine
   *   (recommended for new classes).
   * - `"legacy-kv"`: selects the legacy key-value storage engine.
   */
  storage: "sqlite" | "legacy-kv";
}
/**
 * Retire a provisioned Durable Object namespace whose class has
 * been removed from code.
 *
 * During deploy, the class must not be exported in the uploaded code, and no
 * other Worker may hold a `durableObject` binding to the namespace.
 */
interface DurableObjectDeletedExportOptions {
  state: "deleted";
}
/**
 * Rename a provisioned Durable Object namespace's class. The
 * `renamedTo` value must also appear as a live (`state: "created"`)
 * `durableObject` entry in the same `exports` map.
 */
interface DurableObjectRenamedExportOptions {
  state: "renamed";
  /**
   * The destination class name. Must be a valid JavaScript identifier and
   * must appear as a live (`state: "created"`) `durableObject` entry in the
   * same `exports` map.
   */
  renamedTo: string;
}
/**
 * Transfer ownership of a Durable Object namespace to another Worker in the same account.
 * The target Worker must first deploy an `expectingTransfer` entry naming this Worker via `transferFrom`.
 */
interface DurableObjectTransferredExportOptions {
  state: "transferred";
  /**
   * The destination Worker. Must reference a Worker in the same account.
   */
  transferredTo: string;
}
/**
 * Prepare to receive cross-Worker Durable Object transfer.
 * Once the source Worker's `transferred` export is deployed, this entry becomes a normal live `durable-object` export.
 */
interface DurableObjectExpectingTransferExportOptions {
  state: "expecting-transfer";
  storage: "sqlite" | "legacy-kv";
  /**
   * The source Worker for the two-phase cross-Worker transfer.
   */
  transferFrom: string;
}
interface DurableObjectCreatedExport extends DurableObjectCreatedExportOptions {
  type: "durable-object";
}
interface DurableObjectDeletedExport extends DurableObjectDeletedExportOptions {
  type: "durable-object";
}
interface DurableObjectRenamedExport extends DurableObjectRenamedExportOptions {
  type: "durable-object";
}
interface DurableObjectTransferredExport extends DurableObjectTransferredExportOptions {
  type: "durable-object";
}
interface DurableObjectExpectingTransferExport extends DurableObjectExpectingTransferExportOptions {
  type: "durable-object";
}
interface WorkerEntrypointExportOptions {
  cache?: {
    /** Whether cache is enabled for this entrypoint. */
    enabled: boolean;
  };
}
interface WorkerEntrypointExport extends WorkerEntrypointExportOptions {
  type: "worker";
}
/**
 * Configuration for named exports declared by the Worker. Each entry's
 * key is the exported class name; the value configures the export.
 */
interface Exports {
  /**
   * Declares a Durable Object class defined by this Worker.
   *
   * For more information about Durable Objects, see the documentation at
   * https://developers.cloudflare.com/workers/learning/using-durable-objects
   *
   * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#durable-objects
   */
  durableObject(options: DurableObjectCreatedExportOptions): DurableObjectCreatedExport;
  /**
   * Retire a provisioned Durable Object namespace whose class has been removed from code.
   */
  durableObject(options: DurableObjectDeletedExportOptions): DurableObjectDeletedExport;
  /**
   * Rename a provisioned Durable Object namespace's class.
   */
  durableObject(options: DurableObjectRenamedExportOptions): DurableObjectRenamedExport;
  /**
   * Transfer ownership of a Durable Object namespace to another Worker in the same account.
   */
  durableObject(options: DurableObjectTransferredExportOptions): DurableObjectTransferredExport;
  /**
   * Prepare to receive cross-Worker Durable Object transfer.
   * The source Worker must follow up with a deployment containing a `transferred` export to commit the transfer.
   */
  durableObject(options: DurableObjectExpectingTransferExportOptions): DurableObjectExpectingTransferExport;
  /** Declares a WorkerEntrypoint export defined by this Worker. */
  worker(options?: WorkerEntrypointExportOptions): WorkerEntrypointExport;
}
/**
 * Exports builder for configuring Worker exports.
 *
 * @example
 * ```typescript
 * import { defineWorker, exports } from "@cloudflare/config";
 *
 * export default defineWorker({
 *   exports: {
 *     MyDurableObject: exports.durableObject({ storage: "sqlite" }),
 *     OldClass:        exports.durableObject({ state: "deleted" }),
 *     OldName:         exports.durableObject({ state: "renamed", renamedTo: "NewName" }),
 *     Outgoing:        exports.durableObject({ state: "transferred", transferredTo: "target-worker" }),
 *     Incoming:        exports.durableObject({ state: "expecting-transfer", storage: "sqlite", transferFrom: "source-worker" }),
 *   },
 * });
 * ```
 */
declare const exports: Exports;
//#endregion
//#region src/types.d.ts
/**
 * Union of all binding definitions accepted in `env`.
 */
type Binding = AgentMemoryBinding | AiBinding | AiSearchBinding | AiSearchNamespaceBinding | AnalyticsEngineDatasetBinding | ArtifactsBinding | AssetsBinding | BrowserBinding | D1Binding | DispatchNamespaceBinding | DurableObjectBinding | FlagshipBinding | HyperdriveBinding | ImagesBinding$1 | JsonBinding | KvBinding | LogfwdrBinding | MediaBinding$1 | MtlsCertificateBinding | PipelineBinding | QueueBinding | R2Binding | RateLimitBinding | SecretBinding | SecretsStoreSecretBinding | SendEmailBinding | StreamBinding$1 | TextBinding | UnsafeBinding | VectorizeBinding | VersionMetadataBinding | VpcNetworkBinding | VpcServiceBinding | WebSearchBinding | WorkerBinding | WorkerLoaderBinding;
/**
 * Union of all trigger definitions accepted in `triggers`.
 */
type Trigger = FetchTrigger | QueueConsumerTrigger | ScheduledTrigger;
/**
 * Union of all export definitions accepted in `exports`. Worker entries
 * configure WorkerEntrypoint exports. Durable Object entries configure live
 * classes and tombstone lifecycle operations.
 */
type Export = DurableObjectCreatedExport | DurableObjectDeletedExport | DurableObjectRenamedExport | DurableObjectTransferredExport | DurableObjectExpectingTransferExport | WorkerEntrypointExport;
/**
 * Worker configuration. This is the input shape passed to
 * [`defineWorker`](https://developers.cloudflare.com/workers/wrangler/configuration/).
 *
 * Fields are validated at runtime by `InputWorkerSchema` and normalised before
 * being passed to downstream tooling.
 */
interface UserConfig {
  /**
   * The name of your Worker.
   */
  name: string;
  /**
   * This is the ID of the account associated with your zone.
   * You might have more than one account, so make sure to use
   * the ID of the account associated with the zone/route you
   * provide, if you provide one. It can also be specified through
   * the CLOUDFLARE_ACCOUNT_ID environment variable.
   */
  accountId?: string;
  /**
   * A date in the form yyyy-mm-dd, which will be used to determine
   * which version of the Workers runtime is used.
   *
   * More details at https://developers.cloudflare.com/workers/configuration/compatibility-dates
   */
  compatibilityDate: string;
  /**
   * A list of flags that enable features from upcoming features of
   * the Workers runtime, usually used together with `compatibilityDate`.
   *
   * More details at https://developers.cloudflare.com/workers/configuration/compatibility-flags/
   *
   * @default []
   */
  compatibilityFlags?: string[];
  /**
   * The entrypoint module that will be executed.
   *
   * May be either a path string (e.g. `"./src/index.ts"`) or a module
   * namespace imported with the `cf-worker` import attribute.
   *
   * @example
   * ```ts
   * import * as entrypoint from "./src" with { type: "cf-worker" };
   * export default defineWorker({ entrypoint });
   * ```
   */
  entrypoint?: string | WorkerModule;
  /**
   * Specify the directory of static assets to deploy/serve.
   *
   * More details at https://developers.cloudflare.com/workers/frameworks/
   *
   * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#assets
   */
  assets?: {
    /** How to handle HTML requests. */
    htmlHandling?: "auto-trailing-slash" | "drop-trailing-slash" | "force-trailing-slash" | "none";
    /** How to handle requests that do not match an asset. */
    notFoundHandling?: "single-page-application" | "404-page" | "none";
    /**
     * Matches will be routed to the User Worker, and matches to negative rules will go to the Asset Worker.
     *
     * Can also be `true`, indicating that every request should be routed to the User Worker.
     */
    runWorkerFirst?: string[] | boolean;
  };
  /**
   * Custom domains that your Worker should be published to.
   *
   * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#types-of-routes
   */
  domains?: string[];
  /**
   * Event triggers — fetch routes, queue consumers, and cron schedules
   * — that invoke this Worker. Construct entries with `triggers.fetch(...)`,
   * `triggers.queue(...)`, or `triggers.scheduled(...)`.
   *
   * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#triggers
   */
  triggers?: Trigger[];
  /**
   * A list of Tail Workers that are bound to this Worker.
   *
   * `@cloudflare/config` unifies regular and streaming tail consumers under
   * a single field; pass `streaming: true` to forward streaming tail events.
   *
   * @default []
   */
  tailConsumers?: Array<{
    /** The name of the service tail events will be forwarded to. */
    workerName: string;
    /** Whether to stream tail events in real time. */
    streaming?: boolean;
  }>;
  /**
   * Specify the cache behavior of the Worker.
   */
  cache?: {
    /** If cache is enabled for this Worker. */
    enabled: boolean;
    /** Whether cached assets may be reused across Worker versions. */
    crossVersionCache?: boolean;
  };
  /**
   * Specify how the Worker should be located to minimize round-trip time.
   *
   * More details: https://developers.cloudflare.com/workers/platform/smart-placement/
   */
  placement?: {
    mode: "off" | "smart";
    hint?: string;
  } | {
    mode?: "targeted";
    region: string;
  } | {
    mode?: "targeted";
    host: string;
  } | {
    mode?: "targeted";
    hostname: string;
  };
  /**
   * Specify limits for runtime behavior.
   * Only supported for the "standard" Usage Model.
   *
   * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#limits
   */
  limits?: {
    /** Maximum allowed CPU time for a Worker's invocation in milliseconds. */
    cpuMs?: number;
    /** Maximum allowed number of fetch requests that a Worker's invocation can execute. */
    subrequests?: number;
  };
  /**
   * Send Trace Events from this Worker to Workers Logpush.
   *
   * This will not configure a corresponding Logpush job automatically.
   *
   * For more information about Workers Logpush, see:
   * https://blog.cloudflare.com/logpush-for-workers/
   */
  logpush?: boolean;
  /**
   * Specify the observability behavior of the Worker.
   *
   * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#observability
   */
  observability?: {
    /** If observability is enabled for this Worker. */
    enabled?: boolean;
    /** The sampling rate. */
    headSamplingRate?: number;
    logs?: {
      enabled?: boolean;
      /** The sampling rate. */
      headSamplingRate?: number;
      /** Set to false to disable invocation logs. */
      invocationLogs?: boolean;
      /**
       * If logs should be persisted to the Cloudflare observability platform where they can be queried in the dashboard.
       *
       * @default true
       */
      persist?: boolean;
      /**
       * What destinations logs emitted from the Worker should be sent to.
       *
       * @default []
       */
      destinations?: string[];
    };
    traces?: {
      enabled?: boolean;
      /** The sampling rate. */
      headSamplingRate?: number;
      /**
       * If traces should be persisted to the Cloudflare observability platform where they can be queried in the dashboard.
       *
       * @default true
       */
      persist?: boolean;
      /**
       * What destinations traces emitted from the Worker should be sent to.
       *
       * @default []
       */
      destinations?: string[];
    };
  };
  /**
   * Whether we use `<name>.<subdomain>.workers.dev` to
   * test and deploy your Worker.
   *
   * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#workersdev
   *
   * @default true
   */
  workersDev?: boolean;
  /**
   * Whether we use `<version>-<name>.<subdomain>.workers.dev` to
   * serve Preview URLs for your Worker.
   *
   * @default false
   */
  previewUrls?: boolean;
  /**
   * Specify the compliance region mode of the Worker.
   *
   * Although if the user does not specify a compliance region, the default is `public`,
   * it can be set to `undefined` in configuration to delegate to the CLOUDFLARE_COMPLIANCE_REGION environment variable.
   */
  complianceRegion?: "public" | "fedramp-high";
  /**
   * Designates this Worker as an internal-only "first-party" Worker.
   *
   * @internal
   */
  firstPartyWorker?: boolean;
  /**
   * "Unsafe" tables for runtime features that aren't directly supported by
   * this configuration. Values are forwarded verbatim in the Worker's
   * upload metadata.
   *
   * @default {}
   */
  unsafe?: {
    /**
     * Arbitrary key/value pairs that will be included in the uploaded metadata.  Values specified
     * here will always be applied to metadata last, so can add new or override existing fields.
     */
    metadata?: Record<string, unknown>;
    /**
     * Used for internal capnp uploads for the Workers runtime.
     */
    capnp?: {
      basePath: string;
      sourceSchemas: string[];
      compiledSchema?: never;
    } | {
      basePath?: never;
      sourceSchemas?: never;
      compiledSchema: string;
    };
  };
  /**
   * Bindings exposed on the Worker's `env` object. Construct entries with
   * `bindings.kv(...)`, `bindings.r2(...)`, etc.
   */
  env?: Record<string, Binding>;
  /**
   * Configuration for named exports declared by the Worker. Each entry's
   * key is the exported class name; the value configures the export.
   *
   * Only one export kind is currently supported:
   *
   * - Construct entries with `exports.durableObject(...)`.
   * - Declares Durable Object classes exported from this Worker.
   *   For more information about Durable Objects, see the documentation at
   *   https://developers.cloudflare.com/workers/learning/using-durable-objects.
   *   For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#durable-objects.
   */
  exports?: Record<string, Export>;
}
//#endregion
//#region src/worker-definition.d.ts
interface ConfigContext {
  /**
   * The mode the config is being evaluated in.
   * Set via the `--mode` CLI flag.
   * In Vite the mode defaults to `development` in `vite dev` and `production` in `vite build` ([more info](https://vite.dev/guide/env-and-mode.html#modes)).
   * In Wrangler the mode defaults to `undefined`.
   */
  mode: string | undefined;
}
declare const CONFIG: unique symbol;
/**
 * Base shape of a Worker definition. Carries the resolved config and the
 * untyped cross-worker binding helpers.
 */
interface WorkerDefinition<TConfig$1 extends UserConfig = UserConfig> extends Pick<Bindings, "durableObject" | "worker"> {
  [CONFIG]: TConfig$1 | Promise<TConfig$1> | ((ctx: ConfigContext) => TConfig$1 | Promise<TConfig$1>);
}
/**
 * Worker definition with typed cross-worker binding helpers.
 */
interface TypedWorkerDefinition<TConfig$1 extends UserConfig, TWorkerName extends string = InferWorkerName<TConfig$1>> extends WorkerDefinition<TConfig$1> {
  /**
   * Binding to a Durable Object class. `workerName` is the name of the Worker
   * that defines the class; `exportName` is the exported class name.
   *
   * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#durable-objects
   */
  durableObject<TExportName$1 extends InferDurableNamespaces<TConfig$1>>(options: {
    workerName: TWorkerName;
    exportName: TExportName$1;
  }): TypedDurableObjectBinding<TConfig$1, TExportName$1>;
  /**
   * Service binding (Worker-to-Worker). `workerName` is the name of the bound
   * Worker; `exportName` selects a named `WorkerEntrypoint` export (defaults to
   * the default export).
   *
   * For reference, see https://developers.cloudflare.com/workers/wrangler/configuration/#service-bindings
   */
  worker<TExportName$1 extends InferWorkerEntrypointExports<TConfig$1> | undefined = undefined>(options: {
    workerName: TWorkerName;
    exportName?: TExportName$1;
    props?: Record<string, unknown>;
    remote?: boolean;
  }): TypedWorkerBinding<TConfig$1, TExportName$1 extends string ? TExportName$1 : "default">;
}
type UserConfigExport<T$1 extends UserConfig = UserConfig> = T$1 | Promise<T$1> | ((ctx: ConfigContext) => T$1 | Promise<T$1>);
declare function defineWorker<const T$1 extends UserConfig>(config: (ctx: ConfigContext) => (UserConfig & T$1) | Promise<UserConfig & T$1>): TypedWorkerDefinition<T$1>;
declare function defineWorker<const T$1 extends UserConfig>(config: (UserConfig & T$1) | Promise<UserConfig & T$1>): TypedWorkerDefinition<T$1>;
//#endregion
//#region src/inference.d.ts
/**
 * The Worker's entry module, imported with the `{ type: "cf-worker" }` import attribute
 * @example
 * ```ts
 * import * as entrypoint from "./src" with { type: "cf-worker" };
 * ```
 */
type WorkerModule = Record<string, any>;
/**
 * Default module type representing an unknown Worker's exports.
 * - default export can be `ExportedHandler` or a `WorkerEntrypoint` class constructor
 * - named exports can be `WorkerEntrypoint`, `DurableObject`, or `WorkflowEntrypoint` class constructors
 */
interface DefaultModule {
  default?: ExportedHandler | Constructor<Rpc.WorkerEntrypointBranded>;
  [key: string]: ExportedHandler | Constructor<Rpc.WorkerEntrypointBranded> | Constructor<Rpc.DurableObjectBranded> | Constructor<Rpc.WorkflowEntrypointBranded> | undefined;
}
/**
 * Represents a class constructor that creates instances of TInstance.
 */
type Constructor<TInstance> = new (...args: any[]) => TInstance;
/**
 * Extracts the instance type from a class constructor if it extends `TInstance`.
 */
type ExtractInstance<T$1, TInstance> = T$1 extends Constructor<TInstance> ? InstanceType<T$1> : never;
/**
 * Mapping from binding type literals to Cloudflare runtime types.
 *
 * Entries fall into two groups:
 * - Parameterized bindings (ai, json, kv, pipeline, queue, text) refine their
 *   runtime type from the binding instance via nominal matches against the
 *   `Typed*Binding` / `JsonBinding` / `TextBinding` interfaces from
 *   `./bindings`. When `TBinding` does not match, the entry falls back to the
 *   unparameterized runtime type.
 * - Non-parameterized bindings map their type literal directly to a runtime
 *   type and ignore `TBinding`.
 *
 * IMPORTANT: The right-hand-side identifiers in this map (e.g. `KVNamespace`,
 * `ImagesBinding`, `Fetcher`) must resolve to the ambient runtime types from
 * `@cloudflare/workers-types`, not to local config interfaces. Several local
 * binding interfaces in `./bindings.ts` (`ImagesBinding`, `MediaBinding`,
 * `StreamBinding`) share names with ambient globals — importing those local
 * types into this file silently shadows the globals and breaks `InferEnv`.
 * Only import the `Typed*Binding`, `JsonBinding`, and `TextBinding` interfaces
 * from `./bindings` (their names do not collide with ambient globals); never
 * widen the import to a wildcard or to the plain `*Binding` interfaces.
 */
interface BindingTypeMap<TBinding> {
  ai: TBinding extends TypedAiBinding<infer T> ? Ai<T> : Ai;
  json: TBinding extends JsonBinding<infer T> ? T : never;
  kv: TBinding extends TypedKvBinding<infer T> ? KVNamespace<T> : KVNamespace;
  pipeline: TBinding extends TypedPipelineBinding<infer T> ? Pipeline<T> : Pipeline;
  queue: TBinding extends TypedQueueBinding<infer T> ? Queue<T> : Queue;
  text: TBinding extends TextBinding<infer T> ? T : never;
  "agent-memory": AgentMemoryNamespace;
  "ai-search": AiSearchInstance;
  "ai-search-namespace": AiSearchNamespace;
  "analytics-engine-dataset": AnalyticsEngineDataset;
  artifacts: Artifacts;
  assets: Fetcher;
  browser: BrowserRun;
  d1: D1Database;
  "dispatch-namespace": DispatchNamespace;
  "durable-object": DurableObjectNamespace;
  flagship: Flagship;
  hyperdrive: Hyperdrive;
  images: ImagesBinding;
  logfwdr: any;
  media: MediaBinding;
  "mtls-certificate": Fetcher;
  "rate-limit": RateLimit;
  r2: R2Bucket;
  secret: string;
  "secrets-store-secret": SecretsStoreSecret;
  "send-email": SendEmail;
  stream: StreamBinding;
  vectorize: VectorizeIndex;
  "version-metadata": WorkerVersionMetadata;
  "vpc-service": Fetcher;
  "vpc-network": Fetcher;
  "web-search": WebSearch;
  worker: Fetcher;
  "worker-loader": WorkerLoader;
  workflow: Workflow;
}
type InferBindingType<TBinding> = TBinding extends TypedWorkerBinding<infer TConfig, infer TExportName extends string> ? InferMainModule<TConfig> extends infer TModule extends WorkerModule ? TExportName extends keyof TModule ? TModule[TExportName] extends Constructor<any> ? Fetcher<ExtractInstance<TModule[TExportName], Rpc.WorkerEntrypointBranded>> : Fetcher : never : never : TBinding extends TypedDurableObjectBinding<infer TConfig, infer TExportName extends string> ? InferMainModule<TConfig> extends infer TModule extends WorkerModule ? TExportName extends keyof TModule ? DurableObjectNamespace<ExtractInstance<TModule[TExportName], Rpc.DurableObjectBranded>> : never : never : TBinding extends TypedWorkflowBinding<infer TConfig, infer TExportName extends string> ? InferMainModule<TConfig> extends infer TModule extends WorkerModule ? TExportName extends keyof TModule ? ExtractInstance<TModule[TExportName], Rpc.WorkflowEntrypointBranded> extends infer TWorkflow ? TWorkflow extends {
  run(event: {
    payload: infer P;
  }, step: any): any;
} ? Workflow<P> : Workflow : Workflow : never : never : TBinding extends {
  type: `unsafe:${string}`;
} ? any : TBinding extends {
  type: infer K extends keyof BindingTypeMap<TBinding>;
} ? BindingTypeMap<TBinding>[K] : never;
/**
 * Infer the Worker name from a config.
 *
 * @example
 * ```typescript
 * import { defineWorker } from "@cloudflare/config";
 * import type { InferDurableNamespaces, UnwrapConfig } from "@cloudflare/config";
 *
 * const config = defineWorker({ name: "my-worker", ... });
 *
 * type WorkerConfig = UnwrapConfig<typeof config>;
 * // Inferred as: "my-worker"
 * type Name = InferWorkerName<WorkerConfig>;
 * ```
 */
type InferWorkerName<TUnwrappedConfig$1> = TUnwrappedConfig$1 extends {
  name: infer TName extends string;
} ? TName : never;
/**
 * Infer export names from a config's exports, optionally filtered by type.
 * When TExportType is `string` (default), returns all export names.
 * When TExportType is a specific literal like `"durable-object"` or `"workflow"`,
 * returns only exports of that type.
 */
type InferExportsByType<TUnwrappedConfig$1, TExportType extends string = string> = TUnwrappedConfig$1 extends {
  exports: infer TExports extends Record<string, {
    type: string;
  }>;
} ? { [K in keyof TExports]: TExports[K] extends {
  type: TExportType;
} ? K & string : never }[keyof TExports] : never;
/**
 * Infer `WorkerEntrypoint` export names from a config.
 * Returns named module exports that are not declared as type `"durable-object"` or `"workflow"` in `exports`.
 * Excludes `"default"` since `exportName` should only be provided for named exports.
 */
type InferWorkerEntrypointExports<TUnwrappedConfig$1> = Exclude<keyof InferMainModule<TUnwrappedConfig$1> & string, "default" | InferExportsByType<TUnwrappedConfig$1, "durable-object" | "workflow">>;
/**
 * Unwrap function and promise types to get the underlying config.
 * Use this to normalize a config before passing it to other inference utilities.
 */
type UnwrapConfig<TConfig$1> = TConfig$1 extends WorkerDefinition<infer TUnwrappedConfig> ? TUnwrappedConfig : TConfig$1 extends UserConfigExport<infer TUnwrappedConfig> ? TUnwrappedConfig : never;
/**
 * Infer the `Env` interface type from a Worker config.
 *
 * Transforms a config object's `env` bindings into their
 * corresponding Cloudflare runtime types.
 *
 * @example
 * ```typescript
 * import { defineWorker, bindings } from "@cloudflare/config";
 * import type { InferEnv, UnwrapConfig } from "@cloudflare/config";
 *
 * const config = defineWorker({
 *   env: {
 *     MY_JSON: bindings.json({ id: string }),
 *     MY_KV: bindings.kv(),
 *   },
 * });
 *
 * type WorkerConfig = UnwrapConfig<typeof config>;
 * // Inferred as: { MY_JSON: { id: string }; MY_KV: KVNamespace }
 * export type Env = InferEnv<WorkerConfig>;
 * ```
 */
type InferEnv<TUnwrappedConfig$1> = TUnwrappedConfig$1 extends {
  env: infer TEnv extends Record<string, any>;
} ? { [K in keyof TEnv]: InferBindingType<TEnv[K]> } : never;
/**
 * Infer the Durable Object namespace names from a Worker config's exports.
 * Returns a union of export names that declare a *live* Durable Object —
 * `type: "durable-object"` with `state` either omitted, `"created"`, or
 * `"expecting-transfer"`. Tombstone entries (`deleted`, `renamed`,
 * `transferred`) are excluded because they retire the namespace and a
 * binding to a tombstoned class would fail at deploy time.
 *
 * @example
 * ```typescript
 * import { defineWorker } from "@cloudflare/config";
 * import type { InferDurableNamespaces, UnwrapConfig } from "@cloudflare/config";
 *
 * const config = defineWorker({
 *   exports: {
 *     MyDurableObject: { type: "durable-object", storage: "sqlite" },
 *     OldGone:         { type: "durable-object", state: "deleted" },
 *   },
 * });
 *
 * type WorkerConfig = UnwrapConfig<typeof config>;
 * // Inferred as: "MyDurableObject" (the deleted tombstone is excluded)
 * type DurableNamespaces = InferDurableNamespaces<WorkerConfig>;
 * ```
 */
type InferDurableNamespaces<TUnwrappedConfig$1> = TUnwrappedConfig$1 extends {
  exports: infer TExports extends Record<string, {
    type: string;
  }>;
} ? { [K in keyof TExports]: TExports[K] extends {
  type: "durable-object";
} ? TExports[K] extends {
  state: "deleted" | "renamed" | "transferred";
} ? never : K & string : never }[keyof TExports] : never;
/**
 * Infer the main module type from a Worker config's entrypoint.
 * If entrypoint is a module namespace object, returns that type.
 * If entrypoint is a `string` or not present, returns `DefaultModule` as a fallback.
 */
type InferMainModule<TUnwrappedConfig$1> = TUnwrappedConfig$1 extends {
  entrypoint: infer TModule extends WorkerModule;
} ? TModule : DefaultModule;
//#endregion
//#endregion
export { AgentMemoryBinding, AiBinding, AiSearchBinding, AiSearchNamespaceBinding, AnalyticsEngineDatasetBinding, ArtifactsBinding, AssetsBinding, Bindings, BrowserBinding, ConfigContext, D1Binding, DispatchNamespaceBinding, DurableObjectBinding, DurableObjectCreatedExport, DurableObjectDeletedExport, DurableObjectExpectingTransferExport, DurableObjectRenamedExport, DurableObjectTransferredExport, Exports, FetchTrigger, FlagshipBinding, HyperdriveBinding, ImagesBinding$1 as ImagesBinding, InferDurableNamespaces, InferEnv, InferMainModule, JsonBinding, KvBinding, LogfwdrBinding, MediaBinding$1 as MediaBinding, MtlsCertificateBinding, PipelineBinding, QueueBinding, QueueConsumerTrigger, R2Binding, RateLimitBinding, ScheduledTrigger, SecretBinding, SecretsStoreSecretBinding, SendEmailBinding, StreamBinding$1 as StreamBinding, TextBinding, Triggers, TypedAiBinding, TypedDurableObjectBinding, TypedKvBinding, TypedPipelineBinding, TypedQueueBinding, TypedWorkerBinding, TypedWorkerDefinition, TypedWorkflowBinding, UnsafeBinding, UnwrapConfig, UserConfig, UserConfigExport, VectorizeBinding, VersionMetadataBinding, VpcNetworkBinding, VpcServiceBinding, WebSearchBinding, WorkerBinding, WorkerEntrypointExport, WorkerEntrypointExportOptions, WorkerLoaderBinding, WorkflowBinding, bindings, defineWorker, exports, triggers };
//# sourceMappingURL=experimental-config.d.mts.map