// generated from terraform resource schema
import * as cdktf from 'cdktf';
/**
* Represents a {@link https://www.terraform.io/docs/providers/aws/r/network_acl_rule aws_network_acl_rule}
*/
export class NetworkAclRule extends cdktf.TerraformResource {
    // =================
    // STATIC PROPERTIES
    // =================
    static tfResourceType = "aws_network_acl_rule";
    // ===========
    // INITIALIZER
    // ===========
    /**
    * Create a new {@link https://www.terraform.io/docs/providers/aws/r/network_acl_rule aws_network_acl_rule} Resource
    *
    * @param scope The scope in which to define this construct
    * @param id The scoped construct ID. Must be unique amongst siblings in the same scope
    * @param options NetworkAclRuleConfig
    */
    constructor(scope, id, config) {
        super(scope, id, {
            terraformResourceType: 'aws_network_acl_rule',
            terraformGeneratorMetadata: {
                providerName: 'aws'
            },
            provider: config.provider,
            dependsOn: config.dependsOn,
            count: config.count,
            lifecycle: config.lifecycle
        });
        this._cidrBlock = config.cidrBlock;
        this._egress = config.egress;
        this._fromPort = config.fromPort;
        this._icmpCode = config.icmpCode;
        this._icmpType = config.icmpType;
        this._ipv6CidrBlock = config.ipv6CidrBlock;
        this._networkAclId = config.networkAclId;
        this._protocol = config.protocol;
        this._ruleAction = config.ruleAction;
        this._ruleNumber = config.ruleNumber;
        this._toPort = config.toPort;
    }
    // ==========
    // ATTRIBUTES
    // ==========
    // cidr_block - computed: false, optional: true, required: false
    _cidrBlock;
    get cidrBlock() {
        return this.getStringAttribute('cidr_block');
    }
    set cidrBlock(value) {
        this._cidrBlock = value;
    }
    resetCidrBlock() {
        this._cidrBlock = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get cidrBlockInput() {
        return this._cidrBlock;
    }
    // egress - computed: false, optional: true, required: false
    _egress;
    get egress() {
        return this.getBooleanAttribute('egress');
    }
    set egress(value) {
        this._egress = value;
    }
    resetEgress() {
        this._egress = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get egressInput() {
        return this._egress;
    }
    // from_port - computed: false, optional: true, required: false
    _fromPort;
    get fromPort() {
        return this.getNumberAttribute('from_port');
    }
    set fromPort(value) {
        this._fromPort = value;
    }
    resetFromPort() {
        this._fromPort = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get fromPortInput() {
        return this._fromPort;
    }
    // icmp_code - computed: false, optional: true, required: false
    _icmpCode;
    get icmpCode() {
        return this.getNumberAttribute('icmp_code');
    }
    set icmpCode(value) {
        this._icmpCode = value;
    }
    resetIcmpCode() {
        this._icmpCode = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get icmpCodeInput() {
        return this._icmpCode;
    }
    // icmp_type - computed: false, optional: true, required: false
    _icmpType;
    get icmpType() {
        return this.getNumberAttribute('icmp_type');
    }
    set icmpType(value) {
        this._icmpType = value;
    }
    resetIcmpType() {
        this._icmpType = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get icmpTypeInput() {
        return this._icmpType;
    }
    // id - computed: true, optional: true, required: false
    get id() {
        return this.getStringAttribute('id');
    }
    // ipv6_cidr_block - computed: false, optional: true, required: false
    _ipv6CidrBlock;
    get ipv6CidrBlock() {
        return this.getStringAttribute('ipv6_cidr_block');
    }
    set ipv6CidrBlock(value) {
        this._ipv6CidrBlock = value;
    }
    resetIpv6CidrBlock() {
        this._ipv6CidrBlock = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get ipv6CidrBlockInput() {
        return this._ipv6CidrBlock;
    }
    // network_acl_id - computed: false, optional: false, required: true
    _networkAclId;
    get networkAclId() {
        return this.getStringAttribute('network_acl_id');
    }
    set networkAclId(value) {
        this._networkAclId = value;
    }
    // Temporarily expose input value. Use with caution.
    get networkAclIdInput() {
        return this._networkAclId;
    }
    // protocol - computed: false, optional: false, required: true
    _protocol;
    get protocol() {
        return this.getStringAttribute('protocol');
    }
    set protocol(value) {
        this._protocol = value;
    }
    // Temporarily expose input value. Use with caution.
    get protocolInput() {
        return this._protocol;
    }
    // rule_action - computed: false, optional: false, required: true
    _ruleAction;
    get ruleAction() {
        return this.getStringAttribute('rule_action');
    }
    set ruleAction(value) {
        this._ruleAction = value;
    }
    // Temporarily expose input value. Use with caution.
    get ruleActionInput() {
        return this._ruleAction;
    }
    // rule_number - computed: false, optional: false, required: true
    _ruleNumber;
    get ruleNumber() {
        return this.getNumberAttribute('rule_number');
    }
    set ruleNumber(value) {
        this._ruleNumber = value;
    }
    // Temporarily expose input value. Use with caution.
    get ruleNumberInput() {
        return this._ruleNumber;
    }
    // to_port - computed: false, optional: true, required: false
    _toPort;
    get toPort() {
        return this.getNumberAttribute('to_port');
    }
    set toPort(value) {
        this._toPort = value;
    }
    resetToPort() {
        this._toPort = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get toPortInput() {
        return this._toPort;
    }
    // =========
    // SYNTHESIS
    // =========
    synthesizeAttributes() {
        return {
            cidr_block: cdktf.stringToTerraform(this._cidrBlock),
            egress: cdktf.booleanToTerraform(this._egress),
            from_port: cdktf.numberToTerraform(this._fromPort),
            icmp_code: cdktf.numberToTerraform(this._icmpCode),
            icmp_type: cdktf.numberToTerraform(this._icmpType),
            ipv6_cidr_block: cdktf.stringToTerraform(this._ipv6CidrBlock),
            network_acl_id: cdktf.stringToTerraform(this._networkAclId),
            protocol: cdktf.stringToTerraform(this._protocol),
            rule_action: cdktf.stringToTerraform(this._ruleAction),
            rule_number: cdktf.numberToTerraform(this._ruleNumber),
            to_port: cdktf.numberToTerraform(this._toPort),
        };
    }
}
//# sourceMappingURL=network-acl-rule.js.map