1import type * as serverless from "@distilled.cloud/aws/redshift-serverless";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { Namespace } from "./Namespace.ts";
5
6/**
7 * Runtime binding for the `RestoreFromSnapshot` operation (IAM actions
8 * `redshift-serverless:RestoreFromSnapshot`).
9 *
10 * Restores the bound {@link Namespace} from a snapshot — a
11 * disaster-recovery runbook step. The namespace name is injected from the
12 * binding; pass the serving workgroup and the snapshot to restore. Provide the implementation with
13 * `Effect.provide(AWS.RedshiftServerless.RestoreFromSnapshotHttp)`.
14 * ### Restoring Data
15 * **Example:** Restore a Namespace from a Snapshot
16 * ```typescript
17 * // init — resolve the runtime client
18 * const restoreFromSnapshot = yield* AWS.RedshiftServerless.RestoreFromSnapshot(namespace);
19 *
20 * yield* restoreFromSnapshot({
21 * workgroupName,
22 * snapshotName: "pre-migration-1",
23 * });
24 * ```
25 *
26 * @binding
27 */
28export interface RestoreFromSnapshot extends Binding.Service<
29 RestoreFromSnapshot,
30 "AWS.RedshiftServerless.RestoreFromSnapshot",
31 (
32 namespace: Namespace,
33 ) => Effect.Effect<
34 (
35 request: Omit<serverless.RestoreFromSnapshotRequest, "namespaceName">,
36 ) => Effect.Effect<
37 serverless.RestoreFromSnapshotResponse,
38 serverless.RestoreFromSnapshotError
39 >
40 >
41> {}
42export const RestoreFromSnapshot = Binding.Service<RestoreFromSnapshot>(
43 "AWS.RedshiftServerless.RestoreFromSnapshot",
44);