kucoin-api 0.0.3 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. package/README.md +219 -828
  2. package/dist/cjs/FuturesClient.d.ts +246 -0
  3. package/dist/cjs/FuturesClient.js +261 -0
  4. package/dist/cjs/FuturesClient.js.map +1 -0
  5. package/dist/cjs/SpotClient.d.ts +692 -0
  6. package/dist/cjs/SpotClient.js +745 -0
  7. package/dist/cjs/SpotClient.js.map +1 -0
  8. package/dist/cjs/WebsocketClient.d.ts +77 -0
  9. package/dist/cjs/WebsocketClient.js +337 -0
  10. package/dist/cjs/WebsocketClient.js.map +1 -0
  11. package/dist/cjs/index.d.ts +22 -0
  12. package/dist/cjs/index.js +39 -0
  13. package/dist/cjs/index.js.map +1 -0
  14. package/dist/cjs/lib/BaseRestClient.d.ts +42 -0
  15. package/dist/cjs/lib/BaseRestClient.js +268 -0
  16. package/dist/cjs/lib/BaseRestClient.js.map +1 -0
  17. package/dist/cjs/lib/BaseWSClient.d.ts +168 -0
  18. package/dist/cjs/lib/BaseWSClient.js +622 -0
  19. package/dist/cjs/lib/BaseWSClient.js.map +1 -0
  20. package/dist/cjs/lib/misc-util.d.ts +1 -0
  21. package/dist/cjs/lib/misc-util.js +8 -0
  22. package/dist/cjs/lib/misc-util.js.map +1 -0
  23. package/dist/cjs/lib/requestUtils.d.ts +35 -0
  24. package/dist/cjs/lib/requestUtils.js +54 -0
  25. package/dist/cjs/lib/requestUtils.js.map +1 -0
  26. package/dist/cjs/lib/webCryptoAPI.d.ts +10 -0
  27. package/dist/cjs/lib/webCryptoAPI.js +57 -0
  28. package/dist/cjs/lib/webCryptoAPI.js.map +1 -0
  29. package/dist/cjs/lib/websocket/WsStore.d.ts +63 -0
  30. package/dist/cjs/lib/websocket/WsStore.js +254 -0
  31. package/dist/cjs/lib/websocket/WsStore.js.map +1 -0
  32. package/dist/cjs/lib/websocket/WsStore.types.d.ts +50 -0
  33. package/dist/cjs/lib/websocket/WsStore.types.js +14 -0
  34. package/dist/cjs/lib/websocket/WsStore.types.js.map +1 -0
  35. package/dist/cjs/lib/websocket/logger.d.ts +6 -0
  36. package/dist/cjs/lib/websocket/logger.js +16 -0
  37. package/dist/cjs/lib/websocket/logger.js.map +1 -0
  38. package/dist/cjs/lib/websocket/websocket-util.d.ts +30 -0
  39. package/dist/cjs/lib/websocket/websocket-util.js +19 -0
  40. package/dist/cjs/lib/websocket/websocket-util.js.map +1 -0
  41. package/dist/cjs/package.json +3 -0
  42. package/dist/cjs/types/request/futures.types.d.ts +183 -0
  43. package/dist/cjs/types/request/futures.types.js +7 -0
  44. package/dist/cjs/types/request/futures.types.js.map +1 -0
  45. package/dist/cjs/types/request/spot-account.d.ts +56 -0
  46. package/dist/cjs/types/request/spot-account.js +3 -0
  47. package/dist/cjs/types/request/spot-account.js.map +1 -0
  48. package/dist/cjs/types/request/spot-earn.d.ts +27 -0
  49. package/dist/cjs/types/request/spot-earn.js +8 -0
  50. package/dist/cjs/types/request/spot-earn.js.map +1 -0
  51. package/dist/cjs/types/request/spot-funding.d.ts +88 -0
  52. package/dist/cjs/types/request/spot-funding.js +10 -0
  53. package/dist/cjs/types/request/spot-funding.js.map +1 -0
  54. package/dist/cjs/types/request/spot-margin-trading.d.ts +169 -0
  55. package/dist/cjs/types/request/spot-margin-trading.js +10 -0
  56. package/dist/cjs/types/request/spot-margin-trading.js.map +1 -0
  57. package/dist/cjs/types/request/spot-trading.d.ts +214 -0
  58. package/dist/cjs/types/request/spot-trading.js +10 -0
  59. package/dist/cjs/types/request/spot-trading.js.map +1 -0
  60. package/dist/cjs/types/response/futures.types.d.ts +501 -0
  61. package/dist/cjs/types/response/futures.types.js +7 -0
  62. package/dist/cjs/types/response/futures.types.js.map +1 -0
  63. package/dist/cjs/types/response/shared.types.d.ts +9 -0
  64. package/dist/cjs/types/response/shared.types.js +3 -0
  65. package/dist/cjs/types/response/shared.types.js.map +1 -0
  66. package/dist/cjs/types/response/spot-account.d.ts +140 -0
  67. package/dist/cjs/types/response/spot-account.js +3 -0
  68. package/dist/cjs/types/response/spot-account.js.map +1 -0
  69. package/dist/cjs/types/response/spot-earn.d.ts +74 -0
  70. package/dist/cjs/types/response/spot-earn.js +8 -0
  71. package/dist/cjs/types/response/spot-earn.js.map +1 -0
  72. package/dist/cjs/types/response/spot-funding.d.ts +176 -0
  73. package/dist/cjs/types/response/spot-funding.js +10 -0
  74. package/dist/cjs/types/response/spot-funding.js.map +1 -0
  75. package/dist/cjs/types/response/spot-margin-trading.d.ts +257 -0
  76. package/dist/cjs/types/response/spot-margin-trading.js +10 -0
  77. package/dist/cjs/types/response/spot-margin-trading.js.map +1 -0
  78. package/dist/cjs/types/response/spot-trading.d.ts +388 -0
  79. package/dist/cjs/types/response/spot-trading.js +10 -0
  80. package/dist/cjs/types/response/spot-trading.js.map +1 -0
  81. package/dist/cjs/types/response/spot-vip.d.ts +38 -0
  82. package/dist/cjs/types/response/spot-vip.js +10 -0
  83. package/dist/cjs/types/response/spot-vip.js.map +1 -0
  84. package/dist/cjs/types/response/ws.d.ts +11 -0
  85. package/dist/cjs/types/response/ws.js +3 -0
  86. package/dist/cjs/types/response/ws.js.map +1 -0
  87. package/dist/cjs/types/websockets/client.d.ts +46 -0
  88. package/dist/cjs/types/websockets/client.js +3 -0
  89. package/dist/cjs/types/websockets/client.js.map +1 -0
  90. package/dist/cjs/types/websockets/events.d.ts +5 -0
  91. package/dist/cjs/types/websockets/events.js +3 -0
  92. package/dist/cjs/types/websockets/events.js.map +1 -0
  93. package/dist/cjs/types/websockets/requests.d.ts +8 -0
  94. package/dist/cjs/types/websockets/requests.js +3 -0
  95. package/dist/cjs/types/websockets/requests.js.map +1 -0
  96. package/dist/cjs/types/websockets/wsAPI.d.ts +9 -0
  97. package/dist/cjs/types/websockets/wsAPI.js +3 -0
  98. package/dist/cjs/types/websockets/wsAPI.js.map +1 -0
  99. package/dist/mjs/FuturesClient.d.ts +246 -0
  100. package/dist/mjs/FuturesClient.js +257 -0
  101. package/dist/mjs/FuturesClient.js.map +1 -0
  102. package/dist/mjs/SpotClient.d.ts +692 -0
  103. package/dist/mjs/SpotClient.js +741 -0
  104. package/dist/mjs/SpotClient.js.map +1 -0
  105. package/dist/mjs/WebsocketClient.d.ts +77 -0
  106. package/dist/mjs/WebsocketClient.js +333 -0
  107. package/dist/mjs/WebsocketClient.js.map +1 -0
  108. package/dist/mjs/index.d.ts +22 -0
  109. package/dist/mjs/index.js +23 -0
  110. package/dist/mjs/index.js.map +1 -0
  111. package/dist/mjs/lib/BaseRestClient.d.ts +42 -0
  112. package/dist/mjs/lib/BaseRestClient.js +261 -0
  113. package/dist/mjs/lib/BaseRestClient.js.map +1 -0
  114. package/dist/mjs/lib/BaseWSClient.d.ts +168 -0
  115. package/dist/mjs/lib/BaseWSClient.js +615 -0
  116. package/dist/mjs/lib/BaseWSClient.js.map +1 -0
  117. package/dist/mjs/lib/misc-util.d.ts +1 -0
  118. package/dist/mjs/lib/misc-util.js +4 -0
  119. package/dist/mjs/lib/misc-util.js.map +1 -0
  120. package/dist/mjs/lib/requestUtils.d.ts +35 -0
  121. package/dist/mjs/lib/requestUtils.js +49 -0
  122. package/dist/mjs/lib/requestUtils.js.map +1 -0
  123. package/dist/mjs/lib/webCryptoAPI.d.ts +10 -0
  124. package/dist/mjs/lib/webCryptoAPI.js +52 -0
  125. package/dist/mjs/lib/webCryptoAPI.js.map +1 -0
  126. package/dist/mjs/lib/websocket/WsStore.d.ts +63 -0
  127. package/dist/mjs/lib/websocket/WsStore.js +249 -0
  128. package/dist/mjs/lib/websocket/WsStore.js.map +1 -0
  129. package/dist/mjs/lib/websocket/WsStore.types.d.ts +50 -0
  130. package/dist/mjs/lib/websocket/WsStore.types.js +11 -0
  131. package/dist/mjs/lib/websocket/WsStore.types.js.map +1 -0
  132. package/dist/mjs/lib/websocket/logger.d.ts +6 -0
  133. package/dist/mjs/lib/websocket/logger.js +13 -0
  134. package/dist/mjs/lib/websocket/logger.js.map +1 -0
  135. package/dist/mjs/lib/websocket/websocket-util.d.ts +30 -0
  136. package/dist/mjs/lib/websocket/websocket-util.js +15 -0
  137. package/dist/mjs/lib/websocket/websocket-util.js.map +1 -0
  138. package/dist/mjs/package.json +3 -0
  139. package/dist/mjs/types/request/futures.types.d.ts +183 -0
  140. package/dist/mjs/types/request/futures.types.js +6 -0
  141. package/dist/mjs/types/request/futures.types.js.map +1 -0
  142. package/dist/mjs/types/request/spot-account.d.ts +56 -0
  143. package/dist/mjs/types/request/spot-account.js +2 -0
  144. package/dist/mjs/types/request/spot-account.js.map +1 -0
  145. package/dist/mjs/types/request/spot-earn.d.ts +27 -0
  146. package/dist/mjs/types/request/spot-earn.js +7 -0
  147. package/dist/mjs/types/request/spot-earn.js.map +1 -0
  148. package/dist/mjs/types/request/spot-funding.d.ts +88 -0
  149. package/dist/mjs/types/request/spot-funding.js +9 -0
  150. package/dist/mjs/types/request/spot-funding.js.map +1 -0
  151. package/dist/mjs/types/request/spot-margin-trading.d.ts +169 -0
  152. package/dist/mjs/types/request/spot-margin-trading.js +9 -0
  153. package/dist/mjs/types/request/spot-margin-trading.js.map +1 -0
  154. package/dist/mjs/types/request/spot-trading.d.ts +214 -0
  155. package/dist/mjs/types/request/spot-trading.js +9 -0
  156. package/dist/mjs/types/request/spot-trading.js.map +1 -0
  157. package/dist/mjs/types/response/futures.types.d.ts +501 -0
  158. package/dist/mjs/types/response/futures.types.js +6 -0
  159. package/dist/mjs/types/response/futures.types.js.map +1 -0
  160. package/dist/mjs/types/response/shared.types.d.ts +9 -0
  161. package/dist/mjs/types/response/shared.types.js +2 -0
  162. package/dist/mjs/types/response/shared.types.js.map +1 -0
  163. package/dist/mjs/types/response/spot-account.d.ts +140 -0
  164. package/dist/mjs/types/response/spot-account.js +2 -0
  165. package/dist/mjs/types/response/spot-account.js.map +1 -0
  166. package/dist/mjs/types/response/spot-earn.d.ts +74 -0
  167. package/dist/mjs/types/response/spot-earn.js +7 -0
  168. package/dist/mjs/types/response/spot-earn.js.map +1 -0
  169. package/dist/mjs/types/response/spot-funding.d.ts +176 -0
  170. package/dist/mjs/types/response/spot-funding.js +9 -0
  171. package/dist/mjs/types/response/spot-funding.js.map +1 -0
  172. package/dist/mjs/types/response/spot-margin-trading.d.ts +257 -0
  173. package/dist/mjs/types/response/spot-margin-trading.js +9 -0
  174. package/dist/mjs/types/response/spot-margin-trading.js.map +1 -0
  175. package/dist/mjs/types/response/spot-trading.d.ts +388 -0
  176. package/dist/mjs/types/response/spot-trading.js +9 -0
  177. package/dist/mjs/types/response/spot-trading.js.map +1 -0
  178. package/dist/mjs/types/response/spot-vip.d.ts +38 -0
  179. package/dist/mjs/types/response/spot-vip.js +9 -0
  180. package/dist/mjs/types/response/spot-vip.js.map +1 -0
  181. package/dist/mjs/types/response/ws.d.ts +11 -0
  182. package/dist/mjs/types/response/ws.js +2 -0
  183. package/dist/mjs/types/response/ws.js.map +1 -0
  184. package/dist/mjs/types/websockets/client.d.ts +46 -0
  185. package/dist/mjs/types/websockets/client.js +2 -0
  186. package/dist/mjs/types/websockets/client.js.map +1 -0
  187. package/dist/mjs/types/websockets/events.d.ts +5 -0
  188. package/dist/mjs/types/websockets/events.js +2 -0
  189. package/dist/mjs/types/websockets/events.js.map +1 -0
  190. package/dist/mjs/types/websockets/requests.d.ts +8 -0
  191. package/dist/mjs/types/websockets/requests.js +2 -0
  192. package/dist/mjs/types/websockets/requests.js.map +1 -0
  193. package/dist/mjs/types/websockets/wsAPI.d.ts +9 -0
  194. package/dist/mjs/types/websockets/wsAPI.js +2 -0
  195. package/dist/mjs/types/websockets/wsAPI.js.map +1 -0
  196. package/package.json +70 -14
  197. package/LICENSE +0 -21
  198. package/index.js +0 -854
  199. package/test.js +0 -133
