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 GetSavingsPlansPurchaseRecommendation}.
7 */
8export interface GetSavingsPlansPurchaseRecommendationRequest
9 extends ce.GetSavingsPlansPurchaseRecommendationRequest {}
10
11/**
12 * Runtime binding for `ce:GetSavingsPlansPurchaseRecommendation`.
13 *
14 * Retrieve Savings Plans purchase recommendations. Generate a fresh
15 * set first with {@link StartSavingsPlansPurchaseRecommendationGeneration}. Provide the implementation with
16 * `Effect.provide(AWS.CostExplorer.GetSavingsPlansPurchaseRecommendationHttp)`.
17 * ### Savings Plans
18 * **Example:** Get Savings Plans Recommendations
19 * ```typescript
20 * // init — account-level binding takes no resource
21 * const getSavingsPlansPurchaseRecommendation = yield* AWS.CostExplorer.GetSavingsPlansPurchaseRecommendation();
22 *
23 * // runtime
24 * const result = yield* getSavingsPlansPurchaseRecommendation({
25 * SavingsPlansType: "COMPUTE_SP",
26 * TermInYears: "ONE_YEAR",
27 * PaymentOption: "NO_UPFRONT",
28 * LookbackPeriodInDays: "THIRTY_DAYS",
29 * });
30 * ```
31 *
32 * @binding
33 */
34export interface GetSavingsPlansPurchaseRecommendation extends Binding.Service<
35 GetSavingsPlansPurchaseRecommendation,
36 "AWS.CostExplorer.GetSavingsPlansPurchaseRecommendation",
37 () => Effect.Effect<
38 (
39 request: GetSavingsPlansPurchaseRecommendationRequest,
40 ) => Effect.Effect<
41 ce.GetSavingsPlansPurchaseRecommendationResponse,
42 ce.GetSavingsPlansPurchaseRecommendationError
43 >
44 >
45> {}
46
47export const GetSavingsPlansPurchaseRecommendation =
48 Binding.Service<GetSavingsPlansPurchaseRecommendation>(
49 "AWS.CostExplorer.GetSavingsPlansPurchaseRecommendation",
50 );