1import type * as glacier from "@distilled.cloud/aws/glacier";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { Vault } from "./Vault.ts";
5
6/**
7 * `AbortMultipartUpload` request with `accountId` and `vaultName` injected from the bound
8 * {@link Vault}.
9 */
10export interface AbortMultipartUploadRequest extends Omit<
11 glacier.AbortMultipartUploadInput,
12 "accountId" | "vaultName"
13> {}
14
15/**
16 * Runtime binding for the `AbortMultipartUpload` operation (IAM action
17 * `glacier:AbortMultipartUpload` on the vault ARN).
18 *
19 * Aborts an in-progress multipart upload on the bound {@link Vault},
20 * freeing its uploaded parts. Aborting an already-aborted or completed
21 * upload fails with the typed `ResourceNotFoundException`.
22 * Provide the implementation with
23 * `Effect.provide(AWS.Glacier.AbortMultipartUploadHttp)`.
24 * ### Uploading Archives
25 * **Example:** Abort an in-progress upload
26 * ```typescript
27 * const abortMultipartUpload = yield* AWS.Glacier.AbortMultipartUpload(vault);
28 *
29 * yield* abortMultipartUpload({ uploadId });
30 * ```
31 *
32 * @binding
33 */
34export interface AbortMultipartUpload extends Binding.Service<
35 AbortMultipartUpload,
36 "AWS.Glacier.AbortMultipartUpload",
37 (
38 vault: Vault,
39 ) => Effect.Effect<
40 (
41 request: AbortMultipartUploadRequest,
42 ) => Effect.Effect<
43 glacier.AbortMultipartUploadResponse,
44 glacier.AbortMultipartUploadError
45 >
46 >
47> {}
48export const AbortMultipartUpload = Binding.Service<AbortMultipartUpload>(
49 "AWS.Glacier.AbortMultipartUpload",
50);