"""
Type annotations for waf-regional service type definitions.

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

Usage::

    ```python
    from mypy_boto3_waf_regional.type_defs import ActivatedRuleTypeDef

    data: ActivatedRuleTypeDef = {...}
    ```
"""
import sys
from datetime import datetime
from typing import IO, List, Union

from mypy_boto3_waf_regional.literals import (
    ChangeAction,
    ChangeTokenStatus,
    ComparisonOperator,
    GeoMatchConstraintValue,
    IPSetDescriptorType,
    MatchFieldType,
    PositionalConstraint,
    PredicateType,
    TextTransformation,
    WafActionType,
    WafOverrideActionType,
    WafRuleType,
)

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

__all__ = (
    "ActivatedRuleTypeDef",
    "ByteMatchSetSummaryTypeDef",
    "ByteMatchSetTypeDef",
    "ByteMatchSetUpdateTypeDef",
    "ByteMatchTupleTypeDef",
    "CreateByteMatchSetResponseTypeDef",
    "CreateGeoMatchSetResponseTypeDef",
    "CreateIPSetResponseTypeDef",
    "CreateRateBasedRuleResponseTypeDef",
    "CreateRegexMatchSetResponseTypeDef",
    "CreateRegexPatternSetResponseTypeDef",
    "CreateRuleGroupResponseTypeDef",
    "CreateRuleResponseTypeDef",
    "CreateSizeConstraintSetResponseTypeDef",
    "CreateSqlInjectionMatchSetResponseTypeDef",
    "CreateWebACLMigrationStackResponseTypeDef",
    "CreateWebACLResponseTypeDef",
    "CreateXssMatchSetResponseTypeDef",
    "DeleteByteMatchSetResponseTypeDef",
    "DeleteGeoMatchSetResponseTypeDef",
    "DeleteIPSetResponseTypeDef",
    "DeleteRateBasedRuleResponseTypeDef",
    "DeleteRegexMatchSetResponseTypeDef",
    "DeleteRegexPatternSetResponseTypeDef",
    "DeleteRuleGroupResponseTypeDef",
    "DeleteRuleResponseTypeDef",
    "DeleteSizeConstraintSetResponseTypeDef",
    "DeleteSqlInjectionMatchSetResponseTypeDef",
    "DeleteWebACLResponseTypeDef",
    "DeleteXssMatchSetResponseTypeDef",
    "ExcludedRuleTypeDef",
    "FieldToMatchTypeDef",
    "GeoMatchConstraintTypeDef",
    "GeoMatchSetSummaryTypeDef",
    "GeoMatchSetTypeDef",
    "GeoMatchSetUpdateTypeDef",
    "GetByteMatchSetResponseTypeDef",
    "GetChangeTokenResponseTypeDef",
    "GetChangeTokenStatusResponseTypeDef",
    "GetGeoMatchSetResponseTypeDef",
    "GetIPSetResponseTypeDef",
    "GetLoggingConfigurationResponseTypeDef",
    "GetPermissionPolicyResponseTypeDef",
    "GetRateBasedRuleManagedKeysResponseTypeDef",
    "GetRateBasedRuleResponseTypeDef",
    "GetRegexMatchSetResponseTypeDef",
    "GetRegexPatternSetResponseTypeDef",
    "GetRuleGroupResponseTypeDef",
    "GetRuleResponseTypeDef",
    "GetSampledRequestsResponseTypeDef",
    "GetSizeConstraintSetResponseTypeDef",
    "GetSqlInjectionMatchSetResponseTypeDef",
    "GetWebACLForResourceResponseTypeDef",
    "GetWebACLResponseTypeDef",
    "GetXssMatchSetResponseTypeDef",
    "HTTPHeaderTypeDef",
    "HTTPRequestTypeDef",
    "IPSetDescriptorTypeDef",
    "IPSetSummaryTypeDef",
    "IPSetTypeDef",
    "IPSetUpdateTypeDef",
    "ListActivatedRulesInRuleGroupResponseTypeDef",
    "ListByteMatchSetsResponseTypeDef",
    "ListGeoMatchSetsResponseTypeDef",
    "ListIPSetsResponseTypeDef",
    "ListLoggingConfigurationsResponseTypeDef",
    "ListRateBasedRulesResponseTypeDef",
    "ListRegexMatchSetsResponseTypeDef",
    "ListRegexPatternSetsResponseTypeDef",
    "ListResourcesForWebACLResponseTypeDef",
    "ListRuleGroupsResponseTypeDef",
    "ListRulesResponseTypeDef",
    "ListSizeConstraintSetsResponseTypeDef",
    "ListSqlInjectionMatchSetsResponseTypeDef",
    "ListSubscribedRuleGroupsResponseTypeDef",
    "ListTagsForResourceResponseTypeDef",
    "ListWebACLsResponseTypeDef",
    "ListXssMatchSetsResponseTypeDef",
    "LoggingConfigurationTypeDef",
    "PredicateTypeDef",
    "PutLoggingConfigurationResponseTypeDef",
    "RateBasedRuleTypeDef",
    "RegexMatchSetSummaryTypeDef",
    "RegexMatchSetTypeDef",
    "RegexMatchSetUpdateTypeDef",
    "RegexMatchTupleTypeDef",
    "RegexPatternSetSummaryTypeDef",
    "RegexPatternSetTypeDef",
    "RegexPatternSetUpdateTypeDef",
    "RuleGroupSummaryTypeDef",
    "RuleGroupTypeDef",
    "RuleGroupUpdateTypeDef",
    "RuleSummaryTypeDef",
    "RuleTypeDef",
    "RuleUpdateTypeDef",
    "SampledHTTPRequestTypeDef",
    "SizeConstraintSetSummaryTypeDef",
    "SizeConstraintSetTypeDef",
    "SizeConstraintSetUpdateTypeDef",
    "SizeConstraintTypeDef",
    "SqlInjectionMatchSetSummaryTypeDef",
    "SqlInjectionMatchSetTypeDef",
    "SqlInjectionMatchSetUpdateTypeDef",
    "SqlInjectionMatchTupleTypeDef",
    "SubscribedRuleGroupSummaryTypeDef",
    "TagInfoForResourceTypeDef",
    "TagTypeDef",
    "TimeWindowTypeDef",
    "UpdateByteMatchSetResponseTypeDef",
    "UpdateGeoMatchSetResponseTypeDef",
    "UpdateIPSetResponseTypeDef",
    "UpdateRateBasedRuleResponseTypeDef",
    "UpdateRegexMatchSetResponseTypeDef",
    "UpdateRegexPatternSetResponseTypeDef",
    "UpdateRuleGroupResponseTypeDef",
    "UpdateRuleResponseTypeDef",
    "UpdateSizeConstraintSetResponseTypeDef",
    "UpdateSqlInjectionMatchSetResponseTypeDef",
    "UpdateWebACLResponseTypeDef",
    "UpdateXssMatchSetResponseTypeDef",
    "WafActionTypeDef",
    "WafOverrideActionTypeDef",
    "WebACLSummaryTypeDef",
    "WebACLTypeDef",
    "WebACLUpdateTypeDef",
    "XssMatchSetSummaryTypeDef",
    "XssMatchSetTypeDef",
    "XssMatchSetUpdateTypeDef",
    "XssMatchTupleTypeDef",
)

