1import type * as SVC from "@distilled.cloud/aws/finspace";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { KxEnvironment } from "./KxEnvironment.ts";
5
6/**
7 * Runtime binding for `finspace:CreateKxVolume` — provisions a NAS_1 storage volume in the bound environment that clusters mount for tickerplant logs and shared savedown space.
8 * Provide the implementation with
9 * `Effect.provide(AWS.FinSpace.CreateKxVolumeHttp)`.
10 * ### Managing Volumes
11 * **Example:** Provision a Tickerplant Log Volume
12 * ```typescript
13 * const createVolume = yield* AWS.FinSpace.CreateKxVolume(kdb);
14 *
15 * const volume = yield* createVolume({
16 * volumeName: "tp-logs",
17 * volumeType: "NAS_1",
18 * nas1Configuration: { type: "SSD_250", size: 1200 },
19 * azMode: "SINGLE",
20 * availabilityZoneIds: ["use1-az2"],
21 * clientToken: crypto.randomUUID(),
22 * });
23 * ```
24 *
25 * @binding
26 */
27export interface CreateKxVolume extends Binding.Service<
28 CreateKxVolume,
29 "AWS.FinSpace.CreateKxVolume",
30 <K extends KxEnvironment>(
31 environment: K,
32 ) => Effect.Effect<
33 (
34 request: Omit<SVC.CreateKxVolumeRequest, "environmentId">,
35 ) => Effect.Effect<SVC.CreateKxVolumeResponse, SVC.CreateKxVolumeError>
36 >
37> {}
38export const CreateKxVolume = Binding.Service<CreateKxVolume>(
39 "AWS.FinSpace.CreateKxVolume",
40);