-- | Governance queries

module Blockfrost.Client.Cardano.Governance
  ( getDReps
  , getDReps'
  , getDRep
  , getDRepDelegators
  , getDRepDelegators'
  , getDRepMetadata
  , getDRepUpdates
  , getDRepUpdates'
  , getDRepVotes
  , getDRepVotes'
  , getProposals
  , getProposals'
  , getProposal
  , getParamProposal
  , getWithdrawalProposal
  , getProposalVotes
  , getProposalVotes'
  , getProposalMetadata
  ) where

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

governanceClient :: MonadBlockfrost m => Project -> GovernanceAPI (AsClientT m)
governanceClient :: forall (m :: * -> *).
MonadBlockfrost m =>
Project -> GovernanceAPI (AsClientT m)
governanceClient = ((((Paged -> SortOrder -> m [DRep])
   :<|> ((DRepId -> m DRepInfo)
         :<|> (DRepId -> Paged -> SortOrder -> m [DRepDelegator])))
  :<|> ((DRepId -> m DRepMeta)
        :<|> ((DRepId -> Paged -> SortOrder -> m [DRepUpdate])
              :<|> (DRepId -> Paged -> SortOrder -> m [DRepVote]))))
 :<|> (((Paged -> SortOrder -> m [Proposal])
        :<|> ((TxHash -> Integer -> m ProposalInfo)
              :<|> (TxHash -> Integer -> m ParamProposal)))
       :<|> ((TxHash -> Integer -> m [WithdrawalProposal])
             :<|> ((TxHash -> Integer -> Paged -> SortOrder -> m [ProposalVote])
                   :<|> (TxHash -> Integer -> m ProposalMeta)))))
-> GovernanceAPI (AsClientT m)
ToServant GovernanceAPI (AsClientT m)
-> GovernanceAPI (AsClientT m)
forall {k} (routes :: k -> *) (mode :: k).
GenericServant routes mode =>
ToServant routes mode -> routes mode
fromServant (((((Paged -> SortOrder -> m [DRep])
    :<|> ((DRepId -> m DRepInfo)
          :<|> (DRepId -> Paged -> SortOrder -> m [DRepDelegator])))
   :<|> ((DRepId -> m DRepMeta)
         :<|> ((DRepId -> Paged -> SortOrder -> m [DRepUpdate])
               :<|> (DRepId -> Paged -> SortOrder -> m [DRepVote]))))
  :<|> (((Paged -> SortOrder -> m [Proposal])
         :<|> ((TxHash -> Integer -> m ProposalInfo)
               :<|> (TxHash -> Integer -> m ParamProposal)))
        :<|> ((TxHash -> Integer -> m [WithdrawalProposal])
              :<|> ((TxHash -> Integer -> Paged -> SortOrder -> m [ProposalVote])
                    :<|> (TxHash -> Integer -> m ProposalMeta)))))
 -> GovernanceAPI (AsClientT m))
-> (Project
    -> (((Paged -> SortOrder -> m [DRep])
         :<|> ((DRepId -> m DRepInfo)
               :<|> (DRepId -> Paged -> SortOrder -> m [DRepDelegator])))
        :<|> ((DRepId -> m DRepMeta)
              :<|> ((DRepId -> Paged -> SortOrder -> m [DRepUpdate])
                    :<|> (DRepId -> Paged -> SortOrder -> m [DRepVote]))))
       :<|> (((Paged -> SortOrder -> m [Proposal])
              :<|> ((TxHash -> Integer -> m ProposalInfo)
                    :<|> (TxHash -> Integer -> m ParamProposal)))
             :<|> ((TxHash -> Integer -> m [WithdrawalProposal])
                   :<|> ((TxHash -> Integer -> Paged -> SortOrder -> m [ProposalVote])
                         :<|> (TxHash -> Integer -> m ProposalMeta)))))
-> Project
-> GovernanceAPI (AsClientT m)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CardanoAPI (AsClientT m)
-> (((Paged -> SortOrder -> m [DRep])
     :<|> ((DRepId -> m DRepInfo)
           :<|> (DRepId -> Paged -> SortOrder -> m [DRepDelegator])))
    :<|> ((DRepId -> m DRepMeta)
          :<|> ((DRepId -> Paged -> SortOrder -> m [DRepUpdate])
                :<|> (DRepId -> Paged -> SortOrder -> m [DRepVote]))))
   :<|> (((Paged -> SortOrder -> m [Proposal])
          :<|> ((TxHash -> Integer -> m ProposalInfo)
                :<|> (TxHash -> Integer -> m ParamProposal)))
         :<|> ((TxHash -> Integer -> m [WithdrawalProposal])
               :<|> ((TxHash -> Integer -> Paged -> SortOrder -> m [ProposalVote])
                     :<|> (TxHash -> Integer -> m ProposalMeta))))
