import type { Hasher, MerkleTree } from './tree.js'; import type { MerkleStorage } from './storage.js'; /** * BLAKE3-native `Hasher` (BLAKE3 §2.3, §2.4, §2.5). * * Empty-tree value is `BLAKE3()`; leaves are `BLAKE3(leaf)`; internal * nodes are the §2.5 parent compress over the two child CVs with the * BLAKE3 IV as the starting CV and `modeFlags = 0`, `isRoot = 0`. * * Stateless and reentrant: each method acquires the blake3 module * fresh, runs the operation, and releases. No `dispose()` is needed. */ export declare const Blake3Hasher: Hasher; /** * Stateful BLAKE3 Merkle log. Same surface and storage discipline as * `Sha256Tree`: leaf hashes and every perfect aligned internal subtree * hash live in the injected `MerkleStorage`; partial right-edge subtrees * are recomputed on demand. * * `append` is the only mutator and is the leaf-hash factory; consumers * feed leaf bytes, not pre-computed leaf hashes. */ export declare class Blake3Tree implements MerkleTree { readonly hasher: Hasher; private readonly storage; constructor(storage: MerkleStorage); size(): number; rootHash(): Uint8Array; append(leafBytes: Uint8Array): { leafIndex: number; leafHash: Uint8Array; }; getInclusionProof(leafIndex: number, treeSize?: number): Uint8Array[]; getConsistencyProof(oldSize: number, newSize: number): Uint8Array[]; }