-- | Nut.link client functions

module Blockfrost.Client.NutLink
  ( nutlinkAddressTickers
  , nutlinkAddressTickers'
  , nutlinkListAddress
  , nutlinkListAddressTickers
  , nutlinkListAddressTickers'
  , nutlinkTickers
  , nutlinkTickers'
  ) where

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

nutlinkListAddress_ :: MonadBlockfrost m => Project -> Address-> m NutlinkAddress
nutlinkListAddress_ :: forall (m :: * -> *).
MonadBlockfrost m =>
Project -> Address -> m NutlinkAddress
nutlinkListAddress_ = forall route.
NutLinkAPI route
-> route
   :- (Summary "List metadata about specific address"
       :> (Description "List metadata about specific address"
           :> (Capture "address" Address :> Get '[JSON] NutlinkAddress)))
_address forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (m :: * -> *).
MonadBlockfrost m =>
Project -> NutLinkAPI (AsClientT m)
nutLinkClient

-- | List metadata about specific address
nutlinkListAddress :: MonadBlockfrost m => Address -> m NutlinkAddress
nutlinkListAddress :: forall (m :: * -> *).
MonadBlockfrost m =>
Address -> m NutlinkAddress
nutlinkListAddress Address
a = forall (m :: * -> *) a.
MonadBlockfrost m =>
(Project -> m a) -> m a
go (forall (m :: * -> *).
MonadBlockfrost m =>
Project -> Address -> m NutlinkAddress
`nutlinkListAddress_` Address
a)

nutlinkListAddressTickers_ :: MonadBlockfrost m => Project -> Address -> Paged -> SortOrder -> m [NutlinkAddressTicker]
nutlinkListAddressTickers_ :: forall (m :: * -> *).
MonadBlockfrost m =>
Project
-> Address -> Paged -> SortOrder -> m [NutlinkAddressTicker]
nutlinkListAddressTickers_ = forall route.
NutLinkAPI route
-> route
   :- (Summary "List tickers for a specific metadata oracle"
       :> (Description "List tickers for a specific metadata oracle"
           :> (Capture "address" Address
               :> ("tickers"
                   :> (Pagination
                       :> (Sorting :> Get '[JSON] [NutlinkAddressTicker]))))))
_listAddressTickers forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (m :: * -> *).
MonadBlockfrost m =>
Project -> NutLinkAPI (AsClientT m)
nutLinkClient

-- | List tickers for a specific metadata oracle
-- Allows custom paging and ordering using @Paged@ and @SortOrder@.
nutlinkListAddressTickers' :: MonadBlockfrost m => Address -> Paged -> SortOrder -> m [NutlinkAddressTicker]
nutlinkListAddressTickers' :: forall (m :: * -> *).
MonadBlockfrost m =>
Address -> Paged -> SortOrder -> m [NutlinkAddressTicker]
nutlinkListAddressTickers' Address
a Paged
pg SortOrder
s = forall (m :: * -> *) a.
MonadBlockfrost m =>
(Project -> m a) -> m a
go (\Project
p -> forall (m :: * -> *).
MonadBlockfrost m =>
Project
-> Address -> Paged -> SortOrder -> m [NutlinkAddressTicker]
nutlinkListAddressTickers_ Project
p Address
a Paged
pg SortOrder
s)

-- | List tickers for a specific metadata oracle
nutlinkListAddressTickers :: MonadBlockfrost m => Address -> m [NutlinkAddressTicker]
nutlinkListAddressTickers :: forall (m :: * -> *).
MonadBlockfrost m =>
Address -> m [NutlinkAddressTicker]
nutlinkListAddressTickers Address
a = forall (m :: * -> *).
MonadBlockfrost m =>
Address -> Paged -> SortOrder -> m [NutlinkAddressTicker]
nutlinkListAddressTickers' Address
a forall a. Default a => a
def forall a. Default a => a
def

nutlinkAddressTickers_ :: MonadBlockfrost m => Project -> Address -> Text -> Paged -> SortOrder -> m [NutlinkTicker]
nutlinkAddressTickers_ :: forall (m :: * -> *).
MonadBlockfrost m =>
Project
-> Address -> Text -> Paged -> SortOrder -> m [NutlinkTicker]
nutlinkAddressTickers_ = forall route.
NutLinkAPI route
-> route
   :- (Summary "List of records of a specific ticker"
       :> (Description "List of records of a specific ticker"
           :> (Capture "address" Address
               :> ("tickers"
                   :> (Capture "ticker" Text
                       :> (Pagination :> (Sorting :> Get '[JSON] [NutlinkTicker])))))))
_addressTickers forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (m :: * -> *).
MonadBlockfrost m =>
Project -> NutLinkAPI (AsClientT m)
nutLinkClient

-- | List of records of a specific ticker
-- Allows custom paging and ordering using @Paged@ and @SortOrder@.
nutlinkAddressTickers' :: MonadBlockfrost m => Address -> Text -> Paged -> SortOrder -> m [NutlinkTicker]
nutlinkAddressTickers' :: forall (m :: * -> *).
MonadBlockfrost m =>
Address -> Text -> Paged -> SortOrder -> m [NutlinkTicker]
nutlinkAddressTickers' Address
a Text
t Paged
pg SortOrder
s = forall (m :: * -> *) a.
MonadBlockfrost m =>
(Project -> m a) -> m a
go (\Project
p -> forall (m :: * -> *).
MonadBlockfrost m =>
Project
-> Address -> Text -> Paged -> SortOrder -> m [NutlinkTicker]
nutlinkAddressTickers_ Project
p Address
a Text
t Paged
pg SortOrder
s)

-- | List of records of a specific ticker
nutlinkAddressTickers :: MonadBlockfrost m => Address -> Text -> m [NutlinkTicker]
nutlinkAddressTickers :: forall (m :: * -> *).
MonadBlockfrost m =>
Address -> Text -> m [NutlinkTicker]
nutlinkAddressTickers Address
a Text
t = forall (m :: * -> *).
MonadBlockfrost m =>
Address -> Text -> Paged -> SortOrder -> m [NutlinkTicker]
nutlinkAddressTickers' Address
a Text
t forall a. Default a => a
def forall a. Default a => a
def

nutlinkTickers_ :: MonadBlockfrost m => Project -> Text -> Paged -> SortOrder -> m [(Address, NutlinkTicker)]
nutlinkTickers_ :: forall (m :: * -> *).
MonadBlockfrost m =>
Project
-> Text -> Paged -> SortOrder -> m [(Address, NutlinkTicker)]
nutlinkTickers_ = forall route.
NutLinkAPI route
-> route
   :- (Summary "List of records of a specific ticker"
       :> (Description "List of records of a specific ticker"
           :> ("tickers"
               :> (Capture "ticker" Text
                   :> (Pagination
                       :> (Sorting :> Get '[JSON] [(Address, NutlinkTicker)]))))))
_tickers forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall (m :: * -> *).
MonadBlockfrost m =>
Project -> NutLinkAPI (AsClientT m)
nutLinkClient

-- | List of records of a specific ticker
-- Allows custom paging and ordering using @Paged@ and @SortOrder@.
nutlinkTickers' :: MonadBlockfrost m => Text -> Paged -> SortOrder -> m [(Address, NutlinkTicker)]
nutlinkTickers' :: forall (m :: * -> *).
MonadBlockfrost m =>
Text -> Paged -> SortOrder -> m [(Address, NutlinkTicker)]
nutlinkTickers' Text
a Paged
pg SortOrder
s = forall (m :: * -> *) a.
MonadBlockfrost m =>
(Project -> m a) -> m a
go (\Project
p -> forall (m :: * -> *).
MonadBlockfrost m =>
Project
-> Text -> Paged -> SortOrder -> m [(Address, NutlinkTicker)]
nutlinkTickers_ Project
p Text
a Paged
pg SortOrder
s)

-- | List of records of a specific ticker
nutlinkTickers :: MonadBlockfrost m => Text -> m [(Address, NutlinkTicker)]
nutlinkTickers :: forall (m :: * -> *).
MonadBlockfrost m =>
Text -> m [(Address, NutlinkTicker)]
nutlinkTickers Text
a = forall (m :: * -> *).
MonadBlockfrost m =>
Text -> Paged -> SortOrder -> m [(Address, NutlinkTicker)]
nutlinkTickers' Text
a forall a. Default a => a
def forall a. Default a => a
def