1import type * as microvms from "@distilled.cloud/aws/lambda-microvms";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { MicrovmImage } from "./MicrovmImage.ts";
5
6export interface SuspendMicrovmRequest extends microvms.SuspendMicrovmRequest {}
7
8/**
9 * Runtime binding for `SuspendMicrovm`.
10 *
11 * Bind it to a {@link MicrovmImage} to get a callable that suspends a running
12 * MicroVM (snapshotting memory + disk) by `microvmIdentifier`.
13 * ### Lifecycle
14 * **Example:** Suspend a MicroVM
15 * ```typescript
16 * const suspendMicrovm = yield* AWS.Lambda.SuspendMicrovm(Sandbox);
17 * yield* suspendMicrovm({ microvmIdentifier: id });
18 * ```
19 *
20 * @binding
21 */
22export interface SuspendMicrovm extends Binding.Service<
23 SuspendMicrovm,
24 "AWS.Lambda.SuspendMicrovm",
25 (
26 image: MicrovmImage,
27 ) => Effect.Effect<
28 (
29 request: SuspendMicrovmRequest,
30 ) => Effect.Effect<
31 microvms.SuspendMicrovmResponse,
32 microvms.SuspendMicrovmError
33 >
34 >
35> {}
36export const SuspendMicrovm = Binding.Service<SuspendMicrovm>(
37 "AWS.Lambda.SuspendMicrovm",
38);