"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.CfnRecordSetGroupPropsMixin = exports.CfnRecordSetPropsMixin = exports.CfnKeySigningKeyPropsMixin = exports.CfnHostedZonePropsMixin = exports.CfnHealthCheckPropsMixin = exports.CfnDNSSECPropsMixin = exports.CfnCidrCollectionPropsMixin = 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-route53"));
/**
 * Creates a CIDR collection in the current AWS account.
 *
 * @cloudformationResource AWS::Route53::CidrCollection
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-cidrcollection.html
 */
class CfnCidrCollectionPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_route53.CfnCidrCollectionPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["locations", "name"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Route53::CidrCollection`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_route53_CfnCidrCollectionMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnCidrCollectionPropsMixin);
            }
            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.CfnCidrCollection.isCfnCidrCollection(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnCidrCollectionPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnCidrCollectionPropsMixin = CfnCidrCollectionPropsMixin;
/**
 * The `AWS::Route53::DNSSEC` resource is used to enable DNSSEC signing in a hosted zone.
 *
 * @cloudformationResource AWS::Route53::DNSSEC
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-dnssec.html
 */
class CfnDNSSECPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_route53.CfnDNSSECPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["hostedZoneId"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Route53::DNSSEC`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_route53_CfnDNSSECMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnDNSSECPropsMixin);
            }
            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.CfnDNSSEC.isCfnDNSSEC(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnDNSSECPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnDNSSECPropsMixin = CfnDNSSECPropsMixin;
/**
 * The `AWS::Route53::HealthCheck` resource is a Route 53 resource type that contains settings for a Route 53 health check.
 *
 * For information about associating health checks with records, see [HealthCheckId](https://docs.aws.amazon.com/Route53/latest/APIReference/API_ResourceRecordSet.html#Route53-Type-ResourceRecordSet-HealthCheckId) in [ChangeResourceRecordSets](https://docs.aws.amazon.com/Route53/latest/APIReference/API_ChangeResourceRecordSets.html) .
 *
 * > You can't create a health check with simple routing.
 *
 * *ELB Load Balancers*
 *
 * If you're registering EC2 instances with an Elastic Load Balancing (ELB) load balancer, do not create Amazon Route 53 health checks for the EC2 instances. When you register an EC2 instance with a load balancer, you configure settings for an ELB health check, which performs a similar function to a Route 53 health check.
 *
 * *Private Hosted Zones*
 *
 * You can associate health checks with failover records in a private hosted zone. Note the following:
 *
 * - Route 53 health checkers are outside the VPC. To check the health of an endpoint within a VPC by IP address, you must assign a public IP address to the instance in the VPC.
 * - You can configure a health checker to check the health of an external resource that the instance relies on, such as a database server.
 * - You can create a CloudWatch metric, associate an alarm with the metric, and then create a health check that is based on the state of the alarm. For example, you might create a CloudWatch metric that checks the status of the Amazon EC2 `StatusCheckFailed` metric, add an alarm to the metric, and then create a health check that is based on the state of the alarm. For information about creating CloudWatch metrics and alarms by using the CloudWatch console, see the [Amazon CloudWatch User Guide](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatch.html) .
 *
 * @cloudformationResource AWS::Route53::HealthCheck
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-healthcheck.html
 */
class CfnHealthCheckPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_route53.CfnHealthCheckPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["healthCheckConfig", "healthCheckTags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Route53::HealthCheck`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_route53_CfnHealthCheckMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnHealthCheckPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnHealthCheckMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnHealthCheck.isCfnHealthCheck(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnHealthCheckPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnHealthCheckPropsMixin = CfnHealthCheckPropsMixin;
// @ts-ignore TS6133
function flattenCfnHealthCheckPropsMixinAlarmIdentifierProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        name: (!props.name ? undefined : cdk.getRefProperty(props.name?.alarmRef, 'alarmName') ?? cdk.ensureStringOrUndefined(props.name, "name", "cloudwatch.IAlarmRef | string")),
        region: (!props.region ? undefined : props.region)
    };
}
// @ts-ignore TS6133
function flattenCfnHealthCheckPropsMixinHealthCheckConfigProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        alarmIdentifier: (!props.alarmIdentifier ? undefined : (!props.alarmIdentifier ? undefined : flattenCfnHealthCheckPropsMixinAlarmIdentifierProperty(props.alarmIdentifier))),
        childHealthChecks: (!props.childHealthChecks ? undefined : cdk.mapArrayInPlace(props.childHealthChecks, (item) => cdk.getRefProperty(item?.healthCheckRef, 'healthCheckId') ?? cdk.ensureStringOrUndefined(item, "childHealthChecks", "route53.IHealthCheckRef | string"))),
        enableSni: (!props.enableSni ? undefined : props.enableSni),
        failureThreshold: (!props.failureThreshold ? undefined : props.failureThreshold),
        fullyQualifiedDomainName: (!props.fullyQualifiedDomainName ? undefined : props.fullyQualifiedDomainName),
        healthThreshold: (!props.healthThreshold ? undefined : props.healthThreshold),
        insufficientDataHealthStatus: (!props.insufficientDataHealthStatus ? undefined : props.insufficientDataHealthStatus),
        inverted: (!props.inverted ? undefined : props.inverted),
        ipAddress: (!props.ipAddress ? undefined : cdk.getRefProperty(props.ipAddress?.eipRef, 'publicIp') ?? cdk.getRefProperty(props.ipAddress?.eipRef, 'allocationId') ?? cdk.ensureStringOrUndefined(props.ipAddress, "ipAddress", "ec2.IEIPRef | string")),
        measureLatency: (!props.measureLatency ? undefined : props.measureLatency),
        port: (!props.port ? undefined : props.port),
        regions: (!props.regions ? undefined : props.regions),
        requestInterval: (!props.requestInterval ? undefined : props.requestInterval),
        resourcePath: (!props.resourcePath ? undefined : props.resourcePath),
        routingControlArn: (!props.routingControlArn ? undefined : cdk.getRefProperty(props.routingControlArn?.routingControlRef, 'routingControlArn') ?? cdk.ensureStringOrUndefined(props.routingControlArn, "routingControlArn", "route53recoverycontrol.IRoutingControlRef | string")),
        searchString: (!props.searchString ? undefined : props.searchString),
        type: (!props.type ? undefined : props.type)
    };
}
// @ts-ignore TS6133
function flattenCfnHealthCheckMixinProps(props) {
    const ret = {};
    if ((props.healthCheckConfig !== undefined))
        ret.healthCheckConfig = flattenCfnHealthCheckPropsMixinHealthCheckConfigProperty(props.healthCheckConfig);
    return ret;
}
/**
 * Creates a new public or private hosted zone.
 *
 * You create records in a public hosted zone to define how you want to route traffic on the internet for a domain, such as example.com, and its subdomains (apex.example.com, acme.example.com). You create records in a private hosted zone to define how you want to route traffic for a domain and its subdomains within one or more Amazon Virtual Private Clouds (Amazon VPCs).
 *
 * > You can't convert a public hosted zone to a private hosted zone or vice versa. Instead, you must create a new hosted zone with the same name and create new resource record sets.
 *
 * For more information about charges for hosted zones, see [Amazon Route 53 Pricing](https://docs.aws.amazon.com/route53/pricing/) .
 *
 * Note the following:
 *
 * - You can't create a hosted zone for a top-level domain (TLD) such as .com.
 * - If your domain is registered with a registrar other than Route 53, you must update the name servers with your registrar to make Route 53 the DNS service for the domain. For more information, see [Migrating DNS Service for an Existing Domain to Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/MigratingDNS.html) in the *Amazon Route 53 Developer Guide* .
 *
 * When you submit a `CreateHostedZone` request, the initial status of the hosted zone is `PENDING` . For public hosted zones, this means that the NS and SOA records are not yet available on all Route 53 DNS servers. When the NS and SOA records are available, the status of the zone changes to `INSYNC` .
 *
 * The `CreateHostedZone` request requires the caller to have an `ec2:DescribeVpcs` permission.
 *
 * > When creating private hosted zones, the Amazon VPC must belong to the same partition where the hosted zone is created. A partition is a group of AWS Regions . Each AWS account is scoped to one partition.
 * >
 * > The following are the supported partitions:
 * >
 * > - `aws` - AWS Regions
 * > - `aws-cn` - China Regions
 * > - `aws-us-gov` - AWS GovCloud (US) Region
 * >
 * > For more information, see [Access Management](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) in the *AWS General Reference* .
 *
 * @cloudformationResource AWS::Route53::HostedZone
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-hostedzone.html
 */
class CfnHostedZonePropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_route53.CfnHostedZonePropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["hostedZoneConfig", "hostedZoneFeatures", "hostedZoneTags", "name", "queryLoggingConfig", "vpcs"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Route53::HostedZone`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_route53_CfnHostedZoneMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnHostedZonePropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnHostedZoneMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnHostedZone.isCfnHostedZone(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnHostedZonePropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnHostedZonePropsMixin = CfnHostedZonePropsMixin;
// @ts-ignore TS6133
function flattenCfnHostedZonePropsMixinVPCProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        vpcId: (!props.vpcId ? undefined : cdk.getRefProperty(props.vpcId?.vpcRef, 'vpcId') ?? cdk.ensureStringOrUndefined(props.vpcId, "vpcId", "ec2.IVPCRef | string")),
        vpcRegion: (!props.vpcRegion ? undefined : props.vpcRegion)
    };
}
// @ts-ignore TS6133
function flattenCfnHostedZonePropsMixinQueryLoggingConfigProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        cloudWatchLogsLogGroupArn: (!props.cloudWatchLogsLogGroupArn ? undefined : cdk.getRefProperty(props.cloudWatchLogsLogGroupArn?.logGroupRef, 'logGroupArn') ?? cdk.ensureStringOrUndefined(props.cloudWatchLogsLogGroupArn, "cloudWatchLogsLogGroupArn", "logs.ILogGroupRef | string"))
    };
}
// @ts-ignore TS6133
function flattenCfnHostedZoneMixinProps(props) {
    const ret = {};
    if ((props.queryLoggingConfig !== undefined))
        ret.queryLoggingConfig = flattenCfnHostedZonePropsMixinQueryLoggingConfigProperty(props.queryLoggingConfig);
    if ((props.vpcs !== undefined))
        ret.vpcs = (cdk.isResolvableObject(props.vpcs) ? props.vpcs : cdk.mapArrayInPlace(props.vpcs, (item) => flattenCfnHostedZonePropsMixinVPCProperty(item)));
    return ret;
}
/**
 * The `AWS::Route53::KeySigningKey` resource creates a new key-signing key (KSK) in a hosted zone.
 *
 * The hosted zone ID is passed as a parameter in the KSK properties. You can specify the properties of this KSK using the `Name` , `Status` , and `KeyManagementServiceArn` properties of the resource.
 *
 * @cloudformationResource AWS::Route53::KeySigningKey
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-keysigningkey.html
 */
class CfnKeySigningKeyPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_route53.CfnKeySigningKeyPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["hostedZoneId", "keyManagementServiceArn", "name", "status"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Route53::KeySigningKey`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_route53_CfnKeySigningKeyMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnKeySigningKeyPropsMixin);
            }
            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.CfnKeySigningKey.isCfnKeySigningKey(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnKeySigningKeyPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnKeySigningKeyPropsMixin = CfnKeySigningKeyPropsMixin;
/**
 * Information about the record that you want to create.
 *
 * The `AWS::Route53::RecordSet` type can be used as a standalone resource or as an embedded property in the `AWS::Route53::RecordSetGroup` type. Note that some `AWS::Route53::RecordSet` properties are valid only when used within `AWS::Route53::RecordSetGroup` .
 *
 * For more information, see [ChangeResourceRecordSets](https://docs.aws.amazon.com/Route53/latest/APIReference/API_ChangeResourceRecordSets.html) in the *Amazon Route 53 API Reference* .
 *
 * @cloudformationResource AWS::Route53::RecordSet
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-recordset.html
 */
class CfnRecordSetPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_route53.CfnRecordSetPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["aliasTarget", "cidrRoutingConfig", "comment", "failover", "geoLocation", "geoProximityLocation", "healthCheckId", "hostedZoneId", "hostedZoneName", "multiValueAnswer", "name", "region", "resourceRecords", "setIdentifier", "ttl", "type", "weight"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Route53::RecordSet`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_route53_CfnRecordSetMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnRecordSetPropsMixin);
            }
            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.CfnRecordSet.isCfnRecordSet(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnRecordSetPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnRecordSetPropsMixin = CfnRecordSetPropsMixin;
/**
 * A complex type that contains an optional comment, the name and ID of the hosted zone that you want to make changes in, and values for the records that you want to create.
 *
 * @cloudformationResource AWS::Route53::RecordSetGroup
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-recordsetgroup.html
 */
class CfnRecordSetGroupPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_route53.CfnRecordSetGroupPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["comment", "hostedZoneId", "hostedZoneName", "recordSets"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Route53::RecordSetGroup`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_route53_CfnRecordSetGroupMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnRecordSetGroupPropsMixin);
            }
            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.CfnRecordSetGroup.isCfnRecordSetGroup(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnRecordSetGroupPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnRecordSetGroupPropsMixin = CfnRecordSetGroupPropsMixin;
