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 * `UploadMultipartPart` request with `accountId` and `vaultName` injected from the bound
8 * {@link Vault}.
9 */
10export interface UploadMultipartPartRequest extends Omit<
11 glacier.UploadMultipartPartInput,
12 "accountId" | "vaultName"
13> {}
14
15/**
16 * Runtime binding for the `UploadMultipartPart` operation (IAM action
17 * `glacier:UploadMultipartPart` on the vault ARN).
18 *
19 * Uploads one part of a multipart upload to the bound {@link Vault}. The
20 * `range` field carries the part's byte range (e.g.
21 * `bytes 0-8388607/*`) and `checksum` its SHA-256 tree hash.
22 * Provide the implementation with
23 * `Effect.provide(AWS.Glacier.UploadMultipartPartHttp)`.
24 * ### Uploading Archives
25 * **Example:** Upload one part
26 * ```typescript
27 * const uploadMultipartPart = yield* AWS.Glacier.UploadMultipartPart(vault);
28 *
29 * yield* uploadMultipartPart({
30 * uploadId,
31 * range: "bytes 0-8388607/*",
32 * checksum: partTreeHash,
33 * body: partBytes,
34 * });
35 * ```
36 *
37 * @binding
38 */
39export interface UploadMultipartPart extends Binding.Service<
40 UploadMultipartPart,
41 "AWS.Glacier.UploadMultipartPart",
42 (
43 vault: Vault,
44 ) => Effect.Effect<
45 (
46 request: UploadMultipartPartRequest,
47 ) => Effect.Effect<
48 glacier.UploadMultipartPartOutput,
49 glacier.UploadMultipartPartError
50 >
51 >
52> {}
53export const UploadMultipartPart = Binding.Service<UploadMultipartPart>(
54 "AWS.Glacier.UploadMultipartPart",
55);