1import type * as ecrpublic from "@distilled.cloud/aws/ecr-public";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { PublicRepository } from "./Repository.ts";
5
6/** Request for {@link CompleteLayerUpload} — `repositoryName` is injected. */
7export interface CompleteLayerUploadRequest extends Omit<
8 ecrpublic.CompleteLayerUploadRequest,
9 "repositoryName"
10> {}
11
12/**
13 * Runtime binding for `ecr-public:CompleteLayerUpload`.
14 *
15 * Seals an in-flight layer upload in the bound {@link PublicRepository},
16 * validating the uploaded bytes against the provided `sha256` digest.
17 * Provide the implementation with
18 * `Effect.provide(AWS.ECRPublic.CompleteLayerUploadHttp)`.
19 *
20 * ### Pushing Images
21 * **Example:** Complete A Layer Upload
22 * ```typescript
23 * // init
24 * const completeLayerUpload = yield* AWS.ECRPublic.CompleteLayerUpload(repository);
25 *
26 * // runtime
27 * const { layerDigest } = yield* completeLayerUpload({
28 * uploadId,
29 * layerDigests: [digest],
30 * });
31 * ```
32 *
33 * @binding
34 */
35export interface CompleteLayerUpload extends Binding.Service<
36 CompleteLayerUpload,
37 "AWS.ECRPublic.CompleteLayerUpload",
38 <R extends PublicRepository>(
39 repository: R,
40 ) => Effect.Effect<
41 (
42 request: CompleteLayerUploadRequest,
43 ) => Effect.Effect<
44 ecrpublic.CompleteLayerUploadResponse,
45 ecrpublic.CompleteLayerUploadError
46 >
47 >
48> {}
49
50export const CompleteLayerUpload = Binding.Service<CompleteLayerUpload>(
51 "AWS.ECRPublic.CompleteLayerUpload",
52);