-- | Account queries

module Blockfrost.Client.Cardano.Accounts
  ( getAccount
  , getAccountRewards
  , getAccountRewards'
  , getAccountHistory
  , getAccountHistory'
  , getAccountDelegations
  , getAccountDelegations'
  , getAccountRegistrations
  , getAccountRegistrations'
  , getAccountWithdrawals
  , getAccountWithdrawals'
  , getAccountMirs
  , getAccountMirs'
  , getAccountAssociatedAddresses
  , getAccountAssociatedAddresses'
  , getAccountAssociatedAddressesTotal
  , getAccountAssociatedAssets
  , getAccountAssociatedAssets'
  ) where

import Blockfrost.API
import Blockfrost.Client.Types
import Blockfrost.Types

accountsClient :: MonadBlockfrost m => Project -> AccountsAPI (AsClientT m)
accountsClient :: forall (m :: * -> *).
MonadBlockfrost m =>
Project -> AccountsAPI (AsClientT m)
accountsClient = ((((Address -> m AccountInfo)
   :<|> (Address -> Paged -> SortOrder -> m [AccountReward]))
  :<|> ((Address -> Paged -> SortOrder -> m [AccountHistory])
        :<|> ((Address -> Paged -> SortOrder -> m [AccountDelegation])
              :<|> (Address -> Paged -> SortOrder -> m [AccountRegistration]))))
 :<|> (((Address -> Paged -> SortOrder -> m [AccountWithdrawal])
        :<|> (Address -> Paged -> SortOrder -> m [AccountMir]))
       :<|> ((Address -> Paged -> SortOrder -> m [AddressAssociated])
             :<|> ((Address -> Paged -> SortOrder -> m [Amount])
                   :<|> (Address -> m AddressAssociatedTotal)))))
-> AccountsAPI (AsClientT m)
ToServant AccountsAPI (AsClientT m) -> AccountsAPI (AsClientT m)
forall {k} (routes :: k -> *) (mode :: k).
GenericServant routes mode =>
ToServant routes mode -> routes mode
fromServant (((((Address -> m AccountInfo)
    :<|> (Address -> Paged -> SortOrder -> m [AccountReward]))
   :<|> ((Address -> Paged -> SortOrder -> m [AccountHistory])
         :<|> ((Address -> Paged -> SortOrder -> m [AccountDelegation])
               :<|> (Address -> Paged -> SortOrder -> m [AccountRegistration]))))
  :<|> (((Address -> Paged -> SortOrder -> m [AccountWithdrawal])
         :<|> (Address -> Paged -> SortOrder -> m [AccountMir]))
        :<|> ((Address -> Paged -> SortOrder -> m [AddressAssociated])
              :<|> ((Address -> Paged -> SortOrder -> m [Amount])
                    :<|> (Address -> m AddressAssociatedTotal)))))
 -> AccountsAPI (AsClientT m))
-> (Project
    -> (((Address -> m AccountInfo)
         :<|> (Address -> Paged -> SortOrder -> m [AccountReward]))
        :<|> ((Address -> Paged -> SortOrder -> m [AccountHistory])
              :<|> ((Address -> Paged -> SortOrder -> m [AccountDelegation])
                    :<|> (Address -> Paged -> SortOrder -> m [AccountRegistration]))))
       :<|> (((Address -> Paged -> SortOrder -> m [AccountWithdrawal])
              :<|> (Address -> Paged -> SortOrder -> m [AccountMir]))
             :<|> ((Address -> Paged -> SortOrder -> m [AddressAssociated])
                   :<|> ((Address -> Paged -> SortOrder -> m [Amount])
                         :<|> (Address -> m AddressAssociatedTotal)))))
-> Project
-> AccountsAPI (AsClientT m)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CardanoAPI (AsClientT m)
-> (((Address -> m AccountInfo)
     :<|> (Address -> Paged -> SortOrder -> m [AccountReward]))
    :<|> ((Address -> Paged -> SortOrder -> m [AccountHistory])
          :<|> ((Address -> Paged -> SortOrder -> m [AccountDelegation])
                :<|> (Address -> Paged -> SortOrder -> m [AccountRegistration]))))
   :<|> (((Address -> Paged -> SortOrder -> m [AccountWithdrawal])
          :<|> (Address -> Paged -> SortOrder -> m [AccountMir]))
         :<|> ((Address -> Paged -> SortOrder -> m [AddressAssociated])
               :<|> ((Address -> Paged -> SortOrder -> m [Amount])
                     :<|> (Address -> m AddressAssociatedTotal))))
