1import type * as SD from "@distilled.cloud/aws/servicediscovery";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { Service } from "./Service.ts";
5
6export interface DeregisterInstanceRequest extends Omit<
7 SD.DeregisterInstanceRequest,
8 "ServiceId"
9> {}
10
11/**
12 * Runtime binding for `servicediscovery:DeregisterInstance` — lets a
13 * self-registering workload remove its own Cloud Map instance (and the
14 * Route 53 records/health check Cloud Map created for it).
15 *
16 * The response carries an `OperationId`; deregistration completes
17 * asynchronously on the Cloud Map side.
18 * ### Deregistering Instances
19 * **Example:** Deregister on Shutdown
20 * ```typescript
21 * const deregisterInstance = yield* AWS.CloudMap.DeregisterInstance(service);
22 *
23 * yield* deregisterInstance({ InstanceId: "worker-1" });
24 * ```
25 *
26 * @binding
27 */
28export interface DeregisterInstance extends Binding.Service<
29 DeregisterInstance,
30 "AWS.CloudMap.DeregisterInstance",
31 <S extends Service>(
32 service: S,
33 ) => Effect.Effect<
34 (
35 request: DeregisterInstanceRequest,
36 ) => Effect.Effect<
37 SD.DeregisterInstanceResponse,
38 SD.DeregisterInstanceError
39 >
40 >
41> {}
42export const DeregisterInstance = Binding.Service<DeregisterInstance>(
43 "AWS.CloudMap.DeregisterInstance",
44);