{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeSynonymInstances #-}
module Factom.RPC.Types where
import Data.Aeson
import Data.Aeson.TH
import Data.Maybe
import qualified Data.Text as T
import Data.Time
import GHC.Generics
import Factom.RPC.Utils
data ApiRequest =
ApiRequest
{ jsonRpc :: T.Text
, id :: Int
, method :: T.Text
, params :: Maybe Object
} deriving (Eq, Show, Generic, ToJSON)
data ApiResponse a =
ApiResponse
{ jsonRpc :: T.Text
, id :: Int
, result :: a
} deriving (Eq, Show, Generic, FromJSON)
data Entry =
Entry
{ enChainId :: T.Text
, enContent :: T.Text
, enExtIds :: [T.Text]
} deriving (Eq, Show, Generic, FromJSON)
data EntryBlock =
EntryBlock
{ blockSequenceNumber :: Int
} deriving (Eq, Show, Generic, FromJSON)
data EntryCreditBalance =
EntryCreditBalance
{ ecBalance :: Int
} deriving (Eq, Show, Generic, FromJSON)