"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.CfnTenantPropsMixin = exports.CfnMultiRegionEndpointPropsMixin = exports.CfnMailManagerTrafficPolicyPropsMixin = exports.CfnMailManagerRuleSetPropsMixin = exports.CfnMailManagerRelayPropsMixin = exports.CfnMailManagerIngressPointPropsMixin = exports.CfnMailManagerArchivePropsMixin = exports.CfnMailManagerAddressListPropsMixin = exports.CfnMailManagerAddonSubscriptionPropsMixin = exports.CfnMailManagerAddonInstancePropsMixin = exports.CfnCustomVerificationEmailTemplatePropsMixin = exports.CfnVdmAttributesPropsMixin = exports.CfnTemplatePropsMixin = exports.CfnReceiptRuleSetPropsMixin = exports.CfnReceiptRulePropsMixin = exports.CfnReceiptFilterPropsMixin = exports.CfnEmailIdentityPropsMixin = exports.CfnDedicatedIpPoolPropsMixin = exports.CfnContactListPropsMixin = exports.CfnConfigurationSetEventDestinationPropsMixin = exports.CfnConfigurationSetPropsMixin = 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-ses"));
/**
 * Configuration sets let you create groups of rules that you can apply to the emails you send using Amazon SES.
 *
 * For more information about using configuration sets, see [Using Amazon SES Configuration Sets](https://docs.aws.amazon.com/ses/latest/dg/using-configuration-sets.html) in the [Amazon SES Developer Guide](https://docs.aws.amazon.com/ses/latest/dg/) .
 *
 * > *Required permissions:*
 * >
 * > To apply any of the resource options, you will need to have the corresponding AWS Identity and Access Management (IAM) SES API v2 permissions:
 * >
 * > - `ses:GetConfigurationSet`
 * >
 * > - (This permission is replacing the v1 *ses:DescribeConfigurationSet* permission which will not work with these v2 resource options.)
 * > - `ses:PutConfigurationSetDeliveryOptions`
 * > - `ses:PutConfigurationSetReputationOptions`
 * > - `ses:PutConfigurationSetSendingOptions`
 * > - `ses:PutConfigurationSetSuppressionOptions`
 * > - `ses:PutConfigurationSetTrackingOptions`
 *
 * @cloudformationResource AWS::SES::ConfigurationSet
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ses-configurationset.html
 */
class CfnConfigurationSetPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_ses.CfnConfigurationSetPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["archivingOptions", "deliveryOptions", "name", "reputationOptions", "sendingOptions", "suppressionOptions", "tags", "trackingOptions", "vdmOptions"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SES::ConfigurationSet`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_ses_CfnConfigurationSetMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnConfigurationSetPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnConfigurationSetMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnConfigurationSet.isCfnConfigurationSet(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnConfigurationSetPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnConfigurationSetPropsMixin = CfnConfigurationSetPropsMixin;
// @ts-ignore TS6133
function flattenCfnConfigurationSetPropsMixinDeliveryOptionsProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        maxDeliverySeconds: (!props.maxDeliverySeconds ? undefined : props.maxDeliverySeconds),
        sendingPoolName: (!props.sendingPoolName ? undefined : cdk.getRefProperty(props.sendingPoolName?.dedicatedIpPoolRef, 'poolName') ?? cdk.ensureStringOrUndefined(props.sendingPoolName, "sendingPoolName", "ses.IDedicatedIpPoolRef | string")),
        tlsPolicy: (!props.tlsPolicy ? undefined : props.tlsPolicy)
    };
}
// @ts-ignore TS6133
function flattenCfnConfigurationSetMixinProps(props) {
    const ret = {};
    if ((props.deliveryOptions !== undefined))
        ret.deliveryOptions = flattenCfnConfigurationSetPropsMixinDeliveryOptionsProperty(props.deliveryOptions);
    return ret;
}
/**
 * Specifies a configuration set event destination.
 *
 * *Events* include message sends, deliveries, opens, clicks, bounces, and complaints. *Event destinations* are places that you can send information about these events to. For example, you can send event data to Amazon SNS to receive notifications when you receive bounces or complaints, or you can use Amazon Kinesis Data Firehose to stream data to Amazon S3 for long-term storage.
 *
 * A single configuration set can include more than one event destination.
 *
 * @cloudformationResource AWS::SES::ConfigurationSetEventDestination
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ses-configurationseteventdestination.html
 */
class CfnConfigurationSetEventDestinationPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_ses.CfnConfigurationSetEventDestinationPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["configurationSetName", "eventDestination"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SES::ConfigurationSetEventDestination`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_ses_CfnConfigurationSetEventDestinationMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnConfigurationSetEventDestinationPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnConfigurationSetEventDestinationMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnConfigurationSetEventDestination.isCfnConfigurationSetEventDestination(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnConfigurationSetEventDestinationPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnConfigurationSetEventDestinationPropsMixin = CfnConfigurationSetEventDestinationPropsMixin;
// @ts-ignore TS6133
function flattenCfnConfigurationSetEventDestinationPropsMixinSnsDestinationProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        topicArn: (!props.topicArn ? undefined : cdk.getRefProperty(props.topicArn?.topicRef, 'topicArn') ?? cdk.ensureStringOrUndefined(props.topicArn, "topicArn", "sns.ITopicRef | string"))
    };
}
// @ts-ignore TS6133
function flattenCfnConfigurationSetEventDestinationPropsMixinKinesisFirehoseDestinationProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        deliveryStreamArn: (!props.deliveryStreamArn ? undefined : cdk.getRefProperty(props.deliveryStreamArn?.deliveryStreamRef, 'deliveryStreamArn') ?? cdk.ensureStringOrUndefined(props.deliveryStreamArn, "deliveryStreamArn", "kinesisfirehose.IDeliveryStreamRef | string")),
        iamRoleArn: (!props.iamRoleArn ? undefined : cdk.getRefProperty(props.iamRoleArn?.roleRef, 'roleArn') ?? cdk.ensureStringOrUndefined(props.iamRoleArn, "iamRoleArn", "iam.IRoleRef | string"))
    };
}
// @ts-ignore TS6133
function flattenCfnConfigurationSetEventDestinationPropsMixinEventDestinationProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        cloudWatchDestination: (!props.cloudWatchDestination ? undefined : props.cloudWatchDestination),
        enabled: (!props.enabled ? undefined : props.enabled),
        eventBridgeDestination: (!props.eventBridgeDestination ? undefined : props.eventBridgeDestination),
        kinesisFirehoseDestination: (!props.kinesisFirehoseDestination ? undefined : (!props.kinesisFirehoseDestination ? undefined : flattenCfnConfigurationSetEventDestinationPropsMixinKinesisFirehoseDestinationProperty(props.kinesisFirehoseDestination))),
        matchingEventTypes: (!props.matchingEventTypes ? undefined : props.matchingEventTypes),
        name: (!props.name ? undefined : props.name),
        snsDestination: (!props.snsDestination ? undefined : (!props.snsDestination ? undefined : flattenCfnConfigurationSetEventDestinationPropsMixinSnsDestinationProperty(props.snsDestination)))
    };
}
// @ts-ignore TS6133
function flattenCfnConfigurationSetEventDestinationMixinProps(props) {
    const ret = {};
    if ((props.configurationSetName !== undefined))
        ret.configurationSetName = cdk.getRefProperty(props.configurationSetName?.configurationSetRef, 'configurationSetName') ?? cdk.ensureStringOrUndefined(props.configurationSetName, "configurationSetName", "ses.IConfigurationSetRef | string");
    if ((props.eventDestination !== undefined))
        ret.eventDestination = flattenCfnConfigurationSetEventDestinationPropsMixinEventDestinationProperty(props.eventDestination);
    return ret;
}
/**
 * A list that contains contacts that have subscribed to a particular topic or topics.
 *
 * @cloudformationResource AWS::SES::ContactList
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ses-contactlist.html
 */
class CfnContactListPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_ses.CfnContactListPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["contactListName", "description", "tags", "topics"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SES::ContactList`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_ses_CfnContactListMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnContactListPropsMixin);
            }
            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.CfnContactList.isCfnContactList(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnContactListPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnContactListPropsMixin = CfnContactListPropsMixin;
/**
 * Create a new pool of dedicated IP addresses.
 *
 * A pool can include one or more dedicated IP addresses that are associated with your AWS account . You can associate a pool with a configuration set. When you send an email that uses that configuration set, the message is sent from one of the addresses in the associated pool.
 *
 * > You can't delete dedicated IP pools that have a `STANDARD` scaling mode with one or more dedicated IP addresses. This constraint doesn't apply to dedicated IP pools that have a `MANAGED` scaling mode.
 *
 * @cloudformationResource AWS::SES::DedicatedIpPool
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ses-dedicatedippool.html
 */
class CfnDedicatedIpPoolPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_ses.CfnDedicatedIpPoolPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["poolName", "scalingMode", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SES::DedicatedIpPool`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_ses_CfnDedicatedIpPoolMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnDedicatedIpPoolPropsMixin);
            }
            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.CfnDedicatedIpPool.isCfnDedicatedIpPool(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnDedicatedIpPoolPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnDedicatedIpPoolPropsMixin = CfnDedicatedIpPoolPropsMixin;
/**
 * Specifies an identity for using within SES.
 *
 * An identity is an email address or domain that you use when you send email. Before you can use an identity to send email, you first have to verify it. By verifying an identity, you demonstrate that you're the owner of the identity, and that you've given Amazon SES API v2 permission to send email from the identity.
 *
 * When you verify an email address, SES sends an email to the address. Your email address is verified as soon as you follow the link in the verification email. When you verify a domain without specifying the `DkimSigningAttributes` properties, OR only the `NextSigningKeyLength` property of `DkimSigningAttributes` , this resource provides a set of CNAME token names and values ( *DkimDNSTokenName1* , *DkimDNSTokenValue1* , *DkimDNSTokenName2* , *DkimDNSTokenValue2* , *DkimDNSTokenName3* , *DkimDNSTokenValue3* ) as outputs. You can then add these to the DNS configuration for your domain. Your domain is verified when Amazon SES detects these records in the DNS configuration for your domain. This verification method is known as Easy DKIM.
 *
 * Alternatively, you can perform the verification process by providing your own public-private key pair. This verification method is known as Bring Your Own DKIM (BYODKIM). To use BYODKIM, your resource must include `DkimSigningAttributes` properties `DomainSigningSelector` and `DomainSigningPrivateKey` . When you specify this object, you provide a selector ( `DomainSigningSelector` ) (a component of the DNS record name that identifies the public key to use for DKIM authentication) and a private key ( `DomainSigningPrivateKey` ).
 *
 * Additionally, you can associate an existing configuration set with the email identity that you're verifying.
 *
 * @cloudformationResource AWS::SES::EmailIdentity
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ses-emailidentity.html
 */
class CfnEmailIdentityPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_ses.CfnEmailIdentityPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["configurationSetAttributes", "dkimAttributes", "dkimSigningAttributes", "emailIdentity", "feedbackAttributes", "mailFromAttributes", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SES::EmailIdentity`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_ses_CfnEmailIdentityMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnEmailIdentityPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnEmailIdentityMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnEmailIdentity.isCfnEmailIdentity(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnEmailIdentityPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnEmailIdentityPropsMixin = CfnEmailIdentityPropsMixin;
// @ts-ignore TS6133
function flattenCfnEmailIdentityPropsMixinConfigurationSetAttributesProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        configurationSetName: (!props.configurationSetName ? undefined : cdk.getRefProperty(props.configurationSetName?.configurationSetRef, 'configurationSetName') ?? cdk.ensureStringOrUndefined(props.configurationSetName, "configurationSetName", "ses.IConfigurationSetRef | string"))
    };
}
// @ts-ignore TS6133
function flattenCfnEmailIdentityMixinProps(props) {
    const ret = {};
    if ((props.configurationSetAttributes !== undefined))
        ret.configurationSetAttributes = flattenCfnEmailIdentityPropsMixinConfigurationSetAttributesProperty(props.configurationSetAttributes);
    return ret;
}
/**
 * Specify a new IP address filter.
 *
 * You use IP address filters when you receive email with Amazon SES.
 *
 * @cloudformationResource AWS::SES::ReceiptFilter
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ses-receiptfilter.html
 */
class CfnReceiptFilterPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_ses.CfnReceiptFilterPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["filter"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SES::ReceiptFilter`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_ses_CfnReceiptFilterMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnReceiptFilterPropsMixin);
            }
            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.CfnReceiptFilter.isCfnReceiptFilter(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnReceiptFilterPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnReceiptFilterPropsMixin = CfnReceiptFilterPropsMixin;
/**
 * Specifies a receipt rule.
 *
 * @cloudformationResource AWS::SES::ReceiptRule
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ses-receiptrule.html
 */
class CfnReceiptRulePropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_ses.CfnReceiptRulePropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["after", "rule", "ruleSetName"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SES::ReceiptRule`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_ses_CfnReceiptRuleMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnReceiptRulePropsMixin);
            }
            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.CfnReceiptRule.isCfnReceiptRule(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnReceiptRulePropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnReceiptRulePropsMixin = CfnReceiptRulePropsMixin;
/**
 * Creates an empty receipt rule set.
 *
 * For information about setting up receipt rule sets, see the [Amazon SES Developer Guide](https://docs.aws.amazon.com/ses/latest/dg/receiving-email-concepts.html#receiving-email-concepts-rules) .
 *
 * You can execute this operation no more than once per second.
 *
 * @cloudformationResource AWS::SES::ReceiptRuleSet
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ses-receiptruleset.html
 */
class CfnReceiptRuleSetPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_ses.CfnReceiptRuleSetPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["ruleSetName"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SES::ReceiptRuleSet`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_ses_CfnReceiptRuleSetMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnReceiptRuleSetPropsMixin);
            }
            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.CfnReceiptRuleSet.isCfnReceiptRuleSet(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnReceiptRuleSetPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnReceiptRuleSetPropsMixin = CfnReceiptRuleSetPropsMixin;
/**
 * Specifies an email template.
 *
 * Email templates enable you to send personalized email to one or more destinations in a single API operation.
 *
 * @cloudformationResource AWS::SES::Template
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ses-template.html
 */
class CfnTemplatePropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_ses.CfnTemplatePropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["tags", "template"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SES::Template`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_ses_CfnTemplateMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnTemplatePropsMixin);
            }
            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.CfnTemplate.isCfnTemplate(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnTemplatePropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnTemplatePropsMixin = CfnTemplatePropsMixin;
/**
 * The Virtual Deliverability Manager (VDM) attributes that apply to your Amazon SES account.
 *
 * @cloudformationResource AWS::SES::VdmAttributes
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ses-vdmattributes.html
 */
class CfnVdmAttributesPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_ses.CfnVdmAttributesPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["dashboardAttributes", "guardianAttributes"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SES::VdmAttributes`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_ses_CfnVdmAttributesMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnVdmAttributesPropsMixin);
            }
            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.CfnVdmAttributes.isCfnVdmAttributes(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnVdmAttributesPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnVdmAttributesPropsMixin = CfnVdmAttributesPropsMixin;
/**
 * Resource Type definition for AWS::SES::CustomVerificationEmailTemplate.
 *
 * @cloudformationResource AWS::SES::CustomVerificationEmailTemplate
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ses-customverificationemailtemplate.html
 */
class CfnCustomVerificationEmailTemplatePropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_ses.CfnCustomVerificationEmailTemplatePropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["failureRedirectionUrl", "fromEmailAddress", "successRedirectionUrl", "tags", "templateContent", "templateName", "templateSubject"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SES::CustomVerificationEmailTemplate`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_ses_CfnCustomVerificationEmailTemplateMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnCustomVerificationEmailTemplatePropsMixin);
            }
            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.CfnCustomVerificationEmailTemplate.isCfnCustomVerificationEmailTemplate(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnCustomVerificationEmailTemplatePropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnCustomVerificationEmailTemplatePropsMixin = CfnCustomVerificationEmailTemplatePropsMixin;
/**
 * Creates an Add On instance for the subscription indicated in the request.
 *
 * The resulting Amazon Resource Name (ARN) can be used in a conditional statement for a rule set or traffic policy.
 *
 * @cloudformationResource AWS::SES::MailManagerAddonInstance
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ses-mailmanageraddoninstance.html
 */
class CfnMailManagerAddonInstancePropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_ses.CfnMailManagerAddonInstancePropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["addonSubscriptionId", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SES::MailManagerAddonInstance`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_ses_CfnMailManagerAddonInstanceMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnMailManagerAddonInstancePropsMixin);
            }
            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.CfnMailManagerAddonInstance.isCfnMailManagerAddonInstance(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnMailManagerAddonInstancePropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnMailManagerAddonInstancePropsMixin = CfnMailManagerAddonInstancePropsMixin;
/**
 * Creates a subscription for an Add On representing the acceptance of its terms of use and additional pricing.
 *
 * The subscription can then be used to create an instance for use in rule sets or traffic policies.
 *
 * @cloudformationResource AWS::SES::MailManagerAddonSubscription
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ses-mailmanageraddonsubscription.html
 */
class CfnMailManagerAddonSubscriptionPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_ses.CfnMailManagerAddonSubscriptionPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["addonName", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SES::MailManagerAddonSubscription`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_ses_CfnMailManagerAddonSubscriptionMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnMailManagerAddonSubscriptionPropsMixin);
            }
            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.CfnMailManagerAddonSubscription.isCfnMailManagerAddonSubscription(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnMailManagerAddonSubscriptionPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnMailManagerAddonSubscriptionPropsMixin = CfnMailManagerAddonSubscriptionPropsMixin;
/**
 * The structure representing the address lists and address list attribute that will be used in evaluation of boolean expression.
 *
 * @cloudformationResource AWS::SES::MailManagerAddressList
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ses-mailmanageraddresslist.html
 */
class CfnMailManagerAddressListPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_ses.CfnMailManagerAddressListPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["addressListName", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SES::MailManagerAddressList`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_ses_CfnMailManagerAddressListMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnMailManagerAddressListPropsMixin);
            }
            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.CfnMailManagerAddressList.isCfnMailManagerAddressList(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnMailManagerAddressListPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnMailManagerAddressListPropsMixin = CfnMailManagerAddressListPropsMixin;
/**
 * Creates a new email archive resource for storing and retaining emails.
 *
 * @cloudformationResource AWS::SES::MailManagerArchive
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ses-mailmanagerarchive.html
 */
class CfnMailManagerArchivePropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_ses.CfnMailManagerArchivePropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["archiveName", "kmsKeyArn", "retention", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SES::MailManagerArchive`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_ses_CfnMailManagerArchiveMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnMailManagerArchivePropsMixin);
            }
            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.CfnMailManagerArchive.isCfnMailManagerArchive(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnMailManagerArchivePropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnMailManagerArchivePropsMixin = CfnMailManagerArchivePropsMixin;
/**
 * Resource to provision an ingress endpoint for receiving email.
 *
 * An ingress endpoint serves as the entry point for incoming emails, allowing you to define how emails are received and processed within your AWS environment.
 *
 * @cloudformationResource AWS::SES::MailManagerIngressPoint
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ses-mailmanageringresspoint.html
 */
class CfnMailManagerIngressPointPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_ses.CfnMailManagerIngressPointPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["ingressPointConfiguration", "ingressPointName", "networkConfiguration", "ruleSetId", "statusToUpdate", "tags", "tlsPolicy", "trafficPolicyId", "type"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SES::MailManagerIngressPoint`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_ses_CfnMailManagerIngressPointMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnMailManagerIngressPointPropsMixin);
            }
            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.CfnMailManagerIngressPoint.isCfnMailManagerIngressPoint(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnMailManagerIngressPointPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnMailManagerIngressPointPropsMixin = CfnMailManagerIngressPointPropsMixin;
/**
 * Resource to create an SMTP relay, which can be used within a Mail Manager rule set to forward incoming emails to defined relay destinations.
 *
 * @cloudformationResource AWS::SES::MailManagerRelay
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ses-mailmanagerrelay.html
 */
class CfnMailManagerRelayPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_ses.CfnMailManagerRelayPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["authentication", "relayName", "serverName", "serverPort", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SES::MailManagerRelay`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_ses_CfnMailManagerRelayMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnMailManagerRelayPropsMixin);
            }
            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.CfnMailManagerRelay.isCfnMailManagerRelay(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnMailManagerRelayPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnMailManagerRelayPropsMixin = CfnMailManagerRelayPropsMixin;
/**
 * Resource to create a rule set for a Mail Manager ingress endpoint which contains a list of rules that are evaluated sequentially for each email.
 *
 * @cloudformationResource AWS::SES::MailManagerRuleSet
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ses-mailmanagerruleset.html
 */
class CfnMailManagerRuleSetPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_ses.CfnMailManagerRuleSetPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["rules", "ruleSetName", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SES::MailManagerRuleSet`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_ses_CfnMailManagerRuleSetMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnMailManagerRuleSetPropsMixin);
            }
            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.CfnMailManagerRuleSet.isCfnMailManagerRuleSet(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnMailManagerRuleSetPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnMailManagerRuleSetPropsMixin = CfnMailManagerRuleSetPropsMixin;
/**
 * Resource to create a traffic policy for a Mail Manager ingress endpoint which contains policy statements used to evaluate whether incoming emails should be allowed or denied.
 *
 * @cloudformationResource AWS::SES::MailManagerTrafficPolicy
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ses-mailmanagertrafficpolicy.html
 */
class CfnMailManagerTrafficPolicyPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_ses.CfnMailManagerTrafficPolicyPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["defaultAction", "maxMessageSizeBytes", "policyStatements", "tags", "trafficPolicyName"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SES::MailManagerTrafficPolicy`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_ses_CfnMailManagerTrafficPolicyMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnMailManagerTrafficPolicyPropsMixin);
            }
            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.CfnMailManagerTrafficPolicy.isCfnMailManagerTrafficPolicy(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnMailManagerTrafficPolicyPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnMailManagerTrafficPolicyPropsMixin = CfnMailManagerTrafficPolicyPropsMixin;
/**
 * Creates a multi-region endpoint (global-endpoint).
 *
 * The primary region is going to be the AWS-Region where the operation is executed. The secondary region has to be provided in request's parameters. From the data flow standpoint there is no difference between primary and secondary regions - sending traffic will be split equally between the two. The primary region is the region where the resource has been created and where it can be managed.
 *
 * @cloudformationResource AWS::SES::MultiRegionEndpoint
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ses-multiregionendpoint.html
 */
class CfnMultiRegionEndpointPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_ses.CfnMultiRegionEndpointPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["details", "endpointName", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SES::MultiRegionEndpoint`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_ses_CfnMultiRegionEndpointMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnMultiRegionEndpointPropsMixin);
            }
            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.CfnMultiRegionEndpoint.isCfnMultiRegionEndpoint(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnMultiRegionEndpointPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnMultiRegionEndpointPropsMixin = CfnMultiRegionEndpointPropsMixin;
/**
 * Create a tenant.
 *
 * *Tenants* are logical containers that group related SES resources together. Each tenant can have its own set of resources like email identities, configuration sets, and templates, along with reputation metrics and sending status. This helps isolate and manage email sending for different customers or business units within your Amazon SES API v2 account.
 *
 * @cloudformationResource AWS::SES::Tenant
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ses-tenant.html
 */
class CfnTenantPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_ses.CfnTenantPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["resourceAssociations", "tags", "tenantName"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SES::Tenant`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_ses_CfnTenantMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnTenantPropsMixin);
            }
            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.CfnTenant.isCfnTenant(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnTenantPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnTenantPropsMixin = CfnTenantPropsMixin;
