"""
Type annotations for elasticbeanstalk service type definitions.

[Open documentation](https://vemel.github.io/boto3_stubs_docs/mypy_boto3_elasticbeanstalk/type_defs.html)

Usage::

    ```python
    from mypy_boto3_elasticbeanstalk.type_defs import AbortEnvironmentUpdateMessageRequestTypeDef

    data: AbortEnvironmentUpdateMessageRequestTypeDef = {...}
    ```
"""
import sys
from datetime import datetime
from typing import Dict, List, Sequence, Union

from typing_extensions import NotRequired

from .literals import (
    ActionHistoryStatusType,
    ActionStatusType,
    ActionTypeType,
    ApplicationVersionStatusType,
    ComputeTypeType,
    ConfigurationDeploymentStatusType,
    ConfigurationOptionValueTypeType,
    EnvironmentHealthAttributeType,
    EnvironmentHealthStatusType,
    EnvironmentHealthType,
    EnvironmentInfoTypeType,
    EnvironmentStatusType,
    EventSeverityType,
    FailureTypeType,
    InstancesHealthAttributeType,
    PlatformStatusType,
    SourceRepositoryType,
    SourceTypeType,
    ValidationSeverityType,
)

if sys.version_info >= (3, 9):
    from typing import TypedDict
else:
    from typing_extensions import TypedDict


__all__ = (
    "AbortEnvironmentUpdateMessageRequestTypeDef",
    "ApplicationDescriptionMessageTypeDef",
    "ApplicationDescriptionTypeDef",
    "ApplicationDescriptionsMessageTypeDef",
    "ApplicationMetricsTypeDef",
    "ApplicationResourceLifecycleConfigTypeDef",
    "ApplicationResourceLifecycleDescriptionMessageTypeDef",
    "ApplicationVersionDescriptionMessageTypeDef",
    "ApplicationVersionDescriptionTypeDef",
    "ApplicationVersionDescriptionsMessageTypeDef",
    "ApplicationVersionLifecycleConfigTypeDef",
    "ApplyEnvironmentManagedActionRequestRequestTypeDef",
    "ApplyEnvironmentManagedActionResultTypeDef",
    "AssociateEnvironmentOperationsRoleMessageRequestTypeDef",
    "AutoScalingGroupTypeDef",
    "BuildConfigurationTypeDef",
    "BuilderTypeDef",
    "CPUUtilizationTypeDef",
    "CheckDNSAvailabilityMessageRequestTypeDef",
    "CheckDNSAvailabilityResultMessageTypeDef",
    "ComposeEnvironmentsMessageRequestTypeDef",
    "ConfigurationOptionDescriptionTypeDef",
    "ConfigurationOptionSettingTypeDef",
    "ConfigurationOptionsDescriptionTypeDef",
    "ConfigurationSettingsDescriptionResponseMetadataTypeDef",
    "ConfigurationSettingsDescriptionTypeDef",
    "ConfigurationSettingsDescriptionsTypeDef",
    "ConfigurationSettingsValidationMessagesTypeDef",
    "CreateApplicationMessageRequestTypeDef",
    "CreateApplicationVersionMessageRequestTypeDef",
    "CreateConfigurationTemplateMessageRequestTypeDef",
    "CreateEnvironmentMessageRequestTypeDef",
    "CreatePlatformVersionRequestRequestTypeDef",
    "CreatePlatformVersionResultTypeDef",
    "CreateStorageLocationResultMessageTypeDef",
    "CustomAmiTypeDef",
    "DeleteApplicationMessageRequestTypeDef",
    "DeleteApplicationVersionMessageRequestTypeDef",
    "DeleteConfigurationTemplateMessageRequestTypeDef",
    "DeleteEnvironmentConfigurationMessageRequestTypeDef",
    "DeletePlatformVersionRequestRequestTypeDef",
    "DeletePlatformVersionResultTypeDef",
    "DeploymentTypeDef",
    "DescribeAccountAttributesResultTypeDef",
    "DescribeApplicationVersionsMessageRequestTypeDef",
    "DescribeApplicationsMessageRequestTypeDef",
    "DescribeConfigurationOptionsMessageRequestTypeDef",
    "DescribeConfigurationSettingsMessageRequestTypeDef",
    "DescribeEnvironmentHealthRequestRequestTypeDef",
    "DescribeEnvironmentHealthResultTypeDef",
    "DescribeEnvironmentManagedActionHistoryRequestRequestTypeDef",
    "DescribeEnvironmentManagedActionHistoryResultTypeDef",
    "DescribeEnvironmentManagedActionsRequestRequestTypeDef",
    "DescribeEnvironmentManagedActionsResultTypeDef",
    "DescribeEnvironmentResourcesMessageRequestTypeDef",
    "DescribeEnvironmentsMessageRequestTypeDef",
    "DescribeEventsMessageRequestTypeDef",
    "DescribeInstancesHealthRequestRequestTypeDef",
    "DescribeInstancesHealthResultTypeDef",
    "DescribePlatformVersionRequestRequestTypeDef",
    "DescribePlatformVersionResultTypeDef",
    "DisassociateEnvironmentOperationsRoleMessageRequestTypeDef",
    "EnvironmentDescriptionResponseMetadataTypeDef",
    "EnvironmentDescriptionTypeDef",
    "EnvironmentDescriptionsMessageTypeDef",
    "EnvironmentInfoDescriptionTypeDef",
    "EnvironmentLinkTypeDef",
    "EnvironmentResourceDescriptionTypeDef",
    "EnvironmentResourceDescriptionsMessageTypeDef",
    "EnvironmentResourcesDescriptionTypeDef",
    "EnvironmentTierTypeDef",
    "EventDescriptionTypeDef",
    "EventDescriptionsMessageTypeDef",
    "InstanceHealthSummaryTypeDef",
    "InstanceTypeDef",
    "LatencyTypeDef",
    "LaunchConfigurationTypeDef",
    "LaunchTemplateTypeDef",
    "ListAvailableSolutionStacksResultMessageTypeDef",
    "ListPlatformBranchesRequestRequestTypeDef",
    "ListPlatformBranchesResultTypeDef",
    "ListPlatformVersionsRequestRequestTypeDef",
    "ListPlatformVersionsResultTypeDef",
    "ListTagsForResourceMessageRequestTypeDef",
    "ListenerTypeDef",
    "LoadBalancerDescriptionTypeDef",
    "LoadBalancerTypeDef",
    "ManagedActionHistoryItemTypeDef",
    "ManagedActionTypeDef",
    "MaxAgeRuleTypeDef",
    "MaxCountRuleTypeDef",
    "OptionRestrictionRegexTypeDef",
    "OptionSpecificationTypeDef",
    "PaginatorConfigTypeDef",
    "PlatformBranchSummaryTypeDef",
    "PlatformDescriptionTypeDef",
    "PlatformFilterTypeDef",
    "PlatformFrameworkTypeDef",
    "PlatformProgrammingLanguageTypeDef",
    "PlatformSummaryTypeDef",
    "QueueTypeDef",
    "RebuildEnvironmentMessageRequestTypeDef",
    "RequestEnvironmentInfoMessageRequestTypeDef",
    "ResourceQuotaTypeDef",
    "ResourceQuotasTypeDef",
    "ResourceTagsDescriptionMessageTypeDef",
    "ResponseMetadataTypeDef",
    "RestartAppServerMessageRequestTypeDef",
    "RetrieveEnvironmentInfoMessageRequestTypeDef",
    "RetrieveEnvironmentInfoResultMessageTypeDef",
    "S3LocationTypeDef",
    "SearchFilterTypeDef",
    "SingleInstanceHealthTypeDef",
    "SolutionStackDescriptionTypeDef",
    "SourceBuildInformationTypeDef",
    "SourceConfigurationTypeDef",
    "StatusCodesTypeDef",
    "SwapEnvironmentCNAMEsMessageRequestTypeDef",
    "SystemStatusTypeDef",
    "TagTypeDef",
    "TerminateEnvironmentMessageRequestTypeDef",
    "TriggerTypeDef",
    "UpdateApplicationMessageRequestTypeDef",
    "UpdateApplicationResourceLifecycleMessageRequestTypeDef",
    "UpdateApplicationVersionMessageRequestTypeDef",
    "UpdateConfigurationTemplateMessageRequestTypeDef",
    "UpdateEnvironmentMessageRequestTypeDef",
    "UpdateTagsForResourceMessageRequestTypeDef",
    "ValidateConfigurationSettingsMessageRequestTypeDef",
    "ValidationMessageTypeDef",
    "WaiterConfigTypeDef",
)

