import { _ConstructionType, _TagClassType } from './enumerator';
import { _PdfObjectIdentifier } from './identifier-mapping';
/**
 * Represents an abstract ASN.1 syntax element with utilities for encoding, decoding, validation and serialization.
 *
 * @private
 */
export declare abstract class _PdfAbstractSyntaxElement {
    /**
     * Internal recursion tracker used to prevent excessive recursion during parsing.
     *
     * @private
     */
    _recursionCount: number;
    /**
     * Maximum allowed nesting depth to protect against overly deep ASN.1 structures.
     *
     * @private
     */
    _nestingRecursionLimit: number;
    /**
     * Optional element name used for error messages and diagnostics.
     *
     * @private
     */
    _name: string;
    /**
     * The ASN.1 tag class for the element (universal, application, context, or private).
     *
     * @private
     */
    _tagClass: _TagClassType;
    /**
     * Indicates whether the element is primitive or constructed.
     *
     * @private
     */
    _construction: _ConstructionType;
    /**
     * Internal storage for the element tag number.
     */
    private _tagNumber;
    /**
     * Retrieves the raw encoded value bytes of this ASN.1 element.
     *
     * @returns {Uint8Array} The encoded value as a `Uint8Array`.
     * @private
     */
    abstract _getValue(): Uint8Array;
    /**
     * Sets the raw encoded value bytes for this ASN.1 element.
     *
     * @param {Uint8Array} The value bytes to assign.
     * @returns {void} nothing.
     * @private
     */
    abstract _setValue(value: Uint8Array): void;
    /**
     * Retrieves the boolean interpretation of this element's value.
     *
     * @returns {boolean} The boolean value.
     * @private
     */
    abstract _getBooleanValue(): boolean;
    /**
     * Sets the boolean interpretation of this element's value.
     *
     * @param {boolean} The boolean to set.
     * @returns {void} nothing.
     * @private
     */
    abstract _setBooleanValue(value: boolean): void;
    /**
     * Retrieves this element's bit string as a `Uint8ClampedArray`.
     *
     * @returns {Uint8ClampedArray} The bit string contents.
     * @private
     */
    abstract _getBitString(): Uint8ClampedArray;
    /**
     * Sets this element's bit string value.
     *
     * @param {Uint8ClampedArray} The bit string to assign.
     * @returns {void} nothing.
     * @private
     */
    abstract _setBitString(value: Uint8ClampedArray): void;
    /**
     * Retrieves this element's octet string as a `Uint8Array`.
     *
     * @returns {Uint8Array} The octet string contents.
     * @private
     */
    abstract _getOctetString(): Uint8Array;
    /**
     * Sets this element's octet string value.
     *
     * @param {Uint8Array} The octet string to assign.
     * @returns {void} nothing.
     * @private
     */
    abstract _setOctetString(value: Uint8Array): void;
    /**
     * Retrieves the object descriptor string for this element.
     *
     * @returns {string} The object descriptor.
     * @private
     */
    abstract _getObjectDescriptor(): string;
    /**
     * Sets the object descriptor string for this element.
     *
     * @param {string} The descriptor to assign.
     * @returns {void} nothing.
     * @private
     */
    abstract _setObjectDescriptor(value: string): void;
    /**
     * Retrieves the UTF-8 string value for this element.
     *
     * @returns {string} The UTF-8 decoded string.
     * @private
     */
    abstract _getUtf8String(): string;
    /**
     * Sets the UTF-8 string value for this element.
     *
     * @param {string} The UTF-8 string to assign.
     * @returns {void} nothing.
     * @private
     */
    abstract _setUtf8String(value: string): void;
    /**
     * Retrieves the child elements when this is a `SEQUENCE`.
     *
     * @returns {_PdfAbstractSyntaxElement[]} The sequence elements.
     * @private
     */
    abstract _getSequence(): _PdfAbstractSyntaxElement[];
    /**
     * Sets the child elements when this is a `SEQUENCE`.
     *
     * @param {_PdfAbstractSyntaxElement[]} The elements to assign.
     * @returns {void} nothing.
     * @private
     */
    abstract _setSequence(value: _PdfAbstractSyntaxElement[]): void;
    /**
     * Retrieves the elements for an abstract `SET` value.
     *
     * @returns {_PdfAbstractSyntaxElement[]} The set elements.
     * @private
     */
    abstract _getAbstractSetValue(): _PdfAbstractSyntaxElement[];
    /**
     * Sets the elements for an abstract `SET` value.
     *
     * @param {_PdfAbstractSyntaxElement[]} The set elements to assign.
     * @returns {void} nothing.
     * @private
     */
    abstract _setAbstractSetValue(value: _PdfAbstractSyntaxElement[]): void;
    /**
     * Retrieves the elements when this is a `SEQUENCE OF`.
     *
     * @returns {_PdfAbstractSyntaxElement[]} The sequence-of elements.
     * @private
     */
    abstract _getSequenceOf(): _PdfAbstractSyntaxElement[];
    /**
     * Sets the elements when this is a `SEQUENCE OF`.
     *
     * @param {_PdfAbstractSyntaxElement} value The elements to assign.
     * @returns {void} nothing.
     * @private
     */
    abstract _setSequenceOf(value: _PdfAbstractSyntaxElement[]): void;
    /**
     * Retrieves the elements when this is a `SET OF`.
     *
     * @returns {_PdfAbstractSyntaxElement[]} The set-of elements.
     * @private
     */
    abstract _getAbstractSetOf(): _PdfAbstractSyntaxElement[];
    /**
     * Sets the elements when this is a `SET OF`.
     *
     * @param {_PdfAbstractSyntaxElement[]} The elements to assign.
     * @returns {void} nothing.
     * @private
     */
    abstract _setAbstractSetOf(value: _PdfAbstractSyntaxElement[]): void;
    /**
     * Retrieves a numeric string value for this element.
     *
     * @returns {string} The numeric string.
     * @private
     */
    abstract _getNumericString(): string;
    /**
     * Sets a numeric string value for this element.
     *
     * @param {string} The numeric string to assign.
     * @returns {void} nothing.
     * @private
     */
    abstract _setNumericString(value: string): void;
    /**
     * Retrieves a printable string value for this element.
     *
     * @returns {string} The printable string.
     * @private
     */
    abstract _getPrintableString(): string;
    /**
     * Sets a printable string value for this element.
     *
     * @param {string} The printable string to assign.
     * @returns {void}
     * @private
     */
    abstract _setPrintableString(value: string): void;
    /**
     * Retrieves legacy teleprinter text bytes for this element.
     *
     * @returns {Uint8Array} The teleprinter text as bytes.
     * @private
     */
    abstract _getTeleprinterText(): Uint8Array;
    /**
     * Sets legacy teleprinter text bytes for this element.
     *
     * @param {Uint8Array} The bytes to assign.
     * @returns {void} nothing.
     * @private
     */
    abstract _setTeleprinterText(value: Uint8Array): void;
    /**
     * Retrieves videotex information bytes for this element.
     *
     * @returns {Uint8Array} The videotex bytes.
     * @private
     */
    abstract _getVideoTextInformation(): Uint8Array;
    /**
     * Sets videotex information bytes for this element.
     *
     * @param {Uint8Array} The videotex bytes to assign.
     * @returns {void} nothing.
     * @private
     */
    abstract _setVideoTextInformation(value: Uint8Array): void;
    /**
     * Retrieves an IA5 (international alphabet) string for this element.
     *
     * @returns {string} The IA5 string.
     * @private
     */
    abstract _getInternationalAlphabetString(): string;
    /**
     * Sets an IA5 string for this element.
     *
     * @param {string} The IA5 string to assign.
     * @returns {void} nothing.
     * @private
     */
    abstract _setInternationalAlphabetString(value: string): void;
    /**
     * Retrieves a graphic string for this element.
     *
     * @returns {string} The graphic string.
     * @private
     */
    abstract _getGraphicString(): string;
    /**
     * Sets a graphic string for this element.
     *
     * @param {string} The graphic string to assign.
     * @returns {void} Nothing.
     * @private
     */
    abstract _setGraphicString(value: string): void;
    /**
     * Retrieves a visible string for this element.
     *
     * @returns {string} The visible string.
     * @private
     */
    abstract _getVisibleString(): string;
    /**
     * Sets a visible string for this element.
     *
     * @param {string} The visible string to assign.
     * @returns {void} Nothing.
     * @private
     */
    abstract _setVisibleString(value: string): void;
    /**
     * Retrieves a universal (UTF-32) string for this element.
     *
     * @returns {string} The universal string.
     * @private
     */
    abstract _getUniversalString(): string;
    /**
     * Sets a universal (UTF-32) string for this element.
     *
     * @param {string} The universal string to assign.
     * @returns {void} nothing.
     * @private
     */
    abstract _setUniversalString(value: string): void;
    /**
     * Retrieves a BMP (16-bit) string for this element.
     *
     * @returns {string} The BMP string.
     * @private
     */
    abstract _getBmpString(): string;
    /**
     * Sets a BMP (16-bit) string for this element.
     *
     * @param {string} The BMP string to assign.
     * @returns {void} Nothing.
     * @private
     */
    abstract _setBmpString(value: string): void;
    /**
     * Retrieves the inner contained element when present.
     *
     * @returns {_PdfAbstractSyntaxElement} The inner ASN.1 element.
     * @private
     */
    abstract _getInner(): _PdfAbstractSyntaxElement;
    /**
     * Retrieves component elements for constructed types.
     *
     * @returns {_PdfAbstractSyntaxElement[]} The component elements.
     * @private
     */
    abstract _getComponents(): _PdfAbstractSyntaxElement[];
    /**
     * Populates this element from the given bytes and returns the number of consumed bytes.
     *
     * @param {Uint8Array} The input bytes to parse.
     * @returns {number} The number of bytes consumed during parsing.
     * @private
     */
    abstract _fromBytes(bytes: Uint8Array): number;
    /**
     * Constructs this element from the provided child elements.
     *
     * @param {_PdfAbstractSyntaxElement[]} The child elements to construct from.
     * @returns {void} nothing.
     * @private
     */
    abstract _construct(els: _PdfAbstractSyntaxElement[]): void;
    /**
     * Produces the tag and length bytes for this element.
     *
     * @returns {Uint8Array} The tag-and-length bytes.
     * @private
     */
    abstract _tagAndLengthBytes(): Uint8Array;
    /**
     * Serializes this element into a sequence of buffers.
     *
     * @returns {Uint8Array} An array of `Uint8Array` buffers representing the element.
     * @private
     */
    abstract _toBuffers(): Uint8Array[];
    /**
     * Determines the length of the length-field for a given value length.
     *
     * @param {number} Optional value length to evaluate.
     * @returns {number} The number of bytes used to encode the length.
     * @private
     */
    abstract _lengthLength(valueLength?: number): number;
    /**
     * Returns the length of the encoded value for this element.
     *
     * @returns {number} The value length in bytes.
     * @private
     */
    abstract _valueLength(): number;
    /**
     * Serializes this element using the given data type hint.
     *
     * @param {string} A hint describing the serialization format.
     * @returns {Uint8Array} The serialized bytes.
     * @private
     */
    abstract _serialize(dataType: string): Uint8Array;
    /**
     * Returns the numeric tag number for this ASN.1 element.
     *
     * @returns {number} The tag number.
     * @private
     */
    _getTagNumber(): number;
    /**
     * Sets the numeric tag number for this ASN.1 element.
     *
     * @param {number} value non-negative tag number to assign.
     * @returns {void} nothing.
     * @private
     */
    _setTagNumber(value: number): void;
    /**
     * Returns the length in bytes of this element's encoded value.
     *
     * @returns {number} The length of the encoded value.
     * @private
     */
    _getLength(): number;
    /**
     * Calculates how many bytes are needed to encode the tag for this element.
     *
     * @returns {number} The number of bytes used for the tag encoding.
     * @private
     */
    _tagLength(): number;
    /**
     * Concatenates this element's buffers into a single `Uint8Array`.
     *
     * @returns {Uint8Array} The serialized bytes for this element.
     * @private
     */
    _toBytes(): Uint8Array;
    /**
     * Validates that a size lies within the inclusive `[min, max]` bounds.
     *
     * @param {string} name human-readable name used in error messages.
     * @param {string} units string used in error messages.
     * @param {number} actualSize measured size.
     * @param {number} min allowed size.
     * @param {number}  max allowed size.
     * @returns {void} Nothing.
     * @private
     */
    _validateSize(name: string, units: string, actualSize: number, min: number, max?: number): void;
    /**
     * Validates that a numeric value lies within the inclusive `[min, max]` range.
     *
     * @param {string} name used in error messages.
     * @param {bigint | number} actualValue to validate.
     * @param {bigint} min allowed value.
     * @param {bigint} [max] maximum allowed value.
     * @returns {void}
     * @private
     */
    _validateRange(name: string, actualValue: bigint | number, min: bigint, max?: bigint): void;
    /**
     * Returns a bit string constrained to the given size bounds.
     *
     * @param {number} min allowed length in bits.
     * @param {number} [max] maximum allowed length in bits.
     * @returns {Uint8ClampedArray} The constrained bit string.
     * @private
     */
    _sizeConstrainedString(min: number, max?: number): Uint8ClampedArray;
    /**
     * Returns a UTF-8 string constrained by character count.
     *
     * @param {number} min allowed characters.
     * @param {number} [max] maximum allowed characters.
     * @returns {string} The constrained UTF-8 string.
     * @private
     */
    _sizeConstrainedUtf8String(min: number, max?: number): string;
    /**
     * Returns a `SEQUENCE OF` constrained by element count.
     *
     * @param {number} min allowed elements.
     * @param {number} [max] maximum allowed elements.
     * @returns {_PdfAbstractSyntaxElement} The constrained sequence-of elements.
     * @private
     */
    _sizeConstrainedSequenceOf(min: number, max?: number): _PdfAbstractSyntaxElement[];
    /**
     * Returns a `SET OF` constrained by element count.
     *
     * @param {number} min allowed elements.
     * @param {number} [max] maximum allowed elements.
     * @returns {_PdfAbstractSyntaxElement} The constrained set-of elements.
     * @private
     */
    _sizeConstrainedSetOf(min: number, max?: number): _PdfAbstractSyntaxElement[];
    /**
     * Returns a numeric string constrained by character count.
     *
     * @param {number} min allowed characters.
     * @param {number} [max] maximum allowed characters.
     * @returns {string} The constrained numeric string.
     * @private
     */
    _sizeConstrainedNumericString(min: number, max?: number): string;
    /**
     * Returns a printable ASCII string constrained by character count.
     *
     * @param {number} min allowed characters.
     * @param {number} [max] maximum allowed characters.
     * @returns {string} The constrained printable string.
     * @private
     */
    _sizeConstrainedPrintableString(min: number, max?: number): string;
    /**
     * Returns a legacy encoded text string constrained by character count.
     *
     * @param {number} min allowed characters.
     * @param {number} [max] maximum allowed characters.
     * @returns {string} The constrained text string bytes.
     * @private
     */
    _sizeConstrainedTextString(min: number, max?: number): Uint8Array;
    /**
     * Returns a videotex string constrained by character count.
     *
     * @param {number} min allowed characters.
     * @param {number} [max] maximum allowed characters.
     * @returns  {string} The constrained videotex bytes.
     * @private
     */
    _sizeConstrainedVideoString(min: number, max?: number): Uint8Array;
    /**
     * Returns an IA5 (ASCII) string constrained by character count.
     *
     * @param {number} min allowed characters.
     * @param {number} [max] maximum allowed characters.
     * @returns {string} The constrained IA5 string.
     * @private
     */
    _sizeConstrainedIA5String(min: number, max?: number): string;
    /**
     * Returns a graphic string constrained by character count.
     *
     * @param {number} min allowed characters.
     * @param {number} [max] maximum allowed characters.
     * @returns {string} The constrained graphic string.
     * @private
     */
    _sizeConstrainedGraphicString(min: number, max?: number): string;
    /**
     * Returns a visible string constrained by character count.
     *
     * @param {number} min allowed characters.
     * @param {number} [max] maximum allowed characters.
     * @returns {string} The constrained visible string.
     * @private
     */
    _sizeConstrainedVisibleString(min: number, max?: number): string;
    /**
     * Returns a universal string constrained by character count.
     *
     * @param {number} min allowed characters.
     * @param {number} [max] maximum allowed characters.
     * @returns {string} The constrained universal string.
     * @private
     */
    _sizeConstrainedUniversalString(min: number, max?: number): string;
    /**
     * Returns an integer value constrained by the specified numeric range.
     *
     * @param {bigint} min allowed value.
     * @param {bigint} [max] maximum allowed value.
     * @returns {number} The constrained number.
     * @private
     */
    _rangeConstrainedNumber(min: bigint, max?: bigint): number;
    /**
     * Validates this element's tag against permitted classes, constructions and numbers.
     *
     * @param {_TagClassType} permittedClasses Allowed tag classes.
     * @param {_ConstructionType} permittedConstruction Allowed construction types.
     * @param {number[]} permittedNumbers Allowed tag numbers.
     * @returns {number} if valid or a negative error code.
     * @private
     */
    _validateTag(permittedClasses: _TagClassType[], permittedConstruction: _ConstructionType[], permittedNumbers: number[]): number;
    /**
     * Returns this object as an ASN.1 element instance.
     *
     * @returns {_PdfAbstractSyntaxElement} This instance.
     * @private
     */
    _toElement(): _PdfAbstractSyntaxElement;
    /**
     * Copies tag and value information from another element into this one.
     *
     * @param {_PdfAbstractSyntaxElement} el The source element to copy from.
     * @returns {void} Nothing.
     * @private
     */
    _fromElement(el: _PdfAbstractSyntaxElement): void;
    /**
     * Produces a human-readable string representation for this element.
     *
     * @returns {string} A string describing the element and its value.
     * @private
     */
    _toString(): string;
    /**
     * Converts this element to a JSON-serializable representation when possible.
     *
     * @returns {unknown} A JSON-friendly value or `undefined` if not representable.
     * @private
     */
    _toJson(): unknown;
    /**
     * Sorts elements into canonical order by their encoded bytes.
     *
     * @param  {_PdfAbstractSyntaxElement[]} elements array of elements to sort.
     * @returns {_PdfAbstractSyntaxElement[]} The sorted elements.
     * @private
     */
    _sortCanonically(elements: _PdfAbstractSyntaxElement[]): _PdfAbstractSyntaxElement[];
    /**
     * Determines whether the provided elements have unique (class, tag) pairs.
     *
     * @param {_PdfAbstractSyntaxElement} elements to examine.
     * @returns {boolean} if all elements are uniquely tagged.
     * @private
     */
    _isUniquelyTagged(elements: _PdfAbstractSyntaxElement[]): boolean;
    /**
     * Decodes and returns this element's integer value.
     *
     * @returns {number} The decoded integer.
     * @private
     */
    _getInteger(): number;
    /**
     * Encodes and sets this element's integer value.
     *
     * @param {number} value integer to encode and assign.
     * @returns {void} Nothing.
     * @private
     */
    _setInteger(value: number): void;
    /**
     * Decodes and returns this element's object identifier.
     *
     * @returns {_PdfObjectIdentifier} The decoded `_PdfObjectIdentifier`.
     * @private
     */
    _getObjectIdentifier(): _PdfObjectIdentifier;
    /**
     * Encodes and sets this element's object identifier.
     *
     * @param {_PdfObjectIdentifier}  value The object identifier to assign.
     * @returns {void} Nothing.
     * @private
     */
    _setObjectIdentifier(value: _PdfObjectIdentifier): void;
    /**
     * Returns this element's enumerated value as a number.
     *
     * @returns {number} The enumerated value.
     * @private
     */
    _getEnumerated(): number;
    /**
     * Sets this element's enumerated value.
     *
     * @param {number} value enumerated value to assign.
     * @returns {void} Nothing.
     * @private
     */
    _setEnumerated(value: number): void;
    /**
     * Decodes and returns this element's relative object identifier as an array of arcs.
     *
     * @returns {number[]} The relative OID arcs.
     * @private
     */
    _getRelativeObjectIdentifier(): number[];
    /**
     * Encodes and sets this element's relative object identifier.
     *
     * @param {number[]} value array of arcs to assign.
     * @returns {void} This returns void.
     * @private
     */
    _setRelativeObjectIdentifier(value: number[]): void;
    /**
     * Decodes and returns this element's time string.
     *
     * @returns {string} The decoded time string.
     * @private
     */
    _getTime(): string;
    /**
     * Encodes and sets this element's time string.
     *
     * @param {string} value time string to assign.
     * @returns {void} This returns void.
     * @private
     */
    _setTime(value: string): void;
    /**
     * Decodes and returns this element's date.
     *
     * @returns {Date} The decoded `Date`.
     * @private
     */
    _getDate(): Date;
    /**
     * Encodes and sets this element's date.
     *
     * @param {Date} value `Date` to assign.
     * @returns {void} This returns void.
     * @private
     */
    _setDate(value: Date): void;
    /**
     * Decodes and returns this element's time-of-day as a `Date`.
     *
     * @returns {Date} The decoded time-of-day.
     * @private
     */
    _getTimeOfDay(): Date;
    /**
     * Encodes and sets this element's time-of-day.
     *
     * @param {Date} value `Date` representing the time-of-day.
     * @returns {void}
     * @private
     */
    _setTimeOfDay(value: Date): void;
    /**
     * Decodes and returns this element's date-time as a `Date`.
     *
     * @returns {Date} The decoded date-time.
     * @private
     */
    _getDateTime(): Date;
    /**
     * Encodes and sets this element's date-time.
     *
     * @param {Date} value `Date` to assign.
     * @returns {void} This returns void.
     * @private
     */
    _setDateTime(value: Date): void;
    /**
     * Decodes and returns this element's object ID resource identifier.
     *
     * @returns {string} The decoded resource identifier string.
     * @private
     */
    _getObjectIdResourceIdentifier(): string;
    /**
     * Encodes and sets this element's object ID resource identifier.
     *
     * @param {string} value resource identifier string to assign.
     * @returns {void} This returns void.
     * @private
     */
    _setObjectIdResourceIdentifier(value: string): void;
    /**
     * Decodes and returns this element's relative resource identifier.
     *
     * @returns {string} The decoded relative resource identifier.
     * @private
     */
    _getRelativeResourceIdentifier(): string;
    /**
     * Encodes and sets this element's relative resource identifier.
     *
     * @param {string} value relative resource identifier string to assign.
     * @returns {void} this returns void.
     * @private
     */
    _setRelativeResourceIdentifier(value: string): void;
    /**
     * Encodes a JavaScript number into ASN.1 integer bytes.
     *
     * @param {number} value number to encode.
     * @returns {Uint8Array} The encoded integer bytes.
     * @private
     */
    _encodeInteger(value: number): Uint8Array;
    /**
     * Decodes ASN.1 integer bytes into a JavaScript number.
     *
     * @param {Uint8Array} value integer bytes to decode.
     * @returns {number} The decoded number.
     * @private
     */
    _decodeInteger(value: Uint8Array): number;
    /**
     * Encodes an object identifier into bytes.
     *
     * @param {_PdfObjectIdentifier} value `_PdfObjectIdentifier` to encode.
     * @returns {Uint8Array} The encoded bytes.
     * @private
     */
    _encodeObjectIdentifier(value: _PdfObjectIdentifier): Uint8Array;
    /**
     * Decodes bytes into an `_PdfObjectIdentifier` instance.
     *
     * @param {Uint8Array} value bytes to decode.
     * @returns {_PdfObjectIdentifier} The decoded `_PdfObjectIdentifier`.
     * @private
     */
    _decodeObjectIdentifier(value: Uint8Array): _PdfObjectIdentifier;
    /**
     * Encodes a relative object identifier into bytes.
     *
     * @param {number[]} value array of relative OID arcs.
     * @returns {Uint8Array} The encoded bytes.
     * @private
     */
    _encodeRelativeObjectIdentifier(value: number[]): Uint8Array;
    /**
     * Decodes bytes into a relative object identifier (array of arcs).
     *
     * @param {Uint8Array} value bytes to decode.
     * @returns {number[]} The decoded arcs.
     * @private
     */
    _decodeRelativeObjectIdentifier(value: Uint8Array): number[];
    /**
     * Encodes a time string into bytes.
     *
     * @param {string} value time string to encode.
     * @returns  {Uint8Array} The encoded bytes.
     * @private
     */
    _encodeTime(value: string): Uint8Array;
    /**
     * Decodes time bytes into a string.
     *
     * @param {Uint8Array} bytes to decode.
     * @returns {string} The decoded time string.
     * @private
     */
    _decodeTime(bytes: Uint8Array): string;
    /**
     * Encodes a `Date` into ASN.1 date bytes (YYYYMMDD).
     *
     * @param {Date} date to encode.
     * @returns {Uint8Array} The encoded date bytes.
     * @private
     */
    _encodeDate(date: Date): Uint8Array;
    /**
     * Decodes ASN.1 date bytes (YYYYMMDD) into a `Date`.
     *
     * @param {Uint8Array} bytes to decode.
     * @returns {Date} The decoded `Date`.
     * @private
     */
    _decodeDate(bytes: Uint8Array): Date;
    /**
     * Encodes a time-of-day `Date` into bytes (HHMMSS).
     *
     * @param {Date} time to encode.
     * @returns {Uint8Array} The encoded bytes.
     * @private
     */
    _encodeTimeOfDay(time: Date): Uint8Array;
    /**
     * Decodes time-of-day bytes (HHMMSS) into a `Date`.
     *
     * @param {Uint8Array} bytes to decode.
     * @returns {Date} The decoded `Date`.
     * @private
     */
    _decodeTimeOfDay(bytes: Uint8Array): Date;
    /**
     * Decodes ASN.1 date-time bytes into a `Date`.
     *
     * @param {Uint8Array} bytes to decode.
     * @returns {Date} The decoded `Date`.
     * @private
     */
    _decodeDateTime(bytes: Uint8Array): Date;
    /**
     * Decodes a GENERAL STRING ensuring only general characters are present.
     *
     * @param {Uint8Array} value to decode.
     * @returns {string} The decoded string.
     * @private
     */
    _decodeGeneralString(value: Uint8Array): string;
    /**
     * Decodes a GRAPHIC STRING ensuring allowed graphic characters.
     *
     * @param {Uint8Array} value bytes to decode.
     * @returns {string} The decoded string.
     * @private
     */
    _decodeGraphicString(value: Uint8Array): string;
    /**
     * Decodes a NUMERIC STRING ensuring only numeric characters and spaces.
     *
     * @param {Uint8Array} value bytes to decode.
     * @returns {string} The decoded string.
     * @private
     */
    _decodeNumericString(value: Uint8Array): string;
    /**
     * Decodes an OBJECT DESCRIPTOR ensuring only allowed characters.
     *
     * @param {Uint8Array} value bytes to decode.
     * @returns {string} The decoded descriptor string.
     * @private
     */
    _decodeObjectDescriptor(value: Uint8Array): string;
    /**
     * Decodes an object-id resource identifier into a string.
     *
     * @param {Uint8Array} bytes to decode.
     * @returns {string} The decoded string.
     * @private
     */
    _decodeObjectIdResourceIdentifier(bytes: Uint8Array): string;
    /**
     * Decodes a relative resource identifier into a string.
     *
     * @param {Uint8Array} bytes to decode.
     * @returns {string} The decoded string.
     * @private
     */
    _decodeRelativeResourceIdentifier(bytes: Uint8Array): string;
    /**
     * Decodes a PRINTABLE STRING, validating allowed characters.
     *
     * @param {Uint8Array} value bytes to decode.
     * @returns {string} The decoded string.
     * @private
     */
    _decodePrintableString(value: Uint8Array): string;
    /**
     * Decodes a VISIBLE STRING, validating allowed graphic characters.
     *
     * @param {Uint8Array} value bytes to decode.
     * @returns {string} The decoded string.
     * @private
     */
    _decodeVisibleString(value: Uint8Array): string;
    /**
     * Encodes a bit string into ASN.1 BIT STRING bytes.
     *
     * @param {Uint8ClampedArray} value bit string to encode.
     * @returns {Uint8Array} The encoded bytes.
     * @private
     */
    _encodeBitString(value: Uint8ClampedArray): Uint8Array;
    /**
     * Encodes a boolean into ASN.1 boolean bytes.
     *
     * @param {boolean} value boolean to encode.
     * @returns {Uint8Array} The encoded byte array.
     * @private
     */
    _encodeBoolean(value: boolean): Uint8Array;
    /**
     * Encodes a `Date` into ASN.1 date-time bytes (YYYYMMDDHHMMSS).
     *
     * @param {Date} value The `Date` to encode.
     * @returns {Uint8Array}The encoded bytes.
     * @private
     */
    _encodeDateTime(value: Date): Uint8Array;
    /**
     * Encodes an object-id resource identifier string into bytes.
     *
     * @param {string} value string to encode.
     * @returns {Uint8Array} The encoded bytes.
     * @private
     */
    _encodeObjectIdResourceIdentifier(value: string): Uint8Array;
    /**
     * Encodes a relative resource identifier string into bytes.
     *
     * @param {string} value string to encode.
     * @returns {Uint8Array} The encoded bytes.
     * @private
     */
    _encodeRelativeResourceIdentifier(value: string): Uint8Array;
    /**
     * Encodes a sequence of elements into a contiguous byte array.
     *
     * @param {_PdfAbstractSyntaxElement} value elements to encode.
     * @returns {Uint8Array} The concatenated bytes.
     * @private
     */
    _encodeSequence(value: _PdfAbstractSyntaxElement[]): Uint8Array;
    /**
     * Encodes a numeric string into bytes.
     *
     * @param {string} value string to encode.
     * @returns {Uint8Array}The encoded bytes.
     * @private
     */
    _encodeNumericString(value: string): Uint8Array;
    /**
     * Encodes a printable string into bytes.
     *
     * @param {string} value string to encode.
     * @returns {Uint8Array} The encoded bytes.
     * @private
     */
    _encodePrintableString(value: string): Uint8Array;
    /**
     * Encodes a graphic string into bytes.
     *
     * @param {string} value string to encode.
     * @returns {Uint8Array} The encoded bytes.
     * @private
     */
    _encodeGraphicString(value: string): Uint8Array;
    /**
     * Encodes a visible string into bytes.
     *
     * @param {string} value to encode.
     * @returns {Uint8Array} The encoded bytes.
     * @private
     */
    _encodeVisibleString(value: string): Uint8Array;
    /**
     * Encodes an object descriptor into bytes.
     *
     * @param {string} value string to encode.
     * @returns {Uint8Array} The encoded bytes.
     * @private
     */
    _encodeObjectDescriptor(value: string): Uint8Array;
    /**
     * Returns the serialized bytes for this element (alias for `_toBytes`).
     *
     * @returns {Uint8Array} The serialized bytes.
     * @private
     */
    _toEncodedBytes(): Uint8Array;
    /**
     * Indicates whether this element is context-tagged.
     *
     * @returns {boolean} if context tagged.
     * @private
     */
    _isTagged(): boolean;
    /**
     * Indicates whether this element is constructed.
     *
     * @returns {boolean} if constructed.
     * @private
     */
    _isConstructed(): boolean;
}
