"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.CfnWorkspacePropsMixin = exports.CfnUserHierarchyStructurePropsMixin = exports.CfnPredefinedAttributePropsMixin = exports.CfnNotificationPropsMixin = exports.CfnEmailAddressPropsMixin = exports.CfnDataTableRecordPropsMixin = exports.CfnDataTableAttributePropsMixin = exports.CfnDataTablePropsMixin = exports.CfnContactFlowVersionPropsMixin = exports.CfnContactFlowModuleVersionPropsMixin = exports.CfnContactFlowModuleAliasPropsMixin = exports.CfnAgentStatusPropsMixin = exports.CfnViewVersionPropsMixin = exports.CfnViewPropsMixin = exports.CfnUserHierarchyGroupPropsMixin = exports.CfnUserPropsMixin = exports.CfnTrafficDistributionGroupPropsMixin = exports.CfnTaskTemplatePropsMixin = exports.CfnSecurityProfilePropsMixin = exports.CfnSecurityKeyPropsMixin = exports.CfnRulePropsMixin = exports.CfnRoutingProfilePropsMixin = exports.CfnQuickConnectPropsMixin = exports.CfnQueuePropsMixin = exports.CfnPromptPropsMixin = exports.CfnPhoneNumberPropsMixin = exports.CfnIntegrationAssociationPropsMixin = exports.CfnInstanceStorageConfigPropsMixin = exports.CfnInstancePropsMixin = exports.CfnHoursOfOperationPropsMixin = exports.CfnEvaluationFormPropsMixin = exports.CfnContactFlowModulePropsMixin = exports.CfnContactFlowPropsMixin = exports.CfnApprovedOriginPropsMixin = 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-connect"));
/**
 * The approved origin for the instance.
 *
 * @cloudformationResource AWS::Connect::ApprovedOrigin
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-approvedorigin.html
 */
class CfnApprovedOriginPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_connect.CfnApprovedOriginPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["instanceId", "origin"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Connect::ApprovedOrigin`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_connect_CfnApprovedOriginMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnApprovedOriginPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnApprovedOriginMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnApprovedOrigin.isCfnApprovedOrigin(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnApprovedOriginPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnApprovedOriginPropsMixin = CfnApprovedOriginPropsMixin;
// @ts-ignore TS6133
function flattenCfnApprovedOriginMixinProps(props) {
    const ret = {};
    if ((props.instanceId !== undefined))
        ret.instanceId = cdk.getRefProperty(props.instanceId?.instanceRef, 'instanceArn') ?? cdk.ensureStringOrUndefined(props.instanceId, "instanceId", "connect.IInstanceRef | string");
    return ret;
}
/**
 * Specifies a flow for an Connect Customer instance.
 *
 * @cloudformationResource AWS::Connect::ContactFlow
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-contactflow.html
 */
class CfnContactFlowPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_connect.CfnContactFlowPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["content", "description", "instanceArn", "name", "state", "tags", "type"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Connect::ContactFlow`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_connect_CfnContactFlowMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnContactFlowPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnContactFlowMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnContactFlow.isCfnContactFlow(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnContactFlowPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnContactFlowPropsMixin = CfnContactFlowPropsMixin;
// @ts-ignore TS6133
function flattenCfnContactFlowMixinProps(props) {
    const ret = {};
    if ((props.instanceArn !== undefined))
        ret.instanceArn = cdk.getRefProperty(props.instanceArn?.instanceRef, 'instanceArn') ?? cdk.ensureStringOrUndefined(props.instanceArn, "instanceArn", "connect.IInstanceRef | string");
    return ret;
}
/**
 * Specifies a flow module for an Connect Customer instance.
 *
 * @cloudformationResource AWS::Connect::ContactFlowModule
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-contactflowmodule.html
 */
class CfnContactFlowModulePropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_connect.CfnContactFlowModulePropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["content", "description", "externalInvocationConfiguration", "instanceArn", "name", "settings", "state", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Connect::ContactFlowModule`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_connect_CfnContactFlowModuleMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnContactFlowModulePropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnContactFlowModuleMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnContactFlowModule.isCfnContactFlowModule(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnContactFlowModulePropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnContactFlowModulePropsMixin = CfnContactFlowModulePropsMixin;
// @ts-ignore TS6133
function flattenCfnContactFlowModuleMixinProps(props) {
    const ret = {};
    if ((props.instanceArn !== undefined))
        ret.instanceArn = cdk.getRefProperty(props.instanceArn?.instanceRef, 'instanceArn') ?? cdk.ensureStringOrUndefined(props.instanceArn, "instanceArn", "connect.IInstanceRef | string");
    return ret;
}
/**
 * Creates an evaluation form for the specified Connect Customer instance.
 *
 * @cloudformationResource AWS::Connect::EvaluationForm
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-evaluationform.html
 */
class CfnEvaluationFormPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_connect.CfnEvaluationFormPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["autoEvaluationConfiguration", "description", "instanceArn", "items", "languageConfiguration", "reviewConfiguration", "scoringStrategy", "status", "tags", "targetConfiguration", "title"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Connect::EvaluationForm`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_connect_CfnEvaluationFormMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnEvaluationFormPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnEvaluationFormMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnEvaluationForm.isCfnEvaluationForm(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnEvaluationFormPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnEvaluationFormPropsMixin = CfnEvaluationFormPropsMixin;
// @ts-ignore TS6133
function flattenCfnEvaluationFormMixinProps(props) {
    const ret = {};
    if ((props.instanceArn !== undefined))
        ret.instanceArn = cdk.getRefProperty(props.instanceArn?.instanceRef, 'instanceArn') ?? cdk.ensureStringOrUndefined(props.instanceArn, "instanceArn", "connect.IInstanceRef | string");
    return ret;
}
/**
 * Specifies hours of operation.
 *
 * @cloudformationResource AWS::Connect::HoursOfOperation
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-hoursofoperation.html
 */
class CfnHoursOfOperationPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_connect.CfnHoursOfOperationPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["childHoursOfOperations", "config", "description", "hoursOfOperationOverrides", "instanceArn", "name", "parentHoursOfOperations", "tags", "timeZone"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Connect::HoursOfOperation`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_connect_CfnHoursOfOperationMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnHoursOfOperationPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnHoursOfOperationMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnHoursOfOperation.isCfnHoursOfOperation(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnHoursOfOperationPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnHoursOfOperationPropsMixin = CfnHoursOfOperationPropsMixin;
// @ts-ignore TS6133
function flattenCfnHoursOfOperationMixinProps(props) {
    const ret = {};
    if ((props.instanceArn !== undefined))
        ret.instanceArn = cdk.getRefProperty(props.instanceArn?.instanceRef, 'instanceArn') ?? cdk.ensureStringOrUndefined(props.instanceArn, "instanceArn", "connect.IInstanceRef | string");
    return ret;
}
/**
 * *This is a preview release for Connect Customer . It is subject to change.*.
 *
 * Initiates an Connect Customer instance with all the supported channels enabled. It does not attach any storage, such as Amazon Simple Storage Service (Amazon S3) or Amazon Kinesis.
 *
 * Connect Customer enforces a limit on the total number of instances that you can create or delete in 30 days. If you exceed this limit, you will get an error message indicating there has been an excessive number of attempts at creating or deleting instances. You must wait 30 days before you can restart creating and deleting instances in your account.
 *
 * @cloudformationResource AWS::Connect::Instance
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-instance.html
 */
class CfnInstancePropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_connect.CfnInstancePropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["attributes", "directoryId", "identityManagementType", "instanceAlias", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Connect::Instance`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_connect_CfnInstanceMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnInstancePropsMixin);
            }
            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.CfnInstance.isCfnInstance(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnInstancePropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnInstancePropsMixin = CfnInstancePropsMixin;
/**
 * The storage configuration for the instance.
 *
 * @cloudformationResource AWS::Connect::InstanceStorageConfig
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-instancestorageconfig.html
 */
class CfnInstanceStorageConfigPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_connect.CfnInstanceStorageConfigPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["instanceArn", "kinesisFirehoseConfig", "kinesisStreamConfig", "kinesisVideoStreamConfig", "resourceType", "s3Config", "storageType"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Connect::InstanceStorageConfig`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_connect_CfnInstanceStorageConfigMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnInstanceStorageConfigPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnInstanceStorageConfigMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnInstanceStorageConfig.isCfnInstanceStorageConfig(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnInstanceStorageConfigPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnInstanceStorageConfigPropsMixin = CfnInstanceStorageConfigPropsMixin;
// @ts-ignore TS6133
function flattenCfnInstanceStorageConfigMixinProps(props) {
    const ret = {};
    if ((props.instanceArn !== undefined))
        ret.instanceArn = cdk.getRefProperty(props.instanceArn?.instanceRef, 'instanceArn') ?? cdk.ensureStringOrUndefined(props.instanceArn, "instanceArn", "connect.IInstanceRef | string");
    return ret;
}
/**
 * Specifies the association of an AWS resource such as Lex bot (both v1 and v2) and Lambda function with an Connect Customer instance.
 *
 * @cloudformationResource AWS::Connect::IntegrationAssociation
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-integrationassociation.html
 */
class CfnIntegrationAssociationPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_connect.CfnIntegrationAssociationPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["instanceId", "integrationArn", "integrationType", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Connect::IntegrationAssociation`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_connect_CfnIntegrationAssociationMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnIntegrationAssociationPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnIntegrationAssociationMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnIntegrationAssociation.isCfnIntegrationAssociation(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnIntegrationAssociationPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnIntegrationAssociationPropsMixin = CfnIntegrationAssociationPropsMixin;
// @ts-ignore TS6133
function flattenCfnIntegrationAssociationMixinProps(props) {
    const ret = {};
    if ((props.instanceId !== undefined))
        ret.instanceId = cdk.getRefProperty(props.instanceId?.instanceRef, 'instanceArn') ?? cdk.ensureStringOrUndefined(props.instanceId, "instanceId", "connect.IInstanceRef | string");
    return ret;
}
/**
 * Claims a phone number to the specified Connect Customer instance or traffic distribution group.
 *
 * @cloudformationResource AWS::Connect::PhoneNumber
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-phonenumber.html
 */
class CfnPhoneNumberPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_connect.CfnPhoneNumberPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["countryCode", "description", "prefix", "sourcePhoneNumberArn", "tags", "targetArn", "type"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Connect::PhoneNumber`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_connect_CfnPhoneNumberMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnPhoneNumberPropsMixin);
            }
            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.CfnPhoneNumber.isCfnPhoneNumber(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnPhoneNumberPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnPhoneNumberPropsMixin = CfnPhoneNumberPropsMixin;
/**
 * Creates a prompt for the specified Connect Customer instance.
 *
 * @cloudformationResource AWS::Connect::Prompt
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-prompt.html
 */
class CfnPromptPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_connect.CfnPromptPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["description", "instanceArn", "name", "s3Uri", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Connect::Prompt`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_connect_CfnPromptMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnPromptPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnPromptMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnPrompt.isCfnPrompt(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnPromptPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnPromptPropsMixin = CfnPromptPropsMixin;
// @ts-ignore TS6133
function flattenCfnPromptMixinProps(props) {
    const ret = {};
    if ((props.instanceArn !== undefined))
        ret.instanceArn = cdk.getRefProperty(props.instanceArn?.instanceRef, 'instanceArn') ?? cdk.ensureStringOrUndefined(props.instanceArn, "instanceArn", "connect.IInstanceRef | string");
    return ret;
}
/**
 * Contains information about a queue.
 *
 * @cloudformationResource AWS::Connect::Queue
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-queue.html
 */
class CfnQueuePropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_connect.CfnQueuePropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["additionalEmailAddresses", "description", "hoursOfOperationArn", "instanceArn", "maxContacts", "name", "outboundCallerConfig", "outboundEmailConfig", "quickConnectArns", "status", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Connect::Queue`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_connect_CfnQueueMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnQueuePropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnQueueMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnQueue.isCfnQueue(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnQueuePropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnQueuePropsMixin = CfnQueuePropsMixin;
// @ts-ignore TS6133
function flattenCfnQueueMixinProps(props) {
    const ret = {};
    if ((props.instanceArn !== undefined))
        ret.instanceArn = cdk.getRefProperty(props.instanceArn?.instanceRef, 'instanceArn') ?? cdk.ensureStringOrUndefined(props.instanceArn, "instanceArn", "connect.IInstanceRef | string");
    return ret;
}
/**
 * Specifies a quick connect for an Connect Customer instance.
 *
 * @cloudformationResource AWS::Connect::QuickConnect
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-quickconnect.html
 */
class CfnQuickConnectPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_connect.CfnQuickConnectPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["description", "instanceArn", "name", "quickConnectConfig", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Connect::QuickConnect`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_connect_CfnQuickConnectMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnQuickConnectPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnQuickConnectMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnQuickConnect.isCfnQuickConnect(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnQuickConnectPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnQuickConnectPropsMixin = CfnQuickConnectPropsMixin;
// @ts-ignore TS6133
function flattenCfnQuickConnectMixinProps(props) {
    const ret = {};
    if ((props.instanceArn !== undefined))
        ret.instanceArn = cdk.getRefProperty(props.instanceArn?.instanceRef, 'instanceArn') ?? cdk.ensureStringOrUndefined(props.instanceArn, "instanceArn", "connect.IInstanceRef | string");
    return ret;
}
/**
 * Creates a new routing profile.
 *
 * @cloudformationResource AWS::Connect::RoutingProfile
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-routingprofile.html
 */
class CfnRoutingProfilePropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_connect.CfnRoutingProfilePropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["agentAvailabilityTimer", "defaultOutboundQueueArn", "description", "instanceArn", "manualAssignmentQueueConfigs", "mediaConcurrencies", "name", "queueConfigs", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Connect::RoutingProfile`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_connect_CfnRoutingProfileMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnRoutingProfilePropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnRoutingProfileMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnRoutingProfile.isCfnRoutingProfile(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnRoutingProfilePropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnRoutingProfilePropsMixin = CfnRoutingProfilePropsMixin;
// @ts-ignore TS6133
function flattenCfnRoutingProfileMixinProps(props) {
    const ret = {};
    if ((props.instanceArn !== undefined))
        ret.instanceArn = cdk.getRefProperty(props.instanceArn?.instanceRef, 'instanceArn') ?? cdk.ensureStringOrUndefined(props.instanceArn, "instanceArn", "connect.IInstanceRef | string");
    return ret;
}
/**
 * Creates a rule for the specified Connect Customer instance.
 *
 * @cloudformationResource AWS::Connect::Rule
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-rule.html
 */
class CfnRulePropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_connect.CfnRulePropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["actions", "function", "instanceArn", "name", "publishStatus", "tags", "triggerEventSource"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Connect::Rule`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_connect_CfnRuleMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnRulePropsMixin);
            }
            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.CfnRule.isCfnRule(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnRulePropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnRulePropsMixin = CfnRulePropsMixin;
/**
 * The security key for the instance.
 *
 * > Only two security keys are allowed per Connect Customer instance.
 *
 * @cloudformationResource AWS::Connect::SecurityKey
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-securitykey.html
 */
class CfnSecurityKeyPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_connect.CfnSecurityKeyPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["instanceId", "key"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Connect::SecurityKey`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_connect_CfnSecurityKeyMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnSecurityKeyPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnSecurityKeyMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnSecurityKey.isCfnSecurityKey(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnSecurityKeyPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnSecurityKeyPropsMixin = CfnSecurityKeyPropsMixin;
// @ts-ignore TS6133
function flattenCfnSecurityKeyMixinProps(props) {
    const ret = {};
    if ((props.instanceId !== undefined))
        ret.instanceId = cdk.getRefProperty(props.instanceId?.instanceRef, 'instanceArn') ?? cdk.ensureStringOrUndefined(props.instanceId, "instanceId", "connect.IInstanceRef | string");
    return ret;
}
/**
 * Creates a security profile.
 *
 * For information about security profiles, see [Security Profiles](https://docs.aws.amazon.com/connect/latest/adminguide/connect-security-profiles.html) in the *Amazon Connect Administrator Guide* . For a mapping of the API name and user interface name of the security profile permissions, see [List of security profile permissions](https://docs.aws.amazon.com/connect/latest/adminguide/security-profile-list.html) .
 *
 * @cloudformationResource AWS::Connect::SecurityProfile
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-securityprofile.html
 */
class CfnSecurityProfilePropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_connect.CfnSecurityProfilePropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["allowedAccessControlHierarchyGroupId", "allowedAccessControlTags", "allowedFlowModules", "applications", "description", "granularAccessControlConfiguration", "hierarchyRestrictedResources", "instanceArn", "permissions", "securityProfileName", "tagRestrictedResources", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Connect::SecurityProfile`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_connect_CfnSecurityProfileMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnSecurityProfilePropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnSecurityProfileMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnSecurityProfile.isCfnSecurityProfile(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnSecurityProfilePropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnSecurityProfilePropsMixin = CfnSecurityProfilePropsMixin;
// @ts-ignore TS6133
function flattenCfnSecurityProfileMixinProps(props) {
    const ret = {};
    if ((props.instanceArn !== undefined))
        ret.instanceArn = cdk.getRefProperty(props.instanceArn?.instanceRef, 'instanceArn') ?? cdk.ensureStringOrUndefined(props.instanceArn, "instanceArn", "connect.IInstanceRef | string");
    return ret;
}
/**
 * Specifies a task template for a Connect Customer instance.
 *
 * @cloudformationResource AWS::Connect::TaskTemplate
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-tasktemplate.html
 */
class CfnTaskTemplatePropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_connect.CfnTaskTemplatePropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["clientToken", "constraints", "contactFlowArn", "defaults", "description", "fields", "instanceArn", "name", "selfAssignContactFlowArn", "status", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Connect::TaskTemplate`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_connect_CfnTaskTemplateMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnTaskTemplatePropsMixin);
            }
            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.CfnTaskTemplate.isCfnTaskTemplate(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnTaskTemplatePropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnTaskTemplatePropsMixin = CfnTaskTemplatePropsMixin;
/**
 * Information about a traffic distribution group.
 *
 * @cloudformationResource AWS::Connect::TrafficDistributionGroup
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-trafficdistributiongroup.html
 */
class CfnTrafficDistributionGroupPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_connect.CfnTrafficDistributionGroupPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["description", "instanceArn", "name", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Connect::TrafficDistributionGroup`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_connect_CfnTrafficDistributionGroupMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnTrafficDistributionGroupPropsMixin);
            }
            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.CfnTrafficDistributionGroup.isCfnTrafficDistributionGroup(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnTrafficDistributionGroupPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnTrafficDistributionGroupPropsMixin = CfnTrafficDistributionGroupPropsMixin;
/**
 * Specifies a user account for an Connect Customer instance.
 *
 * For information about how to create user accounts using the Connect Customer console, see [Add Users](https://docs.aws.amazon.com/connect/latest/adminguide/user-management.html) in the *Connect Customer Administrator Guide* .
 *
 * @cloudformationResource AWS::Connect::User
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-user.html
 */
class CfnUserPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_connect.CfnUserPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["afterContactWorkConfigs", "autoAcceptConfigs", "directoryUserId", "hierarchyGroupArn", "identityInfo", "instanceArn", "password", "persistentConnectionConfigs", "phoneConfig", "phoneNumberConfigs", "routingProfileArn", "securityProfileArns", "tags", "username", "userProficiencies", "voiceEnhancementConfigs"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Connect::User`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_connect_CfnUserMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnUserPropsMixin);
            }
            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.CfnUser.isCfnUser(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnUserPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnUserPropsMixin = CfnUserPropsMixin;
/**
 * Specifies a new user hierarchy group.
 *
 * @cloudformationResource AWS::Connect::UserHierarchyGroup
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-userhierarchygroup.html
 */
class CfnUserHierarchyGroupPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_connect.CfnUserHierarchyGroupPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["instanceArn", "name", "parentGroupArn", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Connect::UserHierarchyGroup`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_connect_CfnUserHierarchyGroupMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnUserHierarchyGroupPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnUserHierarchyGroupMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnUserHierarchyGroup.isCfnUserHierarchyGroup(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnUserHierarchyGroupPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnUserHierarchyGroupPropsMixin = CfnUserHierarchyGroupPropsMixin;
// @ts-ignore TS6133
function flattenCfnUserHierarchyGroupMixinProps(props) {
    const ret = {};
    if ((props.instanceArn !== undefined))
        ret.instanceArn = cdk.getRefProperty(props.instanceArn?.instanceRef, 'instanceArn') ?? cdk.ensureStringOrUndefined(props.instanceArn, "instanceArn", "connect.IInstanceRef | string");
    return ret;
}
/**
 * Creates a customer-managed view in the published state within the specified instance.
 *
 * @cloudformationResource AWS::Connect::View
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-view.html
 */
class CfnViewPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_connect.CfnViewPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["actions", "description", "instanceArn", "name", "tags", "template"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Connect::View`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_connect_CfnViewMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnViewPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnViewMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnView.isCfnView(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnViewPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnViewPropsMixin = CfnViewPropsMixin;
// @ts-ignore TS6133
function flattenCfnViewMixinProps(props) {
    const ret = {};
    if ((props.instanceArn !== undefined))
        ret.instanceArn = cdk.getRefProperty(props.instanceArn?.instanceRef, 'instanceArn') ?? cdk.ensureStringOrUndefined(props.instanceArn, "instanceArn", "connect.IInstanceRef | string");
    return ret;
}
/**
 * Creates a version for the specified customer-managed view within the specified instance.
 *
 * @cloudformationResource AWS::Connect::ViewVersion
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-viewversion.html
 */
class CfnViewVersionPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_connect.CfnViewVersionPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["versionDescription", "viewArn", "viewContentSha256"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Connect::ViewVersion`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_connect_CfnViewVersionMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnViewVersionPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnViewVersionMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnViewVersion.isCfnViewVersion(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnViewVersionPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnViewVersionPropsMixin = CfnViewVersionPropsMixin;
// @ts-ignore TS6133
function flattenCfnViewVersionMixinProps(props) {
    const ret = {};
    if ((props.viewArn !== undefined))
        ret.viewArn = cdk.getRefProperty(props.viewArn?.viewRef, 'viewArn') ?? cdk.ensureStringOrUndefined(props.viewArn, "viewArn", "connect.IViewRef | string");
    return ret;
}
/**
 * Contains information about an agent status.
 *
 * @cloudformationResource AWS::Connect::AgentStatus
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-agentstatus.html
 */
class CfnAgentStatusPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_connect.CfnAgentStatusPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["description", "displayOrder", "instanceArn", "name", "resetOrderNumber", "state", "tags", "type"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Connect::AgentStatus`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_connect_CfnAgentStatusMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnAgentStatusPropsMixin);
            }
            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.CfnAgentStatus.isCfnAgentStatus(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnAgentStatusPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnAgentStatusPropsMixin = CfnAgentStatusPropsMixin;
/**
 * Resource Type definition for ContactFlowModuleAlias.
 *
 * @cloudformationResource AWS::Connect::ContactFlowModuleAlias
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-contactflowmodulealias.html
 */
class CfnContactFlowModuleAliasPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_connect.CfnContactFlowModuleAliasPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["contactFlowModuleId", "contactFlowModuleVersion", "description", "name"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Connect::ContactFlowModuleAlias`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_connect_CfnContactFlowModuleAliasMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnContactFlowModuleAliasPropsMixin);
            }
            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.CfnContactFlowModuleAlias.isCfnContactFlowModuleAlias(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnContactFlowModuleAliasPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnContactFlowModuleAliasPropsMixin = CfnContactFlowModuleAliasPropsMixin;
/**
 * Resource Type definition for ContactFlowModuleVersion.
 *
 * @cloudformationResource AWS::Connect::ContactFlowModuleVersion
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-contactflowmoduleversion.html
 */
class CfnContactFlowModuleVersionPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_connect.CfnContactFlowModuleVersionPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["contactFlowModuleId", "description"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Connect::ContactFlowModuleVersion`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_connect_CfnContactFlowModuleVersionMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnContactFlowModuleVersionPropsMixin);
            }
            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.CfnContactFlowModuleVersion.isCfnContactFlowModuleVersion(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnContactFlowModuleVersionPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnContactFlowModuleVersionPropsMixin = CfnContactFlowModuleVersionPropsMixin;
/**
 * Creates a version for the specified customer-managed flow within the specified instance.
 *
 * @cloudformationResource AWS::Connect::ContactFlowVersion
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-contactflowversion.html
 */
class CfnContactFlowVersionPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_connect.CfnContactFlowVersionPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["contactFlowId", "description"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Connect::ContactFlowVersion`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_connect_CfnContactFlowVersionMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnContactFlowVersionPropsMixin);
            }
            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.CfnContactFlowVersion.isCfnContactFlowVersion(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnContactFlowVersionPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnContactFlowVersionPropsMixin = CfnContactFlowVersionPropsMixin;
/**
 * Represents a data table in Amazon Connect.
 *
 * A data table is a JSON-like data structure where attributes and values are dynamically set by customers. Customers can reference table values within call flows, applications, views, and workspaces to pinpoint dynamic configuration that changes their contact center's behavior in a predetermined and safe way.
 *
 * @cloudformationResource AWS::Connect::DataTable
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-datatable.html
 */
class CfnDataTablePropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_connect.CfnDataTablePropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["description", "instanceArn", "name", "status", "tags", "timeZone", "valueLockLevel"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Connect::DataTable`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_connect_CfnDataTableMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnDataTablePropsMixin);
            }
            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.CfnDataTable.isCfnDataTable(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnDataTablePropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnDataTablePropsMixin = CfnDataTablePropsMixin;
/**
 * Represents an attribute (column) in a data table.
 *
 * Attributes define the schema and validation rules for values that can be stored in the table. They specify the data type, constraints, and whether the attribute is used as a primary key for record identification.
 *
 * @cloudformationResource AWS::Connect::DataTableAttribute
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-datatableattribute.html
 */
class CfnDataTableAttributePropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_connect.CfnDataTableAttributePropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["dataTableArn", "description", "instanceArn", "name", "primary", "validation", "valueType"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Connect::DataTableAttribute`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_connect_CfnDataTableAttributeMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnDataTableAttributePropsMixin);
            }
            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.CfnDataTableAttribute.isCfnDataTableAttribute(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnDataTableAttributePropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnDataTableAttributePropsMixin = CfnDataTableAttributePropsMixin;
/**
 * Resource Type definition for AWS::Connect::DataTableRecord.
 *
 * @cloudformationResource AWS::Connect::DataTableRecord
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-datatablerecord.html
 */
class CfnDataTableRecordPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_connect.CfnDataTableRecordPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["dataTableArn", "dataTableRecord", "instanceArn"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Connect::DataTableRecord`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_connect_CfnDataTableRecordMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnDataTableRecordPropsMixin);
            }
            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.CfnDataTableRecord.isCfnDataTableRecord(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnDataTableRecordPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnDataTableRecordPropsMixin = CfnDataTableRecordPropsMixin;
/**
 * Create new email address in the specified Amazon Connect instance.
 *
 * For more information about email addresses, see [Create email addresses](https://docs.aws.amazon.com/connect/latest/adminguide/create-email-address1.html) in the Amazon Connect Administrator Guide.
 *
 * @cloudformationResource AWS::Connect::EmailAddress
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-emailaddress.html
 */
class CfnEmailAddressPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_connect.CfnEmailAddressPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["aliasConfigurations", "description", "displayName", "emailAddress", "instanceArn", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Connect::EmailAddress`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_connect_CfnEmailAddressMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnEmailAddressPropsMixin);
            }
            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.CfnEmailAddress.isCfnEmailAddress(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnEmailAddressPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnEmailAddressPropsMixin = CfnEmailAddressPropsMixin;
/**
 * Resource Type definition for AWS::Connect::Notification.
 *
 * @cloudformationResource AWS::Connect::Notification
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-notification.html
 */
class CfnNotificationPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_connect.CfnNotificationPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["content", "expiresAt", "instanceArn", "priority", "recipients", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Connect::Notification`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_connect_CfnNotificationMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnNotificationPropsMixin);
            }
            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.CfnNotification.isCfnNotification(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnNotificationPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnNotificationPropsMixin = CfnNotificationPropsMixin;
/**
 * Textual or numeric value that describes an attribute.
 *
 * @cloudformationResource AWS::Connect::PredefinedAttribute
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-predefinedattribute.html
 */
class CfnPredefinedAttributePropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_connect.CfnPredefinedAttributePropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["attributeConfiguration", "instanceArn", "name", "purposes", "values"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Connect::PredefinedAttribute`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_connect_CfnPredefinedAttributeMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnPredefinedAttributePropsMixin);
            }
            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.CfnPredefinedAttribute.isCfnPredefinedAttribute(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnPredefinedAttributePropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnPredefinedAttributePropsMixin = CfnPredefinedAttributePropsMixin;
/**
 * Contains information about a hierarchy structure.
 *
 * @cloudformationResource AWS::Connect::UserHierarchyStructure
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-userhierarchystructure.html
 */
class CfnUserHierarchyStructurePropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_connect.CfnUserHierarchyStructurePropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["instanceArn", "userHierarchyStructure"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Connect::UserHierarchyStructure`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_connect_CfnUserHierarchyStructureMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnUserHierarchyStructurePropsMixin);
            }
            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.CfnUserHierarchyStructure.isCfnUserHierarchyStructure(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnUserHierarchyStructurePropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnUserHierarchyStructurePropsMixin = CfnUserHierarchyStructurePropsMixin;
/**
 * Contains information about a workspace, which defines the user experience by mapping views to pages.
 *
 * @cloudformationResource AWS::Connect::Workspace
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-connect-workspace.html
 */
class CfnWorkspacePropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_connect.CfnWorkspacePropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["associations", "description", "instanceArn", "media", "name", "pages", "tags", "theme", "title", "visibility"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Connect::Workspace`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_connect_CfnWorkspaceMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnWorkspacePropsMixin);
            }
            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.CfnWorkspace.isCfnWorkspace(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnWorkspacePropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnWorkspacePropsMixin = CfnWorkspacePropsMixin;
