"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    var desc = Object.getOwnPropertyDescriptor(m, k);
    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
      desc = { enumerable: true, get: function() { return m[k]; } };
    }
    Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
    Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
    o["default"] = v;
});
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
    return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __importStar = (this && this.__importStar) || function (mod) {
    if (mod && mod.__esModule) return mod;
    var result = {};
    if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
    __setModuleDefault(result, mod);
    return result;
};
var __metadata = (this && this.__metadata) || function (k, v) {
    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.RuleGroup = exports.RuleGroupBlk = exports.RuleVariables = exports.PortSets = exports.PortSet = exports.IpSets = exports.IpSet = exports.StatefulRuleOptions = exports.RulesSource = exports.StatefulRule = exports.RuleOption = exports.Header = exports.RulesSourceList = exports.StatelessRulesAndCustomActions = exports.StatelessRule = exports.RuleDefinition = exports.MatchAttributes = exports.DestinationPort = exports.Destination = exports.TcpFlag = exports.SourcePort = exports.Source = exports.CustomAction = exports.ActionDefinition = exports.PublishMetricAction = exports.Dimension = void 0;
const core = __importStar(require("@terrascript/core"));
class Dimension extends core.Schema {
}
__decorate([
    core.attr(String),
    __metadata("design:type", Object)
], Dimension.prototype, "value", void 0);
exports.Dimension = Dimension;
class PublishMetricAction extends core.Schema {
}
__decorate([
    core.attr(Dimension, { kind: "array" }),
    __metadata("design:type", Object)
], PublishMetricAction.prototype, "dimension", void 0);
exports.PublishMetricAction = PublishMetricAction;
class ActionDefinition extends core.Schema {
}
__decorate([
    core.attr(PublishMetricAction),
    __metadata("design:type", PublishMetricAction)
], ActionDefinition.prototype, "publishMetricAction", void 0);
exports.ActionDefinition = ActionDefinition;
class CustomAction extends core.Schema {
}
__decorate([
    core.attr(ActionDefinition),
    __metadata("design:type", ActionDefinition)
], CustomAction.prototype, "actionDefinition", void 0);
__decorate([
    core.attr(String),
    __metadata("design:type", Object)
], CustomAction.prototype, "actionName", void 0);
exports.CustomAction = CustomAction;
class Source extends core.Schema {
}
__decorate([
    core.attr(String),
    __metadata("design:type", Object)
], Source.prototype, "addressDefinition", void 0);
exports.Source = Source;
class SourcePort extends core.Schema {
}
__decorate([
    core.attr(Number),
    __metadata("design:type", Object)
], SourcePort.prototype, "fromPort", void 0);
__decorate([
    core.attr(Number),
    __metadata("design:type", Object)
], SourcePort.prototype, "toPort", void 0);
exports.SourcePort = SourcePort;
class TcpFlag extends core.Schema {
}
__decorate([
    core.attr(String, { kind: "array" }),
    __metadata("design:type", Object)
], TcpFlag.prototype, "flags", void 0);
__decorate([
    core.attr(String, { kind: "array" }),
    __metadata("design:type", Object)
], TcpFlag.prototype, "masks", void 0);
exports.TcpFlag = TcpFlag;
class Destination extends core.Schema {
}
__decorate([
    core.attr(String),
    __metadata("design:type", Object)
], Destination.prototype, "addressDefinition", void 0);
exports.Destination = Destination;
class DestinationPort extends core.Schema {
}
__decorate([
    core.attr(Number),
    __metadata("design:type", Object)
], DestinationPort.prototype, "fromPort", void 0);
__decorate([
    core.attr(Number),
    __metadata("design:type", Object)
], DestinationPort.prototype, "toPort", void 0);
exports.DestinationPort = DestinationPort;
class MatchAttributes extends core.Schema {
}
__decorate([
    core.attr(Destination, { kind: "array" }),
    __metadata("design:type", Object)
], MatchAttributes.prototype, "destination", void 0);
__decorate([
    core.attr(DestinationPort, { kind: "array" }),
    __metadata("design:type", Object)
], MatchAttributes.prototype, "destinationPort", void 0);
__decorate([
    core.attr(Number, { kind: "array" }),
    __metadata("design:type", Object)
], MatchAttributes.prototype, "protocols", void 0);
__decorate([
    core.attr(Source, { kind: "array" }),
    __metadata("design:type", Object)
], MatchAttributes.prototype, "source", void 0);
__decorate([
    core.attr(SourcePort, { kind: "array" }),
    __metadata("design:type", Object)
], MatchAttributes.prototype, "sourcePort", void 0);
__decorate([
    core.attr(TcpFlag, { kind: "array" }),
    __metadata("design:type", Object)
], MatchAttributes.prototype, "tcpFlag", void 0);
exports.MatchAttributes = MatchAttributes;
class RuleDefinition extends core.Schema {
}
__decorate([
    core.attr(String, { kind: "array" }),
    __metadata("design:type", Object)
], RuleDefinition.prototype, "actions", void 0);
__decorate([
    core.attr(MatchAttributes),
    __metadata("design:type", MatchAttributes)
], RuleDefinition.prototype, "matchAttributes", void 0);
exports.RuleDefinition = RuleDefinition;
class StatelessRule extends core.Schema {
}
__decorate([
    core.attr(Number),
    __metadata("design:type", Object)
], StatelessRule.prototype, "priority", void 0);
__decorate([
    core.attr(RuleDefinition),
    __metadata("design:type", RuleDefinition)
], StatelessRule.prototype, "ruleDefinition", void 0);
exports.StatelessRule = StatelessRule;
class StatelessRulesAndCustomActions extends core.Schema {
}
__decorate([
    core.attr(CustomAction, { kind: "array" }),
    __metadata("design:type", Object)
], StatelessRulesAndCustomActions.prototype, "customAction", void 0);
__decorate([
    core.attr(StatelessRule, { kind: "array" }),
    __metadata("design:type", Object)
], StatelessRulesAndCustomActions.prototype, "statelessRule", void 0);
exports.StatelessRulesAndCustomActions = StatelessRulesAndCustomActions;
class RulesSourceList extends core.Schema {
}
__decorate([
    core.attr(String),
    __metadata("design:type", Object)
], RulesSourceList.prototype, "generatedRulesType", void 0);
__decorate([
    core.attr(String, { kind: "array" }),
    __metadata("design:type", Object)
], RulesSourceList.prototype, "targetTypes", void 0);
__decorate([
    core.attr(String, { kind: "array" }),
    __metadata("design:type", Object)
], RulesSourceList.prototype, "targets", void 0);
exports.RulesSourceList = RulesSourceList;
class Header extends core.Schema {
}
__decorate([
    core.attr(String),
    __metadata("design:type", Object)
], Header.prototype, "destination", void 0);
__decorate([
    core.attr(String),
    __metadata("design:type", Object)
], Header.prototype, "destinationPort", void 0);
__decorate([
    core.attr(String),
    __metadata("design:type", Object)
], Header.prototype, "direction", void 0);
__decorate([
    core.attr(String),
    __metadata("design:type", Object)
], Header.prototype, "protocol", void 0);
__decorate([
    core.attr(String),
    __metadata("design:type", Object)
], Header.prototype, "source", void 0);
__decorate([
    core.attr(String),
    __metadata("design:type", Object)
], Header.prototype, "sourcePort", void 0);
exports.Header = Header;
class RuleOption extends core.Schema {
}
__decorate([
    core.attr(String),
    __metadata("design:type", Object)
], RuleOption.prototype, "keyword", void 0);
__decorate([
    core.attr(String, { kind: "array" }),
    __metadata("design:type", Object)
], RuleOption.prototype, "settings", void 0);
exports.RuleOption = RuleOption;
class StatefulRule extends core.Schema {
}
__decorate([
    core.attr(String),
    __metadata("design:type", Object)
], StatefulRule.prototype, "action", void 0);
__decorate([
    core.attr(Header),
    __metadata("design:type", Header)
], StatefulRule.prototype, "header", void 0);
__decorate([
    core.attr(RuleOption, { kind: "array" }),
    __metadata("design:type", Object)
], StatefulRule.prototype, "ruleOption", void 0);
exports.StatefulRule = StatefulRule;
class RulesSource extends core.Schema {
}
__decorate([
    core.attr(RulesSourceList),
    __metadata("design:type", RulesSourceList)
], RulesSource.prototype, "rulesSourceList", void 0);
__decorate([
    core.attr(String),
    __metadata("design:type", Object)
], RulesSource.prototype, "rulesString", void 0);
__decorate([
    core.attr(StatefulRule, { kind: "array" }),
    __metadata("design:type", Object)
], RulesSource.prototype, "statefulRule", void 0);
__decorate([
    core.attr(StatelessRulesAndCustomActions),
    __metadata("design:type", StatelessRulesAndCustomActions)
], RulesSource.prototype, "statelessRulesAndCustomActions", void 0);
exports.RulesSource = RulesSource;
class StatefulRuleOptions extends core.Schema {
}
__decorate([
    core.attr(String),
    __metadata("design:type", Object)
], StatefulRuleOptions.prototype, "ruleOrder", void 0);
exports.StatefulRuleOptions = StatefulRuleOptions;
class IpSet extends core.Schema {
}
__decorate([
    core.attr(String, { kind: "array" }),
    __metadata("design:type", Object)
], IpSet.prototype, "definition", void 0);
exports.IpSet = IpSet;
class IpSets extends core.Schema {
}
__decorate([
    core.attr(IpSet),
    __metadata("design:type", IpSet)
], IpSets.prototype, "ipSet", void 0);
__decorate([
    core.attr(String),
    __metadata("design:type", Object)
], IpSets.prototype, "key", void 0);
exports.IpSets = IpSets;
class PortSet extends core.Schema {
}
__decorate([
    core.attr(String, { kind: "array" }),
    __metadata("design:type", Object)
], PortSet.prototype, "definition", void 0);
exports.PortSet = PortSet;
class PortSets extends core.Schema {
}
__decorate([
    core.attr(String),
    __metadata("design:type", Object)
], PortSets.prototype, "key", void 0);
__decorate([
    core.attr(PortSet),
    __metadata("design:type", PortSet)
], PortSets.prototype, "portSet", void 0);
exports.PortSets = PortSets;
class RuleVariables extends core.Schema {
}
__decorate([
    core.attr(IpSets, { kind: "array" }),
    __metadata("design:type", Object)
], RuleVariables.prototype, "ipSets", void 0);
__decorate([
    core.attr(PortSets, { kind: "array" }),
    __metadata("design:type", Object)
], RuleVariables.prototype, "portSets", void 0);
exports.RuleVariables = RuleVariables;
class RuleGroupBlk extends core.Schema {
}
__decorate([
    core.attr(RuleVariables),
    __metadata("design:type", RuleVariables)
], RuleGroupBlk.prototype, "ruleVariables", void 0);
__decorate([
    core.attr(RulesSource),
    __metadata("design:type", RulesSource)
], RuleGroupBlk.prototype, "rulesSource", void 0);
__decorate([
    core.attr(StatefulRuleOptions),
    __metadata("design:type", StatefulRuleOptions)
], RuleGroupBlk.prototype, "statefulRuleOptions", void 0);
exports.RuleGroupBlk = RuleGroupBlk;
class RuleGroup extends core.Resource {
    constructor(name, args) {
        super(name, "aws_networkfirewall_rule_group", args);
    }
    getNamespace() {
        return "aws_networkfirewall";
    }
}
__decorate([
    core.attr(String, { computed: true }),
    __metadata("design:type", Object)
], RuleGroup.prototype, "arn", void 0);
__decorate([
    core.attr(Number),
    __metadata("design:type", Object)
], RuleGroup.prototype, "capacity", void 0);
__decorate([
    core.attr(String),
    __metadata("design:type", Object)
], RuleGroup.prototype, "description", void 0);
__decorate([
    core.attr(String, { computed: true }),
    __metadata("design:type", Object)
], RuleGroup.prototype, "id", void 0);
__decorate([
    core.attr(String),
    __metadata("design:type", Object)
], RuleGroup.prototype, "name", void 0);
__decorate([
    core.attr(RuleGroupBlk, { computed: true }),
    __metadata("design:type", RuleGroupBlk)
], RuleGroup.prototype, "ruleGroup", void 0);
__decorate([
    core.attr(String),
    __metadata("design:type", Object)
], RuleGroup.prototype, "rules", void 0);
__decorate([
    core.attr(String, { kind: "map" }),
    __metadata("design:type", Object)
], RuleGroup.prototype, "tags", void 0);
__decorate([
    core.attr(String, { computed: true, kind: "map" }),
    __metadata("design:type", Object)
], RuleGroup.prototype, "tagsAll", void 0);
__decorate([
    core.attr(String),
    __metadata("design:type", Object)
], RuleGroup.prototype, "type", void 0);
__decorate([
    core.attr(String, { computed: true }),
    __metadata("design:type", Object)
], RuleGroup.prototype, "updateToken", void 0);
exports.RuleGroup = RuleGroup;
//# sourceMappingURL=rule_group.js.map