1import type * as docdb from "@distilled.cloud/aws/docdb";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4
5/**
6 * Runtime binding for the `DescribeDBInstances` operation (IAM action
7 * `rds:DescribeDBInstances` — DocumentDB shares the RDS control plane).
8 *
9 * Lists the account's DocumentDB instances (optionally filtered by
10 * identifier or cluster) with status, endpoint, and class embedded — the
11 * building block of instance-health monitoring and reboot automation.
12 * Provide the implementation with
13 * `Effect.provide(AWS.DocDB.DescribeDBInstancesHttp)`.
14 * ### Monitoring Instances
15 * **Example:** Check the Cluster's Instance Health
16 * ```typescript
17 * const describeDBInstances = yield* DocDB.DescribeDBInstances();
18 *
19 * const page = yield* describeDBInstances({
20 * Filters: [{ Name: "db-cluster-id", Values: [clusterId] }],
21 * });
22 * const available = page.DBInstances?.filter(
23 * (instance) => instance.DBInstanceStatus === "available",
24 * );
25 * ```
26 *
27 * @binding
28 */
29export interface DescribeDBInstances extends Binding.Service<
30 DescribeDBInstances,
31 "AWS.DocDB.DescribeDBInstances",
32 () => Effect.Effect<
33 (
34 request?: docdb.DescribeDBInstancesMessage,
35 ) => Effect.Effect<docdb.DBInstanceMessage, docdb.DescribeDBInstancesError>
36 >
37> {}
38export const DescribeDBInstances = Binding.Service<DescribeDBInstances>(
39 "AWS.DocDB.DescribeDBInstances",
40);