import { data_chunk_holder } from "./data_chunk_holder";
import { data_chunk } from "./data_chunk";
export declare namespace TLV {
    enum class_type {
        invalid = 255,
        universal = 0,
        application = 64,
        context_specific = 128,
        private_use = 192
    }
    class tag extends data_chunk_holder {
        constructor(data?: data_chunk);
        static create_from_data_chunk(src: data_chunk): tag;
        static create_from_uint8array(src: Uint8Array, offset?: number, length?: number): tag;
        static create_from_hex_string(str: string): tag;
        get class_type(): class_type;
        get is_constructed(): boolean;
        get is_primitive(): boolean;
    }
    class length extends data_chunk_holder {
        private m_value_length;
        constructor(data?: data_chunk, value_length?: number);
        static create_from_tag_and_data_chunk(tag: tag, src: data_chunk): length;
        static craete_from_data_chunk(src: data_chunk): length;
        get value_length(): number;
    }
    class value extends data_chunk_holder {
        constructor(data?: data_chunk);
        static create_from_tag_and_length_and_data_chunk(tag: tag, length: length, src: data_chunk): value;
    }
}
export declare class tlv {
    private m_tag;
    private m_length;
    private m_value;
    private m_children;
    private constructor();
    static create_from_data_chunk(src: data_chunk): tlv;
    get valid(): boolean;
    get size(): number;
    get tag(): TLV.tag;
    get length(): TLV.length;
    get value(): TLV.value;
    get children(): tlv[];
    find_children(tag: TLV.tag): tlv[];
    find_first_child(tag: TLV.tag): tlv;
    to_string(indent?: number, parentTag?: TLV.tag): string;
}
