diff --git a/src/FixedMerkleTree.ts b/src/FixedMerkleTree.ts index cd067f9..79fc007 100644 --- a/src/FixedMerkleTree.ts +++ b/src/FixedMerkleTree.ts @@ -1,4 +1,13 @@ -import { Element, HashFunction, MerkleTreeOptions, ProofPath, SerializedTreeState, simpleHash, TreeEdge } from './' +import { + Element, + HashFunction, + MerkleTreeOptions, + ProofPath, + SerializedTreeState, + simpleHash, + TreeEdge, + TreeSlice, +} from './' const defaultHash = (left: Element, right: Element): string => simpleHash([left, right]) @@ -199,11 +208,11 @@ export default class MerkleTree { * 🪓 * @param count */ - getTreeSlices(count = 4): { edge: TreeEdge, elements: Element[] }[] { + getTreeSlices(count = 4): TreeSlice[] { const length = this._layers[0].length let size = Math.ceil(length / count) if (size % 2) size++ - const slices = [] + const slices: TreeSlice[] = [] for (let i = 0; i < length; i += size) { const edgeLeft = i const edgeRight = i + size diff --git a/src/index.ts b/src/index.ts index 9794177..091cebd 100644 --- a/src/index.ts +++ b/src/index.ts @@ -40,5 +40,7 @@ export type TreeEdge = { edgeIndex: number; edgeElementsCount: number; } + +export type TreeSlice = { edge: TreeEdge, elements: Element[] } export type LeafWithIndex = { index: number, data: Element } diff --git a/test/partialMerkleTree.spec.ts b/test/partialMerkleTree.spec.ts index a7f1b12..f0e281c 100644 --- a/test/partialMerkleTree.spec.ts +++ b/test/partialMerkleTree.spec.ts @@ -198,6 +198,11 @@ describe('PartialMerkleTree', () => { const zeros = partialTree.zeros should().not.equal(zeros, partialTree.zeros) }) + + it('should return edge leaf', () => { + const { partialTree } = getTestTrees(10, [1, 2, 3, 4, 5], 2) + should().equal(partialTree.edgeElement, 3) + }) }) describe('#path', () => {