/// import { utils } from "ethers"; import { Segment } from './segment'; import BigNumber = utils.BigNumber; export declare class SumMerkleTreeNode { hash: Buffer; len: BigNumber; constructor(hash: Buffer | String, len: BigNumber); getHash(): Buffer; getLength8Byte(): Buffer; getLength32Byte(): Buffer; getLengthAsBigNumber(): BigNumber; toBytes(leftOrRight: number): Buffer; static getEmpty(): SumMerkleTreeNode; } export declare class SumMerkleProof { numTokens: number; index: number; segment: Segment; leaf: string; proof: string; constructor(numTokens: number, index: number, segment: Segment, leaf: string, proof: string); toHex(): string; serialize(): { numTokens: number; index: number; segment: string[]; leaf: string; proof: string; }; static deserialize(data: any): SumMerkleProof; } /** * @description SumMerkleTree * see https://ethresear.ch/t/plasma-prime-design-proposal/4222 */ export declare class SumMerkleTree { leaves: SumMerkleTreeNode[]; layers: SumMerkleTreeNode[][]; /** * @dev constructor * @param {SumMerkleTreeNode[]} leaves */ constructor(leaves: SumMerkleTreeNode[]); /** * * @param {SumMerkleTreeNode[]} nodes */ createLayers(nodes: SumMerkleTreeNode[]): SumMerkleTreeNode[][]; getLeaves(): SumMerkleTreeNode[]; root(): Buffer; /** * * @param {SumMerkleTreeNode} leaf */ proofs(numTokens: number, leaf: Buffer): SumMerkleProof[]; /** * getProofByRange * @param {BigNumber} offset */ getProofByRange(numTokens: number, start: BigNumber, end: BigNumber): SumMerkleProof[]; _proof(index: number): Buffer; /** * @description verify the leaf is included in tree * @param {Number} range is amount of the leaf to verify * @param {Buffer} value is the leaf value * @param {Number} index is index of the leaf to verify * @param {Number} totalAmount is total amount of tree * @param {Number} leftOffset is the position of the leaf from left * @param {Buffer} root is root of tree * @param {SumMerkleProof} proof is proof buffer for the leaf */ static verify(start: BigNumber, end: BigNumber, value: Buffer, totalAmount: BigNumber, root: Buffer, sumMerkleProof: SumMerkleProof): boolean; }