_RequiredActivatedRuleTypeDef = TypedDict(
    "_RequiredActivatedRuleTypeDef", {"Priority": int, "RuleId": str}
)
_OptionalActivatedRuleTypeDef = TypedDict(
    "_OptionalActivatedRuleTypeDef",
    {
        "Action": "WafActionTypeDef",
        "OverrideAction": "WafOverrideActionTypeDef",
        "Type": WafRuleType,
        "ExcludedRules": List["ExcludedRuleTypeDef"],
    },
    total=False,
)

class ActivatedRuleTypeDef(_RequiredActivatedRuleTypeDef, _OptionalActivatedRuleTypeDef):
    pass

class ByteMatchSetSummaryTypeDef(TypedDict):
    ByteMatchSetId: str
    Name: str

class _RequiredByteMatchSetTypeDef(TypedDict):
    ByteMatchSetId: str
    ByteMatchTuples: List["ByteMatchTupleTypeDef"]

class ByteMatchSetTypeDef(_RequiredByteMatchSetTypeDef, total=False):
    Name: str

class ByteMatchSetUpdateTypeDef(TypedDict):
    Action: ChangeAction
    ByteMatchTuple: "ByteMatchTupleTypeDef"

class ByteMatchTupleTypeDef(TypedDict):
    FieldToMatch: "FieldToMatchTypeDef"
    TargetString: Union[bytes, IO[bytes]]
    TextTransformation: TextTransformation
    PositionalConstraint: PositionalConstraint

