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 DescribeImages} — `repositoryName` is injected. */
7export interface DescribeImagesRequest extends Omit<
8 ecrpublic.DescribeImagesRequest,
9 "repositoryName"
10> {}
11
12/**
13 * Runtime binding for `ecr-public:DescribeImages`.
14 *
15 * Lists metadata (digest, tags, size, push time) for the images in the
16 * bound {@link PublicRepository}. Provide the implementation with
17 * `Effect.provide(AWS.ECRPublic.DescribeImagesHttp)`.
18 *
19 * ### Reading Images
20 * **Example:** List Images In A Public Repository
21 * ```typescript
22 * // init
23 * const describeImages = yield* AWS.ECRPublic.DescribeImages(repository);
24 *
25 * // runtime
26 * const result = yield* describeImages();
27 * const digests = (result.imageDetails ?? []).map((i) => i.imageDigest);
28 * ```
29 *
30 * @binding
31 */
32export interface DescribeImages extends Binding.Service<
33 DescribeImages,
34 "AWS.ECRPublic.DescribeImages",
35 <R extends PublicRepository>(
36 repository: R,
37 ) => Effect.Effect<
38 (
39 request?: DescribeImagesRequest,
40 ) => Effect.Effect<
41 ecrpublic.DescribeImagesResponse,
42 ecrpublic.DescribeImagesError
43 >
44 >
45> {}
46
47export const DescribeImages = Binding.Service<DescribeImages>(
48 "AWS.ECRPublic.DescribeImages",
49);