AbortEnvironmentUpdateMessageRequestTypeDef = TypedDict(
    "AbortEnvironmentUpdateMessageRequestTypeDef",
    {
        "EnvironmentId": NotRequired[str],
        "EnvironmentName": NotRequired[str],
    },
)

ApplicationDescriptionMessageTypeDef = TypedDict(
    "ApplicationDescriptionMessageTypeDef",
    {
        "Application": "ApplicationDescriptionTypeDef",
        "ResponseMetadata": "ResponseMetadataTypeDef",
    },
)

ApplicationDescriptionTypeDef = TypedDict(
    "ApplicationDescriptionTypeDef",
    {
        "ApplicationArn": NotRequired[str],
        "ApplicationName": NotRequired[str],
        "Description": NotRequired[str],
        "DateCreated": NotRequired[datetime],
        "DateUpdated": NotRequired[datetime],
        "Versions": NotRequired[List[str]],
        "ConfigurationTemplates": NotRequired[List[str]],
        "ResourceLifecycleConfig": NotRequired["ApplicationResourceLifecycleConfigTypeDef"],
    },
)

ApplicationDescriptionsMessageTypeDef = TypedDict(
    "ApplicationDescriptionsMessageTypeDef",
    {
        "Applications": List["ApplicationDescriptionTypeDef"],
        "ResponseMetadata": "ResponseMetadataTypeDef",
    },
)

ApplicationMetricsTypeDef = TypedDict(
    "ApplicationMetricsTypeDef",
    {
        "Duration": NotRequired[int],
        "RequestCount": NotRequired[int],
        "StatusCodes": NotRequired["StatusCodesTypeDef"],
        "Latency": NotRequired["LatencyTypeDef"],
    },
)

ApplicationResourceLifecycleConfigTypeDef = TypedDict(
    "ApplicationResourceLifecycleConfigTypeDef",
    {
        "ServiceRole": NotRequired[str],
        "VersionLifecycleConfig": NotRequired["ApplicationVersionLifecycleConfigTypeDef"],
    },
)

ApplicationResourceLifecycleDescriptionMessageTypeDef = TypedDict(
    "ApplicationResourceLifecycleDescriptionMessageTypeDef",
    {
        "ApplicationName": str,
        "ResourceLifecycleConfig": "ApplicationResourceLifecycleConfigTypeDef",
        "ResponseMetadata": "ResponseMetadataTypeDef",
    },
)

ApplicationVersionDescriptionMessageTypeDef = TypedDict(
    "ApplicationVersionDescriptionMessageTypeDef",
    {
        "ApplicationVersion": "ApplicationVersionDescriptionTypeDef",
        "ResponseMetadata": "ResponseMetadataTypeDef",
    },
)

ApplicationVersionDescriptionTypeDef = TypedDict(
    "ApplicationVersionDescriptionTypeDef",
    {
        "ApplicationVersionArn": NotRequired[str],
        "ApplicationName": NotRequired[str],
        "Description": NotRequired[str],
        "VersionLabel": NotRequired[str],
        "SourceBuildInformation": NotRequired["SourceBuildInformationTypeDef"],
        "BuildArn": NotRequired[str],
        "SourceBundle": NotRequired["S3LocationTypeDef"],
        "DateCreated": NotRequired[datetime],
        "DateUpdated": NotRequired[datetime],
        "Status": NotRequired[ApplicationVersionStatusType],
    },
)

ApplicationVersionDescriptionsMessageTypeDef = TypedDict(
    "ApplicationVersionDescriptionsMessageTypeDef",
    {
        "ApplicationVersions": List["ApplicationVersionDescriptionTypeDef"],
        "NextToken": str,
        "ResponseMetadata": "ResponseMetadataTypeDef",
    },
)

ApplicationVersionLifecycleConfigTypeDef = TypedDict(
    "ApplicationVersionLifecycleConfigTypeDef",
    {
        "MaxCountRule": NotRequired["MaxCountRuleTypeDef"],
        "MaxAgeRule": NotRequired["MaxAgeRuleTypeDef"],
    },
)

ApplyEnvironmentManagedActionRequestRequestTypeDef = TypedDict(
    "ApplyEnvironmentManagedActionRequestRequestTypeDef",
    {
        "ActionId": str,
        "EnvironmentName": NotRequired[str],
        "EnvironmentId": NotRequired[str],
    },
)

ApplyEnvironmentManagedActionResultTypeDef = TypedDict(
    "ApplyEnvironmentManagedActionResultTypeDef",
    {
        "ActionId": str,
        "ActionDescription": str,
        "ActionType": ActionTypeType,
        "Status": str,
        "ResponseMetadata": "ResponseMetadataTypeDef",
    },
)

AssociateEnvironmentOperationsRoleMessageRequestTypeDef = TypedDict(
    "AssociateEnvironmentOperationsRoleMessageRequestTypeDef",
    {
        "EnvironmentName": str,
        "OperationsRole": str,
    },
)

AutoScalingGroupTypeDef = TypedDict(
    "AutoScalingGroupTypeDef",
    {
        "Name": NotRequired[str],
    },
)