class CreateByteMatchSetResponseTypeDef(TypedDict, total=False):
    ByteMatchSet: "ByteMatchSetTypeDef"
    ChangeToken: str

class CreateGeoMatchSetResponseTypeDef(TypedDict, total=False):
    GeoMatchSet: "GeoMatchSetTypeDef"
    ChangeToken: str

class CreateIPSetResponseTypeDef(TypedDict, total=False):
    IPSet: "IPSetTypeDef"
    ChangeToken: str

class CreateRateBasedRuleResponseTypeDef(TypedDict, total=False):
    Rule: "RateBasedRuleTypeDef"
    ChangeToken: str

class CreateRegexMatchSetResponseTypeDef(TypedDict, total=False):
    RegexMatchSet: "RegexMatchSetTypeDef"
    ChangeToken: str

class CreateRegexPatternSetResponseTypeDef(TypedDict, total=False):
    RegexPatternSet: "RegexPatternSetTypeDef"
    ChangeToken: str

class CreateRuleGroupResponseTypeDef(TypedDict, total=False):
    RuleGroup: "RuleGroupTypeDef"
    ChangeToken: str

class CreateRuleResponseTypeDef(TypedDict, total=False):
    Rule: "RuleTypeDef"
    ChangeToken: str

class CreateSizeConstraintSetResponseTypeDef(TypedDict, total=False):
    SizeConstraintSet: "SizeConstraintSetTypeDef"
    ChangeToken: str

class CreateSqlInjectionMatchSetResponseTypeDef(TypedDict, total=False):
    SqlInjectionMatchSet: "SqlInjectionMatchSetTypeDef"
    ChangeToken: str

class CreateWebACLMigrationStackResponseTypeDef(TypedDict):
    S3ObjectUrl: str

class CreateWebACLResponseTypeDef(TypedDict, total=False):
    WebACL: "WebACLTypeDef"
    ChangeToken: str

class CreateXssMatchSetResponseTypeDef(TypedDict, total=False):
    XssMatchSet: "XssMatchSetTypeDef"
    ChangeToken: str

class DeleteByteMatchSetResponseTypeDef(TypedDict, total=False):
    ChangeToken: str

class DeleteGeoMatchSetResponseTypeDef(TypedDict, total=False):
    ChangeToken: str

class DeleteIPSetResponseTypeDef(TypedDict, total=False):
    ChangeToken: str

class DeleteRateBasedRuleResponseTypeDef(TypedDict, total=False):
    ChangeToken: str

class DeleteRegexMatchSetResponseTypeDef(TypedDict, total=False):
    ChangeToken: str

class DeleteRegexPatternSetResponseTypeDef(TypedDict, total=False):
    ChangeToken: str

class DeleteRuleGroupResponseTypeDef(TypedDict, total=False):
    ChangeToken: str

class DeleteRuleResponseTypeDef(TypedDict, total=False):
    ChangeToken: str

class DeleteSizeConstraintSetResponseTypeDef(TypedDict, total=False):
    ChangeToken: str

class DeleteSqlInjectionMatchSetResponseTypeDef(TypedDict, total=False):
    ChangeToken: str

class DeleteWebACLResponseTypeDef(TypedDict, total=False):
    ChangeToken: str

