// https://www.terraform.io/docs/providers/aws
// generated from terraform resource schema
import * as cdktf from 'cdktf';
export function awsProviderAssumeRoleToTerraform(struct) {
    if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) {
        return struct;
    }
    if (cdktf.isComplexElement(struct)) {
        throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration");
    }
    return {
        duration: cdktf.stringToTerraform(struct.duration),
        duration_seconds: cdktf.numberToTerraform(struct.durationSeconds),
        external_id: cdktf.stringToTerraform(struct.externalId),
        policy: cdktf.stringToTerraform(struct.policy),
        policy_arns: cdktf.listMapper(cdktf.stringToTerraform)(struct.policyArns),
        role_arn: cdktf.stringToTerraform(struct.roleArn),
        session_name: cdktf.stringToTerraform(struct.sessionName),
        tags: cdktf.hashMapper(cdktf.stringToTerraform)(struct.tags),
        transitive_tag_keys: cdktf.listMapper(cdktf.stringToTerraform)(struct.transitiveTagKeys),
    };
}
export function awsProviderDefaultTagsToTerraform(struct) {
    if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) {
        return struct;
    }
    if (cdktf.isComplexElement(struct)) {
        throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration");
    }
    return {
        tags: cdktf.hashMapper(cdktf.stringToTerraform)(struct.tags),
    };
}
export function awsProviderEndpointsToTerraform(struct) {
    if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) {
        return struct;
    }
    if (cdktf.isComplexElement(struct)) {
        throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration");
    }
    return {
        accessanalyzer: cdktf.stringToTerraform(struct.accessanalyzer),
        account: cdktf.stringToTerraform(struct.account),
        acm: cdktf.stringToTerraform(struct.acm),
        acmpca: cdktf.stringToTerraform(struct.acmpca),
        alexaforbusiness: cdktf.stringToTerraform(struct.alexaforbusiness),
        amg: cdktf.stringToTerraform(struct.amg),
        amp: cdktf.stringToTerraform(struct.amp),
        amplify: cdktf.stringToTerraform(struct.amplify),
        amplifybackend: cdktf.stringToTerraform(struct.amplifybackend),
        apigateway: cdktf.stringToTerraform(struct.apigateway),
        apigatewayv2: cdktf.stringToTerraform(struct.apigatewayv2),
        appautoscaling: cdktf.stringToTerraform(struct.appautoscaling),
        appconfig: cdktf.stringToTerraform(struct.appconfig),
        appflow: cdktf.stringToTerraform(struct.appflow),
        appintegrations: cdktf.stringToTerraform(struct.appintegrations),
        appintegrationsservice: cdktf.stringToTerraform(struct.appintegrationsservice),
        applicationautoscaling: cdktf.stringToTerraform(struct.applicationautoscaling),
        applicationcostprofiler: cdktf.stringToTerraform(struct.applicationcostprofiler),
        applicationdiscovery: cdktf.stringToTerraform(struct.applicationdiscovery),
        applicationdiscoveryservice: cdktf.stringToTerraform(struct.applicationdiscoveryservice),
        applicationinsights: cdktf.stringToTerraform(struct.applicationinsights),
        appmesh: cdktf.stringToTerraform(struct.appmesh),
        appregistry: cdktf.stringToTerraform(struct.appregistry),
        apprunner: cdktf.stringToTerraform(struct.apprunner),
        appstream: cdktf.stringToTerraform(struct.appstream),
        appsync: cdktf.stringToTerraform(struct.appsync),
        athena: cdktf.stringToTerraform(struct.athena),
        auditmanager: cdktf.stringToTerraform(struct.auditmanager),
        augmentedairuntime: cdktf.stringToTerraform(struct.augmentedairuntime),
        autoscaling: cdktf.stringToTerraform(struct.autoscaling),
        autoscalingplans: cdktf.stringToTerraform(struct.autoscalingplans),
        backup: cdktf.stringToTerraform(struct.backup),
        batch: cdktf.stringToTerraform(struct.batch),
        braket: cdktf.stringToTerraform(struct.braket),
        budgets: cdktf.stringToTerraform(struct.budgets),
        chime: cdktf.stringToTerraform(struct.chime),
        cloud9: cdktf.stringToTerraform(struct.cloud9),
        cloudcontrol: cdktf.stringToTerraform(struct.cloudcontrol),
        cloudcontrolapi: cdktf.stringToTerraform(struct.cloudcontrolapi),
        clouddirectory: cdktf.stringToTerraform(struct.clouddirectory),
        cloudformation: cdktf.stringToTerraform(struct.cloudformation),
        cloudfront: cdktf.stringToTerraform(struct.cloudfront),
        cloudhsm: cdktf.stringToTerraform(struct.cloudhsm),
        cloudhsmv2: cdktf.stringToTerraform(struct.cloudhsmv2),
        cloudsearch: cdktf.stringToTerraform(struct.cloudsearch),
        cloudsearchdomain: cdktf.stringToTerraform(struct.cloudsearchdomain),
        cloudtrail: cdktf.stringToTerraform(struct.cloudtrail),
        cloudwatch: cdktf.stringToTerraform(struct.cloudwatch),
        cloudwatchevents: cdktf.stringToTerraform(struct.cloudwatchevents),
        cloudwatchlogs: cdktf.stringToTerraform(struct.cloudwatchlogs),
        codeartifact: cdktf.stringToTerraform(struct.codeartifact),
        codebuild: cdktf.stringToTerraform(struct.codebuild),
        codecommit: cdktf.stringToTerraform(struct.codecommit),
        codedeploy: cdktf.stringToTerraform(struct.codedeploy),
        codeguruprofiler: cdktf.stringToTerraform(struct.codeguruprofiler),
        codegurureviewer: cdktf.stringToTerraform(struct.codegurureviewer),
        codepipeline: cdktf.stringToTerraform(struct.codepipeline),
        codestar: cdktf.stringToTerraform(struct.codestar),
        codestarconnections: cdktf.stringToTerraform(struct.codestarconnections),
        codestarnotifications: cdktf.stringToTerraform(struct.codestarnotifications),
        cognitoidentity: cdktf.stringToTerraform(struct.cognitoidentity),
        cognitoidentityprovider: cdktf.stringToTerraform(struct.cognitoidentityprovider),
        cognitoidp: cdktf.stringToTerraform(struct.cognitoidp),
        cognitosync: cdktf.stringToTerraform(struct.cognitosync),
        comprehend: cdktf.stringToTerraform(struct.comprehend),
        comprehendmedical: cdktf.stringToTerraform(struct.comprehendmedical),
        config: cdktf.stringToTerraform(struct.config),
        configservice: cdktf.stringToTerraform(struct.configservice),
        connect: cdktf.stringToTerraform(struct.connect),
        connectcontactlens: cdktf.stringToTerraform(struct.connectcontactlens),
        connectparticipant: cdktf.stringToTerraform(struct.connectparticipant),
        costandusagereportservice: cdktf.stringToTerraform(struct.costandusagereportservice),
        costexplorer: cdktf.stringToTerraform(struct.costexplorer),
        cur: cdktf.stringToTerraform(struct.cur),
        databasemigration: cdktf.stringToTerraform(struct.databasemigration),
        databasemigrationservice: cdktf.stringToTerraform(struct.databasemigrationservice),
        dataexchange: cdktf.stringToTerraform(struct.dataexchange),
        datapipeline: cdktf.stringToTerraform(struct.datapipeline),
        datasync: cdktf.stringToTerraform(struct.datasync),
        dax: cdktf.stringToTerraform(struct.dax),
        detective: cdktf.stringToTerraform(struct.detective),
        devicefarm: cdktf.stringToTerraform(struct.devicefarm),
        devopsguru: cdktf.stringToTerraform(struct.devopsguru),
        directconnect: cdktf.stringToTerraform(struct.directconnect),
        dlm: cdktf.stringToTerraform(struct.dlm),
        dms: cdktf.stringToTerraform(struct.dms),
        docdb: cdktf.stringToTerraform(struct.docdb),
        ds: cdktf.stringToTerraform(struct.ds),
        dynamodb: cdktf.stringToTerraform(struct.dynamodb),
        dynamodbstreams: cdktf.stringToTerraform(struct.dynamodbstreams),
        ec2: cdktf.stringToTerraform(struct.ec2),
        ec2instanceconnect: cdktf.stringToTerraform(struct.ec2Instanceconnect),
        ecr: cdktf.stringToTerraform(struct.ecr),
        ecrpublic: cdktf.stringToTerraform(struct.ecrpublic),
        ecs: cdktf.stringToTerraform(struct.ecs),
        efs: cdktf.stringToTerraform(struct.efs),
        eks: cdktf.stringToTerraform(struct.eks),
        elasticache: cdktf.stringToTerraform(struct.elasticache),
        elasticbeanstalk: cdktf.stringToTerraform(struct.elasticbeanstalk),
        elasticinference: cdktf.stringToTerraform(struct.elasticinference),
        elasticsearch: cdktf.stringToTerraform(struct.elasticsearch),
        elasticsearchservice: cdktf.stringToTerraform(struct.elasticsearchservice),
        elastictranscoder: cdktf.stringToTerraform(struct.elastictranscoder),
        elb: cdktf.stringToTerraform(struct.elb),
        elbv2: cdktf.stringToTerraform(struct.elbv2),
        emr: cdktf.stringToTerraform(struct.emr),
        emrcontainers: cdktf.stringToTerraform(struct.emrcontainers),
        es: cdktf.stringToTerraform(struct.es),
        eventbridge: cdktf.stringToTerraform(struct.eventbridge),
        events: cdktf.stringToTerraform(struct.events),
        finspace: cdktf.stringToTerraform(struct.finspace),
        finspacedata: cdktf.stringToTerraform(struct.finspacedata),
        firehose: cdktf.stringToTerraform(struct.firehose),
        fis: cdktf.stringToTerraform(struct.fis),
        fms: cdktf.stringToTerraform(struct.fms),
        forecast: cdktf.stringToTerraform(struct.forecast),
        forecastquery: cdktf.stringToTerraform(struct.forecastquery),
        forecastqueryservice: cdktf.stringToTerraform(struct.forecastqueryservice),
        forecastservice: cdktf.stringToTerraform(struct.forecastservice),
        frauddetector: cdktf.stringToTerraform(struct.frauddetector),
        fsx: cdktf.stringToTerraform(struct.fsx),
        gamelift: cdktf.stringToTerraform(struct.gamelift),
        glacier: cdktf.stringToTerraform(struct.glacier),
        globalaccelerator: cdktf.stringToTerraform(struct.globalaccelerator),
        glue: cdktf.stringToTerraform(struct.glue),
        gluedatabrew: cdktf.stringToTerraform(struct.gluedatabrew),
        grafana: cdktf.stringToTerraform(struct.grafana),
        greengrass: cdktf.stringToTerraform(struct.greengrass),
        greengrassv2: cdktf.stringToTerraform(struct.greengrassv2),
        groundstation: cdktf.stringToTerraform(struct.groundstation),
        guardduty: cdktf.stringToTerraform(struct.guardduty),
        health: cdktf.stringToTerraform(struct.health),
        healthlake: cdktf.stringToTerraform(struct.healthlake),
        honeycode: cdktf.stringToTerraform(struct.honeycode),
        iam: cdktf.stringToTerraform(struct.iam),
        identitystore: cdktf.stringToTerraform(struct.identitystore),
        imagebuilder: cdktf.stringToTerraform(struct.imagebuilder),
        inspector: cdktf.stringToTerraform(struct.inspector),
        iot: cdktf.stringToTerraform(struct.iot),
        iot1clickdevices: cdktf.stringToTerraform(struct.iot1Clickdevices),
        iot1clickdevicesservice: cdktf.stringToTerraform(struct.iot1Clickdevicesservice),
        iot1clickprojects: cdktf.stringToTerraform(struct.iot1Clickprojects),
        iotanalytics: cdktf.stringToTerraform(struct.iotanalytics),
        iotdataplane: cdktf.stringToTerraform(struct.iotdataplane),
        iotdeviceadvisor: cdktf.stringToTerraform(struct.iotdeviceadvisor),
        iotevents: cdktf.stringToTerraform(struct.iotevents),
        ioteventsdata: cdktf.stringToTerraform(struct.ioteventsdata),
        iotfleethub: cdktf.stringToTerraform(struct.iotfleethub),
        iotjobsdataplane: cdktf.stringToTerraform(struct.iotjobsdataplane),
        iotsecuretunneling: cdktf.stringToTerraform(struct.iotsecuretunneling),
        iotsitewise: cdktf.stringToTerraform(struct.iotsitewise),
        iotthingsgraph: cdktf.stringToTerraform(struct.iotthingsgraph),
        iotwireless: cdktf.stringToTerraform(struct.iotwireless),
        kafka: cdktf.stringToTerraform(struct.kafka),
        kafkaconnect: cdktf.stringToTerraform(struct.kafkaconnect),
        kendra: cdktf.stringToTerraform(struct.kendra),
        kinesis: cdktf.stringToTerraform(struct.kinesis),
        kinesisanalytics: cdktf.stringToTerraform(struct.kinesisanalytics),
        kinesisanalyticsv2: cdktf.stringToTerraform(struct.kinesisanalyticsv2),
        kinesisvideo: cdktf.stringToTerraform(struct.kinesisvideo),
        kinesisvideoarchivedmedia: cdktf.stringToTerraform(struct.kinesisvideoarchivedmedia),
        kinesisvideomedia: cdktf.stringToTerraform(struct.kinesisvideomedia),
        kinesisvideosignalingchannels: cdktf.stringToTerraform(struct.kinesisvideosignalingchannels),
        kms: cdktf.stringToTerraform(struct.kms),
        lakeformation: cdktf.stringToTerraform(struct.lakeformation),
        lambda: cdktf.stringToTerraform(struct.lambda),
        lexmodelbuilding: cdktf.stringToTerraform(struct.lexmodelbuilding),
        lexmodelbuildingservice: cdktf.stringToTerraform(struct.lexmodelbuildingservice),
        lexmodels: cdktf.stringToTerraform(struct.lexmodels),
        lexmodelsv2: cdktf.stringToTerraform(struct.lexmodelsv2),
        lexruntime: cdktf.stringToTerraform(struct.lexruntime),
        lexruntimeservice: cdktf.stringToTerraform(struct.lexruntimeservice),
        lexruntimev2: cdktf.stringToTerraform(struct.lexruntimev2),
        licensemanager: cdktf.stringToTerraform(struct.licensemanager),
        lightsail: cdktf.stringToTerraform(struct.lightsail),
        location: cdktf.stringToTerraform(struct.location),
        lookoutequipment: cdktf.stringToTerraform(struct.lookoutequipment),
        lookoutforvision: cdktf.stringToTerraform(struct.lookoutforvision),
        lookoutmetrics: cdktf.stringToTerraform(struct.lookoutmetrics),
        machinelearning: cdktf.stringToTerraform(struct.machinelearning),
        macie: cdktf.stringToTerraform(struct.macie),
        macie2: cdktf.stringToTerraform(struct.macie2),
        managedblockchain: cdktf.stringToTerraform(struct.managedblockchain),
        managedgrafana: cdktf.stringToTerraform(struct.managedgrafana),
        marketplacecatalog: cdktf.stringToTerraform(struct.marketplacecatalog),
        marketplacecommerceanalytics: cdktf.stringToTerraform(struct.marketplacecommerceanalytics),
        marketplaceentitlement: cdktf.stringToTerraform(struct.marketplaceentitlement),
        marketplaceentitlementservice: cdktf.stringToTerraform(struct.marketplaceentitlementservice),
        marketplacemetering: cdktf.stringToTerraform(struct.marketplacemetering),
        mediaconnect: cdktf.stringToTerraform(struct.mediaconnect),
        mediaconvert: cdktf.stringToTerraform(struct.mediaconvert),
        medialive: cdktf.stringToTerraform(struct.medialive),
        mediapackage: cdktf.stringToTerraform(struct.mediapackage),
        mediapackagevod: cdktf.stringToTerraform(struct.mediapackagevod),
        mediastore: cdktf.stringToTerraform(struct.mediastore),
        mediastoredata: cdktf.stringToTerraform(struct.mediastoredata),
        mediatailor: cdktf.stringToTerraform(struct.mediatailor),
        memorydb: cdktf.stringToTerraform(struct.memorydb),
        mgn: cdktf.stringToTerraform(struct.mgn),
        migrationhub: cdktf.stringToTerraform(struct.migrationhub),
        migrationhubconfig: cdktf.stringToTerraform(struct.migrationhubconfig),
        mobile: cdktf.stringToTerraform(struct.mobile),
        mobileanalytics: cdktf.stringToTerraform(struct.mobileanalytics),
        mq: cdktf.stringToTerraform(struct.mq),
        mturk: cdktf.stringToTerraform(struct.mturk),
        mwaa: cdktf.stringToTerraform(struct.mwaa),
        neptune: cdktf.stringToTerraform(struct.neptune),
        networkfirewall: cdktf.stringToTerraform(struct.networkfirewall),
        networkmanager: cdktf.stringToTerraform(struct.networkmanager),
        nimblestudio: cdktf.stringToTerraform(struct.nimblestudio),
        opsworks: cdktf.stringToTerraform(struct.opsworks),
        opsworkscm: cdktf.stringToTerraform(struct.opsworkscm),
        organizations: cdktf.stringToTerraform(struct.organizations),
        outposts: cdktf.stringToTerraform(struct.outposts),
        personalize: cdktf.stringToTerraform(struct.personalize),
        personalizeevents: cdktf.stringToTerraform(struct.personalizeevents),
        personalizeruntime: cdktf.stringToTerraform(struct.personalizeruntime),
        pi: cdktf.stringToTerraform(struct.pi),
        pinpoint: cdktf.stringToTerraform(struct.pinpoint),
        pinpointemail: cdktf.stringToTerraform(struct.pinpointemail),
        pinpointsmsvoice: cdktf.stringToTerraform(struct.pinpointsmsvoice),
        polly: cdktf.stringToTerraform(struct.polly),
        pricing: cdktf.stringToTerraform(struct.pricing),
        prometheus: cdktf.stringToTerraform(struct.prometheus),
        prometheusservice: cdktf.stringToTerraform(struct.prometheusservice),
        proton: cdktf.stringToTerraform(struct.proton),
        qldb: cdktf.stringToTerraform(struct.qldb),
        qldbsession: cdktf.stringToTerraform(struct.qldbsession),
        quicksight: cdktf.stringToTerraform(struct.quicksight),
        ram: cdktf.stringToTerraform(struct.ram),
        rds: cdktf.stringToTerraform(struct.rds),
        rdsdata: cdktf.stringToTerraform(struct.rdsdata),
        rdsdataservice: cdktf.stringToTerraform(struct.rdsdataservice),
        redshift: cdktf.stringToTerraform(struct.redshift),
        redshiftdata: cdktf.stringToTerraform(struct.redshiftdata),
        rekognition: cdktf.stringToTerraform(struct.rekognition),
        resourcegroups: cdktf.stringToTerraform(struct.resourcegroups),
        resourcegroupstagging: cdktf.stringToTerraform(struct.resourcegroupstagging),
        resourcegroupstaggingapi: cdktf.stringToTerraform(struct.resourcegroupstaggingapi),
        robomaker: cdktf.stringToTerraform(struct.robomaker),
        route53: cdktf.stringToTerraform(struct.route53),
        route53domains: cdktf.stringToTerraform(struct.route53Domains),
        route53recoverycontrolconfig: cdktf.stringToTerraform(struct.route53Recoverycontrolconfig),
        route53recoveryreadiness: cdktf.stringToTerraform(struct.route53Recoveryreadiness),
        route53resolver: cdktf.stringToTerraform(struct.route53Resolver),
        s3: cdktf.stringToTerraform(struct.s3),
        s3control: cdktf.stringToTerraform(struct.s3Control),
        s3outposts: cdktf.stringToTerraform(struct.s3Outposts),
        sagemaker: cdktf.stringToTerraform(struct.sagemaker),
        sagemakeredgemanager: cdktf.stringToTerraform(struct.sagemakeredgemanager),
        sagemakerfeaturestoreruntime: cdktf.stringToTerraform(struct.sagemakerfeaturestoreruntime),
        sagemakerruntime: cdktf.stringToTerraform(struct.sagemakerruntime),
        savingsplans: cdktf.stringToTerraform(struct.savingsplans),
        schemas: cdktf.stringToTerraform(struct.schemas),
        sdb: cdktf.stringToTerraform(struct.sdb),
        secretsmanager: cdktf.stringToTerraform(struct.secretsmanager),
        securityhub: cdktf.stringToTerraform(struct.securityhub),
        serverlessapplicationrepository: cdktf.stringToTerraform(struct.serverlessapplicationrepository),
        serverlessapprepo: cdktf.stringToTerraform(struct.serverlessapprepo),
        serverlessrepo: cdktf.stringToTerraform(struct.serverlessrepo),
        servicecatalog: cdktf.stringToTerraform(struct.servicecatalog),
        servicediscovery: cdktf.stringToTerraform(struct.servicediscovery),
        servicequotas: cdktf.stringToTerraform(struct.servicequotas),
        ses: cdktf.stringToTerraform(struct.ses),
        sesv2: cdktf.stringToTerraform(struct.sesv2),
        sfn: cdktf.stringToTerraform(struct.sfn),
        shield: cdktf.stringToTerraform(struct.shield),
        signer: cdktf.stringToTerraform(struct.signer),
        simpledb: cdktf.stringToTerraform(struct.simpledb),
        sms: cdktf.stringToTerraform(struct.sms),
        snowball: cdktf.stringToTerraform(struct.snowball),
        sns: cdktf.stringToTerraform(struct.sns),
        sqs: cdktf.stringToTerraform(struct.sqs),
        ssm: cdktf.stringToTerraform(struct.ssm),
        ssmcontacts: cdktf.stringToTerraform(struct.ssmcontacts),
        ssmincidents: cdktf.stringToTerraform(struct.ssmincidents),
        sso: cdktf.stringToTerraform(struct.sso),
        ssoadmin: cdktf.stringToTerraform(struct.ssoadmin),
        ssooidc: cdktf.stringToTerraform(struct.ssooidc),
        stepfunctions: cdktf.stringToTerraform(struct.stepfunctions),
        storagegateway: cdktf.stringToTerraform(struct.storagegateway),
        sts: cdktf.stringToTerraform(struct.sts),
        support: cdktf.stringToTerraform(struct.support),
        swf: cdktf.stringToTerraform(struct.swf),
        synthetics: cdktf.stringToTerraform(struct.synthetics),
        textract: cdktf.stringToTerraform(struct.textract),
        timestreamquery: cdktf.stringToTerraform(struct.timestreamquery),
        timestreamwrite: cdktf.stringToTerraform(struct.timestreamwrite),
        transcribe: cdktf.stringToTerraform(struct.transcribe),
        transcribeservice: cdktf.stringToTerraform(struct.transcribeservice),
        transcribestreaming: cdktf.stringToTerraform(struct.transcribestreaming),
        transcribestreamingservice: cdktf.stringToTerraform(struct.transcribestreamingservice),
        transfer: cdktf.stringToTerraform(struct.transfer),
        translate: cdktf.stringToTerraform(struct.translate),
        waf: cdktf.stringToTerraform(struct.waf),
        wafregional: cdktf.stringToTerraform(struct.wafregional),
        wafv2: cdktf.stringToTerraform(struct.wafv2),
        wellarchitected: cdktf.stringToTerraform(struct.wellarchitected),
        workdocs: cdktf.stringToTerraform(struct.workdocs),
        worklink: cdktf.stringToTerraform(struct.worklink),
        workmail: cdktf.stringToTerraform(struct.workmail),
        workmailmessageflow: cdktf.stringToTerraform(struct.workmailmessageflow),
        workspaces: cdktf.stringToTerraform(struct.workspaces),
        xray: cdktf.stringToTerraform(struct.xray),
    };
}
export function awsProviderIgnoreTagsToTerraform(struct) {
    if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) {
        return struct;
    }
    if (cdktf.isComplexElement(struct)) {
        throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration");
    }
    return {
        key_prefixes: cdktf.listMapper(cdktf.stringToTerraform)(struct.keyPrefixes),
        keys: cdktf.listMapper(cdktf.stringToTerraform)(struct.keys),
    };
}
/**
* Represents a {@link https://www.terraform.io/docs/providers/aws aws}
*/
export class AwsProvider extends cdktf.TerraformProvider {
    // =================
    // STATIC PROPERTIES
    // =================
    static tfResourceType = "aws";
    // ===========
    // INITIALIZER
    // ===========
    /**
    * Create a new {@link https://www.terraform.io/docs/providers/aws aws} Resource
    *
    * @param scope The scope in which to define this construct
    * @param id The scoped construct ID. Must be unique amongst siblings in the same scope
    * @param options AwsProviderConfig
    */
    constructor(scope, id, config) {
        super(scope, id, {
            terraformResourceType: 'aws',
            terraformGeneratorMetadata: {
                providerName: 'aws',
                providerVersionConstraint: '~>4.2.0'
            },
            terraformProviderSource: 'aws'
        });
        this._accessKey = config.accessKey;
        this._allowedAccountIds = config.allowedAccountIds;
        this._customCaBundle = config.customCaBundle;
        this._ec2MetadataServiceEndpoint = config.ec2MetadataServiceEndpoint;
        this._ec2MetadataServiceEndpointMode = config.ec2MetadataServiceEndpointMode;
        this._forbiddenAccountIds = config.forbiddenAccountIds;
        this._httpProxy = config.httpProxy;
        this._insecure = config.insecure;
        this._maxRetries = config.maxRetries;
        this._profile = config.profile;
        this._region = config.region;
        this._s3ForcePathStyle = config.s3ForcePathStyle;
        this._s3UsePathStyle = config.s3UsePathStyle;
        this._secretKey = config.secretKey;
        this._sharedConfigFiles = config.sharedConfigFiles;
        this._sharedCredentialsFile = config.sharedCredentialsFile;
        this._sharedCredentialsFiles = config.sharedCredentialsFiles;
        this._skipCredentialsValidation = config.skipCredentialsValidation;
        this._skipGetEc2Platforms = config.skipGetEc2Platforms;
        this._skipMetadataApiCheck = config.skipMetadataApiCheck;
        this._skipRegionValidation = config.skipRegionValidation;
        this._skipRequestingAccountId = config.skipRequestingAccountId;
        this._stsRegion = config.stsRegion;
        this._token = config.token;
        this._useDualstackEndpoint = config.useDualstackEndpoint;
        this._useFipsEndpoint = config.useFipsEndpoint;
        this._alias = config.alias;
        this._assumeRole = config.assumeRole;
        this._defaultTags = config.defaultTags;
        this._endpoints = config.endpoints;
        this._ignoreTags = config.ignoreTags;
    }
    // ==========
    // ATTRIBUTES
    // ==========
    // access_key - computed: false, optional: true, required: false
    _accessKey;
    get accessKey() {
        return this._accessKey;
    }
    set accessKey(value) {
        this._accessKey = value;
    }
    resetAccessKey() {
        this._accessKey = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get accessKeyInput() {
        return this._accessKey;
    }
    // allowed_account_ids - computed: false, optional: true, required: false
    _allowedAccountIds;
    get allowedAccountIds() {
        return this._allowedAccountIds;
    }
    set allowedAccountIds(value) {
        this._allowedAccountIds = value;
    }
    resetAllowedAccountIds() {
        this._allowedAccountIds = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get allowedAccountIdsInput() {
        return this._allowedAccountIds;
    }
    // custom_ca_bundle - computed: false, optional: true, required: false
    _customCaBundle;
    get customCaBundle() {
        return this._customCaBundle;
    }
    set customCaBundle(value) {
        this._customCaBundle = value;
    }
    resetCustomCaBundle() {
        this._customCaBundle = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get customCaBundleInput() {
        return this._customCaBundle;
    }
    // ec2_metadata_service_endpoint - computed: false, optional: true, required: false
    _ec2MetadataServiceEndpoint;
    get ec2MetadataServiceEndpoint() {
        return this._ec2MetadataServiceEndpoint;
    }
    set ec2MetadataServiceEndpoint(value) {
        this._ec2MetadataServiceEndpoint = value;
    }
    resetEc2MetadataServiceEndpoint() {
        this._ec2MetadataServiceEndpoint = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get ec2MetadataServiceEndpointInput() {
        return this._ec2MetadataServiceEndpoint;
    }
    // ec2_metadata_service_endpoint_mode - computed: false, optional: true, required: false
    _ec2MetadataServiceEndpointMode;
    get ec2MetadataServiceEndpointMode() {
        return this._ec2MetadataServiceEndpointMode;
    }
    set ec2MetadataServiceEndpointMode(value) {
        this._ec2MetadataServiceEndpointMode = value;
    }
    resetEc2MetadataServiceEndpointMode() {
        this._ec2MetadataServiceEndpointMode = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get ec2MetadataServiceEndpointModeInput() {
        return this._ec2MetadataServiceEndpointMode;
    }
    // forbidden_account_ids - computed: false, optional: true, required: false
    _forbiddenAccountIds;
    get forbiddenAccountIds() {
        return this._forbiddenAccountIds;
    }
    set forbiddenAccountIds(value) {
        this._forbiddenAccountIds = value;
    }
    resetForbiddenAccountIds() {
        this._forbiddenAccountIds = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get forbiddenAccountIdsInput() {
        return this._forbiddenAccountIds;
    }
    // http_proxy - computed: false, optional: true, required: false
    _httpProxy;
    get httpProxy() {
        return this._httpProxy;
    }
    set httpProxy(value) {
        this._httpProxy = value;
    }
    resetHttpProxy() {
        this._httpProxy = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get httpProxyInput() {
        return this._httpProxy;
    }
    // insecure - computed: false, optional: true, required: false
    _insecure;
    get insecure() {
        return this._insecure;
    }
    set insecure(value) {
        this._insecure = value;
    }
    resetInsecure() {
        this._insecure = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get insecureInput() {
        return this._insecure;
    }
    // max_retries - computed: false, optional: true, required: false
    _maxRetries;
    get maxRetries() {
        return this._maxRetries;
    }
    set maxRetries(value) {
        this._maxRetries = value;
    }
    resetMaxRetries() {
        this._maxRetries = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get maxRetriesInput() {
        return this._maxRetries;
    }
    // profile - computed: false, optional: true, required: false
    _profile;
    get profile() {
        return this._profile;
    }
    set profile(value) {
        this._profile = value;
    }
    resetProfile() {
        this._profile = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get profileInput() {
        return this._profile;
    }
    // region - computed: false, optional: false, required: true
    _region;
    get region() {
        return this._region;
    }
    set region(value) {
        this._region = value;
    }
    // Temporarily expose input value. Use with caution.
    get regionInput() {
        return this._region;
    }
    // s3_force_path_style - computed: false, optional: true, required: false
    _s3ForcePathStyle;
    get s3ForcePathStyle() {
        return this._s3ForcePathStyle;
    }
    set s3ForcePathStyle(value) {
        this._s3ForcePathStyle = value;
    }
    resetS3ForcePathStyle() {
        this._s3ForcePathStyle = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get s3ForcePathStyleInput() {
        return this._s3ForcePathStyle;
    }
    // s3_use_path_style - computed: false, optional: true, required: false
    _s3UsePathStyle;
    get s3UsePathStyle() {
        return this._s3UsePathStyle;
    }
    set s3UsePathStyle(value) {
        this._s3UsePathStyle = value;
    }
    resetS3UsePathStyle() {
        this._s3UsePathStyle = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get s3UsePathStyleInput() {
        return this._s3UsePathStyle;
    }
    // secret_key - computed: false, optional: true, required: false
    _secretKey;
    get secretKey() {
        return this._secretKey;
    }
    set secretKey(value) {
        this._secretKey = value;
    }
    resetSecretKey() {
        this._secretKey = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get secretKeyInput() {
        return this._secretKey;
    }
    // shared_config_files - computed: false, optional: true, required: false
    _sharedConfigFiles;
    get sharedConfigFiles() {
        return this._sharedConfigFiles;
    }
    set sharedConfigFiles(value) {
        this._sharedConfigFiles = value;
    }
    resetSharedConfigFiles() {
        this._sharedConfigFiles = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get sharedConfigFilesInput() {
        return this._sharedConfigFiles;
    }
    // shared_credentials_file - computed: false, optional: true, required: false
    _sharedCredentialsFile;
    get sharedCredentialsFile() {
        return this._sharedCredentialsFile;
    }
    set sharedCredentialsFile(value) {
        this._sharedCredentialsFile = value;
    }
    resetSharedCredentialsFile() {
        this._sharedCredentialsFile = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get sharedCredentialsFileInput() {
        return this._sharedCredentialsFile;
    }
    // shared_credentials_files - computed: false, optional: true, required: false
    _sharedCredentialsFiles;
    get sharedCredentialsFiles() {
        return this._sharedCredentialsFiles;
    }
    set sharedCredentialsFiles(value) {
        this._sharedCredentialsFiles = value;
    }
    resetSharedCredentialsFiles() {
        this._sharedCredentialsFiles = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get sharedCredentialsFilesInput() {
        return this._sharedCredentialsFiles;
    }
    // skip_credentials_validation - computed: false, optional: true, required: false
    _skipCredentialsValidation;
    get skipCredentialsValidation() {
        return this._skipCredentialsValidation;
    }
    set skipCredentialsValidation(value) {
        this._skipCredentialsValidation = value;
    }
    resetSkipCredentialsValidation() {
        this._skipCredentialsValidation = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get skipCredentialsValidationInput() {
        return this._skipCredentialsValidation;
    }
    // skip_get_ec2_platforms - computed: false, optional: true, required: false
    _skipGetEc2Platforms;
    get skipGetEc2Platforms() {
        return this._skipGetEc2Platforms;
    }
    set skipGetEc2Platforms(value) {
        this._skipGetEc2Platforms = value;
    }
    resetSkipGetEc2Platforms() {
        this._skipGetEc2Platforms = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get skipGetEc2PlatformsInput() {
        return this._skipGetEc2Platforms;
    }
    // skip_metadata_api_check - computed: false, optional: true, required: false
    _skipMetadataApiCheck;
    get skipMetadataApiCheck() {
        return this._skipMetadataApiCheck;
    }
    set skipMetadataApiCheck(value) {
        this._skipMetadataApiCheck = value;
    }
    resetSkipMetadataApiCheck() {
        this._skipMetadataApiCheck = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get skipMetadataApiCheckInput() {
        return this._skipMetadataApiCheck;
    }
    // skip_region_validation - computed: false, optional: true, required: false
    _skipRegionValidation;
    get skipRegionValidation() {
        return this._skipRegionValidation;
    }
    set skipRegionValidation(value) {
        this._skipRegionValidation = value;
    }
    resetSkipRegionValidation() {
        this._skipRegionValidation = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get skipRegionValidationInput() {
        return this._skipRegionValidation;
    }
    // skip_requesting_account_id - computed: false, optional: true, required: false
    _skipRequestingAccountId;
    get skipRequestingAccountId() {
        return this._skipRequestingAccountId;
    }
    set skipRequestingAccountId(value) {
        this._skipRequestingAccountId = value;
    }
    resetSkipRequestingAccountId() {
        this._skipRequestingAccountId = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get skipRequestingAccountIdInput() {
        return this._skipRequestingAccountId;
    }
    // sts_region - computed: false, optional: true, required: false
    _stsRegion;
    get stsRegion() {
        return this._stsRegion;
    }
    set stsRegion(value) {
        this._stsRegion = value;
    }
    resetStsRegion() {
        this._stsRegion = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get stsRegionInput() {
        return this._stsRegion;
    }
    // token - computed: false, optional: true, required: false
    _token;
    get token() {
        return this._token;
    }
    set token(value) {
        this._token = value;
    }
    resetToken() {
        this._token = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get tokenInput() {
        return this._token;
    }
    // use_dualstack_endpoint - computed: false, optional: true, required: false
    _useDualstackEndpoint;
    get useDualstackEndpoint() {
        return this._useDualstackEndpoint;
    }
    set useDualstackEndpoint(value) {
        this._useDualstackEndpoint = value;
    }
    resetUseDualstackEndpoint() {
        this._useDualstackEndpoint = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get useDualstackEndpointInput() {
        return this._useDualstackEndpoint;
    }
    // use_fips_endpoint - computed: false, optional: true, required: false
    _useFipsEndpoint;
    get useFipsEndpoint() {
        return this._useFipsEndpoint;
    }
    set useFipsEndpoint(value) {
        this._useFipsEndpoint = value;
    }
    resetUseFipsEndpoint() {
        this._useFipsEndpoint = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get useFipsEndpointInput() {
        return this._useFipsEndpoint;
    }
    // alias - computed: false, optional: true, required: false
    _alias;
    get alias() {
        return this._alias;
    }
    set alias(value) {
        this._alias = value;
    }
    resetAlias() {
        this._alias = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get aliasInput() {
        return this._alias;
    }
    // assume_role - computed: false, optional: true, required: false
    _assumeRole;
    get assumeRole() {
        return this._assumeRole;
    }
    set assumeRole(value) {
        this._assumeRole = value;
    }
    resetAssumeRole() {
        this._assumeRole = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get assumeRoleInput() {
        return this._assumeRole;
    }
    // default_tags - computed: false, optional: true, required: false
    _defaultTags;
    get defaultTags() {
        return this._defaultTags;
    }
    set defaultTags(value) {
        this._defaultTags = value;
    }
    resetDefaultTags() {
        this._defaultTags = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get defaultTagsInput() {
        return this._defaultTags;
    }
    // endpoints - computed: false, optional: true, required: false
    _endpoints;
    get endpoints() {
        return this._endpoints;
    }
    set endpoints(value) {
        this._endpoints = value;
    }
    resetEndpoints() {
        this._endpoints = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get endpointsInput() {
        return this._endpoints;
    }
    // ignore_tags - computed: false, optional: true, required: false
    _ignoreTags;
    get ignoreTags() {
        return this._ignoreTags;
    }
    set ignoreTags(value) {
        this._ignoreTags = value;
    }
    resetIgnoreTags() {
        this._ignoreTags = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get ignoreTagsInput() {
        return this._ignoreTags;
    }
    // =========
    // SYNTHESIS
    // =========
    synthesizeAttributes() {
        return {
            access_key: cdktf.stringToTerraform(this._accessKey),
            allowed_account_ids: cdktf.listMapper(cdktf.stringToTerraform)(this._allowedAccountIds),
            custom_ca_bundle: cdktf.stringToTerraform(this._customCaBundle),
            ec2_metadata_service_endpoint: cdktf.stringToTerraform(this._ec2MetadataServiceEndpoint),
            ec2_metadata_service_endpoint_mode: cdktf.stringToTerraform(this._ec2MetadataServiceEndpointMode),
            forbidden_account_ids: cdktf.listMapper(cdktf.stringToTerraform)(this._forbiddenAccountIds),
            http_proxy: cdktf.stringToTerraform(this._httpProxy),
            insecure: cdktf.booleanToTerraform(this._insecure),
            max_retries: cdktf.numberToTerraform(this._maxRetries),
            profile: cdktf.stringToTerraform(this._profile),
            region: cdktf.stringToTerraform(this._region),
            s3_force_path_style: cdktf.booleanToTerraform(this._s3ForcePathStyle),
            s3_use_path_style: cdktf.booleanToTerraform(this._s3UsePathStyle),
            secret_key: cdktf.stringToTerraform(this._secretKey),
            shared_config_files: cdktf.listMapper(cdktf.stringToTerraform)(this._sharedConfigFiles),
            shared_credentials_file: cdktf.stringToTerraform(this._sharedCredentialsFile),
            shared_credentials_files: cdktf.listMapper(cdktf.stringToTerraform)(this._sharedCredentialsFiles),
            skip_credentials_validation: cdktf.booleanToTerraform(this._skipCredentialsValidation),
            skip_get_ec2_platforms: cdktf.booleanToTerraform(this._skipGetEc2Platforms),
            skip_metadata_api_check: cdktf.booleanToTerraform(this._skipMetadataApiCheck),
            skip_region_validation: cdktf.booleanToTerraform(this._skipRegionValidation),
            skip_requesting_account_id: cdktf.booleanToTerraform(this._skipRequestingAccountId),
            sts_region: cdktf.stringToTerraform(this._stsRegion),
            token: cdktf.stringToTerraform(this._token),
            use_dualstack_endpoint: cdktf.booleanToTerraform(this._useDualstackEndpoint),
            use_fips_endpoint: cdktf.booleanToTerraform(this._useFipsEndpoint),
            alias: cdktf.stringToTerraform(this._alias),
            assume_role: awsProviderAssumeRoleToTerraform(this._assumeRole),
            default_tags: awsProviderDefaultTagsToTerraform(this._defaultTags),
            endpoints: cdktf.listMapper(awsProviderEndpointsToTerraform)(this._endpoints),
            ignore_tags: awsProviderIgnoreTagsToTerraform(this._ignoreTags),
        };
    }
}
//# sourceMappingURL=aws-provider.js.map