1import type * as vpclattice from "@distilled.cloud/aws/vpc-lattice";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { TargetGroup } from "./TargetGroup.ts";
5
6/**
7 * `DeregisterTargets` request with `targetGroupIdentifier` injected from the
8 * bound {@link TargetGroup}.
9 */
10export interface DeregisterTargetsRequest extends Omit<
11 vpclattice.DeregisterTargetsRequest,
12 "targetGroupIdentifier"
13> {}
14
15/**
16 * Runtime binding for the `DeregisterTargets` operation (IAM action
17 * `vpc-lattice:DeregisterTargets` on the target group ARN).
18 *
19 * Deregisters targets from the bound {@link TargetGroup} at runtime — the
20 * graceful-drain half of dynamic self-registration. Provide the
21 * implementation with `Effect.provide(AWS.VpcLattice.DeregisterTargetsHttp)`.
22 * ### Managing Targets at Runtime
23 * **Example:** Deregister a target
24 * ```typescript
25 * const deregisterTargets = yield* AWS.VpcLattice.DeregisterTargets(targetGroup);
26 *
27 * yield* deregisterTargets({ targets: [{ id: "10.0.1.10", port: 80 }] });
28 * ```
29 *
30 * @binding
31 */
32export interface DeregisterTargets extends Binding.Service<
33 DeregisterTargets,
34 "AWS.VpcLattice.DeregisterTargets",
35 (
36 targetGroup: TargetGroup,
37 ) => Effect.Effect<
38 (
39 request: DeregisterTargetsRequest,
40 ) => Effect.Effect<
41 vpclattice.DeregisterTargetsResponse,
42 vpclattice.DeregisterTargetsError
43 >
44 >
45> {}
46export const DeregisterTargets = Binding.Service<DeregisterTargets>(
47 "AWS.VpcLattice.DeregisterTargets",
48);