module Crypto.Hash.CompactSparseMerkleTree.DataNode where
import Crypto.Hash (Digest)

data DataNode alg a
  = ExternalNode
      { DataNode alg a -> Digest alg
digest :: Digest alg,
        DataNode alg a -> a
value :: a
      }
  | InternalNode
      { digest :: Digest alg,
        DataNode alg a -> Digest alg
maxDigest :: Digest alg
      }
  deriving (Int -> DataNode alg a -> ShowS
[DataNode alg a] -> ShowS
DataNode alg a -> String
(Int -> DataNode alg a -> ShowS)
-> (DataNode alg a -> String)
-> ([DataNode alg a] -> ShowS)
-> Show (DataNode alg a)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall alg a. Show a => Int -> DataNode alg a -> ShowS
forall alg a. Show a => [DataNode alg a] -> ShowS
forall alg a. Show a => DataNode alg a -> String
showList :: [DataNode alg a] -> ShowS
$cshowList :: forall alg a. Show a => [DataNode alg a] -> ShowS
show :: DataNode alg a -> String
$cshow :: forall alg a. Show a => DataNode alg a -> String
showsPrec :: Int -> DataNode alg a -> ShowS
$cshowsPrec :: forall alg a. Show a => Int -> DataNode alg a -> ShowS
Show)