class DeleteXssMatchSetResponseTypeDef(TypedDict, total=False):
    ChangeToken: str

class ExcludedRuleTypeDef(TypedDict):
    RuleId: str

_RequiredFieldToMatchTypeDef = TypedDict("_RequiredFieldToMatchTypeDef", {"Type": MatchFieldType})
_OptionalFieldToMatchTypeDef = TypedDict("_OptionalFieldToMatchTypeDef", {"Data": str}, total=False)

class FieldToMatchTypeDef(_RequiredFieldToMatchTypeDef, _OptionalFieldToMatchTypeDef):
    pass

GeoMatchConstraintTypeDef = TypedDict(
    "GeoMatchConstraintTypeDef", {"Type": Literal["Country"], "Value": GeoMatchConstraintValue}
)

class GeoMatchSetSummaryTypeDef(TypedDict):
    GeoMatchSetId: str
    Name: str

class _RequiredGeoMatchSetTypeDef(TypedDict):
    GeoMatchSetId: str
    GeoMatchConstraints: List["GeoMatchConstraintTypeDef"]

class GeoMatchSetTypeDef(_RequiredGeoMatchSetTypeDef, total=False):
    Name: str

class GeoMatchSetUpdateTypeDef(TypedDict):
    Action: ChangeAction
    GeoMatchConstraint: "GeoMatchConstraintTypeDef"

class GetByteMatchSetResponseTypeDef(TypedDict, total=False):
    ByteMatchSet: "ByteMatchSetTypeDef"

class GetChangeTokenResponseTypeDef(TypedDict, total=False):
    ChangeToken: str

class GetChangeTokenStatusResponseTypeDef(TypedDict, total=False):
    ChangeTokenStatus: ChangeTokenStatus

class GetGeoMatchSetResponseTypeDef(TypedDict, total=False):
    GeoMatchSet: "GeoMatchSetTypeDef"

class GetIPSetResponseTypeDef(TypedDict, total=False):
    IPSet: "IPSetTypeDef"

class GetLoggingConfigurationResponseTypeDef(TypedDict, total=False):
    LoggingConfiguration: "LoggingConfigurationTypeDef"

class GetPermissionPolicyResponseTypeDef(TypedDict, total=False):
    Policy: str

class GetRateBasedRuleManagedKeysResponseTypeDef(TypedDict, total=False):
    ManagedKeys: List[str]
    NextMarker: str

class GetRateBasedRuleResponseTypeDef(TypedDict, total=False):
    Rule: "RateBasedRuleTypeDef"

class GetRegexMatchSetResponseTypeDef(TypedDict, total=False):
    RegexMatchSet: "RegexMatchSetTypeDef"

class GetRegexPatternSetResponseTypeDef(TypedDict, total=False):
    RegexPatternSet: "RegexPatternSetTypeDef"

class GetRuleGroupResponseTypeDef(TypedDict, total=False):
    RuleGroup: "RuleGroupTypeDef"

class GetRuleResponseTypeDef(TypedDict, total=False):
    Rule: "RuleTypeDef"

class GetSampledRequestsResponseTypeDef(TypedDict, total=False):
    SampledRequests: List["SampledHTTPRequestTypeDef"]
    PopulationSize: int
    TimeWindow: "TimeWindowTypeDef"

class GetSizeConstraintSetResponseTypeDef(TypedDict, total=False):
    SizeConstraintSet: "SizeConstraintSetTypeDef"

class GetSqlInjectionMatchSetResponseTypeDef(TypedDict, total=False):
    SqlInjectionMatchSet: "SqlInjectionMatchSetTypeDef"

class GetWebACLForResourceResponseTypeDef(TypedDict, total=False):
    WebACLSummary: "WebACLSummaryTypeDef"

class GetWebACLResponseTypeDef(TypedDict, total=False):
    WebACL: "WebACLTypeDef"

class GetXssMatchSetResponseTypeDef(TypedDict, total=False):
    XssMatchSet: "XssMatchSetTypeDef"

