// generated from terraform resource schema
import * as cdktf from 'cdktf';
export class DataAwsWorkspacesDirectorySelfServicePermissions extends cdktf.ComplexComputedList {
    // change_compute_type - computed: true, optional: false, required: false
    get changeComputeType() {
        return this.getBooleanAttribute('change_compute_type');
    }
    // increase_volume_size - computed: true, optional: false, required: false
    get increaseVolumeSize() {
        return this.getBooleanAttribute('increase_volume_size');
    }
    // rebuild_workspace - computed: true, optional: false, required: false
    get rebuildWorkspace() {
        return this.getBooleanAttribute('rebuild_workspace');
    }
    // restart_workspace - computed: true, optional: false, required: false
    get restartWorkspace() {
        return this.getBooleanAttribute('restart_workspace');
    }
    // switch_running_mode - computed: true, optional: false, required: false
    get switchRunningMode() {
        return this.getBooleanAttribute('switch_running_mode');
    }
}
export class DataAwsWorkspacesDirectoryWorkspaceAccessProperties extends cdktf.ComplexComputedList {
    // device_type_android - computed: true, optional: false, required: false
    get deviceTypeAndroid() {
        return this.getStringAttribute('device_type_android');
    }
    // device_type_chromeos - computed: true, optional: false, required: false
    get deviceTypeChromeos() {
        return this.getStringAttribute('device_type_chromeos');
    }
    // device_type_ios - computed: true, optional: false, required: false
    get deviceTypeIos() {
        return this.getStringAttribute('device_type_ios');
    }
    // device_type_linux - computed: true, optional: false, required: false
    get deviceTypeLinux() {
        return this.getStringAttribute('device_type_linux');
    }
    // device_type_osx - computed: true, optional: false, required: false
    get deviceTypeOsx() {
        return this.getStringAttribute('device_type_osx');
    }
    // device_type_web - computed: true, optional: false, required: false
    get deviceTypeWeb() {
        return this.getStringAttribute('device_type_web');
    }
    // device_type_windows - computed: true, optional: false, required: false
    get deviceTypeWindows() {
        return this.getStringAttribute('device_type_windows');
    }
    // device_type_zeroclient - computed: true, optional: false, required: false
    get deviceTypeZeroclient() {
        return this.getStringAttribute('device_type_zeroclient');
    }
}
export class DataAwsWorkspacesDirectoryWorkspaceCreationProperties extends cdktf.ComplexComputedList {
    // custom_security_group_id - computed: true, optional: false, required: false
    get customSecurityGroupId() {
        return this.getStringAttribute('custom_security_group_id');
    }
    // default_ou - computed: true, optional: false, required: false
    get defaultOu() {
        return this.getStringAttribute('default_ou');
    }
    // enable_internet_access - computed: true, optional: false, required: false
    get enableInternetAccess() {
        return this.getBooleanAttribute('enable_internet_access');
    }
    // enable_maintenance_mode - computed: true, optional: false, required: false
    get enableMaintenanceMode() {
        return this.getBooleanAttribute('enable_maintenance_mode');
    }
    // user_enabled_as_local_administrator - computed: true, optional: false, required: false
    get userEnabledAsLocalAdministrator() {
        return this.getBooleanAttribute('user_enabled_as_local_administrator');
    }
}
/**
* Represents a {@link https://www.terraform.io/docs/providers/aws/d/workspaces_directory aws_workspaces_directory}
*/
export class DataAwsWorkspacesDirectory extends cdktf.TerraformDataSource {
    // =================
    // STATIC PROPERTIES
    // =================
    static tfResourceType = "aws_workspaces_directory";
    // ===========
    // INITIALIZER
    // ===========
    /**
    * Create a new {@link https://www.terraform.io/docs/providers/aws/d/workspaces_directory aws_workspaces_directory} 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 DataAwsWorkspacesDirectoryConfig
    */
    constructor(scope, id, config) {
        super(scope, id, {
            terraformResourceType: 'aws_workspaces_directory',
            terraformGeneratorMetadata: {
                providerName: 'aws'
            },
            provider: config.provider,
            dependsOn: config.dependsOn,
            count: config.count,
            lifecycle: config.lifecycle
        });
        this._directoryId = config.directoryId;
        this._tags = config.tags;
    }
    // ==========
    // ATTRIBUTES
    // ==========
    // alias - computed: true, optional: false, required: false
    get alias() {
        return this.getStringAttribute('alias');
    }
    // customer_user_name - computed: true, optional: false, required: false
    get customerUserName() {
        return this.getStringAttribute('customer_user_name');
    }
    // directory_id - computed: false, optional: false, required: true
    _directoryId;
    get directoryId() {
        return this.getStringAttribute('directory_id');
    }
    set directoryId(value) {
        this._directoryId = value;
    }
    // Temporarily expose input value. Use with caution.
    get directoryIdInput() {
        return this._directoryId;
    }
    // directory_name - computed: true, optional: false, required: false
    get directoryName() {
        return this.getStringAttribute('directory_name');
    }
    // directory_type - computed: true, optional: false, required: false
    get directoryType() {
        return this.getStringAttribute('directory_type');
    }
    // dns_ip_addresses - computed: true, optional: false, required: false
    get dnsIpAddresses() {
        return cdktf.Fn.tolist(this.getListAttribute('dns_ip_addresses'));
    }
    // iam_role_id - computed: true, optional: false, required: false
    get iamRoleId() {
        return this.getStringAttribute('iam_role_id');
    }
    // id - computed: true, optional: true, required: false
    get id() {
        return this.getStringAttribute('id');
    }
    // ip_group_ids - computed: true, optional: false, required: false
    get ipGroupIds() {
        return cdktf.Fn.tolist(this.getListAttribute('ip_group_ids'));
    }
    // registration_code - computed: true, optional: false, required: false
    get registrationCode() {
        return this.getStringAttribute('registration_code');
    }
    // self_service_permissions - computed: true, optional: false, required: false
    selfServicePermissions(index) {
        return new DataAwsWorkspacesDirectorySelfServicePermissions(this, 'self_service_permissions', index, false);
    }
    // subnet_ids - computed: true, optional: false, required: false
    get subnetIds() {
        return cdktf.Fn.tolist(this.getListAttribute('subnet_ids'));
    }
    // tags - computed: false, optional: true, required: false
    _tags;
    get tags() {
        return this.getStringMapAttribute('tags');
    }
    set tags(value) {
        this._tags = value;
    }
    resetTags() {
        this._tags = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get tagsInput() {
        return this._tags;
    }
    // workspace_access_properties - computed: true, optional: false, required: false
    workspaceAccessProperties(index) {
        return new DataAwsWorkspacesDirectoryWorkspaceAccessProperties(this, 'workspace_access_properties', index, false);
    }
    // workspace_creation_properties - computed: true, optional: false, required: false
    workspaceCreationProperties(index) {
        return new DataAwsWorkspacesDirectoryWorkspaceCreationProperties(this, 'workspace_creation_properties', index, false);
    }
    // workspace_security_group_id - computed: true, optional: false, required: false
    get workspaceSecurityGroupId() {
        return this.getStringAttribute('workspace_security_group_id');
    }
    // =========
    // SYNTHESIS
    // =========
    synthesizeAttributes() {
        return {
            directory_id: cdktf.stringToTerraform(this._directoryId),
            tags: cdktf.hashMapper(cdktf.stringToTerraform)(this._tags),
        };
    }
}
//# sourceMappingURL=data-aws-workspaces-directory.js.map