1import type * as route53domains from "@distilled.cloud/aws/route-53-domains";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4
5export interface ListPricesRequest extends route53domains.ListPricesRequest {}
6
7/**
8 * Runtime binding for `route53domains:ListPrices` — list registration,
9 * transfer, renewal, restoration, and owner-change prices for the TLDs
10 * supported by Route 53, or for one specific TLD.
11 *
12 * Route 53 Domains is a global registration API with no resource-level IAM:
13 * the binding takes no arguments and grants the function
14 * `route53domains:ListPrices` on `*`. Calls are pinned to `us-east-1`, the
15 * only region that serves the Route 53 Domains API, regardless of where the
16 * function runs.
17 *
18 * Provide the implementation with
19 * `Effect.provide(AWS.Route53Domains.ListPricesHttp)`.
20 *
21 * ### Looking Up Prices
22 * **Example:** Get the Registration Price for .com
23 * ```typescript
24 * // init
25 * const listPrices = yield* AWS.Route53Domains.ListPrices();
26 *
27 * // runtime
28 * const result = yield* listPrices({ Tld: "com" });
29 * const price = result.Prices?.[0]?.RegistrationPrice?.Price;
30 * ```
31 *
32 * @binding
33 */
34export interface ListPrices extends Binding.Service<
35 ListPrices,
36 "AWS.Route53Domains.ListPrices",
37 () => Effect.Effect<
38 (
39 request: ListPricesRequest,
40 ) => Effect.Effect<
41 route53domains.ListPricesResponse,
42 route53domains.ListPricesError
43 >
44 >
45> {}
46export const ListPrices = Binding.Service<ListPrices>(
47 "AWS.Route53Domains.ListPrices",
48);