CardanoAPI (AsClientT m)
-> AsClientT m
   :- ("governance"
       :> (Tag "Cardano \187 Governance" :> ToServantApi GovernanceAPI))
forall route.
CardanoAPI route
-> route
   :- ("governance"
       :> (Tag "Cardano \187 Governance" :> ToServantApi GovernanceAPI))
_governance (CardanoAPI (AsClientT m)
 -> (((Paged -> SortOrder -> m [DRep])
      :<|> ((DRepId -> m DRepInfo)
            :<|> (DRepId -> Paged -> SortOrder -> m [DRepDelegator])))
     :<|> ((DRepId -> m DRepMeta)
           :<|> ((DRepId -> Paged -> SortOrder -> m [DRepUpdate])
                 :<|> (DRepId -> Paged -> SortOrder -> m [DRepVote]))))
    :<|> (((Paged -> SortOrder -> m [Proposal])
           :<|> ((TxHash -> Integer -> m ProposalInfo)
                 :<|> (TxHash -> Integer -> m ParamProposal)))
          :<|> ((TxHash -> Integer -> m [WithdrawalProposal])
                :<|> ((TxHash -> Integer -> Paged -> SortOrder -> m [ProposalVote])
                      :<|> (TxHash -> Integer -> m ProposalMeta)))))
-> (Project -> CardanoAPI (AsClientT m))
-> Project
-> (((Paged -> SortOrder -> m [DRep])
     :<|> ((DRepId -> m DRepInfo)
           :<|> (DRepId -> Paged -> SortOrder -> m [DRepDelegator])))
    :<|> ((DRepId -> m DRepMeta)
          :<|> ((DRepId -> Paged -> SortOrder -> m [DRepUpdate])
                :<|> (DRepId -> Paged -> SortOrder -> m [DRepVote]))))
   :<|> (((Paged -> SortOrder -> m [Proposal])
          :<|> ((TxHash -> Integer -> m ProposalInfo)
                :<|> (TxHash -> Integer -> m ParamProposal)))
         :<|> ((TxHash -> Integer -> m [WithdrawalProposal])
               :<|> ((TxHash -> Integer -> Paged -> SortOrder -> m [ProposalVote])
                     :<|> (TxHash -> Integer -> m ProposalMeta))))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Project -> CardanoAPI (AsClientT m)
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> CardanoAPI (AsClientT m)
cardanoClient