@@ -0,0 +1,246 @@
1
+ import { AxiosRequestConfig } from 'axios';
2
+ import { BaseRestClient } from './lib/BaseRestClient.js';
3
+ import { RestClientOptions, RestClientType } from './lib/requestUtils.js';
4
+ import { AccountFillsRequest, CreateSubAPIRequest, DeleteSubAPIRequest, GetFundingHistoryRequest, GetFundingRatesRequest, GetInterestRatesRequest, GetKlinesRequest, GetOrdersRequest, GetStopOrdersRequest, GetSubAPIsRequest, GetTransactionsRequest, GetTransfersRequest, MaxOpenSizeRequest, Order, SubmitTransfer, UpdateSubAPIRequest } from './types/request/futures.types.js';
5
+ import { AccountBalance, AccountSummary, AddMargin, CreateSubAccountAPI, FullOrderBookDetail, FuturesAccountFundingRateHistory, FuturesAccountTransaction, FuturesActiveOrder, FuturesClosedPositions, FuturesCurrentFundingRate, FuturesFill, FuturesFills, FuturesHistoricFundingRate, FuturesKline, FuturesMarkPrice, FuturesOrder, FuturesOrders, FuturesPosition, FuturesRiskLimit, FuturesSymbolInfo, FuturesTransferRecords, IndexListItem, InterestRateItem, MarketTradeDetail, MaxOpenSize, PremiumIndexItem, SubAccountAPI, SubBalance, SubmitMultipleOrdersFuturesResponse, TickerDetail, TransferDetail, UpdateSubAccountAPI } from './types/response/futures.types.js';
6
+ import { APISuccessResponse } from './types/response/shared.types.js';
7
+ import { WsConnectionInfo } from './types/response/ws.js';
8
+ /**
9
+ *
10
+ */
11
+ export declare class FuturesClient extends BaseRestClient {
12
+ constructor(restClientOptions?: RestClientOptions, requestOptions?: AxiosRequestConfig);
13
+ getClientType(): RestClientType;
14
+ /**
15
+ *
16
+ * Misc Utility Methods
17
+ *
18
+ */
19
+ generateNewOrderID(): string;
20
+ getServerTime(): Promise<any>;
21
+ getServiceStatus(): Promise<any>;
22
+ /**
23
+ * REST - ACCOUNT - BASIC INFO
24
+ * Get Account Ledgers - Futures
25
+ */
26
+ getTransactions(params: GetTransactionsRequest): Promise<APISuccessResponse<{
27
+ hasMore: boolean;
28
+ dataList: FuturesAccountTransaction[];
29
+ }>>;
30
+ /**
31
+ * REST - ACCOUNT - SUBACCOUNT API
32
+ */
33
+ getSubAPIs(params: GetSubAPIsRequest): Promise<APISuccessResponse<SubAccountAPI[]>>;
34
+ createSubAPI(params: CreateSubAPIRequest): Promise<APISuccessResponse<CreateSubAccountAPI>>;
35
+ updateSubAPI(params: UpdateSubAPIRequest): Promise<APISuccessResponse<UpdateSubAccountAPI>>;
36
+ deleteSubAPI(params: DeleteSubAPIRequest): Promise<APISuccessResponse<{
37
+ subName: string;
38
+ apiKey: string;
39
+ }>>;
40
+ /**
41
+ * REST - FUNDING - FUNDING OVERVIEW
42
+ */
43
+ getBalance(params?: {
44
+ currency?: string;
45
+ }): Promise<APISuccessResponse<AccountBalance>>;
46
+ getSubBalances(params?: {
47
+ currency?: string;
48
+ }): Promise<APISuccessResponse<{
49
+ summary: AccountSummary;
50
+ accounts: SubBalance[];
51
+ }>>;
52
+ /**
53
+ * REST - FUNDING - TRANSFER
54
+ */
55
+ submitTransferOut(params: SubmitTransfer): Promise<Promise<APISuccessResponse<TransferDetail>>>;
56
+ submitTransferIn(params: SubmitTransfer): Promise<any>;
57
+ getTransfers(params: GetTransfersRequest): Promise<APISuccessResponse<FuturesTransferRecords>>;
58
+ /**
59
+ * REST - FUNDING - TRADE FEE
60
+ */
61
+ getTradingPairFee(params: {
62
+ symbols: string;
63
+ }): Promise<APISuccessResponse<{
64
+ symbol: string;
65
+ takerFeeRate: string;
66
+ makerFeeRate: string;
67
+ }>>;
68
+ /**
69
+ *
70
+ * REST - FUTURES TRADING - Market Data
71
+ *
72
+ */
73
+ getSymbols(): Promise<APISuccessResponse<FuturesSymbolInfo[]>>;
74
+ getSymbol(params: {
75
+ symbol: string;
76
+ }): Promise<APISuccessResponse<FuturesSymbolInfo>>;
77
+ getTicker(params: {
78
+ symbol: string;
79
+ }): Promise<APISuccessResponse<TickerDetail>>;
80
+ getTickers(): Promise<APISuccessResponse<TickerDetail[]>>;
81
+ getFullOrderBookLevel2(params: {
82
+ symbol: string;
83
+ }): Promise<APISuccessResponse<FullOrderBookDetail>>;
84
+ getPartOrderBookLevel2Depth20(params: {
85
+ symbol: string;
86
+ }): Promise<APISuccessResponse<FullOrderBookDetail>>;
87
+ getPartOrderBookLevel2Depth100(params: {
88
+ symbol: string;
89
+ }): Promise<APISuccessResponse<FullOrderBookDetail>>;
90
+ getMarketTrades(params: {
91
+ symbol: string;
92
+ }): Promise<APISuccessResponse<MarketTradeDetail>>;
93
+ getKlines(params: GetKlinesRequest): Promise<APISuccessResponse<FuturesKline[]>>;
94
+ getInterestRates(params: GetInterestRatesRequest): Promise<APISuccessResponse<{
95
+ dataList: InterestRateItem[];
96
+ hasMore: boolean;
97
+ }>>;
98
+ getIndex(params: GetInterestRatesRequest): Promise<APISuccessResponse<{
99
+ dataList: IndexListItem[];
100
+ hasMore: boolean;
101
+ }>>;
102
+ getMarkPrice(params: {
103
+ symbol: string;
104
+ }): Promise<APISuccessResponse<FuturesMarkPrice>>;
105
+ getPremiumIndex(params: GetInterestRatesRequest): Promise<APISuccessResponse<{
106
+ dataList: PremiumIndexItem[];
107
+ hasMore: boolean;
108
+ }>>;
109
+ get24HourTransactionVolume(): Promise<APISuccessResponse<{
110
+ turnoverOf24h: number;
111
+ }>>;
112
+ /**
113
+ *
114
+ * REST - FUTURES TRADING - Orders
115
+ *
116
+ */
117
+ submitOrder(params: Order): Promise<APISuccessResponse<{
118
+ orderId: string;
119
+ }>>;
120
+ submitNewOrderTest(): Promise<any>;
121
+ cancelOrderById(params: {
122
+ orderId: string;
123
+ }): Promise<APISuccessResponse<{
124
+ cancelledOrderIds: string[];
125
+ }>>;
126
+ cancelOrderByClientOid(params: {
127
+ clientOid: string;
128
+ }): Promise<APISuccessResponse<{
129
+ clientOid: string;
130
+ }>>;
131
+ submitMultipleOrders(params: Order[]): Promise<APISuccessResponse<SubmitMultipleOrdersFuturesResponse[]>>;
132
+ cancelAllOrders(params?: {
133
+ symbol?: string;
134
+ }): Promise<APISuccessResponse<{
135
+ cancelledOrderIds: string[];
136
+ }>>;
137
+ cancelAllStopOrders(params?: {
138
+ symbol?: string;
139
+ }): Promise<APISuccessResponse<{
140
+ cancelledOrderIds: string[];
141
+ }>>;
142
+ getOrders(params?: GetOrdersRequest): Promise<APISuccessResponse<FuturesOrders>>;
143
+ getStopOrders(params?: GetStopOrdersRequest): Promise<APISuccessResponse<FuturesOrders>>;
144
+ getRecentOrders(params?: {
145
+ symbol?: string;
146
+ }): Promise<APISuccessResponse<FuturesOrder[]>>;
147
+ getOrderByOrderId(params: {
148
+ orderId: string;
149
+ }): Promise<APISuccessResponse<FuturesOrder>>;
150
+ getOrderByClientOrderId(params: {
151
+ clientOid: string;
152
+ }): Promise<APISuccessResponse<FuturesOrder>>;
153
+ /**
154
+ *
155
+ * REST - FUTURES TRADING - Fills
156
+ *
157
+ */
158
+ /**
159
+ * Get a list of recent fills.
160
+ *
161
+ * If you need to get your recent trade history with low latency, please query endpoint Get List of Orders Completed in 24h.
162
+ * The requested data is not real-time.
163
+ */
164
+ getFills(params?: AccountFillsRequest): Promise<APISuccessResponse<FuturesFills>>;
165
+ /**
166
+ * Get a list of recent 1000 fills in the last 24 hours.
167
+ *
168
+ * If you need to get your recent traded order history with low latency, you may query this endpoint.
169
+ */
170
+ getRecentFills(params?: {
171
+ symbol?: string;
172
+ }): Promise<APISuccessResponse<FuturesFill[]>>;
173
+ getOpenOrderStatistics(params: {
174
+ symbol: string;
175
+ }): Promise<APISuccessResponse<FuturesActiveOrder>>;
176
+ /**
177
+ *
178
+ * REST - FUTURES TRADING - Positions
179
+ *
180
+ */
181
+ getMaxOpenSize(params: MaxOpenSizeRequest): Promise<APISuccessResponse<MaxOpenSize>>;
182
+ getPosition(params: {
183
+ symbol: string;
184
+ }): Promise<APISuccessResponse<FuturesPosition>>;
185
+ getPositions(params?: {
186
+ currency?: string;
187
+ }): Promise<APISuccessResponse<FuturesPosition[]>>;
188
+ getHistoryPositions(params?: {
189
+ symbol?: string;
190
+ from?: number;
191
+ to?: number;
192
+ limit?: number;
193
+ pageId?: number;
194
+ }): Promise<APISuccessResponse<FuturesClosedPositions>>;
195
+ updateAutoDepositStatus(params: {
196
+ symbol: string;
197
+ status: boolean;
198
+ }): Promise<APISuccessResponse<boolean>>;
199
+ getMaxWithdrawMargin(params: {
200
+ symbol: string;
201
+ }): Promise<APISuccessResponse<number>>;
202
+ withdrawMargin(params: {
203
+ symbol: string;
204
+ withdrawAmount: string;
205
+ }): Promise<APISuccessResponse<{
206
+ sybmol: string;
207
+ withdrawAmount: number;
208
+ }>>;
209
+ depositMargin(params: {
210
+ symbol: string;
211
+ margin: number;
212
+ bizNo: string;
213
+ }): Promise<APISuccessResponse<AddMargin>>;
214
+ /**
215
+ *
216
+ * REST - FUTURES TRADING - Risk limit
217
+ *
218
+ */
219
+ getRiskLimitLevel(params: {
220
+ symbol: string;
221
+ }): Promise<APISuccessResponse<FuturesRiskLimit[]>>;
222
+ updateRiskLimitLevel(params: {
223
+ symbol: string;
224
+ level: number;
225
+ }): Promise<any>;
226
+ /**
227
+ *
228
+ * REST - FUTURES TRADING - Funding fees
229
+ *
230
+ */
231
+ getFundingRate(params: {
232
+ symbol: string;
233
+ }): Promise<APISuccessResponse<FuturesCurrentFundingRate>>;
234
+ getFundingRates(params: GetFundingRatesRequest): Promise<APISuccessResponse<FuturesHistoricFundingRate[]>>;
235
+ getFundingHistory(params: GetFundingHistoryRequest): Promise<APISuccessResponse<{
236
+ dataList: FuturesAccountFundingRateHistory[];
237
+ hasMore: boolean;
238
+ }>>;
239
+ /**
240
+ *
241
+ * WebSockets
242
+ *
243
+ */
244
+ getPublicWSConnectionToken(): Promise<APISuccessResponse<WsConnectionInfo>>;
245
+ getPrivateWSConnectionToken(): Promise<APISuccessResponse<WsConnectionInfo>>;
246
+ }
@@ -0,0 +1,261 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FuturesClient = void 0;
4
+ const nanoid_1 = require("nanoid");
5
+ const BaseRestClient_js_1 = require("./lib/BaseRestClient.js");
6
+ const requestUtils_js_1 = require("./lib/requestUtils.js");
7
+ /**
8
+ *
9
+ */
10
+ class FuturesClient extends BaseRestClient_js_1.BaseRestClient {
11
+ constructor(restClientOptions = {}, requestOptions = {}) {
12
+ super(restClientOptions, requestOptions);
13
+ return this;
14
+ }
15
+ getClientType() {
16
+ return requestUtils_js_1.REST_CLIENT_TYPE_ENUM.futures;
17
+ }
18
+ /**
19
+ *
20
+ * Misc Utility Methods
21
+ *
22
+ */
23
+ generateNewOrderID() {
24
+ return (0, nanoid_1.nanoid)(32);
25
+ }
26
+ getServerTime() {
27
+ return this.get('api/v1/timestamp');
28
+ }
29
+ getServiceStatus() {
30
+ return this.get('api/v1/status');
31
+ }
32
+ /**
33
+ * REST - ACCOUNT - BASIC INFO
34
+ * Get Account Ledgers - Futures
35
+ */
36
+ getTransactions(params) {
37
+ return this.getPrivate('api/v1/transaction-history', params);
38
+ }
39
+ /**
40
+ * REST - ACCOUNT - SUBACCOUNT API
41
+ */
42
+ getSubAPIs(params) {
43
+ return this.getPrivate('api/v1/sub/api-key', params);
44
+ }
45
+ createSubAPI(params) {
46
+ return this.postPrivate('api/v1/sub/api-key', params);
47
+ }
48
+ updateSubAPI(params) {
49
+ return this.postPrivate('api/v1/sub/api-key/update', params);
50
+ }
51
+ deleteSubAPI(params) {
52
+ return this.deletePrivate('api/v1/sub/api-key', params);
53
+ }
54
+ /**
55
+ * REST - FUNDING - FUNDING OVERVIEW
56
+ */
57
+ getBalance(params) {
58
+ return this.getPrivate('api/v1/account-overview', params);
59
+ }
60
+ getSubBalances(params) {
61
+ return this.getPrivate('api/v1/account-overview-all', params);
62
+ }
63
+ /**
64
+ * REST - FUNDING - TRANSFER
65
+ */
66
+ submitTransferOut(params) {
67
+ return this.postPrivate('api/v3/transfer-out', params);
68
+ }
69
+ submitTransferIn(params) {
70
+ return this.postPrivate('api/v1/transfer-in', params);
71
+ }
72
+ getTransfers(params) {
73
+ return this.getPrivate('api/v1/transfer-list', params);
74
+ }
75
+ /**
76
+ * REST - FUNDING - TRADE FEE
77
+ */
78
+ getTradingPairFee(params) {
79
+ return this.getPrivate('/api/v1/trade-fees', params);
80
+ }
81
+ /**
82
+ *
83
+ * REST - FUTURES TRADING - Market Data
84
+ *
85
+ */
86
+ getSymbols() {
87
+ return this.get('api/v1/contracts/active');
88
+ }
89
+ getSymbol(params) {
90
+ return this.get(`api/v1/contracts/${params.symbol}`);
91
+ }
92
+ getTicker(params) {
93
+ return this.get('api/v1/ticker', params);
94
+ }
95
+ getTickers() {
96
+ return this.get('api/v1/allTickers');
97
+ }
98
+ getFullOrderBookLevel2(params) {
99
+ return this.get('api/v1/level2/snapshot', params);
100
+ }
101
+ getPartOrderBookLevel2Depth20(params) {
102
+ return this.get('api/v1/level2/depth20', params);
103
+ }
104
+ getPartOrderBookLevel2Depth100(params) {
105
+ return this.get('api/v1/level2/depth100', params);
106
+ }
107
+ getMarketTrades(params) {
108
+ return this.get('api/v1/trade/history', params);
109
+ }
110
+ getKlines(params) {
111
+ return this.get('api/v1/kline/query', params);
112
+ }
113
+ getInterestRates(params) {
114
+ return this.get('api/v1/interest/query', params);
115
+ }
116
+ getIndex(params) {
117
+ return this.get('api/v1/index/query', params);
118
+ }
119
+ getMarkPrice(params) {
120
+ return this.get(`api/v1/mark-price/${params.symbol}/current`);
121
+ }
122
+ getPremiumIndex(params) {
123
+ return this.get('api/v1/premium/query', params);
124
+ }
125
+ get24HourTransactionVolume() {
126
+ return this.get('api/v1/trade-statistics');
127
+ }
128
+ /**
129
+ *
130
+ * REST - FUTURES TRADING - Orders
131
+ *
132
+ */
133
+ submitOrder(params) {
134
+ return this.postPrivate('api/v1/orders', params);
135
+ }
136
+ submitNewOrderTest() {
137
+ return this.postPrivate('api/v1/orders/test');
138
+ }
139
+ cancelOrderById(params) {
140
+ return this.deletePrivate(`api/v1/orders/${params.orderId}`);
141
+ }
142
+ cancelOrderByClientOid(params) {
143
+ return this.deletePrivate(`api/v1/orders/client-order/${params.clientOid}`);
144
+ }
145
+ submitMultipleOrders(params) {
146
+ return this.postPrivate('api/v1/orders/multi', params);
147
+ }
148
+ cancelAllOrders(params) {
149
+ return this.deletePrivate('api/v1/orders', params);
150
+ }
151
+ cancelAllStopOrders(params) {
152
+ return this.deletePrivate('api/v1/stopOrders', params);
153
+ }
154
+ getOrders(params) {
155
+ return this.getPrivate('api/v1/orders', params);
156
+ }
157
+ getStopOrders(params) {
158
+ return this.getPrivate('api/v1/stopOrders', params);
159
+ }
160
+ getRecentOrders(params) {
161
+ return this.getPrivate('api/v1/recentDoneOrders', params);
162
+ }
163
+ getOrderByOrderId(params) {
164
+ return this.getPrivate(`api/v1/orders/${params.orderId}`);
165
+ }
166
+ getOrderByClientOrderId(params) {
167
+ return this.getPrivate(`api/v1/orders/byClientOid`, params);
168
+ }
169
+ /**
170
+ *
171
+ * REST - FUTURES TRADING - Fills
172
+ *
173
+ */
174
+ /**
175
+ * Get a list of recent fills.
176
+ *
177
+ * If you need to get your recent trade history with low latency, please query endpoint Get List of Orders Completed in 24h.
178
+ * The requested data is not real-time.
179
+ */
180
+ getFills(params) {
181
+ return this.getPrivate('api/v1/fills', params);
182
+ }
183
+ /**
184
+ * Get a list of recent 1000 fills in the last 24 hours.
185
+ *
186
+ * If you need to get your recent traded order history with low latency, you may query this endpoint.
187
+ */
188
+ getRecentFills(params) {
189
+ return this.getPrivate('api/v1/recentFills', params);
190
+ }
191
+ getOpenOrderStatistics(params) {
192
+ return this.getPrivate('api/v1/openOrderStatistics', params);
193
+ }
194
+ /**
195
+ *
196
+ * REST - FUTURES TRADING - Positions
197
+ *
198
+ */
199
+ getMaxOpenSize(params) {
200
+ return this.getPrivate('api/v2/getMaxOpenSize', params);
201
+ }
202
+ getPosition(params) {
203
+ return this.getPrivate('api/v1/position', params);
204
+ }
205
+ getPositions(params) {
206
+ return this.getPrivate('api/v1/positions', params);
207
+ }
208
+ getHistoryPositions(params) {
209
+ return this.getPrivate('/api/v1/history-positions', params);
210
+ }
211
+ updateAutoDepositStatus(params) {
212
+ return this.postPrivate('api/v1/position/margin/auto-deposit-status', params);
213
+ }
214
+ getMaxWithdrawMargin(params) {
215
+ return this.getPrivate('api/v1/margin/maxWithdrawMargin', params);
216
+ }
217
+ withdrawMargin(params) {
218
+ return this.postPrivate('api/v1/margin/withdrawMargin', params);
219
+ }
220
+ depositMargin(params) {
221
+ return this.postPrivate('api/v1/position/margin/deposit-margin', params);
222
+ }
223
+ /**
224
+ *
225
+ * REST - FUTURES TRADING - Risk limit
226
+ *
227
+ */
228
+ getRiskLimitLevel(params) {
229
+ return this.getPrivate(`api/v1/contracts/risk-limit/${params.symbol}`);
230
+ }
231
+ updateRiskLimitLevel(params) {
232
+ return this.postPrivate('api/v1/position/risk-limit-level/change', params);
233
+ }
234
+ /**
235
+ *
236
+ * REST - FUTURES TRADING - Funding fees
237
+ *
238
+ */
239
+ getFundingRate(params) {
240
+ return this.get(`api/v1/funding-rate/${params.symbol}/current`);
241
+ }
242
+ getFundingRates(params) {
243
+ return this.get('api/v1/contract/funding-rates', params);
244
+ }
245
+ getFundingHistory(params) {
246
+ return this.getPrivate('api/v1/funding-history', params);
247
+ }
248
+ /**
249
+ *
250
+ * WebSockets
251
+ *
252
+ */
253
+ getPublicWSConnectionToken() {
254
+ return this.post('api/v1/bullet-public');
255
+ }
256
+ getPrivateWSConnectionToken() {
257
+ return this.postPrivate('api/v1/bullet-private');
258
+ }
259
+ }
260
+ exports.FuturesClient = FuturesClient;
261
+ //# sourceMappingURL=FuturesClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FuturesClient.js","sourceRoot":"","sources":["../../src/FuturesClient.ts"],"names":[],"mappings":"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"}