merkle-reference
Version:
This is a TS library implementing [merkle reference] specification.
89 lines • 2.81 kB
TypeScript
export { sha256 };
export function createBuilder(hash: Hash, nodeBuilder?: NodeBuilder): TreeBuilder;
export type Leaf = Uint8Array;
export type Branch = Array<Leaf | Node>;
export type Node = symbol | Branch;
export type Hash = (payload: Uint8Array) => Uint8Array;
export type NodeBuilder = {
toTree: (source: unknown, builder: TreeBuilder) => Node | import("./lib.js").Reference;
};
export type Builder = {
toTree: (source: unknown) => Node;
digest: (node: Node) => Uint8Array;
refer: <T>(sounce: T) => Reference.View<T>;
id: (source: unknown) => string;
};
import { sha256 } from '@noble/hashes/sha256';
/**
* @typedef {Uint8Array} Leaf
* @typedef {Array<Leaf|Node>} Branch
* @typedef {symbol|Branch} Node
* @typedef {(payload: Uint8Array) => Uint8Array} Hash
*
* @typedef {object} NodeBuilder
* @property {(source: unknown, builder: TreeBuilder) => Node|import('./lib.js').Reference} toTree
*
* @typedef {object} Builder
* @property {(source: unknown) => Node} toTree
* @property {(node: Node) => Uint8Array} digest
* @property {<T>(sounce: T) => Reference.View<T>} refer
* @property {(source: unknown) => string} id
*/
declare class TreeBuilder {
/**
* @param {Hash} hash
* @param {NodeBuilder} nodeBuilder
* @param {WeakMap<object, Node>} nodes
* @param {WeakMap<Node, Uint8Array>} digests
*/
constructor(hash: Hash, nodeBuilder: NodeBuilder, nodes?: WeakMap<object, Node>, digests?: WeakMap<Node, Uint8Array>);
hash: Hash;
nodeBuilder: NodeBuilder;
nodes: WeakMap<object, Node>;
digests: WeakMap<Node, Uint8Array<ArrayBufferLike>>;
/**
* @param {unknown} source
*/
id(source: unknown): string;
/**
* @param {unknown} source
*/
refer(source: unknown): {
"__#1@#multihash": {
digest: Uint8Array<ArrayBuffer>;
code: number;
length: number;
};
"__#1@#bytes": Uint8Array<ArrayBuffer>;
toString(): string;
readonly multihash: {
digest: Uint8Array<ArrayBuffer>;
code: number;
length: number;
};
readonly bytes: Uint8Array<ArrayBuffer>;
readonly "/": Uint8Array<ArrayBuffer>;
readonly version: number;
readonly code: 7;
toJSON(): {
'/': string;
};
readonly [Symbol.toStringTag]: string;
};
/**
* @param {unknown} source
* @returns {Node}
*/
toTree(source: unknown): Node;
/**
* @param {Node} tree
* @returns {Uint8Array}
*/
digest(tree: Node): Uint8Array;
/**
* @param {Uint8Array[]} leaves
*/
fold(leaves: Uint8Array[]): Uint8Array<ArrayBufferLike>;
}
import * as Reference from './reference.js';
//# sourceMappingURL=tree.d.ts.map