BuildConfigurationTypeDef = TypedDict(
    "BuildConfigurationTypeDef",
    {
        "CodeBuildServiceRole": str,
        "Image": str,
        "ArtifactName": NotRequired[str],
        "ComputeType": NotRequired[ComputeTypeType],
        "TimeoutInMinutes": NotRequired[int],
    },
)

BuilderTypeDef = TypedDict(
    "BuilderTypeDef",
    {
        "ARN": NotRequired[str],
    },
)

CPUUtilizationTypeDef = TypedDict(
    "CPUUtilizationTypeDef",
    {
        "User": NotRequired[float],
        "Nice": NotRequired[float],
        "System": NotRequired[float],
        "Idle": NotRequired[float],
        "IOWait": NotRequired[float],
        "IRQ": NotRequired[float],
        "SoftIRQ": NotRequired[float],
        "Privileged": NotRequired[float],
    },
)

CheckDNSAvailabilityMessageRequestTypeDef = TypedDict(
    "CheckDNSAvailabilityMessageRequestTypeDef",
    {
        "CNAMEPrefix": str,
    },
)

CheckDNSAvailabilityResultMessageTypeDef = TypedDict(
    "CheckDNSAvailabilityResultMessageTypeDef",
    {
        "Available": bool,
        "FullyQualifiedCNAME": str,
        "ResponseMetadata": "ResponseMetadataTypeDef",
    },
)

ComposeEnvironmentsMessageRequestTypeDef = TypedDict(
    "ComposeEnvironmentsMessageRequestTypeDef",
    {
        "ApplicationName": NotRequired[str],
        "GroupName": NotRequired[str],
        "VersionLabels": NotRequired[Sequence[str]],
    },
)

ConfigurationOptionDescriptionTypeDef = TypedDict(
    "ConfigurationOptionDescriptionTypeDef",
    {
        "Namespace": NotRequired[str],
        "Name": NotRequired[str],
        "DefaultValue": NotRequired[str],
        "ChangeSeverity": NotRequired[str],
        "UserDefined": NotRequired[bool],
        "ValueType": NotRequired[ConfigurationOptionValueTypeType],
        "ValueOptions": NotRequired[List[str]],
        "MinValue": NotRequired[int],
        "MaxValue": NotRequired[int],
        "MaxLength": NotRequired[int],
        "Regex": NotRequired["OptionRestrictionRegexTypeDef"],
    },
)

ConfigurationOptionSettingTypeDef = TypedDict(
    "ConfigurationOptionSettingTypeDef",
    {
        "ResourceName": NotRequired[str],
        "Namespace": NotRequired[str],
        "OptionName": NotRequired[str],
        "Value": NotRequired[str],
    },
)

ConfigurationOptionsDescriptionTypeDef = TypedDict(
    "ConfigurationOptionsDescriptionTypeDef",
    {
        "SolutionStackName": str,
        "PlatformArn": str,
        "Options": List["ConfigurationOptionDescriptionTypeDef"],
        "ResponseMetadata": "ResponseMetadataTypeDef",
    },
)

ConfigurationSettingsDescriptionResponseMetadataTypeDef = TypedDict(
    "ConfigurationSettingsDescriptionResponseMetadataTypeDef",
    {
        "SolutionStackName": str,
        "PlatformArn": str,
        "ApplicationName": str,
        "TemplateName": str,
        "Description": str,
        "EnvironmentName": str,
        "DeploymentStatus": ConfigurationDeploymentStatusType,
        "DateCreated": datetime,
        "DateUpdated": datetime,
        "OptionSettings": List["ConfigurationOptionSettingTypeDef"],
        "ResponseMetadata": "ResponseMetadataTypeDef",
    },
)

ConfigurationSettingsDescriptionTypeDef = TypedDict(
    "ConfigurationSettingsDescriptionTypeDef",
    {
        "SolutionStackName": NotRequired[str],
        "PlatformArn": NotRequired[str],
        "ApplicationName": NotRequired[str],
        "TemplateName": NotRequired[str],
        "Description": NotRequired[str],
        "EnvironmentName": NotRequired[str],
        "DeploymentStatus": NotRequired[ConfigurationDeploymentStatusType],
        "DateCreated": NotRequired[datetime],
        "DateUpdated": NotRequired[datetime],
        "OptionSettings": NotRequired[List["ConfigurationOptionSettingTypeDef"]],
    },
)

ConfigurationSettingsDescriptionsTypeDef = TypedDict(
    "ConfigurationSettingsDescriptionsTypeDef",
    {
        "ConfigurationSettings": List["ConfigurationSettingsDescriptionTypeDef"],
        "ResponseMetadata": "ResponseMetadataTypeDef",
    },
)

ConfigurationSettingsValidationMessagesTypeDef = TypedDict(
    "ConfigurationSettingsValidationMessagesTypeDef",
    {
        "Messages": List["ValidationMessageTypeDef"],
        "ResponseMetadata": "ResponseMetadataTypeDef",
    },
)

CreateApplicationMessageRequestTypeDef = TypedDict(
    "CreateApplicationMessageRequestTypeDef",
    {
        "ApplicationName": str,
        "Description": NotRequired[str],
        "ResourceLifecycleConfig": NotRequired["ApplicationResourceLifecycleConfigTypeDef"],
        "Tags": NotRequired[Sequence["TagTypeDef"]],
    },
)

CreateApplicationVersionMessageRequestTypeDef = TypedDict(
    "CreateApplicationVersionMessageRequestTypeDef",
    {
        "ApplicationName": str,
        "VersionLabel": str,
        "Description": NotRequired[str],
        "SourceBuildInformation": NotRequired["SourceBuildInformationTypeDef"],
        "SourceBundle": NotRequired["S3LocationTypeDef"],
        "BuildConfiguration": NotRequired["BuildConfigurationTypeDef"],
        "AutoCreateApplication": NotRequired[bool],
        "Process": NotRequired[bool],
        "Tags": NotRequired[Sequence["TagTypeDef"]],
    },
)

CreateConfigurationTemplateMessageRequestTypeDef = TypedDict(
    "CreateConfigurationTemplateMessageRequestTypeDef",
    {
        "ApplicationName": str,
        "TemplateName": str,
        "SolutionStackName": NotRequired[str],
        "PlatformArn": NotRequired[str],
        "SourceConfiguration": NotRequired["SourceConfigurationTypeDef"],
        "EnvironmentId": NotRequired[str],
        "Description": NotRequired[str],
        "OptionSettings": NotRequired[Sequence["ConfigurationOptionSettingTypeDef"]],
        "Tags": NotRequired[Sequence["TagTypeDef"]],
    },
)

