// generated from terraform resource schema
import * as cdktf from 'cdktf';
/**
* Represents a {@link https://www.terraform.io/docs/providers/aws/r/route53_resolver_firewall_rule aws_route53_resolver_firewall_rule}
*/
export class Route53ResolverFirewallRule extends cdktf.TerraformResource {
    // =================
    // STATIC PROPERTIES
    // =================
    static tfResourceType = "aws_route53_resolver_firewall_rule";
    // ===========
    // INITIALIZER
    // ===========
    /**
    * Create a new {@link https://www.terraform.io/docs/providers/aws/r/route53_resolver_firewall_rule aws_route53_resolver_firewall_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 Route53ResolverFirewallRuleConfig
    */
    constructor(scope, id, config) {
        super(scope, id, {
            terraformResourceType: 'aws_route53_resolver_firewall_rule',
            terraformGeneratorMetadata: {
                providerName: 'aws'
            },
            provider: config.provider,
            dependsOn: config.dependsOn,
            count: config.count,
            lifecycle: config.lifecycle
        });
        this._action = config.action;
        this._blockOverrideDnsType = config.blockOverrideDnsType;
        this._blockOverrideDomain = config.blockOverrideDomain;
        this._blockOverrideTtl = config.blockOverrideTtl;
        this._blockResponse = config.blockResponse;
        this._firewallDomainListId = config.firewallDomainListId;
        this._firewallRuleGroupId = config.firewallRuleGroupId;
        this._name = config.name;
        this._priority = config.priority;
    }
    // ==========
    // ATTRIBUTES
    // ==========
    // action - computed: false, optional: false, required: true
    _action;
    get action() {
        return this.getStringAttribute('action');
    }
    set action(value) {
        this._action = value;
    }
    // Temporarily expose input value. Use with caution.
    get actionInput() {
        return this._action;
    }
    // block_override_dns_type - computed: false, optional: true, required: false
    _blockOverrideDnsType;
    get blockOverrideDnsType() {
        return this.getStringAttribute('block_override_dns_type');
    }
    set blockOverrideDnsType(value) {
        this._blockOverrideDnsType = value;
    }
    resetBlockOverrideDnsType() {
        this._blockOverrideDnsType = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get blockOverrideDnsTypeInput() {
        return this._blockOverrideDnsType;
    }
    // block_override_domain - computed: false, optional: true, required: false
    _blockOverrideDomain;
    get blockOverrideDomain() {
        return this.getStringAttribute('block_override_domain');
    }
    set blockOverrideDomain(value) {
        this._blockOverrideDomain = value;
    }
    resetBlockOverrideDomain() {
        this._blockOverrideDomain = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get blockOverrideDomainInput() {
        return this._blockOverrideDomain;
    }
    // block_override_ttl - computed: false, optional: true, required: false
    _blockOverrideTtl;
    get blockOverrideTtl() {
        return this.getNumberAttribute('block_override_ttl');
    }
    set blockOverrideTtl(value) {
        this._blockOverrideTtl = value;
    }
    resetBlockOverrideTtl() {
        this._blockOverrideTtl = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get blockOverrideTtlInput() {
        return this._blockOverrideTtl;
    }
    // block_response - computed: false, optional: true, required: false
    _blockResponse;
    get blockResponse() {
        return this.getStringAttribute('block_response');
    }
    set blockResponse(value) {
        this._blockResponse = value;
    }
    resetBlockResponse() {
        this._blockResponse = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get blockResponseInput() {
        return this._blockResponse;
    }
    // firewall_domain_list_id - computed: false, optional: false, required: true
    _firewallDomainListId;
    get firewallDomainListId() {
        return this.getStringAttribute('firewall_domain_list_id');
    }
    set firewallDomainListId(value) {
        this._firewallDomainListId = value;
    }
    // Temporarily expose input value. Use with caution.
    get firewallDomainListIdInput() {
        return this._firewallDomainListId;
    }
    // firewall_rule_group_id - computed: false, optional: false, required: true
    _firewallRuleGroupId;
    get firewallRuleGroupId() {
        return this.getStringAttribute('firewall_rule_group_id');
    }
    set firewallRuleGroupId(value) {
        this._firewallRuleGroupId = value;
    }
    // Temporarily expose input value. Use with caution.
    get firewallRuleGroupIdInput() {
        return this._firewallRuleGroupId;
    }
    // id - computed: true, optional: true, required: false
    get id() {
        return this.getStringAttribute('id');
    }
    // name - computed: false, optional: false, required: true
    _name;
    get name() {
        return this.getStringAttribute('name');
    }
    set name(value) {
        this._name = value;
    }
    // Temporarily expose input value. Use with caution.
    get nameInput() {
        return this._name;
    }
    // priority - computed: false, optional: false, required: true
    _priority;
    get priority() {
        return this.getNumberAttribute('priority');
    }
    set priority(value) {
        this._priority = value;
    }
    // Temporarily expose input value. Use with caution.
    get priorityInput() {
        return this._priority;
    }
    // =========
    // SYNTHESIS
    // =========
    synthesizeAttributes() {
        return {
            action: cdktf.stringToTerraform(this._action),
            block_override_dns_type: cdktf.stringToTerraform(this._blockOverrideDnsType),
            block_override_domain: cdktf.stringToTerraform(this._blockOverrideDomain),
            block_override_ttl: cdktf.numberToTerraform(this._blockOverrideTtl),
            block_response: cdktf.stringToTerraform(this._blockResponse),
            firewall_domain_list_id: cdktf.stringToTerraform(this._firewallDomainListId),
            firewall_rule_group_id: cdktf.stringToTerraform(this._firewallRuleGroupId),
            name: cdktf.stringToTerraform(this._name),
            priority: cdktf.numberToTerraform(this._priority),
        };
    }
}
//# sourceMappingURL=route53-resolver-firewall-rule.js.map