{-# LANGUAGE DataKinds #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeOperators #-} module CoinbasePro.Authenticated.API ( accounts , singleAccount , accountHistory , accountHolds , listOrders , getOrder , getClientOrder , placeOrder , cancelOrder , cancelAll , fills , fees , trailingVolume , limits , transfers , transfer , makeDeposit , makeCoinbaseDeposit , cryptoDepositAddress , makeWithdrawal , makeCoinbaseWithdrawal , makeCryptoWithdrawal , withdrawalFeeEstimate , paymentMethods , coinbaseAccounts ) where import Data.Proxy (Proxy (..)) import Data.Time.Clock (UTCTime) import Servant.API (AuthProtect, Capture, JSON, NoContent, QueryParam, QueryParam', QueryParams, ReqBody, Required, (:<|>) (..), (:>)) import Servant.Client import Servant.Client.Core (AuthenticatedRequest) import CoinbasePro.Authenticated.Accounts (Account, AccountHistory, AccountId (..), Fees, Hold, TrailingVolume) import CoinbasePro.Authenticated.CoinbaseAccounts (CoinbaseAccount) import CoinbasePro.Authenticated.Deposit (CoinbaseDepositRequest, CryptoDepositAddress, DepositRequest, DepositResponse) import CoinbasePro.Authenticated.Fills (Fill) import CoinbasePro.Authenticated.Limits (Limits) import CoinbasePro.Authenticated.Orders (Order, PlaceOrderBody (..), Status (..)) import CoinbasePro.Authenticated.Payment (PaymentMethod (..), PaymentMethodId) import CoinbasePro.Authenticated.Request (AuthDelete, AuthGet, AuthPost) import CoinbasePro.Authenticated.Transfer (Transfer, TransferType) import CoinbasePro.Authenticated.Withdrawal (CoinbaseWithdrawalRequest (..), CryptoWithdrawalRequest, CryptoWithdrawalResponse, WithdrawalFeeEstimateResponse, WithdrawalRequest, WithdrawalResponse) import CoinbasePro.Types (ClientOrderId (..), CryptoAddress, CurrencyType, OrderId (..), ProductId (..), ProfileId) type API = "accounts" :> AuthGet [Account] :<|> "accounts" :> Capture "account_id" AccountId :> AuthGet Account :<|> "accounts" :> Capture "account_id" AccountId :> "ledger" :> AuthGet [AccountHistory] :<|> "accounts" :> Capture "account_id" AccountId :> "holds" :> AuthGet [Hold] :<|> "orders" :> QueryParams "status" Status :> QueryParam "product_id" ProductId :> AuthGet [Order] :<|> "orders" :> Capture "order_id" OrderId :> AuthGet Order :<|> "orders" :> Capture "client_oid" ClientOrderId :> AuthGet Order :<|> "orders" :> ReqBody '[JSON] PlaceOrderBody :> AuthPost Order :<|> "orders" :> Capture "order_id" OrderId :> AuthDelete NoContent :<|> "orders" :> QueryParam "product_id" ProductId :> AuthDelete [OrderId] :<|> "fills" :> QueryParam "product_id" ProductId :> QueryParam "order_id" OrderId :> AuthGet [Fill] :<|> "fees" :> AuthGet Fees :<|> "users" :> "self" :> "trailing-volume" :> AuthGet [TrailingVolume] :<|> "users" :> "self" :> "exchange-limits" :> AuthGet Limits :<|> "transfers" :> QueryParam' '[Required] "type" TransferType :> QueryParam "profile_id" ProfileId :> QueryParam "before" UTCTime :> QueryParam "after" UTCTime :> QueryParam "limit" Int :> AuthGet [Transfer] :<|> "transfers" :> Capture "transfer_id" PaymentMethodId :> AuthGet Transfer :<|> "deposits" :> "payment-method" :> ReqBody '[JSON] DepositRequest :> AuthPost DepositResponse :<|> "deposits" :> "coinbase-account" :> ReqBody '[JSON] CoinbaseDepositRequest :> AuthPost DepositResponse :<|> "coinbase-accounts" :> Capture "account_id" AccountId :> "addresses" :> AuthPost CryptoDepositAddress :<|> "withdrawals" :> "payment-method" :> ReqBody '[JSON] WithdrawalRequest :> AuthPost WithdrawalResponse :<|> "withdrawals" :> "coinbase-account" :> ReqBody '[JSON] CoinbaseWithdrawalRequest :> AuthPost WithdrawalResponse :<|> "withdrawals" :> "crypto" :> ReqBody '[JSON] CryptoWithdrawalRequest :> AuthPost CryptoWithdrawalResponse :<|> "withdrawals" :> "fee-estimate" :> QueryParam' '[Required] "currency" CurrencyType :> QueryParam' '[Required] "crypto_address" CryptoAddress :> AuthGet WithdrawalFeeEstimateResponse :<|> "payment-methods" :> AuthGet [PaymentMethod] :<|> "coinbase-accounts" :> AuthGet [CoinbaseAccount] api :: Proxy API api :: Proxy API api = Proxy API forall k (t :: k). Proxy t Proxy accounts :: AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM [Account] singleAccount :: AccountId -> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM Account accountHistory :: AccountId -> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM [AccountHistory] accountHolds :: AccountId -> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM [Hold] listOrders :: [Status] -> Maybe ProductId -> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM [Order] getOrder :: OrderId -> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM Order getClientOrder :: ClientOrderId -> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM Order placeOrder :: PlaceOrderBody -> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM Order cancelOrder :: OrderId -> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM NoContent cancelAll :: Maybe ProductId -> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM [OrderId] fills :: Maybe ProductId -> Maybe OrderId -> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM [Fill] fees :: AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM Fees trailingVolume :: AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM [TrailingVolume] limits :: AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM Limits transfers :: TransferType -> Maybe ProfileId -> Maybe UTCTime -> Maybe UTCTime -> Maybe Int -> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM [Transfer] transfer :: PaymentMethodId -> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM Transfer makeDeposit :: DepositRequest -> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM DepositResponse makeCoinbaseDeposit :: CoinbaseDepositRequest -> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM DepositResponse cryptoDepositAddress :: AccountId -> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM CryptoDepositAddress makeWithdrawal :: WithdrawalRequest -> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM WithdrawalResponse makeCoinbaseWithdrawal :: CoinbaseWithdrawalRequest -> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM WithdrawalResponse makeCryptoWithdrawal :: CryptoWithdrawalRequest -> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM CryptoWithdrawalResponse withdrawalFeeEstimate :: CurrencyType -> CryptoAddress -> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM WithdrawalFeeEstimateResponse paymentMethods :: AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM [PaymentMethod] coinbaseAccounts :: AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM [CoinbaseAccount] AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM [Account] accounts :<|> AccountId -> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM Account singleAccount :<|> AccountId -> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM [AccountHistory] accountHistory :<|> AccountId -> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM [Hold] accountHolds :<|> [Status] -> Maybe ProductId -> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM [Order] listOrders :<|> OrderId -> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM Order getOrder :<|> ClientOrderId -> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM Order getClientOrder :<|> PlaceOrderBody -> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM Order placeOrder :<|> OrderId -> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM NoContent cancelOrder :<|> Maybe ProductId -> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM [OrderId] cancelAll :<|> Maybe ProductId -> Maybe OrderId -> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM [Fill] fills :<|> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM Fees fees :<|> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM [TrailingVolume] trailingVolume :<|> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM Limits limits :<|> TransferType -> Maybe ProfileId -> Maybe UTCTime -> Maybe UTCTime -> Maybe Int -> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM [Transfer] transfers :<|> PaymentMethodId -> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM Transfer transfer :<|> DepositRequest -> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM DepositResponse makeDeposit :<|> CoinbaseDepositRequest -> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM DepositResponse makeCoinbaseDeposit :<|> AccountId -> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM CryptoDepositAddress cryptoDepositAddress :<|> WithdrawalRequest -> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM WithdrawalResponse makeWithdrawal :<|> CoinbaseWithdrawalRequest -> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM WithdrawalResponse makeCoinbaseWithdrawal :<|> CryptoWithdrawalRequest -> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM CryptoWithdrawalResponse makeCryptoWithdrawal :<|> CurrencyType -> CryptoAddress -> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM WithdrawalFeeEstimateResponse withdrawalFeeEstimate :<|> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM [PaymentMethod] paymentMethods :<|> AuthenticatedRequest (AuthProtect "CBAuth") -> ClientM [CoinbaseAccount] coinbaseAccounts = Proxy API -> Client ClientM API forall api. HasClient ClientM api => Proxy api -> Client ClientM api client Proxy API api