CardanoAPI (AsClientT m)
-> AsClientT m
   :- ("accounts"
       :> (Tag "Cardano \187 Accounts" :> ToServantApi AccountsAPI))
forall route.
CardanoAPI route
-> route
   :- ("accounts"
       :> (Tag "Cardano \187 Accounts" :> ToServantApi AccountsAPI))
_accounts (CardanoAPI (AsClientT m)
 -> (((Address -> m AccountInfo)
      :<|> (Address -> Paged -> SortOrder -> m [AccountReward]))
     :<|> ((Address -> Paged -> SortOrder -> m [AccountHistory])
           :<|> ((Address -> Paged -> SortOrder -> m [AccountDelegation])
                 :<|> (Address -> Paged -> SortOrder -> m [AccountRegistration]))))
    :<|> (((Address -> Paged -> SortOrder -> m [AccountWithdrawal])
           :<|> (Address -> Paged -> SortOrder -> m [AccountMir]))
          :<|> ((Address -> Paged -> SortOrder -> m [AddressAssociated])
                :<|> ((Address -> Paged -> SortOrder -> m [Amount])
                      :<|> (Address -> m AddressAssociatedTotal)))))
-> (Project -> CardanoAPI (AsClientT m))
-> Project
-> (((Address -> m AccountInfo)
     :<|> (Address -> Paged -> SortOrder -> m [AccountReward]))
    :<|> ((Address -> Paged -> SortOrder -> m [AccountHistory])
          :<|> ((Address -> Paged -> SortOrder -> m [AccountDelegation])
                :<|> (Address -> Paged -> SortOrder -> m [AccountRegistration]))))
   :<|> (((Address -> Paged -> SortOrder -> m [AccountWithdrawal])
          :<|> (Address -> Paged -> SortOrder -> m [AccountMir]))
         :<|> ((Address -> Paged -> SortOrder -> m [AddressAssociated])
               :<|> ((Address -> Paged -> SortOrder -> m [Amount])
                     :<|> (Address -> m AddressAssociatedTotal))))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Project -> CardanoAPI (AsClientT m)
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> CardanoAPI (AsClientT m)
cardanoClient

