MerkleTree.Bytes32PushTree private _tree;
bytes32 public root;
function setup(uint8 _depth, bytes32 _zero) public;
function push(bytes32 leaf) public;
function update(uint256 index, bytes32 oldValue, bytes32 newValue, bytes32[] memory proof) public;
function depth() public view returns (uint256);
function nextLeafIndex() public view returns (uint256);
function sides(uint256 i) public view returns (bytes32);
function zeros(uint256 i) public view returns (bytes32);
event LeafInserted(bytes32 leaf, uint256 index, bytes32 root);
event LeafUpdated(bytes32 oldLeaf, bytes32 newLeaf, uint256 index, bytes32 root);