"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.CfnTermsPropsMixin = exports.CfnManagedLoginBrandingPropsMixin = exports.CfnLogDeliveryConfigurationPropsMixin = exports.CfnUserPoolUserToGroupAttachmentPropsMixin = exports.CfnUserPoolUserPropsMixin = exports.CfnUserPoolUICustomizationAttachmentPropsMixin = exports.CfnUserPoolRiskConfigurationAttachmentPropsMixin = exports.CfnUserPoolResourceServerPropsMixin = exports.CfnUserPoolIdentityProviderPropsMixin = exports.CfnUserPoolGroupPropsMixin = exports.CfnUserPoolDomainPropsMixin = exports.CfnUserPoolClientPropsMixin = exports.CfnUserPoolPropsMixin = exports.CfnIdentityPoolRoleAttachmentPropsMixin = exports.CfnIdentityPoolPrincipalTagPropsMixin = exports.CfnIdentityPoolPropsMixin = 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-cognito"));
/**
 * The `AWS::Cognito::IdentityPool` resource creates an Amazon Cognito identity pool.
 *
 * To avoid deleting the resource accidentally from CloudFormation , use [DeletionPolicy Attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html) and the [UpdateReplacePolicy Attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatereplacepolicy.html) to retain the resource on deletion or replacement.
 *
 * @cloudformationResource AWS::Cognito::IdentityPool
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-identitypool.html
 */
class CfnIdentityPoolPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_cognito.CfnIdentityPoolPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["allowClassicFlow", "allowUnauthenticatedIdentities", "cognitoEvents", "cognitoIdentityProviders", "cognitoStreams", "developerProviderName", "identityPoolName", "identityPoolTags", "openIdConnectProviderArns", "pushSync", "samlProviderArns", "supportedLoginProviders"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Cognito::IdentityPool`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_cognito_CfnIdentityPoolMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnIdentityPoolPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnIdentityPoolMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnIdentityPool.isCfnIdentityPool(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnIdentityPoolPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnIdentityPoolPropsMixin = CfnIdentityPoolPropsMixin;
// @ts-ignore TS6133
function flattenCfnIdentityPoolPropsMixinCognitoIdentityProviderProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        clientId: (!props.clientId ? undefined : cdk.getRefProperty(props.clientId?.userPoolClientRef, 'clientId') ?? cdk.ensureStringOrUndefined(props.clientId, "clientId", "cognito.IUserPoolClientRef | string")),
        providerName: (!props.providerName ? undefined : props.providerName),
        serverSideTokenCheck: (!props.serverSideTokenCheck ? undefined : props.serverSideTokenCheck)
    };
}
// @ts-ignore TS6133
function flattenCfnIdentityPoolMixinProps(props) {
    const ret = {};
    if ((props.cognitoIdentityProviders !== undefined))
        ret.cognitoIdentityProviders = (cdk.isResolvableObject(props.cognitoIdentityProviders) ? props.cognitoIdentityProviders : cdk.mapArrayInPlace(props.cognitoIdentityProviders, (item) => flattenCfnIdentityPoolPropsMixinCognitoIdentityProviderProperty(item)));
    if ((props.openIdConnectProviderArns !== undefined))
        ret.openIdConnectProviderArns = cdk.mapArrayInPlace(props.openIdConnectProviderArns, (item) => cdk.getRefProperty(item?.oidcProviderRef, 'oidcProviderArn') ?? cdk.ensureStringOrUndefined(item, "openIdConnectProviderArns", "iam.IOIDCProviderRef | string"));
    return ret;
}
/**
 * A list of the identity pool principal tag assignments for attributes for access control.
 *
 * @cloudformationResource AWS::Cognito::IdentityPoolPrincipalTag
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-identitypoolprincipaltag.html
 */
class CfnIdentityPoolPrincipalTagPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_cognito.CfnIdentityPoolPrincipalTagPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["identityPoolId", "identityProviderName", "principalTags", "useDefaults"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Cognito::IdentityPoolPrincipalTag`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_cognito_CfnIdentityPoolPrincipalTagMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnIdentityPoolPrincipalTagPropsMixin);
            }
            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.CfnIdentityPoolPrincipalTag.isCfnIdentityPoolPrincipalTag(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnIdentityPoolPrincipalTagPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnIdentityPoolPrincipalTagPropsMixin = CfnIdentityPoolPrincipalTagPropsMixin;
/**
 * The `AWS::Cognito::IdentityPoolRoleAttachment` resource manages the role configuration for an Amazon Cognito identity pool.
 *
 * @cloudformationResource AWS::Cognito::IdentityPoolRoleAttachment
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-identitypoolroleattachment.html
 */
class CfnIdentityPoolRoleAttachmentPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_cognito.CfnIdentityPoolRoleAttachmentPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["identityPoolId", "roleMappings", "roles"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Cognito::IdentityPoolRoleAttachment`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_cognito_CfnIdentityPoolRoleAttachmentMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnIdentityPoolRoleAttachmentPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnIdentityPoolRoleAttachmentMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnIdentityPoolRoleAttachment.isCfnIdentityPoolRoleAttachment(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnIdentityPoolRoleAttachmentPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnIdentityPoolRoleAttachmentPropsMixin = CfnIdentityPoolRoleAttachmentPropsMixin;
// @ts-ignore TS6133
function flattenCfnIdentityPoolRoleAttachmentMixinProps(props) {
    const ret = {};
    if ((props.identityPoolId !== undefined))
        ret.identityPoolId = cdk.getRefProperty(props.identityPoolId?.identityPoolRef, 'identityPoolId') ?? cdk.ensureStringOrUndefined(props.identityPoolId, "identityPoolId", "cognito.IIdentityPoolRef | string");
    return ret;
}
/**
 * The `AWS::Cognito::UserPool` resource creates an Amazon Cognito user pool.
 *
 * For more information on working with Amazon Cognito user pools, see [Amazon Cognito User Pools](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools.html) and [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html) .
 *
 * > If you don't specify a value for a parameter, Amazon Cognito sets it to a default value.
 *
 * @cloudformationResource AWS::Cognito::UserPool
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpool.html
 */
class CfnUserPoolPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_cognito.CfnUserPoolPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["accountRecoverySetting", "adminCreateUserConfig", "aliasAttributes", "autoVerifiedAttributes", "deletionProtection", "deviceConfiguration", "emailAuthenticationMessage", "emailAuthenticationSubject", "emailConfiguration", "emailVerificationMessage", "emailVerificationSubject", "enabledMfas", "lambdaConfig", "mfaConfiguration", "policies", "schema", "smsAuthenticationMessage", "smsConfiguration", "smsVerificationMessage", "userAttributeUpdateSettings", "usernameAttributes", "usernameConfiguration", "userPoolAddOns", "userPoolName", "userPoolTags", "userPoolTier", "verificationMessageTemplate", "webAuthnFactorConfiguration", "webAuthnRelyingPartyId", "webAuthnUserVerification"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Cognito::UserPool`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_cognito_CfnUserPoolMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnUserPoolPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnUserPoolMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnUserPool.isCfnUserPool(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnUserPoolPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnUserPoolPropsMixin = CfnUserPoolPropsMixin;
// @ts-ignore TS6133
function flattenCfnUserPoolPropsMixinSmsConfigurationProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        externalId: (!props.externalId ? undefined : props.externalId),
        snsCallerArn: (!props.snsCallerArn ? undefined : cdk.getRefProperty(props.snsCallerArn?.roleRef, 'roleArn') ?? cdk.ensureStringOrUndefined(props.snsCallerArn, "snsCallerArn", "iam.IRoleRef | string")),
        snsRegion: (!props.snsRegion ? undefined : props.snsRegion)
    };
}
// @ts-ignore TS6133
function flattenCfnUserPoolPropsMixinCustomSMSSenderProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        lambdaArn: (!props.lambdaArn ? undefined : cdk.getRefProperty(props.lambdaArn?.functionRef, 'functionArn') ?? cdk.ensureStringOrUndefined(props.lambdaArn, "lambdaArn", "lambda.IFunctionRef | string")),
        lambdaVersion: (!props.lambdaVersion ? undefined : props.lambdaVersion)
    };
}
// @ts-ignore TS6133
function flattenCfnUserPoolPropsMixinLambdaConfigProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        createAuthChallenge: (!props.createAuthChallenge ? undefined : cdk.getRefProperty(props.createAuthChallenge?.functionRef, 'functionArn') ?? cdk.ensureStringOrUndefined(props.createAuthChallenge, "createAuthChallenge", "lambda.IFunctionRef | string")),
        customEmailSender: (!props.customEmailSender ? undefined : props.customEmailSender),
        customMessage: (!props.customMessage ? undefined : cdk.getRefProperty(props.customMessage?.functionRef, 'functionArn') ?? cdk.ensureStringOrUndefined(props.customMessage, "customMessage", "lambda.IFunctionRef | string")),
        customSmsSender: (!props.customSmsSender ? undefined : (!props.customSmsSender ? undefined : flattenCfnUserPoolPropsMixinCustomSMSSenderProperty(props.customSmsSender))),
        defineAuthChallenge: (!props.defineAuthChallenge ? undefined : cdk.getRefProperty(props.defineAuthChallenge?.functionRef, 'functionArn') ?? cdk.ensureStringOrUndefined(props.defineAuthChallenge, "defineAuthChallenge", "lambda.IFunctionRef | string")),
        inboundFederation: (!props.inboundFederation ? undefined : props.inboundFederation),
        kmsKeyId: (!props.kmsKeyId ? undefined : cdk.getRefProperty(props.kmsKeyId?.keyRef, 'keyArn') ?? cdk.ensureStringOrUndefined(props.kmsKeyId, "kmsKeyId", "kms.IKeyRef | string")),
        postAuthentication: (!props.postAuthentication ? undefined : cdk.getRefProperty(props.postAuthentication?.functionRef, 'functionArn') ?? cdk.ensureStringOrUndefined(props.postAuthentication, "postAuthentication", "lambda.IFunctionRef | string")),
        postConfirmation: (!props.postConfirmation ? undefined : cdk.getRefProperty(props.postConfirmation?.functionRef, 'functionArn') ?? cdk.ensureStringOrUndefined(props.postConfirmation, "postConfirmation", "lambda.IFunctionRef | string")),
        preAuthentication: (!props.preAuthentication ? undefined : cdk.getRefProperty(props.preAuthentication?.functionRef, 'functionArn') ?? cdk.ensureStringOrUndefined(props.preAuthentication, "preAuthentication", "lambda.IFunctionRef | string")),
        preSignUp: (!props.preSignUp ? undefined : cdk.getRefProperty(props.preSignUp?.functionRef, 'functionArn') ?? cdk.ensureStringOrUndefined(props.preSignUp, "preSignUp", "lambda.IFunctionRef | string")),
        preTokenGeneration: (!props.preTokenGeneration ? undefined : cdk.getRefProperty(props.preTokenGeneration?.functionRef, 'functionArn') ?? cdk.ensureStringOrUndefined(props.preTokenGeneration, "preTokenGeneration", "lambda.IFunctionRef | string")),
        preTokenGenerationConfig: (!props.preTokenGenerationConfig ? undefined : props.preTokenGenerationConfig),
        userMigration: (!props.userMigration ? undefined : props.userMigration),
        verifyAuthChallengeResponse: (!props.verifyAuthChallengeResponse ? undefined : cdk.getRefProperty(props.verifyAuthChallengeResponse?.functionRef, 'functionArn') ?? cdk.ensureStringOrUndefined(props.verifyAuthChallengeResponse, "verifyAuthChallengeResponse", "lambda.IFunctionRef | string"))
    };
}
// @ts-ignore TS6133
function flattenCfnUserPoolMixinProps(props) {
    const ret = {};
    if ((props.lambdaConfig !== undefined))
        ret.lambdaConfig = flattenCfnUserPoolPropsMixinLambdaConfigProperty(props.lambdaConfig);
    if ((props.smsConfiguration !== undefined))
        ret.smsConfiguration = flattenCfnUserPoolPropsMixinSmsConfigurationProperty(props.smsConfiguration);
    return ret;
}
/**
 * The `AWS::Cognito::UserPoolClient` resource specifies an Amazon Cognito user pool client.
 *
 * > If you don't specify a value for a parameter, Amazon Cognito sets it to a default value.
 *
 * @cloudformationResource AWS::Cognito::UserPoolClient
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolclient.html
 */
class CfnUserPoolClientPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_cognito.CfnUserPoolClientPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["accessTokenValidity", "allowedOAuthFlows", "allowedOAuthFlowsUserPoolClient", "allowedOAuthScopes", "analyticsConfiguration", "authSessionValidity", "callbackUrLs", "clientName", "defaultRedirectUri", "enablePropagateAdditionalUserContextData", "enableTokenRevocation", "explicitAuthFlows", "generateSecret", "idTokenValidity", "logoutUrLs", "preventUserExistenceErrors", "readAttributes", "refreshTokenRotation", "refreshTokenValidity", "supportedIdentityProviders", "tokenValidityUnits", "userPoolId", "writeAttributes"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Cognito::UserPoolClient`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_cognito_CfnUserPoolClientMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnUserPoolClientPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnUserPoolClientMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnUserPoolClient.isCfnUserPoolClient(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnUserPoolClientPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnUserPoolClientPropsMixin = CfnUserPoolClientPropsMixin;
// @ts-ignore TS6133
function flattenCfnUserPoolClientPropsMixinAnalyticsConfigurationProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        applicationArn: (!props.applicationArn ? undefined : props.applicationArn),
        applicationId: (!props.applicationId ? undefined : props.applicationId),
        externalId: (!props.externalId ? undefined : props.externalId),
        roleArn: (!props.roleArn ? undefined : cdk.getRefProperty(props.roleArn?.roleRef, 'roleArn') ?? cdk.ensureStringOrUndefined(props.roleArn, "roleArn", "iam.IRoleRef | string")),
        userDataShared: (!props.userDataShared ? undefined : props.userDataShared)
    };
}
// @ts-ignore TS6133
function flattenCfnUserPoolClientMixinProps(props) {
    const ret = {};
    if ((props.analyticsConfiguration !== undefined))
        ret.analyticsConfiguration = flattenCfnUserPoolClientPropsMixinAnalyticsConfigurationProperty(props.analyticsConfiguration);
    if ((props.userPoolId !== undefined))
        ret.userPoolId = cdk.getRefProperty(props.userPoolId?.userPoolRef, 'userPoolId') ?? cdk.ensureStringOrUndefined(props.userPoolId, "userPoolId", "cognito.IUserPoolRef | string");
    return ret;
}
/**
 * The AWS::Cognito::UserPoolDomain resource creates a new domain for a user pool.
 *
 * @cloudformationResource AWS::Cognito::UserPoolDomain
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpooldomain.html
 */
class CfnUserPoolDomainPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_cognito.CfnUserPoolDomainPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["customDomainConfig", "domain", "managedLoginVersion", "userPoolId"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Cognito::UserPoolDomain`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_cognito_CfnUserPoolDomainMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnUserPoolDomainPropsMixin);
            }
            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.CfnUserPoolDomain.isCfnUserPoolDomain(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnUserPoolDomainPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnUserPoolDomainPropsMixin = CfnUserPoolDomainPropsMixin;
/**
 * A user pool group.
 *
 * Contains details about the group and the way that it contributes to IAM role decisions with identity pools. Identity pools can make decisions about the IAM role to assign based on groups: users get credentials for the role associated with their highest-priority group.
 *
 * @cloudformationResource AWS::Cognito::UserPoolGroup
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolgroup.html
 */
class CfnUserPoolGroupPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_cognito.CfnUserPoolGroupPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["description", "groupName", "precedence", "roleArn", "userPoolId"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Cognito::UserPoolGroup`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_cognito_CfnUserPoolGroupMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnUserPoolGroupPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnUserPoolGroupMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnUserPoolGroup.isCfnUserPoolGroup(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnUserPoolGroupPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnUserPoolGroupPropsMixin = CfnUserPoolGroupPropsMixin;
// @ts-ignore TS6133
function flattenCfnUserPoolGroupMixinProps(props) {
    const ret = {};
    if ((props.roleArn !== undefined))
        ret.roleArn = cdk.getRefProperty(props.roleArn?.roleRef, 'roleArn') ?? cdk.ensureStringOrUndefined(props.roleArn, "roleArn", "iam.IRoleRef | string");
    if ((props.userPoolId !== undefined))
        ret.userPoolId = cdk.getRefProperty(props.userPoolId?.userPoolRef, 'userPoolId') ?? cdk.ensureStringOrUndefined(props.userPoolId, "userPoolId", "cognito.IUserPoolRef | string");
    return ret;
}
/**
 * The `AWS::Cognito::UserPoolIdentityProvider` resource creates an identity provider for a user pool.
 *
 * @cloudformationResource AWS::Cognito::UserPoolIdentityProvider
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolidentityprovider.html
 */
class CfnUserPoolIdentityProviderPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_cognito.CfnUserPoolIdentityProviderPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["attributeMapping", "idpIdentifiers", "providerDetails", "providerName", "providerType", "userPoolId"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Cognito::UserPoolIdentityProvider`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_cognito_CfnUserPoolIdentityProviderMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnUserPoolIdentityProviderPropsMixin);
            }
            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.CfnUserPoolIdentityProvider.isCfnUserPoolIdentityProvider(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnUserPoolIdentityProviderPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnUserPoolIdentityProviderPropsMixin = CfnUserPoolIdentityProviderPropsMixin;
/**
 * The `AWS::Cognito::UserPoolResourceServer` resource creates a new OAuth2.0 resource server and defines custom scopes in it.
 *
 * > If you don't specify a value for a parameter, Amazon Cognito sets it to a default value.
 *
 * @cloudformationResource AWS::Cognito::UserPoolResourceServer
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolresourceserver.html
 */
class CfnUserPoolResourceServerPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_cognito.CfnUserPoolResourceServerPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["identifier", "name", "scopes", "userPoolId"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Cognito::UserPoolResourceServer`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_cognito_CfnUserPoolResourceServerMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnUserPoolResourceServerPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnUserPoolResourceServerMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnUserPoolResourceServer.isCfnUserPoolResourceServer(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnUserPoolResourceServerPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnUserPoolResourceServerPropsMixin = CfnUserPoolResourceServerPropsMixin;
// @ts-ignore TS6133
function flattenCfnUserPoolResourceServerMixinProps(props) {
    const ret = {};
    if ((props.userPoolId !== undefined))
        ret.userPoolId = cdk.getRefProperty(props.userPoolId?.userPoolRef, 'userPoolId') ?? cdk.ensureStringOrUndefined(props.userPoolId, "userPoolId", "cognito.IUserPoolRef | string");
    return ret;
}
/**
 * The `AWS::Cognito::UserPoolRiskConfigurationAttachment` resource sets the risk configuration that is used for Amazon Cognito advanced security features.
 *
 * You can specify risk configuration for a single client (with a specific `clientId` ) or for all clients (by setting the `clientId` to `ALL` ). If you specify `ALL` , the default configuration is used for every client that has had no risk configuration set previously. If you specify risk configuration for a particular client, it no longer falls back to the `ALL` configuration.
 *
 * @cloudformationResource AWS::Cognito::UserPoolRiskConfigurationAttachment
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolriskconfigurationattachment.html
 */
class CfnUserPoolRiskConfigurationAttachmentPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_cognito.CfnUserPoolRiskConfigurationAttachmentPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["accountTakeoverRiskConfiguration", "clientId", "compromisedCredentialsRiskConfiguration", "riskExceptionConfiguration", "userPoolId"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Cognito::UserPoolRiskConfigurationAttachment`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_cognito_CfnUserPoolRiskConfigurationAttachmentMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnUserPoolRiskConfigurationAttachmentPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnUserPoolRiskConfigurationAttachmentMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnUserPoolRiskConfigurationAttachment.isCfnUserPoolRiskConfigurationAttachment(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnUserPoolRiskConfigurationAttachmentPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnUserPoolRiskConfigurationAttachmentPropsMixin = CfnUserPoolRiskConfigurationAttachmentPropsMixin;
// @ts-ignore TS6133
function flattenCfnUserPoolRiskConfigurationAttachmentMixinProps(props) {
    const ret = {};
    if ((props.userPoolId !== undefined))
        ret.userPoolId = cdk.getRefProperty(props.userPoolId?.userPoolRef, 'userPoolId') ?? cdk.ensureStringOrUndefined(props.userPoolId, "userPoolId", "cognito.IUserPoolRef | string");
    return ret;
}
/**
 * A container for the UI customization information for the hosted UI in a user pool.
 *
 * @cloudformationResource AWS::Cognito::UserPoolUICustomizationAttachment
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpooluicustomizationattachment.html
 */
class CfnUserPoolUICustomizationAttachmentPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_cognito.CfnUserPoolUICustomizationAttachmentPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["clientId", "css", "userPoolId"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Cognito::UserPoolUICustomizationAttachment`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_cognito_CfnUserPoolUICustomizationAttachmentMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnUserPoolUICustomizationAttachmentPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnUserPoolUICustomizationAttachmentMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnUserPoolUICustomizationAttachment.isCfnUserPoolUICustomizationAttachment(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnUserPoolUICustomizationAttachmentPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnUserPoolUICustomizationAttachmentPropsMixin = CfnUserPoolUICustomizationAttachmentPropsMixin;
// @ts-ignore TS6133
function flattenCfnUserPoolUICustomizationAttachmentMixinProps(props) {
    const ret = {};
    if ((props.userPoolId !== undefined))
        ret.userPoolId = cdk.getRefProperty(props.userPoolId?.userPoolRef, 'userPoolId') ?? cdk.ensureStringOrUndefined(props.userPoolId, "userPoolId", "cognito.IUserPoolRef | string");
    return ret;
}
/**
 * The `AWS::Cognito::UserPoolUser` resource creates an Amazon Cognito user pool user.
 *
 * @cloudformationResource AWS::Cognito::UserPoolUser
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpooluser.html
 */
class CfnUserPoolUserPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_cognito.CfnUserPoolUserPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["clientMetadata", "desiredDeliveryMediums", "forceAliasCreation", "messageAction", "userAttributes", "username", "userPoolId", "validationData"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Cognito::UserPoolUser`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_cognito_CfnUserPoolUserMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnUserPoolUserPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnUserPoolUserMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnUserPoolUser.isCfnUserPoolUser(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnUserPoolUserPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnUserPoolUserPropsMixin = CfnUserPoolUserPropsMixin;
// @ts-ignore TS6133
function flattenCfnUserPoolUserMixinProps(props) {
    const ret = {};
    if ((props.userPoolId !== undefined))
        ret.userPoolId = cdk.getRefProperty(props.userPoolId?.userPoolRef, 'userPoolId') ?? cdk.ensureStringOrUndefined(props.userPoolId, "userPoolId", "cognito.IUserPoolRef | string");
    return ret;
}
/**
 * Adds a user to a group.
 *
 * A user who is in a group can present a preferred-role claim to an identity pool, and populates a `cognito:groups` claim to their access and identity tokens.
 *
 * > Amazon Cognito evaluates AWS Identity and Access Management (IAM) policies in requests for this API operation. For this operation, you must use IAM credentials to authorize requests, and you must grant yourself the corresponding IAM permission in a policy.
 * >
 * > **Learn more** - [Signing AWS API Requests](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-signing.html)
 * > - [Using the Amazon Cognito user pools API and user pool endpoints](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pools-API-operations.html)
 *
 * @cloudformationResource AWS::Cognito::UserPoolUserToGroupAttachment
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-userpoolusertogroupattachment.html
 */
class CfnUserPoolUserToGroupAttachmentPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_cognito.CfnUserPoolUserToGroupAttachmentPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["groupName", "username", "userPoolId"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Cognito::UserPoolUserToGroupAttachment`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_cognito_CfnUserPoolUserToGroupAttachmentMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnUserPoolUserToGroupAttachmentPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnUserPoolUserToGroupAttachmentMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnUserPoolUserToGroupAttachment.isCfnUserPoolUserToGroupAttachment(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnUserPoolUserToGroupAttachmentPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnUserPoolUserToGroupAttachmentPropsMixin = CfnUserPoolUserToGroupAttachmentPropsMixin;
// @ts-ignore TS6133
function flattenCfnUserPoolUserToGroupAttachmentMixinProps(props) {
    const ret = {};
    if ((props.groupName !== undefined))
        ret.groupName = cdk.getRefProperty(props.groupName?.userPoolGroupRef, 'groupName') ?? cdk.ensureStringOrUndefined(props.groupName, "groupName", "cognito.IUserPoolGroupRef | string");
    if ((props.username !== undefined))
        ret.username = cdk.getRefProperty(props.username?.userPoolUserRef, 'username') ?? cdk.ensureStringOrUndefined(props.username, "username", "cognito.IUserPoolUserRef | string");
    if ((props.userPoolId !== undefined))
        ret.userPoolId = cdk.getRefProperty(props.userPoolId?.userPoolRef, 'userPoolId') ?? cdk.ensureStringOrUndefined(props.userPoolId, "userPoolId", "cognito.IUserPoolRef | string");
    return ret;
}
/**
 * Sets up or modifies the logging configuration of a user pool.
 *
 * User pools can export user notification logs and, when threat protection is active, user-activity logs. For more information, see [Exporting user pool logs](https://docs.aws.amazon.com/cognito/latest/developerguide/exporting-quotas-and-usage.html) .
 *
 * @cloudformationResource AWS::Cognito::LogDeliveryConfiguration
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-logdeliveryconfiguration.html
 */
class CfnLogDeliveryConfigurationPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_cognito.CfnLogDeliveryConfigurationPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["logConfigurations", "userPoolId"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Cognito::LogDeliveryConfiguration`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_cognito_CfnLogDeliveryConfigurationMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnLogDeliveryConfigurationPropsMixin);
            }
            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.CfnLogDeliveryConfiguration.isCfnLogDeliveryConfiguration(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnLogDeliveryConfigurationPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnLogDeliveryConfigurationPropsMixin = CfnLogDeliveryConfigurationPropsMixin;
/**
 * Creates a new set of branding settings for a user pool style and associates it with an app client.
 *
 * This operation is the programmatic option for the creation of a new style in the branding designer.
 *
 * Provides values for UI customization in a `Settings` JSON object and image files in an `Assets` array. To send the JSON object `Document` type parameter in `Settings` , you might need to update to the most recent version of your AWS SDK.
 *
 * This operation has a 2-megabyte request-size limit and include the CSS settings and image assets for your app client. Your branding settings might exceed 2MB in size. Amazon Cognito doesn't require that you pass all parameters in one request and preserves existing style settings that you don't specify. If your request is larger than 2MB, separate it into multiple requests, each with a size smaller than the limit.
 *
 * As a best practice, modify the output of [DescribeManagedLoginBrandingByClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeManagedLoginBrandingByClient.html) into the request parameters for this operation. To get all settings, set `ReturnMergedResources` to `true` . For more information, see [API and SDK operations for managed login branding](https://docs.aws.amazon.com/cognito/latest/developerguide/managed-login-brandingdesigner.html#branding-designer-api)
 *
 * @cloudformationResource AWS::Cognito::ManagedLoginBranding
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-managedloginbranding.html
 */
class CfnManagedLoginBrandingPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_cognito.CfnManagedLoginBrandingPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["assets", "clientId", "returnMergedResources", "settings", "useCognitoProvidedValues", "userPoolId"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Cognito::ManagedLoginBranding`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_cognito_CfnManagedLoginBrandingMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnManagedLoginBrandingPropsMixin);
            }
            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.CfnManagedLoginBranding.isCfnManagedLoginBranding(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnManagedLoginBrandingPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnManagedLoginBrandingPropsMixin = CfnManagedLoginBrandingPropsMixin;
/**
 * Creates terms documents for the requested app client.
 *
 * When Terms and conditions and Privacy policy documents are configured, the app client displays links to them in the sign-up page of managed login for the app client.
 *
 * You can provide URLs for terms documents in the languages that are supported by [managed login localization](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-managed-login.html#managed-login-localization) . Amazon Cognito directs users to the terms documents for their current language, with fallback to `default` if no document exists for the language.
 *
 * Each request accepts one type of terms document and a map of language-to-link for that document type. You must provide both types of terms documents in at least one language before Amazon Cognito displays your terms documents. Supply each type in separate requests.
 *
 * For more information, see [Terms documents](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-managed-login.html#managed-login-terms-documents) .
 *
 * > Amazon Cognito evaluates AWS Identity and Access Management (IAM) policies in requests for this API operation. For this operation, you must use IAM credentials to authorize requests, and you must grant yourself the corresponding IAM permission in a policy.
 * >
 * > **Learn more** - [Signing AWS API Requests](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-signing.html)
 * > - [Using the Amazon Cognito user pools API and user pool endpoints](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pools-API-operations.html)
 *
 * @cloudformationResource AWS::Cognito::Terms
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cognito-terms.html
 */
class CfnTermsPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_cognito.CfnTermsPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["clientId", "enforcement", "links", "termsName", "termsSource", "userPoolId"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::Cognito::Terms`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_cognito_CfnTermsMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnTermsPropsMixin);
            }
            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.CfnTerms.isCfnTerms(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnTermsPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnTermsPropsMixin = CfnTermsPropsMixin;
