1pub enum API {
2 MarketV5(MarketV5),
3 TradeV5(TradeV5),
4 PositionV5(Position),
5 AccountV5(AccountV5),
6 AssetV5(AssetV5),
7 SpotLeverage(SpotLeverage),
8 SpotMargin(SpotMargin),
9}
10
11pub enum WebsocketAPI {
12 PublicSpot,
13 PublicLinear,
14 PublicInverse,
15 Private,
16 TradeStream,
17}
18
19pub enum Public {
20 Spot,
21 Linear,
22 Inverse,
23}
24
25pub enum MarketV5 {
26 Time,
27 Kline,
28 MarkPriceKline,
29 IndexPriceKline,
30 PremiumIndexPriceKline,
31 InstrumentsInfo,
32 OrderBook,
33 Tickers,
34 FundingRate,
35 RecentTrades,
36 OpenInterest,
37 HistoricalVolatility,
38 Insurance,
39 RiskLimit,
40 DeliveryPrice,
41 LongShortRatio,
42}
43
44pub enum TradeV5 {
45 Place,
46 Amend,
47 Cancel,
48 OpenOrders,
49 CancelAll,
50 History,
51 TradeHistory,
52 BatchPlace,
53 BatchAmend,
54 BatchCancel,
55 SpotBorrowCheck,
56 SetDisconnectCancelAll,
57}
58
59pub enum Position {
60 Information,
61 SetLeverage,
62 SetRiskLimit,
63 SetTradingStop,
64 SwitchIsolated,
65 SwitchMode,
66 SetAutoAddMargin,
67 AddOrReduceMargin,
68 ClosedPnl,
69 MovePosition,
70 MovePositionHistory,
71}
72
73pub enum AccountV5 {
74 Balance,
75 UpgradeToUTA,
76 BorrowHistory,
77 RepayLiability,
78 SetCollateral,
79 BatchSetCollateral,
80 CollateralInfo,
81 CoinGreeks,
82 FeeRate,
83 Information,
84 TransactionLog,
85 SetMarginMode,
86 SMPGroupID,
87 SetSpotHedging,
88}
89
90pub enum AssetV5 {
91 CoinExchangeRecord,
92 DeliveryRecord,
93 SettlementRecord,
94 InterTransfer,
95 QueryTransferList,
96 SaveTransferSubmember,
97 UniversalTransfer,
98 QueryUniversalTransferList,
99 QueryTransferCoinList,
100 QueryTransferSubmemberList,
101 QueryAccountCoinBalance,
102 QueryAssetInfo,
103 QueryAllowedList,
104 QueryRecord,
105 QueryInfo,
106 QueryAsset,
107 Withdraw,
108 CancelWithdraw,
109 Deposit,
110 QuerySubmemberAddress,
111 OrderRecord,
112}
113
114pub enum SpotLeverage {
115 Info,
116 MarketInfo,
117 Purchase,
118 Redeem,
119 OrderRecord,
120}
121
122pub enum SpotMargin {
123 SwitchMode,
124 SetLeverage,
125 MarginCoinInfo,
126 State,
127 BorrowableCoin,
128 LoanInfo,
129 LoanAccountInfo,
130 Borrow,
131 Repay,
132 BorrowOrderDetail,
133 RepayOrderDetail,
134 ClassicMarginToggle,
135}
136
137impl AsRef<str> for API {
138 fn as_ref(&self) -> &str {
139 match self {
140 API::MarketV5(route) => match route {
141 MarketV5::Time => "/v5/market/time",
142 MarketV5::Insurance => "/v5/market/insurance",
143 MarketV5::Kline => "/v5/market/kline",
144 MarketV5::MarkPriceKline => "/v5/market/mark-price-kline",
145 MarketV5::IndexPriceKline => "/v5/market/index-price-kline",
146 MarketV5::PremiumIndexPriceKline => "/v5/market/premium-index-price-kline",
147 MarketV5::InstrumentsInfo => "/v5/market/instruments-info",
148 MarketV5::OrderBook => "/v5/market/orderbook",
149 MarketV5::Tickers => "/v5/market/tickers",
150 MarketV5::RecentTrades => "/v5/market/recent-trade",
151 MarketV5::FundingRate => "/v5/market/funding/history",
152 MarketV5::OpenInterest => "/v5/market/open-interest",
153 MarketV5::HistoricalVolatility => "/v5/market/historical-volatility",
154 MarketV5::RiskLimit => "/v5/market/risk-limit",
155 MarketV5::DeliveryPrice => "/v5/market/delivery-price",
156 MarketV5::LongShortRatio => "/v5/market/account-ratio",
157 },
158 API::TradeV5(route) => match route {
159 TradeV5::Place => "/v5/order/create",
160 TradeV5::Amend => "/v5/order/amend",
161 TradeV5::Cancel => "/v5/order/cancel",
162 TradeV5::OpenOrders => "/v5/order/realtime",
163 TradeV5::CancelAll => "/v5/order/cancel-all",
164 TradeV5::History => "/v5/order/history",
165 TradeV5::TradeHistory => "/v5/execution/list",
166 TradeV5::BatchPlace => "/v5/order/create-batch",
167 TradeV5::BatchAmend => "/v5/order/amend-batch",
168 TradeV5::BatchCancel => "/v5/order/cancel-batch",
169 TradeV5::SpotBorrowCheck => "/v5/order/spot-borrow-check",
170 TradeV5::SetDisconnectCancelAll => "/v5/order/disconnected-cancel-all",
171 },
172 API::PositionV5(route) => match route {
173 Position::Information => "/v5/position/list",
174 Position::SetLeverage => "/v5/position/set-leverage",
175 Position::SwitchIsolated => "/v5/position/switch-isolated",
176 Position::SwitchMode => "/v5/position/switch-mode",
177 Position::SetRiskLimit => "/v5/position/set-risk-limit",
178 Position::SetTradingStop => "/v5/position/trading-stop",
179 Position::SetAutoAddMargin => "/v5/position/set-auto-add-margin",
180 Position::AddOrReduceMargin => "/v5/position/add-margin",
181 Position::ClosedPnl => "/v5/position/closed-pnl",
182 Position::MovePosition => "/v5/position/move-positions",
183 Position::MovePositionHistory => "/v5/position/move-history",
184 },
185 API::AccountV5(route) => match route {
186 AccountV5::Balance => "/v5/account/wallet-balance",
187 AccountV5::UpgradeToUTA => "/v5/account/upgrade-to-uta",
188 AccountV5::BorrowHistory => "/v5/account/borrow-history",
189 AccountV5::RepayLiability => "/v5/account/quick-repayment",
190 AccountV5::SetCollateral => "/v5/account/set-collateral-switch",
191 AccountV5::BatchSetCollateral => "/v5/account/set-collateral-switch-batch",
192 AccountV5::CollateralInfo => "/v5/account/collateral-info",
193 AccountV5::CoinGreeks => "/v5/asset/coin-greeks",
194 AccountV5::FeeRate => "/v5/account/fee-rate",
195 AccountV5::Information => "/v5/account/info",
196 AccountV5::TransactionLog => "/v5/account/transaction-log",
197 AccountV5::SMPGroupID => "/v5/account/smp-group",
198 AccountV5::SetMarginMode => "/v5/aaccount/set-margin-mode",
199 AccountV5::SetSpotHedging => "/v5/account/set-hedging-mode",
200 },
201 API::AssetV5(route) => match route {
202 AssetV5::CoinExchangeRecord => "/v5/asset/exchange/order-record",
203 AssetV5::DeliveryRecord => "/v5/asset/delivery-record",
204 AssetV5::SettlementRecord => "/v5/asset/settlement-record",
205 AssetV5::QueryAssetInfo => "/v5/asset/transfer/query-asset-info",
206 AssetV5::QueryAccountCoinBalance => "/v5/asset/transfer/query-account-coins-balance",
207 AssetV5::QueryTransferCoinList => "/v5/asset/transfer/query-transfer-coin-list",
208 AssetV5::InterTransfer => "/v5/asset/transfer/inter-transfer",
209 AssetV5::QueryTransferList => "/v5/asset/transfer/query-inter-transfer-list",
210 AssetV5::QueryTransferSubmemberList => "/v5/asset/transfer/query-sub-member-list",
211 AssetV5::UniversalTransfer => "/v5/asset/transfer/universal-transfer",
212 AssetV5::QueryUniversalTransferList => "/v5/asset/transfer/query-universal-transfer-list",
213 AssetV5::QueryAllowedList => "/v5/asset/deposit/query-allowed-list",
214 AssetV5::Withdraw => "/v5/asset/withdraw/create",
215 AssetV5::CancelWithdraw => "/v5/asset/withdraw/cancel",
216 AssetV5::QueryInfo => "/v5/asset/coin/query-info",
217 AssetV5::QueryRecord => "/v5/asset/deposit/query-record",
218 AssetV5::QuerySubmemberAddress => "/v5/asset/deposit/query-sub-member-address",
219 _ => {
220 todo!("Asset route not implemented");
221 }
222 },
223 API::SpotLeverage(route) => match route {
224 SpotLeverage::Info => "/v5/spot-lever-token/info",
225 SpotLeverage::MarketInfo => "v5/spot-lever-token/reference",
226 SpotLeverage::Purchase => "/v5/spot-lever-token/purchase",
227 SpotLeverage::Redeem => "/v5/spot-lever-token/redeem",
228 SpotLeverage::OrderRecord => "/v5/spot-lever-token/order-record",
229 },
230 API::SpotMargin(route) => match route {
231 SpotMargin::SwitchMode => "/v5/spot-margin-trade/switch-mode",
232 SpotMargin::SetLeverage => "/v5/spot-margin-trade/set-leverage",
233 SpotMargin::State => "/v5/spot-margin-trade/state",
234 SpotMargin::MarginCoinInfo => "/v5/spot-cross-margin-trade/pledge-token",
235 SpotMargin::BorrowableCoin => "/v5/spot-cross-margin-trade/borrow-token",
236 SpotMargin::LoanInfo => "/v5/spot-cross-margin-trade/loan",
237 SpotMargin::LoanAccountInfo => "/v5/spot-cross-margin-trade/account",
238 SpotMargin::Borrow => "/v5/spot-cross-margin-trade/loan",
239 SpotMargin::Repay => "/v5/spot-cross-margin-trade/repay",
240 SpotMargin::BorrowOrderDetail => "/v5/spot-cross-margin-trade/orders",
241 SpotMargin::RepayOrderDetail => "/v5/spot-cross-margin-trade/repay-history",
242 SpotMargin::ClassicMarginToggle => "/v5/spot-cross-margin-trade/switch",
243 },
244 }
245 }
246}