{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingVia #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module Cardano.Crypto.Peras (
PerasRoundNo (..),
onPerasRoundNo,
) where
import Data.Coerce (coerce)
import Data.Word (Word64)
import GHC.Generics (Generic)
import NoThunks.Class (NoThunks)
import Quiet (Quiet (..))
newtype PerasRoundNo = PerasRoundNo {PerasRoundNo -> Word64
unPerasRoundNo :: Word64}
deriving (Int -> PerasRoundNo -> ShowS
[PerasRoundNo] -> ShowS
PerasRoundNo -> String
(Int -> PerasRoundNo -> ShowS)
-> (PerasRoundNo -> String)
-> ([PerasRoundNo] -> ShowS)
-> Show PerasRoundNo
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> PerasRoundNo -> ShowS
showsPrec :: Int -> PerasRoundNo -> ShowS
$cshow :: PerasRoundNo -> String
show :: PerasRoundNo -> String
$cshowList :: [PerasRoundNo] -> ShowS
showList :: [PerasRoundNo] -> ShowS
Show) via Quiet PerasRoundNo
deriving stock ((forall x. PerasRoundNo -> Rep PerasRoundNo x)
-> (forall x. Rep PerasRoundNo x -> PerasRoundNo)
-> Generic PerasRoundNo
forall x. Rep PerasRoundNo x -> PerasRoundNo
forall x. PerasRoundNo -> Rep PerasRoundNo x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. PerasRoundNo -> Rep PerasRoundNo x
from :: forall x. PerasRoundNo -> Rep PerasRoundNo x
$cto :: forall x. Rep PerasRoundNo x -> PerasRoundNo
to :: forall x. Rep PerasRoundNo x -> PerasRoundNo
Generic)
deriving newtype (Int -> PerasRoundNo
PerasRoundNo -> Int
PerasRoundNo -> [PerasRoundNo]
PerasRoundNo -> PerasRoundNo
PerasRoundNo -> PerasRoundNo -> [PerasRoundNo]
PerasRoundNo -> PerasRoundNo -> PerasRoundNo -> [PerasRoundNo]
(PerasRoundNo -> PerasRoundNo)
-> (PerasRoundNo -> PerasRoundNo)
-> (Int -> PerasRoundNo)
-> (PerasRoundNo -> Int)
-> (PerasRoundNo -> [PerasRoundNo])
-> (PerasRoundNo -> PerasRoundNo -> [PerasRoundNo])
-> (PerasRoundNo -> PerasRoundNo -> [PerasRoundNo])
-> (PerasRoundNo -> PerasRoundNo -> PerasRoundNo -> [PerasRoundNo])
-> Enum PerasRoundNo
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: PerasRoundNo -> PerasRoundNo
succ :: PerasRoundNo -> PerasRoundNo
$cpred :: PerasRoundNo -> PerasRoundNo
pred :: PerasRoundNo -> PerasRoundNo
$ctoEnum :: Int -> PerasRoundNo
toEnum :: Int -> PerasRoundNo
$cfromEnum :: PerasRoundNo -> Int
fromEnum :: PerasRoundNo -> Int
$cenumFrom :: PerasRoundNo -> [PerasRoundNo]
enumFrom :: PerasRoundNo -> [PerasRoundNo]
$cenumFromThen :: PerasRoundNo -> PerasRoundNo -> [PerasRoundNo]
enumFromThen :: PerasRoundNo -> PerasRoundNo -> [PerasRoundNo]
$cenumFromTo :: PerasRoundNo -> PerasRoundNo -> [PerasRoundNo]
enumFromTo :: PerasRoundNo -> PerasRoundNo -> [PerasRoundNo]
$cenumFromThenTo :: PerasRoundNo -> PerasRoundNo -> PerasRoundNo -> [PerasRoundNo]
enumFromThenTo :: PerasRoundNo -> PerasRoundNo -> PerasRoundNo -> [PerasRoundNo]
Enum, PerasRoundNo -> PerasRoundNo -> Bool
(PerasRoundNo -> PerasRoundNo -> Bool)
-> (PerasRoundNo -> PerasRoundNo -> Bool) -> Eq PerasRoundNo
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PerasRoundNo -> PerasRoundNo -> Bool
== :: PerasRoundNo -> PerasRoundNo -> Bool
$c/= :: PerasRoundNo -> PerasRoundNo -> Bool
/= :: PerasRoundNo -> PerasRoundNo -> Bool
Eq, Eq PerasRoundNo
Eq PerasRoundNo =>
(PerasRoundNo -> PerasRoundNo -> Ordering)
-> (PerasRoundNo -> PerasRoundNo -> Bool)
-> (PerasRoundNo -> PerasRoundNo -> Bool)
-> (PerasRoundNo -> PerasRoundNo -> Bool)
-> (PerasRoundNo -> PerasRoundNo -> Bool)
-> (PerasRoundNo -> PerasRoundNo -> PerasRoundNo)
-> (PerasRoundNo -> PerasRoundNo -> PerasRoundNo)
-> Ord PerasRoundNo
PerasRoundNo -> PerasRoundNo -> Bool
PerasRoundNo -> PerasRoundNo -> Ordering
PerasRoundNo -> PerasRoundNo -> PerasRoundNo
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: PerasRoundNo -> PerasRoundNo -> Ordering
compare :: PerasRoundNo -> PerasRoundNo -> Ordering
$c< :: PerasRoundNo -> PerasRoundNo -> Bool
< :: PerasRoundNo -> PerasRoundNo -> Bool
$c<= :: PerasRoundNo -> PerasRoundNo -> Bool
<= :: PerasRoundNo -> PerasRoundNo -> Bool
$c> :: PerasRoundNo -> PerasRoundNo -> Bool
> :: PerasRoundNo -> PerasRoundNo -> Bool
$c>= :: PerasRoundNo -> PerasRoundNo -> Bool
>= :: PerasRoundNo -> PerasRoundNo -> Bool
$cmax :: PerasRoundNo -> PerasRoundNo -> PerasRoundNo
max :: PerasRoundNo -> PerasRoundNo -> PerasRoundNo
$cmin :: PerasRoundNo -> PerasRoundNo -> PerasRoundNo
min :: PerasRoundNo -> PerasRoundNo -> PerasRoundNo
Ord, Integer -> PerasRoundNo
PerasRoundNo -> PerasRoundNo
PerasRoundNo -> PerasRoundNo -> PerasRoundNo
(PerasRoundNo -> PerasRoundNo -> PerasRoundNo)
-> (PerasRoundNo -> PerasRoundNo -> PerasRoundNo)
-> (PerasRoundNo -> PerasRoundNo -> PerasRoundNo)
-> (PerasRoundNo -> PerasRoundNo)
-> (PerasRoundNo -> PerasRoundNo)
-> (PerasRoundNo -> PerasRoundNo)
-> (Integer -> PerasRoundNo)
-> Num PerasRoundNo
forall a.
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> a)
-> (a -> a)
-> (Integer -> a)
-> Num a
$c+ :: PerasRoundNo -> PerasRoundNo -> PerasRoundNo
+ :: PerasRoundNo -> PerasRoundNo -> PerasRoundNo
$c- :: PerasRoundNo -> PerasRoundNo -> PerasRoundNo
- :: PerasRoundNo -> PerasRoundNo -> PerasRoundNo
$c* :: PerasRoundNo -> PerasRoundNo -> PerasRoundNo
* :: PerasRoundNo -> PerasRoundNo -> PerasRoundNo
$cnegate :: PerasRoundNo -> PerasRoundNo
negate :: PerasRoundNo -> PerasRoundNo
$cabs :: PerasRoundNo -> PerasRoundNo
abs :: PerasRoundNo -> PerasRoundNo
$csignum :: PerasRoundNo -> PerasRoundNo
signum :: PerasRoundNo -> PerasRoundNo
$cfromInteger :: Integer -> PerasRoundNo
fromInteger :: Integer -> PerasRoundNo
Num, PerasRoundNo
PerasRoundNo -> PerasRoundNo -> Bounded PerasRoundNo
forall a. a -> a -> Bounded a
$cminBound :: PerasRoundNo
minBound :: PerasRoundNo
$cmaxBound :: PerasRoundNo
maxBound :: PerasRoundNo
Bounded, Context -> PerasRoundNo -> IO (Maybe ThunkInfo)
Proxy PerasRoundNo -> String
(Context -> PerasRoundNo -> IO (Maybe ThunkInfo))
-> (Context -> PerasRoundNo -> IO (Maybe ThunkInfo))
-> (Proxy PerasRoundNo -> String)
-> NoThunks PerasRoundNo
forall a.
(Context -> a -> IO (Maybe ThunkInfo))
-> (Context -> a -> IO (Maybe ThunkInfo))
-> (Proxy a -> String)
-> NoThunks a
$cnoThunks :: Context -> PerasRoundNo -> IO (Maybe ThunkInfo)
noThunks :: Context -> PerasRoundNo -> IO (Maybe ThunkInfo)
$cwNoThunks :: Context -> PerasRoundNo -> IO (Maybe ThunkInfo)
wNoThunks :: Context -> PerasRoundNo -> IO (Maybe ThunkInfo)
$cshowTypeOf :: Proxy PerasRoundNo -> String
showTypeOf :: Proxy PerasRoundNo -> String
NoThunks)
onPerasRoundNo ::
(Word64 -> Word64 -> Word64) ->
(PerasRoundNo -> PerasRoundNo -> PerasRoundNo)
onPerasRoundNo :: (Word64 -> Word64 -> Word64)
-> PerasRoundNo -> PerasRoundNo -> PerasRoundNo
onPerasRoundNo = (Word64 -> Word64 -> Word64)
-> PerasRoundNo -> PerasRoundNo -> PerasRoundNo
forall a b. Coercible a b => a -> b
coerce