Skip to content
This repository was archived by the owner on Jan 9, 2026. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions chainweb-api.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -69,9 +69,11 @@ library
Chainweb.Api.Payload
Chainweb.Api.RespItems
Chainweb.Api.Sig
Chainweb.Api.SigCapability
Chainweb.Api.Signer
Chainweb.Api.StringEncoded
Chainweb.Api.Transaction
Chainweb.Api.Verifier
ChainwebData.Api
ChainwebData.EventDetail
ChainwebData.TransferDetail
Expand Down
4 changes: 4 additions & 0 deletions lib/Chainweb/Api/PactCommand.hs
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,13 @@ import Data.Text (Text)
import Chainweb.Api.ChainwebMeta
import Chainweb.Api.Payload
import Chainweb.Api.Signer
import Chainweb.Api.Verifier
------------------------------------------------------------------------------

data PactCommand = PactCommand
{ _pactCommand_payload :: Payload
, _pactCommand_signers :: [Signer]
, _pactCommand_verifiers :: Maybe [Verifier]
, _pactCommand_meta :: ChainwebMeta
, _pactCommand_nonce :: Text
, _pactCommand_network :: Maybe Text
Expand All @@ -24,6 +26,7 @@ instance ToJSON PactCommand where
toJSON PactCommand{..} = object
[ "payload" .= _pactCommand_payload
, "signers" .= _pactCommand_signers
, "verifiers" .= _pactCommand_verifiers
, "meta" .= _pactCommand_meta
, "nonce" .= _pactCommand_nonce
, "networkId" .= _pactCommand_network
Expand All @@ -33,6 +36,7 @@ instance FromJSON PactCommand where
parseJSON = withObject "PactCommand" $ \o -> PactCommand
<$> o .: "payload"
<*> o .: "signers"
<*> o .: "verifiers"
<*> o .: "meta"
<*> o .: "nonce"
<*> o .: "networkId"
28 changes: 28 additions & 0 deletions lib/Chainweb/Api/SigCapability.hs
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
module Chainweb.Api.SigCapability where

------------------------------------------------------------------------------
import Data.Aeson
import Data.Ord (comparing)
import Data.Text (Text)
------------------------------------------------------------------------------

data SigCapability = SigCapability
{ _scName :: Text
, _scArgs :: [Value]
} deriving (Eq,Show)

instance Ord SigCapability where
compare = comparing _scName

instance ToJSON SigCapability where
toJSON SigCapability{..} = object
[ "name" .= _scName
, "args" .= _scArgs
]

instance FromJSON SigCapability where
parseJSON = withObject "SigCapability" $ \o -> SigCapability
<$> o .: "name"
<*> o .: "args"
22 changes: 1 addition & 21 deletions lib/Chainweb/Api/Signer.hs
Original file line number Diff line number Diff line change
@@ -1,34 +1,14 @@
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}

module Chainweb.Api.Signer where

------------------------------------------------------------------------------
import Chainweb.Api.SigCapability
import Data.Aeson
import Data.Maybe (fromMaybe, catMaybes)
import Data.Ord
import Data.Text (Text)
------------------------------------------------------------------------------

data SigCapability = SigCapability
{ _scName :: Text
, _scArgs :: [Value]
} deriving (Eq,Show)

instance Ord SigCapability where
compare = comparing _scName

instance ToJSON SigCapability where
toJSON SigCapability{..} = object
[ "name" .= _scName
, "args" .= _scArgs
]

instance FromJSON SigCapability where
parseJSON = withObject "SigCapability" $ \o -> SigCapability
<$> o .: "name"
<*> o .: "args"

data Signer = Signer
{ _signer_addr :: Maybe Text
, _signer_scheme :: Maybe Text
Expand Down
33 changes: 33 additions & 0 deletions lib/Chainweb/Api/Verifier.hs
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
module Chainweb.Api.Verifier where

------------------------------------------------------------------------------
import Chainweb.Api.SigCapability
import Data.Aeson
import Data.Maybe (catMaybes)
import Data.Ord
import Data.Text (Text)
------------------------------------------------------------------------------

data Verifier = Verifier
{ _verifier_name :: Maybe Text
, _verifier_proof :: Value
, _verifier_capList :: [SigCapability]
} deriving (Eq, Show)

instance Ord Verifier where
compare = comparing _verifier_name

instance ToJSON Verifier where
toJSON Verifier{..} = object $ catMaybes
[ fmap ("name" .=) _verifier_name
, Just $ "proof" .= _verifier_proof
, Just $ "clist" .= _verifier_capList
]

instance FromJSON Verifier where
parseJSON = withObject "Verifier" $ \o -> Verifier
<$> o .:? "name"
<*> o .: "proof"
<*> o .: "clist"
2 changes: 2 additions & 0 deletions lib/ChainwebData/TxDetail.hs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ module ChainwebData.TxDetail where

import Chainweb.Api.Signer (Signer)
import Chainweb.Api.Sig (Sig)
import Chainweb.Api.Verifier (Verifier)
import ChainwebData.Util
import Data.Aeson
import Data.Text (Text)
Expand Down Expand Up @@ -49,6 +50,7 @@ data TxDetail = TxDetail
, _txDetail_previousSteps :: Maybe [Text]
, _txDetail_signers :: [Signer]
, _txDetail_sigs :: [Sig]
, _txDetail_verifiers :: Maybe [Verifier]
} deriving (Eq,Show,Generic)

instance ToJSON TxDetail where
Expand Down