UNPKG

merkle-reference

Version:

This is a TS library implementing [merkle reference] specification.

89 lines 2.81 kB
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