CreateEnvironmentMessageRequestTypeDef = TypedDict(
    "CreateEnvironmentMessageRequestTypeDef",
    {
        "ApplicationName": str,
        "EnvironmentName": NotRequired[str],
        "GroupName": NotRequired[str],
        "Description": NotRequired[str],
        "CNAMEPrefix": NotRequired[str],
        "Tier": NotRequired["EnvironmentTierTypeDef"],
        "Tags": NotRequired[Sequence["TagTypeDef"]],
        "VersionLabel": NotRequired[str],
        "TemplateName": NotRequired[str],
        "SolutionStackName": NotRequired[str],
        "PlatformArn": NotRequired[str],
        "OptionSettings": NotRequired[Sequence["ConfigurationOptionSettingTypeDef"]],
        "OptionsToRemove": NotRequired[Sequence["OptionSpecificationTypeDef"]],
        "OperationsRole": NotRequired[str],
    },
)

CreatePlatformVersionRequestRequestTypeDef = TypedDict(
    "CreatePlatformVersionRequestRequestTypeDef",
    {
        "PlatformName": str,
        "PlatformVersion": str,
        "PlatformDefinitionBundle": "S3LocationTypeDef",
        "EnvironmentName": NotRequired[str],
        "OptionSettings": NotRequired[Sequence["ConfigurationOptionSettingTypeDef"]],
        "Tags": NotRequired[Sequence["TagTypeDef"]],
    },
)

CreatePlatformVersionResultTypeDef = TypedDict(
    "CreatePlatformVersionResultTypeDef",
    {
        "PlatformSummary": "PlatformSummaryTypeDef",
        "Builder": "BuilderTypeDef",
        "ResponseMetadata": "ResponseMetadataTypeDef",
    },
)

CreateStorageLocationResultMessageTypeDef = TypedDict(
    "CreateStorageLocationResultMessageTypeDef",
    {
        "S3Bucket": str,
        "ResponseMetadata": "ResponseMetadataTypeDef",
    },
)

CustomAmiTypeDef = TypedDict(
    "CustomAmiTypeDef",
    {
        "VirtualizationType": NotRequired[str],
        "ImageId": NotRequired[str],
    },
)

DeleteApplicationMessageRequestTypeDef = TypedDict(
    "DeleteApplicationMessageRequestTypeDef",
    {
        "ApplicationName": str,
        "TerminateEnvByForce": NotRequired[bool],
    },
)

DeleteApplicationVersionMessageRequestTypeDef = TypedDict(
    "DeleteApplicationVersionMessageRequestTypeDef",
    {
        "ApplicationName": str,
        "VersionLabel": str,
        "DeleteSourceBundle": NotRequired[bool],
    },
)

DeleteConfigurationTemplateMessageRequestTypeDef = TypedDict(
    "DeleteConfigurationTemplateMessageRequestTypeDef",
    {
        "ApplicationName": str,
        "TemplateName": str,
    },
)

DeleteEnvironmentConfigurationMessageRequestTypeDef = TypedDict(
    "DeleteEnvironmentConfigurationMessageRequestTypeDef",
    {
        "ApplicationName": str,
        "EnvironmentName": str,
    },
)

DeletePlatformVersionRequestRequestTypeDef = TypedDict(
    "DeletePlatformVersionRequestRequestTypeDef",
    {
        "PlatformArn": NotRequired[str],
    },
)

DeletePlatformVersionResultTypeDef = TypedDict(
    "DeletePlatformVersionResultTypeDef",
    {
        "PlatformSummary": "PlatformSummaryTypeDef",
        "ResponseMetadata": "ResponseMetadataTypeDef",
    },
)

DeploymentTypeDef = TypedDict(
    "DeploymentTypeDef",
    {
        "VersionLabel": NotRequired[str],
        "DeploymentId": NotRequired[int],
        "Status": NotRequired[str],
        "DeploymentTime": NotRequired[datetime],
    },
)

DescribeAccountAttributesResultTypeDef = TypedDict(
    "DescribeAccountAttributesResultTypeDef",
    {
        "ResourceQuotas": "ResourceQuotasTypeDef",
        "ResponseMetadata": "ResponseMetadataTypeDef",
    },
)

DescribeApplicationVersionsMessageRequestTypeDef = TypedDict(
    "DescribeApplicationVersionsMessageRequestTypeDef",
    {
        "ApplicationName": NotRequired[str],
        "VersionLabels": NotRequired[Sequence[str]],
        "MaxRecords": NotRequired[int],
        "NextToken": NotRequired[str],
    },
)

DescribeApplicationsMessageRequestTypeDef = TypedDict(
    "DescribeApplicationsMessageRequestTypeDef",
    {
        "ApplicationNames": NotRequired[Sequence[str]],
    },
)

DescribeConfigurationOptionsMessageRequestTypeDef = TypedDict(
    "DescribeConfigurationOptionsMessageRequestTypeDef",
    {
        "ApplicationName": NotRequired[str],
        "TemplateName": NotRequired[str],
        "EnvironmentName": NotRequired[str],
        "SolutionStackName": NotRequired[str],
        "PlatformArn": NotRequired[str],
        "Options": NotRequired[Sequence["OptionSpecificationTypeDef"]],
    },
)

DescribeConfigurationSettingsMessageRequestTypeDef = TypedDict(
    "DescribeConfigurationSettingsMessageRequestTypeDef",
    {
        "ApplicationName": str,
        "TemplateName": NotRequired[str],
        "EnvironmentName": NotRequired[str],
    },
)

DescribeEnvironmentHealthRequestRequestTypeDef = TypedDict(
    "DescribeEnvironmentHealthRequestRequestTypeDef",
    {
        "EnvironmentName": NotRequired[str],
        "EnvironmentId": NotRequired[str],
        "AttributeNames": NotRequired[Sequence[EnvironmentHealthAttributeType]],
    },
)

DescribeEnvironmentHealthResultTypeDef = TypedDict(
    "DescribeEnvironmentHealthResultTypeDef",
    {
        "EnvironmentName": str,
        "HealthStatus": str,
        "Status": EnvironmentHealthType,
        "Color": str,
        "Causes": List[str],
        "ApplicationMetrics": "ApplicationMetricsTypeDef",
        "InstancesHealth": "InstanceHealthSummaryTypeDef",
        "RefreshedAt": datetime,
        "ResponseMetadata": "ResponseMetadataTypeDef",
    },
)

DescribeEnvironmentManagedActionHistoryRequestRequestTypeDef = TypedDict(
    "DescribeEnvironmentManagedActionHistoryRequestRequestTypeDef",
    {
        "EnvironmentId": NotRequired[str],
        "EnvironmentName": NotRequired[str],
        "NextToken": NotRequired[str],
        "MaxItems": NotRequired[int],
    },
)

DescribeEnvironmentManagedActionHistoryResultTypeDef = TypedDict(
    "DescribeEnvironmentManagedActionHistoryResultTypeDef",
    {
        "ManagedActionHistoryItems": List["ManagedActionHistoryItemTypeDef"],
        "NextToken": str,
        "ResponseMetadata": "ResponseMetadataTypeDef",
    },
)

