packages feed

blockfrost-client-0.8.0.0: src/Blockfrost/Client/Cardano/Utils.hs

-- | Utility queries

module Blockfrost.Client.Cardano.Utils
  ( deriveShelleyAddress
  , txEvaluate
  , txEvaluateUTXOs
  ) where

import Data.Text (Text)
import Blockfrost.API
import Blockfrost.Client.Types
import Blockfrost.Types

utilsClient :: MonadBlockfrost m => Project -> UtilsAPI (AsClientT m)
utilsClient = fromServant . _utils . cardanoClient

-- | Derive Shelley address from xpub key
deriveShelleyAddress_
  :: MonadBlockfrost m
  => Project
  -> Text -- ^ Hexadecimal xpub
  -> Integer -- ^ Account role
  -> Integer -- ^ Address index
  -> m DerivedAddress
deriveShelleyAddress_ = _deriveAddr . utilsClient

-- | Derive Shelley address from xpub key
deriveShelleyAddress
  :: MonadBlockfrost m
  => Text -- ^ Hexadecimal xpub
  -> Integer -- ^ Account role
  -> Integer -- ^ Address index
  -> m DerivedAddress
deriveShelleyAddress xpub role index = go (\p -> deriveShelleyAddress_ p xpub role index)

txEvaluate_
  :: MonadBlockfrost m
  => Project
  -> CBORString
  -> m TxEval
txEvaluate_ = _txEvaluate . utilsClient

-- | Submit a transaction for execution units evaluation
txEvaluate
  :: MonadBlockfrost m
  => CBORString
  -> m TxEval
txEvaluate txCbor = go (`txEvaluate_` txCbor)

txEvaluateUTXOs_
  :: MonadBlockfrost m
  => Project
  -> TxEvalInput
  -> m TxEval
txEvaluateUTXOs_ = _txEvaluateUTXOs . utilsClient

-- | Submit a transaction for execution units evaluation (additional UTXO set)
txEvaluateUTXOs
  :: MonadBlockfrost m
  => TxEvalInput
  -> m TxEval
txEvaluateUTXOs txei = go (`txEvaluateUTXOs_` txei)