@@ -2,6 +2,8 @@ module HydraSdk.Internal.Process.HydraNode
22 ( HydraHeadPeer
33 , HydraNodeHandlers
44 , HydraNodeStartupParams
5+ , hydraHeadPeerCodec
6+ , hydraNodeStartupParamsCodec
57 , noopHydraNodeHandlers
68 , spawnHydraNode
79 ) where
@@ -13,6 +15,8 @@ import Cardano.Types (TransactionHash)
1315import Contract.CborBytes (cborBytesToHex )
1416import Control.Error.Util (bool )
1517import Data.Array (concat , singleton ) as Array
18+ import Data.Codec.Argonaut (JsonCodec , array , int , object , string ) as CA
19+ import Data.Codec.Argonaut.Record (record ) as CAR
1620import Data.Foldable (foldMap )
1721import Data.Int (decimal , toStringAs ) as Int
1822import Data.Maybe (Maybe (Nothing), isNothing )
@@ -22,8 +26,15 @@ import Data.Traversable (for_, traverse_)
2226import Effect (Effect )
2327import Effect.AVar (empty , tryPut ) as AVar
2428import Effect.Class (class MonadEffect , liftEffect )
25- import HydraSdk.Internal.Types.HostPort (HostPort , printHost , printHostPort , printPort )
26- import HydraSdk.Internal.Types.Network (Network (Testnet, Mainnet))
29+ import HydraSdk.Internal.Lib.Codec (txHashCodec )
30+ import HydraSdk.Internal.Types.HostPort
31+ ( HostPort
32+ , hostPortCodec
33+ , printHost
34+ , printHostPort
35+ , printPort
36+ )
37+ import HydraSdk.Internal.Types.Network (Network (Testnet, Mainnet), networkCodec )
2738import Node.ChildProcess (ChildProcess , defaultSpawnOptions , spawn , stderr , stdout )
2839import Node.Encoding (Encoding (UTF8)) as Encoding
2940import Node.Path (FilePath )
@@ -44,12 +55,37 @@ type HydraNodeStartupParams =
4455 , peers :: Array HydraHeadPeer
4556 }
4657
58+ hydraNodeStartupParamsCodec :: CA.JsonCodec HydraNodeStartupParams
59+ hydraNodeStartupParamsCodec =
60+ CA .object " HydraNodeStartupParams" $ CAR .record
61+ { nodeId: CA .string
62+ , hydraNodeAddress: hostPortCodec
63+ , hydraNodeApiAddress: hostPortCodec
64+ , persistDir: CA .string
65+ , hydraSigningKey: CA .string
66+ , cardanoSigningKey: CA .string
67+ , network: networkCodec
68+ , nodeSocket: CA .string
69+ , pparams: CA .string
70+ , hydraScriptsTxHash: txHashCodec
71+ , contestPeriodSec: CA .int
72+ , peers: CA .array hydraHeadPeerCodec
73+ }
74+
4775type HydraHeadPeer =
4876 { hydraNodeAddress :: HostPort
4977 , hydraVerificationKey :: FilePath
5078 , cardanoVerificationKey :: FilePath
5179 }
5280
81+ hydraHeadPeerCodec :: CA.JsonCodec HydraHeadPeer
82+ hydraHeadPeerCodec =
83+ CA .object " HydraHeadPeer" $ CAR .record
84+ { hydraNodeAddress: hostPortCodec
85+ , hydraVerificationKey: CA .string
86+ , cardanoVerificationKey: CA .string
87+ }
88+
5389type HydraNodeHandlers =
5490 { apiServerStartedHandler :: Maybe (Effect Unit )
5591 , stdoutHandler :: Maybe (String -> Effect Unit )
0 commit comments