-- | Blockfrost client
{-# LANGUAGE CPP #-}
{-# LANGUAGE DeriveFunctor #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module Blockfrost.Client
( module Blockfrost.API
, module Blockfrost.Env
, module Blockfrost.Types
, module Blockfrost.Lens
, module Blockfrost.Client.Core
, module Blockfrost.Client.Types
-- Common
, getRoot
, getHealth
, getClock
-- Metrics
, getMetrics
, getMetricsEndpoints
-- Cardano - Accounts
, getAccount
, getAccountRewards
, getAccountRewards'
, getAccountHistory
, getAccountHistory'
, getAccountDelegations
, getAccountDelegations'
, getAccountRegistrations
, getAccountRegistrations'
, getAccountWithdrawals
, getAccountWithdrawals'
, getAccountMirs
, getAccountMirs'
-- Cardano - Addresses
, getAddressInfo
, getAddressDetails
, getAddressUtxos
, getAddressUtxos'
, getAddressUtxosAsset
, getAddressUtxosAsset'
, getAddressTransactions
, getAddressTransactions'
-- Cardano - Assets
, getAssets
, getAssets'
, getAssetDetails
, getAssetHistory
, getAssetHistory'
, getAssetTransactions
, getAssetTransactions'
, getAssetAddresses
, getAssetAddresses'
, getAssetsByPolicy
, getAssetsByPolicy'
-- Cardano - Blocks
, getLatestBlock
, getLatestBlockTxs
, getLatestBlockTxs'
, getBlock
, getBlockSlot
, getBlockEpochSlot
, getNextBlocks
, getNextBlocks'
, getPreviousBlocks
, getPreviousBlocks'
, getBlockTxs
, getBlockTxs'
-- Cardano - Epochs
, getLatestEpoch
, getLatestEpochProtocolParams
, getEpoch
, getNextEpochs
, getNextEpochs'
, getPreviousEpochs
, getPreviousEpochs'
, getEpochStake
, getEpochStake'
, getEpochStakeByPool
, getEpochStakeByPool'
, getEpochBlocks
, getEpochBlocks'
, getEpochBlocksByPool
, getEpochBlocksByPool'
, getEpochProtocolParams
-- Cardano - Ledger
, getLedgerGenesis
-- Cardano - Metadata
, getTxMetadataLabels
, getTxMetadataLabels'
, getTxMetadataByLabelJSON
, getTxMetadataByLabelJSON'
, getTxMetadataByLabelCBOR
, getTxMetadataByLabelCBOR'
-- Cardano - Network
, getNetworkInfo
-- Cardano - Pools
, listPools
, listPools'
, listRetiredPools
, listRetiredPools'
, listRetiringPools
, listRetiringPools'
, getPool
, getPoolHistory
, getPoolHistory'
, getPoolMetadata
, getPoolRelays
, getPoolDelegators
, getPoolDelegators'
, getPoolBlocks
, getPoolBlocks'
, getPoolUpdates
, getPoolUpdates'
-- Cardano - Scripts
, listScripts
, listScripts'
, getScript
, getScriptRedeemers
, getScriptRedeemers'
, getScriptDatum
, getScriptJSON
, getScriptCBOR
-- Cardano - Transactions
, getTx
, getTxUtxos
, getTxStakes
, getTxDelegations
, getTxWithdrawals
, getTxMirs
, getTxPoolUpdates
, getTxPoolRetiring
, getTxMetadataJSON
, getTxMetadataCBOR
, submitTx
-- IPFS
, ipfsAdd
, ipfsGateway
, ipfsGetPin
, ipfsListPins
, ipfsListPins'
, ipfsPin
, ipfsRemovePin
-- Nut.link
, nutlinkListAddress
, nutlinkListAddressTickers
, nutlinkListAddressTickers'
, nutlinkAddressTickers
, nutlinkAddressTickers'
, nutlinkTickers
, nutlinkTickers'
) where
import Blockfrost.API
import Blockfrost.Client.Core
import Blockfrost.Env
import Blockfrost.Lens
import Blockfrost.Types
import Blockfrost.Client.Cardano.Accounts
import Blockfrost.Client.Cardano.Addresses
import Blockfrost.Client.Cardano.Assets
import Blockfrost.Client.Cardano.Blocks
import Blockfrost.Client.Cardano.Epochs
import Blockfrost.Client.Cardano.Ledger
import Blockfrost.Client.Cardano.Metadata
import Blockfrost.Client.Cardano.Network
import Blockfrost.Client.Cardano.Pools
import Blockfrost.Client.Cardano.Scripts
import Blockfrost.Client.Cardano.Transactions
import Blockfrost.Client.IPFS
import Blockfrost.Client.NutLink
import Blockfrost.Client.Types
import Data.Text (Text)
-- ** Client functions
-- *** Health
getRoot' :: Project -> BlockfrostClient URLVersion
getRoot' = _getRoot . commonClient
-- | Root endpoint has no other function than to point end users to documentation
getRoot :: BlockfrostClient URLVersion
getRoot = go getRoot'
getHealth' :: Project -> BlockfrostClient Healthy
getHealth' = _getHealth . commonClient
-- | Return backend status. Your application should handle situations when backend for the given chain is unavailable.
getHealth :: BlockfrostClient Healthy
getHealth = go getHealth'
getClock':: Project -> BlockfrostClient ServerTime
getClock' = _getClock . commonClient
-- | Get current backend time
getClock:: BlockfrostClient ServerTime
getClock = go getClock'
getMetrics':: Project -> BlockfrostClient [Metric]
getMetrics' = _metrics . commonClient
-- | Get Blockfrost usage metrics over last 30 days
getMetrics:: BlockfrostClient [Metric]
getMetrics = go getMetrics'
getMetricsEndpoints':: Project -> BlockfrostClient [(Text, Metric)]
getMetricsEndpoints' = _metricsEndpoints . commonClient
-- | Get Blockfrost endpoint usage metrics over last 30 days
getMetricsEndpoints:: BlockfrostClient [(Text, Metric)]
getMetricsEndpoints = go getMetricsEndpoints'