"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.CfnDirectConnectGatewayAttachmentPropsMixin = exports.CfnCoreNetworkPrefixListAssociationPropsMixin = exports.CfnVpcAttachmentPropsMixin = exports.CfnTransitGatewayRouteTableAttachmentPropsMixin = exports.CfnTransitGatewayRegistrationPropsMixin = exports.CfnTransitGatewayPeeringPropsMixin = exports.CfnSiteToSiteVpnAttachmentPropsMixin = exports.CfnSitePropsMixin = exports.CfnLinkAssociationPropsMixin = exports.CfnLinkPropsMixin = exports.CfnGlobalNetworkPropsMixin = exports.CfnDevicePropsMixin = exports.CfnCustomerGatewayAssociationPropsMixin = exports.CfnCoreNetworkPropsMixin = exports.CfnConnectPeerPropsMixin = exports.CfnConnectAttachmentPropsMixin = 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-networkmanager"));
/**
 * Creates a core network Connect attachment from a specified core network attachment.
 *
 * A core network Connect attachment is a GRE-based tunnel attachment that you can use to establish a connection between a core network and an appliance. A core network Connect attachment uses an existing VPC attachment as the underlying transport mechanism.
 *
 * @cloudformationResource AWS::NetworkManager::ConnectAttachment
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkmanager-connectattachment.html
 */
class CfnConnectAttachmentPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_networkmanager.CfnConnectAttachmentPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["coreNetworkId", "edgeLocation", "networkFunctionGroupName", "options", "proposedNetworkFunctionGroupChange", "proposedSegmentChange", "routingPolicyLabel", "tags", "transportAttachmentId"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::NetworkManager::ConnectAttachment`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_networkmanager_CfnConnectAttachmentMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnConnectAttachmentPropsMixin);
            }
            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.CfnConnectAttachment.isCfnConnectAttachment(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnConnectAttachmentPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnConnectAttachmentPropsMixin = CfnConnectAttachmentPropsMixin;
/**
 * Creates a core network Connect peer for a specified core network connect attachment between a core network and an appliance.
 *
 * The peer address and transit gateway address must be the same IP address family (IPv4 or IPv6).
 *
 * @cloudformationResource AWS::NetworkManager::ConnectPeer
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkmanager-connectpeer.html
 */
class CfnConnectPeerPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_networkmanager.CfnConnectPeerPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["bgpOptions", "connectAttachmentId", "coreNetworkAddress", "insideCidrBlocks", "peerAddress", "subnetArn", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::NetworkManager::ConnectPeer`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_networkmanager_CfnConnectPeerMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnConnectPeerPropsMixin);
            }
            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.CfnConnectPeer.isCfnConnectPeer(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnConnectPeerPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnConnectPeerPropsMixin = CfnConnectPeerPropsMixin;
/**
 * Describes a core network.
 *
 * @cloudformationResource AWS::NetworkManager::CoreNetwork
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkmanager-corenetwork.html
 */
class CfnCoreNetworkPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_networkmanager.CfnCoreNetworkPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["description", "globalNetworkId", "policyDocument", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::NetworkManager::CoreNetwork`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_networkmanager_CfnCoreNetworkMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnCoreNetworkPropsMixin);
            }
            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.CfnCoreNetwork.isCfnCoreNetwork(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnCoreNetworkPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnCoreNetworkPropsMixin = CfnCoreNetworkPropsMixin;
/**
 * Specifies an association between a customer gateway, a device, and optionally, a link.
 *
 * If you specify a link, it must be associated with the specified device. The customer gateway must be connected to a VPN attachment on a transit gateway that's registered in your global network.
 *
 * You cannot associate a customer gateway with more than one device and link.
 *
 * @cloudformationResource AWS::NetworkManager::CustomerGatewayAssociation
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkmanager-customergatewayassociation.html
 */
class CfnCustomerGatewayAssociationPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_networkmanager.CfnCustomerGatewayAssociationPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["customerGatewayArn", "deviceId", "globalNetworkId", "linkId"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::NetworkManager::CustomerGatewayAssociation`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_networkmanager_CfnCustomerGatewayAssociationMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnCustomerGatewayAssociationPropsMixin);
            }
            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.CfnCustomerGatewayAssociation.isCfnCustomerGatewayAssociation(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnCustomerGatewayAssociationPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnCustomerGatewayAssociationPropsMixin = CfnCustomerGatewayAssociationPropsMixin;
/**
 * Specifies a device.
 *
 * @cloudformationResource AWS::NetworkManager::Device
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkmanager-device.html
 */
class CfnDevicePropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_networkmanager.CfnDevicePropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["awsLocation", "description", "globalNetworkId", "location", "model", "serialNumber", "siteId", "tags", "type", "vendor"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::NetworkManager::Device`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_networkmanager_CfnDeviceMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnDevicePropsMixin);
            }
            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.CfnDevice.isCfnDevice(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnDevicePropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnDevicePropsMixin = CfnDevicePropsMixin;
/**
 * Creates a new, empty global network.
 *
 * @cloudformationResource AWS::NetworkManager::GlobalNetwork
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkmanager-globalnetwork.html
 */
class CfnGlobalNetworkPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_networkmanager.CfnGlobalNetworkPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["createdAt", "description", "state", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::NetworkManager::GlobalNetwork`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_networkmanager_CfnGlobalNetworkMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnGlobalNetworkPropsMixin);
            }
            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.CfnGlobalNetwork.isCfnGlobalNetwork(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnGlobalNetworkPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnGlobalNetworkPropsMixin = CfnGlobalNetworkPropsMixin;
/**
 * Specifies a link for a site.
 *
 * @cloudformationResource AWS::NetworkManager::Link
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkmanager-link.html
 */
class CfnLinkPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_networkmanager.CfnLinkPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["bandwidth", "description", "globalNetworkId", "provider", "siteId", "tags", "type"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::NetworkManager::Link`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_networkmanager_CfnLinkMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnLinkPropsMixin);
            }
            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.CfnLink.isCfnLink(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnLinkPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnLinkPropsMixin = CfnLinkPropsMixin;
/**
 * Describes the association between a device and a link.
 *
 * @cloudformationResource AWS::NetworkManager::LinkAssociation
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkmanager-linkassociation.html
 */
class CfnLinkAssociationPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_networkmanager.CfnLinkAssociationPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["deviceId", "globalNetworkId", "linkId"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::NetworkManager::LinkAssociation`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_networkmanager_CfnLinkAssociationMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnLinkAssociationPropsMixin);
            }
            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.CfnLinkAssociation.isCfnLinkAssociation(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnLinkAssociationPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnLinkAssociationPropsMixin = CfnLinkAssociationPropsMixin;
/**
 * Creates a new site in a global network.
 *
 * @cloudformationResource AWS::NetworkManager::Site
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkmanager-site.html
 */
class CfnSitePropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_networkmanager.CfnSitePropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["description", "globalNetworkId", "location", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::NetworkManager::Site`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_networkmanager_CfnSiteMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnSitePropsMixin);
            }
            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.CfnSite.isCfnSite(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnSitePropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnSitePropsMixin = CfnSitePropsMixin;
/**
 * Creates an Amazon Web Services site-to-site VPN attachment on an edge location of a core network.
 *
 * @cloudformationResource AWS::NetworkManager::SiteToSiteVpnAttachment
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkmanager-sitetositevpnattachment.html
 */
class CfnSiteToSiteVpnAttachmentPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_networkmanager.CfnSiteToSiteVpnAttachmentPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["coreNetworkId", "networkFunctionGroupName", "proposedNetworkFunctionGroupChange", "proposedSegmentChange", "routingPolicyLabel", "tags", "vpnConnectionArn"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::NetworkManager::SiteToSiteVpnAttachment`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_networkmanager_CfnSiteToSiteVpnAttachmentMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnSiteToSiteVpnAttachmentPropsMixin);
            }
            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.CfnSiteToSiteVpnAttachment.isCfnSiteToSiteVpnAttachment(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnSiteToSiteVpnAttachmentPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnSiteToSiteVpnAttachmentPropsMixin = CfnSiteToSiteVpnAttachmentPropsMixin;
/**
 * Creates a transit gateway peering connection.
 *
 * @cloudformationResource AWS::NetworkManager::TransitGatewayPeering
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkmanager-transitgatewaypeering.html
 */
class CfnTransitGatewayPeeringPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_networkmanager.CfnTransitGatewayPeeringPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["coreNetworkId", "tags", "transitGatewayArn"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::NetworkManager::TransitGatewayPeering`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_networkmanager_CfnTransitGatewayPeeringMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnTransitGatewayPeeringPropsMixin);
            }
            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.CfnTransitGatewayPeering.isCfnTransitGatewayPeering(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnTransitGatewayPeeringPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnTransitGatewayPeeringPropsMixin = CfnTransitGatewayPeeringPropsMixin;
/**
 * Registers a transit gateway in your global network.
 *
 * Not all Regions support transit gateways for global networks. For a list of the supported Regions, see [Region Availability](https://docs.aws.amazon.com/network-manager/latest/tgwnm/what-are-global-networks.html#nm-available-regions) in the *AWS Transit Gateways for Global Networks User Guide* . The transit gateway can be in any of the supported AWS Regions, but it must be owned by the same AWS account that owns the global network. You cannot register a transit gateway in more than one global network.
 *
 * @cloudformationResource AWS::NetworkManager::TransitGatewayRegistration
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkmanager-transitgatewayregistration.html
 */
class CfnTransitGatewayRegistrationPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_networkmanager.CfnTransitGatewayRegistrationPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["globalNetworkId", "transitGatewayArn"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::NetworkManager::TransitGatewayRegistration`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_networkmanager_CfnTransitGatewayRegistrationMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnTransitGatewayRegistrationPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnTransitGatewayRegistrationMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnTransitGatewayRegistration.isCfnTransitGatewayRegistration(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnTransitGatewayRegistrationPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnTransitGatewayRegistrationPropsMixin = CfnTransitGatewayRegistrationPropsMixin;
// @ts-ignore TS6133
function flattenCfnTransitGatewayRegistrationMixinProps(props) {
    const ret = {};
    if ((props.globalNetworkId !== undefined))
        ret.globalNetworkId = cdk.getRefProperty(props.globalNetworkId?.globalNetworkRef, 'globalNetworkId') ?? cdk.ensureStringOrUndefined(props.globalNetworkId, "globalNetworkId", "networkmanager.IGlobalNetworkRef | string");
    return ret;
}
/**
 * Creates a transit gateway route table attachment.
 *
 * @cloudformationResource AWS::NetworkManager::TransitGatewayRouteTableAttachment
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkmanager-transitgatewayroutetableattachment.html
 */
class CfnTransitGatewayRouteTableAttachmentPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_networkmanager.CfnTransitGatewayRouteTableAttachmentPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["networkFunctionGroupName", "peeringId", "proposedNetworkFunctionGroupChange", "proposedSegmentChange", "routingPolicyLabel", "tags", "transitGatewayRouteTableArn"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::NetworkManager::TransitGatewayRouteTableAttachment`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_networkmanager_CfnTransitGatewayRouteTableAttachmentMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnTransitGatewayRouteTableAttachmentPropsMixin);
            }
            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.CfnTransitGatewayRouteTableAttachment.isCfnTransitGatewayRouteTableAttachment(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnTransitGatewayRouteTableAttachmentPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnTransitGatewayRouteTableAttachmentPropsMixin = CfnTransitGatewayRouteTableAttachmentPropsMixin;
/**
 * Creates a VPC attachment on an edge location of a core network.
 *
 * @cloudformationResource AWS::NetworkManager::VpcAttachment
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkmanager-vpcattachment.html
 */
class CfnVpcAttachmentPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_networkmanager.CfnVpcAttachmentPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["coreNetworkId", "options", "proposedNetworkFunctionGroupChange", "proposedSegmentChange", "routingPolicyLabel", "subnetArns", "tags", "vpcArn"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::NetworkManager::VpcAttachment`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_networkmanager_CfnVpcAttachmentMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnVpcAttachmentPropsMixin);
            }
            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.CfnVpcAttachment.isCfnVpcAttachment(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnVpcAttachmentPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnVpcAttachmentPropsMixin = CfnVpcAttachmentPropsMixin;
/**
 * Resource Type definition for AWS::NetworkManager::CoreNetworkPrefixListAssociation which associates a prefix list with a core network.
 *
 * @cloudformationResource AWS::NetworkManager::CoreNetworkPrefixListAssociation
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkmanager-corenetworkprefixlistassociation.html
 */
class CfnCoreNetworkPrefixListAssociationPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_networkmanager.CfnCoreNetworkPrefixListAssociationPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["coreNetworkId", "prefixListAlias", "prefixListArn"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::NetworkManager::CoreNetworkPrefixListAssociation`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_networkmanager_CfnCoreNetworkPrefixListAssociationMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnCoreNetworkPrefixListAssociationPropsMixin);
            }
            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.CfnCoreNetworkPrefixListAssociation.isCfnCoreNetworkPrefixListAssociation(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnCoreNetworkPrefixListAssociationPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnCoreNetworkPrefixListAssociationPropsMixin = CfnCoreNetworkPrefixListAssociationPropsMixin;
/**
 * Creates an AWS Direct Connect gateway attachment.
 *
 * @cloudformationResource AWS::NetworkManager::DirectConnectGatewayAttachment
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-networkmanager-directconnectgatewayattachment.html
 */
class CfnDirectConnectGatewayAttachmentPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_networkmanager.CfnDirectConnectGatewayAttachmentPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["coreNetworkId", "directConnectGatewayArn", "edgeLocations", "proposedNetworkFunctionGroupChange", "proposedSegmentChange", "routingPolicyLabel", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::NetworkManager::DirectConnectGatewayAttachment`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_networkmanager_CfnDirectConnectGatewayAttachmentMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnDirectConnectGatewayAttachmentPropsMixin);
            }
            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.CfnDirectConnectGatewayAttachment.isCfnDirectConnectGatewayAttachment(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnDirectConnectGatewayAttachmentPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnDirectConnectGatewayAttachmentPropsMixin = CfnDirectConnectGatewayAttachmentPropsMixin;
