{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE DeriveGeneric #-}
module Call(CallOption(..))
where
import qualified Data.Time as T
import Lib
import Types
import Data.Aeson hiding (json)
import Language.Haskell.TH
import Data.Aeson.TH
import Data.Aeson.Types
import GHC.Generics
data CallOption = PoolBalance Balance
| BondBalance Balance
| PoolFactor Rate
| BondFactor Rate
| OnDate Date
| AfterDate Date
| And [CallOption]
| Or [CallOption]
| PoolPv Balance
| Pre Pre
deriving (Int -> CallOption -> ShowS
[CallOption] -> ShowS
CallOption -> String
(Int -> CallOption -> ShowS)
-> (CallOption -> String)
-> ([CallOption] -> ShowS)
-> Show CallOption
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> CallOption -> ShowS
showsPrec :: Int -> CallOption -> ShowS
$cshow :: CallOption -> String
show :: CallOption -> String
$cshowList :: [CallOption] -> ShowS
showList :: [CallOption] -> ShowS
Show,(forall x. CallOption -> Rep CallOption x)
-> (forall x. Rep CallOption x -> CallOption) -> Generic CallOption
forall x. Rep CallOption x -> CallOption
forall x. CallOption -> Rep CallOption x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. CallOption -> Rep CallOption x
from :: forall x. CallOption -> Rep CallOption x
$cto :: forall x. Rep CallOption x -> CallOption
to :: forall x. Rep CallOption x -> CallOption
Generic,Eq CallOption
Eq CallOption =>
(CallOption -> CallOption -> Ordering)
-> (CallOption -> CallOption -> Bool)
-> (CallOption -> CallOption -> Bool)
-> (CallOption -> CallOption -> Bool)
-> (CallOption -> CallOption -> Bool)
-> (CallOption -> CallOption -> CallOption)
-> (CallOption -> CallOption -> CallOption)
-> Ord CallOption
CallOption -> CallOption -> Bool
CallOption -> CallOption -> Ordering
CallOption -> CallOption -> CallOption
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 :: CallOption -> CallOption -> Ordering
compare :: CallOption -> CallOption -> Ordering
$c< :: CallOption -> CallOption -> Bool
< :: CallOption -> CallOption -> Bool
$c<= :: CallOption -> CallOption -> Bool
<= :: CallOption -> CallOption -> Bool
$c> :: CallOption -> CallOption -> Bool
> :: CallOption -> CallOption -> Bool
$c>= :: CallOption -> CallOption -> Bool
>= :: CallOption -> CallOption -> Bool
$cmax :: CallOption -> CallOption -> CallOption
max :: CallOption -> CallOption -> CallOption
$cmin :: CallOption -> CallOption -> CallOption
min :: CallOption -> CallOption -> CallOption
Ord,CallOption -> CallOption -> Bool
(CallOption -> CallOption -> Bool)
-> (CallOption -> CallOption -> Bool) -> Eq CallOption
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: CallOption -> CallOption -> Bool
== :: CallOption -> CallOption -> Bool
$c/= :: CallOption -> CallOption -> Bool
/= :: CallOption -> CallOption -> Bool
Eq,ReadPrec [CallOption]
ReadPrec CallOption
Int -> ReadS CallOption
ReadS [CallOption]
(Int -> ReadS CallOption)
-> ReadS [CallOption]
-> ReadPrec CallOption
-> ReadPrec [CallOption]
-> Read CallOption
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS CallOption
readsPrec :: Int -> ReadS CallOption
$creadList :: ReadS [CallOption]
readList :: ReadS [CallOption]
$creadPrec :: ReadPrec CallOption
readPrec :: ReadPrec CallOption
$creadListPrec :: ReadPrec [CallOption]
readListPrec :: ReadPrec [CallOption]
Read)
$(deriveJSON defaultOptions ''CallOption)