import * as Effect from "effect/Effect";
import type { Input } from "../../Input.ts";
/**
* Shared HTTP-binding scaffolding for the ApiGateway capabilities
* (`CreateApiKeyHttp`, `GetUsageHttp`, `FlushStageCacheHttp`, …).
*
* NOT exported from `index.ts` — this is internal plumbing, like
* Cloudflare's `BucketHttp.ts`.
*
* API Gateway's control plane authorizes by HTTP verb (`apigateway:GET`,
* `apigateway:POST`, …) against path-shaped ARNs
* (`arn:aws:apigateway:{region}::/usageplans/{id}/keys`), so every
* capability reduces to { verb, ARN paths, operation }. Everything else —
* the runtime guard, host resolution, region lookup, and the
* `host.bind` policy registration — is identical and lives here.
*/
/** API Gateway authorizes control-plane calls by HTTP verb. */
export type ApiGatewayIamVerb = "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
/**
* Deploy-time half of an ApiGateway HTTP binding: resolves the host
* Function, and registers an IAM policy statement for
* `apigateway:{verb}` over the given API Gateway ARN paths. A no-op at
* runtime (`__ALCHEMY_RUNTIME__`) and for non-Lambda hosts.
*
* @param cap fully-qualified capability name, e.g. `AWS.ApiGateway.GetUsage`
* @param target the bound resource (or a string literal for account-scoped
* capabilities) — used for the binding's identity label
* @param verb the API Gateway IAM verb the capability requires
* @param paths builds the ARN path list once the deploy region is known;
* entries may be `Output`-derived (e.g. `Output.interpolate`)
*/
export declare const registerApiGatewayBinding: (opts: {
cap: string;
target: unknown;
verb: ApiGatewayIamVerb;
paths: (region: string) => ReadonlyArray>;
}) => Effect.Effect;
//# sourceMappingURL=BindingHttp.d.ts.map