ccxt 4.2.70 → 4.2.72
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/README.md +4 -4
- package/build.sh +1 -1
- package/dist/ccxt.browser.js +979 -195
- package/dist/ccxt.browser.min.js +2 -2
- package/dist/cjs/ccxt.js +3 -1
- package/dist/cjs/src/ascendex.js +149 -2
- package/dist/cjs/src/bitget.js +14 -6
- package/dist/cjs/src/coinbase.js +108 -89
- package/dist/cjs/src/digifinex.js +2 -1
- package/dist/cjs/src/hyperliquid.js +1 -1
- package/dist/cjs/src/kraken.js +1 -0
- package/dist/cjs/src/mexc.js +9 -0
- package/dist/cjs/src/pro/bingx.js +29 -6
- package/dist/cjs/src/pro/hitbtc.js +16 -7
- package/dist/cjs/src/pro/hyperliquid.js +556 -0
- package/js/ccxt.d.ts +4 -1
- package/js/ccxt.js +3 -1
- package/js/src/abstract/coinbase.d.ts +2 -0
- package/js/src/ascendex.d.ts +5 -1
- package/js/src/ascendex.js +149 -2
- package/js/src/base/Exchange.d.ts +56 -56
- package/js/src/base/types.d.ts +58 -48
- package/js/src/binance.d.ts +1 -1
- package/js/src/bitfinex2.d.ts +1 -1
- package/js/src/bitget.js +14 -6
- package/js/src/bitrue.d.ts +3 -3
- package/js/src/cex.d.ts +1 -1
- package/js/src/coinbase.d.ts +1 -1
- package/js/src/coinbase.js +108 -89
- package/js/src/digifinex.js +2 -1
- package/js/src/gate.d.ts +1 -1
- package/js/src/htx.d.ts +1 -1
- package/js/src/hyperliquid.js +1 -1
- package/js/src/idex.d.ts +1 -1
- package/js/src/kraken.js +1 -0
- package/js/src/kucoinfutures.d.ts +1 -1
- package/js/src/mexc.js +9 -0
- package/js/src/poloniexfutures.d.ts +2 -2
- package/js/src/pro/bingx.d.ts +1 -0
- package/js/src/pro/bingx.js +29 -6
- package/js/src/pro/bitvavo.d.ts +8 -8
- package/js/src/pro/bybit.d.ts +1 -1
- package/js/src/pro/cex.d.ts +5 -5
- package/js/src/pro/coinbase.d.ts +2 -2
- package/js/src/pro/hitbtc.js +16 -7
- package/js/src/pro/hyperliquid.d.ts +23 -0
- package/js/src/pro/hyperliquid.js +557 -0
- package/js/src/pro/poloniex.d.ts +3 -3
- package/package.json +1 -1
- package/skip-tests.json +33 -58
package/js/src/mexc.js
CHANGED
|
@@ -44,6 +44,7 @@ export default class mexc extends Exchange {
|
|
|
44
44
|
'createMarketSellOrderWithCost': false,
|
|
45
45
|
'createOrder': true,
|
|
46
46
|
'createOrders': true,
|
|
47
|
+
'createPostOnlyOrder': true,
|
|
47
48
|
'createReduceOnlyOrder': true,
|
|
48
49
|
'deposit': undefined,
|
|
49
50
|
'editOrder': undefined,
|
|
@@ -2210,6 +2211,14 @@ export default class mexc extends Exchange {
|
|
|
2210
2211
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
2211
2212
|
* @param {string} [params.marginMode] only 'isolated' is supported for spot-margin trading
|
|
2212
2213
|
* @param {float} [params.triggerPrice] The price at which a trigger order is triggered at
|
|
2214
|
+
* @param {bool} [params.postOnly] if true, the order will only be posted if it will be a maker order
|
|
2215
|
+
* @param {bool} [params.reduceOnly] *contract only* indicates if this order is to reduce the size of a position
|
|
2216
|
+
*
|
|
2217
|
+
* EXCHANGE SPECIFIC PARAMETERS
|
|
2218
|
+
* @param {int} [params.leverage] *contract only* leverage is necessary on isolated margin
|
|
2219
|
+
* @param {long} [params.positionId] *contract only* it is recommended to fill in this parameter when closing a position
|
|
2220
|
+
* @param {string} [params.externalOid] *contract only* external order ID
|
|
2221
|
+
* @param {int} [params.positionMode] *contract only* 1:hedge, 2:one-way, default: the user's current config
|
|
2213
2222
|
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
2214
2223
|
*/
|
|
2215
2224
|
await this.loadMarkets();
|
|
@@ -53,7 +53,7 @@ export default class poloniexfutures extends Exchange {
|
|
|
53
53
|
fetchOrdersByStatus(status: any, symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
|
|
54
54
|
fetchOpenOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
|
|
55
55
|
fetchClosedOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
|
|
56
|
-
fetchOrder(id?:
|
|
56
|
+
fetchOrder(id?: Str, symbol?: Str, params?: {}): Promise<Order>;
|
|
57
57
|
parseOrder(order: any, market?: Market): Order;
|
|
58
58
|
fetchFundingRate(symbol: string, params?: {}): Promise<{
|
|
59
59
|
info: any;
|
|
@@ -75,7 +75,7 @@ export default class poloniexfutures extends Exchange {
|
|
|
75
75
|
previousFundingDatetime: string;
|
|
76
76
|
}>;
|
|
77
77
|
fetchMyTrades(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
|
|
78
|
-
setMarginMode(marginMode: string, symbol?:
|
|
78
|
+
setMarginMode(marginMode: string, symbol?: Str, params?: {}): Promise<any>;
|
|
79
79
|
sign(path: any, api?: string, method?: string, params?: {}, headers?: any, body?: any): {
|
|
80
80
|
url: any;
|
|
81
81
|
method: string;
|
package/js/src/pro/bingx.d.ts
CHANGED
|
@@ -20,6 +20,7 @@ export default class bingx extends bingxRest {
|
|
|
20
20
|
setBalanceCache(client: Client, type: any, subscriptionHash: any, params: any): void;
|
|
21
21
|
loadBalanceSnapshot(client: any, messageHash: any, type: any): Promise<void>;
|
|
22
22
|
handleErrorMessage(client: any, message: any): boolean;
|
|
23
|
+
keepAliveListenKey(params?: {}): Promise<void>;
|
|
23
24
|
authenticate(params?: {}): Promise<void>;
|
|
24
25
|
pong(client: any, message: any): Promise<void>;
|
|
25
26
|
handleOrder(client: any, message: any): void;
|
package/js/src/pro/bingx.js
CHANGED
|
@@ -765,21 +765,44 @@ export default class bingx extends bingxRest {
|
|
|
765
765
|
}
|
|
766
766
|
return true;
|
|
767
767
|
}
|
|
768
|
-
async
|
|
769
|
-
const time = this.milliseconds();
|
|
768
|
+
async keepAliveListenKey(params = {}) {
|
|
770
769
|
const listenKey = this.safeString(this.options, 'listenKey');
|
|
771
770
|
if (listenKey === undefined) {
|
|
772
|
-
|
|
773
|
-
this.options['listenKey'] = this.safeString(response, 'listenKey');
|
|
774
|
-
this.options['lastAuthenticatedTime'] = time;
|
|
771
|
+
// A network error happened: we can't renew a listen key that does not exist.
|
|
775
772
|
return;
|
|
776
773
|
}
|
|
774
|
+
try {
|
|
775
|
+
await this.userAuthPrivatePutUserDataStream({ 'listenKey': listenKey }); // extend the expiry
|
|
776
|
+
}
|
|
777
|
+
catch (error) {
|
|
778
|
+
const types = ['spot', 'swap'];
|
|
779
|
+
for (let i = 0; i < types.length; i++) {
|
|
780
|
+
const type = types[i];
|
|
781
|
+
const url = this.urls['api']['ws'][type] + '?listenKey=' + listenKey;
|
|
782
|
+
const client = this.client(url);
|
|
783
|
+
const messageHashes = Object.keys(client.futures);
|
|
784
|
+
for (let j = 0; j < messageHashes.length; j++) {
|
|
785
|
+
const messageHash = messageHashes[j];
|
|
786
|
+
client.reject(error, messageHash);
|
|
787
|
+
}
|
|
788
|
+
}
|
|
789
|
+
this.options['listenKey'] = undefined;
|
|
790
|
+
this.options['lastAuthenticatedTime'] = 0;
|
|
791
|
+
return;
|
|
792
|
+
}
|
|
793
|
+
// whether or not to schedule another listenKey keepAlive request
|
|
794
|
+
const listenKeyRefreshRate = this.safeInteger(this.options, 'listenKeyRefreshRate', 3600000);
|
|
795
|
+
this.delay(listenKeyRefreshRate, this.keepAliveListenKey, params);
|
|
796
|
+
}
|
|
797
|
+
async authenticate(params = {}) {
|
|
798
|
+
const time = this.milliseconds();
|
|
777
799
|
const lastAuthenticatedTime = this.safeInteger(this.options, 'lastAuthenticatedTime', 0);
|
|
778
800
|
const listenKeyRefreshRate = this.safeInteger(this.options, 'listenKeyRefreshRate', 3600000); // 1 hour
|
|
779
801
|
if (time - lastAuthenticatedTime > listenKeyRefreshRate) {
|
|
780
|
-
const response = await this.
|
|
802
|
+
const response = await this.userAuthPrivatePostUserDataStream();
|
|
781
803
|
this.options['listenKey'] = this.safeString(response, 'listenKey');
|
|
782
804
|
this.options['lastAuthenticatedTime'] = time;
|
|
805
|
+
this.delay(listenKeyRefreshRate, this.keepAliveListenKey, params);
|
|
783
806
|
}
|
|
784
807
|
}
|
|
785
808
|
async pong(client, message) {
|
package/js/src/pro/bitvavo.d.ts
CHANGED
|
@@ -24,21 +24,21 @@ export default class bitvavo extends bitvavoRest {
|
|
|
24
24
|
watchMyTrades(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
|
|
25
25
|
createOrderWs(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: number, params?: {}): Promise<Order>;
|
|
26
26
|
editOrderWs(id: string, symbol: string, type: OrderType, side: OrderSide, amount?: number, price?: number, params?: {}): Promise<Order>;
|
|
27
|
-
cancelOrderWs(id: string, symbol?:
|
|
28
|
-
cancelAllOrdersWs(symbol?:
|
|
27
|
+
cancelOrderWs(id: string, symbol?: Str, params?: {}): Promise<any>;
|
|
28
|
+
cancelAllOrdersWs(symbol?: Str, params?: {}): Promise<any>;
|
|
29
29
|
handleMultipleOrders(client: Client, message: any): void;
|
|
30
|
-
fetchOrderWs(id: string, symbol?:
|
|
31
|
-
fetchOrdersWs(symbol?:
|
|
30
|
+
fetchOrderWs(id: string, symbol?: Str, params?: {}): Promise<Order>;
|
|
31
|
+
fetchOrdersWs(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
|
|
32
32
|
watchRequest(action: any, request: any): Promise<any>;
|
|
33
|
-
fetchOpenOrdersWs(symbol?:
|
|
34
|
-
fetchMyTradesWs(symbol?:
|
|
33
|
+
fetchOpenOrdersWs(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
|
|
34
|
+
fetchMyTradesWs(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
|
|
35
35
|
handleMyTrades(client: Client, message: any): void;
|
|
36
36
|
withdrawWs(code: string, amount: any, address: any, tag?: any, params?: {}): Promise<any>;
|
|
37
37
|
handleWithdraw(client: Client, message: any): void;
|
|
38
|
-
fetchWithdrawalsWs(code?:
|
|
38
|
+
fetchWithdrawalsWs(code?: Str, since?: Int, limit?: Int, params?: {}): Promise<any>;
|
|
39
39
|
handleWithdraws(client: Client, message: any): void;
|
|
40
40
|
fetchOHLCVWs(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<OHLCV[]>;
|
|
41
|
-
fetchDepositsWs(code?:
|
|
41
|
+
fetchDepositsWs(code?: Str, since?: Int, limit?: Int, params?: {}): Promise<any>;
|
|
42
42
|
handleDeposits(client: Client, message: any): void;
|
|
43
43
|
fetchTradingFeesWs(params?: {}): Promise<any>;
|
|
44
44
|
fetchMarketsWs(params?: {}): Promise<any>;
|
package/js/src/pro/bybit.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import Client from '../base/ws/Client.js';
|
|
|
4
4
|
export default class bybit extends bybitRest {
|
|
5
5
|
describe(): any;
|
|
6
6
|
requestId(): any;
|
|
7
|
-
getUrlByMarketType(symbol?: Str, isPrivate?: boolean, method?:
|
|
7
|
+
getUrlByMarketType(symbol?: Str, isPrivate?: boolean, method?: Str, params?: {}): any;
|
|
8
8
|
cleanParams(params: any): any;
|
|
9
9
|
watchTicker(symbol: string, params?: {}): Promise<Ticker>;
|
|
10
10
|
watchTickers(symbols?: Strings, params?: {}): Promise<Tickers>;
|
package/js/src/pro/cex.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ export default class cex extends cexRest {
|
|
|
16
16
|
handleTicker(client: Client, message: any): void;
|
|
17
17
|
parseWsTicker(ticker: any, market?: any): Ticker;
|
|
18
18
|
fetchBalanceWs(params?: {}): Promise<Balances>;
|
|
19
|
-
watchOrders(symbol?:
|
|
19
|
+
watchOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
|
|
20
20
|
watchMyTrades(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
|
|
21
21
|
handleTransaction(client: Client, message: any): void;
|
|
22
22
|
handleMyTrades(client: Client, message: any): void;
|
|
@@ -37,12 +37,12 @@ export default class cex extends cexRest {
|
|
|
37
37
|
handleOHLCV24(client: Client, message: any): any;
|
|
38
38
|
handleOHLCV1m(client: Client, message: any): void;
|
|
39
39
|
handleOHLCV(client: Client, message: any): void;
|
|
40
|
-
fetchOrderWs(id: string, symbol?:
|
|
41
|
-
fetchOpenOrdersWs(symbol?:
|
|
40
|
+
fetchOrderWs(id: string, symbol?: Str, params?: {}): Promise<Order>;
|
|
41
|
+
fetchOpenOrdersWs(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
|
|
42
42
|
createOrderWs(symbol: string, type: OrderType, side: OrderSide, amount: number, price?: number, params?: {}): Promise<Order>;
|
|
43
43
|
editOrderWs(id: string, symbol: string, type: OrderType, side: OrderSide, amount?: number, price?: number, params?: {}): Promise<Order>;
|
|
44
|
-
cancelOrderWs(id: string, symbol?:
|
|
45
|
-
cancelOrdersWs(ids: string[], symbol?:
|
|
44
|
+
cancelOrderWs(id: string, symbol?: Str, params?: {}): Promise<Order>;
|
|
45
|
+
cancelOrdersWs(ids: string[], symbol?: Str, params?: {}): Promise<Order[]>;
|
|
46
46
|
resolveData(client: Client, message: any): void;
|
|
47
47
|
handleConnected(client: Client, message: any): any;
|
|
48
48
|
handleErrorMessage(client: Client, message: any): void;
|
package/js/src/pro/coinbase.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import coinbaseRest from '../coinbase.js';
|
|
2
|
-
import { Strings, Tickers, Ticker, Int, Trade, OrderBook, Order } from '../base/types.js';
|
|
2
|
+
import { Strings, Tickers, Ticker, Int, Trade, OrderBook, Order, Str } from '../base/types.js';
|
|
3
3
|
export default class coinbase extends coinbaseRest {
|
|
4
4
|
describe(): any;
|
|
5
5
|
subscribe(name: any, symbol?: any, params?: {}): Promise<any>;
|
|
@@ -8,7 +8,7 @@ export default class coinbase extends coinbaseRest {
|
|
|
8
8
|
handleTickers(client: any, message: any): any;
|
|
9
9
|
parseWsTicker(ticker: any, market?: any): Ticker;
|
|
10
10
|
watchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
|
|
11
|
-
watchOrders(symbol?:
|
|
11
|
+
watchOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
|
|
12
12
|
watchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
|
|
13
13
|
handleTrade(client: any, message: any): any;
|
|
14
14
|
handleOrder(client: any, message: any): any;
|
package/js/src/pro/hitbtc.js
CHANGED
|
@@ -250,7 +250,10 @@ export default class hitbtc extends hitbtcRest {
|
|
|
250
250
|
// }
|
|
251
251
|
// }
|
|
252
252
|
//
|
|
253
|
-
const
|
|
253
|
+
const snapshot = this.safeDict(message, 'snapshot');
|
|
254
|
+
const update = this.safeDict(message, 'update');
|
|
255
|
+
const data = snapshot ? snapshot : update;
|
|
256
|
+
const type = snapshot ? 'snapshot' : 'update';
|
|
254
257
|
const marketIds = Object.keys(data);
|
|
255
258
|
for (let i = 0; i < marketIds.length; i++) {
|
|
256
259
|
const marketId = marketIds[i];
|
|
@@ -259,17 +262,23 @@ export default class hitbtc extends hitbtcRest {
|
|
|
259
262
|
const item = data[marketId];
|
|
260
263
|
const messageHash = 'orderbooks::' + symbol;
|
|
261
264
|
if (!(symbol in this.orderbooks)) {
|
|
262
|
-
const subscription = this.
|
|
265
|
+
const subscription = this.safeDict(client.subscriptions, messageHash, {});
|
|
263
266
|
const limit = this.safeInteger(subscription, 'limit');
|
|
264
267
|
this.orderbooks[symbol] = this.orderBook({}, limit);
|
|
265
268
|
}
|
|
269
|
+
const orderbook = this.orderbooks[symbol];
|
|
266
270
|
const timestamp = this.safeInteger(item, 't');
|
|
267
271
|
const nonce = this.safeInteger(item, 's');
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
272
|
+
if (type === 'snapshot') {
|
|
273
|
+
const parsedSnapshot = this.parseOrderBook(item, symbol, timestamp, 'b', 'a');
|
|
274
|
+
orderbook.reset(parsedSnapshot);
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
const asks = this.safeList(item, 'a', []);
|
|
278
|
+
const bids = this.safeList(item, 'b', []);
|
|
279
|
+
this.handleDeltas(orderbook['asks'], asks);
|
|
280
|
+
this.handleDeltas(orderbook['bids'], bids);
|
|
281
|
+
}
|
|
273
282
|
orderbook['timestamp'] = timestamp;
|
|
274
283
|
orderbook['datetime'] = this.iso8601(timestamp);
|
|
275
284
|
orderbook['nonce'] = nonce;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import hyperliquidRest from '../hyperliquid.js';
|
|
2
|
+
import Client from '../base/ws/Client.js';
|
|
3
|
+
import { Int, Str, Market, OrderBook, Trade, OHLCV, Order } from '../base/types.js';
|
|
4
|
+
export default class hyperliquid extends hyperliquidRest {
|
|
5
|
+
describe(): any;
|
|
6
|
+
watchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
|
|
7
|
+
handleOrderBook(client: any, message: any): void;
|
|
8
|
+
watchMyTrades(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
|
|
9
|
+
handleMyTrades(client: Client, message: any): void;
|
|
10
|
+
watchTrades(symbol: string, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
|
|
11
|
+
handleTrades(client: Client, message: any): void;
|
|
12
|
+
parseWsTrade(trade: any, market?: Market): Trade;
|
|
13
|
+
watchOHLCV(symbol: string, timeframe?: string, since?: Int, limit?: Int, params?: {}): Promise<OHLCV[]>;
|
|
14
|
+
handleOHLCV(client: Client, message: any): void;
|
|
15
|
+
watchOrders(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Order[]>;
|
|
16
|
+
handleOrder(client: Client, message: any): void;
|
|
17
|
+
handleErrorMessage(client: Client, message: any): boolean;
|
|
18
|
+
handleMessage(client: Client, message: any): void;
|
|
19
|
+
ping(client: any): {
|
|
20
|
+
method: string;
|
|
21
|
+
};
|
|
22
|
+
handlePong(client: Client, message: any): any;
|
|
23
|
+
}
|