package merkle import ( "fmt" . "github.com/tendermint/tendermint/binary" ) type Value interface { Binary } type Key interface { Binary Equals(Binary) bool Less(b Binary) bool } type Db interface { Get([]byte) []byte Put([]byte, []byte) } type Node interface { Binary Key() Key Value() Value Size() uint64 Height() uint8 Hash() (ByteSlice, uint64) Save(Db) } type Tree interface { Root() Node Size() uint64 Height() uint8 Has(key Key) bool Get(key Key) Value Hash() (ByteSlice, uint64) Save() Put(Key, Value) bool Remove(Key) (Value, error) Copy() Tree Traverse(func(Node) bool) Values() <-chan Value } func NotFound(key Key) error { return fmt.Errorf("Key was not found.") }