1import type * as ce from "@distilled.cloud/aws/cost-explorer";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4
5/**
6 * Request for {@link GetReservationCoverage}.
7 */
8export interface GetReservationCoverageRequest
9 extends ce.GetReservationCoverageRequest {}
10
11/**
12 * Runtime binding for `ce:GetReservationCoverage`.
13 *
14 * Retrieve how much of your eligible usage (EC2, RDS, ElastiCache,
15 * Redshift, OpenSearch, …) was covered by reservations over a time
16 * period. Provide the implementation with
17 * `Effect.provide(AWS.CostExplorer.GetReservationCoverageHttp)`.
18 * ### Reservations
19 * **Example:** Check Reservation Coverage
20 * ```typescript
21 * // init — account-level binding takes no resource
22 * const getReservationCoverage = yield* AWS.CostExplorer.GetReservationCoverage();
23 *
24 * // runtime
25 * const result = yield* getReservationCoverage({
26 * TimePeriod: { Start: "2026-06-01", End: "2026-07-01" },
27 * });
28 * const coverage = result.Total?.CoverageHours?.CoverageHoursPercentage;
29 * ```
30 *
31 * @binding
32 */
33export interface GetReservationCoverage extends Binding.Service<
34 GetReservationCoverage,
35 "AWS.CostExplorer.GetReservationCoverage",
36 () => Effect.Effect<
37 (
38 request: GetReservationCoverageRequest,
39 ) => Effect.Effect<
40 ce.GetReservationCoverageResponse,
41 ce.GetReservationCoverageError
42 >
43 >
44> {}
45
46export const GetReservationCoverage = Binding.Service<GetReservationCoverage>(
47 "AWS.CostExplorer.GetReservationCoverage",
48);