import * as core from "@terrascript/core";
export interface CustomResponseBodyArgs extends core.SchemaArgs {
    content: string | core.StringOut;
    contentType: string | core.StringOut;
    key: string | core.StringOut;
}
export declare class CustomResponseBody extends core.Schema<CustomResponseBodyArgs> {
    content: string | core.StringOut;
    contentType: string | core.StringOut;
    key: string | core.StringOut;
}
export interface RuleLabelArgs extends core.SchemaArgs {
    name: string | core.StringOut;
}
export declare class RuleLabel extends core.Schema<RuleLabelArgs> {
    name: string | core.StringOut;
}
export interface SingleQueryArgumentArgs extends core.SchemaArgs {
    name: string | core.StringOut;
}
export declare class SingleQueryArgument extends core.Schema<SingleQueryArgumentArgs> {
    name: string | core.StringOut;
}
export interface UriPathArgs extends core.SchemaArgs {
}
export declare class UriPath extends core.Schema<UriPathArgs> {
}
export interface AllQueryArgumentsArgs extends core.SchemaArgs {
}
export declare class AllQueryArguments extends core.Schema<AllQueryArgumentsArgs> {
}
export interface BodyArgs extends core.SchemaArgs {
}
export declare class Body extends core.Schema<BodyArgs> {
}
export interface MethodArgs extends core.SchemaArgs {
}
export declare class Method extends core.Schema<MethodArgs> {
}
export interface QueryStringArgs extends core.SchemaArgs {
}
export declare class QueryString extends core.Schema<QueryStringArgs> {
}
export interface SingleHeaderArgs extends core.SchemaArgs {
    name: string | core.StringOut;
}
export declare class SingleHeader extends core.Schema<SingleHeaderArgs> {
    name: string | core.StringOut;
}
export interface FieldToMatchArgs extends core.SchemaArgs {
    allQueryArguments?: AllQueryArguments;
    body?: Body;
    method?: Method;
    queryString?: QueryString;
    singleHeader?: SingleHeader;
    singleQueryArgument?: SingleQueryArgument;
    uriPath?: UriPath;
}
export declare class FieldToMatch extends core.Schema<FieldToMatchArgs> {
    allQueryArguments?: AllQueryArguments;
    body?: Body;
    method?: Method;
    queryString?: QueryString;
    singleHeader?: SingleHeader;
    singleQueryArgument?: SingleQueryArgument;
    uriPath?: UriPath;
}
export interface TextTransformationArgs extends core.SchemaArgs {
    priority: number | core.NumberOut;
    type: string | core.StringOut;
}
export declare class TextTransformation extends core.Schema<TextTransformationArgs> {
    priority: number | core.NumberOut;
    type: string | core.StringOut;
}
export interface SqliMatchStatementArgs extends core.SchemaArgs {
    fieldToMatch?: FieldToMatch;
    textTransformation: core.Array<TextTransformation> | core.ArrayOut<TextTransformation>;
}
export declare class SqliMatchStatement extends core.Schema<SqliMatchStatementArgs> {
    fieldToMatch?: FieldToMatch;
    textTransformation: core.Array<TextTransformation> | core.ArrayOut<TextTransformation>;
}
export interface XssMatchStatementArgs extends core.SchemaArgs {
    fieldToMatch?: FieldToMatch;
    textTransformation: core.Array<TextTransformation> | core.ArrayOut<TextTransformation>;
}
export declare class XssMatchStatement extends core.Schema<XssMatchStatementArgs> {
    fieldToMatch?: FieldToMatch;
    textTransformation: core.Array<TextTransformation> | core.ArrayOut<TextTransformation>;
}
export interface ByteMatchStatementArgs extends core.SchemaArgs {
    fieldToMatch?: FieldToMatch;
    positionalConstraint: string | core.StringOut;
    searchString: string | core.StringOut;
    textTransformation: core.Array<TextTransformation> | core.ArrayOut<TextTransformation>;
}
export declare class ByteMatchStatement extends core.Schema<ByteMatchStatementArgs> {
    fieldToMatch?: FieldToMatch;
    positionalConstraint: string | core.StringOut;
    searchString: string | core.StringOut;
    textTransformation: core.Array<TextTransformation> | core.ArrayOut<TextTransformation>;
}
export interface ForwardedIpConfigArgs extends core.SchemaArgs {
    fallbackBehavior: string | core.StringOut;
    headerName: string | core.StringOut;
}
export declare class ForwardedIpConfig extends core.Schema<ForwardedIpConfigArgs> {
    fallbackBehavior: string | core.StringOut;
    headerName: string | core.StringOut;
}
export interface GeoMatchStatementArgs extends core.SchemaArgs {
    countryCodes: core.Array<string> | core.ArrayOut<core.StringOut>;
    forwardedIpConfig?: ForwardedIpConfig;
}
export declare class GeoMatchStatement extends core.Schema<GeoMatchStatementArgs> {
    countryCodes: core.Array<string> | core.ArrayOut<core.StringOut>;
    forwardedIpConfig?: ForwardedIpConfig;
}
export interface IpSetForwardedIpConfigArgs extends core.SchemaArgs {
    fallbackBehavior: string | core.StringOut;
    headerName: string | core.StringOut;
    position: string | core.StringOut;
}
export declare class IpSetForwardedIpConfig extends core.Schema<IpSetForwardedIpConfigArgs> {
    fallbackBehavior: string | core.StringOut;
    headerName: string | core.StringOut;
    position: string | core.StringOut;
}
export interface IpSetReferenceStatementArgs extends core.SchemaArgs {
    arn: string | core.StringOut;
    ipSetForwardedIpConfig?: IpSetForwardedIpConfig;
}
export declare class IpSetReferenceStatement extends core.Schema<IpSetReferenceStatementArgs> {
    arn: string | core.StringOut;
    ipSetForwardedIpConfig?: IpSetForwardedIpConfig;
}
export interface LabelMatchStatementArgs extends core.SchemaArgs {
    key: string | core.StringOut;
    scope: string | core.StringOut;
}
export declare class LabelMatchStatement extends core.Schema<LabelMatchStatementArgs> {
    key: string | core.StringOut;
    scope: string | core.StringOut;
}
export interface RegexPatternSetReferenceStatementArgs extends core.SchemaArgs {
    arn: string | core.StringOut;
    fieldToMatch?: FieldToMatch;
    textTransformation: core.Array<TextTransformation> | core.ArrayOut<TextTransformation>;
}
export declare class RegexPatternSetReferenceStatement extends core.Schema<RegexPatternSetReferenceStatementArgs> {
    arn: string | core.StringOut;
    fieldToMatch?: FieldToMatch;
    textTransformation: core.Array<TextTransformation> | core.ArrayOut<TextTransformation>;
}
export interface SizeConstraintStatementArgs extends core.SchemaArgs {
    comparisonOperator: string | core.StringOut;
    fieldToMatch?: FieldToMatch;
    size: number | core.NumberOut;
    textTransformation: core.Array<TextTransformation> | core.ArrayOut<TextTransformation>;
}
export declare class SizeConstraintStatement extends core.Schema<SizeConstraintStatementArgs> {
    comparisonOperator: string | core.StringOut;
    fieldToMatch?: FieldToMatch;
    size: number | core.NumberOut;
    textTransformation: core.Array<TextTransformation> | core.ArrayOut<TextTransformation>;
}
export interface RuleStatementAndStatementStatementAndStatementStatementArgs extends core.SchemaArgs {
    byteMatchStatement?: ByteMatchStatement;
    geoMatchStatement?: GeoMatchStatement;
    ipSetReferenceStatement?: IpSetReferenceStatement;
    labelMatchStatement?: LabelMatchStatement;
    regexPatternSetReferenceStatement?: RegexPatternSetReferenceStatement;
    sizeConstraintStatement?: SizeConstraintStatement;
    sqliMatchStatement?: SqliMatchStatement;
    xssMatchStatement?: XssMatchStatement;
}
export declare class RuleStatementAndStatementStatementAndStatementStatement extends core.Schema<RuleStatementAndStatementStatementAndStatementStatementArgs> {
    byteMatchStatement?: ByteMatchStatement;
    geoMatchStatement?: GeoMatchStatement;
    ipSetReferenceStatement?: IpSetReferenceStatement;
    labelMatchStatement?: LabelMatchStatement;
    regexPatternSetReferenceStatement?: RegexPatternSetReferenceStatement;
    sizeConstraintStatement?: SizeConstraintStatement;
    sqliMatchStatement?: SqliMatchStatement;
    xssMatchStatement?: XssMatchStatement;
}
export interface RuleStatementAndStatementStatementAndStatementArgs extends core.SchemaArgs {
    statement: core.Array<RuleStatementAndStatementStatementAndStatementStatement> | core.ArrayOut<RuleStatementAndStatementStatementAndStatementStatement>;
}
export declare class RuleStatementAndStatementStatementAndStatement extends core.Schema<RuleStatementAndStatementStatementAndStatementArgs> {
    statement: core.Array<RuleStatementAndStatementStatementAndStatementStatement> | core.ArrayOut<RuleStatementAndStatementStatementAndStatementStatement>;
}
export interface RuleStatementAndStatementStatementNotStatementArgs extends core.SchemaArgs {
    statement: core.Array<RuleStatementAndStatementStatementAndStatementStatement> | core.ArrayOut<RuleStatementAndStatementStatementAndStatementStatement>;
}
export declare class RuleStatementAndStatementStatementNotStatement extends core.Schema<RuleStatementAndStatementStatementNotStatementArgs> {
    statement: core.Array<RuleStatementAndStatementStatementAndStatementStatement> | core.ArrayOut<RuleStatementAndStatementStatementAndStatementStatement>;
}
export interface RuleStatementAndStatementStatementOrStatementArgs extends core.SchemaArgs {
    statement: core.Array<RuleStatementAndStatementStatementAndStatementStatement> | core.ArrayOut<RuleStatementAndStatementStatementAndStatementStatement>;
}
export declare class RuleStatementAndStatementStatementOrStatement extends core.Schema<RuleStatementAndStatementStatementOrStatementArgs> {
    statement: core.Array<RuleStatementAndStatementStatementAndStatementStatement> | core.ArrayOut<RuleStatementAndStatementStatementAndStatementStatement>;
}
export interface RuleStatementAndStatementStatementArgs extends core.SchemaArgs {
    andStatement?: RuleStatementAndStatementStatementAndStatement;
    byteMatchStatement?: ByteMatchStatement;
    geoMatchStatement?: GeoMatchStatement;
    ipSetReferenceStatement?: IpSetReferenceStatement;
    labelMatchStatement?: LabelMatchStatement;
    notStatement?: RuleStatementAndStatementStatementNotStatement;
    orStatement?: RuleStatementAndStatementStatementOrStatement;
    regexPatternSetReferenceStatement?: RegexPatternSetReferenceStatement;
    sizeConstraintStatement?: SizeConstraintStatement;
    sqliMatchStatement?: SqliMatchStatement;
    xssMatchStatement?: XssMatchStatement;
}
export declare class RuleStatementAndStatementStatement extends core.Schema<RuleStatementAndStatementStatementArgs> {
    andStatement?: RuleStatementAndStatementStatementAndStatement;
    byteMatchStatement?: ByteMatchStatement;
    geoMatchStatement?: GeoMatchStatement;
    ipSetReferenceStatement?: IpSetReferenceStatement;
    labelMatchStatement?: LabelMatchStatement;
    notStatement?: RuleStatementAndStatementStatementNotStatement;
    orStatement?: RuleStatementAndStatementStatementOrStatement;
    regexPatternSetReferenceStatement?: RegexPatternSetReferenceStatement;
    sizeConstraintStatement?: SizeConstraintStatement;
    sqliMatchStatement?: SqliMatchStatement;
    xssMatchStatement?: XssMatchStatement;
}
export interface RuleStatementAndStatementArgs extends core.SchemaArgs {
    statement: core.Array<RuleStatementAndStatementStatement> | core.ArrayOut<RuleStatementAndStatementStatement>;
}
export declare class RuleStatementAndStatement extends core.Schema<RuleStatementAndStatementArgs> {
    statement: core.Array<RuleStatementAndStatementStatement> | core.ArrayOut<RuleStatementAndStatementStatement>;
}
export interface RuleStatementOrStatementArgs extends core.SchemaArgs {
    statement: core.Array<RuleStatementAndStatementStatement> | core.ArrayOut<RuleStatementAndStatementStatement>;
}
export declare class RuleStatementOrStatement extends core.Schema<RuleStatementOrStatementArgs> {
    statement: core.Array<RuleStatementAndStatementStatement> | core.ArrayOut<RuleStatementAndStatementStatement>;
}
export interface RuleStatementNotStatementArgs extends core.SchemaArgs {
    statement: core.Array<RuleStatementAndStatementStatement> | core.ArrayOut<RuleStatementAndStatementStatement>;
}
export declare class RuleStatementNotStatement extends core.Schema<RuleStatementNotStatementArgs> {
    statement: core.Array<RuleStatementAndStatementStatement> | core.ArrayOut<RuleStatementAndStatementStatement>;
}
export interface RuleStatementArgs extends core.SchemaArgs {
    andStatement?: RuleStatementAndStatement;
    byteMatchStatement?: ByteMatchStatement;
    geoMatchStatement?: GeoMatchStatement;
    ipSetReferenceStatement?: IpSetReferenceStatement;
    labelMatchStatement?: LabelMatchStatement;
    notStatement?: RuleStatementNotStatement;
    orStatement?: RuleStatementOrStatement;
    regexPatternSetReferenceStatement?: RegexPatternSetReferenceStatement;
    sizeConstraintStatement?: SizeConstraintStatement;
    sqliMatchStatement?: SqliMatchStatement;
    xssMatchStatement?: XssMatchStatement;
}
export declare class RuleStatement extends core.Schema<RuleStatementArgs> {
    andStatement?: RuleStatementAndStatement;
    byteMatchStatement?: ByteMatchStatement;
    geoMatchStatement?: GeoMatchStatement;
    ipSetReferenceStatement?: IpSetReferenceStatement;
    labelMatchStatement?: LabelMatchStatement;
    notStatement?: RuleStatementNotStatement;
    orStatement?: RuleStatementOrStatement;
    regexPatternSetReferenceStatement?: RegexPatternSetReferenceStatement;
    sizeConstraintStatement?: SizeConstraintStatement;
    sqliMatchStatement?: SqliMatchStatement;
    xssMatchStatement?: XssMatchStatement;
}
export interface VisibilityConfigArgs extends core.SchemaArgs {
    cloudwatchMetricsEnabled: boolean | core.BooleanOut;
    metricName: string | core.StringOut;
    sampledRequestsEnabled: boolean | core.BooleanOut;
}
export declare class VisibilityConfig extends core.Schema<VisibilityConfigArgs> {
    cloudwatchMetricsEnabled: boolean | core.BooleanOut;
    metricName: string | core.StringOut;
    sampledRequestsEnabled: boolean | core.BooleanOut;
}
export interface InsertHeaderArgs extends core.SchemaArgs {
    name: string | core.StringOut;
    value: string | core.StringOut;
}
export declare class InsertHeader extends core.Schema<InsertHeaderArgs> {
    name: string | core.StringOut;
    value: string | core.StringOut;
}
export interface CustomRequestHandlingArgs extends core.SchemaArgs {
    insertHeader: core.Array<InsertHeader> | core.ArrayOut<InsertHeader>;
}
export declare class CustomRequestHandling extends core.Schema<CustomRequestHandlingArgs> {
    insertHeader: core.Array<InsertHeader> | core.ArrayOut<InsertHeader>;
}
export interface AllowArgs extends core.SchemaArgs {
    customRequestHandling?: CustomRequestHandling;
}
export declare class Allow extends core.Schema<AllowArgs> {
    customRequestHandling?: CustomRequestHandling;
}
export interface ResponseHeaderArgs extends core.SchemaArgs {
    name: string | core.StringOut;
    value: string | core.StringOut;
}
export declare class ResponseHeader extends core.Schema<ResponseHeaderArgs> {
    name: string | core.StringOut;
    value: string | core.StringOut;
}
export interface CustomResponseArgs extends core.SchemaArgs {
    customResponseBodyKey?: string | core.StringOut;
    responseCode: number | core.NumberOut;
    responseHeader?: core.Array<ResponseHeader> | core.ArrayOut<ResponseHeader>;
}
export declare class CustomResponse extends core.Schema<CustomResponseArgs> {
    customResponseBodyKey?: string | core.StringOut;
    responseCode: number | core.NumberOut;
    responseHeader?: core.Array<ResponseHeader> | core.ArrayOut<ResponseHeader>;
}
export interface BlockArgs extends core.SchemaArgs {
    customResponse?: CustomResponse;
}
export declare class Block extends core.Schema<BlockArgs> {
    customResponse?: CustomResponse;
}
export interface CountArgs extends core.SchemaArgs {
    customRequestHandling?: CustomRequestHandling;
}
export declare class Count extends core.Schema<CountArgs> {
    customRequestHandling?: CustomRequestHandling;
}
export interface ActionArgs extends core.SchemaArgs {
    allow?: Allow;
    block?: Block;
    count?: Count;
}
export declare class Action extends core.Schema<ActionArgs> {
    allow?: Allow;
    block?: Block;
    count?: Count;
}
export interface RuleArgs extends core.SchemaArgs {
    action: Action;
    name: string | core.StringOut;
    priority: number | core.NumberOut;
    ruleLabel?: core.Array<RuleLabel> | core.ArrayOut<RuleLabel>;
    statement: RuleStatement;
    visibilityConfig: VisibilityConfig;
}
export declare class Rule extends core.Schema<RuleArgs> {
    action: Action;
    name: string | core.StringOut;
    priority: number | core.NumberOut;
    ruleLabel?: core.Array<RuleLabel> | core.ArrayOut<RuleLabel>;
    statement: RuleStatement;
    visibilityConfig: VisibilityConfig;
}
export interface V2RuleGroupArgs extends core.ResourceArgs {
    capacity: number | core.NumberOut;
    customResponseBody?: core.Array<CustomResponseBody> | core.ArrayOut<CustomResponseBody>;
    description?: string | core.StringOut;
    name: string | core.StringOut;
    rule?: core.Array<Rule> | core.ArrayOut<Rule>;
    scope: string | core.StringOut;
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    tagsAll?: core.Map<string, string> | core.MapOut<core.StringOut>;
    visibilityConfig: VisibilityConfig;
}
export declare class V2RuleGroup extends core.Resource<V2RuleGroupArgs> {
    arn: string | core.StringOut;
    capacity: number | core.NumberOut;
    customResponseBody?: core.Array<CustomResponseBody> | core.ArrayOut<CustomResponseBody>;
    description?: string | core.StringOut;
    id: string | core.StringOut;
    lockToken: string | core.StringOut;
    name: string | core.StringOut;
    rule?: core.Array<Rule> | core.ArrayOut<Rule>;
    scope: string | core.StringOut;
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    tagsAll?: core.Map<string, string> | core.MapOut<core.StringOut>;
    visibilityConfig: VisibilityConfig;
    constructor(name: string, args?: V2RuleGroupArgs);
    getNamespace(): string;
}
//# sourceMappingURL=v2_rule_group.d.ts.map