import { CfnResource, Resolvable } from '../../base';
export declare type RuleGroup_Type = 'AWS::WAFv2::RuleGroup';
export declare const RuleGroup_Type = "AWS::WAFv2::RuleGroup";
/**
 * Contains the Rules that identify the requests that you want to allow,
 * block, or count. In a RuleGroup, you also specify a default action
 * (ALLOW or BLOCK), and the action for each Rule that you add to a
 * RuleGroup, for example, block requests from specified IP addresses or
 * block requests from specified referrers. You also associate the
 * RuleGroup with a CloudFront distribution to identify the requests that
 * you want AWS WAF to filter. If you add more than one Rule to a
 * RuleGroup, a request needs to match only one of the specifications to
 * be allowed, blocked, or counted. {@link
 * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-rulegroup.html}
 */
export default function RuleGroup(props: RuleGroup_Properties): CfnResource<RuleGroup_Properties>;
/**
 * Contains the Rules that identify the requests that you want to allow,
 * block, or count. In a RuleGroup, you also specify a default action
 * (ALLOW or BLOCK), and the action for each Rule that you add to a
 * RuleGroup, for example, block requests from specified IP addresses or
 * block requests from specified referrers. You also associate the
 * RuleGroup with a CloudFront distribution to identify the requests that
 * you want AWS WAF to filter. If you add more than one Rule to a
 * RuleGroup, a request needs to match only one of the specifications to
 * be allowed, blocked, or counted. {@link
 * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-rulegroup.html}
 */
export declare type RuleGroup_Properties = {
    Arn?: ResourceArn;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-rulegroup.html#cfn-wafv2-rulegroup-capacity}
     */
    Capacity: Resolvable<number>;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-rulegroup.html#cfn-wafv2-rulegroup-description}
     */
    Description?: EntityDescription;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-rulegroup.html#cfn-wafv2-rulegroup-name}
     */
    Name?: EntityName;
    Id?: EntityId;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-rulegroup.html#cfn-wafv2-rulegroup-scope}
     */
    Scope: Scope;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-rulegroup.html#cfn-wafv2-rulegroup-rules}
     */
    Rules?: Rule[];
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-rulegroup.html#cfn-wafv2-rulegroup-visibilityconfig}
     */
    VisibilityConfig: VisibilityConfig;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-rulegroup.html#cfn-wafv2-rulegroup-tags}
     */
    Tags?: Tag[];
    LabelNamespace?: LabelName;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-wafv2-rulegroup.html#cfn-wafv2-rulegroup-customresponsebodies}
     */
    CustomResponseBodies?: CustomResponseBodies;
    AvailableLabels?: LabelSummary[];
    ConsumedLabels?: LabelSummary[];
};
/**
 * {@link
 * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-andstatement.html}
 */
export declare type AndStatement = {
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-andstatement.html#cfn-wafv2-rulegroup-andstatement-statements}
     */
    Statements: Statement[];
};
/**
 * Byte Match statement. {@link
 * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-bytematchstatement.html}
 */
export declare type ByteMatchStatement = {
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-bytematchstatement.html#cfn-wafv2-rulegroup-bytematchstatement-searchstring}
     */
    SearchString?: SearchString;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-bytematchstatement.html#cfn-wafv2-rulegroup-bytematchstatement-searchstringbase64}
     */
    SearchStringBase64?: SearchStringBase64;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-bytematchstatement.html#cfn-wafv2-rulegroup-bytematchstatement-fieldtomatch}
     */
    FieldToMatch: FieldToMatch;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-bytematchstatement.html#cfn-wafv2-rulegroup-bytematchstatement-texttransformations}
     */
    TextTransformations: TextTransformation[];
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-bytematchstatement.html#cfn-wafv2-rulegroup-bytematchstatement-positionalconstraint}
     */
    PositionalConstraint: PositionalConstraint;
};
export declare type EntityDescription = Resolvable<string>;
export declare type EntityName = Resolvable<string>;
/**
 * Field of the request to match. {@link
 * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-fieldtomatch.html}
 */
