import * as core from "@terrascript/core"; export interface IpSetArgs extends core.SchemaArgs { definition: core.Array | core.ArrayOut; } export class IpSet extends core.Schema { @core.attr(String, { kind: "array" }) public definition!: core.Array | core.ArrayOut; } export interface IpSetsArgs extends core.SchemaArgs { ipSet: IpSet; key: string | core.StringOut; } export class IpSets extends core.Schema { @core.attr(IpSet) public ipSet!: IpSet; @core.attr(String) public key!: string | core.StringOut; } export interface PortSetArgs extends core.SchemaArgs { definition: core.Array | core.ArrayOut; } export class PortSet extends core.Schema { @core.attr(String, { kind: "array" }) public definition!: core.Array | core.ArrayOut; } export interface PortSetsArgs extends core.SchemaArgs { key: string | core.StringOut; portSet: PortSet; } export class PortSets extends core.Schema { @core.attr(String) public key!: string | core.StringOut; @core.attr(PortSet) public portSet!: PortSet; } export interface RuleVariablesArgs extends core.SchemaArgs { ipSets?: core.Array | core.ArrayOut; portSets?: core.Array | core.ArrayOut; } export class RuleVariables extends core.Schema { @core.attr(IpSets, { kind: "array" }) public ipSets?: core.Array | core.ArrayOut; @core.attr(PortSets, { kind: "array" }) public portSets?: core.Array | core.ArrayOut; } 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 class Header extends core.Schema { @core.attr(String) public destination!: string | core.StringOut; @core.attr(String) public destinationPort!: string | core.StringOut; @core.attr(String) public direction!: string | core.StringOut; @core.attr(String) public protocol!: string | core.StringOut; @core.attr(String) public source!: string | core.StringOut; @core.attr(String) public sourcePort!: string | core.StringOut; } export interface RuleOptionArgs extends core.SchemaArgs { keyword: string | core.StringOut; settings?: core.Array | core.ArrayOut; } export class RuleOption extends core.Schema { @core.attr(String) public keyword!: string | core.StringOut; @core.attr(String, { kind: "array" }) public settings?: core.Array | core.ArrayOut; } export interface StatefulRuleArgs extends core.SchemaArgs { action: string | core.StringOut; header: Header; ruleOption: core.Array | core.ArrayOut; } export class StatefulRule extends core.Schema { @core.attr(String) public action!: string | core.StringOut; @core.attr(Header) public header!: Header; @core.attr(RuleOption, { kind: "array" }) public ruleOption!: core.Array | core.ArrayOut; } export interface DimensionArgs extends core.SchemaArgs { value: string | core.StringOut; } export class Dimension extends core.Schema { @core.attr(String) public value!: string | core.StringOut; } export interface PublishMetricActionArgs extends core.SchemaArgs { dimension: core.Array | core.ArrayOut; } export class PublishMetricAction extends core.Schema { @core.attr(Dimension, { kind: "array" }) public dimension!: core.Array | core.ArrayOut; } export interface ActionDefinitionArgs extends core.SchemaArgs { publishMetricAction: PublishMetricAction; } export class ActionDefinition extends core.Schema { @core.attr(PublishMetricAction) public publishMetricAction!: PublishMetricAction; } export interface CustomActionArgs extends core.SchemaArgs { actionDefinition: ActionDefinition; actionName: string | core.StringOut; } export class CustomAction extends core.Schema { @core.attr(ActionDefinition) public actionDefinition!: ActionDefinition; @core.attr(String) public actionName!: string | core.StringOut; } export interface DestinationPortArgs extends core.SchemaArgs { fromPort: number | core.NumberOut; toPort?: number | core.NumberOut; } export class DestinationPort extends core.Schema { @core.attr(Number) public fromPort!: number | core.NumberOut; @core.attr(Number) public toPort?: number | core.NumberOut; } export interface SourceArgs extends core.SchemaArgs { addressDefinition: string | core.StringOut; } export class Source extends core.Schema { @core.attr(String) public addressDefinition!: string | core.StringOut; } export interface SourcePortArgs extends core.SchemaArgs { fromPort: number | core.NumberOut; toPort?: number | core.NumberOut; } export class SourcePort extends core.Schema { @core.attr(Number) public fromPort!: number | core.NumberOut; @core.attr(Number) public toPort?: number | core.NumberOut; } export interface TcpFlagArgs extends core.SchemaArgs { flags: core.Array | core.ArrayOut; masks?: core.Array | core.ArrayOut; } export class TcpFlag extends core.Schema { @core.attr(String, { kind: "array" }) public flags!: core.Array | core.ArrayOut; @core.attr(String, { kind: "array" }) public masks?: core.Array | core.ArrayOut; } export interface DestinationArgs extends core.SchemaArgs { addressDefinition: string | core.StringOut; } export class Destination extends core.Schema { @core.attr(String) public addressDefinition!: string | core.StringOut; } export interface MatchAttributesArgs extends core.SchemaArgs { destination?: core.Array | core.ArrayOut; destinationPort?: | core.Array | core.ArrayOut; protocols?: core.Array | core.ArrayOut; source?: core.Array | core.ArrayOut; sourcePort?: core.Array | core.ArrayOut; tcpFlag?: core.Array | core.ArrayOut; } export class MatchAttributes extends core.Schema { @core.attr(Destination, { kind: "array" }) public destination?: core.Array | core.ArrayOut; @core.attr(DestinationPort, { kind: "array" }) public destinationPort?: | core.Array | core.ArrayOut; @core.attr(Number, { kind: "array" }) public protocols?: core.Array | core.ArrayOut; @core.attr(Source, { kind: "array" }) public source?: core.Array | core.ArrayOut; @core.attr(SourcePort, { kind: "array" }) public sourcePort?: core.Array | core.ArrayOut; @core.attr(TcpFlag, { kind: "array" }) public tcpFlag?: core.Array | core.ArrayOut; } export interface RuleDefinitionArgs extends core.SchemaArgs { actions: core.Array | core.ArrayOut; matchAttributes: MatchAttributes; } export class RuleDefinition extends core.Schema { @core.attr(String, { kind: "array" }) public actions!: core.Array | core.ArrayOut; @core.attr(MatchAttributes) public matchAttributes!: MatchAttributes; } export interface StatelessRuleArgs extends core.SchemaArgs { priority: number | core.NumberOut; ruleDefinition: RuleDefinition; } export class StatelessRule extends core.Schema { @core.attr(Number) public priority!: number | core.NumberOut; @core.attr(RuleDefinition) public ruleDefinition!: RuleDefinition; } export interface StatelessRulesAndCustomActionsArgs extends core.SchemaArgs { customAction?: core.Array | core.ArrayOut; statelessRule: core.Array | core.ArrayOut; } export class StatelessRulesAndCustomActions extends core.Schema { @core.attr(CustomAction, { kind: "array" }) public customAction?: core.Array | core.ArrayOut; @core.attr(StatelessRule, { kind: "array" }) public statelessRule!: | core.Array | core.ArrayOut; } export interface RulesSourceListArgs extends core.SchemaArgs { generatedRulesType: string | core.StringOut; targetTypes: core.Array | core.ArrayOut; targets: core.Array | core.ArrayOut; } export class RulesSourceList extends core.Schema { @core.attr(String) public generatedRulesType!: string | core.StringOut; @core.attr(String, { kind: "array" }) public targetTypes!: core.Array | core.ArrayOut; @core.attr(String, { kind: "array" }) public targets!: core.Array | core.ArrayOut; } export interface RulesSourceArgs extends core.SchemaArgs { rulesSourceList?: RulesSourceList; rulesString?: string | core.StringOut; statefulRule?: core.Array | core.ArrayOut; statelessRulesAndCustomActions?: StatelessRulesAndCustomActions; } export class RulesSource extends core.Schema { @core.attr(RulesSourceList) public rulesSourceList?: RulesSourceList; @core.attr(String) public rulesString?: string | core.StringOut; @core.attr(StatefulRule, { kind: "array" }) public statefulRule?: core.Array | core.ArrayOut; @core.attr(StatelessRulesAndCustomActions) public statelessRulesAndCustomActions?: StatelessRulesAndCustomActions; } export interface StatefulRuleOptionsArgs extends core.SchemaArgs { ruleOrder: string | core.StringOut; } export class StatefulRuleOptions extends core.Schema { @core.attr(String) public ruleOrder!: string | core.StringOut; } export interface RuleGroupBlkArgs extends core.SchemaArgs { ruleVariables?: RuleVariables; rulesSource: RulesSource; statefulRuleOptions?: StatefulRuleOptions; } export class RuleGroupBlk extends core.Schema { @core.attr(RuleVariables) public ruleVariables?: RuleVariables; @core.attr(RulesSource) public rulesSource!: RulesSource; @core.attr(StatefulRuleOptions) public statefulRuleOptions?: StatefulRuleOptions; } export interface RuleGroupArgs extends core.ResourceArgs { /** * (Required, Forces new resource) The maximum number of operating resources that this rule group can u * se. For a stateless rule group, the capacity required is the sum of the capacity requirements of the * individual rules. For a stateful rule group, the minimum capacity required is the number of individ * ual rules. */ capacity: number | core.NumberOut; /** * (Optional) A friendly description of the rule group. */ description?: string | core.StringOut; /** * (Required, Forces new resource) A friendly name of the rule group. */ name: string | core.StringOut; /** * (Optional) A configuration block that defines the rule group rules. Required unless `rules` is speci * fied. See [Rule Group](#rule-group) below for details. */ ruleGroup?: RuleGroupBlk; /** * (Optional) The stateful rule group rules specifications in Suricata file format, with one rule per l * ine. Use this to import your existing Suricata compatible rule groups. Required unless `rule_group` * is specified. */ rules?: string | core.StringOut; /** * (Optional) A map of key:value pairs to associate with the resource. If configured with a provider [` * default_tags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs * #default_tags-configuration-block) present, tags with matching keys will overwrite those defined at * the provider-level. */ tags?: core.Map | core.MapOut; /** * A map of tags assigned to the resource, including those inherited from the provider [`default_tags` * configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags- * configuration-block). */ tagsAll?: core.Map | core.MapOut; /** * (Required) Whether the rule group is stateless (containing stateless rules) or stateful (containing * stateful rules). Valid values include: `STATEFUL` or `STATELESS`. */ type: string | core.StringOut; } export class RuleGroup extends core.Resource { /** * The Amazon Resource Name (ARN) that identifies the rule group. */ @core.attr(String, { computed: true }) public arn!: string | core.StringOut; /** * (Required, Forces new resource) The maximum number of operating resources that this rule group can u * se. For a stateless rule group, the capacity required is the sum of the capacity requirements of the * individual rules. For a stateful rule group, the minimum capacity required is the number of individ * ual rules. */ @core.attr(Number) public capacity!: number | core.NumberOut; /** * (Optional) A friendly description of the rule group. */ @core.attr(String) public description?: string | core.StringOut; /** * The Amazon Resource Name (ARN) that identifies the rule group. */ @core.attr(String, { computed: true }) public id!: string | core.StringOut; /** * (Required, Forces new resource) A friendly name of the rule group. */ @core.attr(String) public name!: string | core.StringOut; /** * (Optional) A configuration block that defines the rule group rules. Required unless `rules` is speci * fied. See [Rule Group](#rule-group) below for details. */ @core.attr(RuleGroupBlk, { computed: true }) public ruleGroup?: RuleGroupBlk; /** * (Optional) The stateful rule group rules specifications in Suricata file format, with one rule per l * ine. Use this to import your existing Suricata compatible rule groups. Required unless `rule_group` * is specified. */ @core.attr(String) public rules?: string | core.StringOut; /** * (Optional) A map of key:value pairs to associate with the resource. If configured with a provider [` * default_tags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs * #default_tags-configuration-block) present, tags with matching keys will overwrite those defined at * the provider-level. */ @core.attr(String, { kind: "map" }) public tags?: core.Map | core.MapOut; /** * A map of tags assigned to the resource, including those inherited from the provider [`default_tags` * configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags- * configuration-block). */ @core.attr(String, { computed: true, kind: "map" }) public tagsAll?: core.Map | core.MapOut; /** * (Required) Whether the rule group is stateless (containing stateless rules) or stateful (containing * stateful rules). Valid values include: `STATEFUL` or `STATELESS`. */ @core.attr(String) public type!: string | core.StringOut; /** * A string token used when updating the rule group. */ @core.attr(String, { computed: true }) public updateToken!: string | core.StringOut; constructor(name: string, args?: RuleGroupArgs) { super(name, "aws_networkfirewall_rule_group", args); } public override getNamespace(): string { return "aws_networkfirewall"; } }