import { ResourceBase, ResourceTag as Inner_ResourceTag } from "../../resource";
import { Value, List, MapOf } from "../../data-types";
export declare class RegexPatternSetReferenceStatement {
    Arn: Value<string>;
    FieldToMatch: FieldToMatch;
    TextTransformations: List<TextTransformation>;
    constructor(properties: RegexPatternSetReferenceStatement);
}
export declare class SqliMatchStatement {
    FieldToMatch: FieldToMatch;
    TextTransformations: List<TextTransformation>;
    constructor(properties: SqliMatchStatement);
}
export declare class IPSetReferenceStatement {
    Arn: Value<string>;
    constructor(properties: IPSetReferenceStatement);
}
export declare class ExcludedRule {
    Name: Value<string>;
    constructor(properties: ExcludedRule);
}
export declare class XssMatchStatement {
    FieldToMatch: FieldToMatch;
    TextTransformations: List<TextTransformation>;
    constructor(properties: XssMatchStatement);
}
export declare class RuleGroupReferenceStatement {
    Arn: Value<string>;
    ExcludedRules?: List<ExcludedRule>;
    constructor(properties: RuleGroupReferenceStatement);
}
export declare class StatementThree {
    XssMatchStatement?: XssMatchStatement;
    SqliMatchStatement?: SqliMatchStatement;
    RuleGroupReferenceStatement?: RuleGroupReferenceStatement;
    ManagedRuleGroupStatement?: ManagedRuleGroupStatement;
    SizeConstraintStatement?: SizeConstraintStatement;
    ByteMatchStatement?: ByteMatchStatement;
    GeoMatchStatement?: GeoMatchStatement;
    RegexPatternSetReferenceStatement?: RegexPatternSetReferenceStatement;
    IPSetReferenceStatement?: IPSetReferenceStatement;
    constructor(properties: StatementThree);
}
export declare class RateBasedStatementOne {
    Limit: Value<number>;
    AggregateKeyType: Value<string>;
    ScopeDownStatement?: StatementTwo;
    constructor(properties: RateBasedStatementOne);
}
export declare class FieldToMatch {
    SingleHeader?: MapOf<any>;
    SingleQueryArgument?: MapOf<any>;
    AllQueryArguments?: MapOf<any>;
    UriPath?: MapOf<any>;
    QueryString?: MapOf<any>;
    Body?: MapOf<any>;
    Method?: MapOf<any>;
    constructor(properties: FieldToMatch);
}
export declare class NotStatementOne {
    Statement: StatementTwo;
    constructor(properties: NotStatementOne);
}
export declare class ManagedRuleGroupStatement {
    Name: Value<string>;
    VendorName: Value<string>;
    ExcludedRules?: List<ExcludedRule>;
    constructor(properties: ManagedRuleGroupStatement);
}
export declare class RuleAction {
    Allow?: MapOf<any>;
    Block?: MapOf<any>;
    Count?: MapOf<any>;
    constructor(properties: RuleAction);
}
export declare class ByteMatchStatement {
    SearchString: Value<string>;
    SearchStringBase64?: Value<string>;
    FieldToMatch: FieldToMatch;
    TextTransformations: List<TextTransformation>;
    PositionalConstraint: Value<string>;
    constructor(properties: ByteMatchStatement);
}
export declare class AndStatementOne {
    Statements: List<StatementTwo>;
    constructor(properties: AndStatementOne);
}
export declare class VisibilityConfig {
    SampledRequestsEnabled: Value<boolean>;
    CloudWatchMetricsEnabled: Value<boolean>;
    MetricName: Value<string>;
    constructor(properties: VisibilityConfig);
}
export declare class TextTransformation {
    Priority: Value<number>;
    Type: Value<string>;
    constructor(properties: TextTransformation);
}
export declare class RateBasedStatementTwo {
    Limit: Value<number>;
    AggregateKeyType: Value<string>;
    ScopeDownStatement?: StatementThree;
    constructor(properties: RateBasedStatementTwo);
}
export declare class NotStatementTwo {
    Statement: StatementThree;
    constructor(properties: NotStatementTwo);
}
export declare class SizeConstraintStatement {
    FieldToMatch: FieldToMatch;
    ComparisonOperator: Value<string>;
    Size: Value<number>;
    TextTransformations: List<TextTransformation>;
    constructor(properties: SizeConstraintStatement);
}
export declare class StatementOne {
    XssMatchStatement?: XssMatchStatement;
    SqliMatchStatement?: SqliMatchStatement;
    RuleGroupReferenceStatement?: RuleGroupReferenceStatement;
    ManagedRuleGroupStatement?: ManagedRuleGroupStatement;
    OrStatement?: OrStatementOne;
    SizeConstraintStatement?: SizeConstraintStatement;
    ByteMatchStatement?: ByteMatchStatement;
    AndStatement?: AndStatementOne;
    GeoMatchStatement?: GeoMatchStatement;
    RateBasedStatement?: RateBasedStatementOne;
    NotStatement?: NotStatementOne;
    RegexPatternSetReferenceStatement?: RegexPatternSetReferenceStatement;
    IPSetReferenceStatement?: IPSetReferenceStatement;
    constructor(properties: StatementOne);
}
export declare class AndStatementTwo {
    Statements: List<StatementThree>;
    constructor(properties: AndStatementTwo);
}
export declare class OrStatementOne {
    Statements: List<StatementTwo>;
    constructor(properties: OrStatementOne);
}
export declare class Rule {
    Name: Value<string>;
    Priority: Value<number>;
    Statement: StatementOne;
    Action?: RuleAction;
    OverrideAction?: OverrideAction;
    VisibilityConfig: VisibilityConfig;
    constructor(properties: Rule);
}
export declare class StatementTwo {
    XssMatchStatement?: XssMatchStatement;
    SqliMatchStatement?: SqliMatchStatement;
    RuleGroupReferenceStatement?: RuleGroupReferenceStatement;
    ManagedRuleGroupStatement?: ManagedRuleGroupStatement;
    OrStatement?: OrStatementTwo;
    SizeConstraintStatement?: SizeConstraintStatement;
    ByteMatchStatement?: ByteMatchStatement;
    AndStatement?: AndStatementTwo;
    GeoMatchStatement?: GeoMatchStatement;
    RateBasedStatement?: RateBasedStatementTwo;
    NotStatement?: NotStatementTwo;
    RegexPatternSetReferenceStatement?: RegexPatternSetReferenceStatement;
    IPSetReferenceStatement?: IPSetReferenceStatement;
    constructor(properties: StatementTwo);
}
export declare class DefaultAction {
    Allow?: MapOf<any>;
    Block?: MapOf<any>;
    constructor(properties: DefaultAction);
}
export declare class OrStatementTwo {
    Statements: List<StatementThree>;
    constructor(properties: OrStatementTwo);
}
export declare class GeoMatchStatement {
    CountryCodes?: List<Value<string>>;
    constructor(properties: GeoMatchStatement);
}
export declare class OverrideAction {
    Count?: MapOf<any>;
    None?: MapOf<any>;
    constructor(properties: OverrideAction);
}
export interface WebACLProperties {
    DefaultAction: DefaultAction;
    Description?: Value<string>;
    Name?: Value<string>;
    Scope: Value<string>;
    Rules?: List<Rule>;
    VisibilityConfig: VisibilityConfig;
    Tags?: List<Inner_ResourceTag>;
}
export default class Inner_WebACL extends ResourceBase<WebACLProperties> {
    static RegexPatternSetReferenceStatement: typeof RegexPatternSetReferenceStatement;
    static SqliMatchStatement: typeof SqliMatchStatement;
    static IPSetReferenceStatement: typeof IPSetReferenceStatement;
    static ExcludedRule: typeof ExcludedRule;
    static XssMatchStatement: typeof XssMatchStatement;
    static RuleGroupReferenceStatement: typeof RuleGroupReferenceStatement;
    static StatementThree: typeof StatementThree;
    static RateBasedStatementOne: typeof RateBasedStatementOne;
    static FieldToMatch: typeof FieldToMatch;
    static NotStatementOne: typeof NotStatementOne;
    static ManagedRuleGroupStatement: typeof ManagedRuleGroupStatement;
    static RuleAction: typeof RuleAction;
    static ByteMatchStatement: typeof ByteMatchStatement;
    static AndStatementOne: typeof AndStatementOne;
    static VisibilityConfig: typeof VisibilityConfig;
    static TextTransformation: typeof TextTransformation;
    static RateBasedStatementTwo: typeof RateBasedStatementTwo;
    static NotStatementTwo: typeof NotStatementTwo;
    static SizeConstraintStatement: typeof SizeConstraintStatement;
    static StatementOne: typeof StatementOne;
    static AndStatementTwo: typeof AndStatementTwo;
    static OrStatementOne: typeof OrStatementOne;
    static Rule: typeof Rule;
    static StatementTwo: typeof StatementTwo;
    static DefaultAction: typeof DefaultAction;
    static OrStatementTwo: typeof OrStatementTwo;
    static GeoMatchStatement: typeof GeoMatchStatement;
    static OverrideAction: typeof OverrideAction;
    constructor(properties: WebACLProperties);
}