class HTTPHeaderTypeDef(TypedDict, total=False):
    Name: str
    Value: str

class HTTPRequestTypeDef(TypedDict, total=False):
    ClientIP: str
    Country: str
    URI: str
    Method: str
    HTTPVersion: str
    Headers: List["HTTPHeaderTypeDef"]

IPSetDescriptorTypeDef = TypedDict(
    "IPSetDescriptorTypeDef", {"Type": IPSetDescriptorType, "Value": str}
)

class IPSetSummaryTypeDef(TypedDict):
    IPSetId: str
    Name: str

class _RequiredIPSetTypeDef(TypedDict):
    IPSetId: str
    IPSetDescriptors: List["IPSetDescriptorTypeDef"]

class IPSetTypeDef(_RequiredIPSetTypeDef, total=False):
    Name: str

class IPSetUpdateTypeDef(TypedDict):
    Action: ChangeAction
    IPSetDescriptor: "IPSetDescriptorTypeDef"

class ListActivatedRulesInRuleGroupResponseTypeDef(TypedDict, total=False):
    NextMarker: str
    ActivatedRules: List["ActivatedRuleTypeDef"]

class ListByteMatchSetsResponseTypeDef(TypedDict, total=False):
    NextMarker: str
    ByteMatchSets: List["ByteMatchSetSummaryTypeDef"]

class ListGeoMatchSetsResponseTypeDef(TypedDict, total=False):
    NextMarker: str
    GeoMatchSets: List["GeoMatchSetSummaryTypeDef"]

class ListIPSetsResponseTypeDef(TypedDict, total=False):
    NextMarker: str
    IPSets: List["IPSetSummaryTypeDef"]

class ListLoggingConfigurationsResponseTypeDef(TypedDict, total=False):
    LoggingConfigurations: List["LoggingConfigurationTypeDef"]
    NextMarker: str

class ListRateBasedRulesResponseTypeDef(TypedDict, total=False):
    NextMarker: str
    Rules: List["RuleSummaryTypeDef"]

class ListRegexMatchSetsResponseTypeDef(TypedDict, total=False):
    NextMarker: str
    RegexMatchSets: List["RegexMatchSetSummaryTypeDef"]

class ListRegexPatternSetsResponseTypeDef(TypedDict, total=False):
    NextMarker: str
    RegexPatternSets: List["RegexPatternSetSummaryTypeDef"]

class ListResourcesForWebACLResponseTypeDef(TypedDict, total=False):
    ResourceArns: List[str]

class ListRuleGroupsResponseTypeDef(TypedDict, total=False):
    NextMarker: str
    RuleGroups: List["RuleGroupSummaryTypeDef"]

class ListRulesResponseTypeDef(TypedDict, total=False):
    NextMarker: str
    Rules: List["RuleSummaryTypeDef"]

class ListSizeConstraintSetsResponseTypeDef(TypedDict, total=False):
    NextMarker: str
    SizeConstraintSets: List["SizeConstraintSetSummaryTypeDef"]

class ListSqlInjectionMatchSetsResponseTypeDef(TypedDict, total=False):
    NextMarker: str
    SqlInjectionMatchSets: List["SqlInjectionMatchSetSummaryTypeDef"]

class ListSubscribedRuleGroupsResponseTypeDef(TypedDict, total=False):
    NextMarker: str
    RuleGroups: List["SubscribedRuleGroupSummaryTypeDef"]

class ListTagsForResourceResponseTypeDef(TypedDict, total=False):
    NextMarker: str
    TagInfoForResource: "TagInfoForResourceTypeDef"

class ListWebACLsResponseTypeDef(TypedDict, total=False):
    NextMarker: str
    WebACLs: List["WebACLSummaryTypeDef"]

class ListXssMatchSetsResponseTypeDef(TypedDict, total=False):
    NextMarker: str
    XssMatchSets: List["XssMatchSetSummaryTypeDef"]

class _RequiredLoggingConfigurationTypeDef(TypedDict):
    ResourceArn: str
    LogDestinationConfigs: List[str]

