@yuants/vendor-huobi 0.11.41 → 0.13.0
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.
- package/dist/account-info.js +235 -0
- package/dist/account-info.js.map +1 -0
- package/dist/api/private-api.js +251 -0
- package/dist/api/private-api.js.map +1 -0
- package/dist/api/public-api.js +145 -0
- package/dist/api/public-api.js.map +1 -0
- package/dist/api.js +0 -279
- package/dist/api.js.map +1 -1
- package/dist/index.js +28 -524
- package/dist/index.js.map +1 -1
- package/dist/interest_rate.js +2 -2
- package/dist/interest_rate.js.map +1 -1
- package/dist/order-actions-with-credentials.js +15 -0
- package/dist/order-actions-with-credentials.js.map +1 -0
- package/dist/order-actions.js +17 -0
- package/dist/order-actions.js.map +1 -0
- package/dist/orders/submitOrder.js +93 -0
- package/dist/orders/submitOrder.js.map +1 -0
- package/dist/product.js +4 -4
- package/dist/product.js.map +1 -1
- package/dist/quote.js +5 -5
- package/dist/quote.js.map +1 -1
- package/dist/transfer.js +248 -0
- package/dist/transfer.js.map +1 -0
- package/dist/uid.js +22 -0
- package/dist/uid.js.map +1 -0
- package/lib/account-info.d.ts +35 -0
- package/lib/account-info.d.ts.map +1 -0
- package/lib/account-info.js +243 -0
- package/lib/account-info.js.map +1 -0
- package/lib/api/private-api.d.ts +474 -0
- package/lib/api/private-api.d.ts.map +1 -0
- package/lib/api/private-api.js +280 -0
- package/lib/api/private-api.js.map +1 -0
- package/lib/api/public-api.d.ts +308 -0
- package/lib/api/public-api.d.ts.map +1 -0
- package/lib/api/public-api.js +158 -0
- package/lib/api/public-api.js.map +1 -0
- package/lib/api.d.ts +2 -621
- package/lib/api.d.ts.map +1 -1
- package/lib/api.js +0 -279
- package/lib/api.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +26 -522
- package/lib/index.js.map +1 -1
- package/lib/interest_rate.js +2 -2
- package/lib/interest_rate.js.map +1 -1
- package/lib/order-actions-with-credentials.d.ts +2 -0
- package/lib/order-actions-with-credentials.d.ts.map +1 -0
- package/lib/order-actions-with-credentials.js +17 -0
- package/lib/order-actions-with-credentials.js.map +1 -0
- package/lib/order-actions.d.ts +7 -0
- package/lib/order-actions.d.ts.map +1 -0
- package/lib/order-actions.js +21 -0
- package/lib/order-actions.js.map +1 -0
- package/lib/orders/submitOrder.d.ts +6 -0
- package/lib/orders/submitOrder.d.ts.map +1 -0
- package/lib/orders/submitOrder.js +97 -0
- package/lib/orders/submitOrder.js.map +1 -0
- package/lib/product.js +4 -4
- package/lib/product.js.map +1 -1
- package/lib/quote.js +5 -5
- package/lib/quote.js.map +1 -1
- package/lib/transfer.d.ts +19 -0
- package/lib/transfer.d.ts.map +1 -0
- package/lib/transfer.js +255 -0
- package/lib/transfer.js.map +1 -0
- package/lib/uid.d.ts +13 -0
- package/lib/uid.d.ts.map +1 -0
- package/lib/uid.js +26 -0
- package/lib/uid.js.map +1 -0
- package/package.json +3 -3
- package/temp/package-deps.json +18 -11
- package/dist/logger.js +0 -91
- package/dist/logger.js.map +0 -1
- package/lib/logger.d.ts +0 -21
- package/lib/logger.d.ts.map +0 -1
- package/lib/logger.js +0 -98
- package/lib/logger.js.map +0 -1
package/lib/api.js
CHANGED
|
@@ -5,11 +5,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.client = exports.HuobiClient = void 0;
|
|
7
7
|
const protocol_1 = require("@yuants/protocol");
|
|
8
|
-
const utils_1 = require("@yuants/utils");
|
|
9
8
|
const rxjs_1 = require("rxjs");
|
|
10
9
|
const zlib_1 = __importDefault(require("zlib"));
|
|
11
|
-
// @ts-ignore
|
|
12
|
-
const crypto_js_1 = __importDefault(require("crypto-js"));
|
|
13
10
|
const createConnectionGzipWS = (URL) => {
|
|
14
11
|
const conn = (0, protocol_1.createConnectionWs)(URL);
|
|
15
12
|
const input$ = (0, rxjs_1.from)(conn.input$).pipe((0, rxjs_1.map)((msg) => zlib_1.default.gunzipSync(msg)), (0, rxjs_1.map)((msg) => msg.toString()), (0, rxjs_1.map)((msg) => JSON.parse(msg)), (0, rxjs_1.share)());
|
|
@@ -24,81 +21,6 @@ class HuobiClient {
|
|
|
24
21
|
this.swap_api_root = 'api.hbdm.com';
|
|
25
22
|
// https://www.htx.com/zh-cn/opend/newApiPages/?id=404
|
|
26
23
|
this.spot_api_root = 'api.huobi.pro';
|
|
27
|
-
/**
|
|
28
|
-
* 【全仓】获取平台阶梯保证金
|
|
29
|
-
*
|
|
30
|
-
* https://www.htx.com/zh-cn/opend/newApiPages/?id=8cb72290-77b5-11ed-9966-0242ac110003
|
|
31
|
-
*/
|
|
32
|
-
this.getSwapCrossLadderMargin = (params) => this.request('GET', '/linear-swap-api/v1/swap_cross_ladder_margin', this.swap_api_root, params);
|
|
33
|
-
/**
|
|
34
|
-
* 【通用】批量获取合约资金费率
|
|
35
|
-
*
|
|
36
|
-
* 接口权限: 读取
|
|
37
|
-
*
|
|
38
|
-
* 限频: 其他非行情类的公开接口,比如获取指数信息,限价信息,交割结算、平台持仓信息等,所有用户都是每个IP3秒最多240次请求(所有该IP的非行情类的公开接口请求共享3秒240次的额度)
|
|
39
|
-
*
|
|
40
|
-
* 接口描述: 该接口支持全仓模式和逐仓模式
|
|
41
|
-
*
|
|
42
|
-
* https://www.htx.com/zh-cn/opend/newApiPages/?id=8cb71b45-77b5-11ed-9966-0242ac110003
|
|
43
|
-
*/
|
|
44
|
-
this.getSwapBatchFundingRate = (params) => {
|
|
45
|
-
// https://www.htx.com/zh-cn/opend/newApiPages/?id=8cb7a7b5-77b5-11ed-9966-0242ac110003
|
|
46
|
-
return this.request('GET', `/linear-swap-api/v1/swap_batch_funding_rate`, this.swap_api_root, params);
|
|
47
|
-
};
|
|
48
|
-
/**
|
|
49
|
-
* 【通用】获取市场最近成交记录
|
|
50
|
-
*
|
|
51
|
-
* 接口权限: 读取
|
|
52
|
-
*
|
|
53
|
-
* 限频: 行情类的公开接口,比如:获取K线数据、获取聚合行情、市场行情、获取行情深度数据、获取溢价指数K线、获取实时预测资金费率k线,获取基差数据、获取市场最近成交记录:
|
|
54
|
-
*
|
|
55
|
-
* (1) restful接口:同一个IP, 所有业务(交割合约、币本位永续合约和U本位合约)总共1秒最多800个请求
|
|
56
|
-
*
|
|
57
|
-
* 接口描述: 该接口支持全仓模式和逐仓模式
|
|
58
|
-
*
|
|
59
|
-
* 请求参数contract_code支持交割合约代码,格式为BTC-USDT-210625;同时支持合约标识,格式为 BTC-USDT(永续)、BTC-USDT-CW(当周)、BTC-USDT-NW(次周)、BTC-USDT-CQ(当季)、BTC-USDT-NQ(次季)。
|
|
60
|
-
*
|
|
61
|
-
* business_type 在查询交割合约数据时为必填参数。且参数值要传:futures 或 all 。
|
|
62
|
-
*
|
|
63
|
-
* https://www.htx.com/zh-cn/opend/newApiPages/?id=8cb73c34-77b5-11ed-9966-0242ac110003
|
|
64
|
-
*/
|
|
65
|
-
this.getSwapMarketTrade = (params) => this.request('GET', `/linear-swap-ex/market/trade`, this.swap_api_root, params);
|
|
66
|
-
/**
|
|
67
|
-
* 获得当前合约的总持仓量
|
|
68
|
-
*
|
|
69
|
-
* https://huobiapi.github.io/docs/usdt_swap/v1/cn/#3218e7531a
|
|
70
|
-
*/
|
|
71
|
-
this.getSwapOpenInterest = (params) => this.request('GET', '/linear-swap-api/v1/swap_open_interest', this.swap_api_root, params);
|
|
72
|
-
/**
|
|
73
|
-
* 【通用】获取市场最优挂单
|
|
74
|
-
*
|
|
75
|
-
* 接口权限: 读取
|
|
76
|
-
*
|
|
77
|
-
* 限频: 行情类的公开接口,比如:获取K线数据、获取聚合行情、市场行情、获取行情深度数据、获取溢价指数K线、获取实时预测资金费率k线,获取基差数据、获取市场最近成交记录:
|
|
78
|
-
*
|
|
79
|
-
* (1) restful接口:同一个IP, 所有业务(交割合约、币本位永续合约和U本位合约)总共1秒最多800个请求
|
|
80
|
-
*
|
|
81
|
-
* 接口描述: 该接口支持全仓模式和逐仓模式
|
|
82
|
-
*
|
|
83
|
-
* 请求参数contract_code支持交割合约代码,格式为BTC-USDT-210625;同时支持合约标识,格式为 BTC-USDT(永续)、BTC-USDT-CW(当周)、BTC-USDT-NW(次周)、BTC-USDT-CQ(当季)、BTC-USDT-NQ(次季)。
|
|
84
|
-
*
|
|
85
|
-
* business_type 在查询交割合约数据时为必填参数。且参数值要传:futures 或 all 。
|
|
86
|
-
*
|
|
87
|
-
* https://www.htx.com/zh-cn/opend/newApiPages/?id=8cb735e0-77b5-11ed-9966-0242ac110003
|
|
88
|
-
*/
|
|
89
|
-
this.getSwapMarketBbo = (params) => this.request('GET', `/linear-swap-ex/market/bbo`, this.swap_api_root, params);
|
|
90
|
-
/**
|
|
91
|
-
* APIv2币链参考信息
|
|
92
|
-
*
|
|
93
|
-
* https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec478f0-7773-11ed-9966-0242ac110003
|
|
94
|
-
*/
|
|
95
|
-
this.getV2ReferenceCurrencies = (params) => this.request('GET', '/v2/reference/currencies', this.spot_api_root, params);
|
|
96
|
-
/**
|
|
97
|
-
* APIv2币链参考信息
|
|
98
|
-
*
|
|
99
|
-
* https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec41049-7773-11ed-9966-0242ac110003
|
|
100
|
-
*/
|
|
101
|
-
this.getAccountHistory = (params) => this.request('GET', '/v1/account/history', this.spot_api_root, params);
|
|
102
24
|
this.spot_ws = createConnectionGzipWS(`wss://${this.spot_api_root}/ws`);
|
|
103
25
|
(0, rxjs_1.from)(this.spot_ws.input$)
|
|
104
26
|
.pipe(
|
|
@@ -108,207 +30,6 @@ class HuobiClient {
|
|
|
108
30
|
}))
|
|
109
31
|
.subscribe();
|
|
110
32
|
}
|
|
111
|
-
async request(method, path, api_root, params) {
|
|
112
|
-
const noAuth = !(this.params.auth.access_key && this.params.auth.secret_key);
|
|
113
|
-
if (noAuth) {
|
|
114
|
-
const requestParams = `${method === 'GET' && params !== undefined
|
|
115
|
-
? `&${Object.entries(params)
|
|
116
|
-
.sort(([a], [b]) => a.localeCompare(b))
|
|
117
|
-
.map(([k, v]) => `${k}=${v}`)
|
|
118
|
-
.join('&')}`
|
|
119
|
-
: ''}`;
|
|
120
|
-
const body = method === 'GET' ? '' : JSON.stringify(params);
|
|
121
|
-
const url = new URL(`https://${api_root}${path}?${requestParams}`);
|
|
122
|
-
// url.searchParams.sort();
|
|
123
|
-
console.info((0, utils_1.formatTime)(Date.now()), method, url.href, body);
|
|
124
|
-
const res = await fetch(url.href, {
|
|
125
|
-
method,
|
|
126
|
-
headers: { 'Content-Type': 'application/json' },
|
|
127
|
-
body: body || undefined,
|
|
128
|
-
});
|
|
129
|
-
const retStr = await res.text();
|
|
130
|
-
// console.info(formatTime(Date.now()), 'response', url.href, retStr);
|
|
131
|
-
try {
|
|
132
|
-
return JSON.parse(retStr);
|
|
133
|
-
}
|
|
134
|
-
catch (e) {
|
|
135
|
-
console.error((0, utils_1.formatTime)(Date.now()), 'huobiRequestFailed', path, JSON.stringify(params), retStr);
|
|
136
|
-
throw e;
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
const requestParams = `AccessKeyId=${this.params.auth.access_key}&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=${encodeURIComponent(new Date().toISOString().split('.')[0])}${method === 'GET' && params !== undefined
|
|
140
|
-
? `&${Object.entries(params)
|
|
141
|
-
.sort(([a], [b]) => a.localeCompare(b))
|
|
142
|
-
.map(([k, v]) => `${k}=${v}`)
|
|
143
|
-
.join('&')}`
|
|
144
|
-
: ''}`;
|
|
145
|
-
const body = method === 'GET' ? '' : JSON.stringify(params);
|
|
146
|
-
const requestString = `${method}\n${api_root}\n${path}\n${requestParams}`;
|
|
147
|
-
const str = crypto_js_1.default.enc.Base64.stringify(crypto_js_1.default.HmacSHA256(requestString, this.params.auth.secret_key));
|
|
148
|
-
const url = new URL(`https://${api_root}${path}?${requestParams}&Signature=${encodeURIComponent(str)}`);
|
|
149
|
-
// url.searchParams.sort();
|
|
150
|
-
console.info((0, utils_1.formatTime)(Date.now()), method, url.href, body);
|
|
151
|
-
const res = await fetch(url.href, {
|
|
152
|
-
method,
|
|
153
|
-
headers: { 'Content-Type': 'application/json' },
|
|
154
|
-
body: body || undefined,
|
|
155
|
-
});
|
|
156
|
-
const retStr = await res.text();
|
|
157
|
-
// console.info(formatTime(Date.now()), 'response', url.href, retStr);
|
|
158
|
-
try {
|
|
159
|
-
return JSON.parse(retStr);
|
|
160
|
-
}
|
|
161
|
-
catch (e) {
|
|
162
|
-
console.error((0, utils_1.formatTime)(Date.now()), 'huobiRequestFailed', path, JSON.stringify(params), retStr);
|
|
163
|
-
throw e;
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
// swap_ws = new WebSocket(new URL(`wss://${this.swap_api_root}/linear-swap-ws`));
|
|
167
|
-
getAccount() {
|
|
168
|
-
// https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec40743-7773-11ed-9966-0242ac110003
|
|
169
|
-
return this.request('GET', '/v1/account/accounts', this.spot_api_root);
|
|
170
|
-
}
|
|
171
|
-
getPerpetualContractSymbols(params) {
|
|
172
|
-
// https://www.htx.com/zh-cn/opend/newApiPages/?id=8cb72f34-77b5-11ed-9966-0242ac110003
|
|
173
|
-
return this.request('GET', '/linear-swap-api/v1/swap_contract_info', this.swap_api_root, params);
|
|
174
|
-
}
|
|
175
|
-
getSpotSymbols() {
|
|
176
|
-
// https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec47f16-7773-11ed-9966-0242ac110003
|
|
177
|
-
return this.request('GET', '/v2/settings/common/symbols', this.spot_api_root);
|
|
178
|
-
}
|
|
179
|
-
getUid() {
|
|
180
|
-
// https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec491c9-7773-11ed-9966-0242ac110003
|
|
181
|
-
return this.request('GET', '/v2/user/uid', this.spot_api_root);
|
|
182
|
-
}
|
|
183
|
-
getUnifiedAccountInfo() {
|
|
184
|
-
// https://www.htx.com/zh-cn/opend/newApiPages/?id=10000073-77b7-11ed-9966-0242ac110003
|
|
185
|
-
return this.request('GET', '/linear-swap-api/v3/unified_account_info', this.swap_api_root);
|
|
186
|
-
}
|
|
187
|
-
getSwapCrossPositionInfo(params) {
|
|
188
|
-
// https://www.htx.com/zh-cn/opend/newApiPages/?id=8cb74963-77b5-11ed-9966-0242ac110003
|
|
189
|
-
return this.request('POST', '/linear-swap-api/v1/swap_cross_position_info', this.swap_api_root, params);
|
|
190
|
-
}
|
|
191
|
-
getSwapOpenOrders(params) {
|
|
192
|
-
// https://www.htx.com/zh-cn/opend/newApiPages/?id=8cb784d4-77b5-11ed-9966-0242ac110003
|
|
193
|
-
return this.request('POST', '/linear-swap-api/v1/swap_cross_openorders', this.swap_api_root, params);
|
|
194
|
-
}
|
|
195
|
-
getSpotAccountBalance(account_uid) {
|
|
196
|
-
// https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec40922-7773-11ed-9966-0242ac110003
|
|
197
|
-
return this.request('GET', `/v1/account/accounts/${account_uid}/balance`, this.spot_api_root);
|
|
198
|
-
}
|
|
199
|
-
getCrossMarginLoanInfo() {
|
|
200
|
-
// https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec41863-7773-11ed-9966-0242ac110003
|
|
201
|
-
return this.request('GET', '/v1/cross-margin/loan-info', this.spot_api_root);
|
|
202
|
-
}
|
|
203
|
-
getSpotTick(params) {
|
|
204
|
-
// https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec3fc25-7773-11ed-9966-0242ac110003
|
|
205
|
-
return this.request('GET', `/market/detail/merged`, this.spot_api_root, params);
|
|
206
|
-
}
|
|
207
|
-
postSpotOrder(params) {
|
|
208
|
-
// https://www.htx.com/zh-cn/opend/newApiPages/?id=10000065-77b7-11ed-9966-0242ac110003
|
|
209
|
-
return this.request('POST', `/v1/order/auto/place`, this.spot_api_root, params);
|
|
210
|
-
}
|
|
211
|
-
postSwapOrder(params) {
|
|
212
|
-
// https://www.htx.com/zh-cn/opend/newApiPages/?id=8cb77159-77b5-11ed-9966-0242ac110003
|
|
213
|
-
return this.request('POST', '/linear-swap-api/v1/swap_cross_order', this.swap_api_root, params);
|
|
214
|
-
}
|
|
215
|
-
getSpotAccountDepositAddresses(params) {
|
|
216
|
-
// https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec45fb7-7773-11ed-9966-0242ac110003
|
|
217
|
-
return this.request('GET', `/v2/account/deposit/address`, this.spot_api_root, params);
|
|
218
|
-
}
|
|
219
|
-
getAccountLedger(params) {
|
|
220
|
-
// https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec4610b-7773-11ed-9966-0242ac110003
|
|
221
|
-
return this.request('GET', `/v2/account/ledger`, this.spot_api_root, params);
|
|
222
|
-
}
|
|
223
|
-
postSuperMarginAccountTransferOut(params) {
|
|
224
|
-
// https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec41ff0-7773-11ed-9966-0242ac110003
|
|
225
|
-
return this.request('POST', `/v1/cross-margin/transfer-out`, this.spot_api_root, params);
|
|
226
|
-
}
|
|
227
|
-
postSuperMarginAccountTransferIn(params) {
|
|
228
|
-
// https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec41f0e-7773-11ed-9966-0242ac110003
|
|
229
|
-
return this.request('POST', `/v1/cross-margin/transfer-in`, this.spot_api_root, params);
|
|
230
|
-
}
|
|
231
|
-
postSpotAccountTransfer(params) {
|
|
232
|
-
// https://www.htx.com/zh-cn/opend/newApiPages/?id=10000095-77b7-11ed-9966-0242ac110003
|
|
233
|
-
return this.request('POST', `/v2/account/transfer`, this.spot_api_root, params);
|
|
234
|
-
}
|
|
235
|
-
postBorrow(params) {
|
|
236
|
-
// https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec41b5d-7773-11ed-9966-0242ac110003
|
|
237
|
-
return this.request('POST', `/v1/cross-margin/orders`, this.spot_api_root, params);
|
|
238
|
-
}
|
|
239
|
-
postWithdraw(params) {
|
|
240
|
-
// https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec42cfd-7773-11ed-9966-0242ac110003
|
|
241
|
-
return this.request('POST', `/v1/dw/withdraw/api/create`, this.spot_api_root, params);
|
|
242
|
-
}
|
|
243
|
-
getDepositWithdrawHistory(params) {
|
|
244
|
-
// https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec44f99-7773-11ed-9966-0242ac110003
|
|
245
|
-
return this.request(`GET`, `/v1/query/deposit-withdraw`, this.spot_api_root, params);
|
|
246
|
-
}
|
|
247
|
-
/**
|
|
248
|
-
* 获取合约的历史资金费率
|
|
249
|
-
*
|
|
250
|
-
* 接口权限: 读取
|
|
251
|
-
*
|
|
252
|
-
* https://www.htx.com/zh-cn/opend/newApiPages/?id=5d51f1f9-77b6-11ed-9966-0242ac110003
|
|
253
|
-
*/
|
|
254
|
-
getSwapHistoricalFundingRate(params) {
|
|
255
|
-
return this.request('GET', `/linear-swap-api/v1/swap_historical_funding_rate`, this.swap_api_root, params);
|
|
256
|
-
}
|
|
257
|
-
/**
|
|
258
|
-
* 资产划转(母子用户之间)
|
|
259
|
-
*
|
|
260
|
-
* 接口权限: 交易
|
|
261
|
-
*
|
|
262
|
-
* 限频: 2次/2s
|
|
263
|
-
*
|
|
264
|
-
* https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec45d8e-7773-11ed-9966-0242ac110003
|
|
265
|
-
*/
|
|
266
|
-
postSubUserTransfer(params) {
|
|
267
|
-
return this.request('POST', '/v1/subuser/transfer', this.spot_api_root, params);
|
|
268
|
-
}
|
|
269
|
-
/**
|
|
270
|
-
* 获取子用户列表
|
|
271
|
-
*
|
|
272
|
-
* 接口权限: 读取
|
|
273
|
-
*
|
|
274
|
-
* https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec48f09-7773-11ed-9966-0242ac110003
|
|
275
|
-
*/
|
|
276
|
-
getSubUserList(params) {
|
|
277
|
-
return this.request('GET', `/v2/sub-user/user-list`, this.spot_api_root, params);
|
|
278
|
-
}
|
|
279
|
-
/**
|
|
280
|
-
* 账户类型查询
|
|
281
|
-
*
|
|
282
|
-
* 是否验签: 是
|
|
283
|
-
*
|
|
284
|
-
* 接口权限: 读取
|
|
285
|
-
*
|
|
286
|
-
* 限频: 每个UID 3秒最多 144 次请求(交易接口3秒最多 72 次请求,查询接口3秒最多 72 次请求) (该UID的所有币种和不同到期日的合约的所有私有接口共享该限制) 。
|
|
287
|
-
*
|
|
288
|
-
* 接口描述: 此接口用于客户查询的账号类型,当前U本位合约有统一账户和非统一账户(全仓逐仓账户)类型。统一账户类型资产放在USDT一个账户上,全仓逐仓账户类型资产放在不同的币对。
|
|
289
|
-
* 统一账户类型为最新升级的,当前不支持API下单。若需要用用API下单请切换账户类型为非统一账户。
|
|
290
|
-
*
|
|
291
|
-
* https://www.htx.com/zh-cn/opend/newApiPages/?id=8cb71825-77b5-11ed-9966-0242ac110003
|
|
292
|
-
*/
|
|
293
|
-
getSwapUnifiedAccountType() {
|
|
294
|
-
return this.request('GET', '/linear-swap-api/v3/swap_unified_account_type', this.swap_api_root);
|
|
295
|
-
}
|
|
296
|
-
/**
|
|
297
|
-
* 账户类型更改接口
|
|
298
|
-
*
|
|
299
|
-
* 是否验签: 是
|
|
300
|
-
*
|
|
301
|
-
* 接口权限: 交易
|
|
302
|
-
*
|
|
303
|
-
* 限频: 每个UID 3秒最多 144 次请求(交易接口3秒最多 72 次请求,查询接口3秒最多 72 次请求) (该UID的所有币种和不同到期日的合约的所有私有接口共享该限制) 。
|
|
304
|
-
*
|
|
305
|
-
* 接口描述: 调用该接口前需要保证U本位合约无持仓和挂单,当由非统一账户(全仓逐仓账户)变为统一账户还需将资产从逐仓账户划转到全仓账户。
|
|
306
|
-
*
|
|
307
|
-
* https://www.htx.com/zh-cn/opend/newApiPages/?id=8cb7196b-77b5-11ed-9966-0242ac110003
|
|
308
|
-
*/
|
|
309
|
-
postSwapSwitchAccountType(params) {
|
|
310
|
-
return this.request('POST', '/linear-swap-api/v3/swap_switch_account_type', this.swap_api_root, params);
|
|
311
|
-
}
|
|
312
33
|
}
|
|
313
34
|
exports.HuobiClient = HuobiClient;
|
|
314
35
|
exports.client = new HuobiClient({
|
package/lib/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":";;;;;;AAAA,+CAAmE;AACnE,yCAA2C;AAC3C,+BAA8D;AAC9D,gDAAwB;AAExB,aAAa;AACb,0DAAiC;AAKjC,MAAM,sBAAsB,GAAG,CAAU,GAAW,EAAkB,EAAE;IACtE,MAAM,IAAI,GAAG,IAAA,6BAAkB,EAAC,GAAG,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CACnC,IAAA,UAAG,EAAC,CAAC,GAAG,EAAE,EAAE,CAAC,cAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAClC,IAAA,UAAG,EAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,EAC5B,IAAA,UAAG,EAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAC7B,IAAA,YAAK,GAAE,CACR,CAAC;IAEF,MAAM,OAAO,GAAG,IAAI,cAAO,EAAO,CAAC;IACnC,OAAO,CAAC,IAAI,CAAC,IAAA,UAAG,EAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxE,uCACK,IAAI,KACP,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,IAChB;AACJ,CAAC,CAAC;AAEF,MAAa,WAAW;IAQtB,YAAmB,MAAoB;QAApB,WAAM,GAAN,MAAM,CAAc;QAPvC,sDAAsD;QACtD,kBAAa,GAAG,cAAc,CAAC;QAC/B,sDAAsD;QACtD,kBAAa,GAAG,eAAe,CAAC;QAkOhC;;;;WAIG;QACH,6BAAwB,GAAG,CAAC,MAK3B,EAGE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,8CAA8C,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAiEtG;;;;;;;;;;WAUG;QACH,4BAAuB,GAAG,CAAC,MAE1B,EAaE,EAAE;YACH,uFAAuF;YACvF,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,6CAA6C,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QACxG,CAAC,CAAC;QAEF;;;;;;;;;;;;;;;;WAgBG;QACH,uBAAkB,GAAG,CAAC,MAGrB,EAoBE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,8BAA8B,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAEtF;;;;WAIG;QACH,wBAAmB,GAAG,CAAC,MAKtB,EAgBE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,wCAAwC,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAEhG;;;;;;;;;;;;;;;;WAgBG;QACH,qBAAgB,GAAG,CAAC,MAEnB,EAYE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,4BAA4B,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAuQpF;;;;WAIG;QACH,6BAAwB,GAAG,CAAC,MAG3B,EAiCE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,0BAA0B,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAElF;;;;WAIG;QACH,sBAAiB,GAAG,CAAC,MASpB,EAkBE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,qBAAqB,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAjwB3E,IAAI,CAAC,OAAO,GAAG,sBAAsB,CAAC,SAAS,IAAI,CAAC,aAAa,KAAK,CAAC,CAAC;QACxE,IAAA,WAAI,EAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;aACtB,IAAI;QACH,EAAE;QACF,IAAA,aAAM,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EACrB,IAAA,UAAG,EAAC,CAAC,CAAC,EAAE,EAAE;YACR,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9C,CAAC,CAAC,CACH;aACA,SAAS,EAAE,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,IAAY,EAAE,QAAgB,EAAE,MAAY;QACxE,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE7E,IAAI,MAAM,EAAE;YACV,MAAM,aAAa,GAAG,GACpB,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,SAAS;gBACtC,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;qBACvB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;qBACtC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;qBAC5B,IAAI,CAAC,GAAG,CAAC,EAAE;gBAChB,CAAC,CAAC,EACN,EAAE,CAAC;YAEH,MAAM,IAAI,GAAG,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAE5D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,WAAW,QAAQ,GAAG,IAAI,IAAI,aAAa,EAAE,CAAC,CAAC;YACnE,2BAA2B;YAC3B,OAAO,CAAC,IAAI,CAAC,IAAA,kBAAU,EAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAE7D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE;gBAChC,MAAM;gBACN,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,IAAI,SAAS;aACxB,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAChC,sEAAsE;YACtE,IAAI;gBACF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;aAC3B;YAAC,OAAO,CAAC,EAAE;gBACV,OAAO,CAAC,KAAK,CAAC,IAAA,kBAAU,EAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,oBAAoB,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;gBAClG,MAAM,CAAC,CAAC;aACT;SACF;QAED,MAAM,aAAa,GAAG,eACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UACnB,4DAA4D,kBAAkB,CAC5E,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CACvC,GACC,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,SAAS;YACtC,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;iBACvB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;iBACtC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;iBAC5B,IAAI,CAAC,GAAG,CAAC,EAAE;YAChB,CAAC,CAAC,EACN,EAAE,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAE5D,MAAM,aAAa,GAAG,GAAG,MAAM,KAAK,QAAQ,KAAK,IAAI,KAAK,aAAa,EAAE,CAAC;QAE1E,MAAM,GAAG,GAAG,mBAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CACvC,mBAAQ,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAChE,CAAC;QAEF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,WAAW,QAAQ,GAAG,IAAI,IAAI,aAAa,cAAc,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACxG,2BAA2B;QAC3B,OAAO,CAAC,IAAI,CAAC,IAAA,kBAAU,EAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE;YAChC,MAAM;YACN,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,IAAI,SAAS;SACxB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAChC,sEAAsE;QACtE,IAAI;YACF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;SAC3B;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,IAAA,kBAAU,EAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,oBAAoB,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;YAClG,MAAM,CAAC,CAAC;SACT;IACH,CAAC;IAED,kFAAkF;IAElF,UAAU;QASR,uFAAuF;QACvF,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,sBAAsB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IACzE,CAAC;IAED,2BAA2B,CAAC,MAM3B;QAmBC,uFAAuF;QACvF,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,wCAAwC,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACnG,CAAC;IAED,cAAc;QAyCZ,uFAAuF;QACvF,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,6BAA6B,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAChF,CAAC;IAED,MAAM;QACJ,uFAAuF;QACvF,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IACjE,CAAC;IAED,qBAAqB;QAYnB,uFAAuF;QACvF,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,0CAA0C,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAC7F,CAAC;IAED,wBAAwB,CAAC,MAIxB;QAgBC,uFAAuF;QACvF,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,8CAA8C,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAC1G,CAAC;IAiBD,iBAAiB,CAAC,MAOjB;QAgBC,uFAAuF;QACvF,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,2CAA2C,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACvG,CAAC;IAED,qBAAqB,CAAC,WAAmB;QAUvC,uFAAuF;QACvF,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,wBAAwB,WAAW,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAChG,CAAC;IAED,sBAAsB;QAQpB,uFAAuF;QACvF,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,4BAA4B,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAC/E,CAAC;IAED,WAAW,CAAC,MAA0B;QAMpC,uFAAuF;QACvF,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,uBAAuB,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAClF,CAAC;IAwID,aAAa,CAAC,MAUb;QACC,uFAAuF;QACvF,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,sBAAsB,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAClF,CAAC;IAED,aAAa,CAAC,MASb;QACC,uFAAuF;QACvF,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,sCAAsC,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAClG,CAAC;IAED,8BAA8B,CAAC,MAA4B;QASzD,uFAAuF;QACvF,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,6BAA6B,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACxF,CAAC;IAED,gBAAgB,CAAC,MAA+C;QAO9D,uFAAuF;QACvF,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,oBAAoB,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAC/E,CAAC;IAED,iCAAiC,CAAC,MAGjC;QACC,uFAAuF;QACvF,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,+BAA+B,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAC3F,CAAC;IAED,gCAAgC,CAAC,MAGhC;QACC,uFAAuF;QACvF,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,8BAA8B,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAC1F,CAAC;IAED,uBAAuB,CAAC,MAMvB;QACC,uFAAuF;QACvF,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,sBAAsB,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAClF,CAAC;IAED,UAAU,CAAC,MAA4C;QAIrD,uFAAuF;QACvF,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,yBAAyB,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACrF,CAAC;IAED,YAAY,CAAC,MAMZ;QAIC,uFAAuF;QACvF,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,4BAA4B,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACxF,CAAC;IAED,yBAAyB,CAAC,MAMzB;QAmBC,uFAAuF;QACvF,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,4BAA4B,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACvF,CAAC;IAED;;;;;;OAMG;IACH,4BAA4B,CAAC,MAI5B;QAkBC,OAAO,IAAI,CAAC,OAAO,CACjB,KAAK,EACL,kDAAkD,EAClD,IAAI,CAAC,aAAa,EAClB,MAAM,CACP,CAAC;IACJ,CAAC;IAED;;;;;;;;OAQG;IACH,mBAAmB,CAAC,MAMnB;QAIC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,sBAAsB,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAClF,CAAC;IAED;;;;;;OAMG;IACH,cAAc,CAAC,MAA4B;QAYzC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,wBAAwB,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACnF,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,yBAAyB;QAQvB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,+CAA+C,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAClG,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,yBAAyB,CAAC,MAAgC;QAQxD,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,8CAA8C,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAC1G,CAAC;CA8EF;AA3wBD,kCA2wBC;AAEY,QAAA,MAAM,GAAG,IAAI,WAAW,CAAC;IACpC,IAAI,EAAE;QACJ,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,UAAW;QACnC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,UAAW;KACpC;CACF,CAAC,CAAC","sourcesContent":["import { IConnection, createConnectionWs } from '@yuants/protocol';\nimport { formatTime } from '@yuants/utils';\nimport { Subject, filter, from, map, share, tap } from 'rxjs';\nimport zlib from 'zlib';\n\n// @ts-ignore\nimport CryptoJS from 'crypto-js';\ninterface IHuobiParams {\n auth: { access_key: string; secret_key: string };\n}\n\nconst createConnectionGzipWS = <T = any>(URL: string): IConnection<T> => {\n const conn = createConnectionWs(URL);\n const input$ = from(conn.input$).pipe(\n map((msg) => zlib.gunzipSync(msg)),\n map((msg) => msg.toString()),\n map((msg) => JSON.parse(msg)),\n share(),\n );\n\n const output$ = new Subject<any>();\n output$.pipe(map((msg) => JSON.stringify(msg))).subscribe(conn.output$);\n return {\n ...conn,\n input$: input$,\n output$: output$,\n };\n};\n\nexport class HuobiClient {\n // https://www.htx.com/zh-cn/opend/newApiPages/?id=510\n swap_api_root = 'api.hbdm.com';\n // https://www.htx.com/zh-cn/opend/newApiPages/?id=404\n spot_api_root = 'api.huobi.pro';\n\n spot_ws: IConnection<any>;\n\n constructor(public params: IHuobiParams) {\n this.spot_ws = createConnectionGzipWS(`wss://${this.spot_api_root}/ws`);\n from(this.spot_ws.input$)\n .pipe(\n //\n filter((v) => v.ping),\n tap((v) => {\n this.spot_ws.output$.next({ pong: v.ping });\n }),\n )\n .subscribe();\n }\n\n async request(method: string, path: string, api_root: string, params?: any) {\n const noAuth = !(this.params.auth.access_key && this.params.auth.secret_key);\n\n if (noAuth) {\n const requestParams = `${\n method === 'GET' && params !== undefined\n ? `&${Object.entries(params)\n .sort(([a], [b]) => a.localeCompare(b))\n .map(([k, v]) => `${k}=${v}`)\n .join('&')}`\n : ''\n }`;\n\n const body = method === 'GET' ? '' : JSON.stringify(params);\n\n const url = new URL(`https://${api_root}${path}?${requestParams}`);\n // url.searchParams.sort();\n console.info(formatTime(Date.now()), method, url.href, body);\n\n const res = await fetch(url.href, {\n method,\n headers: { 'Content-Type': 'application/json' },\n body: body || undefined,\n });\n\n const retStr = await res.text();\n // console.info(formatTime(Date.now()), 'response', url.href, retStr);\n try {\n return JSON.parse(retStr);\n } catch (e) {\n console.error(formatTime(Date.now()), 'huobiRequestFailed', path, JSON.stringify(params), retStr);\n throw e;\n }\n }\n\n const requestParams = `AccessKeyId=${\n this.params.auth.access_key\n }&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=${encodeURIComponent(\n new Date().toISOString().split('.')[0],\n )}${\n method === 'GET' && params !== undefined\n ? `&${Object.entries(params)\n .sort(([a], [b]) => a.localeCompare(b))\n .map(([k, v]) => `${k}=${v}`)\n .join('&')}`\n : ''\n }`;\n\n const body = method === 'GET' ? '' : JSON.stringify(params);\n\n const requestString = `${method}\\n${api_root}\\n${path}\\n${requestParams}`;\n\n const str = CryptoJS.enc.Base64.stringify(\n CryptoJS.HmacSHA256(requestString, this.params.auth.secret_key),\n );\n\n const url = new URL(`https://${api_root}${path}?${requestParams}&Signature=${encodeURIComponent(str)}`);\n // url.searchParams.sort();\n console.info(formatTime(Date.now()), method, url.href, body);\n const res = await fetch(url.href, {\n method,\n headers: { 'Content-Type': 'application/json' },\n body: body || undefined,\n });\n\n const retStr = await res.text();\n // console.info(formatTime(Date.now()), 'response', url.href, retStr);\n try {\n return JSON.parse(retStr);\n } catch (e) {\n console.error(formatTime(Date.now()), 'huobiRequestFailed', path, JSON.stringify(params), retStr);\n throw e;\n }\n }\n\n // swap_ws = new WebSocket(new URL(`wss://${this.swap_api_root}/linear-swap-ws`));\n\n getAccount(): Promise<{\n status: string;\n data: {\n id: number;\n type: string;\n state: string;\n subtype: string;\n }[];\n }> {\n // https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec40743-7773-11ed-9966-0242ac110003\n return this.request('GET', '/v1/account/accounts', this.spot_api_root);\n }\n\n getPerpetualContractSymbols(params?: {\n contract_code?: string;\n support_margin_mode?: string;\n pair?: string;\n contract_type?: string;\n business_type?: string;\n }): Promise<{\n status: string;\n data: {\n symbol: string;\n contract_code: string;\n contract_size: number;\n price_tick: number;\n settlement_date: string;\n delivery_time: string;\n create_date: string;\n contract_status: number;\n support_margin_mode: string;\n contract_type: string;\n pair: string;\n business_type: string;\n dilivery_date: string;\n }[];\n ts: string;\n }> {\n // https://www.htx.com/zh-cn/opend/newApiPages/?id=8cb72f34-77b5-11ed-9966-0242ac110003\n return this.request('GET', '/linear-swap-api/v1/swap_contract_info', this.swap_api_root, params);\n }\n\n getSpotSymbols(): Promise<{\n status: string;\n data: {\n si: string;\n scr: string;\n sc: string;\n dn: string;\n bc: string;\n bcdn: string;\n qc: string;\n qcdn: string;\n state: string;\n whe: boolean;\n cd: boolean;\n te: boolean;\n toa: number;\n sp: string;\n w: number;\n ttp: number;\n tap: number;\n tpp: number;\n fp: number;\n suspend_desc: string;\n transfer_board_desc: string;\n tags: string;\n lr: number;\n smlr: number;\n flr: string;\n wr: string;\n d: number;\n elr: number;\n p: any;\n castate: string;\n ca1oa: number;\n ca2oa: number;\n }[];\n ts: string;\n full: number;\n err_code: string;\n err_msg: string;\n }> {\n // https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec47f16-7773-11ed-9966-0242ac110003\n return this.request('GET', '/v2/settings/common/symbols', this.spot_api_root);\n }\n\n getUid(): Promise<{ data: number; code: number }> {\n // https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec491c9-7773-11ed-9966-0242ac110003\n return this.request('GET', '/v2/user/uid', this.spot_api_root);\n }\n\n getUnifiedAccountInfo(): Promise<{\n status: string;\n code: number;\n msg: string;\n data: {\n margin_asset: string;\n margin_balance: number;\n cross_margin_static: number;\n cross_profit_unreal: number;\n withdraw_available: number;\n }[];\n }> {\n // https://www.htx.com/zh-cn/opend/newApiPages/?id=10000073-77b7-11ed-9966-0242ac110003\n return this.request('GET', '/linear-swap-api/v3/unified_account_info', this.swap_api_root);\n }\n\n getSwapCrossPositionInfo(params?: {\n contract_code?: string;\n pair?: string;\n contract_type: string;\n }): Promise<{\n status: string;\n ts: number;\n data: {\n contract_code: string;\n contract_type: string;\n direction: string;\n margin_mode: string;\n volume: number;\n available: number;\n cost_hold: number;\n last_price: number;\n profit_unreal: number;\n lever_rate: number;\n }[];\n }> {\n // https://www.htx.com/zh-cn/opend/newApiPages/?id=8cb74963-77b5-11ed-9966-0242ac110003\n return this.request('POST', '/linear-swap-api/v1/swap_cross_position_info', this.swap_api_root, params);\n }\n\n /**\n * 【全仓】获取平台阶梯保证金\n *\n * https://www.htx.com/zh-cn/opend/newApiPages/?id=8cb72290-77b5-11ed-9966-0242ac110003\n */\n getSwapCrossLadderMargin = (params?: {\n contract_code?: string;\n pair?: string;\n contract_type?: string;\n business_type?: string;\n }): Promise<{\n status: string;\n data: Array<{ contract_code: string; pair: string; list: Array<{ lever_rate: number }> }>;\n }> => this.request('GET', '/linear-swap-api/v1/swap_cross_ladder_margin', this.swap_api_root, params);\n\n getSwapOpenOrders(params?: {\n contract_code?: string;\n pair?: string;\n page_index?: number;\n page_size?: number;\n sort_by?: string;\n trade_type?: string;\n }): Promise<{\n status: string;\n data: {\n orders: {\n order_id_str: string;\n contract_code: string;\n order_price_type: string;\n direction: string;\n offset: string;\n volume: number;\n created_at: number;\n price: number;\n trade_volume: number;\n }[];\n };\n }> {\n // https://www.htx.com/zh-cn/opend/newApiPages/?id=8cb784d4-77b5-11ed-9966-0242ac110003\n return this.request('POST', '/linear-swap-api/v1/swap_cross_openorders', this.swap_api_root, params);\n }\n\n getSpotAccountBalance(account_uid: number): Promise<{\n status: string;\n data: {\n list: {\n currency: string;\n balance: string;\n type: string;\n }[];\n };\n }> {\n // https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec40922-7773-11ed-9966-0242ac110003\n return this.request('GET', `/v1/account/accounts/${account_uid}/balance`, this.spot_api_root);\n }\n\n getCrossMarginLoanInfo(): Promise<{\n status: string;\n code: number;\n data: {\n currency: string;\n 'loanable-amt': string;\n }[];\n }> {\n // https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec41863-7773-11ed-9966-0242ac110003\n return this.request('GET', '/v1/cross-margin/loan-info', this.spot_api_root);\n }\n\n getSpotTick(params: { symbol: string }): Promise<{\n status: string;\n tick: {\n close: number;\n };\n }> {\n // https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec3fc25-7773-11ed-9966-0242ac110003\n return this.request('GET', `/market/detail/merged`, this.spot_api_root, params);\n }\n\n /**\n * 【通用】批量获取合约资金费率\n *\n * 接口权限: 读取\n *\n * 限频: 其他非行情类的公开接口,比如获取指数信息,限价信息,交割结算、平台持仓信息等,所有用户都是每个IP3秒最多240次请求(所有该IP的非行情类的公开接口请求共享3秒240次的额度)\n *\n * 接口描述: 该接口支持全仓模式和逐仓模式\n *\n * https://www.htx.com/zh-cn/opend/newApiPages/?id=8cb71b45-77b5-11ed-9966-0242ac110003\n */\n getSwapBatchFundingRate = (params: {\n contract_code?: string;\n }): Promise<{\n status: string;\n ts: number;\n data: {\n estimated_rate: null;\n funding_rate: string;\n contract_code: string;\n symbol: string;\n fee_asset: string;\n funding_time: string;\n next_funding_time: null;\n trade_partition: string;\n }[];\n }> => {\n // https://www.htx.com/zh-cn/opend/newApiPages/?id=8cb7a7b5-77b5-11ed-9966-0242ac110003\n return this.request('GET', `/linear-swap-api/v1/swap_batch_funding_rate`, this.swap_api_root, params);\n };\n\n /**\n * 【通用】获取市场最近成交记录\n *\n * 接口权限: 读取\n *\n * 限频: 行情类的公开接口,比如:获取K线数据、获取聚合行情、市场行情、获取行情深度数据、获取溢价指数K线、获取实时预测资金费率k线,获取基差数据、获取市场最近成交记录:\n *\n * (1) restful接口:同一个IP, 所有业务(交割合约、币本位永续合约和U本位合约)总共1秒最多800个请求\n *\n * 接口描述: 该接口支持全仓模式和逐仓模式\n *\n * 请求参数contract_code支持交割合约代码,格式为BTC-USDT-210625;同时支持合约标识,格式为 BTC-USDT(永续)、BTC-USDT-CW(当周)、BTC-USDT-NW(次周)、BTC-USDT-CQ(当季)、BTC-USDT-NQ(次季)。\n *\n * business_type 在查询交割合约数据时为必填参数。且参数值要传:futures 或 all 。\n *\n * https://www.htx.com/zh-cn/opend/newApiPages/?id=8cb73c34-77b5-11ed-9966-0242ac110003\n */\n getSwapMarketTrade = (params: {\n contract_code?: string;\n business_type?: string;\n }): Promise<{\n ch: string;\n status: string;\n tick: {\n data: {\n amount: string;\n quantity: string;\n trade_turnover: string;\n ts: number;\n id: number;\n price: string;\n direction: string;\n contract_code: string;\n business_type: string;\n trade_partition: string;\n }[];\n id: number;\n ts: number;\n };\n ts: number;\n }> => this.request('GET', `/linear-swap-ex/market/trade`, this.swap_api_root, params);\n\n /**\n * 获得当前合约的总持仓量\n *\n * https://huobiapi.github.io/docs/usdt_swap/v1/cn/#3218e7531a\n */\n getSwapOpenInterest = (params: {\n contract_code?: string;\n pair?: string;\n contract_type?: string;\n business_type?: string;\n }): Promise<{\n status: string;\n data: {\n volume: number;\n amount: number;\n symbol: string;\n value: number;\n contract_code: string;\n trade_amount: number;\n trade_volume: number;\n trade_turnover: number;\n business_type: string;\n pair: string;\n contract_type: string;\n }[];\n ts: number;\n }> => this.request('GET', '/linear-swap-api/v1/swap_open_interest', this.swap_api_root, params);\n\n /**\n * 【通用】获取市场最优挂单\n *\n * 接口权限: 读取\n *\n * 限频: 行情类的公开接口,比如:获取K线数据、获取聚合行情、市场行情、获取行情深度数据、获取溢价指数K线、获取实时预测资金费率k线,获取基差数据、获取市场最近成交记录:\n *\n * (1) restful接口:同一个IP, 所有业务(交割合约、币本位永续合约和U本位合约)总共1秒最多800个请求\n *\n * 接口描述: 该接口支持全仓模式和逐仓模式\n *\n * 请求参数contract_code支持交割合约代码,格式为BTC-USDT-210625;同时支持合约标识,格式为 BTC-USDT(永续)、BTC-USDT-CW(当周)、BTC-USDT-NW(次周)、BTC-USDT-CQ(当季)、BTC-USDT-NQ(次季)。\n *\n * business_type 在查询交割合约数据时为必填参数。且参数值要传:futures 或 all 。\n *\n * https://www.htx.com/zh-cn/opend/newApiPages/?id=8cb735e0-77b5-11ed-9966-0242ac110003\n */\n getSwapMarketBbo = (params: {\n contract_code?: string;\n }): Promise<{\n status: string;\n ticks: {\n trade_partition: string;\n business_type: string;\n contract_code: string;\n ask: number[] | null;\n bid: number[] | null;\n mrid: number;\n ts: number;\n }[];\n ts: number;\n }> => this.request('GET', `/linear-swap-ex/market/bbo`, this.swap_api_root, params);\n\n postSpotOrder(params: {\n symbol: string;\n 'account-id': string;\n amount: string;\n market_amount?: string;\n 'borrow-amount'?: string;\n type: string;\n 'trade-purpose': string;\n price?: string;\n source: string;\n }): Promise<{ success: boolean; code: number; message: string }> {\n // https://www.htx.com/zh-cn/opend/newApiPages/?id=10000065-77b7-11ed-9966-0242ac110003\n return this.request('POST', `/v1/order/auto/place`, this.spot_api_root, params);\n }\n\n postSwapOrder(params: {\n contract_code: string;\n contract_type: string;\n price?: number;\n volume: number;\n offset: string;\n direction: string;\n lever_rate: number;\n order_price_type: string;\n }): Promise<{ status: string; ts: number; data: { order_id: number; order_id_str: string } }> {\n // https://www.htx.com/zh-cn/opend/newApiPages/?id=8cb77159-77b5-11ed-9966-0242ac110003\n return this.request('POST', '/linear-swap-api/v1/swap_cross_order', this.swap_api_root, params);\n }\n\n getSpotAccountDepositAddresses(params: { currency: string }): Promise<{\n code: number;\n message: string;\n data: {\n currency: string;\n chain: string;\n address: string;\n }[];\n }> {\n // https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec45fb7-7773-11ed-9966-0242ac110003\n return this.request('GET', `/v2/account/deposit/address`, this.spot_api_root, params);\n }\n\n getAccountLedger(params: { accountId: string; currency: string }): Promise<{\n status: string;\n data: {\n transactTime: number;\n transactAmt: number;\n }[];\n }> {\n // https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec4610b-7773-11ed-9966-0242ac110003\n return this.request('GET', `/v2/account/ledger`, this.spot_api_root, params);\n }\n\n postSuperMarginAccountTransferOut(params: {\n currency: string;\n amount: string;\n }): Promise<{ status: string; data: number }> {\n // https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec41ff0-7773-11ed-9966-0242ac110003\n return this.request('POST', `/v1/cross-margin/transfer-out`, this.spot_api_root, params);\n }\n\n postSuperMarginAccountTransferIn(params: {\n currency: string;\n amount: string;\n }): Promise<{ status: string; data: number }> {\n // https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec41f0e-7773-11ed-9966-0242ac110003\n return this.request('POST', `/v1/cross-margin/transfer-in`, this.spot_api_root, params);\n }\n\n postSpotAccountTransfer(params: {\n from: string;\n to: string;\n currency: string;\n amount: number;\n 'margin-account': string;\n }): Promise<{ success: boolean; data: number; code: number; message: string }> {\n // https://www.htx.com/zh-cn/opend/newApiPages/?id=10000095-77b7-11ed-9966-0242ac110003\n return this.request('POST', `/v2/account/transfer`, this.spot_api_root, params);\n }\n\n postBorrow(params: { currency: string; amount: string }): Promise<{\n status: string;\n data: number;\n }> {\n // https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec41b5d-7773-11ed-9966-0242ac110003\n return this.request('POST', `/v1/cross-margin/orders`, this.spot_api_root, params);\n }\n\n postWithdraw(params: {\n address: string;\n amount: string;\n currency: string;\n fee: string;\n chain: string;\n }): Promise<{\n status: string;\n data: number;\n }> {\n // https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec42cfd-7773-11ed-9966-0242ac110003\n return this.request('POST', `/v1/dw/withdraw/api/create`, this.spot_api_root, params);\n }\n\n getDepositWithdrawHistory(params: {\n currency: string;\n type: string;\n from?: string;\n size?: string;\n direct?: string;\n }): Promise<{\n status: string;\n 'error-code': string;\n 'error-msg': string;\n data: {\n id: number;\n type: string;\n currency: string;\n 'tx-hash': string;\n chain: string;\n amount: string;\n address: string;\n 'address-tag': string;\n fee: string;\n state: string;\n 'create-at': number;\n 'update-at': number;\n }[];\n }> {\n // https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec44f99-7773-11ed-9966-0242ac110003\n return this.request(`GET`, `/v1/query/deposit-withdraw`, this.spot_api_root, params);\n }\n\n /**\n * 获取合约的历史资金费率\n *\n * 接口权限: 读取\n *\n * https://www.htx.com/zh-cn/opend/newApiPages/?id=5d51f1f9-77b6-11ed-9966-0242ac110003\n */\n getSwapHistoricalFundingRate(params: {\n contract_code: string;\n page_index?: number;\n page_size?: number;\n }): Promise<{\n status: string;\n ts: number;\n data: {\n data: {\n symbol: string;\n contract_code: string;\n fee_asset: string;\n funding_time: string;\n funding_rate: string;\n realized_rate: string;\n avg_premium_index: string;\n }[];\n total_page: number;\n current_page: number;\n total_size: number;\n };\n }> {\n return this.request(\n 'GET',\n `/linear-swap-api/v1/swap_historical_funding_rate`,\n this.swap_api_root,\n params,\n );\n }\n\n /**\n * 资产划转(母子用户之间)\n *\n * 接口权限: 交易\n *\n * 限频: 2次/2s\n *\n * https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec45d8e-7773-11ed-9966-0242ac110003\n */\n postSubUserTransfer(params: {\n 'sub-uid': number;\n currency: string;\n amount: number;\n 'client-order-id'?: string;\n type: string;\n }): Promise<{\n data: number;\n status: string;\n }> {\n return this.request('POST', '/v1/subuser/transfer', this.spot_api_root, params);\n }\n\n /**\n * 获取子用户列表\n *\n * 接口权限: 读取\n *\n * https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec48f09-7773-11ed-9966-0242ac110003\n */\n getSubUserList(params?: { fromId?: number }): Promise<{\n code: number;\n message?: string;\n data: {\n uid: number;\n userState: string;\n subUserName: string;\n note: string;\n }[];\n nextId?: number;\n ok: boolean;\n }> {\n return this.request('GET', `/v2/sub-user/user-list`, this.spot_api_root, params);\n }\n\n /**\n * 账户类型查询\n *\n * 是否验签: 是\n *\n * 接口权限: 读取\n *\n * 限频: 每个UID 3秒最多 144 次请求(交易接口3秒最多 72 次请求,查询接口3秒最多 72 次请求) (该UID的所有币种和不同到期日的合约的所有私有接口共享该限制) 。\n *\n * 接口描述: 此接口用于客户查询的账号类型,当前U本位合约有统一账户和非统一账户(全仓逐仓账户)类型。统一账户类型资产放在USDT一个账户上,全仓逐仓账户类型资产放在不同的币对。\n * 统一账户类型为最新升级的,当前不支持API下单。若需要用用API下单请切换账户类型为非统一账户。\n *\n * https://www.htx.com/zh-cn/opend/newApiPages/?id=8cb71825-77b5-11ed-9966-0242ac110003\n */\n getSwapUnifiedAccountType(): Promise<{\n code: number;\n msg: string;\n ts: number;\n data: {\n account_type: number;\n };\n }> {\n return this.request('GET', '/linear-swap-api/v3/swap_unified_account_type', this.swap_api_root);\n }\n\n /**\n * 账户类型更改接口\n *\n * 是否验签: 是\n *\n * 接口权限: 交易\n *\n * 限频: 每个UID 3秒最多 144 次请求(交易接口3秒最多 72 次请求,查询接口3秒最多 72 次请求) (该UID的所有币种和不同到期日的合约的所有私有接口共享该限制) 。\n *\n * 接口描述: 调用该接口前需要保证U本位合约无持仓和挂单,当由非统一账户(全仓逐仓账户)变为统一账户还需将资产从逐仓账户划转到全仓账户。\n *\n * https://www.htx.com/zh-cn/opend/newApiPages/?id=8cb7196b-77b5-11ed-9966-0242ac110003\n */\n postSwapSwitchAccountType(params: { account_type: number }): Promise<{\n code: number;\n msg: string;\n ts: number;\n data: {\n account_type: number;\n };\n }> {\n return this.request('POST', '/linear-swap-api/v3/swap_switch_account_type', this.swap_api_root, params);\n }\n\n /**\n * APIv2币链参考信息\n *\n * https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec478f0-7773-11ed-9966-0242ac110003\n */\n getV2ReferenceCurrencies = (params: {\n currency?: string;\n authorizedUser?: string;\n }): Promise<{\n code: number;\n data: {\n currency: string;\n assetType: number;\n chains: {\n chain: string;\n displayName: string;\n fullName: string;\n baseChain?: string;\n baseChainProtocol?: string;\n isDynamic?: boolean;\n numOfConfirmations: number;\n numOfFastConfirmations: number;\n depositStatus: string;\n minDepositAmt: string;\n withdrawStatus: string;\n minWithdrawAmt: string;\n withdrawPrecision: number;\n maxWithdrawAmt: string;\n withdrawQuotaPerDay: string;\n withdrawQuotaPerYear: null;\n withdrawQuotaTotal: null;\n withdrawFeeType: string;\n transactFeeWithdraw?: string;\n addrWithTag: boolean;\n addrDepositTag: boolean;\n minTransactFeeWithdraw?: string;\n transactFeeRateWithdraw?: string;\n maxTransactFeeWithdraw?: string;\n }[];\n instStatus: string;\n }[];\n }> => this.request('GET', '/v2/reference/currencies', this.spot_api_root, params);\n\n /**\n * APIv2币链参考信息\n *\n * https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec41049-7773-11ed-9966-0242ac110003\n */\n getAccountHistory = (params: {\n 'account-id': string;\n currency?: string;\n 'transact-types'?: number;\n 'start-time'?: number;\n 'end-time'?: number;\n sort?: 'asc' | 'desc';\n size?: number;\n 'from-id'?: number;\n }): Promise<{\n // code: number;\n 'transact-amt': string;\n 'avail-balance': string;\n 'acct-balance': string;\n 'transact-time': string;\n 'record-id': string;\n status: string;\n data: {\n 'account-id': string;\n currency: string;\n 'record-id': string;\n 'transact-amt': string;\n 'transact-type': string;\n 'avail-balance': string;\n 'acct-balance': string;\n 'transact-time': string;\n }[];\n }> => this.request('GET', '/v1/account/history', this.spot_api_root, params);\n}\n\nexport const client = new HuobiClient({\n auth: {\n access_key: process.env.ACCESS_KEY!,\n secret_key: process.env.SECRET_KEY!,\n },\n});\n"]}
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":";;;;;;AAAA,+CAAmE;AACnE,+BAA8D;AAC9D,gDAAwB;AAOxB,MAAM,sBAAsB,GAAG,CAAU,GAAW,EAAkB,EAAE;IACtE,MAAM,IAAI,GAAG,IAAA,6BAAkB,EAAC,GAAG,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CACnC,IAAA,UAAG,EAAC,CAAC,GAAG,EAAE,EAAE,CAAC,cAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAClC,IAAA,UAAG,EAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,EAC5B,IAAA,UAAG,EAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAC7B,IAAA,YAAK,GAAE,CACR,CAAC;IAEF,MAAM,OAAO,GAAG,IAAI,cAAO,EAAO,CAAC;IACnC,OAAO,CAAC,IAAI,CAAC,IAAA,UAAG,EAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxE,uCACK,IAAI,KACP,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,IAChB;AACJ,CAAC,CAAC;AAEF,MAAa,WAAW;IAQtB,YAAmB,MAAoB;QAApB,WAAM,GAAN,MAAM,CAAc;QAPvC,sDAAsD;QACtD,kBAAa,GAAG,cAAc,CAAC;QAC/B,sDAAsD;QACtD,kBAAa,GAAG,eAAe,CAAC;QAK9B,IAAI,CAAC,OAAO,GAAG,sBAAsB,CAAC,SAAS,IAAI,CAAC,aAAa,KAAK,CAAC,CAAC;QACxE,IAAA,WAAI,EAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;aACtB,IAAI;QACH,EAAE;QACF,IAAA,aAAM,EAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EACrB,IAAA,UAAG,EAAC,CAAC,CAAC,EAAE,EAAE;YACR,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9C,CAAC,CAAC,CACH;aACA,SAAS,EAAE,CAAC;IACjB,CAAC;CAGF;AAtBD,kCAsBC;AAEY,QAAA,MAAM,GAAG,IAAI,WAAW,CAAC;IACpC,IAAI,EAAE;QACJ,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,UAAW;QACnC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,UAAW;KACpC;CACF,CAAC,CAAC","sourcesContent":["import { IConnection, createConnectionWs } from '@yuants/protocol';\nimport { Subject, filter, from, map, share, tap } from 'rxjs';\nimport zlib from 'zlib';\nimport { ICredential } from './api/private-api';\n\ninterface IHuobiParams {\n auth: ICredential;\n}\n\nconst createConnectionGzipWS = <T = any>(URL: string): IConnection<T> => {\n const conn = createConnectionWs(URL);\n const input$ = from(conn.input$).pipe(\n map((msg) => zlib.gunzipSync(msg)),\n map((msg) => msg.toString()),\n map((msg) => JSON.parse(msg)),\n share(),\n );\n\n const output$ = new Subject<any>();\n output$.pipe(map((msg) => JSON.stringify(msg))).subscribe(conn.output$);\n return {\n ...conn,\n input$: input$,\n output$: output$,\n };\n};\n\nexport class HuobiClient {\n // https://www.htx.com/zh-cn/opend/newApiPages/?id=510\n swap_api_root = 'api.hbdm.com';\n // https://www.htx.com/zh-cn/opend/newApiPages/?id=404\n spot_api_root = 'api.huobi.pro';\n\n spot_ws: IConnection<any>;\n\n constructor(public params: IHuobiParams) {\n this.spot_ws = createConnectionGzipWS(`wss://${this.spot_api_root}/ws`);\n from(this.spot_ws.input$)\n .pipe(\n //\n filter((v) => v.ping),\n tap((v) => {\n this.spot_ws.output$.next({ pong: v.ping });\n }),\n )\n .subscribe();\n }\n\n // swap_ws = new WebSocket(new URL(`wss://${this.swap_api_root}/linear-swap-ws`));\n}\n\nexport const client = new HuobiClient({\n auth: {\n access_key: process.env.ACCESS_KEY!,\n secret_key: process.env.SECRET_KEY!,\n },\n});\n"]}
|
package/lib/index.d.ts
CHANGED
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,OAAO,iBAAiB,CAAC;AAEzB,OAAO,kCAAkC,CAAC;AAC1C,OAAO,SAAS,CAAC"}
|