// generated from terraform resource schema
import * as cdktf from 'cdktf';
/**
* Represents a {@link https://www.terraform.io/docs/providers/aws/r/securityhub_standards_control aws_securityhub_standards_control}
*/
export class SecurityhubStandardsControl extends cdktf.TerraformResource {
    // =================
    // STATIC PROPERTIES
    // =================
    static tfResourceType = "aws_securityhub_standards_control";
    // ===========
    // INITIALIZER
    // ===========
    /**
    * Create a new {@link https://www.terraform.io/docs/providers/aws/r/securityhub_standards_control aws_securityhub_standards_control} 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 SecurityhubStandardsControlConfig
    */
    constructor(scope, id, config) {
        super(scope, id, {
            terraformResourceType: 'aws_securityhub_standards_control',
            terraformGeneratorMetadata: {
                providerName: 'aws'
            },
            provider: config.provider,
            dependsOn: config.dependsOn,
            count: config.count,
            lifecycle: config.lifecycle
        });
        this._controlStatus = config.controlStatus;
        this._disabledReason = config.disabledReason;
        this._standardsControlArn = config.standardsControlArn;
    }
    // ==========
    // ATTRIBUTES
    // ==========
    // control_id - computed: true, optional: false, required: false
    get controlId() {
        return this.getStringAttribute('control_id');
    }
    // control_status - computed: false, optional: false, required: true
    _controlStatus;
    get controlStatus() {
        return this.getStringAttribute('control_status');
    }
    set controlStatus(value) {
        this._controlStatus = value;
    }
    // Temporarily expose input value. Use with caution.
    get controlStatusInput() {
        return this._controlStatus;
    }
    // control_status_updated_at - computed: true, optional: false, required: false
    get controlStatusUpdatedAt() {
        return this.getStringAttribute('control_status_updated_at');
    }
    // description - computed: true, optional: false, required: false
    get description() {
        return this.getStringAttribute('description');
    }
    // disabled_reason - computed: true, optional: true, required: false
    _disabledReason;
    get disabledReason() {
        return this.getStringAttribute('disabled_reason');
    }
    set disabledReason(value) {
        this._disabledReason = value;
    }
    resetDisabledReason() {
        this._disabledReason = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get disabledReasonInput() {
        return this._disabledReason;
    }
    // id - computed: true, optional: true, required: false
    get id() {
        return this.getStringAttribute('id');
    }
    // related_requirements - computed: true, optional: false, required: false
    get relatedRequirements() {
        return this.getListAttribute('related_requirements');
    }
    // remediation_url - computed: true, optional: false, required: false
    get remediationUrl() {
        return this.getStringAttribute('remediation_url');
    }
    // severity_rating - computed: true, optional: false, required: false
    get severityRating() {
        return this.getStringAttribute('severity_rating');
    }
    // standards_control_arn - computed: false, optional: false, required: true
    _standardsControlArn;
    get standardsControlArn() {
        return this.getStringAttribute('standards_control_arn');
    }
    set standardsControlArn(value) {
        this._standardsControlArn = value;
    }
    // Temporarily expose input value. Use with caution.
    get standardsControlArnInput() {
        return this._standardsControlArn;
    }
    // title - computed: true, optional: false, required: false
    get title() {
        return this.getStringAttribute('title');
    }
    // =========
    // SYNTHESIS
    // =========
    synthesizeAttributes() {
        return {
            control_status: cdktf.stringToTerraform(this._controlStatus),
            disabled_reason: cdktf.stringToTerraform(this._disabledReason),
            standards_control_arn: cdktf.stringToTerraform(this._standardsControlArn),
        };
    }
}
//# sourceMappingURL=securityhub-standards-control.js.map