import { ASN1Element as _Element } from "@wildboar/asn1";
import * as $ from "@wildboar/asn1/functional";
import { CertificateObject } from "../PKCS-15/CertificateObject.ta.mjs";
import { CVCertificateAttributes } from "../PKCS-15/CVCertificateAttributes.ta.mjs";
import { PGPCertificateAttributes } from "../PKCS-15/PGPCertificateAttributes.ta.mjs";
import { SPKICertificateAttributes } from "../PKCS-15/SPKICertificateAttributes.ta.mjs";
import { WTLSCertificateAttributes } from "../PKCS-15/WTLSCertificateAttributes.ta.mjs";
import { X509AttributeCertificateAttributes } from "../PKCS-15/X509AttributeCertificateAttributes.ta.mjs";
import { X509CertificateAttributes } from "../PKCS-15/X509CertificateAttributes.ta.mjs";
import { X9_68CertificateAttributes } from "../PKCS-15/X9-68CertificateAttributes.ta.mjs";
/**
 * @summary CertificateType
 * @description
 *
 * ### ASN.1 Definition:
 *
 * ```asn1
 * CertificateType  ::=  CHOICE {
 *     x509Certificate  CertificateObject { X509CertificateAttributes},
 *     x509AttributeCertificate [0] CertificateObject {X509AttributeCertificateAttributes},
 *     spkiCertificate [1] CertificateObject {SPKICertificateAttributes},
 *     pgpCertificate  [2] CertificateObject {PGPCertificateAttributes},
 *     wtlsCertificate [3] CertificateObject {WTLSCertificateAttributes},
 *     x9-68Certificate [4] CertificateObject {X9-68CertificateAttributes},
 *     ...,
 *     cvCertificate [5] CertificateObject {CVCertificateAttributes}
 * }
 * ```
 */
export type CertificateType = {
    x509Certificate: CertificateObject<X509CertificateAttributes>;
} | {
    x509AttributeCertificate: CertificateObject<X509AttributeCertificateAttributes>;
} | {
    spkiCertificate: CertificateObject<SPKICertificateAttributes>;
} | {
    pgpCertificate: CertificateObject<PGPCertificateAttributes>;
} | {
    wtlsCertificate: CertificateObject<WTLSCertificateAttributes>;
} | {
    x9_68Certificate: CertificateObject<X9_68CertificateAttributes>;
} | {
    cvCertificate: CertificateObject<CVCertificateAttributes>;
} | _Element;
/**
 * @summary Decodes an ASN.1 element into a(n) CertificateType
 * @function
 * @param {_Element} el The element being decoded.
 * @returns {CertificateType} The decoded data structure.
 */
export declare function _decode_CertificateType(el: _Element): CertificateType;
/**
 * @summary Encodes a(n) CertificateType into an ASN.1 Element.
 * @function
 * @param value The element being encoded.
 * @param elGetter A function that can be used to get new ASN.1 elements.
 * @returns {_Element} The CertificateType, encoded as an ASN.1 Element.
 */
export declare function _encode_CertificateType(value: CertificateType, elGetter: $.ASN1Encoder<CertificateType>): _Element;
//# sourceMappingURL=CertificateType.ta.d.mts.map