/
LazyIMT.sol
52 lines (40 loc) · 1.61 KB
/
LazyIMT.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
import {InternalLazyIMT, LazyIMTData} from "./internal/InternalLazyIMT.sol";
library LazyIMT {
using InternalLazyIMT for *;
function init(LazyIMTData storage self, uint8 depth) public {
InternalLazyIMT._init(self, depth);
}
function defaultZero(uint8 index) public pure returns (uint256) {
return InternalLazyIMT._defaultZero(index);
}
function reset(LazyIMTData storage self) public {
InternalLazyIMT._reset(self);
}
function indexForElement(uint8 level, uint40 index) public pure returns (uint40) {
return InternalLazyIMT._indexForElement(level, index);
}
function insert(LazyIMTData storage self, uint256 leaf) public {
InternalLazyIMT._insert(self, leaf);
}
function update(LazyIMTData storage self, uint256 leaf, uint40 index) public {
InternalLazyIMT._update(self, leaf, index);
}
function root(LazyIMTData storage self) public view returns (uint256) {
return InternalLazyIMT._root(self);
}
function root(LazyIMTData storage self, uint8 depth) public view returns (uint256) {
return InternalLazyIMT._root(self, depth);
}
function merkleProofElements(
LazyIMTData storage self,
uint40 index,
uint8 depth
) public view returns (uint256[] memory) {
return InternalLazyIMT._merkleProofElements(self, index, depth);
}
function _root(LazyIMTData storage self, uint40 numberOfLeaves, uint8 depth) internal view returns (uint256) {
return InternalLazyIMT._root(self, numberOfLeaves, depth);
}
}