import { Value } from '../../../cloudformation/Value';
import { RateBasedStatementCustomKeyProps } from './RateBasedStatementCustomKeyProps';
import { ForwardedIPConfigurationProps } from './ForwardedIPConfigurationProps';
import { StatementProps } from './StatementProps';
/**
  A rate-based rule counts incoming requests and rate limits requests when they are coming at too fast a rate. The rule categorizes requests according to your aggregation criteria, collects them into aggregation instances, and counts and rate limits the requests for each instance.
  For full documentation go to <a href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-ratebasedstatement.html">the AWS Docs</a>
*/
export interface RateBasedStatementProps {
    /** <p> */
    aggregateKeyType: Value<string>;
    /** <code>CustomKeys</code>  <a name="cfn-wafv2-webacl-ratebasedstatement-customkeys"></a>
  Specifies the aggregate keys to use in a rate-base rule.<br />
  
  Required: No<br />
  
  Maximum: <code>5</code><br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    customKeys?: RateBasedStatementCustomKeyProps[];
    /** <code>ForwardedIPConfig</code>  <a name="cfn-wafv2-webacl-ratebasedstatement-forwardedipconfig"></a>
  The configuration for inspecting IP addresses in an HTTP header that you specify, instead of using the IP address that’s reported by the web request origin. Commonly, this is the X-Forwarded-For (XFF) header, but you can specify any header name.<br />
  If the specified header isn’t present in the request, AWS WAF doesn’t apply the rule to the web request at all.
  This is required if you specify a forwarded IP in the rule’s aggregate key settings.<br />
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    forwardedIPConfig?: ForwardedIPConfigurationProps;
    /** <p> */
    limit: Value<number>;
    /** <code>ScopeDownStatement</code>  <a name="cfn-wafv2-webacl-ratebasedstatement-scopedownstatement"></a>
  An optional nested statement that narrows the scope of the web requests that are evaluated and managed by the rate-based statement. When you use a scope-down statement, the rate-based rule only tracks and rate limits requests that match the scope-down statement. You can use any nestable <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-webacl-notstatement.html#cfn-wafv2-webacl-notstatement-statement">Statement</a> in the scope-down statement, and you can nest statements at any level, the same as you can for a rule statement.<br />
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    scopeDownStatement?: StatementProps;
}