export declare type FieldToMatch = {
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-fieldtomatch.html#cfn-wafv2-rulegroup-fieldtomatch-singleheader}
     */
    SingleHeader?: {
        Name: Resolvable<string>;
    };
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-fieldtomatch.html#cfn-wafv2-rulegroup-fieldtomatch-singlequeryargument}
     */
    SingleQueryArgument?: {
        Name: Resolvable<string>;
    };
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-fieldtomatch.html#cfn-wafv2-rulegroup-fieldtomatch-allqueryarguments}
     */
    AllQueryArguments?: {
        [k: string]: unknown;
    };
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-fieldtomatch.html#cfn-wafv2-rulegroup-fieldtomatch-uripath}
     */
    UriPath?: {
        [k: string]: unknown;
    };
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-fieldtomatch.html#cfn-wafv2-rulegroup-fieldtomatch-querystring}
     */
    QueryString?: {
        [k: string]: unknown;
    };
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-fieldtomatch.html#cfn-wafv2-rulegroup-fieldtomatch-body}
     */
    Body?: {
        [k: string]: unknown;
    };
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-fieldtomatch.html#cfn-wafv2-rulegroup-fieldtomatch-method}
     */
    Method?: {
        [k: string]: unknown;
    };
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-fieldtomatch.html#cfn-wafv2-rulegroup-fieldtomatch-jsonbody}
     */
    JsonBody?: JsonBody;
};
/**
 * Inspect the request body as JSON. The request body immediately follows
 * the request headers. {@link
 * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-jsonbody.html}
 */
export declare type JsonBody = {
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-jsonbody.html#cfn-wafv2-rulegroup-jsonbody-matchpattern}
     */
    MatchPattern: JsonMatchPattern;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-jsonbody.html#cfn-wafv2-rulegroup-jsonbody-matchscope}
     */
    MatchScope: JsonMatchScope;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-jsonbody.html#cfn-wafv2-rulegroup-jsonbody-invalidfallbackbehavior}
     */
    InvalidFallbackBehavior?: BodyParsingFallbackBehavior;
};
export declare type BodyParsingFallbackBehavior = Resolvable<'MATCH' | 'NO_MATCH' | 'EVALUATE_AS_STRING'>;
export declare type JsonMatchScope = Resolvable<'ALL' | 'KEY' | 'VALUE'>;
/**
 * The pattern to look for in the JSON body. {@link
 * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-jsonmatchpattern.html}
 */
export declare type JsonMatchPattern = {
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-jsonmatchpattern.html#cfn-wafv2-rulegroup-jsonmatchpattern-all}
     */
    All?: {
        [k: string]: unknown;
    };
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-jsonmatchpattern.html#cfn-wafv2-rulegroup-jsonmatchpattern-includedpaths}
     */
    IncludedPaths?: JsonPointerPath[];
};
export declare type JsonPointerPath = Resolvable<string>;
/**
 * {@link
 * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-geomatchstatement.html}
 */
export declare type GeoMatchStatement = {
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-geomatchstatement.html#cfn-wafv2-rulegroup-geomatchstatement-countrycodes}
     */
    CountryCodes?: Resolvable<string>[];
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-geomatchstatement.html#cfn-wafv2-rulegroup-geomatchstatement-forwardedipconfig}
     */
    ForwardedIPConfig?: ForwardedIPConfiguration;
};
export declare type EntityId = Resolvable<string>;
/**
 * {@link
 * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ipsetreferencestatement.html}
 */
export declare type IPSetReferenceStatement = {
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ipsetreferencestatement.html#cfn-wafv2-rulegroup-ipsetreferencestatement-arn}
     */
    Arn: ResourceArn;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ipsetreferencestatement.html#cfn-wafv2-rulegroup-ipsetreferencestatement-ipsetforwardedipconfig}
     */
    IPSetForwardedIPConfig?: IPSetForwardedIPConfiguration;
};
/**
 * {@link
 * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-notstatement.html}
 */
export declare type NotStatement = {
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-notstatement.html#cfn-wafv2-rulegroup-notstatement-statement}
     */
    Statement: Statement;
};
/**
 * {@link
 * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-orstatement.html}
 */
export declare type OrStatement = {
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-orstatement.html#cfn-wafv2-rulegroup-orstatement-statements}
     */
    Statements: Statement[];
};
export declare type PositionalConstraint = Resolvable<'EXACTLY' | 'STARTS_WITH' | 'ENDS_WITH' | 'CONTAINS' | 'CONTAINS_WORD'>;
/**
 * {@link
 * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ratebasedstatement.html}
 */
