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
6/**
7 * `DiscoverInstancesRevision` request with `NamespaceName` and
8 * `ServiceName` injected from the bound {@link Service}.
9 */
10export interface DiscoverInstancesRevisionRequest extends Omit<
11 SD.DiscoverInstancesRevisionRequest,
12 "NamespaceName" | "ServiceName"
13> {}
14
15/**
16 * Runtime binding for `servicediscovery:DiscoverInstancesRevision` — the
17 * Cloud Map data-plane query that returns the monotonically-increasing
18 * revision of the bound {@link Service}'s instance set. Poll it as a cheap
19 * change detector and re-call `DiscoverInstances` only when the revision
20 * moves. Provide the implementation with
21 * `Effect.provide(AWS.CloudMap.DiscoverInstancesRevisionHttp)`.
22 * ### Discovering Instances
23 * **Example:** Refresh a Cached Instance List Only on Change
24 * ```typescript
25 * const discoverInstancesRevision =
26 * yield* AWS.CloudMap.DiscoverInstancesRevision(service);
27 *
28 * const { InstancesRevision } = yield* discoverInstancesRevision();
29 * if (InstancesRevision !== lastSeenRevision) {
30 * // instance set changed — re-run DiscoverInstances
31 * }
32 * ```
33 *
34 * @binding
35 */
36export interface DiscoverInstancesRevision extends Binding.Service<
37 DiscoverInstancesRevision,
38 "AWS.CloudMap.DiscoverInstancesRevision",
39 <S extends Service>(
40 service: S,
41 ) => Effect.Effect<
42 (
43 request?: DiscoverInstancesRevisionRequest,
44 ) => Effect.Effect<
45 SD.DiscoverInstancesRevisionResponse,
46 SD.DiscoverInstancesRevisionError
47 >
48 >
49> {}
50export const DiscoverInstancesRevision =
51 Binding.Service<DiscoverInstancesRevision>(
52 "AWS.CloudMap.DiscoverInstancesRevision",
53 );