DescribeEnvironmentManagedActionsRequestRequestTypeDef = TypedDict(
    "DescribeEnvironmentManagedActionsRequestRequestTypeDef",
    {
        "EnvironmentName": NotRequired[str],
        "EnvironmentId": NotRequired[str],
        "Status": NotRequired[ActionStatusType],
    },
)

DescribeEnvironmentManagedActionsResultTypeDef = TypedDict(
    "DescribeEnvironmentManagedActionsResultTypeDef",
    {
        "ManagedActions": List["ManagedActionTypeDef"],
        "ResponseMetadata": "ResponseMetadataTypeDef",
    },
)

DescribeEnvironmentResourcesMessageRequestTypeDef = TypedDict(
    "DescribeEnvironmentResourcesMessageRequestTypeDef",
    {
        "EnvironmentId": NotRequired[str],
        "EnvironmentName": NotRequired[str],
    },
)

DescribeEnvironmentsMessageRequestTypeDef = TypedDict(
    "DescribeEnvironmentsMessageRequestTypeDef",
    {
        "ApplicationName": NotRequired[str],
        "VersionLabel": NotRequired[str],
        "EnvironmentIds": NotRequired[Sequence[str]],
        "EnvironmentNames": NotRequired[Sequence[str]],
        "IncludeDeleted": NotRequired[bool],
        "IncludedDeletedBackTo": NotRequired[Union[datetime, str]],
        "MaxRecords": NotRequired[int],
        "NextToken": NotRequired[str],
    },
)

DescribeEventsMessageRequestTypeDef = TypedDict(
    "DescribeEventsMessageRequestTypeDef",
    {
        "ApplicationName": NotRequired[str],
        "VersionLabel": NotRequired[str],
        "TemplateName": NotRequired[str],
        "EnvironmentId": NotRequired[str],
        "EnvironmentName": NotRequired[str],
        "PlatformArn": NotRequired[str],
        "RequestId": NotRequired[str],
        "Severity": NotRequired[EventSeverityType],
        "StartTime": NotRequired[Union[datetime, str]],
        "EndTime": NotRequired[Union[datetime, str]],
        "MaxRecords": NotRequired[int],
        "NextToken": NotRequired[str],
    },
)

DescribeInstancesHealthRequestRequestTypeDef = TypedDict(
    "DescribeInstancesHealthRequestRequestTypeDef",
    {
        "EnvironmentName": NotRequired[str],
        "EnvironmentId": NotRequired[str],
        "AttributeNames": NotRequired[Sequence[InstancesHealthAttributeType]],
        "NextToken": NotRequired[str],
    },
)

DescribeInstancesHealthResultTypeDef = TypedDict(
    "DescribeInstancesHealthResultTypeDef",
    {
        "InstanceHealthList": List["SingleInstanceHealthTypeDef"],
        "RefreshedAt": datetime,
        "NextToken": str,
        "ResponseMetadata": "ResponseMetadataTypeDef",
    },
)

DescribePlatformVersionRequestRequestTypeDef = TypedDict(
    "DescribePlatformVersionRequestRequestTypeDef",
    {
        "PlatformArn": NotRequired[str],
    },
)

DescribePlatformVersionResultTypeDef = TypedDict(
    "DescribePlatformVersionResultTypeDef",
    {
        "PlatformDescription": "PlatformDescriptionTypeDef",
        "ResponseMetadata": "ResponseMetadataTypeDef",
    },
)

DisassociateEnvironmentOperationsRoleMessageRequestTypeDef = TypedDict(
    "DisassociateEnvironmentOperationsRoleMessageRequestTypeDef",
    {
        "EnvironmentName": str,
    },
)

EnvironmentDescriptionResponseMetadataTypeDef = TypedDict(
    "EnvironmentDescriptionResponseMetadataTypeDef",
    {
        "EnvironmentName": str,
        "EnvironmentId": str,
        "ApplicationName": str,
        "VersionLabel": str,
        "SolutionStackName": str,
        "PlatformArn": str,
        "TemplateName": str,
        "Description": str,
        "EndpointURL": str,
        "CNAME": str,
        "DateCreated": datetime,
        "DateUpdated": datetime,
        "Status": EnvironmentStatusType,
        "AbortableOperationInProgress": bool,
        "Health": EnvironmentHealthType,
        "HealthStatus": EnvironmentHealthStatusType,
        "Resources": "EnvironmentResourcesDescriptionTypeDef",
        "Tier": "EnvironmentTierTypeDef",
        "EnvironmentLinks": List["EnvironmentLinkTypeDef"],
        "EnvironmentArn": str,
        "OperationsRole": str,
        "ResponseMetadata": "ResponseMetadataTypeDef",
    },
)

EnvironmentDescriptionTypeDef = TypedDict(
    "EnvironmentDescriptionTypeDef",
    {
        "EnvironmentName": NotRequired[str],
        "EnvironmentId": NotRequired[str],
        "ApplicationName": NotRequired[str],
        "VersionLabel": NotRequired[str],
        "SolutionStackName": NotRequired[str],
        "PlatformArn": NotRequired[str],
        "TemplateName": NotRequired[str],
        "Description": NotRequired[str],
        "EndpointURL": NotRequired[str],
        "CNAME": NotRequired[str],
        "DateCreated": NotRequired[datetime],
        "DateUpdated": NotRequired[datetime],
        "Status": NotRequired[EnvironmentStatusType],
        "AbortableOperationInProgress": NotRequired[bool],
        "Health": NotRequired[EnvironmentHealthType],
        "HealthStatus": NotRequired[EnvironmentHealthStatusType],
        "Resources": NotRequired["EnvironmentResourcesDescriptionTypeDef"],
        "Tier": NotRequired["EnvironmentTierTypeDef"],
        "EnvironmentLinks": NotRequired[List["EnvironmentLinkTypeDef"]],
        "EnvironmentArn": NotRequired[str],
        "OperationsRole": NotRequired[str],
    },
)

EnvironmentDescriptionsMessageTypeDef = TypedDict(
    "EnvironmentDescriptionsMessageTypeDef",
    {
        "Environments": List["EnvironmentDescriptionTypeDef"],
        "NextToken": str,
        "ResponseMetadata": "ResponseMetadataTypeDef",
    },
)

EnvironmentInfoDescriptionTypeDef = TypedDict(
    "EnvironmentInfoDescriptionTypeDef",
    {
        "InfoType": NotRequired[EnvironmentInfoTypeType],
        "Ec2InstanceId": NotRequired[str],
        "SampleTimestamp": NotRequired[datetime],
        "Message": NotRequired[str],
    },
)

EnvironmentLinkTypeDef = TypedDict(
    "EnvironmentLinkTypeDef",
    {
        "LinkName": NotRequired[str],
        "EnvironmentName": NotRequired[str],
    },
)

