"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.CfnStudioLifecycleConfigPropsMixin = exports.CfnProcessingJobPropsMixin = exports.CfnPartnerAppPropsMixin = exports.CfnMlflowTrackingServerPropsMixin = exports.CfnInferenceComponentPropsMixin = exports.CfnClusterPropsMixin = exports.CfnWorkteamPropsMixin = exports.CfnUserProfilePropsMixin = exports.CfnSpacePropsMixin = exports.CfnProjectPropsMixin = exports.CfnPipelinePropsMixin = exports.CfnNotebookInstanceLifecycleConfigPropsMixin = exports.CfnNotebookInstancePropsMixin = exports.CfnMonitoringSchedulePropsMixin = exports.CfnModelQualityJobDefinitionPropsMixin = exports.CfnModelPackageGroupPropsMixin = exports.CfnModelPackagePropsMixin = exports.CfnModelExplainabilityJobDefinitionPropsMixin = exports.CfnModelCardPropsMixin = exports.CfnModelBiasJobDefinitionPropsMixin = exports.CfnModelPropsMixin = exports.CfnInferenceExperimentPropsMixin = exports.CfnImageVersionPropsMixin = exports.CfnImagePropsMixin = exports.CfnFeatureGroupPropsMixin = exports.CfnEndpointConfigPropsMixin = exports.CfnEndpointPropsMixin = exports.CfnDomainPropsMixin = exports.CfnDeviceFleetPropsMixin = exports.CfnDevicePropsMixin = exports.CfnDataQualityJobDefinitionPropsMixin = exports.CfnCodeRepositoryPropsMixin = exports.CfnAppImageConfigPropsMixin = exports.CfnAppPropsMixin = 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-sagemaker"));
/**
 * Creates a running app for the specified UserProfile.
 *
 * This operation is automatically invoked by Amazon SageMaker AI upon access to the associated Domain, and when new kernel configurations are selected by the user. A user may have multiple Apps active simultaneously.
 *
 * @cloudformationResource AWS::SageMaker::App
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-app.html
 */
class CfnAppPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_sagemaker.CfnAppPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["appName", "appType", "domainId", "recoveryMode", "resourceSpec", "tags", "userProfileName"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SageMaker::App`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_sagemaker_CfnAppMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnAppPropsMixin);
            }
            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.CfnApp.isCfnApp(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnAppPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnAppPropsMixin = CfnAppPropsMixin;
/**
 * Creates a configuration for running a SageMaker AI image as a KernelGateway app.
 *
 * The configuration specifies the Amazon Elastic File System storage volume on the image, and a list of the kernels in the image.
 *
 * @cloudformationResource AWS::SageMaker::AppImageConfig
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-appimageconfig.html
 */
class CfnAppImageConfigPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_sagemaker.CfnAppImageConfigPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["appImageConfigName", "codeEditorAppImageConfig", "jupyterLabAppImageConfig", "kernelGatewayImageConfig", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SageMaker::AppImageConfig`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_sagemaker_CfnAppImageConfigMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnAppImageConfigPropsMixin);
            }
            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.CfnAppImageConfig.isCfnAppImageConfig(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnAppImageConfigPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnAppImageConfigPropsMixin = CfnAppImageConfigPropsMixin;
/**
 * Creates a Git repository as a resource in your SageMaker AI account.
 *
 * You can associate the repository with notebook instances so that you can use Git source control for the notebooks you create. The Git repository is a resource in your SageMaker AI account, so it can be associated with more than one notebook instance, and it persists independently from the lifecycle of any notebook instances it is associated with.
 *
 * The repository can be hosted either in [AWS CodeCommit](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) or in any other Git repository.
 *
 * @cloudformationResource AWS::SageMaker::CodeRepository
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-coderepository.html
 */
class CfnCodeRepositoryPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_sagemaker.CfnCodeRepositoryPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["codeRepositoryName", "gitConfig", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SageMaker::CodeRepository`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_sagemaker_CfnCodeRepositoryMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnCodeRepositoryPropsMixin);
            }
            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.CfnCodeRepository.isCfnCodeRepository(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnCodeRepositoryPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnCodeRepositoryPropsMixin = CfnCodeRepositoryPropsMixin;
/**
 * Creates a definition for a job that monitors data quality and drift.
 *
 * For information about model monitor, see [Amazon SageMaker AI Model Monitor](https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor.html) .
 *
 * @cloudformationResource AWS::SageMaker::DataQualityJobDefinition
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-dataqualityjobdefinition.html
 */
class CfnDataQualityJobDefinitionPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_sagemaker.CfnDataQualityJobDefinitionPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["dataQualityAppSpecification", "dataQualityBaselineConfig", "dataQualityJobInput", "dataQualityJobOutputConfig", "endpointName", "jobDefinitionName", "jobResources", "networkConfig", "roleArn", "stoppingCondition", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SageMaker::DataQualityJobDefinition`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_sagemaker_CfnDataQualityJobDefinitionMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnDataQualityJobDefinitionPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnDataQualityJobDefinitionMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnDataQualityJobDefinition.isCfnDataQualityJobDefinition(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnDataQualityJobDefinitionPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnDataQualityJobDefinitionPropsMixin = CfnDataQualityJobDefinitionPropsMixin;
// @ts-ignore TS6133
function flattenCfnDataQualityJobDefinitionMixinProps(props) {
    const ret = {};
    if ((props.roleArn !== undefined))
        ret.roleArn = cdk.getRefProperty(props.roleArn?.roleRef, 'roleArn') ?? cdk.ensureStringOrUndefined(props.roleArn, "roleArn", "iam.IRoleRef | string");
    return ret;
}
/**
 * The `AWS::SageMaker::Device` resource is an Amazon SageMaker resource type that allows you to register your Devices against an existing SageMaker Edge Manager DeviceFleet.
 *
 * Each device must be listed individually in the CFN specification.
 *
 * @cloudformationResource AWS::SageMaker::Device
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-device.html
 */
class CfnDevicePropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_sagemaker.CfnDevicePropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["device", "deviceFleetName", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SageMaker::Device`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_sagemaker_CfnDeviceMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnDevicePropsMixin);
            }
            throw error;
        }
        this.props = props;
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnDevice.isCfnDevice(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnDevicePropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnDevicePropsMixin = CfnDevicePropsMixin;
/**
 * The `AWS::SageMaker::DeviceFleet` resource is an Amazon SageMaker resource type that allows you to create a DeviceFleet that manages your SageMaker Edge Manager Devices.
 *
 * You must register your devices against the `DeviceFleet` separately.
 *
 * @cloudformationResource AWS::SageMaker::DeviceFleet
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-devicefleet.html
 */
class CfnDeviceFleetPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_sagemaker.CfnDeviceFleetPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["description", "deviceFleetName", "outputConfig", "roleArn", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SageMaker::DeviceFleet`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_sagemaker_CfnDeviceFleetMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnDeviceFleetPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnDeviceFleetMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnDeviceFleet.isCfnDeviceFleet(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnDeviceFleetPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnDeviceFleetPropsMixin = CfnDeviceFleetPropsMixin;
// @ts-ignore TS6133
function flattenCfnDeviceFleetMixinProps(props) {
    const ret = {};
    if ((props.roleArn !== undefined))
        ret.roleArn = cdk.getRefProperty(props.roleArn?.roleRef, 'roleArn') ?? cdk.ensureStringOrUndefined(props.roleArn, "roleArn", "iam.IRoleRef | string");
    return ret;
}
/**
 * Creates a `Domain` .
 *
 * A domain consists of an associated Amazon Elastic File System volume, a list of authorized users, and a variety of security, application, policy, and Amazon Virtual Private Cloud (VPC) configurations. Users within a domain can share notebook files and other artifacts with each other.
 *
 * *EFS storage*
 *
 * When a domain is created, an EFS volume is created for use by all of the users within the domain. Each user receives a private home directory within the EFS volume for notebooks, Git repositories, and data files.
 *
 * SageMaker AI uses the AWS Key Management Service ( AWS KMS) to encrypt the EFS volume attached to the domain with an AWS managed key by default. For more control, you can specify a customer managed key. For more information, see [Protect Data at Rest Using Encryption](https://docs.aws.amazon.com/sagemaker/latest/dg/encryption-at-rest.html) .
 *
 * *VPC configuration*
 *
 * All traffic between the domain and the Amazon EFS volume is through the specified VPC and subnets. For other traffic, you can specify the `AppNetworkAccessType` parameter. `AppNetworkAccessType` corresponds to the network access type that you choose when you onboard to the domain. The following options are available:
 *
 * - `PublicInternetOnly` - Non-EFS traffic goes through a VPC managed by Amazon SageMaker AI, which allows internet access. This is the default value.
 * - `VpcOnly` - All traffic is through the specified VPC and subnets. Internet access is disabled by default. To allow internet access, you must specify a NAT gateway.
 *
 * When internet access is disabled, you won't be able to run a Amazon SageMaker AI Studio notebook or to train or host models unless your VPC has an interface endpoint to the SageMaker AI API and runtime or a NAT gateway and your security groups allow outbound connections.
 *
 * > NFS traffic over TCP on port 2049 needs to be allowed in both inbound and outbound rules in order to launch a Amazon SageMaker AI Studio app successfully.
 *
 * For more information, see [Connect Amazon SageMaker AI Studio Notebooks to Resources in a VPC](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-notebooks-and-internet-access.html) .
 *
 * @cloudformationResource AWS::SageMaker::Domain
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-domain.html
 */
class CfnDomainPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_sagemaker.CfnDomainPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["appNetworkAccessType", "appSecurityGroupManagement", "authMode", "defaultSpaceSettings", "defaultUserSettings", "domainName", "domainSettings", "homeEfsFileSystemCreation", "kmsKeyId", "subnetIds", "tagPropagation", "tags", "vpcId"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SageMaker::Domain`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_sagemaker_CfnDomainMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnDomainPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnDomainMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnDomain.isCfnDomain(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnDomainPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnDomainPropsMixin = CfnDomainPropsMixin;
// @ts-ignore TS6133
function flattenCfnDomainPropsMixinUserSettingsProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        autoMountHomeEfs: (!props.autoMountHomeEfs ? undefined : props.autoMountHomeEfs),
        codeEditorAppSettings: (!props.codeEditorAppSettings ? undefined : props.codeEditorAppSettings),
        customFileSystemConfigs: (!props.customFileSystemConfigs ? undefined : props.customFileSystemConfigs),
        customPosixUserConfig: (!props.customPosixUserConfig ? undefined : props.customPosixUserConfig),
        defaultLandingUri: (!props.defaultLandingUri ? undefined : props.defaultLandingUri),
        executionRole: (!props.executionRole ? undefined : cdk.getRefProperty(props.executionRole?.roleRef, 'roleArn') ?? cdk.ensureStringOrUndefined(props.executionRole, "executionRole", "iam.IRoleRef | string")),
        jupyterLabAppSettings: (!props.jupyterLabAppSettings ? undefined : props.jupyterLabAppSettings),
        jupyterServerAppSettings: (!props.jupyterServerAppSettings ? undefined : props.jupyterServerAppSettings),
        kernelGatewayAppSettings: (!props.kernelGatewayAppSettings ? undefined : props.kernelGatewayAppSettings),
        rSessionAppSettings: (!props.rSessionAppSettings ? undefined : props.rSessionAppSettings),
        rStudioServerProAppSettings: (!props.rStudioServerProAppSettings ? undefined : props.rStudioServerProAppSettings),
        securityGroups: (!props.securityGroups ? undefined : cdk.mapArrayInPlace(props.securityGroups, (item) => cdk.getRefProperty(item?.securityGroupRef, 'securityGroupId') ?? cdk.ensureStringOrUndefined(item, "securityGroups", "ec2.ISecurityGroupRef | string"))),
        sharingSettings: (!props.sharingSettings ? undefined : props.sharingSettings),
        spaceStorageSettings: (!props.spaceStorageSettings ? undefined : props.spaceStorageSettings),
        studioWebPortal: (!props.studioWebPortal ? undefined : props.studioWebPortal),
        studioWebPortalSettings: (!props.studioWebPortalSettings ? undefined : props.studioWebPortalSettings)
    };
}
// @ts-ignore TS6133
function flattenCfnDomainMixinProps(props) {
    const ret = {};
    if ((props.defaultUserSettings !== undefined))
        ret.defaultUserSettings = flattenCfnDomainPropsMixinUserSettingsProperty(props.defaultUserSettings);
    if ((props.subnetIds !== undefined))
        ret.subnetIds = cdk.mapArrayInPlace(props.subnetIds, (item) => cdk.getRefProperty(item?.subnetRef, 'subnetId') ?? cdk.ensureStringOrUndefined(item, "subnetIds", "ec2.ISubnetRef | string"));
    if ((props.vpcId !== undefined))
        ret.vpcId = cdk.getRefProperty(props.vpcId?.vpcRef, 'vpcId') ?? cdk.ensureStringOrUndefined(props.vpcId, "vpcId", "ec2.IVPCRef | string");
    return ret;
}
/**
 * Use the `AWS::SageMaker::Endpoint` resource to create an endpoint using the specified configuration in the request.
 *
 * Amazon SageMaker uses the endpoint to provision resources and deploy models. You create the endpoint configuration with the [AWS::SageMaker::EndpointConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-endpointconfig.html) resource. For more information, see [Deploy a Model on Amazon SageMaker Hosting Services](https://docs.aws.amazon.com/sagemaker/latest/dg/how-it-works-hosting.html) in the *Amazon SageMaker Developer Guide* .
 *
 * @cloudformationResource AWS::SageMaker::Endpoint
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-endpoint.html
 */
class CfnEndpointPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_sagemaker.CfnEndpointPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["deploymentConfig", "endpointConfigName", "endpointName", "excludeRetainedVariantProperties", "retainAllVariantProperties", "retainDeploymentConfig", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SageMaker::Endpoint`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_sagemaker_CfnEndpointMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnEndpointPropsMixin);
            }
            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.CfnEndpoint.isCfnEndpoint(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnEndpointPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnEndpointPropsMixin = CfnEndpointPropsMixin;
/**
 * The `AWS::SageMaker::EndpointConfig` resource creates a configuration for an Amazon SageMaker endpoint.
 *
 * For more information, see [CreateEndpointConfig](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateEndpointConfig.html) in the *SageMaker Developer Guide* .
 *
 * @cloudformationResource AWS::SageMaker::EndpointConfig
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-endpointconfig.html
 */
class CfnEndpointConfigPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_sagemaker.CfnEndpointConfigPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["asyncInferenceConfig", "dataCaptureConfig", "enableNetworkIsolation", "endpointConfigName", "executionRoleArn", "explainerConfig", "kmsKeyId", "productionVariants", "shadowProductionVariants", "tags", "vpcConfig"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SageMaker::EndpointConfig`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_sagemaker_CfnEndpointConfigMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnEndpointConfigPropsMixin);
            }
            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.CfnEndpointConfig.isCfnEndpointConfig(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnEndpointConfigPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnEndpointConfigPropsMixin = CfnEndpointConfigPropsMixin;
/**
 * Create a new `FeatureGroup` .
 *
 * A `FeatureGroup` is a group of `Features` defined in the `FeatureStore` to describe a `Record` .
 *
 * The `FeatureGroup` defines the schema and features contained in the FeatureGroup. A `FeatureGroup` definition is composed of a list of `Features` , a `RecordIdentifierFeatureName` , an `EventTimeFeatureName` and configurations for its `OnlineStore` and `OfflineStore` . Check [AWS service quotas](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) to see the `FeatureGroup` s quota for your AWS account.
 *
 * > You must include at least one of `OnlineStoreConfig` and `OfflineStoreConfig` to create a `FeatureGroup` .
 *
 * @cloudformationResource AWS::SageMaker::FeatureGroup
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-featuregroup.html
 */
class CfnFeatureGroupPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_sagemaker.CfnFeatureGroupPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["description", "eventTimeFeatureName", "featureDefinitions", "featureGroupName", "offlineStoreConfig", "onlineStoreConfig", "recordIdentifierFeatureName", "roleArn", "tags", "throughputConfig"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SageMaker::FeatureGroup`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_sagemaker_CfnFeatureGroupMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnFeatureGroupPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnFeatureGroupMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnFeatureGroup.isCfnFeatureGroup(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnFeatureGroupPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnFeatureGroupPropsMixin = CfnFeatureGroupPropsMixin;
// @ts-ignore TS6133
function flattenCfnFeatureGroupMixinProps(props) {
    const ret = {};
    if ((props.roleArn !== undefined))
        ret.roleArn = cdk.getRefProperty(props.roleArn?.roleRef, 'roleArn') ?? cdk.ensureStringOrUndefined(props.roleArn, "roleArn", "iam.IRoleRef | string");
    return ret;
}
/**
 * Creates a custom SageMaker AI image.
 *
 * A SageMaker AI image is a set of image versions. Each image version represents a container image stored in Amazon ECR. For more information, see [Bring your own SageMaker AI image](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-byoi.html) .
 *
 * @cloudformationResource AWS::SageMaker::Image
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-image.html
 */
class CfnImagePropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_sagemaker.CfnImagePropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["imageDescription", "imageDisplayName", "imageName", "imageRoleArn", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SageMaker::Image`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_sagemaker_CfnImageMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnImagePropsMixin);
            }
            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.CfnImage.isCfnImage(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnImagePropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnImagePropsMixin = CfnImagePropsMixin;
/**
 * Creates a version of the SageMaker image specified by `ImageName` .
 *
 * The version represents the Amazon Container Registry (ECR) container image specified by `BaseImage` .
 *
 * > You can use the `DependsOn` attribute to specify that the creation of a specific resource follows another. You can use it for the following use cases. For more information, see [`DependsOn` attribute](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-dependson.html) .
 * >
 * > 1. `DependsOn` can be used to establish a parent/child relationship between `ImageVersion` and `Image` where the `ImageVersion` `DependsOn` the `Image` .
 * >
 * > 2. `DependsOn` can be used to establish order among `ImageVersion` s within the same `Image` namespace. For example, if ImageVersionB `DependsOn` ImageVersionA and both share the same parent `Image` , then ImageVersionA is version N and ImageVersionB is N+1.
 *
 * @cloudformationResource AWS::SageMaker::ImageVersion
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-imageversion.html
 */
class CfnImageVersionPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_sagemaker.CfnImageVersionPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["alias", "aliases", "baseImage", "horovod", "imageName", "jobType", "mlFramework", "processor", "programmingLang", "releaseNotes", "vendorGuidance"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SageMaker::ImageVersion`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_sagemaker_CfnImageVersionMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnImageVersionPropsMixin);
            }
            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.CfnImageVersion.isCfnImageVersion(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnImageVersionPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnImageVersionPropsMixin = CfnImageVersionPropsMixin;
/**
 * Creates an inference experiment using the configurations specified in the request.
 *
 * Use this API to setup and schedule an experiment to compare model variants on a Amazon SageMaker inference endpoint. For more information about inference experiments, see [Shadow tests](https://docs.aws.amazon.com/sagemaker/latest/dg/shadow-tests.html) .
 *
 * Amazon SageMaker begins your experiment at the scheduled time and routes traffic to your endpoint's model variants based on your specified configuration.
 *
 * While the experiment is in progress or after it has concluded, you can view metrics that compare your model variants. For more information, see [View, monitor, and edit shadow tests](https://docs.aws.amazon.com/sagemaker/latest/dg/shadow-tests-view-monitor-edit.html) .
 *
 * @cloudformationResource AWS::SageMaker::InferenceExperiment
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-inferenceexperiment.html
 */
class CfnInferenceExperimentPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_sagemaker.CfnInferenceExperimentPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["dataStorageConfig", "description", "desiredState", "endpointName", "kmsKey", "modelVariants", "name", "roleArn", "schedule", "shadowModeConfig", "statusReason", "tags", "type"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SageMaker::InferenceExperiment`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_sagemaker_CfnInferenceExperimentMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnInferenceExperimentPropsMixin);
            }
            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.CfnInferenceExperiment.isCfnInferenceExperiment(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnInferenceExperimentPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnInferenceExperimentPropsMixin = CfnInferenceExperimentPropsMixin;
/**
 * The `AWS::SageMaker::Model` resource to create a model to host at an Amazon SageMaker endpoint.
 *
 * For more information, see [Deploying a Model on Amazon SageMaker Hosting Services](https://docs.aws.amazon.com/sagemaker/latest/dg/how-it-works-hosting.html) in the *Amazon SageMaker Developer Guide* .
 *
 * @cloudformationResource AWS::SageMaker::Model
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-model.html
 */
class CfnModelPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_sagemaker.CfnModelPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["containers", "enableNetworkIsolation", "executionRoleArn", "inferenceExecutionConfig", "modelName", "primaryContainer", "tags", "vpcConfig"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SageMaker::Model`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_sagemaker_CfnModelMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnModelPropsMixin);
            }
            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.CfnModel.isCfnModel(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnModelPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnModelPropsMixin = CfnModelPropsMixin;
/**
 * Creates the definition for a model bias job.
 *
 * @cloudformationResource AWS::SageMaker::ModelBiasJobDefinition
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-modelbiasjobdefinition.html
 */
class CfnModelBiasJobDefinitionPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_sagemaker.CfnModelBiasJobDefinitionPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["endpointName", "jobDefinitionName", "jobResources", "modelBiasAppSpecification", "modelBiasBaselineConfig", "modelBiasJobInput", "modelBiasJobOutputConfig", "networkConfig", "roleArn", "stoppingCondition", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SageMaker::ModelBiasJobDefinition`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_sagemaker_CfnModelBiasJobDefinitionMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnModelBiasJobDefinitionPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnModelBiasJobDefinitionMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnModelBiasJobDefinition.isCfnModelBiasJobDefinition(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnModelBiasJobDefinitionPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnModelBiasJobDefinitionPropsMixin = CfnModelBiasJobDefinitionPropsMixin;
// @ts-ignore TS6133
function flattenCfnModelBiasJobDefinitionMixinProps(props) {
    const ret = {};
    if ((props.roleArn !== undefined))
        ret.roleArn = cdk.getRefProperty(props.roleArn?.roleRef, 'roleArn') ?? cdk.ensureStringOrUndefined(props.roleArn, "roleArn", "iam.IRoleRef | string");
    return ret;
}
/**
 * Creates an Amazon SageMaker Model Card.
 *
 * For information about how to use model cards, see [Amazon SageMaker Model Card](https://docs.aws.amazon.com/sagemaker/latest/dg/model-cards.html) .
 *
 * @cloudformationResource AWS::SageMaker::ModelCard
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-modelcard.html
 */
class CfnModelCardPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_sagemaker.CfnModelCardPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["content", "createdBy", "lastModifiedBy", "modelCardName", "modelCardStatus", "securityConfig", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SageMaker::ModelCard`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_sagemaker_CfnModelCardMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnModelCardPropsMixin);
            }
            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.CfnModelCard.isCfnModelCard(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnModelCardPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnModelCardPropsMixin = CfnModelCardPropsMixin;
/**
 * Creates the definition for a model explainability job.
 *
 * @cloudformationResource AWS::SageMaker::ModelExplainabilityJobDefinition
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-modelexplainabilityjobdefinition.html
 */
class CfnModelExplainabilityJobDefinitionPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_sagemaker.CfnModelExplainabilityJobDefinitionPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["endpointName", "jobDefinitionName", "jobResources", "modelExplainabilityAppSpecification", "modelExplainabilityBaselineConfig", "modelExplainabilityJobInput", "modelExplainabilityJobOutputConfig", "networkConfig", "roleArn", "stoppingCondition", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SageMaker::ModelExplainabilityJobDefinition`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_sagemaker_CfnModelExplainabilityJobDefinitionMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnModelExplainabilityJobDefinitionPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnModelExplainabilityJobDefinitionMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnModelExplainabilityJobDefinition.isCfnModelExplainabilityJobDefinition(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnModelExplainabilityJobDefinitionPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnModelExplainabilityJobDefinitionPropsMixin = CfnModelExplainabilityJobDefinitionPropsMixin;
// @ts-ignore TS6133
function flattenCfnModelExplainabilityJobDefinitionMixinProps(props) {
    const ret = {};
    if ((props.roleArn !== undefined))
        ret.roleArn = cdk.getRefProperty(props.roleArn?.roleRef, 'roleArn') ?? cdk.ensureStringOrUndefined(props.roleArn, "roleArn", "iam.IRoleRef | string");
    return ret;
}
/**
 * A container for your trained model that can be deployed for SageMaker inference.
 *
 * This can include inference code, artifacts, and metadata. The model package type can be one of the following.
 *
 * - Versioned model: A part of a model package group in Model Registry.
 * - Unversioned model: Not part of a model package group and used in AWS Marketplace.
 *
 * For more information, see [`CreateModelPackage`](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelPackage.html) .
 *
 * @cloudformationResource AWS::SageMaker::ModelPackage
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-modelpackage.html
 */
class CfnModelPackagePropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_sagemaker.CfnModelPackagePropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["additionalInferenceSpecifications", "additionalInferenceSpecificationsToAdd", "approvalDescription", "certifyForMarketplace", "clientToken", "customerMetadataProperties", "domain", "driftCheckBaselines", "inferenceSpecification", "lastModifiedTime", "metadataProperties", "modelApprovalStatus", "modelCard", "modelMetrics", "modelPackageDescription", "modelPackageGroupName", "modelPackageName", "modelPackageStatusDetails", "modelPackageVersion", "samplePayloadUrl", "securityConfig", "skipModelValidation", "sourceAlgorithmSpecification", "sourceUri", "tags", "task", "validationSpecification"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SageMaker::ModelPackage`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_sagemaker_CfnModelPackageMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnModelPackagePropsMixin);
            }
            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.CfnModelPackage.isCfnModelPackage(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnModelPackagePropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnModelPackagePropsMixin = CfnModelPackagePropsMixin;
/**
 * A group of versioned models in the Model Registry.
 *
 * @cloudformationResource AWS::SageMaker::ModelPackageGroup
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-modelpackagegroup.html
 */
class CfnModelPackageGroupPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_sagemaker.CfnModelPackageGroupPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["modelPackageGroupDescription", "modelPackageGroupName", "modelPackageGroupPolicy", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SageMaker::ModelPackageGroup`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_sagemaker_CfnModelPackageGroupMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnModelPackageGroupPropsMixin);
            }
            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.CfnModelPackageGroup.isCfnModelPackageGroup(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnModelPackageGroupPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnModelPackageGroupPropsMixin = CfnModelPackageGroupPropsMixin;
/**
 * Creates a definition for a job that monitors model quality and drift.
 *
 * For information about model monitor, see [Amazon SageMaker Model Monitor](https://docs.aws.amazon.com/sagemaker/latest/dg/model-monitor.html) .
 *
 * @cloudformationResource AWS::SageMaker::ModelQualityJobDefinition
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-modelqualityjobdefinition.html
 */
class CfnModelQualityJobDefinitionPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_sagemaker.CfnModelQualityJobDefinitionPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["endpointName", "jobDefinitionName", "jobResources", "modelQualityAppSpecification", "modelQualityBaselineConfig", "modelQualityJobInput", "modelQualityJobOutputConfig", "networkConfig", "roleArn", "stoppingCondition", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SageMaker::ModelQualityJobDefinition`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_sagemaker_CfnModelQualityJobDefinitionMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnModelQualityJobDefinitionPropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnModelQualityJobDefinitionMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnModelQualityJobDefinition.isCfnModelQualityJobDefinition(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnModelQualityJobDefinitionPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnModelQualityJobDefinitionPropsMixin = CfnModelQualityJobDefinitionPropsMixin;
// @ts-ignore TS6133
function flattenCfnModelQualityJobDefinitionMixinProps(props) {
    const ret = {};
    if ((props.roleArn !== undefined))
        ret.roleArn = cdk.getRefProperty(props.roleArn?.roleRef, 'roleArn') ?? cdk.ensureStringOrUndefined(props.roleArn, "roleArn", "iam.IRoleRef | string");
    return ret;
}
/**
 * The `AWS::SageMaker::MonitoringSchedule` resource is an Amazon SageMaker resource type that regularly starts SageMaker processing Jobs to monitor the data captured for a SageMaker endpoint.
 *
 * @cloudformationResource AWS::SageMaker::MonitoringSchedule
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-monitoringschedule.html
 */
class CfnMonitoringSchedulePropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_sagemaker.CfnMonitoringSchedulePropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["endpointName", "failureReason", "lastMonitoringExecutionSummary", "monitoringScheduleConfig", "monitoringScheduleName", "monitoringScheduleStatus", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SageMaker::MonitoringSchedule`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_sagemaker_CfnMonitoringScheduleMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnMonitoringSchedulePropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnMonitoringScheduleMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnMonitoringSchedule.isCfnMonitoringSchedule(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnMonitoringSchedulePropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnMonitoringSchedulePropsMixin = CfnMonitoringSchedulePropsMixin;
// @ts-ignore TS6133
function flattenCfnMonitoringSchedulePropsMixinMonitoringJobDefinitionProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        baselineConfig: (!props.baselineConfig ? undefined : props.baselineConfig),
        environment: (!props.environment ? undefined : props.environment),
        monitoringAppSpecification: (!props.monitoringAppSpecification ? undefined : props.monitoringAppSpecification),
        monitoringInputs: (!props.monitoringInputs ? undefined : props.monitoringInputs),
        monitoringOutputConfig: (!props.monitoringOutputConfig ? undefined : props.monitoringOutputConfig),
        monitoringResources: (!props.monitoringResources ? undefined : props.monitoringResources),
        networkConfig: (!props.networkConfig ? undefined : props.networkConfig),
        roleArn: (!props.roleArn ? undefined : cdk.getRefProperty(props.roleArn?.roleRef, 'roleArn') ?? cdk.ensureStringOrUndefined(props.roleArn, "roleArn", "iam.IRoleRef | string")),
        stoppingCondition: (!props.stoppingCondition ? undefined : props.stoppingCondition)
    };
}
// @ts-ignore TS6133
function flattenCfnMonitoringSchedulePropsMixinMonitoringScheduleConfigProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        monitoringJobDefinition: (!props.monitoringJobDefinition ? undefined : (!props.monitoringJobDefinition ? undefined : flattenCfnMonitoringSchedulePropsMixinMonitoringJobDefinitionProperty(props.monitoringJobDefinition))),
        monitoringJobDefinitionName: (!props.monitoringJobDefinitionName ? undefined : props.monitoringJobDefinitionName),
        monitoringType: (!props.monitoringType ? undefined : props.monitoringType),
        scheduleConfig: (!props.scheduleConfig ? undefined : props.scheduleConfig)
    };
}
// @ts-ignore TS6133
function flattenCfnMonitoringScheduleMixinProps(props) {
    const ret = {};
    if ((props.monitoringScheduleConfig !== undefined))
        ret.monitoringScheduleConfig = flattenCfnMonitoringSchedulePropsMixinMonitoringScheduleConfigProperty(props.monitoringScheduleConfig);
    return ret;
}
/**
 * The `AWS::SageMaker::NotebookInstance` resource creates an Amazon SageMaker notebook instance.
 *
 * A notebook instance is a machine learning (ML) compute instance running on a Jupyter notebook. For more information, see [Use Notebook Instances](https://docs.aws.amazon.com/sagemaker/latest/dg/nbi.html) .
 *
 * @cloudformationResource AWS::SageMaker::NotebookInstance
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-notebookinstance.html
 */
class CfnNotebookInstancePropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_sagemaker.CfnNotebookInstancePropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["acceleratorTypes", "additionalCodeRepositories", "defaultCodeRepository", "directInternetAccess", "instanceMetadataServiceConfiguration", "instanceType", "kmsKeyId", "lifecycleConfigName", "notebookInstanceName", "platformIdentifier", "roleArn", "rootAccess", "securityGroupIds", "subnetId", "tags", "volumeSizeInGb"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SageMaker::NotebookInstance`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_sagemaker_CfnNotebookInstanceMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnNotebookInstancePropsMixin);
            }
            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.CfnNotebookInstance.isCfnNotebookInstance(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnNotebookInstancePropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnNotebookInstancePropsMixin = CfnNotebookInstancePropsMixin;
/**
 * The `AWS::SageMaker::NotebookInstanceLifecycleConfig` resource creates shell scripts that run when you create and/or start a notebook instance.
 *
 * For information about notebook instance lifecycle configurations, see [Customize a Notebook Instance](https://docs.aws.amazon.com/sagemaker/latest/dg/notebook-lifecycle-config.html) in the *Amazon SageMaker Developer Guide* .
 *
 * @cloudformationResource AWS::SageMaker::NotebookInstanceLifecycleConfig
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-notebookinstancelifecycleconfig.html
 */
class CfnNotebookInstanceLifecycleConfigPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_sagemaker.CfnNotebookInstanceLifecycleConfigPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["notebookInstanceLifecycleConfigName", "onCreate", "onStart"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SageMaker::NotebookInstanceLifecycleConfig`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_sagemaker_CfnNotebookInstanceLifecycleConfigMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnNotebookInstanceLifecycleConfigPropsMixin);
            }
            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.CfnNotebookInstanceLifecycleConfig.isCfnNotebookInstanceLifecycleConfig(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnNotebookInstanceLifecycleConfigPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnNotebookInstanceLifecycleConfigPropsMixin = CfnNotebookInstanceLifecycleConfigPropsMixin;
/**
 * The `AWS::SageMaker::Pipeline` resource creates shell scripts that run when you create and/or start a SageMaker Pipeline.
 *
 * For information about SageMaker Pipelines, see [SageMaker Pipelines](https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines.html) in the *Amazon SageMaker Developer Guide* .
 *
 * @cloudformationResource AWS::SageMaker::Pipeline
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-pipeline.html
 */
class CfnPipelinePropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_sagemaker.CfnPipelinePropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["parallelismConfiguration", "pipelineDefinition", "pipelineDescription", "pipelineDisplayName", "pipelineName", "roleArn", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SageMaker::Pipeline`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_sagemaker_CfnPipelineMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnPipelinePropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnPipelineMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnPipeline.isCfnPipeline(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnPipelinePropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnPipelinePropsMixin = CfnPipelinePropsMixin;
// @ts-ignore TS6133
function flattenCfnPipelineMixinProps(props) {
    const ret = {};
    if ((props.roleArn !== undefined))
        ret.roleArn = cdk.getRefProperty(props.roleArn?.roleRef, 'roleArn') ?? cdk.ensureStringOrUndefined(props.roleArn, "roleArn", "iam.IRoleRef | string");
    return ret;
}
/**
 * Creates a machine learning (ML) project that can contain one or more templates that set up an ML pipeline from training to deploying an approved model.
 *
 * @cloudformationResource AWS::SageMaker::Project
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-project.html
 */
class CfnProjectPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_sagemaker.CfnProjectPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["projectDescription", "projectName", "serviceCatalogProvisionedProductDetails", "serviceCatalogProvisioningDetails", "tags", "templateProviderDetails"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SageMaker::Project`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_sagemaker_CfnProjectMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnProjectPropsMixin);
            }
            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.CfnProject.isCfnProject(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnProjectPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnProjectPropsMixin = CfnProjectPropsMixin;
/**
 * Creates a private space or a space used for real time collaboration in a domain.
 *
 * @cloudformationResource AWS::SageMaker::Space
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-space.html
 */
class CfnSpacePropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_sagemaker.CfnSpacePropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["domainId", "ownershipSettings", "spaceDisplayName", "spaceName", "spaceSettings", "spaceSharingSettings", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SageMaker::Space`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_sagemaker_CfnSpaceMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnSpacePropsMixin);
            }
            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.CfnSpace.isCfnSpace(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnSpacePropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnSpacePropsMixin = CfnSpacePropsMixin;
/**
 * Creates a user profile.
 *
 * A user profile represents a single user within a domain, and is the main way to reference a "person" for the purposes of sharing, reporting, and other user-oriented features. This entity is created when a user onboards to Amazon SageMaker Studio. If an administrator invites a person by email or imports them from SSO , a user profile is automatically created. A user profile is the primary holder of settings for an individual user and has a reference to the user's private Amazon Elastic File System (EFS) home directory.
 *
 * > If you're using SSO authentication, a user in SSO , or a group in SSO containing that user, must be assigned to the Amazon SageMaker Studio application from the SSO Console to create a user profile. For more information about application assignment, see [Assign user access](https://docs.aws.amazon.com/singlesignon/latest/userguide/assignuserstoapp.html) . After assignment is complete, a user profile can be created for that user in SSO with AWS CloudFormation.
 *
 * @cloudformationResource AWS::SageMaker::UserProfile
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-userprofile.html
 */
class CfnUserProfilePropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_sagemaker.CfnUserProfilePropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["domainId", "singleSignOnUserIdentifier", "singleSignOnUserValue", "tags", "userProfileName", "userSettings"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SageMaker::UserProfile`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_sagemaker_CfnUserProfileMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnUserProfilePropsMixin);
            }
            throw error;
        }
        this.props = {
            ...props,
            ...flattenCfnUserProfileMixinProps(props)
        };
        this.strategy = (options.strategy ?? cdk.PropertyMergeStrategy.combine());
    }
    /**
     * Check if this mixin supports the given construct
     */
    supports(construct) {
        return (cdk.CfnResource.isCfnResource(construct) && service.CfnUserProfile.isCfnUserProfile(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnUserProfilePropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnUserProfilePropsMixin = CfnUserProfilePropsMixin;
// @ts-ignore TS6133
function flattenCfnUserProfilePropsMixinUserSettingsProperty(props) {
    if (cdk.isResolvableObject(props))
        return props;
    return {
        autoMountHomeEfs: (!props.autoMountHomeEfs ? undefined : props.autoMountHomeEfs),
        codeEditorAppSettings: (!props.codeEditorAppSettings ? undefined : props.codeEditorAppSettings),
        customFileSystemConfigs: (!props.customFileSystemConfigs ? undefined : props.customFileSystemConfigs),
        customPosixUserConfig: (!props.customPosixUserConfig ? undefined : props.customPosixUserConfig),
        defaultLandingUri: (!props.defaultLandingUri ? undefined : props.defaultLandingUri),
        executionRole: (!props.executionRole ? undefined : cdk.getRefProperty(props.executionRole?.roleRef, 'roleArn') ?? cdk.ensureStringOrUndefined(props.executionRole, "executionRole", "iam.IRoleRef | string")),
        jupyterLabAppSettings: (!props.jupyterLabAppSettings ? undefined : props.jupyterLabAppSettings),
        jupyterServerAppSettings: (!props.jupyterServerAppSettings ? undefined : props.jupyterServerAppSettings),
        kernelGatewayAppSettings: (!props.kernelGatewayAppSettings ? undefined : props.kernelGatewayAppSettings),
        rStudioServerProAppSettings: (!props.rStudioServerProAppSettings ? undefined : props.rStudioServerProAppSettings),
        securityGroups: (!props.securityGroups ? undefined : cdk.mapArrayInPlace(props.securityGroups, (item) => cdk.getRefProperty(item?.securityGroupRef, 'securityGroupId') ?? cdk.ensureStringOrUndefined(item, "securityGroups", "ec2.ISecurityGroupRef | string"))),
        sharingSettings: (!props.sharingSettings ? undefined : props.sharingSettings),
        spaceStorageSettings: (!props.spaceStorageSettings ? undefined : props.spaceStorageSettings),
        studioWebPortal: (!props.studioWebPortal ? undefined : props.studioWebPortal),
        studioWebPortalSettings: (!props.studioWebPortalSettings ? undefined : props.studioWebPortalSettings)
    };
}
// @ts-ignore TS6133
function flattenCfnUserProfileMixinProps(props) {
    const ret = {};
    if ((props.domainId !== undefined))
        ret.domainId = cdk.getRefProperty(props.domainId?.domainRef, 'domainId') ?? cdk.ensureStringOrUndefined(props.domainId, "domainId", "sagemaker.IDomainRef | string");
    if ((props.userSettings !== undefined))
        ret.userSettings = flattenCfnUserProfilePropsMixinUserSettingsProperty(props.userSettings);
    return ret;
}
/**
 * Creates a new work team for labeling your data.
 *
 * A work team is defined by one or more Amazon Cognito user pools. You must first create the user pools before you can create a work team.
 *
 * You cannot create more than 25 work teams in an account and region.
 *
 * @cloudformationResource AWS::SageMaker::Workteam
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-workteam.html
 */
class CfnWorkteamPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_sagemaker.CfnWorkteamPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["description", "memberDefinitions", "notificationConfiguration", "tags", "workforceName", "workteamName"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SageMaker::Workteam`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_sagemaker_CfnWorkteamMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnWorkteamPropsMixin);
            }
            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.CfnWorkteam.isCfnWorkteam(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnWorkteamPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnWorkteamPropsMixin = CfnWorkteamPropsMixin;
/**
 * Creates an Amazon SageMaker HyperPod cluster.
 *
 * SageMaker HyperPod is a capability of SageMaker for creating and managing persistent clusters for developing large machine learning models, such as large language models (LLMs) and diffusion models. To learn more, see [Amazon SageMaker HyperPod](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod.html) in the *Amazon SageMaker Developer Guide* .
 *
 * @cloudformationResource AWS::SageMaker::Cluster
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-cluster.html
 */
class CfnClusterPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_sagemaker.CfnClusterPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["autoScaling", "clusterName", "clusterRole", "instanceGroups", "nodeProvisioningMode", "nodeRecovery", "orchestrator", "restrictedInstanceGroups", "tags", "tieredStorageConfig", "vpcConfig"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SageMaker::Cluster`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_sagemaker_CfnClusterMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnClusterPropsMixin);
            }
            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.CfnCluster.isCfnCluster(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnClusterPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnClusterPropsMixin = CfnClusterPropsMixin;
/**
 * Creates an inference component, which is a SageMaker AI hosting object that you can use to deploy a model to an endpoint.
 *
 * In the inference component settings, you specify the model, the endpoint, and how the model utilizes the resources that the endpoint hosts. You can optimize resource utilization by tailoring how the required CPU cores, accelerators, and memory are allocated. You can deploy multiple inference components to an endpoint, where each inference component contains one model and the resource utilization needs for that individual model. After you deploy an inference component, you can directly invoke the associated model when you use the InvokeEndpoint API action.
 *
 * @cloudformationResource AWS::SageMaker::InferenceComponent
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-inferencecomponent.html
 */
class CfnInferenceComponentPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_sagemaker.CfnInferenceComponentPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["deploymentConfig", "endpointArn", "endpointName", "inferenceComponentName", "runtimeConfig", "specification", "tags", "variantName"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SageMaker::InferenceComponent`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_sagemaker_CfnInferenceComponentMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnInferenceComponentPropsMixin);
            }
            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.CfnInferenceComponent.isCfnInferenceComponent(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnInferenceComponentPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnInferenceComponentPropsMixin = CfnInferenceComponentPropsMixin;
/**
 * Creates an MLflow Tracking Server using a general purpose Amazon S3 bucket as the artifact store.
 *
 * For more information, see [Create an MLflow Tracking Server](https://docs.aws.amazon.com/sagemaker/latest/dg/mlflow-create-tracking-server.html) .
 *
 * @cloudformationResource AWS::SageMaker::MlflowTrackingServer
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-mlflowtrackingserver.html
 */
class CfnMlflowTrackingServerPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_sagemaker.CfnMlflowTrackingServerPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["artifactStoreUri", "automaticModelRegistration", "mlflowVersion", "roleArn", "tags", "trackingServerName", "trackingServerSize", "weeklyMaintenanceWindowStart"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SageMaker::MlflowTrackingServer`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_sagemaker_CfnMlflowTrackingServerMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnMlflowTrackingServerPropsMixin);
            }
            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.CfnMlflowTrackingServer.isCfnMlflowTrackingServer(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnMlflowTrackingServerPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnMlflowTrackingServerPropsMixin = CfnMlflowTrackingServerPropsMixin;
/**
 * The `AWS::SageMaker::PartnerApp` resource creates an Amazon SageMaker Partner AI App.
 *
 * For more information, see [Partner AI Apps](https://docs.aws.amazon.com/sagemaker/latest/dg/partner-apps.html) .
 *
 * @cloudformationResource AWS::SageMaker::PartnerApp
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-partnerapp.html
 */
class CfnPartnerAppPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_sagemaker.CfnPartnerAppPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["applicationConfig", "appVersion", "authType", "clientToken", "enableAutoMinorVersionUpgrade", "enableIamSessionBasedIdentity", "executionRoleArn", "kmsKeyId", "maintenanceConfig", "name", "tags", "tier", "type"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SageMaker::PartnerApp`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_sagemaker_CfnPartnerAppMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnPartnerAppPropsMixin);
            }
            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.CfnPartnerApp.isCfnPartnerApp(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnPartnerAppPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnPartnerAppPropsMixin = CfnPartnerAppPropsMixin;
/**
 * An Amazon SageMaker processing job that is used to analyze data and evaluate models.
 *
 * For more information, see [Process Data and Evaluate Models](https://docs.aws.amazon.com/sagemaker/latest/dg/processing-job.html) .
 *
 * Also, note the following details specific to processing jobs created using CloudFormation stacks:
 *
 * - When you delete a CloudFormation stack with a processing job resource, the processing job is stopped using the [StopProcessingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_StopProcessingJob.html) API but not deleted. Any tags associated with the processing job are deleted using the [DeleteTags](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteTags.html) API.
 * - If any part of your CloudFormation stack deployment fails and a rollback initiates, processing jobs with a specified `ProcessingJobName` value might cause the stack to become stuck in a failed state. This occurs because during a rollback, CloudFormation attempts to recreate the stack resources. Processing job names must be unique, so when CloudFormation attempts to recreate a processing job using the already defined name, this results in an `AlreadyExists` error. To prevent this, we recommend that you don't specify the optional `ProcessingJobName` property, thereby allowing SageMaker to auto-generate a unique name for your processing job. This ensures successful stack rollbacks when necessary. If you must use custom job names, you have to manually modify the `ProcessingJobName` and redeploy the stack to recover from a failed rollback.
 *
 * @cloudformationResource AWS::SageMaker::ProcessingJob
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-processingjob.html
 */
class CfnProcessingJobPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_sagemaker.CfnProcessingJobPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["appSpecification", "environment", "experimentConfig", "networkConfig", "processingInputs", "processingJobName", "processingOutputConfig", "processingResources", "roleArn", "stoppingCondition", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SageMaker::ProcessingJob`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_sagemaker_CfnProcessingJobMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnProcessingJobPropsMixin);
            }
            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.CfnProcessingJob.isCfnProcessingJob(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnProcessingJobPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnProcessingJobPropsMixin = CfnProcessingJobPropsMixin;
/**
 * Creates a new Amazon SageMaker AI Studio Lifecycle Configuration.
 *
 * @cloudformationResource AWS::SageMaker::StudioLifecycleConfig
 * @mixin true
 * @stability external
 * @see http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sagemaker-studiolifecycleconfig.html
 */
class CfnStudioLifecycleConfigPropsMixin extends cdk.Mixin {
    static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/cfn-property-mixins.aws_sagemaker.CfnStudioLifecycleConfigPropsMixin", version: "2.258.1" };
    static CFN_PROPERTY_KEYS = ["studioLifecycleConfigAppType", "studioLifecycleConfigContent", "studioLifecycleConfigName", "tags"];
    props;
    strategy;
    /**
     * Create a mixin to apply properties to `AWS::SageMaker::StudioLifecycleConfig`.
     *
     * @param props L1 properties to apply
     * @param options Mixin options
     */
    constructor(props, options = {}) {
        super();
        try {
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_aws_sagemaker_CfnStudioLifecycleConfigMixinProps(props);
            jsiiDeprecationWarnings._aws_cdk_cfn_property_mixins_CfnPropertyMixinOptions(options);
        }
        catch (error) {
            if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
                Error.captureStackTrace(error, CfnStudioLifecycleConfigPropsMixin);
            }
            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.CfnStudioLifecycleConfig.isCfnStudioLifecycleConfig(construct));
    }
    /**
     * Apply the mixin properties to the construct
     */
    applyTo(construct) {
        if (this.supports(construct)) {
            this.strategy.apply(construct, this.props, CfnStudioLifecycleConfigPropsMixin.CFN_PROPERTY_KEYS);
        }
    }
}
exports.CfnStudioLifecycleConfigPropsMixin = CfnStudioLifecycleConfigPropsMixin;
