mirror of
https://github.com/discountry/ritmex-bot.git
synced 2026-09-10 08:48:07 +00:00
352 lines
15 KiB
Python
352 lines
15 KiB
Python
from enum import Enum
|
|
|
|
from dacite import Config, from_dict
|
|
|
|
from . import grvt_raw_types as types
|
|
from .grvt_raw_base import GrvtApiConfig, GrvtError, GrvtRawSyncBase
|
|
|
|
# mypy: disable-error-code="no-any-return"
|
|
|
|
|
|
class GrvtRawSync(GrvtRawSyncBase):
|
|
def __init__(self, config: GrvtApiConfig):
|
|
super().__init__(config)
|
|
self.md_rpc = self.env.market_data.rpc_endpoint
|
|
self.td_rpc = self.env.trade_data.rpc_endpoint
|
|
|
|
def get_instrument_v1(
|
|
self, req: types.ApiGetInstrumentRequest
|
|
) -> types.ApiGetInstrumentResponse | GrvtError:
|
|
resp = self._post(False, self.md_rpc + "/full/v1/instrument", req)
|
|
if resp.get("code"):
|
|
return GrvtError(**resp)
|
|
return from_dict(types.ApiGetInstrumentResponse, resp, Config(cast=[Enum]))
|
|
|
|
def get_all_instruments_v1(
|
|
self, req: types.ApiGetAllInstrumentsRequest
|
|
) -> types.ApiGetAllInstrumentsResponse | GrvtError:
|
|
resp = self._post(False, self.md_rpc + "/full/v1/all_instruments", req)
|
|
if resp.get("code"):
|
|
return GrvtError(**resp)
|
|
return from_dict(types.ApiGetAllInstrumentsResponse, resp, Config(cast=[Enum]))
|
|
|
|
def get_filtered_instruments_v1(
|
|
self, req: types.ApiGetFilteredInstrumentsRequest
|
|
) -> types.ApiGetFilteredInstrumentsResponse | GrvtError:
|
|
resp = self._post(False, self.md_rpc + "/full/v1/instruments", req)
|
|
if resp.get("code"):
|
|
return GrvtError(**resp)
|
|
return from_dict(
|
|
types.ApiGetFilteredInstrumentsResponse, resp, Config(cast=[Enum])
|
|
)
|
|
|
|
def get_currency_v1(
|
|
self, req: types.ApiGetCurrencyRequest
|
|
) -> types.ApiGetCurrencyResponse | GrvtError:
|
|
resp = self._post(False, self.md_rpc + "/full/v1/currency", req)
|
|
if resp.get("code"):
|
|
return GrvtError(**resp)
|
|
return from_dict(types.ApiGetCurrencyResponse, resp, Config(cast=[Enum]))
|
|
|
|
def mini_ticker_v1(
|
|
self, req: types.ApiMiniTickerRequest
|
|
) -> types.ApiMiniTickerResponse | GrvtError:
|
|
resp = self._post(False, self.md_rpc + "/full/v1/mini", req)
|
|
if resp.get("code"):
|
|
return GrvtError(**resp)
|
|
return from_dict(types.ApiMiniTickerResponse, resp, Config(cast=[Enum]))
|
|
|
|
def ticker_v1(
|
|
self, req: types.ApiTickerRequest
|
|
) -> types.ApiTickerResponse | GrvtError:
|
|
resp = self._post(False, self.md_rpc + "/full/v1/ticker", req)
|
|
if resp.get("code"):
|
|
return GrvtError(**resp)
|
|
return from_dict(types.ApiTickerResponse, resp, Config(cast=[Enum]))
|
|
|
|
def orderbook_levels_v1(
|
|
self, req: types.ApiOrderbookLevelsRequest
|
|
) -> types.ApiOrderbookLevelsResponse | GrvtError:
|
|
resp = self._post(False, self.md_rpc + "/full/v1/book", req)
|
|
if resp.get("code"):
|
|
return GrvtError(**resp)
|
|
return from_dict(types.ApiOrderbookLevelsResponse, resp, Config(cast=[Enum]))
|
|
|
|
def trade_v1(self, req: types.ApiTradeRequest) -> types.ApiTradeResponse | GrvtError:
|
|
resp = self._post(False, self.md_rpc + "/full/v1/trade", req)
|
|
if resp.get("code"):
|
|
return GrvtError(**resp)
|
|
return from_dict(types.ApiTradeResponse, resp, Config(cast=[Enum]))
|
|
|
|
def trade_history_v1(
|
|
self, req: types.ApiTradeHistoryRequest
|
|
) -> types.ApiTradeHistoryResponse | GrvtError:
|
|
resp = self._post(False, self.md_rpc + "/full/v1/trade_history", req)
|
|
if resp.get("code"):
|
|
return GrvtError(**resp)
|
|
return from_dict(types.ApiTradeHistoryResponse, resp, Config(cast=[Enum]))
|
|
|
|
def candlestick_v1(
|
|
self, req: types.ApiCandlestickRequest
|
|
) -> types.ApiCandlestickResponse | GrvtError:
|
|
resp = self._post(False, self.md_rpc + "/full/v1/kline", req)
|
|
if resp.get("code"):
|
|
return GrvtError(**resp)
|
|
return from_dict(types.ApiCandlestickResponse, resp, Config(cast=[Enum]))
|
|
|
|
def funding_rate_v1(
|
|
self, req: types.ApiFundingRateRequest
|
|
) -> types.ApiFundingRateResponse | GrvtError:
|
|
resp = self._post(False, self.md_rpc + "/full/v1/funding", req)
|
|
if resp.get("code"):
|
|
return GrvtError(**resp)
|
|
return from_dict(types.ApiFundingRateResponse, resp, Config(cast=[Enum]))
|
|
|
|
def create_order_v1(
|
|
self, req: types.ApiCreateOrderRequest
|
|
) -> types.ApiCreateOrderResponse | GrvtError:
|
|
resp = self._post(True, self.td_rpc + "/full/v1/create_order", req)
|
|
if resp.get("code"):
|
|
return GrvtError(**resp)
|
|
return from_dict(types.ApiCreateOrderResponse, resp, Config(cast=[Enum]))
|
|
|
|
def cancel_order_v1(
|
|
self, req: types.ApiCancelOrderRequest
|
|
) -> types.AckResponse | GrvtError:
|
|
resp = self._post(True, self.td_rpc + "/full/v1/cancel_order", req)
|
|
if resp.get("code"):
|
|
return GrvtError(**resp)
|
|
return from_dict(types.AckResponse, resp, Config(cast=[Enum]))
|
|
|
|
def cancel_all_orders_v1(
|
|
self, req: types.ApiCancelAllOrdersRequest
|
|
) -> types.AckResponse | GrvtError:
|
|
resp = self._post(True, self.td_rpc + "/full/v1/cancel_all_orders", req)
|
|
if resp.get("code"):
|
|
return GrvtError(**resp)
|
|
return from_dict(types.AckResponse, resp, Config(cast=[Enum]))
|
|
|
|
def get_order_v1(
|
|
self, req: types.ApiGetOrderRequest
|
|
) -> types.ApiGetOrderResponse | GrvtError:
|
|
resp = self._post(True, self.td_rpc + "/full/v1/order", req)
|
|
if resp.get("code"):
|
|
return GrvtError(**resp)
|
|
return from_dict(types.ApiGetOrderResponse, resp, Config(cast=[Enum]))
|
|
|
|
def open_orders_v1(
|
|
self, req: types.ApiOpenOrdersRequest
|
|
) -> types.ApiOpenOrdersResponse | GrvtError:
|
|
resp = self._post(True, self.td_rpc + "/full/v1/open_orders", req)
|
|
if resp.get("code"):
|
|
return GrvtError(**resp)
|
|
return from_dict(types.ApiOpenOrdersResponse, resp, Config(cast=[Enum]))
|
|
|
|
def order_history_v1(
|
|
self, req: types.ApiOrderHistoryRequest
|
|
) -> types.ApiOrderHistoryResponse | GrvtError:
|
|
resp = self._post(True, self.td_rpc + "/full/v1/order_history", req)
|
|
if resp.get("code"):
|
|
return GrvtError(**resp)
|
|
return from_dict(types.ApiOrderHistoryResponse, resp, Config(cast=[Enum]))
|
|
|
|
def cancel_on_disconnect_v1(
|
|
self, req: types.ApiCancelOnDisconnectRequest
|
|
) -> types.AckResponse | GrvtError:
|
|
resp = self._post(True, self.td_rpc + "/full/v1/cancel_on_disconnect", req)
|
|
if resp.get("code"):
|
|
return GrvtError(**resp)
|
|
return from_dict(types.AckResponse, resp, Config(cast=[Enum]))
|
|
|
|
def fill_history_v1(
|
|
self, req: types.ApiFillHistoryRequest
|
|
) -> types.ApiFillHistoryResponse | GrvtError:
|
|
resp = self._post(True, self.td_rpc + "/full/v1/fill_history", req)
|
|
if resp.get("code"):
|
|
return GrvtError(**resp)
|
|
return from_dict(types.ApiFillHistoryResponse, resp, Config(cast=[Enum]))
|
|
|
|
def positions_v1(
|
|
self, req: types.ApiPositionsRequest
|
|
) -> types.ApiPositionsResponse | GrvtError:
|
|
resp = self._post(True, self.td_rpc + "/full/v1/positions", req)
|
|
if resp.get("code"):
|
|
return GrvtError(**resp)
|
|
return from_dict(types.ApiPositionsResponse, resp, Config(cast=[Enum]))
|
|
|
|
def funding_payment_history_v1(
|
|
self, req: types.ApiFundingPaymentHistoryRequest
|
|
) -> types.ApiFundingPaymentHistoryResponse | GrvtError:
|
|
resp = self._post(True, self.td_rpc + "/full/v1/funding_payment_history", req)
|
|
if resp.get("code"):
|
|
return GrvtError(**resp)
|
|
return from_dict(
|
|
types.ApiFundingPaymentHistoryResponse, resp, Config(cast=[Enum])
|
|
)
|
|
|
|
def deposit_history_v1(
|
|
self, req: types.ApiDepositHistoryRequest
|
|
) -> types.ApiDepositHistoryResponse | GrvtError:
|
|
resp = self._post(True, self.td_rpc + "/full/v1/deposit_history", req)
|
|
if resp.get("code"):
|
|
return GrvtError(**resp)
|
|
return from_dict(types.ApiDepositHistoryResponse, resp, Config(cast=[Enum]))
|
|
|
|
def transfer_v1(
|
|
self, req: types.ApiTransferRequest
|
|
) -> types.ApiTransferResponse | GrvtError:
|
|
resp = self._post(True, self.td_rpc + "/full/v1/transfer", req)
|
|
if resp.get("code"):
|
|
return GrvtError(**resp)
|
|
return from_dict(types.ApiTransferResponse, resp, Config(cast=[Enum]))
|
|
|
|
def transfer_history_v1(
|
|
self, req: types.ApiTransferHistoryRequest
|
|
) -> types.ApiTransferHistoryResponse | GrvtError:
|
|
resp = self._post(True, self.td_rpc + "/full/v1/transfer_history", req)
|
|
if resp.get("code"):
|
|
return GrvtError(**resp)
|
|
return from_dict(types.ApiTransferHistoryResponse, resp, Config(cast=[Enum]))
|
|
|
|
def withdrawal_v1(
|
|
self, req: types.ApiWithdrawalRequest
|
|
) -> types.AckResponse | GrvtError:
|
|
resp = self._post(True, self.td_rpc + "/full/v1/withdrawal", req)
|
|
if resp.get("code"):
|
|
return GrvtError(**resp)
|
|
return from_dict(types.AckResponse, resp, Config(cast=[Enum]))
|
|
|
|
def withdrawal_history_v1(
|
|
self, req: types.ApiWithdrawalHistoryRequest
|
|
) -> types.ApiWithdrawalHistoryResponse | GrvtError:
|
|
resp = self._post(True, self.td_rpc + "/full/v1/withdrawal_history", req)
|
|
if resp.get("code"):
|
|
return GrvtError(**resp)
|
|
return from_dict(types.ApiWithdrawalHistoryResponse, resp, Config(cast=[Enum]))
|
|
|
|
def sub_account_summary_v1(
|
|
self, req: types.ApiSubAccountSummaryRequest
|
|
) -> types.ApiSubAccountSummaryResponse | GrvtError:
|
|
resp = self._post(True, self.td_rpc + "/full/v1/account_summary", req)
|
|
if resp.get("code"):
|
|
return GrvtError(**resp)
|
|
return from_dict(types.ApiSubAccountSummaryResponse, resp, Config(cast=[Enum]))
|
|
|
|
def sub_account_history_v1(
|
|
self, req: types.ApiSubAccountHistoryRequest
|
|
) -> types.ApiSubAccountHistoryResponse | GrvtError:
|
|
resp = self._post(True, self.td_rpc + "/full/v1/account_history", req)
|
|
if resp.get("code"):
|
|
return GrvtError(**resp)
|
|
return from_dict(types.ApiSubAccountHistoryResponse, resp, Config(cast=[Enum]))
|
|
|
|
def aggregated_account_summary_v1(
|
|
self, req: types.EmptyRequest
|
|
) -> types.ApiAggregatedAccountSummaryResponse | GrvtError:
|
|
resp = self._post(True, self.td_rpc + "/full/v1/aggregated_account_summary", req)
|
|
if resp.get("code"):
|
|
return GrvtError(**resp)
|
|
return from_dict(
|
|
types.ApiAggregatedAccountSummaryResponse, resp, Config(cast=[Enum])
|
|
)
|
|
|
|
def funding_account_summary_v1(
|
|
self, req: types.EmptyRequest
|
|
) -> types.ApiFundingAccountSummaryResponse | GrvtError:
|
|
resp = self._post(True, self.td_rpc + "/full/v1/funding_account_summary", req)
|
|
if resp.get("code"):
|
|
return GrvtError(**resp)
|
|
return from_dict(
|
|
types.ApiFundingAccountSummaryResponse, resp, Config(cast=[Enum])
|
|
)
|
|
|
|
def set_derisk_mm_ratio_v1(
|
|
self, req: types.ApiSetDeriskToMaintenanceMarginRatioRequest
|
|
) -> types.ApiSetDeriskToMaintenanceMarginRatioResponse | GrvtError:
|
|
resp = self._post(True, self.td_rpc + "/full/v1/set_derisk_mm_ratio", req)
|
|
if resp.get("code"):
|
|
return GrvtError(**resp)
|
|
return from_dict(
|
|
types.ApiSetDeriskToMaintenanceMarginRatioResponse, resp, Config(cast=[Enum])
|
|
)
|
|
|
|
def get_all_initial_leverage_v1(
|
|
self, req: types.ApiGetAllInitialLeverageRequest
|
|
) -> types.ApiGetAllInitialLeverageResponse | GrvtError:
|
|
resp = self._post(True, self.td_rpc + "/full/v1/get_all_initial_leverage", req)
|
|
if resp.get("code"):
|
|
return GrvtError(**resp)
|
|
return from_dict(
|
|
types.ApiGetAllInitialLeverageResponse, resp, Config(cast=[Enum])
|
|
)
|
|
|
|
def set_initial_leverage_v1(
|
|
self, req: types.ApiSetInitialLeverageRequest
|
|
) -> types.ApiSetInitialLeverageResponse | GrvtError:
|
|
resp = self._post(True, self.td_rpc + "/full/v1/set_initial_leverage", req)
|
|
if resp.get("code"):
|
|
return GrvtError(**resp)
|
|
return from_dict(types.ApiSetInitialLeverageResponse, resp, Config(cast=[Enum]))
|
|
|
|
def vault_burn_tokens_v1(
|
|
self, req: types.ApiVaultBurnTokensRequest
|
|
) -> types.AckResponse | GrvtError:
|
|
resp = self._post(True, self.td_rpc + "/full/v1/vault_burn_tokens", req)
|
|
if resp.get("code"):
|
|
return GrvtError(**resp)
|
|
return from_dict(types.AckResponse, resp, Config(cast=[Enum]))
|
|
|
|
def vault_invest_v1(
|
|
self, req: types.ApiVaultInvestRequest
|
|
) -> types.AckResponse | GrvtError:
|
|
resp = self._post(True, self.td_rpc + "/full/v1/vault_invest", req)
|
|
if resp.get("code"):
|
|
return GrvtError(**resp)
|
|
return from_dict(types.AckResponse, resp, Config(cast=[Enum]))
|
|
|
|
def vault_investor_summary_v1(
|
|
self, req: types.ApiVaultInvestorSummaryRequest
|
|
) -> types.ApiVaultInvestorSummaryResponse | GrvtError:
|
|
resp = self._post(True, self.td_rpc + "/full/v1/vault_investor_summary", req)
|
|
if resp.get("code"):
|
|
return GrvtError(**resp)
|
|
return from_dict(types.ApiVaultInvestorSummaryResponse, resp, Config(cast=[Enum]))
|
|
|
|
def vault_redeem_v1(
|
|
self, req: types.ApiVaultRedeemRequest
|
|
) -> types.AckResponse | GrvtError:
|
|
resp = self._post(True, self.td_rpc + "/full/v1/vault_redeem", req)
|
|
if resp.get("code"):
|
|
return GrvtError(**resp)
|
|
return from_dict(types.AckResponse, resp, Config(cast=[Enum]))
|
|
|
|
def vault_redeem_cancel_v1(
|
|
self, req: types.ApiVaultRedeemCancelRequest
|
|
) -> types.AckResponse | GrvtError:
|
|
resp = self._post(True, self.td_rpc + "/full/v1/vault_redeem_cancel", req)
|
|
if resp.get("code"):
|
|
return GrvtError(**resp)
|
|
return from_dict(types.AckResponse, resp, Config(cast=[Enum]))
|
|
|
|
def vault_redemption_queue_v1(
|
|
self, req: types.ApiVaultViewRedemptionQueueRequest
|
|
) -> types.ApiVaultViewRedemptionQueueResponse | GrvtError:
|
|
resp = self._post(True, self.td_rpc + "/full/v1/vault_view_redemption_queue", req)
|
|
if resp.get("code"):
|
|
return GrvtError(**resp)
|
|
return from_dict(
|
|
types.ApiVaultViewRedemptionQueueResponse, resp, Config(cast=[Enum])
|
|
)
|
|
|
|
def query_vault_manager_investor_history_v1(
|
|
self, req: types.ApiQueryVaultManagerInvestorHistoryRequest
|
|
) -> types.ApiQueryVaultManagerInvestorHistoryResponse | GrvtError:
|
|
resp = self._post(
|
|
True, self.td_rpc + "/full/v1/vault_manager_investor_history", req
|
|
)
|
|
if resp.get("code"):
|
|
return GrvtError(**resp)
|
|
return from_dict(
|
|
types.ApiQueryVaultManagerInvestorHistoryResponse, resp, Config(cast=[Enum])
|
|
)
|