// generated from terraform resource schema
import * as cdktf from 'cdktf';
export class DataAwsMqBrokerConfiguration extends cdktf.ComplexComputedList {
    // id - computed: true, optional: false, required: false
    get id() {
        return this.getStringAttribute('id');
    }
    // revision - computed: true, optional: false, required: false
    get revision() {
        return this.getNumberAttribute('revision');
    }
}
export class DataAwsMqBrokerEncryptionOptions extends cdktf.ComplexComputedList {
    // kms_key_id - computed: true, optional: false, required: false
    get kmsKeyId() {
        return this.getStringAttribute('kms_key_id');
    }
    // use_aws_owned_key - computed: true, optional: false, required: false
    get useAwsOwnedKey() {
        return this.getBooleanAttribute('use_aws_owned_key');
    }
}
export class DataAwsMqBrokerInstances extends cdktf.ComplexComputedList {
    // console_url - computed: true, optional: false, required: false
    get consoleUrl() {
        return this.getStringAttribute('console_url');
    }
    // endpoints - computed: true, optional: false, required: false
    get endpoints() {
        return this.getListAttribute('endpoints');
    }
    // ip_address - computed: true, optional: false, required: false
    get ipAddress() {
        return this.getStringAttribute('ip_address');
    }
}
export class DataAwsMqBrokerLdapServerMetadata extends cdktf.ComplexComputedList {
    // hosts - computed: true, optional: false, required: false
    get hosts() {
        return this.getListAttribute('hosts');
    }
    // role_base - computed: true, optional: false, required: false
    get roleBase() {
        return this.getStringAttribute('role_base');
    }
    // role_name - computed: true, optional: false, required: false
    get roleName() {
        return this.getStringAttribute('role_name');
    }
    // role_search_matching - computed: true, optional: false, required: false
    get roleSearchMatching() {
        return this.getStringAttribute('role_search_matching');
    }
    // role_search_subtree - computed: true, optional: false, required: false
    get roleSearchSubtree() {
        return this.getBooleanAttribute('role_search_subtree');
    }
    // service_account_password - computed: true, optional: false, required: false
    get serviceAccountPassword() {
        return this.getStringAttribute('service_account_password');
    }
    // service_account_username - computed: true, optional: false, required: false
    get serviceAccountUsername() {
        return this.getStringAttribute('service_account_username');
    }
    // user_base - computed: true, optional: false, required: false
    get userBase() {
        return this.getStringAttribute('user_base');
    }
    // user_role_name - computed: true, optional: false, required: false
    get userRoleName() {
        return this.getStringAttribute('user_role_name');
    }
    // user_search_matching - computed: true, optional: false, required: false
    get userSearchMatching() {
        return this.getStringAttribute('user_search_matching');
    }
    // user_search_subtree - computed: true, optional: false, required: false
    get userSearchSubtree() {
        return this.getBooleanAttribute('user_search_subtree');
    }
}
export class DataAwsMqBrokerLogs extends cdktf.ComplexComputedList {
    // audit - computed: true, optional: false, required: false
    get audit() {
        return this.getStringAttribute('audit');
    }
    // general - computed: true, optional: false, required: false
    get general() {
        return this.getBooleanAttribute('general');
    }
}
export class DataAwsMqBrokerMaintenanceWindowStartTime extends cdktf.ComplexComputedList {
    // day_of_week - computed: true, optional: false, required: false
    get dayOfWeek() {
        return this.getStringAttribute('day_of_week');
    }
    // time_of_day - computed: true, optional: false, required: false
    get timeOfDay() {
        return this.getStringAttribute('time_of_day');
    }
    // time_zone - computed: true, optional: false, required: false
    get timeZone() {
        return this.getStringAttribute('time_zone');
    }
}
export class DataAwsMqBrokerUser extends cdktf.ComplexComputedList {
    // console_access - computed: true, optional: false, required: false
    get consoleAccess() {
        return this.getBooleanAttribute('console_access');
    }
    // groups - computed: true, optional: false, required: false
    get groups() {
        return cdktf.Fn.tolist(this.getListAttribute('groups'));
    }
    // username - computed: true, optional: false, required: false
    get username() {
        return this.getStringAttribute('username');
    }
}
/**
* Represents a {@link https://www.terraform.io/docs/providers/aws/d/mq_broker aws_mq_broker}
*/
export class DataAwsMqBroker extends cdktf.TerraformDataSource {
    // =================
    // STATIC PROPERTIES
    // =================
    static tfResourceType = "aws_mq_broker";
    // ===========
    // INITIALIZER
    // ===========
    /**
    * Create a new {@link https://www.terraform.io/docs/providers/aws/d/mq_broker aws_mq_broker} 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 DataAwsMqBrokerConfig = {}
    */
    constructor(scope, id, config = {}) {
        super(scope, id, {
            terraformResourceType: 'aws_mq_broker',
            terraformGeneratorMetadata: {
                providerName: 'aws'
            },
            provider: config.provider,
            dependsOn: config.dependsOn,
            count: config.count,
            lifecycle: config.lifecycle
        });
        this._brokerId = config.brokerId;
        this._brokerName = config.brokerName;
        this._tags = config.tags;
    }
    // ==========
    // ATTRIBUTES
    // ==========
    // arn - computed: true, optional: false, required: false
    get arn() {
        return this.getStringAttribute('arn');
    }
    // authentication_strategy - computed: true, optional: false, required: false
    get authenticationStrategy() {
        return this.getStringAttribute('authentication_strategy');
    }
    // auto_minor_version_upgrade - computed: true, optional: false, required: false
    get autoMinorVersionUpgrade() {
        return this.getBooleanAttribute('auto_minor_version_upgrade');
    }
    // broker_id - computed: true, optional: true, required: false
    _brokerId;
    get brokerId() {
        return this.getStringAttribute('broker_id');
    }
    set brokerId(value) {
        this._brokerId = value;
    }
    resetBrokerId() {
        this._brokerId = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get brokerIdInput() {
        return this._brokerId;
    }
    // broker_name - computed: true, optional: true, required: false
    _brokerName;
    get brokerName() {
        return this.getStringAttribute('broker_name');
    }
    set brokerName(value) {
        this._brokerName = value;
    }
    resetBrokerName() {
        this._brokerName = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get brokerNameInput() {
        return this._brokerName;
    }
    // configuration - computed: true, optional: false, required: false
    configuration(index) {
        return new DataAwsMqBrokerConfiguration(this, 'configuration', index, false);
    }
    // deployment_mode - computed: true, optional: false, required: false
    get deploymentMode() {
        return this.getStringAttribute('deployment_mode');
    }
    // encryption_options - computed: true, optional: false, required: false
    encryptionOptions(index) {
        return new DataAwsMqBrokerEncryptionOptions(this, 'encryption_options', index, false);
    }
    // engine_type - computed: true, optional: false, required: false
    get engineType() {
        return this.getStringAttribute('engine_type');
    }
    // engine_version - computed: true, optional: false, required: false
    get engineVersion() {
        return this.getStringAttribute('engine_version');
    }
    // host_instance_type - computed: true, optional: false, required: false
    get hostInstanceType() {
        return this.getStringAttribute('host_instance_type');
    }
    // id - computed: true, optional: true, required: false
    get id() {
        return this.getStringAttribute('id');
    }
    // instances - computed: true, optional: false, required: false
    instances(index) {
        return new DataAwsMqBrokerInstances(this, 'instances', index, false);
    }
    // ldap_server_metadata - computed: true, optional: false, required: false
    ldapServerMetadata(index) {
        return new DataAwsMqBrokerLdapServerMetadata(this, 'ldap_server_metadata', index, false);
    }
    // logs - computed: true, optional: false, required: false
    logs(index) {
        return new DataAwsMqBrokerLogs(this, 'logs', index, false);
    }
    // maintenance_window_start_time - computed: true, optional: false, required: false
    maintenanceWindowStartTime(index) {
        return new DataAwsMqBrokerMaintenanceWindowStartTime(this, 'maintenance_window_start_time', index, false);
    }
    // publicly_accessible - computed: true, optional: false, required: false
    get publiclyAccessible() {
        return this.getBooleanAttribute('publicly_accessible');
    }
    // security_groups - computed: true, optional: false, required: false
    get securityGroups() {
        return cdktf.Fn.tolist(this.getListAttribute('security_groups'));
    }
    // storage_type - computed: true, optional: false, required: false
    get storageType() {
        return this.getStringAttribute('storage_type');
    }
    // subnet_ids - computed: true, optional: false, required: false
    get subnetIds() {
        return cdktf.Fn.tolist(this.getListAttribute('subnet_ids'));
    }
    // tags - computed: true, 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;
    }
    // user - computed: true, optional: false, required: false
    user(index) {
        return new DataAwsMqBrokerUser(this, 'user', index, true);
    }
    // =========
    // SYNTHESIS
    // =========
    synthesizeAttributes() {
        return {
            broker_id: cdktf.stringToTerraform(this._brokerId),
            broker_name: cdktf.stringToTerraform(this._brokerName),
            tags: cdktf.hashMapper(cdktf.stringToTerraform)(this._tags),
        };
    }
}
//# sourceMappingURL=data-aws-mq-broker.js.map