@yuants/vendor-huobi 0.18.3 → 0.18.5
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/api/private-api.js +50 -25
- package/dist/api/private-api.js.map +1 -1
- package/dist/api/public-api.js +86 -16
- package/dist/api/public-api.js.map +1 -1
- package/lib/api/private-api.d.ts +0 -1
- package/lib/api/private-api.d.ts.map +1 -1
- package/lib/api/private-api.js +50 -26
- package/lib/api/private-api.js.map +1 -1
- package/lib/api/public-api.d.ts +1 -1
- package/lib/api/public-api.d.ts.map +1 -1
- package/lib/api/public-api.js +85 -15
- package/lib/api/public-api.js.map +1 -1
- package/package.json +15 -15
- package/temp/package-deps.json +19 -19
package/lib/api/public-api.js
CHANGED
|
@@ -5,8 +5,32 @@ const utils_1 = require("@yuants/utils");
|
|
|
5
5
|
// Huobi API 根域名
|
|
6
6
|
const SWAP_API_ROOT = 'api.hbdm.com';
|
|
7
7
|
const SPOT_API_ROOT = 'api.huobi.pro';
|
|
8
|
+
const acquire = (bucketId, meta) => {
|
|
9
|
+
const bucket = (0, utils_1.tokenBucket)(bucketId);
|
|
10
|
+
(0, utils_1.scopeError)('HUOBI_API_RATE_LIMIT', Object.assign(Object.assign({}, meta), { bucketId }), () => bucket.acquireSync(1));
|
|
11
|
+
};
|
|
12
|
+
// https://www.htx.com/zh-cn/opend/newApiPages/?id=474
|
|
13
|
+
// 行情类:同一个 IP,总共 1s 最多 800 个请求(合约业务共享总额度)
|
|
14
|
+
const marketDataIPAllBucketId = 'HUOBI_PUBLIC_MARKET_IP_1S_ALL';
|
|
15
|
+
(0, utils_1.tokenBucket)(marketDataIPAllBucketId, {
|
|
16
|
+
capacity: 800,
|
|
17
|
+
refillInterval: 1000,
|
|
18
|
+
refillAmount: 800,
|
|
19
|
+
});
|
|
20
|
+
// 行情类:按业务线拆分(用于交割/币本位永续/U本位分开限频)
|
|
21
|
+
const marketDataSpotBucketId = 'HUOBI_PUBLIC_MARKET_IP_1S_SPOT';
|
|
22
|
+
(0, utils_1.tokenBucket)(marketDataSpotBucketId, { capacity: 800, refillInterval: 1000, refillAmount: 800 });
|
|
23
|
+
const marketDataLinearSwapBucketId = 'HUOBI_PUBLIC_MARKET_IP_1S_LINEAR_SWAP';
|
|
24
|
+
(0, utils_1.tokenBucket)(marketDataLinearSwapBucketId, { capacity: 800, refillInterval: 1000, refillAmount: 800 });
|
|
25
|
+
// 非行情类公开接口:同一个 IP,3s 最多 120 次请求
|
|
26
|
+
const nonMarketDataIPBucketId = 'HUOBI_PUBLIC_NON_MARKET_IP_3S_ALL';
|
|
27
|
+
(0, utils_1.tokenBucket)(nonMarketDataIPBucketId, {
|
|
28
|
+
capacity: 120,
|
|
29
|
+
refillInterval: 3000,
|
|
30
|
+
refillAmount: 120,
|
|
31
|
+
});
|
|
8
32
|
/**
|
|
9
|
-
* 公共 API
|
|
33
|
+
* 公共 API 请求方法(不负责限流;限流由调用点选择对应 helper)
|
|
10
34
|
*/
|
|
11
35
|
async function publicRequest(method, path, api_root, params) {
|
|
12
36
|
const url = new URL(`https://${api_root}${path}`);
|
|
@@ -32,6 +56,52 @@ async function publicRequest(method, path, api_root, params) {
|
|
|
32
56
|
throw e;
|
|
33
57
|
}
|
|
34
58
|
}
|
|
59
|
+
const spotMarketRequest = async (method, path, params) => {
|
|
60
|
+
const meta = {
|
|
61
|
+
method,
|
|
62
|
+
api_root: SPOT_API_ROOT,
|
|
63
|
+
path,
|
|
64
|
+
business: 'spot',
|
|
65
|
+
interfaceType: 'market',
|
|
66
|
+
};
|
|
67
|
+
acquire(marketDataIPAllBucketId, meta);
|
|
68
|
+
acquire(marketDataSpotBucketId, meta);
|
|
69
|
+
return publicRequest(method, path, SPOT_API_ROOT, params);
|
|
70
|
+
};
|
|
71
|
+
const spotNonMarketRequest = async (method, path, params) => {
|
|
72
|
+
const meta = {
|
|
73
|
+
method,
|
|
74
|
+
api_root: SPOT_API_ROOT,
|
|
75
|
+
path,
|
|
76
|
+
business: 'spot',
|
|
77
|
+
interfaceType: 'non-market',
|
|
78
|
+
};
|
|
79
|
+
acquire(nonMarketDataIPBucketId, meta);
|
|
80
|
+
return publicRequest(method, path, SPOT_API_ROOT, params);
|
|
81
|
+
};
|
|
82
|
+
const linearSwapMarketRequest = async (method, path, params) => {
|
|
83
|
+
const meta = {
|
|
84
|
+
method,
|
|
85
|
+
api_root: SWAP_API_ROOT,
|
|
86
|
+
path,
|
|
87
|
+
business: 'linear-swap',
|
|
88
|
+
interfaceType: 'market',
|
|
89
|
+
};
|
|
90
|
+
acquire(marketDataIPAllBucketId, meta);
|
|
91
|
+
acquire(marketDataLinearSwapBucketId, meta);
|
|
92
|
+
return publicRequest(method, path, SWAP_API_ROOT, params);
|
|
93
|
+
};
|
|
94
|
+
const linearSwapNonMarketRequest = async (method, path, params) => {
|
|
95
|
+
const meta = {
|
|
96
|
+
method,
|
|
97
|
+
api_root: SWAP_API_ROOT,
|
|
98
|
+
path,
|
|
99
|
+
business: 'linear-swap',
|
|
100
|
+
interfaceType: 'non-market',
|
|
101
|
+
};
|
|
102
|
+
acquire(nonMarketDataIPBucketId, meta);
|
|
103
|
+
return publicRequest(method, path, SWAP_API_ROOT, params);
|
|
104
|
+
};
|
|
35
105
|
// ==================== 公共 API 方法 ====================
|
|
36
106
|
/**
|
|
37
107
|
* 获取永续合约产品信息
|
|
@@ -39,7 +109,7 @@ async function publicRequest(method, path, api_root, params) {
|
|
|
39
109
|
* https://www.htx.com/zh-cn/opend/newApiPages/?id=8cb72f34-77b5-11ed-9966-0242ac110003
|
|
40
110
|
*/
|
|
41
111
|
function getPerpetualContractSymbols(params) {
|
|
42
|
-
return
|
|
112
|
+
return linearSwapNonMarketRequest('GET', '/linear-swap-api/v1/swap_contract_info', params);
|
|
43
113
|
}
|
|
44
114
|
exports.getPerpetualContractSymbols = getPerpetualContractSymbols;
|
|
45
115
|
/**
|
|
@@ -48,7 +118,7 @@ exports.getPerpetualContractSymbols = getPerpetualContractSymbols;
|
|
|
48
118
|
* https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec47f16-7773-11ed-9966-0242ac110003
|
|
49
119
|
*/
|
|
50
120
|
function getSpotSymbols() {
|
|
51
|
-
return
|
|
121
|
+
return spotNonMarketRequest('GET', '/v2/settings/common/symbols');
|
|
52
122
|
}
|
|
53
123
|
exports.getSpotSymbols = getSpotSymbols;
|
|
54
124
|
/**
|
|
@@ -57,7 +127,7 @@ exports.getSpotSymbols = getSpotSymbols;
|
|
|
57
127
|
* https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec3fc25-7773-11ed-9966-0242ac110003
|
|
58
128
|
*/
|
|
59
129
|
function getSpotTick(params) {
|
|
60
|
-
return
|
|
130
|
+
return spotMarketRequest('GET', `/market/detail/merged`, params);
|
|
61
131
|
}
|
|
62
132
|
exports.getSpotTick = getSpotTick;
|
|
63
133
|
/**
|
|
@@ -68,7 +138,7 @@ exports.getSpotTick = getSpotTick;
|
|
|
68
138
|
* Note: HTX spot KLine uses unix seconds in `data[].id`
|
|
69
139
|
*/
|
|
70
140
|
function getSpotHistoryKline(params) {
|
|
71
|
-
return
|
|
141
|
+
return spotMarketRequest('GET', `/market/history/kline`, params);
|
|
72
142
|
}
|
|
73
143
|
exports.getSpotHistoryKline = getSpotHistoryKline;
|
|
74
144
|
/**
|
|
@@ -76,14 +146,14 @@ exports.getSpotHistoryKline = getSpotHistoryKline;
|
|
|
76
146
|
*
|
|
77
147
|
* 接口权限: 读取
|
|
78
148
|
*
|
|
79
|
-
* 限频: 其他非行情类的公开接口,比如获取指数信息,限价信息,交割结算、平台持仓信息等,所有用户都是每个IP3秒最多
|
|
149
|
+
* 限频: 其他非行情类的公开接口,比如获取指数信息,限价信息,交割结算、平台持仓信息等,所有用户都是每个IP3秒最多120次请求(所有该IP的非行情类的公开接口请求共享3秒120次的额度)
|
|
80
150
|
*
|
|
81
151
|
* 接口描述: 该接口支持全仓模式和逐仓模式
|
|
82
152
|
*
|
|
83
153
|
* https://www.htx.com/zh-cn/opend/newApiPages/?id=8cb71b45-77b5-11ed-9966-0242ac110003
|
|
84
154
|
*/
|
|
85
155
|
function getSwapBatchFundingRate(params) {
|
|
86
|
-
return
|
|
156
|
+
return linearSwapNonMarketRequest('GET', `/linear-swap-api/v1/swap_batch_funding_rate`, params);
|
|
87
157
|
}
|
|
88
158
|
exports.getSwapBatchFundingRate = getSwapBatchFundingRate;
|
|
89
159
|
/**
|
|
@@ -104,7 +174,7 @@ exports.getSwapBatchFundingRate = getSwapBatchFundingRate;
|
|
|
104
174
|
* https://www.htx.com/zh-cn/opend/newApiPages/?id=8cb73c34-77b5-11ed-9966-0242ac110003
|
|
105
175
|
*/
|
|
106
176
|
function getSwapMarketTrade(params) {
|
|
107
|
-
return
|
|
177
|
+
return linearSwapMarketRequest('GET', `/linear-swap-ex/market/trade`, params);
|
|
108
178
|
}
|
|
109
179
|
exports.getSwapMarketTrade = getSwapMarketTrade;
|
|
110
180
|
/**
|
|
@@ -113,7 +183,7 @@ exports.getSwapMarketTrade = getSwapMarketTrade;
|
|
|
113
183
|
* https://huobiapi.github.io/docs/usdt_swap/v1/cn/#3218e7531a
|
|
114
184
|
*/
|
|
115
185
|
function getSwapOpenInterest(params) {
|
|
116
|
-
return
|
|
186
|
+
return linearSwapMarketRequest('GET', '/linear-swap-api/v1/swap_open_interest', params);
|
|
117
187
|
}
|
|
118
188
|
exports.getSwapOpenInterest = getSwapOpenInterest;
|
|
119
189
|
/**
|
|
@@ -134,7 +204,7 @@ exports.getSwapOpenInterest = getSwapOpenInterest;
|
|
|
134
204
|
* https://www.htx.com/zh-cn/opend/newApiPages/?id=8cb735e0-77b5-11ed-9966-0242ac110003
|
|
135
205
|
*/
|
|
136
206
|
function getSwapMarketBbo(params) {
|
|
137
|
-
return
|
|
207
|
+
return linearSwapMarketRequest('GET', `/linear-swap-ex/market/bbo`, params);
|
|
138
208
|
}
|
|
139
209
|
exports.getSwapMarketBbo = getSwapMarketBbo;
|
|
140
210
|
/**
|
|
@@ -145,7 +215,7 @@ exports.getSwapMarketBbo = getSwapMarketBbo;
|
|
|
145
215
|
* https://www.htx.com/zh-cn/opend/newApiPages/?id=5d51f1f9-77b6-11ed-9966-0242ac110003
|
|
146
216
|
*/
|
|
147
217
|
function getSwapHistoricalFundingRate(params) {
|
|
148
|
-
return
|
|
218
|
+
return linearSwapNonMarketRequest('GET', `/linear-swap-api/v1/swap_historical_funding_rate`, params);
|
|
149
219
|
}
|
|
150
220
|
exports.getSwapHistoricalFundingRate = getSwapHistoricalFundingRate;
|
|
151
221
|
/**
|
|
@@ -154,7 +224,7 @@ exports.getSwapHistoricalFundingRate = getSwapHistoricalFundingRate;
|
|
|
154
224
|
* https://www.htx.com/zh-cn/opend/newApiPages/?id=8cb73746-77b5-11ed-9966-0242ac110003
|
|
155
225
|
*/
|
|
156
226
|
function getSwapHistoryKline(params) {
|
|
157
|
-
return
|
|
227
|
+
return linearSwapMarketRequest('GET', `/linear-swap-ex/market/history/kline`, params);
|
|
158
228
|
}
|
|
159
229
|
exports.getSwapHistoryKline = getSwapHistoryKline;
|
|
160
230
|
/**
|
|
@@ -163,7 +233,7 @@ exports.getSwapHistoryKline = getSwapHistoryKline;
|
|
|
163
233
|
* https://www.htx.com/zh-cn/opend/newApiPages/?id=8cb72290-77b5-11ed-9966-0242ac110003
|
|
164
234
|
*/
|
|
165
235
|
function getSwapCrossLadderMargin(params) {
|
|
166
|
-
return
|
|
236
|
+
return linearSwapNonMarketRequest('GET', '/linear-swap-api/v1/swap_cross_ladder_margin', params);
|
|
167
237
|
}
|
|
168
238
|
exports.getSwapCrossLadderMargin = getSwapCrossLadderMargin;
|
|
169
239
|
/**
|
|
@@ -172,7 +242,7 @@ exports.getSwapCrossLadderMargin = getSwapCrossLadderMargin;
|
|
|
172
242
|
* https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec478f0-7773-11ed-9966-0242ac110003
|
|
173
243
|
*/
|
|
174
244
|
function getV2ReferenceCurrencies(params) {
|
|
175
|
-
return
|
|
245
|
+
return spotNonMarketRequest('GET', '/v2/reference/currencies', params);
|
|
176
246
|
}
|
|
177
247
|
exports.getV2ReferenceCurrencies = getV2ReferenceCurrencies;
|
|
178
248
|
/**
|
|
@@ -181,6 +251,6 @@ exports.getV2ReferenceCurrencies = getV2ReferenceCurrencies;
|
|
|
181
251
|
* https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec40374-7773-11ed-9966-0242ac110003
|
|
182
252
|
*
|
|
183
253
|
*/
|
|
184
|
-
const getSpotMarketTickers = () =>
|
|
254
|
+
const getSpotMarketTickers = () => spotMarketRequest('GET', '/market/tickers');
|
|
185
255
|
exports.getSpotMarketTickers = getSpotMarketTickers;
|
|
186
256
|
//# sourceMappingURL=public-api.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public-api.js","sourceRoot":"","sources":["../../src/api/public-api.ts"],"names":[],"mappings":"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","sourcesContent":["import { formatTime } from '@yuants/utils';\n\n// Huobi API 根域名\nconst SWAP_API_ROOT = 'api.hbdm.com';\nconst SPOT_API_ROOT = 'api.huobi.pro';\n\n/**\n * 公共 API 请求方法\n */\nasync function publicRequest(method: string, path: string, api_root: string, params?: any) {\n const url = new URL(`https://${api_root}${path}`);\n\n if (method === 'GET') {\n for (const [k, v] of Object.entries(params || {})) {\n url.searchParams.append(k, String(v));\n }\n }\n\n const body = method === 'GET' ? '' : JSON.stringify(params);\n\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 console.info(formatTime(Date.now()), 'PublicResponse', url.toString(), res.status);\n\n const retStr = await res.text();\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// ==================== 公共 API 方法 ====================\n\n/**\n * 获取永续合约产品信息\n *\n * https://www.htx.com/zh-cn/opend/newApiPages/?id=8cb72f34-77b5-11ed-9966-0242ac110003\n */\nexport function 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 delivery_date: string;\n }[];\n ts: string;\n}> {\n return publicRequest('GET', '/linear-swap-api/v1/swap_contract_info', SWAP_API_ROOT, params);\n}\n\n/**\n * 获取现货产品信息\n *\n * https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec47f16-7773-11ed-9966-0242ac110003\n */\nexport function 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 return publicRequest('GET', '/v2/settings/common/symbols', SPOT_API_ROOT);\n}\n\n/**\n * 获取现货行情\n *\n * https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec3fc25-7773-11ed-9966-0242ac110003\n */\nexport function getSpotTick(params: { symbol: string }): Promise<{\n status: string;\n tick: {\n close: number;\n };\n}> {\n return publicRequest('GET', `/market/detail/merged`, SPOT_API_ROOT, params);\n}\n\n/**\n * 【现货】获取K线数据\n *\n * https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec3ff18-7773-11ed-9966-0242ac110003\n *\n * Note: HTX spot KLine uses unix seconds in `data[].id`\n */\nexport function getSpotHistoryKline(params: {\n symbol: string;\n period: string;\n size?: number;\n from?: number;\n to?: number;\n}): Promise<{\n status: string;\n ch?: string;\n ts: number;\n data: {\n id: number;\n open: number;\n close: number;\n low: number;\n high: number;\n vol: number;\n amount?: number;\n count?: number;\n }[];\n}> {\n return publicRequest('GET', `/market/history/kline`, 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 */\nexport function getSwapBatchFundingRate(params: { contract_code?: string }): 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 return publicRequest('GET', `/linear-swap-api/v1/swap_batch_funding_rate`, 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 */\nexport function getSwapMarketTrade(params: { contract_code?: string; business_type?: string }): 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}> {\n return publicRequest('GET', `/linear-swap-ex/market/trade`, SWAP_API_ROOT, params);\n}\n\n/**\n * 获得当前合约的总持仓量\n *\n * https://huobiapi.github.io/docs/usdt_swap/v1/cn/#3218e7531a\n */\nexport function 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}> {\n return publicRequest('GET', '/linear-swap-api/v1/swap_open_interest', 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=8cb735e0-77b5-11ed-9966-0242ac110003\n */\nexport function getSwapMarketBbo(params: { contract_code?: string }): 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}> {\n return publicRequest('GET', `/linear-swap-ex/market/bbo`, SWAP_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 */\nexport function 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 publicRequest('GET', `/linear-swap-api/v1/swap_historical_funding_rate`, SWAP_API_ROOT, params);\n}\n\n/**\n * 【通用】获取K线数据\n *\n * https://www.htx.com/zh-cn/opend/newApiPages/?id=8cb73746-77b5-11ed-9966-0242ac110003\n */\nexport function getSwapHistoryKline(params: {\n contract_code: string;\n period: string;\n size?: number;\n from?: number;\n to?: number;\n}): Promise<{\n status: string;\n ch?: string;\n ts: number;\n data: {\n id: number;\n open: number;\n close: number;\n low: number;\n high: number;\n vol: number;\n amount?: number;\n count?: number;\n }[];\n}> {\n return publicRequest('GET', `/linear-swap-ex/market/history/kline`, 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 */\nexport function 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}> {\n return publicRequest('GET', '/linear-swap-api/v1/swap_cross_ladder_margin', 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 */\nexport function getV2ReferenceCurrencies(params: { currency?: string; authorizedUser?: string }): 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}> {\n return publicRequest('GET', '/v2/reference/currencies', SPOT_API_ROOT, params);\n}\n\n/**\n * 【现货】获取市场所有交易对的最新行情\n *\n * https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec40374-7773-11ed-9966-0242ac110003\n *\n */\nexport const getSpotMarketTickers = (): Promise<{\n data: {\n symbol: string;\n open: number;\n high: number;\n low: number;\n close: number;\n amount: number;\n vol: number;\n count: number;\n bid: number;\n bidSize: number;\n ask: number;\n askSize: number;\n }[];\n status: string;\n ts: number;\n}> => publicRequest('GET', '/market/tickers', SPOT_API_ROOT);\n"]}
|
|
1
|
+
{"version":3,"file":"public-api.js","sourceRoot":"","sources":["../../src/api/public-api.ts"],"names":[],"mappings":"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","sourcesContent":["import { formatTime, scopeError, tokenBucket } from '@yuants/utils';\n\n// Huobi API 根域名\nconst SWAP_API_ROOT = 'api.hbdm.com';\nconst SPOT_API_ROOT = 'api.huobi.pro';\n\ntype HuobiBusiness = 'spot' | 'linear-swap';\ntype HuobiPublicInterfaceType = 'market' | 'non-market';\n\nconst acquire = (bucketId: string, meta: Record<string, unknown>) => {\n const bucket = tokenBucket(bucketId);\n scopeError('HUOBI_API_RATE_LIMIT', { ...meta, bucketId }, () => bucket.acquireSync(1));\n};\n\n// https://www.htx.com/zh-cn/opend/newApiPages/?id=474\n// 行情类:同一个 IP,总共 1s 最多 800 个请求(合约业务共享总额度)\nconst marketDataIPAllBucketId = 'HUOBI_PUBLIC_MARKET_IP_1S_ALL';\ntokenBucket(marketDataIPAllBucketId, {\n capacity: 800,\n refillInterval: 1000,\n refillAmount: 800,\n});\n\n// 行情类:按业务线拆分(用于交割/币本位永续/U本位分开限频)\nconst marketDataSpotBucketId = 'HUOBI_PUBLIC_MARKET_IP_1S_SPOT';\ntokenBucket(marketDataSpotBucketId, { capacity: 800, refillInterval: 1000, refillAmount: 800 });\n\nconst marketDataLinearSwapBucketId = 'HUOBI_PUBLIC_MARKET_IP_1S_LINEAR_SWAP';\ntokenBucket(marketDataLinearSwapBucketId, { capacity: 800, refillInterval: 1000, refillAmount: 800 });\n\n// 非行情类公开接口:同一个 IP,3s 最多 120 次请求\nconst nonMarketDataIPBucketId = 'HUOBI_PUBLIC_NON_MARKET_IP_3S_ALL';\ntokenBucket(nonMarketDataIPBucketId, {\n capacity: 120,\n refillInterval: 3000,\n refillAmount: 120,\n});\n\n/**\n * 公共 API 请求方法(不负责限流;限流由调用点选择对应 helper)\n */\nasync function publicRequest(method: string, path: string, api_root: string, params?: any) {\n const url = new URL(`https://${api_root}${path}`);\n\n if (method === 'GET') {\n for (const [k, v] of Object.entries(params || {})) {\n url.searchParams.append(k, String(v));\n }\n }\n\n const body = method === 'GET' ? '' : JSON.stringify(params);\n\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 console.info(formatTime(Date.now()), 'PublicResponse', url.toString(), res.status);\n\n const retStr = await res.text();\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\nconst spotMarketRequest = async (method: string, path: string, params?: any) => {\n const meta = {\n method,\n api_root: SPOT_API_ROOT,\n path,\n business: 'spot' as HuobiBusiness,\n interfaceType: 'market' as HuobiPublicInterfaceType,\n };\n acquire(marketDataIPAllBucketId, meta);\n acquire(marketDataSpotBucketId, meta);\n return publicRequest(method, path, SPOT_API_ROOT, params);\n};\n\nconst spotNonMarketRequest = async (method: string, path: string, params?: any) => {\n const meta = {\n method,\n api_root: SPOT_API_ROOT,\n path,\n business: 'spot' as HuobiBusiness,\n interfaceType: 'non-market' as HuobiPublicInterfaceType,\n };\n acquire(nonMarketDataIPBucketId, meta);\n return publicRequest(method, path, SPOT_API_ROOT, params);\n};\n\nconst linearSwapMarketRequest = async (method: string, path: string, params?: any) => {\n const meta = {\n method,\n api_root: SWAP_API_ROOT,\n path,\n business: 'linear-swap' as HuobiBusiness,\n interfaceType: 'market' as HuobiPublicInterfaceType,\n };\n acquire(marketDataIPAllBucketId, meta);\n acquire(marketDataLinearSwapBucketId, meta);\n return publicRequest(method, path, SWAP_API_ROOT, params);\n};\n\nconst linearSwapNonMarketRequest = async (method: string, path: string, params?: any) => {\n const meta = {\n method,\n api_root: SWAP_API_ROOT,\n path,\n business: 'linear-swap' as HuobiBusiness,\n interfaceType: 'non-market' as HuobiPublicInterfaceType,\n };\n acquire(nonMarketDataIPBucketId, meta);\n return publicRequest(method, path, SWAP_API_ROOT, params);\n};\n\n// ==================== 公共 API 方法 ====================\n\n/**\n * 获取永续合约产品信息\n *\n * https://www.htx.com/zh-cn/opend/newApiPages/?id=8cb72f34-77b5-11ed-9966-0242ac110003\n */\nexport function 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 delivery_date: string;\n }[];\n ts: string;\n}> {\n return linearSwapNonMarketRequest('GET', '/linear-swap-api/v1/swap_contract_info', params);\n}\n\n/**\n * 获取现货产品信息\n *\n * https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec47f16-7773-11ed-9966-0242ac110003\n */\nexport function 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 return spotNonMarketRequest('GET', '/v2/settings/common/symbols');\n}\n\n/**\n * 获取现货行情\n *\n * https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec3fc25-7773-11ed-9966-0242ac110003\n */\nexport function getSpotTick(params: { symbol: string }): Promise<{\n status: string;\n tick: {\n close: number;\n };\n}> {\n return spotMarketRequest('GET', `/market/detail/merged`, params);\n}\n\n/**\n * 【现货】获取K线数据\n *\n * https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec3ff18-7773-11ed-9966-0242ac110003\n *\n * Note: HTX spot KLine uses unix seconds in `data[].id`\n */\nexport function getSpotHistoryKline(params: {\n symbol: string;\n period: string;\n size?: number;\n from?: number;\n to?: number;\n}): Promise<{\n status: string;\n ch?: string;\n ts: number;\n data: {\n id: number;\n open: number;\n close: number;\n low: number;\n high: number;\n vol: number;\n amount?: number;\n count?: number;\n }[];\n}> {\n return spotMarketRequest('GET', `/market/history/kline`, params);\n}\n\n/**\n * 【通用】批量获取合约资金费率\n *\n * 接口权限: 读取\n *\n * 限频: 其他非行情类的公开接口,比如获取指数信息,限价信息,交割结算、平台持仓信息等,所有用户都是每个IP3秒最多120次请求(所有该IP的非行情类的公开接口请求共享3秒120次的额度)\n *\n * 接口描述: 该接口支持全仓模式和逐仓模式\n *\n * https://www.htx.com/zh-cn/opend/newApiPages/?id=8cb71b45-77b5-11ed-9966-0242ac110003\n */\nexport function getSwapBatchFundingRate(params: { contract_code?: string }): 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 return linearSwapNonMarketRequest('GET', `/linear-swap-api/v1/swap_batch_funding_rate`, 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 */\nexport function getSwapMarketTrade(params: { contract_code?: string; business_type?: string }): 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}> {\n return linearSwapMarketRequest('GET', `/linear-swap-ex/market/trade`, params);\n}\n\n/**\n * 获得当前合约的总持仓量\n *\n * https://huobiapi.github.io/docs/usdt_swap/v1/cn/#3218e7531a\n */\nexport function 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}> {\n return linearSwapMarketRequest('GET', '/linear-swap-api/v1/swap_open_interest', 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=8cb735e0-77b5-11ed-9966-0242ac110003\n */\nexport function getSwapMarketBbo(params: { contract_code?: string }): 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}> {\n return linearSwapMarketRequest('GET', `/linear-swap-ex/market/bbo`, params);\n}\n\n/**\n * 获取合约的历史资金费率\n *\n * 接口权限: 读取\n *\n * https://www.htx.com/zh-cn/opend/newApiPages/?id=5d51f1f9-77b6-11ed-9966-0242ac110003\n */\nexport function 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 linearSwapNonMarketRequest('GET', `/linear-swap-api/v1/swap_historical_funding_rate`, params);\n}\n\n/**\n * 【通用】获取K线数据\n *\n * https://www.htx.com/zh-cn/opend/newApiPages/?id=8cb73746-77b5-11ed-9966-0242ac110003\n */\nexport function getSwapHistoryKline(params: {\n contract_code: string;\n period: string;\n size?: number;\n from?: number;\n to?: number;\n}): Promise<{\n status: string;\n ch?: string;\n ts: number;\n data: {\n id: number;\n open: number;\n close: number;\n low: number;\n high: number;\n vol: number;\n amount?: number;\n count?: number;\n }[];\n}> {\n return linearSwapMarketRequest('GET', `/linear-swap-ex/market/history/kline`, params);\n}\n\n/**\n * 【全仓】获取平台阶梯保证金\n *\n * https://www.htx.com/zh-cn/opend/newApiPages/?id=8cb72290-77b5-11ed-9966-0242ac110003\n */\nexport function 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}> {\n return linearSwapNonMarketRequest('GET', '/linear-swap-api/v1/swap_cross_ladder_margin', params);\n}\n\n/**\n * APIv2币链参考信息\n *\n * https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec478f0-7773-11ed-9966-0242ac110003\n */\nexport function getV2ReferenceCurrencies(params: { currency?: string; authorizedUser?: string }): 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}> {\n return spotNonMarketRequest('GET', '/v2/reference/currencies', params);\n}\n\n/**\n * 【现货】获取市场所有交易对的最新行情\n *\n * https://www.htx.com/zh-cn/opend/newApiPages/?id=7ec40374-7773-11ed-9966-0242ac110003\n *\n */\nexport const getSpotMarketTickers = (): Promise<{\n data: {\n symbol: string;\n open: number;\n high: number;\n low: number;\n close: number;\n amount: number;\n vol: number;\n count: number;\n bid: number;\n bidSize: number;\n ask: number;\n askSize: number;\n }[];\n status: string;\n ts: number;\n}> => spotMarketRequest('GET', '/market/tickers');\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yuants/vendor-huobi",
|
|
3
|
-
"version": "0.18.
|
|
3
|
+
"version": "0.18.5",
|
|
4
4
|
"main": "lib/index.js",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist",
|
|
@@ -8,19 +8,19 @@
|
|
|
8
8
|
"temp"
|
|
9
9
|
],
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"@yuants/protocol": "0.53.
|
|
12
|
-
"@yuants/data-account": "0.11.
|
|
13
|
-
"@yuants/data-order": "0.7.
|
|
14
|
-
"@yuants/data-ohlc": "0.
|
|
15
|
-
"@yuants/transfer": "0.2.
|
|
16
|
-
"@yuants/utils": "0.
|
|
17
|
-
"@yuants/cache": "0.3.
|
|
18
|
-
"@yuants/sql": "0.9.
|
|
19
|
-
"@yuants/data-product": "0.5.
|
|
20
|
-
"@yuants/data-series": "0.3.
|
|
21
|
-
"@yuants/data-interest-rate": "0.2.
|
|
22
|
-
"@yuants/data-quote": "0.4.
|
|
23
|
-
"@yuants/exchange": "0.8.
|
|
11
|
+
"@yuants/protocol": "0.53.7",
|
|
12
|
+
"@yuants/data-account": "0.11.4",
|
|
13
|
+
"@yuants/data-order": "0.7.5",
|
|
14
|
+
"@yuants/data-ohlc": "0.6.0",
|
|
15
|
+
"@yuants/transfer": "0.2.44",
|
|
16
|
+
"@yuants/utils": "0.19.0",
|
|
17
|
+
"@yuants/cache": "0.3.8",
|
|
18
|
+
"@yuants/sql": "0.9.35",
|
|
19
|
+
"@yuants/data-product": "0.5.5",
|
|
20
|
+
"@yuants/data-series": "0.3.57",
|
|
21
|
+
"@yuants/data-interest-rate": "0.2.3",
|
|
22
|
+
"@yuants/data-quote": "0.4.4",
|
|
23
|
+
"@yuants/exchange": "0.8.6",
|
|
24
24
|
"rxjs": "~7.5.6"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"@rushstack/heft-node-rig": "~1.10.7",
|
|
31
31
|
"@types/heft-jest": "1.0.3",
|
|
32
32
|
"@types/node": "22",
|
|
33
|
-
"@yuants/extension": "0.2.
|
|
33
|
+
"@yuants/extension": "0.2.36",
|
|
34
34
|
"@yuants/tool-kit": "0.2.1",
|
|
35
35
|
"typescript": "~4.7.4"
|
|
36
36
|
},
|
package/temp/package-deps.json
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
|
-
"apps/vendor-huobi/CHANGELOG.json": "
|
|
3
|
-
"apps/vendor-huobi/CHANGELOG.md": "
|
|
2
|
+
"apps/vendor-huobi/CHANGELOG.json": "fee2dddd92bcd7e5d9f910f3f31eb69e894bb72e",
|
|
3
|
+
"apps/vendor-huobi/CHANGELOG.md": "0ae00192f0a819c1a924b2d09f2e9a2643993927",
|
|
4
4
|
"apps/vendor-huobi/README.md": "d7bf0149513114eab5500a6b5c9e7cba10565572",
|
|
5
5
|
"apps/vendor-huobi/api-extractor.json": "62f4fd324425b9a235f0c117975967aab09ced0c",
|
|
6
6
|
"apps/vendor-huobi/config/jest.config.json": "4bb17bde3ee911163a3edb36a6eb71491d80b1bd",
|
|
7
7
|
"apps/vendor-huobi/config/rig.json": "f6c7b5537dc77a3170ba9f008bae3b6c3ee11956",
|
|
8
8
|
"apps/vendor-huobi/config/typescript.json": "854907e8a821f2050f6533368db160c649c25348",
|
|
9
9
|
"apps/vendor-huobi/etc/vendor-huobi.api.md": "dc8cbf2a044a227b30a4ee9701b0c97328244724",
|
|
10
|
-
"apps/vendor-huobi/package.json": "
|
|
10
|
+
"apps/vendor-huobi/package.json": "dcfd52bbc0c49a75e68a328a12ce58525b7f668f",
|
|
11
11
|
"apps/vendor-huobi/src/__archived/account-info.ts": "5c325d3bb8839476c11f25693326ce05f3321ebd",
|
|
12
12
|
"apps/vendor-huobi/src/__archived/api.ts": "8366151dc881b177d0478fb328a601a11e33cd35",
|
|
13
13
|
"apps/vendor-huobi/src/__archived/transfer.ts": "fd299ad82ff31344460967f2a938b8f36c879259",
|
|
14
|
-
"apps/vendor-huobi/src/api/private-api.ts": "
|
|
15
|
-
"apps/vendor-huobi/src/api/public-api.ts": "
|
|
14
|
+
"apps/vendor-huobi/src/api/private-api.ts": "de66773ec7ce9d7301b98b7d773b6a31ff1e7f35",
|
|
15
|
+
"apps/vendor-huobi/src/api/public-api.ts": "7141d4c6369a59b062b2b0e5a475af9abb1ec31b",
|
|
16
16
|
"apps/vendor-huobi/src/index.ts": "997283c933e2df8c6d35ce3d2f40d7d0c33c469b",
|
|
17
17
|
"apps/vendor-huobi/src/services/accounts/spot.ts": "9b214135dd375822ea5ef03c0fee108873ccc264",
|
|
18
18
|
"apps/vendor-huobi/src/services/accounts/super-margin.ts": "ff885947334f43085aacb6e8c37b997afee2b7f6",
|
|
@@ -29,19 +29,19 @@
|
|
|
29
29
|
"apps/vendor-huobi/src/services/uid.ts": "b71c27a6a0debdd9365dea35306f4763327aca2f",
|
|
30
30
|
"apps/vendor-huobi/tsconfig.json": "81da8f78196974b5d15da0edb6b2d9f48641063c",
|
|
31
31
|
"apps/vendor-huobi/.rush/temp/shrinkwrap-deps.json": "237a816d6e825b5bd2a0fc742f5d055c19e37d3d",
|
|
32
|
-
"libraries/protocol/temp/package-deps.json": "
|
|
33
|
-
"libraries/data-account/temp/package-deps.json": "
|
|
34
|
-
"libraries/data-order/temp/package-deps.json": "
|
|
35
|
-
"libraries/data-ohlc/temp/package-deps.json": "
|
|
36
|
-
"libraries/transfer/temp/package-deps.json": "
|
|
37
|
-
"libraries/utils/temp/package-deps.json": "
|
|
38
|
-
"libraries/cache/temp/package-deps.json": "
|
|
39
|
-
"libraries/sql/temp/package-deps.json": "
|
|
40
|
-
"libraries/data-product/temp/package-deps.json": "
|
|
41
|
-
"libraries/data-series/temp/package-deps.json": "
|
|
42
|
-
"libraries/data-interest-rate/temp/package-deps.json": "
|
|
43
|
-
"libraries/data-quote/temp/package-deps.json": "
|
|
44
|
-
"libraries/exchange/temp/package-deps.json": "
|
|
45
|
-
"libraries/extension/temp/package-deps.json": "
|
|
32
|
+
"libraries/protocol/temp/package-deps.json": "765a1ba74dfa437b95a8685a308a09df6de49706",
|
|
33
|
+
"libraries/data-account/temp/package-deps.json": "ef7f802f6cec62965d3a5ea3365df131b9ed46a0",
|
|
34
|
+
"libraries/data-order/temp/package-deps.json": "9940b4267bcaaba4f3e0db2d2e07f575ea8afa34",
|
|
35
|
+
"libraries/data-ohlc/temp/package-deps.json": "1abde47d0c7112ca7871ec9243e38ea48f8eba79",
|
|
36
|
+
"libraries/transfer/temp/package-deps.json": "f4c5d1fc1bed3061cee9e67381ab36749fb9118f",
|
|
37
|
+
"libraries/utils/temp/package-deps.json": "ae24e0f28d8238425131202aa7e46e2fc6ba3ae2",
|
|
38
|
+
"libraries/cache/temp/package-deps.json": "3fe087e264b56a7a72d25df93f942e69de6ab765",
|
|
39
|
+
"libraries/sql/temp/package-deps.json": "35ac4d78347c54d6c247d31dd77a1d88cfaed20f",
|
|
40
|
+
"libraries/data-product/temp/package-deps.json": "d527946b0136eb9ad0ee4451d31ea2c18eb88fa3",
|
|
41
|
+
"libraries/data-series/temp/package-deps.json": "5148dcf1033142f34a1dff17076a7a031052cb21",
|
|
42
|
+
"libraries/data-interest-rate/temp/package-deps.json": "82005a4c9b295c0eab9599127946dd8c915adc64",
|
|
43
|
+
"libraries/data-quote/temp/package-deps.json": "1b8805efdca7fee957cf36c414a0c53d5faa454b",
|
|
44
|
+
"libraries/exchange/temp/package-deps.json": "b00a11bc3628c9cbe8cea4eccd7b1f3d21d5b77d",
|
|
45
|
+
"libraries/extension/temp/package-deps.json": "0655b86a4838124dba78913552adf2425484e900",
|
|
46
46
|
"tools/toolkit/temp/package-deps.json": "23e053490eb8feade23e4d45de4e54883e322711"
|
|
47
47
|
}
|