r'''
# `aws_arcregionswitch_plan`

Refer to the Terraform Registry for docs: [`aws_arcregionswitch_plan`](https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan).
'''
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)

import abc
import builtins
import datetime
import enum
import typing

import jsii
import publication
import typing_extensions

import typeguard
from importlib.metadata import version as _metadata_package_version
TYPEGUARD_MAJOR_VERSION = int(_metadata_package_version('typeguard').split('.')[0])

def check_type(argname: str, value: object, expected_type: typing.Any) -> typing.Any:
    if TYPEGUARD_MAJOR_VERSION <= 2:
        return typeguard.check_type(argname=argname, value=value, expected_type=expected_type) # type:ignore
    else:
        if isinstance(value, jsii._reference_map.InterfaceDynamicProxy): # pyright: ignore [reportAttributeAccessIssue]
           pass
        else:
            if TYPEGUARD_MAJOR_VERSION == 3:
                typeguard.config.collection_check_strategy = typeguard.CollectionCheckStrategy.ALL_ITEMS # type:ignore
                typeguard.check_type(value=value, expected_type=expected_type) # type:ignore
            else:
                typeguard.check_type(value=value, expected_type=expected_type, collection_check_strategy=typeguard.CollectionCheckStrategy.ALL_ITEMS) # type:ignore

from .._jsii import *

import cdktn as _cdktn_78ede62e
import constructs as _constructs_77d1e7e8


class ArcregionswitchPlan(
    _cdktn_78ede62e.TerraformResource,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlan",
):
    '''Represents a {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan aws_arcregionswitch_plan}.'''

    def __init__(
        self,
        scope: "_constructs_77d1e7e8.Construct",
        id: builtins.str,
        *,
        execution_role: builtins.str,
        name: builtins.str,
        recovery_approach: builtins.str,
        regions: typing.Sequence[builtins.str],
        associated_alarms: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanAssociatedAlarms", typing.Dict[builtins.str, typing.Any]]]]] = None,
        description: typing.Optional[builtins.str] = None,
        primary_region: typing.Optional[builtins.str] = None,
        recovery_time_objective_minutes: typing.Optional[jsii.Number] = None,
        region: typing.Optional[builtins.str] = None,
        tags: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
        timeouts: typing.Optional[typing.Union["ArcregionswitchPlanTimeouts", typing.Dict[builtins.str, typing.Any]]] = None,
        triggers: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanTriggers", typing.Dict[builtins.str, typing.Any]]]]] = None,
        workflow: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflow", typing.Dict[builtins.str, typing.Any]]]]] = None,
        connection: typing.Optional[typing.Union[typing.Union["_cdktn_78ede62e.SSHProvisionerConnection", typing.Dict[builtins.str, typing.Any]], typing.Union["_cdktn_78ede62e.WinrmProvisionerConnection", typing.Dict[builtins.str, typing.Any]]]] = None,
        count: typing.Optional[typing.Union[jsii.Number, "_cdktn_78ede62e.TerraformCount"]] = None,
        depends_on: typing.Optional[typing.Sequence["_cdktn_78ede62e.ITerraformDependable"]] = None,
        for_each: typing.Optional["_cdktn_78ede62e.ITerraformIterator"] = None,
        lifecycle: typing.Optional[typing.Union["_cdktn_78ede62e.TerraformResourceLifecycle", typing.Dict[builtins.str, typing.Any]]] = None,
        provider: typing.Optional["_cdktn_78ede62e.TerraformProvider"] = None,
        provisioners: typing.Optional[typing.Sequence[typing.Union[typing.Union["_cdktn_78ede62e.FileProvisioner", typing.Dict[builtins.str, typing.Any]], typing.Union["_cdktn_78ede62e.LocalExecProvisioner", typing.Dict[builtins.str, typing.Any]], typing.Union["_cdktn_78ede62e.RemoteExecProvisioner", typing.Dict[builtins.str, typing.Any]]]]] = None,
    ) -> None:
        '''Create a new {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan aws_arcregionswitch_plan} 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 execution_role: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#execution_role ArcregionswitchPlan#execution_role}.
        :param name: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#name ArcregionswitchPlan#name}.
        :param recovery_approach: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#recovery_approach ArcregionswitchPlan#recovery_approach}.
        :param regions: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#regions ArcregionswitchPlan#regions}.
        :param associated_alarms: associated_alarms block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#associated_alarms ArcregionswitchPlan#associated_alarms}
        :param description: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#description ArcregionswitchPlan#description}.
        :param primary_region: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#primary_region ArcregionswitchPlan#primary_region}.
        :param recovery_time_objective_minutes: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#recovery_time_objective_minutes ArcregionswitchPlan#recovery_time_objective_minutes}.
        :param region: Region where this resource will be `managed <https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints>`_. Defaults to the Region set in the `provider configuration <https://registry.terraform.io/providers/hashicorp/aws/latest/docs#aws-configuration-reference>`_. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#region ArcregionswitchPlan#region}
        :param tags: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#tags ArcregionswitchPlan#tags}.
        :param timeouts: timeouts block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#timeouts ArcregionswitchPlan#timeouts}
        :param triggers: triggers block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#triggers ArcregionswitchPlan#triggers}
        :param workflow: workflow block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#workflow ArcregionswitchPlan#workflow}
        :param connection: 
        :param count: 
        :param depends_on: 
        :param for_each: 
        :param lifecycle: 
        :param provider: 
        :param provisioners: 
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__f75008daa5119940a791b8dfc2fd639f1c15aa7cffd7d0d3539a117531f88824)
            check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
            check_type(argname="argument id", value=id, expected_type=type_hints["id"])
        config = ArcregionswitchPlanConfig(
            execution_role=execution_role,
            name=name,
            recovery_approach=recovery_approach,
            regions=regions,
            associated_alarms=associated_alarms,
            description=description,
            primary_region=primary_region,
            recovery_time_objective_minutes=recovery_time_objective_minutes,
            region=region,
            tags=tags,
            timeouts=timeouts,
            triggers=triggers,
            workflow=workflow,
            connection=connection,
            count=count,
            depends_on=depends_on,
            for_each=for_each,
            lifecycle=lifecycle,
            provider=provider,
            provisioners=provisioners,
        )

        jsii.create(self.__class__, self, [scope, id, config])

    @jsii.member(jsii_name="generateConfigForImport")
    @builtins.classmethod
    def generate_config_for_import(
        cls,
        scope: "_constructs_77d1e7e8.Construct",
        import_to_id: builtins.str,
        import_from_id: builtins.str,
        provider: typing.Optional["_cdktn_78ede62e.TerraformProvider"] = None,
    ) -> "_cdktn_78ede62e.ImportableResource":
        '''Generates CDKTN code for importing a ArcregionswitchPlan resource upon running "cdktn plan ".

        :param scope: The scope in which to define this construct.
        :param import_to_id: The construct id used in the generated config for the ArcregionswitchPlan to import.
        :param import_from_id: The id of the existing ArcregionswitchPlan that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#import import section} in the documentation of this resource for the id to use
        :param provider: ? Optional instance of the provider where the ArcregionswitchPlan to import is found.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__d7c30189b362d640a015dea75ecb94577ba96781ce15c856e3fbfac46211bacd)
            check_type(argname="argument scope", value=scope, expected_type=type_hints["scope"])
            check_type(argname="argument import_to_id", value=import_to_id, expected_type=type_hints["import_to_id"])
            check_type(argname="argument import_from_id", value=import_from_id, expected_type=type_hints["import_from_id"])
            check_type(argname="argument provider", value=provider, expected_type=type_hints["provider"])
        return typing.cast("_cdktn_78ede62e.ImportableResource", jsii.sinvoke(cls, "generateConfigForImport", [scope, import_to_id, import_from_id, provider]))

    @jsii.member(jsii_name="putAssociatedAlarms")
    def put_associated_alarms(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanAssociatedAlarms", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__ce1bc58d06bf3c5bc74e6004c6c26dae73944b7cfb09edecb7b8a636bcb6732a)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putAssociatedAlarms", [value]))

    @jsii.member(jsii_name="putTimeouts")
    def put_timeouts(
        self,
        *,
        create: typing.Optional[builtins.str] = None,
        delete: typing.Optional[builtins.str] = None,
        update: typing.Optional[builtins.str] = None,
    ) -> None:
        '''
        :param create: A string that can be `parsed as a duration <https://pkg.go.dev/time#ParseDuration>`_ consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#create ArcregionswitchPlan#create}
        :param delete: A string that can be `parsed as a duration <https://pkg.go.dev/time#ParseDuration>`_ consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#delete ArcregionswitchPlan#delete}
        :param update: A string that can be `parsed as a duration <https://pkg.go.dev/time#ParseDuration>`_ consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#update ArcregionswitchPlan#update}
        '''
        value = ArcregionswitchPlanTimeouts(
            create=create, delete=delete, update=update
        )

        return typing.cast(None, jsii.invoke(self, "putTimeouts", [value]))

    @jsii.member(jsii_name="putTriggers")
    def put_triggers(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanTriggers", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__eb7a97328f552081e3c87140f14958598544e29aca8bce7999ee276861ec42ed)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putTriggers", [value]))

    @jsii.member(jsii_name="putWorkflow")
    def put_workflow(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflow", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__ac911f67e2d622cae24a9b80cdc6b9bdc940644bc65d3b67c533df09f31f2e0d)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putWorkflow", [value]))

    @jsii.member(jsii_name="resetAssociatedAlarms")
    def reset_associated_alarms(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetAssociatedAlarms", []))

    @jsii.member(jsii_name="resetDescription")
    def reset_description(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetDescription", []))

    @jsii.member(jsii_name="resetPrimaryRegion")
    def reset_primary_region(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetPrimaryRegion", []))

    @jsii.member(jsii_name="resetRecoveryTimeObjectiveMinutes")
    def reset_recovery_time_objective_minutes(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetRecoveryTimeObjectiveMinutes", []))

    @jsii.member(jsii_name="resetRegion")
    def reset_region(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetRegion", []))

    @jsii.member(jsii_name="resetTags")
    def reset_tags(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetTags", []))

    @jsii.member(jsii_name="resetTimeouts")
    def reset_timeouts(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetTimeouts", []))

    @jsii.member(jsii_name="resetTriggers")
    def reset_triggers(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetTriggers", []))

    @jsii.member(jsii_name="resetWorkflow")
    def reset_workflow(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetWorkflow", []))

    @jsii.member(jsii_name="synthesizeAttributes")
    def _synthesize_attributes(self) -> typing.Mapping[builtins.str, typing.Any]:
        return typing.cast(typing.Mapping[builtins.str, typing.Any], jsii.invoke(self, "synthesizeAttributes", []))

    @jsii.member(jsii_name="synthesizeHclAttributes")
    def _synthesize_hcl_attributes(self) -> typing.Mapping[builtins.str, typing.Any]:
        return typing.cast(typing.Mapping[builtins.str, typing.Any], jsii.invoke(self, "synthesizeHclAttributes", []))

    @jsii.python.classproperty
    @jsii.member(jsii_name="tfResourceType")
    def TF_RESOURCE_TYPE(cls) -> builtins.str:
        return typing.cast(builtins.str, jsii.sget(cls, "tfResourceType"))

    @builtins.property
    @jsii.member(jsii_name="arn")
    def arn(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "arn"))

    @builtins.property
    @jsii.member(jsii_name="associatedAlarms")
    def associated_alarms(self) -> "ArcregionswitchPlanAssociatedAlarmsList":
        return typing.cast("ArcregionswitchPlanAssociatedAlarmsList", jsii.get(self, "associatedAlarms"))

    @builtins.property
    @jsii.member(jsii_name="tagsAll")
    def tags_all(self) -> "_cdktn_78ede62e.StringMap":
        return typing.cast("_cdktn_78ede62e.StringMap", jsii.get(self, "tagsAll"))

    @builtins.property
    @jsii.member(jsii_name="timeouts")
    def timeouts(self) -> "ArcregionswitchPlanTimeoutsOutputReference":
        return typing.cast("ArcregionswitchPlanTimeoutsOutputReference", jsii.get(self, "timeouts"))

    @builtins.property
    @jsii.member(jsii_name="triggers")
    def triggers(self) -> "ArcregionswitchPlanTriggersList":
        return typing.cast("ArcregionswitchPlanTriggersList", jsii.get(self, "triggers"))

    @builtins.property
    @jsii.member(jsii_name="workflow")
    def workflow(self) -> "ArcregionswitchPlanWorkflowList":
        return typing.cast("ArcregionswitchPlanWorkflowList", jsii.get(self, "workflow"))

    @builtins.property
    @jsii.member(jsii_name="associatedAlarmsInput")
    def associated_alarms_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanAssociatedAlarms"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanAssociatedAlarms"]]], jsii.get(self, "associatedAlarmsInput"))

    @builtins.property
    @jsii.member(jsii_name="descriptionInput")
    def description_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "descriptionInput"))

    @builtins.property
    @jsii.member(jsii_name="executionRoleInput")
    def execution_role_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "executionRoleInput"))

    @builtins.property
    @jsii.member(jsii_name="nameInput")
    def name_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "nameInput"))

    @builtins.property
    @jsii.member(jsii_name="primaryRegionInput")
    def primary_region_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "primaryRegionInput"))

    @builtins.property
    @jsii.member(jsii_name="recoveryApproachInput")
    def recovery_approach_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "recoveryApproachInput"))

    @builtins.property
    @jsii.member(jsii_name="recoveryTimeObjectiveMinutesInput")
    def recovery_time_objective_minutes_input(self) -> typing.Optional[jsii.Number]:
        return typing.cast(typing.Optional[jsii.Number], jsii.get(self, "recoveryTimeObjectiveMinutesInput"))

    @builtins.property
    @jsii.member(jsii_name="regionInput")
    def region_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "regionInput"))

    @builtins.property
    @jsii.member(jsii_name="regionsInput")
    def regions_input(self) -> typing.Optional[typing.List[builtins.str]]:
        return typing.cast(typing.Optional[typing.List[builtins.str]], jsii.get(self, "regionsInput"))

    @builtins.property
    @jsii.member(jsii_name="tagsInput")
    def tags_input(self) -> typing.Optional[typing.Mapping[builtins.str, builtins.str]]:
        return typing.cast(typing.Optional[typing.Mapping[builtins.str, builtins.str]], jsii.get(self, "tagsInput"))

    @builtins.property
    @jsii.member(jsii_name="timeoutsInput")
    def timeouts_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanTimeouts"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanTimeouts"]], jsii.get(self, "timeoutsInput"))

    @builtins.property
    @jsii.member(jsii_name="triggersInput")
    def triggers_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanTriggers"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanTriggers"]]], jsii.get(self, "triggersInput"))

    @builtins.property
    @jsii.member(jsii_name="workflowInput")
    def workflow_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflow"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflow"]]], jsii.get(self, "workflowInput"))

    @builtins.property
    @jsii.member(jsii_name="description")
    def description(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "description"))

    @description.setter
    def description(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__9817c17713227230b797215bf4e176af50bbd92e04cb4b30f5ca7eb32dd0118d)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "description", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="executionRole")
    def execution_role(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "executionRole"))

    @execution_role.setter
    def execution_role(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__41206236a3fa5891d98c3d3f79e6e66072e2eba094b43adb3a1d30d47ae22c86)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "executionRole", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="name")
    def name(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "name"))

    @name.setter
    def name(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__3fd6c35680d4954a5fc2acb34b279454f77cdc1e4fe4a24228ae5a76cdcd3a3b)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "name", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="primaryRegion")
    def primary_region(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "primaryRegion"))

    @primary_region.setter
    def primary_region(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__28de5a4f74ddd7972623b42d5d04df434a263211c0ef30c420de57e003fd770a)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "primaryRegion", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="recoveryApproach")
    def recovery_approach(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "recoveryApproach"))

    @recovery_approach.setter
    def recovery_approach(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__3b3af71c91a86b5cd20d044695c12fded3496438e90aec14dd86a2020658887e)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "recoveryApproach", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="recoveryTimeObjectiveMinutes")
    def recovery_time_objective_minutes(self) -> jsii.Number:
        return typing.cast(jsii.Number, jsii.get(self, "recoveryTimeObjectiveMinutes"))

    @recovery_time_objective_minutes.setter
    def recovery_time_objective_minutes(self, value: jsii.Number) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__5364406c91c80c95344f6d682c181525ec486da0a5f913b0b55f90a634c60194)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "recoveryTimeObjectiveMinutes", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="region")
    def region(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "region"))

    @region.setter
    def region(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__aaef0da776c92b9bedfa27f1ca5153a8fa6ceedaccbc7dd030448d2b9fca2e11)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "region", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="regions")
    def regions(self) -> typing.List[builtins.str]:
        return typing.cast(typing.List[builtins.str], jsii.get(self, "regions"))

    @regions.setter
    def regions(self, value: typing.List[builtins.str]) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__20c6d16a54ec64551ec291fe7233de4815ceafc54f3fa7ad49cced713e1dc533)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "regions", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="tags")
    def tags(self) -> typing.Mapping[builtins.str, builtins.str]:
        return typing.cast(typing.Mapping[builtins.str, builtins.str], jsii.get(self, "tags"))

    @tags.setter
    def tags(self, value: typing.Mapping[builtins.str, builtins.str]) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__8317cf54e6d5aeb3609fe140cd3ba6ea97ac99a6fa8dee7ae5f56b2dce383cff)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "tags", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanAssociatedAlarms",
    jsii_struct_bases=[],
    name_mapping={
        "alarm_type": "alarmType",
        "map_block_key": "mapBlockKey",
        "resource_identifier": "resourceIdentifier",
        "cross_account_role": "crossAccountRole",
        "external_id": "externalId",
    },
)
class ArcregionswitchPlanAssociatedAlarms:
    def __init__(
        self,
        *,
        alarm_type: builtins.str,
        map_block_key: builtins.str,
        resource_identifier: builtins.str,
        cross_account_role: typing.Optional[builtins.str] = None,
        external_id: typing.Optional[builtins.str] = None,
    ) -> None:
        '''
        :param alarm_type: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#alarm_type ArcregionswitchPlan#alarm_type}.
        :param map_block_key: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#map_block_key ArcregionswitchPlan#map_block_key}.
        :param resource_identifier: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#resource_identifier ArcregionswitchPlan#resource_identifier}.
        :param cross_account_role: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cross_account_role ArcregionswitchPlan#cross_account_role}.
        :param external_id: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#external_id ArcregionswitchPlan#external_id}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__375d1e2cb57fce39b6a7c664faf359c56bb15869d0f3b495f13989d8684df0d0)
            check_type(argname="argument alarm_type", value=alarm_type, expected_type=type_hints["alarm_type"])
            check_type(argname="argument map_block_key", value=map_block_key, expected_type=type_hints["map_block_key"])
            check_type(argname="argument resource_identifier", value=resource_identifier, expected_type=type_hints["resource_identifier"])
            check_type(argname="argument cross_account_role", value=cross_account_role, expected_type=type_hints["cross_account_role"])
            check_type(argname="argument external_id", value=external_id, expected_type=type_hints["external_id"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "alarm_type": alarm_type,
            "map_block_key": map_block_key,
            "resource_identifier": resource_identifier,
        }
        if cross_account_role is not None:
            self._values["cross_account_role"] = cross_account_role
        if external_id is not None:
            self._values["external_id"] = external_id

    @builtins.property
    def alarm_type(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#alarm_type ArcregionswitchPlan#alarm_type}.'''
        result = self._values.get("alarm_type")
        assert result is not None, "Required property 'alarm_type' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def map_block_key(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#map_block_key ArcregionswitchPlan#map_block_key}.'''
        result = self._values.get("map_block_key")
        assert result is not None, "Required property 'map_block_key' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def resource_identifier(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#resource_identifier ArcregionswitchPlan#resource_identifier}.'''
        result = self._values.get("resource_identifier")
        assert result is not None, "Required property 'resource_identifier' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def cross_account_role(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cross_account_role ArcregionswitchPlan#cross_account_role}.'''
        result = self._values.get("cross_account_role")
        return typing.cast(typing.Optional[builtins.str], result)

    @builtins.property
    def external_id(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#external_id ArcregionswitchPlan#external_id}.'''
        result = self._values.get("external_id")
        return typing.cast(typing.Optional[builtins.str], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanAssociatedAlarms(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanAssociatedAlarmsList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanAssociatedAlarmsList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__744e43be207567e05daaaa69d513548c5dd60bac77f896dfba8d828df313c722)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanAssociatedAlarmsOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__3a72ebc8977d036fbc9c3565f06c4ace1cb9abbc7ba9e9a799a61837ace8b41f)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanAssociatedAlarmsOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanAssociatedAlarms"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanAssociatedAlarms"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanAssociatedAlarms"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__a1dcfc72202f6fa66e15dba0aacc22315ccd18ff637d23d435dfed2ec31f893b)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanAssociatedAlarmsOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanAssociatedAlarmsOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__68db025225729cdc828489ae84469a275e2f7e7200c3e0eaf126bc7e0152bfc9)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="resetCrossAccountRole")
    def reset_cross_account_role(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetCrossAccountRole", []))

    @jsii.member(jsii_name="resetExternalId")
    def reset_external_id(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetExternalId", []))

    @builtins.property
    @jsii.member(jsii_name="alarmTypeInput")
    def alarm_type_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "alarmTypeInput"))

    @builtins.property
    @jsii.member(jsii_name="crossAccountRoleInput")
    def cross_account_role_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "crossAccountRoleInput"))

    @builtins.property
    @jsii.member(jsii_name="externalIdInput")
    def external_id_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "externalIdInput"))

    @builtins.property
    @jsii.member(jsii_name="mapBlockKeyInput")
    def map_block_key_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "mapBlockKeyInput"))

    @builtins.property
    @jsii.member(jsii_name="resourceIdentifierInput")
    def resource_identifier_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "resourceIdentifierInput"))

    @builtins.property
    @jsii.member(jsii_name="alarmType")
    def alarm_type(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "alarmType"))

    @alarm_type.setter
    def alarm_type(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__2c2e2bb63f6210cc2b1ec33591dc5ceff5a592c99ff92cc0bb83b0ced1e9b5cf)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "alarmType", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="crossAccountRole")
    def cross_account_role(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "crossAccountRole"))

    @cross_account_role.setter
    def cross_account_role(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__f1597f7177c797edb75fcfc2ca0f8a9449c12989ab4955e7c2e0c984d61f1159)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "crossAccountRole", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="externalId")
    def external_id(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "externalId"))

    @external_id.setter
    def external_id(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__44329c92e35b6e9d9d1b7206237114ab09ec1755c37e126d5dda7f3c8ac4a9f3)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "externalId", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="mapBlockKey")
    def map_block_key(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "mapBlockKey"))

    @map_block_key.setter
    def map_block_key(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__e0a18f25c6100b26d665d3e002d11e4b52e801a83c4f9e81a24060d41b0f4a3a)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "mapBlockKey", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="resourceIdentifier")
    def resource_identifier(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "resourceIdentifier"))

    @resource_identifier.setter
    def resource_identifier(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__556575dea4b8ba0fbe2a1527548b6b02552d0172404b0da51d08fde0ee1d9463)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "resourceIdentifier", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanAssociatedAlarms"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanAssociatedAlarms"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanAssociatedAlarms"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__bcf939602b0d8b981ce49f85f10b6a803f0647fdff85d648313f352602f7391f)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanConfig",
    jsii_struct_bases=[_cdktn_78ede62e.TerraformMetaArguments],
    name_mapping={
        "connection": "connection",
        "count": "count",
        "depends_on": "dependsOn",
        "for_each": "forEach",
        "lifecycle": "lifecycle",
        "provider": "provider",
        "provisioners": "provisioners",
        "execution_role": "executionRole",
        "name": "name",
        "recovery_approach": "recoveryApproach",
        "regions": "regions",
        "associated_alarms": "associatedAlarms",
        "description": "description",
        "primary_region": "primaryRegion",
        "recovery_time_objective_minutes": "recoveryTimeObjectiveMinutes",
        "region": "region",
        "tags": "tags",
        "timeouts": "timeouts",
        "triggers": "triggers",
        "workflow": "workflow",
    },
)
class ArcregionswitchPlanConfig(_cdktn_78ede62e.TerraformMetaArguments):
    def __init__(
        self,
        *,
        connection: typing.Optional[typing.Union[typing.Union["_cdktn_78ede62e.SSHProvisionerConnection", typing.Dict[builtins.str, typing.Any]], typing.Union["_cdktn_78ede62e.WinrmProvisionerConnection", typing.Dict[builtins.str, typing.Any]]]] = None,
        count: typing.Optional[typing.Union[jsii.Number, "_cdktn_78ede62e.TerraformCount"]] = None,
        depends_on: typing.Optional[typing.Sequence["_cdktn_78ede62e.ITerraformDependable"]] = None,
        for_each: typing.Optional["_cdktn_78ede62e.ITerraformIterator"] = None,
        lifecycle: typing.Optional[typing.Union["_cdktn_78ede62e.TerraformResourceLifecycle", typing.Dict[builtins.str, typing.Any]]] = None,
        provider: typing.Optional["_cdktn_78ede62e.TerraformProvider"] = None,
        provisioners: typing.Optional[typing.Sequence[typing.Union[typing.Union["_cdktn_78ede62e.FileProvisioner", typing.Dict[builtins.str, typing.Any]], typing.Union["_cdktn_78ede62e.LocalExecProvisioner", typing.Dict[builtins.str, typing.Any]], typing.Union["_cdktn_78ede62e.RemoteExecProvisioner", typing.Dict[builtins.str, typing.Any]]]]] = None,
        execution_role: builtins.str,
        name: builtins.str,
        recovery_approach: builtins.str,
        regions: typing.Sequence[builtins.str],
        associated_alarms: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanAssociatedAlarms", typing.Dict[builtins.str, typing.Any]]]]] = None,
        description: typing.Optional[builtins.str] = None,
        primary_region: typing.Optional[builtins.str] = None,
        recovery_time_objective_minutes: typing.Optional[jsii.Number] = None,
        region: typing.Optional[builtins.str] = None,
        tags: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
        timeouts: typing.Optional[typing.Union["ArcregionswitchPlanTimeouts", typing.Dict[builtins.str, typing.Any]]] = None,
        triggers: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanTriggers", typing.Dict[builtins.str, typing.Any]]]]] = None,
        workflow: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflow", typing.Dict[builtins.str, typing.Any]]]]] = None,
    ) -> None:
        '''
        :param connection: 
        :param count: 
        :param depends_on: 
        :param for_each: 
        :param lifecycle: 
        :param provider: 
        :param provisioners: 
        :param execution_role: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#execution_role ArcregionswitchPlan#execution_role}.
        :param name: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#name ArcregionswitchPlan#name}.
        :param recovery_approach: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#recovery_approach ArcregionswitchPlan#recovery_approach}.
        :param regions: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#regions ArcregionswitchPlan#regions}.
        :param associated_alarms: associated_alarms block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#associated_alarms ArcregionswitchPlan#associated_alarms}
        :param description: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#description ArcregionswitchPlan#description}.
        :param primary_region: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#primary_region ArcregionswitchPlan#primary_region}.
        :param recovery_time_objective_minutes: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#recovery_time_objective_minutes ArcregionswitchPlan#recovery_time_objective_minutes}.
        :param region: Region where this resource will be `managed <https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints>`_. Defaults to the Region set in the `provider configuration <https://registry.terraform.io/providers/hashicorp/aws/latest/docs#aws-configuration-reference>`_. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#region ArcregionswitchPlan#region}
        :param tags: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#tags ArcregionswitchPlan#tags}.
        :param timeouts: timeouts block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#timeouts ArcregionswitchPlan#timeouts}
        :param triggers: triggers block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#triggers ArcregionswitchPlan#triggers}
        :param workflow: workflow block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#workflow ArcregionswitchPlan#workflow}
        '''
        if isinstance(lifecycle, dict):
            lifecycle = _cdktn_78ede62e.TerraformResourceLifecycle(**lifecycle)
        if isinstance(timeouts, dict):
            timeouts = ArcregionswitchPlanTimeouts(**timeouts)
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__5ac48eca69ef7a70dd445a4ffb1040975ec7cf0d89a6872c73f96dab8488cac0)
            check_type(argname="argument connection", value=connection, expected_type=type_hints["connection"])
            check_type(argname="argument count", value=count, expected_type=type_hints["count"])
            check_type(argname="argument depends_on", value=depends_on, expected_type=type_hints["depends_on"])
            check_type(argname="argument for_each", value=for_each, expected_type=type_hints["for_each"])
            check_type(argname="argument lifecycle", value=lifecycle, expected_type=type_hints["lifecycle"])
            check_type(argname="argument provider", value=provider, expected_type=type_hints["provider"])
            check_type(argname="argument provisioners", value=provisioners, expected_type=type_hints["provisioners"])
            check_type(argname="argument execution_role", value=execution_role, expected_type=type_hints["execution_role"])
            check_type(argname="argument name", value=name, expected_type=type_hints["name"])
            check_type(argname="argument recovery_approach", value=recovery_approach, expected_type=type_hints["recovery_approach"])
            check_type(argname="argument regions", value=regions, expected_type=type_hints["regions"])
            check_type(argname="argument associated_alarms", value=associated_alarms, expected_type=type_hints["associated_alarms"])
            check_type(argname="argument description", value=description, expected_type=type_hints["description"])
            check_type(argname="argument primary_region", value=primary_region, expected_type=type_hints["primary_region"])
            check_type(argname="argument recovery_time_objective_minutes", value=recovery_time_objective_minutes, expected_type=type_hints["recovery_time_objective_minutes"])
            check_type(argname="argument region", value=region, expected_type=type_hints["region"])
            check_type(argname="argument tags", value=tags, expected_type=type_hints["tags"])
            check_type(argname="argument timeouts", value=timeouts, expected_type=type_hints["timeouts"])
            check_type(argname="argument triggers", value=triggers, expected_type=type_hints["triggers"])
            check_type(argname="argument workflow", value=workflow, expected_type=type_hints["workflow"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "execution_role": execution_role,
            "name": name,
            "recovery_approach": recovery_approach,
            "regions": regions,
        }
        if connection is not None:
            self._values["connection"] = connection
        if count is not None:
            self._values["count"] = count
        if depends_on is not None:
            self._values["depends_on"] = depends_on
        if for_each is not None:
            self._values["for_each"] = for_each
        if lifecycle is not None:
            self._values["lifecycle"] = lifecycle
        if provider is not None:
            self._values["provider"] = provider
        if provisioners is not None:
            self._values["provisioners"] = provisioners
        if associated_alarms is not None:
            self._values["associated_alarms"] = associated_alarms
        if description is not None:
            self._values["description"] = description
        if primary_region is not None:
            self._values["primary_region"] = primary_region
        if recovery_time_objective_minutes is not None:
            self._values["recovery_time_objective_minutes"] = recovery_time_objective_minutes
        if region is not None:
            self._values["region"] = region
        if tags is not None:
            self._values["tags"] = tags
        if timeouts is not None:
            self._values["timeouts"] = timeouts
        if triggers is not None:
            self._values["triggers"] = triggers
        if workflow is not None:
            self._values["workflow"] = workflow

    @builtins.property
    def connection(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.SSHProvisionerConnection", "_cdktn_78ede62e.WinrmProvisionerConnection"]]:
        '''
        :stability: experimental
        '''
        result = self._values.get("connection")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.SSHProvisionerConnection", "_cdktn_78ede62e.WinrmProvisionerConnection"]], result)

    @builtins.property
    def count(
        self,
    ) -> typing.Optional[typing.Union[jsii.Number, "_cdktn_78ede62e.TerraformCount"]]:
        '''
        :stability: experimental
        '''
        result = self._values.get("count")
        return typing.cast(typing.Optional[typing.Union[jsii.Number, "_cdktn_78ede62e.TerraformCount"]], result)

    @builtins.property
    def depends_on(
        self,
    ) -> typing.Optional[typing.List["_cdktn_78ede62e.ITerraformDependable"]]:
        '''
        :stability: experimental
        '''
        result = self._values.get("depends_on")
        return typing.cast(typing.Optional[typing.List["_cdktn_78ede62e.ITerraformDependable"]], result)

    @builtins.property
    def for_each(self) -> typing.Optional["_cdktn_78ede62e.ITerraformIterator"]:
        '''
        :stability: experimental
        '''
        result = self._values.get("for_each")
        return typing.cast(typing.Optional["_cdktn_78ede62e.ITerraformIterator"], result)

    @builtins.property
    def lifecycle(
        self,
    ) -> typing.Optional["_cdktn_78ede62e.TerraformResourceLifecycle"]:
        '''
        :stability: experimental
        '''
        result = self._values.get("lifecycle")
        return typing.cast(typing.Optional["_cdktn_78ede62e.TerraformResourceLifecycle"], result)

    @builtins.property
    def provider(self) -> typing.Optional["_cdktn_78ede62e.TerraformProvider"]:
        '''
        :stability: experimental
        '''
        result = self._values.get("provider")
        return typing.cast(typing.Optional["_cdktn_78ede62e.TerraformProvider"], result)

    @builtins.property
    def provisioners(
        self,
    ) -> typing.Optional[typing.List[typing.Union["_cdktn_78ede62e.FileProvisioner", "_cdktn_78ede62e.LocalExecProvisioner", "_cdktn_78ede62e.RemoteExecProvisioner"]]]:
        '''
        :stability: experimental
        '''
        result = self._values.get("provisioners")
        return typing.cast(typing.Optional[typing.List[typing.Union["_cdktn_78ede62e.FileProvisioner", "_cdktn_78ede62e.LocalExecProvisioner", "_cdktn_78ede62e.RemoteExecProvisioner"]]], result)

    @builtins.property
    def execution_role(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#execution_role ArcregionswitchPlan#execution_role}.'''
        result = self._values.get("execution_role")
        assert result is not None, "Required property 'execution_role' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def name(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#name ArcregionswitchPlan#name}.'''
        result = self._values.get("name")
        assert result is not None, "Required property 'name' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def recovery_approach(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#recovery_approach ArcregionswitchPlan#recovery_approach}.'''
        result = self._values.get("recovery_approach")
        assert result is not None, "Required property 'recovery_approach' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def regions(self) -> typing.List[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#regions ArcregionswitchPlan#regions}.'''
        result = self._values.get("regions")
        assert result is not None, "Required property 'regions' is missing"
        return typing.cast(typing.List[builtins.str], result)

    @builtins.property
    def associated_alarms(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanAssociatedAlarms"]]]:
        '''associated_alarms block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#associated_alarms ArcregionswitchPlan#associated_alarms}
        '''
        result = self._values.get("associated_alarms")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanAssociatedAlarms"]]], result)

    @builtins.property
    def description(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#description ArcregionswitchPlan#description}.'''
        result = self._values.get("description")
        return typing.cast(typing.Optional[builtins.str], result)

    @builtins.property
    def primary_region(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#primary_region ArcregionswitchPlan#primary_region}.'''
        result = self._values.get("primary_region")
        return typing.cast(typing.Optional[builtins.str], result)

    @builtins.property
    def recovery_time_objective_minutes(self) -> typing.Optional[jsii.Number]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#recovery_time_objective_minutes ArcregionswitchPlan#recovery_time_objective_minutes}.'''
        result = self._values.get("recovery_time_objective_minutes")
        return typing.cast(typing.Optional[jsii.Number], result)

    @builtins.property
    def region(self) -> typing.Optional[builtins.str]:
        '''Region where this resource will be `managed <https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints>`_. Defaults to the Region set in the `provider configuration <https://registry.terraform.io/providers/hashicorp/aws/latest/docs#aws-configuration-reference>`_.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#region ArcregionswitchPlan#region}
        '''
        result = self._values.get("region")
        return typing.cast(typing.Optional[builtins.str], result)

    @builtins.property
    def tags(self) -> typing.Optional[typing.Mapping[builtins.str, builtins.str]]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#tags ArcregionswitchPlan#tags}.'''
        result = self._values.get("tags")
        return typing.cast(typing.Optional[typing.Mapping[builtins.str, builtins.str]], result)

    @builtins.property
    def timeouts(self) -> typing.Optional["ArcregionswitchPlanTimeouts"]:
        '''timeouts block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#timeouts ArcregionswitchPlan#timeouts}
        '''
        result = self._values.get("timeouts")
        return typing.cast(typing.Optional["ArcregionswitchPlanTimeouts"], result)

    @builtins.property
    def triggers(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanTriggers"]]]:
        '''triggers block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#triggers ArcregionswitchPlan#triggers}
        '''
        result = self._values.get("triggers")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanTriggers"]]], result)

    @builtins.property
    def workflow(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflow"]]]:
        '''workflow block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#workflow ArcregionswitchPlan#workflow}
        '''
        result = self._values.get("workflow")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflow"]]], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanConfig(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanTimeouts",
    jsii_struct_bases=[],
    name_mapping={"create": "create", "delete": "delete", "update": "update"},
)
class ArcregionswitchPlanTimeouts:
    def __init__(
        self,
        *,
        create: typing.Optional[builtins.str] = None,
        delete: typing.Optional[builtins.str] = None,
        update: typing.Optional[builtins.str] = None,
    ) -> None:
        '''
        :param create: A string that can be `parsed as a duration <https://pkg.go.dev/time#ParseDuration>`_ consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#create ArcregionswitchPlan#create}
        :param delete: A string that can be `parsed as a duration <https://pkg.go.dev/time#ParseDuration>`_ consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#delete ArcregionswitchPlan#delete}
        :param update: A string that can be `parsed as a duration <https://pkg.go.dev/time#ParseDuration>`_ consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#update ArcregionswitchPlan#update}
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__5b22b1e3af94efd6ad56612ada8a421444abb5c9fed7671f9153a17088a27a04)
            check_type(argname="argument create", value=create, expected_type=type_hints["create"])
            check_type(argname="argument delete", value=delete, expected_type=type_hints["delete"])
            check_type(argname="argument update", value=update, expected_type=type_hints["update"])
        self._values: typing.Dict[builtins.str, typing.Any] = {}
        if create is not None:
            self._values["create"] = create
        if delete is not None:
            self._values["delete"] = delete
        if update is not None:
            self._values["update"] = update

    @builtins.property
    def create(self) -> typing.Optional[builtins.str]:
        '''A string that can be `parsed as a duration <https://pkg.go.dev/time#ParseDuration>`_ consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#create ArcregionswitchPlan#create}
        '''
        result = self._values.get("create")
        return typing.cast(typing.Optional[builtins.str], result)

    @builtins.property
    def delete(self) -> typing.Optional[builtins.str]:
        '''A string that can be `parsed as a duration <https://pkg.go.dev/time#ParseDuration>`_ consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours). Setting a timeout for a Delete operation is only applicable if changes are saved into state before the destroy operation occurs.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#delete ArcregionswitchPlan#delete}
        '''
        result = self._values.get("delete")
        return typing.cast(typing.Optional[builtins.str], result)

    @builtins.property
    def update(self) -> typing.Optional[builtins.str]:
        '''A string that can be `parsed as a duration <https://pkg.go.dev/time#ParseDuration>`_ consisting of numbers and unit suffixes, such as "30s" or "2h45m". Valid time units are "s" (seconds), "m" (minutes), "h" (hours).

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#update ArcregionswitchPlan#update}
        '''
        result = self._values.get("update")
        return typing.cast(typing.Optional[builtins.str], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanTimeouts(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanTimeoutsOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanTimeoutsOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__83f496168edd421741e4a2e2ba9e0d76f5fd9cb9b7d2674a21d06ca417946840)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute])

    @jsii.member(jsii_name="resetCreate")
    def reset_create(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetCreate", []))

    @jsii.member(jsii_name="resetDelete")
    def reset_delete(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetDelete", []))

    @jsii.member(jsii_name="resetUpdate")
    def reset_update(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetUpdate", []))

    @builtins.property
    @jsii.member(jsii_name="createInput")
    def create_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "createInput"))

    @builtins.property
    @jsii.member(jsii_name="deleteInput")
    def delete_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "deleteInput"))

    @builtins.property
    @jsii.member(jsii_name="updateInput")
    def update_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "updateInput"))

    @builtins.property
    @jsii.member(jsii_name="create")
    def create(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "create"))

    @create.setter
    def create(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__5bec6c8cd5fd361860ff551f5ff4301946778f8300c4b12192441f3e935564f4)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "create", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="delete")
    def delete(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "delete"))

    @delete.setter
    def delete(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__9c1734da0a76a6035d1b4865805f49b7c67291ac27bf5e41b4b9f6e38678687b)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "delete", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="update")
    def update(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "update"))

    @update.setter
    def update(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__99bbf1ed56604900e6117f49289fec31c1281cb137c021758f87a9110394ec71)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "update", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanTimeouts"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanTimeouts"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanTimeouts"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__998ab84405677fe32384b68249468f4b2152147ccfd9226a57396396b6c9000b)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanTriggers",
    jsii_struct_bases=[],
    name_mapping={
        "action": "action",
        "min_delay_minutes_between_executions": "minDelayMinutesBetweenExecutions",
        "target_region": "targetRegion",
        "conditions": "conditions",
        "description": "description",
    },
)
class ArcregionswitchPlanTriggers:
    def __init__(
        self,
        *,
        action: builtins.str,
        min_delay_minutes_between_executions: jsii.Number,
        target_region: builtins.str,
        conditions: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanTriggersConditions", typing.Dict[builtins.str, typing.Any]]]]] = None,
        description: typing.Optional[builtins.str] = None,
    ) -> None:
        '''
        :param action: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#action ArcregionswitchPlan#action}.
        :param min_delay_minutes_between_executions: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#min_delay_minutes_between_executions ArcregionswitchPlan#min_delay_minutes_between_executions}.
        :param target_region: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#target_region ArcregionswitchPlan#target_region}.
        :param conditions: conditions block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#conditions ArcregionswitchPlan#conditions}
        :param description: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#description ArcregionswitchPlan#description}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__d76725618eba68f823a88e8057e850876af15c26b6644e2de30aaf334437be03)
            check_type(argname="argument action", value=action, expected_type=type_hints["action"])
            check_type(argname="argument min_delay_minutes_between_executions", value=min_delay_minutes_between_executions, expected_type=type_hints["min_delay_minutes_between_executions"])
            check_type(argname="argument target_region", value=target_region, expected_type=type_hints["target_region"])
            check_type(argname="argument conditions", value=conditions, expected_type=type_hints["conditions"])
            check_type(argname="argument description", value=description, expected_type=type_hints["description"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "action": action,
            "min_delay_minutes_between_executions": min_delay_minutes_between_executions,
            "target_region": target_region,
        }
        if conditions is not None:
            self._values["conditions"] = conditions
        if description is not None:
            self._values["description"] = description

    @builtins.property
    def action(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#action ArcregionswitchPlan#action}.'''
        result = self._values.get("action")
        assert result is not None, "Required property 'action' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def min_delay_minutes_between_executions(self) -> jsii.Number:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#min_delay_minutes_between_executions ArcregionswitchPlan#min_delay_minutes_between_executions}.'''
        result = self._values.get("min_delay_minutes_between_executions")
        assert result is not None, "Required property 'min_delay_minutes_between_executions' is missing"
        return typing.cast(jsii.Number, result)

    @builtins.property
    def target_region(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#target_region ArcregionswitchPlan#target_region}.'''
        result = self._values.get("target_region")
        assert result is not None, "Required property 'target_region' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def conditions(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanTriggersConditions"]]]:
        '''conditions block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#conditions ArcregionswitchPlan#conditions}
        '''
        result = self._values.get("conditions")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanTriggersConditions"]]], result)

    @builtins.property
    def description(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#description ArcregionswitchPlan#description}.'''
        result = self._values.get("description")
        return typing.cast(typing.Optional[builtins.str], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanTriggers(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanTriggersConditions",
    jsii_struct_bases=[],
    name_mapping={
        "associated_alarm_name": "associatedAlarmName",
        "condition": "condition",
    },
)
class ArcregionswitchPlanTriggersConditions:
    def __init__(
        self,
        *,
        associated_alarm_name: builtins.str,
        condition: builtins.str,
    ) -> None:
        '''
        :param associated_alarm_name: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#associated_alarm_name ArcregionswitchPlan#associated_alarm_name}.
        :param condition: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#condition ArcregionswitchPlan#condition}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__4d88104084059365d5f436486cc149dc545bd96bf452134e793f759f3363a570)
            check_type(argname="argument associated_alarm_name", value=associated_alarm_name, expected_type=type_hints["associated_alarm_name"])
            check_type(argname="argument condition", value=condition, expected_type=type_hints["condition"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "associated_alarm_name": associated_alarm_name,
            "condition": condition,
        }

    @builtins.property
    def associated_alarm_name(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#associated_alarm_name ArcregionswitchPlan#associated_alarm_name}.'''
        result = self._values.get("associated_alarm_name")
        assert result is not None, "Required property 'associated_alarm_name' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def condition(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#condition ArcregionswitchPlan#condition}.'''
        result = self._values.get("condition")
        assert result is not None, "Required property 'condition' is missing"
        return typing.cast(builtins.str, result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanTriggersConditions(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanTriggersConditionsList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanTriggersConditionsList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__a8fc57fd9a50ca5e9e5dbac5b8e9282448d73128c7e6c11a82766afc6ec0fd0a)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanTriggersConditionsOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__a7a3a6dd1f071b2c0f0efb11e41d20c511c21b9cc81bc422514ec5c8f9ab2bcd)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanTriggersConditionsOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanTriggersConditions"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanTriggersConditions"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanTriggersConditions"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__86920453bf5bafc850b3389f8f75df54b42e41a1560a7bd879f80f461efc06ab)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanTriggersConditionsOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanTriggersConditionsOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__33a50832bc693fa121eec2cab4b5b0ba39869d1a995b4a7982d664b0aa9bb265)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @builtins.property
    @jsii.member(jsii_name="associatedAlarmNameInput")
    def associated_alarm_name_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "associatedAlarmNameInput"))

    @builtins.property
    @jsii.member(jsii_name="conditionInput")
    def condition_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "conditionInput"))

    @builtins.property
    @jsii.member(jsii_name="associatedAlarmName")
    def associated_alarm_name(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "associatedAlarmName"))

    @associated_alarm_name.setter
    def associated_alarm_name(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__a73643dbfd532893f28fd6cac743ca29a330bb20c3ec153857e59f6c8952a26b)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "associatedAlarmName", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="condition")
    def condition(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "condition"))

    @condition.setter
    def condition(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__5dd94384a196c254db9f80178b9ec17e405dbc9f407a5ebcab9f3925db5fa28d)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "condition", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanTriggersConditions"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanTriggersConditions"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanTriggersConditions"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__df2cb0f2620b11895273b65892ecba646b71cc70264500a0ba13a90c400ad367)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanTriggersList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanTriggersList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__8ae53d8e977113ec5dbba65fa914bdb00b728f77a8ca2c67508e164cc425df14)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(self, index: jsii.Number) -> "ArcregionswitchPlanTriggersOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__693df068e0a0f42664b4a1d4c10f855d947a723d747e9a35f36136adb6e4314e)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanTriggersOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanTriggers"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanTriggers"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanTriggers"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__71d0c7200fde71e0d3925b28d3f8f7efcf0549a9b7cd0da2c03108853c521584)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanTriggersOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanTriggersOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__18539abeed6cf5cb1856774d7585c0f7454e726edbc5f2821be5606f5c8ead40)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="putConditions")
    def put_conditions(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanTriggersConditions", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__f84560513425c1dc75f39d3475b12cc97ec3270e62c14d229ad748ecf5ee9042)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putConditions", [value]))

    @jsii.member(jsii_name="resetConditions")
    def reset_conditions(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetConditions", []))

    @jsii.member(jsii_name="resetDescription")
    def reset_description(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetDescription", []))

    @builtins.property
    @jsii.member(jsii_name="conditions")
    def conditions(self) -> "ArcregionswitchPlanTriggersConditionsList":
        return typing.cast("ArcregionswitchPlanTriggersConditionsList", jsii.get(self, "conditions"))

    @builtins.property
    @jsii.member(jsii_name="actionInput")
    def action_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "actionInput"))

    @builtins.property
    @jsii.member(jsii_name="conditionsInput")
    def conditions_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanTriggersConditions"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanTriggersConditions"]]], jsii.get(self, "conditionsInput"))

    @builtins.property
    @jsii.member(jsii_name="descriptionInput")
    def description_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "descriptionInput"))

    @builtins.property
    @jsii.member(jsii_name="minDelayMinutesBetweenExecutionsInput")
    def min_delay_minutes_between_executions_input(
        self,
    ) -> typing.Optional[jsii.Number]:
        return typing.cast(typing.Optional[jsii.Number], jsii.get(self, "minDelayMinutesBetweenExecutionsInput"))

    @builtins.property
    @jsii.member(jsii_name="targetRegionInput")
    def target_region_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "targetRegionInput"))

    @builtins.property
    @jsii.member(jsii_name="action")
    def action(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "action"))

    @action.setter
    def action(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__db25a972b9bdf58af350c0ee5deca775cd16172878bc9d03739bd6d69525bcd1)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "action", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="description")
    def description(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "description"))

    @description.setter
    def description(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__caafaa901f03d122b1aa3b320527230681ddb6d853ed37938f9672c0cc2cc239)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "description", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="minDelayMinutesBetweenExecutions")
    def min_delay_minutes_between_executions(self) -> jsii.Number:
        return typing.cast(jsii.Number, jsii.get(self, "minDelayMinutesBetweenExecutions"))

    @min_delay_minutes_between_executions.setter
    def min_delay_minutes_between_executions(self, value: jsii.Number) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__5d9436be1e602730442071a1bee1cb38b404e9fde768a3adbab7c0aa8eb56a6a)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "minDelayMinutesBetweenExecutions", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="targetRegion")
    def target_region(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "targetRegion"))

    @target_region.setter
    def target_region(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__0baac058c01b3812544c732a2688bf9230d2e032cb8781acf2a2843a63c66f5e)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "targetRegion", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanTriggers"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanTriggers"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanTriggers"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__9ebefc660179216daa112b298c37c3939f3c1d0867fb494b6536df0b6937b780)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflow",
    jsii_struct_bases=[],
    name_mapping={
        "workflow_target_action": "workflowTargetAction",
        "step": "step",
        "workflow_description": "workflowDescription",
        "workflow_target_region": "workflowTargetRegion",
    },
)
class ArcregionswitchPlanWorkflow:
    def __init__(
        self,
        *,
        workflow_target_action: builtins.str,
        step: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStep", typing.Dict[builtins.str, typing.Any]]]]] = None,
        workflow_description: typing.Optional[builtins.str] = None,
        workflow_target_region: typing.Optional[builtins.str] = None,
    ) -> None:
        '''
        :param workflow_target_action: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#workflow_target_action ArcregionswitchPlan#workflow_target_action}.
        :param step: step block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#step ArcregionswitchPlan#step}
        :param workflow_description: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#workflow_description ArcregionswitchPlan#workflow_description}.
        :param workflow_target_region: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#workflow_target_region ArcregionswitchPlan#workflow_target_region}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__47db590bbbc627bd04e4703ca123401b662b95e2936212f48c24174ce3b54610)
            check_type(argname="argument workflow_target_action", value=workflow_target_action, expected_type=type_hints["workflow_target_action"])
            check_type(argname="argument step", value=step, expected_type=type_hints["step"])
            check_type(argname="argument workflow_description", value=workflow_description, expected_type=type_hints["workflow_description"])
            check_type(argname="argument workflow_target_region", value=workflow_target_region, expected_type=type_hints["workflow_target_region"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "workflow_target_action": workflow_target_action,
        }
        if step is not None:
            self._values["step"] = step
        if workflow_description is not None:
            self._values["workflow_description"] = workflow_description
        if workflow_target_region is not None:
            self._values["workflow_target_region"] = workflow_target_region

    @builtins.property
    def workflow_target_action(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#workflow_target_action ArcregionswitchPlan#workflow_target_action}.'''
        result = self._values.get("workflow_target_action")
        assert result is not None, "Required property 'workflow_target_action' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def step(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStep"]]]:
        '''step block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#step ArcregionswitchPlan#step}
        '''
        result = self._values.get("step")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStep"]]], result)

    @builtins.property
    def workflow_description(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#workflow_description ArcregionswitchPlan#workflow_description}.'''
        result = self._values.get("workflow_description")
        return typing.cast(typing.Optional[builtins.str], result)

    @builtins.property
    def workflow_target_region(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#workflow_target_region ArcregionswitchPlan#workflow_target_region}.'''
        result = self._values.get("workflow_target_region")
        return typing.cast(typing.Optional[builtins.str], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflow(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__5c7871ae27a7de5d4c5e1582baff2163539b773bac74eae80d8a1ec81a4eaa6a)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(self, index: jsii.Number) -> "ArcregionswitchPlanWorkflowOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__7416b18fbd2a7a9c5c8c19617a579622a539167fb66a70c39848803ce4b4993c)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflow"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflow"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflow"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__8e4dd8e3f6b1f62870875427fb0753d11869532aca541efc1b6f5e306b89cba0)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__b74aa245b942437311bf9e749bf09e65f69c73b72386927bee167dbb69cd2015)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="putStep")
    def put_step(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStep", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__865b76ebad631b4c57262f7fdd33f1da0b2a8ad90c43b98462c882a28f60545d)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putStep", [value]))

    @jsii.member(jsii_name="resetStep")
    def reset_step(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetStep", []))

    @jsii.member(jsii_name="resetWorkflowDescription")
    def reset_workflow_description(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetWorkflowDescription", []))

    @jsii.member(jsii_name="resetWorkflowTargetRegion")
    def reset_workflow_target_region(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetWorkflowTargetRegion", []))

    @builtins.property
    @jsii.member(jsii_name="step")
    def step(self) -> "ArcregionswitchPlanWorkflowStepList":
        return typing.cast("ArcregionswitchPlanWorkflowStepList", jsii.get(self, "step"))

    @builtins.property
    @jsii.member(jsii_name="stepInput")
    def step_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStep"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStep"]]], jsii.get(self, "stepInput"))

    @builtins.property
    @jsii.member(jsii_name="workflowDescriptionInput")
    def workflow_description_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "workflowDescriptionInput"))

    @builtins.property
    @jsii.member(jsii_name="workflowTargetActionInput")
    def workflow_target_action_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "workflowTargetActionInput"))

    @builtins.property
    @jsii.member(jsii_name="workflowTargetRegionInput")
    def workflow_target_region_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "workflowTargetRegionInput"))

    @builtins.property
    @jsii.member(jsii_name="workflowDescription")
    def workflow_description(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "workflowDescription"))

    @workflow_description.setter
    def workflow_description(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__86e21bd8616ddfc06271db0c2c191b1ad5c258b9766d364dceb6bab27da890b0)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "workflowDescription", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="workflowTargetAction")
    def workflow_target_action(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "workflowTargetAction"))

    @workflow_target_action.setter
    def workflow_target_action(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__2979885b7be9cbceead0798dc70fc6c0a380a6390826765b6ff36adb6348a9b5)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "workflowTargetAction", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="workflowTargetRegion")
    def workflow_target_region(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "workflowTargetRegion"))

    @workflow_target_region.setter
    def workflow_target_region(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__b043c277bfed2bba8c6e9bbb65ce75855e0dba70dc993758b74142dd2080b47e)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "workflowTargetRegion", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflow"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflow"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflow"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__7224bc041ef3c0f583b06a6a855b550d19d4b7d81464944416fde0a2bc6e36ee)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStep",
    jsii_struct_bases=[],
    name_mapping={
        "execution_block_type": "executionBlockType",
        "name": "name",
        "arc_routing_control_config": "arcRoutingControlConfig",
        "custom_action_lambda_config": "customActionLambdaConfig",
        "description": "description",
        "document_db_config": "documentDbConfig",
        "ec2_asg_capacity_increase_config": "ec2AsgCapacityIncreaseConfig",
        "ecs_capacity_increase_config": "ecsCapacityIncreaseConfig",
        "eks_resource_scaling_config": "eksResourceScalingConfig",
        "execution_approval_config": "executionApprovalConfig",
        "global_aurora_config": "globalAuroraConfig",
        "parallel_config": "parallelConfig",
        "region_switch_plan_config": "regionSwitchPlanConfig",
        "route53_health_check_config": "route53HealthCheckConfig",
    },
)
class ArcregionswitchPlanWorkflowStep:
    def __init__(
        self,
        *,
        execution_block_type: builtins.str,
        name: builtins.str,
        arc_routing_control_config: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepArcRoutingControlConfig", typing.Dict[builtins.str, typing.Any]]]]] = None,
        custom_action_lambda_config: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepCustomActionLambdaConfig", typing.Dict[builtins.str, typing.Any]]]]] = None,
        description: typing.Optional[builtins.str] = None,
        document_db_config: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepDocumentDbConfig", typing.Dict[builtins.str, typing.Any]]]]] = None,
        ec2_asg_capacity_increase_config: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfig", typing.Dict[builtins.str, typing.Any]]]]] = None,
        ecs_capacity_increase_config: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfig", typing.Dict[builtins.str, typing.Any]]]]] = None,
        eks_resource_scaling_config: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepEksResourceScalingConfig", typing.Dict[builtins.str, typing.Any]]]]] = None,
        execution_approval_config: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepExecutionApprovalConfig", typing.Dict[builtins.str, typing.Any]]]]] = None,
        global_aurora_config: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepGlobalAuroraConfig", typing.Dict[builtins.str, typing.Any]]]]] = None,
        parallel_config: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfig", typing.Dict[builtins.str, typing.Any]]]]] = None,
        region_switch_plan_config: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepRegionSwitchPlanConfig", typing.Dict[builtins.str, typing.Any]]]]] = None,
        route53_health_check_config: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfig", typing.Dict[builtins.str, typing.Any]]]]] = None,
    ) -> None:
        '''
        :param execution_block_type: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#execution_block_type ArcregionswitchPlan#execution_block_type}.
        :param name: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#name ArcregionswitchPlan#name}.
        :param arc_routing_control_config: arc_routing_control_config block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#arc_routing_control_config ArcregionswitchPlan#arc_routing_control_config}
        :param custom_action_lambda_config: custom_action_lambda_config block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#custom_action_lambda_config ArcregionswitchPlan#custom_action_lambda_config}
        :param description: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#description ArcregionswitchPlan#description}.
        :param document_db_config: document_db_config block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#document_db_config ArcregionswitchPlan#document_db_config}
        :param ec2_asg_capacity_increase_config: ec2_asg_capacity_increase_config block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#ec2_asg_capacity_increase_config ArcregionswitchPlan#ec2_asg_capacity_increase_config}
        :param ecs_capacity_increase_config: ecs_capacity_increase_config block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#ecs_capacity_increase_config ArcregionswitchPlan#ecs_capacity_increase_config}
        :param eks_resource_scaling_config: eks_resource_scaling_config block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#eks_resource_scaling_config ArcregionswitchPlan#eks_resource_scaling_config}
        :param execution_approval_config: execution_approval_config block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#execution_approval_config ArcregionswitchPlan#execution_approval_config}
        :param global_aurora_config: global_aurora_config block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#global_aurora_config ArcregionswitchPlan#global_aurora_config}
        :param parallel_config: parallel_config block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#parallel_config ArcregionswitchPlan#parallel_config}
        :param region_switch_plan_config: region_switch_plan_config block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#region_switch_plan_config ArcregionswitchPlan#region_switch_plan_config}
        :param route53_health_check_config: route53_health_check_config block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#route53_health_check_config ArcregionswitchPlan#route53_health_check_config}
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__3ac02e6a0fd7474d65e26ecd9938f966e27ec13920fa46d57951ecfe1013761a)
            check_type(argname="argument execution_block_type", value=execution_block_type, expected_type=type_hints["execution_block_type"])
            check_type(argname="argument name", value=name, expected_type=type_hints["name"])
            check_type(argname="argument arc_routing_control_config", value=arc_routing_control_config, expected_type=type_hints["arc_routing_control_config"])
            check_type(argname="argument custom_action_lambda_config", value=custom_action_lambda_config, expected_type=type_hints["custom_action_lambda_config"])
            check_type(argname="argument description", value=description, expected_type=type_hints["description"])
            check_type(argname="argument document_db_config", value=document_db_config, expected_type=type_hints["document_db_config"])
            check_type(argname="argument ec2_asg_capacity_increase_config", value=ec2_asg_capacity_increase_config, expected_type=type_hints["ec2_asg_capacity_increase_config"])
            check_type(argname="argument ecs_capacity_increase_config", value=ecs_capacity_increase_config, expected_type=type_hints["ecs_capacity_increase_config"])
            check_type(argname="argument eks_resource_scaling_config", value=eks_resource_scaling_config, expected_type=type_hints["eks_resource_scaling_config"])
            check_type(argname="argument execution_approval_config", value=execution_approval_config, expected_type=type_hints["execution_approval_config"])
            check_type(argname="argument global_aurora_config", value=global_aurora_config, expected_type=type_hints["global_aurora_config"])
            check_type(argname="argument parallel_config", value=parallel_config, expected_type=type_hints["parallel_config"])
            check_type(argname="argument region_switch_plan_config", value=region_switch_plan_config, expected_type=type_hints["region_switch_plan_config"])
            check_type(argname="argument route53_health_check_config", value=route53_health_check_config, expected_type=type_hints["route53_health_check_config"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "execution_block_type": execution_block_type,
            "name": name,
        }
        if arc_routing_control_config is not None:
            self._values["arc_routing_control_config"] = arc_routing_control_config
        if custom_action_lambda_config is not None:
            self._values["custom_action_lambda_config"] = custom_action_lambda_config
        if description is not None:
            self._values["description"] = description
        if document_db_config is not None:
            self._values["document_db_config"] = document_db_config
        if ec2_asg_capacity_increase_config is not None:
            self._values["ec2_asg_capacity_increase_config"] = ec2_asg_capacity_increase_config
        if ecs_capacity_increase_config is not None:
            self._values["ecs_capacity_increase_config"] = ecs_capacity_increase_config
        if eks_resource_scaling_config is not None:
            self._values["eks_resource_scaling_config"] = eks_resource_scaling_config
        if execution_approval_config is not None:
            self._values["execution_approval_config"] = execution_approval_config
        if global_aurora_config is not None:
            self._values["global_aurora_config"] = global_aurora_config
        if parallel_config is not None:
            self._values["parallel_config"] = parallel_config
        if region_switch_plan_config is not None:
            self._values["region_switch_plan_config"] = region_switch_plan_config
        if route53_health_check_config is not None:
            self._values["route53_health_check_config"] = route53_health_check_config

    @builtins.property
    def execution_block_type(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#execution_block_type ArcregionswitchPlan#execution_block_type}.'''
        result = self._values.get("execution_block_type")
        assert result is not None, "Required property 'execution_block_type' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def name(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#name ArcregionswitchPlan#name}.'''
        result = self._values.get("name")
        assert result is not None, "Required property 'name' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def arc_routing_control_config(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepArcRoutingControlConfig"]]]:
        '''arc_routing_control_config block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#arc_routing_control_config ArcregionswitchPlan#arc_routing_control_config}
        '''
        result = self._values.get("arc_routing_control_config")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepArcRoutingControlConfig"]]], result)

    @builtins.property
    def custom_action_lambda_config(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepCustomActionLambdaConfig"]]]:
        '''custom_action_lambda_config block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#custom_action_lambda_config ArcregionswitchPlan#custom_action_lambda_config}
        '''
        result = self._values.get("custom_action_lambda_config")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepCustomActionLambdaConfig"]]], result)

    @builtins.property
    def description(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#description ArcregionswitchPlan#description}.'''
        result = self._values.get("description")
        return typing.cast(typing.Optional[builtins.str], result)

    @builtins.property
    def document_db_config(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepDocumentDbConfig"]]]:
        '''document_db_config block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#document_db_config ArcregionswitchPlan#document_db_config}
        '''
        result = self._values.get("document_db_config")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepDocumentDbConfig"]]], result)

    @builtins.property
    def ec2_asg_capacity_increase_config(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfig"]]]:
        '''ec2_asg_capacity_increase_config block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#ec2_asg_capacity_increase_config ArcregionswitchPlan#ec2_asg_capacity_increase_config}
        '''
        result = self._values.get("ec2_asg_capacity_increase_config")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfig"]]], result)

    @builtins.property
    def ecs_capacity_increase_config(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfig"]]]:
        '''ecs_capacity_increase_config block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#ecs_capacity_increase_config ArcregionswitchPlan#ecs_capacity_increase_config}
        '''
        result = self._values.get("ecs_capacity_increase_config")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfig"]]], result)

    @builtins.property
    def eks_resource_scaling_config(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfig"]]]:
        '''eks_resource_scaling_config block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#eks_resource_scaling_config ArcregionswitchPlan#eks_resource_scaling_config}
        '''
        result = self._values.get("eks_resource_scaling_config")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfig"]]], result)

    @builtins.property
    def execution_approval_config(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepExecutionApprovalConfig"]]]:
        '''execution_approval_config block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#execution_approval_config ArcregionswitchPlan#execution_approval_config}
        '''
        result = self._values.get("execution_approval_config")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepExecutionApprovalConfig"]]], result)

    @builtins.property
    def global_aurora_config(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepGlobalAuroraConfig"]]]:
        '''global_aurora_config block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#global_aurora_config ArcregionswitchPlan#global_aurora_config}
        '''
        result = self._values.get("global_aurora_config")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepGlobalAuroraConfig"]]], result)

    @builtins.property
    def parallel_config(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfig"]]]:
        '''parallel_config block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#parallel_config ArcregionswitchPlan#parallel_config}
        '''
        result = self._values.get("parallel_config")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfig"]]], result)

    @builtins.property
    def region_switch_plan_config(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepRegionSwitchPlanConfig"]]]:
        '''region_switch_plan_config block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#region_switch_plan_config ArcregionswitchPlan#region_switch_plan_config}
        '''
        result = self._values.get("region_switch_plan_config")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepRegionSwitchPlanConfig"]]], result)

    @builtins.property
    def route53_health_check_config(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfig"]]]:
        '''route53_health_check_config block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#route53_health_check_config ArcregionswitchPlan#route53_health_check_config}
        '''
        result = self._values.get("route53_health_check_config")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfig"]]], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStep(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepArcRoutingControlConfig",
    jsii_struct_bases=[],
    name_mapping={
        "cross_account_role": "crossAccountRole",
        "external_id": "externalId",
        "region_and_routing_controls": "regionAndRoutingControls",
        "timeout_minutes": "timeoutMinutes",
    },
)
class ArcregionswitchPlanWorkflowStepArcRoutingControlConfig:
    def __init__(
        self,
        *,
        cross_account_role: typing.Optional[builtins.str] = None,
        external_id: typing.Optional[builtins.str] = None,
        region_and_routing_controls: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControls", typing.Dict[builtins.str, typing.Any]]]]] = None,
        timeout_minutes: typing.Optional[jsii.Number] = None,
    ) -> None:
        '''
        :param cross_account_role: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cross_account_role ArcregionswitchPlan#cross_account_role}.
        :param external_id: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#external_id ArcregionswitchPlan#external_id}.
        :param region_and_routing_controls: region_and_routing_controls block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#region_and_routing_controls ArcregionswitchPlan#region_and_routing_controls}
        :param timeout_minutes: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#timeout_minutes ArcregionswitchPlan#timeout_minutes}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__99c6492205755f26eaaccd648d08ab45b0ab8f09641f2284368a52b6f7ce946c)
            check_type(argname="argument cross_account_role", value=cross_account_role, expected_type=type_hints["cross_account_role"])
            check_type(argname="argument external_id", value=external_id, expected_type=type_hints["external_id"])
            check_type(argname="argument region_and_routing_controls", value=region_and_routing_controls, expected_type=type_hints["region_and_routing_controls"])
            check_type(argname="argument timeout_minutes", value=timeout_minutes, expected_type=type_hints["timeout_minutes"])
        self._values: typing.Dict[builtins.str, typing.Any] = {}
        if cross_account_role is not None:
            self._values["cross_account_role"] = cross_account_role
        if external_id is not None:
            self._values["external_id"] = external_id
        if region_and_routing_controls is not None:
            self._values["region_and_routing_controls"] = region_and_routing_controls
        if timeout_minutes is not None:
            self._values["timeout_minutes"] = timeout_minutes

    @builtins.property
    def cross_account_role(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cross_account_role ArcregionswitchPlan#cross_account_role}.'''
        result = self._values.get("cross_account_role")
        return typing.cast(typing.Optional[builtins.str], result)

    @builtins.property
    def external_id(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#external_id ArcregionswitchPlan#external_id}.'''
        result = self._values.get("external_id")
        return typing.cast(typing.Optional[builtins.str], result)

    @builtins.property
    def region_and_routing_controls(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControls"]]]:
        '''region_and_routing_controls block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#region_and_routing_controls ArcregionswitchPlan#region_and_routing_controls}
        '''
        result = self._values.get("region_and_routing_controls")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControls"]]], result)

    @builtins.property
    def timeout_minutes(self) -> typing.Optional[jsii.Number]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#timeout_minutes ArcregionswitchPlan#timeout_minutes}.'''
        result = self._values.get("timeout_minutes")
        return typing.cast(typing.Optional[jsii.Number], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepArcRoutingControlConfig(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepArcRoutingControlConfigList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepArcRoutingControlConfigList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__3b905187dd3a6e4f3d0c095400044823d74524f832c0c8290b5980c40fecbe73)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepArcRoutingControlConfigOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__1726475d081cecf2b39143608f0a423ca8cc924aaa5e7b14d00c7d5c7a206175)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepArcRoutingControlConfigOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepArcRoutingControlConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepArcRoutingControlConfig"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepArcRoutingControlConfig"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__d9112e02e6fd1a12ec593ed8ded91ea3d5c5e0d7373c8951217322a8e2f4e5bf)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepArcRoutingControlConfigOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepArcRoutingControlConfigOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__4ea80a7a34657a8894214b821a9835a68a528e5376f2407745b6c193e33681be)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="putRegionAndRoutingControls")
    def put_region_and_routing_controls(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControls", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__41087f162bde91a49d04c801e291a8c7503498dbde966ca3a2d5b92f34d3d3de)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putRegionAndRoutingControls", [value]))

    @jsii.member(jsii_name="resetCrossAccountRole")
    def reset_cross_account_role(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetCrossAccountRole", []))

    @jsii.member(jsii_name="resetExternalId")
    def reset_external_id(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetExternalId", []))

    @jsii.member(jsii_name="resetRegionAndRoutingControls")
    def reset_region_and_routing_controls(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetRegionAndRoutingControls", []))

    @jsii.member(jsii_name="resetTimeoutMinutes")
    def reset_timeout_minutes(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetTimeoutMinutes", []))

    @builtins.property
    @jsii.member(jsii_name="regionAndRoutingControls")
    def region_and_routing_controls(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControlsList":
        return typing.cast("ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControlsList", jsii.get(self, "regionAndRoutingControls"))

    @builtins.property
    @jsii.member(jsii_name="crossAccountRoleInput")
    def cross_account_role_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "crossAccountRoleInput"))

    @builtins.property
    @jsii.member(jsii_name="externalIdInput")
    def external_id_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "externalIdInput"))

    @builtins.property
    @jsii.member(jsii_name="regionAndRoutingControlsInput")
    def region_and_routing_controls_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControls"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControls"]]], jsii.get(self, "regionAndRoutingControlsInput"))

    @builtins.property
    @jsii.member(jsii_name="timeoutMinutesInput")
    def timeout_minutes_input(self) -> typing.Optional[jsii.Number]:
        return typing.cast(typing.Optional[jsii.Number], jsii.get(self, "timeoutMinutesInput"))

    @builtins.property
    @jsii.member(jsii_name="crossAccountRole")
    def cross_account_role(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "crossAccountRole"))

    @cross_account_role.setter
    def cross_account_role(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__dad94889fba7cb6bb7a624badf1774b5811153e63ca3b2e82bb981063cd6aab6)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "crossAccountRole", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="externalId")
    def external_id(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "externalId"))

    @external_id.setter
    def external_id(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__08c899927fcc21163f71c3c8ef4aae2c5d1a65cddbe150e613353e51c3d785b9)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "externalId", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="timeoutMinutes")
    def timeout_minutes(self) -> jsii.Number:
        return typing.cast(jsii.Number, jsii.get(self, "timeoutMinutes"))

    @timeout_minutes.setter
    def timeout_minutes(self, value: jsii.Number) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__0d8737dbc9fd6283e2f8c0efe32167114704f425b8290364a150510c501f4955)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "timeoutMinutes", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepArcRoutingControlConfig"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepArcRoutingControlConfig"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepArcRoutingControlConfig"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__eacd71625460a6a7ba50892edd00a89d348247a436362c1d571995ac9b3e1edf)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControls",
    jsii_struct_bases=[],
    name_mapping={"region": "region", "routing_control": "routingControl"},
)
class ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControls:
    def __init__(
        self,
        *,
        region: builtins.str,
        routing_control: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControl", typing.Dict[builtins.str, typing.Any]]]]] = None,
    ) -> None:
        '''
        :param region: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#region ArcregionswitchPlan#region}.
        :param routing_control: routing_control block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#routing_control ArcregionswitchPlan#routing_control}
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__f2ce529e59bec2a3b3484478ac1723e93cd324d27613d31834b119b87d91a2ed)
            check_type(argname="argument region", value=region, expected_type=type_hints["region"])
            check_type(argname="argument routing_control", value=routing_control, expected_type=type_hints["routing_control"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "region": region,
        }
        if routing_control is not None:
            self._values["routing_control"] = routing_control

    @builtins.property
    def region(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#region ArcregionswitchPlan#region}.'''
        result = self._values.get("region")
        assert result is not None, "Required property 'region' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def routing_control(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControl"]]]:
        '''routing_control block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#routing_control ArcregionswitchPlan#routing_control}
        '''
        result = self._values.get("routing_control")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControl"]]], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControls(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControlsList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControlsList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__67deecda4d234293ccedfc770b5dd0e086737fb7b0e6f6a3b3b51405f48b9fa7)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControlsOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__9652b86b20a4240996edd31c1992ee963b63203035611367bc1325938544a303)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControlsOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControls"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControls"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControls"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__4b5c179c62d9b841b28fecf7a8df490312a2928306acf94060fe012063901912)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControlsOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControlsOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__752be6be382451cca98e1d4aa39d2430a399dae26bd0edf984850d5e97c93570)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="putRoutingControl")
    def put_routing_control(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControl", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__92c0cbd54dfb074cc39622d0f58484f802adece9a00b35abc0fd1debf97b695e)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putRoutingControl", [value]))

    @jsii.member(jsii_name="resetRoutingControl")
    def reset_routing_control(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetRoutingControl", []))

    @builtins.property
    @jsii.member(jsii_name="routingControl")
    def routing_control(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControlList":
        return typing.cast("ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControlList", jsii.get(self, "routingControl"))

    @builtins.property
    @jsii.member(jsii_name="regionInput")
    def region_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "regionInput"))

    @builtins.property
    @jsii.member(jsii_name="routingControlInput")
    def routing_control_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControl"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControl"]]], jsii.get(self, "routingControlInput"))

    @builtins.property
    @jsii.member(jsii_name="region")
    def region(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "region"))

    @region.setter
    def region(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__566308d83dcd8b05652dc31f869a38bc5ce6c29c56c3987cb250cfe8aeecd3d8)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "region", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControls"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControls"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControls"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__ddd92b6659dab976974412e35ed1849828d42f2d2d0758e46ce65d1241cf5f46)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControl",
    jsii_struct_bases=[],
    name_mapping={"routing_control_arn": "routingControlArn", "state": "state"},
)
class ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControl:
    def __init__(
        self,
        *,
        routing_control_arn: builtins.str,
        state: builtins.str,
    ) -> None:
        '''
        :param routing_control_arn: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#routing_control_arn ArcregionswitchPlan#routing_control_arn}.
        :param state: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#state ArcregionswitchPlan#state}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__7ea69bdb54ca2f5564bb1174546fffa9f3a8f1dbd1b12f3c77982da444c7a5eb)
            check_type(argname="argument routing_control_arn", value=routing_control_arn, expected_type=type_hints["routing_control_arn"])
            check_type(argname="argument state", value=state, expected_type=type_hints["state"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "routing_control_arn": routing_control_arn,
            "state": state,
        }

    @builtins.property
    def routing_control_arn(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#routing_control_arn ArcregionswitchPlan#routing_control_arn}.'''
        result = self._values.get("routing_control_arn")
        assert result is not None, "Required property 'routing_control_arn' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def state(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#state ArcregionswitchPlan#state}.'''
        result = self._values.get("state")
        assert result is not None, "Required property 'state' is missing"
        return typing.cast(builtins.str, result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControl(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControlList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControlList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__3a5036b9d9fa717fc5702c51f9b1b9066d4e50e3126f40b6a50bbc45e5291604)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControlOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__eb79eab8d85768ffa1d1bf947fdde5e64a68b851be687b6bff0deb5f9395c977)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControlOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControl"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControl"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControl"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__a3df0f8c13a44fbfcbcce495986b39671df5865a8a08866ab5b082246c3e61db)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControlOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControlOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__fdc6c3153cc91cab9bb0aea6e0d38484d3e21adfbb07ff21c29a31b3a73ae215)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @builtins.property
    @jsii.member(jsii_name="routingControlArnInput")
    def routing_control_arn_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "routingControlArnInput"))

    @builtins.property
    @jsii.member(jsii_name="stateInput")
    def state_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "stateInput"))

    @builtins.property
    @jsii.member(jsii_name="routingControlArn")
    def routing_control_arn(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "routingControlArn"))

    @routing_control_arn.setter
    def routing_control_arn(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__d9dbb17e8fef85aaa5926660508dbd5297505239623dce276ed42b0309f79620)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "routingControlArn", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="state")
    def state(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "state"))

    @state.setter
    def state(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__cd3d4662d6c0cfc47d473f90d527742868194dcf857b6f8e00b3b667d91df0f6)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "state", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControl"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControl"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControl"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__fb56bf6abffa508a051727b6987e5c4a419eb99f9790b33921aac4a4f33bdfa9)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepCustomActionLambdaConfig",
    jsii_struct_bases=[],
    name_mapping={
        "region_to_run": "regionToRun",
        "retry_interval_minutes": "retryIntervalMinutes",
        "lambda_": "lambda",
        "timeout_minutes": "timeoutMinutes",
        "ungraceful": "ungraceful",
    },
)
class ArcregionswitchPlanWorkflowStepCustomActionLambdaConfig:
    def __init__(
        self,
        *,
        region_to_run: builtins.str,
        retry_interval_minutes: jsii.Number,
        lambda_: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigLambda", typing.Dict[builtins.str, typing.Any]]]]] = None,
        timeout_minutes: typing.Optional[jsii.Number] = None,
        ungraceful: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigUngraceful", typing.Dict[builtins.str, typing.Any]]]]] = None,
    ) -> None:
        '''
        :param region_to_run: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#region_to_run ArcregionswitchPlan#region_to_run}.
        :param retry_interval_minutes: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#retry_interval_minutes ArcregionswitchPlan#retry_interval_minutes}.
        :param lambda_: lambda block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#lambda ArcregionswitchPlan#lambda}
        :param timeout_minutes: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#timeout_minutes ArcregionswitchPlan#timeout_minutes}.
        :param ungraceful: ungraceful block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#ungraceful ArcregionswitchPlan#ungraceful}
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__5051403d811de1166a0dbc9256bd9b3d1ea017a1591fc600838e9b0c199e362e)
            check_type(argname="argument region_to_run", value=region_to_run, expected_type=type_hints["region_to_run"])
            check_type(argname="argument retry_interval_minutes", value=retry_interval_minutes, expected_type=type_hints["retry_interval_minutes"])
            check_type(argname="argument lambda_", value=lambda_, expected_type=type_hints["lambda_"])
            check_type(argname="argument timeout_minutes", value=timeout_minutes, expected_type=type_hints["timeout_minutes"])
            check_type(argname="argument ungraceful", value=ungraceful, expected_type=type_hints["ungraceful"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "region_to_run": region_to_run,
            "retry_interval_minutes": retry_interval_minutes,
        }
        if lambda_ is not None:
            self._values["lambda_"] = lambda_
        if timeout_minutes is not None:
            self._values["timeout_minutes"] = timeout_minutes
        if ungraceful is not None:
            self._values["ungraceful"] = ungraceful

    @builtins.property
    def region_to_run(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#region_to_run ArcregionswitchPlan#region_to_run}.'''
        result = self._values.get("region_to_run")
        assert result is not None, "Required property 'region_to_run' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def retry_interval_minutes(self) -> jsii.Number:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#retry_interval_minutes ArcregionswitchPlan#retry_interval_minutes}.'''
        result = self._values.get("retry_interval_minutes")
        assert result is not None, "Required property 'retry_interval_minutes' is missing"
        return typing.cast(jsii.Number, result)

    @builtins.property
    def lambda_(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigLambda"]]]:
        '''lambda block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#lambda ArcregionswitchPlan#lambda}
        '''
        result = self._values.get("lambda_")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigLambda"]]], result)

    @builtins.property
    def timeout_minutes(self) -> typing.Optional[jsii.Number]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#timeout_minutes ArcregionswitchPlan#timeout_minutes}.'''
        result = self._values.get("timeout_minutes")
        return typing.cast(typing.Optional[jsii.Number], result)

    @builtins.property
    def ungraceful(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigUngraceful"]]]:
        '''ungraceful block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#ungraceful ArcregionswitchPlan#ungraceful}
        '''
        result = self._values.get("ungraceful")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigUngraceful"]]], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepCustomActionLambdaConfig(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigLambda",
    jsii_struct_bases=[],
    name_mapping={
        "arn": "arn",
        "cross_account_role": "crossAccountRole",
        "external_id": "externalId",
    },
)
class ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigLambda:
    def __init__(
        self,
        *,
        arn: builtins.str,
        cross_account_role: typing.Optional[builtins.str] = None,
        external_id: typing.Optional[builtins.str] = None,
    ) -> None:
        '''
        :param arn: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#arn ArcregionswitchPlan#arn}.
        :param cross_account_role: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cross_account_role ArcregionswitchPlan#cross_account_role}.
        :param external_id: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#external_id ArcregionswitchPlan#external_id}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__c2135d3202b154ab6ea3a9897d9ce85a938043766a64c4f58132e3a7b1187d52)
            check_type(argname="argument arn", value=arn, expected_type=type_hints["arn"])
            check_type(argname="argument cross_account_role", value=cross_account_role, expected_type=type_hints["cross_account_role"])
            check_type(argname="argument external_id", value=external_id, expected_type=type_hints["external_id"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "arn": arn,
        }
        if cross_account_role is not None:
            self._values["cross_account_role"] = cross_account_role
        if external_id is not None:
            self._values["external_id"] = external_id

    @builtins.property
    def arn(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#arn ArcregionswitchPlan#arn}.'''
        result = self._values.get("arn")
        assert result is not None, "Required property 'arn' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def cross_account_role(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cross_account_role ArcregionswitchPlan#cross_account_role}.'''
        result = self._values.get("cross_account_role")
        return typing.cast(typing.Optional[builtins.str], result)

    @builtins.property
    def external_id(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#external_id ArcregionswitchPlan#external_id}.'''
        result = self._values.get("external_id")
        return typing.cast(typing.Optional[builtins.str], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigLambda(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigLambdaList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigLambdaList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__5af168310fdcabbd42ede3b9639c5e41c8f9e85700d6c1b7cbf20e235917015d)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigLambdaOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__d8ffa927cd0ec1e31e2b5b8e3f3daaac2c43ba91e8357b43325b46f687861206)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigLambdaOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigLambda"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigLambda"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigLambda"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__445cbdf557cf62edf7d9a0dbcdce6053f35df2c288c26beb97f101df5cdd5cc6)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigLambdaOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigLambdaOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__ce97edb112425cee1772f7bd49393d8b45bba305be26743bc082183d2c3e7b69)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="resetCrossAccountRole")
    def reset_cross_account_role(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetCrossAccountRole", []))

    @jsii.member(jsii_name="resetExternalId")
    def reset_external_id(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetExternalId", []))

    @builtins.property
    @jsii.member(jsii_name="arnInput")
    def arn_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "arnInput"))

    @builtins.property
    @jsii.member(jsii_name="crossAccountRoleInput")
    def cross_account_role_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "crossAccountRoleInput"))

    @builtins.property
    @jsii.member(jsii_name="externalIdInput")
    def external_id_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "externalIdInput"))

    @builtins.property
    @jsii.member(jsii_name="arn")
    def arn(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "arn"))

    @arn.setter
    def arn(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__2fc4ac0d62869286e7b49bdb8301d5dcb55a36ff15bbb262b12cc68f39d17203)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "arn", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="crossAccountRole")
    def cross_account_role(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "crossAccountRole"))

    @cross_account_role.setter
    def cross_account_role(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__f1b75e9b791166d975e9438a5353203436bc88a25fd7a7d2e6461fc2c94ba833)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "crossAccountRole", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="externalId")
    def external_id(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "externalId"))

    @external_id.setter
    def external_id(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__8cd240439a81009aa77b202f4609b275bf75f25318e7b7e5f66628dbbd5c89fc)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "externalId", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigLambda"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigLambda"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigLambda"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__eb5324e26142ab474fb71b9893e437d8f5924274590c31c977e008a33038c35b)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__9099094ce45a194f345707046b7a2c169e5276f1d07ef70eefdc17284e49aebd)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__79cffe0ba5652d5d7836c00a7d6eadb4ceda2fdba5c7f2a4e98db66f960b168b)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepCustomActionLambdaConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepCustomActionLambdaConfig"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepCustomActionLambdaConfig"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__baefd394cdbbffe689de73e3b5c2173a7f7ade5c0c721935dd55dc7e2db5eac3)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__c08d351d3037d5017ccd410ab34fe76b754c2da7ecf5a593136d64afee0e193e)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="putLambda")
    def put_lambda(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigLambda", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__966f9fae5135f12a285c04bbbc3d9d9fe3a2847dc6b6938dcdf2c45112d8d438)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putLambda", [value]))

    @jsii.member(jsii_name="putUngraceful")
    def put_ungraceful(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigUngraceful", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__6b2a3d1f1116598696f23577809517f20dc71891684de9fa65664d42aa1b2f3c)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putUngraceful", [value]))

    @jsii.member(jsii_name="resetLambda")
    def reset_lambda(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetLambda", []))

    @jsii.member(jsii_name="resetTimeoutMinutes")
    def reset_timeout_minutes(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetTimeoutMinutes", []))

    @jsii.member(jsii_name="resetUngraceful")
    def reset_ungraceful(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetUngraceful", []))

    @builtins.property
    @jsii.member(jsii_name="lambda")
    def lambda_(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigLambdaList":
        return typing.cast("ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigLambdaList", jsii.get(self, "lambda"))

    @builtins.property
    @jsii.member(jsii_name="ungraceful")
    def ungraceful(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigUngracefulList":
        return typing.cast("ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigUngracefulList", jsii.get(self, "ungraceful"))

    @builtins.property
    @jsii.member(jsii_name="lambdaInput")
    def lambda_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigLambda"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigLambda"]]], jsii.get(self, "lambdaInput"))

    @builtins.property
    @jsii.member(jsii_name="regionToRunInput")
    def region_to_run_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "regionToRunInput"))

    @builtins.property
    @jsii.member(jsii_name="retryIntervalMinutesInput")
    def retry_interval_minutes_input(self) -> typing.Optional[jsii.Number]:
        return typing.cast(typing.Optional[jsii.Number], jsii.get(self, "retryIntervalMinutesInput"))

    @builtins.property
    @jsii.member(jsii_name="timeoutMinutesInput")
    def timeout_minutes_input(self) -> typing.Optional[jsii.Number]:
        return typing.cast(typing.Optional[jsii.Number], jsii.get(self, "timeoutMinutesInput"))

    @builtins.property
    @jsii.member(jsii_name="ungracefulInput")
    def ungraceful_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigUngraceful"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigUngraceful"]]], jsii.get(self, "ungracefulInput"))

    @builtins.property
    @jsii.member(jsii_name="regionToRun")
    def region_to_run(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "regionToRun"))

    @region_to_run.setter
    def region_to_run(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__870346e0fb577a0e827c1eb18437755065060089066568ca002282eca4fd5e39)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "regionToRun", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="retryIntervalMinutes")
    def retry_interval_minutes(self) -> jsii.Number:
        return typing.cast(jsii.Number, jsii.get(self, "retryIntervalMinutes"))

    @retry_interval_minutes.setter
    def retry_interval_minutes(self, value: jsii.Number) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__130334af46b2ee52645877f43a6ea652a36087261c878183609ef36c53ac3b59)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "retryIntervalMinutes", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="timeoutMinutes")
    def timeout_minutes(self) -> jsii.Number:
        return typing.cast(jsii.Number, jsii.get(self, "timeoutMinutes"))

    @timeout_minutes.setter
    def timeout_minutes(self, value: jsii.Number) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__918e2855062088a071cc7d8a12971722f595768bee7fa28e0b635e3fdd6028b0)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "timeoutMinutes", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepCustomActionLambdaConfig"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepCustomActionLambdaConfig"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepCustomActionLambdaConfig"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__f910ac60bed873f0ceac1adf7b82e94e14071ea69fdab8f9ced3923bdda781ce)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigUngraceful",
    jsii_struct_bases=[],
    name_mapping={"behavior": "behavior"},
)
class ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigUngraceful:
    def __init__(self, *, behavior: builtins.str) -> None:
        '''
        :param behavior: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#behavior ArcregionswitchPlan#behavior}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__30e8bf69f78db8414d3048f8847564d461248cc0a931f32a661504fbcecf2992)
            check_type(argname="argument behavior", value=behavior, expected_type=type_hints["behavior"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "behavior": behavior,
        }

    @builtins.property
    def behavior(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#behavior ArcregionswitchPlan#behavior}.'''
        result = self._values.get("behavior")
        assert result is not None, "Required property 'behavior' is missing"
        return typing.cast(builtins.str, result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigUngraceful(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigUngracefulList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigUngracefulList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__1e421b091b0205b158ff60280c890d3ab3205263ab47f7ce5058e63a8faf8589)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigUngracefulOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__8dc6b208a29ffb5bcddd844f587ce4477cf0031a8e346f664f71177f6b0e749b)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigUngracefulOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigUngraceful"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigUngraceful"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigUngraceful"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__37b46e27cfd2dc9e43b524e9fcd3bb3973cf0b43ad41c795ee6d5bafb82e4073)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigUngracefulOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigUngracefulOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__9717a5a90746600f8d1f9867889ba7ff33cb2a30d964a1429de8cf0e2a7c93d0)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @builtins.property
    @jsii.member(jsii_name="behaviorInput")
    def behavior_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "behaviorInput"))

    @builtins.property
    @jsii.member(jsii_name="behavior")
    def behavior(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "behavior"))

    @behavior.setter
    def behavior(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__af871996147ad252bfaecb24ee00f81658a3181cf23b41ea7011da1b4ca96eee)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "behavior", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigUngraceful"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigUngraceful"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigUngraceful"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__8564444a3c533755b4cff520e63dde495fd626a91977f33be71b248b079516cb)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepDocumentDbConfig",
    jsii_struct_bases=[],
    name_mapping={
        "behavior": "behavior",
        "database_cluster_arns": "databaseClusterArns",
        "global_cluster_identifier": "globalClusterIdentifier",
        "cross_account_role": "crossAccountRole",
        "external_id": "externalId",
        "timeout_minutes": "timeoutMinutes",
        "ungraceful": "ungraceful",
    },
)
class ArcregionswitchPlanWorkflowStepDocumentDbConfig:
    def __init__(
        self,
        *,
        behavior: builtins.str,
        database_cluster_arns: typing.Sequence[builtins.str],
        global_cluster_identifier: builtins.str,
        cross_account_role: typing.Optional[builtins.str] = None,
        external_id: typing.Optional[builtins.str] = None,
        timeout_minutes: typing.Optional[jsii.Number] = None,
        ungraceful: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepDocumentDbConfigUngraceful", typing.Dict[builtins.str, typing.Any]]]]] = None,
    ) -> None:
        '''
        :param behavior: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#behavior ArcregionswitchPlan#behavior}.
        :param database_cluster_arns: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#database_cluster_arns ArcregionswitchPlan#database_cluster_arns}.
        :param global_cluster_identifier: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#global_cluster_identifier ArcregionswitchPlan#global_cluster_identifier}.
        :param cross_account_role: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cross_account_role ArcregionswitchPlan#cross_account_role}.
        :param external_id: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#external_id ArcregionswitchPlan#external_id}.
        :param timeout_minutes: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#timeout_minutes ArcregionswitchPlan#timeout_minutes}.
        :param ungraceful: ungraceful block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#ungraceful ArcregionswitchPlan#ungraceful}
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__3452b0090540128fdfc402e4aa268435d48c63ed55618efda2cd1ac1fa670ec1)
            check_type(argname="argument behavior", value=behavior, expected_type=type_hints["behavior"])
            check_type(argname="argument database_cluster_arns", value=database_cluster_arns, expected_type=type_hints["database_cluster_arns"])
            check_type(argname="argument global_cluster_identifier", value=global_cluster_identifier, expected_type=type_hints["global_cluster_identifier"])
            check_type(argname="argument cross_account_role", value=cross_account_role, expected_type=type_hints["cross_account_role"])
            check_type(argname="argument external_id", value=external_id, expected_type=type_hints["external_id"])
            check_type(argname="argument timeout_minutes", value=timeout_minutes, expected_type=type_hints["timeout_minutes"])
            check_type(argname="argument ungraceful", value=ungraceful, expected_type=type_hints["ungraceful"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "behavior": behavior,
            "database_cluster_arns": database_cluster_arns,
            "global_cluster_identifier": global_cluster_identifier,
        }
        if cross_account_role is not None:
            self._values["cross_account_role"] = cross_account_role
        if external_id is not None:
            self._values["external_id"] = external_id
        if timeout_minutes is not None:
            self._values["timeout_minutes"] = timeout_minutes
        if ungraceful is not None:
            self._values["ungraceful"] = ungraceful

    @builtins.property
    def behavior(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#behavior ArcregionswitchPlan#behavior}.'''
        result = self._values.get("behavior")
        assert result is not None, "Required property 'behavior' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def database_cluster_arns(self) -> typing.List[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#database_cluster_arns ArcregionswitchPlan#database_cluster_arns}.'''
        result = self._values.get("database_cluster_arns")
        assert result is not None, "Required property 'database_cluster_arns' is missing"
        return typing.cast(typing.List[builtins.str], result)

    @builtins.property
    def global_cluster_identifier(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#global_cluster_identifier ArcregionswitchPlan#global_cluster_identifier}.'''
        result = self._values.get("global_cluster_identifier")
        assert result is not None, "Required property 'global_cluster_identifier' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def cross_account_role(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cross_account_role ArcregionswitchPlan#cross_account_role}.'''
        result = self._values.get("cross_account_role")
        return typing.cast(typing.Optional[builtins.str], result)

    @builtins.property
    def external_id(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#external_id ArcregionswitchPlan#external_id}.'''
        result = self._values.get("external_id")
        return typing.cast(typing.Optional[builtins.str], result)

    @builtins.property
    def timeout_minutes(self) -> typing.Optional[jsii.Number]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#timeout_minutes ArcregionswitchPlan#timeout_minutes}.'''
        result = self._values.get("timeout_minutes")
        return typing.cast(typing.Optional[jsii.Number], result)

    @builtins.property
    def ungraceful(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepDocumentDbConfigUngraceful"]]]:
        '''ungraceful block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#ungraceful ArcregionswitchPlan#ungraceful}
        '''
        result = self._values.get("ungraceful")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepDocumentDbConfigUngraceful"]]], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepDocumentDbConfig(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepDocumentDbConfigList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepDocumentDbConfigList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__ff70d6825b91392feab53ee147be86d7593f3b94f76cd087180d5720a38e074d)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepDocumentDbConfigOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__7e177d6e3768f7095593139af882f89b9f34c4060c2814f44cc9e32195d52816)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepDocumentDbConfigOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepDocumentDbConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepDocumentDbConfig"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepDocumentDbConfig"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__c18cff598bf9a2eef402bb8ac8d624a7d6212fec02ec094c7c8f85951bf6f5df)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepDocumentDbConfigOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepDocumentDbConfigOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__9bd8142b66194dd5601863a73d19b2a6b5503ef1678ef0bf32d1985015ba22db)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="putUngraceful")
    def put_ungraceful(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepDocumentDbConfigUngraceful", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__bba79fcddeed742a06ca76db0d37e4658b61061d00f6002100fc89e00de25038)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putUngraceful", [value]))

    @jsii.member(jsii_name="resetCrossAccountRole")
    def reset_cross_account_role(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetCrossAccountRole", []))

    @jsii.member(jsii_name="resetExternalId")
    def reset_external_id(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetExternalId", []))

    @jsii.member(jsii_name="resetTimeoutMinutes")
    def reset_timeout_minutes(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetTimeoutMinutes", []))

    @jsii.member(jsii_name="resetUngraceful")
    def reset_ungraceful(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetUngraceful", []))

    @builtins.property
    @jsii.member(jsii_name="ungraceful")
    def ungraceful(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepDocumentDbConfigUngracefulList":
        return typing.cast("ArcregionswitchPlanWorkflowStepDocumentDbConfigUngracefulList", jsii.get(self, "ungraceful"))

    @builtins.property
    @jsii.member(jsii_name="behaviorInput")
    def behavior_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "behaviorInput"))

    @builtins.property
    @jsii.member(jsii_name="crossAccountRoleInput")
    def cross_account_role_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "crossAccountRoleInput"))

    @builtins.property
    @jsii.member(jsii_name="databaseClusterArnsInput")
    def database_cluster_arns_input(self) -> typing.Optional[typing.List[builtins.str]]:
        return typing.cast(typing.Optional[typing.List[builtins.str]], jsii.get(self, "databaseClusterArnsInput"))

    @builtins.property
    @jsii.member(jsii_name="externalIdInput")
    def external_id_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "externalIdInput"))

    @builtins.property
    @jsii.member(jsii_name="globalClusterIdentifierInput")
    def global_cluster_identifier_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "globalClusterIdentifierInput"))

    @builtins.property
    @jsii.member(jsii_name="timeoutMinutesInput")
    def timeout_minutes_input(self) -> typing.Optional[jsii.Number]:
        return typing.cast(typing.Optional[jsii.Number], jsii.get(self, "timeoutMinutesInput"))

    @builtins.property
    @jsii.member(jsii_name="ungracefulInput")
    def ungraceful_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepDocumentDbConfigUngraceful"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepDocumentDbConfigUngraceful"]]], jsii.get(self, "ungracefulInput"))

    @builtins.property
    @jsii.member(jsii_name="behavior")
    def behavior(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "behavior"))

    @behavior.setter
    def behavior(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__cae31754ef84ea9275f0d385764c7838394a7d965f2c4d3374b01f9d64c5686b)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "behavior", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="crossAccountRole")
    def cross_account_role(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "crossAccountRole"))

    @cross_account_role.setter
    def cross_account_role(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__de35ded286f7071298c1fe2a18340d043518a55f5b4416690a07f417bb049a6f)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "crossAccountRole", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="databaseClusterArns")
    def database_cluster_arns(self) -> typing.List[builtins.str]:
        return typing.cast(typing.List[builtins.str], jsii.get(self, "databaseClusterArns"))

    @database_cluster_arns.setter
    def database_cluster_arns(self, value: typing.List[builtins.str]) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__9c3fcfc55d1b43df0e8933c728c6151248294e0cf66348b3412e8d817d0fedfa)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "databaseClusterArns", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="externalId")
    def external_id(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "externalId"))

    @external_id.setter
    def external_id(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__dd0adb0319d122f3512e69643fb69f9807a899ca95a15d361a8065ea06e4f633)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "externalId", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="globalClusterIdentifier")
    def global_cluster_identifier(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "globalClusterIdentifier"))

    @global_cluster_identifier.setter
    def global_cluster_identifier(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__424b6d6e691bfc9b582fe5a26752462f2d03a6dc7c0af5a1317e3759386f61a8)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "globalClusterIdentifier", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="timeoutMinutes")
    def timeout_minutes(self) -> jsii.Number:
        return typing.cast(jsii.Number, jsii.get(self, "timeoutMinutes"))

    @timeout_minutes.setter
    def timeout_minutes(self, value: jsii.Number) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__8a37c4a2aa53099ab1ba7c22e96b774ad61f937805209b7f2bc6a373c448b28c)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "timeoutMinutes", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepDocumentDbConfig"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepDocumentDbConfig"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepDocumentDbConfig"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__da4c05312a93f1e2bb8a4887b3eefc2078df0ac048bfea3f4be7f2a864de6f08)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepDocumentDbConfigUngraceful",
    jsii_struct_bases=[],
    name_mapping={"ungraceful": "ungraceful"},
)
class ArcregionswitchPlanWorkflowStepDocumentDbConfigUngraceful:
    def __init__(self, *, ungraceful: builtins.str) -> None:
        '''
        :param ungraceful: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#ungraceful ArcregionswitchPlan#ungraceful}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__3a6425b162aef8401e9aa7ea817be731e391b3c4f5210db2dba10a89105cccbc)
            check_type(argname="argument ungraceful", value=ungraceful, expected_type=type_hints["ungraceful"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "ungraceful": ungraceful,
        }

    @builtins.property
    def ungraceful(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#ungraceful ArcregionswitchPlan#ungraceful}.'''
        result = self._values.get("ungraceful")
        assert result is not None, "Required property 'ungraceful' is missing"
        return typing.cast(builtins.str, result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepDocumentDbConfigUngraceful(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepDocumentDbConfigUngracefulList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepDocumentDbConfigUngracefulList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__6d772baedb93fbb2580ad0d11feb8172d0b6344417e61863cdc71e20ab9fd776)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepDocumentDbConfigUngracefulOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__08643c7a2494c2781b63704c598eecc670c9d8e7e68c7c8b15ced861a2ab15bf)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepDocumentDbConfigUngracefulOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepDocumentDbConfigUngraceful"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepDocumentDbConfigUngraceful"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepDocumentDbConfigUngraceful"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__90ec81988a40204fa436de224a7cd402d41e091f2ef82dae6d2ef53961af451c)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepDocumentDbConfigUngracefulOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepDocumentDbConfigUngracefulOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__b8cc163c2d2b48420c8bf69e949410191bc44a2e170e256da0b3283e6db7c104)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @builtins.property
    @jsii.member(jsii_name="ungracefulInput")
    def ungraceful_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "ungracefulInput"))

    @builtins.property
    @jsii.member(jsii_name="ungraceful")
    def ungraceful(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "ungraceful"))

    @ungraceful.setter
    def ungraceful(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__2e9e77a04378b8665d4f7cbb0fc44a9fd13f20eb986cc918ce425112118bdbd6)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "ungraceful", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepDocumentDbConfigUngraceful"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepDocumentDbConfigUngraceful"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepDocumentDbConfigUngraceful"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__6bf10e1c4cfb6013df82cde011f2fdb8d3739ed29cfc77d823e4631748d23407)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfig",
    jsii_struct_bases=[],
    name_mapping={
        "capacity_monitoring_approach": "capacityMonitoringApproach",
        "asg": "asg",
        "target_percent": "targetPercent",
        "timeout_minutes": "timeoutMinutes",
        "ungraceful": "ungraceful",
    },
)
class ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfig:
    def __init__(
        self,
        *,
        capacity_monitoring_approach: builtins.str,
        asg: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigAsg", typing.Dict[builtins.str, typing.Any]]]]] = None,
        target_percent: typing.Optional[jsii.Number] = None,
        timeout_minutes: typing.Optional[jsii.Number] = None,
        ungraceful: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigUngraceful", typing.Dict[builtins.str, typing.Any]]]]] = None,
    ) -> None:
        '''
        :param capacity_monitoring_approach: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#capacity_monitoring_approach ArcregionswitchPlan#capacity_monitoring_approach}.
        :param asg: asg block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#asg ArcregionswitchPlan#asg}
        :param target_percent: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#target_percent ArcregionswitchPlan#target_percent}.
        :param timeout_minutes: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#timeout_minutes ArcregionswitchPlan#timeout_minutes}.
        :param ungraceful: ungraceful block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#ungraceful ArcregionswitchPlan#ungraceful}
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__d83ed1ae40033b720209b3164b48f6c0e1a3a7628a0b3cc60b53b27f0f9d99c5)
            check_type(argname="argument capacity_monitoring_approach", value=capacity_monitoring_approach, expected_type=type_hints["capacity_monitoring_approach"])
            check_type(argname="argument asg", value=asg, expected_type=type_hints["asg"])
            check_type(argname="argument target_percent", value=target_percent, expected_type=type_hints["target_percent"])
            check_type(argname="argument timeout_minutes", value=timeout_minutes, expected_type=type_hints["timeout_minutes"])
            check_type(argname="argument ungraceful", value=ungraceful, expected_type=type_hints["ungraceful"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "capacity_monitoring_approach": capacity_monitoring_approach,
        }
        if asg is not None:
            self._values["asg"] = asg
        if target_percent is not None:
            self._values["target_percent"] = target_percent
        if timeout_minutes is not None:
            self._values["timeout_minutes"] = timeout_minutes
        if ungraceful is not None:
            self._values["ungraceful"] = ungraceful

    @builtins.property
    def capacity_monitoring_approach(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#capacity_monitoring_approach ArcregionswitchPlan#capacity_monitoring_approach}.'''
        result = self._values.get("capacity_monitoring_approach")
        assert result is not None, "Required property 'capacity_monitoring_approach' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def asg(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigAsg"]]]:
        '''asg block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#asg ArcregionswitchPlan#asg}
        '''
        result = self._values.get("asg")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigAsg"]]], result)

    @builtins.property
    def target_percent(self) -> typing.Optional[jsii.Number]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#target_percent ArcregionswitchPlan#target_percent}.'''
        result = self._values.get("target_percent")
        return typing.cast(typing.Optional[jsii.Number], result)

    @builtins.property
    def timeout_minutes(self) -> typing.Optional[jsii.Number]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#timeout_minutes ArcregionswitchPlan#timeout_minutes}.'''
        result = self._values.get("timeout_minutes")
        return typing.cast(typing.Optional[jsii.Number], result)

    @builtins.property
    def ungraceful(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigUngraceful"]]]:
        '''ungraceful block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#ungraceful ArcregionswitchPlan#ungraceful}
        '''
        result = self._values.get("ungraceful")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigUngraceful"]]], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfig(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigAsg",
    jsii_struct_bases=[],
    name_mapping={
        "arn": "arn",
        "cross_account_role": "crossAccountRole",
        "external_id": "externalId",
    },
)
class ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigAsg:
    def __init__(
        self,
        *,
        arn: builtins.str,
        cross_account_role: typing.Optional[builtins.str] = None,
        external_id: typing.Optional[builtins.str] = None,
    ) -> None:
        '''
        :param arn: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#arn ArcregionswitchPlan#arn}.
        :param cross_account_role: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cross_account_role ArcregionswitchPlan#cross_account_role}.
        :param external_id: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#external_id ArcregionswitchPlan#external_id}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__fb70e233be7c22c7b8c24ed9d5b290f16214f73f5e029e0206c8c37fdd2dc0e6)
            check_type(argname="argument arn", value=arn, expected_type=type_hints["arn"])
            check_type(argname="argument cross_account_role", value=cross_account_role, expected_type=type_hints["cross_account_role"])
            check_type(argname="argument external_id", value=external_id, expected_type=type_hints["external_id"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "arn": arn,
        }
        if cross_account_role is not None:
            self._values["cross_account_role"] = cross_account_role
        if external_id is not None:
            self._values["external_id"] = external_id

    @builtins.property
    def arn(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#arn ArcregionswitchPlan#arn}.'''
        result = self._values.get("arn")
        assert result is not None, "Required property 'arn' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def cross_account_role(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cross_account_role ArcregionswitchPlan#cross_account_role}.'''
        result = self._values.get("cross_account_role")
        return typing.cast(typing.Optional[builtins.str], result)

    @builtins.property
    def external_id(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#external_id ArcregionswitchPlan#external_id}.'''
        result = self._values.get("external_id")
        return typing.cast(typing.Optional[builtins.str], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigAsg(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigAsgList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigAsgList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__200e9f75e0aedb8ad205a2a162cee2d0bf9e6a215789439b2b282d9637f9816a)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigAsgOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__f72dac65a1f2967db7bdfc800210983011f4cd252f8fd703df94c856053b4918)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigAsgOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigAsg"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigAsg"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigAsg"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__f88f54979559d8fba10ddbbb2c74f172de6cb5c9023bbbda4bf94bd96db685c9)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigAsgOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigAsgOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__099fba58fe101ba456477a802a7f0806cddd98605645870ca9a85435f2d41a24)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="resetCrossAccountRole")
    def reset_cross_account_role(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetCrossAccountRole", []))

    @jsii.member(jsii_name="resetExternalId")
    def reset_external_id(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetExternalId", []))

    @builtins.property
    @jsii.member(jsii_name="arnInput")
    def arn_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "arnInput"))

    @builtins.property
    @jsii.member(jsii_name="crossAccountRoleInput")
    def cross_account_role_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "crossAccountRoleInput"))

    @builtins.property
    @jsii.member(jsii_name="externalIdInput")
    def external_id_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "externalIdInput"))

    @builtins.property
    @jsii.member(jsii_name="arn")
    def arn(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "arn"))

    @arn.setter
    def arn(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__51a7a9af130512a01123b31069a83e48f7c61e8cca9a9ec1e24f960659b53710)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "arn", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="crossAccountRole")
    def cross_account_role(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "crossAccountRole"))

    @cross_account_role.setter
    def cross_account_role(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__df8886e777f5ac6b24ca1b646e95a6b7438c44b953b16ce7caa49bf0abda63ef)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "crossAccountRole", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="externalId")
    def external_id(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "externalId"))

    @external_id.setter
    def external_id(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__3415157f5d9d1a59cad9a1758627f4efd376f44547e94294df4570daeeb78a1f)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "externalId", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigAsg"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigAsg"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigAsg"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__9cbd8c7b756a3e4175174ce87c3df99278f04e5c5ab896298eb934a919b3e8d4)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__748502672334a01d0ebc2d9f2795a857ba5d7ed6a5399379f511b2898e66daae)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__4c1d563bd2201a041226367d41f767ab94e6d1550cc48317c359429d985e3068)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfig"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfig"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__84cb56f1ad8af65ccbe282c3f872b528082db946fee4fdc8f8b390e07e571546)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__f805a1daeeb2bf9ba713f3c8d5526266441e3e3cbe02fb15d0e9382e10b224e3)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="putAsg")
    def put_asg(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigAsg", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__f47ae1b06ebd3314f6c8fad695ef295242aa4575a15d6399415aae35f0f23d20)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putAsg", [value]))

    @jsii.member(jsii_name="putUngraceful")
    def put_ungraceful(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigUngraceful", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__b7f181c936d79eed90dbfbf35b00c5d4b5088633d22da9455a2094a2f608a1b3)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putUngraceful", [value]))

    @jsii.member(jsii_name="resetAsg")
    def reset_asg(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetAsg", []))

    @jsii.member(jsii_name="resetTargetPercent")
    def reset_target_percent(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetTargetPercent", []))

    @jsii.member(jsii_name="resetTimeoutMinutes")
    def reset_timeout_minutes(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetTimeoutMinutes", []))

    @jsii.member(jsii_name="resetUngraceful")
    def reset_ungraceful(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetUngraceful", []))

    @builtins.property
    @jsii.member(jsii_name="asg")
    def asg(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigAsgList":
        return typing.cast("ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigAsgList", jsii.get(self, "asg"))

    @builtins.property
    @jsii.member(jsii_name="ungraceful")
    def ungraceful(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigUngracefulList":
        return typing.cast("ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigUngracefulList", jsii.get(self, "ungraceful"))

    @builtins.property
    @jsii.member(jsii_name="asgInput")
    def asg_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigAsg"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigAsg"]]], jsii.get(self, "asgInput"))

    @builtins.property
    @jsii.member(jsii_name="capacityMonitoringApproachInput")
    def capacity_monitoring_approach_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "capacityMonitoringApproachInput"))

    @builtins.property
    @jsii.member(jsii_name="targetPercentInput")
    def target_percent_input(self) -> typing.Optional[jsii.Number]:
        return typing.cast(typing.Optional[jsii.Number], jsii.get(self, "targetPercentInput"))

    @builtins.property
    @jsii.member(jsii_name="timeoutMinutesInput")
    def timeout_minutes_input(self) -> typing.Optional[jsii.Number]:
        return typing.cast(typing.Optional[jsii.Number], jsii.get(self, "timeoutMinutesInput"))

    @builtins.property
    @jsii.member(jsii_name="ungracefulInput")
    def ungraceful_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigUngraceful"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigUngraceful"]]], jsii.get(self, "ungracefulInput"))

    @builtins.property
    @jsii.member(jsii_name="capacityMonitoringApproach")
    def capacity_monitoring_approach(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "capacityMonitoringApproach"))

    @capacity_monitoring_approach.setter
    def capacity_monitoring_approach(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__0343ebe3c035b7a7f81a029f56bf4f9da9445955956f6af8821b06cae4cda169)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "capacityMonitoringApproach", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="targetPercent")
    def target_percent(self) -> jsii.Number:
        return typing.cast(jsii.Number, jsii.get(self, "targetPercent"))

    @target_percent.setter
    def target_percent(self, value: jsii.Number) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__1c1386e7c730ef5ffb0b20b4878647bb64db78aa67dd6d4263f45a21aac02a83)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "targetPercent", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="timeoutMinutes")
    def timeout_minutes(self) -> jsii.Number:
        return typing.cast(jsii.Number, jsii.get(self, "timeoutMinutes"))

    @timeout_minutes.setter
    def timeout_minutes(self, value: jsii.Number) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__edf73656057a1fbc644a90b7660086759b80d449e4df686c9e91127234d472df)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "timeoutMinutes", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfig"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfig"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfig"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__1dace7d0f1326ae9a55ba1f78567d29460c51e43be2a2851531950560fc4be46)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigUngraceful",
    jsii_struct_bases=[],
    name_mapping={"minimum_success_percentage": "minimumSuccessPercentage"},
)
class ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigUngraceful:
    def __init__(self, *, minimum_success_percentage: jsii.Number) -> None:
        '''
        :param minimum_success_percentage: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#minimum_success_percentage ArcregionswitchPlan#minimum_success_percentage}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__f9ea80565aaeda13cf0ae388ffb66ad60a7113c43e54a0e498d86bced46f8f63)
            check_type(argname="argument minimum_success_percentage", value=minimum_success_percentage, expected_type=type_hints["minimum_success_percentage"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "minimum_success_percentage": minimum_success_percentage,
        }

    @builtins.property
    def minimum_success_percentage(self) -> jsii.Number:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#minimum_success_percentage ArcregionswitchPlan#minimum_success_percentage}.'''
        result = self._values.get("minimum_success_percentage")
        assert result is not None, "Required property 'minimum_success_percentage' is missing"
        return typing.cast(jsii.Number, result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigUngraceful(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigUngracefulList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigUngracefulList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__7d404257c604a4be62d76941a2503a45e0aabcaa823e1780f93b6f1194bdbfbb)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigUngracefulOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__0618027da6890daf5e0f7ff0d876d4056c784fdd2a69bd46748f7586397b4aec)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigUngracefulOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigUngraceful"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigUngraceful"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigUngraceful"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__efd8bacad53441d6f921b29cd1b7ebda534ff658265304eb76df643f4f8b3d2b)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigUngracefulOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigUngracefulOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__87f9376dffad7ebe7f0d4c45546463445bd0d05b64ee69ee885064aa216bde28)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @builtins.property
    @jsii.member(jsii_name="minimumSuccessPercentageInput")
    def minimum_success_percentage_input(self) -> typing.Optional[jsii.Number]:
        return typing.cast(typing.Optional[jsii.Number], jsii.get(self, "minimumSuccessPercentageInput"))

    @builtins.property
    @jsii.member(jsii_name="minimumSuccessPercentage")
    def minimum_success_percentage(self) -> jsii.Number:
        return typing.cast(jsii.Number, jsii.get(self, "minimumSuccessPercentage"))

    @minimum_success_percentage.setter
    def minimum_success_percentage(self, value: jsii.Number) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__74b930712e751d73c02f490a580bd7cc3cd49bf1a028e47976c442997cf92b56)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "minimumSuccessPercentage", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigUngraceful"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigUngraceful"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigUngraceful"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__8d35fb6dad07f88975c69d142205f6ad5ed336a230d0767c1cd5f1fef8522186)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfig",
    jsii_struct_bases=[],
    name_mapping={
        "capacity_monitoring_approach": "capacityMonitoringApproach",
        "service": "service",
        "target_percent": "targetPercent",
        "timeout_minutes": "timeoutMinutes",
        "ungraceful": "ungraceful",
    },
)
class ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfig:
    def __init__(
        self,
        *,
        capacity_monitoring_approach: builtins.str,
        service: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigService", typing.Dict[builtins.str, typing.Any]]]]] = None,
        target_percent: typing.Optional[jsii.Number] = None,
        timeout_minutes: typing.Optional[jsii.Number] = None,
        ungraceful: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigUngraceful", typing.Dict[builtins.str, typing.Any]]]]] = None,
    ) -> None:
        '''
        :param capacity_monitoring_approach: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#capacity_monitoring_approach ArcregionswitchPlan#capacity_monitoring_approach}.
        :param service: service block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#service ArcregionswitchPlan#service}
        :param target_percent: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#target_percent ArcregionswitchPlan#target_percent}.
        :param timeout_minutes: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#timeout_minutes ArcregionswitchPlan#timeout_minutes}.
        :param ungraceful: ungraceful block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#ungraceful ArcregionswitchPlan#ungraceful}
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__d95fe7aec49851a9e122fdda8933b9db0bb32731c37058bc51891efe137b91eb)
            check_type(argname="argument capacity_monitoring_approach", value=capacity_monitoring_approach, expected_type=type_hints["capacity_monitoring_approach"])
            check_type(argname="argument service", value=service, expected_type=type_hints["service"])
            check_type(argname="argument target_percent", value=target_percent, expected_type=type_hints["target_percent"])
            check_type(argname="argument timeout_minutes", value=timeout_minutes, expected_type=type_hints["timeout_minutes"])
            check_type(argname="argument ungraceful", value=ungraceful, expected_type=type_hints["ungraceful"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "capacity_monitoring_approach": capacity_monitoring_approach,
        }
        if service is not None:
            self._values["service"] = service
        if target_percent is not None:
            self._values["target_percent"] = target_percent
        if timeout_minutes is not None:
            self._values["timeout_minutes"] = timeout_minutes
        if ungraceful is not None:
            self._values["ungraceful"] = ungraceful

    @builtins.property
    def capacity_monitoring_approach(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#capacity_monitoring_approach ArcregionswitchPlan#capacity_monitoring_approach}.'''
        result = self._values.get("capacity_monitoring_approach")
        assert result is not None, "Required property 'capacity_monitoring_approach' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def service(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigService"]]]:
        '''service block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#service ArcregionswitchPlan#service}
        '''
        result = self._values.get("service")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigService"]]], result)

    @builtins.property
    def target_percent(self) -> typing.Optional[jsii.Number]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#target_percent ArcregionswitchPlan#target_percent}.'''
        result = self._values.get("target_percent")
        return typing.cast(typing.Optional[jsii.Number], result)

    @builtins.property
    def timeout_minutes(self) -> typing.Optional[jsii.Number]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#timeout_minutes ArcregionswitchPlan#timeout_minutes}.'''
        result = self._values.get("timeout_minutes")
        return typing.cast(typing.Optional[jsii.Number], result)

    @builtins.property
    def ungraceful(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigUngraceful"]]]:
        '''ungraceful block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#ungraceful ArcregionswitchPlan#ungraceful}
        '''
        result = self._values.get("ungraceful")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigUngraceful"]]], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfig(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__21692be059ca382da4b0bad45da8c17c5fef6446225b5428079a70236f6e7be9)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__eb00b8f268c284cdb6f32dc56fd54cdcf9391bbcef816d46e4c18a3fdac74d89)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfig"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfig"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__9977b35b38c5c071779ac81a1937b70148da07783d40003595da8e027d810e70)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__e80339aba77d74dd0aa70bb3ed66ab1fc0fe502f72f6a00c3300750165d49768)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="putService")
    def put_service(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigService", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__3146c82c510eed422ade0ab05f0c52e218c18a6f50a0e1f3f8593ae3432a4c05)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putService", [value]))

    @jsii.member(jsii_name="putUngraceful")
    def put_ungraceful(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigUngraceful", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__ba535117599a4ae92c8539c537bea15e2ac61b32ec63cb1221dea05f65b08308)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putUngraceful", [value]))

    @jsii.member(jsii_name="resetService")
    def reset_service(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetService", []))

    @jsii.member(jsii_name="resetTargetPercent")
    def reset_target_percent(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetTargetPercent", []))

    @jsii.member(jsii_name="resetTimeoutMinutes")
    def reset_timeout_minutes(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetTimeoutMinutes", []))

    @jsii.member(jsii_name="resetUngraceful")
    def reset_ungraceful(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetUngraceful", []))

    @builtins.property
    @jsii.member(jsii_name="service")
    def service(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigServiceList":
        return typing.cast("ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigServiceList", jsii.get(self, "service"))

    @builtins.property
    @jsii.member(jsii_name="ungraceful")
    def ungraceful(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigUngracefulList":
        return typing.cast("ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigUngracefulList", jsii.get(self, "ungraceful"))

    @builtins.property
    @jsii.member(jsii_name="capacityMonitoringApproachInput")
    def capacity_monitoring_approach_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "capacityMonitoringApproachInput"))

    @builtins.property
    @jsii.member(jsii_name="serviceInput")
    def service_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigService"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigService"]]], jsii.get(self, "serviceInput"))

    @builtins.property
    @jsii.member(jsii_name="targetPercentInput")
    def target_percent_input(self) -> typing.Optional[jsii.Number]:
        return typing.cast(typing.Optional[jsii.Number], jsii.get(self, "targetPercentInput"))

    @builtins.property
    @jsii.member(jsii_name="timeoutMinutesInput")
    def timeout_minutes_input(self) -> typing.Optional[jsii.Number]:
        return typing.cast(typing.Optional[jsii.Number], jsii.get(self, "timeoutMinutesInput"))

    @builtins.property
    @jsii.member(jsii_name="ungracefulInput")
    def ungraceful_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigUngraceful"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigUngraceful"]]], jsii.get(self, "ungracefulInput"))

    @builtins.property
    @jsii.member(jsii_name="capacityMonitoringApproach")
    def capacity_monitoring_approach(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "capacityMonitoringApproach"))

    @capacity_monitoring_approach.setter
    def capacity_monitoring_approach(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__e0c5e75cc2d19bf6bc4a1681c4ee8028ee046cbc8d260427ae6f04813af1d2ef)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "capacityMonitoringApproach", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="targetPercent")
    def target_percent(self) -> jsii.Number:
        return typing.cast(jsii.Number, jsii.get(self, "targetPercent"))

    @target_percent.setter
    def target_percent(self, value: jsii.Number) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__999c112078637c235ae89d2ced476b2875b615b00fc7f1b839a7b4b5a2554c77)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "targetPercent", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="timeoutMinutes")
    def timeout_minutes(self) -> jsii.Number:
        return typing.cast(jsii.Number, jsii.get(self, "timeoutMinutes"))

    @timeout_minutes.setter
    def timeout_minutes(self, value: jsii.Number) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__a1504b462e2c029956e26cf62228dfd8f201b189d6e97748a4b6a7f18e6c7792)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "timeoutMinutes", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfig"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfig"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfig"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__18af630dc11bcc1accf46758e7064b957c635ac8843175b9e1f0e04a237511bd)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigService",
    jsii_struct_bases=[],
    name_mapping={
        "cluster_arn": "clusterArn",
        "service_arn": "serviceArn",
        "cross_account_role": "crossAccountRole",
        "external_id": "externalId",
    },
)
class ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigService:
    def __init__(
        self,
        *,
        cluster_arn: builtins.str,
        service_arn: builtins.str,
        cross_account_role: typing.Optional[builtins.str] = None,
        external_id: typing.Optional[builtins.str] = None,
    ) -> None:
        '''
        :param cluster_arn: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cluster_arn ArcregionswitchPlan#cluster_arn}.
        :param service_arn: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#service_arn ArcregionswitchPlan#service_arn}.
        :param cross_account_role: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cross_account_role ArcregionswitchPlan#cross_account_role}.
        :param external_id: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#external_id ArcregionswitchPlan#external_id}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__13c27e92a35dea352ec8582ab876a4a2ca981c349afecb54e4608b4350b6440e)
            check_type(argname="argument cluster_arn", value=cluster_arn, expected_type=type_hints["cluster_arn"])
            check_type(argname="argument service_arn", value=service_arn, expected_type=type_hints["service_arn"])
            check_type(argname="argument cross_account_role", value=cross_account_role, expected_type=type_hints["cross_account_role"])
            check_type(argname="argument external_id", value=external_id, expected_type=type_hints["external_id"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "cluster_arn": cluster_arn,
            "service_arn": service_arn,
        }
        if cross_account_role is not None:
            self._values["cross_account_role"] = cross_account_role
        if external_id is not None:
            self._values["external_id"] = external_id

    @builtins.property
    def cluster_arn(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cluster_arn ArcregionswitchPlan#cluster_arn}.'''
        result = self._values.get("cluster_arn")
        assert result is not None, "Required property 'cluster_arn' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def service_arn(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#service_arn ArcregionswitchPlan#service_arn}.'''
        result = self._values.get("service_arn")
        assert result is not None, "Required property 'service_arn' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def cross_account_role(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cross_account_role ArcregionswitchPlan#cross_account_role}.'''
        result = self._values.get("cross_account_role")
        return typing.cast(typing.Optional[builtins.str], result)

    @builtins.property
    def external_id(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#external_id ArcregionswitchPlan#external_id}.'''
        result = self._values.get("external_id")
        return typing.cast(typing.Optional[builtins.str], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigService(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigServiceList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigServiceList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__ff955ea5140d1ba88f5f92d70a608c0d11735e1950113c5d230cd90fa0d4f9ba)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigServiceOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__52003c21a6f2906776cba9105e9a726f49b9123c158781ea00f23f9774176ecd)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigServiceOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigService"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigService"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigService"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__5dbf3d0789fa951761bf0b600363455f98ba8baf06bddc971258bafafc66b84f)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigServiceOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigServiceOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__ec406ff39372db2252842c23f4ae8e8b5597d72d84965715f75fe09e701ab3e1)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="resetCrossAccountRole")
    def reset_cross_account_role(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetCrossAccountRole", []))

    @jsii.member(jsii_name="resetExternalId")
    def reset_external_id(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetExternalId", []))

    @builtins.property
    @jsii.member(jsii_name="clusterArnInput")
    def cluster_arn_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "clusterArnInput"))

    @builtins.property
    @jsii.member(jsii_name="crossAccountRoleInput")
    def cross_account_role_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "crossAccountRoleInput"))

    @builtins.property
    @jsii.member(jsii_name="externalIdInput")
    def external_id_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "externalIdInput"))

    @builtins.property
    @jsii.member(jsii_name="serviceArnInput")
    def service_arn_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "serviceArnInput"))

    @builtins.property
    @jsii.member(jsii_name="clusterArn")
    def cluster_arn(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "clusterArn"))

    @cluster_arn.setter
    def cluster_arn(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__157ecd321a27c57e970f4f905a8b6503bc2f415e6e71774268c4e844457d8e8b)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "clusterArn", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="crossAccountRole")
    def cross_account_role(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "crossAccountRole"))

    @cross_account_role.setter
    def cross_account_role(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__aef6e90b32d1ff0367b0c4c8f0f081cedc7f54546c863d32f4dc537d69fe6f5f)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "crossAccountRole", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="externalId")
    def external_id(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "externalId"))

    @external_id.setter
    def external_id(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__3593e1787eb4f9d2e0d86685fdad2c99f3bd3bd6c16143779d48d4071d1019ef)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "externalId", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="serviceArn")
    def service_arn(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "serviceArn"))

    @service_arn.setter
    def service_arn(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__cf2b86dbf63ce57f8937b86ec8ef40e3bcd40e40603a54c55f7f3152a957ccaf)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "serviceArn", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigService"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigService"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigService"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__3ca9b063b34a95c0a1606bc9af83b8fda0269bbd52c3ae108a2e46c5409570dd)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigUngraceful",
    jsii_struct_bases=[],
    name_mapping={"minimum_success_percentage": "minimumSuccessPercentage"},
)
class ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigUngraceful:
    def __init__(self, *, minimum_success_percentage: jsii.Number) -> None:
        '''
        :param minimum_success_percentage: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#minimum_success_percentage ArcregionswitchPlan#minimum_success_percentage}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__c07ac6a8309f37d74216ea7312b8d484aab7875960466f27ccac738a2322ab2e)
            check_type(argname="argument minimum_success_percentage", value=minimum_success_percentage, expected_type=type_hints["minimum_success_percentage"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "minimum_success_percentage": minimum_success_percentage,
        }

    @builtins.property
    def minimum_success_percentage(self) -> jsii.Number:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#minimum_success_percentage ArcregionswitchPlan#minimum_success_percentage}.'''
        result = self._values.get("minimum_success_percentage")
        assert result is not None, "Required property 'minimum_success_percentage' is missing"
        return typing.cast(jsii.Number, result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigUngraceful(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigUngracefulList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigUngracefulList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__8b175b5f6cf6e5f130ca176adb1d453c02bff9037ab1c9b377e78b36d83a434b)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigUngracefulOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__cd2d2c2ab72cc3020b378937500e67167d5e90c0160ac21eed29f833aec88bdb)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigUngracefulOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigUngraceful"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigUngraceful"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigUngraceful"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__1535bcb2a7a65c656462d100890761693d4e31fa14d252f475278847782424d1)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigUngracefulOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigUngracefulOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__2d2b1cf736bb77ecf3284d3275bd2b0a5a96ac34d26cee59ae4268ebc4122d50)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @builtins.property
    @jsii.member(jsii_name="minimumSuccessPercentageInput")
    def minimum_success_percentage_input(self) -> typing.Optional[jsii.Number]:
        return typing.cast(typing.Optional[jsii.Number], jsii.get(self, "minimumSuccessPercentageInput"))

    @builtins.property
    @jsii.member(jsii_name="minimumSuccessPercentage")
    def minimum_success_percentage(self) -> jsii.Number:
        return typing.cast(jsii.Number, jsii.get(self, "minimumSuccessPercentage"))

    @minimum_success_percentage.setter
    def minimum_success_percentage(self, value: jsii.Number) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__9143ce763958ffa1c127c11c775583c75c4324d262fce308428f9489750c9e59)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "minimumSuccessPercentage", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigUngraceful"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigUngraceful"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigUngraceful"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__0abbf3f7bf54b9ee1fb132279060ea75be53cc290bdbc7cae06b4f8d656e7f38)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepEksResourceScalingConfig",
    jsii_struct_bases=[],
    name_mapping={
        "capacity_monitoring_approach": "capacityMonitoringApproach",
        "target_percent": "targetPercent",
        "eks_clusters": "eksClusters",
        "kubernetes_resource_type": "kubernetesResourceType",
        "scaling_resources": "scalingResources",
        "timeout_minutes": "timeoutMinutes",
        "ungraceful": "ungraceful",
    },
)
class ArcregionswitchPlanWorkflowStepEksResourceScalingConfig:
    def __init__(
        self,
        *,
        capacity_monitoring_approach: builtins.str,
        target_percent: jsii.Number,
        eks_clusters: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigEksClusters", typing.Dict[builtins.str, typing.Any]]]]] = None,
        kubernetes_resource_type: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigKubernetesResourceType", typing.Dict[builtins.str, typing.Any]]]]] = None,
        scaling_resources: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResources", typing.Dict[builtins.str, typing.Any]]]]] = None,
        timeout_minutes: typing.Optional[jsii.Number] = None,
        ungraceful: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigUngraceful", typing.Dict[builtins.str, typing.Any]]]]] = None,
    ) -> None:
        '''
        :param capacity_monitoring_approach: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#capacity_monitoring_approach ArcregionswitchPlan#capacity_monitoring_approach}.
        :param target_percent: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#target_percent ArcregionswitchPlan#target_percent}.
        :param eks_clusters: eks_clusters block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#eks_clusters ArcregionswitchPlan#eks_clusters}
        :param kubernetes_resource_type: kubernetes_resource_type block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#kubernetes_resource_type ArcregionswitchPlan#kubernetes_resource_type}
        :param scaling_resources: scaling_resources block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#scaling_resources ArcregionswitchPlan#scaling_resources}
        :param timeout_minutes: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#timeout_minutes ArcregionswitchPlan#timeout_minutes}.
        :param ungraceful: ungraceful block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#ungraceful ArcregionswitchPlan#ungraceful}
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__1778fa9127a3cee8953404a96d1270ca6ffdfa2b2d2de73469ecf7355df6d53e)
            check_type(argname="argument capacity_monitoring_approach", value=capacity_monitoring_approach, expected_type=type_hints["capacity_monitoring_approach"])
            check_type(argname="argument target_percent", value=target_percent, expected_type=type_hints["target_percent"])
            check_type(argname="argument eks_clusters", value=eks_clusters, expected_type=type_hints["eks_clusters"])
            check_type(argname="argument kubernetes_resource_type", value=kubernetes_resource_type, expected_type=type_hints["kubernetes_resource_type"])
            check_type(argname="argument scaling_resources", value=scaling_resources, expected_type=type_hints["scaling_resources"])
            check_type(argname="argument timeout_minutes", value=timeout_minutes, expected_type=type_hints["timeout_minutes"])
            check_type(argname="argument ungraceful", value=ungraceful, expected_type=type_hints["ungraceful"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "capacity_monitoring_approach": capacity_monitoring_approach,
            "target_percent": target_percent,
        }
        if eks_clusters is not None:
            self._values["eks_clusters"] = eks_clusters
        if kubernetes_resource_type is not None:
            self._values["kubernetes_resource_type"] = kubernetes_resource_type
        if scaling_resources is not None:
            self._values["scaling_resources"] = scaling_resources
        if timeout_minutes is not None:
            self._values["timeout_minutes"] = timeout_minutes
        if ungraceful is not None:
            self._values["ungraceful"] = ungraceful

    @builtins.property
    def capacity_monitoring_approach(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#capacity_monitoring_approach ArcregionswitchPlan#capacity_monitoring_approach}.'''
        result = self._values.get("capacity_monitoring_approach")
        assert result is not None, "Required property 'capacity_monitoring_approach' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def target_percent(self) -> jsii.Number:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#target_percent ArcregionswitchPlan#target_percent}.'''
        result = self._values.get("target_percent")
        assert result is not None, "Required property 'target_percent' is missing"
        return typing.cast(jsii.Number, result)

    @builtins.property
    def eks_clusters(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigEksClusters"]]]:
        '''eks_clusters block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#eks_clusters ArcregionswitchPlan#eks_clusters}
        '''
        result = self._values.get("eks_clusters")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigEksClusters"]]], result)

    @builtins.property
    def kubernetes_resource_type(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigKubernetesResourceType"]]]:
        '''kubernetes_resource_type block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#kubernetes_resource_type ArcregionswitchPlan#kubernetes_resource_type}
        '''
        result = self._values.get("kubernetes_resource_type")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigKubernetesResourceType"]]], result)

    @builtins.property
    def scaling_resources(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResources"]]]:
        '''scaling_resources block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#scaling_resources ArcregionswitchPlan#scaling_resources}
        '''
        result = self._values.get("scaling_resources")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResources"]]], result)

    @builtins.property
    def timeout_minutes(self) -> typing.Optional[jsii.Number]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#timeout_minutes ArcregionswitchPlan#timeout_minutes}.'''
        result = self._values.get("timeout_minutes")
        return typing.cast(typing.Optional[jsii.Number], result)

    @builtins.property
    def ungraceful(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigUngraceful"]]]:
        '''ungraceful block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#ungraceful ArcregionswitchPlan#ungraceful}
        '''
        result = self._values.get("ungraceful")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigUngraceful"]]], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepEksResourceScalingConfig(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepEksResourceScalingConfigEksClusters",
    jsii_struct_bases=[],
    name_mapping={
        "cluster_arn": "clusterArn",
        "cross_account_role": "crossAccountRole",
        "external_id": "externalId",
    },
)
class ArcregionswitchPlanWorkflowStepEksResourceScalingConfigEksClusters:
    def __init__(
        self,
        *,
        cluster_arn: builtins.str,
        cross_account_role: typing.Optional[builtins.str] = None,
        external_id: typing.Optional[builtins.str] = None,
    ) -> None:
        '''
        :param cluster_arn: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cluster_arn ArcregionswitchPlan#cluster_arn}.
        :param cross_account_role: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cross_account_role ArcregionswitchPlan#cross_account_role}.
        :param external_id: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#external_id ArcregionswitchPlan#external_id}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__859f70397cf2907f31dc05d951b4ac8d8ee758743260345570434fa334d83232)
            check_type(argname="argument cluster_arn", value=cluster_arn, expected_type=type_hints["cluster_arn"])
            check_type(argname="argument cross_account_role", value=cross_account_role, expected_type=type_hints["cross_account_role"])
            check_type(argname="argument external_id", value=external_id, expected_type=type_hints["external_id"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "cluster_arn": cluster_arn,
        }
        if cross_account_role is not None:
            self._values["cross_account_role"] = cross_account_role
        if external_id is not None:
            self._values["external_id"] = external_id

    @builtins.property
    def cluster_arn(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cluster_arn ArcregionswitchPlan#cluster_arn}.'''
        result = self._values.get("cluster_arn")
        assert result is not None, "Required property 'cluster_arn' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def cross_account_role(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cross_account_role ArcregionswitchPlan#cross_account_role}.'''
        result = self._values.get("cross_account_role")
        return typing.cast(typing.Optional[builtins.str], result)

    @builtins.property
    def external_id(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#external_id ArcregionswitchPlan#external_id}.'''
        result = self._values.get("external_id")
        return typing.cast(typing.Optional[builtins.str], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigEksClusters(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepEksResourceScalingConfigEksClustersList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepEksResourceScalingConfigEksClustersList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__1474f58307f19d0bc42b78188e97b32d2e2e5cad3fafeafa3f65daac243d3453)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigEksClustersOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__9a6ba15dbbaa6d64eae4e29382fdb7f9878c622b3c17a79ff603ecf14ee98268)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepEksResourceScalingConfigEksClustersOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigEksClusters"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigEksClusters"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigEksClusters"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__a6bdad194d74810995672b97251120d88a82f84a09871ca2254d60ad5d95d899)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepEksResourceScalingConfigEksClustersOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepEksResourceScalingConfigEksClustersOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__c3d0778532e0e34eff1d0a43fa5e188c4ea86b11e70cf5a4387aba7d9fff5854)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="resetCrossAccountRole")
    def reset_cross_account_role(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetCrossAccountRole", []))

    @jsii.member(jsii_name="resetExternalId")
    def reset_external_id(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetExternalId", []))

    @builtins.property
    @jsii.member(jsii_name="clusterArnInput")
    def cluster_arn_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "clusterArnInput"))

    @builtins.property
    @jsii.member(jsii_name="crossAccountRoleInput")
    def cross_account_role_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "crossAccountRoleInput"))

    @builtins.property
    @jsii.member(jsii_name="externalIdInput")
    def external_id_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "externalIdInput"))

    @builtins.property
    @jsii.member(jsii_name="clusterArn")
    def cluster_arn(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "clusterArn"))

    @cluster_arn.setter
    def cluster_arn(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__3c2041e98ab64b26d88421dbeab4198eed2778d71474c41a8b3dbb974f211835)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "clusterArn", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="crossAccountRole")
    def cross_account_role(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "crossAccountRole"))

    @cross_account_role.setter
    def cross_account_role(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__25c26ef7b271ff94b4e9017e7632fdfec7b4cc11a9a6ccde2d5935bb0a1decda)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "crossAccountRole", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="externalId")
    def external_id(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "externalId"))

    @external_id.setter
    def external_id(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__127936f3db6a613a89fc59ff6e976284294f7d3a305357be8355df343f70c63b)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "externalId", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigEksClusters"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigEksClusters"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigEksClusters"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__a6e5f943eb73a8fe5d5bd2ee8aa1ab66484028cd64021b55268cb231abf84936)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepEksResourceScalingConfigKubernetesResourceType",
    jsii_struct_bases=[],
    name_mapping={"api_version": "apiVersion", "kind": "kind"},
)
class ArcregionswitchPlanWorkflowStepEksResourceScalingConfigKubernetesResourceType:
    def __init__(self, *, api_version: builtins.str, kind: builtins.str) -> None:
        '''
        :param api_version: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#api_version ArcregionswitchPlan#api_version}.
        :param kind: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#kind ArcregionswitchPlan#kind}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__b25b5994c51db18aa67c2446114eee170bd1e924088414f5ca767c79afd7d76c)
            check_type(argname="argument api_version", value=api_version, expected_type=type_hints["api_version"])
            check_type(argname="argument kind", value=kind, expected_type=type_hints["kind"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "api_version": api_version,
            "kind": kind,
        }

    @builtins.property
    def api_version(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#api_version ArcregionswitchPlan#api_version}.'''
        result = self._values.get("api_version")
        assert result is not None, "Required property 'api_version' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def kind(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#kind ArcregionswitchPlan#kind}.'''
        result = self._values.get("kind")
        assert result is not None, "Required property 'kind' is missing"
        return typing.cast(builtins.str, result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigKubernetesResourceType(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepEksResourceScalingConfigKubernetesResourceTypeList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepEksResourceScalingConfigKubernetesResourceTypeList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__48c55243f443d578f6887435bd9e2b3aa41b48df91e838c2a4bf97543df34431)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigKubernetesResourceTypeOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__4f99584815af0fb62d907f2487692d83b01464ccda7ce783a5c2a70178caaa5a)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepEksResourceScalingConfigKubernetesResourceTypeOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigKubernetesResourceType"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigKubernetesResourceType"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigKubernetesResourceType"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__0ea1bf7c3351d2e5ddc1631be04c6c817a697ef21e6174a8836fabe2861d3562)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepEksResourceScalingConfigKubernetesResourceTypeOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepEksResourceScalingConfigKubernetesResourceTypeOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__398750c089564c6dfb35a15d8919539fe3f63ee9395b6f9052e5c9fa6a4ddfd8)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @builtins.property
    @jsii.member(jsii_name="apiVersionInput")
    def api_version_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "apiVersionInput"))

    @builtins.property
    @jsii.member(jsii_name="kindInput")
    def kind_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "kindInput"))

    @builtins.property
    @jsii.member(jsii_name="apiVersion")
    def api_version(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "apiVersion"))

    @api_version.setter
    def api_version(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__d6f312325ea724ef5ae9adc7eb71b35f28b8026a0f88feeda0860dc508a46f8c)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "apiVersion", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="kind")
    def kind(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "kind"))

    @kind.setter
    def kind(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__33d60514957bca86363343fba7eb18fd9cdf0dcb9a2e9d2fb6fc49e3d8535dd4)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "kind", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigKubernetesResourceType"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigKubernetesResourceType"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigKubernetesResourceType"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__b67566f5e0a4c4316c9ac395a9ddc703ab282f7b5b9604966a35f2e3fd4dcec5)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepEksResourceScalingConfigList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepEksResourceScalingConfigList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__8e96006f7075e626ec576aeed13dbea99918cf4ed2bf6e5bf16c3bc8b59b5125)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__1325ff52246e33ccc7ddbfee75b83c03abd932ecf9f12d7342dcb7b58d7eb3d2)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepEksResourceScalingConfigOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfig"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfig"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__599a9f4af287ebf56ac03becea4dec7d9a1969b8b42308aaebb11d67bf737225)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepEksResourceScalingConfigOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepEksResourceScalingConfigOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__416c46030082e07d832ca53d3a69806f0d7ba1044c07e49bbf12d2d5b23b6ae8)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="putEksClusters")
    def put_eks_clusters(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigEksClusters", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__35554e6cdb1ea3cead8f522e26331553152fff5cef201e61c89ba34e99dee9bc)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putEksClusters", [value]))

    @jsii.member(jsii_name="putKubernetesResourceType")
    def put_kubernetes_resource_type(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigKubernetesResourceType", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__8c3608814a9c66100069ef0f57eafd5d7193861d7aaa42b7fd0dcdf941fc6050)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putKubernetesResourceType", [value]))

    @jsii.member(jsii_name="putScalingResources")
    def put_scaling_resources(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResources", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__1189e6d51fab52affb0faf3d25827953003f172ca8cdc30e51cf68ffb4ba1943)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putScalingResources", [value]))

    @jsii.member(jsii_name="putUngraceful")
    def put_ungraceful(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigUngraceful", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__f2d2be933f0cbe026f9e3ac4a03859db21a175a1f905c72f5beae2c3d3213819)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putUngraceful", [value]))

    @jsii.member(jsii_name="resetEksClusters")
    def reset_eks_clusters(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetEksClusters", []))

    @jsii.member(jsii_name="resetKubernetesResourceType")
    def reset_kubernetes_resource_type(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetKubernetesResourceType", []))

    @jsii.member(jsii_name="resetScalingResources")
    def reset_scaling_resources(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetScalingResources", []))

    @jsii.member(jsii_name="resetTimeoutMinutes")
    def reset_timeout_minutes(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetTimeoutMinutes", []))

    @jsii.member(jsii_name="resetUngraceful")
    def reset_ungraceful(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetUngraceful", []))

    @builtins.property
    @jsii.member(jsii_name="eksClusters")
    def eks_clusters(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigEksClustersList":
        return typing.cast("ArcregionswitchPlanWorkflowStepEksResourceScalingConfigEksClustersList", jsii.get(self, "eksClusters"))

    @builtins.property
    @jsii.member(jsii_name="kubernetesResourceType")
    def kubernetes_resource_type(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigKubernetesResourceTypeList":
        return typing.cast("ArcregionswitchPlanWorkflowStepEksResourceScalingConfigKubernetesResourceTypeList", jsii.get(self, "kubernetesResourceType"))

    @builtins.property
    @jsii.member(jsii_name="scalingResources")
    def scaling_resources(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResourcesList":
        return typing.cast("ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResourcesList", jsii.get(self, "scalingResources"))

    @builtins.property
    @jsii.member(jsii_name="ungraceful")
    def ungraceful(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigUngracefulList":
        return typing.cast("ArcregionswitchPlanWorkflowStepEksResourceScalingConfigUngracefulList", jsii.get(self, "ungraceful"))

    @builtins.property
    @jsii.member(jsii_name="capacityMonitoringApproachInput")
    def capacity_monitoring_approach_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "capacityMonitoringApproachInput"))

    @builtins.property
    @jsii.member(jsii_name="eksClustersInput")
    def eks_clusters_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigEksClusters"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigEksClusters"]]], jsii.get(self, "eksClustersInput"))

    @builtins.property
    @jsii.member(jsii_name="kubernetesResourceTypeInput")
    def kubernetes_resource_type_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigKubernetesResourceType"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigKubernetesResourceType"]]], jsii.get(self, "kubernetesResourceTypeInput"))

    @builtins.property
    @jsii.member(jsii_name="scalingResourcesInput")
    def scaling_resources_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResources"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResources"]]], jsii.get(self, "scalingResourcesInput"))

    @builtins.property
    @jsii.member(jsii_name="targetPercentInput")
    def target_percent_input(self) -> typing.Optional[jsii.Number]:
        return typing.cast(typing.Optional[jsii.Number], jsii.get(self, "targetPercentInput"))

    @builtins.property
    @jsii.member(jsii_name="timeoutMinutesInput")
    def timeout_minutes_input(self) -> typing.Optional[jsii.Number]:
        return typing.cast(typing.Optional[jsii.Number], jsii.get(self, "timeoutMinutesInput"))

    @builtins.property
    @jsii.member(jsii_name="ungracefulInput")
    def ungraceful_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigUngraceful"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigUngraceful"]]], jsii.get(self, "ungracefulInput"))

    @builtins.property
    @jsii.member(jsii_name="capacityMonitoringApproach")
    def capacity_monitoring_approach(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "capacityMonitoringApproach"))

    @capacity_monitoring_approach.setter
    def capacity_monitoring_approach(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__3057544847e9cc0b3ca38a4fbd1e7f1ae2bef5b66173937311b15f4f30b1813d)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "capacityMonitoringApproach", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="targetPercent")
    def target_percent(self) -> jsii.Number:
        return typing.cast(jsii.Number, jsii.get(self, "targetPercent"))

    @target_percent.setter
    def target_percent(self, value: jsii.Number) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__06090caac72a221f02e0c20013946370b39c5bd902aade0bc6ea6b1dc5742380)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "targetPercent", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="timeoutMinutes")
    def timeout_minutes(self) -> jsii.Number:
        return typing.cast(jsii.Number, jsii.get(self, "timeoutMinutes"))

    @timeout_minutes.setter
    def timeout_minutes(self, value: jsii.Number) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__0bbe76502baa5dbde05489fdd1d3c889bb4ae62f6bcb97e425a6c8460a131ff1)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "timeoutMinutes", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepEksResourceScalingConfig"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepEksResourceScalingConfig"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepEksResourceScalingConfig"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__38368a45fc9fe0142491bd52da12b90e7421e3227be19409cca36a94ec066ac5)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResources",
    jsii_struct_bases=[],
    name_mapping={"namespace": "namespace", "resources": "resources"},
)
class ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResources:
    def __init__(
        self,
        *,
        namespace: builtins.str,
        resources: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResourcesResources", typing.Dict[builtins.str, typing.Any]]]]] = None,
    ) -> None:
        '''
        :param namespace: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#namespace ArcregionswitchPlan#namespace}.
        :param resources: resources block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#resources ArcregionswitchPlan#resources}
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__56798451682df270e0d6de026e88214e5f587c7e74925a1fa8d06747a8850a49)
            check_type(argname="argument namespace", value=namespace, expected_type=type_hints["namespace"])
            check_type(argname="argument resources", value=resources, expected_type=type_hints["resources"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "namespace": namespace,
        }
        if resources is not None:
            self._values["resources"] = resources

    @builtins.property
    def namespace(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#namespace ArcregionswitchPlan#namespace}.'''
        result = self._values.get("namespace")
        assert result is not None, "Required property 'namespace' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def resources(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResourcesResources"]]]:
        '''resources block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#resources ArcregionswitchPlan#resources}
        '''
        result = self._values.get("resources")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResourcesResources"]]], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResources(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResourcesList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResourcesList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__e1245b9ca23382ea3dddab8e25310dcd1aef3c5a29e373579e37c8426201f239)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResourcesOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__0db9371c4be5f8c21a00b0e9659bcc1ac5c06a25a83bf3b9fbec4443e28291e3)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResourcesOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResources"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResources"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResources"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__3d571d96bca8ea11187fde8a1a55ead5ec4b9b955e327bafc2e0dfb71332b7bb)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResourcesOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResourcesOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__a5b06212e65ce27558cc45cff983bd871bbde919cbf79045acb242d703e71379)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="putResources")
    def put_resources(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResourcesResources", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__ba3b0781461f51472ba32da10582f5fb18c418b716a16f1f8003fe730c6b563a)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putResources", [value]))

    @jsii.member(jsii_name="resetResources")
    def reset_resources(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetResources", []))

    @builtins.property
    @jsii.member(jsii_name="resources")
    def resources(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResourcesResourcesList":
        return typing.cast("ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResourcesResourcesList", jsii.get(self, "resources"))

    @builtins.property
    @jsii.member(jsii_name="namespaceInput")
    def namespace_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "namespaceInput"))

    @builtins.property
    @jsii.member(jsii_name="resourcesInput")
    def resources_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResourcesResources"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResourcesResources"]]], jsii.get(self, "resourcesInput"))

    @builtins.property
    @jsii.member(jsii_name="namespace")
    def namespace(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "namespace"))

    @namespace.setter
    def namespace(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__474086c136441fb37207972239c9d555e2f93343b51aac71c25154b547d1d56f)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "namespace", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResources"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResources"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResources"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__ac0d920af2e68f3fc6c1beb7a5dc43b37f9a98dff06ef0ab19d22be2cdb50aa1)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResourcesResources",
    jsii_struct_bases=[],
    name_mapping={
        "name": "name",
        "namespace": "namespace",
        "resource_name": "resourceName",
        "hpa_name": "hpaName",
    },
)
class ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResourcesResources:
    def __init__(
        self,
        *,
        name: builtins.str,
        namespace: builtins.str,
        resource_name: builtins.str,
        hpa_name: typing.Optional[builtins.str] = None,
    ) -> None:
        '''
        :param name: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#name ArcregionswitchPlan#name}.
        :param namespace: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#namespace ArcregionswitchPlan#namespace}.
        :param resource_name: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#resource_name ArcregionswitchPlan#resource_name}.
        :param hpa_name: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#hpa_name ArcregionswitchPlan#hpa_name}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__510edd0216ff707c1e857b5046d17548289663ae8c5727e933e2f0f6d3a9304d)
            check_type(argname="argument name", value=name, expected_type=type_hints["name"])
            check_type(argname="argument namespace", value=namespace, expected_type=type_hints["namespace"])
            check_type(argname="argument resource_name", value=resource_name, expected_type=type_hints["resource_name"])
            check_type(argname="argument hpa_name", value=hpa_name, expected_type=type_hints["hpa_name"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "name": name,
            "namespace": namespace,
            "resource_name": resource_name,
        }
        if hpa_name is not None:
            self._values["hpa_name"] = hpa_name

    @builtins.property
    def name(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#name ArcregionswitchPlan#name}.'''
        result = self._values.get("name")
        assert result is not None, "Required property 'name' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def namespace(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#namespace ArcregionswitchPlan#namespace}.'''
        result = self._values.get("namespace")
        assert result is not None, "Required property 'namespace' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def resource_name(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#resource_name ArcregionswitchPlan#resource_name}.'''
        result = self._values.get("resource_name")
        assert result is not None, "Required property 'resource_name' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def hpa_name(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#hpa_name ArcregionswitchPlan#hpa_name}.'''
        result = self._values.get("hpa_name")
        return typing.cast(typing.Optional[builtins.str], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResourcesResources(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResourcesResourcesList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResourcesResourcesList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__a5591ba3ab618c6b3d5d9d8e6396d182752dad4a8b7771ef05703992f45d75a2)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResourcesResourcesOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__8da6f53a4ae5e8e29458208e31381c5e7010c313c8272b3c09b74dbe77eab3cd)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResourcesResourcesOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResourcesResources"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResourcesResources"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResourcesResources"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__0dfc5191b093e537834b5c57b45d536706c313f679cfd30ffd20816c2744a6f8)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResourcesResourcesOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResourcesResourcesOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__94e1c25d59a62076d1a18be0588fe0aeb5c88473a9f14842fcd9677e72ddbb41)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="resetHpaName")
    def reset_hpa_name(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetHpaName", []))

    @builtins.property
    @jsii.member(jsii_name="hpaNameInput")
    def hpa_name_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "hpaNameInput"))

    @builtins.property
    @jsii.member(jsii_name="nameInput")
    def name_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "nameInput"))

    @builtins.property
    @jsii.member(jsii_name="namespaceInput")
    def namespace_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "namespaceInput"))

    @builtins.property
    @jsii.member(jsii_name="resourceNameInput")
    def resource_name_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "resourceNameInput"))

    @builtins.property
    @jsii.member(jsii_name="hpaName")
    def hpa_name(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "hpaName"))

    @hpa_name.setter
    def hpa_name(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__f0be181b8d1ea45d858053ead4a690a555d64185712975938d90e860b8f4bb75)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "hpaName", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="name")
    def name(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "name"))

    @name.setter
    def name(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__6cfd4d2d1191268ad6ff0d86f2bfd6c007d8f54ffa576b94a5a37677430ecac2)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "name", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="namespace")
    def namespace(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "namespace"))

    @namespace.setter
    def namespace(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__690f2518b6fa8e3f0d268b90eb9ab3a4c4ff761e7acba75bfdde62e8f54ada01)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "namespace", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="resourceName")
    def resource_name(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "resourceName"))

    @resource_name.setter
    def resource_name(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__8bab2351d20f8e1c4326485821018f54234be266963b51719fcaa63789abf291)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "resourceName", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResourcesResources"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResourcesResources"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResourcesResources"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__3e6e1038b11065394a0e16fc08668838e7887f1c24586da94fe7127b4bbca4b5)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepEksResourceScalingConfigUngraceful",
    jsii_struct_bases=[],
    name_mapping={"minimum_success_percentage": "minimumSuccessPercentage"},
)
class ArcregionswitchPlanWorkflowStepEksResourceScalingConfigUngraceful:
    def __init__(self, *, minimum_success_percentage: jsii.Number) -> None:
        '''
        :param minimum_success_percentage: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#minimum_success_percentage ArcregionswitchPlan#minimum_success_percentage}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__10a0f7df77121642918c1d3e9ceb8e1723a5d9150c408f60ccdc41692e1f80dd)
            check_type(argname="argument minimum_success_percentage", value=minimum_success_percentage, expected_type=type_hints["minimum_success_percentage"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "minimum_success_percentage": minimum_success_percentage,
        }

    @builtins.property
    def minimum_success_percentage(self) -> jsii.Number:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#minimum_success_percentage ArcregionswitchPlan#minimum_success_percentage}.'''
        result = self._values.get("minimum_success_percentage")
        assert result is not None, "Required property 'minimum_success_percentage' is missing"
        return typing.cast(jsii.Number, result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigUngraceful(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepEksResourceScalingConfigUngracefulList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepEksResourceScalingConfigUngracefulList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__ad3198a4f176129b98205feac62ff7abcc544907eee0ac8232077adea646c0c4)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigUngracefulOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__f60889a86d55fe68d16160bd56eecb6be5dc9b05245c8b6abe8a54dfb6a15970)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepEksResourceScalingConfigUngracefulOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigUngraceful"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigUngraceful"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfigUngraceful"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__ae355288709fb60fce75a2dfb79fb425029fa617ea3a9cfa45629144bea9ba13)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepEksResourceScalingConfigUngracefulOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepEksResourceScalingConfigUngracefulOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__235b93d183205989922b982f0d96525e5c9ae6b6b4881f9e37b63425764a8b67)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @builtins.property
    @jsii.member(jsii_name="minimumSuccessPercentageInput")
    def minimum_success_percentage_input(self) -> typing.Optional[jsii.Number]:
        return typing.cast(typing.Optional[jsii.Number], jsii.get(self, "minimumSuccessPercentageInput"))

    @builtins.property
    @jsii.member(jsii_name="minimumSuccessPercentage")
    def minimum_success_percentage(self) -> jsii.Number:
        return typing.cast(jsii.Number, jsii.get(self, "minimumSuccessPercentage"))

    @minimum_success_percentage.setter
    def minimum_success_percentage(self, value: jsii.Number) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__2850fbaa98849b43d2f1d6a71988adcc412475e5042c906adee50b9550ccb195)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "minimumSuccessPercentage", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigUngraceful"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigUngraceful"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigUngraceful"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__daefed9e4a99b3ea46b243968a8069b623e76e695bd74e2bc58c7c03ff0e4831)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepExecutionApprovalConfig",
    jsii_struct_bases=[],
    name_mapping={
        "approval_role": "approvalRole",
        "timeout_minutes": "timeoutMinutes",
    },
)
class ArcregionswitchPlanWorkflowStepExecutionApprovalConfig:
    def __init__(
        self,
        *,
        approval_role: builtins.str,
        timeout_minutes: typing.Optional[jsii.Number] = None,
    ) -> None:
        '''
        :param approval_role: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#approval_role ArcregionswitchPlan#approval_role}.
        :param timeout_minutes: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#timeout_minutes ArcregionswitchPlan#timeout_minutes}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__18feebdfff0b17e0e2c192f37ea579160bae0028d81fcbaabeeff38b7c693265)
            check_type(argname="argument approval_role", value=approval_role, expected_type=type_hints["approval_role"])
            check_type(argname="argument timeout_minutes", value=timeout_minutes, expected_type=type_hints["timeout_minutes"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "approval_role": approval_role,
        }
        if timeout_minutes is not None:
            self._values["timeout_minutes"] = timeout_minutes

    @builtins.property
    def approval_role(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#approval_role ArcregionswitchPlan#approval_role}.'''
        result = self._values.get("approval_role")
        assert result is not None, "Required property 'approval_role' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def timeout_minutes(self) -> typing.Optional[jsii.Number]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#timeout_minutes ArcregionswitchPlan#timeout_minutes}.'''
        result = self._values.get("timeout_minutes")
        return typing.cast(typing.Optional[jsii.Number], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepExecutionApprovalConfig(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepExecutionApprovalConfigList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepExecutionApprovalConfigList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__263235e8010f3b516eb071288bff4d1edde9f89c194fe7cd3e693b7123d623a1)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepExecutionApprovalConfigOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__5bce6ee360da762c75c89c9770183ae677172e5c6ea0843a559dd37d13af5ff7)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepExecutionApprovalConfigOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepExecutionApprovalConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepExecutionApprovalConfig"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepExecutionApprovalConfig"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__e2d929ebcc65d35ab66ccbef65ed31e35db7ea7ffd861b30ec3180b9a7d752d5)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepExecutionApprovalConfigOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepExecutionApprovalConfigOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__78ede236f11065dce353c809ae183b9ce3c6393c6e22e7a5c1315315e35e21e8)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="resetTimeoutMinutes")
    def reset_timeout_minutes(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetTimeoutMinutes", []))

    @builtins.property
    @jsii.member(jsii_name="approvalRoleInput")
    def approval_role_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "approvalRoleInput"))

    @builtins.property
    @jsii.member(jsii_name="timeoutMinutesInput")
    def timeout_minutes_input(self) -> typing.Optional[jsii.Number]:
        return typing.cast(typing.Optional[jsii.Number], jsii.get(self, "timeoutMinutesInput"))

    @builtins.property
    @jsii.member(jsii_name="approvalRole")
    def approval_role(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "approvalRole"))

    @approval_role.setter
    def approval_role(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__f5b2b90a46c21b355660a75820dad8f1f72fdb647a829357d61c47178504be2a)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "approvalRole", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="timeoutMinutes")
    def timeout_minutes(self) -> jsii.Number:
        return typing.cast(jsii.Number, jsii.get(self, "timeoutMinutes"))

    @timeout_minutes.setter
    def timeout_minutes(self, value: jsii.Number) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__3fdd11e5d5d5a193a1885ec608bd651b8405c62155dc47df87f152e32b8989a9)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "timeoutMinutes", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepExecutionApprovalConfig"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepExecutionApprovalConfig"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepExecutionApprovalConfig"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__ef20baef67816f5eb1d5451ab32ab2c3515b0aa1e42caa298506c175e2258db7)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepGlobalAuroraConfig",
    jsii_struct_bases=[],
    name_mapping={
        "behavior": "behavior",
        "database_cluster_arns": "databaseClusterArns",
        "global_cluster_identifier": "globalClusterIdentifier",
        "cross_account_role": "crossAccountRole",
        "external_id": "externalId",
        "timeout_minutes": "timeoutMinutes",
        "ungraceful": "ungraceful",
    },
)
class ArcregionswitchPlanWorkflowStepGlobalAuroraConfig:
    def __init__(
        self,
        *,
        behavior: builtins.str,
        database_cluster_arns: typing.Sequence[builtins.str],
        global_cluster_identifier: builtins.str,
        cross_account_role: typing.Optional[builtins.str] = None,
        external_id: typing.Optional[builtins.str] = None,
        timeout_minutes: typing.Optional[jsii.Number] = None,
        ungraceful: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepGlobalAuroraConfigUngraceful", typing.Dict[builtins.str, typing.Any]]]]] = None,
    ) -> None:
        '''
        :param behavior: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#behavior ArcregionswitchPlan#behavior}.
        :param database_cluster_arns: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#database_cluster_arns ArcregionswitchPlan#database_cluster_arns}.
        :param global_cluster_identifier: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#global_cluster_identifier ArcregionswitchPlan#global_cluster_identifier}.
        :param cross_account_role: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cross_account_role ArcregionswitchPlan#cross_account_role}.
        :param external_id: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#external_id ArcregionswitchPlan#external_id}.
        :param timeout_minutes: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#timeout_minutes ArcregionswitchPlan#timeout_minutes}.
        :param ungraceful: ungraceful block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#ungraceful ArcregionswitchPlan#ungraceful}
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__5947d1edfd055694ad29ae13b62753ec1e6525cf58138bfc8c6ad7d939c6ae63)
            check_type(argname="argument behavior", value=behavior, expected_type=type_hints["behavior"])
            check_type(argname="argument database_cluster_arns", value=database_cluster_arns, expected_type=type_hints["database_cluster_arns"])
            check_type(argname="argument global_cluster_identifier", value=global_cluster_identifier, expected_type=type_hints["global_cluster_identifier"])
            check_type(argname="argument cross_account_role", value=cross_account_role, expected_type=type_hints["cross_account_role"])
            check_type(argname="argument external_id", value=external_id, expected_type=type_hints["external_id"])
            check_type(argname="argument timeout_minutes", value=timeout_minutes, expected_type=type_hints["timeout_minutes"])
            check_type(argname="argument ungraceful", value=ungraceful, expected_type=type_hints["ungraceful"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "behavior": behavior,
            "database_cluster_arns": database_cluster_arns,
            "global_cluster_identifier": global_cluster_identifier,
        }
        if cross_account_role is not None:
            self._values["cross_account_role"] = cross_account_role
        if external_id is not None:
            self._values["external_id"] = external_id
        if timeout_minutes is not None:
            self._values["timeout_minutes"] = timeout_minutes
        if ungraceful is not None:
            self._values["ungraceful"] = ungraceful

    @builtins.property
    def behavior(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#behavior ArcregionswitchPlan#behavior}.'''
        result = self._values.get("behavior")
        assert result is not None, "Required property 'behavior' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def database_cluster_arns(self) -> typing.List[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#database_cluster_arns ArcregionswitchPlan#database_cluster_arns}.'''
        result = self._values.get("database_cluster_arns")
        assert result is not None, "Required property 'database_cluster_arns' is missing"
        return typing.cast(typing.List[builtins.str], result)

    @builtins.property
    def global_cluster_identifier(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#global_cluster_identifier ArcregionswitchPlan#global_cluster_identifier}.'''
        result = self._values.get("global_cluster_identifier")
        assert result is not None, "Required property 'global_cluster_identifier' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def cross_account_role(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cross_account_role ArcregionswitchPlan#cross_account_role}.'''
        result = self._values.get("cross_account_role")
        return typing.cast(typing.Optional[builtins.str], result)

    @builtins.property
    def external_id(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#external_id ArcregionswitchPlan#external_id}.'''
        result = self._values.get("external_id")
        return typing.cast(typing.Optional[builtins.str], result)

    @builtins.property
    def timeout_minutes(self) -> typing.Optional[jsii.Number]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#timeout_minutes ArcregionswitchPlan#timeout_minutes}.'''
        result = self._values.get("timeout_minutes")
        return typing.cast(typing.Optional[jsii.Number], result)

    @builtins.property
    def ungraceful(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepGlobalAuroraConfigUngraceful"]]]:
        '''ungraceful block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#ungraceful ArcregionswitchPlan#ungraceful}
        '''
        result = self._values.get("ungraceful")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepGlobalAuroraConfigUngraceful"]]], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepGlobalAuroraConfig(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepGlobalAuroraConfigList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepGlobalAuroraConfigList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__22111a32c94305bd22966d33b7c77a189db5c7d9cffb11bf1565b4df487f63e5)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepGlobalAuroraConfigOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__afe40a06755f8b34ec54f3f3783bd71196eab3ce1e5c2ec348221a573427499a)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepGlobalAuroraConfigOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepGlobalAuroraConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepGlobalAuroraConfig"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepGlobalAuroraConfig"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__571b88f0af48f1c7de576e43fbaf5c24dfd2495ce9cacba416a3c47c0681915e)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepGlobalAuroraConfigOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepGlobalAuroraConfigOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__c48925d9a85ebdb4f0fc4479385a6da5c425555c2ddaba691b8599c6a67c93dd)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="putUngraceful")
    def put_ungraceful(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepGlobalAuroraConfigUngraceful", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__53886943d567ba0731f210bd3a3471488b0f0484b2a2ff466b5fd3a3301ea441)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putUngraceful", [value]))

    @jsii.member(jsii_name="resetCrossAccountRole")
    def reset_cross_account_role(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetCrossAccountRole", []))

    @jsii.member(jsii_name="resetExternalId")
    def reset_external_id(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetExternalId", []))

    @jsii.member(jsii_name="resetTimeoutMinutes")
    def reset_timeout_minutes(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetTimeoutMinutes", []))

    @jsii.member(jsii_name="resetUngraceful")
    def reset_ungraceful(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetUngraceful", []))

    @builtins.property
    @jsii.member(jsii_name="ungraceful")
    def ungraceful(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepGlobalAuroraConfigUngracefulList":
        return typing.cast("ArcregionswitchPlanWorkflowStepGlobalAuroraConfigUngracefulList", jsii.get(self, "ungraceful"))

    @builtins.property
    @jsii.member(jsii_name="behaviorInput")
    def behavior_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "behaviorInput"))

    @builtins.property
    @jsii.member(jsii_name="crossAccountRoleInput")
    def cross_account_role_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "crossAccountRoleInput"))

    @builtins.property
    @jsii.member(jsii_name="databaseClusterArnsInput")
    def database_cluster_arns_input(self) -> typing.Optional[typing.List[builtins.str]]:
        return typing.cast(typing.Optional[typing.List[builtins.str]], jsii.get(self, "databaseClusterArnsInput"))

    @builtins.property
    @jsii.member(jsii_name="externalIdInput")
    def external_id_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "externalIdInput"))

    @builtins.property
    @jsii.member(jsii_name="globalClusterIdentifierInput")
    def global_cluster_identifier_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "globalClusterIdentifierInput"))

    @builtins.property
    @jsii.member(jsii_name="timeoutMinutesInput")
    def timeout_minutes_input(self) -> typing.Optional[jsii.Number]:
        return typing.cast(typing.Optional[jsii.Number], jsii.get(self, "timeoutMinutesInput"))

    @builtins.property
    @jsii.member(jsii_name="ungracefulInput")
    def ungraceful_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepGlobalAuroraConfigUngraceful"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepGlobalAuroraConfigUngraceful"]]], jsii.get(self, "ungracefulInput"))

    @builtins.property
    @jsii.member(jsii_name="behavior")
    def behavior(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "behavior"))

    @behavior.setter
    def behavior(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__90acc7f7a789ea8ab0e23713f3a384a65b455c1654fb50f9d54a54cc95eeda08)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "behavior", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="crossAccountRole")
    def cross_account_role(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "crossAccountRole"))

    @cross_account_role.setter
    def cross_account_role(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__dff2daf771424c168143324e3dc89534dd8a199af2e893a23289a76a047dd293)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "crossAccountRole", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="databaseClusterArns")
    def database_cluster_arns(self) -> typing.List[builtins.str]:
        return typing.cast(typing.List[builtins.str], jsii.get(self, "databaseClusterArns"))

    @database_cluster_arns.setter
    def database_cluster_arns(self, value: typing.List[builtins.str]) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__05b429a4b2e339ca9067f55066ebf33943e8f66807c8ac1f40631ecaa31ba1f9)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "databaseClusterArns", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="externalId")
    def external_id(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "externalId"))

    @external_id.setter
    def external_id(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__1dd82fa06be3e2fdcc8b6eb66010c19e9b797160066e4f46056aa1c25dea74da)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "externalId", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="globalClusterIdentifier")
    def global_cluster_identifier(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "globalClusterIdentifier"))

    @global_cluster_identifier.setter
    def global_cluster_identifier(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__f69788a6a5b25d63c52c9f41d3a11cf8d1918cbbbf944228ca60f8913ca7df63)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "globalClusterIdentifier", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="timeoutMinutes")
    def timeout_minutes(self) -> jsii.Number:
        return typing.cast(jsii.Number, jsii.get(self, "timeoutMinutes"))

    @timeout_minutes.setter
    def timeout_minutes(self, value: jsii.Number) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__64ede00197750613752fad796d3676ac01ea9f02dd3b61c8a2bfc8c1b7e587e4)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "timeoutMinutes", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepGlobalAuroraConfig"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepGlobalAuroraConfig"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepGlobalAuroraConfig"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__96607607e6f79bed2e5d2662d62158a00635aa0886601d2f908301f6610fd86b)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepGlobalAuroraConfigUngraceful",
    jsii_struct_bases=[],
    name_mapping={"ungraceful": "ungraceful"},
)
class ArcregionswitchPlanWorkflowStepGlobalAuroraConfigUngraceful:
    def __init__(self, *, ungraceful: builtins.str) -> None:
        '''
        :param ungraceful: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#ungraceful ArcregionswitchPlan#ungraceful}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__35935080c3fd45f5541117a75a78d0ac7af19cf026801bb03262c6b62bc6ce26)
            check_type(argname="argument ungraceful", value=ungraceful, expected_type=type_hints["ungraceful"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "ungraceful": ungraceful,
        }

    @builtins.property
    def ungraceful(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#ungraceful ArcregionswitchPlan#ungraceful}.'''
        result = self._values.get("ungraceful")
        assert result is not None, "Required property 'ungraceful' is missing"
        return typing.cast(builtins.str, result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepGlobalAuroraConfigUngraceful(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepGlobalAuroraConfigUngracefulList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepGlobalAuroraConfigUngracefulList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__93693952a0c6f03edfe1f78a11706ae7c5342216ee39a60244eb074328134879)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepGlobalAuroraConfigUngracefulOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__07adfeb028994e1cd95a3720ebb5029272c69272907f1d58621abefeb9f3b7dd)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepGlobalAuroraConfigUngracefulOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepGlobalAuroraConfigUngraceful"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepGlobalAuroraConfigUngraceful"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepGlobalAuroraConfigUngraceful"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__6a3745049f44a713a7639f39af0a6c3f13b2f11bf88be44f919143698b725f51)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepGlobalAuroraConfigUngracefulOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepGlobalAuroraConfigUngracefulOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__9e930c4e9f69b8aa837500163b5cda657d0dcea85e18f1331c884771e2d7a2c0)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @builtins.property
    @jsii.member(jsii_name="ungracefulInput")
    def ungraceful_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "ungracefulInput"))

    @builtins.property
    @jsii.member(jsii_name="ungraceful")
    def ungraceful(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "ungraceful"))

    @ungraceful.setter
    def ungraceful(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__302cf316c2b5edb3520dd54bbce78b6b078b0a46a10131504ab72334f8bafc0b)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "ungraceful", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepGlobalAuroraConfigUngraceful"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepGlobalAuroraConfigUngraceful"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepGlobalAuroraConfigUngraceful"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__218b9096f5c63ff6faddfc5f8803870c199559e8f27da5bb3a80d22acb4ea692)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__0c96f8f01ae7626fd95f6e97f6b9ef02d01edb50a6ec64a536d808603b99306b)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__6140253b7af76a24ddb64dcd6778ebafa57988055f0a27b8bdf806dc5761fe93)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStep"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStep"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStep"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__9f84d70292d31d9aadb105792dd1a98e39f771eb93261f1ba82258a896e2f8ad)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__4f2387ed69a1caa25eb522e5076ec61bfe6aaf2df8d8f7bd47d6cb3cec640c8f)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="putArcRoutingControlConfig")
    def put_arc_routing_control_config(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepArcRoutingControlConfig", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__86db16cbaa30dc32043a576654b8e66a4d11255b283059a26c321e4d5033a649)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putArcRoutingControlConfig", [value]))

    @jsii.member(jsii_name="putCustomActionLambdaConfig")
    def put_custom_action_lambda_config(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepCustomActionLambdaConfig", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__74bc9a1b2c18d4736d0fc94fdfbc66c65fe9a3407f0e1fed00ba340fbfe11944)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putCustomActionLambdaConfig", [value]))

    @jsii.member(jsii_name="putDocumentDbConfig")
    def put_document_db_config(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepDocumentDbConfig", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__8993c1cdd7ceee409a2013e43999d3459a151c2ad46164c041a239152c103526)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putDocumentDbConfig", [value]))

    @jsii.member(jsii_name="putEc2AsgCapacityIncreaseConfig")
    def put_ec2_asg_capacity_increase_config(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfig", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__665cfbfd314524ba6c6a4a375d6e25735e11e8612229471b6c0673418654d72e)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putEc2AsgCapacityIncreaseConfig", [value]))

    @jsii.member(jsii_name="putEcsCapacityIncreaseConfig")
    def put_ecs_capacity_increase_config(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfig", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__4087a319e99b22f4555aa8e6b404c1382cb24cca943f73ec0a80d7c777fbe589)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putEcsCapacityIncreaseConfig", [value]))

    @jsii.member(jsii_name="putEksResourceScalingConfig")
    def put_eks_resource_scaling_config(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepEksResourceScalingConfig", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__4e05236813222ee75361e7f2fe201a72c83862f7e1f7795340984cdaa22f42d4)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putEksResourceScalingConfig", [value]))

    @jsii.member(jsii_name="putExecutionApprovalConfig")
    def put_execution_approval_config(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepExecutionApprovalConfig", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__a57cfb1c03be27dc2908884b4cbf88b70b7e50387762516047b14362a0303839)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putExecutionApprovalConfig", [value]))

    @jsii.member(jsii_name="putGlobalAuroraConfig")
    def put_global_aurora_config(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepGlobalAuroraConfig", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__90c54f6a5ff47d2f1454f2538a3ab5d2329048be047347f3c45bafe4a6ea0847)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putGlobalAuroraConfig", [value]))

    @jsii.member(jsii_name="putParallelConfig")
    def put_parallel_config(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfig", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__74f63239b2560d924d58797a6007c879b2bc5e16c85a1ce59f99ad76620a16ed)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putParallelConfig", [value]))

    @jsii.member(jsii_name="putRegionSwitchPlanConfig")
    def put_region_switch_plan_config(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepRegionSwitchPlanConfig", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__aaa5caa4da2b33abc329a54056b36403f1b4a2330285ab1aab0475d1724c39c7)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putRegionSwitchPlanConfig", [value]))

    @jsii.member(jsii_name="putRoute53HealthCheckConfig")
    def put_route53_health_check_config(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfig", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__a6c44c336b8d03d28029f6f001aa965f15e7995796830bd3f79e9f081d42f500)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putRoute53HealthCheckConfig", [value]))

    @jsii.member(jsii_name="resetArcRoutingControlConfig")
    def reset_arc_routing_control_config(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetArcRoutingControlConfig", []))

    @jsii.member(jsii_name="resetCustomActionLambdaConfig")
    def reset_custom_action_lambda_config(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetCustomActionLambdaConfig", []))

    @jsii.member(jsii_name="resetDescription")
    def reset_description(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetDescription", []))

    @jsii.member(jsii_name="resetDocumentDbConfig")
    def reset_document_db_config(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetDocumentDbConfig", []))

    @jsii.member(jsii_name="resetEc2AsgCapacityIncreaseConfig")
    def reset_ec2_asg_capacity_increase_config(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetEc2AsgCapacityIncreaseConfig", []))

    @jsii.member(jsii_name="resetEcsCapacityIncreaseConfig")
    def reset_ecs_capacity_increase_config(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetEcsCapacityIncreaseConfig", []))

    @jsii.member(jsii_name="resetEksResourceScalingConfig")
    def reset_eks_resource_scaling_config(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetEksResourceScalingConfig", []))

    @jsii.member(jsii_name="resetExecutionApprovalConfig")
    def reset_execution_approval_config(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetExecutionApprovalConfig", []))

    @jsii.member(jsii_name="resetGlobalAuroraConfig")
    def reset_global_aurora_config(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetGlobalAuroraConfig", []))

    @jsii.member(jsii_name="resetParallelConfig")
    def reset_parallel_config(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetParallelConfig", []))

    @jsii.member(jsii_name="resetRegionSwitchPlanConfig")
    def reset_region_switch_plan_config(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetRegionSwitchPlanConfig", []))

    @jsii.member(jsii_name="resetRoute53HealthCheckConfig")
    def reset_route53_health_check_config(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetRoute53HealthCheckConfig", []))

    @builtins.property
    @jsii.member(jsii_name="arcRoutingControlConfig")
    def arc_routing_control_config(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepArcRoutingControlConfigList":
        return typing.cast("ArcregionswitchPlanWorkflowStepArcRoutingControlConfigList", jsii.get(self, "arcRoutingControlConfig"))

    @builtins.property
    @jsii.member(jsii_name="customActionLambdaConfig")
    def custom_action_lambda_config(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigList":
        return typing.cast("ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigList", jsii.get(self, "customActionLambdaConfig"))

    @builtins.property
    @jsii.member(jsii_name="documentDbConfig")
    def document_db_config(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepDocumentDbConfigList":
        return typing.cast("ArcregionswitchPlanWorkflowStepDocumentDbConfigList", jsii.get(self, "documentDbConfig"))

    @builtins.property
    @jsii.member(jsii_name="ec2AsgCapacityIncreaseConfig")
    def ec2_asg_capacity_increase_config(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigList":
        return typing.cast("ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigList", jsii.get(self, "ec2AsgCapacityIncreaseConfig"))

    @builtins.property
    @jsii.member(jsii_name="ecsCapacityIncreaseConfig")
    def ecs_capacity_increase_config(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigList":
        return typing.cast("ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigList", jsii.get(self, "ecsCapacityIncreaseConfig"))

    @builtins.property
    @jsii.member(jsii_name="eksResourceScalingConfig")
    def eks_resource_scaling_config(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigList":
        return typing.cast("ArcregionswitchPlanWorkflowStepEksResourceScalingConfigList", jsii.get(self, "eksResourceScalingConfig"))

    @builtins.property
    @jsii.member(jsii_name="executionApprovalConfig")
    def execution_approval_config(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepExecutionApprovalConfigList":
        return typing.cast("ArcregionswitchPlanWorkflowStepExecutionApprovalConfigList", jsii.get(self, "executionApprovalConfig"))

    @builtins.property
    @jsii.member(jsii_name="globalAuroraConfig")
    def global_aurora_config(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepGlobalAuroraConfigList":
        return typing.cast("ArcregionswitchPlanWorkflowStepGlobalAuroraConfigList", jsii.get(self, "globalAuroraConfig"))

    @builtins.property
    @jsii.member(jsii_name="parallelConfig")
    def parallel_config(self) -> "ArcregionswitchPlanWorkflowStepParallelConfigList":
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigList", jsii.get(self, "parallelConfig"))

    @builtins.property
    @jsii.member(jsii_name="regionSwitchPlanConfig")
    def region_switch_plan_config(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepRegionSwitchPlanConfigList":
        return typing.cast("ArcregionswitchPlanWorkflowStepRegionSwitchPlanConfigList", jsii.get(self, "regionSwitchPlanConfig"))

    @builtins.property
    @jsii.member(jsii_name="route53HealthCheckConfig")
    def route53_health_check_config(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfigList":
        return typing.cast("ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfigList", jsii.get(self, "route53HealthCheckConfig"))

    @builtins.property
    @jsii.member(jsii_name="arcRoutingControlConfigInput")
    def arc_routing_control_config_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepArcRoutingControlConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepArcRoutingControlConfig"]]], jsii.get(self, "arcRoutingControlConfigInput"))

    @builtins.property
    @jsii.member(jsii_name="customActionLambdaConfigInput")
    def custom_action_lambda_config_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepCustomActionLambdaConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepCustomActionLambdaConfig"]]], jsii.get(self, "customActionLambdaConfigInput"))

    @builtins.property
    @jsii.member(jsii_name="descriptionInput")
    def description_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "descriptionInput"))

    @builtins.property
    @jsii.member(jsii_name="documentDbConfigInput")
    def document_db_config_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepDocumentDbConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepDocumentDbConfig"]]], jsii.get(self, "documentDbConfigInput"))

    @builtins.property
    @jsii.member(jsii_name="ec2AsgCapacityIncreaseConfigInput")
    def ec2_asg_capacity_increase_config_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfig"]]], jsii.get(self, "ec2AsgCapacityIncreaseConfigInput"))

    @builtins.property
    @jsii.member(jsii_name="ecsCapacityIncreaseConfigInput")
    def ecs_capacity_increase_config_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfig"]]], jsii.get(self, "ecsCapacityIncreaseConfigInput"))

    @builtins.property
    @jsii.member(jsii_name="eksResourceScalingConfigInput")
    def eks_resource_scaling_config_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepEksResourceScalingConfig"]]], jsii.get(self, "eksResourceScalingConfigInput"))

    @builtins.property
    @jsii.member(jsii_name="executionApprovalConfigInput")
    def execution_approval_config_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepExecutionApprovalConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepExecutionApprovalConfig"]]], jsii.get(self, "executionApprovalConfigInput"))

    @builtins.property
    @jsii.member(jsii_name="executionBlockTypeInput")
    def execution_block_type_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "executionBlockTypeInput"))

    @builtins.property
    @jsii.member(jsii_name="globalAuroraConfigInput")
    def global_aurora_config_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepGlobalAuroraConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepGlobalAuroraConfig"]]], jsii.get(self, "globalAuroraConfigInput"))

    @builtins.property
    @jsii.member(jsii_name="nameInput")
    def name_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "nameInput"))

    @builtins.property
    @jsii.member(jsii_name="parallelConfigInput")
    def parallel_config_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfig"]]], jsii.get(self, "parallelConfigInput"))

    @builtins.property
    @jsii.member(jsii_name="regionSwitchPlanConfigInput")
    def region_switch_plan_config_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepRegionSwitchPlanConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepRegionSwitchPlanConfig"]]], jsii.get(self, "regionSwitchPlanConfigInput"))

    @builtins.property
    @jsii.member(jsii_name="route53HealthCheckConfigInput")
    def route53_health_check_config_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfig"]]], jsii.get(self, "route53HealthCheckConfigInput"))

    @builtins.property
    @jsii.member(jsii_name="description")
    def description(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "description"))

    @description.setter
    def description(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__ec5ee852367a725d44abbd95225eb53244338e7a638068f56da87aa0502f05c5)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "description", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="executionBlockType")
    def execution_block_type(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "executionBlockType"))

    @execution_block_type.setter
    def execution_block_type(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__d7fafb43f797b8961b640886c64858386201683523ab3ba6382b150145ef95c7)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "executionBlockType", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="name")
    def name(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "name"))

    @name.setter
    def name(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__9c8295272242cc5613b3acca082f4e543f18468c7f24602640f9621693630f1e)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "name", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStep"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStep"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStep"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__19f8b814181096400bead295b092af7b8c0d4646971e0b4fb534219f983de871)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfig",
    jsii_struct_bases=[],
    name_mapping={"step": "step"},
)
class ArcregionswitchPlanWorkflowStepParallelConfig:
    def __init__(
        self,
        *,
        step: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStep", typing.Dict[builtins.str, typing.Any]]]]] = None,
    ) -> None:
        '''
        :param step: step block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#step ArcregionswitchPlan#step}
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__7cde04993fcbddef7b64a8355a8be493ca2726e57747b9ee7a59956a80a8f890)
            check_type(argname="argument step", value=step, expected_type=type_hints["step"])
        self._values: typing.Dict[builtins.str, typing.Any] = {}
        if step is not None:
            self._values["step"] = step

    @builtins.property
    def step(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStep"]]]:
        '''step block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#step ArcregionswitchPlan#step}
        '''
        result = self._values.get("step")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStep"]]], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepParallelConfig(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepParallelConfigList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__6e4527508de621ce7a297fa10827a6326c622fda0f4ddc6f71b427c7192c8729)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__7da6a5e6b66534abe047459b48d9209f2e8ec1458d30047c90b5ad33c9fbb148)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfig"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfig"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__49b37b9acfd5404759070356010fd3a99dd988209f27177272fdabf0fe769031)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepParallelConfigOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__fb731f31089998a53f87cdd6f11fde0508c3dad370ca420e277a81e12f7b5125)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="putStep")
    def put_step(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStep", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__c12f236251dad3f8dc8ffa344e061dfa1cfe739ad72fac4b3d638f826cfeeb89)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putStep", [value]))

    @jsii.member(jsii_name="resetStep")
    def reset_step(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetStep", []))

    @builtins.property
    @jsii.member(jsii_name="step")
    def step(self) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepList":
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepList", jsii.get(self, "step"))

    @builtins.property
    @jsii.member(jsii_name="stepInput")
    def step_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStep"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStep"]]], jsii.get(self, "stepInput"))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfig"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfig"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfig"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__f0630107a7a71010c21fe7b67c84a4d65047d2d6018be09475f3a784f7b79dad)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStep",
    jsii_struct_bases=[],
    name_mapping={
        "execution_block_type": "executionBlockType",
        "name": "name",
        "arc_routing_control_config": "arcRoutingControlConfig",
        "custom_action_lambda_config": "customActionLambdaConfig",
        "description": "description",
        "document_db_config": "documentDbConfig",
        "ec2_asg_capacity_increase_config": "ec2AsgCapacityIncreaseConfig",
        "ecs_capacity_increase_config": "ecsCapacityIncreaseConfig",
        "eks_resource_scaling_config": "eksResourceScalingConfig",
        "execution_approval_config": "executionApprovalConfig",
        "global_aurora_config": "globalAuroraConfig",
        "region_switch_plan_config": "regionSwitchPlanConfig",
        "route53_health_check_config": "route53HealthCheckConfig",
    },
)
class ArcregionswitchPlanWorkflowStepParallelConfigStep:
    def __init__(
        self,
        *,
        execution_block_type: builtins.str,
        name: builtins.str,
        arc_routing_control_config: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfig", typing.Dict[builtins.str, typing.Any]]]]] = None,
        custom_action_lambda_config: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfig", typing.Dict[builtins.str, typing.Any]]]]] = None,
        description: typing.Optional[builtins.str] = None,
        document_db_config: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfig", typing.Dict[builtins.str, typing.Any]]]]] = None,
        ec2_asg_capacity_increase_config: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfig", typing.Dict[builtins.str, typing.Any]]]]] = None,
        ecs_capacity_increase_config: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfig", typing.Dict[builtins.str, typing.Any]]]]] = None,
        eks_resource_scaling_config: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfig", typing.Dict[builtins.str, typing.Any]]]]] = None,
        execution_approval_config: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepExecutionApprovalConfig", typing.Dict[builtins.str, typing.Any]]]]] = None,
        global_aurora_config: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfig", typing.Dict[builtins.str, typing.Any]]]]] = None,
        region_switch_plan_config: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepRegionSwitchPlanConfig", typing.Dict[builtins.str, typing.Any]]]]] = None,
        route53_health_check_config: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfig", typing.Dict[builtins.str, typing.Any]]]]] = None,
    ) -> None:
        '''
        :param execution_block_type: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#execution_block_type ArcregionswitchPlan#execution_block_type}.
        :param name: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#name ArcregionswitchPlan#name}.
        :param arc_routing_control_config: arc_routing_control_config block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#arc_routing_control_config ArcregionswitchPlan#arc_routing_control_config}
        :param custom_action_lambda_config: custom_action_lambda_config block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#custom_action_lambda_config ArcregionswitchPlan#custom_action_lambda_config}
        :param description: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#description ArcregionswitchPlan#description}.
        :param document_db_config: document_db_config block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#document_db_config ArcregionswitchPlan#document_db_config}
        :param ec2_asg_capacity_increase_config: ec2_asg_capacity_increase_config block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#ec2_asg_capacity_increase_config ArcregionswitchPlan#ec2_asg_capacity_increase_config}
        :param ecs_capacity_increase_config: ecs_capacity_increase_config block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#ecs_capacity_increase_config ArcregionswitchPlan#ecs_capacity_increase_config}
        :param eks_resource_scaling_config: eks_resource_scaling_config block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#eks_resource_scaling_config ArcregionswitchPlan#eks_resource_scaling_config}
        :param execution_approval_config: execution_approval_config block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#execution_approval_config ArcregionswitchPlan#execution_approval_config}
        :param global_aurora_config: global_aurora_config block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#global_aurora_config ArcregionswitchPlan#global_aurora_config}
        :param region_switch_plan_config: region_switch_plan_config block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#region_switch_plan_config ArcregionswitchPlan#region_switch_plan_config}
        :param route53_health_check_config: route53_health_check_config block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#route53_health_check_config ArcregionswitchPlan#route53_health_check_config}
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__956601b79e8b2431977bcff29522aa39a60b325bf091f310edf6e7aa91581023)
            check_type(argname="argument execution_block_type", value=execution_block_type, expected_type=type_hints["execution_block_type"])
            check_type(argname="argument name", value=name, expected_type=type_hints["name"])
            check_type(argname="argument arc_routing_control_config", value=arc_routing_control_config, expected_type=type_hints["arc_routing_control_config"])
            check_type(argname="argument custom_action_lambda_config", value=custom_action_lambda_config, expected_type=type_hints["custom_action_lambda_config"])
            check_type(argname="argument description", value=description, expected_type=type_hints["description"])
            check_type(argname="argument document_db_config", value=document_db_config, expected_type=type_hints["document_db_config"])
            check_type(argname="argument ec2_asg_capacity_increase_config", value=ec2_asg_capacity_increase_config, expected_type=type_hints["ec2_asg_capacity_increase_config"])
            check_type(argname="argument ecs_capacity_increase_config", value=ecs_capacity_increase_config, expected_type=type_hints["ecs_capacity_increase_config"])
            check_type(argname="argument eks_resource_scaling_config", value=eks_resource_scaling_config, expected_type=type_hints["eks_resource_scaling_config"])
            check_type(argname="argument execution_approval_config", value=execution_approval_config, expected_type=type_hints["execution_approval_config"])
            check_type(argname="argument global_aurora_config", value=global_aurora_config, expected_type=type_hints["global_aurora_config"])
            check_type(argname="argument region_switch_plan_config", value=region_switch_plan_config, expected_type=type_hints["region_switch_plan_config"])
            check_type(argname="argument route53_health_check_config", value=route53_health_check_config, expected_type=type_hints["route53_health_check_config"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "execution_block_type": execution_block_type,
            "name": name,
        }
        if arc_routing_control_config is not None:
            self._values["arc_routing_control_config"] = arc_routing_control_config
        if custom_action_lambda_config is not None:
            self._values["custom_action_lambda_config"] = custom_action_lambda_config
        if description is not None:
            self._values["description"] = description
        if document_db_config is not None:
            self._values["document_db_config"] = document_db_config
        if ec2_asg_capacity_increase_config is not None:
            self._values["ec2_asg_capacity_increase_config"] = ec2_asg_capacity_increase_config
        if ecs_capacity_increase_config is not None:
            self._values["ecs_capacity_increase_config"] = ecs_capacity_increase_config
        if eks_resource_scaling_config is not None:
            self._values["eks_resource_scaling_config"] = eks_resource_scaling_config
        if execution_approval_config is not None:
            self._values["execution_approval_config"] = execution_approval_config
        if global_aurora_config is not None:
            self._values["global_aurora_config"] = global_aurora_config
        if region_switch_plan_config is not None:
            self._values["region_switch_plan_config"] = region_switch_plan_config
        if route53_health_check_config is not None:
            self._values["route53_health_check_config"] = route53_health_check_config

    @builtins.property
    def execution_block_type(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#execution_block_type ArcregionswitchPlan#execution_block_type}.'''
        result = self._values.get("execution_block_type")
        assert result is not None, "Required property 'execution_block_type' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def name(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#name ArcregionswitchPlan#name}.'''
        result = self._values.get("name")
        assert result is not None, "Required property 'name' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def arc_routing_control_config(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfig"]]]:
        '''arc_routing_control_config block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#arc_routing_control_config ArcregionswitchPlan#arc_routing_control_config}
        '''
        result = self._values.get("arc_routing_control_config")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfig"]]], result)

    @builtins.property
    def custom_action_lambda_config(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfig"]]]:
        '''custom_action_lambda_config block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#custom_action_lambda_config ArcregionswitchPlan#custom_action_lambda_config}
        '''
        result = self._values.get("custom_action_lambda_config")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfig"]]], result)

    @builtins.property
    def description(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#description ArcregionswitchPlan#description}.'''
        result = self._values.get("description")
        return typing.cast(typing.Optional[builtins.str], result)

    @builtins.property
    def document_db_config(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfig"]]]:
        '''document_db_config block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#document_db_config ArcregionswitchPlan#document_db_config}
        '''
        result = self._values.get("document_db_config")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfig"]]], result)

    @builtins.property
    def ec2_asg_capacity_increase_config(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfig"]]]:
        '''ec2_asg_capacity_increase_config block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#ec2_asg_capacity_increase_config ArcregionswitchPlan#ec2_asg_capacity_increase_config}
        '''
        result = self._values.get("ec2_asg_capacity_increase_config")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfig"]]], result)

    @builtins.property
    def ecs_capacity_increase_config(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfig"]]]:
        '''ecs_capacity_increase_config block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#ecs_capacity_increase_config ArcregionswitchPlan#ecs_capacity_increase_config}
        '''
        result = self._values.get("ecs_capacity_increase_config")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfig"]]], result)

    @builtins.property
    def eks_resource_scaling_config(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfig"]]]:
        '''eks_resource_scaling_config block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#eks_resource_scaling_config ArcregionswitchPlan#eks_resource_scaling_config}
        '''
        result = self._values.get("eks_resource_scaling_config")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfig"]]], result)

    @builtins.property
    def execution_approval_config(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepExecutionApprovalConfig"]]]:
        '''execution_approval_config block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#execution_approval_config ArcregionswitchPlan#execution_approval_config}
        '''
        result = self._values.get("execution_approval_config")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepExecutionApprovalConfig"]]], result)

    @builtins.property
    def global_aurora_config(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfig"]]]:
        '''global_aurora_config block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#global_aurora_config ArcregionswitchPlan#global_aurora_config}
        '''
        result = self._values.get("global_aurora_config")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfig"]]], result)

    @builtins.property
    def region_switch_plan_config(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepRegionSwitchPlanConfig"]]]:
        '''region_switch_plan_config block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#region_switch_plan_config ArcregionswitchPlan#region_switch_plan_config}
        '''
        result = self._values.get("region_switch_plan_config")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepRegionSwitchPlanConfig"]]], result)

    @builtins.property
    def route53_health_check_config(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfig"]]]:
        '''route53_health_check_config block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#route53_health_check_config ArcregionswitchPlan#route53_health_check_config}
        '''
        result = self._values.get("route53_health_check_config")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfig"]]], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepParallelConfigStep(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfig",
    jsii_struct_bases=[],
    name_mapping={
        "cross_account_role": "crossAccountRole",
        "external_id": "externalId",
        "region_and_routing_controls": "regionAndRoutingControls",
        "timeout_minutes": "timeoutMinutes",
    },
)
class ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfig:
    def __init__(
        self,
        *,
        cross_account_role: typing.Optional[builtins.str] = None,
        external_id: typing.Optional[builtins.str] = None,
        region_and_routing_controls: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControls", typing.Dict[builtins.str, typing.Any]]]]] = None,
        timeout_minutes: typing.Optional[jsii.Number] = None,
    ) -> None:
        '''
        :param cross_account_role: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cross_account_role ArcregionswitchPlan#cross_account_role}.
        :param external_id: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#external_id ArcregionswitchPlan#external_id}.
        :param region_and_routing_controls: region_and_routing_controls block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#region_and_routing_controls ArcregionswitchPlan#region_and_routing_controls}
        :param timeout_minutes: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#timeout_minutes ArcregionswitchPlan#timeout_minutes}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__012a15a2d068002c7d815b48b60248e231efdde4b9f4287cd16aaad0322bba54)
            check_type(argname="argument cross_account_role", value=cross_account_role, expected_type=type_hints["cross_account_role"])
            check_type(argname="argument external_id", value=external_id, expected_type=type_hints["external_id"])
            check_type(argname="argument region_and_routing_controls", value=region_and_routing_controls, expected_type=type_hints["region_and_routing_controls"])
            check_type(argname="argument timeout_minutes", value=timeout_minutes, expected_type=type_hints["timeout_minutes"])
        self._values: typing.Dict[builtins.str, typing.Any] = {}
        if cross_account_role is not None:
            self._values["cross_account_role"] = cross_account_role
        if external_id is not None:
            self._values["external_id"] = external_id
        if region_and_routing_controls is not None:
            self._values["region_and_routing_controls"] = region_and_routing_controls
        if timeout_minutes is not None:
            self._values["timeout_minutes"] = timeout_minutes

    @builtins.property
    def cross_account_role(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cross_account_role ArcregionswitchPlan#cross_account_role}.'''
        result = self._values.get("cross_account_role")
        return typing.cast(typing.Optional[builtins.str], result)

    @builtins.property
    def external_id(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#external_id ArcregionswitchPlan#external_id}.'''
        result = self._values.get("external_id")
        return typing.cast(typing.Optional[builtins.str], result)

    @builtins.property
    def region_and_routing_controls(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControls"]]]:
        '''region_and_routing_controls block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#region_and_routing_controls ArcregionswitchPlan#region_and_routing_controls}
        '''
        result = self._values.get("region_and_routing_controls")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControls"]]], result)

    @builtins.property
    def timeout_minutes(self) -> typing.Optional[jsii.Number]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#timeout_minutes ArcregionswitchPlan#timeout_minutes}.'''
        result = self._values.get("timeout_minutes")
        return typing.cast(typing.Optional[jsii.Number], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfig(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__b1eeb91bad052c29c526ebad241f50b919b3ae421ba3c80ba3550b7982e1bf5d)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__63e87f4748e29a2cf03b9fa4c088076b8ded216c8f377df7c76fe6996386e7c6)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfig"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfig"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__ec1fd4fa6deba0872718687373b605a1ff8be8fa4fe6cd0de358871bc5722fcb)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__de97f6a4e5bd6f01fc3f13dd0d092b70f17193c4af7541edcf683cb249bd20ad)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="putRegionAndRoutingControls")
    def put_region_and_routing_controls(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControls", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__e94e436e5e5840ac6d1380b868ed4a293ebaa5f214b100424ea3ef13736384ed)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putRegionAndRoutingControls", [value]))

    @jsii.member(jsii_name="resetCrossAccountRole")
    def reset_cross_account_role(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetCrossAccountRole", []))

    @jsii.member(jsii_name="resetExternalId")
    def reset_external_id(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetExternalId", []))

    @jsii.member(jsii_name="resetRegionAndRoutingControls")
    def reset_region_and_routing_controls(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetRegionAndRoutingControls", []))

    @jsii.member(jsii_name="resetTimeoutMinutes")
    def reset_timeout_minutes(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetTimeoutMinutes", []))

    @builtins.property
    @jsii.member(jsii_name="regionAndRoutingControls")
    def region_and_routing_controls(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControlsList":
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControlsList", jsii.get(self, "regionAndRoutingControls"))

    @builtins.property
    @jsii.member(jsii_name="crossAccountRoleInput")
    def cross_account_role_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "crossAccountRoleInput"))

    @builtins.property
    @jsii.member(jsii_name="externalIdInput")
    def external_id_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "externalIdInput"))

    @builtins.property
    @jsii.member(jsii_name="regionAndRoutingControlsInput")
    def region_and_routing_controls_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControls"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControls"]]], jsii.get(self, "regionAndRoutingControlsInput"))

    @builtins.property
    @jsii.member(jsii_name="timeoutMinutesInput")
    def timeout_minutes_input(self) -> typing.Optional[jsii.Number]:
        return typing.cast(typing.Optional[jsii.Number], jsii.get(self, "timeoutMinutesInput"))

    @builtins.property
    @jsii.member(jsii_name="crossAccountRole")
    def cross_account_role(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "crossAccountRole"))

    @cross_account_role.setter
    def cross_account_role(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__86edec4059baf7a890d52436361dc12da6ddfd8f37d1acdedac384e6dfcc7af6)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "crossAccountRole", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="externalId")
    def external_id(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "externalId"))

    @external_id.setter
    def external_id(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__7eb34858d8734329eac44502bc2f3a3332df415d14d34bc4f9c0a63af51d04e3)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "externalId", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="timeoutMinutes")
    def timeout_minutes(self) -> jsii.Number:
        return typing.cast(jsii.Number, jsii.get(self, "timeoutMinutes"))

    @timeout_minutes.setter
    def timeout_minutes(self, value: jsii.Number) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__72addc7057603e983e8d96c67d9f77771a0c2537e10115b172a77f8a4013451d)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "timeoutMinutes", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfig"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfig"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfig"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__5aa9ebf95396359149d75bc8464ff051de038c046b70934f0cb9c0db4e05d107)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControls",
    jsii_struct_bases=[],
    name_mapping={"region": "region", "routing_control": "routingControl"},
)
class ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControls:
    def __init__(
        self,
        *,
        region: builtins.str,
        routing_control: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControl", typing.Dict[builtins.str, typing.Any]]]]] = None,
    ) -> None:
        '''
        :param region: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#region ArcregionswitchPlan#region}.
        :param routing_control: routing_control block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#routing_control ArcregionswitchPlan#routing_control}
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__bcc8d2565ca14bf9fc280b68384ae0843e04fb71e65231b8aab41e9018e8c15f)
            check_type(argname="argument region", value=region, expected_type=type_hints["region"])
            check_type(argname="argument routing_control", value=routing_control, expected_type=type_hints["routing_control"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "region": region,
        }
        if routing_control is not None:
            self._values["routing_control"] = routing_control

    @builtins.property
    def region(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#region ArcregionswitchPlan#region}.'''
        result = self._values.get("region")
        assert result is not None, "Required property 'region' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def routing_control(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControl"]]]:
        '''routing_control block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#routing_control ArcregionswitchPlan#routing_control}
        '''
        result = self._values.get("routing_control")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControl"]]], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControls(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControlsList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControlsList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__d51bd878fd5d89e3267c52e43747bc0f5fe67112790416680531ff402609d918)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControlsOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__5f68855f0a8ccaff6c3ce8edc564ff996f7d01ae2eec5612f990ed3c3656d7df)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControlsOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControls"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControls"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControls"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__7a4e7bb92532552b7c4f3d0125bd56cf26e8edf09a1af17f4b9a9468d3bdf6dd)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControlsOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControlsOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__f3fee43415fadb4303bc8b3a12bebc2f40850b327be0f3551b815c0f61282dfa)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="putRoutingControl")
    def put_routing_control(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControl", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__fe32d36adcfaa77f944369b4a9b301ccf0345ec838a9fa7d5a0e0cc36c1b9c8b)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putRoutingControl", [value]))

    @jsii.member(jsii_name="resetRoutingControl")
    def reset_routing_control(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetRoutingControl", []))

    @builtins.property
    @jsii.member(jsii_name="routingControl")
    def routing_control(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControlList":
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControlList", jsii.get(self, "routingControl"))

    @builtins.property
    @jsii.member(jsii_name="regionInput")
    def region_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "regionInput"))

    @builtins.property
    @jsii.member(jsii_name="routingControlInput")
    def routing_control_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControl"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControl"]]], jsii.get(self, "routingControlInput"))

    @builtins.property
    @jsii.member(jsii_name="region")
    def region(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "region"))

    @region.setter
    def region(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__5b50505692562e6ba77c47ffbfe0a1828b82f6f86a396c811f3ba1c913d0e88e)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "region", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControls"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControls"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControls"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__a727780dcb4391f16583f8558e03658c2d835578c5566c43f33d9844eec394ff)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControl",
    jsii_struct_bases=[],
    name_mapping={"routing_control_arn": "routingControlArn", "state": "state"},
)
class ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControl:
    def __init__(
        self,
        *,
        routing_control_arn: builtins.str,
        state: builtins.str,
    ) -> None:
        '''
        :param routing_control_arn: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#routing_control_arn ArcregionswitchPlan#routing_control_arn}.
        :param state: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#state ArcregionswitchPlan#state}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__069181d40bb797bbce35b383ae8c64fb8b87ff2ad3c3c4c41b69e54777b81103)
            check_type(argname="argument routing_control_arn", value=routing_control_arn, expected_type=type_hints["routing_control_arn"])
            check_type(argname="argument state", value=state, expected_type=type_hints["state"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "routing_control_arn": routing_control_arn,
            "state": state,
        }

    @builtins.property
    def routing_control_arn(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#routing_control_arn ArcregionswitchPlan#routing_control_arn}.'''
        result = self._values.get("routing_control_arn")
        assert result is not None, "Required property 'routing_control_arn' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def state(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#state ArcregionswitchPlan#state}.'''
        result = self._values.get("state")
        assert result is not None, "Required property 'state' is missing"
        return typing.cast(builtins.str, result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControl(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControlList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControlList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__1244fe361ac0bbd93529e058f66a85ddb54bbeaff83ded2fcb5df288160ea6f8)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControlOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__0a3f0199c5b6ff5f2e1da3a98bc936cd01a397b84e8a4b374c793f1bf33c1f71)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControlOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControl"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControl"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControl"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__55d62cf5932d95a1a400f2a62c865505442933577f9cffb9e36f239ef2b5ba5d)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControlOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControlOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__ddafee8873d3418be5a47b92737718b74e3319fd0fb19e92105129c01f8e0005)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @builtins.property
    @jsii.member(jsii_name="routingControlArnInput")
    def routing_control_arn_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "routingControlArnInput"))

    @builtins.property
    @jsii.member(jsii_name="stateInput")
    def state_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "stateInput"))

    @builtins.property
    @jsii.member(jsii_name="routingControlArn")
    def routing_control_arn(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "routingControlArn"))

    @routing_control_arn.setter
    def routing_control_arn(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__b95e98b6e08784a35d9f1219a4b8eeecdb4d8d33176330bf55801553210672b2)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "routingControlArn", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="state")
    def state(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "state"))

    @state.setter
    def state(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__c8be80365d0f001dbfb3b36c3428c0435d0581d1cdbad960d0b317201c103f74)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "state", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControl"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControl"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControl"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__37c217b0dc1973d809e4c5f4f0b89084012bbcc26bd9e754ac02fe8a41481ad8)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfig",
    jsii_struct_bases=[],
    name_mapping={
        "region_to_run": "regionToRun",
        "retry_interval_minutes": "retryIntervalMinutes",
        "lambda_": "lambda",
        "timeout_minutes": "timeoutMinutes",
        "ungraceful": "ungraceful",
    },
)
class ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfig:
    def __init__(
        self,
        *,
        region_to_run: builtins.str,
        retry_interval_minutes: jsii.Number,
        lambda_: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigLambda", typing.Dict[builtins.str, typing.Any]]]]] = None,
        timeout_minutes: typing.Optional[jsii.Number] = None,
        ungraceful: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigUngraceful", typing.Dict[builtins.str, typing.Any]]]]] = None,
    ) -> None:
        '''
        :param region_to_run: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#region_to_run ArcregionswitchPlan#region_to_run}.
        :param retry_interval_minutes: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#retry_interval_minutes ArcregionswitchPlan#retry_interval_minutes}.
        :param lambda_: lambda block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#lambda ArcregionswitchPlan#lambda}
        :param timeout_minutes: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#timeout_minutes ArcregionswitchPlan#timeout_minutes}.
        :param ungraceful: ungraceful block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#ungraceful ArcregionswitchPlan#ungraceful}
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__12017c4967950177db65a956b4a32d248ea6e588f96a27ca75db9e7b8f66adfc)
            check_type(argname="argument region_to_run", value=region_to_run, expected_type=type_hints["region_to_run"])
            check_type(argname="argument retry_interval_minutes", value=retry_interval_minutes, expected_type=type_hints["retry_interval_minutes"])
            check_type(argname="argument lambda_", value=lambda_, expected_type=type_hints["lambda_"])
            check_type(argname="argument timeout_minutes", value=timeout_minutes, expected_type=type_hints["timeout_minutes"])
            check_type(argname="argument ungraceful", value=ungraceful, expected_type=type_hints["ungraceful"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "region_to_run": region_to_run,
            "retry_interval_minutes": retry_interval_minutes,
        }
        if lambda_ is not None:
            self._values["lambda_"] = lambda_
        if timeout_minutes is not None:
            self._values["timeout_minutes"] = timeout_minutes
        if ungraceful is not None:
            self._values["ungraceful"] = ungraceful

    @builtins.property
    def region_to_run(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#region_to_run ArcregionswitchPlan#region_to_run}.'''
        result = self._values.get("region_to_run")
        assert result is not None, "Required property 'region_to_run' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def retry_interval_minutes(self) -> jsii.Number:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#retry_interval_minutes ArcregionswitchPlan#retry_interval_minutes}.'''
        result = self._values.get("retry_interval_minutes")
        assert result is not None, "Required property 'retry_interval_minutes' is missing"
        return typing.cast(jsii.Number, result)

    @builtins.property
    def lambda_(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigLambda"]]]:
        '''lambda block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#lambda ArcregionswitchPlan#lambda}
        '''
        result = self._values.get("lambda_")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigLambda"]]], result)

    @builtins.property
    def timeout_minutes(self) -> typing.Optional[jsii.Number]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#timeout_minutes ArcregionswitchPlan#timeout_minutes}.'''
        result = self._values.get("timeout_minutes")
        return typing.cast(typing.Optional[jsii.Number], result)

    @builtins.property
    def ungraceful(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigUngraceful"]]]:
        '''ungraceful block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#ungraceful ArcregionswitchPlan#ungraceful}
        '''
        result = self._values.get("ungraceful")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigUngraceful"]]], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfig(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigLambda",
    jsii_struct_bases=[],
    name_mapping={
        "arn": "arn",
        "cross_account_role": "crossAccountRole",
        "external_id": "externalId",
    },
)
class ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigLambda:
    def __init__(
        self,
        *,
        arn: builtins.str,
        cross_account_role: typing.Optional[builtins.str] = None,
        external_id: typing.Optional[builtins.str] = None,
    ) -> None:
        '''
        :param arn: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#arn ArcregionswitchPlan#arn}.
        :param cross_account_role: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cross_account_role ArcregionswitchPlan#cross_account_role}.
        :param external_id: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#external_id ArcregionswitchPlan#external_id}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__d9de91f827da80a8a7ff71b27ec2cd241d89e99b0919ed05d028645fb21e547e)
            check_type(argname="argument arn", value=arn, expected_type=type_hints["arn"])
            check_type(argname="argument cross_account_role", value=cross_account_role, expected_type=type_hints["cross_account_role"])
            check_type(argname="argument external_id", value=external_id, expected_type=type_hints["external_id"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "arn": arn,
        }
        if cross_account_role is not None:
            self._values["cross_account_role"] = cross_account_role
        if external_id is not None:
            self._values["external_id"] = external_id

    @builtins.property
    def arn(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#arn ArcregionswitchPlan#arn}.'''
        result = self._values.get("arn")
        assert result is not None, "Required property 'arn' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def cross_account_role(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cross_account_role ArcregionswitchPlan#cross_account_role}.'''
        result = self._values.get("cross_account_role")
        return typing.cast(typing.Optional[builtins.str], result)

    @builtins.property
    def external_id(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#external_id ArcregionswitchPlan#external_id}.'''
        result = self._values.get("external_id")
        return typing.cast(typing.Optional[builtins.str], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigLambda(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigLambdaList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigLambdaList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__ea39c73dfdfbb2d645a0cb7a2a78d7de010c5918ba67a42ed273e782784abc0b)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigLambdaOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__d6abf6619ae807c3d2aee49e2d19a197e01e776a7cef310d61538a07f4e1cf26)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigLambdaOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigLambda"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigLambda"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigLambda"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__7f0c32fbd7d8ce1d0c3e4cc1edcd54837519be9ca5354109da7c38eade43f709)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigLambdaOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigLambdaOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__bd10a01bbfef75756f3dbaab3662c5e1b7abf05e85bc5c2230f25efa13c76a2f)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="resetCrossAccountRole")
    def reset_cross_account_role(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetCrossAccountRole", []))

    @jsii.member(jsii_name="resetExternalId")
    def reset_external_id(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetExternalId", []))

    @builtins.property
    @jsii.member(jsii_name="arnInput")
    def arn_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "arnInput"))

    @builtins.property
    @jsii.member(jsii_name="crossAccountRoleInput")
    def cross_account_role_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "crossAccountRoleInput"))

    @builtins.property
    @jsii.member(jsii_name="externalIdInput")
    def external_id_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "externalIdInput"))

    @builtins.property
    @jsii.member(jsii_name="arn")
    def arn(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "arn"))

    @arn.setter
    def arn(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__045cc6197ef0d979d61834caf06a556076deeae42bcc25cf2e35aa0af9e4e9d0)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "arn", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="crossAccountRole")
    def cross_account_role(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "crossAccountRole"))

    @cross_account_role.setter
    def cross_account_role(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__acaab8667e9d6e1384847b4763a63e7a3a34382aa6c3f8dedcd9bcbef733dec6)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "crossAccountRole", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="externalId")
    def external_id(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "externalId"))

    @external_id.setter
    def external_id(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__ca268f35437aea5e00b09e8fc3252361b93cc05df6a14d5ebb3731db41c9edba)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "externalId", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigLambda"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigLambda"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigLambda"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__f4e6ac7a22376b2ae97a337e9dcaa8419bfa202c34103332c3cb7821f35f0ea7)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__d9227e91344c1ad299e1c5411c1a52398ebcc8c656b4f0dd4f52f5c758a18318)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__73eb38610f3c0b287039c911188920498963b30c5441ecdc30fb781e0a44c31e)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfig"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfig"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__a25816cf0fe25f7061af6e932ce898db9e4aae6b895104416d0cc66b35945751)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__8b783078477bc4facaec620ed1ebdfd112831b02e3610164fb882db971b6eab1)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="putLambda")
    def put_lambda(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigLambda", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__b31cfa59aed537ac815801134020ff64d7f992d3771c44fef589b4a3b2347dbe)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putLambda", [value]))

    @jsii.member(jsii_name="putUngraceful")
    def put_ungraceful(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigUngraceful", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__54b4dc7925f7f1a1cb0fd64cd567f2a0d2e859354d521a084c8cf2b7b853b247)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putUngraceful", [value]))

    @jsii.member(jsii_name="resetLambda")
    def reset_lambda(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetLambda", []))

    @jsii.member(jsii_name="resetTimeoutMinutes")
    def reset_timeout_minutes(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetTimeoutMinutes", []))

    @jsii.member(jsii_name="resetUngraceful")
    def reset_ungraceful(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetUngraceful", []))

    @builtins.property
    @jsii.member(jsii_name="lambda")
    def lambda_(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigLambdaList":
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigLambdaList", jsii.get(self, "lambda"))

    @builtins.property
    @jsii.member(jsii_name="ungraceful")
    def ungraceful(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigUngracefulList":
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigUngracefulList", jsii.get(self, "ungraceful"))

    @builtins.property
    @jsii.member(jsii_name="lambdaInput")
    def lambda_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigLambda"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigLambda"]]], jsii.get(self, "lambdaInput"))

    @builtins.property
    @jsii.member(jsii_name="regionToRunInput")
    def region_to_run_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "regionToRunInput"))

    @builtins.property
    @jsii.member(jsii_name="retryIntervalMinutesInput")
    def retry_interval_minutes_input(self) -> typing.Optional[jsii.Number]:
        return typing.cast(typing.Optional[jsii.Number], jsii.get(self, "retryIntervalMinutesInput"))

    @builtins.property
    @jsii.member(jsii_name="timeoutMinutesInput")
    def timeout_minutes_input(self) -> typing.Optional[jsii.Number]:
        return typing.cast(typing.Optional[jsii.Number], jsii.get(self, "timeoutMinutesInput"))

    @builtins.property
    @jsii.member(jsii_name="ungracefulInput")
    def ungraceful_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigUngraceful"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigUngraceful"]]], jsii.get(self, "ungracefulInput"))

    @builtins.property
    @jsii.member(jsii_name="regionToRun")
    def region_to_run(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "regionToRun"))

    @region_to_run.setter
    def region_to_run(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__594ab0b033e57d0f8b5b939d47bd173c7f4ff46463918116f1fe6a16c1c2c795)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "regionToRun", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="retryIntervalMinutes")
    def retry_interval_minutes(self) -> jsii.Number:
        return typing.cast(jsii.Number, jsii.get(self, "retryIntervalMinutes"))

    @retry_interval_minutes.setter
    def retry_interval_minutes(self, value: jsii.Number) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__28fc1dcea17af0c6932caf9cd922ac2c1f2a777629ef39288edb4286a2aefce0)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "retryIntervalMinutes", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="timeoutMinutes")
    def timeout_minutes(self) -> jsii.Number:
        return typing.cast(jsii.Number, jsii.get(self, "timeoutMinutes"))

    @timeout_minutes.setter
    def timeout_minutes(self, value: jsii.Number) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__b9e52782283cf1f234ad58f63241cac0e8717146b94961b807361759852df781)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "timeoutMinutes", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfig"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfig"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfig"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__254018af2af0e3341dbe2308b0b8bae7bb0c04cee271705e3337df7d968ed352)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigUngraceful",
    jsii_struct_bases=[],
    name_mapping={"behavior": "behavior"},
)
class ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigUngraceful:
    def __init__(self, *, behavior: builtins.str) -> None:
        '''
        :param behavior: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#behavior ArcregionswitchPlan#behavior}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__a33922d85aa1aff8737763a6fef151c9cd3b14c68d4a0247c1477d86af985880)
            check_type(argname="argument behavior", value=behavior, expected_type=type_hints["behavior"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "behavior": behavior,
        }

    @builtins.property
    def behavior(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#behavior ArcregionswitchPlan#behavior}.'''
        result = self._values.get("behavior")
        assert result is not None, "Required property 'behavior' is missing"
        return typing.cast(builtins.str, result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigUngraceful(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigUngracefulList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigUngracefulList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__cbf738ec4ce8282e2212823f44a9afcaad53cc894ec334858c93519a7f626598)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigUngracefulOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__b1f9303f3d05b2c7ea53d09ae946ab3f5230876ebbf90964d52a0409579274b0)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigUngracefulOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigUngraceful"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigUngraceful"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigUngraceful"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__4168bbbb138b474b9356eaf964bdf94e34e4e9355fcf5e204159fdc336e18bcf)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigUngracefulOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigUngracefulOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__25ce623dde2b92ecf2a37f614fc251aec2ffcd785f069c933e6c6fde17068317)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @builtins.property
    @jsii.member(jsii_name="behaviorInput")
    def behavior_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "behaviorInput"))

    @builtins.property
    @jsii.member(jsii_name="behavior")
    def behavior(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "behavior"))

    @behavior.setter
    def behavior(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__6c0b6217039975ff3c5637682f87cba910e88ed2f651a2488d6a0cae10688821)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "behavior", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigUngraceful"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigUngraceful"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigUngraceful"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__e0f83633263b199eed3348fa597d80e9a4d2e98f80e1fa7c239fbc34fba0f0a4)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfig",
    jsii_struct_bases=[],
    name_mapping={
        "behavior": "behavior",
        "database_cluster_arns": "databaseClusterArns",
        "global_cluster_identifier": "globalClusterIdentifier",
        "cross_account_role": "crossAccountRole",
        "external_id": "externalId",
        "timeout_minutes": "timeoutMinutes",
        "ungraceful": "ungraceful",
    },
)
class ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfig:
    def __init__(
        self,
        *,
        behavior: builtins.str,
        database_cluster_arns: typing.Sequence[builtins.str],
        global_cluster_identifier: builtins.str,
        cross_account_role: typing.Optional[builtins.str] = None,
        external_id: typing.Optional[builtins.str] = None,
        timeout_minutes: typing.Optional[jsii.Number] = None,
        ungraceful: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfigUngraceful", typing.Dict[builtins.str, typing.Any]]]]] = None,
    ) -> None:
        '''
        :param behavior: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#behavior ArcregionswitchPlan#behavior}.
        :param database_cluster_arns: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#database_cluster_arns ArcregionswitchPlan#database_cluster_arns}.
        :param global_cluster_identifier: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#global_cluster_identifier ArcregionswitchPlan#global_cluster_identifier}.
        :param cross_account_role: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cross_account_role ArcregionswitchPlan#cross_account_role}.
        :param external_id: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#external_id ArcregionswitchPlan#external_id}.
        :param timeout_minutes: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#timeout_minutes ArcregionswitchPlan#timeout_minutes}.
        :param ungraceful: ungraceful block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#ungraceful ArcregionswitchPlan#ungraceful}
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__4cd58b748d7969c2f7a9345308c4230cd6467908fe65d2e5e66b77130b3d7867)
            check_type(argname="argument behavior", value=behavior, expected_type=type_hints["behavior"])
            check_type(argname="argument database_cluster_arns", value=database_cluster_arns, expected_type=type_hints["database_cluster_arns"])
            check_type(argname="argument global_cluster_identifier", value=global_cluster_identifier, expected_type=type_hints["global_cluster_identifier"])
            check_type(argname="argument cross_account_role", value=cross_account_role, expected_type=type_hints["cross_account_role"])
            check_type(argname="argument external_id", value=external_id, expected_type=type_hints["external_id"])
            check_type(argname="argument timeout_minutes", value=timeout_minutes, expected_type=type_hints["timeout_minutes"])
            check_type(argname="argument ungraceful", value=ungraceful, expected_type=type_hints["ungraceful"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "behavior": behavior,
            "database_cluster_arns": database_cluster_arns,
            "global_cluster_identifier": global_cluster_identifier,
        }
        if cross_account_role is not None:
            self._values["cross_account_role"] = cross_account_role
        if external_id is not None:
            self._values["external_id"] = external_id
        if timeout_minutes is not None:
            self._values["timeout_minutes"] = timeout_minutes
        if ungraceful is not None:
            self._values["ungraceful"] = ungraceful

    @builtins.property
    def behavior(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#behavior ArcregionswitchPlan#behavior}.'''
        result = self._values.get("behavior")
        assert result is not None, "Required property 'behavior' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def database_cluster_arns(self) -> typing.List[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#database_cluster_arns ArcregionswitchPlan#database_cluster_arns}.'''
        result = self._values.get("database_cluster_arns")
        assert result is not None, "Required property 'database_cluster_arns' is missing"
        return typing.cast(typing.List[builtins.str], result)

    @builtins.property
    def global_cluster_identifier(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#global_cluster_identifier ArcregionswitchPlan#global_cluster_identifier}.'''
        result = self._values.get("global_cluster_identifier")
        assert result is not None, "Required property 'global_cluster_identifier' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def cross_account_role(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cross_account_role ArcregionswitchPlan#cross_account_role}.'''
        result = self._values.get("cross_account_role")
        return typing.cast(typing.Optional[builtins.str], result)

    @builtins.property
    def external_id(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#external_id ArcregionswitchPlan#external_id}.'''
        result = self._values.get("external_id")
        return typing.cast(typing.Optional[builtins.str], result)

    @builtins.property
    def timeout_minutes(self) -> typing.Optional[jsii.Number]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#timeout_minutes ArcregionswitchPlan#timeout_minutes}.'''
        result = self._values.get("timeout_minutes")
        return typing.cast(typing.Optional[jsii.Number], result)

    @builtins.property
    def ungraceful(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfigUngraceful"]]]:
        '''ungraceful block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#ungraceful ArcregionswitchPlan#ungraceful}
        '''
        result = self._values.get("ungraceful")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfigUngraceful"]]], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfig(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfigList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfigList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__48f7710cf2124087c753874093183ffbbcafba548b33e65fa99a6f0a0431be26)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfigOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__41f36da14f6340713c33443f9d770148f487d0d73d28f8f8ea935eb6e5c3f8f3)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfigOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfig"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfig"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__581fb1487be0574ccb8a702f42b845bd8680f30ff905bd793cd9d69ff5d98537)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfigOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfigOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__52dfc77d977ce18ce4290ccd714d46b8460585ce7470fd5161407db0f544e780)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="putUngraceful")
    def put_ungraceful(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfigUngraceful", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__7f0aeba1c211156ba742947bdfe07523577d69a7168df41c448d4fbb58517ca5)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putUngraceful", [value]))

    @jsii.member(jsii_name="resetCrossAccountRole")
    def reset_cross_account_role(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetCrossAccountRole", []))

    @jsii.member(jsii_name="resetExternalId")
    def reset_external_id(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetExternalId", []))

    @jsii.member(jsii_name="resetTimeoutMinutes")
    def reset_timeout_minutes(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetTimeoutMinutes", []))

    @jsii.member(jsii_name="resetUngraceful")
    def reset_ungraceful(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetUngraceful", []))

    @builtins.property
    @jsii.member(jsii_name="ungraceful")
    def ungraceful(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfigUngracefulList":
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfigUngracefulList", jsii.get(self, "ungraceful"))

    @builtins.property
    @jsii.member(jsii_name="behaviorInput")
    def behavior_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "behaviorInput"))

    @builtins.property
    @jsii.member(jsii_name="crossAccountRoleInput")
    def cross_account_role_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "crossAccountRoleInput"))

    @builtins.property
    @jsii.member(jsii_name="databaseClusterArnsInput")
    def database_cluster_arns_input(self) -> typing.Optional[typing.List[builtins.str]]:
        return typing.cast(typing.Optional[typing.List[builtins.str]], jsii.get(self, "databaseClusterArnsInput"))

    @builtins.property
    @jsii.member(jsii_name="externalIdInput")
    def external_id_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "externalIdInput"))

    @builtins.property
    @jsii.member(jsii_name="globalClusterIdentifierInput")
    def global_cluster_identifier_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "globalClusterIdentifierInput"))

    @builtins.property
    @jsii.member(jsii_name="timeoutMinutesInput")
    def timeout_minutes_input(self) -> typing.Optional[jsii.Number]:
        return typing.cast(typing.Optional[jsii.Number], jsii.get(self, "timeoutMinutesInput"))

    @builtins.property
    @jsii.member(jsii_name="ungracefulInput")
    def ungraceful_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfigUngraceful"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfigUngraceful"]]], jsii.get(self, "ungracefulInput"))

    @builtins.property
    @jsii.member(jsii_name="behavior")
    def behavior(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "behavior"))

    @behavior.setter
    def behavior(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__896724a8dda08640d727e550ce63b4701d7fecfa058853db6938e3f6cf3f2d38)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "behavior", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="crossAccountRole")
    def cross_account_role(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "crossAccountRole"))

    @cross_account_role.setter
    def cross_account_role(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__3835830e832204964be63252228b2d30881cd72b591f6e3dd44784117f952358)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "crossAccountRole", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="databaseClusterArns")
    def database_cluster_arns(self) -> typing.List[builtins.str]:
        return typing.cast(typing.List[builtins.str], jsii.get(self, "databaseClusterArns"))

    @database_cluster_arns.setter
    def database_cluster_arns(self, value: typing.List[builtins.str]) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__ed9c2054ca3d989c5eef286b5faf12661813de6c6a83a956918010c8b6b090b8)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "databaseClusterArns", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="externalId")
    def external_id(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "externalId"))

    @external_id.setter
    def external_id(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__60ed8cc95399d88d1021691ce814752b3781805c9ea59ffc66cf096e6a737a9c)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "externalId", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="globalClusterIdentifier")
    def global_cluster_identifier(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "globalClusterIdentifier"))

    @global_cluster_identifier.setter
    def global_cluster_identifier(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__0ead4dcf0e02b0e62ba8a1693750695745a698c24e2ef47cd7ac95aadb055d6f)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "globalClusterIdentifier", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="timeoutMinutes")
    def timeout_minutes(self) -> jsii.Number:
        return typing.cast(jsii.Number, jsii.get(self, "timeoutMinutes"))

    @timeout_minutes.setter
    def timeout_minutes(self, value: jsii.Number) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__5bca59d170457b2f1365b33623d0d33c1b07d0cc9e6194afffb5e044b7eb0dd0)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "timeoutMinutes", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfig"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfig"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfig"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__5f8d956d2ef9f77939f3b882e4e18c5056af586cb3aa7dcd3bcb9260329b2fe9)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfigUngraceful",
    jsii_struct_bases=[],
    name_mapping={"ungraceful": "ungraceful"},
)
class ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfigUngraceful:
    def __init__(self, *, ungraceful: builtins.str) -> None:
        '''
        :param ungraceful: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#ungraceful ArcregionswitchPlan#ungraceful}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__7b43e47ecb11f46d0e6d99513e2596869e233edea7573f0b1fcb8636f4e54cfa)
            check_type(argname="argument ungraceful", value=ungraceful, expected_type=type_hints["ungraceful"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "ungraceful": ungraceful,
        }

    @builtins.property
    def ungraceful(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#ungraceful ArcregionswitchPlan#ungraceful}.'''
        result = self._values.get("ungraceful")
        assert result is not None, "Required property 'ungraceful' is missing"
        return typing.cast(builtins.str, result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfigUngraceful(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfigUngracefulList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfigUngracefulList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__13557f99a064b749361d6e6c9a8511e22913c36022bfb30c3989a10d37362f48)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfigUngracefulOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__cd7884e369ae44ba4d08568bb58e865b0e24298c7e2c499653a5ef3b5c57ba65)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfigUngracefulOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfigUngraceful"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfigUngraceful"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfigUngraceful"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__edf1c1e8270cc338da8c6394a8a466b703e1ea42264877ff56a225bd08319166)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfigUngracefulOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfigUngracefulOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__dc5657955698df04c1b3b4fac1f328d117df20cd305b50f237314e01514d915f)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @builtins.property
    @jsii.member(jsii_name="ungracefulInput")
    def ungraceful_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "ungracefulInput"))

    @builtins.property
    @jsii.member(jsii_name="ungraceful")
    def ungraceful(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "ungraceful"))

    @ungraceful.setter
    def ungraceful(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__7b7e4d41483601b6fc1fbffeea91d62ac82db5b018e7de17140442546c71ab5c)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "ungraceful", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfigUngraceful"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfigUngraceful"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfigUngraceful"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__f3b48457566b5d1d09adbfc4d10d06fc01f7f4b0fc2712eb7c9d2ff3ec39386e)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfig",
    jsii_struct_bases=[],
    name_mapping={
        "capacity_monitoring_approach": "capacityMonitoringApproach",
        "asg": "asg",
        "target_percent": "targetPercent",
        "timeout_minutes": "timeoutMinutes",
        "ungraceful": "ungraceful",
    },
)
class ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfig:
    def __init__(
        self,
        *,
        capacity_monitoring_approach: builtins.str,
        asg: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigAsg", typing.Dict[builtins.str, typing.Any]]]]] = None,
        target_percent: typing.Optional[jsii.Number] = None,
        timeout_minutes: typing.Optional[jsii.Number] = None,
        ungraceful: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigUngraceful", typing.Dict[builtins.str, typing.Any]]]]] = None,
    ) -> None:
        '''
        :param capacity_monitoring_approach: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#capacity_monitoring_approach ArcregionswitchPlan#capacity_monitoring_approach}.
        :param asg: asg block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#asg ArcregionswitchPlan#asg}
        :param target_percent: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#target_percent ArcregionswitchPlan#target_percent}.
        :param timeout_minutes: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#timeout_minutes ArcregionswitchPlan#timeout_minutes}.
        :param ungraceful: ungraceful block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#ungraceful ArcregionswitchPlan#ungraceful}
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__7c28cd3817347e822c0a3ba6f5f2a116dfffe4bf8e95d9744354a5dac8bad672)
            check_type(argname="argument capacity_monitoring_approach", value=capacity_monitoring_approach, expected_type=type_hints["capacity_monitoring_approach"])
            check_type(argname="argument asg", value=asg, expected_type=type_hints["asg"])
            check_type(argname="argument target_percent", value=target_percent, expected_type=type_hints["target_percent"])
            check_type(argname="argument timeout_minutes", value=timeout_minutes, expected_type=type_hints["timeout_minutes"])
            check_type(argname="argument ungraceful", value=ungraceful, expected_type=type_hints["ungraceful"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "capacity_monitoring_approach": capacity_monitoring_approach,
        }
        if asg is not None:
            self._values["asg"] = asg
        if target_percent is not None:
            self._values["target_percent"] = target_percent
        if timeout_minutes is not None:
            self._values["timeout_minutes"] = timeout_minutes
        if ungraceful is not None:
            self._values["ungraceful"] = ungraceful

    @builtins.property
    def capacity_monitoring_approach(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#capacity_monitoring_approach ArcregionswitchPlan#capacity_monitoring_approach}.'''
        result = self._values.get("capacity_monitoring_approach")
        assert result is not None, "Required property 'capacity_monitoring_approach' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def asg(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigAsg"]]]:
        '''asg block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#asg ArcregionswitchPlan#asg}
        '''
        result = self._values.get("asg")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigAsg"]]], result)

    @builtins.property
    def target_percent(self) -> typing.Optional[jsii.Number]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#target_percent ArcregionswitchPlan#target_percent}.'''
        result = self._values.get("target_percent")
        return typing.cast(typing.Optional[jsii.Number], result)

    @builtins.property
    def timeout_minutes(self) -> typing.Optional[jsii.Number]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#timeout_minutes ArcregionswitchPlan#timeout_minutes}.'''
        result = self._values.get("timeout_minutes")
        return typing.cast(typing.Optional[jsii.Number], result)

    @builtins.property
    def ungraceful(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigUngraceful"]]]:
        '''ungraceful block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#ungraceful ArcregionswitchPlan#ungraceful}
        '''
        result = self._values.get("ungraceful")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigUngraceful"]]], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfig(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigAsg",
    jsii_struct_bases=[],
    name_mapping={
        "arn": "arn",
        "cross_account_role": "crossAccountRole",
        "external_id": "externalId",
    },
)
class ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigAsg:
    def __init__(
        self,
        *,
        arn: builtins.str,
        cross_account_role: typing.Optional[builtins.str] = None,
        external_id: typing.Optional[builtins.str] = None,
    ) -> None:
        '''
        :param arn: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#arn ArcregionswitchPlan#arn}.
        :param cross_account_role: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cross_account_role ArcregionswitchPlan#cross_account_role}.
        :param external_id: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#external_id ArcregionswitchPlan#external_id}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__bb8ce5e75ad83db5dc347226c62c3d4e0e18ec2bbe3ed295afc6b6b7b3d447b4)
            check_type(argname="argument arn", value=arn, expected_type=type_hints["arn"])
            check_type(argname="argument cross_account_role", value=cross_account_role, expected_type=type_hints["cross_account_role"])
            check_type(argname="argument external_id", value=external_id, expected_type=type_hints["external_id"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "arn": arn,
        }
        if cross_account_role is not None:
            self._values["cross_account_role"] = cross_account_role
        if external_id is not None:
            self._values["external_id"] = external_id

    @builtins.property
    def arn(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#arn ArcregionswitchPlan#arn}.'''
        result = self._values.get("arn")
        assert result is not None, "Required property 'arn' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def cross_account_role(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cross_account_role ArcregionswitchPlan#cross_account_role}.'''
        result = self._values.get("cross_account_role")
        return typing.cast(typing.Optional[builtins.str], result)

    @builtins.property
    def external_id(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#external_id ArcregionswitchPlan#external_id}.'''
        result = self._values.get("external_id")
        return typing.cast(typing.Optional[builtins.str], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigAsg(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigAsgList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigAsgList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__367df804d7536750b757fcb71e51efb19440ee57cadb7c4b0985f84150bedbd5)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigAsgOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__b393fa4c21f4cd839afaff7761a3a098d9a4e0a1e263e55a32a721d4d2ae3727)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigAsgOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigAsg"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigAsg"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigAsg"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__ca33f33b7519bd7a1fae1f51def2fc97d24e02a67943902a36a66847c334ff18)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigAsgOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigAsgOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__47e51020d62bff0ba5e54fea2441c368795ee7e711f593f0b251168c03b212d7)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="resetCrossAccountRole")
    def reset_cross_account_role(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetCrossAccountRole", []))

    @jsii.member(jsii_name="resetExternalId")
    def reset_external_id(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetExternalId", []))

    @builtins.property
    @jsii.member(jsii_name="arnInput")
    def arn_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "arnInput"))

    @builtins.property
    @jsii.member(jsii_name="crossAccountRoleInput")
    def cross_account_role_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "crossAccountRoleInput"))

    @builtins.property
    @jsii.member(jsii_name="externalIdInput")
    def external_id_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "externalIdInput"))

    @builtins.property
    @jsii.member(jsii_name="arn")
    def arn(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "arn"))

    @arn.setter
    def arn(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__8fe036ddee6e3e2994650ed73b4b051156e86ede9f5262a7df76116723e151fc)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "arn", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="crossAccountRole")
    def cross_account_role(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "crossAccountRole"))

    @cross_account_role.setter
    def cross_account_role(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__1e5145a16bf57ce2fe845439e5589ef5a317dabdd01f9156446c38e62c1830bb)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "crossAccountRole", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="externalId")
    def external_id(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "externalId"))

    @external_id.setter
    def external_id(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__0691901448df7e3dd9f47a92868d1e059703b43841d1e184756190eaeaca37a5)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "externalId", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigAsg"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigAsg"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigAsg"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__84fae31b78c04d61e62558daa785a6fcd18c0a0128d1e35ba60c8e50689ba66e)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__fc7f1704642a5c354e2e9f84cc68cbb7d3eb5da7badf72653be683ee403b21cd)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__12aa0faa881e4b5359dabda69a6f34f5f4067ef0dec6078f6fae6f7e38eab497)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfig"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfig"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__a20b6b7faa16c1f719c231578a0ae12ac3f9f180ec19f15f7bdbea88f6e410a9)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__045b2f18481203c2da28f6cf68661ad5836a5e6e978d53b74d6a93ed5d8ab86e)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="putAsg")
    def put_asg(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigAsg", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__c89acded11bb52be97ca3f13ee57078127e4ef264c4afcf4eacb1800506162d0)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putAsg", [value]))

    @jsii.member(jsii_name="putUngraceful")
    def put_ungraceful(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigUngraceful", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__cfa35e6f1d988e63ec499096d081b06b08e70731a1a5ed92a133207869b3d1bb)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putUngraceful", [value]))

    @jsii.member(jsii_name="resetAsg")
    def reset_asg(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetAsg", []))

    @jsii.member(jsii_name="resetTargetPercent")
    def reset_target_percent(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetTargetPercent", []))

    @jsii.member(jsii_name="resetTimeoutMinutes")
    def reset_timeout_minutes(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetTimeoutMinutes", []))

    @jsii.member(jsii_name="resetUngraceful")
    def reset_ungraceful(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetUngraceful", []))

    @builtins.property
    @jsii.member(jsii_name="asg")
    def asg(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigAsgList":
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigAsgList", jsii.get(self, "asg"))

    @builtins.property
    @jsii.member(jsii_name="ungraceful")
    def ungraceful(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigUngracefulList":
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigUngracefulList", jsii.get(self, "ungraceful"))

    @builtins.property
    @jsii.member(jsii_name="asgInput")
    def asg_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigAsg"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigAsg"]]], jsii.get(self, "asgInput"))

    @builtins.property
    @jsii.member(jsii_name="capacityMonitoringApproachInput")
    def capacity_monitoring_approach_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "capacityMonitoringApproachInput"))

    @builtins.property
    @jsii.member(jsii_name="targetPercentInput")
    def target_percent_input(self) -> typing.Optional[jsii.Number]:
        return typing.cast(typing.Optional[jsii.Number], jsii.get(self, "targetPercentInput"))

    @builtins.property
    @jsii.member(jsii_name="timeoutMinutesInput")
    def timeout_minutes_input(self) -> typing.Optional[jsii.Number]:
        return typing.cast(typing.Optional[jsii.Number], jsii.get(self, "timeoutMinutesInput"))

    @builtins.property
    @jsii.member(jsii_name="ungracefulInput")
    def ungraceful_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigUngraceful"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigUngraceful"]]], jsii.get(self, "ungracefulInput"))

    @builtins.property
    @jsii.member(jsii_name="capacityMonitoringApproach")
    def capacity_monitoring_approach(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "capacityMonitoringApproach"))

    @capacity_monitoring_approach.setter
    def capacity_monitoring_approach(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__fe6edb070e2931086a6f01a181c9d35b21157488362e1d308b11d38002064cad)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "capacityMonitoringApproach", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="targetPercent")
    def target_percent(self) -> jsii.Number:
        return typing.cast(jsii.Number, jsii.get(self, "targetPercent"))

    @target_percent.setter
    def target_percent(self, value: jsii.Number) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__49ede5d13ec400a5abfaeeca6baac95e8bb3f2353666b9f19f16ff6085b177d9)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "targetPercent", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="timeoutMinutes")
    def timeout_minutes(self) -> jsii.Number:
        return typing.cast(jsii.Number, jsii.get(self, "timeoutMinutes"))

    @timeout_minutes.setter
    def timeout_minutes(self, value: jsii.Number) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__13f8e383ad36b8c3a357ac864751cf8204435ca6d85c31c7c194e4a6071bb289)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "timeoutMinutes", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfig"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfig"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfig"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__e77f9d6f44e544a6dcfa336fed43b96975e088dc99c5aa4c049357b47a6b911e)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigUngraceful",
    jsii_struct_bases=[],
    name_mapping={"minimum_success_percentage": "minimumSuccessPercentage"},
)
class ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigUngraceful:
    def __init__(self, *, minimum_success_percentage: jsii.Number) -> None:
        '''
        :param minimum_success_percentage: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#minimum_success_percentage ArcregionswitchPlan#minimum_success_percentage}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__3d5b18bb82c00d672ff6372ef57a6d909d0738c6a952f7a6f88dad2eda07248f)
            check_type(argname="argument minimum_success_percentage", value=minimum_success_percentage, expected_type=type_hints["minimum_success_percentage"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "minimum_success_percentage": minimum_success_percentage,
        }

    @builtins.property
    def minimum_success_percentage(self) -> jsii.Number:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#minimum_success_percentage ArcregionswitchPlan#minimum_success_percentage}.'''
        result = self._values.get("minimum_success_percentage")
        assert result is not None, "Required property 'minimum_success_percentage' is missing"
        return typing.cast(jsii.Number, result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigUngraceful(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigUngracefulList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigUngracefulList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__6ef78d194b20ec2b1ca32310ff4bc177de42289a037443f241ab6bdd4b847c7b)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigUngracefulOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__a8bdd5bb45e7e80e44d04f0cc413178a86093f18e947280e45a0ec8504d634b6)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigUngracefulOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigUngraceful"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigUngraceful"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigUngraceful"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__ed2d58e7557dc87333f396a2cb3d50eb0c1953f2af0220d188548464fd7f10ed)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigUngracefulOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigUngracefulOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__107bdd7d1945095bbf9c6afbd85a9be2a15dd6c464fcf6e94149f7625a3dcd0f)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @builtins.property
    @jsii.member(jsii_name="minimumSuccessPercentageInput")
    def minimum_success_percentage_input(self) -> typing.Optional[jsii.Number]:
        return typing.cast(typing.Optional[jsii.Number], jsii.get(self, "minimumSuccessPercentageInput"))

    @builtins.property
    @jsii.member(jsii_name="minimumSuccessPercentage")
    def minimum_success_percentage(self) -> jsii.Number:
        return typing.cast(jsii.Number, jsii.get(self, "minimumSuccessPercentage"))

    @minimum_success_percentage.setter
    def minimum_success_percentage(self, value: jsii.Number) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__a3c9ef7f7c2a1e98165d78fc8dc61dabed2c589576beb6bc4eda366eff9ebafe)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "minimumSuccessPercentage", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigUngraceful"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigUngraceful"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigUngraceful"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__fe2780d9052c558bbe2c1eaf62284e7d40c79eb47abea7b95e54123450823d5c)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfig",
    jsii_struct_bases=[],
    name_mapping={
        "capacity_monitoring_approach": "capacityMonitoringApproach",
        "service": "service",
        "target_percent": "targetPercent",
        "timeout_minutes": "timeoutMinutes",
        "ungraceful": "ungraceful",
    },
)
class ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfig:
    def __init__(
        self,
        *,
        capacity_monitoring_approach: builtins.str,
        service: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigService", typing.Dict[builtins.str, typing.Any]]]]] = None,
        target_percent: typing.Optional[jsii.Number] = None,
        timeout_minutes: typing.Optional[jsii.Number] = None,
        ungraceful: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigUngraceful", typing.Dict[builtins.str, typing.Any]]]]] = None,
    ) -> None:
        '''
        :param capacity_monitoring_approach: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#capacity_monitoring_approach ArcregionswitchPlan#capacity_monitoring_approach}.
        :param service: service block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#service ArcregionswitchPlan#service}
        :param target_percent: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#target_percent ArcregionswitchPlan#target_percent}.
        :param timeout_minutes: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#timeout_minutes ArcregionswitchPlan#timeout_minutes}.
        :param ungraceful: ungraceful block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#ungraceful ArcregionswitchPlan#ungraceful}
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__01d862f07be1bd6944452829eecd954a09f5bb6dad11f5bc6f20bc6d83a41d0a)
            check_type(argname="argument capacity_monitoring_approach", value=capacity_monitoring_approach, expected_type=type_hints["capacity_monitoring_approach"])
            check_type(argname="argument service", value=service, expected_type=type_hints["service"])
            check_type(argname="argument target_percent", value=target_percent, expected_type=type_hints["target_percent"])
            check_type(argname="argument timeout_minutes", value=timeout_minutes, expected_type=type_hints["timeout_minutes"])
            check_type(argname="argument ungraceful", value=ungraceful, expected_type=type_hints["ungraceful"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "capacity_monitoring_approach": capacity_monitoring_approach,
        }
        if service is not None:
            self._values["service"] = service
        if target_percent is not None:
            self._values["target_percent"] = target_percent
        if timeout_minutes is not None:
            self._values["timeout_minutes"] = timeout_minutes
        if ungraceful is not None:
            self._values["ungraceful"] = ungraceful

    @builtins.property
    def capacity_monitoring_approach(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#capacity_monitoring_approach ArcregionswitchPlan#capacity_monitoring_approach}.'''
        result = self._values.get("capacity_monitoring_approach")
        assert result is not None, "Required property 'capacity_monitoring_approach' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def service(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigService"]]]:
        '''service block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#service ArcregionswitchPlan#service}
        '''
        result = self._values.get("service")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigService"]]], result)

    @builtins.property
    def target_percent(self) -> typing.Optional[jsii.Number]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#target_percent ArcregionswitchPlan#target_percent}.'''
        result = self._values.get("target_percent")
        return typing.cast(typing.Optional[jsii.Number], result)

    @builtins.property
    def timeout_minutes(self) -> typing.Optional[jsii.Number]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#timeout_minutes ArcregionswitchPlan#timeout_minutes}.'''
        result = self._values.get("timeout_minutes")
        return typing.cast(typing.Optional[jsii.Number], result)

    @builtins.property
    def ungraceful(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigUngraceful"]]]:
        '''ungraceful block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#ungraceful ArcregionswitchPlan#ungraceful}
        '''
        result = self._values.get("ungraceful")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigUngraceful"]]], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfig(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__775acbe77f291e281e294a82aa978e58a13161d2ba2fe0d7b126f090ccbd81c1)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__a2a742ddaa5e13a215c36b5a1ecf93e4700fe58489f8fe36ec21f0e338202429)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfig"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfig"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__fd010d5132e2745070afb580794604207f4d02ee76d21ee2b9cab7956735514f)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__7d2c4b8a46c7b1775d6ed710ba22a282d6ef0c0a7b56e1b6b6530af22bcb033e)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="putService")
    def put_service(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigService", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__259c78f6f33ffd1d65363b54646d55bc03dd4b44e01d41d854f52833ea1f7285)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putService", [value]))

    @jsii.member(jsii_name="putUngraceful")
    def put_ungraceful(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigUngraceful", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__e00c894c9a374675f1697b783d9521ab8dce491e595075ac8088e8c3aed91279)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putUngraceful", [value]))

    @jsii.member(jsii_name="resetService")
    def reset_service(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetService", []))

    @jsii.member(jsii_name="resetTargetPercent")
    def reset_target_percent(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetTargetPercent", []))

    @jsii.member(jsii_name="resetTimeoutMinutes")
    def reset_timeout_minutes(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetTimeoutMinutes", []))

    @jsii.member(jsii_name="resetUngraceful")
    def reset_ungraceful(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetUngraceful", []))

    @builtins.property
    @jsii.member(jsii_name="service")
    def service(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigServiceList":
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigServiceList", jsii.get(self, "service"))

    @builtins.property
    @jsii.member(jsii_name="ungraceful")
    def ungraceful(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigUngracefulList":
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigUngracefulList", jsii.get(self, "ungraceful"))

    @builtins.property
    @jsii.member(jsii_name="capacityMonitoringApproachInput")
    def capacity_monitoring_approach_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "capacityMonitoringApproachInput"))

    @builtins.property
    @jsii.member(jsii_name="serviceInput")
    def service_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigService"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigService"]]], jsii.get(self, "serviceInput"))

    @builtins.property
    @jsii.member(jsii_name="targetPercentInput")
    def target_percent_input(self) -> typing.Optional[jsii.Number]:
        return typing.cast(typing.Optional[jsii.Number], jsii.get(self, "targetPercentInput"))

    @builtins.property
    @jsii.member(jsii_name="timeoutMinutesInput")
    def timeout_minutes_input(self) -> typing.Optional[jsii.Number]:
        return typing.cast(typing.Optional[jsii.Number], jsii.get(self, "timeoutMinutesInput"))

    @builtins.property
    @jsii.member(jsii_name="ungracefulInput")
    def ungraceful_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigUngraceful"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigUngraceful"]]], jsii.get(self, "ungracefulInput"))

    @builtins.property
    @jsii.member(jsii_name="capacityMonitoringApproach")
    def capacity_monitoring_approach(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "capacityMonitoringApproach"))

    @capacity_monitoring_approach.setter
    def capacity_monitoring_approach(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__6f54e8cf1d37f338b71bea75ffece8fff732ec69652e040207c4c0b2b920aa4b)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "capacityMonitoringApproach", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="targetPercent")
    def target_percent(self) -> jsii.Number:
        return typing.cast(jsii.Number, jsii.get(self, "targetPercent"))

    @target_percent.setter
    def target_percent(self, value: jsii.Number) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__a79c261e593078a84cd3aade19b08376a8bf11b476124a74ce00d0370ba6d931)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "targetPercent", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="timeoutMinutes")
    def timeout_minutes(self) -> jsii.Number:
        return typing.cast(jsii.Number, jsii.get(self, "timeoutMinutes"))

    @timeout_minutes.setter
    def timeout_minutes(self, value: jsii.Number) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__323ea359d5016f02407d51dd64c1de45a7e493319597a7de9d1b409319f58ef4)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "timeoutMinutes", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfig"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfig"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfig"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__a79c06f108a2a40d46b94505e98b883e03a21f9aed75afe0afda653293b4185e)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigService",
    jsii_struct_bases=[],
    name_mapping={
        "cluster_arn": "clusterArn",
        "service_arn": "serviceArn",
        "cross_account_role": "crossAccountRole",
        "external_id": "externalId",
    },
)
class ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigService:
    def __init__(
        self,
        *,
        cluster_arn: builtins.str,
        service_arn: builtins.str,
        cross_account_role: typing.Optional[builtins.str] = None,
        external_id: typing.Optional[builtins.str] = None,
    ) -> None:
        '''
        :param cluster_arn: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cluster_arn ArcregionswitchPlan#cluster_arn}.
        :param service_arn: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#service_arn ArcregionswitchPlan#service_arn}.
        :param cross_account_role: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cross_account_role ArcregionswitchPlan#cross_account_role}.
        :param external_id: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#external_id ArcregionswitchPlan#external_id}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__10a7a5af4e303488dc5065f2077e4983d902aed99614d8bb23049e4aeb09c6aa)
            check_type(argname="argument cluster_arn", value=cluster_arn, expected_type=type_hints["cluster_arn"])
            check_type(argname="argument service_arn", value=service_arn, expected_type=type_hints["service_arn"])
            check_type(argname="argument cross_account_role", value=cross_account_role, expected_type=type_hints["cross_account_role"])
            check_type(argname="argument external_id", value=external_id, expected_type=type_hints["external_id"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "cluster_arn": cluster_arn,
            "service_arn": service_arn,
        }
        if cross_account_role is not None:
            self._values["cross_account_role"] = cross_account_role
        if external_id is not None:
            self._values["external_id"] = external_id

    @builtins.property
    def cluster_arn(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cluster_arn ArcregionswitchPlan#cluster_arn}.'''
        result = self._values.get("cluster_arn")
        assert result is not None, "Required property 'cluster_arn' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def service_arn(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#service_arn ArcregionswitchPlan#service_arn}.'''
        result = self._values.get("service_arn")
        assert result is not None, "Required property 'service_arn' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def cross_account_role(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cross_account_role ArcregionswitchPlan#cross_account_role}.'''
        result = self._values.get("cross_account_role")
        return typing.cast(typing.Optional[builtins.str], result)

    @builtins.property
    def external_id(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#external_id ArcregionswitchPlan#external_id}.'''
        result = self._values.get("external_id")
        return typing.cast(typing.Optional[builtins.str], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigService(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigServiceList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigServiceList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__ffa4961ef541785b86ddc734ee7981d3e95918a843bbba8796c78667a9b35738)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigServiceOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__a7f00f67aa5fcf16c94fb918aeeb8b50072729efa85222c29f09bea39260dbe2)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigServiceOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigService"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigService"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigService"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__3a0234c890fd0d4f6fd8ee2b7bb975ddd6a3979cd61e73c057bbc3cd4515f0f3)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigServiceOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigServiceOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__6d88b2b03aa83089099dbf49165fa1f9e9b77b993f3e1b1757eaca20cf7efa17)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="resetCrossAccountRole")
    def reset_cross_account_role(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetCrossAccountRole", []))

    @jsii.member(jsii_name="resetExternalId")
    def reset_external_id(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetExternalId", []))

    @builtins.property
    @jsii.member(jsii_name="clusterArnInput")
    def cluster_arn_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "clusterArnInput"))

    @builtins.property
    @jsii.member(jsii_name="crossAccountRoleInput")
    def cross_account_role_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "crossAccountRoleInput"))

    @builtins.property
    @jsii.member(jsii_name="externalIdInput")
    def external_id_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "externalIdInput"))

    @builtins.property
    @jsii.member(jsii_name="serviceArnInput")
    def service_arn_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "serviceArnInput"))

    @builtins.property
    @jsii.member(jsii_name="clusterArn")
    def cluster_arn(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "clusterArn"))

    @cluster_arn.setter
    def cluster_arn(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__aa48eb3df997df4dedd222a61b0472c8511b886a589a12c67fe0b2b2e1fd20ad)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "clusterArn", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="crossAccountRole")
    def cross_account_role(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "crossAccountRole"))

    @cross_account_role.setter
    def cross_account_role(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__0f725afe374cd904846e17ec388aa286beab07bfd963c3897c8b396b844991de)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "crossAccountRole", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="externalId")
    def external_id(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "externalId"))

    @external_id.setter
    def external_id(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__986fc82b3f294656a6bdfd20a878bafb2efece8130f23da5b1e26e84e7f188bc)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "externalId", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="serviceArn")
    def service_arn(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "serviceArn"))

    @service_arn.setter
    def service_arn(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__0c439570a5bb36b3dfab0793b1b9c086450962653d9c6b6b815abf0835dea4b5)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "serviceArn", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigService"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigService"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigService"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__e6767fa830cb98002fccac0dbcf5e10bb4b9b275b89b5c235a3c9d1ccbe1f42d)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigUngraceful",
    jsii_struct_bases=[],
    name_mapping={"minimum_success_percentage": "minimumSuccessPercentage"},
)
class ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigUngraceful:
    def __init__(self, *, minimum_success_percentage: jsii.Number) -> None:
        '''
        :param minimum_success_percentage: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#minimum_success_percentage ArcregionswitchPlan#minimum_success_percentage}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__71427524083d5cff6ab5bbffeab6db93ab40ba835441887faea275800d0822b6)
            check_type(argname="argument minimum_success_percentage", value=minimum_success_percentage, expected_type=type_hints["minimum_success_percentage"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "minimum_success_percentage": minimum_success_percentage,
        }

    @builtins.property
    def minimum_success_percentage(self) -> jsii.Number:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#minimum_success_percentage ArcregionswitchPlan#minimum_success_percentage}.'''
        result = self._values.get("minimum_success_percentage")
        assert result is not None, "Required property 'minimum_success_percentage' is missing"
        return typing.cast(jsii.Number, result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigUngraceful(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigUngracefulList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigUngracefulList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__bcfc7425b64b3c4b6a27070528d61cc8c8a58ee2301cd27c853f2bcd0d451634)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigUngracefulOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__40832b19e32e03f6466b09eee0556e682877ea252d1551ff8b0dfefbf533a28c)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigUngracefulOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigUngraceful"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigUngraceful"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigUngraceful"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__d6283583b6aedd020076da7195fd1d4db2c0db5361030d3e8ea68e9bd3116511)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigUngracefulOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigUngracefulOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__31ea09fb55d70d748f460f6cd136aa0668bed76e02bb573fc4fb6ebad084ef1c)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @builtins.property
    @jsii.member(jsii_name="minimumSuccessPercentageInput")
    def minimum_success_percentage_input(self) -> typing.Optional[jsii.Number]:
        return typing.cast(typing.Optional[jsii.Number], jsii.get(self, "minimumSuccessPercentageInput"))

    @builtins.property
    @jsii.member(jsii_name="minimumSuccessPercentage")
    def minimum_success_percentage(self) -> jsii.Number:
        return typing.cast(jsii.Number, jsii.get(self, "minimumSuccessPercentage"))

    @minimum_success_percentage.setter
    def minimum_success_percentage(self, value: jsii.Number) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__00550b6a67d87e6e677b2988a30477892334c2dabdc9e319393a38b3600b4a6a)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "minimumSuccessPercentage", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigUngraceful"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigUngraceful"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigUngraceful"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__36f63d0d899264e94ac2a1c74f3eafd29ba8c8b5dbb0ebaeec004a72cfe8556f)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfig",
    jsii_struct_bases=[],
    name_mapping={
        "capacity_monitoring_approach": "capacityMonitoringApproach",
        "target_percent": "targetPercent",
        "eks_clusters": "eksClusters",
        "kubernetes_resource_type": "kubernetesResourceType",
        "scaling_resources": "scalingResources",
        "timeout_minutes": "timeoutMinutes",
        "ungraceful": "ungraceful",
    },
)
class ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfig:
    def __init__(
        self,
        *,
        capacity_monitoring_approach: builtins.str,
        target_percent: jsii.Number,
        eks_clusters: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigEksClusters", typing.Dict[builtins.str, typing.Any]]]]] = None,
        kubernetes_resource_type: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigKubernetesResourceType", typing.Dict[builtins.str, typing.Any]]]]] = None,
        scaling_resources: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResources", typing.Dict[builtins.str, typing.Any]]]]] = None,
        timeout_minutes: typing.Optional[jsii.Number] = None,
        ungraceful: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigUngraceful", typing.Dict[builtins.str, typing.Any]]]]] = None,
    ) -> None:
        '''
        :param capacity_monitoring_approach: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#capacity_monitoring_approach ArcregionswitchPlan#capacity_monitoring_approach}.
        :param target_percent: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#target_percent ArcregionswitchPlan#target_percent}.
        :param eks_clusters: eks_clusters block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#eks_clusters ArcregionswitchPlan#eks_clusters}
        :param kubernetes_resource_type: kubernetes_resource_type block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#kubernetes_resource_type ArcregionswitchPlan#kubernetes_resource_type}
        :param scaling_resources: scaling_resources block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#scaling_resources ArcregionswitchPlan#scaling_resources}
        :param timeout_minutes: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#timeout_minutes ArcregionswitchPlan#timeout_minutes}.
        :param ungraceful: ungraceful block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#ungraceful ArcregionswitchPlan#ungraceful}
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__add3ae7f1b86f1e9054fc2e12e1c036df1caa7d1bc81a2b3192a8f8ada5474fd)
            check_type(argname="argument capacity_monitoring_approach", value=capacity_monitoring_approach, expected_type=type_hints["capacity_monitoring_approach"])
            check_type(argname="argument target_percent", value=target_percent, expected_type=type_hints["target_percent"])
            check_type(argname="argument eks_clusters", value=eks_clusters, expected_type=type_hints["eks_clusters"])
            check_type(argname="argument kubernetes_resource_type", value=kubernetes_resource_type, expected_type=type_hints["kubernetes_resource_type"])
            check_type(argname="argument scaling_resources", value=scaling_resources, expected_type=type_hints["scaling_resources"])
            check_type(argname="argument timeout_minutes", value=timeout_minutes, expected_type=type_hints["timeout_minutes"])
            check_type(argname="argument ungraceful", value=ungraceful, expected_type=type_hints["ungraceful"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "capacity_monitoring_approach": capacity_monitoring_approach,
            "target_percent": target_percent,
        }
        if eks_clusters is not None:
            self._values["eks_clusters"] = eks_clusters
        if kubernetes_resource_type is not None:
            self._values["kubernetes_resource_type"] = kubernetes_resource_type
        if scaling_resources is not None:
            self._values["scaling_resources"] = scaling_resources
        if timeout_minutes is not None:
            self._values["timeout_minutes"] = timeout_minutes
        if ungraceful is not None:
            self._values["ungraceful"] = ungraceful

    @builtins.property
    def capacity_monitoring_approach(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#capacity_monitoring_approach ArcregionswitchPlan#capacity_monitoring_approach}.'''
        result = self._values.get("capacity_monitoring_approach")
        assert result is not None, "Required property 'capacity_monitoring_approach' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def target_percent(self) -> jsii.Number:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#target_percent ArcregionswitchPlan#target_percent}.'''
        result = self._values.get("target_percent")
        assert result is not None, "Required property 'target_percent' is missing"
        return typing.cast(jsii.Number, result)

    @builtins.property
    def eks_clusters(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigEksClusters"]]]:
        '''eks_clusters block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#eks_clusters ArcregionswitchPlan#eks_clusters}
        '''
        result = self._values.get("eks_clusters")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigEksClusters"]]], result)

    @builtins.property
    def kubernetes_resource_type(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigKubernetesResourceType"]]]:
        '''kubernetes_resource_type block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#kubernetes_resource_type ArcregionswitchPlan#kubernetes_resource_type}
        '''
        result = self._values.get("kubernetes_resource_type")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigKubernetesResourceType"]]], result)

    @builtins.property
    def scaling_resources(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResources"]]]:
        '''scaling_resources block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#scaling_resources ArcregionswitchPlan#scaling_resources}
        '''
        result = self._values.get("scaling_resources")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResources"]]], result)

    @builtins.property
    def timeout_minutes(self) -> typing.Optional[jsii.Number]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#timeout_minutes ArcregionswitchPlan#timeout_minutes}.'''
        result = self._values.get("timeout_minutes")
        return typing.cast(typing.Optional[jsii.Number], result)

    @builtins.property
    def ungraceful(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigUngraceful"]]]:
        '''ungraceful block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#ungraceful ArcregionswitchPlan#ungraceful}
        '''
        result = self._values.get("ungraceful")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigUngraceful"]]], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfig(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigEksClusters",
    jsii_struct_bases=[],
    name_mapping={
        "cluster_arn": "clusterArn",
        "cross_account_role": "crossAccountRole",
        "external_id": "externalId",
    },
)
class ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigEksClusters:
    def __init__(
        self,
        *,
        cluster_arn: builtins.str,
        cross_account_role: typing.Optional[builtins.str] = None,
        external_id: typing.Optional[builtins.str] = None,
    ) -> None:
        '''
        :param cluster_arn: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cluster_arn ArcregionswitchPlan#cluster_arn}.
        :param cross_account_role: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cross_account_role ArcregionswitchPlan#cross_account_role}.
        :param external_id: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#external_id ArcregionswitchPlan#external_id}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__91526b0940eb02ea3a0bcf7f6b32e63177fd8e7322bd74e9555c769705b0638f)
            check_type(argname="argument cluster_arn", value=cluster_arn, expected_type=type_hints["cluster_arn"])
            check_type(argname="argument cross_account_role", value=cross_account_role, expected_type=type_hints["cross_account_role"])
            check_type(argname="argument external_id", value=external_id, expected_type=type_hints["external_id"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "cluster_arn": cluster_arn,
        }
        if cross_account_role is not None:
            self._values["cross_account_role"] = cross_account_role
        if external_id is not None:
            self._values["external_id"] = external_id

    @builtins.property
    def cluster_arn(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cluster_arn ArcregionswitchPlan#cluster_arn}.'''
        result = self._values.get("cluster_arn")
        assert result is not None, "Required property 'cluster_arn' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def cross_account_role(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cross_account_role ArcregionswitchPlan#cross_account_role}.'''
        result = self._values.get("cross_account_role")
        return typing.cast(typing.Optional[builtins.str], result)

    @builtins.property
    def external_id(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#external_id ArcregionswitchPlan#external_id}.'''
        result = self._values.get("external_id")
        return typing.cast(typing.Optional[builtins.str], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigEksClusters(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigEksClustersList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigEksClustersList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__2666afe6d240c53f565e8432f3fdb1fd687aff3e0b00ee55cf667882323f91da)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigEksClustersOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__527b7796b036020c821c9d275ca8d12b7541b8cdb8108be5a056d06bf74d1664)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigEksClustersOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigEksClusters"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigEksClusters"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigEksClusters"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__f3b87e9f5e50962dc6581bc1d7e3f51034425455e8bac231ac6a15fc4bb9404b)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigEksClustersOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigEksClustersOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__e908eef9e6bea78affc8421011f139a494af71c73010cfe08c636f7d90870b40)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="resetCrossAccountRole")
    def reset_cross_account_role(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetCrossAccountRole", []))

    @jsii.member(jsii_name="resetExternalId")
    def reset_external_id(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetExternalId", []))

    @builtins.property
    @jsii.member(jsii_name="clusterArnInput")
    def cluster_arn_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "clusterArnInput"))

    @builtins.property
    @jsii.member(jsii_name="crossAccountRoleInput")
    def cross_account_role_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "crossAccountRoleInput"))

    @builtins.property
    @jsii.member(jsii_name="externalIdInput")
    def external_id_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "externalIdInput"))

    @builtins.property
    @jsii.member(jsii_name="clusterArn")
    def cluster_arn(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "clusterArn"))

    @cluster_arn.setter
    def cluster_arn(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__b32e173ddacb6df0db73cc043df76d8015a3f239d1a1620f3969d821e0b9a528)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "clusterArn", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="crossAccountRole")
    def cross_account_role(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "crossAccountRole"))

    @cross_account_role.setter
    def cross_account_role(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__f13e2ec3f5ad147d905ffa2091090bc7d933c372a8756a2aacca684c9f3abafa)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "crossAccountRole", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="externalId")
    def external_id(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "externalId"))

    @external_id.setter
    def external_id(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__7230add8cb01f1e55bf2828f89acc21c9a127e1def1870be4ef306fcee9add28)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "externalId", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigEksClusters"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigEksClusters"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigEksClusters"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__270db05e1f0af05bc6574aecab7cea299a5841880b8a3099ea38d318235dae45)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigKubernetesResourceType",
    jsii_struct_bases=[],
    name_mapping={"api_version": "apiVersion", "kind": "kind"},
)
class ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigKubernetesResourceType:
    def __init__(self, *, api_version: builtins.str, kind: builtins.str) -> None:
        '''
        :param api_version: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#api_version ArcregionswitchPlan#api_version}.
        :param kind: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#kind ArcregionswitchPlan#kind}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__b743c448e231de108c241028487d2e497bfbec2cc577252f23aba25f6c156001)
            check_type(argname="argument api_version", value=api_version, expected_type=type_hints["api_version"])
            check_type(argname="argument kind", value=kind, expected_type=type_hints["kind"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "api_version": api_version,
            "kind": kind,
        }

    @builtins.property
    def api_version(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#api_version ArcregionswitchPlan#api_version}.'''
        result = self._values.get("api_version")
        assert result is not None, "Required property 'api_version' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def kind(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#kind ArcregionswitchPlan#kind}.'''
        result = self._values.get("kind")
        assert result is not None, "Required property 'kind' is missing"
        return typing.cast(builtins.str, result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigKubernetesResourceType(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigKubernetesResourceTypeList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigKubernetesResourceTypeList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__bfddf9126d0fd90226ce268581a46ea4d4bdd11b59e643a0f005b02a86080210)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigKubernetesResourceTypeOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__7c44cd4bdbd1cc5162232afc0d50580bd01ab6dea4a778fb25712bd5b2486562)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigKubernetesResourceTypeOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigKubernetesResourceType"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigKubernetesResourceType"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigKubernetesResourceType"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__ed2062683166baa0546c5b7b9882dfaaa2b40f1eb58ca022a23f16c3ff65ed79)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigKubernetesResourceTypeOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigKubernetesResourceTypeOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__fc9c07f00ae7e4cfc2ba4183b8a626e80f46e5a8c52040628c38fb1da618c205)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @builtins.property
    @jsii.member(jsii_name="apiVersionInput")
    def api_version_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "apiVersionInput"))

    @builtins.property
    @jsii.member(jsii_name="kindInput")
    def kind_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "kindInput"))

    @builtins.property
    @jsii.member(jsii_name="apiVersion")
    def api_version(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "apiVersion"))

    @api_version.setter
    def api_version(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__43844dfd582b80fc1f45d95c2845398245ebc511b02615c6185047f73fa76630)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "apiVersion", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="kind")
    def kind(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "kind"))

    @kind.setter
    def kind(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__1cc13c47267a5817dac217fd79385e25510b30a48e6f34470930047822edfd6c)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "kind", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigKubernetesResourceType"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigKubernetesResourceType"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigKubernetesResourceType"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__4f5ee8b03d1ddaf11cd06172cac18ac425f79cfd731b38f1156dc44499649c2a)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__ae12f73acabdf44c405f51f446116590c3bd45840c51f42dcd826ff8fbefa48f)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__e4097380e1fbe02971d28673ac4e7196a59dc2c25e9fab2fe2950c8baa64db16)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfig"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfig"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__e95d95a67747e7ab8c9efbaa55bb12e87edacb0c12c81d641510af4d1fb76451)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__d799a4f69b5bad29ff9fa577c92684ff63f5a1a9a56a104c93dabcc4a3c9d548)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="putEksClusters")
    def put_eks_clusters(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigEksClusters", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__9de442c4d61ebb5d00dccfecb92970b9de1ccb0c8721ea8e2f7ba0e0a61c2b7a)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putEksClusters", [value]))

    @jsii.member(jsii_name="putKubernetesResourceType")
    def put_kubernetes_resource_type(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigKubernetesResourceType", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__4e11bc4b5fb3b65f78a5183c325edc5da0f9e561d6cc6500a4d438d334b9aea3)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putKubernetesResourceType", [value]))

    @jsii.member(jsii_name="putScalingResources")
    def put_scaling_resources(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResources", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__31cae896f451778b51e43b693eda874cbb7e0cba06cf52ebb658cdd795483e47)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putScalingResources", [value]))

    @jsii.member(jsii_name="putUngraceful")
    def put_ungraceful(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigUngraceful", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__86cb0e813d5950c48859cc0b646612562707787f19e3b6270e5195b7846aa267)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putUngraceful", [value]))

    @jsii.member(jsii_name="resetEksClusters")
    def reset_eks_clusters(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetEksClusters", []))

    @jsii.member(jsii_name="resetKubernetesResourceType")
    def reset_kubernetes_resource_type(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetKubernetesResourceType", []))

    @jsii.member(jsii_name="resetScalingResources")
    def reset_scaling_resources(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetScalingResources", []))

    @jsii.member(jsii_name="resetTimeoutMinutes")
    def reset_timeout_minutes(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetTimeoutMinutes", []))

    @jsii.member(jsii_name="resetUngraceful")
    def reset_ungraceful(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetUngraceful", []))

    @builtins.property
    @jsii.member(jsii_name="eksClusters")
    def eks_clusters(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigEksClustersList":
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigEksClustersList", jsii.get(self, "eksClusters"))

    @builtins.property
    @jsii.member(jsii_name="kubernetesResourceType")
    def kubernetes_resource_type(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigKubernetesResourceTypeList":
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigKubernetesResourceTypeList", jsii.get(self, "kubernetesResourceType"))

    @builtins.property
    @jsii.member(jsii_name="scalingResources")
    def scaling_resources(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResourcesList":
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResourcesList", jsii.get(self, "scalingResources"))

    @builtins.property
    @jsii.member(jsii_name="ungraceful")
    def ungraceful(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigUngracefulList":
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigUngracefulList", jsii.get(self, "ungraceful"))

    @builtins.property
    @jsii.member(jsii_name="capacityMonitoringApproachInput")
    def capacity_monitoring_approach_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "capacityMonitoringApproachInput"))

    @builtins.property
    @jsii.member(jsii_name="eksClustersInput")
    def eks_clusters_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigEksClusters"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigEksClusters"]]], jsii.get(self, "eksClustersInput"))

    @builtins.property
    @jsii.member(jsii_name="kubernetesResourceTypeInput")
    def kubernetes_resource_type_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigKubernetesResourceType"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigKubernetesResourceType"]]], jsii.get(self, "kubernetesResourceTypeInput"))

    @builtins.property
    @jsii.member(jsii_name="scalingResourcesInput")
    def scaling_resources_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResources"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResources"]]], jsii.get(self, "scalingResourcesInput"))

    @builtins.property
    @jsii.member(jsii_name="targetPercentInput")
    def target_percent_input(self) -> typing.Optional[jsii.Number]:
        return typing.cast(typing.Optional[jsii.Number], jsii.get(self, "targetPercentInput"))

    @builtins.property
    @jsii.member(jsii_name="timeoutMinutesInput")
    def timeout_minutes_input(self) -> typing.Optional[jsii.Number]:
        return typing.cast(typing.Optional[jsii.Number], jsii.get(self, "timeoutMinutesInput"))

    @builtins.property
    @jsii.member(jsii_name="ungracefulInput")
    def ungraceful_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigUngraceful"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigUngraceful"]]], jsii.get(self, "ungracefulInput"))

    @builtins.property
    @jsii.member(jsii_name="capacityMonitoringApproach")
    def capacity_monitoring_approach(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "capacityMonitoringApproach"))

    @capacity_monitoring_approach.setter
    def capacity_monitoring_approach(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__dd175a685f2a9a997cac032ffc2813dd29800b42426925937c15df7447f82655)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "capacityMonitoringApproach", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="targetPercent")
    def target_percent(self) -> jsii.Number:
        return typing.cast(jsii.Number, jsii.get(self, "targetPercent"))

    @target_percent.setter
    def target_percent(self, value: jsii.Number) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__bcecd2cbba398488a50f4b4c3600a1efd5ec0340f53d293aea27c2ee644acd95)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "targetPercent", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="timeoutMinutes")
    def timeout_minutes(self) -> jsii.Number:
        return typing.cast(jsii.Number, jsii.get(self, "timeoutMinutes"))

    @timeout_minutes.setter
    def timeout_minutes(self, value: jsii.Number) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__227a2267e509272cd687eef6fa0983537c08b194a6a91b64ad31c3e45e57351e)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "timeoutMinutes", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfig"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfig"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfig"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__a82f071a8ddf6eba268373010280e1804c50ca8a668f8f52d989826522e12964)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResources",
    jsii_struct_bases=[],
    name_mapping={"namespace": "namespace", "resources": "resources"},
)
class ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResources:
    def __init__(
        self,
        *,
        namespace: builtins.str,
        resources: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResourcesResources", typing.Dict[builtins.str, typing.Any]]]]] = None,
    ) -> None:
        '''
        :param namespace: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#namespace ArcregionswitchPlan#namespace}.
        :param resources: resources block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#resources ArcregionswitchPlan#resources}
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__92dfb09f7dfd235dc0a22b831d7580fdc53e5af60346bfcfa0a9dd0bb1eb1888)
            check_type(argname="argument namespace", value=namespace, expected_type=type_hints["namespace"])
            check_type(argname="argument resources", value=resources, expected_type=type_hints["resources"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "namespace": namespace,
        }
        if resources is not None:
            self._values["resources"] = resources

    @builtins.property
    def namespace(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#namespace ArcregionswitchPlan#namespace}.'''
        result = self._values.get("namespace")
        assert result is not None, "Required property 'namespace' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def resources(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResourcesResources"]]]:
        '''resources block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#resources ArcregionswitchPlan#resources}
        '''
        result = self._values.get("resources")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResourcesResources"]]], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResources(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResourcesList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResourcesList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__4dd761323bca2cfac911129ecc634e79c97920a10715ebb1a1ecc72cfc091c01)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResourcesOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__d7f2b27f5060651be7dc947f66e12715883ef7746d4f148d491ad4a465ec9610)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResourcesOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResources"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResources"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResources"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__17a8a0c2c6a44e29575da874fc3685ab0997aee62a816d1caab139e462c0807b)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResourcesOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResourcesOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__06533d37cbe0539e98cb423952c1e31da3e0c947df17b2c6aefa203cc5e90077)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="putResources")
    def put_resources(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResourcesResources", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__f3aa64aaf45e7ea73e7fb2ccbcebae3913db45e9c6632597640dc53483e7afd1)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putResources", [value]))

    @jsii.member(jsii_name="resetResources")
    def reset_resources(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetResources", []))

    @builtins.property
    @jsii.member(jsii_name="resources")
    def resources(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResourcesResourcesList":
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResourcesResourcesList", jsii.get(self, "resources"))

    @builtins.property
    @jsii.member(jsii_name="namespaceInput")
    def namespace_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "namespaceInput"))

    @builtins.property
    @jsii.member(jsii_name="resourcesInput")
    def resources_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResourcesResources"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResourcesResources"]]], jsii.get(self, "resourcesInput"))

    @builtins.property
    @jsii.member(jsii_name="namespace")
    def namespace(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "namespace"))

    @namespace.setter
    def namespace(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__b6547cfe873f8a59cc35658ebe102c230420a39c7b711153a6244ed98752d7de)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "namespace", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResources"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResources"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResources"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__990c00eb293b33b9051608478c9595ae8cb1ff85e5e811b9fbdbf31d4c10d136)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResourcesResources",
    jsii_struct_bases=[],
    name_mapping={
        "name": "name",
        "namespace": "namespace",
        "resource_name": "resourceName",
        "hpa_name": "hpaName",
    },
)
class ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResourcesResources:
    def __init__(
        self,
        *,
        name: builtins.str,
        namespace: builtins.str,
        resource_name: builtins.str,
        hpa_name: typing.Optional[builtins.str] = None,
    ) -> None:
        '''
        :param name: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#name ArcregionswitchPlan#name}.
        :param namespace: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#namespace ArcregionswitchPlan#namespace}.
        :param resource_name: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#resource_name ArcregionswitchPlan#resource_name}.
        :param hpa_name: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#hpa_name ArcregionswitchPlan#hpa_name}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__88c84a284465370fa47dac2fc80624de8ecd1497275c2824bf56259c2b5c8e44)
            check_type(argname="argument name", value=name, expected_type=type_hints["name"])
            check_type(argname="argument namespace", value=namespace, expected_type=type_hints["namespace"])
            check_type(argname="argument resource_name", value=resource_name, expected_type=type_hints["resource_name"])
            check_type(argname="argument hpa_name", value=hpa_name, expected_type=type_hints["hpa_name"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "name": name,
            "namespace": namespace,
            "resource_name": resource_name,
        }
        if hpa_name is not None:
            self._values["hpa_name"] = hpa_name

    @builtins.property
    def name(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#name ArcregionswitchPlan#name}.'''
        result = self._values.get("name")
        assert result is not None, "Required property 'name' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def namespace(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#namespace ArcregionswitchPlan#namespace}.'''
        result = self._values.get("namespace")
        assert result is not None, "Required property 'namespace' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def resource_name(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#resource_name ArcregionswitchPlan#resource_name}.'''
        result = self._values.get("resource_name")
        assert result is not None, "Required property 'resource_name' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def hpa_name(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#hpa_name ArcregionswitchPlan#hpa_name}.'''
        result = self._values.get("hpa_name")
        return typing.cast(typing.Optional[builtins.str], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResourcesResources(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResourcesResourcesList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResourcesResourcesList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__13774692b9da1b3c7a14570c303e52f02e25196b06c09a0a921b810b85ad0940)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResourcesResourcesOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__1adca0c4681504cefb4b05e11a76324cd3485092d4d5c568792be0ed7c7a5650)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResourcesResourcesOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResourcesResources"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResourcesResources"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResourcesResources"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__ff410a0a98eec1a53598593ab04ad75b6fe177f89164e894793d9cfaade23a07)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResourcesResourcesOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResourcesResourcesOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__42e6573eb7ccb713626bf61104c0c42674ebb21be3a85069a942538626528e82)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="resetHpaName")
    def reset_hpa_name(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetHpaName", []))

    @builtins.property
    @jsii.member(jsii_name="hpaNameInput")
    def hpa_name_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "hpaNameInput"))

    @builtins.property
    @jsii.member(jsii_name="nameInput")
    def name_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "nameInput"))

    @builtins.property
    @jsii.member(jsii_name="namespaceInput")
    def namespace_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "namespaceInput"))

    @builtins.property
    @jsii.member(jsii_name="resourceNameInput")
    def resource_name_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "resourceNameInput"))

    @builtins.property
    @jsii.member(jsii_name="hpaName")
    def hpa_name(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "hpaName"))

    @hpa_name.setter
    def hpa_name(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__dba8720a6320b8fc14593c82dfb36e5f0fd36c2c8b2ac7a113d1e18d0583e8c3)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "hpaName", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="name")
    def name(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "name"))

    @name.setter
    def name(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__d87ad56c1b51da04514101270468ed71f062a1bcc8f9ed8e20985b7ba7e126e6)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "name", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="namespace")
    def namespace(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "namespace"))

    @namespace.setter
    def namespace(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__fafa369d77213be4e9458fc44b4bb9f4525a7b443ef092283ec34c197fe72e1a)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "namespace", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="resourceName")
    def resource_name(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "resourceName"))

    @resource_name.setter
    def resource_name(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__61f920ef5c8fab999036bf5ee4b92e2ff8e9d573120ed40ac9097b7112ad9dd3)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "resourceName", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResourcesResources"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResourcesResources"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResourcesResources"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__0bcd221bd125bd19c98f04e58cb4231f5611d64fdfdfe8872e2ddf609371f97c)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigUngraceful",
    jsii_struct_bases=[],
    name_mapping={"minimum_success_percentage": "minimumSuccessPercentage"},
)
class ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigUngraceful:
    def __init__(self, *, minimum_success_percentage: jsii.Number) -> None:
        '''
        :param minimum_success_percentage: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#minimum_success_percentage ArcregionswitchPlan#minimum_success_percentage}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__dc208154507dec3618d73cb85e0c7149fbc6a6e6d54225ef7d032d60f95d0e0e)
            check_type(argname="argument minimum_success_percentage", value=minimum_success_percentage, expected_type=type_hints["minimum_success_percentage"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "minimum_success_percentage": minimum_success_percentage,
        }

    @builtins.property
    def minimum_success_percentage(self) -> jsii.Number:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#minimum_success_percentage ArcregionswitchPlan#minimum_success_percentage}.'''
        result = self._values.get("minimum_success_percentage")
        assert result is not None, "Required property 'minimum_success_percentage' is missing"
        return typing.cast(jsii.Number, result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigUngraceful(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigUngracefulList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigUngracefulList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__59e891b80e7d39c01baf8a5aed41b18dd15772e992d0bae97a4c0977e5d4d52a)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigUngracefulOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__ec4241eb581f20d24f4b33ec103e0c7f655f1ed2786c5c7e3a02cbe153ba9cc0)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigUngracefulOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigUngraceful"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigUngraceful"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigUngraceful"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__e2b3fcce6054065804d99f918b3588a67b601b8b22345c5108aa144064c91239)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigUngracefulOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigUngracefulOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__fd22d400fdb66858b635a95e4db446ff55126bd1b3fa88cab456fdb9c6abebf1)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @builtins.property
    @jsii.member(jsii_name="minimumSuccessPercentageInput")
    def minimum_success_percentage_input(self) -> typing.Optional[jsii.Number]:
        return typing.cast(typing.Optional[jsii.Number], jsii.get(self, "minimumSuccessPercentageInput"))

    @builtins.property
    @jsii.member(jsii_name="minimumSuccessPercentage")
    def minimum_success_percentage(self) -> jsii.Number:
        return typing.cast(jsii.Number, jsii.get(self, "minimumSuccessPercentage"))

    @minimum_success_percentage.setter
    def minimum_success_percentage(self, value: jsii.Number) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__30460bf4aa866b693a0c726225dc79053a398473f2d8f80dc3ce7ca7af8ddb9a)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "minimumSuccessPercentage", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigUngraceful"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigUngraceful"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigUngraceful"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__42cbd5bf6fe71e700aed52efd9e38e108a849312de75337ef0bbf157763c3e77)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepExecutionApprovalConfig",
    jsii_struct_bases=[],
    name_mapping={
        "approval_role": "approvalRole",
        "timeout_minutes": "timeoutMinutes",
    },
)
class ArcregionswitchPlanWorkflowStepParallelConfigStepExecutionApprovalConfig:
    def __init__(
        self,
        *,
        approval_role: builtins.str,
        timeout_minutes: typing.Optional[jsii.Number] = None,
    ) -> None:
        '''
        :param approval_role: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#approval_role ArcregionswitchPlan#approval_role}.
        :param timeout_minutes: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#timeout_minutes ArcregionswitchPlan#timeout_minutes}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__4613902647acbe84ba5d4af625aebbf7b105b6b9fd922bd8a490be0cc109a039)
            check_type(argname="argument approval_role", value=approval_role, expected_type=type_hints["approval_role"])
            check_type(argname="argument timeout_minutes", value=timeout_minutes, expected_type=type_hints["timeout_minutes"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "approval_role": approval_role,
        }
        if timeout_minutes is not None:
            self._values["timeout_minutes"] = timeout_minutes

    @builtins.property
    def approval_role(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#approval_role ArcregionswitchPlan#approval_role}.'''
        result = self._values.get("approval_role")
        assert result is not None, "Required property 'approval_role' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def timeout_minutes(self) -> typing.Optional[jsii.Number]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#timeout_minutes ArcregionswitchPlan#timeout_minutes}.'''
        result = self._values.get("timeout_minutes")
        return typing.cast(typing.Optional[jsii.Number], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepParallelConfigStepExecutionApprovalConfig(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepParallelConfigStepExecutionApprovalConfigList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepExecutionApprovalConfigList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__6a8c2b96ec2b4d97a3dabcf772aab03b702a7462f25914884e15f5edfed850af)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepExecutionApprovalConfigOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__e7d56fdbd29a609ecb912c6cbe328c493b1d059f7c4e368ffe67fff7d48e6ed0)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepExecutionApprovalConfigOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepExecutionApprovalConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepExecutionApprovalConfig"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepExecutionApprovalConfig"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__f92b037f2c1fbedb73b934fd744f34c1afc00e3649ba7d5e4118869a7145a201)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepParallelConfigStepExecutionApprovalConfigOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepExecutionApprovalConfigOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__876751b2b27cb70137887f7a3f6145e0a026e18018d712e637935c83bf97718b)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="resetTimeoutMinutes")
    def reset_timeout_minutes(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetTimeoutMinutes", []))

    @builtins.property
    @jsii.member(jsii_name="approvalRoleInput")
    def approval_role_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "approvalRoleInput"))

    @builtins.property
    @jsii.member(jsii_name="timeoutMinutesInput")
    def timeout_minutes_input(self) -> typing.Optional[jsii.Number]:
        return typing.cast(typing.Optional[jsii.Number], jsii.get(self, "timeoutMinutesInput"))

    @builtins.property
    @jsii.member(jsii_name="approvalRole")
    def approval_role(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "approvalRole"))

    @approval_role.setter
    def approval_role(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__20952afee56e684a7c21c64586820284c6708de8b5822666d8e346137e0df73f)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "approvalRole", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="timeoutMinutes")
    def timeout_minutes(self) -> jsii.Number:
        return typing.cast(jsii.Number, jsii.get(self, "timeoutMinutes"))

    @timeout_minutes.setter
    def timeout_minutes(self, value: jsii.Number) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__c13fdb089365a3ab4de468b2cef5ebe967f70e5e81d15e42b80cbc6ef022d45e)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "timeoutMinutes", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepExecutionApprovalConfig"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepExecutionApprovalConfig"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepExecutionApprovalConfig"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__d75c95c2e8def0695ad29d348b4a46448aacfd4ce8a68bde96ceacb802daa06e)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfig",
    jsii_struct_bases=[],
    name_mapping={
        "behavior": "behavior",
        "database_cluster_arns": "databaseClusterArns",
        "global_cluster_identifier": "globalClusterIdentifier",
        "cross_account_role": "crossAccountRole",
        "external_id": "externalId",
        "timeout_minutes": "timeoutMinutes",
        "ungraceful": "ungraceful",
    },
)
class ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfig:
    def __init__(
        self,
        *,
        behavior: builtins.str,
        database_cluster_arns: typing.Sequence[builtins.str],
        global_cluster_identifier: builtins.str,
        cross_account_role: typing.Optional[builtins.str] = None,
        external_id: typing.Optional[builtins.str] = None,
        timeout_minutes: typing.Optional[jsii.Number] = None,
        ungraceful: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfigUngraceful", typing.Dict[builtins.str, typing.Any]]]]] = None,
    ) -> None:
        '''
        :param behavior: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#behavior ArcregionswitchPlan#behavior}.
        :param database_cluster_arns: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#database_cluster_arns ArcregionswitchPlan#database_cluster_arns}.
        :param global_cluster_identifier: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#global_cluster_identifier ArcregionswitchPlan#global_cluster_identifier}.
        :param cross_account_role: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cross_account_role ArcregionswitchPlan#cross_account_role}.
        :param external_id: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#external_id ArcregionswitchPlan#external_id}.
        :param timeout_minutes: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#timeout_minutes ArcregionswitchPlan#timeout_minutes}.
        :param ungraceful: ungraceful block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#ungraceful ArcregionswitchPlan#ungraceful}
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__20b72e94f0f62e3a4f263c1fe14dcdbd5bcb996edb622e852a783c2a1d2ad038)
            check_type(argname="argument behavior", value=behavior, expected_type=type_hints["behavior"])
            check_type(argname="argument database_cluster_arns", value=database_cluster_arns, expected_type=type_hints["database_cluster_arns"])
            check_type(argname="argument global_cluster_identifier", value=global_cluster_identifier, expected_type=type_hints["global_cluster_identifier"])
            check_type(argname="argument cross_account_role", value=cross_account_role, expected_type=type_hints["cross_account_role"])
            check_type(argname="argument external_id", value=external_id, expected_type=type_hints["external_id"])
            check_type(argname="argument timeout_minutes", value=timeout_minutes, expected_type=type_hints["timeout_minutes"])
            check_type(argname="argument ungraceful", value=ungraceful, expected_type=type_hints["ungraceful"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "behavior": behavior,
            "database_cluster_arns": database_cluster_arns,
            "global_cluster_identifier": global_cluster_identifier,
        }
        if cross_account_role is not None:
            self._values["cross_account_role"] = cross_account_role
        if external_id is not None:
            self._values["external_id"] = external_id
        if timeout_minutes is not None:
            self._values["timeout_minutes"] = timeout_minutes
        if ungraceful is not None:
            self._values["ungraceful"] = ungraceful

    @builtins.property
    def behavior(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#behavior ArcregionswitchPlan#behavior}.'''
        result = self._values.get("behavior")
        assert result is not None, "Required property 'behavior' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def database_cluster_arns(self) -> typing.List[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#database_cluster_arns ArcregionswitchPlan#database_cluster_arns}.'''
        result = self._values.get("database_cluster_arns")
        assert result is not None, "Required property 'database_cluster_arns' is missing"
        return typing.cast(typing.List[builtins.str], result)

    @builtins.property
    def global_cluster_identifier(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#global_cluster_identifier ArcregionswitchPlan#global_cluster_identifier}.'''
        result = self._values.get("global_cluster_identifier")
        assert result is not None, "Required property 'global_cluster_identifier' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def cross_account_role(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cross_account_role ArcregionswitchPlan#cross_account_role}.'''
        result = self._values.get("cross_account_role")
        return typing.cast(typing.Optional[builtins.str], result)

    @builtins.property
    def external_id(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#external_id ArcregionswitchPlan#external_id}.'''
        result = self._values.get("external_id")
        return typing.cast(typing.Optional[builtins.str], result)

    @builtins.property
    def timeout_minutes(self) -> typing.Optional[jsii.Number]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#timeout_minutes ArcregionswitchPlan#timeout_minutes}.'''
        result = self._values.get("timeout_minutes")
        return typing.cast(typing.Optional[jsii.Number], result)

    @builtins.property
    def ungraceful(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfigUngraceful"]]]:
        '''ungraceful block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#ungraceful ArcregionswitchPlan#ungraceful}
        '''
        result = self._values.get("ungraceful")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfigUngraceful"]]], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfig(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfigList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfigList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__15dc135b749365ccfdbd04288877f53718e465c3a30a887ee56168fd6526b821)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfigOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__ecfacb0556a1354a131433f99575f9cc2e20d879e05e3421546e6026626f1de9)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfigOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfig"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfig"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__b01697cc893da9e661d575ae0f454f7924328364cf36bf9d5b72c2960e93ed12)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfigOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfigOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__37f29b7da57b1ae57dc407028fb41f6f7ceec539f3c68142d3a9d41ae82c78b4)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="putUngraceful")
    def put_ungraceful(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfigUngraceful", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__e94beda9305a5bfd2b0c7ba256f6765fec1824dd664dfc23e4dc828d8d1d3d04)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putUngraceful", [value]))

    @jsii.member(jsii_name="resetCrossAccountRole")
    def reset_cross_account_role(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetCrossAccountRole", []))

    @jsii.member(jsii_name="resetExternalId")
    def reset_external_id(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetExternalId", []))

    @jsii.member(jsii_name="resetTimeoutMinutes")
    def reset_timeout_minutes(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetTimeoutMinutes", []))

    @jsii.member(jsii_name="resetUngraceful")
    def reset_ungraceful(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetUngraceful", []))

    @builtins.property
    @jsii.member(jsii_name="ungraceful")
    def ungraceful(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfigUngracefulList":
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfigUngracefulList", jsii.get(self, "ungraceful"))

    @builtins.property
    @jsii.member(jsii_name="behaviorInput")
    def behavior_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "behaviorInput"))

    @builtins.property
    @jsii.member(jsii_name="crossAccountRoleInput")
    def cross_account_role_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "crossAccountRoleInput"))

    @builtins.property
    @jsii.member(jsii_name="databaseClusterArnsInput")
    def database_cluster_arns_input(self) -> typing.Optional[typing.List[builtins.str]]:
        return typing.cast(typing.Optional[typing.List[builtins.str]], jsii.get(self, "databaseClusterArnsInput"))

    @builtins.property
    @jsii.member(jsii_name="externalIdInput")
    def external_id_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "externalIdInput"))

    @builtins.property
    @jsii.member(jsii_name="globalClusterIdentifierInput")
    def global_cluster_identifier_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "globalClusterIdentifierInput"))

    @builtins.property
    @jsii.member(jsii_name="timeoutMinutesInput")
    def timeout_minutes_input(self) -> typing.Optional[jsii.Number]:
        return typing.cast(typing.Optional[jsii.Number], jsii.get(self, "timeoutMinutesInput"))

    @builtins.property
    @jsii.member(jsii_name="ungracefulInput")
    def ungraceful_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfigUngraceful"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfigUngraceful"]]], jsii.get(self, "ungracefulInput"))

    @builtins.property
    @jsii.member(jsii_name="behavior")
    def behavior(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "behavior"))

    @behavior.setter
    def behavior(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__e85804091f1618db24d0abccf6976cb61620702abbdc290e828a1301a4674873)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "behavior", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="crossAccountRole")
    def cross_account_role(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "crossAccountRole"))

    @cross_account_role.setter
    def cross_account_role(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__bca988944b82d8b0d442d412c33cecaee4b1bbecea77d31d0d8da865e3873366)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "crossAccountRole", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="databaseClusterArns")
    def database_cluster_arns(self) -> typing.List[builtins.str]:
        return typing.cast(typing.List[builtins.str], jsii.get(self, "databaseClusterArns"))

    @database_cluster_arns.setter
    def database_cluster_arns(self, value: typing.List[builtins.str]) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__106f3bcc082ac143a86f6b664512fe22e7e4fd1f2b0bd7f00074a29f872bd1c4)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "databaseClusterArns", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="externalId")
    def external_id(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "externalId"))

    @external_id.setter
    def external_id(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__c0bfe3e5976d491a42a43a2fd1c5e6d87a704e5730d6d357c20b05042c5cd1f3)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "externalId", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="globalClusterIdentifier")
    def global_cluster_identifier(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "globalClusterIdentifier"))

    @global_cluster_identifier.setter
    def global_cluster_identifier(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__515e415868950c5ae9e5a292d262c6c5386db8e6db0495fccb77e18a273ff702)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "globalClusterIdentifier", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="timeoutMinutes")
    def timeout_minutes(self) -> jsii.Number:
        return typing.cast(jsii.Number, jsii.get(self, "timeoutMinutes"))

    @timeout_minutes.setter
    def timeout_minutes(self, value: jsii.Number) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__0a97fff5d12164ac9ef31e2e9a26e18c28618a4b4630c67df668f97ee7c721f4)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "timeoutMinutes", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfig"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfig"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfig"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__4b8d94ddbf055c9defd12fed8401eb6e4b4d41555a487a4afce7d0030cef2873)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfigUngraceful",
    jsii_struct_bases=[],
    name_mapping={"ungraceful": "ungraceful"},
)
class ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfigUngraceful:
    def __init__(self, *, ungraceful: builtins.str) -> None:
        '''
        :param ungraceful: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#ungraceful ArcregionswitchPlan#ungraceful}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__4c9038bbd1f9fa1cd54df757ddd8a839262238e31f25cc276667f659525b3ff3)
            check_type(argname="argument ungraceful", value=ungraceful, expected_type=type_hints["ungraceful"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "ungraceful": ungraceful,
        }

    @builtins.property
    def ungraceful(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#ungraceful ArcregionswitchPlan#ungraceful}.'''
        result = self._values.get("ungraceful")
        assert result is not None, "Required property 'ungraceful' is missing"
        return typing.cast(builtins.str, result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfigUngraceful(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfigUngracefulList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfigUngracefulList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__216d04bef4439520814a0334af74a541df0460b638406fc47e8d15214f4463b0)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfigUngracefulOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__f95d670764dfeccc6d169b585d208e7a9bfe0e885aec06a94574b7a9501cafcd)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfigUngracefulOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfigUngraceful"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfigUngraceful"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfigUngraceful"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__981ab7f5af11a68faf3a5531d9976ecb6eafed4ef56f27e4c1bb08cf11f67048)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfigUngracefulOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfigUngracefulOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__946ec9b840c3d047a1b94bbe2831d6ad18dd33f05f77da873c3fbc4edea3aa28)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @builtins.property
    @jsii.member(jsii_name="ungracefulInput")
    def ungraceful_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "ungracefulInput"))

    @builtins.property
    @jsii.member(jsii_name="ungraceful")
    def ungraceful(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "ungraceful"))

    @ungraceful.setter
    def ungraceful(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__dba26eb214d1087868ffe26ac2300efbccf198e9e1a7ffa7b729309d6e432619)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "ungraceful", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfigUngraceful"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfigUngraceful"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfigUngraceful"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__b3ea6fd1c39a208fb1a0ed2e5f58a09e74b6230b584bd011f4f054558f94608d)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepParallelConfigStepList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__4e03791dfb52db3fd691872a4b1642f8b2857fc83e306e8119429abe2d73832b)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__7135547f3107b77eec6c90af63cef83df6c7abbc0a4d9bf3bc8dafb904aa41a5)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStep"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStep"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStep"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__2055b2ae52e5dc1861cda36696a05707d3a9b7440262707beeb3b210892d6ed3)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepParallelConfigStepOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__5e7ec661e0b1b2e8b530e8cf186737d9d8e7617b9287153b2767396ad1eea434)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="putArcRoutingControlConfig")
    def put_arc_routing_control_config(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfig", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__e305ee2528d3e6e4460d76efec4f784ea0e1e5ce56f36462a58d1b482bc6de63)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putArcRoutingControlConfig", [value]))

    @jsii.member(jsii_name="putCustomActionLambdaConfig")
    def put_custom_action_lambda_config(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfig", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__80414aeeff818d69cc181f90609fc2250762044e59ba980cf77cf6a71f8d03a2)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putCustomActionLambdaConfig", [value]))

    @jsii.member(jsii_name="putDocumentDbConfig")
    def put_document_db_config(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfig", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__ce351565d8b92167fa3be7c0c0fa460f251048090e05c8218057a02160cbe876)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putDocumentDbConfig", [value]))

    @jsii.member(jsii_name="putEc2AsgCapacityIncreaseConfig")
    def put_ec2_asg_capacity_increase_config(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfig", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__3c6d3508d44c3c02f46b015ae3da003db99aeff4e1403b26fb47ef57d72e9e24)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putEc2AsgCapacityIncreaseConfig", [value]))

    @jsii.member(jsii_name="putEcsCapacityIncreaseConfig")
    def put_ecs_capacity_increase_config(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfig", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__4f5385798ea60c2c518ac557b6297c07c56bf4853abb1ac2d938617f51d751ae)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putEcsCapacityIncreaseConfig", [value]))

    @jsii.member(jsii_name="putEksResourceScalingConfig")
    def put_eks_resource_scaling_config(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfig", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__8bd7ac9c9f419fad5f303e98986f65854b0459633dc819549e79480f283d9121)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putEksResourceScalingConfig", [value]))

    @jsii.member(jsii_name="putExecutionApprovalConfig")
    def put_execution_approval_config(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepExecutionApprovalConfig", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__5c59f28a28b8571ad9d122c817e8c4206c35f60b549ed54802e21864725b9c19)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putExecutionApprovalConfig", [value]))

    @jsii.member(jsii_name="putGlobalAuroraConfig")
    def put_global_aurora_config(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfig", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__cba26cf88a58d022d297a89993f84fb9a80c7fcad449f3e24c602d445d9cdfc1)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putGlobalAuroraConfig", [value]))

    @jsii.member(jsii_name="putRegionSwitchPlanConfig")
    def put_region_switch_plan_config(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepRegionSwitchPlanConfig", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__eccaf39b9bd717dbde277bb19f8e44f152d858925a723d9e1484998a721c9b26)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putRegionSwitchPlanConfig", [value]))

    @jsii.member(jsii_name="putRoute53HealthCheckConfig")
    def put_route53_health_check_config(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfig", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__b202f5f99e8063339c44bbf670b3f00fc16a903ed2f8e7af112ea2e6bab559ff)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putRoute53HealthCheckConfig", [value]))

    @jsii.member(jsii_name="resetArcRoutingControlConfig")
    def reset_arc_routing_control_config(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetArcRoutingControlConfig", []))

    @jsii.member(jsii_name="resetCustomActionLambdaConfig")
    def reset_custom_action_lambda_config(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetCustomActionLambdaConfig", []))

    @jsii.member(jsii_name="resetDescription")
    def reset_description(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetDescription", []))

    @jsii.member(jsii_name="resetDocumentDbConfig")
    def reset_document_db_config(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetDocumentDbConfig", []))

    @jsii.member(jsii_name="resetEc2AsgCapacityIncreaseConfig")
    def reset_ec2_asg_capacity_increase_config(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetEc2AsgCapacityIncreaseConfig", []))

    @jsii.member(jsii_name="resetEcsCapacityIncreaseConfig")
    def reset_ecs_capacity_increase_config(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetEcsCapacityIncreaseConfig", []))

    @jsii.member(jsii_name="resetEksResourceScalingConfig")
    def reset_eks_resource_scaling_config(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetEksResourceScalingConfig", []))

    @jsii.member(jsii_name="resetExecutionApprovalConfig")
    def reset_execution_approval_config(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetExecutionApprovalConfig", []))

    @jsii.member(jsii_name="resetGlobalAuroraConfig")
    def reset_global_aurora_config(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetGlobalAuroraConfig", []))

    @jsii.member(jsii_name="resetRegionSwitchPlanConfig")
    def reset_region_switch_plan_config(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetRegionSwitchPlanConfig", []))

    @jsii.member(jsii_name="resetRoute53HealthCheckConfig")
    def reset_route53_health_check_config(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetRoute53HealthCheckConfig", []))

    @builtins.property
    @jsii.member(jsii_name="arcRoutingControlConfig")
    def arc_routing_control_config(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigList":
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigList", jsii.get(self, "arcRoutingControlConfig"))

    @builtins.property
    @jsii.member(jsii_name="customActionLambdaConfig")
    def custom_action_lambda_config(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigList":
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigList", jsii.get(self, "customActionLambdaConfig"))

    @builtins.property
    @jsii.member(jsii_name="documentDbConfig")
    def document_db_config(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfigList":
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfigList", jsii.get(self, "documentDbConfig"))

    @builtins.property
    @jsii.member(jsii_name="ec2AsgCapacityIncreaseConfig")
    def ec2_asg_capacity_increase_config(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigList":
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigList", jsii.get(self, "ec2AsgCapacityIncreaseConfig"))

    @builtins.property
    @jsii.member(jsii_name="ecsCapacityIncreaseConfig")
    def ecs_capacity_increase_config(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigList":
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigList", jsii.get(self, "ecsCapacityIncreaseConfig"))

    @builtins.property
    @jsii.member(jsii_name="eksResourceScalingConfig")
    def eks_resource_scaling_config(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigList":
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigList", jsii.get(self, "eksResourceScalingConfig"))

    @builtins.property
    @jsii.member(jsii_name="executionApprovalConfig")
    def execution_approval_config(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepExecutionApprovalConfigList":
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepExecutionApprovalConfigList", jsii.get(self, "executionApprovalConfig"))

    @builtins.property
    @jsii.member(jsii_name="globalAuroraConfig")
    def global_aurora_config(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfigList":
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfigList", jsii.get(self, "globalAuroraConfig"))

    @builtins.property
    @jsii.member(jsii_name="regionSwitchPlanConfig")
    def region_switch_plan_config(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepRegionSwitchPlanConfigList":
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepRegionSwitchPlanConfigList", jsii.get(self, "regionSwitchPlanConfig"))

    @builtins.property
    @jsii.member(jsii_name="route53HealthCheckConfig")
    def route53_health_check_config(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfigList":
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfigList", jsii.get(self, "route53HealthCheckConfig"))

    @builtins.property
    @jsii.member(jsii_name="arcRoutingControlConfigInput")
    def arc_routing_control_config_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfig"]]], jsii.get(self, "arcRoutingControlConfigInput"))

    @builtins.property
    @jsii.member(jsii_name="customActionLambdaConfigInput")
    def custom_action_lambda_config_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfig"]]], jsii.get(self, "customActionLambdaConfigInput"))

    @builtins.property
    @jsii.member(jsii_name="descriptionInput")
    def description_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "descriptionInput"))

    @builtins.property
    @jsii.member(jsii_name="documentDbConfigInput")
    def document_db_config_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfig"]]], jsii.get(self, "documentDbConfigInput"))

    @builtins.property
    @jsii.member(jsii_name="ec2AsgCapacityIncreaseConfigInput")
    def ec2_asg_capacity_increase_config_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfig"]]], jsii.get(self, "ec2AsgCapacityIncreaseConfigInput"))

    @builtins.property
    @jsii.member(jsii_name="ecsCapacityIncreaseConfigInput")
    def ecs_capacity_increase_config_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfig"]]], jsii.get(self, "ecsCapacityIncreaseConfigInput"))

    @builtins.property
    @jsii.member(jsii_name="eksResourceScalingConfigInput")
    def eks_resource_scaling_config_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfig"]]], jsii.get(self, "eksResourceScalingConfigInput"))

    @builtins.property
    @jsii.member(jsii_name="executionApprovalConfigInput")
    def execution_approval_config_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepExecutionApprovalConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepExecutionApprovalConfig"]]], jsii.get(self, "executionApprovalConfigInput"))

    @builtins.property
    @jsii.member(jsii_name="executionBlockTypeInput")
    def execution_block_type_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "executionBlockTypeInput"))

    @builtins.property
    @jsii.member(jsii_name="globalAuroraConfigInput")
    def global_aurora_config_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfig"]]], jsii.get(self, "globalAuroraConfigInput"))

    @builtins.property
    @jsii.member(jsii_name="nameInput")
    def name_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "nameInput"))

    @builtins.property
    @jsii.member(jsii_name="regionSwitchPlanConfigInput")
    def region_switch_plan_config_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepRegionSwitchPlanConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepRegionSwitchPlanConfig"]]], jsii.get(self, "regionSwitchPlanConfigInput"))

    @builtins.property
    @jsii.member(jsii_name="route53HealthCheckConfigInput")
    def route53_health_check_config_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfig"]]], jsii.get(self, "route53HealthCheckConfigInput"))

    @builtins.property
    @jsii.member(jsii_name="description")
    def description(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "description"))

    @description.setter
    def description(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__aa18f76e96707d3bd962c3094df37d568a3974cbec7d00a7121bcaae84be090b)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "description", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="executionBlockType")
    def execution_block_type(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "executionBlockType"))

    @execution_block_type.setter
    def execution_block_type(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__a4adb9ec3b02bd796bb264d0c0231311cc6d583658364c385aaa650289bbc74c)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "executionBlockType", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="name")
    def name(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "name"))

    @name.setter
    def name(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__19c68697c5a0d8d54e8393260caac797167f3a910ba3b3554ebf73ed0e030905)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "name", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStep"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStep"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStep"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__e0032dfc6b76b2dbe36091c1e93ca187df82a1bcf22b3f9743add815d1190882)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepRegionSwitchPlanConfig",
    jsii_struct_bases=[],
    name_mapping={
        "arn": "arn",
        "cross_account_role": "crossAccountRole",
        "external_id": "externalId",
    },
)
class ArcregionswitchPlanWorkflowStepParallelConfigStepRegionSwitchPlanConfig:
    def __init__(
        self,
        *,
        arn: builtins.str,
        cross_account_role: typing.Optional[builtins.str] = None,
        external_id: typing.Optional[builtins.str] = None,
    ) -> None:
        '''
        :param arn: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#arn ArcregionswitchPlan#arn}.
        :param cross_account_role: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cross_account_role ArcregionswitchPlan#cross_account_role}.
        :param external_id: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#external_id ArcregionswitchPlan#external_id}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__6a8185f1d83559d37b28a385d4cf6ad0f86e6c186e6fe88bba9a50ff63b40819)
            check_type(argname="argument arn", value=arn, expected_type=type_hints["arn"])
            check_type(argname="argument cross_account_role", value=cross_account_role, expected_type=type_hints["cross_account_role"])
            check_type(argname="argument external_id", value=external_id, expected_type=type_hints["external_id"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "arn": arn,
        }
        if cross_account_role is not None:
            self._values["cross_account_role"] = cross_account_role
        if external_id is not None:
            self._values["external_id"] = external_id

    @builtins.property
    def arn(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#arn ArcregionswitchPlan#arn}.'''
        result = self._values.get("arn")
        assert result is not None, "Required property 'arn' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def cross_account_role(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cross_account_role ArcregionswitchPlan#cross_account_role}.'''
        result = self._values.get("cross_account_role")
        return typing.cast(typing.Optional[builtins.str], result)

    @builtins.property
    def external_id(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#external_id ArcregionswitchPlan#external_id}.'''
        result = self._values.get("external_id")
        return typing.cast(typing.Optional[builtins.str], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepParallelConfigStepRegionSwitchPlanConfig(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepParallelConfigStepRegionSwitchPlanConfigList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepRegionSwitchPlanConfigList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__e0128a8852826dfecdc3f8d02d94b36cf4e0ca510d7e3fc23f06eb2f720dd2b7)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepRegionSwitchPlanConfigOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__f0245da70f86ce9dabc58c508e4b0ee47fc6f590a45605d6c80324a00ab30bbc)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepRegionSwitchPlanConfigOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepRegionSwitchPlanConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepRegionSwitchPlanConfig"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepRegionSwitchPlanConfig"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__86ebe3a4cb011fc9cc8193617596f2520829d7e2ad6535f0b3de4b3042080c6b)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepParallelConfigStepRegionSwitchPlanConfigOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepRegionSwitchPlanConfigOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__2479ace5081246488fdd99916b54c1e414764f45b141d470dfbb93f621a1473e)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="resetCrossAccountRole")
    def reset_cross_account_role(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetCrossAccountRole", []))

    @jsii.member(jsii_name="resetExternalId")
    def reset_external_id(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetExternalId", []))

    @builtins.property
    @jsii.member(jsii_name="arnInput")
    def arn_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "arnInput"))

    @builtins.property
    @jsii.member(jsii_name="crossAccountRoleInput")
    def cross_account_role_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "crossAccountRoleInput"))

    @builtins.property
    @jsii.member(jsii_name="externalIdInput")
    def external_id_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "externalIdInput"))

    @builtins.property
    @jsii.member(jsii_name="arn")
    def arn(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "arn"))

    @arn.setter
    def arn(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__a22864500a056c1ebe89651eda252bf40c5c617ff6d2a51fabe62eba989fd1bf)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "arn", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="crossAccountRole")
    def cross_account_role(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "crossAccountRole"))

    @cross_account_role.setter
    def cross_account_role(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__2d96e51f318ca01ece1920cf7274c5d32983978d71fd617901d68077b861abb9)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "crossAccountRole", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="externalId")
    def external_id(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "externalId"))

    @external_id.setter
    def external_id(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__839bef772255ddf51b9539c654c2156594fedf966c6bdd849712a3f22562c225)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "externalId", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepRegionSwitchPlanConfig"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepRegionSwitchPlanConfig"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepRegionSwitchPlanConfig"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__ed996338a18812d237582b4b6ecb274d34b5f9d4b99642bd588eb95b3ef574b1)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfig",
    jsii_struct_bases=[],
    name_mapping={
        "hosted_zone_id": "hostedZoneId",
        "record_name": "recordName",
        "cross_account_role": "crossAccountRole",
        "external_id": "externalId",
        "record_set": "recordSet",
        "timeout_minutes": "timeoutMinutes",
    },
)
class ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfig:
    def __init__(
        self,
        *,
        hosted_zone_id: builtins.str,
        record_name: builtins.str,
        cross_account_role: typing.Optional[builtins.str] = None,
        external_id: typing.Optional[builtins.str] = None,
        record_set: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfigRecordSet", typing.Dict[builtins.str, typing.Any]]]]] = None,
        timeout_minutes: typing.Optional[jsii.Number] = None,
    ) -> None:
        '''
        :param hosted_zone_id: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#hosted_zone_id ArcregionswitchPlan#hosted_zone_id}.
        :param record_name: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#record_name ArcregionswitchPlan#record_name}.
        :param cross_account_role: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cross_account_role ArcregionswitchPlan#cross_account_role}.
        :param external_id: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#external_id ArcregionswitchPlan#external_id}.
        :param record_set: record_set block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#record_set ArcregionswitchPlan#record_set}
        :param timeout_minutes: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#timeout_minutes ArcregionswitchPlan#timeout_minutes}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__721d678be443bb2c24a222fa7c4b9c1e0fc31e9ec4e58d61b7aec6cc8462455b)
            check_type(argname="argument hosted_zone_id", value=hosted_zone_id, expected_type=type_hints["hosted_zone_id"])
            check_type(argname="argument record_name", value=record_name, expected_type=type_hints["record_name"])
            check_type(argname="argument cross_account_role", value=cross_account_role, expected_type=type_hints["cross_account_role"])
            check_type(argname="argument external_id", value=external_id, expected_type=type_hints["external_id"])
            check_type(argname="argument record_set", value=record_set, expected_type=type_hints["record_set"])
            check_type(argname="argument timeout_minutes", value=timeout_minutes, expected_type=type_hints["timeout_minutes"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "hosted_zone_id": hosted_zone_id,
            "record_name": record_name,
        }
        if cross_account_role is not None:
            self._values["cross_account_role"] = cross_account_role
        if external_id is not None:
            self._values["external_id"] = external_id
        if record_set is not None:
            self._values["record_set"] = record_set
        if timeout_minutes is not None:
            self._values["timeout_minutes"] = timeout_minutes

    @builtins.property
    def hosted_zone_id(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#hosted_zone_id ArcregionswitchPlan#hosted_zone_id}.'''
        result = self._values.get("hosted_zone_id")
        assert result is not None, "Required property 'hosted_zone_id' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def record_name(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#record_name ArcregionswitchPlan#record_name}.'''
        result = self._values.get("record_name")
        assert result is not None, "Required property 'record_name' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def cross_account_role(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cross_account_role ArcregionswitchPlan#cross_account_role}.'''
        result = self._values.get("cross_account_role")
        return typing.cast(typing.Optional[builtins.str], result)

    @builtins.property
    def external_id(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#external_id ArcregionswitchPlan#external_id}.'''
        result = self._values.get("external_id")
        return typing.cast(typing.Optional[builtins.str], result)

    @builtins.property
    def record_set(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfigRecordSet"]]]:
        '''record_set block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#record_set ArcregionswitchPlan#record_set}
        '''
        result = self._values.get("record_set")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfigRecordSet"]]], result)

    @builtins.property
    def timeout_minutes(self) -> typing.Optional[jsii.Number]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#timeout_minutes ArcregionswitchPlan#timeout_minutes}.'''
        result = self._values.get("timeout_minutes")
        return typing.cast(typing.Optional[jsii.Number], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfig(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfigList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfigList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__a05515cdb0084df32855251e7d160b51d00118d518bd2af5e992258f98c3a1be)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfigOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__f19b0b57d8a42416a1dc480d227b98c6c4fbd69f725d566377d1e4de036846f7)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfigOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfig"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfig"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__e3f961bc92744f94e25138dba5d59ea66201bd3d674b5c7074460769a4d367ae)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfigOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfigOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__c1dc6bb800f06be3954e9e5f16f5b710df64486eae0f102b7ef6c7c047867929)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="putRecordSet")
    def put_record_set(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfigRecordSet", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__10fd7bda04f68f5ed8a115250127b7bdb06c9cc3126ef70a4a26fc0056bf8093)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putRecordSet", [value]))

    @jsii.member(jsii_name="resetCrossAccountRole")
    def reset_cross_account_role(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetCrossAccountRole", []))

    @jsii.member(jsii_name="resetExternalId")
    def reset_external_id(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetExternalId", []))

    @jsii.member(jsii_name="resetRecordSet")
    def reset_record_set(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetRecordSet", []))

    @jsii.member(jsii_name="resetTimeoutMinutes")
    def reset_timeout_minutes(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetTimeoutMinutes", []))

    @builtins.property
    @jsii.member(jsii_name="recordSet")
    def record_set(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfigRecordSetList":
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfigRecordSetList", jsii.get(self, "recordSet"))

    @builtins.property
    @jsii.member(jsii_name="crossAccountRoleInput")
    def cross_account_role_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "crossAccountRoleInput"))

    @builtins.property
    @jsii.member(jsii_name="externalIdInput")
    def external_id_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "externalIdInput"))

    @builtins.property
    @jsii.member(jsii_name="hostedZoneIdInput")
    def hosted_zone_id_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "hostedZoneIdInput"))

    @builtins.property
    @jsii.member(jsii_name="recordNameInput")
    def record_name_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "recordNameInput"))

    @builtins.property
    @jsii.member(jsii_name="recordSetInput")
    def record_set_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfigRecordSet"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfigRecordSet"]]], jsii.get(self, "recordSetInput"))

    @builtins.property
    @jsii.member(jsii_name="timeoutMinutesInput")
    def timeout_minutes_input(self) -> typing.Optional[jsii.Number]:
        return typing.cast(typing.Optional[jsii.Number], jsii.get(self, "timeoutMinutesInput"))

    @builtins.property
    @jsii.member(jsii_name="crossAccountRole")
    def cross_account_role(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "crossAccountRole"))

    @cross_account_role.setter
    def cross_account_role(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__eaec367d69ad838b60a89297ba11edb6cf8d11055ebc8eab2cf114d3a6940733)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "crossAccountRole", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="externalId")
    def external_id(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "externalId"))

    @external_id.setter
    def external_id(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__489452a2b71152a313af6557b5a92c9f8807766353983e1567a6a6837cde174e)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "externalId", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="hostedZoneId")
    def hosted_zone_id(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "hostedZoneId"))

    @hosted_zone_id.setter
    def hosted_zone_id(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__a673aee5c937e42c71f7898ff0112282c727f989a90ad9ee746eb57c9f6a935f)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "hostedZoneId", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="recordName")
    def record_name(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "recordName"))

    @record_name.setter
    def record_name(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__6683a687a29deace542abecee9e0a67ebabfb08865dbb1fe564f462a3ea3e8aa)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "recordName", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="timeoutMinutes")
    def timeout_minutes(self) -> jsii.Number:
        return typing.cast(jsii.Number, jsii.get(self, "timeoutMinutes"))

    @timeout_minutes.setter
    def timeout_minutes(self, value: jsii.Number) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__6af2608431d23e66772a6da31c53fe6d29a4612aae22ca0f711fb906dbadc87b)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "timeoutMinutes", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfig"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfig"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfig"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__f905da12c77a648a11bf62c61d3f288c713c37526b6df92119f58fc8e5c873de)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfigRecordSet",
    jsii_struct_bases=[],
    name_mapping={"record_set_identifier": "recordSetIdentifier", "region": "region"},
)
class ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfigRecordSet:
    def __init__(
        self,
        *,
        record_set_identifier: builtins.str,
        region: builtins.str,
    ) -> None:
        '''
        :param record_set_identifier: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#record_set_identifier ArcregionswitchPlan#record_set_identifier}.
        :param region: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#region ArcregionswitchPlan#region}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__b3f41780b2add040149c2e245741cf655492962dae9ab81a23687c85de004139)
            check_type(argname="argument record_set_identifier", value=record_set_identifier, expected_type=type_hints["record_set_identifier"])
            check_type(argname="argument region", value=region, expected_type=type_hints["region"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "record_set_identifier": record_set_identifier,
            "region": region,
        }

    @builtins.property
    def record_set_identifier(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#record_set_identifier ArcregionswitchPlan#record_set_identifier}.'''
        result = self._values.get("record_set_identifier")
        assert result is not None, "Required property 'record_set_identifier' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def region(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#region ArcregionswitchPlan#region}.'''
        result = self._values.get("region")
        assert result is not None, "Required property 'region' is missing"
        return typing.cast(builtins.str, result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfigRecordSet(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfigRecordSetList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfigRecordSetList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__c8ab21cdd03492a923a01209315e56213a4762630202a58bd1d62a2b8848b0cf)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfigRecordSetOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__ef4bdb04809d15c6eb3d194371a86a08a6c3b4601f8bc427d97f844fe412edad)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfigRecordSetOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfigRecordSet"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfigRecordSet"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfigRecordSet"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__675aaff9fbd2705189ffa9d8266013baa70fe109659149d4dd774167126e1c12)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfigRecordSetOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfigRecordSetOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__c51a83474ede7692d0d707f30429666fe11aa799c34a671159be5275d92c3778)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @builtins.property
    @jsii.member(jsii_name="recordSetIdentifierInput")
    def record_set_identifier_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "recordSetIdentifierInput"))

    @builtins.property
    @jsii.member(jsii_name="regionInput")
    def region_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "regionInput"))

    @builtins.property
    @jsii.member(jsii_name="recordSetIdentifier")
    def record_set_identifier(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "recordSetIdentifier"))

    @record_set_identifier.setter
    def record_set_identifier(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__e0e0e002829833489a7dcea4fc513bb743f2659f4430a32eeaba1bd5d1d03b25)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "recordSetIdentifier", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="region")
    def region(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "region"))

    @region.setter
    def region(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__7bad444b977ffaa9de02883807c1e57b2a63cc8a689e8a71bc1ae7f1eb57ce88)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "region", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfigRecordSet"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfigRecordSet"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfigRecordSet"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__5e75559eafaf073b9b014dad68440815ef44079bb8d4b76b48f2fac3d10fcd0f)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepRegionSwitchPlanConfig",
    jsii_struct_bases=[],
    name_mapping={
        "arn": "arn",
        "cross_account_role": "crossAccountRole",
        "external_id": "externalId",
    },
)
class ArcregionswitchPlanWorkflowStepRegionSwitchPlanConfig:
    def __init__(
        self,
        *,
        arn: builtins.str,
        cross_account_role: typing.Optional[builtins.str] = None,
        external_id: typing.Optional[builtins.str] = None,
    ) -> None:
        '''
        :param arn: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#arn ArcregionswitchPlan#arn}.
        :param cross_account_role: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cross_account_role ArcregionswitchPlan#cross_account_role}.
        :param external_id: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#external_id ArcregionswitchPlan#external_id}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__891a16a22c9957b484a5117cdeb709e5358f711e390c2f38b69e0b455a5b7ad4)
            check_type(argname="argument arn", value=arn, expected_type=type_hints["arn"])
            check_type(argname="argument cross_account_role", value=cross_account_role, expected_type=type_hints["cross_account_role"])
            check_type(argname="argument external_id", value=external_id, expected_type=type_hints["external_id"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "arn": arn,
        }
        if cross_account_role is not None:
            self._values["cross_account_role"] = cross_account_role
        if external_id is not None:
            self._values["external_id"] = external_id

    @builtins.property
    def arn(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#arn ArcregionswitchPlan#arn}.'''
        result = self._values.get("arn")
        assert result is not None, "Required property 'arn' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def cross_account_role(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cross_account_role ArcregionswitchPlan#cross_account_role}.'''
        result = self._values.get("cross_account_role")
        return typing.cast(typing.Optional[builtins.str], result)

    @builtins.property
    def external_id(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#external_id ArcregionswitchPlan#external_id}.'''
        result = self._values.get("external_id")
        return typing.cast(typing.Optional[builtins.str], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepRegionSwitchPlanConfig(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepRegionSwitchPlanConfigList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepRegionSwitchPlanConfigList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__4c10277b79c468823ac9903e676cb784116c137d439ea94785a5bc0f06da8bb2)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepRegionSwitchPlanConfigOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__91aeefb4bfa64b33383edec12e2fb33e7d00b4f0008781c9e9cbe1399b3201a6)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepRegionSwitchPlanConfigOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepRegionSwitchPlanConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepRegionSwitchPlanConfig"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepRegionSwitchPlanConfig"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__b3916888cc4dcec25e09e226dd8d7778f67ca84916fa715965321df763cc9dc7)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepRegionSwitchPlanConfigOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepRegionSwitchPlanConfigOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__966b0d52b4c44b42d59b97f3c0a4633cc6b172f392ce6590e813db4620bf26ae)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="resetCrossAccountRole")
    def reset_cross_account_role(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetCrossAccountRole", []))

    @jsii.member(jsii_name="resetExternalId")
    def reset_external_id(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetExternalId", []))

    @builtins.property
    @jsii.member(jsii_name="arnInput")
    def arn_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "arnInput"))

    @builtins.property
    @jsii.member(jsii_name="crossAccountRoleInput")
    def cross_account_role_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "crossAccountRoleInput"))

    @builtins.property
    @jsii.member(jsii_name="externalIdInput")
    def external_id_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "externalIdInput"))

    @builtins.property
    @jsii.member(jsii_name="arn")
    def arn(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "arn"))

    @arn.setter
    def arn(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__2b186d403c13295c19f4bea8501c6557c09fc537a6484c55f0b30c4274d22450)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "arn", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="crossAccountRole")
    def cross_account_role(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "crossAccountRole"))

    @cross_account_role.setter
    def cross_account_role(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__a74edd11afb7746e33a81c5ddab903284f06b4c455be9a8308323b7a132f4d81)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "crossAccountRole", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="externalId")
    def external_id(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "externalId"))

    @external_id.setter
    def external_id(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__738ccf362a286914a7335055003b64476d8184208c9868d091cf25f70c1c7c73)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "externalId", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepRegionSwitchPlanConfig"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepRegionSwitchPlanConfig"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepRegionSwitchPlanConfig"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__1a9e9cad068d25b6d7be6e4ee6dd869db57fd488131a026ebcb1a07fdca49670)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfig",
    jsii_struct_bases=[],
    name_mapping={
        "hosted_zone_id": "hostedZoneId",
        "record_name": "recordName",
        "cross_account_role": "crossAccountRole",
        "external_id": "externalId",
        "record_set": "recordSet",
        "timeout_minutes": "timeoutMinutes",
    },
)
class ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfig:
    def __init__(
        self,
        *,
        hosted_zone_id: builtins.str,
        record_name: builtins.str,
        cross_account_role: typing.Optional[builtins.str] = None,
        external_id: typing.Optional[builtins.str] = None,
        record_set: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfigRecordSet", typing.Dict[builtins.str, typing.Any]]]]] = None,
        timeout_minutes: typing.Optional[jsii.Number] = None,
    ) -> None:
        '''
        :param hosted_zone_id: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#hosted_zone_id ArcregionswitchPlan#hosted_zone_id}.
        :param record_name: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#record_name ArcregionswitchPlan#record_name}.
        :param cross_account_role: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cross_account_role ArcregionswitchPlan#cross_account_role}.
        :param external_id: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#external_id ArcregionswitchPlan#external_id}.
        :param record_set: record_set block. Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#record_set ArcregionswitchPlan#record_set}
        :param timeout_minutes: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#timeout_minutes ArcregionswitchPlan#timeout_minutes}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__b3685f6e453babdced38e3829cdc4e5a00cf24a5793a623cc1be3126b334825b)
            check_type(argname="argument hosted_zone_id", value=hosted_zone_id, expected_type=type_hints["hosted_zone_id"])
            check_type(argname="argument record_name", value=record_name, expected_type=type_hints["record_name"])
            check_type(argname="argument cross_account_role", value=cross_account_role, expected_type=type_hints["cross_account_role"])
            check_type(argname="argument external_id", value=external_id, expected_type=type_hints["external_id"])
            check_type(argname="argument record_set", value=record_set, expected_type=type_hints["record_set"])
            check_type(argname="argument timeout_minutes", value=timeout_minutes, expected_type=type_hints["timeout_minutes"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "hosted_zone_id": hosted_zone_id,
            "record_name": record_name,
        }
        if cross_account_role is not None:
            self._values["cross_account_role"] = cross_account_role
        if external_id is not None:
            self._values["external_id"] = external_id
        if record_set is not None:
            self._values["record_set"] = record_set
        if timeout_minutes is not None:
            self._values["timeout_minutes"] = timeout_minutes

    @builtins.property
    def hosted_zone_id(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#hosted_zone_id ArcregionswitchPlan#hosted_zone_id}.'''
        result = self._values.get("hosted_zone_id")
        assert result is not None, "Required property 'hosted_zone_id' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def record_name(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#record_name ArcregionswitchPlan#record_name}.'''
        result = self._values.get("record_name")
        assert result is not None, "Required property 'record_name' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def cross_account_role(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#cross_account_role ArcregionswitchPlan#cross_account_role}.'''
        result = self._values.get("cross_account_role")
        return typing.cast(typing.Optional[builtins.str], result)

    @builtins.property
    def external_id(self) -> typing.Optional[builtins.str]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#external_id ArcregionswitchPlan#external_id}.'''
        result = self._values.get("external_id")
        return typing.cast(typing.Optional[builtins.str], result)

    @builtins.property
    def record_set(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfigRecordSet"]]]:
        '''record_set block.

        Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#record_set ArcregionswitchPlan#record_set}
        '''
        result = self._values.get("record_set")
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfigRecordSet"]]], result)

    @builtins.property
    def timeout_minutes(self) -> typing.Optional[jsii.Number]:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#timeout_minutes ArcregionswitchPlan#timeout_minutes}.'''
        result = self._values.get("timeout_minutes")
        return typing.cast(typing.Optional[jsii.Number], result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfig(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfigList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfigList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__0c73cb3fce4507a1f443638ad80b00c488ee1fc3beac5c53fef667e338544de7)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfigOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__26bd7b602a8face4f3ba40a3e46348edb4c1b1e29aadc3364994fd33c7f9cbf5)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfigOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfig"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfig"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfig"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__a9c0d7f91c4d3faf77a37b2b6777629cd66c75466672359126be7cdd61135c90)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfigOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfigOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__28e0b9f95f68dd0aa98add56ea14cf0b7a1b1417d77e3aaee7b830442fd87a8b)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @jsii.member(jsii_name="putRecordSet")
    def put_record_set(
        self,
        value: typing.Union["_cdktn_78ede62e.IResolvable", typing.Sequence[typing.Union["ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfigRecordSet", typing.Dict[builtins.str, typing.Any]]]],
    ) -> None:
        '''
        :param value: -
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__b666f9824c4309c2b80bd7ab0efae356c8802922455208dc03404edb2ce96532)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        return typing.cast(None, jsii.invoke(self, "putRecordSet", [value]))

    @jsii.member(jsii_name="resetCrossAccountRole")
    def reset_cross_account_role(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetCrossAccountRole", []))

    @jsii.member(jsii_name="resetExternalId")
    def reset_external_id(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetExternalId", []))

    @jsii.member(jsii_name="resetRecordSet")
    def reset_record_set(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetRecordSet", []))

    @jsii.member(jsii_name="resetTimeoutMinutes")
    def reset_timeout_minutes(self) -> None:
        return typing.cast(None, jsii.invoke(self, "resetTimeoutMinutes", []))

    @builtins.property
    @jsii.member(jsii_name="recordSet")
    def record_set(
        self,
    ) -> "ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfigRecordSetList":
        return typing.cast("ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfigRecordSetList", jsii.get(self, "recordSet"))

    @builtins.property
    @jsii.member(jsii_name="crossAccountRoleInput")
    def cross_account_role_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "crossAccountRoleInput"))

    @builtins.property
    @jsii.member(jsii_name="externalIdInput")
    def external_id_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "externalIdInput"))

    @builtins.property
    @jsii.member(jsii_name="hostedZoneIdInput")
    def hosted_zone_id_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "hostedZoneIdInput"))

    @builtins.property
    @jsii.member(jsii_name="recordNameInput")
    def record_name_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "recordNameInput"))

    @builtins.property
    @jsii.member(jsii_name="recordSetInput")
    def record_set_input(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfigRecordSet"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfigRecordSet"]]], jsii.get(self, "recordSetInput"))

    @builtins.property
    @jsii.member(jsii_name="timeoutMinutesInput")
    def timeout_minutes_input(self) -> typing.Optional[jsii.Number]:
        return typing.cast(typing.Optional[jsii.Number], jsii.get(self, "timeoutMinutesInput"))

    @builtins.property
    @jsii.member(jsii_name="crossAccountRole")
    def cross_account_role(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "crossAccountRole"))

    @cross_account_role.setter
    def cross_account_role(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__cfe525788a1ac1dfa4f49c13a70944c31e6abea32b3b28838b4dc0d3bfdca5eb)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "crossAccountRole", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="externalId")
    def external_id(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "externalId"))

    @external_id.setter
    def external_id(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__10412963f0c31133bff68bef15d2a13b899bfe89e2899a961be51c53d4abf09f)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "externalId", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="hostedZoneId")
    def hosted_zone_id(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "hostedZoneId"))

    @hosted_zone_id.setter
    def hosted_zone_id(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__2a5add0a29f5ca15d5f4b4f8354973d35d78a05dfc4a62a55500b51eeadeb1cc)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "hostedZoneId", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="recordName")
    def record_name(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "recordName"))

    @record_name.setter
    def record_name(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__c2a753f43e16fc21fdf616ffb86fba3fe07b07bfd2360f25ea08a55034520429)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "recordName", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="timeoutMinutes")
    def timeout_minutes(self) -> jsii.Number:
        return typing.cast(jsii.Number, jsii.get(self, "timeoutMinutes"))

    @timeout_minutes.setter
    def timeout_minutes(self, value: jsii.Number) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__714e111378e5458911677545d4f4adc07751fe48a163260e1d2641b56e55ecbf)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "timeoutMinutes", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfig"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfig"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfig"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__70e57a74f900620c6af513cefac3cdc71bbb5972fcc7fbd0f9145fde28717331)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


@jsii.data_type(
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfigRecordSet",
    jsii_struct_bases=[],
    name_mapping={"record_set_identifier": "recordSetIdentifier", "region": "region"},
)
class ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfigRecordSet:
    def __init__(
        self,
        *,
        record_set_identifier: builtins.str,
        region: builtins.str,
    ) -> None:
        '''
        :param record_set_identifier: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#record_set_identifier ArcregionswitchPlan#record_set_identifier}.
        :param region: Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#region ArcregionswitchPlan#region}.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__b85c76ddf4c5c6e183a13d78b7b2f01d70f0f2f8c7fffc91b1ce859ccadd0185)
            check_type(argname="argument record_set_identifier", value=record_set_identifier, expected_type=type_hints["record_set_identifier"])
            check_type(argname="argument region", value=region, expected_type=type_hints["region"])
        self._values: typing.Dict[builtins.str, typing.Any] = {
            "record_set_identifier": record_set_identifier,
            "region": region,
        }

    @builtins.property
    def record_set_identifier(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#record_set_identifier ArcregionswitchPlan#record_set_identifier}.'''
        result = self._values.get("record_set_identifier")
        assert result is not None, "Required property 'record_set_identifier' is missing"
        return typing.cast(builtins.str, result)

    @builtins.property
    def region(self) -> builtins.str:
        '''Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/aws/6.40.0/docs/resources/arcregionswitch_plan#region ArcregionswitchPlan#region}.'''
        result = self._values.get("region")
        assert result is not None, "Required property 'region' is missing"
        return typing.cast(builtins.str, result)

    def __eq__(self, rhs: typing.Any) -> builtins.bool:
        return isinstance(rhs, self.__class__) and rhs._values == self._values

    def __ne__(self, rhs: typing.Any) -> builtins.bool:
        return not (rhs == self)

    def __repr__(self) -> str:
        return "ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfigRecordSet(%s)" % ", ".join(
            k + "=" + repr(v) for k, v in self._values.items()
        )


class ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfigRecordSetList(
    _cdktn_78ede62e.ComplexList,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfigRecordSetList",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        wraps_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param wraps_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__dbbb11094f0cd66489ffb4fee11839eba614e685858279d70b1476c9206dc5e5)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument wraps_set", value=wraps_set, expected_type=type_hints["wraps_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, wraps_set])

    @jsii.member(jsii_name="get")
    def get(
        self,
        index: jsii.Number,
    ) -> "ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfigRecordSetOutputReference":
        '''
        :param index: the index of the item to return.
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__4530b687d057be0f41e30fb1d216ae5532db5cfc9012cc6a0c74a07bd5b74fd9)
            check_type(argname="argument index", value=index, expected_type=type_hints["index"])
        return typing.cast("ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfigRecordSetOutputReference", jsii.invoke(self, "get", [index]))

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfigRecordSet"]]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfigRecordSet"]]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", typing.List["ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfigRecordSet"]]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__d78c46024355cd71b6059dc60b34b208449fbdf53484e4017adba7db7cd7a8bc)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


class ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfigRecordSetOutputReference(
    _cdktn_78ede62e.ComplexObject,
    metaclass=jsii.JSIIMeta,
    jsii_type="@cdktn/provider-aws.arcregionswitchPlan.ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfigRecordSetOutputReference",
):
    def __init__(
        self,
        terraform_resource: "_cdktn_78ede62e.IInterpolatingParent",
        terraform_attribute: builtins.str,
        complex_object_index: jsii.Number,
        complex_object_is_from_set: builtins.bool,
    ) -> None:
        '''
        :param terraform_resource: The parent resource.
        :param terraform_attribute: The attribute on the parent resource this class is referencing.
        :param complex_object_index: the index of this item in the list.
        :param complex_object_is_from_set: whether the list is wrapping a set (will add tolist() to be able to access an item via an index).
        '''
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__75a6be43f36202c3c5fc78b5c4d651331b947d9ed44c18e5ec62a92b11a88d72)
            check_type(argname="argument terraform_resource", value=terraform_resource, expected_type=type_hints["terraform_resource"])
            check_type(argname="argument terraform_attribute", value=terraform_attribute, expected_type=type_hints["terraform_attribute"])
            check_type(argname="argument complex_object_index", value=complex_object_index, expected_type=type_hints["complex_object_index"])
            check_type(argname="argument complex_object_is_from_set", value=complex_object_is_from_set, expected_type=type_hints["complex_object_is_from_set"])
        jsii.create(self.__class__, self, [terraform_resource, terraform_attribute, complex_object_index, complex_object_is_from_set])

    @builtins.property
    @jsii.member(jsii_name="recordSetIdentifierInput")
    def record_set_identifier_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "recordSetIdentifierInput"))

    @builtins.property
    @jsii.member(jsii_name="regionInput")
    def region_input(self) -> typing.Optional[builtins.str]:
        return typing.cast(typing.Optional[builtins.str], jsii.get(self, "regionInput"))

    @builtins.property
    @jsii.member(jsii_name="recordSetIdentifier")
    def record_set_identifier(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "recordSetIdentifier"))

    @record_set_identifier.setter
    def record_set_identifier(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__8fef5f683ef7de079ae5448bddc8aa741381dc5a10cbd323377c3b2cea25bacd)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "recordSetIdentifier", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="region")
    def region(self) -> builtins.str:
        return typing.cast(builtins.str, jsii.get(self, "region"))

    @region.setter
    def region(self, value: builtins.str) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__fb1358798f588bd24939fad42f68a5a28873cf7728c65e0765d23df45a70789a)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "region", value) # pyright: ignore[reportArgumentType]

    @builtins.property
    @jsii.member(jsii_name="internalValue")
    def internal_value(
        self,
    ) -> typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfigRecordSet"]]:
        return typing.cast(typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfigRecordSet"]], jsii.get(self, "internalValue"))

    @internal_value.setter
    def internal_value(
        self,
        value: typing.Optional[typing.Union["_cdktn_78ede62e.IResolvable", "ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfigRecordSet"]],
    ) -> None:
        if __debug__:
            type_hints = typing.get_type_hints(_typecheckingstub__ac7ef95c24f254710a7b42c61ed0da6cdccc68951621e6f526f11f9213df24b7)
            check_type(argname="argument value", value=value, expected_type=type_hints["value"])
        jsii.set(self, "internalValue", value) # pyright: ignore[reportArgumentType]


__all__ = [
    "ArcregionswitchPlan",
    "ArcregionswitchPlanAssociatedAlarms",
    "ArcregionswitchPlanAssociatedAlarmsList",
    "ArcregionswitchPlanAssociatedAlarmsOutputReference",
    "ArcregionswitchPlanConfig",
    "ArcregionswitchPlanTimeouts",
    "ArcregionswitchPlanTimeoutsOutputReference",
    "ArcregionswitchPlanTriggers",
    "ArcregionswitchPlanTriggersConditions",
    "ArcregionswitchPlanTriggersConditionsList",
    "ArcregionswitchPlanTriggersConditionsOutputReference",
    "ArcregionswitchPlanTriggersList",
    "ArcregionswitchPlanTriggersOutputReference",
    "ArcregionswitchPlanWorkflow",
    "ArcregionswitchPlanWorkflowList",
    "ArcregionswitchPlanWorkflowOutputReference",
    "ArcregionswitchPlanWorkflowStep",
    "ArcregionswitchPlanWorkflowStepArcRoutingControlConfig",
    "ArcregionswitchPlanWorkflowStepArcRoutingControlConfigList",
    "ArcregionswitchPlanWorkflowStepArcRoutingControlConfigOutputReference",
    "ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControls",
    "ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControlsList",
    "ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControlsOutputReference",
    "ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControl",
    "ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControlList",
    "ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControlOutputReference",
    "ArcregionswitchPlanWorkflowStepCustomActionLambdaConfig",
    "ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigLambda",
    "ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigLambdaList",
    "ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigLambdaOutputReference",
    "ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigList",
    "ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigOutputReference",
    "ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigUngraceful",
    "ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigUngracefulList",
    "ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigUngracefulOutputReference",
    "ArcregionswitchPlanWorkflowStepDocumentDbConfig",
    "ArcregionswitchPlanWorkflowStepDocumentDbConfigList",
    "ArcregionswitchPlanWorkflowStepDocumentDbConfigOutputReference",
    "ArcregionswitchPlanWorkflowStepDocumentDbConfigUngraceful",
    "ArcregionswitchPlanWorkflowStepDocumentDbConfigUngracefulList",
    "ArcregionswitchPlanWorkflowStepDocumentDbConfigUngracefulOutputReference",
    "ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfig",
    "ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigAsg",
    "ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigAsgList",
    "ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigAsgOutputReference",
    "ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigList",
    "ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigOutputReference",
    "ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigUngraceful",
    "ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigUngracefulList",
    "ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigUngracefulOutputReference",
    "ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfig",
    "ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigList",
    "ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigOutputReference",
    "ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigService",
    "ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigServiceList",
    "ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigServiceOutputReference",
    "ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigUngraceful",
    "ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigUngracefulList",
    "ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigUngracefulOutputReference",
    "ArcregionswitchPlanWorkflowStepEksResourceScalingConfig",
    "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigEksClusters",
    "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigEksClustersList",
    "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigEksClustersOutputReference",
    "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigKubernetesResourceType",
    "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigKubernetesResourceTypeList",
    "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigKubernetesResourceTypeOutputReference",
    "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigList",
    "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigOutputReference",
    "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResources",
    "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResourcesList",
    "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResourcesOutputReference",
    "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResourcesResources",
    "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResourcesResourcesList",
    "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResourcesResourcesOutputReference",
    "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigUngraceful",
    "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigUngracefulList",
    "ArcregionswitchPlanWorkflowStepEksResourceScalingConfigUngracefulOutputReference",
    "ArcregionswitchPlanWorkflowStepExecutionApprovalConfig",
    "ArcregionswitchPlanWorkflowStepExecutionApprovalConfigList",
    "ArcregionswitchPlanWorkflowStepExecutionApprovalConfigOutputReference",
    "ArcregionswitchPlanWorkflowStepGlobalAuroraConfig",
    "ArcregionswitchPlanWorkflowStepGlobalAuroraConfigList",
    "ArcregionswitchPlanWorkflowStepGlobalAuroraConfigOutputReference",
    "ArcregionswitchPlanWorkflowStepGlobalAuroraConfigUngraceful",
    "ArcregionswitchPlanWorkflowStepGlobalAuroraConfigUngracefulList",
    "ArcregionswitchPlanWorkflowStepGlobalAuroraConfigUngracefulOutputReference",
    "ArcregionswitchPlanWorkflowStepList",
    "ArcregionswitchPlanWorkflowStepOutputReference",
    "ArcregionswitchPlanWorkflowStepParallelConfig",
    "ArcregionswitchPlanWorkflowStepParallelConfigList",
    "ArcregionswitchPlanWorkflowStepParallelConfigOutputReference",
    "ArcregionswitchPlanWorkflowStepParallelConfigStep",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfig",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigList",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigOutputReference",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControls",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControlsList",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControlsOutputReference",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControl",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControlList",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControlOutputReference",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfig",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigLambda",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigLambdaList",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigLambdaOutputReference",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigList",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigOutputReference",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigUngraceful",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigUngracefulList",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigUngracefulOutputReference",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfig",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfigList",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfigOutputReference",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfigUngraceful",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfigUngracefulList",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfigUngracefulOutputReference",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfig",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigAsg",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigAsgList",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigAsgOutputReference",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigList",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigOutputReference",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigUngraceful",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigUngracefulList",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigUngracefulOutputReference",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfig",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigList",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigOutputReference",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigService",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigServiceList",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigServiceOutputReference",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigUngraceful",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigUngracefulList",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigUngracefulOutputReference",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfig",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigEksClusters",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigEksClustersList",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigEksClustersOutputReference",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigKubernetesResourceType",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigKubernetesResourceTypeList",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigKubernetesResourceTypeOutputReference",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigList",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigOutputReference",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResources",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResourcesList",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResourcesOutputReference",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResourcesResources",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResourcesResourcesList",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResourcesResourcesOutputReference",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigUngraceful",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigUngracefulList",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigUngracefulOutputReference",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepExecutionApprovalConfig",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepExecutionApprovalConfigList",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepExecutionApprovalConfigOutputReference",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfig",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfigList",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfigOutputReference",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfigUngraceful",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfigUngracefulList",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfigUngracefulOutputReference",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepList",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepOutputReference",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepRegionSwitchPlanConfig",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepRegionSwitchPlanConfigList",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepRegionSwitchPlanConfigOutputReference",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfig",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfigList",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfigOutputReference",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfigRecordSet",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfigRecordSetList",
    "ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfigRecordSetOutputReference",
    "ArcregionswitchPlanWorkflowStepRegionSwitchPlanConfig",
    "ArcregionswitchPlanWorkflowStepRegionSwitchPlanConfigList",
    "ArcregionswitchPlanWorkflowStepRegionSwitchPlanConfigOutputReference",
    "ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfig",
    "ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfigList",
    "ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfigOutputReference",
    "ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfigRecordSet",
    "ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfigRecordSetList",
    "ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfigRecordSetOutputReference",
]

publication.publish()

def _typecheckingstub__f75008daa5119940a791b8dfc2fd639f1c15aa7cffd7d0d3539a117531f88824(
    scope: _constructs_77d1e7e8.Construct,
    id: builtins.str,
    *,
    execution_role: builtins.str,
    name: builtins.str,
    recovery_approach: builtins.str,
    regions: typing.Sequence[builtins.str],
    associated_alarms: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanAssociatedAlarms, typing.Dict[builtins.str, typing.Any]]]]] = None,
    description: typing.Optional[builtins.str] = None,
    primary_region: typing.Optional[builtins.str] = None,
    recovery_time_objective_minutes: typing.Optional[jsii.Number] = None,
    region: typing.Optional[builtins.str] = None,
    tags: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
    timeouts: typing.Optional[typing.Union[ArcregionswitchPlanTimeouts, typing.Dict[builtins.str, typing.Any]]] = None,
    triggers: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanTriggers, typing.Dict[builtins.str, typing.Any]]]]] = None,
    workflow: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflow, typing.Dict[builtins.str, typing.Any]]]]] = None,
    connection: typing.Optional[typing.Union[typing.Union[_cdktn_78ede62e.SSHProvisionerConnection, typing.Dict[builtins.str, typing.Any]], typing.Union[_cdktn_78ede62e.WinrmProvisionerConnection, typing.Dict[builtins.str, typing.Any]]]] = None,
    count: typing.Optional[typing.Union[jsii.Number, _cdktn_78ede62e.TerraformCount]] = None,
    depends_on: typing.Optional[typing.Sequence[_cdktn_78ede62e.ITerraformDependable]] = None,
    for_each: typing.Optional[_cdktn_78ede62e.ITerraformIterator] = None,
    lifecycle: typing.Optional[typing.Union[_cdktn_78ede62e.TerraformResourceLifecycle, typing.Dict[builtins.str, typing.Any]]] = None,
    provider: typing.Optional[_cdktn_78ede62e.TerraformProvider] = None,
    provisioners: typing.Optional[typing.Sequence[typing.Union[typing.Union[_cdktn_78ede62e.FileProvisioner, typing.Dict[builtins.str, typing.Any]], typing.Union[_cdktn_78ede62e.LocalExecProvisioner, typing.Dict[builtins.str, typing.Any]], typing.Union[_cdktn_78ede62e.RemoteExecProvisioner, typing.Dict[builtins.str, typing.Any]]]]] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__d7c30189b362d640a015dea75ecb94577ba96781ce15c856e3fbfac46211bacd(
    scope: _constructs_77d1e7e8.Construct,
    import_to_id: builtins.str,
    import_from_id: builtins.str,
    provider: typing.Optional[_cdktn_78ede62e.TerraformProvider] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__ce1bc58d06bf3c5bc74e6004c6c26dae73944b7cfb09edecb7b8a636bcb6732a(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanAssociatedAlarms, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__eb7a97328f552081e3c87140f14958598544e29aca8bce7999ee276861ec42ed(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanTriggers, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__ac911f67e2d622cae24a9b80cdc6b9bdc940644bc65d3b67c533df09f31f2e0d(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflow, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__9817c17713227230b797215bf4e176af50bbd92e04cb4b30f5ca7eb32dd0118d(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__41206236a3fa5891d98c3d3f79e6e66072e2eba094b43adb3a1d30d47ae22c86(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__3fd6c35680d4954a5fc2acb34b279454f77cdc1e4fe4a24228ae5a76cdcd3a3b(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__28de5a4f74ddd7972623b42d5d04df434a263211c0ef30c420de57e003fd770a(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__3b3af71c91a86b5cd20d044695c12fded3496438e90aec14dd86a2020658887e(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__5364406c91c80c95344f6d682c181525ec486da0a5f913b0b55f90a634c60194(
    value: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__aaef0da776c92b9bedfa27f1ca5153a8fa6ceedaccbc7dd030448d2b9fca2e11(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__20c6d16a54ec64551ec291fe7233de4815ceafc54f3fa7ad49cced713e1dc533(
    value: typing.List[builtins.str],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__8317cf54e6d5aeb3609fe140cd3ba6ea97ac99a6fa8dee7ae5f56b2dce383cff(
    value: typing.Mapping[builtins.str, builtins.str],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__375d1e2cb57fce39b6a7c664faf359c56bb15869d0f3b495f13989d8684df0d0(
    *,
    alarm_type: builtins.str,
    map_block_key: builtins.str,
    resource_identifier: builtins.str,
    cross_account_role: typing.Optional[builtins.str] = None,
    external_id: typing.Optional[builtins.str] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__744e43be207567e05daaaa69d513548c5dd60bac77f896dfba8d828df313c722(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__3a72ebc8977d036fbc9c3565f06c4ace1cb9abbc7ba9e9a799a61837ace8b41f(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__a1dcfc72202f6fa66e15dba0aacc22315ccd18ff637d23d435dfed2ec31f893b(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanAssociatedAlarms]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__68db025225729cdc828489ae84469a275e2f7e7200c3e0eaf126bc7e0152bfc9(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__2c2e2bb63f6210cc2b1ec33591dc5ceff5a592c99ff92cc0bb83b0ced1e9b5cf(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__f1597f7177c797edb75fcfc2ca0f8a9449c12989ab4955e7c2e0c984d61f1159(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__44329c92e35b6e9d9d1b7206237114ab09ec1755c37e126d5dda7f3c8ac4a9f3(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__e0a18f25c6100b26d665d3e002d11e4b52e801a83c4f9e81a24060d41b0f4a3a(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__556575dea4b8ba0fbe2a1527548b6b02552d0172404b0da51d08fde0ee1d9463(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__bcf939602b0d8b981ce49f85f10b6a803f0647fdff85d648313f352602f7391f(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanAssociatedAlarms]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__5ac48eca69ef7a70dd445a4ffb1040975ec7cf0d89a6872c73f96dab8488cac0(
    *,
    connection: typing.Optional[typing.Union[typing.Union[_cdktn_78ede62e.SSHProvisionerConnection, typing.Dict[builtins.str, typing.Any]], typing.Union[_cdktn_78ede62e.WinrmProvisionerConnection, typing.Dict[builtins.str, typing.Any]]]] = None,
    count: typing.Optional[typing.Union[jsii.Number, _cdktn_78ede62e.TerraformCount]] = None,
    depends_on: typing.Optional[typing.Sequence[_cdktn_78ede62e.ITerraformDependable]] = None,
    for_each: typing.Optional[_cdktn_78ede62e.ITerraformIterator] = None,
    lifecycle: typing.Optional[typing.Union[_cdktn_78ede62e.TerraformResourceLifecycle, typing.Dict[builtins.str, typing.Any]]] = None,
    provider: typing.Optional[_cdktn_78ede62e.TerraformProvider] = None,
    provisioners: typing.Optional[typing.Sequence[typing.Union[typing.Union[_cdktn_78ede62e.FileProvisioner, typing.Dict[builtins.str, typing.Any]], typing.Union[_cdktn_78ede62e.LocalExecProvisioner, typing.Dict[builtins.str, typing.Any]], typing.Union[_cdktn_78ede62e.RemoteExecProvisioner, typing.Dict[builtins.str, typing.Any]]]]] = None,
    execution_role: builtins.str,
    name: builtins.str,
    recovery_approach: builtins.str,
    regions: typing.Sequence[builtins.str],
    associated_alarms: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanAssociatedAlarms, typing.Dict[builtins.str, typing.Any]]]]] = None,
    description: typing.Optional[builtins.str] = None,
    primary_region: typing.Optional[builtins.str] = None,
    recovery_time_objective_minutes: typing.Optional[jsii.Number] = None,
    region: typing.Optional[builtins.str] = None,
    tags: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
    timeouts: typing.Optional[typing.Union[ArcregionswitchPlanTimeouts, typing.Dict[builtins.str, typing.Any]]] = None,
    triggers: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanTriggers, typing.Dict[builtins.str, typing.Any]]]]] = None,
    workflow: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflow, typing.Dict[builtins.str, typing.Any]]]]] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__5b22b1e3af94efd6ad56612ada8a421444abb5c9fed7671f9153a17088a27a04(
    *,
    create: typing.Optional[builtins.str] = None,
    delete: typing.Optional[builtins.str] = None,
    update: typing.Optional[builtins.str] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__83f496168edd421741e4a2e2ba9e0d76f5fd9cb9b7d2674a21d06ca417946840(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__5bec6c8cd5fd361860ff551f5ff4301946778f8300c4b12192441f3e935564f4(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__9c1734da0a76a6035d1b4865805f49b7c67291ac27bf5e41b4b9f6e38678687b(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__99bbf1ed56604900e6117f49289fec31c1281cb137c021758f87a9110394ec71(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__998ab84405677fe32384b68249468f4b2152147ccfd9226a57396396b6c9000b(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanTimeouts]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__d76725618eba68f823a88e8057e850876af15c26b6644e2de30aaf334437be03(
    *,
    action: builtins.str,
    min_delay_minutes_between_executions: jsii.Number,
    target_region: builtins.str,
    conditions: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanTriggersConditions, typing.Dict[builtins.str, typing.Any]]]]] = None,
    description: typing.Optional[builtins.str] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__4d88104084059365d5f436486cc149dc545bd96bf452134e793f759f3363a570(
    *,
    associated_alarm_name: builtins.str,
    condition: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__a8fc57fd9a50ca5e9e5dbac5b8e9282448d73128c7e6c11a82766afc6ec0fd0a(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__a7a3a6dd1f071b2c0f0efb11e41d20c511c21b9cc81bc422514ec5c8f9ab2bcd(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__86920453bf5bafc850b3389f8f75df54b42e41a1560a7bd879f80f461efc06ab(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanTriggersConditions]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__33a50832bc693fa121eec2cab4b5b0ba39869d1a995b4a7982d664b0aa9bb265(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__a73643dbfd532893f28fd6cac743ca29a330bb20c3ec153857e59f6c8952a26b(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__5dd94384a196c254db9f80178b9ec17e405dbc9f407a5ebcab9f3925db5fa28d(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__df2cb0f2620b11895273b65892ecba646b71cc70264500a0ba13a90c400ad367(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanTriggersConditions]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__8ae53d8e977113ec5dbba65fa914bdb00b728f77a8ca2c67508e164cc425df14(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__693df068e0a0f42664b4a1d4c10f855d947a723d747e9a35f36136adb6e4314e(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__71d0c7200fde71e0d3925b28d3f8f7efcf0549a9b7cd0da2c03108853c521584(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanTriggers]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__18539abeed6cf5cb1856774d7585c0f7454e726edbc5f2821be5606f5c8ead40(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__f84560513425c1dc75f39d3475b12cc97ec3270e62c14d229ad748ecf5ee9042(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanTriggersConditions, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__db25a972b9bdf58af350c0ee5deca775cd16172878bc9d03739bd6d69525bcd1(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__caafaa901f03d122b1aa3b320527230681ddb6d853ed37938f9672c0cc2cc239(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__5d9436be1e602730442071a1bee1cb38b404e9fde768a3adbab7c0aa8eb56a6a(
    value: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__0baac058c01b3812544c732a2688bf9230d2e032cb8781acf2a2843a63c66f5e(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__9ebefc660179216daa112b298c37c3939f3c1d0867fb494b6536df0b6937b780(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanTriggers]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__47db590bbbc627bd04e4703ca123401b662b95e2936212f48c24174ce3b54610(
    *,
    workflow_target_action: builtins.str,
    step: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStep, typing.Dict[builtins.str, typing.Any]]]]] = None,
    workflow_description: typing.Optional[builtins.str] = None,
    workflow_target_region: typing.Optional[builtins.str] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__5c7871ae27a7de5d4c5e1582baff2163539b773bac74eae80d8a1ec81a4eaa6a(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__7416b18fbd2a7a9c5c8c19617a579622a539167fb66a70c39848803ce4b4993c(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__8e4dd8e3f6b1f62870875427fb0753d11869532aca541efc1b6f5e306b89cba0(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflow]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__b74aa245b942437311bf9e749bf09e65f69c73b72386927bee167dbb69cd2015(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__865b76ebad631b4c57262f7fdd33f1da0b2a8ad90c43b98462c882a28f60545d(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStep, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__86e21bd8616ddfc06271db0c2c191b1ad5c258b9766d364dceb6bab27da890b0(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__2979885b7be9cbceead0798dc70fc6c0a380a6390826765b6ff36adb6348a9b5(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__b043c277bfed2bba8c6e9bbb65ce75855e0dba70dc993758b74142dd2080b47e(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__7224bc041ef3c0f583b06a6a855b550d19d4b7d81464944416fde0a2bc6e36ee(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflow]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__3ac02e6a0fd7474d65e26ecd9938f966e27ec13920fa46d57951ecfe1013761a(
    *,
    execution_block_type: builtins.str,
    name: builtins.str,
    arc_routing_control_config: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepArcRoutingControlConfig, typing.Dict[builtins.str, typing.Any]]]]] = None,
    custom_action_lambda_config: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepCustomActionLambdaConfig, typing.Dict[builtins.str, typing.Any]]]]] = None,
    description: typing.Optional[builtins.str] = None,
    document_db_config: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepDocumentDbConfig, typing.Dict[builtins.str, typing.Any]]]]] = None,
    ec2_asg_capacity_increase_config: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfig, typing.Dict[builtins.str, typing.Any]]]]] = None,
    ecs_capacity_increase_config: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfig, typing.Dict[builtins.str, typing.Any]]]]] = None,
    eks_resource_scaling_config: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepEksResourceScalingConfig, typing.Dict[builtins.str, typing.Any]]]]] = None,
    execution_approval_config: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepExecutionApprovalConfig, typing.Dict[builtins.str, typing.Any]]]]] = None,
    global_aurora_config: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepGlobalAuroraConfig, typing.Dict[builtins.str, typing.Any]]]]] = None,
    parallel_config: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfig, typing.Dict[builtins.str, typing.Any]]]]] = None,
    region_switch_plan_config: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepRegionSwitchPlanConfig, typing.Dict[builtins.str, typing.Any]]]]] = None,
    route53_health_check_config: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfig, typing.Dict[builtins.str, typing.Any]]]]] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__99c6492205755f26eaaccd648d08ab45b0ab8f09641f2284368a52b6f7ce946c(
    *,
    cross_account_role: typing.Optional[builtins.str] = None,
    external_id: typing.Optional[builtins.str] = None,
    region_and_routing_controls: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControls, typing.Dict[builtins.str, typing.Any]]]]] = None,
    timeout_minutes: typing.Optional[jsii.Number] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__3b905187dd3a6e4f3d0c095400044823d74524f832c0c8290b5980c40fecbe73(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__1726475d081cecf2b39143608f0a423ca8cc924aaa5e7b14d00c7d5c7a206175(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__d9112e02e6fd1a12ec593ed8ded91ea3d5c5e0d7373c8951217322a8e2f4e5bf(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepArcRoutingControlConfig]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__4ea80a7a34657a8894214b821a9835a68a528e5376f2407745b6c193e33681be(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__41087f162bde91a49d04c801e291a8c7503498dbde966ca3a2d5b92f34d3d3de(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControls, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__dad94889fba7cb6bb7a624badf1774b5811153e63ca3b2e82bb981063cd6aab6(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__08c899927fcc21163f71c3c8ef4aae2c5d1a65cddbe150e613353e51c3d785b9(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__0d8737dbc9fd6283e2f8c0efe32167114704f425b8290364a150510c501f4955(
    value: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__eacd71625460a6a7ba50892edd00a89d348247a436362c1d571995ac9b3e1edf(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepArcRoutingControlConfig]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__f2ce529e59bec2a3b3484478ac1723e93cd324d27613d31834b119b87d91a2ed(
    *,
    region: builtins.str,
    routing_control: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControl, typing.Dict[builtins.str, typing.Any]]]]] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__67deecda4d234293ccedfc770b5dd0e086737fb7b0e6f6a3b3b51405f48b9fa7(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__9652b86b20a4240996edd31c1992ee963b63203035611367bc1325938544a303(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__4b5c179c62d9b841b28fecf7a8df490312a2928306acf94060fe012063901912(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControls]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__752be6be382451cca98e1d4aa39d2430a399dae26bd0edf984850d5e97c93570(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__92c0cbd54dfb074cc39622d0f58484f802adece9a00b35abc0fd1debf97b695e(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControl, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__566308d83dcd8b05652dc31f869a38bc5ce6c29c56c3987cb250cfe8aeecd3d8(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__ddd92b6659dab976974412e35ed1849828d42f2d2d0758e46ce65d1241cf5f46(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControls]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__7ea69bdb54ca2f5564bb1174546fffa9f3a8f1dbd1b12f3c77982da444c7a5eb(
    *,
    routing_control_arn: builtins.str,
    state: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__3a5036b9d9fa717fc5702c51f9b1b9066d4e50e3126f40b6a50bbc45e5291604(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__eb79eab8d85768ffa1d1bf947fdde5e64a68b851be687b6bff0deb5f9395c977(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__a3df0f8c13a44fbfcbcce495986b39671df5865a8a08866ab5b082246c3e61db(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControl]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__fdc6c3153cc91cab9bb0aea6e0d38484d3e21adfbb07ff21c29a31b3a73ae215(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__d9dbb17e8fef85aaa5926660508dbd5297505239623dce276ed42b0309f79620(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__cd3d4662d6c0cfc47d473f90d527742868194dcf857b6f8e00b3b667d91df0f6(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__fb56bf6abffa508a051727b6987e5c4a419eb99f9790b33921aac4a4f33bdfa9(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControl]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__5051403d811de1166a0dbc9256bd9b3d1ea017a1591fc600838e9b0c199e362e(
    *,
    region_to_run: builtins.str,
    retry_interval_minutes: jsii.Number,
    lambda_: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigLambda, typing.Dict[builtins.str, typing.Any]]]]] = None,
    timeout_minutes: typing.Optional[jsii.Number] = None,
    ungraceful: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigUngraceful, typing.Dict[builtins.str, typing.Any]]]]] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__c2135d3202b154ab6ea3a9897d9ce85a938043766a64c4f58132e3a7b1187d52(
    *,
    arn: builtins.str,
    cross_account_role: typing.Optional[builtins.str] = None,
    external_id: typing.Optional[builtins.str] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__5af168310fdcabbd42ede3b9639c5e41c8f9e85700d6c1b7cbf20e235917015d(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__d8ffa927cd0ec1e31e2b5b8e3f3daaac2c43ba91e8357b43325b46f687861206(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__445cbdf557cf62edf7d9a0dbcdce6053f35df2c288c26beb97f101df5cdd5cc6(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigLambda]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__ce97edb112425cee1772f7bd49393d8b45bba305be26743bc082183d2c3e7b69(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__2fc4ac0d62869286e7b49bdb8301d5dcb55a36ff15bbb262b12cc68f39d17203(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__f1b75e9b791166d975e9438a5353203436bc88a25fd7a7d2e6461fc2c94ba833(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__8cd240439a81009aa77b202f4609b275bf75f25318e7b7e5f66628dbbd5c89fc(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__eb5324e26142ab474fb71b9893e437d8f5924274590c31c977e008a33038c35b(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigLambda]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__9099094ce45a194f345707046b7a2c169e5276f1d07ef70eefdc17284e49aebd(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__79cffe0ba5652d5d7836c00a7d6eadb4ceda2fdba5c7f2a4e98db66f960b168b(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__baefd394cdbbffe689de73e3b5c2173a7f7ade5c0c721935dd55dc7e2db5eac3(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepCustomActionLambdaConfig]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__c08d351d3037d5017ccd410ab34fe76b754c2da7ecf5a593136d64afee0e193e(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__966f9fae5135f12a285c04bbbc3d9d9fe3a2847dc6b6938dcdf2c45112d8d438(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigLambda, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__6b2a3d1f1116598696f23577809517f20dc71891684de9fa65664d42aa1b2f3c(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigUngraceful, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__870346e0fb577a0e827c1eb18437755065060089066568ca002282eca4fd5e39(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__130334af46b2ee52645877f43a6ea652a36087261c878183609ef36c53ac3b59(
    value: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__918e2855062088a071cc7d8a12971722f595768bee7fa28e0b635e3fdd6028b0(
    value: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__f910ac60bed873f0ceac1adf7b82e94e14071ea69fdab8f9ced3923bdda781ce(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepCustomActionLambdaConfig]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__30e8bf69f78db8414d3048f8847564d461248cc0a931f32a661504fbcecf2992(
    *,
    behavior: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__1e421b091b0205b158ff60280c890d3ab3205263ab47f7ce5058e63a8faf8589(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__8dc6b208a29ffb5bcddd844f587ce4477cf0031a8e346f664f71177f6b0e749b(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__37b46e27cfd2dc9e43b524e9fcd3bb3973cf0b43ad41c795ee6d5bafb82e4073(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigUngraceful]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__9717a5a90746600f8d1f9867889ba7ff33cb2a30d964a1429de8cf0e2a7c93d0(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__af871996147ad252bfaecb24ee00f81658a3181cf23b41ea7011da1b4ca96eee(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__8564444a3c533755b4cff520e63dde495fd626a91977f33be71b248b079516cb(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepCustomActionLambdaConfigUngraceful]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__3452b0090540128fdfc402e4aa268435d48c63ed55618efda2cd1ac1fa670ec1(
    *,
    behavior: builtins.str,
    database_cluster_arns: typing.Sequence[builtins.str],
    global_cluster_identifier: builtins.str,
    cross_account_role: typing.Optional[builtins.str] = None,
    external_id: typing.Optional[builtins.str] = None,
    timeout_minutes: typing.Optional[jsii.Number] = None,
    ungraceful: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepDocumentDbConfigUngraceful, typing.Dict[builtins.str, typing.Any]]]]] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__ff70d6825b91392feab53ee147be86d7593f3b94f76cd087180d5720a38e074d(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__7e177d6e3768f7095593139af882f89b9f34c4060c2814f44cc9e32195d52816(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__c18cff598bf9a2eef402bb8ac8d624a7d6212fec02ec094c7c8f85951bf6f5df(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepDocumentDbConfig]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__9bd8142b66194dd5601863a73d19b2a6b5503ef1678ef0bf32d1985015ba22db(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__bba79fcddeed742a06ca76db0d37e4658b61061d00f6002100fc89e00de25038(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepDocumentDbConfigUngraceful, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__cae31754ef84ea9275f0d385764c7838394a7d965f2c4d3374b01f9d64c5686b(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__de35ded286f7071298c1fe2a18340d043518a55f5b4416690a07f417bb049a6f(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__9c3fcfc55d1b43df0e8933c728c6151248294e0cf66348b3412e8d817d0fedfa(
    value: typing.List[builtins.str],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__dd0adb0319d122f3512e69643fb69f9807a899ca95a15d361a8065ea06e4f633(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__424b6d6e691bfc9b582fe5a26752462f2d03a6dc7c0af5a1317e3759386f61a8(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__8a37c4a2aa53099ab1ba7c22e96b774ad61f937805209b7f2bc6a373c448b28c(
    value: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__da4c05312a93f1e2bb8a4887b3eefc2078df0ac048bfea3f4be7f2a864de6f08(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepDocumentDbConfig]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__3a6425b162aef8401e9aa7ea817be731e391b3c4f5210db2dba10a89105cccbc(
    *,
    ungraceful: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__6d772baedb93fbb2580ad0d11feb8172d0b6344417e61863cdc71e20ab9fd776(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__08643c7a2494c2781b63704c598eecc670c9d8e7e68c7c8b15ced861a2ab15bf(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__90ec81988a40204fa436de224a7cd402d41e091f2ef82dae6d2ef53961af451c(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepDocumentDbConfigUngraceful]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__b8cc163c2d2b48420c8bf69e949410191bc44a2e170e256da0b3283e6db7c104(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__2e9e77a04378b8665d4f7cbb0fc44a9fd13f20eb986cc918ce425112118bdbd6(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__6bf10e1c4cfb6013df82cde011f2fdb8d3739ed29cfc77d823e4631748d23407(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepDocumentDbConfigUngraceful]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__d83ed1ae40033b720209b3164b48f6c0e1a3a7628a0b3cc60b53b27f0f9d99c5(
    *,
    capacity_monitoring_approach: builtins.str,
    asg: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigAsg, typing.Dict[builtins.str, typing.Any]]]]] = None,
    target_percent: typing.Optional[jsii.Number] = None,
    timeout_minutes: typing.Optional[jsii.Number] = None,
    ungraceful: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigUngraceful, typing.Dict[builtins.str, typing.Any]]]]] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__fb70e233be7c22c7b8c24ed9d5b290f16214f73f5e029e0206c8c37fdd2dc0e6(
    *,
    arn: builtins.str,
    cross_account_role: typing.Optional[builtins.str] = None,
    external_id: typing.Optional[builtins.str] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__200e9f75e0aedb8ad205a2a162cee2d0bf9e6a215789439b2b282d9637f9816a(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__f72dac65a1f2967db7bdfc800210983011f4cd252f8fd703df94c856053b4918(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__f88f54979559d8fba10ddbbb2c74f172de6cb5c9023bbbda4bf94bd96db685c9(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigAsg]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__099fba58fe101ba456477a802a7f0806cddd98605645870ca9a85435f2d41a24(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__51a7a9af130512a01123b31069a83e48f7c61e8cca9a9ec1e24f960659b53710(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__df8886e777f5ac6b24ca1b646e95a6b7438c44b953b16ce7caa49bf0abda63ef(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__3415157f5d9d1a59cad9a1758627f4efd376f44547e94294df4570daeeb78a1f(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__9cbd8c7b756a3e4175174ce87c3df99278f04e5c5ab896298eb934a919b3e8d4(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigAsg]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__748502672334a01d0ebc2d9f2795a857ba5d7ed6a5399379f511b2898e66daae(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__4c1d563bd2201a041226367d41f767ab94e6d1550cc48317c359429d985e3068(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__84cb56f1ad8af65ccbe282c3f872b528082db946fee4fdc8f8b390e07e571546(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfig]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__f805a1daeeb2bf9ba713f3c8d5526266441e3e3cbe02fb15d0e9382e10b224e3(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__f47ae1b06ebd3314f6c8fad695ef295242aa4575a15d6399415aae35f0f23d20(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigAsg, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__b7f181c936d79eed90dbfbf35b00c5d4b5088633d22da9455a2094a2f608a1b3(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigUngraceful, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__0343ebe3c035b7a7f81a029f56bf4f9da9445955956f6af8821b06cae4cda169(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__1c1386e7c730ef5ffb0b20b4878647bb64db78aa67dd6d4263f45a21aac02a83(
    value: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__edf73656057a1fbc644a90b7660086759b80d449e4df686c9e91127234d472df(
    value: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__1dace7d0f1326ae9a55ba1f78567d29460c51e43be2a2851531950560fc4be46(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfig]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__f9ea80565aaeda13cf0ae388ffb66ad60a7113c43e54a0e498d86bced46f8f63(
    *,
    minimum_success_percentage: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__7d404257c604a4be62d76941a2503a45e0aabcaa823e1780f93b6f1194bdbfbb(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__0618027da6890daf5e0f7ff0d876d4056c784fdd2a69bd46748f7586397b4aec(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__efd8bacad53441d6f921b29cd1b7ebda534ff658265304eb76df643f4f8b3d2b(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigUngraceful]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__87f9376dffad7ebe7f0d4c45546463445bd0d05b64ee69ee885064aa216bde28(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__74b930712e751d73c02f490a580bd7cc3cd49bf1a028e47976c442997cf92b56(
    value: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__8d35fb6dad07f88975c69d142205f6ad5ed336a230d0767c1cd5f1fef8522186(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfigUngraceful]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__d95fe7aec49851a9e122fdda8933b9db0bb32731c37058bc51891efe137b91eb(
    *,
    capacity_monitoring_approach: builtins.str,
    service: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigService, typing.Dict[builtins.str, typing.Any]]]]] = None,
    target_percent: typing.Optional[jsii.Number] = None,
    timeout_minutes: typing.Optional[jsii.Number] = None,
    ungraceful: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigUngraceful, typing.Dict[builtins.str, typing.Any]]]]] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__21692be059ca382da4b0bad45da8c17c5fef6446225b5428079a70236f6e7be9(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__eb00b8f268c284cdb6f32dc56fd54cdcf9391bbcef816d46e4c18a3fdac74d89(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__9977b35b38c5c071779ac81a1937b70148da07783d40003595da8e027d810e70(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfig]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__e80339aba77d74dd0aa70bb3ed66ab1fc0fe502f72f6a00c3300750165d49768(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__3146c82c510eed422ade0ab05f0c52e218c18a6f50a0e1f3f8593ae3432a4c05(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigService, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__ba535117599a4ae92c8539c537bea15e2ac61b32ec63cb1221dea05f65b08308(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigUngraceful, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__e0c5e75cc2d19bf6bc4a1681c4ee8028ee046cbc8d260427ae6f04813af1d2ef(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__999c112078637c235ae89d2ced476b2875b615b00fc7f1b839a7b4b5a2554c77(
    value: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__a1504b462e2c029956e26cf62228dfd8f201b189d6e97748a4b6a7f18e6c7792(
    value: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__18af630dc11bcc1accf46758e7064b957c635ac8843175b9e1f0e04a237511bd(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfig]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__13c27e92a35dea352ec8582ab876a4a2ca981c349afecb54e4608b4350b6440e(
    *,
    cluster_arn: builtins.str,
    service_arn: builtins.str,
    cross_account_role: typing.Optional[builtins.str] = None,
    external_id: typing.Optional[builtins.str] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__ff955ea5140d1ba88f5f92d70a608c0d11735e1950113c5d230cd90fa0d4f9ba(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__52003c21a6f2906776cba9105e9a726f49b9123c158781ea00f23f9774176ecd(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__5dbf3d0789fa951761bf0b600363455f98ba8baf06bddc971258bafafc66b84f(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigService]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__ec406ff39372db2252842c23f4ae8e8b5597d72d84965715f75fe09e701ab3e1(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__157ecd321a27c57e970f4f905a8b6503bc2f415e6e71774268c4e844457d8e8b(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__aef6e90b32d1ff0367b0c4c8f0f081cedc7f54546c863d32f4dc537d69fe6f5f(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__3593e1787eb4f9d2e0d86685fdad2c99f3bd3bd6c16143779d48d4071d1019ef(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__cf2b86dbf63ce57f8937b86ec8ef40e3bcd40e40603a54c55f7f3152a957ccaf(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__3ca9b063b34a95c0a1606bc9af83b8fda0269bbd52c3ae108a2e46c5409570dd(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigService]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__c07ac6a8309f37d74216ea7312b8d484aab7875960466f27ccac738a2322ab2e(
    *,
    minimum_success_percentage: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__8b175b5f6cf6e5f130ca176adb1d453c02bff9037ab1c9b377e78b36d83a434b(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__cd2d2c2ab72cc3020b378937500e67167d5e90c0160ac21eed29f833aec88bdb(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__1535bcb2a7a65c656462d100890761693d4e31fa14d252f475278847782424d1(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigUngraceful]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__2d2b1cf736bb77ecf3284d3275bd2b0a5a96ac34d26cee59ae4268ebc4122d50(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__9143ce763958ffa1c127c11c775583c75c4324d262fce308428f9489750c9e59(
    value: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__0abbf3f7bf54b9ee1fb132279060ea75be53cc290bdbc7cae06b4f8d656e7f38(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfigUngraceful]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__1778fa9127a3cee8953404a96d1270ca6ffdfa2b2d2de73469ecf7355df6d53e(
    *,
    capacity_monitoring_approach: builtins.str,
    target_percent: jsii.Number,
    eks_clusters: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepEksResourceScalingConfigEksClusters, typing.Dict[builtins.str, typing.Any]]]]] = None,
    kubernetes_resource_type: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepEksResourceScalingConfigKubernetesResourceType, typing.Dict[builtins.str, typing.Any]]]]] = None,
    scaling_resources: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResources, typing.Dict[builtins.str, typing.Any]]]]] = None,
    timeout_minutes: typing.Optional[jsii.Number] = None,
    ungraceful: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepEksResourceScalingConfigUngraceful, typing.Dict[builtins.str, typing.Any]]]]] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__859f70397cf2907f31dc05d951b4ac8d8ee758743260345570434fa334d83232(
    *,
    cluster_arn: builtins.str,
    cross_account_role: typing.Optional[builtins.str] = None,
    external_id: typing.Optional[builtins.str] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__1474f58307f19d0bc42b78188e97b32d2e2e5cad3fafeafa3f65daac243d3453(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__9a6ba15dbbaa6d64eae4e29382fdb7f9878c622b3c17a79ff603ecf14ee98268(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__a6bdad194d74810995672b97251120d88a82f84a09871ca2254d60ad5d95d899(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepEksResourceScalingConfigEksClusters]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__c3d0778532e0e34eff1d0a43fa5e188c4ea86b11e70cf5a4387aba7d9fff5854(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__3c2041e98ab64b26d88421dbeab4198eed2778d71474c41a8b3dbb974f211835(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__25c26ef7b271ff94b4e9017e7632fdfec7b4cc11a9a6ccde2d5935bb0a1decda(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__127936f3db6a613a89fc59ff6e976284294f7d3a305357be8355df343f70c63b(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__a6e5f943eb73a8fe5d5bd2ee8aa1ab66484028cd64021b55268cb231abf84936(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepEksResourceScalingConfigEksClusters]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__b25b5994c51db18aa67c2446114eee170bd1e924088414f5ca767c79afd7d76c(
    *,
    api_version: builtins.str,
    kind: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__48c55243f443d578f6887435bd9e2b3aa41b48df91e838c2a4bf97543df34431(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__4f99584815af0fb62d907f2487692d83b01464ccda7ce783a5c2a70178caaa5a(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__0ea1bf7c3351d2e5ddc1631be04c6c817a697ef21e6174a8836fabe2861d3562(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepEksResourceScalingConfigKubernetesResourceType]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__398750c089564c6dfb35a15d8919539fe3f63ee9395b6f9052e5c9fa6a4ddfd8(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__d6f312325ea724ef5ae9adc7eb71b35f28b8026a0f88feeda0860dc508a46f8c(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__33d60514957bca86363343fba7eb18fd9cdf0dcb9a2e9d2fb6fc49e3d8535dd4(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__b67566f5e0a4c4316c9ac395a9ddc703ab282f7b5b9604966a35f2e3fd4dcec5(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepEksResourceScalingConfigKubernetesResourceType]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__8e96006f7075e626ec576aeed13dbea99918cf4ed2bf6e5bf16c3bc8b59b5125(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__1325ff52246e33ccc7ddbfee75b83c03abd932ecf9f12d7342dcb7b58d7eb3d2(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__599a9f4af287ebf56ac03becea4dec7d9a1969b8b42308aaebb11d67bf737225(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepEksResourceScalingConfig]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__416c46030082e07d832ca53d3a69806f0d7ba1044c07e49bbf12d2d5b23b6ae8(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__35554e6cdb1ea3cead8f522e26331553152fff5cef201e61c89ba34e99dee9bc(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepEksResourceScalingConfigEksClusters, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__8c3608814a9c66100069ef0f57eafd5d7193861d7aaa42b7fd0dcdf941fc6050(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepEksResourceScalingConfigKubernetesResourceType, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__1189e6d51fab52affb0faf3d25827953003f172ca8cdc30e51cf68ffb4ba1943(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResources, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__f2d2be933f0cbe026f9e3ac4a03859db21a175a1f905c72f5beae2c3d3213819(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepEksResourceScalingConfigUngraceful, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__3057544847e9cc0b3ca38a4fbd1e7f1ae2bef5b66173937311b15f4f30b1813d(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__06090caac72a221f02e0c20013946370b39c5bd902aade0bc6ea6b1dc5742380(
    value: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__0bbe76502baa5dbde05489fdd1d3c889bb4ae62f6bcb97e425a6c8460a131ff1(
    value: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__38368a45fc9fe0142491bd52da12b90e7421e3227be19409cca36a94ec066ac5(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepEksResourceScalingConfig]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__56798451682df270e0d6de026e88214e5f587c7e74925a1fa8d06747a8850a49(
    *,
    namespace: builtins.str,
    resources: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResourcesResources, typing.Dict[builtins.str, typing.Any]]]]] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__e1245b9ca23382ea3dddab8e25310dcd1aef3c5a29e373579e37c8426201f239(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__0db9371c4be5f8c21a00b0e9659bcc1ac5c06a25a83bf3b9fbec4443e28291e3(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__3d571d96bca8ea11187fde8a1a55ead5ec4b9b955e327bafc2e0dfb71332b7bb(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResources]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__a5b06212e65ce27558cc45cff983bd871bbde919cbf79045acb242d703e71379(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__ba3b0781461f51472ba32da10582f5fb18c418b716a16f1f8003fe730c6b563a(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResourcesResources, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__474086c136441fb37207972239c9d555e2f93343b51aac71c25154b547d1d56f(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__ac0d920af2e68f3fc6c1beb7a5dc43b37f9a98dff06ef0ab19d22be2cdb50aa1(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResources]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__510edd0216ff707c1e857b5046d17548289663ae8c5727e933e2f0f6d3a9304d(
    *,
    name: builtins.str,
    namespace: builtins.str,
    resource_name: builtins.str,
    hpa_name: typing.Optional[builtins.str] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__a5591ba3ab618c6b3d5d9d8e6396d182752dad4a8b7771ef05703992f45d75a2(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__8da6f53a4ae5e8e29458208e31381c5e7010c313c8272b3c09b74dbe77eab3cd(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__0dfc5191b093e537834b5c57b45d536706c313f679cfd30ffd20816c2744a6f8(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResourcesResources]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__94e1c25d59a62076d1a18be0588fe0aeb5c88473a9f14842fcd9677e72ddbb41(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__f0be181b8d1ea45d858053ead4a690a555d64185712975938d90e860b8f4bb75(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__6cfd4d2d1191268ad6ff0d86f2bfd6c007d8f54ffa576b94a5a37677430ecac2(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__690f2518b6fa8e3f0d268b90eb9ab3a4c4ff761e7acba75bfdde62e8f54ada01(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__8bab2351d20f8e1c4326485821018f54234be266963b51719fcaa63789abf291(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__3e6e1038b11065394a0e16fc08668838e7887f1c24586da94fe7127b4bbca4b5(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepEksResourceScalingConfigScalingResourcesResources]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__10a0f7df77121642918c1d3e9ceb8e1723a5d9150c408f60ccdc41692e1f80dd(
    *,
    minimum_success_percentage: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__ad3198a4f176129b98205feac62ff7abcc544907eee0ac8232077adea646c0c4(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__f60889a86d55fe68d16160bd56eecb6be5dc9b05245c8b6abe8a54dfb6a15970(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__ae355288709fb60fce75a2dfb79fb425029fa617ea3a9cfa45629144bea9ba13(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepEksResourceScalingConfigUngraceful]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__235b93d183205989922b982f0d96525e5c9ae6b6b4881f9e37b63425764a8b67(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__2850fbaa98849b43d2f1d6a71988adcc412475e5042c906adee50b9550ccb195(
    value: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__daefed9e4a99b3ea46b243968a8069b623e76e695bd74e2bc58c7c03ff0e4831(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepEksResourceScalingConfigUngraceful]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__18feebdfff0b17e0e2c192f37ea579160bae0028d81fcbaabeeff38b7c693265(
    *,
    approval_role: builtins.str,
    timeout_minutes: typing.Optional[jsii.Number] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__263235e8010f3b516eb071288bff4d1edde9f89c194fe7cd3e693b7123d623a1(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__5bce6ee360da762c75c89c9770183ae677172e5c6ea0843a559dd37d13af5ff7(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__e2d929ebcc65d35ab66ccbef65ed31e35db7ea7ffd861b30ec3180b9a7d752d5(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepExecutionApprovalConfig]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__78ede236f11065dce353c809ae183b9ce3c6393c6e22e7a5c1315315e35e21e8(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__f5b2b90a46c21b355660a75820dad8f1f72fdb647a829357d61c47178504be2a(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__3fdd11e5d5d5a193a1885ec608bd651b8405c62155dc47df87f152e32b8989a9(
    value: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__ef20baef67816f5eb1d5451ab32ab2c3515b0aa1e42caa298506c175e2258db7(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepExecutionApprovalConfig]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__5947d1edfd055694ad29ae13b62753ec1e6525cf58138bfc8c6ad7d939c6ae63(
    *,
    behavior: builtins.str,
    database_cluster_arns: typing.Sequence[builtins.str],
    global_cluster_identifier: builtins.str,
    cross_account_role: typing.Optional[builtins.str] = None,
    external_id: typing.Optional[builtins.str] = None,
    timeout_minutes: typing.Optional[jsii.Number] = None,
    ungraceful: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepGlobalAuroraConfigUngraceful, typing.Dict[builtins.str, typing.Any]]]]] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__22111a32c94305bd22966d33b7c77a189db5c7d9cffb11bf1565b4df487f63e5(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__afe40a06755f8b34ec54f3f3783bd71196eab3ce1e5c2ec348221a573427499a(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__571b88f0af48f1c7de576e43fbaf5c24dfd2495ce9cacba416a3c47c0681915e(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepGlobalAuroraConfig]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__c48925d9a85ebdb4f0fc4479385a6da5c425555c2ddaba691b8599c6a67c93dd(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__53886943d567ba0731f210bd3a3471488b0f0484b2a2ff466b5fd3a3301ea441(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepGlobalAuroraConfigUngraceful, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__90acc7f7a789ea8ab0e23713f3a384a65b455c1654fb50f9d54a54cc95eeda08(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__dff2daf771424c168143324e3dc89534dd8a199af2e893a23289a76a047dd293(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__05b429a4b2e339ca9067f55066ebf33943e8f66807c8ac1f40631ecaa31ba1f9(
    value: typing.List[builtins.str],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__1dd82fa06be3e2fdcc8b6eb66010c19e9b797160066e4f46056aa1c25dea74da(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__f69788a6a5b25d63c52c9f41d3a11cf8d1918cbbbf944228ca60f8913ca7df63(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__64ede00197750613752fad796d3676ac01ea9f02dd3b61c8a2bfc8c1b7e587e4(
    value: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__96607607e6f79bed2e5d2662d62158a00635aa0886601d2f908301f6610fd86b(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepGlobalAuroraConfig]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__35935080c3fd45f5541117a75a78d0ac7af19cf026801bb03262c6b62bc6ce26(
    *,
    ungraceful: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__93693952a0c6f03edfe1f78a11706ae7c5342216ee39a60244eb074328134879(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__07adfeb028994e1cd95a3720ebb5029272c69272907f1d58621abefeb9f3b7dd(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__6a3745049f44a713a7639f39af0a6c3f13b2f11bf88be44f919143698b725f51(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepGlobalAuroraConfigUngraceful]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__9e930c4e9f69b8aa837500163b5cda657d0dcea85e18f1331c884771e2d7a2c0(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__302cf316c2b5edb3520dd54bbce78b6b078b0a46a10131504ab72334f8bafc0b(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__218b9096f5c63ff6faddfc5f8803870c199559e8f27da5bb3a80d22acb4ea692(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepGlobalAuroraConfigUngraceful]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__0c96f8f01ae7626fd95f6e97f6b9ef02d01edb50a6ec64a536d808603b99306b(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__6140253b7af76a24ddb64dcd6778ebafa57988055f0a27b8bdf806dc5761fe93(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__9f84d70292d31d9aadb105792dd1a98e39f771eb93261f1ba82258a896e2f8ad(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStep]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__4f2387ed69a1caa25eb522e5076ec61bfe6aaf2df8d8f7bd47d6cb3cec640c8f(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__86db16cbaa30dc32043a576654b8e66a4d11255b283059a26c321e4d5033a649(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepArcRoutingControlConfig, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__74bc9a1b2c18d4736d0fc94fdfbc66c65fe9a3407f0e1fed00ba340fbfe11944(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepCustomActionLambdaConfig, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__8993c1cdd7ceee409a2013e43999d3459a151c2ad46164c041a239152c103526(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepDocumentDbConfig, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__665cfbfd314524ba6c6a4a375d6e25735e11e8612229471b6c0673418654d72e(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepEc2AsgCapacityIncreaseConfig, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__4087a319e99b22f4555aa8e6b404c1382cb24cca943f73ec0a80d7c777fbe589(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepEcsCapacityIncreaseConfig, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__4e05236813222ee75361e7f2fe201a72c83862f7e1f7795340984cdaa22f42d4(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepEksResourceScalingConfig, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__a57cfb1c03be27dc2908884b4cbf88b70b7e50387762516047b14362a0303839(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepExecutionApprovalConfig, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__90c54f6a5ff47d2f1454f2538a3ab5d2329048be047347f3c45bafe4a6ea0847(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepGlobalAuroraConfig, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__74f63239b2560d924d58797a6007c879b2bc5e16c85a1ce59f99ad76620a16ed(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfig, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__aaa5caa4da2b33abc329a54056b36403f1b4a2330285ab1aab0475d1724c39c7(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepRegionSwitchPlanConfig, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__a6c44c336b8d03d28029f6f001aa965f15e7995796830bd3f79e9f081d42f500(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfig, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__ec5ee852367a725d44abbd95225eb53244338e7a638068f56da87aa0502f05c5(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__d7fafb43f797b8961b640886c64858386201683523ab3ba6382b150145ef95c7(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__9c8295272242cc5613b3acca082f4e543f18468c7f24602640f9621693630f1e(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__19f8b814181096400bead295b092af7b8c0d4646971e0b4fb534219f983de871(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStep]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__7cde04993fcbddef7b64a8355a8be493ca2726e57747b9ee7a59956a80a8f890(
    *,
    step: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStep, typing.Dict[builtins.str, typing.Any]]]]] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__6e4527508de621ce7a297fa10827a6326c622fda0f4ddc6f71b427c7192c8729(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__7da6a5e6b66534abe047459b48d9209f2e8ec1458d30047c90b5ad33c9fbb148(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__49b37b9acfd5404759070356010fd3a99dd988209f27177272fdabf0fe769031(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepParallelConfig]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__fb731f31089998a53f87cdd6f11fde0508c3dad370ca420e277a81e12f7b5125(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__c12f236251dad3f8dc8ffa344e061dfa1cfe739ad72fac4b3d638f826cfeeb89(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStep, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__f0630107a7a71010c21fe7b67c84a4d65047d2d6018be09475f3a784f7b79dad(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepParallelConfig]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__956601b79e8b2431977bcff29522aa39a60b325bf091f310edf6e7aa91581023(
    *,
    execution_block_type: builtins.str,
    name: builtins.str,
    arc_routing_control_config: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfig, typing.Dict[builtins.str, typing.Any]]]]] = None,
    custom_action_lambda_config: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfig, typing.Dict[builtins.str, typing.Any]]]]] = None,
    description: typing.Optional[builtins.str] = None,
    document_db_config: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfig, typing.Dict[builtins.str, typing.Any]]]]] = None,
    ec2_asg_capacity_increase_config: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfig, typing.Dict[builtins.str, typing.Any]]]]] = None,
    ecs_capacity_increase_config: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfig, typing.Dict[builtins.str, typing.Any]]]]] = None,
    eks_resource_scaling_config: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfig, typing.Dict[builtins.str, typing.Any]]]]] = None,
    execution_approval_config: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepExecutionApprovalConfig, typing.Dict[builtins.str, typing.Any]]]]] = None,
    global_aurora_config: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfig, typing.Dict[builtins.str, typing.Any]]]]] = None,
    region_switch_plan_config: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepRegionSwitchPlanConfig, typing.Dict[builtins.str, typing.Any]]]]] = None,
    route53_health_check_config: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfig, typing.Dict[builtins.str, typing.Any]]]]] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__012a15a2d068002c7d815b48b60248e231efdde4b9f4287cd16aaad0322bba54(
    *,
    cross_account_role: typing.Optional[builtins.str] = None,
    external_id: typing.Optional[builtins.str] = None,
    region_and_routing_controls: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControls, typing.Dict[builtins.str, typing.Any]]]]] = None,
    timeout_minutes: typing.Optional[jsii.Number] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__b1eeb91bad052c29c526ebad241f50b919b3ae421ba3c80ba3550b7982e1bf5d(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__63e87f4748e29a2cf03b9fa4c088076b8ded216c8f377df7c76fe6996386e7c6(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__ec1fd4fa6deba0872718687373b605a1ff8be8fa4fe6cd0de358871bc5722fcb(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfig]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__de97f6a4e5bd6f01fc3f13dd0d092b70f17193c4af7541edcf683cb249bd20ad(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__e94e436e5e5840ac6d1380b868ed4a293ebaa5f214b100424ea3ef13736384ed(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControls, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__86edec4059baf7a890d52436361dc12da6ddfd8f37d1acdedac384e6dfcc7af6(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__7eb34858d8734329eac44502bc2f3a3332df415d14d34bc4f9c0a63af51d04e3(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__72addc7057603e983e8d96c67d9f77771a0c2537e10115b172a77f8a4013451d(
    value: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__5aa9ebf95396359149d75bc8464ff051de038c046b70934f0cb9c0db4e05d107(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfig]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__bcc8d2565ca14bf9fc280b68384ae0843e04fb71e65231b8aab41e9018e8c15f(
    *,
    region: builtins.str,
    routing_control: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControl, typing.Dict[builtins.str, typing.Any]]]]] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__d51bd878fd5d89e3267c52e43747bc0f5fe67112790416680531ff402609d918(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__5f68855f0a8ccaff6c3ce8edc564ff996f7d01ae2eec5612f990ed3c3656d7df(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__7a4e7bb92532552b7c4f3d0125bd56cf26e8edf09a1af17f4b9a9468d3bdf6dd(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControls]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__f3fee43415fadb4303bc8b3a12bebc2f40850b327be0f3551b815c0f61282dfa(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__fe32d36adcfaa77f944369b4a9b301ccf0345ec838a9fa7d5a0e0cc36c1b9c8b(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControl, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__5b50505692562e6ba77c47ffbfe0a1828b82f6f86a396c811f3ba1c913d0e88e(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__a727780dcb4391f16583f8558e03658c2d835578c5566c43f33d9844eec394ff(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControls]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__069181d40bb797bbce35b383ae8c64fb8b87ff2ad3c3c4c41b69e54777b81103(
    *,
    routing_control_arn: builtins.str,
    state: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__1244fe361ac0bbd93529e058f66a85ddb54bbeaff83ded2fcb5df288160ea6f8(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__0a3f0199c5b6ff5f2e1da3a98bc936cd01a397b84e8a4b374c793f1bf33c1f71(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__55d62cf5932d95a1a400f2a62c865505442933577f9cffb9e36f239ef2b5ba5d(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControl]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__ddafee8873d3418be5a47b92737718b74e3319fd0fb19e92105129c01f8e0005(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__b95e98b6e08784a35d9f1219a4b8eeecdb4d8d33176330bf55801553210672b2(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__c8be80365d0f001dbfb3b36c3428c0435d0581d1cdbad960d0b317201c103f74(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__37c217b0dc1973d809e4c5f4f0b89084012bbcc26bd9e754ac02fe8a41481ad8(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfigRegionAndRoutingControlsRoutingControl]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__12017c4967950177db65a956b4a32d248ea6e588f96a27ca75db9e7b8f66adfc(
    *,
    region_to_run: builtins.str,
    retry_interval_minutes: jsii.Number,
    lambda_: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigLambda, typing.Dict[builtins.str, typing.Any]]]]] = None,
    timeout_minutes: typing.Optional[jsii.Number] = None,
    ungraceful: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigUngraceful, typing.Dict[builtins.str, typing.Any]]]]] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__d9de91f827da80a8a7ff71b27ec2cd241d89e99b0919ed05d028645fb21e547e(
    *,
    arn: builtins.str,
    cross_account_role: typing.Optional[builtins.str] = None,
    external_id: typing.Optional[builtins.str] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__ea39c73dfdfbb2d645a0cb7a2a78d7de010c5918ba67a42ed273e782784abc0b(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__d6abf6619ae807c3d2aee49e2d19a197e01e776a7cef310d61538a07f4e1cf26(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__7f0c32fbd7d8ce1d0c3e4cc1edcd54837519be9ca5354109da7c38eade43f709(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigLambda]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__bd10a01bbfef75756f3dbaab3662c5e1b7abf05e85bc5c2230f25efa13c76a2f(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__045cc6197ef0d979d61834caf06a556076deeae42bcc25cf2e35aa0af9e4e9d0(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__acaab8667e9d6e1384847b4763a63e7a3a34382aa6c3f8dedcd9bcbef733dec6(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__ca268f35437aea5e00b09e8fc3252361b93cc05df6a14d5ebb3731db41c9edba(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__f4e6ac7a22376b2ae97a337e9dcaa8419bfa202c34103332c3cb7821f35f0ea7(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigLambda]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__d9227e91344c1ad299e1c5411c1a52398ebcc8c656b4f0dd4f52f5c758a18318(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__73eb38610f3c0b287039c911188920498963b30c5441ecdc30fb781e0a44c31e(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__a25816cf0fe25f7061af6e932ce898db9e4aae6b895104416d0cc66b35945751(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfig]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__8b783078477bc4facaec620ed1ebdfd112831b02e3610164fb882db971b6eab1(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__b31cfa59aed537ac815801134020ff64d7f992d3771c44fef589b4a3b2347dbe(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigLambda, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__54b4dc7925f7f1a1cb0fd64cd567f2a0d2e859354d521a084c8cf2b7b853b247(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigUngraceful, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__594ab0b033e57d0f8b5b939d47bd173c7f4ff46463918116f1fe6a16c1c2c795(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__28fc1dcea17af0c6932caf9cd922ac2c1f2a777629ef39288edb4286a2aefce0(
    value: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__b9e52782283cf1f234ad58f63241cac0e8717146b94961b807361759852df781(
    value: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__254018af2af0e3341dbe2308b0b8bae7bb0c04cee271705e3337df7d968ed352(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfig]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__a33922d85aa1aff8737763a6fef151c9cd3b14c68d4a0247c1477d86af985880(
    *,
    behavior: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__cbf738ec4ce8282e2212823f44a9afcaad53cc894ec334858c93519a7f626598(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__b1f9303f3d05b2c7ea53d09ae946ab3f5230876ebbf90964d52a0409579274b0(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__4168bbbb138b474b9356eaf964bdf94e34e4e9355fcf5e204159fdc336e18bcf(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigUngraceful]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__25ce623dde2b92ecf2a37f614fc251aec2ffcd785f069c933e6c6fde17068317(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__6c0b6217039975ff3c5637682f87cba910e88ed2f651a2488d6a0cae10688821(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__e0f83633263b199eed3348fa597d80e9a4d2e98f80e1fa7c239fbc34fba0f0a4(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfigUngraceful]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__4cd58b748d7969c2f7a9345308c4230cd6467908fe65d2e5e66b77130b3d7867(
    *,
    behavior: builtins.str,
    database_cluster_arns: typing.Sequence[builtins.str],
    global_cluster_identifier: builtins.str,
    cross_account_role: typing.Optional[builtins.str] = None,
    external_id: typing.Optional[builtins.str] = None,
    timeout_minutes: typing.Optional[jsii.Number] = None,
    ungraceful: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfigUngraceful, typing.Dict[builtins.str, typing.Any]]]]] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__48f7710cf2124087c753874093183ffbbcafba548b33e65fa99a6f0a0431be26(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__41f36da14f6340713c33443f9d770148f487d0d73d28f8f8ea935eb6e5c3f8f3(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__581fb1487be0574ccb8a702f42b845bd8680f30ff905bd793cd9d69ff5d98537(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfig]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__52dfc77d977ce18ce4290ccd714d46b8460585ce7470fd5161407db0f544e780(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__7f0aeba1c211156ba742947bdfe07523577d69a7168df41c448d4fbb58517ca5(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfigUngraceful, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__896724a8dda08640d727e550ce63b4701d7fecfa058853db6938e3f6cf3f2d38(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__3835830e832204964be63252228b2d30881cd72b591f6e3dd44784117f952358(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__ed9c2054ca3d989c5eef286b5faf12661813de6c6a83a956918010c8b6b090b8(
    value: typing.List[builtins.str],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__60ed8cc95399d88d1021691ce814752b3781805c9ea59ffc66cf096e6a737a9c(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__0ead4dcf0e02b0e62ba8a1693750695745a698c24e2ef47cd7ac95aadb055d6f(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__5bca59d170457b2f1365b33623d0d33c1b07d0cc9e6194afffb5e044b7eb0dd0(
    value: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__5f8d956d2ef9f77939f3b882e4e18c5056af586cb3aa7dcd3bcb9260329b2fe9(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfig]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__7b43e47ecb11f46d0e6d99513e2596869e233edea7573f0b1fcb8636f4e54cfa(
    *,
    ungraceful: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__13557f99a064b749361d6e6c9a8511e22913c36022bfb30c3989a10d37362f48(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__cd7884e369ae44ba4d08568bb58e865b0e24298c7e2c499653a5ef3b5c57ba65(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__edf1c1e8270cc338da8c6394a8a466b703e1ea42264877ff56a225bd08319166(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfigUngraceful]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__dc5657955698df04c1b3b4fac1f328d117df20cd305b50f237314e01514d915f(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__7b7e4d41483601b6fc1fbffeea91d62ac82db5b018e7de17140442546c71ab5c(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__f3b48457566b5d1d09adbfc4d10d06fc01f7f4b0fc2712eb7c9d2ff3ec39386e(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfigUngraceful]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__7c28cd3817347e822c0a3ba6f5f2a116dfffe4bf8e95d9744354a5dac8bad672(
    *,
    capacity_monitoring_approach: builtins.str,
    asg: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigAsg, typing.Dict[builtins.str, typing.Any]]]]] = None,
    target_percent: typing.Optional[jsii.Number] = None,
    timeout_minutes: typing.Optional[jsii.Number] = None,
    ungraceful: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigUngraceful, typing.Dict[builtins.str, typing.Any]]]]] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__bb8ce5e75ad83db5dc347226c62c3d4e0e18ec2bbe3ed295afc6b6b7b3d447b4(
    *,
    arn: builtins.str,
    cross_account_role: typing.Optional[builtins.str] = None,
    external_id: typing.Optional[builtins.str] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__367df804d7536750b757fcb71e51efb19440ee57cadb7c4b0985f84150bedbd5(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__b393fa4c21f4cd839afaff7761a3a098d9a4e0a1e263e55a32a721d4d2ae3727(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__ca33f33b7519bd7a1fae1f51def2fc97d24e02a67943902a36a66847c334ff18(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigAsg]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__47e51020d62bff0ba5e54fea2441c368795ee7e711f593f0b251168c03b212d7(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__8fe036ddee6e3e2994650ed73b4b051156e86ede9f5262a7df76116723e151fc(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__1e5145a16bf57ce2fe845439e5589ef5a317dabdd01f9156446c38e62c1830bb(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__0691901448df7e3dd9f47a92868d1e059703b43841d1e184756190eaeaca37a5(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__84fae31b78c04d61e62558daa785a6fcd18c0a0128d1e35ba60c8e50689ba66e(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigAsg]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__fc7f1704642a5c354e2e9f84cc68cbb7d3eb5da7badf72653be683ee403b21cd(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__12aa0faa881e4b5359dabda69a6f34f5f4067ef0dec6078f6fae6f7e38eab497(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__a20b6b7faa16c1f719c231578a0ae12ac3f9f180ec19f15f7bdbea88f6e410a9(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfig]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__045b2f18481203c2da28f6cf68661ad5836a5e6e978d53b74d6a93ed5d8ab86e(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__c89acded11bb52be97ca3f13ee57078127e4ef264c4afcf4eacb1800506162d0(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigAsg, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__cfa35e6f1d988e63ec499096d081b06b08e70731a1a5ed92a133207869b3d1bb(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigUngraceful, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__fe6edb070e2931086a6f01a181c9d35b21157488362e1d308b11d38002064cad(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__49ede5d13ec400a5abfaeeca6baac95e8bb3f2353666b9f19f16ff6085b177d9(
    value: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__13f8e383ad36b8c3a357ac864751cf8204435ca6d85c31c7c194e4a6071bb289(
    value: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__e77f9d6f44e544a6dcfa336fed43b96975e088dc99c5aa4c049357b47a6b911e(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfig]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__3d5b18bb82c00d672ff6372ef57a6d909d0738c6a952f7a6f88dad2eda07248f(
    *,
    minimum_success_percentage: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__6ef78d194b20ec2b1ca32310ff4bc177de42289a037443f241ab6bdd4b847c7b(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__a8bdd5bb45e7e80e44d04f0cc413178a86093f18e947280e45a0ec8504d634b6(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__ed2d58e7557dc87333f396a2cb3d50eb0c1953f2af0220d188548464fd7f10ed(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigUngraceful]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__107bdd7d1945095bbf9c6afbd85a9be2a15dd6c464fcf6e94149f7625a3dcd0f(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__a3c9ef7f7c2a1e98165d78fc8dc61dabed2c589576beb6bc4eda366eff9ebafe(
    value: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__fe2780d9052c558bbe2c1eaf62284e7d40c79eb47abea7b95e54123450823d5c(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfigUngraceful]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__01d862f07be1bd6944452829eecd954a09f5bb6dad11f5bc6f20bc6d83a41d0a(
    *,
    capacity_monitoring_approach: builtins.str,
    service: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigService, typing.Dict[builtins.str, typing.Any]]]]] = None,
    target_percent: typing.Optional[jsii.Number] = None,
    timeout_minutes: typing.Optional[jsii.Number] = None,
    ungraceful: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigUngraceful, typing.Dict[builtins.str, typing.Any]]]]] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__775acbe77f291e281e294a82aa978e58a13161d2ba2fe0d7b126f090ccbd81c1(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__a2a742ddaa5e13a215c36b5a1ecf93e4700fe58489f8fe36ec21f0e338202429(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__fd010d5132e2745070afb580794604207f4d02ee76d21ee2b9cab7956735514f(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfig]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__7d2c4b8a46c7b1775d6ed710ba22a282d6ef0c0a7b56e1b6b6530af22bcb033e(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__259c78f6f33ffd1d65363b54646d55bc03dd4b44e01d41d854f52833ea1f7285(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigService, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__e00c894c9a374675f1697b783d9521ab8dce491e595075ac8088e8c3aed91279(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigUngraceful, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__6f54e8cf1d37f338b71bea75ffece8fff732ec69652e040207c4c0b2b920aa4b(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__a79c261e593078a84cd3aade19b08376a8bf11b476124a74ce00d0370ba6d931(
    value: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__323ea359d5016f02407d51dd64c1de45a7e493319597a7de9d1b409319f58ef4(
    value: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__a79c06f108a2a40d46b94505e98b883e03a21f9aed75afe0afda653293b4185e(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfig]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__10a7a5af4e303488dc5065f2077e4983d902aed99614d8bb23049e4aeb09c6aa(
    *,
    cluster_arn: builtins.str,
    service_arn: builtins.str,
    cross_account_role: typing.Optional[builtins.str] = None,
    external_id: typing.Optional[builtins.str] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__ffa4961ef541785b86ddc734ee7981d3e95918a843bbba8796c78667a9b35738(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__a7f00f67aa5fcf16c94fb918aeeb8b50072729efa85222c29f09bea39260dbe2(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__3a0234c890fd0d4f6fd8ee2b7bb975ddd6a3979cd61e73c057bbc3cd4515f0f3(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigService]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__6d88b2b03aa83089099dbf49165fa1f9e9b77b993f3e1b1757eaca20cf7efa17(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__aa48eb3df997df4dedd222a61b0472c8511b886a589a12c67fe0b2b2e1fd20ad(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__0f725afe374cd904846e17ec388aa286beab07bfd963c3897c8b396b844991de(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__986fc82b3f294656a6bdfd20a878bafb2efece8130f23da5b1e26e84e7f188bc(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__0c439570a5bb36b3dfab0793b1b9c086450962653d9c6b6b815abf0835dea4b5(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__e6767fa830cb98002fccac0dbcf5e10bb4b9b275b89b5c235a3c9d1ccbe1f42d(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigService]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__71427524083d5cff6ab5bbffeab6db93ab40ba835441887faea275800d0822b6(
    *,
    minimum_success_percentage: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__bcfc7425b64b3c4b6a27070528d61cc8c8a58ee2301cd27c853f2bcd0d451634(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__40832b19e32e03f6466b09eee0556e682877ea252d1551ff8b0dfefbf533a28c(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__d6283583b6aedd020076da7195fd1d4db2c0db5361030d3e8ea68e9bd3116511(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigUngraceful]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__31ea09fb55d70d748f460f6cd136aa0668bed76e02bb573fc4fb6ebad084ef1c(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__00550b6a67d87e6e677b2988a30477892334c2dabdc9e319393a38b3600b4a6a(
    value: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__36f63d0d899264e94ac2a1c74f3eafd29ba8c8b5dbb0ebaeec004a72cfe8556f(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfigUngraceful]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__add3ae7f1b86f1e9054fc2e12e1c036df1caa7d1bc81a2b3192a8f8ada5474fd(
    *,
    capacity_monitoring_approach: builtins.str,
    target_percent: jsii.Number,
    eks_clusters: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigEksClusters, typing.Dict[builtins.str, typing.Any]]]]] = None,
    kubernetes_resource_type: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigKubernetesResourceType, typing.Dict[builtins.str, typing.Any]]]]] = None,
    scaling_resources: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResources, typing.Dict[builtins.str, typing.Any]]]]] = None,
    timeout_minutes: typing.Optional[jsii.Number] = None,
    ungraceful: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigUngraceful, typing.Dict[builtins.str, typing.Any]]]]] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__91526b0940eb02ea3a0bcf7f6b32e63177fd8e7322bd74e9555c769705b0638f(
    *,
    cluster_arn: builtins.str,
    cross_account_role: typing.Optional[builtins.str] = None,
    external_id: typing.Optional[builtins.str] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__2666afe6d240c53f565e8432f3fdb1fd687aff3e0b00ee55cf667882323f91da(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__527b7796b036020c821c9d275ca8d12b7541b8cdb8108be5a056d06bf74d1664(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__f3b87e9f5e50962dc6581bc1d7e3f51034425455e8bac231ac6a15fc4bb9404b(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigEksClusters]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__e908eef9e6bea78affc8421011f139a494af71c73010cfe08c636f7d90870b40(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__b32e173ddacb6df0db73cc043df76d8015a3f239d1a1620f3969d821e0b9a528(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__f13e2ec3f5ad147d905ffa2091090bc7d933c372a8756a2aacca684c9f3abafa(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__7230add8cb01f1e55bf2828f89acc21c9a127e1def1870be4ef306fcee9add28(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__270db05e1f0af05bc6574aecab7cea299a5841880b8a3099ea38d318235dae45(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigEksClusters]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__b743c448e231de108c241028487d2e497bfbec2cc577252f23aba25f6c156001(
    *,
    api_version: builtins.str,
    kind: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__bfddf9126d0fd90226ce268581a46ea4d4bdd11b59e643a0f005b02a86080210(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__7c44cd4bdbd1cc5162232afc0d50580bd01ab6dea4a778fb25712bd5b2486562(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__ed2062683166baa0546c5b7b9882dfaaa2b40f1eb58ca022a23f16c3ff65ed79(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigKubernetesResourceType]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__fc9c07f00ae7e4cfc2ba4183b8a626e80f46e5a8c52040628c38fb1da618c205(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__43844dfd582b80fc1f45d95c2845398245ebc511b02615c6185047f73fa76630(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__1cc13c47267a5817dac217fd79385e25510b30a48e6f34470930047822edfd6c(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__4f5ee8b03d1ddaf11cd06172cac18ac425f79cfd731b38f1156dc44499649c2a(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigKubernetesResourceType]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__ae12f73acabdf44c405f51f446116590c3bd45840c51f42dcd826ff8fbefa48f(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__e4097380e1fbe02971d28673ac4e7196a59dc2c25e9fab2fe2950c8baa64db16(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__e95d95a67747e7ab8c9efbaa55bb12e87edacb0c12c81d641510af4d1fb76451(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfig]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__d799a4f69b5bad29ff9fa577c92684ff63f5a1a9a56a104c93dabcc4a3c9d548(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__9de442c4d61ebb5d00dccfecb92970b9de1ccb0c8721ea8e2f7ba0e0a61c2b7a(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigEksClusters, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__4e11bc4b5fb3b65f78a5183c325edc5da0f9e561d6cc6500a4d438d334b9aea3(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigKubernetesResourceType, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__31cae896f451778b51e43b693eda874cbb7e0cba06cf52ebb658cdd795483e47(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResources, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__86cb0e813d5950c48859cc0b646612562707787f19e3b6270e5195b7846aa267(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigUngraceful, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__dd175a685f2a9a997cac032ffc2813dd29800b42426925937c15df7447f82655(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__bcecd2cbba398488a50f4b4c3600a1efd5ec0340f53d293aea27c2ee644acd95(
    value: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__227a2267e509272cd687eef6fa0983537c08b194a6a91b64ad31c3e45e57351e(
    value: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__a82f071a8ddf6eba268373010280e1804c50ca8a668f8f52d989826522e12964(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfig]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__92dfb09f7dfd235dc0a22b831d7580fdc53e5af60346bfcfa0a9dd0bb1eb1888(
    *,
    namespace: builtins.str,
    resources: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResourcesResources, typing.Dict[builtins.str, typing.Any]]]]] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__4dd761323bca2cfac911129ecc634e79c97920a10715ebb1a1ecc72cfc091c01(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__d7f2b27f5060651be7dc947f66e12715883ef7746d4f148d491ad4a465ec9610(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__17a8a0c2c6a44e29575da874fc3685ab0997aee62a816d1caab139e462c0807b(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResources]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__06533d37cbe0539e98cb423952c1e31da3e0c947df17b2c6aefa203cc5e90077(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__f3aa64aaf45e7ea73e7fb2ccbcebae3913db45e9c6632597640dc53483e7afd1(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResourcesResources, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__b6547cfe873f8a59cc35658ebe102c230420a39c7b711153a6244ed98752d7de(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__990c00eb293b33b9051608478c9595ae8cb1ff85e5e811b9fbdbf31d4c10d136(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResources]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__88c84a284465370fa47dac2fc80624de8ecd1497275c2824bf56259c2b5c8e44(
    *,
    name: builtins.str,
    namespace: builtins.str,
    resource_name: builtins.str,
    hpa_name: typing.Optional[builtins.str] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__13774692b9da1b3c7a14570c303e52f02e25196b06c09a0a921b810b85ad0940(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__1adca0c4681504cefb4b05e11a76324cd3485092d4d5c568792be0ed7c7a5650(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__ff410a0a98eec1a53598593ab04ad75b6fe177f89164e894793d9cfaade23a07(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResourcesResources]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__42e6573eb7ccb713626bf61104c0c42674ebb21be3a85069a942538626528e82(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__dba8720a6320b8fc14593c82dfb36e5f0fd36c2c8b2ac7a113d1e18d0583e8c3(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__d87ad56c1b51da04514101270468ed71f062a1bcc8f9ed8e20985b7ba7e126e6(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__fafa369d77213be4e9458fc44b4bb9f4525a7b443ef092283ec34c197fe72e1a(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__61f920ef5c8fab999036bf5ee4b92e2ff8e9d573120ed40ac9097b7112ad9dd3(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__0bcd221bd125bd19c98f04e58cb4231f5611d64fdfdfe8872e2ddf609371f97c(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigScalingResourcesResources]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__dc208154507dec3618d73cb85e0c7149fbc6a6e6d54225ef7d032d60f95d0e0e(
    *,
    minimum_success_percentage: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__59e891b80e7d39c01baf8a5aed41b18dd15772e992d0bae97a4c0977e5d4d52a(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__ec4241eb581f20d24f4b33ec103e0c7f655f1ed2786c5c7e3a02cbe153ba9cc0(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__e2b3fcce6054065804d99f918b3588a67b601b8b22345c5108aa144064c91239(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigUngraceful]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__fd22d400fdb66858b635a95e4db446ff55126bd1b3fa88cab456fdb9c6abebf1(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__30460bf4aa866b693a0c726225dc79053a398473f2d8f80dc3ce7ca7af8ddb9a(
    value: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__42cbd5bf6fe71e700aed52efd9e38e108a849312de75337ef0bbf157763c3e77(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfigUngraceful]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__4613902647acbe84ba5d4af625aebbf7b105b6b9fd922bd8a490be0cc109a039(
    *,
    approval_role: builtins.str,
    timeout_minutes: typing.Optional[jsii.Number] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__6a8c2b96ec2b4d97a3dabcf772aab03b702a7462f25914884e15f5edfed850af(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__e7d56fdbd29a609ecb912c6cbe328c493b1d059f7c4e368ffe67fff7d48e6ed0(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__f92b037f2c1fbedb73b934fd744f34c1afc00e3649ba7d5e4118869a7145a201(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepParallelConfigStepExecutionApprovalConfig]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__876751b2b27cb70137887f7a3f6145e0a026e18018d712e637935c83bf97718b(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__20952afee56e684a7c21c64586820284c6708de8b5822666d8e346137e0df73f(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__c13fdb089365a3ab4de468b2cef5ebe967f70e5e81d15e42b80cbc6ef022d45e(
    value: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__d75c95c2e8def0695ad29d348b4a46448aacfd4ce8a68bde96ceacb802daa06e(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepParallelConfigStepExecutionApprovalConfig]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__20b72e94f0f62e3a4f263c1fe14dcdbd5bcb996edb622e852a783c2a1d2ad038(
    *,
    behavior: builtins.str,
    database_cluster_arns: typing.Sequence[builtins.str],
    global_cluster_identifier: builtins.str,
    cross_account_role: typing.Optional[builtins.str] = None,
    external_id: typing.Optional[builtins.str] = None,
    timeout_minutes: typing.Optional[jsii.Number] = None,
    ungraceful: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfigUngraceful, typing.Dict[builtins.str, typing.Any]]]]] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__15dc135b749365ccfdbd04288877f53718e465c3a30a887ee56168fd6526b821(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__ecfacb0556a1354a131433f99575f9cc2e20d879e05e3421546e6026626f1de9(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__b01697cc893da9e661d575ae0f454f7924328364cf36bf9d5b72c2960e93ed12(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfig]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__37f29b7da57b1ae57dc407028fb41f6f7ceec539f3c68142d3a9d41ae82c78b4(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__e94beda9305a5bfd2b0c7ba256f6765fec1824dd664dfc23e4dc828d8d1d3d04(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfigUngraceful, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__e85804091f1618db24d0abccf6976cb61620702abbdc290e828a1301a4674873(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__bca988944b82d8b0d442d412c33cecaee4b1bbecea77d31d0d8da865e3873366(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__106f3bcc082ac143a86f6b664512fe22e7e4fd1f2b0bd7f00074a29f872bd1c4(
    value: typing.List[builtins.str],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__c0bfe3e5976d491a42a43a2fd1c5e6d87a704e5730d6d357c20b05042c5cd1f3(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__515e415868950c5ae9e5a292d262c6c5386db8e6db0495fccb77e18a273ff702(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__0a97fff5d12164ac9ef31e2e9a26e18c28618a4b4630c67df668f97ee7c721f4(
    value: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__4b8d94ddbf055c9defd12fed8401eb6e4b4d41555a487a4afce7d0030cef2873(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfig]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__4c9038bbd1f9fa1cd54df757ddd8a839262238e31f25cc276667f659525b3ff3(
    *,
    ungraceful: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__216d04bef4439520814a0334af74a541df0460b638406fc47e8d15214f4463b0(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__f95d670764dfeccc6d169b585d208e7a9bfe0e885aec06a94574b7a9501cafcd(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__981ab7f5af11a68faf3a5531d9976ecb6eafed4ef56f27e4c1bb08cf11f67048(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfigUngraceful]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__946ec9b840c3d047a1b94bbe2831d6ad18dd33f05f77da873c3fbc4edea3aa28(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__dba26eb214d1087868ffe26ac2300efbccf198e9e1a7ffa7b729309d6e432619(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__b3ea6fd1c39a208fb1a0ed2e5f58a09e74b6230b584bd011f4f054558f94608d(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfigUngraceful]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__4e03791dfb52db3fd691872a4b1642f8b2857fc83e306e8119429abe2d73832b(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__7135547f3107b77eec6c90af63cef83df6c7abbc0a4d9bf3bc8dafb904aa41a5(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__2055b2ae52e5dc1861cda36696a05707d3a9b7440262707beeb3b210892d6ed3(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepParallelConfigStep]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__5e7ec661e0b1b2e8b530e8cf186737d9d8e7617b9287153b2767396ad1eea434(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__e305ee2528d3e6e4460d76efec4f784ea0e1e5ce56f36462a58d1b482bc6de63(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepArcRoutingControlConfig, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__80414aeeff818d69cc181f90609fc2250762044e59ba980cf77cf6a71f8d03a2(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepCustomActionLambdaConfig, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__ce351565d8b92167fa3be7c0c0fa460f251048090e05c8218057a02160cbe876(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepDocumentDbConfig, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__3c6d3508d44c3c02f46b015ae3da003db99aeff4e1403b26fb47ef57d72e9e24(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepEc2AsgCapacityIncreaseConfig, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__4f5385798ea60c2c518ac557b6297c07c56bf4853abb1ac2d938617f51d751ae(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepEcsCapacityIncreaseConfig, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__8bd7ac9c9f419fad5f303e98986f65854b0459633dc819549e79480f283d9121(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepEksResourceScalingConfig, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__5c59f28a28b8571ad9d122c817e8c4206c35f60b549ed54802e21864725b9c19(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepExecutionApprovalConfig, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__cba26cf88a58d022d297a89993f84fb9a80c7fcad449f3e24c602d445d9cdfc1(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepGlobalAuroraConfig, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__eccaf39b9bd717dbde277bb19f8e44f152d858925a723d9e1484998a721c9b26(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepRegionSwitchPlanConfig, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__b202f5f99e8063339c44bbf670b3f00fc16a903ed2f8e7af112ea2e6bab559ff(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfig, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__aa18f76e96707d3bd962c3094df37d568a3974cbec7d00a7121bcaae84be090b(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__a4adb9ec3b02bd796bb264d0c0231311cc6d583658364c385aaa650289bbc74c(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__19c68697c5a0d8d54e8393260caac797167f3a910ba3b3554ebf73ed0e030905(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__e0032dfc6b76b2dbe36091c1e93ca187df82a1bcf22b3f9743add815d1190882(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepParallelConfigStep]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__6a8185f1d83559d37b28a385d4cf6ad0f86e6c186e6fe88bba9a50ff63b40819(
    *,
    arn: builtins.str,
    cross_account_role: typing.Optional[builtins.str] = None,
    external_id: typing.Optional[builtins.str] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__e0128a8852826dfecdc3f8d02d94b36cf4e0ca510d7e3fc23f06eb2f720dd2b7(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__f0245da70f86ce9dabc58c508e4b0ee47fc6f590a45605d6c80324a00ab30bbc(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__86ebe3a4cb011fc9cc8193617596f2520829d7e2ad6535f0b3de4b3042080c6b(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepParallelConfigStepRegionSwitchPlanConfig]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__2479ace5081246488fdd99916b54c1e414764f45b141d470dfbb93f621a1473e(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__a22864500a056c1ebe89651eda252bf40c5c617ff6d2a51fabe62eba989fd1bf(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__2d96e51f318ca01ece1920cf7274c5d32983978d71fd617901d68077b861abb9(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__839bef772255ddf51b9539c654c2156594fedf966c6bdd849712a3f22562c225(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__ed996338a18812d237582b4b6ecb274d34b5f9d4b99642bd588eb95b3ef574b1(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepParallelConfigStepRegionSwitchPlanConfig]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__721d678be443bb2c24a222fa7c4b9c1e0fc31e9ec4e58d61b7aec6cc8462455b(
    *,
    hosted_zone_id: builtins.str,
    record_name: builtins.str,
    cross_account_role: typing.Optional[builtins.str] = None,
    external_id: typing.Optional[builtins.str] = None,
    record_set: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfigRecordSet, typing.Dict[builtins.str, typing.Any]]]]] = None,
    timeout_minutes: typing.Optional[jsii.Number] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__a05515cdb0084df32855251e7d160b51d00118d518bd2af5e992258f98c3a1be(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__f19b0b57d8a42416a1dc480d227b98c6c4fbd69f725d566377d1e4de036846f7(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__e3f961bc92744f94e25138dba5d59ea66201bd3d674b5c7074460769a4d367ae(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfig]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__c1dc6bb800f06be3954e9e5f16f5b710df64486eae0f102b7ef6c7c047867929(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__10fd7bda04f68f5ed8a115250127b7bdb06c9cc3126ef70a4a26fc0056bf8093(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfigRecordSet, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__eaec367d69ad838b60a89297ba11edb6cf8d11055ebc8eab2cf114d3a6940733(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__489452a2b71152a313af6557b5a92c9f8807766353983e1567a6a6837cde174e(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__a673aee5c937e42c71f7898ff0112282c727f989a90ad9ee746eb57c9f6a935f(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__6683a687a29deace542abecee9e0a67ebabfb08865dbb1fe564f462a3ea3e8aa(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__6af2608431d23e66772a6da31c53fe6d29a4612aae22ca0f711fb906dbadc87b(
    value: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__f905da12c77a648a11bf62c61d3f288c713c37526b6df92119f58fc8e5c873de(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfig]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__b3f41780b2add040149c2e245741cf655492962dae9ab81a23687c85de004139(
    *,
    record_set_identifier: builtins.str,
    region: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__c8ab21cdd03492a923a01209315e56213a4762630202a58bd1d62a2b8848b0cf(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__ef4bdb04809d15c6eb3d194371a86a08a6c3b4601f8bc427d97f844fe412edad(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__675aaff9fbd2705189ffa9d8266013baa70fe109659149d4dd774167126e1c12(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfigRecordSet]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__c51a83474ede7692d0d707f30429666fe11aa799c34a671159be5275d92c3778(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__e0e0e002829833489a7dcea4fc513bb743f2659f4430a32eeaba1bd5d1d03b25(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__7bad444b977ffaa9de02883807c1e57b2a63cc8a689e8a71bc1ae7f1eb57ce88(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__5e75559eafaf073b9b014dad68440815ef44079bb8d4b76b48f2fac3d10fcd0f(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepParallelConfigStepRoute53HealthCheckConfigRecordSet]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__891a16a22c9957b484a5117cdeb709e5358f711e390c2f38b69e0b455a5b7ad4(
    *,
    arn: builtins.str,
    cross_account_role: typing.Optional[builtins.str] = None,
    external_id: typing.Optional[builtins.str] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__4c10277b79c468823ac9903e676cb784116c137d439ea94785a5bc0f06da8bb2(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__91aeefb4bfa64b33383edec12e2fb33e7d00b4f0008781c9e9cbe1399b3201a6(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__b3916888cc4dcec25e09e226dd8d7778f67ca84916fa715965321df763cc9dc7(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepRegionSwitchPlanConfig]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__966b0d52b4c44b42d59b97f3c0a4633cc6b172f392ce6590e813db4620bf26ae(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__2b186d403c13295c19f4bea8501c6557c09fc537a6484c55f0b30c4274d22450(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__a74edd11afb7746e33a81c5ddab903284f06b4c455be9a8308323b7a132f4d81(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__738ccf362a286914a7335055003b64476d8184208c9868d091cf25f70c1c7c73(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__1a9e9cad068d25b6d7be6e4ee6dd869db57fd488131a026ebcb1a07fdca49670(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepRegionSwitchPlanConfig]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__b3685f6e453babdced38e3829cdc4e5a00cf24a5793a623cc1be3126b334825b(
    *,
    hosted_zone_id: builtins.str,
    record_name: builtins.str,
    cross_account_role: typing.Optional[builtins.str] = None,
    external_id: typing.Optional[builtins.str] = None,
    record_set: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfigRecordSet, typing.Dict[builtins.str, typing.Any]]]]] = None,
    timeout_minutes: typing.Optional[jsii.Number] = None,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__0c73cb3fce4507a1f443638ad80b00c488ee1fc3beac5c53fef667e338544de7(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__26bd7b602a8face4f3ba40a3e46348edb4c1b1e29aadc3364994fd33c7f9cbf5(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__a9c0d7f91c4d3faf77a37b2b6777629cd66c75466672359126be7cdd61135c90(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfig]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__28e0b9f95f68dd0aa98add56ea14cf0b7a1b1417d77e3aaee7b830442fd87a8b(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__b666f9824c4309c2b80bd7ab0efae356c8802922455208dc03404edb2ce96532(
    value: typing.Union[_cdktn_78ede62e.IResolvable, typing.Sequence[typing.Union[ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfigRecordSet, typing.Dict[builtins.str, typing.Any]]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__cfe525788a1ac1dfa4f49c13a70944c31e6abea32b3b28838b4dc0d3bfdca5eb(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__10412963f0c31133bff68bef15d2a13b899bfe89e2899a961be51c53d4abf09f(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__2a5add0a29f5ca15d5f4b4f8354973d35d78a05dfc4a62a55500b51eeadeb1cc(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__c2a753f43e16fc21fdf616ffb86fba3fe07b07bfd2360f25ea08a55034520429(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__714e111378e5458911677545d4f4adc07751fe48a163260e1d2641b56e55ecbf(
    value: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__70e57a74f900620c6af513cefac3cdc71bbb5972fcc7fbd0f9145fde28717331(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfig]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__b85c76ddf4c5c6e183a13d78b7b2f01d70f0f2f8c7fffc91b1ce859ccadd0185(
    *,
    record_set_identifier: builtins.str,
    region: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__dbbb11094f0cd66489ffb4fee11839eba614e685858279d70b1476c9206dc5e5(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    wraps_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__4530b687d057be0f41e30fb1d216ae5532db5cfc9012cc6a0c74a07bd5b74fd9(
    index: jsii.Number,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__d78c46024355cd71b6059dc60b34b208449fbdf53484e4017adba7db7cd7a8bc(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, typing.List[ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfigRecordSet]]],
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__75a6be43f36202c3c5fc78b5c4d651331b947d9ed44c18e5ec62a92b11a88d72(
    terraform_resource: _cdktn_78ede62e.IInterpolatingParent,
    terraform_attribute: builtins.str,
    complex_object_index: jsii.Number,
    complex_object_is_from_set: builtins.bool,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__8fef5f683ef7de079ae5448bddc8aa741381dc5a10cbd323377c3b2cea25bacd(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__fb1358798f588bd24939fad42f68a5a28873cf7728c65e0765d23df45a70789a(
    value: builtins.str,
) -> None:
    """Type checking stubs"""
    pass

def _typecheckingstub__ac7ef95c24f254710a7b42c61ed0da6cdccc68951621e6f526f11f9213df24b7(
    value: typing.Optional[typing.Union[_cdktn_78ede62e.IResolvable, ArcregionswitchPlanWorkflowStepRoute53HealthCheckConfigRecordSet]],
) -> None:
    """Type checking stubs"""
    pass
