1import type * as ecr from "@distilled.cloud/aws/ecr";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { Repository } from "./Repository.ts";
5
6/**
7 * Request for {@link CompleteLayerUpload} — `repositoryName` is injected from the
8 * bound {@link Repository} (the registry defaults to the caller's account).
9 */
10export interface CompleteLayerUploadRequest extends Omit<
11 ecr.CompleteLayerUploadRequest,
12 "registryId" | "repositoryName"
13> {}
14
15/**
16 * Runtime binding for `ecr:CompleteLayerUpload`.
17 *
18 * Seals an open layer upload in the bound repository; ECR verifies the uploaded bytes against the supplied sha256 digest. Provide the implementation with
19 * `Effect.provide(AWS.ECR.CompleteLayerUploadHttp)`.
20 * ### Pushing Images
21 * **Example:** Finish a Layer Upload
22 * ```typescript
23 * const completeUpload = yield* AWS.ECR.CompleteLayerUpload(repository);
24 *
25 * yield* completeUpload({
26 * uploadId: uploadId!,
27 * layerDigests: [`sha256:${sha256HexOfBlob}`],
28 * });
29 * ```
30 *
31 * @binding
32 */
33export interface CompleteLayerUpload extends Binding.Service<
34 CompleteLayerUpload,
35 "AWS.ECR.CompleteLayerUpload",
36 (
37 repository: Repository,
38 ) => Effect.Effect<
39 (
40 request: CompleteLayerUploadRequest,
41 ) => Effect.Effect<
42 ecr.CompleteLayerUploadResponse,
43 ecr.CompleteLayerUploadError
44 >
45 >
46> {}
47
48export const CompleteLayerUpload = Binding.Service<CompleteLayerUpload>(
49 "AWS.ECR.CompleteLayerUpload",
50);