EnvironmentResourceDescriptionTypeDef = TypedDict(
    "EnvironmentResourceDescriptionTypeDef",
    {
        "EnvironmentName": NotRequired[str],
        "AutoScalingGroups": NotRequired[List["AutoScalingGroupTypeDef"]],
        "Instances": NotRequired[List["InstanceTypeDef"]],
        "LaunchConfigurations": NotRequired[List["LaunchConfigurationTypeDef"]],
        "LaunchTemplates": NotRequired[List["LaunchTemplateTypeDef"]],
        "LoadBalancers": NotRequired[List["LoadBalancerTypeDef"]],
        "Triggers": NotRequired[List["TriggerTypeDef"]],
        "Queues": NotRequired[List["QueueTypeDef"]],
    },
)

EnvironmentResourceDescriptionsMessageTypeDef = TypedDict(
    "EnvironmentResourceDescriptionsMessageTypeDef",
    {
        "EnvironmentResources": "EnvironmentResourceDescriptionTypeDef",
        "ResponseMetadata": "ResponseMetadataTypeDef",
    },
)

EnvironmentResourcesDescriptionTypeDef = TypedDict(
    "EnvironmentResourcesDescriptionTypeDef",
    {
        "LoadBalancer": NotRequired["LoadBalancerDescriptionTypeDef"],
    },
)

EnvironmentTierTypeDef = TypedDict(
    "EnvironmentTierTypeDef",
    {
        "Name": NotRequired[str],
        "Type": NotRequired[str],
        "Version": NotRequired[str],
    },
)

EventDescriptionTypeDef = TypedDict(
    "EventDescriptionTypeDef",
    {
        "EventDate": NotRequired[datetime],
        "Message": NotRequired[str],
        "ApplicationName": NotRequired[str],
        "VersionLabel": NotRequired[str],
        "TemplateName": NotRequired[str],
        "EnvironmentName": NotRequired[str],
        "PlatformArn": NotRequired[str],
        "RequestId": NotRequired[str],
        "Severity": NotRequired[EventSeverityType],
    },
)

EventDescriptionsMessageTypeDef = TypedDict(
    "EventDescriptionsMessageTypeDef",
    {
        "Events": List["EventDescriptionTypeDef"],
        "NextToken": str,
        "ResponseMetadata": "ResponseMetadataTypeDef",
    },
)

InstanceHealthSummaryTypeDef = TypedDict(
    "InstanceHealthSummaryTypeDef",
    {
        "NoData": NotRequired[int],
        "Unknown": NotRequired[int],
        "Pending": NotRequired[int],
        "Ok": NotRequired[int],
        "Info": NotRequired[int],
        "Warning": NotRequired[int],
        "Degraded": NotRequired[int],
        "Severe": NotRequired[int],
    },
)

InstanceTypeDef = TypedDict(
    "InstanceTypeDef",
    {
        "Id": NotRequired[str],
    },
)

LatencyTypeDef = TypedDict(
    "LatencyTypeDef",
    {
        "P999": NotRequired[float],
        "P99": NotRequired[float],
        "P95": NotRequired[float],
        "P90": NotRequired[float],
        "P85": NotRequired[float],
        "P75": NotRequired[float],
        "P50": NotRequired[float],
        "P10": NotRequired[float],
    },
)

LaunchConfigurationTypeDef = TypedDict(
    "LaunchConfigurationTypeDef",
    {
        "Name": NotRequired[str],
    },
)

LaunchTemplateTypeDef = TypedDict(
    "LaunchTemplateTypeDef",
    {
        "Id": NotRequired[str],
    },
)

ListAvailableSolutionStacksResultMessageTypeDef = TypedDict(
    "ListAvailableSolutionStacksResultMessageTypeDef",
    {
        "SolutionStacks": List[str],
        "SolutionStackDetails": List["SolutionStackDescriptionTypeDef"],
        "ResponseMetadata": "ResponseMetadataTypeDef",
    },
)

ListPlatformBranchesRequestRequestTypeDef = TypedDict(
    "ListPlatformBranchesRequestRequestTypeDef",
    {
        "Filters": NotRequired[Sequence["SearchFilterTypeDef"]],
        "MaxRecords": NotRequired[int],
        "NextToken": NotRequired[str],
    },
)

ListPlatformBranchesResultTypeDef = TypedDict(
    "ListPlatformBranchesResultTypeDef",
    {
        "PlatformBranchSummaryList": List["PlatformBranchSummaryTypeDef"],
        "NextToken": str,
        "ResponseMetadata": "ResponseMetadataTypeDef",
    },
)

ListPlatformVersionsRequestRequestTypeDef = TypedDict(
    "ListPlatformVersionsRequestRequestTypeDef",
    {
        "Filters": NotRequired[Sequence["PlatformFilterTypeDef"]],
        "MaxRecords": NotRequired[int],
        "NextToken": NotRequired[str],
    },
)

ListPlatformVersionsResultTypeDef = TypedDict(
    "ListPlatformVersionsResultTypeDef",
    {
        "PlatformSummaryList": List["PlatformSummaryTypeDef"],
        "NextToken": str,
        "ResponseMetadata": "ResponseMetadataTypeDef",
    },
)

ListTagsForResourceMessageRequestTypeDef = TypedDict(
    "ListTagsForResourceMessageRequestTypeDef",
    {
        "ResourceArn": str,
    },
)

ListenerTypeDef = TypedDict(
    "ListenerTypeDef",
    {
        "Protocol": NotRequired[str],
        "Port": NotRequired[int],
    },
)

LoadBalancerDescriptionTypeDef = TypedDict(
    "LoadBalancerDescriptionTypeDef",
    {
        "LoadBalancerName": NotRequired[str],
        "Domain": NotRequired[str],
        "Listeners": NotRequired[List["ListenerTypeDef"]],
    },
)

LoadBalancerTypeDef = TypedDict(
    "LoadBalancerTypeDef",
    {
        "Name": NotRequired[str],
    },
)

ManagedActionHistoryItemTypeDef = TypedDict(
    "ManagedActionHistoryItemTypeDef",
    {
        "ActionId": NotRequired[str],
        "ActionType": NotRequired[ActionTypeType],
        "ActionDescription": NotRequired[str],
        "FailureType": NotRequired[FailureTypeType],
        "Status": NotRequired[ActionHistoryStatusType],
        "FailureDescription": NotRequired[str],
        "ExecutedTime": NotRequired[datetime],
        "FinishedTime": NotRequired[datetime],
    },
)

ManagedActionTypeDef = TypedDict(
    "ManagedActionTypeDef",
    {
        "ActionId": NotRequired[str],
        "ActionDescription": NotRequired[str],
        "ActionType": NotRequired[ActionTypeType],
        "Status": NotRequired[ActionStatusType],
        "WindowStartTime": NotRequired[datetime],
    },
)

