import * as Effect from "effect/Effect"; import type * as Output from "../../Output.ts"; import type { App } from "./App.ts"; /** * Shared scaffolding for Amplify's app-scoped HTTP bindings. Every Amplify * data-plane operation takes the `appId` of the {@link App} it acts on and is * authorized by a single `amplify:*` IAM action over an app-derived ARN — this * factory captures that shape once so each `{Op}Http.ts` is a thin one-call * export. * * NOT exported from `index.ts` — internal scaffolding only. */ export interface AmplifyHttpBindingOptions { /** Capability name, e.g. `"StartJob"` — used for the bind sid and span name. */ name: string; /** The distilled Amplify operation implementing the capability. */ operation: Effect.Effect<(input: I) => Effect.Effect, never, R>; /** IAM actions granted to the host, e.g. `["amplify:StartJob"]`. */ actions: string[]; /** IAM resource ARNs (derived from the bound app) the actions apply to. */ resources: (app: App) => Array>; } /** * Build the init Effect of an Amplify app-scoped HTTP binding: resolves the * operation once at layer init, grants the IAM statement on the binding host * at deploy time, and returns a runtime callable that injects the bound app's * `appId` into every request. */ export declare const makeAmplifyHttpBinding: (options: AmplifyHttpBindingOptions) => Effect.Effect<(app: App) => Effect.Effect<(request: Omit) => Effect.Effect, never, never>, never, R>; //# sourceMappingURL=BindingHttp.d.ts.map