1import type * as serverless from "@distilled.cloud/aws/redshift-serverless";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4
5/**
6 * Runtime binding for the `UpdateSnapshot` operation (IAM actions
7 * `redshift-serverless:UpdateSnapshot`).
8 *
9 * Changes a snapshot's retention period — e.g. extending retention on a
10 * snapshot that an audit flagged for preservation. Provide the implementation with
11 * `Effect.provide(AWS.RedshiftServerless.UpdateSnapshotHttp)`.
12 * ### Managing Snapshots
13 * **Example:** Extend a Snapshot's Retention
14 * ```typescript
15 * // init — resolve the runtime client
16 * const updateSnapshot = yield* AWS.RedshiftServerless.UpdateSnapshot();
17 *
18 * yield* updateSnapshot({ snapshotName: "pre-migration-1", retentionPeriod: 30 });
19 * ```
20 *
21 * @binding
22 */
23export interface UpdateSnapshot extends Binding.Service<
24 UpdateSnapshot,
25 "AWS.RedshiftServerless.UpdateSnapshot",
26 () => Effect.Effect<
27 (
28 request: serverless.UpdateSnapshotRequest,
29 ) => Effect.Effect<
30 serverless.UpdateSnapshotResponse,
31 serverless.UpdateSnapshotError
32 >
33 >
34> {}
35export const UpdateSnapshot = Binding.Service<UpdateSnapshot>(
36 "AWS.RedshiftServerless.UpdateSnapshot",
37);