{-# LANGUAGE GeneralizedNewtypeDeriving, DeriveGeneric, DerivingVia #-}
module ProjectM36.MerkleHash where
import Data.ByteString (ByteString)
import GHC.Generics
import Control.DeepSeq (NFData)

newtype MerkleHash = MerkleHash { MerkleHash -> ByteString
_unMerkleHash :: ByteString }
  deriving (Int -> MerkleHash -> ShowS
[MerkleHash] -> ShowS
MerkleHash -> String
(Int -> MerkleHash -> ShowS)
-> (MerkleHash -> String)
-> ([MerkleHash] -> ShowS)
-> Show MerkleHash
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MerkleHash] -> ShowS
$cshowList :: [MerkleHash] -> ShowS
show :: MerkleHash -> String
$cshow :: MerkleHash -> String
showsPrec :: Int -> MerkleHash -> ShowS
$cshowsPrec :: Int -> MerkleHash -> ShowS
Show, MerkleHash -> MerkleHash -> Bool
(MerkleHash -> MerkleHash -> Bool)
-> (MerkleHash -> MerkleHash -> Bool) -> Eq MerkleHash
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MerkleHash -> MerkleHash -> Bool
$c/= :: MerkleHash -> MerkleHash -> Bool
== :: MerkleHash -> MerkleHash -> Bool
$c== :: MerkleHash -> MerkleHash -> Bool
Eq, (forall x. MerkleHash -> Rep MerkleHash x)
-> (forall x. Rep MerkleHash x -> MerkleHash) -> Generic MerkleHash
forall x. Rep MerkleHash x -> MerkleHash
forall x. MerkleHash -> Rep MerkleHash x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep MerkleHash x -> MerkleHash
$cfrom :: forall x. MerkleHash -> Rep MerkleHash x
Generic, Semigroup MerkleHash
MerkleHash
Semigroup MerkleHash
-> MerkleHash
-> (MerkleHash -> MerkleHash -> MerkleHash)
-> ([MerkleHash] -> MerkleHash)
-> Monoid MerkleHash
[MerkleHash] -> MerkleHash
MerkleHash -> MerkleHash -> MerkleHash
forall a.
Semigroup a -> a -> (a -> a -> a) -> ([a] -> a) -> Monoid a
mconcat :: [MerkleHash] -> MerkleHash
$cmconcat :: [MerkleHash] -> MerkleHash
mappend :: MerkleHash -> MerkleHash -> MerkleHash
$cmappend :: MerkleHash -> MerkleHash -> MerkleHash
mempty :: MerkleHash
$cmempty :: MerkleHash
$cp1Monoid :: Semigroup MerkleHash
Monoid, b -> MerkleHash -> MerkleHash
NonEmpty MerkleHash -> MerkleHash
MerkleHash -> MerkleHash -> MerkleHash
(MerkleHash -> MerkleHash -> MerkleHash)
-> (NonEmpty MerkleHash -> MerkleHash)
-> (forall b. Integral b => b -> MerkleHash -> MerkleHash)
-> Semigroup MerkleHash
forall b. Integral b => b -> MerkleHash -> MerkleHash
forall a.
(a -> a -> a)
-> (NonEmpty a -> a)
-> (forall b. Integral b => b -> a -> a)
-> Semigroup a
stimes :: b -> MerkleHash -> MerkleHash
$cstimes :: forall b. Integral b => b -> MerkleHash -> MerkleHash
sconcat :: NonEmpty MerkleHash -> MerkleHash
$csconcat :: NonEmpty MerkleHash -> MerkleHash
<> :: MerkleHash -> MerkleHash -> MerkleHash
$c<> :: MerkleHash -> MerkleHash -> MerkleHash
Semigroup, MerkleHash -> ()
(MerkleHash -> ()) -> NFData MerkleHash
forall a. (a -> ()) -> NFData a
rnf :: MerkleHash -> ()
$crnf :: MerkleHash -> ()
NFData)