MaxAgeRuleTypeDef = TypedDict(
    "MaxAgeRuleTypeDef",
    {
        "Enabled": bool,
        "MaxAgeInDays": NotRequired[int],
        "DeleteSourceFromS3": NotRequired[bool],
    },
)

MaxCountRuleTypeDef = TypedDict(
    "MaxCountRuleTypeDef",
    {
        "Enabled": bool,
        "MaxCount": NotRequired[int],
        "DeleteSourceFromS3": NotRequired[bool],
    },
)

OptionRestrictionRegexTypeDef = TypedDict(
    "OptionRestrictionRegexTypeDef",
    {
        "Pattern": NotRequired[str],
        "Label": NotRequired[str],
    },
)

OptionSpecificationTypeDef = TypedDict(
    "OptionSpecificationTypeDef",
    {
        "ResourceName": NotRequired[str],
        "Namespace": NotRequired[str],
        "OptionName": NotRequired[str],
    },
)

PaginatorConfigTypeDef = TypedDict(
    "PaginatorConfigTypeDef",
    {
        "MaxItems": NotRequired[int],
        "PageSize": NotRequired[int],
        "StartingToken": NotRequired[str],
    },
)

PlatformBranchSummaryTypeDef = TypedDict(
    "PlatformBranchSummaryTypeDef",
    {
        "PlatformName": NotRequired[str],
        "BranchName": NotRequired[str],
        "LifecycleState": NotRequired[str],
        "BranchOrder": NotRequired[int],
        "SupportedTierList": NotRequired[List[str]],
    },
)

PlatformDescriptionTypeDef = TypedDict(
    "PlatformDescriptionTypeDef",
    {
        "PlatformArn": NotRequired[str],
        "PlatformOwner": NotRequired[str],
        "PlatformName": NotRequired[str],
        "PlatformVersion": NotRequired[str],
        "SolutionStackName": NotRequired[str],
        "PlatformStatus": NotRequired[PlatformStatusType],
        "DateCreated": NotRequired[datetime],
        "DateUpdated": NotRequired[datetime],
        "PlatformCategory": NotRequired[str],
        "Description": NotRequired[str],
        "Maintainer": NotRequired[str],
        "OperatingSystemName": NotRequired[str],
        "OperatingSystemVersion": NotRequired[str],
        "ProgrammingLanguages": NotRequired[List["PlatformProgrammingLanguageTypeDef"]],
        "Frameworks": NotRequired[List["PlatformFrameworkTypeDef"]],
        "CustomAmiList": NotRequired[List["CustomAmiTypeDef"]],
        "SupportedTierList": NotRequired[List[str]],
        "SupportedAddonList": NotRequired[List[str]],
        "PlatformLifecycleState": NotRequired[str],
        "PlatformBranchName": NotRequired[str],
        "PlatformBranchLifecycleState": NotRequired[str],
    },
)

PlatformFilterTypeDef = TypedDict(
    "PlatformFilterTypeDef",
    {
        "Type": NotRequired[str],
        "Operator": NotRequired[str],
        "Values": NotRequired[Sequence[str]],
    },
)

PlatformFrameworkTypeDef = TypedDict(
    "PlatformFrameworkTypeDef",
    {
        "Name": NotRequired[str],
        "Version": NotRequired[str],
    },
)

PlatformProgrammingLanguageTypeDef = TypedDict(
    "PlatformProgrammingLanguageTypeDef",
    {
        "Name": NotRequired[str],
        "Version": NotRequired[str],
    },
)

PlatformSummaryTypeDef = TypedDict(
    "PlatformSummaryTypeDef",
    {
        "PlatformArn": NotRequired[str],
        "PlatformOwner": NotRequired[str],
        "PlatformStatus": NotRequired[PlatformStatusType],
        "PlatformCategory": NotRequired[str],
        "OperatingSystemName": NotRequired[str],
        "OperatingSystemVersion": NotRequired[str],
        "SupportedTierList": NotRequired[List[str]],
        "SupportedAddonList": NotRequired[List[str]],
        "PlatformLifecycleState": NotRequired[str],
        "PlatformVersion": NotRequired[str],
        "PlatformBranchName": NotRequired[str],
        "PlatformBranchLifecycleState": NotRequired[str],
    },
)

QueueTypeDef = TypedDict(
    "QueueTypeDef",
    {
        "Name": NotRequired[str],
        "URL": NotRequired[str],
    },
)

RebuildEnvironmentMessageRequestTypeDef = TypedDict(
    "RebuildEnvironmentMessageRequestTypeDef",
    {
        "EnvironmentId": NotRequired[str],
        "EnvironmentName": NotRequired[str],
    },
)

RequestEnvironmentInfoMessageRequestTypeDef = TypedDict(
    "RequestEnvironmentInfoMessageRequestTypeDef",
    {
        "InfoType": EnvironmentInfoTypeType,
        "EnvironmentId": NotRequired[str],
        "EnvironmentName": NotRequired[str],
    },
)

ResourceQuotaTypeDef = TypedDict(
    "ResourceQuotaTypeDef",
    {
        "Maximum": NotRequired[int],
    },
)

ResourceQuotasTypeDef = TypedDict(
    "ResourceQuotasTypeDef",
    {
        "ApplicationQuota": NotRequired["ResourceQuotaTypeDef"],
        "ApplicationVersionQuota": NotRequired["ResourceQuotaTypeDef"],
        "EnvironmentQuota": NotRequired["ResourceQuotaTypeDef"],
        "ConfigurationTemplateQuota": NotRequired["ResourceQuotaTypeDef"],
        "CustomPlatformQuota": NotRequired["ResourceQuotaTypeDef"],
    },
)

ResourceTagsDescriptionMessageTypeDef = TypedDict(
    "ResourceTagsDescriptionMessageTypeDef",
    {
        "ResourceArn": str,
        "ResourceTags": List["TagTypeDef"],
        "ResponseMetadata": "ResponseMetadataTypeDef",
    },
)

ResponseMetadataTypeDef = TypedDict(
    "ResponseMetadataTypeDef",
    {
        "RequestId": str,
        "HostId": str,
        "HTTPStatusCode": int,
        "HTTPHeaders": Dict[str, str],
        "RetryAttempts": int,
    },
)

RestartAppServerMessageRequestTypeDef = TypedDict(
    "RestartAppServerMessageRequestTypeDef",
    {
        "EnvironmentId": NotRequired[str],
        "EnvironmentName": NotRequired[str],
    },
)

RetrieveEnvironmentInfoMessageRequestTypeDef = TypedDict(
    "RetrieveEnvironmentInfoMessageRequestTypeDef",
    {
        "InfoType": EnvironmentInfoTypeType,
        "EnvironmentId": NotRequired[str],
        "EnvironmentName": NotRequired[str],
    },
)

