module Hydra.Tx.DepositPeriod where
import Hydra.Prelude hiding (Show, show)
import Hydra.Data.DepositPeriod qualified as OnChain
import Text.Show (Show (..))
newtype DepositPeriod = DepositPeriod {DepositPeriod -> NominalDiffTime
toNominalDiffTime :: NominalDiffTime}
deriving stock (DepositPeriod -> DepositPeriod -> Bool
(DepositPeriod -> DepositPeriod -> Bool)
-> (DepositPeriod -> DepositPeriod -> Bool) -> Eq DepositPeriod
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: DepositPeriod -> DepositPeriod -> Bool
== :: DepositPeriod -> DepositPeriod -> Bool
$c/= :: DepositPeriod -> DepositPeriod -> Bool
/= :: DepositPeriod -> DepositPeriod -> Bool
Eq, Eq DepositPeriod
Eq DepositPeriod =>
(DepositPeriod -> DepositPeriod -> Ordering)
-> (DepositPeriod -> DepositPeriod -> Bool)
-> (DepositPeriod -> DepositPeriod -> Bool)
-> (DepositPeriod -> DepositPeriod -> Bool)
-> (DepositPeriod -> DepositPeriod -> Bool)
-> (DepositPeriod -> DepositPeriod -> DepositPeriod)
-> (DepositPeriod -> DepositPeriod -> DepositPeriod)
-> Ord DepositPeriod
DepositPeriod -> DepositPeriod -> Bool
DepositPeriod -> DepositPeriod -> Ordering
DepositPeriod -> DepositPeriod -> DepositPeriod
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 :: DepositPeriod -> DepositPeriod -> Ordering
compare :: DepositPeriod -> DepositPeriod -> Ordering
$c< :: DepositPeriod -> DepositPeriod -> Bool
< :: DepositPeriod -> DepositPeriod -> Bool
$c<= :: DepositPeriod -> DepositPeriod -> Bool
<= :: DepositPeriod -> DepositPeriod -> Bool
$c> :: DepositPeriod -> DepositPeriod -> Bool
> :: DepositPeriod -> DepositPeriod -> Bool
$c>= :: DepositPeriod -> DepositPeriod -> Bool
>= :: DepositPeriod -> DepositPeriod -> Bool
$cmax :: DepositPeriod -> DepositPeriod -> DepositPeriod
max :: DepositPeriod -> DepositPeriod -> DepositPeriod
$cmin :: DepositPeriod -> DepositPeriod -> DepositPeriod
min :: DepositPeriod -> DepositPeriod -> DepositPeriod
Ord, (forall x. DepositPeriod -> Rep DepositPeriod x)
-> (forall x. Rep DepositPeriod x -> DepositPeriod)
-> Generic DepositPeriod
forall x. Rep DepositPeriod x -> DepositPeriod
forall x. DepositPeriod -> Rep DepositPeriod x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. DepositPeriod -> Rep DepositPeriod x
from :: forall x. DepositPeriod -> Rep DepositPeriod x
$cto :: forall x. Rep DepositPeriod x -> DepositPeriod
to :: forall x. Rep DepositPeriod x -> DepositPeriod
Generic)
deriving newtype (ReadPrec [DepositPeriod]
ReadPrec DepositPeriod
Int -> ReadS DepositPeriod
ReadS [DepositPeriod]
(Int -> ReadS DepositPeriod)
-> ReadS [DepositPeriod]
-> ReadPrec DepositPeriod
-> ReadPrec [DepositPeriod]
-> Read DepositPeriod
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS DepositPeriod
readsPrec :: Int -> ReadS DepositPeriod
$creadList :: ReadS [DepositPeriod]
readList :: ReadS [DepositPeriod]
$creadPrec :: ReadPrec DepositPeriod
readPrec :: ReadPrec DepositPeriod
$creadListPrec :: ReadPrec [DepositPeriod]
readListPrec :: ReadPrec [DepositPeriod]
Read, Integer -> DepositPeriod
DepositPeriod -> DepositPeriod
DepositPeriod -> DepositPeriod -> DepositPeriod
(DepositPeriod -> DepositPeriod -> DepositPeriod)
-> (DepositPeriod -> DepositPeriod -> DepositPeriod)
-> (DepositPeriod -> DepositPeriod -> DepositPeriod)
-> (DepositPeriod -> DepositPeriod)
-> (DepositPeriod -> DepositPeriod)
-> (DepositPeriod -> DepositPeriod)
-> (Integer -> DepositPeriod)
-> Num DepositPeriod
forall a.
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> a)
-> (a -> a)
-> (Integer -> a)
-> Num a
$c+ :: DepositPeriod -> DepositPeriod -> DepositPeriod
+ :: DepositPeriod -> DepositPeriod -> DepositPeriod
$c- :: DepositPeriod -> DepositPeriod -> DepositPeriod
- :: DepositPeriod -> DepositPeriod -> DepositPeriod
$c* :: DepositPeriod -> DepositPeriod -> DepositPeriod
* :: DepositPeriod -> DepositPeriod -> DepositPeriod
$cnegate :: DepositPeriod -> DepositPeriod
negate :: DepositPeriod -> DepositPeriod
$cabs :: DepositPeriod -> DepositPeriod
abs :: DepositPeriod -> DepositPeriod
$csignum :: DepositPeriod -> DepositPeriod
signum :: DepositPeriod -> DepositPeriod
$cfromInteger :: Integer -> DepositPeriod
fromInteger :: Integer -> DepositPeriod
Num, Num DepositPeriod
Ord DepositPeriod
(Num DepositPeriod, Ord DepositPeriod) =>
(DepositPeriod -> Rational) -> Real DepositPeriod
DepositPeriod -> Rational
forall a. (Num a, Ord a) => (a -> Rational) -> Real a
$ctoRational :: DepositPeriod -> Rational
toRational :: DepositPeriod -> Rational
Real, [DepositPeriod] -> Value
[DepositPeriod] -> Encoding
DepositPeriod -> Bool
DepositPeriod -> Value
DepositPeriod -> Encoding
(DepositPeriod -> Value)
-> (DepositPeriod -> Encoding)
-> ([DepositPeriod] -> Value)
-> ([DepositPeriod] -> Encoding)
-> (DepositPeriod -> Bool)
-> ToJSON DepositPeriod
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> (a -> Bool)
-> ToJSON a
$ctoJSON :: DepositPeriod -> Value
toJSON :: DepositPeriod -> Value
$ctoEncoding :: DepositPeriod -> Encoding
toEncoding :: DepositPeriod -> Encoding
$ctoJSONList :: [DepositPeriod] -> Value
toJSONList :: [DepositPeriod] -> Value
$ctoEncodingList :: [DepositPeriod] -> Encoding
toEncodingList :: [DepositPeriod] -> Encoding
$comitField :: DepositPeriod -> Bool
omitField :: DepositPeriod -> Bool
ToJSON, Maybe DepositPeriod
Value -> Parser [DepositPeriod]
Value -> Parser DepositPeriod
(Value -> Parser DepositPeriod)
-> (Value -> Parser [DepositPeriod])
-> Maybe DepositPeriod
-> FromJSON DepositPeriod
forall a.
(Value -> Parser a)
-> (Value -> Parser [a]) -> Maybe a -> FromJSON a
$cparseJSON :: Value -> Parser DepositPeriod
parseJSON :: Value -> Parser DepositPeriod
$cparseJSONList :: Value -> Parser [DepositPeriod]
parseJSONList :: Value -> Parser [DepositPeriod]
$comittedField :: Maybe DepositPeriod
omittedField :: Maybe DepositPeriod
FromJSON)
instance ToCBOR DepositPeriod where
toCBOR :: DepositPeriod -> Encoding
toCBOR = DepositPeriod -> Encoding
forall a. (Generic a, GToCBOR (Rep a)) => a -> Encoding
genericToCBOR
instance FromCBOR DepositPeriod where
fromCBOR :: forall s. Decoder s DepositPeriod
fromCBOR = Decoder s DepositPeriod
forall a s. (Generic a, GFromCBOR (Rep a)) => Decoder s a
genericFromCBOR
instance Show DepositPeriod where
show :: DepositPeriod -> String
show (DepositPeriod NominalDiffTime
dt) = Integer -> String
forall a. Show a => a -> String
show (NominalDiffTime -> Integer
forall b. Integral b => NominalDiffTime -> b
forall a b. (RealFrac a, Integral b) => a -> b
round NominalDiffTime
dt :: Integer) String -> ShowS
forall a. Semigroup a => a -> a -> a
<> String
"s"
toChain :: DepositPeriod -> OnChain.DepositPeriod
toChain :: DepositPeriod -> DepositPeriod
toChain (DepositPeriod NominalDiffTime
dt) = NominalDiffTime -> DepositPeriod
OnChain.depositPeriodFromDiffTime NominalDiffTime
dt
fromChain :: OnChain.DepositPeriod -> DepositPeriod
fromChain :: DepositPeriod -> DepositPeriod
fromChain = NominalDiffTime -> DepositPeriod
DepositPeriod (NominalDiffTime -> DepositPeriod)
-> (DepositPeriod -> NominalDiffTime)
-> DepositPeriod
-> DepositPeriod
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DepositPeriod -> NominalDiffTime
OnChain.depositPeriodToDiffTime