import * as Effect from "effect/Effect"; import type { Budget } from "./Budget.ts"; import type { BudgetAction } from "./BudgetAction.ts"; /** * Shared scaffolding for the AWS Budgets HTTP bindings. * * NOT exported from `index.ts` — every `{Op}Http.ts` in this service is a * thin `Layer.effect(Cap, make…HttpBinding({ … }))` over one of the two * builders below. Everything except the operation, the IAM action list, and * the injected identifiers (`AccountId` + `BudgetName`, plus `ActionId` for * action-scoped operations) is boilerplate. * * Budgets is a global service — its ARNs have no region component and the * endpoint resolver routes every standard-partition region to the global * endpoint. */ /** * Build the impl Effect for a budget-scoped operation: the runtime callable * injects the bound {@link Budget}'s `AccountId` and `BudgetName` and the * deploy-time half grants `actions` on the budget ARN (or, for budget-action * listings, on `budget/{name}/action/*` via `actionWildcard`). */ export declare const makeBudgetHttpBinding: (options: { /** Fully-qualified binding tag, e.g. `AWS.Budgets.DescribeBudget`. */ tag: string; /** The distilled operation; `AccountId`/`BudgetName` are injected. */ operation: Effect.Effect<(input: I) => Effect.Effect, never, R>; /** IAM actions granted on the budget ARN. */ actions: readonly string[]; /** * Grant on `{budgetArn}/action/*` instead of the budget ARN — the * budget-action listing operations authorize on the budgetAction resource * type, whose IDs are unknowable at deploy time. */ actionWildcard?: boolean; }) => Effect.Effect<(budget: Budget) => Effect.Effect<(request?: Omit | undefined) => Effect.Effect, never, never>, never, R>; /** * Build the impl Effect for a budget-action-scoped operation: the runtime * callable injects the bound {@link BudgetAction}'s `AccountId`, * `BudgetName`, and `ActionId`, and the deploy-time half grants `actions` on * the action ARN. */ export declare const makeBudgetActionHttpBinding: (options: { /** Fully-qualified binding tag, e.g. `AWS.Budgets.ExecuteBudgetAction`. */ tag: string; /** The distilled operation; the action identifiers are injected. */ operation: Effect.Effect<(input: I) => Effect.Effect, never, R>; /** IAM actions granted on the budget action ARN. */ actions: readonly string[]; }) => Effect.Effect<(action: BudgetAction) => Effect.Effect<(request: Omit) => Effect.Effect, never, never>, never, R>; //# sourceMappingURL=BindingHttp.d.ts.map