export declare namespace TLV {
    interface TlvNode {
        header: Header;
        children?: Array<TlvNode>;
        payload?: Uint8Array;
    }
    interface Schema {
        validate: any;
        resources: {
            [key: string]: Resource;
        };
        id: {
            [key: string]: any;
        };
    }
    enum DataType {
        String = "String",
        Integer = "Integer",
        Float = "Float",
        Boolean = "Boolean",
        Opaque = "Opaque",
        Time = "Time",
        Array = "Array"
    }
    interface Resource {
        id: string;
        type: DataType | Array<any>;
    }
    interface Header {
        id: number;
        len: number;
        type: IdentifierType;
    }
    enum IdentifierType {
        OBJECT_INSTANCE = 0,
        RESOURCE_INSTANCE = 1,
        MULTIPLE_RESOURCE = 2,
        RESOURCE_VALUE = 3
    }
    class Parser {
        logger: Console;
        private buffer;
        position: number;
        schema?: Schema;
        constructor(schema?: Schema, logger?: Console);
        /**
         *
         * @param buf
         * @param offset
         * @param tlv
         */
        readHeader(): Header;
        readNextRecord(): TlvNode;
        append(header: Header, type: DataType): any;
        readAllRecords(endPosition: number): TlvNode[];
        parse(buffer: Uint8Array): TlvNode;
        private debug;
    }
    class Serializer {
        serialize(obj: TLV.TlvNode, schema?: Schema): Uint8Array;
    }
}
