@@ -21,11 +21,11 @@ import Cardano.Wasm.Internal.Api.GRPC qualified as Wasm
2121import Cardano.Wasm.Internal.Api.Info (apiInfo )
2222import Cardano.Wasm.Internal.Api.Tx qualified as Wasm
2323import Cardano.Wasm.Internal.ExceptionHandling (rightOrError )
24- import Cardano.Wasm.Internal.JavaScript.GRPC (js_getEra , js_newWebGrpcClient , js_submitTx )
24+ import Cardano.Wasm.Internal.JavaScript.GRPC (js_getEra , js_newWebGrpcClient , js_submitTx , js_getProtocolParams )
2525import Cardano.Wasm.Internal.JavaScript.GRPCTypes (JSGRPCClient )
2626
2727import Control.Exception (evaluate )
28- import Control.Monad ( join )
28+ import Control.Monad
2929import Data.Aeson qualified as Aeson
3030import Data.ByteString.UTF8 (fromString , toString )
3131import Data.Text (Text )
@@ -133,6 +133,9 @@ instance ToJSVal String JSString where
133133 toJSVal :: String -> IO JSString
134134 toJSVal = return . toJSString
135135
136+ instance ToJSVal Wasm. ProtocolParamsJSON JSProtocolParams where
137+ toJSVal (Wasm. ProtocolParamsJSON json) = js_parse $ toJSString json
138+
136139instance ToJSVal Wasm. GrpcObject JSGrpc where
137140 toJSVal :: Wasm. GrpcObject -> IO JSGrpc
138141 toJSVal (Wasm. GrpcObject client) = return client
@@ -171,7 +174,7 @@ instance FromJSVal JSTxIx Api.TxIx where
171174 fromJSVal :: JSTxIx -> IO Api. TxIx
172175 fromJSVal = return . Api. TxIx . fromIntegral
173176
174- instance FromJSVal JSVal Wasm. ProtocolParamsJSON where
177+ instance FromJSVal JSProtocolParams Wasm. ProtocolParamsJSON where
175178 fromJSVal = fmap Wasm. ProtocolParamsJSON . jsValToJSONString
176179
177180instance FromJSVal JSGrpc Wasm. GrpcObject where
@@ -357,6 +360,9 @@ foreign export javascript "newGrpcConnection"
357360foreign export javascript " getEra"
358361 getEra :: JSGrpc -> IO Int
359362
363+ foreign export javascript " getProtocolParams"
364+ getProtocolParams :: JSGrpc -> IO JSVal
365+
360366foreign export javascript " submitTx"
361367 submitTx :: JSGrpc -> JSString -> IO JSString
362368
@@ -368,6 +374,10 @@ newGrpcConnection webGrpcUrl = toJSVal =<< join (Wasm.newGrpcConnectionImpl js_n
368374getEra :: HasCallStack => JSGrpc -> IO Int
369375getEra grpcObject = Wasm. getEraImpl js_getEra =<< fromJSVal grpcObject
370376
377+ -- | Get the protocol parameters from the Cardano Node using GRPC-web.
378+ getProtocolParams :: HasCallStack => JSGrpc -> IO JSProtocolParams
379+ getProtocolParams = toJSVal <=< Wasm. getProtocolParamsImpl js_getProtocolParams <=< fromJSVal
380+
371381-- | Submit a transaction to the Cardano Node using GRPC-web.
372382submitTx :: HasCallStack => JSGrpc -> JSString -> IO JSString
373383submitTx grpcObject tx = toJSVal =<< join (Wasm. submitTxImpl js_submitTx <$> fromJSVal grpcObject <*> fromJSVal tx)
@@ -380,4 +390,4 @@ foreign export javascript "getApiInfo"
380390getApiInfo :: IO JSApiInfo
381391getApiInfo = toJSVal apiInfo
382392
383- #endif
393+ #endif
0 commit comments