// generated from terraform resource schema
import * as cdktf from 'cdktf';
/**
* Represents a {@link https://www.terraform.io/docs/providers/aws/r/cognito_identity_provider aws_cognito_identity_provider}
*/
export class CognitoIdentityProvider extends cdktf.TerraformResource {
    // =================
    // STATIC PROPERTIES
    // =================
    static tfResourceType = "aws_cognito_identity_provider";
    // ===========
    // INITIALIZER
    // ===========
    /**
    * Create a new {@link https://www.terraform.io/docs/providers/aws/r/cognito_identity_provider aws_cognito_identity_provider} 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 CognitoIdentityProviderConfig
    */
    constructor(scope, id, config) {
        super(scope, id, {
            terraformResourceType: 'aws_cognito_identity_provider',
            terraformGeneratorMetadata: {
                providerName: 'aws'
            },
            provider: config.provider,
            dependsOn: config.dependsOn,
            count: config.count,
            lifecycle: config.lifecycle
        });
        this._attributeMapping = config.attributeMapping;
        this._idpIdentifiers = config.idpIdentifiers;
        this._providerDetails = config.providerDetails;
        this._providerName = config.providerName;
        this._providerType = config.providerType;
        this._userPoolId = config.userPoolId;
    }
    // ==========
    // ATTRIBUTES
    // ==========
    // attribute_mapping - computed: true, optional: true, required: false
    _attributeMapping;
    get attributeMapping() {
        return this.getStringMapAttribute('attribute_mapping');
    }
    set attributeMapping(value) {
        this._attributeMapping = value;
    }
    resetAttributeMapping() {
        this._attributeMapping = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get attributeMappingInput() {
        return this._attributeMapping;
    }
    // id - computed: true, optional: true, required: false
    get id() {
        return this.getStringAttribute('id');
    }
    // idp_identifiers - computed: false, optional: true, required: false
    _idpIdentifiers;
    get idpIdentifiers() {
        return this.getListAttribute('idp_identifiers');
    }
    set idpIdentifiers(value) {
        this._idpIdentifiers = value;
    }
    resetIdpIdentifiers() {
        this._idpIdentifiers = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get idpIdentifiersInput() {
        return this._idpIdentifiers;
    }
    // provider_details - computed: false, optional: false, required: true
    _providerDetails;
    get providerDetails() {
        return this.getStringMapAttribute('provider_details');
    }
    set providerDetails(value) {
        this._providerDetails = value;
    }
    // Temporarily expose input value. Use with caution.
    get providerDetailsInput() {
        return this._providerDetails;
    }
    // provider_name - computed: false, optional: false, required: true
    _providerName;
    get providerName() {
        return this.getStringAttribute('provider_name');
    }
    set providerName(value) {
        this._providerName = value;
    }
    // Temporarily expose input value. Use with caution.
    get providerNameInput() {
        return this._providerName;
    }
    // provider_type - computed: false, optional: false, required: true
    _providerType;
    get providerType() {
        return this.getStringAttribute('provider_type');
    }
    set providerType(value) {
        this._providerType = value;
    }
    // Temporarily expose input value. Use with caution.
    get providerTypeInput() {
        return this._providerType;
    }
    // user_pool_id - computed: false, optional: false, required: true
    _userPoolId;
    get userPoolId() {
        return this.getStringAttribute('user_pool_id');
    }
    set userPoolId(value) {
        this._userPoolId = value;
    }
    // Temporarily expose input value. Use with caution.
    get userPoolIdInput() {
        return this._userPoolId;
    }
    // =========
    // SYNTHESIS
    // =========
    synthesizeAttributes() {
        return {
            attribute_mapping: cdktf.hashMapper(cdktf.stringToTerraform)(this._attributeMapping),
            idp_identifiers: cdktf.listMapper(cdktf.stringToTerraform)(this._idpIdentifiers),
            provider_details: cdktf.hashMapper(cdktf.stringToTerraform)(this._providerDetails),
            provider_name: cdktf.stringToTerraform(this._providerName),
            provider_type: cdktf.stringToTerraform(this._providerType),
            user_pool_id: cdktf.stringToTerraform(this._userPoolId),
        };
    }
}
//# sourceMappingURL=cognito-identity-provider.js.map