class LoggingConfigurationTypeDef(_RequiredLoggingConfigurationTypeDef, total=False):
    RedactedFields: List["FieldToMatchTypeDef"]

PredicateTypeDef = TypedDict(
    "PredicateTypeDef", {"Negated": bool, "Type": PredicateType, "DataId": str}
)

class PutLoggingConfigurationResponseTypeDef(TypedDict, total=False):
    LoggingConfiguration: "LoggingConfigurationTypeDef"

class _RequiredRateBasedRuleTypeDef(TypedDict):
    RuleId: str
    MatchPredicates: List["PredicateTypeDef"]
    RateKey: Literal["IP"]
    RateLimit: int

class RateBasedRuleTypeDef(_RequiredRateBasedRuleTypeDef, total=False):
    Name: str
    MetricName: str

class RegexMatchSetSummaryTypeDef(TypedDict):
    RegexMatchSetId: str
    Name: str

class RegexMatchSetTypeDef(TypedDict, total=False):
    RegexMatchSetId: str
    Name: str
    RegexMatchTuples: List["RegexMatchTupleTypeDef"]

class RegexMatchSetUpdateTypeDef(TypedDict):
    Action: ChangeAction
    RegexMatchTuple: "RegexMatchTupleTypeDef"

class RegexMatchTupleTypeDef(TypedDict):
    FieldToMatch: "FieldToMatchTypeDef"
    TextTransformation: TextTransformation
    RegexPatternSetId: str

class RegexPatternSetSummaryTypeDef(TypedDict):
    RegexPatternSetId: str
    Name: str

class _RequiredRegexPatternSetTypeDef(TypedDict):
    RegexPatternSetId: str
    RegexPatternStrings: List[str]

class RegexPatternSetTypeDef(_RequiredRegexPatternSetTypeDef, total=False):
    Name: str

class RegexPatternSetUpdateTypeDef(TypedDict):
    Action: ChangeAction
    RegexPatternString: str

class RuleGroupSummaryTypeDef(TypedDict):
    RuleGroupId: str
    Name: str

class _RequiredRuleGroupTypeDef(TypedDict):
    RuleGroupId: str

class RuleGroupTypeDef(_RequiredRuleGroupTypeDef, total=False):
    Name: str
    MetricName: str

class RuleGroupUpdateTypeDef(TypedDict):
    Action: ChangeAction
    ActivatedRule: "ActivatedRuleTypeDef"

class RuleSummaryTypeDef(TypedDict):
    RuleId: str
    Name: str

class _RequiredRuleTypeDef(TypedDict):
    RuleId: str
    Predicates: List["PredicateTypeDef"]

class RuleTypeDef(_RequiredRuleTypeDef, total=False):
    Name: str
    MetricName: str

class RuleUpdateTypeDef(TypedDict):
    Action: ChangeAction
    Predicate: "PredicateTypeDef"

class _RequiredSampledHTTPRequestTypeDef(TypedDict):
    Request: "HTTPRequestTypeDef"
    Weight: int

class SampledHTTPRequestTypeDef(_RequiredSampledHTTPRequestTypeDef, total=False):
    Timestamp: datetime
    Action: str
    RuleWithinRuleGroup: str

class SizeConstraintSetSummaryTypeDef(TypedDict):
    SizeConstraintSetId: str
    Name: str

class _RequiredSizeConstraintSetTypeDef(TypedDict):
    SizeConstraintSetId: str
    SizeConstraints: List["SizeConstraintTypeDef"]

class SizeConstraintSetTypeDef(_RequiredSizeConstraintSetTypeDef, total=False):
    Name: str

class SizeConstraintSetUpdateTypeDef(TypedDict):
    Action: ChangeAction
    SizeConstraint: "SizeConstraintTypeDef"

class SizeConstraintTypeDef(TypedDict):
    FieldToMatch: "FieldToMatchTypeDef"
    TextTransformation: TextTransformation
    ComparisonOperator: ComparisonOperator
    Size: int