RetrieveEnvironmentInfoResultMessageTypeDef = TypedDict(
    "RetrieveEnvironmentInfoResultMessageTypeDef",
    {
        "EnvironmentInfo": List["EnvironmentInfoDescriptionTypeDef"],
        "ResponseMetadata": "ResponseMetadataTypeDef",
    },
)

S3LocationTypeDef = TypedDict(
    "S3LocationTypeDef",
    {
        "S3Bucket": NotRequired[str],
        "S3Key": NotRequired[str],
    },
)

SearchFilterTypeDef = TypedDict(
    "SearchFilterTypeDef",
    {
        "Attribute": NotRequired[str],
        "Operator": NotRequired[str],
        "Values": NotRequired[Sequence[str]],
    },
)

SingleInstanceHealthTypeDef = TypedDict(
    "SingleInstanceHealthTypeDef",
    {
        "InstanceId": NotRequired[str],
        "HealthStatus": NotRequired[str],
        "Color": NotRequired[str],
        "Causes": NotRequired[List[str]],
        "LaunchedAt": NotRequired[datetime],
        "ApplicationMetrics": NotRequired["ApplicationMetricsTypeDef"],
        "System": NotRequired["SystemStatusTypeDef"],
        "Deployment": NotRequired["DeploymentTypeDef"],
        "AvailabilityZone": NotRequired[str],
        "InstanceType": NotRequired[str],
    },
)

SolutionStackDescriptionTypeDef = TypedDict(
    "SolutionStackDescriptionTypeDef",
    {
        "SolutionStackName": NotRequired[str],
        "PermittedFileTypes": NotRequired[List[str]],
    },
)

SourceBuildInformationTypeDef = TypedDict(
    "SourceBuildInformationTypeDef",
    {
        "SourceType": SourceTypeType,
        "SourceRepository": SourceRepositoryType,
        "SourceLocation": str,
    },
)

SourceConfigurationTypeDef = TypedDict(
    "SourceConfigurationTypeDef",
    {
        "ApplicationName": NotRequired[str],
        "TemplateName": NotRequired[str],
    },
)

StatusCodesTypeDef = TypedDict(
    "StatusCodesTypeDef",
    {
        "Status2xx": NotRequired[int],
        "Status3xx": NotRequired[int],
        "Status4xx": NotRequired[int],
        "Status5xx": NotRequired[int],
    },
)

SwapEnvironmentCNAMEsMessageRequestTypeDef = TypedDict(
    "SwapEnvironmentCNAMEsMessageRequestTypeDef",
    {
        "SourceEnvironmentId": NotRequired[str],
        "SourceEnvironmentName": NotRequired[str],
        "DestinationEnvironmentId": NotRequired[str],
        "DestinationEnvironmentName": NotRequired[str],
    },
)

SystemStatusTypeDef = TypedDict(
    "SystemStatusTypeDef",
    {
        "CPUUtilization": NotRequired["CPUUtilizationTypeDef"],
        "LoadAverage": NotRequired[List[float]],
    },
)

TagTypeDef = TypedDict(
    "TagTypeDef",
    {
        "Key": NotRequired[str],
        "Value": NotRequired[str],
    },
)

TerminateEnvironmentMessageRequestTypeDef = TypedDict(
    "TerminateEnvironmentMessageRequestTypeDef",
    {
        "EnvironmentId": NotRequired[str],
        "EnvironmentName": NotRequired[str],
        "TerminateResources": NotRequired[bool],
        "ForceTerminate": NotRequired[bool],
    },
)

TriggerTypeDef = TypedDict(
    "TriggerTypeDef",
    {
        "Name": NotRequired[str],
    },
)

UpdateApplicationMessageRequestTypeDef = TypedDict(
    "UpdateApplicationMessageRequestTypeDef",
    {
        "ApplicationName": str,
        "Description": NotRequired[str],
    },
)

UpdateApplicationResourceLifecycleMessageRequestTypeDef = TypedDict(
    "UpdateApplicationResourceLifecycleMessageRequestTypeDef",
    {
        "ApplicationName": str,
        "ResourceLifecycleConfig": "ApplicationResourceLifecycleConfigTypeDef",
    },
)

UpdateApplicationVersionMessageRequestTypeDef = TypedDict(
    "UpdateApplicationVersionMessageRequestTypeDef",
    {
        "ApplicationName": str,
        "VersionLabel": str,
        "Description": NotRequired[str],
    },
)

UpdateConfigurationTemplateMessageRequestTypeDef = TypedDict(
    "UpdateConfigurationTemplateMessageRequestTypeDef",
    {
        "ApplicationName": str,
        "TemplateName": str,
        "Description": NotRequired[str],
        "OptionSettings": NotRequired[Sequence["ConfigurationOptionSettingTypeDef"]],
        "OptionsToRemove": NotRequired[Sequence["OptionSpecificationTypeDef"]],
    },
)

UpdateEnvironmentMessageRequestTypeDef = TypedDict(
    "UpdateEnvironmentMessageRequestTypeDef",
    {
        "ApplicationName": NotRequired[str],
        "EnvironmentId": NotRequired[str],
        "EnvironmentName": NotRequired[str],
        "GroupName": NotRequired[str],
        "Description": NotRequired[str],
        "Tier": NotRequired["EnvironmentTierTypeDef"],
        "VersionLabel": NotRequired[str],
        "TemplateName": NotRequired[str],
        "SolutionStackName": NotRequired[str],
        "PlatformArn": NotRequired[str],
        "OptionSettings": NotRequired[Sequence["ConfigurationOptionSettingTypeDef"]],
        "OptionsToRemove": NotRequired[Sequence["OptionSpecificationTypeDef"]],
    },
)

UpdateTagsForResourceMessageRequestTypeDef = TypedDict(
    "UpdateTagsForResourceMessageRequestTypeDef",
    {
        "ResourceArn": str,
        "TagsToAdd": NotRequired[Sequence["TagTypeDef"]],
        "TagsToRemove": NotRequired[Sequence[str]],
    },
)

ValidateConfigurationSettingsMessageRequestTypeDef = TypedDict(
    "ValidateConfigurationSettingsMessageRequestTypeDef",
    {
        "ApplicationName": str,
        "OptionSettings": Sequence["ConfigurationOptionSettingTypeDef"],
        "TemplateName": NotRequired[str],
        "EnvironmentName": NotRequired[str],
    },
)

ValidationMessageTypeDef = TypedDict(
    "ValidationMessageTypeDef",
    {
        "Message": NotRequired[str],
        "Severity": NotRequired[ValidationSeverityType],
        "Namespace": NotRequired[str],
        "OptionName": NotRequired[str],
    },
)

WaiterConfigTypeDef = TypedDict(
    "WaiterConfigTypeDef",
    {
        "Delay": NotRequired[int],
        "MaxAttempts": NotRequired[int],
    },
)
