// generated from terraform resource schema
import * as cdktf from 'cdktf';
export class DataAwsResourcegroupstaggingapiResourcesResourceTagMappingListComplianceDetails extends cdktf.ComplexComputedList {
    // compliance_status - computed: true, optional: false, required: false
    get complianceStatus() {
        return this.getBooleanAttribute('compliance_status');
    }
    // keys_with_noncompliant_values - computed: true, optional: false, required: false
    get keysWithNoncompliantValues() {
        return cdktf.Fn.tolist(this.getListAttribute('keys_with_noncompliant_values'));
    }
    // non_compliant_keys - computed: true, optional: false, required: false
    get nonCompliantKeys() {
        return cdktf.Fn.tolist(this.getListAttribute('non_compliant_keys'));
    }
}
export class DataAwsResourcegroupstaggingapiResourcesResourceTagMappingList extends cdktf.ComplexComputedList {
    // compliance_details - computed: true, optional: false, required: false
    get complianceDetails() {
        // Getting the computed value is not yet implemented
        return this.interpolationForAttribute('compliance_details');
    }
    // resource_arn - computed: true, optional: false, required: false
    get resourceArn() {
        return this.getStringAttribute('resource_arn');
    }
    // tags - computed: true, optional: false, required: false
    get tags() {
        return this.getStringMapAttribute('tags');
    }
}
export function dataAwsResourcegroupstaggingapiResourcesTagFilterToTerraform(struct) {
    if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) {
        return struct;
    }
    if (cdktf.isComplexElement(struct)) {
        throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration");
    }
    return {
        key: cdktf.stringToTerraform(struct.key),
        values: cdktf.listMapper(cdktf.stringToTerraform)(struct.values),
    };
}
/**
* Represents a {@link https://www.terraform.io/docs/providers/aws/d/resourcegroupstaggingapi_resources aws_resourcegroupstaggingapi_resources}
*/
export class DataAwsResourcegroupstaggingapiResources extends cdktf.TerraformDataSource {
    // =================
    // STATIC PROPERTIES
    // =================
    static tfResourceType = "aws_resourcegroupstaggingapi_resources";
    // ===========
    // INITIALIZER
    // ===========
    /**
    * Create a new {@link https://www.terraform.io/docs/providers/aws/d/resourcegroupstaggingapi_resources aws_resourcegroupstaggingapi_resources} Data Source
    *
    * @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 DataAwsResourcegroupstaggingapiResourcesConfig = {}
    */
    constructor(scope, id, config = {}) {
        super(scope, id, {
            terraformResourceType: 'aws_resourcegroupstaggingapi_resources',
            terraformGeneratorMetadata: {
                providerName: 'aws'
            },
            provider: config.provider,
            dependsOn: config.dependsOn,
            count: config.count,
            lifecycle: config.lifecycle
        });
        this._excludeCompliantResources = config.excludeCompliantResources;
        this._includeComplianceDetails = config.includeComplianceDetails;
        this._resourceArnList = config.resourceArnList;
        this._resourceTypeFilters = config.resourceTypeFilters;
        this._tagFilter = config.tagFilter;
    }
    // ==========
    // ATTRIBUTES
    // ==========
    // exclude_compliant_resources - computed: false, optional: true, required: false
    _excludeCompliantResources;
    get excludeCompliantResources() {
        return this.getBooleanAttribute('exclude_compliant_resources');
    }
    set excludeCompliantResources(value) {
        this._excludeCompliantResources = value;
    }
    resetExcludeCompliantResources() {
        this._excludeCompliantResources = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get excludeCompliantResourcesInput() {
        return this._excludeCompliantResources;
    }
    // id - computed: true, optional: true, required: false
    get id() {
        return this.getStringAttribute('id');
    }
    // include_compliance_details - computed: false, optional: true, required: false
    _includeComplianceDetails;
    get includeComplianceDetails() {
        return this.getBooleanAttribute('include_compliance_details');
    }
    set includeComplianceDetails(value) {
        this._includeComplianceDetails = value;
    }
    resetIncludeComplianceDetails() {
        this._includeComplianceDetails = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get includeComplianceDetailsInput() {
        return this._includeComplianceDetails;
    }
    // resource_arn_list - computed: false, optional: true, required: false
    _resourceArnList;
    get resourceArnList() {
        return cdktf.Fn.tolist(this.getListAttribute('resource_arn_list'));
    }
    set resourceArnList(value) {
        this._resourceArnList = value;
    }
    resetResourceArnList() {
        this._resourceArnList = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get resourceArnListInput() {
        return this._resourceArnList;
    }
    // resource_tag_mapping_list - computed: true, optional: false, required: false
    resourceTagMappingList(index) {
        return new DataAwsResourcegroupstaggingapiResourcesResourceTagMappingList(this, 'resource_tag_mapping_list', index, false);
    }
    // resource_type_filters - computed: false, optional: true, required: false
    _resourceTypeFilters;
    get resourceTypeFilters() {
        return cdktf.Fn.tolist(this.getListAttribute('resource_type_filters'));
    }
    set resourceTypeFilters(value) {
        this._resourceTypeFilters = value;
    }
    resetResourceTypeFilters() {
        this._resourceTypeFilters = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get resourceTypeFiltersInput() {
        return this._resourceTypeFilters;
    }
    // tag_filter - computed: false, optional: true, required: false
    _tagFilter;
    get tagFilter() {
        // Getting the computed value is not yet implemented
        return this.interpolationForAttribute('tag_filter');
    }
    set tagFilter(value) {
        this._tagFilter = value;
    }
    resetTagFilter() {
        this._tagFilter = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get tagFilterInput() {
        return this._tagFilter;
    }
    // =========
    // SYNTHESIS
    // =========
    synthesizeAttributes() {
        return {
            exclude_compliant_resources: cdktf.booleanToTerraform(this._excludeCompliantResources),
            include_compliance_details: cdktf.booleanToTerraform(this._includeComplianceDetails),
            resource_arn_list: cdktf.listMapper(cdktf.stringToTerraform)(this._resourceArnList),
            resource_type_filters: cdktf.listMapper(cdktf.stringToTerraform)(this._resourceTypeFilters),
            tag_filter: cdktf.listMapper(dataAwsResourcegroupstaggingapiResourcesTagFilterToTerraform)(this._tagFilter),
        };
    }
}
//# sourceMappingURL=data-aws-resourcegroupstaggingapi-resources.js.map