getDReps_ :: MonadBlockfrost m => Project -> Paged -> SortOrder -> m [DRep]
getDReps_ :: forall (m :: * -> *).
MonadBlockfrost m =>
Project -> Paged -> SortOrder -> m [DRep]
getDReps_ = GovernanceAPI (AsClientT m)
-> AsClientT m
   :- (Summary "Delegate Representatives (DReps)"
       :> (Description
             "Return the information about Delegate Representatives (DReps)."
           :> ("dreps" :> (Pagination :> (Sorting :> Get '[JSON] [DRep])))))
GovernanceAPI (AsClientT m) -> Paged -> SortOrder -> m [DRep]
forall route.
GovernanceAPI route
-> route
   :- (Summary "Delegate Representatives (DReps)"
       :> (Description
             "Return the information about Delegate Representatives (DReps)."
           :> ("dreps" :> (Pagination :> (Sorting :> Get '[JSON] [DRep])))))
_dreps (GovernanceAPI (AsClientT m) -> Paged -> SortOrder -> m [DRep])
-> (Project -> GovernanceAPI (AsClientT m))
-> Project
-> Paged
-> SortOrder
-> m [DRep]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Project -> GovernanceAPI (AsClientT m)
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> GovernanceAPI (AsClientT m)
governanceClient

-- | Return the information about Delegate Representatives (DReps).
-- Allows custom paging and ordering using 'Paged' and 'SortOrder'.
getDReps' :: MonadBlockfrost m => Paged -> SortOrder -> m [DRep]
getDReps' :: forall (m :: * -> *).
MonadBlockfrost m =>
Paged -> SortOrder -> m [DRep]
getDReps' Paged
pg SortOrder
s = (Project -> m [DRep]) -> m [DRep]
forall (m :: * -> *) a.
MonadBlockfrost m =>
(Project -> m a) -> m a
go (\Project
p -> Project -> Paged -> SortOrder -> m [DRep]
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> Paged -> SortOrder -> m [DRep]
getDReps_ Project
p Paged
pg SortOrder
s)

-- | Return the information about Delegate Representatives (DReps).
--
-- Queries 100 entries. To query all entries use 'Blockfrost.Client.Core.allPages'
-- with principled variant of this function (suffixed with @'@)
-- that accepts 'Paged' argument.
getDReps :: MonadBlockfrost m => m [DRep]
getDReps :: forall (m :: * -> *). MonadBlockfrost m => m [DRep]
getDReps = Paged -> SortOrder -> m [DRep]
forall (m :: * -> *).
MonadBlockfrost m =>
Paged -> SortOrder -> m [DRep]
getDReps' Paged
forall a. Default a => a
def SortOrder
forall a. Default a => a
def

getDRep_ :: MonadBlockfrost m => Project -> DRepId -> m DRepInfo
getDRep_ :: forall (m :: * -> *).
MonadBlockfrost m =>
Project -> DRepId -> m DRepInfo
getDRep_ = GovernanceAPI (AsClientT m)
-> AsClientT m
   :- (Summary "Specific DRep"
       :> (Description "DRep information."
           :> ("dreps"
               :> (Capture "drep_id" DRepId :> Get '[JSON] DRepInfo))))
GovernanceAPI (AsClientT m) -> DRepId -> m DRepInfo
forall route.
GovernanceAPI route
-> route
   :- (Summary "Specific DRep"
       :> (Description "DRep information."
           :> ("dreps"
               :> (Capture "drep_id" DRepId :> Get '[JSON] DRepInfo))))
_drep (GovernanceAPI (AsClientT m) -> DRepId -> m DRepInfo)
-> (Project -> GovernanceAPI (AsClientT m))
-> Project
-> DRepId
-> m DRepInfo
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Project -> GovernanceAPI (AsClientT m)
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> GovernanceAPI (AsClientT m)
governanceClient

-- | Return the information about specific Delegate Representative (DRep).
getDRep :: MonadBlockfrost m => DRepId -> m DRepInfo
getDRep :: forall (m :: * -> *). MonadBlockfrost m => DRepId -> m DRepInfo
getDRep DRepId
d = (Project -> m DRepInfo) -> m DRepInfo
forall (m :: * -> *) a.
MonadBlockfrost m =>
(Project -> m a) -> m a
go (Project -> DRepId -> m DRepInfo
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> DRepId -> m DRepInfo
`getDRep_` DRepId
d)

getDRepDelegators_ :: MonadBlockfrost m => Project -> DRepId -> Paged -> SortOrder -> m [DRepDelegator]
getDRepDelegators_ :: forall (m :: * -> *).
MonadBlockfrost m =>
Project -> DRepId -> Paged -> SortOrder -> m [DRepDelegator]
getDRepDelegators_ = GovernanceAPI (AsClientT m)
-> AsClientT m
   :- (Summary "DRep delegators"
       :> (Description "List of Drep delegators."
           :> ("dreps"
               :> (Capture "drep_id" DRepId
                   :> ("delegators"
                       :> (Pagination :> (Sorting :> Get '[JSON] [DRepDelegator])))))))
GovernanceAPI (AsClientT m)
-> DRepId -> Paged -> SortOrder -> m [DRepDelegator]
forall route.
GovernanceAPI route
-> route
   :- (Summary "DRep delegators"
       :> (Description "List of Drep delegators."
           :> ("dreps"
               :> (Capture "drep_id" DRepId
                   :> ("delegators"
                       :> (Pagination :> (Sorting :> Get '[JSON] [DRepDelegator])))))))
_drepDelegators (GovernanceAPI (AsClientT m)
 -> DRepId -> Paged -> SortOrder -> m [DRepDelegator])
-> (Project -> GovernanceAPI (AsClientT m))
-> Project
-> DRepId
-> Paged
-> SortOrder
-> m [DRepDelegator]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Project -> GovernanceAPI (AsClientT m)
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> GovernanceAPI (AsClientT m)
governanceClient

-- | Get a list of DRep delegators
-- Allows custom paging and ordering using 'Paged' and 'SortOrder'.
getDRepDelegators' :: MonadBlockfrost m => DRepId -> Paged -> SortOrder -> m [DRepDelegator]
getDRepDelegators' :: forall (m :: * -> *).
MonadBlockfrost m =>
DRepId -> Paged -> SortOrder -> m [DRepDelegator]
getDRepDelegators' DRepId
d Paged
pg SortOrder
s = (Project -> m [DRepDelegator]) -> m [DRepDelegator]
forall (m :: * -> *) a.
MonadBlockfrost m =>
(Project -> m a) -> m a
go (\Project
p -> Project -> DRepId -> Paged -> SortOrder -> m [DRepDelegator]
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> DRepId -> Paged -> SortOrder -> m [DRepDelegator]
getDRepDelegators_ Project
p DRepId
d Paged
pg SortOrder
s)

-- | Get a list of DRep delegators
--
-- Queries 100 entries. To query all entries use 'Blockfrost.Client.Core.allPages'
-- with principled variant of this function (suffixed with @'@)
-- that accepts 'Paged' argument.
getDRepDelegators :: MonadBlockfrost m => DRepId -> m [DRepDelegator]
getDRepDelegators :: forall (m :: * -> *).
MonadBlockfrost m =>
DRepId -> m [DRepDelegator]
getDRepDelegators DRepId
d = DRepId -> Paged -> SortOrder -> m [DRepDelegator]
forall (m :: * -> *).
MonadBlockfrost m =>
DRepId -> Paged -> SortOrder -> m [DRepDelegator]
getDRepDelegators' DRepId
d Paged
forall a. Default a => a
def SortOrder
forall a. Default a => a
def

getDRepMetadata_ :: MonadBlockfrost m => Project -> DRepId -> m DRepMeta
getDRepMetadata_ :: forall (m :: * -> *).
MonadBlockfrost m =>
Project -> DRepId -> m DRepMeta
getDRepMetadata_ = GovernanceAPI (AsClientT m)
-> AsClientT m
   :- (Summary "DRep metadata"
       :> (Description "DRep metadata information."
           :> ("dreps"
               :> (Capture "drep_id" DRepId
                   :> ("metadata" :> Get '[JSON] DRepMeta)))))
GovernanceAPI (AsClientT m) -> DRepId -> m DRepMeta
forall route.
GovernanceAPI route
-> route
   :- (Summary "DRep metadata"
       :> (Description "DRep metadata information."
           :> ("dreps"
               :> (Capture "drep_id" DRepId
                   :> ("metadata" :> Get '[JSON] DRepMeta)))))
_drepMetadata (GovernanceAPI (AsClientT m) -> DRepId -> m DRepMeta)
-> (Project -> GovernanceAPI (AsClientT m))
-> Project
-> DRepId
-> m DRepMeta
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Project -> GovernanceAPI (AsClientT m)
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> GovernanceAPI (AsClientT m)
governanceClient

-- | Get DRep metadata information.
getDRepMetadata :: MonadBlockfrost m => DRepId -> m DRepMeta
getDRepMetadata :: forall (m :: * -> *). MonadBlockfrost m => DRepId -> m DRepMeta
getDRepMetadata DRepId
d = (Project -> m DRepMeta) -> m DRepMeta
forall (m :: * -> *) a.
MonadBlockfrost m =>
(Project -> m a) -> m a
go (Project -> DRepId -> m DRepMeta
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> DRepId -> m DRepMeta
`getDRepMetadata_` DRepId
d)

getDRepUpdates_ :: MonadBlockfrost m => Project -> DRepId -> Paged -> SortOrder -> m [DRepUpdate]
getDRepUpdates_ :: forall (m :: * -> *).
MonadBlockfrost m =>
Project -> DRepId -> Paged -> SortOrder -> m [DRepUpdate]
getDRepUpdates_ = GovernanceAPI (AsClientT m)
-> AsClientT m
   :- (Summary "DRep updates"
       :> (Description "List of certificate updates to the DRep."
           :> ("dreps"
               :> (Capture "drep_id" DRepId
                   :> ("updates"
                       :> (Pagination :> (Sorting :> Get '[JSON] [DRepUpdate])))))))
GovernanceAPI (AsClientT m)
-> DRepId -> Paged -> SortOrder -> m [DRepUpdate]
forall route.
GovernanceAPI route
-> route
   :- (Summary "DRep updates"
       :> (Description "List of certificate updates to the DRep."
           :> ("dreps"
               :> (Capture "drep_id" DRepId
                   :> ("updates"
                       :> (Pagination :> (Sorting :> Get '[JSON] [DRepUpdate])))))))
_drepUpdates (GovernanceAPI (AsClientT m)
 -> DRepId -> Paged -> SortOrder -> m [DRepUpdate])
-> (Project -> GovernanceAPI (AsClientT m))
-> Project
-> DRepId
-> Paged
-> SortOrder
-> m [DRepUpdate]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Project -> GovernanceAPI (AsClientT m)
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> GovernanceAPI (AsClientT m)
governanceClient

-- | Get a list of certificate updates to the DRep.
-- Allows custom paging and ordering using 'Paged' and 'SortOrder'.
getDRepUpdates' :: MonadBlockfrost m => DRepId -> Paged -> SortOrder -> m [DRepUpdate]
getDRepUpdates' :: forall (m :: * -> *).
MonadBlockfrost m =>
DRepId -> Paged -> SortOrder -> m [DRepUpdate]
getDRepUpdates' DRepId
d Paged
pg SortOrder
s = (Project -> m [DRepUpdate]) -> m [DRepUpdate]
forall (m :: * -> *) a.
MonadBlockfrost m =>
(Project -> m a) -> m a
go (\Project
p -> Project -> DRepId -> Paged -> SortOrder -> m [DRepUpdate]
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> DRepId -> Paged -> SortOrder -> m [DRepUpdate]
getDRepUpdates_ Project
p DRepId
d Paged
pg SortOrder
s)

-- | Get a list of certificate updates to the DRep.
--
-- Queries 100 entries. To query all entries use 'Blockfrost.Client.Core.allPages'
-- with principled variant of this function (suffixed with @'@)
-- that accepts 'Paged' argument.
getDRepUpdates :: MonadBlockfrost m => DRepId -> m [DRepUpdate]
getDRepUpdates :: forall (m :: * -> *). MonadBlockfrost m => DRepId -> m [DRepUpdate]
getDRepUpdates DRepId
d = DRepId -> Paged -> SortOrder -> m [DRepUpdate]
forall (m :: * -> *).
MonadBlockfrost m =>
DRepId -> Paged -> SortOrder -> m [DRepUpdate]
getDRepUpdates' DRepId
d Paged
forall a. Default a => a
def SortOrder
forall a. Default a => a
def

getDRepVotes_ :: MonadBlockfrost m => Project -> DRepId -> Paged -> SortOrder -> m [DRepVote]
getDRepVotes_ :: forall (m :: * -> *).
MonadBlockfrost m =>
Project -> DRepId -> Paged -> SortOrder -> m [DRepVote]
getDRepVotes_ = GovernanceAPI (AsClientT m)
-> AsClientT m
   :- (Summary "DRep votes"
       :> (Description "History of DReps votes."
           :> ("dreps"
               :> (Capture "drep_id" DRepId
                   :> ("votes"
                       :> (Pagination :> (Sorting :> Get '[JSON] [DRepVote])))))))
GovernanceAPI (AsClientT m)
-> DRepId -> Paged -> SortOrder -> m [DRepVote]
forall route.
GovernanceAPI route
-> route
   :- (Summary "DRep votes"
       :> (Description "History of DReps votes."
           :> ("dreps"
               :> (Capture "drep_id" DRepId
                   :> ("votes"
                       :> (Pagination :> (Sorting :> Get '[JSON] [DRepVote])))))))
_drepVotes (GovernanceAPI (AsClientT m)
 -> DRepId -> Paged -> SortOrder -> m [DRepVote])
-> (Project -> GovernanceAPI (AsClientT m))
-> Project
-> DRepId
-> Paged
-> SortOrder
-> m [DRepVote]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Project -> GovernanceAPI (AsClientT m)
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> GovernanceAPI (AsClientT m)
governanceClient

-- | Get a history of DReps votes.
-- Allows custom paging and ordering using 'Paged' and 'SortOrder'.
getDRepVotes' :: MonadBlockfrost m => DRepId -> Paged -> SortOrder -> m [DRepVote]
getDRepVotes' :: forall (m :: * -> *).
MonadBlockfrost m =>
DRepId -> Paged -> SortOrder -> m [DRepVote]
getDRepVotes' DRepId
d Paged
pg SortOrder
s = (Project -> m [DRepVote]) -> m [DRepVote]
forall (m :: * -> *) a.
MonadBlockfrost m =>
(Project -> m a) -> m a
go (\Project
p -> Project -> DRepId -> Paged -> SortOrder -> m [DRepVote]
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> DRepId -> Paged -> SortOrder -> m [DRepVote]
getDRepVotes_ Project
p DRepId
d Paged
pg SortOrder
s)

-- | Get a history of DReps votes.
--
-- Queries 100 entries. To query all entries use 'Blockfrost.Client.Core.allPages'
-- with principled variant of this function (suffixed with @'@)
-- that accepts 'Paged' argument.
getDRepVotes :: MonadBlockfrost m => DRepId -> m [DRepVote]
getDRepVotes :: forall (m :: * -> *). MonadBlockfrost m => DRepId -> m [DRepVote]
getDRepVotes DRepId
d = DRepId -> Paged -> SortOrder -> m [DRepVote]
forall (m :: * -> *).
MonadBlockfrost m =>
DRepId -> Paged -> SortOrder -> m [DRepVote]
getDRepVotes' DRepId
d Paged
forall a. Default a => a
def SortOrder
forall a. Default a => a
def

getProposals_ :: MonadBlockfrost m => Project -> Paged -> SortOrder -> m [Proposal]
getProposals_ :: forall (m :: * -> *).
MonadBlockfrost m =>
Project -> Paged -> SortOrder -> m [Proposal]
getProposals_ = GovernanceAPI (AsClientT m)
-> AsClientT m
   :- (Summary "Proposals"
       :> (Description "List of proposals."
           :> ("proposals"
               :> (Pagination :> (Sorting :> Get '[JSON] [Proposal])))))
GovernanceAPI (AsClientT m) -> Paged -> SortOrder -> m [Proposal]
forall route.
GovernanceAPI route
-> route
   :- (Summary "Proposals"
       :> (Description "List of proposals."
           :> ("proposals"
               :> (Pagination :> (Sorting :> Get '[JSON] [Proposal])))))
_proposals (GovernanceAPI (AsClientT m) -> Paged -> SortOrder -> m [Proposal])
-> (Project -> GovernanceAPI (AsClientT m))
-> Project
-> Paged
-> SortOrder
-> m [Proposal]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Project -> GovernanceAPI (AsClientT m)
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> GovernanceAPI (AsClientT m)
governanceClient

-- | Get a history of DReps proposals.
-- Allows custom paging and ordering using 'Paged' and 'SortOrder'.
getProposals' :: MonadBlockfrost m => Paged -> SortOrder -> m [Proposal]
getProposals' :: forall (m :: * -> *).
MonadBlockfrost m =>
Paged -> SortOrder -> m [Proposal]
getProposals' Paged
pg SortOrder
s = (Project -> m [Proposal]) -> m [Proposal]
forall (m :: * -> *) a.
MonadBlockfrost m =>
(Project -> m a) -> m a
go (\Project
p -> Project -> Paged -> SortOrder -> m [Proposal]
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> Paged -> SortOrder -> m [Proposal]
getProposals_ Project
p Paged
pg SortOrder
s)

-- | Get a history of DReps proposals.
--
-- Queries 100 entries. To query all entries use 'Blockfrost.Client.Core.allPages'
-- with principled variant of this function (suffixed with @'@)
-- that accepts 'Paged' argument.
getProposals :: MonadBlockfrost m => m [Proposal]
getProposals :: forall (m :: * -> *). MonadBlockfrost m => m [Proposal]
getProposals = Paged -> SortOrder -> m [Proposal]
forall (m :: * -> *).
MonadBlockfrost m =>
Paged -> SortOrder -> m [Proposal]
getProposals' Paged
forall a. Default a => a
def SortOrder
forall a. Default a => a
def

getProposal_ :: MonadBlockfrost m => Project -> TxHash -> Integer -> m ProposalInfo
getProposal_ :: forall (m :: * -> *).
MonadBlockfrost m =>
Project -> TxHash -> Integer -> m ProposalInfo
getProposal_ = GovernanceAPI (AsClientT m)
-> AsClientT m
   :- (Summary "Specific proposal"
       :> (Description "Proposal details."
           :> ("proposals"
               :> (Capture "hash" TxHash
                   :> (Capture "cert_index" Integer :> Get '[JSON] ProposalInfo)))))
GovernanceAPI (AsClientT m) -> TxHash -> Integer -> m ProposalInfo
forall route.
GovernanceAPI route
-> route
   :- (Summary "Specific proposal"
       :> (Description "Proposal details."
           :> ("proposals"
               :> (Capture "hash" TxHash
                   :> (Capture "cert_index" Integer :> Get '[JSON] ProposalInfo)))))
_proposal (GovernanceAPI (AsClientT m)
 -> TxHash -> Integer -> m ProposalInfo)
-> (Project -> GovernanceAPI (AsClientT m))
-> Project
-> TxHash
-> Integer
-> m ProposalInfo
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Project -> GovernanceAPI (AsClientT m)
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> GovernanceAPI (AsClientT m)
governanceClient

-- | Get a proposal details.
getProposal :: MonadBlockfrost m => TxHash -> Integer -> m ProposalInfo
getProposal :: forall (m :: * -> *).
MonadBlockfrost m =>
TxHash -> Integer -> m ProposalInfo
getProposal TxHash
txHash Integer
certIdx = (Project -> m ProposalInfo) -> m ProposalInfo
forall (m :: * -> *) a.
MonadBlockfrost m =>
(Project -> m a) -> m a
go (\Project
p -> Project -> TxHash -> Integer -> m ProposalInfo
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> TxHash -> Integer -> m ProposalInfo
getProposal_ Project
p TxHash
txHash Integer
certIdx)

getParamProposal_ :: MonadBlockfrost m => Project -> TxHash -> Integer -> m ParamProposal
getParamProposal_ :: forall (m :: * -> *).
MonadBlockfrost m =>
Project -> TxHash -> Integer -> m ParamProposal
getParamProposal_ = GovernanceAPI (AsClientT m)
-> AsClientT m
   :- (Summary "Specific parameters proposal"
       :> (Description "Parameter proposal details."
           :> ("proposals"
               :> (Capture "hash" TxHash
                   :> (Capture "cert_index" Integer
                       :> ("parameters" :> Get '[JSON] ParamProposal))))))
GovernanceAPI (AsClientT m) -> TxHash -> Integer -> m ParamProposal
forall route.
GovernanceAPI route
-> route
   :- (Summary "Specific parameters proposal"
       :> (Description "Parameter proposal details."
           :> ("proposals"
               :> (Capture "hash" TxHash
                   :> (Capture "cert_index" Integer
                       :> ("parameters" :> Get '[JSON] ParamProposal))))))
_paramProposal (GovernanceAPI (AsClientT m)
 -> TxHash -> Integer -> m ParamProposal)
-> (Project -> GovernanceAPI (AsClientT m))
-> Project
-> TxHash
-> Integer
-> m ParamProposal
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Project -> GovernanceAPI (AsClientT m)
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> GovernanceAPI (AsClientT m)
governanceClient

-- | Get a parameter proposal details.
getParamProposal :: MonadBlockfrost m => TxHash -> Integer -> m ParamProposal
getParamProposal :: forall (m :: * -> *).
MonadBlockfrost m =>
TxHash -> Integer -> m ParamProposal
getParamProposal TxHash
txHash Integer
certIdx = (Project -> m ParamProposal) -> m ParamProposal
forall (m :: * -> *) a.
MonadBlockfrost m =>
(Project -> m a) -> m a
go (\Project
p -> Project -> TxHash -> Integer -> m ParamProposal
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> TxHash -> Integer -> m ParamProposal
getParamProposal_ Project
p TxHash
txHash Integer
certIdx)

getWithdrawalProposal_ :: MonadBlockfrost m => Project -> TxHash -> Integer -> m [WithdrawalProposal]
getWithdrawalProposal_ :: forall (m :: * -> *).
MonadBlockfrost m =>
Project -> TxHash -> Integer -> m [WithdrawalProposal]
getWithdrawalProposal_ = GovernanceAPI (AsClientT m)
-> AsClientT m
   :- (Summary "Specific withdrawals proposal"
       :> (Description "Withdrawals proposal details."
           :> ("proposals"
               :> (Capture "hash" TxHash
                   :> (Capture "cert_index" Integer
                       :> ("withdrawals" :> Get '[JSON] [WithdrawalProposal]))))))
GovernanceAPI (AsClientT m)
-> TxHash -> Integer -> m [WithdrawalProposal]
forall route.
GovernanceAPI route
-> route
   :- (Summary "Specific withdrawals proposal"
       :> (Description "Withdrawals proposal details."
           :> ("proposals"
               :> (Capture "hash" TxHash
                   :> (Capture "cert_index" Integer
                       :> ("withdrawals" :> Get '[JSON] [WithdrawalProposal]))))))
_withdrawalProposal (GovernanceAPI (AsClientT m)
 -> TxHash -> Integer -> m [WithdrawalProposal])
-> (Project -> GovernanceAPI (AsClientT m))
-> Project
-> TxHash
-> Integer
-> m [WithdrawalProposal]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Project -> GovernanceAPI (AsClientT m)
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> GovernanceAPI (AsClientT m)
governanceClient

-- | Get a witdhrawal proposal details.
getWithdrawalProposal :: MonadBlockfrost m => TxHash -> Integer -> m [WithdrawalProposal]
getWithdrawalProposal :: forall (m :: * -> *).
MonadBlockfrost m =>
TxHash -> Integer -> m [WithdrawalProposal]
getWithdrawalProposal TxHash
txHash Integer
certIdx = (Project -> m [WithdrawalProposal]) -> m [WithdrawalProposal]
forall (m :: * -> *) a.
MonadBlockfrost m =>
(Project -> m a) -> m a
go (\Project
p -> Project -> TxHash -> Integer -> m [WithdrawalProposal]
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> TxHash -> Integer -> m [WithdrawalProposal]
getWithdrawalProposal_ Project
p TxHash
txHash Integer
certIdx)

getProposalVotes_ :: MonadBlockfrost m => Project -> TxHash -> Integer -> Paged -> SortOrder -> m [ProposalVote]
getProposalVotes_ :: forall (m :: * -> *).
MonadBlockfrost m =>
Project
-> TxHash -> Integer -> Paged -> SortOrder -> m [ProposalVote]
getProposalVotes_ = GovernanceAPI (AsClientT m)
-> AsClientT m
   :- (Summary "Proposal votes"
       :> (Description "History of proposal votes."
           :> ("proposals"
               :> (Capture "hash" TxHash
                   :> (Capture "cert_index" Integer
                       :> ("votes"
                           :> (Pagination :> (Sorting :> Get '[JSON] [ProposalVote]))))))))
GovernanceAPI (AsClientT m)
-> TxHash -> Integer -> Paged -> SortOrder -> m [ProposalVote]
forall route.
GovernanceAPI route
-> route
   :- (Summary "Proposal votes"
       :> (Description "History of proposal votes."
           :> ("proposals"
               :> (Capture "hash" TxHash
                   :> (Capture "cert_index" Integer
                       :> ("votes"
                           :> (Pagination :> (Sorting :> Get '[JSON] [ProposalVote]))))))))
_proposalVotes (GovernanceAPI (AsClientT m)
 -> TxHash -> Integer -> Paged -> SortOrder -> m [ProposalVote])
-> (Project -> GovernanceAPI (AsClientT m))
-> Project
-> TxHash
-> Integer
-> Paged
-> SortOrder
-> m [ProposalVote]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Project -> GovernanceAPI (AsClientT m)
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> GovernanceAPI (AsClientT m)
governanceClient

-- | Get a history of DReps proposals.
-- Allows custom paging and ordering using 'Paged' and 'SortOrder'.
getProposalVotes' :: MonadBlockfrost m => TxHash -> Integer -> Paged -> SortOrder -> m [ProposalVote]
getProposalVotes' :: forall (m :: * -> *).
MonadBlockfrost m =>
TxHash -> Integer -> Paged -> SortOrder -> m [ProposalVote]
getProposalVotes' TxHash
txHash Integer
certIdx Paged
pg SortOrder
s = (Project -> m [ProposalVote]) -> m [ProposalVote]
forall (m :: * -> *) a.
MonadBlockfrost m =>
(Project -> m a) -> m a
go (\Project
p -> Project
-> TxHash -> Integer -> Paged -> SortOrder -> m [ProposalVote]
forall (m :: * -> *).
MonadBlockfrost m =>
Project
-> TxHash -> Integer -> Paged -> SortOrder -> m [ProposalVote]
getProposalVotes_ Project
p TxHash
txHash Integer
certIdx Paged
pg SortOrder
s)

-- | Get a history of DReps proposals.
--
-- Queries 100 entries. To query all entries use 'Blockfrost.Client.Core.allPages'
-- with principled variant of this function (suffixed with @'@)
-- that accepts 'Paged' argument.
getProposalVotes :: MonadBlockfrost m => TxHash -> Integer -> m [ProposalVote]
getProposalVotes :: forall (m :: * -> *).
MonadBlockfrost m =>
TxHash -> Integer -> m [ProposalVote]
getProposalVotes TxHash
txHash Integer
certIdx = TxHash -> Integer -> Paged -> SortOrder -> m [ProposalVote]
forall (m :: * -> *).
MonadBlockfrost m =>
TxHash -> Integer -> Paged -> SortOrder -> m [ProposalVote]
getProposalVotes' TxHash
txHash Integer
certIdx Paged
forall a. Default a => a
def SortOrder
forall a. Default a => a
def

getProposalMetadata_ :: MonadBlockfrost m => Project -> TxHash -> Integer -> m ProposalMeta
getProposalMetadata_ :: forall (m :: * -> *).
MonadBlockfrost m =>
Project -> TxHash -> Integer -> m ProposalMeta
getProposalMetadata_ = GovernanceAPI (AsClientT m)
-> AsClientT m
   :- (Summary "Specific proposal metadata"
       :> (Description "Proposal metadata information."
           :> ("proposals"
               :> (Capture "hash" TxHash
                   :> (Capture "cert_index" Integer
                       :> ("metadata" :> Get '[JSON] ProposalMeta))))))
GovernanceAPI (AsClientT m) -> TxHash -> Integer -> m ProposalMeta
forall route.
GovernanceAPI route
-> route
   :- (Summary "Specific proposal metadata"
       :> (Description "Proposal metadata information."
           :> ("proposals"
               :> (Capture "hash" TxHash
                   :> (Capture "cert_index" Integer
                       :> ("metadata" :> Get '[JSON] ProposalMeta))))))
_proposalMeta (GovernanceAPI (AsClientT m)
 -> TxHash -> Integer -> m ProposalMeta)
-> (Project -> GovernanceAPI (AsClientT m))
-> Project
-> TxHash
-> Integer
-> m ProposalMeta
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Project -> GovernanceAPI (AsClientT m)
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> GovernanceAPI (AsClientT m)
governanceClient

-- | Get a parameter proposal details.
getProposalMetadata :: MonadBlockfrost m => TxHash -> Integer -> m ProposalMeta
getProposalMetadata :: forall (m :: * -> *).
MonadBlockfrost m =>
TxHash -> Integer -> m ProposalMeta
getProposalMetadata TxHash
txHash Integer
certIdx = (Project -> m ProposalMeta) -> m ProposalMeta
forall (m :: * -> *) a.
MonadBlockfrost m =>
(Project -> m a) -> m a
go (\Project
p -> Project -> TxHash -> Integer -> m ProposalMeta
forall (m :: * -> *).
MonadBlockfrost m =>
Project -> TxHash -> Integer -> m ProposalMeta
getProposalMetadata_ Project
p TxHash
txHash Integer
certIdx)