export declare type RateBasedStatement = {
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ratebasedstatement.html#cfn-wafv2-rulegroup-ratebasedstatement-limit}
     */
    Limit: RateLimit;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ratebasedstatement.html#cfn-wafv2-rulegroup-ratebasedstatement-aggregatekeytype}
     */
    AggregateKeyType: Resolvable<'IP' | 'FORWARDED_IP'>;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ratebasedstatement.html#cfn-wafv2-rulegroup-ratebasedstatement-scopedownstatement}
     */
    ScopeDownStatement?: Statement;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ratebasedstatement.html#cfn-wafv2-rulegroup-ratebasedstatement-forwardedipconfig}
     */
    ForwardedIPConfig?: ForwardedIPConfiguration;
};
export declare type RateLimit = Resolvable<number>;
/**
 * {@link
 * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-regexpatternsetreferencestatement.html}
 */
export declare type RegexPatternSetReferenceStatement = {
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-regexpatternsetreferencestatement.html#cfn-wafv2-rulegroup-regexpatternsetreferencestatement-arn}
     */
    Arn: ResourceArn;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-regexpatternsetreferencestatement.html#cfn-wafv2-rulegroup-regexpatternsetreferencestatement-fieldtomatch}
     */
    FieldToMatch: FieldToMatch;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-regexpatternsetreferencestatement.html#cfn-wafv2-rulegroup-regexpatternsetreferencestatement-texttransformations}
     */
    TextTransformations: TextTransformation[];
};
export declare type ResourceArn = Resolvable<string>;
/**
 * {@link
 * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-forwardedipconfiguration.html}
 */
export declare type ForwardedIPConfiguration = {
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-forwardedipconfiguration.html#cfn-wafv2-rulegroup-forwardedipconfiguration-headername}
     */
    HeaderName: Resolvable<string>;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-forwardedipconfiguration.html#cfn-wafv2-rulegroup-forwardedipconfiguration-fallbackbehavior}
     */
    FallbackBehavior: Resolvable<'MATCH' | 'NO_MATCH'>;
};
/**
 * {@link
 * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ipsetforwardedipconfiguration.html}
 */
export declare type IPSetForwardedIPConfiguration = {
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ipsetforwardedipconfiguration.html#cfn-wafv2-rulegroup-ipsetforwardedipconfiguration-headername}
     */
    HeaderName: Resolvable<string>;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ipsetforwardedipconfiguration.html#cfn-wafv2-rulegroup-ipsetforwardedipconfiguration-fallbackbehavior}
     */
    FallbackBehavior: Resolvable<'MATCH' | 'NO_MATCH'>;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ipsetforwardedipconfiguration.html#cfn-wafv2-rulegroup-ipsetforwardedipconfiguration-position}
     */
    Position: Resolvable<'FIRST' | 'LAST' | 'ANY'>;
};
/**
 * Rule of RuleGroup that contains condition and action. {@link
 * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-rule.html}
 */
export declare type Rule = {
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-rule.html#cfn-wafv2-rulegroup-rule-name}
     */
    Name: EntityName;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-rule.html#cfn-wafv2-rulegroup-rule-priority}
     */
    Priority: RulePriority;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-rule.html#cfn-wafv2-rulegroup-rule-statement}
     */
    Statement: Statement;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-rule.html#cfn-wafv2-rulegroup-rule-action}
     */
    Action?: RuleAction;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-rule.html#cfn-wafv2-rulegroup-rule-rulelabels}
     */
    RuleLabels?: Label[];
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-rule.html#cfn-wafv2-rulegroup-rule-visibilityconfig}
     */
    VisibilityConfig: VisibilityConfig;
};
/**
 * Action taken when Rule matches its condition. {@link
 * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ruleaction.html}
 */