class SqlInjectionMatchSetSummaryTypeDef(TypedDict):
    SqlInjectionMatchSetId: str
    Name: str

class _RequiredSqlInjectionMatchSetTypeDef(TypedDict):
    SqlInjectionMatchSetId: str
    SqlInjectionMatchTuples: List["SqlInjectionMatchTupleTypeDef"]

class SqlInjectionMatchSetTypeDef(_RequiredSqlInjectionMatchSetTypeDef, total=False):
    Name: str

class SqlInjectionMatchSetUpdateTypeDef(TypedDict):
    Action: ChangeAction
    SqlInjectionMatchTuple: "SqlInjectionMatchTupleTypeDef"

class SqlInjectionMatchTupleTypeDef(TypedDict):
    FieldToMatch: "FieldToMatchTypeDef"
    TextTransformation: TextTransformation

class SubscribedRuleGroupSummaryTypeDef(TypedDict):
    RuleGroupId: str
    Name: str
    MetricName: str

class TagInfoForResourceTypeDef(TypedDict, total=False):
    ResourceARN: str
    TagList: List["TagTypeDef"]

class TagTypeDef(TypedDict):
    Key: str
    Value: str

class TimeWindowTypeDef(TypedDict):
    StartTime: datetime
    EndTime: datetime

class UpdateByteMatchSetResponseTypeDef(TypedDict, total=False):
    ChangeToken: str

class UpdateGeoMatchSetResponseTypeDef(TypedDict, total=False):
    ChangeToken: str

class UpdateIPSetResponseTypeDef(TypedDict, total=False):
    ChangeToken: str

class UpdateRateBasedRuleResponseTypeDef(TypedDict, total=False):
    ChangeToken: str

class UpdateRegexMatchSetResponseTypeDef(TypedDict, total=False):
    ChangeToken: str

class UpdateRegexPatternSetResponseTypeDef(TypedDict, total=False):
    ChangeToken: str

class UpdateRuleGroupResponseTypeDef(TypedDict, total=False):
    ChangeToken: str

class UpdateRuleResponseTypeDef(TypedDict, total=False):
    ChangeToken: str

class UpdateSizeConstraintSetResponseTypeDef(TypedDict, total=False):
    ChangeToken: str

class UpdateSqlInjectionMatchSetResponseTypeDef(TypedDict, total=False):
    ChangeToken: str

class UpdateWebACLResponseTypeDef(TypedDict, total=False):
    ChangeToken: str

class UpdateXssMatchSetResponseTypeDef(TypedDict, total=False):
    ChangeToken: str

WafActionTypeDef = TypedDict("WafActionTypeDef", {"Type": WafActionType})

WafOverrideActionTypeDef = TypedDict("WafOverrideActionTypeDef", {"Type": WafOverrideActionType})

class WebACLSummaryTypeDef(TypedDict):
    WebACLId: str
    Name: str

class _RequiredWebACLTypeDef(TypedDict):
    WebACLId: str
    DefaultAction: "WafActionTypeDef"
    Rules: List["ActivatedRuleTypeDef"]

class WebACLTypeDef(_RequiredWebACLTypeDef, total=False):
    Name: str
    MetricName: str
    WebACLArn: str

class WebACLUpdateTypeDef(TypedDict):
    Action: ChangeAction
    ActivatedRule: "ActivatedRuleTypeDef"

class XssMatchSetSummaryTypeDef(TypedDict):
    XssMatchSetId: str
    Name: str

class _RequiredXssMatchSetTypeDef(TypedDict):
    XssMatchSetId: str
    XssMatchTuples: List["XssMatchTupleTypeDef"]

class XssMatchSetTypeDef(_RequiredXssMatchSetTypeDef, total=False):
    Name: str

class XssMatchSetUpdateTypeDef(TypedDict):
    Action: ChangeAction
    XssMatchTuple: "XssMatchTupleTypeDef"

class XssMatchTupleTypeDef(TypedDict):
    FieldToMatch: "FieldToMatchTypeDef"
    TextTransformation: TextTransformation
