/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface PrivatecaCertificateConfig extends cdktf.TerraformMetaArguments {
    /**
    * The Certificate Authority ID that should issue the certificate. For example, to issue a Certificate from
    * a Certificate Authority with resource name 'projects/my-project/locations/us-central1/caPools/my-pool/certificateAuthorities/my-ca',
    * argument 'pool' should be set to 'projects/my-project/locations/us-central1/caPools/my-pool', argument 'certificate_authority'
    * should be set to 'my-ca'.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#certificate_authority PrivatecaCertificate#certificate_authority}
    */
    readonly certificateAuthority?: string;
    /**
    * The resource name for a CertificateTemplate used to issue this certificate,
    * in the format 'projects/* /locations/* /certificateTemplates/*'. If this is specified,
    * the caller must have the necessary permission to use this template. If this is
    * omitted, no template will be used. This template must be in the same location
    * as the Certificate.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#certificate_template PrivatecaCertificate#certificate_template}
     *
    * Note: The above comment contained a comment block ending sequence (* followed by /). We have introduced a space between to prevent syntax errors. Please ignore the space.
    */
    readonly certificateTemplate?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#id PrivatecaCertificate#id}
    *
    * Please be aware that the id field is automatically added to all resources in Terraform providers using a Terraform provider SDK version below 2.
    * If you experience problems setting this value it might not be settable. Please take a look at the provider documentation to ensure it should be settable.
    */
    readonly id?: string;
    /**
    * Labels with user-defined metadata to apply to this resource.
    *
    *
    * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
    * Please refer to the field 'effective_labels' for all of the labels present on the resource.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#labels PrivatecaCertificate#labels}
    */
    readonly labels?: {
        [key: string]: string;
    };
    /**
    * The desired lifetime of the CA certificate. Used to create the "notBeforeTime" and
    * "notAfterTime" fields inside an X.509 certificate. A duration in seconds with up to nine
    * fractional digits, terminated by 's'. Example: "3.5s".
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#lifetime PrivatecaCertificate#lifetime}
    */
    readonly lifetime?: string;
    /**
    * Location of the Certificate. A full list of valid locations can be found by
    * running 'gcloud privateca locations list'.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#location PrivatecaCertificate#location}
    */
    readonly location: string;
    /**
    * The name for this Certificate.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#name PrivatecaCertificate#name}
    */
    readonly name: string;
    /**
    * Immutable. A pem-encoded X.509 certificate signing request (CSR).
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#pem_csr PrivatecaCertificate#pem_csr}
    */
    readonly pemCsr?: string;
    /**
    * The name of the CaPool this Certificate belongs to.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#pool PrivatecaCertificate#pool}
    */
    readonly pool: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#project PrivatecaCertificate#project}
    */
    readonly project?: string;
    /**
    * config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#config PrivatecaCertificate#config}
    */
    readonly config?: PrivatecaCertificateConfigA;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#timeouts PrivatecaCertificate#timeouts}
    */
    readonly timeouts?: PrivatecaCertificateTimeouts;
}
export interface PrivatecaCertificateCertificateDescriptionAuthorityKeyId {
}
export declare function privatecaCertificateCertificateDescriptionAuthorityKeyIdToTerraform(struct?: PrivatecaCertificateCertificateDescriptionAuthorityKeyId): any;
export declare function privatecaCertificateCertificateDescriptionAuthorityKeyIdToHclTerraform(struct?: PrivatecaCertificateCertificateDescriptionAuthorityKeyId): any;
export declare class PrivatecaCertificateCertificateDescriptionAuthorityKeyIdOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): PrivatecaCertificateCertificateDescriptionAuthorityKeyId | undefined;
    set internalValue(value: PrivatecaCertificateCertificateDescriptionAuthorityKeyId | undefined);
    get keyId(): string;
}
export declare class PrivatecaCertificateCertificateDescriptionAuthorityKeyIdList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): PrivatecaCertificateCertificateDescriptionAuthorityKeyIdOutputReference;
}
export interface PrivatecaCertificateCertificateDescriptionCertFingerprint {
}
export declare function privatecaCertificateCertificateDescriptionCertFingerprintToTerraform(struct?: PrivatecaCertificateCertificateDescriptionCertFingerprint): any;
export declare function privatecaCertificateCertificateDescriptionCertFingerprintToHclTerraform(struct?: PrivatecaCertificateCertificateDescriptionCertFingerprint): any;
export declare class PrivatecaCertificateCertificateDescriptionCertFingerprintOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): PrivatecaCertificateCertificateDescriptionCertFingerprint | undefined;
    set internalValue(value: PrivatecaCertificateCertificateDescriptionCertFingerprint | undefined);
    get sha256Hash(): string;
}
export declare class PrivatecaCertificateCertificateDescriptionCertFingerprintList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): PrivatecaCertificateCertificateDescriptionCertFingerprintOutputReference;
}
export interface PrivatecaCertificateCertificateDescriptionPublicKey {
}
export declare function privatecaCertificateCertificateDescriptionPublicKeyToTerraform(struct?: PrivatecaCertificateCertificateDescriptionPublicKey): any;
export declare function privatecaCertificateCertificateDescriptionPublicKeyToHclTerraform(struct?: PrivatecaCertificateCertificateDescriptionPublicKey): any;
export declare class PrivatecaCertificateCertificateDescriptionPublicKeyOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): PrivatecaCertificateCertificateDescriptionPublicKey | undefined;
    set internalValue(value: PrivatecaCertificateCertificateDescriptionPublicKey | undefined);
    get format(): string;
    get key(): string;
}
export declare class PrivatecaCertificateCertificateDescriptionPublicKeyList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): PrivatecaCertificateCertificateDescriptionPublicKeyOutputReference;
}
export interface PrivatecaCertificateCertificateDescriptionSubjectDescriptionSubject {
}
export declare function privatecaCertificateCertificateDescriptionSubjectDescriptionSubjectToTerraform(struct?: PrivatecaCertificateCertificateDescriptionSubjectDescriptionSubject): any;
export declare function privatecaCertificateCertificateDescriptionSubjectDescriptionSubjectToHclTerraform(struct?: PrivatecaCertificateCertificateDescriptionSubjectDescriptionSubject): any;
export declare class PrivatecaCertificateCertificateDescriptionSubjectDescriptionSubjectOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): PrivatecaCertificateCertificateDescriptionSubjectDescriptionSubject | undefined;
    set internalValue(value: PrivatecaCertificateCertificateDescriptionSubjectDescriptionSubject | undefined);
    get commonName(): string;
    get countryCode(): string;
    get locality(): string;
    get organization(): string;
    get organizationalUnit(): string;
    get postalCode(): string;
    get province(): string;
    get streetAddress(): string;
}
export declare class PrivatecaCertificateCertificateDescriptionSubjectDescriptionSubjectList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): PrivatecaCertificateCertificateDescriptionSubjectDescriptionSubjectOutputReference;
}
export interface PrivatecaCertificateCertificateDescriptionSubjectDescriptionSubjectAltNameCustomSansObectId {
}
export declare function privatecaCertificateCertificateDescriptionSubjectDescriptionSubjectAltNameCustomSansObectIdToTerraform(struct?: PrivatecaCertificateCertificateDescriptionSubjectDescriptionSubjectAltNameCustomSansObectId): any;
export declare function privatecaCertificateCertificateDescriptionSubjectDescriptionSubjectAltNameCustomSansObectIdToHclTerraform(struct?: PrivatecaCertificateCertificateDescriptionSubjectDescriptionSubjectAltNameCustomSansObectId): any;
export declare class PrivatecaCertificateCertificateDescriptionSubjectDescriptionSubjectAltNameCustomSansObectIdOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): PrivatecaCertificateCertificateDescriptionSubjectDescriptionSubjectAltNameCustomSansObectId | undefined;
    set internalValue(value: PrivatecaCertificateCertificateDescriptionSubjectDescriptionSubjectAltNameCustomSansObectId | undefined);
    get objectIdPath(): number[];
}
export declare class PrivatecaCertificateCertificateDescriptionSubjectDescriptionSubjectAltNameCustomSansObectIdList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): PrivatecaCertificateCertificateDescriptionSubjectDescriptionSubjectAltNameCustomSansObectIdOutputReference;
}
export interface PrivatecaCertificateCertificateDescriptionSubjectDescriptionSubjectAltNameCustomSans {
}
export declare function privatecaCertificateCertificateDescriptionSubjectDescriptionSubjectAltNameCustomSansToTerraform(struct?: PrivatecaCertificateCertificateDescriptionSubjectDescriptionSubjectAltNameCustomSans): any;
export declare function privatecaCertificateCertificateDescriptionSubjectDescriptionSubjectAltNameCustomSansToHclTerraform(struct?: PrivatecaCertificateCertificateDescriptionSubjectDescriptionSubjectAltNameCustomSans): any;
export declare class PrivatecaCertificateCertificateDescriptionSubjectDescriptionSubjectAltNameCustomSansOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): PrivatecaCertificateCertificateDescriptionSubjectDescriptionSubjectAltNameCustomSans | undefined;
    set internalValue(value: PrivatecaCertificateCertificateDescriptionSubjectDescriptionSubjectAltNameCustomSans | undefined);
    get critical(): cdktf.IResolvable;
    private _obectId;
    get obectId(): PrivatecaCertificateCertificateDescriptionSubjectDescriptionSubjectAltNameCustomSansObectIdList;
    get value(): string;
}
export declare class PrivatecaCertificateCertificateDescriptionSubjectDescriptionSubjectAltNameCustomSansList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): PrivatecaCertificateCertificateDescriptionSubjectDescriptionSubjectAltNameCustomSansOutputReference;
}
export interface PrivatecaCertificateCertificateDescriptionSubjectDescriptionSubjectAltName {
}
export declare function privatecaCertificateCertificateDescriptionSubjectDescriptionSubjectAltNameToTerraform(struct?: PrivatecaCertificateCertificateDescriptionSubjectDescriptionSubjectAltName): any;
export declare function privatecaCertificateCertificateDescriptionSubjectDescriptionSubjectAltNameToHclTerraform(struct?: PrivatecaCertificateCertificateDescriptionSubjectDescriptionSubjectAltName): any;
export declare class PrivatecaCertificateCertificateDescriptionSubjectDescriptionSubjectAltNameOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): PrivatecaCertificateCertificateDescriptionSubjectDescriptionSubjectAltName | undefined;
    set internalValue(value: PrivatecaCertificateCertificateDescriptionSubjectDescriptionSubjectAltName | undefined);
    private _customSans;
    get customSans(): PrivatecaCertificateCertificateDescriptionSubjectDescriptionSubjectAltNameCustomSansList;
    get dnsNames(): string[];
    get emailAddresses(): string[];
    get ipAddresses(): string[];
    get uris(): string[];
}
export declare class PrivatecaCertificateCertificateDescriptionSubjectDescriptionSubjectAltNameList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): PrivatecaCertificateCertificateDescriptionSubjectDescriptionSubjectAltNameOutputReference;
}
export interface PrivatecaCertificateCertificateDescriptionSubjectDescription {
}
export declare function privatecaCertificateCertificateDescriptionSubjectDescriptionToTerraform(struct?: PrivatecaCertificateCertificateDescriptionSubjectDescription): any;
export declare function privatecaCertificateCertificateDescriptionSubjectDescriptionToHclTerraform(struct?: PrivatecaCertificateCertificateDescriptionSubjectDescription): any;
export declare class PrivatecaCertificateCertificateDescriptionSubjectDescriptionOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): PrivatecaCertificateCertificateDescriptionSubjectDescription | undefined;
    set internalValue(value: PrivatecaCertificateCertificateDescriptionSubjectDescription | undefined);
    get hexSerialNumber(): string;
    get lifetime(): string;
    get notAfterTime(): string;
    get notBeforeTime(): string;
    private _subject;
    get subject(): PrivatecaCertificateCertificateDescriptionSubjectDescriptionSubjectList;
    private _subjectAltName;
    get subjectAltName(): PrivatecaCertificateCertificateDescriptionSubjectDescriptionSubjectAltNameList;
}
export declare class PrivatecaCertificateCertificateDescriptionSubjectDescriptionList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): PrivatecaCertificateCertificateDescriptionSubjectDescriptionOutputReference;
}
export interface PrivatecaCertificateCertificateDescriptionSubjectKeyId {
}
export declare function privatecaCertificateCertificateDescriptionSubjectKeyIdToTerraform(struct?: PrivatecaCertificateCertificateDescriptionSubjectKeyId): any;
export declare function privatecaCertificateCertificateDescriptionSubjectKeyIdToHclTerraform(struct?: PrivatecaCertificateCertificateDescriptionSubjectKeyId): any;
export declare class PrivatecaCertificateCertificateDescriptionSubjectKeyIdOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): PrivatecaCertificateCertificateDescriptionSubjectKeyId | undefined;
    set internalValue(value: PrivatecaCertificateCertificateDescriptionSubjectKeyId | undefined);
    get keyId(): string;
}
export declare class PrivatecaCertificateCertificateDescriptionSubjectKeyIdList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): PrivatecaCertificateCertificateDescriptionSubjectKeyIdOutputReference;
}
export interface PrivatecaCertificateCertificateDescriptionX509DescriptionAdditionalExtensionsObjectId {
}
export declare function privatecaCertificateCertificateDescriptionX509DescriptionAdditionalExtensionsObjectIdToTerraform(struct?: PrivatecaCertificateCertificateDescriptionX509DescriptionAdditionalExtensionsObjectId): any;
export declare function privatecaCertificateCertificateDescriptionX509DescriptionAdditionalExtensionsObjectIdToHclTerraform(struct?: PrivatecaCertificateCertificateDescriptionX509DescriptionAdditionalExtensionsObjectId): any;
export declare class PrivatecaCertificateCertificateDescriptionX509DescriptionAdditionalExtensionsObjectIdOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): PrivatecaCertificateCertificateDescriptionX509DescriptionAdditionalExtensionsObjectId | undefined;
    set internalValue(value: PrivatecaCertificateCertificateDescriptionX509DescriptionAdditionalExtensionsObjectId | undefined);
    get objectIdPath(): number[];
}
export declare class PrivatecaCertificateCertificateDescriptionX509DescriptionAdditionalExtensionsObjectIdList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): PrivatecaCertificateCertificateDescriptionX509DescriptionAdditionalExtensionsObjectIdOutputReference;
}
export interface PrivatecaCertificateCertificateDescriptionX509DescriptionAdditionalExtensions {
}
export declare function privatecaCertificateCertificateDescriptionX509DescriptionAdditionalExtensionsToTerraform(struct?: PrivatecaCertificateCertificateDescriptionX509DescriptionAdditionalExtensions): any;
export declare function privatecaCertificateCertificateDescriptionX509DescriptionAdditionalExtensionsToHclTerraform(struct?: PrivatecaCertificateCertificateDescriptionX509DescriptionAdditionalExtensions): any;
export declare class PrivatecaCertificateCertificateDescriptionX509DescriptionAdditionalExtensionsOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): PrivatecaCertificateCertificateDescriptionX509DescriptionAdditionalExtensions | undefined;
    set internalValue(value: PrivatecaCertificateCertificateDescriptionX509DescriptionAdditionalExtensions | undefined);
    get critical(): cdktf.IResolvable;
    private _objectId;
    get objectId(): PrivatecaCertificateCertificateDescriptionX509DescriptionAdditionalExtensionsObjectIdList;
    get value(): string;
}
export declare class PrivatecaCertificateCertificateDescriptionX509DescriptionAdditionalExtensionsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): PrivatecaCertificateCertificateDescriptionX509DescriptionAdditionalExtensionsOutputReference;
}
export interface PrivatecaCertificateCertificateDescriptionX509DescriptionCaOptions {
}
export declare function privatecaCertificateCertificateDescriptionX509DescriptionCaOptionsToTerraform(struct?: PrivatecaCertificateCertificateDescriptionX509DescriptionCaOptions): any;
export declare function privatecaCertificateCertificateDescriptionX509DescriptionCaOptionsToHclTerraform(struct?: PrivatecaCertificateCertificateDescriptionX509DescriptionCaOptions): any;
export declare class PrivatecaCertificateCertificateDescriptionX509DescriptionCaOptionsOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): PrivatecaCertificateCertificateDescriptionX509DescriptionCaOptions | undefined;
    set internalValue(value: PrivatecaCertificateCertificateDescriptionX509DescriptionCaOptions | undefined);
    get isCa(): cdktf.IResolvable;
    get maxIssuerPathLength(): number;
}
export declare class PrivatecaCertificateCertificateDescriptionX509DescriptionCaOptionsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): PrivatecaCertificateCertificateDescriptionX509DescriptionCaOptionsOutputReference;
}
export interface PrivatecaCertificateCertificateDescriptionX509DescriptionKeyUsageBaseKeyUsage {
}
export declare function privatecaCertificateCertificateDescriptionX509DescriptionKeyUsageBaseKeyUsageToTerraform(struct?: PrivatecaCertificateCertificateDescriptionX509DescriptionKeyUsageBaseKeyUsage): any;
export declare function privatecaCertificateCertificateDescriptionX509DescriptionKeyUsageBaseKeyUsageToHclTerraform(struct?: PrivatecaCertificateCertificateDescriptionX509DescriptionKeyUsageBaseKeyUsage): any;
export declare class PrivatecaCertificateCertificateDescriptionX509DescriptionKeyUsageBaseKeyUsageOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): PrivatecaCertificateCertificateDescriptionX509DescriptionKeyUsageBaseKeyUsage | undefined;
    set internalValue(value: PrivatecaCertificateCertificateDescriptionX509DescriptionKeyUsageBaseKeyUsage | undefined);
    get certSign(): cdktf.IResolvable;
    get contentCommitment(): cdktf.IResolvable;
    get crlSign(): cdktf.IResolvable;
    get dataEncipherment(): cdktf.IResolvable;
    get decipherOnly(): cdktf.IResolvable;
    get digitalSignature(): cdktf.IResolvable;
    get encipherOnly(): cdktf.IResolvable;
    get keyAgreement(): cdktf.IResolvable;
    get keyEncipherment(): cdktf.IResolvable;
}
export declare class PrivatecaCertificateCertificateDescriptionX509DescriptionKeyUsageBaseKeyUsageList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): PrivatecaCertificateCertificateDescriptionX509DescriptionKeyUsageBaseKeyUsageOutputReference;
}
export interface PrivatecaCertificateCertificateDescriptionX509DescriptionKeyUsageExtendedKeyUsage {
}
export declare function privatecaCertificateCertificateDescriptionX509DescriptionKeyUsageExtendedKeyUsageToTerraform(struct?: PrivatecaCertificateCertificateDescriptionX509DescriptionKeyUsageExtendedKeyUsage): any;
export declare function privatecaCertificateCertificateDescriptionX509DescriptionKeyUsageExtendedKeyUsageToHclTerraform(struct?: PrivatecaCertificateCertificateDescriptionX509DescriptionKeyUsageExtendedKeyUsage): any;
export declare class PrivatecaCertificateCertificateDescriptionX509DescriptionKeyUsageExtendedKeyUsageOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): PrivatecaCertificateCertificateDescriptionX509DescriptionKeyUsageExtendedKeyUsage | undefined;
    set internalValue(value: PrivatecaCertificateCertificateDescriptionX509DescriptionKeyUsageExtendedKeyUsage | undefined);
    get clientAuth(): cdktf.IResolvable;
    get codeSigning(): cdktf.IResolvable;
    get emailProtection(): cdktf.IResolvable;
    get ocspSigning(): cdktf.IResolvable;
    get serverAuth(): cdktf.IResolvable;
    get timeStamping(): cdktf.IResolvable;
}
export declare class PrivatecaCertificateCertificateDescriptionX509DescriptionKeyUsageExtendedKeyUsageList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): PrivatecaCertificateCertificateDescriptionX509DescriptionKeyUsageExtendedKeyUsageOutputReference;
}
export interface PrivatecaCertificateCertificateDescriptionX509DescriptionKeyUsageUnknownExtendedKeyUsages {
}
export declare function privatecaCertificateCertificateDescriptionX509DescriptionKeyUsageUnknownExtendedKeyUsagesToTerraform(struct?: PrivatecaCertificateCertificateDescriptionX509DescriptionKeyUsageUnknownExtendedKeyUsages): any;
export declare function privatecaCertificateCertificateDescriptionX509DescriptionKeyUsageUnknownExtendedKeyUsagesToHclTerraform(struct?: PrivatecaCertificateCertificateDescriptionX509DescriptionKeyUsageUnknownExtendedKeyUsages): any;
export declare class PrivatecaCertificateCertificateDescriptionX509DescriptionKeyUsageUnknownExtendedKeyUsagesOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): PrivatecaCertificateCertificateDescriptionX509DescriptionKeyUsageUnknownExtendedKeyUsages | undefined;
    set internalValue(value: PrivatecaCertificateCertificateDescriptionX509DescriptionKeyUsageUnknownExtendedKeyUsages | undefined);
    get objectIdPath(): number[];
}
export declare class PrivatecaCertificateCertificateDescriptionX509DescriptionKeyUsageUnknownExtendedKeyUsagesList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): PrivatecaCertificateCertificateDescriptionX509DescriptionKeyUsageUnknownExtendedKeyUsagesOutputReference;
}
export interface PrivatecaCertificateCertificateDescriptionX509DescriptionKeyUsage {
}
export declare function privatecaCertificateCertificateDescriptionX509DescriptionKeyUsageToTerraform(struct?: PrivatecaCertificateCertificateDescriptionX509DescriptionKeyUsage): any;
export declare function privatecaCertificateCertificateDescriptionX509DescriptionKeyUsageToHclTerraform(struct?: PrivatecaCertificateCertificateDescriptionX509DescriptionKeyUsage): any;
export declare class PrivatecaCertificateCertificateDescriptionX509DescriptionKeyUsageOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): PrivatecaCertificateCertificateDescriptionX509DescriptionKeyUsage | undefined;
    set internalValue(value: PrivatecaCertificateCertificateDescriptionX509DescriptionKeyUsage | undefined);
    private _baseKeyUsage;
    get baseKeyUsage(): PrivatecaCertificateCertificateDescriptionX509DescriptionKeyUsageBaseKeyUsageList;
    private _extendedKeyUsage;
    get extendedKeyUsage(): PrivatecaCertificateCertificateDescriptionX509DescriptionKeyUsageExtendedKeyUsageList;
    private _unknownExtendedKeyUsages;
    get unknownExtendedKeyUsages(): PrivatecaCertificateCertificateDescriptionX509DescriptionKeyUsageUnknownExtendedKeyUsagesList;
}
export declare class PrivatecaCertificateCertificateDescriptionX509DescriptionKeyUsageList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): PrivatecaCertificateCertificateDescriptionX509DescriptionKeyUsageOutputReference;
}
export interface PrivatecaCertificateCertificateDescriptionX509DescriptionNameConstraints {
}
export declare function privatecaCertificateCertificateDescriptionX509DescriptionNameConstraintsToTerraform(struct?: PrivatecaCertificateCertificateDescriptionX509DescriptionNameConstraints): any;
export declare function privatecaCertificateCertificateDescriptionX509DescriptionNameConstraintsToHclTerraform(struct?: PrivatecaCertificateCertificateDescriptionX509DescriptionNameConstraints): any;
export declare class PrivatecaCertificateCertificateDescriptionX509DescriptionNameConstraintsOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): PrivatecaCertificateCertificateDescriptionX509DescriptionNameConstraints | undefined;
    set internalValue(value: PrivatecaCertificateCertificateDescriptionX509DescriptionNameConstraints | undefined);
    get critical(): cdktf.IResolvable;
    get excludedDnsNames(): string[];
    get excludedEmailAddresses(): string[];
    get excludedIpRanges(): string[];
    get excludedUris(): string[];
    get permittedDnsNames(): string[];
    get permittedEmailAddresses(): string[];
    get permittedIpRanges(): string[];
    get permittedUris(): string[];
}
export declare class PrivatecaCertificateCertificateDescriptionX509DescriptionNameConstraintsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): PrivatecaCertificateCertificateDescriptionX509DescriptionNameConstraintsOutputReference;
}
export interface PrivatecaCertificateCertificateDescriptionX509DescriptionPolicyIds {
}
export declare function privatecaCertificateCertificateDescriptionX509DescriptionPolicyIdsToTerraform(struct?: PrivatecaCertificateCertificateDescriptionX509DescriptionPolicyIds): any;
export declare function privatecaCertificateCertificateDescriptionX509DescriptionPolicyIdsToHclTerraform(struct?: PrivatecaCertificateCertificateDescriptionX509DescriptionPolicyIds): any;
export declare class PrivatecaCertificateCertificateDescriptionX509DescriptionPolicyIdsOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): PrivatecaCertificateCertificateDescriptionX509DescriptionPolicyIds | undefined;
    set internalValue(value: PrivatecaCertificateCertificateDescriptionX509DescriptionPolicyIds | undefined);
    get objectIdPath(): number[];
}
export declare class PrivatecaCertificateCertificateDescriptionX509DescriptionPolicyIdsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): PrivatecaCertificateCertificateDescriptionX509DescriptionPolicyIdsOutputReference;
}
export interface PrivatecaCertificateCertificateDescriptionX509Description {
}
export declare function privatecaCertificateCertificateDescriptionX509DescriptionToTerraform(struct?: PrivatecaCertificateCertificateDescriptionX509Description): any;
export declare function privatecaCertificateCertificateDescriptionX509DescriptionToHclTerraform(struct?: PrivatecaCertificateCertificateDescriptionX509Description): any;
export declare class PrivatecaCertificateCertificateDescriptionX509DescriptionOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): PrivatecaCertificateCertificateDescriptionX509Description | undefined;
    set internalValue(value: PrivatecaCertificateCertificateDescriptionX509Description | undefined);
    private _additionalExtensions;
    get additionalExtensions(): PrivatecaCertificateCertificateDescriptionX509DescriptionAdditionalExtensionsList;
    get aiaOcspServers(): string[];
    private _caOptions;
    get caOptions(): PrivatecaCertificateCertificateDescriptionX509DescriptionCaOptionsList;
    private _keyUsage;
    get keyUsage(): PrivatecaCertificateCertificateDescriptionX509DescriptionKeyUsageList;
    private _nameConstraints;
    get nameConstraints(): PrivatecaCertificateCertificateDescriptionX509DescriptionNameConstraintsList;
    private _policyIds;
    get policyIds(): PrivatecaCertificateCertificateDescriptionX509DescriptionPolicyIdsList;
}
export declare class PrivatecaCertificateCertificateDescriptionX509DescriptionList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): PrivatecaCertificateCertificateDescriptionX509DescriptionOutputReference;
}
export interface PrivatecaCertificateCertificateDescription {
}
export declare function privatecaCertificateCertificateDescriptionToTerraform(struct?: PrivatecaCertificateCertificateDescription): any;
export declare function privatecaCertificateCertificateDescriptionToHclTerraform(struct?: PrivatecaCertificateCertificateDescription): any;
export declare class PrivatecaCertificateCertificateDescriptionOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): PrivatecaCertificateCertificateDescription | undefined;
    set internalValue(value: PrivatecaCertificateCertificateDescription | undefined);
    get aiaIssuingCertificateUrls(): string[];
    private _authorityKeyId;
    get authorityKeyId(): PrivatecaCertificateCertificateDescriptionAuthorityKeyIdList;
    private _certFingerprint;
    get certFingerprint(): PrivatecaCertificateCertificateDescriptionCertFingerprintList;
    get crlDistributionPoints(): string[];
    private _publicKey;
    get publicKey(): PrivatecaCertificateCertificateDescriptionPublicKeyList;
    private _subjectDescription;
    get subjectDescription(): PrivatecaCertificateCertificateDescriptionSubjectDescriptionList;
    private _subjectKeyId;
    get subjectKeyId(): PrivatecaCertificateCertificateDescriptionSubjectKeyIdList;
    private _x509Description;
    get x509Description(): PrivatecaCertificateCertificateDescriptionX509DescriptionList;
}
export declare class PrivatecaCertificateCertificateDescriptionList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): PrivatecaCertificateCertificateDescriptionOutputReference;
}
export interface PrivatecaCertificateRevocationDetails {
}
export declare function privatecaCertificateRevocationDetailsToTerraform(struct?: PrivatecaCertificateRevocationDetails): any;
export declare function privatecaCertificateRevocationDetailsToHclTerraform(struct?: PrivatecaCertificateRevocationDetails): any;
export declare class PrivatecaCertificateRevocationDetailsOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): PrivatecaCertificateRevocationDetails | undefined;
    set internalValue(value: PrivatecaCertificateRevocationDetails | undefined);
    get revocationState(): string;
    get revocationTime(): string;
}
export declare class PrivatecaCertificateRevocationDetailsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): PrivatecaCertificateRevocationDetailsOutputReference;
}
export interface PrivatecaCertificateConfigPublicKey {
    /**
    * The format of the public key. Currently, only PEM format is supported. Possible values: ["KEY_TYPE_UNSPECIFIED", "PEM"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#format PrivatecaCertificate#format}
    */
    readonly format: string;
    /**
    * Required. A public key. When this is specified in a request, the padding and encoding can be any of the options described by the respective 'KeyType' value. When this is generated by the service, it will always be an RFC 5280 SubjectPublicKeyInfo structure containing an algorithm identifier and a key. A base64-encoded string.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#key PrivatecaCertificate#key}
    */
    readonly key?: string;
}
export declare function privatecaCertificateConfigPublicKeyToTerraform(struct?: PrivatecaCertificateConfigPublicKeyOutputReference | PrivatecaCertificateConfigPublicKey): any;
export declare function privatecaCertificateConfigPublicKeyToHclTerraform(struct?: PrivatecaCertificateConfigPublicKeyOutputReference | PrivatecaCertificateConfigPublicKey): any;
export declare class PrivatecaCertificateConfigPublicKeyOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): PrivatecaCertificateConfigPublicKey | undefined;
    set internalValue(value: PrivatecaCertificateConfigPublicKey | undefined);
    private _format?;
    get format(): string;
    set format(value: string);
    get formatInput(): string | undefined;
    private _key?;
    get key(): string;
    set key(value: string);
    resetKey(): void;
    get keyInput(): string | undefined;
}
export interface PrivatecaCertificateConfigSubjectConfigSubject {
    /**
    * The common name of the distinguished name.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#common_name PrivatecaCertificate#common_name}
    */
    readonly commonName: string;
    /**
    * The country code of the subject.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#country_code PrivatecaCertificate#country_code}
    */
    readonly countryCode?: string;
    /**
    * The locality or city of the subject.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#locality PrivatecaCertificate#locality}
    */
    readonly locality?: string;
    /**
    * The organization of the subject.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#organization PrivatecaCertificate#organization}
    */
    readonly organization: string;
    /**
    * The organizational unit of the subject.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#organizational_unit PrivatecaCertificate#organizational_unit}
    */
    readonly organizationalUnit?: string;
    /**
    * The postal code of the subject.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#postal_code PrivatecaCertificate#postal_code}
    */
    readonly postalCode?: string;
    /**
    * The province, territory, or regional state of the subject.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#province PrivatecaCertificate#province}
    */
    readonly province?: string;
    /**
    * The street address of the subject.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#street_address PrivatecaCertificate#street_address}
    */
    readonly streetAddress?: string;
}
export declare function privatecaCertificateConfigSubjectConfigSubjectToTerraform(struct?: PrivatecaCertificateConfigSubjectConfigSubjectOutputReference | PrivatecaCertificateConfigSubjectConfigSubject): any;
export declare function privatecaCertificateConfigSubjectConfigSubjectToHclTerraform(struct?: PrivatecaCertificateConfigSubjectConfigSubjectOutputReference | PrivatecaCertificateConfigSubjectConfigSubject): any;
export declare class PrivatecaCertificateConfigSubjectConfigSubjectOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): PrivatecaCertificateConfigSubjectConfigSubject | undefined;
    set internalValue(value: PrivatecaCertificateConfigSubjectConfigSubject | undefined);
    private _commonName?;
    get commonName(): string;
    set commonName(value: string);
    get commonNameInput(): string | undefined;
    private _countryCode?;
    get countryCode(): string;
    set countryCode(value: string);
    resetCountryCode(): void;
    get countryCodeInput(): string | undefined;
    private _locality?;
    get locality(): string;
    set locality(value: string);
    resetLocality(): void;
    get localityInput(): string | undefined;
    private _organization?;
    get organization(): string;
    set organization(value: string);
    get organizationInput(): string | undefined;
    private _organizationalUnit?;
    get organizationalUnit(): string;
    set organizationalUnit(value: string);
    resetOrganizationalUnit(): void;
    get organizationalUnitInput(): string | undefined;
    private _postalCode?;
    get postalCode(): string;
    set postalCode(value: string);
    resetPostalCode(): void;
    get postalCodeInput(): string | undefined;
    private _province?;
    get province(): string;
    set province(value: string);
    resetProvince(): void;
    get provinceInput(): string | undefined;
    private _streetAddress?;
    get streetAddress(): string;
    set streetAddress(value: string);
    resetStreetAddress(): void;
    get streetAddressInput(): string | undefined;
}
export interface PrivatecaCertificateConfigSubjectConfigSubjectAltName {
    /**
    * Contains only valid, fully-qualified host names.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#dns_names PrivatecaCertificate#dns_names}
    */
    readonly dnsNames?: string[];
    /**
    * Contains only valid RFC 2822 E-mail addresses.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#email_addresses PrivatecaCertificate#email_addresses}
    */
    readonly emailAddresses?: string[];
    /**
    * Contains only valid 32-bit IPv4 addresses or RFC 4291 IPv6 addresses.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#ip_addresses PrivatecaCertificate#ip_addresses}
    */
    readonly ipAddresses?: string[];
    /**
    * Contains only valid RFC 3986 URIs.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#uris PrivatecaCertificate#uris}
    */
    readonly uris?: string[];
}
export declare function privatecaCertificateConfigSubjectConfigSubjectAltNameToTerraform(struct?: PrivatecaCertificateConfigSubjectConfigSubjectAltNameOutputReference | PrivatecaCertificateConfigSubjectConfigSubjectAltName): any;
export declare function privatecaCertificateConfigSubjectConfigSubjectAltNameToHclTerraform(struct?: PrivatecaCertificateConfigSubjectConfigSubjectAltNameOutputReference | PrivatecaCertificateConfigSubjectConfigSubjectAltName): any;
export declare class PrivatecaCertificateConfigSubjectConfigSubjectAltNameOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): PrivatecaCertificateConfigSubjectConfigSubjectAltName | undefined;
    set internalValue(value: PrivatecaCertificateConfigSubjectConfigSubjectAltName | undefined);
    private _dnsNames?;
    get dnsNames(): string[];
    set dnsNames(value: string[]);
    resetDnsNames(): void;
    get dnsNamesInput(): string[] | undefined;
    private _emailAddresses?;
    get emailAddresses(): string[];
    set emailAddresses(value: string[]);
    resetEmailAddresses(): void;
    get emailAddressesInput(): string[] | undefined;
    private _ipAddresses?;
    get ipAddresses(): string[];
    set ipAddresses(value: string[]);
    resetIpAddresses(): void;
    get ipAddressesInput(): string[] | undefined;
    private _uris?;
    get uris(): string[];
    set uris(value: string[]);
    resetUris(): void;
    get urisInput(): string[] | undefined;
}
export interface PrivatecaCertificateConfigSubjectConfig {
    /**
    * subject block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#subject PrivatecaCertificate#subject}
    */
    readonly subject: PrivatecaCertificateConfigSubjectConfigSubject;
    /**
    * subject_alt_name block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#subject_alt_name PrivatecaCertificate#subject_alt_name}
    */
    readonly subjectAltName?: PrivatecaCertificateConfigSubjectConfigSubjectAltName;
}
export declare function privatecaCertificateConfigSubjectConfigToTerraform(struct?: PrivatecaCertificateConfigSubjectConfigOutputReference | PrivatecaCertificateConfigSubjectConfig): any;
export declare function privatecaCertificateConfigSubjectConfigToHclTerraform(struct?: PrivatecaCertificateConfigSubjectConfigOutputReference | PrivatecaCertificateConfigSubjectConfig): any;
export declare class PrivatecaCertificateConfigSubjectConfigOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): PrivatecaCertificateConfigSubjectConfig | undefined;
    set internalValue(value: PrivatecaCertificateConfigSubjectConfig | undefined);
    private _subject;
    get subject(): PrivatecaCertificateConfigSubjectConfigSubjectOutputReference;
    putSubject(value: PrivatecaCertificateConfigSubjectConfigSubject): void;
    get subjectInput(): PrivatecaCertificateConfigSubjectConfigSubject | undefined;
    private _subjectAltName;
    get subjectAltName(): PrivatecaCertificateConfigSubjectConfigSubjectAltNameOutputReference;
    putSubjectAltName(value: PrivatecaCertificateConfigSubjectConfigSubjectAltName): void;
    resetSubjectAltName(): void;
    get subjectAltNameInput(): PrivatecaCertificateConfigSubjectConfigSubjectAltName | undefined;
}
export interface PrivatecaCertificateConfigSubjectKeyId {
    /**
    * The value of the KeyId in lowercase hexadecimal.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#key_id PrivatecaCertificate#key_id}
    */
    readonly keyId?: string;
}
export declare function privatecaCertificateConfigSubjectKeyIdToTerraform(struct?: PrivatecaCertificateConfigSubjectKeyIdOutputReference | PrivatecaCertificateConfigSubjectKeyId): any;
export declare function privatecaCertificateConfigSubjectKeyIdToHclTerraform(struct?: PrivatecaCertificateConfigSubjectKeyIdOutputReference | PrivatecaCertificateConfigSubjectKeyId): any;
export declare class PrivatecaCertificateConfigSubjectKeyIdOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): PrivatecaCertificateConfigSubjectKeyId | undefined;
    set internalValue(value: PrivatecaCertificateConfigSubjectKeyId | undefined);
    private _keyId?;
    get keyId(): string;
    set keyId(value: string);
    resetKeyId(): void;
    get keyIdInput(): string | undefined;
}
export interface PrivatecaCertificateConfigX509ConfigAdditionalExtensionsObjectId {
    /**
    * An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#object_id_path PrivatecaCertificate#object_id_path}
    */
    readonly objectIdPath: number[];
}
export declare function privatecaCertificateConfigX509ConfigAdditionalExtensionsObjectIdToTerraform(struct?: PrivatecaCertificateConfigX509ConfigAdditionalExtensionsObjectIdOutputReference | PrivatecaCertificateConfigX509ConfigAdditionalExtensionsObjectId): any;
export declare function privatecaCertificateConfigX509ConfigAdditionalExtensionsObjectIdToHclTerraform(struct?: PrivatecaCertificateConfigX509ConfigAdditionalExtensionsObjectIdOutputReference | PrivatecaCertificateConfigX509ConfigAdditionalExtensionsObjectId): any;
export declare class PrivatecaCertificateConfigX509ConfigAdditionalExtensionsObjectIdOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): PrivatecaCertificateConfigX509ConfigAdditionalExtensionsObjectId | undefined;
    set internalValue(value: PrivatecaCertificateConfigX509ConfigAdditionalExtensionsObjectId | undefined);
    private _objectIdPath?;
    get objectIdPath(): number[];
    set objectIdPath(value: number[]);
    get objectIdPathInput(): number[] | undefined;
}
export interface PrivatecaCertificateConfigX509ConfigAdditionalExtensions {
    /**
    * Indicates whether or not this extension is critical (i.e., if the client does not know how to
    * handle this extension, the client should consider this to be an error).
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#critical PrivatecaCertificate#critical}
    */
    readonly critical: boolean | cdktf.IResolvable;
    /**
    * The value of this X.509 extension. A base64-encoded string.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#value PrivatecaCertificate#value}
    */
    readonly value: string;
    /**
    * object_id block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#object_id PrivatecaCertificate#object_id}
    */
    readonly objectId: PrivatecaCertificateConfigX509ConfigAdditionalExtensionsObjectId;
}
export declare function privatecaCertificateConfigX509ConfigAdditionalExtensionsToTerraform(struct?: PrivatecaCertificateConfigX509ConfigAdditionalExtensions | cdktf.IResolvable): any;
export declare function privatecaCertificateConfigX509ConfigAdditionalExtensionsToHclTerraform(struct?: PrivatecaCertificateConfigX509ConfigAdditionalExtensions | cdktf.IResolvable): any;
export declare class PrivatecaCertificateConfigX509ConfigAdditionalExtensionsOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): PrivatecaCertificateConfigX509ConfigAdditionalExtensions | cdktf.IResolvable | undefined;
    set internalValue(value: PrivatecaCertificateConfigX509ConfigAdditionalExtensions | cdktf.IResolvable | undefined);
    private _critical?;
    get critical(): boolean | cdktf.IResolvable;
    set critical(value: boolean | cdktf.IResolvable);
    get criticalInput(): boolean | cdktf.IResolvable | undefined;
    private _value?;
    get value(): string;
    set value(value: string);
    get valueInput(): string | undefined;
    private _objectId;
    get objectId(): PrivatecaCertificateConfigX509ConfigAdditionalExtensionsObjectIdOutputReference;
    putObjectId(value: PrivatecaCertificateConfigX509ConfigAdditionalExtensionsObjectId): void;
    get objectIdInput(): PrivatecaCertificateConfigX509ConfigAdditionalExtensionsObjectId | undefined;
}
export declare class PrivatecaCertificateConfigX509ConfigAdditionalExtensionsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: PrivatecaCertificateConfigX509ConfigAdditionalExtensions[] | cdktf.IResolvable;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): PrivatecaCertificateConfigX509ConfigAdditionalExtensionsOutputReference;
}
export interface PrivatecaCertificateConfigX509ConfigCaOptions {
    /**
    * When true, the "CA" in Basic Constraints extension will be set to true.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#is_ca PrivatecaCertificate#is_ca}
    */
    readonly isCa?: boolean | cdktf.IResolvable;
    /**
    * Refers to the "path length constraint" in Basic Constraints extension. For a CA certificate, this value describes the depth of
    * subordinate CA certificates that are allowed. If this value is less than 0, the request will fail.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#max_issuer_path_length PrivatecaCertificate#max_issuer_path_length}
    */
    readonly maxIssuerPathLength?: number;
    /**
    * When true, the "CA" in Basic Constraints extension will be set to false.
    * If both 'is_ca' and 'non_ca' are unset, the extension will be omitted from the CA certificate.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#non_ca PrivatecaCertificate#non_ca}
    */
    readonly nonCa?: boolean | cdktf.IResolvable;
    /**
    * When true, the "path length constraint" in Basic Constraints extension will be set to 0.
    * if both 'max_issuer_path_length' and 'zero_max_issuer_path_length' are unset,
    * the max path length will be omitted from the CA certificate.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#zero_max_issuer_path_length PrivatecaCertificate#zero_max_issuer_path_length}
    */
    readonly zeroMaxIssuerPathLength?: boolean | cdktf.IResolvable;
}
export declare function privatecaCertificateConfigX509ConfigCaOptionsToTerraform(struct?: PrivatecaCertificateConfigX509ConfigCaOptionsOutputReference | PrivatecaCertificateConfigX509ConfigCaOptions): any;
export declare function privatecaCertificateConfigX509ConfigCaOptionsToHclTerraform(struct?: PrivatecaCertificateConfigX509ConfigCaOptionsOutputReference | PrivatecaCertificateConfigX509ConfigCaOptions): any;
export declare class PrivatecaCertificateConfigX509ConfigCaOptionsOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): PrivatecaCertificateConfigX509ConfigCaOptions | undefined;
    set internalValue(value: PrivatecaCertificateConfigX509ConfigCaOptions | undefined);
    private _isCa?;
    get isCa(): boolean | cdktf.IResolvable;
    set isCa(value: boolean | cdktf.IResolvable);
    resetIsCa(): void;
    get isCaInput(): boolean | cdktf.IResolvable | undefined;
    private _maxIssuerPathLength?;
    get maxIssuerPathLength(): number;
    set maxIssuerPathLength(value: number);
    resetMaxIssuerPathLength(): void;
    get maxIssuerPathLengthInput(): number | undefined;
    private _nonCa?;
    get nonCa(): boolean | cdktf.IResolvable;
    set nonCa(value: boolean | cdktf.IResolvable);
    resetNonCa(): void;
    get nonCaInput(): boolean | cdktf.IResolvable | undefined;
    private _zeroMaxIssuerPathLength?;
    get zeroMaxIssuerPathLength(): boolean | cdktf.IResolvable;
    set zeroMaxIssuerPathLength(value: boolean | cdktf.IResolvable);
    resetZeroMaxIssuerPathLength(): void;
    get zeroMaxIssuerPathLengthInput(): boolean | cdktf.IResolvable | undefined;
}
export interface PrivatecaCertificateConfigX509ConfigKeyUsageBaseKeyUsage {
    /**
    * The key may be used to sign certificates.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#cert_sign PrivatecaCertificate#cert_sign}
    */
    readonly certSign?: boolean | cdktf.IResolvable;
    /**
    * The key may be used for cryptographic commitments. Note that this may also be referred to as "non-repudiation".
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#content_commitment PrivatecaCertificate#content_commitment}
    */
    readonly contentCommitment?: boolean | cdktf.IResolvable;
    /**
    * The key may be used sign certificate revocation lists.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#crl_sign PrivatecaCertificate#crl_sign}
    */
    readonly crlSign?: boolean | cdktf.IResolvable;
    /**
    * The key may be used to encipher data.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#data_encipherment PrivatecaCertificate#data_encipherment}
    */
    readonly dataEncipherment?: boolean | cdktf.IResolvable;
    /**
    * The key may be used to decipher only.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#decipher_only PrivatecaCertificate#decipher_only}
    */
    readonly decipherOnly?: boolean | cdktf.IResolvable;
    /**
    * The key may be used for digital signatures.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#digital_signature PrivatecaCertificate#digital_signature}
    */
    readonly digitalSignature?: boolean | cdktf.IResolvable;
    /**
    * The key may be used to encipher only.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#encipher_only PrivatecaCertificate#encipher_only}
    */
    readonly encipherOnly?: boolean | cdktf.IResolvable;
    /**
    * The key may be used in a key agreement protocol.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#key_agreement PrivatecaCertificate#key_agreement}
    */
    readonly keyAgreement?: boolean | cdktf.IResolvable;
    /**
    * The key may be used to encipher other keys.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#key_encipherment PrivatecaCertificate#key_encipherment}
    */
    readonly keyEncipherment?: boolean | cdktf.IResolvable;
}
export declare function privatecaCertificateConfigX509ConfigKeyUsageBaseKeyUsageToTerraform(struct?: PrivatecaCertificateConfigX509ConfigKeyUsageBaseKeyUsageOutputReference | PrivatecaCertificateConfigX509ConfigKeyUsageBaseKeyUsage): any;
export declare function privatecaCertificateConfigX509ConfigKeyUsageBaseKeyUsageToHclTerraform(struct?: PrivatecaCertificateConfigX509ConfigKeyUsageBaseKeyUsageOutputReference | PrivatecaCertificateConfigX509ConfigKeyUsageBaseKeyUsage): any;
export declare class PrivatecaCertificateConfigX509ConfigKeyUsageBaseKeyUsageOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): PrivatecaCertificateConfigX509ConfigKeyUsageBaseKeyUsage | undefined;
    set internalValue(value: PrivatecaCertificateConfigX509ConfigKeyUsageBaseKeyUsage | undefined);
    private _certSign?;
    get certSign(): boolean | cdktf.IResolvable;
    set certSign(value: boolean | cdktf.IResolvable);
    resetCertSign(): void;
    get certSignInput(): boolean | cdktf.IResolvable | undefined;
    private _contentCommitment?;
    get contentCommitment(): boolean | cdktf.IResolvable;
    set contentCommitment(value: boolean | cdktf.IResolvable);
    resetContentCommitment(): void;
    get contentCommitmentInput(): boolean | cdktf.IResolvable | undefined;
    private _crlSign?;
    get crlSign(): boolean | cdktf.IResolvable;
    set crlSign(value: boolean | cdktf.IResolvable);
    resetCrlSign(): void;
    get crlSignInput(): boolean | cdktf.IResolvable | undefined;
    private _dataEncipherment?;
    get dataEncipherment(): boolean | cdktf.IResolvable;
    set dataEncipherment(value: boolean | cdktf.IResolvable);
    resetDataEncipherment(): void;
    get dataEnciphermentInput(): boolean | cdktf.IResolvable | undefined;
    private _decipherOnly?;
    get decipherOnly(): boolean | cdktf.IResolvable;
    set decipherOnly(value: boolean | cdktf.IResolvable);
    resetDecipherOnly(): void;
    get decipherOnlyInput(): boolean | cdktf.IResolvable | undefined;
    private _digitalSignature?;
    get digitalSignature(): boolean | cdktf.IResolvable;
    set digitalSignature(value: boolean | cdktf.IResolvable);
    resetDigitalSignature(): void;
    get digitalSignatureInput(): boolean | cdktf.IResolvable | undefined;
    private _encipherOnly?;
    get encipherOnly(): boolean | cdktf.IResolvable;
    set encipherOnly(value: boolean | cdktf.IResolvable);
    resetEncipherOnly(): void;
    get encipherOnlyInput(): boolean | cdktf.IResolvable | undefined;
    private _keyAgreement?;
    get keyAgreement(): boolean | cdktf.IResolvable;
    set keyAgreement(value: boolean | cdktf.IResolvable);
    resetKeyAgreement(): void;
    get keyAgreementInput(): boolean | cdktf.IResolvable | undefined;
    private _keyEncipherment?;
    get keyEncipherment(): boolean | cdktf.IResolvable;
    set keyEncipherment(value: boolean | cdktf.IResolvable);
    resetKeyEncipherment(): void;
    get keyEnciphermentInput(): boolean | cdktf.IResolvable | undefined;
}
export interface PrivatecaCertificateConfigX509ConfigKeyUsageExtendedKeyUsage {
    /**
    * Corresponds to OID 1.3.6.1.5.5.7.3.2. Officially described as "TLS WWW client authentication", though regularly used for non-WWW TLS.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#client_auth PrivatecaCertificate#client_auth}
    */
    readonly clientAuth?: boolean | cdktf.IResolvable;
    /**
    * Corresponds to OID 1.3.6.1.5.5.7.3.3. Officially described as "Signing of downloadable executable code client authentication".
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#code_signing PrivatecaCertificate#code_signing}
    */
    readonly codeSigning?: boolean | cdktf.IResolvable;
    /**
    * Corresponds to OID 1.3.6.1.5.5.7.3.4. Officially described as "Email protection".
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#email_protection PrivatecaCertificate#email_protection}
    */
    readonly emailProtection?: boolean | cdktf.IResolvable;
    /**
    * Corresponds to OID 1.3.6.1.5.5.7.3.9. Officially described as "Signing OCSP responses".
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#ocsp_signing PrivatecaCertificate#ocsp_signing}
    */
    readonly ocspSigning?: boolean | cdktf.IResolvable;
    /**
    * Corresponds to OID 1.3.6.1.5.5.7.3.1. Officially described as "TLS WWW server authentication", though regularly used for non-WWW TLS.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#server_auth PrivatecaCertificate#server_auth}
    */
    readonly serverAuth?: boolean | cdktf.IResolvable;
    /**
    * Corresponds to OID 1.3.6.1.5.5.7.3.8. Officially described as "Binding the hash of an object to a time".
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#time_stamping PrivatecaCertificate#time_stamping}
    */
    readonly timeStamping?: boolean | cdktf.IResolvable;
}
export declare function privatecaCertificateConfigX509ConfigKeyUsageExtendedKeyUsageToTerraform(struct?: PrivatecaCertificateConfigX509ConfigKeyUsageExtendedKeyUsageOutputReference | PrivatecaCertificateConfigX509ConfigKeyUsageExtendedKeyUsage): any;
export declare function privatecaCertificateConfigX509ConfigKeyUsageExtendedKeyUsageToHclTerraform(struct?: PrivatecaCertificateConfigX509ConfigKeyUsageExtendedKeyUsageOutputReference | PrivatecaCertificateConfigX509ConfigKeyUsageExtendedKeyUsage): any;
export declare class PrivatecaCertificateConfigX509ConfigKeyUsageExtendedKeyUsageOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): PrivatecaCertificateConfigX509ConfigKeyUsageExtendedKeyUsage | undefined;
    set internalValue(value: PrivatecaCertificateConfigX509ConfigKeyUsageExtendedKeyUsage | undefined);
    private _clientAuth?;
    get clientAuth(): boolean | cdktf.IResolvable;
    set clientAuth(value: boolean | cdktf.IResolvable);
    resetClientAuth(): void;
    get clientAuthInput(): boolean | cdktf.IResolvable | undefined;
    private _codeSigning?;
    get codeSigning(): boolean | cdktf.IResolvable;
    set codeSigning(value: boolean | cdktf.IResolvable);
    resetCodeSigning(): void;
    get codeSigningInput(): boolean | cdktf.IResolvable | undefined;
    private _emailProtection?;
    get emailProtection(): boolean | cdktf.IResolvable;
    set emailProtection(value: boolean | cdktf.IResolvable);
    resetEmailProtection(): void;
    get emailProtectionInput(): boolean | cdktf.IResolvable | undefined;
    private _ocspSigning?;
    get ocspSigning(): boolean | cdktf.IResolvable;
    set ocspSigning(value: boolean | cdktf.IResolvable);
    resetOcspSigning(): void;
    get ocspSigningInput(): boolean | cdktf.IResolvable | undefined;
    private _serverAuth?;
    get serverAuth(): boolean | cdktf.IResolvable;
    set serverAuth(value: boolean | cdktf.IResolvable);
    resetServerAuth(): void;
    get serverAuthInput(): boolean | cdktf.IResolvable | undefined;
    private _timeStamping?;
    get timeStamping(): boolean | cdktf.IResolvable;
    set timeStamping(value: boolean | cdktf.IResolvable);
    resetTimeStamping(): void;
    get timeStampingInput(): boolean | cdktf.IResolvable | undefined;
}
export interface PrivatecaCertificateConfigX509ConfigKeyUsageUnknownExtendedKeyUsages {
    /**
    * An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#object_id_path PrivatecaCertificate#object_id_path}
    */
    readonly objectIdPath: number[];
}
export declare function privatecaCertificateConfigX509ConfigKeyUsageUnknownExtendedKeyUsagesToTerraform(struct?: PrivatecaCertificateConfigX509ConfigKeyUsageUnknownExtendedKeyUsages | cdktf.IResolvable): any;
export declare function privatecaCertificateConfigX509ConfigKeyUsageUnknownExtendedKeyUsagesToHclTerraform(struct?: PrivatecaCertificateConfigX509ConfigKeyUsageUnknownExtendedKeyUsages | cdktf.IResolvable): any;
export declare class PrivatecaCertificateConfigX509ConfigKeyUsageUnknownExtendedKeyUsagesOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): PrivatecaCertificateConfigX509ConfigKeyUsageUnknownExtendedKeyUsages | cdktf.IResolvable | undefined;
    set internalValue(value: PrivatecaCertificateConfigX509ConfigKeyUsageUnknownExtendedKeyUsages | cdktf.IResolvable | undefined);
    private _objectIdPath?;
    get objectIdPath(): number[];
    set objectIdPath(value: number[]);
    get objectIdPathInput(): number[] | undefined;
}
export declare class PrivatecaCertificateConfigX509ConfigKeyUsageUnknownExtendedKeyUsagesList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: PrivatecaCertificateConfigX509ConfigKeyUsageUnknownExtendedKeyUsages[] | cdktf.IResolvable;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): PrivatecaCertificateConfigX509ConfigKeyUsageUnknownExtendedKeyUsagesOutputReference;
}
export interface PrivatecaCertificateConfigX509ConfigKeyUsage {
    /**
    * base_key_usage block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#base_key_usage PrivatecaCertificate#base_key_usage}
    */
    readonly baseKeyUsage: PrivatecaCertificateConfigX509ConfigKeyUsageBaseKeyUsage;
    /**
    * extended_key_usage block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#extended_key_usage PrivatecaCertificate#extended_key_usage}
    */
    readonly extendedKeyUsage: PrivatecaCertificateConfigX509ConfigKeyUsageExtendedKeyUsage;
    /**
    * unknown_extended_key_usages block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#unknown_extended_key_usages PrivatecaCertificate#unknown_extended_key_usages}
    */
    readonly unknownExtendedKeyUsages?: PrivatecaCertificateConfigX509ConfigKeyUsageUnknownExtendedKeyUsages[] | cdktf.IResolvable;
}
export declare function privatecaCertificateConfigX509ConfigKeyUsageToTerraform(struct?: PrivatecaCertificateConfigX509ConfigKeyUsageOutputReference | PrivatecaCertificateConfigX509ConfigKeyUsage): any;
export declare function privatecaCertificateConfigX509ConfigKeyUsageToHclTerraform(struct?: PrivatecaCertificateConfigX509ConfigKeyUsageOutputReference | PrivatecaCertificateConfigX509ConfigKeyUsage): any;
export declare class PrivatecaCertificateConfigX509ConfigKeyUsageOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): PrivatecaCertificateConfigX509ConfigKeyUsage | undefined;
    set internalValue(value: PrivatecaCertificateConfigX509ConfigKeyUsage | undefined);
    private _baseKeyUsage;
    get baseKeyUsage(): PrivatecaCertificateConfigX509ConfigKeyUsageBaseKeyUsageOutputReference;
    putBaseKeyUsage(value: PrivatecaCertificateConfigX509ConfigKeyUsageBaseKeyUsage): void;
    get baseKeyUsageInput(): PrivatecaCertificateConfigX509ConfigKeyUsageBaseKeyUsage | undefined;
    private _extendedKeyUsage;
    get extendedKeyUsage(): PrivatecaCertificateConfigX509ConfigKeyUsageExtendedKeyUsageOutputReference;
    putExtendedKeyUsage(value: PrivatecaCertificateConfigX509ConfigKeyUsageExtendedKeyUsage): void;
    get extendedKeyUsageInput(): PrivatecaCertificateConfigX509ConfigKeyUsageExtendedKeyUsage | undefined;
    private _unknownExtendedKeyUsages;
    get unknownExtendedKeyUsages(): PrivatecaCertificateConfigX509ConfigKeyUsageUnknownExtendedKeyUsagesList;
    putUnknownExtendedKeyUsages(value: PrivatecaCertificateConfigX509ConfigKeyUsageUnknownExtendedKeyUsages[] | cdktf.IResolvable): void;
    resetUnknownExtendedKeyUsages(): void;
    get unknownExtendedKeyUsagesInput(): cdktf.IResolvable | PrivatecaCertificateConfigX509ConfigKeyUsageUnknownExtendedKeyUsages[] | undefined;
}
export interface PrivatecaCertificateConfigX509ConfigNameConstraints {
    /**
    * Indicates whether or not the name constraints are marked critical.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#critical PrivatecaCertificate#critical}
    */
    readonly critical: boolean | cdktf.IResolvable;
    /**
    * Contains excluded DNS names. Any DNS name that can be
    * constructed by simply adding zero or more labels to
    * the left-hand side of the name satisfies the name constraint.
    * For example, 'example.com', 'www.example.com', 'www.sub.example.com'
    * would satisfy 'example.com' while 'example1.com' does not.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#excluded_dns_names PrivatecaCertificate#excluded_dns_names}
    */
    readonly excludedDnsNames?: string[];
    /**
    * Contains the excluded email addresses. The value can be a particular
    * email address, a hostname to indicate all email addresses on that host or
    * a domain with a leading period (e.g. '.example.com') to indicate
    * all email addresses in that domain.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#excluded_email_addresses PrivatecaCertificate#excluded_email_addresses}
    */
    readonly excludedEmailAddresses?: string[];
    /**
    * Contains the excluded IP ranges. For IPv4 addresses, the ranges
    * are expressed using CIDR notation as specified in RFC 4632.
    * For IPv6 addresses, the ranges are expressed in similar encoding as IPv4
    * addresses.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#excluded_ip_ranges PrivatecaCertificate#excluded_ip_ranges}
    */
    readonly excludedIpRanges?: string[];
    /**
    * Contains the excluded URIs that apply to the host part of the name.
    * The value can be a hostname or a domain with a
    * leading period (like '.example.com')
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#excluded_uris PrivatecaCertificate#excluded_uris}
    */
    readonly excludedUris?: string[];
    /**
    * Contains permitted DNS names. Any DNS name that can be
    * constructed by simply adding zero or more labels to
    * the left-hand side of the name satisfies the name constraint.
    * For example, 'example.com', 'www.example.com', 'www.sub.example.com'
    * would satisfy 'example.com' while 'example1.com' does not.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#permitted_dns_names PrivatecaCertificate#permitted_dns_names}
    */
    readonly permittedDnsNames?: string[];
    /**
    * Contains the permitted email addresses. The value can be a particular
    * email address, a hostname to indicate all email addresses on that host or
    * a domain with a leading period (e.g. '.example.com') to indicate
    * all email addresses in that domain.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#permitted_email_addresses PrivatecaCertificate#permitted_email_addresses}
    */
    readonly permittedEmailAddresses?: string[];
    /**
    * Contains the permitted IP ranges. For IPv4 addresses, the ranges
    * are expressed using CIDR notation as specified in RFC 4632.
    * For IPv6 addresses, the ranges are expressed in similar encoding as IPv4
    * addresses.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#permitted_ip_ranges PrivatecaCertificate#permitted_ip_ranges}
    */
    readonly permittedIpRanges?: string[];
    /**
    * Contains the permitted URIs that apply to the host part of the name.
    * The value can be a hostname or a domain with a
    * leading period (like '.example.com')
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#permitted_uris PrivatecaCertificate#permitted_uris}
    */
    readonly permittedUris?: string[];
}
export declare function privatecaCertificateConfigX509ConfigNameConstraintsToTerraform(struct?: PrivatecaCertificateConfigX509ConfigNameConstraintsOutputReference | PrivatecaCertificateConfigX509ConfigNameConstraints): any;
export declare function privatecaCertificateConfigX509ConfigNameConstraintsToHclTerraform(struct?: PrivatecaCertificateConfigX509ConfigNameConstraintsOutputReference | PrivatecaCertificateConfigX509ConfigNameConstraints): any;
export declare class PrivatecaCertificateConfigX509ConfigNameConstraintsOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): PrivatecaCertificateConfigX509ConfigNameConstraints | undefined;
    set internalValue(value: PrivatecaCertificateConfigX509ConfigNameConstraints | undefined);
    private _critical?;
    get critical(): boolean | cdktf.IResolvable;
    set critical(value: boolean | cdktf.IResolvable);
    get criticalInput(): boolean | cdktf.IResolvable | undefined;
    private _excludedDnsNames?;
    get excludedDnsNames(): string[];
    set excludedDnsNames(value: string[]);
    resetExcludedDnsNames(): void;
    get excludedDnsNamesInput(): string[] | undefined;
    private _excludedEmailAddresses?;
    get excludedEmailAddresses(): string[];
    set excludedEmailAddresses(value: string[]);
    resetExcludedEmailAddresses(): void;
    get excludedEmailAddressesInput(): string[] | undefined;
    private _excludedIpRanges?;
    get excludedIpRanges(): string[];
    set excludedIpRanges(value: string[]);
    resetExcludedIpRanges(): void;
    get excludedIpRangesInput(): string[] | undefined;
    private _excludedUris?;
    get excludedUris(): string[];
    set excludedUris(value: string[]);
    resetExcludedUris(): void;
    get excludedUrisInput(): string[] | undefined;
    private _permittedDnsNames?;
    get permittedDnsNames(): string[];
    set permittedDnsNames(value: string[]);
    resetPermittedDnsNames(): void;
    get permittedDnsNamesInput(): string[] | undefined;
    private _permittedEmailAddresses?;
    get permittedEmailAddresses(): string[];
    set permittedEmailAddresses(value: string[]);
    resetPermittedEmailAddresses(): void;
    get permittedEmailAddressesInput(): string[] | undefined;
    private _permittedIpRanges?;
    get permittedIpRanges(): string[];
    set permittedIpRanges(value: string[]);
    resetPermittedIpRanges(): void;
    get permittedIpRangesInput(): string[] | undefined;
    private _permittedUris?;
    get permittedUris(): string[];
    set permittedUris(value: string[]);
    resetPermittedUris(): void;
    get permittedUrisInput(): string[] | undefined;
}
export interface PrivatecaCertificateConfigX509ConfigPolicyIds {
    /**
    * An ObjectId specifies an object identifier (OID). These provide context and describe types in ASN.1 messages.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#object_id_path PrivatecaCertificate#object_id_path}
    */
    readonly objectIdPath: number[];
}
export declare function privatecaCertificateConfigX509ConfigPolicyIdsToTerraform(struct?: PrivatecaCertificateConfigX509ConfigPolicyIds | cdktf.IResolvable): any;
export declare function privatecaCertificateConfigX509ConfigPolicyIdsToHclTerraform(struct?: PrivatecaCertificateConfigX509ConfigPolicyIds | cdktf.IResolvable): any;
export declare class PrivatecaCertificateConfigX509ConfigPolicyIdsOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): PrivatecaCertificateConfigX509ConfigPolicyIds | cdktf.IResolvable | undefined;
    set internalValue(value: PrivatecaCertificateConfigX509ConfigPolicyIds | cdktf.IResolvable | undefined);
    private _objectIdPath?;
    get objectIdPath(): number[];
    set objectIdPath(value: number[]);
    get objectIdPathInput(): number[] | undefined;
}
export declare class PrivatecaCertificateConfigX509ConfigPolicyIdsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: PrivatecaCertificateConfigX509ConfigPolicyIds[] | cdktf.IResolvable;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): PrivatecaCertificateConfigX509ConfigPolicyIdsOutputReference;
}
export interface PrivatecaCertificateConfigX509Config {
    /**
    * Describes Online Certificate Status Protocol (OCSP) endpoint addresses that appear in the
    * "Authority Information Access" extension in the certificate.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#aia_ocsp_servers PrivatecaCertificate#aia_ocsp_servers}
    */
    readonly aiaOcspServers?: string[];
    /**
    * additional_extensions block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#additional_extensions PrivatecaCertificate#additional_extensions}
    */
    readonly additionalExtensions?: PrivatecaCertificateConfigX509ConfigAdditionalExtensions[] | cdktf.IResolvable;
    /**
    * ca_options block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#ca_options PrivatecaCertificate#ca_options}
    */
    readonly caOptions?: PrivatecaCertificateConfigX509ConfigCaOptions;
    /**
    * key_usage block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#key_usage PrivatecaCertificate#key_usage}
    */
    readonly keyUsage: PrivatecaCertificateConfigX509ConfigKeyUsage;
    /**
    * name_constraints block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#name_constraints PrivatecaCertificate#name_constraints}
    */
    readonly nameConstraints?: PrivatecaCertificateConfigX509ConfigNameConstraints;
    /**
    * policy_ids block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#policy_ids PrivatecaCertificate#policy_ids}
    */
    readonly policyIds?: PrivatecaCertificateConfigX509ConfigPolicyIds[] | cdktf.IResolvable;
}
export declare function privatecaCertificateConfigX509ConfigToTerraform(struct?: PrivatecaCertificateConfigX509ConfigOutputReference | PrivatecaCertificateConfigX509Config): any;
export declare function privatecaCertificateConfigX509ConfigToHclTerraform(struct?: PrivatecaCertificateConfigX509ConfigOutputReference | PrivatecaCertificateConfigX509Config): any;
export declare class PrivatecaCertificateConfigX509ConfigOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): PrivatecaCertificateConfigX509Config | undefined;
    set internalValue(value: PrivatecaCertificateConfigX509Config | undefined);
    private _aiaOcspServers?;
    get aiaOcspServers(): string[];
    set aiaOcspServers(value: string[]);
    resetAiaOcspServers(): void;
    get aiaOcspServersInput(): string[] | undefined;
    private _additionalExtensions;
    get additionalExtensions(): PrivatecaCertificateConfigX509ConfigAdditionalExtensionsList;
    putAdditionalExtensions(value: PrivatecaCertificateConfigX509ConfigAdditionalExtensions[] | cdktf.IResolvable): void;
    resetAdditionalExtensions(): void;
    get additionalExtensionsInput(): cdktf.IResolvable | PrivatecaCertificateConfigX509ConfigAdditionalExtensions[] | undefined;
    private _caOptions;
    get caOptions(): PrivatecaCertificateConfigX509ConfigCaOptionsOutputReference;
    putCaOptions(value: PrivatecaCertificateConfigX509ConfigCaOptions): void;
    resetCaOptions(): void;
    get caOptionsInput(): PrivatecaCertificateConfigX509ConfigCaOptions | undefined;
    private _keyUsage;
    get keyUsage(): PrivatecaCertificateConfigX509ConfigKeyUsageOutputReference;
    putKeyUsage(value: PrivatecaCertificateConfigX509ConfigKeyUsage): void;
    get keyUsageInput(): PrivatecaCertificateConfigX509ConfigKeyUsage | undefined;
    private _nameConstraints;
    get nameConstraints(): PrivatecaCertificateConfigX509ConfigNameConstraintsOutputReference;
    putNameConstraints(value: PrivatecaCertificateConfigX509ConfigNameConstraints): void;
    resetNameConstraints(): void;
    get nameConstraintsInput(): PrivatecaCertificateConfigX509ConfigNameConstraints | undefined;
    private _policyIds;
    get policyIds(): PrivatecaCertificateConfigX509ConfigPolicyIdsList;
    putPolicyIds(value: PrivatecaCertificateConfigX509ConfigPolicyIds[] | cdktf.IResolvable): void;
    resetPolicyIds(): void;
    get policyIdsInput(): cdktf.IResolvable | PrivatecaCertificateConfigX509ConfigPolicyIds[] | undefined;
}
export interface PrivatecaCertificateConfigA {
    /**
    * public_key block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#public_key PrivatecaCertificate#public_key}
    */
    readonly publicKey: PrivatecaCertificateConfigPublicKey;
    /**
    * subject_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#subject_config PrivatecaCertificate#subject_config}
    */
    readonly subjectConfig: PrivatecaCertificateConfigSubjectConfig;
    /**
    * subject_key_id block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#subject_key_id PrivatecaCertificate#subject_key_id}
    */
    readonly subjectKeyId?: PrivatecaCertificateConfigSubjectKeyId;
    /**
    * x509_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#x509_config PrivatecaCertificate#x509_config}
    */
    readonly x509Config: PrivatecaCertificateConfigX509Config;
}
export declare function privatecaCertificateConfigAToTerraform(struct?: PrivatecaCertificateConfigAOutputReference | PrivatecaCertificateConfigA): any;
export declare function privatecaCertificateConfigAToHclTerraform(struct?: PrivatecaCertificateConfigAOutputReference | PrivatecaCertificateConfigA): any;
export declare class PrivatecaCertificateConfigAOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): PrivatecaCertificateConfigA | undefined;
    set internalValue(value: PrivatecaCertificateConfigA | undefined);
    private _publicKey;
    get publicKey(): PrivatecaCertificateConfigPublicKeyOutputReference;
    putPublicKey(value: PrivatecaCertificateConfigPublicKey): void;
    get publicKeyInput(): PrivatecaCertificateConfigPublicKey | undefined;
    private _subjectConfig;
    get subjectConfig(): PrivatecaCertificateConfigSubjectConfigOutputReference;
    putSubjectConfig(value: PrivatecaCertificateConfigSubjectConfig): void;
    get subjectConfigInput(): PrivatecaCertificateConfigSubjectConfig | undefined;
    private _subjectKeyId;
    get subjectKeyId(): PrivatecaCertificateConfigSubjectKeyIdOutputReference;
    putSubjectKeyId(value: PrivatecaCertificateConfigSubjectKeyId): void;
    resetSubjectKeyId(): void;
    get subjectKeyIdInput(): PrivatecaCertificateConfigSubjectKeyId | undefined;
    private _x509Config;
    get x509Config(): PrivatecaCertificateConfigX509ConfigOutputReference;
    putX509Config(value: PrivatecaCertificateConfigX509Config): void;
    get x509ConfigInput(): PrivatecaCertificateConfigX509Config | undefined;
}
export interface PrivatecaCertificateTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#create PrivatecaCertificate#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#delete PrivatecaCertificate#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#update PrivatecaCertificate#update}
    */
    readonly update?: string;
}
export declare function privatecaCertificateTimeoutsToTerraform(struct?: PrivatecaCertificateTimeouts | cdktf.IResolvable): any;
export declare function privatecaCertificateTimeoutsToHclTerraform(struct?: PrivatecaCertificateTimeouts | cdktf.IResolvable): any;
export declare class PrivatecaCertificateTimeoutsOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): PrivatecaCertificateTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: PrivatecaCertificateTimeouts | cdktf.IResolvable | undefined);
    private _create?;
    get create(): string;
    set create(value: string);
    resetCreate(): void;
    get createInput(): string | undefined;
    private _delete?;
    get delete(): string;
    set delete(value: string);
    resetDelete(): void;
    get deleteInput(): string | undefined;
    private _update?;
    get update(): string;
    set update(value: string);
    resetUpdate(): void;
    get updateInput(): string | undefined;
}
/**
* Represents a {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate google_privateca_certificate}
*/
export declare class PrivatecaCertificate extends cdktf.TerraformResource {
    static readonly tfResourceType = "google_privateca_certificate";
    /**
    * Generates CDKTF code for importing a PrivatecaCertificate resource upon running "cdktf plan <stack-name>"
    * @param scope The scope in which to define this construct
    * @param importToId The construct id used in the generated config for the PrivatecaCertificate to import
    * @param importFromId The id of the existing PrivatecaCertificate that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the PrivatecaCertificate to import is found
    */
    static generateConfigForImport(scope: Construct, importToId: string, importFromId: string, provider?: cdktf.TerraformProvider): cdktf.ImportableResource;
    /**
    * Create a new {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/privateca_certificate google_privateca_certificate} 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 PrivatecaCertificateConfig
    */
    constructor(scope: Construct, id: string, config: PrivatecaCertificateConfig);
    private _certificateAuthority?;
    get certificateAuthority(): string;
    set certificateAuthority(value: string);
    resetCertificateAuthority(): void;
    get certificateAuthorityInput(): string | undefined;
    private _certificateDescription;
    get certificateDescription(): PrivatecaCertificateCertificateDescriptionList;
    private _certificateTemplate?;
    get certificateTemplate(): string;
    set certificateTemplate(value: string);
    resetCertificateTemplate(): void;
    get certificateTemplateInput(): string | undefined;
    get createTime(): string;
    private _effectiveLabels;
    get effectiveLabels(): cdktf.StringMap;
    private _id?;
    get id(): string;
    set id(value: string);
    resetId(): void;
    get idInput(): string | undefined;
    get issuerCertificateAuthority(): string;
    private _labels?;
    get labels(): {
        [key: string]: string;
    };
    set labels(value: {
        [key: string]: string;
    });
    resetLabels(): void;
    get labelsInput(): {
        [key: string]: string;
    } | undefined;
    private _lifetime?;
    get lifetime(): string;
    set lifetime(value: string);
    resetLifetime(): void;
    get lifetimeInput(): string | undefined;
    private _location?;
    get location(): string;
    set location(value: string);
    get locationInput(): string | undefined;
    private _name?;
    get name(): string;
    set name(value: string);
    get nameInput(): string | undefined;
    get pemCertificate(): string;
    get pemCertificateChain(): string[];
    private _pemCsr?;
    get pemCsr(): string;
    set pemCsr(value: string);
    resetPemCsr(): void;
    get pemCsrInput(): string | undefined;
    private _pool?;
    get pool(): string;
    set pool(value: string);
    get poolInput(): string | undefined;
    private _project?;
    get project(): string;
    set project(value: string);
    resetProject(): void;
    get projectInput(): string | undefined;
    private _revocationDetails;
    get revocationDetails(): PrivatecaCertificateRevocationDetailsList;
    private _terraformLabels;
    get terraformLabels(): cdktf.StringMap;
    get updateTime(): string;
    private _config;
    get config(): PrivatecaCertificateConfigAOutputReference;
    putConfig(value: PrivatecaCertificateConfigA): void;
    resetConfig(): void;
    get configInput(): PrivatecaCertificateConfigA | undefined;
    private _timeouts;
    get timeouts(): PrivatecaCertificateTimeoutsOutputReference;
    putTimeouts(value: PrivatecaCertificateTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | PrivatecaCertificateTimeouts | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
