1import type * as neptunegraph from "@distilled.cloud/aws/neptune-graph";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { Graph } from "./Graph.ts";
5
6/**
7 * Runtime binding for the `StartExportTask` operation (IAM action `neptune-graph:StartExportTask`),
8 * scoped to one {@link Graph}.
9 *
10 * Exports the bound graph's data to Amazon S3 (the graph must be `AVAILABLE`). The request passes Neptune Analytics a data-access role, so the grant includes `iam:PassRole` conditioned to `neptune-graph.amazonaws.com`. Poll progress with {@link GetExportTask}. Provide the implementation with
11 * `Effect.provide(AWS.NeptuneGraph.StartExportTaskHttp)`.
12 * ### Importing and Exporting Data
13 * **Example:** Export a graph to S3 as Parquet
14 * ```typescript
15 * const startExport = yield* NeptuneGraph.StartExportTask(graph);
16 *
17 * const task = yield* startExport({
18 * destination: "s3://my-bucket/exports/",
19 * format: "PARQUET",
20 * kmsKeyIdentifier: key.keyArn,
21 * roleArn: exportRole.roleArn,
22 * });
23 * ```
24 *
25 * @binding
26 */
27export interface StartExportTask extends Binding.Service<
28 StartExportTask,
29 "AWS.NeptuneGraph.StartExportTask",
30 (
31 graph: Graph,
32 ) => Effect.Effect<
33 (
34 request: Omit<neptunegraph.StartExportTaskInput, "graphIdentifier">,
35 ) => Effect.Effect<
36 neptunegraph.StartExportTaskOutput,
37 neptunegraph.StartExportTaskError
38 >
39 >
40> {}
41export const StartExportTask = Binding.Service<StartExportTask>(
42 "AWS.NeptuneGraph.StartExportTask",
43);