export declare type RuleAction = {
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ruleaction.html#cfn-wafv2-rulegroup-ruleaction-allow}
     */
    Allow?: {
        CustomRequestHandling?: CustomRequestHandling;
    };
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ruleaction.html#cfn-wafv2-rulegroup-ruleaction-block}
     */
    Block?: {
        CustomResponse?: CustomResponse;
    };
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-ruleaction.html#cfn-wafv2-rulegroup-ruleaction-count}
     */
    Count?: {
        CustomRequestHandling?: CustomRequestHandling;
    };
};
export declare type CustomHTTPHeaderName = Resolvable<string>;
export declare type CustomHTTPHeaderValue = Resolvable<string>;
export declare type CustomHTTPHeader = {
    Name: CustomHTTPHeaderName;
    Value: CustomHTTPHeaderValue;
};
export declare type CustomRequestHandling = {
    InsertHeaders: CustomHTTPHeader[];
};
export declare type ResponseStatusCode = Resolvable<number>;
export declare type ResponseContentType = Resolvable<'TEXT_PLAIN' | 'TEXT_HTML' | 'APPLICATION_JSON'>;
export declare type ResponseContent = Resolvable<string>;
/**
 * Custom response body. {@link
 * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-customresponsebody.html}
 */
export declare type CustomResponseBody = {
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-customresponsebody.html#cfn-wafv2-rulegroup-customresponsebody-contenttype}
     */
    ContentType: ResponseContentType;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-customresponsebody.html#cfn-wafv2-rulegroup-customresponsebody-content}
     */
    Content: ResponseContent;
};
export declare type CustomResponse = {
    ResponseCode: ResponseStatusCode;
    CustomResponseBodyKey?: Resolvable<string>;
    ResponseHeaders?: CustomHTTPHeader[];
};
export declare type CustomResponseBodies = {
    [k: string]: CustomResponseBody;
};
export declare type RuleGroup = {
    Name?: EntityName;
    Id?: EntityId;
    Arn?: ResourceArn;
    Description?: EntityDescription;
    Rules?: Rule[];
    VisibilityConfig?: VisibilityConfig;
    Capacity?: Resolvable<number>;
};
export declare type RulePriority = Resolvable<number>;
export declare type Scope = Resolvable<'CLOUDFRONT' | 'REGIONAL'>;
export declare type SearchString = Resolvable<string>;
export declare type SearchStringBase64 = Resolvable<string>;
/**
 * Size Constraint statement. {@link
 * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-sizeconstraintstatement.html}
 */
export declare type SizeConstraintStatement = {
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-sizeconstraintstatement.html#cfn-wafv2-rulegroup-sizeconstraintstatement-fieldtomatch}
     */
    FieldToMatch: FieldToMatch;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-sizeconstraintstatement.html#cfn-wafv2-rulegroup-sizeconstraintstatement-comparisonoperator}
     */
    ComparisonOperator: Resolvable<'EQ' | 'NE' | 'LE' | 'LT' | 'GE' | 'GT'>;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-sizeconstraintstatement.html#cfn-wafv2-rulegroup-sizeconstraintstatement-size}
     */
    Size: Resolvable<number>;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-sizeconstraintstatement.html#cfn-wafv2-rulegroup-sizeconstraintstatement-texttransformations}
     */
    TextTransformations: TextTransformation[];
};
/**
 * Sqli Match Statement. {@link
 * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-sqlimatchstatement.html}
 */
export declare type SqliMatchStatement = {
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-sqlimatchstatement.html#cfn-wafv2-rulegroup-sqlimatchstatement-fieldtomatch}
     */
    FieldToMatch: FieldToMatch;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-sqlimatchstatement.html#cfn-wafv2-rulegroup-sqlimatchstatement-texttransformations}
     */
    TextTransformations: TextTransformation[];
};
/**
 * First level statement that contains conditions, such as ByteMatch,
 * SizeConstraint, etc {@link
 * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statement.html}
 */
export declare type Statement = {
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statement.html#cfn-wafv2-rulegroup-statement-bytematchstatement}
     */
    ByteMatchStatement?: ByteMatchStatement;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statement.html#cfn-wafv2-rulegroup-statement-sqlimatchstatement}
     */
    SqliMatchStatement?: SqliMatchStatement;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statement.html#cfn-wafv2-rulegroup-statement-xssmatchstatement}
     */
    XssMatchStatement?: XssMatchStatement;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statement.html#cfn-wafv2-rulegroup-statement-sizeconstraintstatement}
     */
    SizeConstraintStatement?: SizeConstraintStatement;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statement.html#cfn-wafv2-rulegroup-statement-geomatchstatement}
     */
    GeoMatchStatement?: GeoMatchStatement;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statement.html#cfn-wafv2-rulegroup-statement-ipsetreferencestatement}
     */
    IPSetReferenceStatement?: IPSetReferenceStatement;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statement.html#cfn-wafv2-rulegroup-statement-regexpatternsetreferencestatement}
     */
    RegexPatternSetReferenceStatement?: RegexPatternSetReferenceStatement;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statement.html#cfn-wafv2-rulegroup-statement-ratebasedstatement}
     */
    RateBasedStatement?: RateBasedStatement;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statement.html#cfn-wafv2-rulegroup-statement-andstatement}
     */
    AndStatement?: AndStatement;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statement.html#cfn-wafv2-rulegroup-statement-orstatement}
     */
    OrStatement?: OrStatement;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statement.html#cfn-wafv2-rulegroup-statement-notstatement}
     */
    NotStatement?: NotStatement;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statement.html#cfn-wafv2-rulegroup-statement-labelmatchstatement}
     */
    LabelMatchStatement?: LabelMatchStatement;
};
export declare type Tag = {
    Key?: Resolvable<string>;
    Value?: Resolvable<string>;
};
/**
 * Text Transformation on the Search String before match. {@link
 * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-texttransformation.html}
 */
