packages feed

Hastructure-0.45.0: src/Call.hs

{-# 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    -- ^ triggered when pool perform balance below threshold
                | BondBalance Balance    -- ^ triggered when bond current balance below threshold
                | PoolFactor Rate        -- ^ triggered when pool factor (pool perform balance/origin balance)
                | BondFactor Rate        -- ^ triggered when bond factor (total bonds current balance / origin balance)
                | OnDate Date            -- ^ triggered at date
                | AfterDate Date         -- ^ triggered when after date
                | And [CallOption]       -- ^ triggered when all options were satisfied
                | Or [CallOption]        -- ^ triggered when any option is satisfied
                | PoolPv Balance         -- ^ Call when PV of pool fall below
                | Pre Pre                -- ^ triggered when predicate evaluates to be True
                deriving (Show,Generic,Ord,Eq,Read)

$(deriveJSON defaultOptions ''CallOption)