1import type * as budgets from "@distilled.cloud/aws/budgets";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { BudgetAction } from "./BudgetAction.ts";
5
6/**
7 * Request for {@link DescribeBudgetActionHistories} — the bound action's
8 * `AccountId`, `BudgetName`, and `ActionId` are injected automatically.
9 */
10export interface DescribeBudgetActionHistoriesRequest extends Omit<
11 budgets.DescribeBudgetActionHistoriesRequest,
12 "AccountId" | "BudgetName" | "ActionId"
13> {}
14
15/**
16 * Runtime binding for `budgets:DescribeBudgetActionHistories`.
17 *
18 * Bind this operation to a {@link BudgetAction} to read its event history —
19 * creations, updates, and executions with their statuses — e.g. to audit
20 * when a kill-switch fired and whether it succeeded. Provide the
21 * implementation with
22 * `Effect.provide(AWS.Budgets.DescribeBudgetActionHistoriesHttp)`.
23 * ### Reading Budget Actions
24 * **Example:** Read an Action's Event History
25 * ```typescript
26 * // init — bind the operation to the action
27 * const histories = yield* AWS.Budgets.DescribeBudgetActionHistories(action);
28 *
29 * // runtime
30 * const result = yield* histories({});
31 * const executions = result.ActionHistories.filter(
32 * (h) => h.EventType === "EXECUTE_ACTION",
33 * );
34 * ```
35 *
36 * @binding
37 */
38export interface DescribeBudgetActionHistories extends Binding.Service<
39 DescribeBudgetActionHistories,
40 "AWS.Budgets.DescribeBudgetActionHistories",
41 (
42 action: BudgetAction,
43 ) => Effect.Effect<
44 (
45 request: DescribeBudgetActionHistoriesRequest,
46 ) => Effect.Effect<
47 budgets.DescribeBudgetActionHistoriesResponse,
48 budgets.DescribeBudgetActionHistoriesError
49 >
50 >
51> {}
52
53export const DescribeBudgetActionHistories =
54 Binding.Service<DescribeBudgetActionHistories>(
55 "AWS.Budgets.DescribeBudgetActionHistories",
56 );