import { type Patch } from "../json-patch"; import type { PatchResult } from "./patch"; export interface HashTableOptions { keyBy?: IndexKeys[]; properties?: StorageKeys[]; } export interface HashTableItem { index: Index | string; hash: string; data: DataItem; previous: HashTableItem | null; next: HashTableItem | null; $order: number; $id: number; } export declare function createHash(hash: unknown): string; export declare class HashTable, DataItem = Pick> { options: HashTableOptions; latestId: number; size: number; table: Record[]>; items: Record>; tail: HashTableItem | null; head: HashTableItem | null; constructor(items: HashTableItem[], options?: HashTableOptions); constructor(items: Data[], options?: HashTableOptions); private toArray; get data(): DataItem[]; get nodes(): HashTableItem[]; toNode(item: Data): { data: DataItem; hash: string; index: string | Index; }; private getByHash; private resize; private deleteItem; private deleteByIndex; private insertItem; private $insert; insert(item: Data): number; get(index: Index | number | string): DataItem[]; get(index: Index | number | string, options: { asItem: true; }): DataItem[]; get(index: Index | number | string, options: { asItem: false; }): HashTableItem[]; delete(item: Data): void; delete(index: Index | string | number, predicate?: (item: DataItem) => boolean): void; clone(): HashTable; private $patchRemove; private $patchAdd; private $patchReplace; patch(operations: Patch): PatchResult[]; }