import * as core from "@terrascript/core";
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 CustomActionArgs extends core.SchemaArgs {
    actionDefinition: ActionDefinition;
    actionName: string | core.StringOut;
}
export declare class CustomAction extends core.Schema<CustomActionArgs> {
    actionDefinition: ActionDefinition;
    actionName: string | core.StringOut;
}
export interface SourceArgs extends core.SchemaArgs {
    addressDefinition: string | core.StringOut;
}
export declare class Source extends core.Schema<SourceArgs> {
    addressDefinition: string | core.StringOut;
}
export interface SourcePortArgs extends core.SchemaArgs {
    fromPort: number | core.NumberOut;
    toPort?: number | core.NumberOut;
}
export declare class SourcePort extends core.Schema<SourcePortArgs> {
    fromPort: number | core.NumberOut;
    toPort?: number | core.NumberOut;
}
export interface TcpFlagArgs extends core.SchemaArgs {
    flags: core.Array<string> | core.ArrayOut<core.StringOut>;
    masks?: core.Array<string> | core.ArrayOut<core.StringOut>;
}
export declare class TcpFlag extends core.Schema<TcpFlagArgs> {
    flags: core.Array<string> | core.ArrayOut<core.StringOut>;
    masks?: core.Array<string> | core.ArrayOut<core.StringOut>;
}
export interface DestinationArgs extends core.SchemaArgs {
    addressDefinition: string | core.StringOut;
}
export declare class Destination extends core.Schema<DestinationArgs> {
    addressDefinition: string | core.StringOut;
}
export interface DestinationPortArgs extends core.SchemaArgs {
    fromPort: number | core.NumberOut;
    toPort?: number | core.NumberOut;
}
export declare class DestinationPort extends core.Schema<DestinationPortArgs> {
    fromPort: number | core.NumberOut;
    toPort?: number | core.NumberOut;
}
export interface MatchAttributesArgs extends core.SchemaArgs {
    destination?: core.Array<Destination> | core.ArrayOut<Destination>;
    destinationPort?: core.Array<DestinationPort> | core.ArrayOut<DestinationPort>;
    protocols?: core.Array<number> | core.ArrayOut<core.NumberOut>;
    source?: core.Array<Source> | core.ArrayOut<Source>;
    sourcePort?: core.Array<SourcePort> | core.ArrayOut<SourcePort>;
    tcpFlag?: core.Array<TcpFlag> | core.ArrayOut<TcpFlag>;
}
export declare class MatchAttributes extends core.Schema<MatchAttributesArgs> {
    destination?: core.Array<Destination> | core.ArrayOut<Destination>;
    destinationPort?: core.Array<DestinationPort> | core.ArrayOut<DestinationPort>;
    protocols?: core.Array<number> | core.ArrayOut<core.NumberOut>;
    source?: core.Array<Source> | core.ArrayOut<Source>;
    sourcePort?: core.Array<SourcePort> | core.ArrayOut<SourcePort>;
    tcpFlag?: core.Array<TcpFlag> | core.ArrayOut<TcpFlag>;
}
export interface RuleDefinitionArgs extends core.SchemaArgs {
    actions: core.Array<string> | core.ArrayOut<core.StringOut>;
    matchAttributes: MatchAttributes;
}
export declare class RuleDefinition extends core.Schema<RuleDefinitionArgs> {
    actions: core.Array<string> | core.ArrayOut<core.StringOut>;
    matchAttributes: MatchAttributes;
}
export interface StatelessRuleArgs extends core.SchemaArgs {
    priority: number | core.NumberOut;
    ruleDefinition: RuleDefinition;
}
export declare class StatelessRule extends core.Schema<StatelessRuleArgs> {
    priority: number | core.NumberOut;
    ruleDefinition: RuleDefinition;
}
export interface StatelessRulesAndCustomActionsArgs extends core.SchemaArgs {
    customAction?: core.Array<CustomAction> | core.ArrayOut<CustomAction>;
    statelessRule: core.Array<StatelessRule> | core.ArrayOut<StatelessRule>;
}
export declare class StatelessRulesAndCustomActions extends core.Schema<StatelessRulesAndCustomActionsArgs> {
    customAction?: core.Array<CustomAction> | core.ArrayOut<CustomAction>;
    statelessRule: core.Array<StatelessRule> | core.ArrayOut<StatelessRule>;
}
export interface RulesSourceListArgs extends core.SchemaArgs {
    generatedRulesType: string | core.StringOut;
    targetTypes: core.Array<string> | core.ArrayOut<core.StringOut>;
    targets: core.Array<string> | core.ArrayOut<core.StringOut>;
}
export declare class RulesSourceList extends core.Schema<RulesSourceListArgs> {
    generatedRulesType: string | core.StringOut;
    targetTypes: core.Array<string> | core.ArrayOut<core.StringOut>;
    targets: core.Array<string> | core.ArrayOut<core.StringOut>;
}
export interface HeaderArgs extends core.SchemaArgs {
    destination: string | core.StringOut;
    destinationPort: string | core.StringOut;
    direction: string | core.StringOut;
    protocol: string | core.StringOut;
    source: string | core.StringOut;
    sourcePort: string | core.StringOut;
}
export declare class Header extends core.Schema<HeaderArgs> {
    destination: string | core.StringOut;
    destinationPort: string | core.StringOut;
    direction: string | core.StringOut;
    protocol: string | core.StringOut;
    source: string | core.StringOut;
    sourcePort: string | core.StringOut;
}
export interface RuleOptionArgs extends core.SchemaArgs {
    keyword: string | core.StringOut;
    settings?: core.Array<string> | core.ArrayOut<core.StringOut>;
}
export declare class RuleOption extends core.Schema<RuleOptionArgs> {
    keyword: string | core.StringOut;
    settings?: core.Array<string> | core.ArrayOut<core.StringOut>;
}
export interface StatefulRuleArgs extends core.SchemaArgs {
    action: string | core.StringOut;
    header: Header;
    ruleOption: core.Array<RuleOption> | core.ArrayOut<RuleOption>;
}
export declare class StatefulRule extends core.Schema<StatefulRuleArgs> {
    action: string | core.StringOut;
    header: Header;
    ruleOption: core.Array<RuleOption> | core.ArrayOut<RuleOption>;
}
export interface RulesSourceArgs extends core.SchemaArgs {
    rulesSourceList?: RulesSourceList;
    rulesString?: string | core.StringOut;
    statefulRule?: core.Array<StatefulRule> | core.ArrayOut<StatefulRule>;
    statelessRulesAndCustomActions?: StatelessRulesAndCustomActions;
}
export declare class RulesSource extends core.Schema<RulesSourceArgs> {
    rulesSourceList?: RulesSourceList;
    rulesString?: string | core.StringOut;
    statefulRule?: core.Array<StatefulRule> | core.ArrayOut<StatefulRule>;
    statelessRulesAndCustomActions?: StatelessRulesAndCustomActions;
}
export interface StatefulRuleOptionsArgs extends core.SchemaArgs {
    ruleOrder: string | core.StringOut;
}
export declare class StatefulRuleOptions extends core.Schema<StatefulRuleOptionsArgs> {
    ruleOrder: string | core.StringOut;
}
export interface IpSetArgs extends core.SchemaArgs {
    definition: core.Array<string> | core.ArrayOut<core.StringOut>;
}
export declare class IpSet extends core.Schema<IpSetArgs> {
    definition: core.Array<string> | core.ArrayOut<core.StringOut>;
}
export interface IpSetsArgs extends core.SchemaArgs {
    ipSet: IpSet;
    key: string | core.StringOut;
}
export declare class IpSets extends core.Schema<IpSetsArgs> {
    ipSet: IpSet;
    key: string | core.StringOut;
}
export interface PortSetArgs extends core.SchemaArgs {
    definition: core.Array<string> | core.ArrayOut<core.StringOut>;
}
export declare class PortSet extends core.Schema<PortSetArgs> {
    definition: core.Array<string> | core.ArrayOut<core.StringOut>;
}
export interface PortSetsArgs extends core.SchemaArgs {
    key: string | core.StringOut;
    portSet: PortSet;
}
export declare class PortSets extends core.Schema<PortSetsArgs> {
    key: string | core.StringOut;
    portSet: PortSet;
}
export interface RuleVariablesArgs extends core.SchemaArgs {
    ipSets?: core.Array<IpSets> | core.ArrayOut<IpSets>;
    portSets?: core.Array<PortSets> | core.ArrayOut<PortSets>;
}
export declare class RuleVariables extends core.Schema<RuleVariablesArgs> {
    ipSets?: core.Array<IpSets> | core.ArrayOut<IpSets>;
    portSets?: core.Array<PortSets> | core.ArrayOut<PortSets>;
}
export interface RuleGroupBlkArgs extends core.SchemaArgs {
    ruleVariables?: RuleVariables;
    rulesSource: RulesSource;
    statefulRuleOptions?: StatefulRuleOptions;
}
export declare class RuleGroupBlk extends core.Schema<RuleGroupBlkArgs> {
    ruleVariables?: RuleVariables;
    rulesSource: RulesSource;
    statefulRuleOptions?: StatefulRuleOptions;
}
export interface RuleGroupArgs extends core.ResourceArgs {
    capacity: number | core.NumberOut;
    description?: string | core.StringOut;
    name: string | core.StringOut;
    ruleGroup?: RuleGroupBlk;
    rules?: string | core.StringOut;
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    tagsAll?: core.Map<string, string> | core.MapOut<core.StringOut>;
    type: string | core.StringOut;
}
export declare class RuleGroup extends core.Resource<RuleGroupArgs> {
    arn: string | core.StringOut;
    capacity: number | core.NumberOut;
    description?: string | core.StringOut;
    id: string | core.StringOut;
    name: string | core.StringOut;
    ruleGroup?: RuleGroupBlk;
    rules?: string | core.StringOut;
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    tagsAll?: core.Map<string, string> | core.MapOut<core.StringOut>;
    type: string | core.StringOut;
    updateToken: string | core.StringOut;
    constructor(name: string, args?: RuleGroupArgs);
    getNamespace(): string;
}
//# sourceMappingURL=rule_group.d.ts.map