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 `CopyDBClusterSnapshot` operation (IAM action
7 * `rds:CopyDBClusterSnapshot` — DocumentDB shares the RDS control plane).
8 *
9 * Copies a DocumentDB cluster snapshot — to a new name, another KMS key, or
10 * (with a pre-signed URL) another region — the core of snapshot fan-out and
11 * DR automation. Source and target identifiers are runtime data, so the
12 * grant spans the account's `cluster-snapshot` ARNs. Provide the
13 * implementation with `Effect.provide(AWS.DocDB.CopyDBClusterSnapshotHttp)`.
14 * ### Managing Snapshots
15 * **Example:** Copy a Snapshot to an Archive Name
16 * ```typescript
17 * const copySnapshot = yield* DocDB.CopyDBClusterSnapshot();
18 *
19 * yield* copySnapshot({
20 * SourceDBClusterSnapshotIdentifier: "nightly-2026-07-15",
21 * TargetDBClusterSnapshotIdentifier: "archive-2026-07-15",
22 * });
23 * ```
24 *
25 * @binding
26 */
27export interface CopyDBClusterSnapshot extends Binding.Service<
28 CopyDBClusterSnapshot,
29 "AWS.DocDB.CopyDBClusterSnapshot",
30 () => Effect.Effect<
31 (
32 request: docdb.CopyDBClusterSnapshotMessage,
33 ) => Effect.Effect<
34 docdb.CopyDBClusterSnapshotResult,
35 docdb.CopyDBClusterSnapshotError
36 >
37 >
38> {}
39export const CopyDBClusterSnapshot = Binding.Service<CopyDBClusterSnapshot>(
40 "AWS.DocDB.CopyDBClusterSnapshot",
41);