import * as core from "@terrascript/core";
export interface StatefulRuleGroupReferenceArgs extends core.SchemaArgs {
    priority?: number | core.NumberOut;
    resourceArn: string | core.StringOut;
}
export declare class StatefulRuleGroupReference extends core.Schema<StatefulRuleGroupReferenceArgs> {
    priority?: number | core.NumberOut;
    resourceArn: string | core.StringOut;
}
export interface DimensionArgs extends core.SchemaArgs {
    value: string | core.StringOut;
}
export declare class Dimension extends core.Schema<DimensionArgs> {
    value: string | core.StringOut;
}
export interface PublishMetricActionArgs extends core.SchemaArgs {
    dimension: core.Array<Dimension> | core.ArrayOut<Dimension>;
}
export declare class PublishMetricAction extends core.Schema<PublishMetricActionArgs> {
    dimension: core.Array<Dimension> | core.ArrayOut<Dimension>;
}
export interface ActionDefinitionArgs extends core.SchemaArgs {
    publishMetricAction: PublishMetricAction;
}
export declare class ActionDefinition extends core.Schema<ActionDefinitionArgs> {
    publishMetricAction: PublishMetricAction;
}
export interface StatelessCustomActionArgs extends core.SchemaArgs {
    actionDefinition: ActionDefinition;
    actionName: string | core.StringOut;
}
export declare class StatelessCustomAction extends core.Schema<StatelessCustomActionArgs> {
    actionDefinition: ActionDefinition;
    actionName: string | core.StringOut;
}
export interface StatelessRuleGroupReferenceArgs extends core.SchemaArgs {
    priority: number | core.NumberOut;
    resourceArn: string | core.StringOut;
}
export declare class StatelessRuleGroupReference extends core.Schema<StatelessRuleGroupReferenceArgs> {
    priority: number | core.NumberOut;
    resourceArn: string | core.StringOut;
}
export interface StatefulEngineOptionsArgs extends core.SchemaArgs {
    ruleOrder: string | core.StringOut;
}
export declare class StatefulEngineOptions extends core.Schema<StatefulEngineOptionsArgs> {
    ruleOrder: string | core.StringOut;
}
export interface FirewallPolicyBlkArgs extends core.SchemaArgs {
    statefulDefaultActions?: core.Array<string> | core.ArrayOut<core.StringOut>;
    statefulEngineOptions?: StatefulEngineOptions;
    statefulRuleGroupReference?: core.Array<StatefulRuleGroupReference> | core.ArrayOut<StatefulRuleGroupReference>;
    statelessCustomAction?: core.Array<StatelessCustomAction> | core.ArrayOut<StatelessCustomAction>;
    statelessDefaultActions: core.Array<string> | core.ArrayOut<core.StringOut>;
    statelessFragmentDefaultActions: core.Array<string> | core.ArrayOut<core.StringOut>;
    statelessRuleGroupReference?: core.Array<StatelessRuleGroupReference> | core.ArrayOut<StatelessRuleGroupReference>;
}
export declare class FirewallPolicyBlk extends core.Schema<FirewallPolicyBlkArgs> {
    statefulDefaultActions?: core.Array<string> | core.ArrayOut<core.StringOut>;
    statefulEngineOptions?: StatefulEngineOptions;
    statefulRuleGroupReference?: core.Array<StatefulRuleGroupReference> | core.ArrayOut<StatefulRuleGroupReference>;
    statelessCustomAction?: core.Array<StatelessCustomAction> | core.ArrayOut<StatelessCustomAction>;
    statelessDefaultActions: core.Array<string> | core.ArrayOut<core.StringOut>;
    statelessFragmentDefaultActions: core.Array<string> | core.ArrayOut<core.StringOut>;
    statelessRuleGroupReference?: core.Array<StatelessRuleGroupReference> | core.ArrayOut<StatelessRuleGroupReference>;
}
export interface FirewallPolicyArgs extends core.ResourceArgs {
    description?: string | core.StringOut;
    firewallPolicy: FirewallPolicyBlk;
    name: string | core.StringOut;
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    tagsAll?: core.Map<string, string> | core.MapOut<core.StringOut>;
}
export declare class FirewallPolicy extends core.Resource<FirewallPolicyArgs> {
    arn: string | core.StringOut;
    description?: string | core.StringOut;
    firewallPolicy: FirewallPolicyBlk;
    id: string | core.StringOut;
    name: string | core.StringOut;
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    tagsAll?: core.Map<string, string> | core.MapOut<core.StringOut>;
    updateToken: string | core.StringOut;
    constructor(name: string, args?: FirewallPolicyArgs);
    getNamespace(): string;
}
//# sourceMappingURL=firewall_policy.d.ts.map