import { RuleActionProps } from './RuleActionProps';
import { Value } from '../../../cloudformation/Value';
import { StatementProps } from './StatementProps';
import { ChallengeConfigProps } from './ChallengeConfigProps';
import { LabelProps } from './LabelProps';
import { VisibilityConfigProps } from './VisibilityConfigProps';
import { CaptchaConfigProps } from './CaptchaConfigProps';
/**
  A single rule, which you can use in a <a href="aws-resource-wafv2-webacl.md">AWS::WAFv2::WebACL</a> or <a href="aws-resource-wafv2-rulegroup.md">AWS::WAFv2::RuleGroup</a> to identify web requests that you want to manage in some way. Each rule includes one top-level <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-rule.html#cfn-wafv2-rulegroup-rule-statement">Statement</a> that AWS WAF uses to identify matching web requests, and parameters that govern how AWS WAF handles them.
  For full documentation go to <a href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-rule.html">the AWS Docs</a>
*/
export interface RuleProps {
    /** <code>Action</code>  <a name="cfn-wafv2-rulegroup-rule-action"></a>
  The action that AWS WAF should take on a web request when it matches the rule statement. Settings at the web ACL level can override the rule action setting.<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> */
    action?: RuleActionProps;
    /** <code>Priority</code>  <a name="cfn-wafv2-rulegroup-rule-priority"></a>
  If you define more than one <code>Rule</code> in a <code>WebACL</code>, AWS WAF evaluates each request against the <code>Rules</code> in order based on the value of <code>Priority</code>. AWS WAF processes rules with lower priority first. The priorities don’t need to be consecutive, but they must all be different.<br />
  
  Required: Yes<br />
  
  Minimum: <code>0</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> */
    priority: Value<number>;
    /** <code>Statement</code>  <a name="cfn-wafv2-rulegroup-rule-statement"></a>
  The AWS WAF processing statement for the rule, for example <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statement.html#cfn-wafv2-rulegroup-statement-bytematchstatement">ByteMatchStatement</a> or <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-wafv2-rulegroup-statement.html#cfn-wafv2-rulegroup-statement-sizeconstraintstatement">SizeConstraintStatement</a>.<br />
  
  Required: Yes<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> */
    statement: StatementProps;
    /** <code>ChallengeConfig</code>  <a name="cfn-wafv2-rulegroup-rule-challengeconfig"></a>
  Specifies how AWS WAF should handle <code>Challenge</code> evaluations. If you don’t specify this, AWS WAF uses the challenge configuration that’s defined for the web ACL.<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> */
    challengeConfig?: ChallengeConfigProps;
    /** <p> */
    ruleLabels?: LabelProps[];
    /** <code>VisibilityConfig</code>  <a name="cfn-wafv2-rulegroup-rule-visibilityconfig"></a>
  Defines and enables Amazon CloudWatch metrics and web request sample collection.<br />
  If you change the name of a <code>Rule</code> after you create it and you want the rule’s metric name to reflect the change, update the metric name as well. AWS WAF doesn’t automatically update the metric name.<br />
  
  Required: Yes<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> */
    visibilityConfig: VisibilityConfigProps;
    /** <code>CaptchaConfig</code>  <a name="cfn-wafv2-rulegroup-rule-captchaconfig"></a>
  Specifies how AWS WAF should handle <code>CAPTCHA</code> evaluations. If you don’t specify this, AWS WAF uses the <code>CAPTCHA</code> configuration that’s defined for the web ACL.<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> */
    captchaConfig?: CaptchaConfigProps;
    /** <code>Name</code>  <a name="cfn-wafv2-rulegroup-rule-name"></a>
  The name of the rule.<br />
  If you change the name of a <code>Rule</code> after you create it and you want the rule’s metric name to reflect the change, update the metric name in the rule’s <code>VisibilityConfig</code> settings. AWS WAF doesn’t automatically update the metric name when you update the rule name.<br />
  
  Required: Yes<br />
  
  Minimum: <code>1</code><br />
  
  Maximum: <code>128</code><br />
  
  Pattern: <code>^[\w\-]+$</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> */
    name: Value<string>;
}
