// generated from terraform resource schema
import * as cdktf from 'cdktf';
export function acmpcaCertificateAuthorityCertificateAuthorityConfigurationSubjectToTerraform(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 {
        common_name: cdktf.stringToTerraform(struct.commonName),
        country: cdktf.stringToTerraform(struct.country),
        distinguished_name_qualifier: cdktf.stringToTerraform(struct.distinguishedNameQualifier),
        generation_qualifier: cdktf.stringToTerraform(struct.generationQualifier),
        given_name: cdktf.stringToTerraform(struct.givenName),
        initials: cdktf.stringToTerraform(struct.initials),
        locality: cdktf.stringToTerraform(struct.locality),
        organization: cdktf.stringToTerraform(struct.organization),
        organizational_unit: cdktf.stringToTerraform(struct.organizationalUnit),
        pseudonym: cdktf.stringToTerraform(struct.pseudonym),
        state: cdktf.stringToTerraform(struct.state),
        surname: cdktf.stringToTerraform(struct.surname),
        title: cdktf.stringToTerraform(struct.title),
    };
}
export class AcmpcaCertificateAuthorityCertificateAuthorityConfigurationSubjectOutputReference extends cdktf.ComplexObject {
    isEmptyObject = false;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param isSingleItem True if this is a block, false if it's a list
    */
    constructor(terraformResource, terraformAttribute, isSingleItem) {
        super(terraformResource, terraformAttribute, isSingleItem);
    }
    get internalValue() {
        let hasAnyValues = this.isEmptyObject;
        const internalValueResult = {};
        if (this._commonName !== undefined) {
            hasAnyValues = true;
            internalValueResult.commonName = this._commonName;
        }
        if (this._country !== undefined) {
            hasAnyValues = true;
            internalValueResult.country = this._country;
        }
        if (this._distinguishedNameQualifier !== undefined) {
            hasAnyValues = true;
            internalValueResult.distinguishedNameQualifier = this._distinguishedNameQualifier;
        }
        if (this._generationQualifier !== undefined) {
            hasAnyValues = true;
            internalValueResult.generationQualifier = this._generationQualifier;
        }
        if (this._givenName !== undefined) {
            hasAnyValues = true;
            internalValueResult.givenName = this._givenName;
        }
        if (this._initials !== undefined) {
            hasAnyValues = true;
            internalValueResult.initials = this._initials;
        }
        if (this._locality !== undefined) {
            hasAnyValues = true;
            internalValueResult.locality = this._locality;
        }
        if (this._organization !== undefined) {
            hasAnyValues = true;
            internalValueResult.organization = this._organization;
        }
        if (this._organizationalUnit !== undefined) {
            hasAnyValues = true;
            internalValueResult.organizationalUnit = this._organizationalUnit;
        }
        if (this._pseudonym !== undefined) {
            hasAnyValues = true;
            internalValueResult.pseudonym = this._pseudonym;
        }
        if (this._state !== undefined) {
            hasAnyValues = true;
            internalValueResult.state = this._state;
        }
        if (this._surname !== undefined) {
            hasAnyValues = true;
            internalValueResult.surname = this._surname;
        }
        if (this._title !== undefined) {
            hasAnyValues = true;
            internalValueResult.title = this._title;
        }
        return hasAnyValues ? internalValueResult : undefined;
    }
    set internalValue(value) {
        if (value === undefined) {
            this.isEmptyObject = false;
            this._commonName = undefined;
            this._country = undefined;
            this._distinguishedNameQualifier = undefined;
            this._generationQualifier = undefined;
            this._givenName = undefined;
            this._initials = undefined;
            this._locality = undefined;
            this._organization = undefined;
            this._organizationalUnit = undefined;
            this._pseudonym = undefined;
            this._state = undefined;
            this._surname = undefined;
            this._title = undefined;
        }
        else {
            this.isEmptyObject = Object.keys(value).length === 0;
            this._commonName = value.commonName;
            this._country = value.country;
            this._distinguishedNameQualifier = value.distinguishedNameQualifier;
            this._generationQualifier = value.generationQualifier;
            this._givenName = value.givenName;
            this._initials = value.initials;
            this._locality = value.locality;
            this._organization = value.organization;
            this._organizationalUnit = value.organizationalUnit;
            this._pseudonym = value.pseudonym;
            this._state = value.state;
            this._surname = value.surname;
            this._title = value.title;
        }
    }
    // common_name - computed: false, optional: true, required: false
    _commonName;
    get commonName() {
        return this.getStringAttribute('common_name');
    }
    set commonName(value) {
        this._commonName = value;
    }
    resetCommonName() {
        this._commonName = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get commonNameInput() {
        return this._commonName;
    }
    // country - computed: false, optional: true, required: false
    _country;
    get country() {
        return this.getStringAttribute('country');
    }
    set country(value) {
        this._country = value;
    }
    resetCountry() {
        this._country = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get countryInput() {
        return this._country;
    }
    // distinguished_name_qualifier - computed: false, optional: true, required: false
    _distinguishedNameQualifier;
    get distinguishedNameQualifier() {
        return this.getStringAttribute('distinguished_name_qualifier');
    }
    set distinguishedNameQualifier(value) {
        this._distinguishedNameQualifier = value;
    }
    resetDistinguishedNameQualifier() {
        this._distinguishedNameQualifier = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get distinguishedNameQualifierInput() {
        return this._distinguishedNameQualifier;
    }
    // generation_qualifier - computed: false, optional: true, required: false
    _generationQualifier;
    get generationQualifier() {
        return this.getStringAttribute('generation_qualifier');
    }
    set generationQualifier(value) {
        this._generationQualifier = value;
    }
    resetGenerationQualifier() {
        this._generationQualifier = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get generationQualifierInput() {
        return this._generationQualifier;
    }
    // given_name - computed: false, optional: true, required: false
    _givenName;
    get givenName() {
        return this.getStringAttribute('given_name');
    }
    set givenName(value) {
        this._givenName = value;
    }
    resetGivenName() {
        this._givenName = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get givenNameInput() {
        return this._givenName;
    }
    // initials - computed: false, optional: true, required: false
    _initials;
    get initials() {
        return this.getStringAttribute('initials');
    }
    set initials(value) {
        this._initials = value;
    }
    resetInitials() {
        this._initials = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get initialsInput() {
        return this._initials;
    }
    // locality - computed: false, optional: true, required: false
    _locality;
    get locality() {
        return this.getStringAttribute('locality');
    }
    set locality(value) {
        this._locality = value;
    }
    resetLocality() {
        this._locality = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get localityInput() {
        return this._locality;
    }
    // organization - computed: false, optional: true, required: false
    _organization;
    get organization() {
        return this.getStringAttribute('organization');
    }
    set organization(value) {
        this._organization = value;
    }
    resetOrganization() {
        this._organization = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get organizationInput() {
        return this._organization;
    }
    // organizational_unit - computed: false, optional: true, required: false
    _organizationalUnit;
    get organizationalUnit() {
        return this.getStringAttribute('organizational_unit');
    }
    set organizationalUnit(value) {
        this._organizationalUnit = value;
    }
    resetOrganizationalUnit() {
        this._organizationalUnit = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get organizationalUnitInput() {
        return this._organizationalUnit;
    }
    // pseudonym - computed: false, optional: true, required: false
    _pseudonym;
    get pseudonym() {
        return this.getStringAttribute('pseudonym');
    }
    set pseudonym(value) {
        this._pseudonym = value;
    }
    resetPseudonym() {
        this._pseudonym = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get pseudonymInput() {
        return this._pseudonym;
    }
    // state - computed: false, optional: true, required: false
    _state;
    get state() {
        return this.getStringAttribute('state');
    }
    set state(value) {
        this._state = value;
    }
    resetState() {
        this._state = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get stateInput() {
        return this._state;
    }
    // surname - computed: false, optional: true, required: false
    _surname;
    get surname() {
        return this.getStringAttribute('surname');
    }
    set surname(value) {
        this._surname = value;
    }
    resetSurname() {
        this._surname = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get surnameInput() {
        return this._surname;
    }
    // title - computed: false, optional: true, required: false
    _title;
    get title() {
        return this.getStringAttribute('title');
    }
    set title(value) {
        this._title = value;
    }
    resetTitle() {
        this._title = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get titleInput() {
        return this._title;
    }
}
export function acmpcaCertificateAuthorityCertificateAuthorityConfigurationToTerraform(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_algorithm: cdktf.stringToTerraform(struct.keyAlgorithm),
        signing_algorithm: cdktf.stringToTerraform(struct.signingAlgorithm),
        subject: acmpcaCertificateAuthorityCertificateAuthorityConfigurationSubjectToTerraform(struct.subject),
    };
}
export class AcmpcaCertificateAuthorityCertificateAuthorityConfigurationOutputReference extends cdktf.ComplexObject {
    isEmptyObject = false;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param isSingleItem True if this is a block, false if it's a list
    */
    constructor(terraformResource, terraformAttribute, isSingleItem) {
        super(terraformResource, terraformAttribute, isSingleItem);
    }
    get internalValue() {
        let hasAnyValues = this.isEmptyObject;
        const internalValueResult = {};
        if (this._keyAlgorithm !== undefined) {
            hasAnyValues = true;
            internalValueResult.keyAlgorithm = this._keyAlgorithm;
        }
        if (this._signingAlgorithm !== undefined) {
            hasAnyValues = true;
            internalValueResult.signingAlgorithm = this._signingAlgorithm;
        }
        if (this._subject?.internalValue !== undefined) {
            hasAnyValues = true;
            internalValueResult.subject = this._subject?.internalValue;
        }
        return hasAnyValues ? internalValueResult : undefined;
    }
    set internalValue(value) {
        if (value === undefined) {
            this.isEmptyObject = false;
            this._keyAlgorithm = undefined;
            this._signingAlgorithm = undefined;
            this._subject.internalValue = undefined;
        }
        else {
            this.isEmptyObject = Object.keys(value).length === 0;
            this._keyAlgorithm = value.keyAlgorithm;
            this._signingAlgorithm = value.signingAlgorithm;
            this._subject.internalValue = value.subject;
        }
    }
    // key_algorithm - computed: false, optional: false, required: true
    _keyAlgorithm;
    get keyAlgorithm() {
        return this.getStringAttribute('key_algorithm');
    }
    set keyAlgorithm(value) {
        this._keyAlgorithm = value;
    }
    // Temporarily expose input value. Use with caution.
    get keyAlgorithmInput() {
        return this._keyAlgorithm;
    }
    // signing_algorithm - computed: false, optional: false, required: true
    _signingAlgorithm;
    get signingAlgorithm() {
        return this.getStringAttribute('signing_algorithm');
    }
    set signingAlgorithm(value) {
        this._signingAlgorithm = value;
    }
    // Temporarily expose input value. Use with caution.
    get signingAlgorithmInput() {
        return this._signingAlgorithm;
    }
    // subject - computed: false, optional: false, required: true
    _subject = new AcmpcaCertificateAuthorityCertificateAuthorityConfigurationSubjectOutputReference(this, "subject", true);
    get subject() {
        return this._subject;
    }
    putSubject(value) {
        this._subject.internalValue = value;
    }
    // Temporarily expose input value. Use with caution.
    get subjectInput() {
        return this._subject.internalValue;
    }
}
export function acmpcaCertificateAuthorityRevocationConfigurationCrlConfigurationToTerraform(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 {
        custom_cname: cdktf.stringToTerraform(struct.customCname),
        enabled: cdktf.booleanToTerraform(struct.enabled),
        expiration_in_days: cdktf.numberToTerraform(struct.expirationInDays),
        s3_bucket_name: cdktf.stringToTerraform(struct.s3BucketName),
        s3_object_acl: cdktf.stringToTerraform(struct.s3ObjectAcl),
    };
}
export class AcmpcaCertificateAuthorityRevocationConfigurationCrlConfigurationOutputReference extends cdktf.ComplexObject {
    isEmptyObject = false;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param isSingleItem True if this is a block, false if it's a list
    */
    constructor(terraformResource, terraformAttribute, isSingleItem) {
        super(terraformResource, terraformAttribute, isSingleItem);
    }
    get internalValue() {
        let hasAnyValues = this.isEmptyObject;
        const internalValueResult = {};
        if (this._customCname !== undefined) {
            hasAnyValues = true;
            internalValueResult.customCname = this._customCname;
        }
        if (this._enabled !== undefined) {
            hasAnyValues = true;
            internalValueResult.enabled = this._enabled;
        }
        if (this._expirationInDays !== undefined) {
            hasAnyValues = true;
            internalValueResult.expirationInDays = this._expirationInDays;
        }
        if (this._s3BucketName !== undefined) {
            hasAnyValues = true;
            internalValueResult.s3BucketName = this._s3BucketName;
        }
        if (this._s3ObjectAcl !== undefined) {
            hasAnyValues = true;
            internalValueResult.s3ObjectAcl = this._s3ObjectAcl;
        }
        return hasAnyValues ? internalValueResult : undefined;
    }
    set internalValue(value) {
        if (value === undefined) {
            this.isEmptyObject = false;
            this._customCname = undefined;
            this._enabled = undefined;
            this._expirationInDays = undefined;
            this._s3BucketName = undefined;
            this._s3ObjectAcl = undefined;
        }
        else {
            this.isEmptyObject = Object.keys(value).length === 0;
            this._customCname = value.customCname;
            this._enabled = value.enabled;
            this._expirationInDays = value.expirationInDays;
            this._s3BucketName = value.s3BucketName;
            this._s3ObjectAcl = value.s3ObjectAcl;
        }
    }
    // custom_cname - computed: false, optional: true, required: false
    _customCname;
    get customCname() {
        return this.getStringAttribute('custom_cname');
    }
    set customCname(value) {
        this._customCname = value;
    }
    resetCustomCname() {
        this._customCname = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get customCnameInput() {
        return this._customCname;
    }
    // enabled - computed: false, optional: true, required: false
    _enabled;
    get enabled() {
        return this.getBooleanAttribute('enabled');
    }
    set enabled(value) {
        this._enabled = value;
    }
    resetEnabled() {
        this._enabled = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get enabledInput() {
        return this._enabled;
    }
    // expiration_in_days - computed: false, optional: false, required: true
    _expirationInDays;
    get expirationInDays() {
        return this.getNumberAttribute('expiration_in_days');
    }
    set expirationInDays(value) {
        this._expirationInDays = value;
    }
    // Temporarily expose input value. Use with caution.
    get expirationInDaysInput() {
        return this._expirationInDays;
    }
    // s3_bucket_name - computed: false, optional: true, required: false
    _s3BucketName;
    get s3BucketName() {
        return this.getStringAttribute('s3_bucket_name');
    }
    set s3BucketName(value) {
        this._s3BucketName = value;
    }
    resetS3BucketName() {
        this._s3BucketName = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get s3BucketNameInput() {
        return this._s3BucketName;
    }
    // s3_object_acl - computed: true, optional: true, required: false
    _s3ObjectAcl;
    get s3ObjectAcl() {
        return this.getStringAttribute('s3_object_acl');
    }
    set s3ObjectAcl(value) {
        this._s3ObjectAcl = value;
    }
    resetS3ObjectAcl() {
        this._s3ObjectAcl = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get s3ObjectAclInput() {
        return this._s3ObjectAcl;
    }
}
export function acmpcaCertificateAuthorityRevocationConfigurationToTerraform(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 {
        crl_configuration: acmpcaCertificateAuthorityRevocationConfigurationCrlConfigurationToTerraform(struct.crlConfiguration),
    };
}
export class AcmpcaCertificateAuthorityRevocationConfigurationOutputReference extends cdktf.ComplexObject {
    isEmptyObject = false;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param isSingleItem True if this is a block, false if it's a list
    */
    constructor(terraformResource, terraformAttribute, isSingleItem) {
        super(terraformResource, terraformAttribute, isSingleItem);
    }
    get internalValue() {
        let hasAnyValues = this.isEmptyObject;
        const internalValueResult = {};
        if (this._crlConfiguration?.internalValue !== undefined) {
            hasAnyValues = true;
            internalValueResult.crlConfiguration = this._crlConfiguration?.internalValue;
        }
        return hasAnyValues ? internalValueResult : undefined;
    }
    set internalValue(value) {
        if (value === undefined) {
            this.isEmptyObject = false;
            this._crlConfiguration.internalValue = undefined;
        }
        else {
            this.isEmptyObject = Object.keys(value).length === 0;
            this._crlConfiguration.internalValue = value.crlConfiguration;
        }
    }
    // crl_configuration - computed: false, optional: true, required: false
    _crlConfiguration = new AcmpcaCertificateAuthorityRevocationConfigurationCrlConfigurationOutputReference(this, "crl_configuration", true);
    get crlConfiguration() {
        return this._crlConfiguration;
    }
    putCrlConfiguration(value) {
        this._crlConfiguration.internalValue = value;
    }
    resetCrlConfiguration() {
        this._crlConfiguration.internalValue = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get crlConfigurationInput() {
        return this._crlConfiguration.internalValue;
    }
}
export function acmpcaCertificateAuthorityTimeoutsToTerraform(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 {
        create: cdktf.stringToTerraform(struct.create),
    };
}
export class AcmpcaCertificateAuthorityTimeoutsOutputReference extends cdktf.ComplexObject {
    isEmptyObject = false;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param isSingleItem True if this is a block, false if it's a list
    */
    constructor(terraformResource, terraformAttribute, isSingleItem) {
        super(terraformResource, terraformAttribute, isSingleItem);
    }
    get internalValue() {
        let hasAnyValues = this.isEmptyObject;
        const internalValueResult = {};
        if (this._create !== undefined) {
            hasAnyValues = true;
            internalValueResult.create = this._create;
        }
        return hasAnyValues ? internalValueResult : undefined;
    }
    set internalValue(value) {
        if (value === undefined) {
            this.isEmptyObject = false;
            this._create = undefined;
        }
        else {
            this.isEmptyObject = Object.keys(value).length === 0;
            this._create = value.create;
        }
    }
    // create - computed: false, optional: true, required: false
    _create;
    get create() {
        return this.getStringAttribute('create');
    }
    set create(value) {
        this._create = value;
    }
    resetCreate() {
        this._create = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get createInput() {
        return this._create;
    }
}
/**
* Represents a {@link https://www.terraform.io/docs/providers/aws/r/acmpca_certificate_authority aws_acmpca_certificate_authority}
*/
export class AcmpcaCertificateAuthority extends cdktf.TerraformResource {
    // =================
    // STATIC PROPERTIES
    // =================
    static tfResourceType = "aws_acmpca_certificate_authority";
    // ===========
    // INITIALIZER
    // ===========
    /**
    * Create a new {@link https://www.terraform.io/docs/providers/aws/r/acmpca_certificate_authority aws_acmpca_certificate_authority} 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 AcmpcaCertificateAuthorityConfig
    */
    constructor(scope, id, config) {
        super(scope, id, {
            terraformResourceType: 'aws_acmpca_certificate_authority',
            terraformGeneratorMetadata: {
                providerName: 'aws'
            },
            provider: config.provider,
            dependsOn: config.dependsOn,
            count: config.count,
            lifecycle: config.lifecycle
        });
        this._enabled = config.enabled;
        this._permanentDeletionTimeInDays = config.permanentDeletionTimeInDays;
        this._tags = config.tags;
        this._tagsAll = config.tagsAll;
        this._type = config.type;
        this._certificateAuthorityConfiguration.internalValue = config.certificateAuthorityConfiguration;
        this._revocationConfiguration.internalValue = config.revocationConfiguration;
        this._timeouts.internalValue = config.timeouts;
    }
    // ==========
    // ATTRIBUTES
    // ==========
    // arn - computed: true, optional: false, required: false
    get arn() {
        return this.getStringAttribute('arn');
    }
    // certificate - computed: true, optional: false, required: false
    get certificate() {
        return this.getStringAttribute('certificate');
    }
    // certificate_chain - computed: true, optional: false, required: false
    get certificateChain() {
        return this.getStringAttribute('certificate_chain');
    }
    // certificate_signing_request - computed: true, optional: false, required: false
    get certificateSigningRequest() {
        return this.getStringAttribute('certificate_signing_request');
    }
    // enabled - computed: false, optional: true, required: false
    _enabled;
    get enabled() {
        return this.getBooleanAttribute('enabled');
    }
    set enabled(value) {
        this._enabled = value;
    }
    resetEnabled() {
        this._enabled = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get enabledInput() {
        return this._enabled;
    }
    // id - computed: true, optional: true, required: false
    get id() {
        return this.getStringAttribute('id');
    }
    // not_after - computed: true, optional: false, required: false
    get notAfter() {
        return this.getStringAttribute('not_after');
    }
    // not_before - computed: true, optional: false, required: false
    get notBefore() {
        return this.getStringAttribute('not_before');
    }
    // permanent_deletion_time_in_days - computed: false, optional: true, required: false
    _permanentDeletionTimeInDays;
    get permanentDeletionTimeInDays() {
        return this.getNumberAttribute('permanent_deletion_time_in_days');
    }
    set permanentDeletionTimeInDays(value) {
        this._permanentDeletionTimeInDays = value;
    }
    resetPermanentDeletionTimeInDays() {
        this._permanentDeletionTimeInDays = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get permanentDeletionTimeInDaysInput() {
        return this._permanentDeletionTimeInDays;
    }
    // serial - computed: true, optional: false, required: false
    get serial() {
        return this.getStringAttribute('serial');
    }
    // status - computed: true, optional: false, required: false
    get status() {
        return this.getStringAttribute('status');
    }
    // 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;
    }
    // tags_all - computed: true, optional: true, required: false
    _tagsAll;
    get tagsAll() {
        return this.getStringMapAttribute('tags_all');
    }
    set tagsAll(value) {
        this._tagsAll = value;
    }
    resetTagsAll() {
        this._tagsAll = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get tagsAllInput() {
        return this._tagsAll;
    }
    // type - computed: false, optional: true, required: false
    _type;
    get type() {
        return this.getStringAttribute('type');
    }
    set type(value) {
        this._type = value;
    }
    resetType() {
        this._type = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get typeInput() {
        return this._type;
    }
    // certificate_authority_configuration - computed: false, optional: false, required: true
    _certificateAuthorityConfiguration = new AcmpcaCertificateAuthorityCertificateAuthorityConfigurationOutputReference(this, "certificate_authority_configuration", true);
    get certificateAuthorityConfiguration() {
        return this._certificateAuthorityConfiguration;
    }
    putCertificateAuthorityConfiguration(value) {
        this._certificateAuthorityConfiguration.internalValue = value;
    }
    // Temporarily expose input value. Use with caution.
    get certificateAuthorityConfigurationInput() {
        return this._certificateAuthorityConfiguration.internalValue;
    }
    // revocation_configuration - computed: false, optional: true, required: false
    _revocationConfiguration = new AcmpcaCertificateAuthorityRevocationConfigurationOutputReference(this, "revocation_configuration", true);
    get revocationConfiguration() {
        return this._revocationConfiguration;
    }
    putRevocationConfiguration(value) {
        this._revocationConfiguration.internalValue = value;
    }
    resetRevocationConfiguration() {
        this._revocationConfiguration.internalValue = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get revocationConfigurationInput() {
        return this._revocationConfiguration.internalValue;
    }
    // timeouts - computed: false, optional: true, required: false
    _timeouts = new AcmpcaCertificateAuthorityTimeoutsOutputReference(this, "timeouts", true);
    get timeouts() {
        return this._timeouts;
    }
    putTimeouts(value) {
        this._timeouts.internalValue = value;
    }
    resetTimeouts() {
        this._timeouts.internalValue = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get timeoutsInput() {
        return this._timeouts.internalValue;
    }
    // =========
    // SYNTHESIS
    // =========
    synthesizeAttributes() {
        return {
            enabled: cdktf.booleanToTerraform(this._enabled),
            permanent_deletion_time_in_days: cdktf.numberToTerraform(this._permanentDeletionTimeInDays),
            tags: cdktf.hashMapper(cdktf.stringToTerraform)(this._tags),
            tags_all: cdktf.hashMapper(cdktf.stringToTerraform)(this._tagsAll),
            type: cdktf.stringToTerraform(this._type),
            certificate_authority_configuration: acmpcaCertificateAuthorityCertificateAuthorityConfigurationToTerraform(this._certificateAuthorityConfiguration.internalValue),
            revocation_configuration: acmpcaCertificateAuthorityRevocationConfigurationToTerraform(this._revocationConfiguration.internalValue),
            timeouts: acmpcaCertificateAuthorityTimeoutsToTerraform(this._timeouts.internalValue),
        };
    }
}
//# sourceMappingURL=acmpca-certificate-authority.js.map