getAccount_ :: MonadBlockfrost m => Project -> Address -> m AccountInfo
getAccount_ :: forall (m :: * -> *).
MonadBlockfrost m =>
Project -> Address -> m AccountInfo
getAccount_ = AccountsAPI (AsClientT m)
-> AsClientT m
   :- (Summary "Specific account address"
       :> (Description
             "Obtain information about a specific stake account."
           :> (Capture "stake_address" Address :> Get '[JSON] AccountInfo)))
AccountsAPI (AsClientT m) -> Address -> m AccountInfo
forall route.
AccountsAPI route
-> route
   :- (Summary "Specific account address"
       :> (Description
             "Obtain information about a specific stake account."
           :> (Capture "stake_address" Address :> Get '[JSON] AccountInfo)))
_account (AccountsAPI (AsClientT m) -> Address -> m AccountInfo)
-> (Project -> AccountsAPI (AsClientT m))
-> Project
-> Address
-> m AccountInfo
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Project -> AccountsAPI (AsClientT m)
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> AccountsAPI (AsClientT m)
accountsClient

-- | Obtain information about a specific stake account.
getAccount :: MonadBlockfrost m => Address -> m AccountInfo
getAccount :: forall (m :: * -> *). MonadBlockfrost m => Address -> m AccountInfo
getAccount Address
a = (Project -> m AccountInfo) -> m AccountInfo
forall (m :: * -> *) a.
MonadBlockfrost m =>
(Project -> m a) -> m a
go (Project -> Address -> m AccountInfo
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> Address -> m AccountInfo
`getAccount_` Address
a)

getAccountRewards_ :: MonadBlockfrost m => Project -> Address -> Paged -> SortOrder -> m [AccountReward]
getAccountRewards_ :: forall (m :: * -> *).
MonadBlockfrost m =>
Project -> Address -> Paged -> SortOrder -> m [AccountReward]
getAccountRewards_ = AccountsAPI (AsClientT m)
-> AsClientT m
   :- (Summary "Specific reward history"
       :> (Description
             "Obtain information about the reward history of a specific account."
           :> (Capture "stake_address" Address
               :> ("rewards"
                   :> (Pagination :> (Sorting :> Get '[JSON] [AccountReward]))))))
AccountsAPI (AsClientT m)
-> Address -> Paged -> SortOrder -> m [AccountReward]
forall route.
AccountsAPI route
-> route
   :- (Summary "Specific reward history"
       :> (Description
             "Obtain information about the reward history of a specific account."
           :> (Capture "stake_address" Address
               :> ("rewards"
                   :> (Pagination :> (Sorting :> Get '[JSON] [AccountReward]))))))
_accountRewards (AccountsAPI (AsClientT m)
 -> Address -> Paged -> SortOrder -> m [AccountReward])
-> (Project -> AccountsAPI (AsClientT m))
-> Project
-> Address
-> Paged
-> SortOrder
-> m [AccountReward]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Project -> AccountsAPI (AsClientT m)
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> AccountsAPI (AsClientT m)
accountsClient

-- | Obtain information about the history of a specific account.
-- Allows custom paging and ordering using 'Paged' and 'SortOrder'.
getAccountRewards' :: MonadBlockfrost m => Address -> Paged -> SortOrder -> m [AccountReward]
getAccountRewards' :: forall (m :: * -> *).
MonadBlockfrost m =>
Address -> Paged -> SortOrder -> m [AccountReward]
getAccountRewards' Address
a Paged
pg SortOrder
s = (Project -> m [AccountReward]) -> m [AccountReward]
forall (m :: * -> *) a.
MonadBlockfrost m =>
(Project -> m a) -> m a
go (\Project
p -> Project -> Address -> Paged -> SortOrder -> m [AccountReward]
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> Address -> Paged -> SortOrder -> m [AccountReward]
getAccountRewards_ Project
p Address
a Paged
pg SortOrder
s)

-- | Obtain information about the history of a specific account.
--
-- Queries 100 entries. To query all entries use 'Blockfrost.Client.Core.allPages'
-- with principled variant of this function (suffixed with @'@)
-- that accepts 'Paged' argument.
getAccountRewards :: MonadBlockfrost m => Address -> m [AccountReward]
getAccountRewards :: forall (m :: * -> *).
MonadBlockfrost m =>
Address -> m [AccountReward]
getAccountRewards Address
a = Address -> Paged -> SortOrder -> m [AccountReward]
forall (m :: * -> *).
MonadBlockfrost m =>
Address -> Paged -> SortOrder -> m [AccountReward]
getAccountRewards' Address
a Paged
forall a. Default a => a
def SortOrder
forall a. Default a => a
def

getAccountHistory_ :: MonadBlockfrost m => Project -> Address -> Paged -> SortOrder -> m [AccountHistory]
getAccountHistory_ :: forall (m :: * -> *).
MonadBlockfrost m =>
Project -> Address -> Paged -> SortOrder -> m [AccountHistory]
getAccountHistory_ = AccountsAPI (AsClientT m)
-> AsClientT m
   :- (Summary "Account history"
       :> (Description
             "Obtain information about the history of a specific account."
           :> (Capture "stake_address" Address
               :> ("history"
                   :> (Pagination :> (Sorting :> Get '[JSON] [AccountHistory]))))))
AccountsAPI (AsClientT m)
-> Address -> Paged -> SortOrder -> m [AccountHistory]
forall route.
AccountsAPI route
-> route
   :- (Summary "Account history"
       :> (Description
             "Obtain information about the history of a specific account."
           :> (Capture "stake_address" Address
               :> ("history"
                   :> (Pagination :> (Sorting :> Get '[JSON] [AccountHistory]))))))
_accountHistory (AccountsAPI (AsClientT m)
 -> Address -> Paged -> SortOrder -> m [AccountHistory])
-> (Project -> AccountsAPI (AsClientT m))
-> Project
-> Address
-> Paged
-> SortOrder
-> m [AccountHistory]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Project -> AccountsAPI (AsClientT m)
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> AccountsAPI (AsClientT m)
accountsClient

-- | Obtain information about the history of a specific account.
-- Allows custom paging and ordering using 'Paged' and 'SortOrder'.
getAccountHistory' :: MonadBlockfrost m => Address -> Paged -> SortOrder -> m [AccountHistory]
getAccountHistory' :: forall (m :: * -> *).
MonadBlockfrost m =>
Address -> Paged -> SortOrder -> m [AccountHistory]
getAccountHistory' Address
a Paged
pg SortOrder
s = (Project -> m [AccountHistory]) -> m [AccountHistory]
forall (m :: * -> *) a.
MonadBlockfrost m =>
(Project -> m a) -> m a
go (\Project
p -> Project -> Address -> Paged -> SortOrder -> m [AccountHistory]
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> Address -> Paged -> SortOrder -> m [AccountHistory]
getAccountHistory_ Project
p Address
a Paged
pg SortOrder
s)

-- | Obtain information about the history of a specific account.
--
-- Queries 100 entries. To query all entries use 'Blockfrost.Client.Core.allPages'
-- with principled variant of this function (suffixed with @'@)
-- that accepts 'Paged' argument.
getAccountHistory :: MonadBlockfrost m => Address -> m [AccountHistory]
getAccountHistory :: forall (m :: * -> *).
MonadBlockfrost m =>
Address -> m [AccountHistory]
getAccountHistory Address
a = Address -> Paged -> SortOrder -> m [AccountHistory]
forall (m :: * -> *).
MonadBlockfrost m =>
Address -> Paged -> SortOrder -> m [AccountHistory]
getAccountHistory' Address
a Paged
forall a. Default a => a
def SortOrder
forall a. Default a => a
def

getAccountDelegations_ :: MonadBlockfrost m => Project -> Address -> Paged -> SortOrder -> m [AccountDelegation]
getAccountDelegations_ :: forall (m :: * -> *).
MonadBlockfrost m =>
Project -> Address -> Paged -> SortOrder -> m [AccountDelegation]
getAccountDelegations_ = AccountsAPI (AsClientT m)
-> AsClientT m
   :- (Summary "Account delegation history"
       :> (Description
             "Obtain information about the delegation of a specific account."
           :> (Capture "stake_address" Address
               :> ("delegations"
                   :> (Pagination :> (Sorting :> Get '[JSON] [AccountDelegation]))))))
AccountsAPI (AsClientT m)
-> Address -> Paged -> SortOrder -> m [AccountDelegation]
forall route.
AccountsAPI route
-> route
   :- (Summary "Account delegation history"
       :> (Description
             "Obtain information about the delegation of a specific account."
           :> (Capture "stake_address" Address
               :> ("delegations"
                   :> (Pagination :> (Sorting :> Get '[JSON] [AccountDelegation]))))))
_accountDelegations (AccountsAPI (AsClientT m)
 -> Address -> Paged -> SortOrder -> m [AccountDelegation])
-> (Project -> AccountsAPI (AsClientT m))
-> Project
-> Address
-> Paged
-> SortOrder
-> m [AccountDelegation]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Project -> AccountsAPI (AsClientT m)
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> AccountsAPI (AsClientT m)
accountsClient

-- | Obtain information about the delegation of a specific account.
-- Allows custom paging and ordering using 'Paged' and 'SortOrder'.
getAccountDelegations' :: MonadBlockfrost m => Address -> Paged -> SortOrder -> m [AccountDelegation]
getAccountDelegations' :: forall (m :: * -> *).
MonadBlockfrost m =>
Address -> Paged -> SortOrder -> m [AccountDelegation]
getAccountDelegations' Address
a Paged
pg SortOrder
s = (Project -> m [AccountDelegation]) -> m [AccountDelegation]
forall (m :: * -> *) a.
MonadBlockfrost m =>
(Project -> m a) -> m a
go (\Project
p -> Project -> Address -> Paged -> SortOrder -> m [AccountDelegation]
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> Address -> Paged -> SortOrder -> m [AccountDelegation]
getAccountDelegations_ Project
p Address
a Paged
pg SortOrder
s)

-- | Obtain information about the delegation of a specific account.
--
-- Queries 100 entries. To query all entries use 'Blockfrost.Client.Core.allPages'
-- with principled variant of this function (suffixed with @'@)
-- that accepts 'Paged' argument.
getAccountDelegations :: MonadBlockfrost m => Address -> m [AccountDelegation]
getAccountDelegations :: forall (m :: * -> *).
MonadBlockfrost m =>
Address -> m [AccountDelegation]
getAccountDelegations Address
a = Address -> Paged -> SortOrder -> m [AccountDelegation]
forall (m :: * -> *).
MonadBlockfrost m =>
Address -> Paged -> SortOrder -> m [AccountDelegation]
getAccountDelegations' Address
a Paged
forall a. Default a => a
def SortOrder
forall a. Default a => a
def

getAccountRegistrations_ :: MonadBlockfrost m => Project -> Address -> Paged -> SortOrder -> m [AccountRegistration]
getAccountRegistrations_ :: forall (m :: * -> *).
MonadBlockfrost m =>
Project -> Address -> Paged -> SortOrder -> m [AccountRegistration]
getAccountRegistrations_ = AccountsAPI (AsClientT m)
-> AsClientT m
   :- (Summary "Account registration history"
       :> (Description
             "Obtain information about the registrations and deregistrations of a specific account."
           :> (Capture "stake_address" Address
               :> ("registrations"
                   :> (Pagination
                       :> (Sorting :> Get '[JSON] [AccountRegistration]))))))
AccountsAPI (AsClientT m)
-> Address -> Paged -> SortOrder -> m [AccountRegistration]
forall route.
AccountsAPI route
-> route
   :- (Summary "Account registration history"
       :> (Description
             "Obtain information about the registrations and deregistrations of a specific account."
           :> (Capture "stake_address" Address
               :> ("registrations"
                   :> (Pagination
                       :> (Sorting :> Get '[JSON] [AccountRegistration]))))))
_accountRegistrations (AccountsAPI (AsClientT m)
 -> Address -> Paged -> SortOrder -> m [AccountRegistration])
-> (Project -> AccountsAPI (AsClientT m))
-> Project
-> Address
-> Paged
-> SortOrder
-> m [AccountRegistration]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Project -> AccountsAPI (AsClientT m)
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> AccountsAPI (AsClientT m)
accountsClient

-- | Obtain information about the registrations and deregistrations of a specific account.
-- Allows custom paging and ordering using 'Paged' and 'SortOrder'.
getAccountRegistrations' :: MonadBlockfrost m => Address -> Paged -> SortOrder -> m [AccountRegistration]
getAccountRegistrations' :: forall (m :: * -> *).
MonadBlockfrost m =>
Address -> Paged -> SortOrder -> m [AccountRegistration]
getAccountRegistrations' Address
a Paged
pg SortOrder
s = (Project -> m [AccountRegistration]) -> m [AccountRegistration]
forall (m :: * -> *) a.
MonadBlockfrost m =>
(Project -> m a) -> m a
go (\Project
p -> Project -> Address -> Paged -> SortOrder -> m [AccountRegistration]
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> Address -> Paged -> SortOrder -> m [AccountRegistration]
getAccountRegistrations_ Project
p Address
a Paged
pg SortOrder
s)

-- | Obtain information about the registrations and deregistrations of a specific account.
--
-- Queries 100 entries. To query all entries use 'Blockfrost.Client.Core.allPages'
-- with principled variant of this function (suffixed with @'@)
-- that accepts 'Paged' argument.
getAccountRegistrations :: MonadBlockfrost m => Address -> m [AccountRegistration]
getAccountRegistrations :: forall (m :: * -> *).
MonadBlockfrost m =>
Address -> m [AccountRegistration]
getAccountRegistrations Address
a = Address -> Paged -> SortOrder -> m [AccountRegistration]
forall (m :: * -> *).
MonadBlockfrost m =>
Address -> Paged -> SortOrder -> m [AccountRegistration]
getAccountRegistrations' Address
a Paged
forall a. Default a => a
def SortOrder
forall a. Default a => a
def

getAccountWithdrawals_ :: MonadBlockfrost m => Project -> Address -> Paged -> SortOrder ->  m [AccountWithdrawal]
getAccountWithdrawals_ :: forall (m :: * -> *).
MonadBlockfrost m =>
Project -> Address -> Paged -> SortOrder -> m [AccountWithdrawal]
getAccountWithdrawals_ = AccountsAPI (AsClientT m)
-> AsClientT m
   :- (Summary "Account withdrawal history"
       :> (Description
             "Obtain information about the withdrawals of a specific account."
           :> (Capture "stake_address" Address
               :> ("withdrawals"
                   :> (Pagination :> (Sorting :> Get '[JSON] [AccountWithdrawal]))))))
AccountsAPI (AsClientT m)
-> Address -> Paged -> SortOrder -> m [AccountWithdrawal]
forall route.
AccountsAPI route
-> route
   :- (Summary "Account withdrawal history"
       :> (Description
             "Obtain information about the withdrawals of a specific account."
           :> (Capture "stake_address" Address
               :> ("withdrawals"
                   :> (Pagination :> (Sorting :> Get '[JSON] [AccountWithdrawal]))))))
_accountWithdrawals (AccountsAPI (AsClientT m)
 -> Address -> Paged -> SortOrder -> m [AccountWithdrawal])
-> (Project -> AccountsAPI (AsClientT m))
-> Project
-> Address
-> Paged
-> SortOrder
-> m [AccountWithdrawal]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Project -> AccountsAPI (AsClientT m)
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> AccountsAPI (AsClientT m)
accountsClient

-- | Obtain information about the withdrawals of a specific account.
-- Allows custom paging and ordering using 'Paged' and 'SortOrder'.
getAccountWithdrawals' :: MonadBlockfrost m => Address -> Paged -> SortOrder -> m [AccountWithdrawal]
getAccountWithdrawals' :: forall (m :: * -> *).
MonadBlockfrost m =>
Address -> Paged -> SortOrder -> m [AccountWithdrawal]
getAccountWithdrawals' Address
a Paged
pg SortOrder
s = (Project -> m [AccountWithdrawal]) -> m [AccountWithdrawal]
forall (m :: * -> *) a.
MonadBlockfrost m =>
(Project -> m a) -> m a
go (\Project
p -> Project -> Address -> Paged -> SortOrder -> m [AccountWithdrawal]
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> Address -> Paged -> SortOrder -> m [AccountWithdrawal]
getAccountWithdrawals_ Project
p Address
a Paged
pg SortOrder
s)

-- | Obtain information about the withdrawals of a specific account.
--
-- Queries 100 entries. To query all entries use 'Blockfrost.Client.Core.allPages'
-- with principled variant of this function (suffixed with @'@)
-- that accepts 'Paged' argument.
getAccountWithdrawals :: MonadBlockfrost m => Address -> m [AccountWithdrawal]
getAccountWithdrawals :: forall (m :: * -> *).
MonadBlockfrost m =>
Address -> m [AccountWithdrawal]
getAccountWithdrawals Address
a = Address -> Paged -> SortOrder -> m [AccountWithdrawal]
forall (m :: * -> *).
MonadBlockfrost m =>
Address -> Paged -> SortOrder -> m [AccountWithdrawal]
getAccountWithdrawals' Address
a Paged
forall a. Default a => a
def SortOrder
forall a. Default a => a
def

getAccountMirs_ :: MonadBlockfrost m => Project -> Address -> Paged -> SortOrder -> m [AccountMir]
getAccountMirs_ :: forall (m :: * -> *).
MonadBlockfrost m =>
Project -> Address -> Paged -> SortOrder -> m [AccountMir]
getAccountMirs_ = AccountsAPI (AsClientT m)
-> AsClientT m
   :- (Summary "Account MIR history"
       :> (Description
             "Obtain information about the MIRs of a specific account."
           :> (Capture "stake_address" Address
               :> ("mirs"
                   :> (Pagination :> (Sorting :> Get '[JSON] [AccountMir]))))))
AccountsAPI (AsClientT m)
-> Address -> Paged -> SortOrder -> m [AccountMir]
forall route.
AccountsAPI route
-> route
   :- (Summary "Account MIR history"
       :> (Description
             "Obtain information about the MIRs of a specific account."
           :> (Capture "stake_address" Address
               :> ("mirs"
                   :> (Pagination :> (Sorting :> Get '[JSON] [AccountMir]))))))
_accountMirs (AccountsAPI (AsClientT m)
 -> Address -> Paged -> SortOrder -> m [AccountMir])
-> (Project -> AccountsAPI (AsClientT m))
-> Project
-> Address
-> Paged
-> SortOrder
-> m [AccountMir]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Project -> AccountsAPI (AsClientT m)
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> AccountsAPI (AsClientT m)
accountsClient

-- | Obtain information about the MIRs of a specific account.
-- Allows custom paging and ordering using 'Paged' and 'SortOrder'.
getAccountMirs' :: MonadBlockfrost m => Address -> Paged -> SortOrder -> m [AccountMir]
getAccountMirs' :: forall (m :: * -> *).
MonadBlockfrost m =>
Address -> Paged -> SortOrder -> m [AccountMir]
getAccountMirs' Address
a Paged
pg SortOrder
s = (Project -> m [AccountMir]) -> m [AccountMir]
forall (m :: * -> *) a.
MonadBlockfrost m =>
(Project -> m a) -> m a
go (\Project
p -> Project -> Address -> Paged -> SortOrder -> m [AccountMir]
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> Address -> Paged -> SortOrder -> m [AccountMir]
getAccountMirs_ Project
p Address
a Paged
pg SortOrder
s)

-- | Obtain information about the MIRs of a specific account.
--
-- Queries 100 entries. To query all entries use 'Blockfrost.Client.Core.allPages'
-- with principled variant of this function (suffixed with @'@)
-- that accepts 'Paged' argument.
getAccountMirs :: MonadBlockfrost m => Address -> m [AccountMir]
getAccountMirs :: forall (m :: * -> *).
MonadBlockfrost m =>
Address -> m [AccountMir]
getAccountMirs Address
a = Address -> Paged -> SortOrder -> m [AccountMir]
forall (m :: * -> *).
MonadBlockfrost m =>
Address -> Paged -> SortOrder -> m [AccountMir]
getAccountMirs' Address
a Paged
forall a. Default a => a
def SortOrder
forall a. Default a => a
def

getAccountAssociatedAddresses_ :: MonadBlockfrost m => Project -> Address -> Paged -> SortOrder -> m [AddressAssociated]
getAccountAssociatedAddresses_ :: forall (m :: * -> *).
MonadBlockfrost m =>
Project -> Address -> Paged -> SortOrder -> m [AddressAssociated]
getAccountAssociatedAddresses_ = AccountsAPI (AsClientT m)
-> AsClientT m
   :- (Summary "Account associated addresses"
       :> (Description
             "Obtain information about the addresses of a specific account."
           :> (Capture "stake_address" Address
               :> ("addresses"
                   :> (Pagination :> (Sorting :> Get '[JSON] [AddressAssociated]))))))
AccountsAPI (AsClientT m)
-> Address -> Paged -> SortOrder -> m [AddressAssociated]
forall route.
AccountsAPI route
-> route
   :- (Summary "Account associated addresses"
       :> (Description
             "Obtain information about the addresses of a specific account."
           :> (Capture "stake_address" Address
               :> ("addresses"
                   :> (Pagination :> (Sorting :> Get '[JSON] [AddressAssociated]))))))
_accountAssociatedAddresses (AccountsAPI (AsClientT m)
 -> Address -> Paged -> SortOrder -> m [AddressAssociated])
-> (Project -> AccountsAPI (AsClientT m))
-> Project
-> Address
-> Paged
-> SortOrder
-> m [AddressAssociated]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Project -> AccountsAPI (AsClientT m)
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> AccountsAPI (AsClientT m)
accountsClient

-- | Obtain information about the addresses of a specific account.
-- Allows custom paging and ordering using 'Paged' and 'SortOrder'.
getAccountAssociatedAddresses' :: MonadBlockfrost m => Address -> Paged -> SortOrder -> m [AddressAssociated]
getAccountAssociatedAddresses' :: forall (m :: * -> *).
MonadBlockfrost m =>
Address -> Paged -> SortOrder -> m [AddressAssociated]
getAccountAssociatedAddresses' Address
a Paged
pg SortOrder
s = (Project -> m [AddressAssociated]) -> m [AddressAssociated]
forall (m :: * -> *) a.
MonadBlockfrost m =>
(Project -> m a) -> m a
go (\Project
p -> Project -> Address -> Paged -> SortOrder -> m [AddressAssociated]
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> Address -> Paged -> SortOrder -> m [AddressAssociated]
getAccountAssociatedAddresses_ Project
p Address
a Paged
pg SortOrder
s)

-- | Obtain information about the addresses of a specific account.
--
-- Queries 100 entries. To query all entries use 'Blockfrost.Client.Core.allPages'
-- with principled variant of this function (suffixed with @'@)
-- that accepts 'Paged' argument.
getAccountAssociatedAddresses :: MonadBlockfrost m => Address -> m [AddressAssociated]
getAccountAssociatedAddresses :: forall (m :: * -> *).
MonadBlockfrost m =>
Address -> m [AddressAssociated]
getAccountAssociatedAddresses Address
a = Address -> Paged -> SortOrder -> m [AddressAssociated]
forall (m :: * -> *).
MonadBlockfrost m =>
Address -> Paged -> SortOrder -> m [AddressAssociated]
getAccountAssociatedAddresses' Address
a Paged
forall a. Default a => a
def SortOrder
forall a. Default a => a
def

getAccountAssociatedAddressesTotal_ :: MonadBlockfrost m => Project -> Address -> m AddressAssociatedTotal
getAccountAssociatedAddressesTotal_ :: forall (m :: * -> *).
MonadBlockfrost m =>
Project -> Address -> m AddressAssociatedTotal
getAccountAssociatedAddressesTotal_ = AccountsAPI (AsClientT m)
-> AsClientT m
   :- (Summary
         "Detailed information about account associated addresses"
       :> (Description
             "Obtain summed details about all addresses associated with a given account. Be careful, as an account could be part of a mangled address and does not necessarily mean the addresses are owned by user as the account."
           :> (Capture "stake_address" Address
               :> ("addresses"
                   :> ("total" :> Get '[JSON] AddressAssociatedTotal)))))
AccountsAPI (AsClientT m) -> Address -> m AddressAssociatedTotal
forall route.
AccountsAPI route
-> route
   :- (Summary
         "Detailed information about account associated addresses"
       :> (Description
             "Obtain summed details about all addresses associated with a given account. Be careful, as an account could be part of a mangled address and does not necessarily mean the addresses are owned by user as the account."
           :> (Capture "stake_address" Address
               :> ("addresses"
                   :> ("total" :> Get '[JSON] AddressAssociatedTotal)))))
_accountAssociatedTotal (AccountsAPI (AsClientT m) -> Address -> m AddressAssociatedTotal)
-> (Project -> AccountsAPI (AsClientT m))
-> Project
-> Address
-> m AddressAssociatedTotal
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Project -> AccountsAPI (AsClientT m)
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> AccountsAPI (AsClientT m)
accountsClient

getAccountAssociatedAddressesTotal :: MonadBlockfrost m => Address -> m AddressAssociatedTotal
getAccountAssociatedAddressesTotal :: forall (m :: * -> *).
MonadBlockfrost m =>
Address -> m AddressAssociatedTotal
getAccountAssociatedAddressesTotal Address
a = (Project -> m AddressAssociatedTotal) -> m AddressAssociatedTotal
forall (m :: * -> *) a.
MonadBlockfrost m =>
(Project -> m a) -> m a
go (Project -> Address -> m AddressAssociatedTotal
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> Address -> m AddressAssociatedTotal
`getAccountAssociatedAddressesTotal_` Address
a)

getAccountAssociatedAssets_ :: MonadBlockfrost m => Project -> Address -> Paged -> SortOrder -> m [Amount]
getAccountAssociatedAssets_ :: forall (m :: * -> *).
MonadBlockfrost m =>
Project -> Address -> Paged -> SortOrder -> m [Amount]
getAccountAssociatedAssets_ = AccountsAPI (AsClientT m)
-> AsClientT m
   :- (Summary "Assets associated with the account addresses"
       :> (Description
             "Obtain information about assets associated with addresses of a specific account."
           :> (Capture "stake_address" Address
               :> ("addresses"
                   :> ("assets"
                       :> (Pagination :> (Sorting :> Get '[JSON] [Amount])))))))
AccountsAPI (AsClientT m)
-> Address -> Paged -> SortOrder -> m [Amount]
forall route.
AccountsAPI route
-> route
   :- (Summary "Assets associated with the account addresses"
       :> (Description
             "Obtain information about assets associated with addresses of a specific account."
           :> (Capture "stake_address" Address
               :> ("addresses"
                   :> ("assets"
                       :> (Pagination :> (Sorting :> Get '[JSON] [Amount])))))))
_accountAssociatedAssets (AccountsAPI (AsClientT m)
 -> Address -> Paged -> SortOrder -> m [Amount])
-> (Project -> AccountsAPI (AsClientT m))
-> Project
-> Address
-> Paged
-> SortOrder
-> m [Amount]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Project -> AccountsAPI (AsClientT m)
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> AccountsAPI (AsClientT m)
accountsClient

-- | Obtain information about assets associated with addresses of a specific account.
-- Allows custom paging and ordering using 'Paged' and 'SortOrder'.
getAccountAssociatedAssets' :: MonadBlockfrost m => Address -> Paged -> SortOrder -> m [Amount]
getAccountAssociatedAssets' :: forall (m :: * -> *).
MonadBlockfrost m =>
Address -> Paged -> SortOrder -> m [Amount]
getAccountAssociatedAssets' Address
a Paged
pg SortOrder
s = (Project -> m [Amount]) -> m [Amount]
forall (m :: * -> *) a.
MonadBlockfrost m =>
(Project -> m a) -> m a
go (\Project
p -> Project -> Address -> Paged -> SortOrder -> m [Amount]
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> Address -> Paged -> SortOrder -> m [Amount]
getAccountAssociatedAssets_ Project
p Address
a Paged
pg SortOrder
s)

-- | Obtain information about assets associated with addresses of a specific account.
--
-- Queries 100 entries. To query all entries use 'Blockfrost.Client.Core.allPages'
-- with principled variant of this function (suffixed with @'@)
-- that accepts 'Paged' argument.
getAccountAssociatedAssets :: MonadBlockfrost m => Address -> m [Amount]
getAccountAssociatedAssets :: forall (m :: * -> *). MonadBlockfrost m => Address -> m [Amount]
getAccountAssociatedAssets Address
a = Address -> Paged -> SortOrder -> m [Amount]
forall (m :: * -> *).
MonadBlockfrost m =>
Address -> Paged -> SortOrder -> m [Amount]
getAccountAssociatedAssets' Address
a Paged
forall a. Default a => a
def SortOrder
forall a. Default a => a
def