"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    var desc = Object.getOwnPropertyDescriptor(m, k);
    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
      desc = { enumerable: true, get: function() { return m[k]; } };
    }
    Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
    Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
    o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
    var ownKeys = function(o) {
        ownKeys = Object.getOwnPropertyNames || function (o) {
            var ar = [];
            for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
            return ar;
        };
        return ownKeys(o);
    };
    return function (mod) {
        if (mod && mod.__esModule) return mod;
        var result = {};
        if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
        __setModuleDefault(result, mod);
        return result;
    };
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.CfnSigningConfigurationPropsMixin = exports.CfnRepositoryCreationTemplatePropsMixin = exports.CfnRegistryScanningConfigurationPropsMixin = exports.CfnPullTimeUpdateExclusionPropsMixin = exports.CfnRepositoryPropsMixin = exports.CfnReplicationConfigurationPropsMixin = exports.CfnRegistryPolicyPropsMixin = exports.CfnPullThroughCacheRulePropsMixin = exports.CfnPublicRepositoryPropsMixin = void 0;
const jsiiDeprecationWarnings = require("../../../.warnings.jsii.js");
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
/* eslint-disable @stylistic/max-len, eol-last */
const cdk = __importStar(require("aws-cdk-lib/core"));
const service = __importStar(require("aws-cdk-lib/aws-ecr"));
/**
 * The `AWS::ECR::PublicRepository` resource specifies an Amazon Elastic Container Registry Public (Amazon ECR Public) repository, where users can push and pull Docker images, Open Container Initiative (OCI) images, and OCI compatible artifacts.
 *
 * For more information, see [Amazon ECR public repositories](https://docs.aws.amazon.com/AmazonECR/latest/public/public-repositories.html) in the *Amazon ECR Public User Guide* .
 *
 * @cloudformationResource AWS::ECR::PublicRepository
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecr-publicrepository.html
 */
class CfnPublicRepositoryPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_ecr.CfnPublicRepositoryPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["repositoryCatalogData", "repositoryName", "repositoryPolicyText", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::ECR::PublicRepository`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_ecr_CfnPublicRepositoryMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnPublicRepositoryPropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnPublicRepository.isCfnPublicRepository(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnPublicRepositoryPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnPublicRepositoryPropsMixin = CfnPublicRepositoryPropsMixin;
/**
 * The `AWS::ECR::PullThroughCacheRule` resource creates or updates a pull through cache rule.
 *
 * A pull through cache rule provides a way to cache images from an upstream registry in your Amazon ECR private registry.
 *
 * @cloudformationResource AWS::ECR::PullThroughCacheRule
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecr-pullthroughcacherule.html
 */
class CfnPullThroughCacheRulePropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_ecr.CfnPullThroughCacheRulePropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["credentialArn", "customRoleArn", "ecrRepositoryPrefix", "upstreamRegistry", "upstreamRegistryUrl", "upstreamRepositoryPrefix"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::ECR::PullThroughCacheRule`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_ecr_CfnPullThroughCacheRuleMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnPullThroughCacheRulePropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnPullThroughCacheRule.isCfnPullThroughCacheRule(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnPullThroughCacheRulePropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnPullThroughCacheRulePropsMixin = CfnPullThroughCacheRulePropsMixin;
/**
 * The `AWS::ECR::RegistryPolicy` resource creates or updates the permissions policy for a private registry.
 *
 * A private registry policy is used to specify permissions for another AWS account and is used when configuring cross-account replication. For more information, see [Registry permissions](https://docs.aws.amazon.com/AmazonECR/latest/userguide/registry-permissions.html) in the *Amazon Elastic Container Registry User Guide* .
 *
 * @cloudformationResource AWS::ECR::RegistryPolicy
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecr-registrypolicy.html
 */
class CfnRegistryPolicyPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_ecr.CfnRegistryPolicyPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["policyText"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::ECR::RegistryPolicy`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_ecr_CfnRegistryPolicyMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnRegistryPolicyPropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnRegistryPolicy.isCfnRegistryPolicy(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnRegistryPolicyPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnRegistryPolicyPropsMixin = CfnRegistryPolicyPropsMixin;
/**
 * The `AWS::ECR::ReplicationConfiguration` resource creates or updates the replication configuration for a private registry.
 *
 * The first time a replication configuration is applied to a private registry, a service-linked IAM role is created in your account for the replication process. For more information, see [Using Service-Linked Roles for Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/using-service-linked-roles.html) in the *Amazon Elastic Container Registry User Guide* .
 *
 * > When configuring cross-account replication, the destination account must grant the source account permission to replicate. This permission is controlled using a private registry permissions policy. For more information, see `AWS::ECR::RegistryPolicy` .
 *
 * @cloudformationResource AWS::ECR::ReplicationConfiguration
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecr-replicationconfiguration.html
 */
class CfnReplicationConfigurationPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_ecr.CfnReplicationConfigurationPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["replicationConfiguration"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::ECR::ReplicationConfiguration`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_ecr_CfnReplicationConfigurationMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnReplicationConfigurationPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnReplicationConfigurationMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnReplicationConfiguration.isCfnReplicationConfiguration(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnReplicationConfigurationPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnReplicationConfigurationPropsMixin = CfnReplicationConfigurationPropsMixin;
// @ts-ignore TS6133
function flattenCfnReplicationConfigurationPropsMixinRepositoryFilterProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        filter: (!props.filter ? undefined : cdk.getRefProperty(props.filter?.repositoryRef, 'repositoryName') ?? cdk.ensureStringOrUndefined(props.filter, "filter", "ecr.IRepositoryRef | string")),
        filterType: (!props.filterType ? undefined : props.filterType)
    };
}
// @ts-ignore TS6133
function flattenCfnReplicationConfigurationPropsMixinReplicationRuleProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        destinations: (!props.destinations ? undefined : props.destinations),
        repositoryFilters: (!props.repositoryFilters ? undefined : (cdk.isResolvableObject(props.repositoryFilters) ? props.repositoryFilters : (!props.repositoryFilters ? undefined : cdk.mapArrayInPlace(props.repositoryFilters, (item) => flattenCfnReplicationConfigurationPropsMixinRepositoryFilterProperty(item)))))
    };
}
// @ts-ignore TS6133
function flattenCfnReplicationConfigurationPropsMixinReplicationConfigurationProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        rules: (!props.rules ? undefined : (cdk.isResolvableObject(props.rules) ? props.rules : cdk.mapArrayInPlace(props.rules, (item) => flattenCfnReplicationConfigurationPropsMixinReplicationRuleProperty(item))))
    };
}
// @ts-ignore TS6133
function flattenCfnReplicationConfigurationMixinProps(props) {
    const ret = {};
    if ((props.replicationConfiguration !== undefined))
        ret.replicationConfiguration = flattenCfnReplicationConfigurationPropsMixinReplicationConfigurationProperty(props.replicationConfiguration);
    return ret;
}
/**
 * The `AWS::ECR::Repository` resource specifies an Amazon Elastic Container Registry (Amazon ECR) repository, where users can push and pull Docker images, Open Container Initiative (OCI) images, and OCI compatible artifacts.
 *
 * For more information, see [Amazon ECR private repositories](https://docs.aws.amazon.com/AmazonECR/latest/userguide/Repositories.html) in the *Amazon ECR User Guide* .
 *
 * @cloudformationResource AWS::ECR::Repository
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecr-repository.html
 */
class CfnRepositoryPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_ecr.CfnRepositoryPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["emptyOnDelete", "encryptionConfiguration", "imageScanningConfiguration", "imageTagMutability", "imageTagMutabilityExclusionFilters", "lifecyclePolicy", "repositoryName", "repositoryPolicyText", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::ECR::Repository`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_ecr_CfnRepositoryMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnRepositoryPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnRepositoryMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnRepository.isCfnRepository(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnRepositoryPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnRepositoryPropsMixin = CfnRepositoryPropsMixin;
// @ts-ignore TS6133
function flattenCfnRepositoryPropsMixinEncryptionConfigurationProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        encryptionType: (!props.encryptionType ? undefined : props.encryptionType),
        kmsKey: (!props.kmsKey ? undefined : cdk.getRefProperty(props.kmsKey?.keyRef, 'keyArn') ?? cdk.ensureStringOrUndefined(props.kmsKey, "kmsKey", "kms.IKeyRef | string"))
    };
}
// @ts-ignore TS6133
function flattenCfnRepositoryMixinProps(props) {
    const ret = {};
    if ((props.encryptionConfiguration !== undefined))
        ret.encryptionConfiguration = flattenCfnRepositoryPropsMixinEncryptionConfigurationProperty(props.encryptionConfiguration);
    return ret;
}
/**
 * The ARN of the IAM principal to remove from the pull time update exclusion list.
 *
 * @cloudformationResource AWS::ECR::PullTimeUpdateExclusion
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecr-pulltimeupdateexclusion.html
 */
class CfnPullTimeUpdateExclusionPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_ecr.CfnPullTimeUpdateExclusionPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["principalArn"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::ECR::PullTimeUpdateExclusion`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_ecr_CfnPullTimeUpdateExclusionMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnPullTimeUpdateExclusionPropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnPullTimeUpdateExclusion.isCfnPullTimeUpdateExclusion(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnPullTimeUpdateExclusionPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnPullTimeUpdateExclusionPropsMixin = CfnPullTimeUpdateExclusionPropsMixin;
/**
 * The scanning configuration for a private registry.
 *
 * @cloudformationResource AWS::ECR::RegistryScanningConfiguration
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecr-registryscanningconfiguration.html
 */
class CfnRegistryScanningConfigurationPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_ecr.CfnRegistryScanningConfigurationPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["rules", "scanType"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::ECR::RegistryScanningConfiguration`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_ecr_CfnRegistryScanningConfigurationMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnRegistryScanningConfigurationPropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnRegistryScanningConfiguration.isCfnRegistryScanningConfiguration(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnRegistryScanningConfigurationPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnRegistryScanningConfigurationPropsMixin = CfnRegistryScanningConfigurationPropsMixin;
/**
 * The details of the repository creation template associated with the request.
 *
 * @cloudformationResource AWS::ECR::RepositoryCreationTemplate
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecr-repositorycreationtemplate.html
 */
class CfnRepositoryCreationTemplatePropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_ecr.CfnRepositoryCreationTemplatePropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["appliedFor", "customRoleArn", "description", "encryptionConfiguration", "imageTagMutability", "imageTagMutabilityExclusionFilters", "lifecyclePolicy", "prefix", "repositoryPolicy", "resourceTags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::ECR::RepositoryCreationTemplate`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_ecr_CfnRepositoryCreationTemplateMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnRepositoryCreationTemplatePropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnRepositoryCreationTemplate.isCfnRepositoryCreationTemplate(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnRepositoryCreationTemplatePropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnRepositoryCreationTemplatePropsMixin = CfnRepositoryCreationTemplatePropsMixin;
/**
 * The signing configuration for a registry, which specifies rules for automatically signing images when pushed.
 *
 * @cloudformationResource AWS::ECR::SigningConfiguration
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecr-signingconfiguration.html
 */
class CfnSigningConfigurationPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_ecr.CfnSigningConfigurationPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["rules"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::ECR::SigningConfiguration`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_ecr_CfnSigningConfigurationMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnSigningConfigurationPropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnSigningConfiguration.isCfnSigningConfiguration(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnSigningConfigurationPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnSigningConfigurationPropsMixin = CfnSigningConfigurationPropsMixin;