export declare type TextTransformation = {
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-texttransformation.html#cfn-wafv2-rulegroup-texttransformation-priority}
     */
    Priority: TextTransformationPriority;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-texttransformation.html#cfn-wafv2-rulegroup-texttransformation-type}
     */
    Type: TextTransformationType;
};
export declare type TextTransformationPriority = Resolvable<number>;
export declare type TextTransformationType = Resolvable<'NONE' | 'COMPRESS_WHITE_SPACE' | 'HTML_ENTITY_DECODE' | 'LOWERCASE' | 'CMD_LINE' | 'URL_DECODE' | 'BASE64_DECODE' | 'HEX_DECODE' | 'MD5' | 'REPLACE_COMMENTS' | 'ESCAPE_SEQ_DECODE' | 'SQL_HEX_DECODE' | 'CSS_DECODE' | 'JS_DECODE' | 'NORMALIZE_PATH' | 'NORMALIZE_PATH_WIN' | 'REMOVE_NULLS' | 'REPLACE_NULLS' | 'BASE64_DECODE_EXT' | 'URL_DECODE_UNI' | 'UTF8_TO_UNICODE'>;
/**
 * Visibility Metric of the RuleGroup. {@link
 * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-visibilityconfig.html}
 */
export declare type VisibilityConfig = {
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-visibilityconfig.html#cfn-wafv2-rulegroup-visibilityconfig-sampledrequestsenabled}
     */
    SampledRequestsEnabled: Resolvable<boolean>;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-visibilityconfig.html#cfn-wafv2-rulegroup-visibilityconfig-cloudwatchmetricsenabled}
     */
    CloudWatchMetricsEnabled: Resolvable<boolean>;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-visibilityconfig.html#cfn-wafv2-rulegroup-visibilityconfig-metricname}
     */
    MetricName: Resolvable<string>;
};
/**
 * Xss Match Statement. {@link
 * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-xssmatchstatement.html}
 */
export declare type XssMatchStatement = {
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-xssmatchstatement.html#cfn-wafv2-rulegroup-xssmatchstatement-fieldtomatch}
     */
    FieldToMatch: FieldToMatch;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-xssmatchstatement.html#cfn-wafv2-rulegroup-xssmatchstatement-texttransformations}
     */
    TextTransformations: TextTransformation[];
};
export declare type LabelName = Resolvable<string>;
/**
 * {@link
 * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-labelsummary.html}
 */
export declare type LabelSummary = {
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-labelsummary.html#cfn-wafv2-rulegroup-labelsummary-name}
     */
    Name?: LabelName;
};
/**
 * {@link
 * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-label.html}
 */
export declare type Label = {
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-label.html#cfn-wafv2-rulegroup-label-name}
     */
    Name: LabelName;
};
export declare type LabelMatchKey = Resolvable<string>;
export declare type LabelMatchScope = Resolvable<'LABEL' | 'NAMESPACE'>;
/**
 * {@link
 * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-labelmatchstatement.html}
 */
export declare type LabelMatchStatement = {
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-labelmatchstatement.html#cfn-wafv2-rulegroup-labelmatchstatement-scope}
     */
    Scope: LabelMatchScope;
    /**
     * {@link
     * http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-labelmatchstatement.html#cfn-wafv2-rulegroup-labelmatchstatement-key}
     */
    Key: LabelMatchKey;
};
