1import type * as memorydb from "@distilled.cloud/aws/memorydb";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4
5/**
6 * Runtime binding for the `DescribeSnapshots` operation (IAM action
7 * `memorydb:DescribeSnapshots`).
8 *
9 * Lists the account's cluster snapshots, optionally filtered by cluster or
10 * snapshot name — e.g. verifying a backup completed before a migration.
11 * Provide the implementation with
12 * `Effect.provide(AWS.MemoryDB.DescribeSnapshotsHttp)`.
13 * ### Managing Snapshots
14 * **Example:** List a Cluster's Snapshots
15 * ```typescript
16 * const describeSnapshots = yield* MemoryDB.DescribeSnapshots();
17 *
18 * const page = yield* describeSnapshots({ ClusterName: clusterName });
19 * for (const snapshot of page.Snapshots ?? []) {
20 * yield* Effect.logInfo(`${snapshot.Name}: ${snapshot.Status}`);
21 * }
22 * ```
23 *
24 * @binding
25 */
26export interface DescribeSnapshots extends Binding.Service<
27 DescribeSnapshots,
28 "AWS.MemoryDB.DescribeSnapshots",
29 () => Effect.Effect<
30 (
31 request?: memorydb.DescribeSnapshotsRequest,
32 ) => Effect.Effect<
33 memorydb.DescribeSnapshotsResponse,
34 memorydb.DescribeSnapshotsError
35 >
36 >
37> {}
38export const DescribeSnapshots = Binding.Service<DescribeSnapshots>(
39 "AWS.MemoryDB.DescribeSnapshots",
40);