import { type Value } from "@intentius/chant"; import { ECRRepository } from "../generated/index.js"; export interface EcrLifecycleRule { /** Rules are evaluated in ascending priority order; each image is matched by exactly one rule. */ rulePriority: number; description?: string; /** Defaults to "any" — matches every image regardless of tag state. */ tagStatus?: "tagged" | "untagged" | "any"; /** Only meaningful with tagStatus "tagged". */ tagPrefixList?: string[]; /** Only meaningful with tagStatus "tagged". */ tagPatternList?: string[]; countType: "imageCountMoreThan" | "sinceImagePushed"; /** Required (and only meaningful) with countType "sinceImagePushed". */ countUnit?: "days"; countNumber: number; } export interface EcrEncryption { /** Defaults to "AES256" (Amazon S3-managed keys) when this block is provided without a type. */ type?: "AES256" | "KMS" | "KMS_DSSE"; /** KMS/KMS_DSSE only. Falls back to the default AWS-managed ECR key when omitted. */ kmsKeyId?: string; } export interface EcrRepositoryProps { /** `Value`: a name is routinely built with `Sub`/`Ref` (#1366). Omitted, CloudFormation generates one. */ repositoryName?: Value; imageTagMutability?: "MUTABLE" | "IMMUTABLE" | "MUTABLE_WITH_EXCLUSION" | "IMMUTABLE_WITH_EXCLUSION"; /** Defaults to true — scanning freshly pushed images is the safe default for a new repository. */ scanOnPush?: boolean; /** * Lifecycle rules, evaluated in `rulePriority` order and rendered into the repository's * `LifecyclePolicyText`. Defaults to a single "expire untagged images after 14 days" rule * -- AWS's own starter policy -- when omitted. Pass `[]` to ship the repository with no * lifecycle policy at all. */ lifecycleRules?: EcrLifecycleRule[]; encryption?: EcrEncryption; /** If true, deleting the repository force-deletes its contents instead of requiring it to be empty first. */ emptyOnDelete?: boolean; /** JSON repository policy document (cross-account pull access, etc). */ repositoryPolicy?: Record; defaults?: { repository?: Partial[0]>; }; } export declare const EcrRepository: import("@intentius/chant").CompositeDefinition; }>; //# sourceMappingURL=ecr-repository.d.ts.map