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 RenewDomainRequest extends route53domains.RenewDomainRequest {}
6
7/**
8 * Runtime binding for `route53domains:RenewDomain` — renew a domain
9 * registered in the current AWS account for the specified number of years.
10 * Renewal is asynchronous: the response carries an `OperationId` you can
11 * poll with `AWS.Route53Domains.GetOperationDetail`.
12 *
13 * Renewing a domain **bills the AWS account** for the renewal fee, so guard
14 * calls carefully. Renewing a domain that is not registered in the account
15 * fails with a typed `DomainNotFound` error.
16 *
17 * Route 53 Domains is a global registration API with no resource-level IAM:
18 * the binding takes no arguments and grants the function
19 * `route53domains:RenewDomain` on `*`. Calls are pinned to `us-east-1`, the
20 * only region that serves the Route 53 Domains API, regardless of where the
21 * function runs.
22 *
23 * Provide the implementation with
24 * `Effect.provide(AWS.Route53Domains.RenewDomainHttp)`.
25 *
26 * ### Renewing Domains
27 * **Example:** Renew a Domain for One More Year
28 * ```typescript
29 * // init
30 * const renewDomain = yield* AWS.Route53Domains.RenewDomain();
31 *
32 * // runtime
33 * const result = yield* renewDomain({
34 * DomainName: "example.com",
35 * DurationInYears: 1,
36 * CurrentExpiryYear: 2027,
37 * });
38 * // poll result.OperationId with GetOperationDetail until SUCCESSFUL
39 * ```
40 *
41 * @binding
42 */
43export interface RenewDomain extends Binding.Service<
44 RenewDomain,
45 "AWS.Route53Domains.RenewDomain",
46 () => Effect.Effect<
47 (
48 request: RenewDomainRequest,
49 ) => Effect.Effect<
50 route53domains.RenewDomainResponse,
51 route53domains.RenewDomainError
52 >
53 >
54> {}
55export const RenewDomain = Binding.Service<RenewDomain>(
56 "AWS.Route53Domains.RenewDomain",
57);