/// import GrowableBuffer from './growable_buffer'; import { WILDCARD } from './trie'; export { WILDCARD }; declare class TrieBuilderLeafNode { value: string | undefined; private _size; private _dataPtrOffset; constructor(); addValue(value: string, valueCombine: (one: string | undefined, two: string) => string): void; get size(): number; writeKey(buffer: GrowableBuffer, offset: number): number; writeData(buffer: GrowableBuffer, offset: number, valueMap: Map): number; } declare class TrieBuilderIntermediateNode { key: string | typeof WILDCARD; children: Map; protected _childrenBeginPtrOffset: number; protected _leaf: TrieBuilderLeafNode | null; protected _isCompact: boolean; protected _size: number | undefined; protected _sortedChildren: TrieBuilderIntermediateNode[] | undefined; constructor(key: string | typeof WILDCARD); get size(): number; setValue(value: string, valueCombine: (one: string | undefined, two: string) => string): void; addChild(key: string | typeof WILDCARD): TrieBuilderIntermediateNode; getChild(key: string | typeof WILDCARD): TrieBuilderIntermediateNode | undefined; protected _sortChildren(): void; private _writeOwnKey; writeKey(buffer: GrowableBuffer, offset: number): number; writeData(buffer: GrowableBuffer, offset: number, valueMap: Map): number; writeChildren(buffer: GrowableBuffer, offset: number): number; } declare class TrieBuilderRootNode extends TrieBuilderIntermediateNode { constructor(); writeKey(buffer: GrowableBuffer, offset: number): number; writeChildren(buffer: GrowableBuffer, offset: number): number; } export declare class BTrieBuilder { private _valueCombine; root: TrieBuilderRootNode; constructor(valueCombine: (one: string | undefined, two: string) => string); insert(sequence: Array, value: string): void; build(): Buffer; } /** * A B-Tree-based (immutable) Trie. * * This is a disk-based data structure for efficient storing of key-value pairs, * where the keys are sequences. It is designed to be memory-mappable, which is * memory efficient. * * The file is organized in _nodes_, which roughly represent the trie nodes. * Each node is identified by a 1 byte head, followed by a variable size. * * Four types of nodes exist: * - _data_ nodes contain the values mapped to by the Trie; they are formed by a 4 byte length * followed by the data * - _leaf_ nodes indicate a complete key (end of string marker); they are 4 bytes * that point to the corresponding data node * - _intermediate_ nodes indicate a portion of the key (a single word); they are composed * of 1 byte key length, followed by the key, followed by 4 bytes of pointer and 2 bytes * of length into a _key block_; the key block is the sequential list of children of this * node * - _compact_ nodes are an optimization of intermediate nodes with only one child; compact * nodes have 1 byte key length, followed by the key; the child is then emitted immediately * after the compact node, without pointers */ export declare class BTrie { private _buffer; private _root; constructor(buffer: Buffer); _check(condition: boolean, ...data: unknown[]): void; private _skipNode; private _skipEntry; private _findKey; search(sequence: string[]): string | undefined; }