ccxt 4.1.95 → 4.1.97
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 +3 -3
- package/build.sh +16 -16
- package/dist/ccxt.browser.js +1570 -1401
- package/dist/ccxt.browser.min.js +3 -3
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/src/ace.js +1 -1
- package/dist/cjs/src/ascendex.js +1 -1
- package/dist/cjs/src/base/Exchange.js +6 -5
- package/dist/cjs/src/base/errors.js +8 -1
- package/dist/cjs/src/bigone.js +2 -2
- package/dist/cjs/src/binance.js +145 -135
- package/dist/cjs/src/bingx.js +50 -8
- package/dist/cjs/src/bit2c.js +2 -3
- package/dist/cjs/src/bitfinex.js +1 -1
- package/dist/cjs/src/bitfinex2.js +3 -4
- package/dist/cjs/src/bitflyer.js +2 -2
- package/dist/cjs/src/bitmart.js +2 -2
- package/dist/cjs/src/bitmex.js +2 -2
- package/dist/cjs/src/bitopro.js +1 -1
- package/dist/cjs/src/bitpanda.js +1 -1
- package/dist/cjs/src/bitvavo.js +1 -1
- package/dist/cjs/src/blockchaincom.js +1 -1
- package/dist/cjs/src/btcalpha.js +2 -2
- package/dist/cjs/src/btcbox.js +3 -4
- package/dist/cjs/src/btcmarkets.js +2 -2
- package/dist/cjs/src/btcturk.js +1 -1
- package/dist/cjs/src/bybit.js +2 -2
- package/dist/cjs/src/cex.js +1 -1
- package/dist/cjs/src/coinbase.js +11 -5
- package/dist/cjs/src/coinbasepro.js +2 -2
- package/dist/cjs/src/coinex.js +1 -1
- package/dist/cjs/src/coinlist.js +1 -1
- package/dist/cjs/src/cryptocom.js +2 -1
- package/dist/cjs/src/delta.js +25 -0
- package/dist/cjs/src/deribit.js +1 -1
- package/dist/cjs/src/digifinex.js +1 -1
- package/dist/cjs/src/gate.js +3 -3
- package/dist/cjs/src/hitbtc.js +1 -1
- package/dist/cjs/src/hollaex.js +2 -2
- package/dist/cjs/src/htx.js +1 -1
- package/dist/cjs/src/huobijp.js +2 -2
- package/dist/cjs/src/idex.js +1 -1
- package/dist/cjs/src/independentreserve.js +1 -1
- package/dist/cjs/src/kraken.js +47 -46
- package/dist/cjs/src/krakenfutures.js +53 -26
- package/dist/cjs/src/kucoin.js +74 -4
- package/dist/cjs/src/kucoinfutures.js +2 -2
- package/dist/cjs/src/kuna.js +1 -1
- package/dist/cjs/src/latoken.js +1 -1
- package/dist/cjs/src/luno.js +2 -2
- package/dist/cjs/src/lykke.js +1 -1
- package/dist/cjs/src/mexc.js +2 -2
- package/dist/cjs/src/ndax.js +1 -1
- package/dist/cjs/src/novadax.js +2 -2
- package/dist/cjs/src/oceanex.js +1 -1
- package/dist/cjs/src/okcoin.js +1 -1
- package/dist/cjs/src/okx.js +1 -1
- package/dist/cjs/src/poloniexfutures.js +1 -1
- package/dist/cjs/src/pro/alpaca.js +1 -1
- package/dist/cjs/src/pro/ascendex.js +1 -1
- package/dist/cjs/src/pro/binance.js +4 -5
- package/dist/cjs/src/pro/bingx.js +6 -3
- package/dist/cjs/src/pro/bitfinex.js +3 -4
- package/dist/cjs/src/pro/bitfinex2.js +1 -1
- package/dist/cjs/src/pro/bitmex.js +1 -1
- package/dist/cjs/src/pro/bitpanda.js +1 -1
- package/dist/cjs/src/pro/blockchaincom.js +1 -1
- package/dist/cjs/src/pro/bybit.js +2 -2
- package/dist/cjs/src/pro/cex.js +1 -1
- package/dist/cjs/src/pro/coinbase.js +1 -1
- package/dist/cjs/src/pro/coinbasepro.js +1 -1
- package/dist/cjs/src/pro/deribit.js +1 -1
- package/dist/cjs/src/pro/gate.js +3 -3
- package/dist/cjs/src/pro/gemini.js +1 -1
- package/dist/cjs/src/pro/hollaex.js +1 -1
- package/dist/cjs/src/pro/htx.js +1 -1
- package/dist/cjs/src/pro/idex.js +1 -1
- package/dist/cjs/src/pro/kraken.js +3 -4
- package/dist/cjs/src/pro/krakenfutures.js +1 -1
- package/dist/cjs/src/pro/kucoinfutures.js +1 -1
- package/dist/cjs/src/pro/mexc.js +1 -1
- package/dist/cjs/src/pro/okcoin.js +1 -1
- package/dist/cjs/src/pro/okx.js +2 -2
- package/dist/cjs/src/pro/phemex.js +1 -1
- package/dist/cjs/src/pro/poloniexfutures.js +1 -1
- package/dist/cjs/src/pro/woo.js +2 -3
- package/dist/cjs/src/probit.js +1 -1
- package/dist/cjs/src/timex.js +1 -1
- package/dist/cjs/src/tokocrypto.js +1 -1
- package/dist/cjs/src/upbit.js +1 -1
- package/dist/cjs/src/wavesexchange.js +1 -1
- package/dist/cjs/src/whitebit.js +1 -1
- package/dist/cjs/src/woo.js +1 -1
- package/dist/cjs/src/zaif.js +1 -1
- package/js/ccxt.d.ts +1 -1
- package/js/ccxt.js +1 -1
- package/js/src/abstract/bingx.d.ts +2 -0
- package/js/src/abstract/kucoin.d.ts +12 -0
- package/js/src/abstract/kucoinfutures.d.ts +12 -1
- package/js/src/ace.js +1 -1
- package/js/src/ascendex.js +1 -1
- package/js/src/base/Exchange.d.ts +1 -1
- package/js/src/base/Exchange.js +7 -6
- package/js/src/base/errorHierarchy.d.ts +1 -0
- package/js/src/base/errorHierarchy.js +1 -0
- package/js/src/base/errors.d.ts +5 -1
- package/js/src/base/errors.js +8 -2
- package/js/src/bigone.js +2 -2
- package/js/src/binance.js +145 -135
- package/js/src/bingx.d.ts +1 -0
- package/js/src/bingx.js +50 -8
- package/js/src/bit2c.js +2 -3
- package/js/src/bitfinex.js +1 -1
- package/js/src/bitfinex2.js +3 -4
- package/js/src/bitflyer.js +2 -2
- package/js/src/bitmart.js +2 -2
- package/js/src/bitmex.js +2 -2
- package/js/src/bitopro.js +1 -1
- package/js/src/bitpanda.js +1 -1
- package/js/src/bitso.d.ts +1 -1
- package/js/src/bitvavo.js +1 -1
- package/js/src/blockchaincom.js +1 -1
- package/js/src/btcalpha.js +2 -2
- package/js/src/btcbox.js +3 -4
- package/js/src/btcmarkets.js +2 -2
- package/js/src/btcturk.js +1 -1
- package/js/src/bybit.js +2 -2
- package/js/src/cex.js +1 -1
- package/js/src/coinbase.js +11 -5
- package/js/src/coinbasepro.js +2 -2
- package/js/src/coinex.js +1 -1
- package/js/src/coinlist.js +1 -1
- package/js/src/cryptocom.js +2 -1
- package/js/src/delta.d.ts +5 -4
- package/js/src/delta.js +25 -0
- package/js/src/deribit.js +1 -1
- package/js/src/digifinex.js +1 -1
- package/js/src/gate.js +3 -3
- package/js/src/hitbtc.js +1 -1
- package/js/src/hollaex.js +2 -2
- package/js/src/htx.js +1 -1
- package/js/src/huobijp.js +2 -2
- package/js/src/idex.js +1 -1
- package/js/src/independentreserve.js +1 -1
- package/js/src/kraken.js +47 -46
- package/js/src/krakenfutures.js +53 -26
- package/js/src/kucoin.d.ts +3 -0
- package/js/src/kucoin.js +74 -4
- package/js/src/kucoinfutures.js +2 -2
- package/js/src/kuna.js +1 -1
- package/js/src/latoken.js +1 -1
- package/js/src/luno.js +2 -2
- package/js/src/lykke.js +1 -1
- package/js/src/mexc.js +2 -2
- package/js/src/ndax.js +1 -1
- package/js/src/novadax.js +2 -2
- package/js/src/oceanex.js +1 -1
- package/js/src/okcoin.js +1 -1
- package/js/src/okx.js +1 -1
- package/js/src/poloniexfutures.js +1 -1
- package/js/src/pro/alpaca.js +1 -1
- package/js/src/pro/ascendex.js +1 -1
- package/js/src/pro/binance.js +4 -5
- package/js/src/pro/bingx.js +6 -3
- package/js/src/pro/bitfinex.js +3 -4
- package/js/src/pro/bitfinex2.js +1 -1
- package/js/src/pro/bitmex.js +1 -1
- package/js/src/pro/bitpanda.js +1 -1
- package/js/src/pro/blockchaincom.js +1 -1
- package/js/src/pro/bybit.js +2 -2
- package/js/src/pro/cex.js +1 -1
- package/js/src/pro/coinbase.js +1 -1
- package/js/src/pro/coinbasepro.js +1 -1
- package/js/src/pro/deribit.js +1 -1
- package/js/src/pro/gate.js +3 -3
- package/js/src/pro/gemini.js +1 -1
- package/js/src/pro/hollaex.js +1 -1
- package/js/src/pro/htx.js +1 -1
- package/js/src/pro/idex.js +1 -1
- package/js/src/pro/kraken.js +3 -4
- package/js/src/pro/krakenfutures.js +1 -1
- package/js/src/pro/kucoinfutures.js +1 -1
- package/js/src/pro/mexc.js +1 -1
- package/js/src/pro/okcoin.js +1 -1
- package/js/src/pro/okx.js +2 -2
- package/js/src/pro/phemex.js +1 -1
- package/js/src/pro/poloniexfutures.js +1 -1
- package/js/src/pro/woo.js +2 -3
- package/js/src/probit.js +1 -1
- package/js/src/timex.js +1 -1
- package/js/src/tokocrypto.js +1 -1
- package/js/src/upbit.js +1 -1
- package/js/src/wavesexchange.js +1 -1
- package/js/src/whitebit.js +1 -1
- package/js/src/woo.js +1 -1
- package/js/src/zaif.js +1 -1
- package/package.json +2 -2
- package/skip-tests.json +1 -0
package/dist/ccxt.browser.js
CHANGED
|
@@ -1360,22 +1360,6 @@ class Exchange extends _base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchang
|
|
|
1360
1360
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Exchange);
|
|
1361
1361
|
|
|
1362
1362
|
|
|
1363
|
-
/***/ }),
|
|
1364
|
-
|
|
1365
|
-
/***/ 5224:
|
|
1366
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1367
|
-
|
|
1368
|
-
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1369
|
-
/* harmony export */ Z: () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
1370
|
-
/* harmony export */ });
|
|
1371
|
-
/* harmony import */ var _base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3043);
|
|
1372
|
-
// -------------------------------------------------------------------------------
|
|
1373
|
-
|
|
1374
|
-
class Exchange extends _base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e {
|
|
1375
|
-
}
|
|
1376
|
-
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Exchange);
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
1363
|
/***/ }),
|
|
1380
1364
|
|
|
1381
1365
|
/***/ 3565:
|
|
@@ -2101,7 +2085,7 @@ class ace extends _abstract_ace_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
|
|
|
2101
2085
|
* @see https://github.com/ace-exchange/ace-official-api-docs/blob/master/api_v2.md#open-api---order-list
|
|
2102
2086
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
2103
2087
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
2104
|
-
* @param {int} [limit] the maximum number of
|
|
2088
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
2105
2089
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
2106
2090
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
2107
2091
|
*/
|
|
@@ -5588,7 +5572,7 @@ class ascendex extends _abstract_ascendex_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
|
|
|
5588
5572
|
* @see https://ascendex.github.io/ascendex-futures-pro-api-v2/#list-current-history-orders
|
|
5589
5573
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
5590
5574
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
5591
|
-
* @param {int} [limit] the maximum number of
|
|
5575
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
5592
5576
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
5593
5577
|
* @param {int} [params.until] the latest time in ms to fetch orders for
|
|
5594
5578
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
@@ -8349,7 +8333,7 @@ class Exchange {
|
|
|
8349
8333
|
const length = usedProxies.length;
|
|
8350
8334
|
if (length > 1) {
|
|
8351
8335
|
const joinedProxyNames = usedProxies.join(',');
|
|
8352
|
-
throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.
|
|
8336
|
+
throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.ProxyError(this.id + ' you have multiple conflicting proxy settings (' + joinedProxyNames + '), please use only one from : proxyUrl, proxy_url, proxyUrlCallback, proxy_url_callback');
|
|
8353
8337
|
}
|
|
8354
8338
|
return proxyUrl;
|
|
8355
8339
|
}
|
|
@@ -8413,7 +8397,7 @@ class Exchange {
|
|
|
8413
8397
|
const length = usedProxies.length;
|
|
8414
8398
|
if (length > 1) {
|
|
8415
8399
|
const joinedProxyNames = usedProxies.join(',');
|
|
8416
|
-
throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.
|
|
8400
|
+
throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.ProxyError(this.id + ' you have multiple conflicting proxy settings (' + joinedProxyNames + '), please use only one from: httpProxy, httpsProxy, httpProxyCallback, httpsProxyCallback, socksProxy, socksProxyCallback');
|
|
8417
8401
|
}
|
|
8418
8402
|
return [httpProxy, httpsProxy, socksProxy];
|
|
8419
8403
|
}
|
|
@@ -8453,13 +8437,13 @@ class Exchange {
|
|
|
8453
8437
|
const length = usedProxies.length;
|
|
8454
8438
|
if (length > 1) {
|
|
8455
8439
|
const joinedProxyNames = usedProxies.join(',');
|
|
8456
|
-
throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.
|
|
8440
|
+
throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.ProxyError(this.id + ' you have multiple conflicting proxy settings (' + joinedProxyNames + '), please use only one from: wsProxy, wssProxy, wsSocksProxy');
|
|
8457
8441
|
}
|
|
8458
8442
|
return [wsProxy, wssProxy, wsSocksProxy];
|
|
8459
8443
|
}
|
|
8460
8444
|
checkConflictingProxies(proxyAgentSet, proxyUrlSet) {
|
|
8461
8445
|
if (proxyAgentSet && proxyUrlSet) {
|
|
8462
|
-
throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.
|
|
8446
|
+
throw new _errors_js__WEBPACK_IMPORTED_MODULE_3__.ProxyError(this.id + ' you have multiple conflicting proxy settings, please use only one from : proxyUrl, httpProxy, httpsProxy, socksProxy');
|
|
8463
8447
|
}
|
|
8464
8448
|
}
|
|
8465
8449
|
findMessageHashes(client, element) {
|
|
@@ -8776,6 +8760,7 @@ class Exchange {
|
|
|
8776
8760
|
fee['cost'] = this.safeNumber(fee, 'cost');
|
|
8777
8761
|
}
|
|
8778
8762
|
const timestamp = this.safeInteger(entry, 'timestamp');
|
|
8763
|
+
const info = this.safeValue(entry, 'info', {});
|
|
8779
8764
|
return {
|
|
8780
8765
|
'id': this.safeString(entry, 'id'),
|
|
8781
8766
|
'timestamp': timestamp,
|
|
@@ -8791,7 +8776,7 @@ class Exchange {
|
|
|
8791
8776
|
'after': this.parseNumber(after),
|
|
8792
8777
|
'status': this.safeString(entry, 'status'),
|
|
8793
8778
|
'fee': fee,
|
|
8794
|
-
'info':
|
|
8779
|
+
'info': info,
|
|
8795
8780
|
};
|
|
8796
8781
|
}
|
|
8797
8782
|
safeCurrencyStructure(currency) {
|
|
@@ -12214,6 +12199,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
12214
12199
|
/* harmony export */ OrderNotFillable: () => (/* binding */ OrderNotFillable),
|
|
12215
12200
|
/* harmony export */ OrderNotFound: () => (/* binding */ OrderNotFound),
|
|
12216
12201
|
/* harmony export */ PermissionDenied: () => (/* binding */ PermissionDenied),
|
|
12202
|
+
/* harmony export */ ProxyError: () => (/* binding */ ProxyError),
|
|
12217
12203
|
/* harmony export */ RateLimitExceeded: () => (/* binding */ RateLimitExceeded),
|
|
12218
12204
|
/* harmony export */ RequestTimeout: () => (/* binding */ RequestTimeout),
|
|
12219
12205
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
@@ -12412,6 +12398,12 @@ class OperationFailed extends BaseError {
|
|
|
12412
12398
|
this.name = 'OperationFailed';
|
|
12413
12399
|
}
|
|
12414
12400
|
}
|
|
12401
|
+
class ProxyError extends ExchangeError {
|
|
12402
|
+
constructor(message) {
|
|
12403
|
+
super(message);
|
|
12404
|
+
this.name = 'OperationFailed';
|
|
12405
|
+
}
|
|
12406
|
+
}
|
|
12415
12407
|
// Network error
|
|
12416
12408
|
class NetworkError extends OperationFailed {
|
|
12417
12409
|
constructor(message) {
|
|
@@ -12462,7 +12454,7 @@ class RequestTimeout extends NetworkError {
|
|
|
12462
12454
|
// // Derived class hierarchy
|
|
12463
12455
|
// errorHierarchy
|
|
12464
12456
|
// )
|
|
12465
|
-
const errors = { BaseError, ExchangeError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, MarginModeAlreadySet, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, NotSupported, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout, AuthenticationError, AddressPending, ContractUnavailable, NoChange, OperationRejected, OperationFailed };
|
|
12457
|
+
const errors = { BaseError, ExchangeError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, MarginModeAlreadySet, BadResponse, NullResponse, InsufficientFunds, InvalidAddress, InvalidOrder, OrderNotFound, OrderNotCached, CancelPending, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, NotSupported, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, RequestTimeout, AuthenticationError, AddressPending, ContractUnavailable, NoChange, OperationRejected, OperationFailed, ProxyError };
|
|
12466
12458
|
|
|
12467
12459
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (errors);
|
|
12468
12460
|
|
|
@@ -16485,7 +16477,7 @@ class bigone extends _abstract_bigone_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
16485
16477
|
* @description fetches information on multiple orders made by the user
|
|
16486
16478
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
16487
16479
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
16488
|
-
* @param {int} [limit] the maximum number of
|
|
16480
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
16489
16481
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
16490
16482
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
16491
16483
|
*/
|
|
@@ -16620,7 +16612,7 @@ class bigone extends _abstract_bigone_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
16620
16612
|
* @description fetches information on multiple closed orders made by the user
|
|
16621
16613
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
16622
16614
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
16623
|
-
* @param {int} [limit] the maximum number of
|
|
16615
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
16624
16616
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
16625
16617
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
16626
16618
|
*/
|
|
@@ -19647,24 +19639,23 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
19647
19639
|
let type = this.safeString(params, 'type', defaultType);
|
|
19648
19640
|
let subType = undefined;
|
|
19649
19641
|
[subType, params] = this.handleSubTypeAndParams('fetchBalance', undefined, params);
|
|
19650
|
-
|
|
19651
|
-
let
|
|
19642
|
+
let marginMode = undefined;
|
|
19643
|
+
let query = undefined;
|
|
19644
|
+
[marginMode, query] = this.handleMarginModeAndParams('fetchBalance', params);
|
|
19645
|
+
query = this.omit(query, 'type');
|
|
19646
|
+
let response = undefined;
|
|
19652
19647
|
const request = {};
|
|
19653
19648
|
if (this.isLinear(type, subType)) {
|
|
19654
|
-
const options = this.safeValue(this.options, type, {});
|
|
19655
|
-
const fetchBalanceOptions = this.safeValue(options, 'fetchBalance', {});
|
|
19656
|
-
method = this.safeString(fetchBalanceOptions, 'method', 'fapiPrivateV2GetAccount');
|
|
19657
19649
|
type = 'linear';
|
|
19650
|
+
response = await this.fapiPrivateV2GetAccount(this.extend(request, query));
|
|
19658
19651
|
}
|
|
19659
19652
|
else if (this.isInverse(type, subType)) {
|
|
19660
|
-
const options = this.safeValue(this.options, type, {});
|
|
19661
|
-
const fetchBalanceOptions = this.safeValue(options, 'fetchBalance', {});
|
|
19662
|
-
method = this.safeString(fetchBalanceOptions, 'method', 'dapiPrivateGetAccount');
|
|
19663
19653
|
type = 'inverse';
|
|
19654
|
+
response = await this.dapiPrivateGetAccount(this.extend(request, query));
|
|
19664
19655
|
}
|
|
19665
19656
|
else if (marginMode === 'isolated') {
|
|
19666
|
-
method = 'sapiGetMarginIsolatedAccount';
|
|
19667
19657
|
const paramSymbols = this.safeValue(params, 'symbols');
|
|
19658
|
+
query = this.omit(query, 'symbols');
|
|
19668
19659
|
if (paramSymbols !== undefined) {
|
|
19669
19660
|
let symbols = '';
|
|
19670
19661
|
if (Array.isArray(paramSymbols)) {
|
|
@@ -19680,18 +19671,20 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
19680
19671
|
}
|
|
19681
19672
|
request['symbols'] = symbols;
|
|
19682
19673
|
}
|
|
19674
|
+
response = await this.sapiGetMarginIsolatedAccount(this.extend(request, query));
|
|
19683
19675
|
}
|
|
19684
19676
|
else if ((type === 'margin') || (marginMode === 'cross')) {
|
|
19685
|
-
|
|
19677
|
+
response = await this.sapiGetMarginAccount(this.extend(request, query));
|
|
19686
19678
|
}
|
|
19687
19679
|
else if (type === 'savings') {
|
|
19688
|
-
|
|
19680
|
+
response = await this.sapiGetLendingUnionAccount(this.extend(request, query));
|
|
19689
19681
|
}
|
|
19690
19682
|
else if (type === 'funding') {
|
|
19691
|
-
|
|
19683
|
+
response = await this.sapiPostAssetGetFundingAsset(this.extend(request, query));
|
|
19684
|
+
}
|
|
19685
|
+
else {
|
|
19686
|
+
response = await this.privateGetAccount(this.extend(request, query));
|
|
19692
19687
|
}
|
|
19693
|
-
const requestParams = this.omit(query, ['type', 'symbols']);
|
|
19694
|
-
const response = await this[method](this.extend(request, requestParams));
|
|
19695
19688
|
//
|
|
19696
19689
|
// spot
|
|
19697
19690
|
//
|
|
@@ -20383,33 +20376,35 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
20383
20376
|
if (until !== undefined) {
|
|
20384
20377
|
request['endTime'] = until;
|
|
20385
20378
|
}
|
|
20386
|
-
let
|
|
20379
|
+
let response = undefined;
|
|
20387
20380
|
if (market['option']) {
|
|
20388
|
-
|
|
20381
|
+
response = await this.eapiPublicGetKlines(this.extend(request, params));
|
|
20389
20382
|
}
|
|
20390
20383
|
else if (price === 'mark') {
|
|
20391
20384
|
if (market['inverse']) {
|
|
20392
|
-
|
|
20385
|
+
response = await this.dapiPublicGetMarkPriceKlines(this.extend(request, params));
|
|
20393
20386
|
}
|
|
20394
20387
|
else {
|
|
20395
|
-
|
|
20388
|
+
response = await this.fapiPublicGetMarkPriceKlines(this.extend(request, params));
|
|
20396
20389
|
}
|
|
20397
20390
|
}
|
|
20398
20391
|
else if (price === 'index') {
|
|
20399
20392
|
if (market['inverse']) {
|
|
20400
|
-
|
|
20393
|
+
response = await this.dapiPublicGetIndexPriceKlines(this.extend(request, params));
|
|
20401
20394
|
}
|
|
20402
20395
|
else {
|
|
20403
|
-
|
|
20396
|
+
response = await this.fapiPublicGetIndexPriceKlines(this.extend(request, params));
|
|
20404
20397
|
}
|
|
20405
20398
|
}
|
|
20406
20399
|
else if (market['linear']) {
|
|
20407
|
-
|
|
20400
|
+
response = await this.fapiPublicGetKlines(this.extend(request, params));
|
|
20408
20401
|
}
|
|
20409
20402
|
else if (market['inverse']) {
|
|
20410
|
-
|
|
20403
|
+
response = await this.dapiPublicGetKlines(this.extend(request, params));
|
|
20404
|
+
}
|
|
20405
|
+
else {
|
|
20406
|
+
response = await this.publicGetKlines(this.extend(request, params));
|
|
20411
20407
|
}
|
|
20412
|
-
const response = await this[method](this.extend(request, params));
|
|
20413
20408
|
//
|
|
20414
20409
|
// [
|
|
20415
20410
|
// [1591478520000,"0.02501300","0.02501800","0.02500000","0.02500000","22.19000000",1591478579999,"0.55490906",40,"10.92900000","0.27336462","0"],
|
|
@@ -21825,22 +21820,6 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
21825
21820
|
const request = {
|
|
21826
21821
|
'symbol': market['id'],
|
|
21827
21822
|
};
|
|
21828
|
-
let method = 'privateGetOrder';
|
|
21829
|
-
if (market['option']) {
|
|
21830
|
-
method = 'eapiPrivateGetOrder';
|
|
21831
|
-
}
|
|
21832
|
-
else if (market['linear']) {
|
|
21833
|
-
method = 'fapiPrivateGetOrder';
|
|
21834
|
-
}
|
|
21835
|
-
else if (market['inverse']) {
|
|
21836
|
-
method = 'dapiPrivateGetOrder';
|
|
21837
|
-
}
|
|
21838
|
-
else if (type === 'margin' || marginMode !== undefined) {
|
|
21839
|
-
method = 'sapiGetMarginOrder';
|
|
21840
|
-
if (marginMode === 'isolated') {
|
|
21841
|
-
request['isIsolated'] = true;
|
|
21842
|
-
}
|
|
21843
|
-
}
|
|
21844
21823
|
const clientOrderId = this.safeValue2(params, 'origClientOrderId', 'clientOrderId');
|
|
21845
21824
|
if (clientOrderId !== undefined) {
|
|
21846
21825
|
if (market['option']) {
|
|
@@ -21854,7 +21833,25 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
21854
21833
|
request['orderId'] = id;
|
|
21855
21834
|
}
|
|
21856
21835
|
const requestParams = this.omit(query, ['type', 'clientOrderId', 'origClientOrderId']);
|
|
21857
|
-
|
|
21836
|
+
let response = undefined;
|
|
21837
|
+
if (market['option']) {
|
|
21838
|
+
response = await this.eapiPrivateGetOrder(this.extend(request, requestParams));
|
|
21839
|
+
}
|
|
21840
|
+
else if (market['linear']) {
|
|
21841
|
+
response = await this.fapiPrivateGetOrder(this.extend(request, requestParams));
|
|
21842
|
+
}
|
|
21843
|
+
else if (market['inverse']) {
|
|
21844
|
+
response = await this.dapiPrivateGetOrder(this.extend(request, requestParams));
|
|
21845
|
+
}
|
|
21846
|
+
else if (type === 'margin' || marginMode !== undefined) {
|
|
21847
|
+
if (marginMode === 'isolated') {
|
|
21848
|
+
request['isIsolated'] = true;
|
|
21849
|
+
}
|
|
21850
|
+
response = await this.sapiGetMarginOrder(this.extend(request, requestParams));
|
|
21851
|
+
}
|
|
21852
|
+
else {
|
|
21853
|
+
response = await this.privateGetOrder(this.extend(request, requestParams));
|
|
21854
|
+
}
|
|
21858
21855
|
return this.parseOrder(response, market);
|
|
21859
21856
|
}
|
|
21860
21857
|
async fetchOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
@@ -21892,34 +21889,36 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
21892
21889
|
const request = {
|
|
21893
21890
|
'symbol': market['id'],
|
|
21894
21891
|
};
|
|
21895
|
-
|
|
21892
|
+
const until = this.safeInteger(params, 'until');
|
|
21893
|
+
if (until !== undefined) {
|
|
21894
|
+
params = this.omit(params, 'until');
|
|
21895
|
+
request['endTime'] = until;
|
|
21896
|
+
}
|
|
21897
|
+
if (since !== undefined) {
|
|
21898
|
+
request['startTime'] = since;
|
|
21899
|
+
}
|
|
21900
|
+
if (limit !== undefined) {
|
|
21901
|
+
request['limit'] = limit;
|
|
21902
|
+
}
|
|
21903
|
+
let response = undefined;
|
|
21896
21904
|
if (market['option']) {
|
|
21897
|
-
|
|
21905
|
+
response = await this.eapiPrivateGetHistoryOrders(this.extend(request, query));
|
|
21898
21906
|
}
|
|
21899
21907
|
else if (market['linear']) {
|
|
21900
|
-
|
|
21908
|
+
response = await this.fapiPrivateGetAllOrders(this.extend(request, query));
|
|
21901
21909
|
}
|
|
21902
21910
|
else if (market['inverse']) {
|
|
21903
|
-
|
|
21911
|
+
response = await this.dapiPrivateGetAllOrders(this.extend(request, query));
|
|
21904
21912
|
}
|
|
21905
21913
|
else if (type === 'margin' || marginMode !== undefined) {
|
|
21906
|
-
method = 'sapiGetMarginAllOrders';
|
|
21907
21914
|
if (marginMode === 'isolated') {
|
|
21908
21915
|
request['isIsolated'] = true;
|
|
21909
21916
|
}
|
|
21917
|
+
response = await this.sapiGetMarginAllOrders(this.extend(request, query));
|
|
21910
21918
|
}
|
|
21911
|
-
|
|
21912
|
-
|
|
21913
|
-
params = this.omit(params, 'until');
|
|
21914
|
-
request['endTime'] = until;
|
|
21915
|
-
}
|
|
21916
|
-
if (since !== undefined) {
|
|
21917
|
-
request['startTime'] = since;
|
|
21918
|
-
}
|
|
21919
|
-
if (limit !== undefined) {
|
|
21920
|
-
request['limit'] = limit;
|
|
21919
|
+
else {
|
|
21920
|
+
response = await this.privateGetAllOrders(this.extend(request, query));
|
|
21921
21921
|
}
|
|
21922
|
-
const response = await this[method](this.extend(request, query));
|
|
21923
21922
|
//
|
|
21924
21923
|
// spot
|
|
21925
21924
|
//
|
|
@@ -22044,32 +22043,34 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
22044
22043
|
let subType = undefined;
|
|
22045
22044
|
[subType, query] = this.handleSubTypeAndParams('fetchOpenOrders', market, query);
|
|
22046
22045
|
const requestParams = this.omit(query, 'type');
|
|
22047
|
-
let
|
|
22046
|
+
let response = undefined;
|
|
22048
22047
|
if (type === 'option') {
|
|
22049
|
-
method = 'eapiPrivateGetOpenOrders';
|
|
22050
22048
|
if (since !== undefined) {
|
|
22051
22049
|
request['startTime'] = since;
|
|
22052
22050
|
}
|
|
22053
22051
|
if (limit !== undefined) {
|
|
22054
22052
|
request['limit'] = limit;
|
|
22055
22053
|
}
|
|
22054
|
+
response = await this.eapiPrivateGetOpenOrders(this.extend(request, requestParams));
|
|
22056
22055
|
}
|
|
22057
22056
|
else if (this.isLinear(type, subType)) {
|
|
22058
|
-
|
|
22057
|
+
response = await this.fapiPrivateGetOpenOrders(this.extend(request, requestParams));
|
|
22059
22058
|
}
|
|
22060
22059
|
else if (this.isInverse(type, subType)) {
|
|
22061
|
-
|
|
22060
|
+
response = await this.dapiPrivateGetOpenOrders(this.extend(request, requestParams));
|
|
22062
22061
|
}
|
|
22063
22062
|
else if (type === 'margin' || marginMode !== undefined) {
|
|
22064
|
-
method = 'sapiGetMarginOpenOrders';
|
|
22065
22063
|
if (marginMode === 'isolated') {
|
|
22066
22064
|
request['isIsolated'] = true;
|
|
22067
22065
|
if (symbol === undefined) {
|
|
22068
22066
|
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ArgumentsRequired(this.id + ' fetchOpenOrders() requires a symbol argument for isolated markets');
|
|
22069
22067
|
}
|
|
22070
22068
|
}
|
|
22069
|
+
response = await this.sapiGetMarginOpenOrders(this.extend(request, requestParams));
|
|
22070
|
+
}
|
|
22071
|
+
else {
|
|
22072
|
+
response = await this.privateGetOpenOrders(this.extend(request, requestParams));
|
|
22071
22073
|
}
|
|
22072
|
-
const response = await this[method](this.extend(request, requestParams));
|
|
22073
22074
|
return this.parseOrders(response, market, since, limit);
|
|
22074
22075
|
}
|
|
22075
22076
|
async fetchClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
@@ -22160,24 +22161,26 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
22160
22161
|
else {
|
|
22161
22162
|
request['orderId'] = id;
|
|
22162
22163
|
}
|
|
22163
|
-
|
|
22164
|
+
const requestParams = this.omit(query, ['type', 'origClientOrderId', 'clientOrderId']);
|
|
22165
|
+
let response = undefined;
|
|
22164
22166
|
if (market['option']) {
|
|
22165
|
-
|
|
22167
|
+
response = await this.eapiPrivateDeleteOrder(this.extend(request, requestParams));
|
|
22166
22168
|
}
|
|
22167
22169
|
else if (market['linear']) {
|
|
22168
|
-
|
|
22170
|
+
response = await this.fapiPrivateDeleteOrder(this.extend(request, requestParams));
|
|
22169
22171
|
}
|
|
22170
22172
|
else if (market['inverse']) {
|
|
22171
|
-
|
|
22173
|
+
response = await this.dapiPrivateDeleteOrder(this.extend(request, requestParams));
|
|
22172
22174
|
}
|
|
22173
22175
|
else if (type === 'margin' || marginMode !== undefined) {
|
|
22174
|
-
method = 'sapiDeleteMarginOrder';
|
|
22175
22176
|
if (marginMode === 'isolated') {
|
|
22176
22177
|
request['isIsolated'] = true;
|
|
22177
22178
|
}
|
|
22179
|
+
response = await this.sapiDeleteMarginOrder(this.extend(request, requestParams));
|
|
22180
|
+
}
|
|
22181
|
+
else {
|
|
22182
|
+
response = await this.privateDeleteOrder(this.extend(request, requestParams));
|
|
22178
22183
|
}
|
|
22179
|
-
const requestParams = this.omit(query, ['type', 'origClientOrderId', 'clientOrderId']);
|
|
22180
|
-
const response = await this[method](this.extend(request, requestParams));
|
|
22181
22184
|
return this.parseOrder(response, market);
|
|
22182
22185
|
}
|
|
22183
22186
|
async cancelAllOrders(symbol = undefined, params = {}) {
|
|
@@ -22206,23 +22209,25 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
22206
22209
|
const type = this.safeString(params, 'type', market['type']);
|
|
22207
22210
|
params = this.omit(params, ['type']);
|
|
22208
22211
|
const [marginMode, query] = this.handleMarginModeAndParams('cancelAllOrders', params);
|
|
22209
|
-
let
|
|
22212
|
+
let response = undefined;
|
|
22210
22213
|
if (market['option']) {
|
|
22211
|
-
|
|
22214
|
+
response = await this.eapiPrivateDeleteAllOpenOrders(this.extend(request, query));
|
|
22212
22215
|
}
|
|
22213
22216
|
else if (market['linear']) {
|
|
22214
|
-
|
|
22217
|
+
response = await this.fapiPrivateDeleteAllOpenOrders(this.extend(request, query));
|
|
22215
22218
|
}
|
|
22216
22219
|
else if (market['inverse']) {
|
|
22217
|
-
|
|
22220
|
+
response = await this.dapiPrivateDeleteAllOpenOrders(this.extend(request, query));
|
|
22218
22221
|
}
|
|
22219
22222
|
else if ((type === 'margin') || (marginMode !== undefined)) {
|
|
22220
|
-
method = 'sapiDeleteMarginOpenOrders';
|
|
22221
22223
|
if (marginMode === 'isolated') {
|
|
22222
22224
|
request['isIsolated'] = true;
|
|
22223
22225
|
}
|
|
22226
|
+
response = await this.sapiDeleteMarginOpenOrders(this.extend(request, query));
|
|
22227
|
+
}
|
|
22228
|
+
else {
|
|
22229
|
+
response = await this.privateDeleteOpenOrders(this.extend(request, query));
|
|
22224
22230
|
}
|
|
22225
|
-
const response = await this[method](this.extend(request, query));
|
|
22226
22231
|
if (Array.isArray(response)) {
|
|
22227
22232
|
return this.parseOrders(response, market);
|
|
22228
22233
|
}
|
|
@@ -22359,37 +22364,12 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
22359
22364
|
const request = {};
|
|
22360
22365
|
let market = undefined;
|
|
22361
22366
|
let type = undefined;
|
|
22362
|
-
let method = undefined;
|
|
22363
22367
|
let marginMode = undefined;
|
|
22364
22368
|
if (symbol !== undefined) {
|
|
22365
22369
|
market = this.market(symbol);
|
|
22366
22370
|
request['symbol'] = market['id'];
|
|
22367
22371
|
}
|
|
22368
22372
|
[type, params] = this.handleMarketTypeAndParams('fetchMyTrades', market, params);
|
|
22369
|
-
if (type === 'option') {
|
|
22370
|
-
method = 'eapiPrivateGetUserTrades';
|
|
22371
|
-
}
|
|
22372
|
-
else {
|
|
22373
|
-
if (symbol === undefined) {
|
|
22374
|
-
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ArgumentsRequired(this.id + ' fetchMyTrades() requires a symbol argument');
|
|
22375
|
-
}
|
|
22376
|
-
[marginMode, params] = this.handleMarginModeAndParams('fetchMyTrades', params);
|
|
22377
|
-
if (type === 'spot' || type === 'margin') {
|
|
22378
|
-
method = 'privateGetMyTrades';
|
|
22379
|
-
if ((type === 'margin') || (marginMode !== undefined)) {
|
|
22380
|
-
method = 'sapiGetMarginMyTrades';
|
|
22381
|
-
if (marginMode === 'isolated') {
|
|
22382
|
-
request['isIsolated'] = true;
|
|
22383
|
-
}
|
|
22384
|
-
}
|
|
22385
|
-
}
|
|
22386
|
-
else if (market['linear']) {
|
|
22387
|
-
method = 'fapiPrivateGetUserTrades';
|
|
22388
|
-
}
|
|
22389
|
-
else if (market['inverse']) {
|
|
22390
|
-
method = 'dapiPrivateGetUserTrades';
|
|
22391
|
-
}
|
|
22392
|
-
}
|
|
22393
22373
|
let endTime = this.safeInteger2(params, 'until', 'endTime');
|
|
22394
22374
|
if (since !== undefined) {
|
|
22395
22375
|
const startTime = since;
|
|
@@ -22417,7 +22397,33 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
22417
22397
|
}
|
|
22418
22398
|
request['limit'] = limit;
|
|
22419
22399
|
}
|
|
22420
|
-
|
|
22400
|
+
let response = undefined;
|
|
22401
|
+
if (type === 'option') {
|
|
22402
|
+
response = await this.eapiPrivateGetUserTrades(this.extend(request, params));
|
|
22403
|
+
}
|
|
22404
|
+
else {
|
|
22405
|
+
if (symbol === undefined) {
|
|
22406
|
+
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ArgumentsRequired(this.id + ' fetchMyTrades() requires a symbol argument');
|
|
22407
|
+
}
|
|
22408
|
+
[marginMode, params] = this.handleMarginModeAndParams('fetchMyTrades', params);
|
|
22409
|
+
if (type === 'spot' || type === 'margin') {
|
|
22410
|
+
if ((type === 'margin') || (marginMode !== undefined)) {
|
|
22411
|
+
if (marginMode === 'isolated') {
|
|
22412
|
+
request['isIsolated'] = true;
|
|
22413
|
+
}
|
|
22414
|
+
response = await this.sapiGetMarginMyTrades(this.extend(request, params));
|
|
22415
|
+
}
|
|
22416
|
+
else {
|
|
22417
|
+
response = await this.privateGetMyTrades(this.extend(request, params));
|
|
22418
|
+
}
|
|
22419
|
+
}
|
|
22420
|
+
else if (market['linear']) {
|
|
22421
|
+
response = await this.fapiPrivateGetUserTrades(this.extend(request, params));
|
|
22422
|
+
}
|
|
22423
|
+
else if (market['inverse']) {
|
|
22424
|
+
response = await this.dapiPrivateGetUserTrades(this.extend(request, params));
|
|
22425
|
+
}
|
|
22426
|
+
}
|
|
22421
22427
|
//
|
|
22422
22428
|
// spot trade
|
|
22423
22429
|
//
|
|
@@ -23747,7 +23753,6 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
23747
23753
|
* @returns {object} a dictionary of [fee structures]{@link https://docs.ccxt.com/#/?id=fee-structure} indexed by market symbols
|
|
23748
23754
|
*/
|
|
23749
23755
|
await this.loadMarkets();
|
|
23750
|
-
let method = undefined;
|
|
23751
23756
|
let type = undefined;
|
|
23752
23757
|
[type, params] = this.handleMarketTypeAndParams('fetchTradingFees', undefined, params);
|
|
23753
23758
|
let subType = undefined;
|
|
@@ -23755,16 +23760,16 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
23755
23760
|
const isSpotOrMargin = (type === 'spot') || (type === 'margin');
|
|
23756
23761
|
const isLinear = this.isLinear(type, subType);
|
|
23757
23762
|
const isInverse = this.isInverse(type, subType);
|
|
23763
|
+
let response = undefined;
|
|
23758
23764
|
if (isSpotOrMargin) {
|
|
23759
|
-
|
|
23765
|
+
response = await this.sapiGetAssetTradeFee(params);
|
|
23760
23766
|
}
|
|
23761
23767
|
else if (isLinear) {
|
|
23762
|
-
|
|
23768
|
+
response = await this.fapiPrivateV2GetAccount(params);
|
|
23763
23769
|
}
|
|
23764
23770
|
else if (isInverse) {
|
|
23765
|
-
|
|
23771
|
+
response = await this.dapiPrivateGetAccount(params);
|
|
23766
23772
|
}
|
|
23767
|
-
const response = await this[method](params);
|
|
23768
23773
|
//
|
|
23769
23774
|
// sapi / spot
|
|
23770
23775
|
//
|
|
@@ -23962,17 +23967,16 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
23962
23967
|
const request = {
|
|
23963
23968
|
'symbol': market['id'],
|
|
23964
23969
|
};
|
|
23965
|
-
let
|
|
23970
|
+
let response = undefined;
|
|
23966
23971
|
if (market['linear']) {
|
|
23967
|
-
|
|
23972
|
+
response = await this.fapiPublicGetPremiumIndex(this.extend(request, params));
|
|
23968
23973
|
}
|
|
23969
23974
|
else if (market['inverse']) {
|
|
23970
|
-
|
|
23975
|
+
response = await this.dapiPublicGetPremiumIndex(this.extend(request, params));
|
|
23971
23976
|
}
|
|
23972
23977
|
else {
|
|
23973
23978
|
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.NotSupported(this.id + ' fetchFundingRate() supports linear and inverse contracts only');
|
|
23974
23979
|
}
|
|
23975
|
-
let response = await this[method](this.extend(request, params));
|
|
23976
23980
|
if (market['inverse']) {
|
|
23977
23981
|
response = response[0];
|
|
23978
23982
|
}
|
|
@@ -24610,20 +24614,20 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
24610
24614
|
* @returns {object} a dictionary of [leverage tiers structures]{@link https://docs.ccxt.com/#/?id=leverage-tiers-structure}, indexed by market symbols
|
|
24611
24615
|
*/
|
|
24612
24616
|
await this.loadMarkets();
|
|
24613
|
-
|
|
24617
|
+
let type = undefined;
|
|
24618
|
+
[type, params] = this.handleMarketTypeAndParams('fetchLeverageTiers', undefined, params);
|
|
24614
24619
|
let subType = undefined;
|
|
24615
|
-
[subType, params] = this.handleSubTypeAndParams('fetchLeverageTiers', undefined,
|
|
24616
|
-
let
|
|
24620
|
+
[subType, params] = this.handleSubTypeAndParams('fetchLeverageTiers', undefined, params, 'linear');
|
|
24621
|
+
let response = undefined;
|
|
24617
24622
|
if (this.isLinear(type, subType)) {
|
|
24618
|
-
|
|
24623
|
+
response = await this.fapiPrivateGetLeverageBracket(params);
|
|
24619
24624
|
}
|
|
24620
24625
|
else if (this.isInverse(type, subType)) {
|
|
24621
|
-
|
|
24626
|
+
response = await this.dapiPrivateV2GetLeverageBracket(params);
|
|
24622
24627
|
}
|
|
24623
24628
|
else {
|
|
24624
24629
|
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.NotSupported(this.id + ' fetchLeverageTiers() supports linear and inverse contracts only');
|
|
24625
24630
|
}
|
|
24626
|
-
const response = await this[method](query);
|
|
24627
24631
|
//
|
|
24628
24632
|
// usdm
|
|
24629
24633
|
//
|
|
@@ -25097,21 +25101,21 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
25097
25101
|
}
|
|
25098
25102
|
await this.loadMarkets();
|
|
25099
25103
|
const market = this.market(symbol);
|
|
25100
|
-
|
|
25104
|
+
const request = {
|
|
25105
|
+
'symbol': market['id'],
|
|
25106
|
+
'leverage': leverage,
|
|
25107
|
+
};
|
|
25108
|
+
let response = undefined;
|
|
25101
25109
|
if (market['linear']) {
|
|
25102
|
-
|
|
25110
|
+
response = await this.fapiPrivatePostLeverage(this.extend(request, params));
|
|
25103
25111
|
}
|
|
25104
25112
|
else if (market['inverse']) {
|
|
25105
|
-
|
|
25113
|
+
response = await this.dapiPrivatePostLeverage(this.extend(request, params));
|
|
25106
25114
|
}
|
|
25107
25115
|
else {
|
|
25108
25116
|
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.NotSupported(this.id + ' setLeverage() supports linear and inverse contracts only');
|
|
25109
25117
|
}
|
|
25110
|
-
|
|
25111
|
-
'symbol': market['id'],
|
|
25112
|
-
'leverage': leverage,
|
|
25113
|
-
};
|
|
25114
|
-
return await this[method](this.extend(request, params));
|
|
25118
|
+
return response;
|
|
25115
25119
|
}
|
|
25116
25120
|
async setMarginMode(marginMode, symbol = undefined, params = {}) {
|
|
25117
25121
|
/**
|
|
@@ -25144,23 +25148,21 @@ class binance extends _abstract_binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
25144
25148
|
}
|
|
25145
25149
|
await this.loadMarkets();
|
|
25146
25150
|
const market = this.market(symbol);
|
|
25147
|
-
let method = undefined;
|
|
25148
|
-
if (market['linear']) {
|
|
25149
|
-
method = 'fapiPrivatePostMarginType';
|
|
25150
|
-
}
|
|
25151
|
-
else if (market['inverse']) {
|
|
25152
|
-
method = 'dapiPrivatePostMarginType';
|
|
25153
|
-
}
|
|
25154
|
-
else {
|
|
25155
|
-
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.NotSupported(this.id + ' setMarginMode() supports linear and inverse contracts only');
|
|
25156
|
-
}
|
|
25157
25151
|
const request = {
|
|
25158
25152
|
'symbol': market['id'],
|
|
25159
25153
|
'marginType': marginMode,
|
|
25160
25154
|
};
|
|
25161
25155
|
let response = undefined;
|
|
25162
25156
|
try {
|
|
25163
|
-
|
|
25157
|
+
if (market['linear']) {
|
|
25158
|
+
response = await this.fapiPrivatePostMarginType(this.extend(request, params));
|
|
25159
|
+
}
|
|
25160
|
+
else if (market['inverse']) {
|
|
25161
|
+
response = await this.dapiPrivatePostMarginType(this.extend(request, params));
|
|
25162
|
+
}
|
|
25163
|
+
else {
|
|
25164
|
+
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.NotSupported(this.id + ' setMarginMode() supports linear and inverse contracts only');
|
|
25165
|
+
}
|
|
25164
25166
|
}
|
|
25165
25167
|
catch (e) {
|
|
25166
25168
|
// not an error
|
|
@@ -27111,6 +27113,16 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
27111
27113
|
},
|
|
27112
27114
|
},
|
|
27113
27115
|
'swap': {
|
|
27116
|
+
'v1': {
|
|
27117
|
+
'private': {
|
|
27118
|
+
'get': {
|
|
27119
|
+
'positionSide/dual': 1,
|
|
27120
|
+
},
|
|
27121
|
+
'post': {
|
|
27122
|
+
'positionSide/dual': 1,
|
|
27123
|
+
},
|
|
27124
|
+
},
|
|
27125
|
+
},
|
|
27114
27126
|
'v2': {
|
|
27115
27127
|
'public': {
|
|
27116
27128
|
'get': {
|
|
@@ -27297,6 +27309,7 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
27297
27309
|
'100202': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.InsufficientFunds,
|
|
27298
27310
|
'100204': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
|
|
27299
27311
|
'100400': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest,
|
|
27312
|
+
'100421': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadSymbol,
|
|
27300
27313
|
'100440': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
|
|
27301
27314
|
'100500': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
|
|
27302
27315
|
'100503': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError,
|
|
@@ -28272,7 +28285,7 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
28272
28285
|
// }
|
|
28273
28286
|
//
|
|
28274
28287
|
const marketId = this.safeString(ticker, 'symbol');
|
|
28275
|
-
const change = this.safeString(ticker, 'priceChange');
|
|
28288
|
+
// const change = this.safeString (ticker, 'priceChange'); // this is not ccxt's change because it does high-low instead of last-open
|
|
28276
28289
|
const lastQty = this.safeString(ticker, 'lastQty');
|
|
28277
28290
|
// in spot markets, lastQty is not present
|
|
28278
28291
|
// it's (bad, but) the only way we can check the tickers origin
|
|
@@ -28284,10 +28297,10 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
28284
28297
|
const close = this.safeString(ticker, 'lastPrice');
|
|
28285
28298
|
const quoteVolume = this.safeString(ticker, 'quoteVolume');
|
|
28286
28299
|
const baseVolume = this.safeString(ticker, 'volume');
|
|
28287
|
-
let percentage = this.safeString(ticker, 'priceChangePercent');
|
|
28288
|
-
if (percentage !== undefined) {
|
|
28289
|
-
|
|
28290
|
-
}
|
|
28300
|
+
// let percentage = this.safeString (ticker, 'priceChangePercent');
|
|
28301
|
+
// if (percentage !== undefined) {
|
|
28302
|
+
// percentage = percentage.replace ('%', '');
|
|
28303
|
+
// } similarly to change, it's not ccxt's percentage because it does priceChange/open, and priceChange is high-low
|
|
28291
28304
|
const ts = this.safeInteger(ticker, 'closeTime');
|
|
28292
28305
|
const datetime = this.iso8601(ts);
|
|
28293
28306
|
const bid = this.safeString(ticker, 'bidPrice');
|
|
@@ -28309,8 +28322,8 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
28309
28322
|
'close': close,
|
|
28310
28323
|
'last': undefined,
|
|
28311
28324
|
'previousClose': undefined,
|
|
28312
|
-
'change':
|
|
28313
|
-
'percentage':
|
|
28325
|
+
'change': undefined,
|
|
28326
|
+
'percentage': undefined,
|
|
28314
28327
|
'average': undefined,
|
|
28315
28328
|
'baseVolume': baseVolume,
|
|
28316
28329
|
'quoteVolume': quoteVolume,
|
|
@@ -29438,7 +29451,7 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
29438
29451
|
* @see https://bingx-api.github.io/docs/#/standard/contract-interface.html#Historical%20order
|
|
29439
29452
|
* @param {string} [symbol] unified market symbol of the market orders were made in
|
|
29440
29453
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
29441
|
-
* @param {int} [limit] the maximum number of
|
|
29454
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
29442
29455
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
29443
29456
|
* @param {int} [params.until] the latest time in ms to fetch orders for
|
|
29444
29457
|
* @param {boolean} [params.standard] whether to fetch standard contract orders
|
|
@@ -30381,6 +30394,37 @@ class bingx extends _abstract_bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
30381
30394
|
}
|
|
30382
30395
|
return positions;
|
|
30383
30396
|
}
|
|
30397
|
+
async setPositionMode(hedged, symbol = undefined, params = {}) {
|
|
30398
|
+
/**
|
|
30399
|
+
* @method
|
|
30400
|
+
* @name bingx#setPositionMode
|
|
30401
|
+
* @description set hedged to true or false for a market
|
|
30402
|
+
* @see https://bingx-api.github.io/docs/#/en-us/swapV2/trade-api.html#Set%20Position%20Mode
|
|
30403
|
+
* @param {bool} hedged set to true to use dualSidePosition
|
|
30404
|
+
* @param {string} symbol not used by bingx setPositionMode ()
|
|
30405
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
30406
|
+
* @returns {object} response from the exchange
|
|
30407
|
+
*/
|
|
30408
|
+
let dualSidePosition = undefined;
|
|
30409
|
+
if (hedged) {
|
|
30410
|
+
dualSidePosition = 'true';
|
|
30411
|
+
}
|
|
30412
|
+
else {
|
|
30413
|
+
dualSidePosition = 'false';
|
|
30414
|
+
}
|
|
30415
|
+
const request = {
|
|
30416
|
+
'dualSidePosition': dualSidePosition,
|
|
30417
|
+
};
|
|
30418
|
+
//
|
|
30419
|
+
// {
|
|
30420
|
+
// code: '0',
|
|
30421
|
+
// msg: '',
|
|
30422
|
+
// timeStamp: '1703327432734',
|
|
30423
|
+
// data: { dualSidePosition: 'false' }
|
|
30424
|
+
// }
|
|
30425
|
+
//
|
|
30426
|
+
return await this.swapV1PrivatePostPositionSideDual(this.extend(request, params));
|
|
30427
|
+
}
|
|
30384
30428
|
sign(path, section = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
|
|
30385
30429
|
const type = section[0];
|
|
30386
30430
|
const version = section[1];
|
|
@@ -30741,14 +30785,13 @@ class bit2c extends _abstract_bit2c_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
30741
30785
|
}
|
|
30742
30786
|
parseTicker(ticker, market = undefined) {
|
|
30743
30787
|
const symbol = this.safeSymbol(undefined, market);
|
|
30744
|
-
const timestamp = this.milliseconds();
|
|
30745
30788
|
const averagePrice = this.safeString(ticker, 'av');
|
|
30746
30789
|
const baseVolume = this.safeString(ticker, 'a');
|
|
30747
30790
|
const last = this.safeString(ticker, 'll');
|
|
30748
30791
|
return this.safeTicker({
|
|
30749
30792
|
'symbol': symbol,
|
|
30750
|
-
'timestamp':
|
|
30751
|
-
'datetime':
|
|
30793
|
+
'timestamp': undefined,
|
|
30794
|
+
'datetime': undefined,
|
|
30752
30795
|
'high': undefined,
|
|
30753
30796
|
'low': undefined,
|
|
30754
30797
|
'bid': this.safeString(ticker, 'h'),
|
|
@@ -34915,7 +34958,7 @@ class bitfinex extends _abstract_bitfinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
|
|
|
34915
34958
|
* @description fetches information on multiple closed orders made by the user
|
|
34916
34959
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
34917
34960
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
34918
|
-
* @param {int} [limit] the maximum number of
|
|
34961
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
34919
34962
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
34920
34963
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
34921
34964
|
*/
|
|
@@ -36421,15 +36464,14 @@ class bitfinex2 extends _abstract_bitfinex2_js__WEBPACK_IMPORTED_MODULE_0__/* ["
|
|
|
36421
36464
|
// FRR_AMOUNT_AVAILABLE
|
|
36422
36465
|
// ]
|
|
36423
36466
|
//
|
|
36424
|
-
const timestamp = this.milliseconds();
|
|
36425
36467
|
const symbol = this.safeSymbol(undefined, market);
|
|
36426
36468
|
const length = ticker.length;
|
|
36427
36469
|
const last = this.safeString(ticker, length - 4);
|
|
36428
36470
|
const percentage = this.safeString(ticker, length - 5);
|
|
36429
36471
|
return this.safeTicker({
|
|
36430
36472
|
'symbol': symbol,
|
|
36431
|
-
'timestamp':
|
|
36432
|
-
'datetime':
|
|
36473
|
+
'timestamp': undefined,
|
|
36474
|
+
'datetime': undefined,
|
|
36433
36475
|
'high': this.safeString(ticker, length - 2),
|
|
36434
36476
|
'low': this.safeString(ticker, length - 1),
|
|
36435
36477
|
'bid': this.safeString(ticker, length - 10),
|
|
@@ -37172,7 +37214,7 @@ class bitfinex2 extends _abstract_bitfinex2_js__WEBPACK_IMPORTED_MODULE_0__/* ["
|
|
|
37172
37214
|
* @see https://docs.bitfinex.com/reference/rest-auth-retrieve-orders-by-symbol
|
|
37173
37215
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
37174
37216
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
37175
|
-
* @param {int} [limit] the maximum number of
|
|
37217
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
37176
37218
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
37177
37219
|
* @param {int} [params.until] the latest time in ms to fetch entries for
|
|
37178
37220
|
* @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
|
|
@@ -39010,7 +39052,7 @@ class bitflyer extends _abstract_bitflyer_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
|
|
|
39010
39052
|
* @see https://lightning.bitflyer.com/docs?lang=en#list-orders
|
|
39011
39053
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
39012
39054
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
39013
|
-
* @param {int} [limit] the maximum number of
|
|
39055
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
39014
39056
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
39015
39057
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
39016
39058
|
*/
|
|
@@ -39055,7 +39097,7 @@ class bitflyer extends _abstract_bitflyer_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
|
|
|
39055
39097
|
* @see https://lightning.bitflyer.com/docs?lang=en#list-orders
|
|
39056
39098
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
39057
39099
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
39058
|
-
* @param {int} [limit] the maximum number of
|
|
39100
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
39059
39101
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
39060
39102
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
39061
39103
|
*/
|
|
@@ -50659,7 +50701,7 @@ class bitmart extends _abstract_bitmart_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
50659
50701
|
// "legal_coin_price":"0.1302699"
|
|
50660
50702
|
// }
|
|
50661
50703
|
//
|
|
50662
|
-
const timestamp = this.safeInteger(ticker, 'timestamp'
|
|
50704
|
+
const timestamp = this.safeInteger(ticker, 'timestamp');
|
|
50663
50705
|
const marketId = this.safeString2(ticker, 'symbol', 'contract_symbol');
|
|
50664
50706
|
market = this.safeMarket(marketId, market);
|
|
50665
50707
|
const symbol = market['symbol'];
|
|
@@ -52334,7 +52376,7 @@ class bitmart extends _abstract_bitmart_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
52334
52376
|
* @description fetches information on multiple closed orders made by the user
|
|
52335
52377
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
52336
52378
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
52337
|
-
* @param {int} [limit] the maximum number of
|
|
52379
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
52338
52380
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
52339
52381
|
* @param {int} [params.until] timestamp in ms of the latest entry
|
|
52340
52382
|
* @param {string} [params.marginMode] *spot only* 'cross' or 'isolated', for margin trading
|
|
@@ -54775,7 +54817,7 @@ class bitmex extends _abstract_bitmex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
54775
54817
|
* @description fetches information on multiple orders made by the user
|
|
54776
54818
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
54777
54819
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
54778
|
-
* @param {int} [limit] the maximum number of
|
|
54820
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
54779
54821
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
54780
54822
|
* @param {int} [params.until] the earliest time in ms to fetch orders for
|
|
54781
54823
|
* @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
|
|
@@ -54839,7 +54881,7 @@ class bitmex extends _abstract_bitmex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
54839
54881
|
* @description fetches information on multiple closed orders made by the user
|
|
54840
54882
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
54841
54883
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
54842
|
-
* @param {int} [limit] the maximum number of
|
|
54884
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
54843
54885
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
54844
54886
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
54845
54887
|
*/
|
|
@@ -58001,7 +58043,7 @@ class bitopro extends _abstract_bitopro_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
58001
58043
|
* @see https://github.com/bitoex/bitopro-offical-api-docs/blob/master/api/v3/private/get_orders_data.md
|
|
58002
58044
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
58003
58045
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
58004
|
-
* @param {int} [limit] the maximum number of
|
|
58046
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
58005
58047
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
58006
58048
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
58007
58049
|
*/
|
|
@@ -60284,7 +60326,7 @@ class bitpanda extends _abstract_bitpanda_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
|
|
|
60284
60326
|
* @description fetches information on multiple closed orders made by the user
|
|
60285
60327
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
60286
60328
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
60287
|
-
* @param {int} [limit] the maximum number of
|
|
60329
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
60288
60330
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
60289
60331
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
60290
60332
|
*/
|
|
@@ -68937,7 +68979,7 @@ class bitvavo extends _abstract_bitvavo_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
68937
68979
|
* @description fetches information on multiple orders made by the user
|
|
68938
68980
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
68939
68981
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
68940
|
-
* @param {int} [limit] the maximum number of
|
|
68982
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
68941
68983
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
68942
68984
|
* @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
|
|
68943
68985
|
* @param {int} [params.until] the latest time in ms to fetch entries for
|
|
@@ -70762,7 +70804,7 @@ class blockchaincom extends _abstract_blockchaincom_js__WEBPACK_IMPORTED_MODULE_
|
|
|
70762
70804
|
* @description fetches information on multiple closed orders made by the user
|
|
70763
70805
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
70764
70806
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
70765
|
-
* @param {int} [limit] the maximum number of
|
|
70807
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
70766
70808
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
70767
70809
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
70768
70810
|
*/
|
|
@@ -72039,7 +72081,7 @@ class btcalpha extends _abstract_btcalpha_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
|
|
|
72039
72081
|
* @description fetches information on multiple orders made by the user
|
|
72040
72082
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
72041
72083
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
72042
|
-
* @param {int} [limit] the maximum number of
|
|
72084
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
72043
72085
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
72044
72086
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
72045
72087
|
*/
|
|
@@ -72079,7 +72121,7 @@ class btcalpha extends _abstract_btcalpha_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
|
|
|
72079
72121
|
* @description fetches information on multiple closed orders made by the user
|
|
72080
72122
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
72081
72123
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
72082
|
-
* @param {int} [limit] the maximum number of
|
|
72124
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
72083
72125
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
72084
72126
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
72085
72127
|
*/
|
|
@@ -72357,13 +72399,12 @@ class btcbox extends _abstract_btcbox_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
72357
72399
|
return this.parseOrderBook(response, market['symbol']);
|
|
72358
72400
|
}
|
|
72359
72401
|
parseTicker(ticker, market = undefined) {
|
|
72360
|
-
const timestamp = this.milliseconds();
|
|
72361
72402
|
const symbol = this.safeSymbol(undefined, market);
|
|
72362
72403
|
const last = this.safeString(ticker, 'last');
|
|
72363
72404
|
return this.safeTicker({
|
|
72364
72405
|
'symbol': symbol,
|
|
72365
|
-
'timestamp':
|
|
72366
|
-
'datetime':
|
|
72406
|
+
'timestamp': undefined,
|
|
72407
|
+
'datetime': undefined,
|
|
72367
72408
|
'high': this.safeString(ticker, 'high'),
|
|
72368
72409
|
'low': this.safeString(ticker, 'low'),
|
|
72369
72410
|
'bid': this.safeString(ticker, 'buy'),
|
|
@@ -72669,7 +72710,7 @@ class btcbox extends _abstract_btcbox_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
72669
72710
|
* @description fetches information on multiple orders made by the user
|
|
72670
72711
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
72671
72712
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
72672
|
-
* @param {int} [limit] the maximum number of
|
|
72713
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
72673
72714
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
72674
72715
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
72675
72716
|
*/
|
|
@@ -73781,7 +73822,7 @@ class btcmarkets extends _abstract_btcmarkets_js__WEBPACK_IMPORTED_MODULE_0__/*
|
|
|
73781
73822
|
* @description fetches information on multiple orders made by the user
|
|
73782
73823
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
73783
73824
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
73784
|
-
* @param {int} [limit] the maximum number of
|
|
73825
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
73785
73826
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
73786
73827
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
73787
73828
|
*/
|
|
@@ -73824,7 +73865,7 @@ class btcmarkets extends _abstract_btcmarkets_js__WEBPACK_IMPORTED_MODULE_0__/*
|
|
|
73824
73865
|
* @description fetches information on multiple closed orders made by the user
|
|
73825
73866
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
73826
73867
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
73827
|
-
* @param {int} [limit] the maximum number of
|
|
73868
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
73828
73869
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
73829
73870
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
73830
73871
|
*/
|
|
@@ -74734,7 +74775,7 @@ class btcturk extends _abstract_btcturk_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
74734
74775
|
* @description fetches information on multiple orders made by the user
|
|
74735
74776
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
74736
74777
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
74737
|
-
* @param {int} [limit] the maximum number of
|
|
74778
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
74738
74779
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
74739
74780
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
74740
74781
|
*/
|
|
@@ -79379,7 +79420,7 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
79379
79420
|
* @see https://bybit-exchange.github.io/docs/v5/order/order-list
|
|
79380
79421
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
79381
79422
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
79382
|
-
* @param {int} [limit] the maximum number of
|
|
79423
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
79383
79424
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
79384
79425
|
* @param {boolean} [params.stop] true if stop order
|
|
79385
79426
|
* @param {string} [params.type] market type, ['swap', 'option', 'spot']
|
|
@@ -79495,7 +79536,7 @@ class bybit extends _abstract_bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
79495
79536
|
* @see https://bybit-exchange.github.io/docs/v5/order/order-list
|
|
79496
79537
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
79497
79538
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
79498
|
-
* @param {int} [limit] the maximum number of
|
|
79539
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
79499
79540
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
79500
79541
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
79501
79542
|
*/
|
|
@@ -83909,7 +83950,7 @@ class cex extends _abstract_cex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
|
|
|
83909
83950
|
* @description fetches information on multiple orders made by the user
|
|
83910
83951
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
83911
83952
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
83912
|
-
* @param {int} [limit] the maximum number of
|
|
83953
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
83913
83954
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
83914
83955
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
83915
83956
|
*/
|
|
@@ -86645,6 +86686,12 @@ class coinbase extends _abstract_coinbase_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
|
|
|
86645
86686
|
// "base_size": "0.2",
|
|
86646
86687
|
// "limit_price": "0.006",
|
|
86647
86688
|
// "post_only": false
|
|
86689
|
+
// },
|
|
86690
|
+
// "stop_limit_stop_limit_gtc": {
|
|
86691
|
+
// "base_size": "48.54",
|
|
86692
|
+
// "limit_price": "6.998",
|
|
86693
|
+
// "stop_price": "7.0687",
|
|
86694
|
+
// "stop_direction": "STOP_DIRECTION_STOP_DOWN"
|
|
86648
86695
|
// }
|
|
86649
86696
|
// },
|
|
86650
86697
|
// "side": "SELL",
|
|
@@ -86678,11 +86725,11 @@ class coinbase extends _abstract_coinbase_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
|
|
|
86678
86725
|
market = this.market(symbol);
|
|
86679
86726
|
}
|
|
86680
86727
|
const orderConfiguration = this.safeValue(order, 'order_configuration', {});
|
|
86681
|
-
const limitGTC = this.safeValue(orderConfiguration, 'limit_limit_gtc'
|
|
86682
|
-
const limitGTD = this.safeValue(orderConfiguration, 'limit_limit_gtd'
|
|
86683
|
-
const stopLimitGTC = this.safeValue(orderConfiguration, 'stop_limit_stop_limit_gtc'
|
|
86684
|
-
const stopLimitGTD = this.safeValue(orderConfiguration, 'stop_limit_stop_limit_gtd'
|
|
86685
|
-
const marketIOC = this.safeValue(orderConfiguration, 'market_market_ioc'
|
|
86728
|
+
const limitGTC = this.safeValue(orderConfiguration, 'limit_limit_gtc');
|
|
86729
|
+
const limitGTD = this.safeValue(orderConfiguration, 'limit_limit_gtd');
|
|
86730
|
+
const stopLimitGTC = this.safeValue(orderConfiguration, 'stop_limit_stop_limit_gtc');
|
|
86731
|
+
const stopLimitGTD = this.safeValue(orderConfiguration, 'stop_limit_stop_limit_gtd');
|
|
86732
|
+
const marketIOC = this.safeValue(orderConfiguration, 'market_market_ioc');
|
|
86686
86733
|
const isLimit = ((limitGTC !== undefined) || (limitGTD !== undefined));
|
|
86687
86734
|
const isStop = ((stopLimitGTC !== undefined) || (stopLimitGTD !== undefined));
|
|
86688
86735
|
let price = undefined;
|
|
@@ -88693,7 +88740,7 @@ class coinbasepro extends _abstract_coinbasepro_js__WEBPACK_IMPORTED_MODULE_0__/
|
|
|
88693
88740
|
* @description fetches information on multiple orders made by the user
|
|
88694
88741
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
88695
88742
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
88696
|
-
* @param {int} [limit] the maximum number of
|
|
88743
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
88697
88744
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
88698
88745
|
* @param {int} [params.until] the latest time in ms to fetch open orders for
|
|
88699
88746
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
@@ -88751,7 +88798,7 @@ class coinbasepro extends _abstract_coinbasepro_js__WEBPACK_IMPORTED_MODULE_0__/
|
|
|
88751
88798
|
* @description fetches information on multiple closed orders made by the user
|
|
88752
88799
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
88753
88800
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
88754
|
-
* @param {int} [limit] the maximum number of
|
|
88801
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
88755
88802
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
88756
88803
|
* @param {int} [params.until] the latest time in ms to fetch open orders for
|
|
88757
88804
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
@@ -93479,7 +93526,7 @@ class coinex extends _abstract_coinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
93479
93526
|
* @see https://viabtc.github.io/coinex_api_en_doc/spot/#docsspot003_trade012_finished_order
|
|
93480
93527
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
93481
93528
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
93482
|
-
* @param {int} [limit] the maximum number of
|
|
93529
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
93483
93530
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
93484
93531
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
93485
93532
|
*/
|
|
@@ -96893,7 +96940,7 @@ class coinlist extends _abstract_coinlist_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
|
|
|
96893
96940
|
* @see https://trade-docs.coinlist.co/?javascript--nodejs#list-orders
|
|
96894
96941
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
96895
96942
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
96896
|
-
* @param {int} [limit] the maximum number of
|
|
96943
|
+
* @param {int} [limit] the maximum number of order structures to retrieve (default 200, max 500)
|
|
96897
96944
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
96898
96945
|
* @param {int} [params.until] the latest time in ms to fetch entries for
|
|
96899
96946
|
* @param {string|string[]} [params.status] the status of the order - 'accepted', 'done', 'canceled', 'rejected', 'pending' (default [ 'accepted', 'done', 'canceled', 'rejected', 'pending' ])
|
|
@@ -104601,6 +104648,7 @@ class cryptocom extends _abstract_cryptocom_js__WEBPACK_IMPORTED_MODULE_0__/* ["
|
|
|
104601
104648
|
const timestamp = this.safeInteger(ticker, 't');
|
|
104602
104649
|
const marketId = this.safeString(ticker, 'i');
|
|
104603
104650
|
market = this.safeMarket(marketId, market, '_');
|
|
104651
|
+
const quote = this.safeString(market, 'quote');
|
|
104604
104652
|
const last = this.safeString(ticker, 'a');
|
|
104605
104653
|
return this.safeTicker({
|
|
104606
104654
|
'symbol': market['symbol'],
|
|
@@ -104621,7 +104669,7 @@ class cryptocom extends _abstract_cryptocom_js__WEBPACK_IMPORTED_MODULE_0__/* ["
|
|
|
104621
104669
|
'percentage': this.safeString(ticker, 'c'),
|
|
104622
104670
|
'average': undefined,
|
|
104623
104671
|
'baseVolume': this.safeString(ticker, 'v'),
|
|
104624
|
-
'quoteVolume': this.safeString(ticker, 'vv'),
|
|
104672
|
+
'quoteVolume': (quote === 'USD') ? this.safeString(ticker, 'vv') : undefined,
|
|
104625
104673
|
'info': ticker,
|
|
104626
104674
|
}, market);
|
|
104627
104675
|
}
|
|
@@ -107764,6 +107812,8 @@ class delta extends _abstract_delta_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
107764
107812
|
'addMargin': true,
|
|
107765
107813
|
'cancelAllOrders': true,
|
|
107766
107814
|
'cancelOrder': true,
|
|
107815
|
+
'closeAllPositions': true,
|
|
107816
|
+
'closePosition': false,
|
|
107767
107817
|
'createOrder': true,
|
|
107768
107818
|
'createReduceOnlyOrder': true,
|
|
107769
107819
|
'editOrder': true,
|
|
@@ -110908,6 +110958,29 @@ class delta extends _abstract_delta_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
110908
110958
|
'info': greeks,
|
|
110909
110959
|
};
|
|
110910
110960
|
}
|
|
110961
|
+
async closeAllPositions(params = {}) {
|
|
110962
|
+
/**
|
|
110963
|
+
* @method
|
|
110964
|
+
* @name delta#closeAllPositions
|
|
110965
|
+
* @description closes all open positions for a market type
|
|
110966
|
+
* @see https://docs.delta.exchange/#close-all-positions
|
|
110967
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
110968
|
+
* @param {int} [params.user_id] the users id
|
|
110969
|
+
* @returns {object[]} A list of [position structures]{@link https://docs.ccxt.com/#/?id=position-structure}
|
|
110970
|
+
*/
|
|
110971
|
+
await this.loadMarkets();
|
|
110972
|
+
const request = {
|
|
110973
|
+
'close_all_portfolio': true,
|
|
110974
|
+
'close_all_isolated': true,
|
|
110975
|
+
// 'user_id': 12345,
|
|
110976
|
+
};
|
|
110977
|
+
const response = await this.privatePostPositionsCloseAll(this.extend(request, params));
|
|
110978
|
+
//
|
|
110979
|
+
// {"result":{},"success":true}
|
|
110980
|
+
//
|
|
110981
|
+
const position = this.parsePosition(this.safeValue(response, 'result', {}));
|
|
110982
|
+
return [position];
|
|
110983
|
+
}
|
|
110911
110984
|
sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
|
|
110912
110985
|
const requestPath = '/' + this.version + '/' + this.implodeParams(path, params);
|
|
110913
110986
|
let url = this.urls['api'][api] + requestPath;
|
|
@@ -112962,7 +113035,7 @@ class deribit extends _abstract_deribit_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
112962
113035
|
* @description fetches information on multiple closed orders made by the user
|
|
112963
113036
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
112964
113037
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
112965
|
-
* @param {int} [limit] the maximum number of
|
|
113038
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
112966
113039
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
112967
113040
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
112968
113041
|
*/
|
|
@@ -116501,7 +116574,7 @@ class digifinex extends _abstract_digifinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["
|
|
|
116501
116574
|
* @see https://docs.digifinex.com/en-ww/swap/v2/rest.html#historyorder
|
|
116502
116575
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
116503
116576
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
116504
|
-
* @param {int} [limit] the maximum number of
|
|
116577
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
116505
116578
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
116506
116579
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
116507
116580
|
*/
|
|
@@ -125944,7 +126017,7 @@ class gate extends _abstract_gate_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
|
|
|
125944
126017
|
* @see https://www.gate.io/docs/developers/apiv4/en/#list-options-orders
|
|
125945
126018
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
125946
126019
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
125947
|
-
* @param {int} [limit] the maximum number of
|
|
126020
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
125948
126021
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
125949
126022
|
* @param {bool} [params.stop] true for fetching stop orders
|
|
125950
126023
|
* @param {string} [params.type] spot, swap or future, if not provided this.options['defaultType'] is used
|
|
@@ -128292,7 +128365,7 @@ class gate extends _abstract_gate_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
|
|
|
128292
128365
|
async closePosition(symbol, side = undefined, params = {}) {
|
|
128293
128366
|
/**
|
|
128294
128367
|
* @method
|
|
128295
|
-
* @name gate#
|
|
128368
|
+
* @name gate#closePosition
|
|
128296
128369
|
* @description closes open positions for a market
|
|
128297
128370
|
* @see https://www.gate.io/docs/developers/apiv4/en/#create-a-futures-order
|
|
128298
128371
|
* @see https://www.gate.io/docs/developers/apiv4/en/#create-a-futures-order-2
|
|
@@ -128300,7 +128373,7 @@ class gate extends _abstract_gate_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
|
|
|
128300
128373
|
* @param {string} symbol Unified CCXT market symbol
|
|
128301
128374
|
* @param {string} side 'buy' or 'sell'
|
|
128302
128375
|
* @param {object} [params] extra parameters specific to the okx api endpoint
|
|
128303
|
-
* @returns {[
|
|
128376
|
+
* @returns {object[]} [A list of position structures]{@link https://docs.ccxt.com/#/?id=position-structure}
|
|
128304
128377
|
*/
|
|
128305
128378
|
const request = {
|
|
128306
128379
|
'close': true,
|
|
@@ -131990,7 +132063,7 @@ class hitbtc extends _abstract_hitbtc_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
131990
132063
|
* @see https://api.hitbtc.com/#margin-orders-history
|
|
131991
132064
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
131992
132065
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
131993
|
-
* @param {int} [limit] the maximum number of
|
|
132066
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
131994
132067
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
131995
132068
|
* @param {string} [params.marginMode] 'cross' or 'isolated' only 'isolated' is supported
|
|
131996
132069
|
* @param {bool} [params.margin] true for fetching margin orders
|
|
@@ -134796,7 +134869,7 @@ class hollaex extends _abstract_hollaex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
134796
134869
|
* @description fetches information on multiple closed orders made by the user
|
|
134797
134870
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
134798
134871
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
134799
|
-
* @param {int} [limit] the maximum number of
|
|
134872
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
134800
134873
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
134801
134874
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
134802
134875
|
*/
|
|
@@ -134854,7 +134927,7 @@ class hollaex extends _abstract_hollaex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
134854
134927
|
* @description fetches information on multiple orders made by the user
|
|
134855
134928
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
134856
134929
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
134857
|
-
* @param {int} [limit] the maximum number of
|
|
134930
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
134858
134931
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
134859
134932
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
134860
134933
|
*/
|
|
@@ -139892,7 +139965,7 @@ class htx extends _abstract_htx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
|
|
|
139892
139965
|
* @description fetches information on multiple closed orders made by the user
|
|
139893
139966
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
139894
139967
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
139895
|
-
* @param {int} [limit] the maximum number of
|
|
139968
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
139896
139969
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
139897
139970
|
* @param {int} [params.until] the latest time in ms to fetch entries for
|
|
139898
139971
|
* @param {boolean} [params.paginate] default false, when true will automatically paginate by calling this endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
|
|
@@ -145782,7 +145855,7 @@ class huobijp extends _abstract_huobijp_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
145782
145855
|
* @description fetches information on multiple orders made by the user
|
|
145783
145856
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
145784
145857
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
145785
|
-
* @param {int} [limit] the maximum number of
|
|
145858
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
145786
145859
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
145787
145860
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
145788
145861
|
*/
|
|
@@ -145815,7 +145888,7 @@ class huobijp extends _abstract_huobijp_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
145815
145888
|
* @description fetches information on multiple closed orders made by the user
|
|
145816
145889
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
145817
145890
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
145818
|
-
* @param {int} [limit] the maximum number of
|
|
145891
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
145819
145892
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
145820
145893
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
145821
145894
|
*/
|
|
@@ -147465,7 +147538,7 @@ class idex extends _abstract_idex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
|
|
|
147465
147538
|
* @description fetches information on multiple closed orders made by the user
|
|
147466
147539
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
147467
147540
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
147468
|
-
* @param {int} [limit] the maximum number of
|
|
147541
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
147469
147542
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
147470
147543
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
147471
147544
|
*/
|
|
@@ -148829,7 +148902,7 @@ class independentreserve extends _abstract_independentreserve_js__WEBPACK_IMPORT
|
|
|
148829
148902
|
* @description fetches information on multiple closed orders made by the user
|
|
148830
148903
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
148831
148904
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
148832
|
-
* @param {int} [limit] the maximum number of
|
|
148905
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
148833
148906
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
148834
148907
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
148835
148908
|
*/
|
|
@@ -150989,7 +151062,6 @@ class kraken extends _abstract_kraken_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
150989
151062
|
// "o":"2571.56000"
|
|
150990
151063
|
// }
|
|
150991
151064
|
//
|
|
150992
|
-
const timestamp = this.milliseconds();
|
|
150993
151065
|
const symbol = this.safeSymbol(undefined, market);
|
|
150994
151066
|
const v = this.safeValue(ticker, 'v', []);
|
|
150995
151067
|
const baseVolume = this.safeString(v, 1);
|
|
@@ -151004,8 +151076,8 @@ class kraken extends _abstract_kraken_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
151004
151076
|
const ask = this.safeValue(ticker, 'a', []);
|
|
151005
151077
|
return this.safeTicker({
|
|
151006
151078
|
'symbol': symbol,
|
|
151007
|
-
'timestamp':
|
|
151008
|
-
'datetime':
|
|
151079
|
+
'timestamp': undefined,
|
|
151080
|
+
'datetime': undefined,
|
|
151009
151081
|
'high': this.safeString(high, 1),
|
|
151010
151082
|
'low': this.safeString(low, 1),
|
|
151011
151083
|
'bid': this.safeString(bid, 0),
|
|
@@ -151519,8 +151591,12 @@ class kraken extends _abstract_kraken_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
151519
151591
|
* @param {float} amount how much of currency you want to trade in units of base currency
|
|
151520
151592
|
* @param {float} [price] the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
|
|
151521
151593
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
151522
|
-
* @param {bool} params.postOnly
|
|
151523
|
-
* @param {bool} params.reduceOnly
|
|
151594
|
+
* @param {bool} [params.postOnly] if true, the order will only be posted to the order book and not executed immediately
|
|
151595
|
+
* @param {bool} [params.reduceOnly] *margin only* indicates if this order is to reduce the size of a position
|
|
151596
|
+
* @param {float} [params.stopLossPrice] *margin only* the price that a stop loss order is triggered at
|
|
151597
|
+
* @param {float} [params.takeProfitPrice] *margin only* the price that a take profit order is triggered at
|
|
151598
|
+
* @param {string} [params.trailingStopPrice] *margin only* the quote amount to trail away from the current market price
|
|
151599
|
+
* @param {string} [params.trigger] *margin only* the activation price type, 'last' or 'index', default is 'last'
|
|
151524
151600
|
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
151525
151601
|
*/
|
|
151526
151602
|
await this.loadMarkets();
|
|
@@ -151775,50 +151851,48 @@ class kraken extends _abstract_kraken_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
151775
151851
|
if (clientOrderId !== undefined) {
|
|
151776
151852
|
request['userref'] = clientOrderId;
|
|
151777
151853
|
}
|
|
151778
|
-
|
|
151779
|
-
|
|
151780
|
-
|
|
151781
|
-
|
|
151782
|
-
|
|
151783
|
-
|
|
151784
|
-
|
|
151785
|
-
// settle-position
|
|
151786
|
-
//
|
|
151854
|
+
const stopLossTriggerPrice = this.safeString(params, 'stopLossPrice');
|
|
151855
|
+
const takeProfitTriggerPrice = this.safeString(params, 'takeProfitPrice');
|
|
151856
|
+
const isStopLossTriggerOrder = stopLossTriggerPrice !== undefined;
|
|
151857
|
+
const isTakeProfitTriggerOrder = takeProfitTriggerPrice !== undefined;
|
|
151858
|
+
const isStopLossOrTakeProfitTrigger = isStopLossTriggerOrder || isTakeProfitTriggerOrder;
|
|
151859
|
+
const trailingStopPrice = this.safeString(params, 'trailingStopPrice');
|
|
151860
|
+
const isTrailingStopPriceOrder = trailingStopPrice !== undefined;
|
|
151787
151861
|
if (type === 'limit') {
|
|
151788
151862
|
request['price'] = this.priceToPrecision(symbol, price);
|
|
151789
151863
|
}
|
|
151790
|
-
|
|
151791
|
-
|
|
151792
|
-
if (
|
|
151793
|
-
|
|
151864
|
+
let reduceOnly = this.safeValue2(params, 'reduceOnly', 'reduce_only');
|
|
151865
|
+
if (isStopLossOrTakeProfitTrigger) {
|
|
151866
|
+
if (isStopLossTriggerOrder) {
|
|
151867
|
+
request['price'] = this.priceToPrecision(symbol, stopLossTriggerPrice);
|
|
151868
|
+
request['ordertype'] = 'stop-loss-limit';
|
|
151794
151869
|
}
|
|
151795
|
-
else {
|
|
151796
|
-
request['price'] = this.priceToPrecision(symbol,
|
|
151870
|
+
else if (isTakeProfitTriggerOrder) {
|
|
151871
|
+
request['price'] = this.priceToPrecision(symbol, takeProfitTriggerPrice);
|
|
151872
|
+
request['ordertype'] = 'take-profit-limit';
|
|
151797
151873
|
}
|
|
151874
|
+
request['price2'] = this.priceToPrecision(symbol, price);
|
|
151875
|
+
reduceOnly = true;
|
|
151798
151876
|
}
|
|
151799
|
-
else if (
|
|
151800
|
-
const
|
|
151801
|
-
const
|
|
151802
|
-
|
|
151803
|
-
|
|
151804
|
-
if (
|
|
151805
|
-
|
|
151806
|
-
request['
|
|
151807
|
-
|
|
151808
|
-
|
|
151809
|
-
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ArgumentsRequired(this.id + method + ' requires a price argument and/or price/stopPrice/price2 parameters for a ' + type + ' order');
|
|
151877
|
+
else if (isTrailingStopPriceOrder) {
|
|
151878
|
+
const trailingStopActivationPriceType = this.safeString(params, 'trigger', 'last');
|
|
151879
|
+
const trailingStopPriceString = '+' + trailingStopPrice;
|
|
151880
|
+
request['trigger'] = trailingStopActivationPriceType;
|
|
151881
|
+
reduceOnly = true;
|
|
151882
|
+
if (type === 'limit') {
|
|
151883
|
+
const trailingStopLimitPriceString = '+' + this.numberToString(price);
|
|
151884
|
+
request['price'] = trailingStopPriceString;
|
|
151885
|
+
request['price2'] = trailingStopLimitPriceString;
|
|
151886
|
+
request['ordertype'] = 'trailing-stop-limit';
|
|
151810
151887
|
}
|
|
151811
151888
|
else {
|
|
151812
|
-
|
|
151813
|
-
|
|
151814
|
-
request['price2'] = this.priceToPrecision(symbol, price);
|
|
151815
|
-
}
|
|
151816
|
-
else if (limitPriceDefined) {
|
|
151817
|
-
request['price'] = this.priceToPrecision(symbol, price);
|
|
151818
|
-
request['price2'] = this.priceToPrecision(symbol, limitPrice);
|
|
151819
|
-
}
|
|
151889
|
+
request['price'] = trailingStopPriceString;
|
|
151890
|
+
request['ordertype'] = 'trailing-stop';
|
|
151820
151891
|
}
|
|
151821
151892
|
}
|
|
151893
|
+
if (reduceOnly) {
|
|
151894
|
+
request['reduce_only'] = 'true'; // not using boolean in this case, because the urlencodedNested transforms it into 'True' string
|
|
151895
|
+
}
|
|
151822
151896
|
let close = this.safeValue(params, 'close');
|
|
151823
151897
|
if (close !== undefined) {
|
|
151824
151898
|
close = this.extend({}, close);
|
|
@@ -151842,11 +151916,7 @@ class kraken extends _abstract_kraken_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
151842
151916
|
if (postOnly) {
|
|
151843
151917
|
request['oflags'] = 'post';
|
|
151844
151918
|
}
|
|
151845
|
-
|
|
151846
|
-
if (reduceOnly) {
|
|
151847
|
-
request['reduce_only'] = true;
|
|
151848
|
-
}
|
|
151849
|
-
params = this.omit(params, ['price', 'stopPrice', 'price2', 'close', 'timeInForce', 'reduceOnly']);
|
|
151919
|
+
params = this.omit(params, ['timeInForce', 'reduceOnly', 'stopLossPrice', 'takeProfitPrice', 'trailingStopPrice']);
|
|
151850
151920
|
return [request, params];
|
|
151851
151921
|
}
|
|
151852
151922
|
async editOrder(id, symbol, type, side, amount = undefined, price = undefined, params = {}) {
|
|
@@ -151862,6 +151932,10 @@ class kraken extends _abstract_kraken_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
151862
151932
|
* @param {float} amount how much of the currency you want to trade in units of the base currency
|
|
151863
151933
|
* @param {float} [price] the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
|
|
151864
151934
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
151935
|
+
* @param {float} [params.stopLossPrice] *margin only* the price that a stop loss order is triggered at
|
|
151936
|
+
* @param {float} [params.takeProfitPrice] *margin only* the price that a take profit order is triggered at
|
|
151937
|
+
* @param {string} [params.trailingStopPrice] *margin only* the quote price away from the current market price
|
|
151938
|
+
* @param {string} [params.trigger] *margin only* the activation price type, 'last' or 'index', default is 'last'
|
|
151865
151939
|
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
151866
151940
|
*/
|
|
151867
151941
|
await this.loadMarkets();
|
|
@@ -152244,7 +152318,7 @@ class kraken extends _abstract_kraken_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
152244
152318
|
* @see https://docs.kraken.com/rest/#tag/Account-Data/operation/getClosedOrders
|
|
152245
152319
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
152246
152320
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
152247
|
-
* @param {int} [limit] the maximum number of
|
|
152321
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
152248
152322
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
152249
152323
|
* @param {int} [params.until] timestamp in ms of the latest entry
|
|
152250
152324
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
@@ -153871,20 +153945,12 @@ class krakenfutures extends _abstract_krakenfutures_js__WEBPACK_IMPORTED_MODULE_
|
|
|
153871
153945
|
});
|
|
153872
153946
|
}
|
|
153873
153947
|
createOrderRequest(symbol, type, side, amount, price = undefined, params = {}) {
|
|
153948
|
+
const market = this.market(symbol);
|
|
153874
153949
|
type = this.safeString(params, 'orderType', type);
|
|
153875
153950
|
const timeInForce = this.safeString(params, 'timeInForce');
|
|
153876
|
-
const stopPrice = this.safeString(params, 'stopPrice');
|
|
153877
153951
|
let postOnly = false;
|
|
153878
153952
|
[postOnly, params] = this.handlePostOnly(type === 'market', type === 'post', params);
|
|
153879
|
-
|
|
153880
|
-
params = this.omit(params, ['clientOrderId', 'cliOrdId']);
|
|
153881
|
-
if ((type === 'stp' || type === 'take_profit') && stopPrice === undefined) {
|
|
153882
|
-
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_1__.ArgumentsRequired(this.id + ' createOrder requires params.stopPrice when type is ' + type);
|
|
153883
|
-
}
|
|
153884
|
-
if (stopPrice !== undefined && type !== 'take_profit') {
|
|
153885
|
-
type = 'stp';
|
|
153886
|
-
}
|
|
153887
|
-
else if (postOnly) {
|
|
153953
|
+
if (postOnly) {
|
|
153888
153954
|
type = 'post';
|
|
153889
153955
|
}
|
|
153890
153956
|
else if (timeInForce === 'ioc') {
|
|
@@ -153897,17 +153963,49 @@ class krakenfutures extends _abstract_krakenfutures_js__WEBPACK_IMPORTED_MODULE_
|
|
|
153897
153963
|
type = 'mkt';
|
|
153898
153964
|
}
|
|
153899
153965
|
const request = {
|
|
153900
|
-
'
|
|
153901
|
-
'symbol': this.marketId(symbol),
|
|
153966
|
+
'symbol': market['id'],
|
|
153902
153967
|
'side': side,
|
|
153903
153968
|
'size': amount,
|
|
153904
153969
|
};
|
|
153905
|
-
|
|
153906
|
-
request['limitPrice'] = price;
|
|
153907
|
-
}
|
|
153970
|
+
const clientOrderId = this.safeString2(params, 'clientOrderId', 'cliOrdId');
|
|
153908
153971
|
if (clientOrderId !== undefined) {
|
|
153909
153972
|
request['cliOrdId'] = clientOrderId;
|
|
153910
153973
|
}
|
|
153974
|
+
const triggerPrice = this.safeString2(params, 'triggerPrice', 'stopPrice');
|
|
153975
|
+
const isTriggerOrder = triggerPrice !== undefined;
|
|
153976
|
+
const stopLossTriggerPrice = this.safeString(params, 'stopLossPrice');
|
|
153977
|
+
const takeProfitTriggerPrice = this.safeString(params, 'takeProfitPrice');
|
|
153978
|
+
const isStopLossTriggerOrder = stopLossTriggerPrice !== undefined;
|
|
153979
|
+
const isTakeProfitTriggerOrder = takeProfitTriggerPrice !== undefined;
|
|
153980
|
+
const isStopLossOrTakeProfitTrigger = isStopLossTriggerOrder || isTakeProfitTriggerOrder;
|
|
153981
|
+
const triggerSignal = this.safeString(params, 'triggerSignal', 'last');
|
|
153982
|
+
let reduceOnly = this.safeValue(params, 'reduceOnly');
|
|
153983
|
+
if (isStopLossOrTakeProfitTrigger || isTriggerOrder) {
|
|
153984
|
+
request['triggerSignal'] = triggerSignal;
|
|
153985
|
+
}
|
|
153986
|
+
if (isTriggerOrder) {
|
|
153987
|
+
type = 'stp';
|
|
153988
|
+
request['stopPrice'] = this.priceToPrecision(symbol, triggerPrice);
|
|
153989
|
+
}
|
|
153990
|
+
else if (isStopLossOrTakeProfitTrigger) {
|
|
153991
|
+
reduceOnly = true;
|
|
153992
|
+
if (isStopLossTriggerOrder) {
|
|
153993
|
+
type = 'stp';
|
|
153994
|
+
request['stopPrice'] = this.priceToPrecision(symbol, stopLossTriggerPrice);
|
|
153995
|
+
}
|
|
153996
|
+
else if (isTakeProfitTriggerOrder) {
|
|
153997
|
+
type = 'take_profit';
|
|
153998
|
+
request['stopPrice'] = this.priceToPrecision(symbol, takeProfitTriggerPrice);
|
|
153999
|
+
}
|
|
154000
|
+
}
|
|
154001
|
+
if (reduceOnly) {
|
|
154002
|
+
request['reduceOnly'] = true;
|
|
154003
|
+
}
|
|
154004
|
+
request['orderType'] = type;
|
|
154005
|
+
if (price !== undefined) {
|
|
154006
|
+
request['limitPrice'] = price;
|
|
154007
|
+
}
|
|
154008
|
+
params = this.omit(params, ['clientOrderId', 'timeInForce', 'triggerPrice', 'stopLossPrice', 'takeProfitPrice']);
|
|
153911
154009
|
return this.extend(request, params);
|
|
153912
154010
|
}
|
|
153913
154011
|
async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
|
|
@@ -153915,19 +154013,22 @@ class krakenfutures extends _abstract_krakenfutures_js__WEBPACK_IMPORTED_MODULE_
|
|
|
153915
154013
|
* @method
|
|
153916
154014
|
* @name krakenfutures#createOrder
|
|
153917
154015
|
* @description Create an order on the exchange
|
|
153918
|
-
* @
|
|
153919
|
-
* @param {string}
|
|
153920
|
-
* @param {string}
|
|
153921
|
-
* @param {
|
|
153922
|
-
* @param {float}
|
|
153923
|
-
* @param {float} [
|
|
153924
|
-
* @param {bool} [params.reduceOnly]
|
|
153925
|
-
* @param {bool} [params.postOnly]
|
|
153926
|
-
* @param {string} [params.triggerSignal] If placing a stp or take_profit, the signal used for trigger, One of: 'mark', 'index', 'last', last is market price
|
|
153927
|
-
* @param {string} [params.cliOrdId] UUID The order identity that is specified from the user, It must be globally unique
|
|
154016
|
+
* @see https://docs.futures.kraken.com/#http-api-trading-v3-api-order-management-send-order
|
|
154017
|
+
* @param {string} symbol unified market symbol
|
|
154018
|
+
* @param {string} type 'limit' or 'market'
|
|
154019
|
+
* @param {string} side 'buy' or 'sell'
|
|
154020
|
+
* @param {float} amount number of contracts
|
|
154021
|
+
* @param {float} [price] limit order price
|
|
154022
|
+
* @param {bool} [params.reduceOnly] set as true if you wish the order to only reduce an existing position, any order which increases an existing position will be rejected, default is false
|
|
154023
|
+
* @param {bool} [params.postOnly] set as true if you wish to make a postOnly order, default is false
|
|
153928
154024
|
* @param {string} [params.clientOrderId] UUID The order identity that is specified from the user, It must be globally unique
|
|
154025
|
+
* @param {float} [params.triggerPrice] the price that a stop order is triggered at
|
|
154026
|
+
* @param {float} [params.stopLossPrice] the price that a stop loss order is triggered at
|
|
154027
|
+
* @param {float} [params.takeProfitPrice] the price that a take profit order is triggered at
|
|
154028
|
+
* @param {string} [params.triggerSignal] for triggerPrice, stopLossPrice and takeProfitPrice orders, the trigger price type, 'last', 'mark' or 'index', default is 'last'
|
|
153929
154029
|
*/
|
|
153930
154030
|
await this.loadMarkets();
|
|
154031
|
+
const market = this.market(symbol);
|
|
153931
154032
|
const orderRequest = this.createOrderRequest(symbol, type, side, amount, price, params);
|
|
153932
154033
|
const response = await this.privatePostSendorder(orderRequest);
|
|
153933
154034
|
//
|
|
@@ -153963,7 +154064,7 @@ class krakenfutures extends _abstract_krakenfutures_js__WEBPACK_IMPORTED_MODULE_
|
|
|
153963
154064
|
const sendStatus = this.safeValue(response, 'sendStatus');
|
|
153964
154065
|
const status = this.safeString(sendStatus, 'status');
|
|
153965
154066
|
this.verifyOrderActionSuccess(status, 'createOrder', ['filled']);
|
|
153966
|
-
return this.parseOrder(sendStatus);
|
|
154067
|
+
return this.parseOrder(sendStatus, market);
|
|
153967
154068
|
}
|
|
153968
154069
|
async createOrders(orders, params = {}) {
|
|
153969
154070
|
/**
|
|
@@ -155458,6 +155559,9 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
155458
155559
|
'closeAllPositions': false,
|
|
155459
155560
|
'closePosition': false,
|
|
155460
155561
|
'createDepositAddress': true,
|
|
155562
|
+
'createMarketBuyOrderWithCost': true,
|
|
155563
|
+
'createMarketOrderWithCost': true,
|
|
155564
|
+
'createMarketSellOrderWithCost': true,
|
|
155461
155565
|
'createOrder': true,
|
|
155462
155566
|
'createOrders': true,
|
|
155463
155567
|
'createPostOnlyOrder': true,
|
|
@@ -155625,6 +155729,10 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
155625
155729
|
'stop-order': 8,
|
|
155626
155730
|
'stop-order/{orderId}': 3,
|
|
155627
155731
|
'stop-order/queryOrderByClientOid': 3,
|
|
155732
|
+
'oco/order/{orderId}': 2,
|
|
155733
|
+
'oco/order/details/{orderId}': 2,
|
|
155734
|
+
'oco/client-order/{clientOid}': 2,
|
|
155735
|
+
'oco/orders': 2,
|
|
155628
155736
|
// margin trading
|
|
155629
155737
|
'hf/margin/orders/active': 4,
|
|
155630
155738
|
'hf/margin/orders/done': 10,
|
|
@@ -155632,6 +155740,7 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
155632
155740
|
'hf/margin/orders/client-order/{clientOid}': 5,
|
|
155633
155741
|
'hf/margin/fills': 5,
|
|
155634
155742
|
'etf/info': 25,
|
|
155743
|
+
'margin/currencies': 20,
|
|
155635
155744
|
'risk/limit/strategy': 20,
|
|
155636
155745
|
'isolated/symbols': 20,
|
|
155637
155746
|
'isolated/account/{symbol}': 50,
|
|
@@ -155667,6 +155776,7 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
155667
155776
|
'orders/test': 2,
|
|
155668
155777
|
'orders/multi': 3,
|
|
155669
155778
|
'stop-order': 2,
|
|
155779
|
+
'oco/order': 2,
|
|
155670
155780
|
// margin trading
|
|
155671
155781
|
'hf/margin/order': 5,
|
|
155672
155782
|
'hf/margin/order/test': 5,
|
|
@@ -155692,12 +155802,16 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
155692
155802
|
'hf/orders/sync/client-order/{clientOid}': 1,
|
|
155693
155803
|
'hf/orders/cancel/{orderId}': 2,
|
|
155694
155804
|
'hf/orders': 2,
|
|
155805
|
+
'hf/orders/cancelAll': 30,
|
|
155695
155806
|
'orders/{orderId}': 3,
|
|
155696
155807
|
'order/client-order/{clientOid}': 5,
|
|
155697
155808
|
'orders': 20,
|
|
155698
155809
|
'stop-order/{orderId}': 3,
|
|
155699
155810
|
'stop-order/cancelOrderByClientOid': 5,
|
|
155700
155811
|
'stop-order/cancel': 3,
|
|
155812
|
+
'oco/order/{orderId}': 3,
|
|
155813
|
+
'oco/client-order/{clientOid}': 3,
|
|
155814
|
+
'oco/orders': 3,
|
|
155701
155815
|
// margin trading
|
|
155702
155816
|
'hf/margin/orders/{orderId}': 5,
|
|
155703
155817
|
'hf/margin/orders/client-order/{clientOid}': 5,
|
|
@@ -155718,6 +155832,7 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
155718
155832
|
'index/query': 3,
|
|
155719
155833
|
'mark-price/{symbol}/current': 4.5,
|
|
155720
155834
|
'premium/query': 4.5,
|
|
155835
|
+
'trade-statistics': 4.5,
|
|
155721
155836
|
'funding-rate/{symbol}/current': 3,
|
|
155722
155837
|
'timestamp': 3,
|
|
155723
155838
|
'status': 6,
|
|
@@ -155766,6 +155881,7 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
155766
155881
|
},
|
|
155767
155882
|
'delete': {
|
|
155768
155883
|
'orders/{orderId}': 1.5,
|
|
155884
|
+
'orders/client-order/{clientOid}': 1.5,
|
|
155769
155885
|
'orders': 45,
|
|
155770
155886
|
'stopOrders': 22.5, // 15FW
|
|
155771
155887
|
},
|
|
@@ -155953,6 +156069,10 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
155953
156069
|
'market/orderbook/level2': 'v3',
|
|
155954
156070
|
'market/orderbook/level3': 'v3',
|
|
155955
156071
|
'market/orderbook/level{level}': 'v3',
|
|
156072
|
+
'oco/order/{orderId}': 'v3',
|
|
156073
|
+
'oco/order/details/{orderId}': 'v3',
|
|
156074
|
+
'oco/client-order/{clientOid}': 'v3',
|
|
156075
|
+
'oco/orders': 'v3',
|
|
155956
156076
|
// margin trading
|
|
155957
156077
|
'hf/margin/orders/active': 'v3',
|
|
155958
156078
|
'hf/margin/orders/done': 'v3',
|
|
@@ -155960,6 +156080,7 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
155960
156080
|
'hf/margin/orders/client-order/{clientOid}': 'v3',
|
|
155961
156081
|
'hf/margin/fills': 'v3',
|
|
155962
156082
|
'etf/info': 'v3',
|
|
156083
|
+
'margin/currencies': 'v3',
|
|
155963
156084
|
'margin/borrow': 'v3',
|
|
155964
156085
|
'margin/repay': 'v3',
|
|
155965
156086
|
'project/list': 'v3',
|
|
@@ -155976,6 +156097,7 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
155976
156097
|
'accounts/inner-transfer': 'v2',
|
|
155977
156098
|
'transfer-out': 'v3',
|
|
155978
156099
|
// spot trading
|
|
156100
|
+
'oco/order': 'v3',
|
|
155979
156101
|
// margin trading
|
|
155980
156102
|
'hf/margin/order': 'v3',
|
|
155981
156103
|
'hf/margin/order/test': 'v3',
|
|
@@ -155992,6 +156114,9 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
155992
156114
|
'hf/margin/orders/{orderId}': 'v3',
|
|
155993
156115
|
'hf/margin/orders/client-order/{clientOid}': 'v3',
|
|
155994
156116
|
'hf/margin/orders': 'v3',
|
|
156117
|
+
'oco/order/{orderId}': 'v3',
|
|
156118
|
+
'oco/client-order/{clientOid}': 'v3',
|
|
156119
|
+
'oco/orders': 'v3',
|
|
155995
156120
|
// margin trading
|
|
155996
156121
|
},
|
|
155997
156122
|
},
|
|
@@ -157347,6 +157472,50 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
157347
157472
|
const data = this.safeValue(response, 'data', {});
|
|
157348
157473
|
return this.parseOrder(data, market);
|
|
157349
157474
|
}
|
|
157475
|
+
async createMarketOrderWithCost(symbol, side, cost, params = {}) {
|
|
157476
|
+
/**
|
|
157477
|
+
* @method
|
|
157478
|
+
* @name kucoin#createMarketOrderWithCost
|
|
157479
|
+
* @description create a market order by providing the symbol, side and cost
|
|
157480
|
+
* @see https://www.kucoin.com/docs/rest/spot-trading/orders/place-order
|
|
157481
|
+
* @param {string} symbol unified symbol of the market to create an order in
|
|
157482
|
+
* @param {string} side 'buy' or 'sell'
|
|
157483
|
+
* @param {float} cost how much you want to trade in units of the quote currency
|
|
157484
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
157485
|
+
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
157486
|
+
*/
|
|
157487
|
+
await this.loadMarkets();
|
|
157488
|
+
params['cost'] = cost;
|
|
157489
|
+
return await this.createOrder(symbol, 'market', side, cost, undefined, params);
|
|
157490
|
+
}
|
|
157491
|
+
async createMarketBuyOrderWithCost(symbol, cost, params = {}) {
|
|
157492
|
+
/**
|
|
157493
|
+
* @method
|
|
157494
|
+
* @name kucoin#createMarketBuyOrderWithCost
|
|
157495
|
+
* @description create a market buy order by providing the symbol and cost
|
|
157496
|
+
* @see https://www.kucoin.com/docs/rest/spot-trading/orders/place-order
|
|
157497
|
+
* @param {string} symbol unified symbol of the market to create an order in
|
|
157498
|
+
* @param {float} cost how much you want to trade in units of the quote currency
|
|
157499
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
157500
|
+
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
157501
|
+
*/
|
|
157502
|
+
await this.loadMarkets();
|
|
157503
|
+
return await this.createMarketOrderWithCost(symbol, 'buy', cost, params);
|
|
157504
|
+
}
|
|
157505
|
+
async createMarketSellOrderWithCost(symbol, cost, params = {}) {
|
|
157506
|
+
/**
|
|
157507
|
+
* @method
|
|
157508
|
+
* @name kucoin#createMarketSellOrderWithCost
|
|
157509
|
+
* @description create a market sell order by providing the symbol and cost
|
|
157510
|
+
* @see https://www.kucoin.com/docs/rest/spot-trading/orders/place-order
|
|
157511
|
+
* @param {string} symbol unified symbol of the market to create an order in
|
|
157512
|
+
* @param {float} cost how much you want to trade in units of the quote currency
|
|
157513
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
157514
|
+
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
157515
|
+
*/
|
|
157516
|
+
await this.loadMarkets();
|
|
157517
|
+
return await this.createMarketOrderWithCost(symbol, 'sell', cost, params);
|
|
157518
|
+
}
|
|
157350
157519
|
async createOrders(orders, params = {}) {
|
|
157351
157520
|
/**
|
|
157352
157521
|
* @method
|
|
@@ -157645,9 +157814,11 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
157645
157814
|
}
|
|
157646
157815
|
else if (hf) {
|
|
157647
157816
|
if (symbol === undefined) {
|
|
157648
|
-
|
|
157817
|
+
response = await this.privateDeleteHfOrdersCancelAll(this.extend(request, query));
|
|
157818
|
+
}
|
|
157819
|
+
else {
|
|
157820
|
+
response = await this.privateDeleteHfOrders(this.extend(request, query));
|
|
157649
157821
|
}
|
|
157650
|
-
response = await this.privateDeleteHfOrders(this.extend(request, query));
|
|
157651
157822
|
}
|
|
157652
157823
|
else {
|
|
157653
157824
|
response = await this.privateDeleteOrders(this.extend(request, query));
|
|
@@ -157783,7 +157954,7 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
157783
157954
|
* @see https://docs.kucoin.com/spot-hf/#obtain-list-of-filled-hf-orders
|
|
157784
157955
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
157785
157956
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
157786
|
-
* @param {int} [limit] the maximum number of
|
|
157957
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
157787
157958
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
157788
157959
|
* @param {int} [params.till] end time in ms
|
|
157789
157960
|
* @param {string} [params.side] buy or sell
|
|
@@ -157904,7 +158075,7 @@ class kucoin extends _abstract_kucoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
157904
158075
|
response = await this.privateGetOrdersOrderId(this.extend(request, params));
|
|
157905
158076
|
}
|
|
157906
158077
|
}
|
|
157907
|
-
let responseData = this.safeValue(response, 'data');
|
|
158078
|
+
let responseData = this.safeValue(response, 'data', {});
|
|
157908
158079
|
if (Array.isArray(responseData)) {
|
|
157909
158080
|
responseData = this.safeValue(responseData, 0);
|
|
157910
158081
|
}
|
|
@@ -161390,7 +161561,7 @@ class kucoinfutures extends _abstract_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_
|
|
|
161390
161561
|
* @see https://docs.kucoin.com/futures/#get-order-list
|
|
161391
161562
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
161392
161563
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
161393
|
-
* @param {int} [limit] the maximum number of
|
|
161564
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
161394
161565
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
161395
161566
|
* @param {int} [params.till] end time in ms
|
|
161396
161567
|
* @param {string} [params.side] buy or sell
|
|
@@ -162264,7 +162435,7 @@ class kucoinfutures extends _abstract_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_
|
|
|
162264
162435
|
* @param {string} side not used by kucoinfutures closePositions
|
|
162265
162436
|
* @param {object} [params] extra parameters specific to the okx api endpoint
|
|
162266
162437
|
* @param {string} [params.clientOrderId] client order id of the order
|
|
162267
|
-
* @returns {[
|
|
162438
|
+
* @returns {object[]} [A list of position structures]{@link https://docs.ccxt.com/#/?id=position-structure}
|
|
162268
162439
|
*/
|
|
162269
162440
|
await this.loadMarkets();
|
|
162270
162441
|
const market = this.market(symbol);
|
|
@@ -163570,7 +163741,7 @@ class kuna extends _abstract_kuna_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
|
|
|
163570
163741
|
* @see https://docs.kuna.io/docs/get-private-orders-history
|
|
163571
163742
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
163572
163743
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
163573
|
-
* @param {int} [limit] the maximum number of
|
|
163744
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
163574
163745
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
163575
163746
|
* @param {int} [params.until] the latest time in ms to fetch orders for
|
|
163576
163747
|
*
|
|
@@ -165401,7 +165572,7 @@ class latoken extends _abstract_latoken_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
165401
165572
|
* @see https://api.latoken.com/doc/v2/#tag/StopOrder/operation/getMyStopOrdersByPair // stop
|
|
165402
165573
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
165403
165574
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
165404
|
-
* @param {int} [limit] the maximum number of
|
|
165575
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
165405
165576
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
165406
165577
|
* @param {boolean} [params.trigger] true if fetching trigger orders
|
|
165407
165578
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
@@ -169309,7 +169480,7 @@ class luno extends _abstract_luno_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
|
|
|
169309
169480
|
* @description fetches information on multiple orders made by the user
|
|
169310
169481
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
169311
169482
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
169312
|
-
* @param {int} [limit] the maximum number of
|
|
169483
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
169313
169484
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
169314
169485
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
169315
169486
|
*/
|
|
@@ -169335,7 +169506,7 @@ class luno extends _abstract_luno_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
|
|
|
169335
169506
|
* @description fetches information on multiple closed orders made by the user
|
|
169336
169507
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
169337
169508
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
169338
|
-
* @param {int} [limit] the maximum number of
|
|
169509
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
169339
169510
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
169340
169511
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
169341
169512
|
*/
|
|
@@ -170863,7 +171034,7 @@ class lykke extends _abstract_lykke_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
170863
171034
|
* @description fetches information on multiple closed orders made by the user
|
|
170864
171035
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
170865
171036
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
170866
|
-
* @param {int} [limit] the maximum number of
|
|
171037
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
170867
171038
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
170868
171039
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
170869
171040
|
*/
|
|
@@ -174610,7 +174781,7 @@ class mexc extends _abstract_mexc_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
|
|
|
174610
174781
|
* @description fetches information on multiple orders made by the user
|
|
174611
174782
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
174612
174783
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
174613
|
-
* @param {int} [limit] the maximum number of
|
|
174784
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
174614
174785
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
174615
174786
|
* @param {string} [params.marginMode] only 'isolated' is supported, for spot-margin trading
|
|
174616
174787
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
@@ -174933,7 +175104,7 @@ class mexc extends _abstract_mexc_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
|
|
|
174933
175104
|
* @description fetches information on multiple closed orders made by the user
|
|
174934
175105
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
174935
175106
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
174936
|
-
* @param {int} [limit] the maximum number of
|
|
175107
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
174937
175108
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
174938
175109
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
174939
175110
|
*/
|
|
@@ -179198,7 +179369,7 @@ class ndax extends _abstract_ndax_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
|
|
|
179198
179369
|
* @description fetches information on multiple orders made by the user
|
|
179199
179370
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
179200
179371
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
179201
|
-
* @param {int} [limit] the maximum number of
|
|
179372
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
179202
179373
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
179203
179374
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
179204
179375
|
*/
|
|
@@ -180881,7 +181052,7 @@ class novadax extends _abstract_novadax_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
180881
181052
|
* @see https://doc.novadax.com/en-US/#get-order-history
|
|
180882
181053
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
180883
181054
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
180884
|
-
* @param {int} [limit] the maximum number of
|
|
181055
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
180885
181056
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
180886
181057
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
180887
181058
|
*/
|
|
@@ -180958,7 +181129,7 @@ class novadax extends _abstract_novadax_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
180958
181129
|
* @see https://doc.novadax.com/en-US/#get-order-history
|
|
180959
181130
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
180960
181131
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
180961
|
-
* @param {int} [limit] the maximum number of
|
|
181132
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
180962
181133
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
180963
181134
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
180964
181135
|
*/
|
|
@@ -182247,7 +182418,7 @@ class oceanex extends _abstract_oceanex_js__WEBPACK_IMPORTED_MODULE_0__/* ["defa
|
|
|
182247
182418
|
* @see https://api.oceanex.pro/doc/v1/#order-status-get
|
|
182248
182419
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
182249
182420
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
182250
|
-
* @param {int} [limit] the maximum number of
|
|
182421
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
182251
182422
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
182252
182423
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
182253
182424
|
*/
|
|
@@ -184576,7 +184747,7 @@ class okcoin extends _abstract_okcoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
184576
184747
|
* @description fetches information on multiple closed orders made by the user
|
|
184577
184748
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
184578
184749
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
184579
|
-
* @param {int} [limit] the maximum number of
|
|
184750
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
184580
184751
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
184581
184752
|
* @param {bool} [params.stop] True if fetching trigger or conditional orders
|
|
184582
184753
|
* @param {string} [params.ordType] "conditional", "oco", "trigger", "move_order_stop", "iceberg", or "twap"
|
|
@@ -189546,7 +189717,7 @@ class okx extends _abstract_okx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
|
|
|
189546
189717
|
* @see https://www.okx.com/docs-v5/en/#order-book-trading-algo-trading-get-algo-order-history
|
|
189547
189718
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
189548
189719
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
189549
|
-
* @param {int} [limit] the maximum number of
|
|
189720
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
189550
189721
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
189551
189722
|
* @param {bool} [params.stop] True if fetching trigger or conditional orders
|
|
189552
189723
|
* @param {string} [params.ordType] "conditional", "oco", "trigger", "move_order_stop", "iceberg", or "twap"
|
|
@@ -203248,7 +203419,7 @@ class poloniexfutures extends _abstract_poloniexfutures_js__WEBPACK_IMPORTED_MOD
|
|
|
203248
203419
|
* @see https://futures-docs.poloniex.com/#get-untriggered-stop-order-list
|
|
203249
203420
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
203250
203421
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
203251
|
-
* @param {int} [limit] the maximum number of
|
|
203422
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
203252
203423
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
203253
203424
|
* @param {int} [params.till] end time in ms
|
|
203254
203425
|
* @param {string} [params.side] buy or sell
|
|
@@ -204018,7 +204189,7 @@ class alpaca extends _alpaca_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
|
|
|
204018
204189
|
* @description watches information on multiple orders made by the user
|
|
204019
204190
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
204020
204191
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
204021
|
-
* @param {int} [limit] the maximum number of
|
|
204192
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
204022
204193
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
204023
204194
|
* @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure
|
|
204024
204195
|
*/
|
|
@@ -204871,7 +205042,7 @@ class ascendex extends _ascendex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] *
|
|
|
204871
205042
|
* @description watches information on multiple orders made by the user
|
|
204872
205043
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
204873
205044
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
204874
|
-
* @param {int} [limit] the maximum number of
|
|
205045
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
204875
205046
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
204876
205047
|
* @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
204877
205048
|
*/
|
|
@@ -206347,14 +206518,13 @@ class binance extends _binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
|
|
|
206347
206518
|
event = 'ticker';
|
|
206348
206519
|
}
|
|
206349
206520
|
let timestamp = undefined;
|
|
206350
|
-
const now = this.milliseconds();
|
|
206351
206521
|
if (event === 'bookTicker') {
|
|
206352
206522
|
// take the event timestamp, if available, for spot tickers it is not
|
|
206353
|
-
timestamp = this.safeInteger(message, 'E'
|
|
206523
|
+
timestamp = this.safeInteger(message, 'E');
|
|
206354
206524
|
}
|
|
206355
206525
|
else {
|
|
206356
206526
|
// take the timestamp of the closing price for candlestick streams
|
|
206357
|
-
timestamp = this.safeInteger(message, 'C'
|
|
206527
|
+
timestamp = this.safeInteger(message, 'C');
|
|
206358
206528
|
}
|
|
206359
206529
|
const marketId = this.safeString(message, 's');
|
|
206360
206530
|
const symbol = this.safeSymbol(marketId, undefined, undefined, marketType);
|
|
@@ -207333,7 +207503,7 @@ class binance extends _binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
|
|
|
207333
207503
|
* @description watches information on multiple orders made by the user
|
|
207334
207504
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
207335
207505
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
207336
|
-
* @param {int} [limit] the maximum number of
|
|
207506
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
207337
207507
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
207338
207508
|
* @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
207339
207509
|
*/
|
|
@@ -207889,7 +208059,7 @@ class binance extends _binance_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
|
|
|
207889
208059
|
* @description watches information on multiple trades made by the user
|
|
207890
208060
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
207891
208061
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
207892
|
-
* @param {int} [limit] the maximum number of
|
|
208062
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
207893
208063
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
207894
208064
|
* @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure
|
|
207895
208065
|
*/
|
|
@@ -208361,7 +208531,7 @@ class bingx extends _bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
|
|
|
208361
208531
|
* @see https://bingx-api.github.io/docs/#/swapV2/socket/market.html#Subscribe%20the%20Latest%20Trade%20Detail
|
|
208362
208532
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
208363
208533
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
208364
|
-
* @param {int} [limit] the maximum number of
|
|
208534
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
208365
208535
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
208366
208536
|
* @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure
|
|
208367
208537
|
*/
|
|
@@ -208589,8 +208759,11 @@ class bingx extends _bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
|
|
|
208589
208759
|
// "t": 1696687440000
|
|
208590
208760
|
// }
|
|
208591
208761
|
//
|
|
208762
|
+
// for spot, opening-time (t) is used instead of closing-time (T), to be compatible with fetchOHLCV
|
|
208763
|
+
// for swap, (T) is the opening time
|
|
208764
|
+
const timestamp = (market['spot']) ? 't' : 'T';
|
|
208592
208765
|
return [
|
|
208593
|
-
this.safeInteger(ohlcv,
|
|
208766
|
+
this.safeInteger(ohlcv, timestamp),
|
|
208594
208767
|
this.safeNumber(ohlcv, 'o'),
|
|
208595
208768
|
this.safeNumber(ohlcv, 'h'),
|
|
208596
208769
|
this.safeNumber(ohlcv, 'l'),
|
|
@@ -208718,7 +208891,7 @@ class bingx extends _bingx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
|
|
|
208718
208891
|
* @description watches information on multiple orders made by the user
|
|
208719
208892
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
208720
208893
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
208721
|
-
* @param {int} [limit] the maximum number of
|
|
208894
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
208722
208895
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
208723
208896
|
* @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
208724
208897
|
*/
|
|
@@ -209472,7 +209645,6 @@ class bitfinex extends _bitfinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] *
|
|
|
209472
209645
|
// 220.05, // 10 LOW float Daily low
|
|
209473
209646
|
// ]
|
|
209474
209647
|
//
|
|
209475
|
-
const timestamp = this.milliseconds();
|
|
209476
209648
|
const marketId = this.safeString(subscription, 'pair');
|
|
209477
209649
|
const symbol = this.safeSymbol(marketId);
|
|
209478
209650
|
const channel = 'ticker';
|
|
@@ -209485,8 +209657,8 @@ class bitfinex extends _bitfinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] *
|
|
|
209485
209657
|
}
|
|
209486
209658
|
const result = {
|
|
209487
209659
|
'symbol': symbol,
|
|
209488
|
-
'timestamp':
|
|
209489
|
-
'datetime':
|
|
209660
|
+
'timestamp': undefined,
|
|
209661
|
+
'datetime': undefined,
|
|
209490
209662
|
'high': this.safeFloat(message, 9),
|
|
209491
209663
|
'low': this.safeFloat(message, 10),
|
|
209492
209664
|
'bid': this.safeFloat(message, 1),
|
|
@@ -209721,7 +209893,7 @@ class bitfinex extends _bitfinex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] *
|
|
|
209721
209893
|
* @description watches information on multiple orders made by the user
|
|
209722
209894
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
209723
209895
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
209724
|
-
* @param {int} [limit] the maximum number of
|
|
209896
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
209725
209897
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
209726
209898
|
* @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
209727
209899
|
*/
|
|
@@ -210828,7 +211000,7 @@ class bitfinex2 extends _bitfinex2_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"]
|
|
|
210828
211000
|
* @description watches information on multiple orders made by the user
|
|
210829
211001
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
210830
211002
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
210831
|
-
* @param {int} [limit] the maximum number of
|
|
211003
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
210832
211004
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
210833
211005
|
* @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure
|
|
210834
211006
|
*/
|
|
@@ -215081,7 +215253,7 @@ class bitmex extends _bitmex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
|
|
|
215081
215253
|
* @description watches information on multiple orders made by the user
|
|
215082
215254
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
215083
215255
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
215084
|
-
* @param {int} [limit] the maximum number of
|
|
215256
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
215085
215257
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
215086
215258
|
* @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
215087
215259
|
*/
|
|
@@ -216622,7 +216794,7 @@ class bitpanda extends _bitpanda_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] *
|
|
|
216622
216794
|
* @description watches information on multiple orders made by the user
|
|
216623
216795
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
216624
216796
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
216625
|
-
* @param {int} [limit] the maximum number of
|
|
216797
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
216626
216798
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
216627
216799
|
* @param {string} [params.channel] can listen to orders using ACCOUNT_HISTORY or TRADING
|
|
216628
216800
|
* @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
@@ -219696,7 +219868,7 @@ class blockchaincom extends _blockchaincom_js__WEBPACK_IMPORTED_MODULE_0__/* ["d
|
|
|
219696
219868
|
* @see https://exchange.blockchain.com/api/#mass-order-status-request-ordermassstatusrequest
|
|
219697
219869
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
219698
219870
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
219699
|
-
* @param {int} [limit] the maximum number of
|
|
219871
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
219700
219872
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
219701
219873
|
* @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
219702
219874
|
*/
|
|
@@ -220899,7 +221071,7 @@ class bybit extends _bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
|
|
|
220899
221071
|
* @see https://bybit-exchange.github.io/docs/v5/websocket/private/execution
|
|
220900
221072
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
220901
221073
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
220902
|
-
* @param {int} [limit] the maximum number of
|
|
221074
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
220903
221075
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
220904
221076
|
* @param {boolean} [params.unifiedMargin] use unified margin account
|
|
220905
221077
|
* @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure
|
|
@@ -221164,7 +221336,7 @@ class bybit extends _bybit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
|
|
|
221164
221336
|
* @see https://bybit-exchange.github.io/docs/v5/websocket/private/order
|
|
221165
221337
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
221166
221338
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
221167
|
-
* @param {int} [limit] the maximum number of
|
|
221339
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
221168
221340
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
221169
221341
|
* @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure
|
|
221170
221342
|
*/
|
|
@@ -222702,7 +222874,7 @@ class cex extends _cex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
|
|
|
222702
222874
|
'rate': undefined,
|
|
222703
222875
|
};
|
|
222704
222876
|
}
|
|
222705
|
-
const timestamp = this.safeInteger(data, 'time'
|
|
222877
|
+
const timestamp = this.safeInteger(data, 'time');
|
|
222706
222878
|
order['timestamp'] = timestamp;
|
|
222707
222879
|
order['datetime'] = this.iso8601(timestamp);
|
|
222708
222880
|
order = this.safeOrder(order);
|
|
@@ -223756,7 +223928,7 @@ class coinbase extends _coinbase_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] *
|
|
|
223756
223928
|
* @see https://docs.cloud.coinbase.com/advanced-trade-api/docs/ws-channels#user-channel
|
|
223757
223929
|
* @param {string} [symbol] unified market symbol of the market orders were made in
|
|
223758
223930
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
223759
|
-
* @param {int} [limit] the maximum number of
|
|
223931
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
223760
223932
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
223761
223933
|
* @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
223762
223934
|
*/
|
|
@@ -224324,7 +224496,7 @@ class coinbasepro extends _coinbasepro_js__WEBPACK_IMPORTED_MODULE_0__/* ["defau
|
|
|
224324
224496
|
* @description watches information on multiple orders made by the user
|
|
224325
224497
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
224326
224498
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
224327
|
-
* @param {int} [limit] the maximum number of
|
|
224499
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
224328
224500
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
224329
224501
|
* @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
224330
224502
|
*/
|
|
@@ -228171,7 +228343,7 @@ class deribit extends _deribit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
|
|
|
228171
228343
|
* @description watches information on multiple orders made by the user
|
|
228172
228344
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
228173
228345
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
228174
|
-
* @param {int} [limit] the maximum number of
|
|
228346
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
228175
228347
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
228176
228348
|
* @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure
|
|
228177
228349
|
*/
|
|
@@ -229883,7 +230055,7 @@ class gate extends _gate_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
|
|
|
229883
230055
|
// }
|
|
229884
230056
|
//
|
|
229885
230057
|
const result = this.safeValue(message, 'result', []);
|
|
229886
|
-
const timestamp = this.safeInteger(message, '
|
|
230058
|
+
const timestamp = this.safeInteger(message, 'time_ms');
|
|
229887
230059
|
this.balance['info'] = result;
|
|
229888
230060
|
this.balance['timestamp'] = timestamp;
|
|
229889
230061
|
this.balance['datetime'] = this.iso8601(timestamp);
|
|
@@ -229959,7 +230131,7 @@ class gate extends _gate_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
|
|
|
229959
230131
|
if (this.newUpdates) {
|
|
229960
230132
|
return positions;
|
|
229961
230133
|
}
|
|
229962
|
-
return this.filterBySymbolsSinceLimit(this.positions, symbols, since, limit, true);
|
|
230134
|
+
return this.filterBySymbolsSinceLimit(this.positions[type], symbols, since, limit, true);
|
|
229963
230135
|
}
|
|
229964
230136
|
setPositionsCache(client, type, symbols = undefined) {
|
|
229965
230137
|
if (this.positions === undefined) {
|
|
@@ -230054,7 +230226,7 @@ class gate extends _gate_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
|
|
|
230054
230226
|
* @description watches information on multiple orders made by the user
|
|
230055
230227
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
230056
230228
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
230057
|
-
* @param {int} [limit] the maximum number of
|
|
230229
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
230058
230230
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
230059
230231
|
* @param {string} [params.type] spot, margin, swap, future, or option. Required if listening to all symbols.
|
|
230060
230232
|
* @param {boolean} [params.isInverse] if future, listen to inverse or linear contracts
|
|
@@ -230887,7 +231059,7 @@ class gemini extends _gemini_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
|
|
|
230887
231059
|
* @see https://docs.gemini.com/websocket-api/#order-events
|
|
230888
231060
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
230889
231061
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
230890
|
-
* @param {int} [limit] the maximum number of
|
|
231062
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
230891
231063
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
230892
231064
|
* @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
230893
231065
|
*/
|
|
@@ -232721,7 +232893,7 @@ class hollaex extends _hollaex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
|
|
|
232721
232893
|
* @description watches information on multiple orders made by the user
|
|
232722
232894
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
232723
232895
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
232724
|
-
* @param {int} [limit] the maximum number of
|
|
232896
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
232725
232897
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
232726
232898
|
* @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
232727
232899
|
*/
|
|
@@ -233843,7 +234015,7 @@ class htx extends _htx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
|
|
|
233843
234015
|
* @description watches information on multiple orders made by the user
|
|
233844
234016
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
233845
234017
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
233846
|
-
* @param {int} [limit] the maximum number of
|
|
234018
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
233847
234019
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
233848
234020
|
* @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
233849
234021
|
*/
|
|
@@ -236613,7 +236785,7 @@ class idex extends _idex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
|
|
|
236613
236785
|
* @description watches information on multiple orders made by the user
|
|
236614
236786
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
236615
236787
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
236616
|
-
* @param {int} [limit] the maximum number of
|
|
236788
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
236617
236789
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
236618
236790
|
* @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
236619
236791
|
*/
|
|
@@ -237437,11 +237609,10 @@ class kraken extends _kraken_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
|
|
|
237437
237609
|
quoteVolume = _base_Precise_js__WEBPACK_IMPORTED_MODULE_2__/* .Precise */ .O.stringMul(baseVolume, vwap);
|
|
237438
237610
|
}
|
|
237439
237611
|
const last = this.safeString(ticker['c'], 0);
|
|
237440
|
-
const timestamp = this.milliseconds();
|
|
237441
237612
|
const result = this.safeTicker({
|
|
237442
237613
|
'symbol': symbol,
|
|
237443
|
-
'timestamp':
|
|
237444
|
-
'datetime':
|
|
237614
|
+
'timestamp': undefined,
|
|
237615
|
+
'datetime': undefined,
|
|
237445
237616
|
'high': this.safeString(ticker['h'], 0),
|
|
237446
237617
|
'low': this.safeString(ticker['l'], 0),
|
|
237447
237618
|
'bid': this.safeString(ticker['b'], 0),
|
|
@@ -238106,7 +238277,7 @@ class kraken extends _kraken_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
|
|
|
238106
238277
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
238107
238278
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
238108
238279
|
* @param {int} [limit] the maximum number of orde structures to retrieve
|
|
238109
|
-
* @param {object} [params]
|
|
238280
|
+
* @param {object} [params] maximum number of orderic to the exchange API endpoint
|
|
238110
238281
|
* @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
238111
238282
|
*/
|
|
238112
238283
|
return await this.watchPrivate('openOrders', symbol, since, limit, params);
|
|
@@ -238866,7 +239037,7 @@ class krakenfutures extends _krakenfutures_js__WEBPACK_IMPORTED_MODULE_0__/* ["d
|
|
|
238866
239037
|
* @see https://docs.futures.kraken.com/#websocket-api-private-feeds-fills
|
|
238867
239038
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
238868
239039
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
238869
|
-
* @param {int} [limit] the maximum number of
|
|
239040
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
238870
239041
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
238871
239042
|
* @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
|
|
238872
239043
|
*/
|
|
@@ -241723,7 +241894,7 @@ class kucoinfutures extends _kucoinfutures_js__WEBPACK_IMPORTED_MODULE_0__/* ["d
|
|
|
241723
241894
|
* @see https://docs.kucoin.com/futures/#trade-orders-according-to-the-market
|
|
241724
241895
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
241725
241896
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
241726
|
-
* @param {int} [limit] the maximum number of
|
|
241897
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
241727
241898
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
241728
241899
|
* @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
241729
241900
|
*/
|
|
@@ -243099,7 +243270,7 @@ class mexc extends _mexc_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
|
|
|
243099
243270
|
* @description watches information on multiple orders made by the user
|
|
243100
243271
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
243101
243272
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
243102
|
-
* @param {int} [limit] the maximum number of
|
|
243273
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
243103
243274
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
243104
243275
|
* @param {string|undefined} params.type the type of orders to retrieve, can be 'spot' or 'margin'
|
|
243105
243276
|
* @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
@@ -244181,7 +244352,7 @@ class okcoin extends _okcoin_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
|
|
|
244181
244352
|
* @description watches information on multiple orders made by the user
|
|
244182
244353
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
244183
244354
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
244184
|
-
* @param {int} [limit] the maximum number of
|
|
244355
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
244185
244356
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
244186
244357
|
* @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
244187
244358
|
*/
|
|
@@ -245651,7 +245822,7 @@ class okx extends _okx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
|
|
|
245651
245822
|
'side': this.safeString(order, 'side'),
|
|
245652
245823
|
'price': this.safeNumber(info, 'fillPx'),
|
|
245653
245824
|
'amount': this.safeNumber(info, 'fillSz'),
|
|
245654
|
-
'cost':
|
|
245825
|
+
'cost': this.safeNumber(order, 'cost'),
|
|
245655
245826
|
'fee': {
|
|
245656
245827
|
'cost': this.safeNumber(info, 'fillFee'),
|
|
245657
245828
|
'currency': this.safeCurrencyCode(feeMarketId),
|
|
@@ -245827,7 +245998,7 @@ class okx extends _okx_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
|
|
|
245827
245998
|
* @description watches information on multiple orders made by the user
|
|
245828
245999
|
* @param {string} [symbol] unified market symbol of the market orders were made in
|
|
245829
246000
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
245830
|
-
* @param {int} [limit] the maximum number of
|
|
246001
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
245831
246002
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
245832
246003
|
* @param {bool} [params.stop] true if fetching trigger or conditional orders
|
|
245833
246004
|
* @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
@@ -247316,7 +247487,7 @@ class phemex extends _phemex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z
|
|
|
247316
247487
|
* @description watches information on multiple orders made by the user
|
|
247317
247488
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
247318
247489
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
247319
|
-
* @param {int} [limit] the maximum number of
|
|
247490
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
247320
247491
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
247321
247492
|
* @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
247322
247493
|
*/
|
|
@@ -249510,7 +249681,7 @@ class poloniexfutures extends _poloniexfutures_js__WEBPACK_IMPORTED_MODULE_0__/*
|
|
|
249510
249681
|
* @see https://futures-docs.poloniex.com/#private-messages
|
|
249511
249682
|
* @param {string} symbol filter by unified market symbol of the market orders were made in
|
|
249512
249683
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
249513
|
-
* @param {int} [limit] the maximum number of
|
|
249684
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
249514
249685
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
249515
249686
|
* @param {string} [params.method] the method to use will default to /contractMarket/tradeOrders. Set to /contractMarket/advancedOrders to watch stop orders
|
|
249516
249687
|
* @returns {object[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
@@ -252937,11 +253108,10 @@ class woo extends _woo_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
|
|
|
252937
253108
|
// "count": 3689
|
|
252938
253109
|
// }
|
|
252939
253110
|
//
|
|
252940
|
-
const timestamp = this.safeInteger(ticker, 'date', this.milliseconds());
|
|
252941
253111
|
return this.safeTicker({
|
|
252942
253112
|
'symbol': this.safeSymbol(undefined, market),
|
|
252943
|
-
'timestamp':
|
|
252944
|
-
'datetime':
|
|
253113
|
+
'timestamp': undefined,
|
|
253114
|
+
'datetime': undefined,
|
|
252945
253115
|
'high': this.safeString(ticker, 'high'),
|
|
252946
253116
|
'low': this.safeString(ticker, 'low'),
|
|
252947
253117
|
'bid': undefined,
|
|
@@ -254628,7 +254798,7 @@ class probit extends _abstract_probit_js__WEBPACK_IMPORTED_MODULE_0__/* ["defaul
|
|
|
254628
254798
|
* @description fetches information on multiple closed orders made by the user
|
|
254629
254799
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
254630
254800
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
254631
|
-
* @param {int} [limit] the maximum number of
|
|
254801
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
254632
254802
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
254633
254803
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
254634
254804
|
*/
|
|
@@ -265376,7 +265546,7 @@ class timex extends _abstract_timex_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
265376
265546
|
* @description fetches information on multiple closed orders made by the user
|
|
265377
265547
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
265378
265548
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
265379
|
-
* @param {int} [limit] the maximum number of
|
|
265549
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
265380
265550
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
265381
265551
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
265382
265552
|
*/
|
|
@@ -267853,7 +268023,7 @@ class tokocrypto extends _abstract_tokocrypto_js__WEBPACK_IMPORTED_MODULE_0__/*
|
|
|
267853
268023
|
* @description fetches information on multiple closed orders made by the user
|
|
267854
268024
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
267855
268025
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
267856
|
-
* @param {int} [limit] the maximum number of
|
|
268026
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
267857
268027
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
267858
268028
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
267859
268029
|
*/
|
|
@@ -270024,7 +270194,7 @@ class upbit extends _abstract_upbit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
270024
270194
|
* @description fetches information on multiple closed orders made by the user
|
|
270025
270195
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
270026
270196
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
270027
|
-
* @param {int} [limit] the maximum number of
|
|
270197
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
270028
270198
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
270029
270199
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
270030
270200
|
*/
|
|
@@ -271990,7 +272160,7 @@ class wavesexchange extends _abstract_wavesexchange_js__WEBPACK_IMPORTED_MODULE_
|
|
|
271990
272160
|
* @description fetches information on multiple closed orders made by the user
|
|
271991
272161
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
271992
272162
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
271993
|
-
* @param {int} [limit] the maximum number of
|
|
272163
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
271994
272164
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
271995
272165
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
271996
272166
|
*/
|
|
@@ -275344,7 +275514,7 @@ class whitebit extends _abstract_whitebit_js__WEBPACK_IMPORTED_MODULE_0__/* ["de
|
|
|
275344
275514
|
* @see https://docs.whitebit.com/private/http-trade-v4/#query-executed-orders
|
|
275345
275515
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
275346
275516
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
275347
|
-
* @param {int} [limit] the maximum number of
|
|
275517
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
275348
275518
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
275349
275519
|
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
275350
275520
|
*/
|
|
@@ -277446,7 +277616,7 @@ class woo extends _abstract_woo_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */
|
|
|
277446
277616
|
* @description fetches information on multiple orders made by the user
|
|
277447
277617
|
* @param {string} symbol unified market symbol of the market orders were made in
|
|
277448
277618
|
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
277449
|
-
* @param {int} [limit] the maximum number of
|
|
277619
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
277450
277620
|
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
277451
277621
|
* @param {boolean} [params.stop] whether the order is a stop/algo order
|
|
277452
277622
|
* @param {boolean} [params.isTriggered] whether the order has been triggered (false by default)
|
|
@@ -280243,752 +280413,6 @@ class yobit extends _abstract_yobit_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"
|
|
|
280243
280413
|
}
|
|
280244
280414
|
|
|
280245
280415
|
|
|
280246
|
-
/***/ }),
|
|
280247
|
-
|
|
280248
|
-
/***/ 5934:
|
|
280249
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
280250
|
-
|
|
280251
|
-
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
280252
|
-
/* harmony export */ Z: () => (/* binding */ zaif)
|
|
280253
|
-
/* harmony export */ });
|
|
280254
|
-
/* harmony import */ var _abstract_zaif_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5224);
|
|
280255
|
-
/* harmony import */ var _base_errors_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6689);
|
|
280256
|
-
/* harmony import */ var _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(2194);
|
|
280257
|
-
/* harmony import */ var _base_functions_number_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9292);
|
|
280258
|
-
/* harmony import */ var _static_dependencies_noble_hashes_sha512_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7110);
|
|
280259
|
-
// ---------------------------------------------------------------------------
|
|
280260
|
-
|
|
280261
|
-
|
|
280262
|
-
|
|
280263
|
-
|
|
280264
|
-
|
|
280265
|
-
// ---------------------------------------------------------------------------
|
|
280266
|
-
/**
|
|
280267
|
-
* @class zaif
|
|
280268
|
-
* @augments Exchange
|
|
280269
|
-
*/
|
|
280270
|
-
class zaif extends _abstract_zaif_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z {
|
|
280271
|
-
describe() {
|
|
280272
|
-
return this.deepExtend(super.describe(), {
|
|
280273
|
-
'id': 'zaif',
|
|
280274
|
-
'name': 'Zaif',
|
|
280275
|
-
'countries': ['JP'],
|
|
280276
|
-
// 10 requests per second = 1000ms / 10 = 100ms between requests (public market endpoints)
|
|
280277
|
-
'rateLimit': 100,
|
|
280278
|
-
'version': '1',
|
|
280279
|
-
'has': {
|
|
280280
|
-
'CORS': undefined,
|
|
280281
|
-
'spot': true,
|
|
280282
|
-
'margin': undefined,
|
|
280283
|
-
'swap': false,
|
|
280284
|
-
'future': false,
|
|
280285
|
-
'option': false,
|
|
280286
|
-
'cancelOrder': true,
|
|
280287
|
-
'createMarketOrder': false,
|
|
280288
|
-
'createOrder': true,
|
|
280289
|
-
'fetchBalance': true,
|
|
280290
|
-
'fetchClosedOrders': true,
|
|
280291
|
-
'fetchFundingHistory': false,
|
|
280292
|
-
'fetchFundingRate': false,
|
|
280293
|
-
'fetchFundingRateHistory': false,
|
|
280294
|
-
'fetchFundingRates': false,
|
|
280295
|
-
'fetchIndexOHLCV': false,
|
|
280296
|
-
'fetchMarkets': true,
|
|
280297
|
-
'fetchMarkOHLCV': false,
|
|
280298
|
-
'fetchOpenInterestHistory': false,
|
|
280299
|
-
'fetchOpenOrders': true,
|
|
280300
|
-
'fetchOrderBook': true,
|
|
280301
|
-
'fetchPremiumIndexOHLCV': false,
|
|
280302
|
-
'fetchTicker': true,
|
|
280303
|
-
'fetchTrades': true,
|
|
280304
|
-
'fetchTradingFee': false,
|
|
280305
|
-
'fetchTradingFees': false,
|
|
280306
|
-
'withdraw': true,
|
|
280307
|
-
},
|
|
280308
|
-
'urls': {
|
|
280309
|
-
'logo': 'https://user-images.githubusercontent.com/1294454/27766927-39ca2ada-5eeb-11e7-972f-1b4199518ca6.jpg',
|
|
280310
|
-
'api': {
|
|
280311
|
-
'rest': 'https://api.zaif.jp',
|
|
280312
|
-
},
|
|
280313
|
-
'www': 'https://zaif.jp',
|
|
280314
|
-
'doc': [
|
|
280315
|
-
'https://techbureau-api-document.readthedocs.io/ja/latest/index.html',
|
|
280316
|
-
'https://corp.zaif.jp/api-docs',
|
|
280317
|
-
'https://corp.zaif.jp/api-docs/api_links',
|
|
280318
|
-
'https://www.npmjs.com/package/zaif.jp',
|
|
280319
|
-
'https://github.com/you21979/node-zaif',
|
|
280320
|
-
],
|
|
280321
|
-
'fees': 'https://zaif.jp/fee?lang=en',
|
|
280322
|
-
},
|
|
280323
|
-
'fees': {
|
|
280324
|
-
'trading': {
|
|
280325
|
-
'percentage': true,
|
|
280326
|
-
'taker': this.parseNumber('0.001'),
|
|
280327
|
-
'maker': this.parseNumber('0'),
|
|
280328
|
-
},
|
|
280329
|
-
},
|
|
280330
|
-
'api': {
|
|
280331
|
-
'public': {
|
|
280332
|
-
'get': {
|
|
280333
|
-
'depth/{pair}': 1,
|
|
280334
|
-
'currencies/{pair}': 1,
|
|
280335
|
-
'currencies/all': 1,
|
|
280336
|
-
'currency_pairs/{pair}': 1,
|
|
280337
|
-
'currency_pairs/all': 1,
|
|
280338
|
-
'last_price/{pair}': 1,
|
|
280339
|
-
'ticker/{pair}': 1,
|
|
280340
|
-
'trades/{pair}': 1,
|
|
280341
|
-
},
|
|
280342
|
-
},
|
|
280343
|
-
'private': {
|
|
280344
|
-
'post': {
|
|
280345
|
-
'active_orders': 5,
|
|
280346
|
-
'cancel_order': 5,
|
|
280347
|
-
'deposit_history': 5,
|
|
280348
|
-
'get_id_info': 5,
|
|
280349
|
-
'get_info': 10,
|
|
280350
|
-
'get_info2': 5,
|
|
280351
|
-
'get_personal_info': 5,
|
|
280352
|
-
'trade': 5,
|
|
280353
|
-
'trade_history': 50,
|
|
280354
|
-
'withdraw': 5,
|
|
280355
|
-
'withdraw_history': 5,
|
|
280356
|
-
},
|
|
280357
|
-
},
|
|
280358
|
-
'ecapi': {
|
|
280359
|
-
'post': {
|
|
280360
|
-
'createInvoice': 1,
|
|
280361
|
-
'getInvoice': 1,
|
|
280362
|
-
'getInvoiceIdsByOrderNumber': 1,
|
|
280363
|
-
'cancelInvoice': 1,
|
|
280364
|
-
},
|
|
280365
|
-
},
|
|
280366
|
-
'tlapi': {
|
|
280367
|
-
'post': {
|
|
280368
|
-
'get_positions': 66,
|
|
280369
|
-
'position_history': 66,
|
|
280370
|
-
'active_positions': 5,
|
|
280371
|
-
'create_position': 33,
|
|
280372
|
-
'change_position': 33,
|
|
280373
|
-
'cancel_position': 33, // 3 in 10 seconds
|
|
280374
|
-
},
|
|
280375
|
-
},
|
|
280376
|
-
'fapi': {
|
|
280377
|
-
'get': {
|
|
280378
|
-
'groups/{group_id}': 1,
|
|
280379
|
-
'last_price/{group_id}/{pair}': 1,
|
|
280380
|
-
'ticker/{group_id}/{pair}': 1,
|
|
280381
|
-
'trades/{group_id}/{pair}': 1,
|
|
280382
|
-
'depth/{group_id}/{pair}': 1,
|
|
280383
|
-
},
|
|
280384
|
-
},
|
|
280385
|
-
},
|
|
280386
|
-
'options': {},
|
|
280387
|
-
'precisionMode': _base_functions_number_js__WEBPACK_IMPORTED_MODULE_1__/* .TICK_SIZE */ .sh,
|
|
280388
|
-
'exceptions': {
|
|
280389
|
-
'exact': {
|
|
280390
|
-
'unsupported currency_pair': _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.BadRequest, // {"error": "unsupported currency_pair"}
|
|
280391
|
-
},
|
|
280392
|
-
'broad': {},
|
|
280393
|
-
},
|
|
280394
|
-
});
|
|
280395
|
-
}
|
|
280396
|
-
async fetchMarkets(params = {}) {
|
|
280397
|
-
/**
|
|
280398
|
-
* @method
|
|
280399
|
-
* @name zaif#fetchMarkets
|
|
280400
|
-
* @see https://zaif-api-document.readthedocs.io/ja/latest/PublicAPI.html#id12
|
|
280401
|
-
* @description retrieves data on all markets for zaif
|
|
280402
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
280403
|
-
* @returns {object[]} an array of objects representing market data
|
|
280404
|
-
*/
|
|
280405
|
-
const markets = await this.publicGetCurrencyPairsAll(params);
|
|
280406
|
-
//
|
|
280407
|
-
// [
|
|
280408
|
-
// {
|
|
280409
|
-
// "aux_unit_point": 0,
|
|
280410
|
-
// "item_japanese": "\u30d3\u30c3\u30c8\u30b3\u30a4\u30f3",
|
|
280411
|
-
// "aux_unit_step": 5.0,
|
|
280412
|
-
// "description": "\u30d3\u30c3\u30c8\u30b3\u30a4\u30f3\u30fb\u65e5\u672c\u5186\u306e\u53d6\u5f15\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059",
|
|
280413
|
-
// "item_unit_min": 0.001,
|
|
280414
|
-
// "event_number": 0,
|
|
280415
|
-
// "currency_pair": "btc_jpy",
|
|
280416
|
-
// "is_token": false,
|
|
280417
|
-
// "aux_unit_min": 5.0,
|
|
280418
|
-
// "aux_japanese": "\u65e5\u672c\u5186",
|
|
280419
|
-
// "id": 1,
|
|
280420
|
-
// "item_unit_step": 0.0001,
|
|
280421
|
-
// "name": "BTC/JPY",
|
|
280422
|
-
// "seq": 0,
|
|
280423
|
-
// "title": "BTC/JPY"
|
|
280424
|
-
// }
|
|
280425
|
-
// ]
|
|
280426
|
-
//
|
|
280427
|
-
return this.parseMarkets(markets);
|
|
280428
|
-
}
|
|
280429
|
-
parseMarket(market) {
|
|
280430
|
-
const id = this.safeString(market, 'currency_pair');
|
|
280431
|
-
const name = this.safeString(market, 'name');
|
|
280432
|
-
const [baseId, quoteId] = name.split('/');
|
|
280433
|
-
const base = this.safeCurrencyCode(baseId);
|
|
280434
|
-
const quote = this.safeCurrencyCode(quoteId);
|
|
280435
|
-
const symbol = base + '/' + quote;
|
|
280436
|
-
return {
|
|
280437
|
-
'id': id,
|
|
280438
|
-
'symbol': symbol,
|
|
280439
|
-
'base': base,
|
|
280440
|
-
'quote': quote,
|
|
280441
|
-
'settle': undefined,
|
|
280442
|
-
'baseId': baseId,
|
|
280443
|
-
'quoteId': quoteId,
|
|
280444
|
-
'settleId': undefined,
|
|
280445
|
-
'type': 'spot',
|
|
280446
|
-
'spot': true,
|
|
280447
|
-
'margin': undefined,
|
|
280448
|
-
'swap': false,
|
|
280449
|
-
'future': false,
|
|
280450
|
-
'option': false,
|
|
280451
|
-
'active': undefined,
|
|
280452
|
-
'contract': false,
|
|
280453
|
-
'linear': undefined,
|
|
280454
|
-
'inverse': undefined,
|
|
280455
|
-
'contractSize': undefined,
|
|
280456
|
-
'expiry': undefined,
|
|
280457
|
-
'expiryDatetime': undefined,
|
|
280458
|
-
'strike': undefined,
|
|
280459
|
-
'optionType': undefined,
|
|
280460
|
-
'precision': {
|
|
280461
|
-
'amount': this.safeNumber(market, 'item_unit_step'),
|
|
280462
|
-
'price': this.parseNumber(this.parsePrecision(this.safeString(market, 'aux_unit_point'))),
|
|
280463
|
-
},
|
|
280464
|
-
'limits': {
|
|
280465
|
-
'leverage': {
|
|
280466
|
-
'min': undefined,
|
|
280467
|
-
'max': undefined,
|
|
280468
|
-
},
|
|
280469
|
-
'amount': {
|
|
280470
|
-
'min': this.safeNumber(market, 'item_unit_min'),
|
|
280471
|
-
'max': undefined,
|
|
280472
|
-
},
|
|
280473
|
-
'price': {
|
|
280474
|
-
'min': this.safeNumber(market, 'aux_unit_min'),
|
|
280475
|
-
'max': undefined,
|
|
280476
|
-
},
|
|
280477
|
-
'cost': {
|
|
280478
|
-
'min': undefined,
|
|
280479
|
-
'max': undefined,
|
|
280480
|
-
},
|
|
280481
|
-
},
|
|
280482
|
-
'created': undefined,
|
|
280483
|
-
'info': market,
|
|
280484
|
-
};
|
|
280485
|
-
}
|
|
280486
|
-
parseBalance(response) {
|
|
280487
|
-
const balances = this.safeValue(response, 'return', {});
|
|
280488
|
-
const deposit = this.safeValue(balances, 'deposit');
|
|
280489
|
-
const result = {
|
|
280490
|
-
'info': response,
|
|
280491
|
-
'timestamp': undefined,
|
|
280492
|
-
'datetime': undefined,
|
|
280493
|
-
};
|
|
280494
|
-
const funds = this.safeValue(balances, 'funds', {});
|
|
280495
|
-
const currencyIds = Object.keys(funds);
|
|
280496
|
-
for (let i = 0; i < currencyIds.length; i++) {
|
|
280497
|
-
const currencyId = currencyIds[i];
|
|
280498
|
-
const code = this.safeCurrencyCode(currencyId);
|
|
280499
|
-
const balance = this.safeString(funds, currencyId);
|
|
280500
|
-
const account = this.account();
|
|
280501
|
-
account['free'] = balance;
|
|
280502
|
-
account['total'] = balance;
|
|
280503
|
-
if (deposit !== undefined) {
|
|
280504
|
-
if (currencyId in deposit) {
|
|
280505
|
-
account['total'] = this.safeString(deposit, currencyId);
|
|
280506
|
-
}
|
|
280507
|
-
}
|
|
280508
|
-
result[code] = account;
|
|
280509
|
-
}
|
|
280510
|
-
return this.safeBalance(result);
|
|
280511
|
-
}
|
|
280512
|
-
async fetchBalance(params = {}) {
|
|
280513
|
-
/**
|
|
280514
|
-
* @method
|
|
280515
|
-
* @name zaif#fetchBalance
|
|
280516
|
-
* @see https://zaif-api-document.readthedocs.io/ja/latest/TradingAPI.html#id10
|
|
280517
|
-
* @description query for balance and get the amount of funds available for trading or funds locked in orders
|
|
280518
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
280519
|
-
* @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
|
|
280520
|
-
*/
|
|
280521
|
-
await this.loadMarkets();
|
|
280522
|
-
const response = await this.privatePostGetInfo(params);
|
|
280523
|
-
return this.parseBalance(response);
|
|
280524
|
-
}
|
|
280525
|
-
async fetchOrderBook(symbol, limit = undefined, params = {}) {
|
|
280526
|
-
/**
|
|
280527
|
-
* @method
|
|
280528
|
-
* @name zaif#fetchOrderBook
|
|
280529
|
-
* @see https://zaif-api-document.readthedocs.io/ja/latest/PublicAPI.html#id34
|
|
280530
|
-
* @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
|
|
280531
|
-
* @param {string} symbol unified symbol of the market to fetch the order book for
|
|
280532
|
-
* @param {int} [limit] the maximum amount of order book entries to return
|
|
280533
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
280534
|
-
* @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
|
|
280535
|
-
*/
|
|
280536
|
-
await this.loadMarkets();
|
|
280537
|
-
const market = this.market(symbol);
|
|
280538
|
-
const request = {
|
|
280539
|
-
'pair': market['id'],
|
|
280540
|
-
};
|
|
280541
|
-
const response = await this.publicGetDepthPair(this.extend(request, params));
|
|
280542
|
-
return this.parseOrderBook(response, market['symbol']);
|
|
280543
|
-
}
|
|
280544
|
-
parseTicker(ticker, market = undefined) {
|
|
280545
|
-
//
|
|
280546
|
-
// {
|
|
280547
|
-
// "last": 9e-08,
|
|
280548
|
-
// "high": 1e-07,
|
|
280549
|
-
// "low": 9e-08,
|
|
280550
|
-
// "vwap": 0.0,
|
|
280551
|
-
// "volume": 135250.0,
|
|
280552
|
-
// "bid": 9e-08,
|
|
280553
|
-
// "ask": 1e-07
|
|
280554
|
-
// }
|
|
280555
|
-
//
|
|
280556
|
-
const symbol = this.safeSymbol(undefined, market);
|
|
280557
|
-
const vwap = this.safeString(ticker, 'vwap');
|
|
280558
|
-
const baseVolume = this.safeString(ticker, 'volume');
|
|
280559
|
-
const quoteVolume = _base_Precise_js__WEBPACK_IMPORTED_MODULE_3__/* .Precise */ .O.stringMul(baseVolume, vwap);
|
|
280560
|
-
const last = this.safeString(ticker, 'last');
|
|
280561
|
-
return this.safeTicker({
|
|
280562
|
-
'symbol': symbol,
|
|
280563
|
-
'timestamp': undefined,
|
|
280564
|
-
'datetime': undefined,
|
|
280565
|
-
'high': this.safeString(ticker, 'high'),
|
|
280566
|
-
'low': this.safeString(ticker, 'low'),
|
|
280567
|
-
'bid': this.safeString(ticker, 'bid'),
|
|
280568
|
-
'bidVolume': undefined,
|
|
280569
|
-
'ask': this.safeString(ticker, 'ask'),
|
|
280570
|
-
'askVolume': undefined,
|
|
280571
|
-
'vwap': vwap,
|
|
280572
|
-
'open': undefined,
|
|
280573
|
-
'close': last,
|
|
280574
|
-
'last': last,
|
|
280575
|
-
'previousClose': undefined,
|
|
280576
|
-
'change': undefined,
|
|
280577
|
-
'percentage': undefined,
|
|
280578
|
-
'average': undefined,
|
|
280579
|
-
'baseVolume': baseVolume,
|
|
280580
|
-
'quoteVolume': quoteVolume,
|
|
280581
|
-
'info': ticker,
|
|
280582
|
-
}, market);
|
|
280583
|
-
}
|
|
280584
|
-
async fetchTicker(symbol, params = {}) {
|
|
280585
|
-
/**
|
|
280586
|
-
* @method
|
|
280587
|
-
* @name zaif#fetchTicker
|
|
280588
|
-
* @see https://zaif-api-document.readthedocs.io/ja/latest/PublicAPI.html#id22
|
|
280589
|
-
* @description fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
|
280590
|
-
* @param {string} symbol unified symbol of the market to fetch the ticker for
|
|
280591
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
280592
|
-
* @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
|
|
280593
|
-
*/
|
|
280594
|
-
await this.loadMarkets();
|
|
280595
|
-
const market = this.market(symbol);
|
|
280596
|
-
const request = {
|
|
280597
|
-
'pair': market['id'],
|
|
280598
|
-
};
|
|
280599
|
-
const ticker = await this.publicGetTickerPair(this.extend(request, params));
|
|
280600
|
-
//
|
|
280601
|
-
// {
|
|
280602
|
-
// "last": 9e-08,
|
|
280603
|
-
// "high": 1e-07,
|
|
280604
|
-
// "low": 9e-08,
|
|
280605
|
-
// "vwap": 0.0,
|
|
280606
|
-
// "volume": 135250.0,
|
|
280607
|
-
// "bid": 9e-08,
|
|
280608
|
-
// "ask": 1e-07
|
|
280609
|
-
// }
|
|
280610
|
-
//
|
|
280611
|
-
return this.parseTicker(ticker, market);
|
|
280612
|
-
}
|
|
280613
|
-
parseTrade(trade, market = undefined) {
|
|
280614
|
-
//
|
|
280615
|
-
// fetchTrades (public)
|
|
280616
|
-
//
|
|
280617
|
-
// {
|
|
280618
|
-
// "date": 1648559414,
|
|
280619
|
-
// "price": 5880375.0,
|
|
280620
|
-
// "amount": 0.017,
|
|
280621
|
-
// "tid": 176126557,
|
|
280622
|
-
// "currency_pair": "btc_jpy",
|
|
280623
|
-
// "trade_type": "ask"
|
|
280624
|
-
// }
|
|
280625
|
-
//
|
|
280626
|
-
let side = this.safeString(trade, 'trade_type');
|
|
280627
|
-
side = (side === 'bid') ? 'buy' : 'sell';
|
|
280628
|
-
const timestamp = this.safeTimestamp(trade, 'date');
|
|
280629
|
-
const id = this.safeString2(trade, 'id', 'tid');
|
|
280630
|
-
const priceString = this.safeString(trade, 'price');
|
|
280631
|
-
const amountString = this.safeString(trade, 'amount');
|
|
280632
|
-
const marketId = this.safeString(trade, 'currency_pair');
|
|
280633
|
-
const symbol = this.safeSymbol(marketId, market, '_');
|
|
280634
|
-
return this.safeTrade({
|
|
280635
|
-
'id': id,
|
|
280636
|
-
'info': trade,
|
|
280637
|
-
'timestamp': timestamp,
|
|
280638
|
-
'datetime': this.iso8601(timestamp),
|
|
280639
|
-
'symbol': symbol,
|
|
280640
|
-
'type': undefined,
|
|
280641
|
-
'side': side,
|
|
280642
|
-
'order': undefined,
|
|
280643
|
-
'takerOrMaker': undefined,
|
|
280644
|
-
'price': priceString,
|
|
280645
|
-
'amount': amountString,
|
|
280646
|
-
'cost': undefined,
|
|
280647
|
-
'fee': undefined,
|
|
280648
|
-
}, market);
|
|
280649
|
-
}
|
|
280650
|
-
async fetchTrades(symbol, since = undefined, limit = undefined, params = {}) {
|
|
280651
|
-
/**
|
|
280652
|
-
* @method
|
|
280653
|
-
* @name zaif#fetchTrades
|
|
280654
|
-
* @see https://zaif-api-document.readthedocs.io/ja/latest/PublicAPI.html#id28
|
|
280655
|
-
* @description get the list of most recent trades for a particular symbol
|
|
280656
|
-
* @param {string} symbol unified symbol of the market to fetch trades for
|
|
280657
|
-
* @param {int} [since] timestamp in ms of the earliest trade to fetch
|
|
280658
|
-
* @param {int} [limit] the maximum amount of trades to fetch
|
|
280659
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
280660
|
-
* @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
|
|
280661
|
-
*/
|
|
280662
|
-
await this.loadMarkets();
|
|
280663
|
-
const market = this.market(symbol);
|
|
280664
|
-
const request = {
|
|
280665
|
-
'pair': market['id'],
|
|
280666
|
-
};
|
|
280667
|
-
let response = await this.publicGetTradesPair(this.extend(request, params));
|
|
280668
|
-
//
|
|
280669
|
-
// [
|
|
280670
|
-
// {
|
|
280671
|
-
// "date": 1648559414,
|
|
280672
|
-
// "price": 5880375.0,
|
|
280673
|
-
// "amount": 0.017,
|
|
280674
|
-
// "tid": 176126557,
|
|
280675
|
-
// "currency_pair": "btc_jpy",
|
|
280676
|
-
// "trade_type": "ask"
|
|
280677
|
-
// }, ...
|
|
280678
|
-
// ]
|
|
280679
|
-
//
|
|
280680
|
-
const numTrades = response.length;
|
|
280681
|
-
if (numTrades === 1) {
|
|
280682
|
-
const firstTrade = response[0];
|
|
280683
|
-
if (!Object.keys(firstTrade).length) {
|
|
280684
|
-
response = [];
|
|
280685
|
-
}
|
|
280686
|
-
}
|
|
280687
|
-
return this.parseTrades(response, market, since, limit);
|
|
280688
|
-
}
|
|
280689
|
-
async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
|
|
280690
|
-
/**
|
|
280691
|
-
* @method
|
|
280692
|
-
* @name zaif#createOrder
|
|
280693
|
-
* @see https://zaif-api-document.readthedocs.io/ja/latest/MarginTradingAPI.html#id23
|
|
280694
|
-
* @description create a trade order
|
|
280695
|
-
* @param {string} symbol unified symbol of the market to create an order in
|
|
280696
|
-
* @param {string} type must be 'limit'
|
|
280697
|
-
* @param {string} side 'buy' or 'sell'
|
|
280698
|
-
* @param {float} amount how much of currency you want to trade in units of base currency
|
|
280699
|
-
* @param {float} [price] the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
|
|
280700
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
280701
|
-
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
280702
|
-
*/
|
|
280703
|
-
await this.loadMarkets();
|
|
280704
|
-
if (type !== 'limit') {
|
|
280705
|
-
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError(this.id + ' createOrder() allows limit orders only');
|
|
280706
|
-
}
|
|
280707
|
-
const market = this.market(symbol);
|
|
280708
|
-
const request = {
|
|
280709
|
-
'currency_pair': market['id'],
|
|
280710
|
-
'action': (side === 'buy') ? 'bid' : 'ask',
|
|
280711
|
-
'amount': amount,
|
|
280712
|
-
'price': price,
|
|
280713
|
-
};
|
|
280714
|
-
const response = await this.privatePostTrade(this.extend(request, params));
|
|
280715
|
-
return this.safeOrder({
|
|
280716
|
-
'info': response,
|
|
280717
|
-
'id': response['return']['order_id'].toString(),
|
|
280718
|
-
}, market);
|
|
280719
|
-
}
|
|
280720
|
-
async cancelOrder(id, symbol = undefined, params = {}) {
|
|
280721
|
-
/**
|
|
280722
|
-
* @method
|
|
280723
|
-
* @name zaif#cancelOrder
|
|
280724
|
-
* @see https://zaif-api-document.readthedocs.io/ja/latest/TradingAPI.html#id37
|
|
280725
|
-
* @description cancels an open order
|
|
280726
|
-
* @param {string} id order id
|
|
280727
|
-
* @param {string} symbol not used by zaif cancelOrder ()
|
|
280728
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
280729
|
-
* @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
280730
|
-
*/
|
|
280731
|
-
const request = {
|
|
280732
|
-
'order_id': id,
|
|
280733
|
-
};
|
|
280734
|
-
return await this.privatePostCancelOrder(this.extend(request, params));
|
|
280735
|
-
}
|
|
280736
|
-
parseOrder(order, market = undefined) {
|
|
280737
|
-
//
|
|
280738
|
-
// {
|
|
280739
|
-
// "currency_pair": "btc_jpy",
|
|
280740
|
-
// "action": "ask",
|
|
280741
|
-
// "amount": 0.03,
|
|
280742
|
-
// "price": 56000,
|
|
280743
|
-
// "timestamp": 1402021125,
|
|
280744
|
-
// "comment" : "demo"
|
|
280745
|
-
// }
|
|
280746
|
-
//
|
|
280747
|
-
let side = this.safeString(order, 'action');
|
|
280748
|
-
side = (side === 'bid') ? 'buy' : 'sell';
|
|
280749
|
-
const timestamp = this.safeTimestamp(order, 'timestamp');
|
|
280750
|
-
const marketId = this.safeString(order, 'currency_pair');
|
|
280751
|
-
const symbol = this.safeSymbol(marketId, market, '_');
|
|
280752
|
-
const price = this.safeString(order, 'price');
|
|
280753
|
-
const amount = this.safeString(order, 'amount');
|
|
280754
|
-
const id = this.safeString(order, 'id');
|
|
280755
|
-
return this.safeOrder({
|
|
280756
|
-
'id': id,
|
|
280757
|
-
'clientOrderId': undefined,
|
|
280758
|
-
'timestamp': timestamp,
|
|
280759
|
-
'datetime': this.iso8601(timestamp),
|
|
280760
|
-
'lastTradeTimestamp': undefined,
|
|
280761
|
-
'status': 'open',
|
|
280762
|
-
'symbol': symbol,
|
|
280763
|
-
'type': 'limit',
|
|
280764
|
-
'timeInForce': undefined,
|
|
280765
|
-
'postOnly': undefined,
|
|
280766
|
-
'side': side,
|
|
280767
|
-
'price': price,
|
|
280768
|
-
'stopPrice': undefined,
|
|
280769
|
-
'triggerPrice': undefined,
|
|
280770
|
-
'cost': undefined,
|
|
280771
|
-
'amount': amount,
|
|
280772
|
-
'filled': undefined,
|
|
280773
|
-
'remaining': undefined,
|
|
280774
|
-
'trades': undefined,
|
|
280775
|
-
'fee': undefined,
|
|
280776
|
-
'info': order,
|
|
280777
|
-
'average': undefined,
|
|
280778
|
-
}, market);
|
|
280779
|
-
}
|
|
280780
|
-
async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
280781
|
-
/**
|
|
280782
|
-
* @method
|
|
280783
|
-
* @name zaif#fetchOpenOrders
|
|
280784
|
-
* @see https://zaif-api-document.readthedocs.io/ja/latest/MarginTradingAPI.html#id28
|
|
280785
|
-
* @description fetch all unfilled currently open orders
|
|
280786
|
-
* @param {string} symbol unified market symbol
|
|
280787
|
-
* @param {int} [since] the earliest time in ms to fetch open orders for
|
|
280788
|
-
* @param {int} [limit] the maximum number of open orders structures to retrieve
|
|
280789
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
280790
|
-
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
280791
|
-
*/
|
|
280792
|
-
await this.loadMarkets();
|
|
280793
|
-
let market = undefined;
|
|
280794
|
-
const request = {
|
|
280795
|
-
// 'is_token': false,
|
|
280796
|
-
// 'is_token_both': false,
|
|
280797
|
-
};
|
|
280798
|
-
if (symbol !== undefined) {
|
|
280799
|
-
market = this.market(symbol);
|
|
280800
|
-
request['currency_pair'] = market['id'];
|
|
280801
|
-
}
|
|
280802
|
-
const response = await this.privatePostActiveOrders(this.extend(request, params));
|
|
280803
|
-
return this.parseOrders(response['return'], market, since, limit);
|
|
280804
|
-
}
|
|
280805
|
-
async fetchClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
280806
|
-
/**
|
|
280807
|
-
* @method
|
|
280808
|
-
* @name zaif#fetchClosedOrders
|
|
280809
|
-
* @see https://zaif-api-document.readthedocs.io/ja/latest/TradingAPI.html#id24
|
|
280810
|
-
* @description fetches information on multiple closed orders made by the user
|
|
280811
|
-
* @param {string} symbol unified market symbol of the market orders were made in
|
|
280812
|
-
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
280813
|
-
* @param {int} [limit] the maximum number of orde structures to retrieve
|
|
280814
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
280815
|
-
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
280816
|
-
*/
|
|
280817
|
-
await this.loadMarkets();
|
|
280818
|
-
let market = undefined;
|
|
280819
|
-
const request = {
|
|
280820
|
-
// 'from': 0,
|
|
280821
|
-
// 'count': 1000,
|
|
280822
|
-
// 'from_id': 0,
|
|
280823
|
-
// 'end_id': 1000,
|
|
280824
|
-
// 'order': 'DESC',
|
|
280825
|
-
// 'since': 1503821051,
|
|
280826
|
-
// 'end': 1503821051,
|
|
280827
|
-
// 'is_token': false,
|
|
280828
|
-
};
|
|
280829
|
-
if (symbol !== undefined) {
|
|
280830
|
-
market = this.market(symbol);
|
|
280831
|
-
request['currency_pair'] = market['id'];
|
|
280832
|
-
}
|
|
280833
|
-
const response = await this.privatePostTradeHistory(this.extend(request, params));
|
|
280834
|
-
return this.parseOrders(response['return'], market, since, limit);
|
|
280835
|
-
}
|
|
280836
|
-
async withdraw(code, amount, address, tag = undefined, params = {}) {
|
|
280837
|
-
/**
|
|
280838
|
-
* @method
|
|
280839
|
-
* @name zaif#withdraw
|
|
280840
|
-
* @see https://zaif-api-document.readthedocs.io/ja/latest/TradingAPI.html#id41
|
|
280841
|
-
* @description make a withdrawal
|
|
280842
|
-
* @param {string} code unified currency code
|
|
280843
|
-
* @param {float} amount the amount to withdraw
|
|
280844
|
-
* @param {string} address the address to withdraw to
|
|
280845
|
-
* @param {string} tag
|
|
280846
|
-
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
280847
|
-
* @returns {object} a [transaction structure]{@link https://docs.ccxt.com/#/?id=transaction-structure}
|
|
280848
|
-
*/
|
|
280849
|
-
[tag, params] = this.handleWithdrawTagAndParams(tag, params);
|
|
280850
|
-
this.checkAddress(address);
|
|
280851
|
-
await this.loadMarkets();
|
|
280852
|
-
const currency = this.currency(code);
|
|
280853
|
-
if (code === 'JPY') {
|
|
280854
|
-
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError(this.id + ' withdraw() does not allow ' + code + ' withdrawals');
|
|
280855
|
-
}
|
|
280856
|
-
const request = {
|
|
280857
|
-
'currency': currency['id'],
|
|
280858
|
-
'amount': amount,
|
|
280859
|
-
'address': address,
|
|
280860
|
-
// 'message': 'Hi!', // XEM and others
|
|
280861
|
-
// 'opt_fee': 0.003, // BTC and MONA only
|
|
280862
|
-
};
|
|
280863
|
-
if (tag !== undefined) {
|
|
280864
|
-
request['message'] = tag;
|
|
280865
|
-
}
|
|
280866
|
-
const result = await this.privatePostWithdraw(this.extend(request, params));
|
|
280867
|
-
//
|
|
280868
|
-
// {
|
|
280869
|
-
// "success": 1,
|
|
280870
|
-
// "return": {
|
|
280871
|
-
// "id": 23634,
|
|
280872
|
-
// "fee": 0.001,
|
|
280873
|
-
// "txid":,
|
|
280874
|
-
// "funds": {
|
|
280875
|
-
// "jpy": 15320,
|
|
280876
|
-
// "btc": 1.392,
|
|
280877
|
-
// "xem": 100.2,
|
|
280878
|
-
// "mona": 2600
|
|
280879
|
-
// }
|
|
280880
|
-
// }
|
|
280881
|
-
// }
|
|
280882
|
-
//
|
|
280883
|
-
const returnData = this.safeValue(result, 'return');
|
|
280884
|
-
return this.parseTransaction(returnData, currency);
|
|
280885
|
-
}
|
|
280886
|
-
parseTransaction(transaction, currency = undefined) {
|
|
280887
|
-
//
|
|
280888
|
-
// {
|
|
280889
|
-
// "id": 23634,
|
|
280890
|
-
// "fee": 0.001,
|
|
280891
|
-
// "txid":,
|
|
280892
|
-
// "funds": {
|
|
280893
|
-
// "jpy": 15320,
|
|
280894
|
-
// "btc": 1.392,
|
|
280895
|
-
// "xem": 100.2,
|
|
280896
|
-
// "mona": 2600
|
|
280897
|
-
// }
|
|
280898
|
-
// }
|
|
280899
|
-
//
|
|
280900
|
-
currency = this.safeCurrency(undefined, currency);
|
|
280901
|
-
let fee = undefined;
|
|
280902
|
-
const feeCost = this.safeValue(transaction, 'fee');
|
|
280903
|
-
if (feeCost !== undefined) {
|
|
280904
|
-
fee = {
|
|
280905
|
-
'cost': feeCost,
|
|
280906
|
-
'currency': currency['code'],
|
|
280907
|
-
};
|
|
280908
|
-
}
|
|
280909
|
-
return {
|
|
280910
|
-
'id': this.safeString(transaction, 'id'),
|
|
280911
|
-
'txid': this.safeString(transaction, 'txid'),
|
|
280912
|
-
'timestamp': undefined,
|
|
280913
|
-
'datetime': undefined,
|
|
280914
|
-
'network': undefined,
|
|
280915
|
-
'addressFrom': undefined,
|
|
280916
|
-
'address': undefined,
|
|
280917
|
-
'addressTo': undefined,
|
|
280918
|
-
'amount': undefined,
|
|
280919
|
-
'type': undefined,
|
|
280920
|
-
'currency': currency['code'],
|
|
280921
|
-
'status': undefined,
|
|
280922
|
-
'updated': undefined,
|
|
280923
|
-
'tagFrom': undefined,
|
|
280924
|
-
'tag': undefined,
|
|
280925
|
-
'tagTo': undefined,
|
|
280926
|
-
'comment': undefined,
|
|
280927
|
-
'internal': undefined,
|
|
280928
|
-
'fee': fee,
|
|
280929
|
-
'info': transaction,
|
|
280930
|
-
};
|
|
280931
|
-
}
|
|
280932
|
-
customNonce() {
|
|
280933
|
-
const num = (this.milliseconds() / 1000).toString();
|
|
280934
|
-
const nonce = parseFloat(num);
|
|
280935
|
-
return nonce.toFixed(8);
|
|
280936
|
-
}
|
|
280937
|
-
sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
|
|
280938
|
-
let url = this.urls['api']['rest'] + '/';
|
|
280939
|
-
if (api === 'public') {
|
|
280940
|
-
url += 'api/' + this.version + '/' + this.implodeParams(path, params);
|
|
280941
|
-
}
|
|
280942
|
-
else if (api === 'fapi') {
|
|
280943
|
-
url += 'fapi/' + this.version + '/' + this.implodeParams(path, params);
|
|
280944
|
-
}
|
|
280945
|
-
else {
|
|
280946
|
-
this.checkRequiredCredentials();
|
|
280947
|
-
if (api === 'ecapi') {
|
|
280948
|
-
url += 'ecapi';
|
|
280949
|
-
}
|
|
280950
|
-
else if (api === 'tlapi') {
|
|
280951
|
-
url += 'tlapi';
|
|
280952
|
-
}
|
|
280953
|
-
else {
|
|
280954
|
-
url += 'tapi';
|
|
280955
|
-
}
|
|
280956
|
-
const nonce = this.customNonce();
|
|
280957
|
-
body = this.urlencode(this.extend({
|
|
280958
|
-
'method': path,
|
|
280959
|
-
'nonce': nonce,
|
|
280960
|
-
}, params));
|
|
280961
|
-
headers = {
|
|
280962
|
-
'Content-Type': 'application/x-www-form-urlencoded',
|
|
280963
|
-
'Key': this.apiKey,
|
|
280964
|
-
'Sign': this.hmac(this.encode(body), this.encode(this.secret), _static_dependencies_noble_hashes_sha512_js__WEBPACK_IMPORTED_MODULE_4__/* .sha512 */ .o),
|
|
280965
|
-
};
|
|
280966
|
-
}
|
|
280967
|
-
return { 'url': url, 'method': method, 'body': body, 'headers': headers };
|
|
280968
|
-
}
|
|
280969
|
-
handleErrors(httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody) {
|
|
280970
|
-
if (response === undefined) {
|
|
280971
|
-
return undefined;
|
|
280972
|
-
}
|
|
280973
|
-
//
|
|
280974
|
-
// {"error": "unsupported currency_pair"}
|
|
280975
|
-
//
|
|
280976
|
-
const feedback = this.id + ' ' + body;
|
|
280977
|
-
const error = this.safeString(response, 'error');
|
|
280978
|
-
if (error !== undefined) {
|
|
280979
|
-
this.throwExactlyMatchedException(this.exceptions['exact'], error, feedback);
|
|
280980
|
-
this.throwBroadlyMatchedException(this.exceptions['broad'], error, feedback);
|
|
280981
|
-
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError(feedback); // unknown message
|
|
280982
|
-
}
|
|
280983
|
-
const success = this.safeValue(response, 'success', true);
|
|
280984
|
-
if (!success) {
|
|
280985
|
-
throw new _base_errors_js__WEBPACK_IMPORTED_MODULE_2__.ExchangeError(feedback);
|
|
280986
|
-
}
|
|
280987
|
-
return undefined;
|
|
280988
|
-
}
|
|
280989
|
-
}
|
|
280990
|
-
|
|
280991
|
-
|
|
280992
280416
|
/***/ }),
|
|
280993
280417
|
|
|
280994
280418
|
/***/ 5140:
|
|
@@ -288032,6 +287456,751 @@ YAHOO.lang = {
|
|
|
288032
287456
|
}
|
|
288033
287457
|
};
|
|
288034
287458
|
|
|
287459
|
+
/***/ }),
|
|
287460
|
+
|
|
287461
|
+
/***/ 7558:
|
|
287462
|
+
/***/ (() => {
|
|
287463
|
+
|
|
287464
|
+
|
|
287465
|
+
// ---------------------------------------------------------------------------
|
|
287466
|
+
var __importDefault = (undefined && undefined.__importDefault) || function (mod) {
|
|
287467
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
287468
|
+
};
|
|
287469
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
287470
|
+
const zaif_js_1 = __importDefault(require("./abstract/zaif.js"));
|
|
287471
|
+
const errors_js_1 = require("./base/errors.js");
|
|
287472
|
+
const Precise_js_1 = require("./base/Precise.js");
|
|
287473
|
+
const number_js_1 = require("./base/functions/number.js");
|
|
287474
|
+
const sha512_js_1 = require("./static_dependencies/noble-hashes/sha512.js");
|
|
287475
|
+
// ---------------------------------------------------------------------------
|
|
287476
|
+
/**
|
|
287477
|
+
* @class zaif
|
|
287478
|
+
* @extends Exchange
|
|
287479
|
+
*/
|
|
287480
|
+
class zaif extends zaif_js_1.default {
|
|
287481
|
+
describe() {
|
|
287482
|
+
return this.deepExtend(super.describe(), {
|
|
287483
|
+
'id': 'zaif',
|
|
287484
|
+
'name': 'Zaif',
|
|
287485
|
+
'countries': ['JP'],
|
|
287486
|
+
// 10 requests per second = 1000ms / 10 = 100ms between requests (public market endpoints)
|
|
287487
|
+
'rateLimit': 100,
|
|
287488
|
+
'version': '1',
|
|
287489
|
+
'has': {
|
|
287490
|
+
'CORS': undefined,
|
|
287491
|
+
'spot': true,
|
|
287492
|
+
'margin': undefined,
|
|
287493
|
+
'swap': false,
|
|
287494
|
+
'future': false,
|
|
287495
|
+
'option': false,
|
|
287496
|
+
'cancelOrder': true,
|
|
287497
|
+
'createMarketOrder': false,
|
|
287498
|
+
'createOrder': true,
|
|
287499
|
+
'fetchBalance': true,
|
|
287500
|
+
'fetchClosedOrders': true,
|
|
287501
|
+
'fetchFundingHistory': false,
|
|
287502
|
+
'fetchFundingRate': false,
|
|
287503
|
+
'fetchFundingRateHistory': false,
|
|
287504
|
+
'fetchFundingRates': false,
|
|
287505
|
+
'fetchIndexOHLCV': false,
|
|
287506
|
+
'fetchMarkets': true,
|
|
287507
|
+
'fetchMarkOHLCV': false,
|
|
287508
|
+
'fetchOpenInterestHistory': false,
|
|
287509
|
+
'fetchOpenOrders': true,
|
|
287510
|
+
'fetchOrderBook': true,
|
|
287511
|
+
'fetchPremiumIndexOHLCV': false,
|
|
287512
|
+
'fetchTicker': true,
|
|
287513
|
+
'fetchTrades': true,
|
|
287514
|
+
'fetchTradingFee': false,
|
|
287515
|
+
'fetchTradingFees': false,
|
|
287516
|
+
'withdraw': true,
|
|
287517
|
+
},
|
|
287518
|
+
'urls': {
|
|
287519
|
+
'logo': 'https://user-images.githubusercontent.com/1294454/27766927-39ca2ada-5eeb-11e7-972f-1b4199518ca6.jpg',
|
|
287520
|
+
'api': {
|
|
287521
|
+
'rest': 'https://api.zaif.jp',
|
|
287522
|
+
},
|
|
287523
|
+
'www': 'https://zaif.jp',
|
|
287524
|
+
'doc': [
|
|
287525
|
+
'https://techbureau-api-document.readthedocs.io/ja/latest/index.html',
|
|
287526
|
+
'https://corp.zaif.jp/api-docs',
|
|
287527
|
+
'https://corp.zaif.jp/api-docs/api_links',
|
|
287528
|
+
'https://www.npmjs.com/package/zaif.jp',
|
|
287529
|
+
'https://github.com/you21979/node-zaif',
|
|
287530
|
+
],
|
|
287531
|
+
'fees': 'https://zaif.jp/fee?lang=en',
|
|
287532
|
+
},
|
|
287533
|
+
'fees': {
|
|
287534
|
+
'trading': {
|
|
287535
|
+
'percentage': true,
|
|
287536
|
+
'taker': this.parseNumber('0.001'),
|
|
287537
|
+
'maker': this.parseNumber('0'),
|
|
287538
|
+
},
|
|
287539
|
+
},
|
|
287540
|
+
'api': {
|
|
287541
|
+
'public': {
|
|
287542
|
+
'get': {
|
|
287543
|
+
'depth/{pair}': 1,
|
|
287544
|
+
'currencies/{pair}': 1,
|
|
287545
|
+
'currencies/all': 1,
|
|
287546
|
+
'currency_pairs/{pair}': 1,
|
|
287547
|
+
'currency_pairs/all': 1,
|
|
287548
|
+
'last_price/{pair}': 1,
|
|
287549
|
+
'ticker/{pair}': 1,
|
|
287550
|
+
'trades/{pair}': 1,
|
|
287551
|
+
},
|
|
287552
|
+
},
|
|
287553
|
+
'private': {
|
|
287554
|
+
'post': {
|
|
287555
|
+
'active_orders': 5,
|
|
287556
|
+
'cancel_order': 5,
|
|
287557
|
+
'deposit_history': 5,
|
|
287558
|
+
'get_id_info': 5,
|
|
287559
|
+
'get_info': 10,
|
|
287560
|
+
'get_info2': 5,
|
|
287561
|
+
'get_personal_info': 5,
|
|
287562
|
+
'trade': 5,
|
|
287563
|
+
'trade_history': 50,
|
|
287564
|
+
'withdraw': 5,
|
|
287565
|
+
'withdraw_history': 5,
|
|
287566
|
+
},
|
|
287567
|
+
},
|
|
287568
|
+
'ecapi': {
|
|
287569
|
+
'post': {
|
|
287570
|
+
'createInvoice': 1,
|
|
287571
|
+
'getInvoice': 1,
|
|
287572
|
+
'getInvoiceIdsByOrderNumber': 1,
|
|
287573
|
+
'cancelInvoice': 1,
|
|
287574
|
+
},
|
|
287575
|
+
},
|
|
287576
|
+
'tlapi': {
|
|
287577
|
+
'post': {
|
|
287578
|
+
'get_positions': 66,
|
|
287579
|
+
'position_history': 66,
|
|
287580
|
+
'active_positions': 5,
|
|
287581
|
+
'create_position': 33,
|
|
287582
|
+
'change_position': 33,
|
|
287583
|
+
'cancel_position': 33, // 3 in 10 seconds
|
|
287584
|
+
},
|
|
287585
|
+
},
|
|
287586
|
+
'fapi': {
|
|
287587
|
+
'get': {
|
|
287588
|
+
'groups/{group_id}': 1,
|
|
287589
|
+
'last_price/{group_id}/{pair}': 1,
|
|
287590
|
+
'ticker/{group_id}/{pair}': 1,
|
|
287591
|
+
'trades/{group_id}/{pair}': 1,
|
|
287592
|
+
'depth/{group_id}/{pair}': 1,
|
|
287593
|
+
},
|
|
287594
|
+
},
|
|
287595
|
+
},
|
|
287596
|
+
'options': {},
|
|
287597
|
+
'precisionMode': number_js_1.TICK_SIZE,
|
|
287598
|
+
'exceptions': {
|
|
287599
|
+
'exact': {
|
|
287600
|
+
'unsupported currency_pair': errors_js_1.BadRequest, // {"error": "unsupported currency_pair"}
|
|
287601
|
+
},
|
|
287602
|
+
'broad': {},
|
|
287603
|
+
},
|
|
287604
|
+
});
|
|
287605
|
+
}
|
|
287606
|
+
async fetchMarkets(params = {}) {
|
|
287607
|
+
/**
|
|
287608
|
+
* @method
|
|
287609
|
+
* @name zaif#fetchMarkets
|
|
287610
|
+
* @see https://zaif-api-document.readthedocs.io/ja/latest/PublicAPI.html#id12
|
|
287611
|
+
* @description retrieves data on all markets for zaif
|
|
287612
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
287613
|
+
* @returns {object[]} an array of objects representing market data
|
|
287614
|
+
*/
|
|
287615
|
+
const markets = await this.publicGetCurrencyPairsAll(params);
|
|
287616
|
+
//
|
|
287617
|
+
// [
|
|
287618
|
+
// {
|
|
287619
|
+
// "aux_unit_point": 0,
|
|
287620
|
+
// "item_japanese": "\u30d3\u30c3\u30c8\u30b3\u30a4\u30f3",
|
|
287621
|
+
// "aux_unit_step": 5.0,
|
|
287622
|
+
// "description": "\u30d3\u30c3\u30c8\u30b3\u30a4\u30f3\u30fb\u65e5\u672c\u5186\u306e\u53d6\u5f15\u3092\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059",
|
|
287623
|
+
// "item_unit_min": 0.001,
|
|
287624
|
+
// "event_number": 0,
|
|
287625
|
+
// "currency_pair": "btc_jpy",
|
|
287626
|
+
// "is_token": false,
|
|
287627
|
+
// "aux_unit_min": 5.0,
|
|
287628
|
+
// "aux_japanese": "\u65e5\u672c\u5186",
|
|
287629
|
+
// "id": 1,
|
|
287630
|
+
// "item_unit_step": 0.0001,
|
|
287631
|
+
// "name": "BTC/JPY",
|
|
287632
|
+
// "seq": 0,
|
|
287633
|
+
// "title": "BTC/JPY"
|
|
287634
|
+
// }
|
|
287635
|
+
// ]
|
|
287636
|
+
//
|
|
287637
|
+
return this.parseMarkets(markets);
|
|
287638
|
+
}
|
|
287639
|
+
parseMarket(market) {
|
|
287640
|
+
const id = this.safeString(market, 'currency_pair');
|
|
287641
|
+
const name = this.safeString(market, 'name');
|
|
287642
|
+
const [baseId, quoteId] = name.split('/');
|
|
287643
|
+
const base = this.safeCurrencyCode(baseId);
|
|
287644
|
+
const quote = this.safeCurrencyCode(quoteId);
|
|
287645
|
+
const symbol = base + '/' + quote;
|
|
287646
|
+
return {
|
|
287647
|
+
'id': id,
|
|
287648
|
+
'symbol': symbol,
|
|
287649
|
+
'base': base,
|
|
287650
|
+
'quote': quote,
|
|
287651
|
+
'settle': undefined,
|
|
287652
|
+
'baseId': baseId,
|
|
287653
|
+
'quoteId': quoteId,
|
|
287654
|
+
'settleId': undefined,
|
|
287655
|
+
'type': 'spot',
|
|
287656
|
+
'spot': true,
|
|
287657
|
+
'margin': undefined,
|
|
287658
|
+
'swap': false,
|
|
287659
|
+
'future': false,
|
|
287660
|
+
'option': false,
|
|
287661
|
+
'active': undefined,
|
|
287662
|
+
'contract': false,
|
|
287663
|
+
'linear': undefined,
|
|
287664
|
+
'inverse': undefined,
|
|
287665
|
+
'contractSize': undefined,
|
|
287666
|
+
'expiry': undefined,
|
|
287667
|
+
'expiryDatetime': undefined,
|
|
287668
|
+
'strike': undefined,
|
|
287669
|
+
'optionType': undefined,
|
|
287670
|
+
'precision': {
|
|
287671
|
+
'amount': this.safeNumber(market, 'item_unit_step'),
|
|
287672
|
+
'price': this.parseNumber(this.parsePrecision(this.safeString(market, 'aux_unit_point'))),
|
|
287673
|
+
},
|
|
287674
|
+
'limits': {
|
|
287675
|
+
'leverage': {
|
|
287676
|
+
'min': undefined,
|
|
287677
|
+
'max': undefined,
|
|
287678
|
+
},
|
|
287679
|
+
'amount': {
|
|
287680
|
+
'min': this.safeNumber(market, 'item_unit_min'),
|
|
287681
|
+
'max': undefined,
|
|
287682
|
+
},
|
|
287683
|
+
'price': {
|
|
287684
|
+
'min': this.safeNumber(market, 'aux_unit_min'),
|
|
287685
|
+
'max': undefined,
|
|
287686
|
+
},
|
|
287687
|
+
'cost': {
|
|
287688
|
+
'min': undefined,
|
|
287689
|
+
'max': undefined,
|
|
287690
|
+
},
|
|
287691
|
+
},
|
|
287692
|
+
'created': undefined,
|
|
287693
|
+
'info': market,
|
|
287694
|
+
};
|
|
287695
|
+
}
|
|
287696
|
+
parseBalance(response) {
|
|
287697
|
+
const balances = this.safeValue(response, 'return', {});
|
|
287698
|
+
const deposit = this.safeValue(balances, 'deposit');
|
|
287699
|
+
const result = {
|
|
287700
|
+
'info': response,
|
|
287701
|
+
'timestamp': undefined,
|
|
287702
|
+
'datetime': undefined,
|
|
287703
|
+
};
|
|
287704
|
+
const funds = this.safeValue(balances, 'funds', {});
|
|
287705
|
+
const currencyIds = Object.keys(funds);
|
|
287706
|
+
for (let i = 0; i < currencyIds.length; i++) {
|
|
287707
|
+
const currencyId = currencyIds[i];
|
|
287708
|
+
const code = this.safeCurrencyCode(currencyId);
|
|
287709
|
+
const balance = this.safeString(funds, currencyId);
|
|
287710
|
+
const account = this.account();
|
|
287711
|
+
account['free'] = balance;
|
|
287712
|
+
account['total'] = balance;
|
|
287713
|
+
if (deposit !== undefined) {
|
|
287714
|
+
if (currencyId in deposit) {
|
|
287715
|
+
account['total'] = this.safeString(deposit, currencyId);
|
|
287716
|
+
}
|
|
287717
|
+
}
|
|
287718
|
+
result[code] = account;
|
|
287719
|
+
}
|
|
287720
|
+
return this.safeBalance(result);
|
|
287721
|
+
}
|
|
287722
|
+
async fetchBalance(params = {}) {
|
|
287723
|
+
/**
|
|
287724
|
+
* @method
|
|
287725
|
+
* @name zaif#fetchBalance
|
|
287726
|
+
* @see https://zaif-api-document.readthedocs.io/ja/latest/TradingAPI.html#id10
|
|
287727
|
+
* @description query for balance and get the amount of funds available for trading or funds locked in orders
|
|
287728
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
287729
|
+
* @returns {object} a [balance structure]{@link https://docs.ccxt.com/#/?id=balance-structure}
|
|
287730
|
+
*/
|
|
287731
|
+
await this.loadMarkets();
|
|
287732
|
+
const response = await this.privatePostGetInfo(params);
|
|
287733
|
+
return this.parseBalance(response);
|
|
287734
|
+
}
|
|
287735
|
+
async fetchOrderBook(symbol, limit = undefined, params = {}) {
|
|
287736
|
+
/**
|
|
287737
|
+
* @method
|
|
287738
|
+
* @name zaif#fetchOrderBook
|
|
287739
|
+
* @see https://zaif-api-document.readthedocs.io/ja/latest/PublicAPI.html#id34
|
|
287740
|
+
* @description fetches information on open orders with bid (buy) and ask (sell) prices, volumes and other data
|
|
287741
|
+
* @param {string} symbol unified symbol of the market to fetch the order book for
|
|
287742
|
+
* @param {int} [limit] the maximum amount of order book entries to return
|
|
287743
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
287744
|
+
* @returns {object} A dictionary of [order book structures]{@link https://docs.ccxt.com/#/?id=order-book-structure} indexed by market symbols
|
|
287745
|
+
*/
|
|
287746
|
+
await this.loadMarkets();
|
|
287747
|
+
const market = this.market(symbol);
|
|
287748
|
+
const request = {
|
|
287749
|
+
'pair': market['id'],
|
|
287750
|
+
};
|
|
287751
|
+
const response = await this.publicGetDepthPair(this.extend(request, params));
|
|
287752
|
+
return this.parseOrderBook(response, market['symbol']);
|
|
287753
|
+
}
|
|
287754
|
+
parseTicker(ticker, market = undefined) {
|
|
287755
|
+
//
|
|
287756
|
+
// {
|
|
287757
|
+
// "last": 9e-08,
|
|
287758
|
+
// "high": 1e-07,
|
|
287759
|
+
// "low": 9e-08,
|
|
287760
|
+
// "vwap": 0.0,
|
|
287761
|
+
// "volume": 135250.0,
|
|
287762
|
+
// "bid": 9e-08,
|
|
287763
|
+
// "ask": 1e-07
|
|
287764
|
+
// }
|
|
287765
|
+
//
|
|
287766
|
+
const symbol = this.safeSymbol(undefined, market);
|
|
287767
|
+
const timestamp = this.milliseconds();
|
|
287768
|
+
const vwap = this.safeString(ticker, 'vwap');
|
|
287769
|
+
const baseVolume = this.safeString(ticker, 'volume');
|
|
287770
|
+
const quoteVolume = Precise_js_1.Precise.stringMul(baseVolume, vwap);
|
|
287771
|
+
const last = this.safeString(ticker, 'last');
|
|
287772
|
+
return this.safeTicker({
|
|
287773
|
+
'symbol': symbol,
|
|
287774
|
+
'timestamp': timestamp,
|
|
287775
|
+
'datetime': this.iso8601(timestamp),
|
|
287776
|
+
'high': this.safeString(ticker, 'high'),
|
|
287777
|
+
'low': this.safeString(ticker, 'low'),
|
|
287778
|
+
'bid': this.safeString(ticker, 'bid'),
|
|
287779
|
+
'bidVolume': undefined,
|
|
287780
|
+
'ask': this.safeString(ticker, 'ask'),
|
|
287781
|
+
'askVolume': undefined,
|
|
287782
|
+
'vwap': vwap,
|
|
287783
|
+
'open': undefined,
|
|
287784
|
+
'close': last,
|
|
287785
|
+
'last': last,
|
|
287786
|
+
'previousClose': undefined,
|
|
287787
|
+
'change': undefined,
|
|
287788
|
+
'percentage': undefined,
|
|
287789
|
+
'average': undefined,
|
|
287790
|
+
'baseVolume': baseVolume,
|
|
287791
|
+
'quoteVolume': quoteVolume,
|
|
287792
|
+
'info': ticker,
|
|
287793
|
+
}, market);
|
|
287794
|
+
}
|
|
287795
|
+
async fetchTicker(symbol, params = {}) {
|
|
287796
|
+
/**
|
|
287797
|
+
* @method
|
|
287798
|
+
* @name zaif#fetchTicker
|
|
287799
|
+
* @see https://zaif-api-document.readthedocs.io/ja/latest/PublicAPI.html#id22
|
|
287800
|
+
* @description fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
|
|
287801
|
+
* @param {string} symbol unified symbol of the market to fetch the ticker for
|
|
287802
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
287803
|
+
* @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
|
|
287804
|
+
*/
|
|
287805
|
+
await this.loadMarkets();
|
|
287806
|
+
const market = this.market(symbol);
|
|
287807
|
+
const request = {
|
|
287808
|
+
'pair': market['id'],
|
|
287809
|
+
};
|
|
287810
|
+
const ticker = await this.publicGetTickerPair(this.extend(request, params));
|
|
287811
|
+
//
|
|
287812
|
+
// {
|
|
287813
|
+
// "last": 9e-08,
|
|
287814
|
+
// "high": 1e-07,
|
|
287815
|
+
// "low": 9e-08,
|
|
287816
|
+
// "vwap": 0.0,
|
|
287817
|
+
// "volume": 135250.0,
|
|
287818
|
+
// "bid": 9e-08,
|
|
287819
|
+
// "ask": 1e-07
|
|
287820
|
+
// }
|
|
287821
|
+
//
|
|
287822
|
+
return this.parseTicker(ticker, market);
|
|
287823
|
+
}
|
|
287824
|
+
parseTrade(trade, market = undefined) {
|
|
287825
|
+
//
|
|
287826
|
+
// fetchTrades (public)
|
|
287827
|
+
//
|
|
287828
|
+
// {
|
|
287829
|
+
// "date": 1648559414,
|
|
287830
|
+
// "price": 5880375.0,
|
|
287831
|
+
// "amount": 0.017,
|
|
287832
|
+
// "tid": 176126557,
|
|
287833
|
+
// "currency_pair": "btc_jpy",
|
|
287834
|
+
// "trade_type": "ask"
|
|
287835
|
+
// }
|
|
287836
|
+
//
|
|
287837
|
+
let side = this.safeString(trade, 'trade_type');
|
|
287838
|
+
side = (side === 'bid') ? 'buy' : 'sell';
|
|
287839
|
+
const timestamp = this.safeTimestamp(trade, 'date');
|
|
287840
|
+
const id = this.safeString2(trade, 'id', 'tid');
|
|
287841
|
+
const priceString = this.safeString(trade, 'price');
|
|
287842
|
+
const amountString = this.safeString(trade, 'amount');
|
|
287843
|
+
const marketId = this.safeString(trade, 'currency_pair');
|
|
287844
|
+
const symbol = this.safeSymbol(marketId, market, '_');
|
|
287845
|
+
return this.safeTrade({
|
|
287846
|
+
'id': id,
|
|
287847
|
+
'info': trade,
|
|
287848
|
+
'timestamp': timestamp,
|
|
287849
|
+
'datetime': this.iso8601(timestamp),
|
|
287850
|
+
'symbol': symbol,
|
|
287851
|
+
'type': undefined,
|
|
287852
|
+
'side': side,
|
|
287853
|
+
'order': undefined,
|
|
287854
|
+
'takerOrMaker': undefined,
|
|
287855
|
+
'price': priceString,
|
|
287856
|
+
'amount': amountString,
|
|
287857
|
+
'cost': undefined,
|
|
287858
|
+
'fee': undefined,
|
|
287859
|
+
}, market);
|
|
287860
|
+
}
|
|
287861
|
+
async fetchTrades(symbol, since = undefined, limit = undefined, params = {}) {
|
|
287862
|
+
/**
|
|
287863
|
+
* @method
|
|
287864
|
+
* @name zaif#fetchTrades
|
|
287865
|
+
* @see https://zaif-api-document.readthedocs.io/ja/latest/PublicAPI.html#id28
|
|
287866
|
+
* @description get the list of most recent trades for a particular symbol
|
|
287867
|
+
* @param {string} symbol unified symbol of the market to fetch trades for
|
|
287868
|
+
* @param {int} [since] timestamp in ms of the earliest trade to fetch
|
|
287869
|
+
* @param {int} [limit] the maximum amount of trades to fetch
|
|
287870
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
287871
|
+
* @returns {Trade[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=public-trades}
|
|
287872
|
+
*/
|
|
287873
|
+
await this.loadMarkets();
|
|
287874
|
+
const market = this.market(symbol);
|
|
287875
|
+
const request = {
|
|
287876
|
+
'pair': market['id'],
|
|
287877
|
+
};
|
|
287878
|
+
let response = await this.publicGetTradesPair(this.extend(request, params));
|
|
287879
|
+
//
|
|
287880
|
+
// [
|
|
287881
|
+
// {
|
|
287882
|
+
// "date": 1648559414,
|
|
287883
|
+
// "price": 5880375.0,
|
|
287884
|
+
// "amount": 0.017,
|
|
287885
|
+
// "tid": 176126557,
|
|
287886
|
+
// "currency_pair": "btc_jpy",
|
|
287887
|
+
// "trade_type": "ask"
|
|
287888
|
+
// }, ...
|
|
287889
|
+
// ]
|
|
287890
|
+
//
|
|
287891
|
+
const numTrades = response.length;
|
|
287892
|
+
if (numTrades === 1) {
|
|
287893
|
+
const firstTrade = response[0];
|
|
287894
|
+
if (!Object.keys(firstTrade).length) {
|
|
287895
|
+
response = [];
|
|
287896
|
+
}
|
|
287897
|
+
}
|
|
287898
|
+
return this.parseTrades(response, market, since, limit);
|
|
287899
|
+
}
|
|
287900
|
+
async createOrder(symbol, type, side, amount, price = undefined, params = {}) {
|
|
287901
|
+
/**
|
|
287902
|
+
* @method
|
|
287903
|
+
* @name zaif#createOrder
|
|
287904
|
+
* @see https://zaif-api-document.readthedocs.io/ja/latest/MarginTradingAPI.html#id23
|
|
287905
|
+
* @description create a trade order
|
|
287906
|
+
* @param {string} symbol unified symbol of the market to create an order in
|
|
287907
|
+
* @param {string} type must be 'limit'
|
|
287908
|
+
* @param {string} side 'buy' or 'sell'
|
|
287909
|
+
* @param {float} amount how much of currency you want to trade in units of base currency
|
|
287910
|
+
* @param {float} [price] the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
|
|
287911
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
287912
|
+
* @returns {object} an [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
287913
|
+
*/
|
|
287914
|
+
await this.loadMarkets();
|
|
287915
|
+
if (type !== 'limit') {
|
|
287916
|
+
throw new errors_js_1.ExchangeError(this.id + ' createOrder() allows limit orders only');
|
|
287917
|
+
}
|
|
287918
|
+
const market = this.market(symbol);
|
|
287919
|
+
const request = {
|
|
287920
|
+
'currency_pair': market['id'],
|
|
287921
|
+
'action': (side === 'buy') ? 'bid' : 'ask',
|
|
287922
|
+
'amount': amount,
|
|
287923
|
+
'price': price,
|
|
287924
|
+
};
|
|
287925
|
+
const response = await this.privatePostTrade(this.extend(request, params));
|
|
287926
|
+
return this.safeOrder({
|
|
287927
|
+
'info': response,
|
|
287928
|
+
'id': response['return']['order_id'].toString(),
|
|
287929
|
+
}, market);
|
|
287930
|
+
}
|
|
287931
|
+
async cancelOrder(id, symbol = undefined, params = {}) {
|
|
287932
|
+
/**
|
|
287933
|
+
* @method
|
|
287934
|
+
* @name zaif#cancelOrder
|
|
287935
|
+
* @see https://zaif-api-document.readthedocs.io/ja/latest/TradingAPI.html#id37
|
|
287936
|
+
* @description cancels an open order
|
|
287937
|
+
* @param {string} id order id
|
|
287938
|
+
* @param {string} symbol not used by zaif cancelOrder ()
|
|
287939
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
287940
|
+
* @returns {object} An [order structure]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
287941
|
+
*/
|
|
287942
|
+
const request = {
|
|
287943
|
+
'order_id': id,
|
|
287944
|
+
};
|
|
287945
|
+
return await this.privatePostCancelOrder(this.extend(request, params));
|
|
287946
|
+
}
|
|
287947
|
+
parseOrder(order, market = undefined) {
|
|
287948
|
+
//
|
|
287949
|
+
// {
|
|
287950
|
+
// "currency_pair": "btc_jpy",
|
|
287951
|
+
// "action": "ask",
|
|
287952
|
+
// "amount": 0.03,
|
|
287953
|
+
// "price": 56000,
|
|
287954
|
+
// "timestamp": 1402021125,
|
|
287955
|
+
// "comment" : "demo"
|
|
287956
|
+
// }
|
|
287957
|
+
//
|
|
287958
|
+
let side = this.safeString(order, 'action');
|
|
287959
|
+
side = (side === 'bid') ? 'buy' : 'sell';
|
|
287960
|
+
const timestamp = this.safeTimestamp(order, 'timestamp');
|
|
287961
|
+
const marketId = this.safeString(order, 'currency_pair');
|
|
287962
|
+
const symbol = this.safeSymbol(marketId, market, '_');
|
|
287963
|
+
const price = this.safeString(order, 'price');
|
|
287964
|
+
const amount = this.safeString(order, 'amount');
|
|
287965
|
+
const id = this.safeString(order, 'id');
|
|
287966
|
+
return this.safeOrder({
|
|
287967
|
+
'id': id,
|
|
287968
|
+
'clientOrderId': undefined,
|
|
287969
|
+
'timestamp': timestamp,
|
|
287970
|
+
'datetime': this.iso8601(timestamp),
|
|
287971
|
+
'lastTradeTimestamp': undefined,
|
|
287972
|
+
'status': 'open',
|
|
287973
|
+
'symbol': symbol,
|
|
287974
|
+
'type': 'limit',
|
|
287975
|
+
'timeInForce': undefined,
|
|
287976
|
+
'postOnly': undefined,
|
|
287977
|
+
'side': side,
|
|
287978
|
+
'price': price,
|
|
287979
|
+
'stopPrice': undefined,
|
|
287980
|
+
'triggerPrice': undefined,
|
|
287981
|
+
'cost': undefined,
|
|
287982
|
+
'amount': amount,
|
|
287983
|
+
'filled': undefined,
|
|
287984
|
+
'remaining': undefined,
|
|
287985
|
+
'trades': undefined,
|
|
287986
|
+
'fee': undefined,
|
|
287987
|
+
'info': order,
|
|
287988
|
+
'average': undefined,
|
|
287989
|
+
}, market);
|
|
287990
|
+
}
|
|
287991
|
+
async fetchOpenOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
287992
|
+
/**
|
|
287993
|
+
* @method
|
|
287994
|
+
* @name zaif#fetchOpenOrders
|
|
287995
|
+
* @see https://zaif-api-document.readthedocs.io/ja/latest/MarginTradingAPI.html#id28
|
|
287996
|
+
* @description fetch all unfilled currently open orders
|
|
287997
|
+
* @param {string} symbol unified market symbol
|
|
287998
|
+
* @param {int} [since] the earliest time in ms to fetch open orders for
|
|
287999
|
+
* @param {int} [limit] the maximum number of open orders structures to retrieve
|
|
288000
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
288001
|
+
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
288002
|
+
*/
|
|
288003
|
+
await this.loadMarkets();
|
|
288004
|
+
let market = undefined;
|
|
288005
|
+
const request = {
|
|
288006
|
+
// 'is_token': false,
|
|
288007
|
+
// 'is_token_both': false,
|
|
288008
|
+
};
|
|
288009
|
+
if (symbol !== undefined) {
|
|
288010
|
+
market = this.market(symbol);
|
|
288011
|
+
request['currency_pair'] = market['id'];
|
|
288012
|
+
}
|
|
288013
|
+
const response = await this.privatePostActiveOrders(this.extend(request, params));
|
|
288014
|
+
return this.parseOrders(response['return'], market, since, limit);
|
|
288015
|
+
}
|
|
288016
|
+
async fetchClosedOrders(symbol = undefined, since = undefined, limit = undefined, params = {}) {
|
|
288017
|
+
/**
|
|
288018
|
+
* @method
|
|
288019
|
+
* @name zaif#fetchClosedOrders
|
|
288020
|
+
* @see https://zaif-api-document.readthedocs.io/ja/latest/TradingAPI.html#id24
|
|
288021
|
+
* @description fetches information on multiple closed orders made by the user
|
|
288022
|
+
* @param {string} symbol unified market symbol of the market orders were made in
|
|
288023
|
+
* @param {int} [since] the earliest time in ms to fetch orders for
|
|
288024
|
+
* @param {int} [limit] the maximum number of order structures to retrieve
|
|
288025
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
288026
|
+
* @returns {Order[]} a list of [order structures]{@link https://docs.ccxt.com/#/?id=order-structure}
|
|
288027
|
+
*/
|
|
288028
|
+
await this.loadMarkets();
|
|
288029
|
+
let market = undefined;
|
|
288030
|
+
const request = {
|
|
288031
|
+
// 'from': 0,
|
|
288032
|
+
// 'count': 1000,
|
|
288033
|
+
// 'from_id': 0,
|
|
288034
|
+
// 'end_id': 1000,
|
|
288035
|
+
// 'order': 'DESC',
|
|
288036
|
+
// 'since': 1503821051,
|
|
288037
|
+
// 'end': 1503821051,
|
|
288038
|
+
// 'is_token': false,
|
|
288039
|
+
};
|
|
288040
|
+
if (symbol !== undefined) {
|
|
288041
|
+
market = this.market(symbol);
|
|
288042
|
+
request['currency_pair'] = market['id'];
|
|
288043
|
+
}
|
|
288044
|
+
const response = await this.privatePostTradeHistory(this.extend(request, params));
|
|
288045
|
+
return this.parseOrders(response['return'], market, since, limit);
|
|
288046
|
+
}
|
|
288047
|
+
async withdraw(code, amount, address, tag = undefined, params = {}) {
|
|
288048
|
+
/**
|
|
288049
|
+
* @method
|
|
288050
|
+
* @name zaif#withdraw
|
|
288051
|
+
* @see https://zaif-api-document.readthedocs.io/ja/latest/TradingAPI.html#id41
|
|
288052
|
+
* @description make a withdrawal
|
|
288053
|
+
* @param {string} code unified currency code
|
|
288054
|
+
* @param {float} amount the amount to withdraw
|
|
288055
|
+
* @param {string} address the address to withdraw to
|
|
288056
|
+
* @param {string} tag
|
|
288057
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
288058
|
+
* @returns {object} a [transaction structure]{@link https://docs.ccxt.com/#/?id=transaction-structure}
|
|
288059
|
+
*/
|
|
288060
|
+
[tag, params] = this.handleWithdrawTagAndParams(tag, params);
|
|
288061
|
+
this.checkAddress(address);
|
|
288062
|
+
await this.loadMarkets();
|
|
288063
|
+
const currency = this.currency(code);
|
|
288064
|
+
if (code === 'JPY') {
|
|
288065
|
+
throw new errors_js_1.ExchangeError(this.id + ' withdraw() does not allow ' + code + ' withdrawals');
|
|
288066
|
+
}
|
|
288067
|
+
const request = {
|
|
288068
|
+
'currency': currency['id'],
|
|
288069
|
+
'amount': amount,
|
|
288070
|
+
'address': address,
|
|
288071
|
+
// 'message': 'Hi!', // XEM and others
|
|
288072
|
+
// 'opt_fee': 0.003, // BTC and MONA only
|
|
288073
|
+
};
|
|
288074
|
+
if (tag !== undefined) {
|
|
288075
|
+
request['message'] = tag;
|
|
288076
|
+
}
|
|
288077
|
+
const result = await this.privatePostWithdraw(this.extend(request, params));
|
|
288078
|
+
//
|
|
288079
|
+
// {
|
|
288080
|
+
// "success": 1,
|
|
288081
|
+
// "return": {
|
|
288082
|
+
// "id": 23634,
|
|
288083
|
+
// "fee": 0.001,
|
|
288084
|
+
// "txid":,
|
|
288085
|
+
// "funds": {
|
|
288086
|
+
// "jpy": 15320,
|
|
288087
|
+
// "btc": 1.392,
|
|
288088
|
+
// "xem": 100.2,
|
|
288089
|
+
// "mona": 2600
|
|
288090
|
+
// }
|
|
288091
|
+
// }
|
|
288092
|
+
// }
|
|
288093
|
+
//
|
|
288094
|
+
const returnData = this.safeValue(result, 'return');
|
|
288095
|
+
return this.parseTransaction(returnData, currency);
|
|
288096
|
+
}
|
|
288097
|
+
parseTransaction(transaction, currency = undefined) {
|
|
288098
|
+
//
|
|
288099
|
+
// {
|
|
288100
|
+
// "id": 23634,
|
|
288101
|
+
// "fee": 0.001,
|
|
288102
|
+
// "txid":,
|
|
288103
|
+
// "funds": {
|
|
288104
|
+
// "jpy": 15320,
|
|
288105
|
+
// "btc": 1.392,
|
|
288106
|
+
// "xem": 100.2,
|
|
288107
|
+
// "mona": 2600
|
|
288108
|
+
// }
|
|
288109
|
+
// }
|
|
288110
|
+
//
|
|
288111
|
+
currency = this.safeCurrency(undefined, currency);
|
|
288112
|
+
let fee = undefined;
|
|
288113
|
+
const feeCost = this.safeValue(transaction, 'fee');
|
|
288114
|
+
if (feeCost !== undefined) {
|
|
288115
|
+
fee = {
|
|
288116
|
+
'cost': feeCost,
|
|
288117
|
+
'currency': currency['code'],
|
|
288118
|
+
};
|
|
288119
|
+
}
|
|
288120
|
+
return {
|
|
288121
|
+
'id': this.safeString(transaction, 'id'),
|
|
288122
|
+
'txid': this.safeString(transaction, 'txid'),
|
|
288123
|
+
'timestamp': undefined,
|
|
288124
|
+
'datetime': undefined,
|
|
288125
|
+
'network': undefined,
|
|
288126
|
+
'addressFrom': undefined,
|
|
288127
|
+
'address': undefined,
|
|
288128
|
+
'addressTo': undefined,
|
|
288129
|
+
'amount': undefined,
|
|
288130
|
+
'type': undefined,
|
|
288131
|
+
'currency': currency['code'],
|
|
288132
|
+
'status': undefined,
|
|
288133
|
+
'updated': undefined,
|
|
288134
|
+
'tagFrom': undefined,
|
|
288135
|
+
'tag': undefined,
|
|
288136
|
+
'tagTo': undefined,
|
|
288137
|
+
'comment': undefined,
|
|
288138
|
+
'internal': undefined,
|
|
288139
|
+
'fee': fee,
|
|
288140
|
+
'info': transaction,
|
|
288141
|
+
};
|
|
288142
|
+
}
|
|
288143
|
+
customNonce() {
|
|
288144
|
+
const num = (this.milliseconds() / 1000).toString();
|
|
288145
|
+
const nonce = parseFloat(num);
|
|
288146
|
+
return nonce.toFixed(8);
|
|
288147
|
+
}
|
|
288148
|
+
sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
|
|
288149
|
+
let url = this.urls['api']['rest'] + '/';
|
|
288150
|
+
if (api === 'public') {
|
|
288151
|
+
url += 'api/' + this.version + '/' + this.implodeParams(path, params);
|
|
288152
|
+
}
|
|
288153
|
+
else if (api === 'fapi') {
|
|
288154
|
+
url += 'fapi/' + this.version + '/' + this.implodeParams(path, params);
|
|
288155
|
+
}
|
|
288156
|
+
else {
|
|
288157
|
+
this.checkRequiredCredentials();
|
|
288158
|
+
if (api === 'ecapi') {
|
|
288159
|
+
url += 'ecapi';
|
|
288160
|
+
}
|
|
288161
|
+
else if (api === 'tlapi') {
|
|
288162
|
+
url += 'tlapi';
|
|
288163
|
+
}
|
|
288164
|
+
else {
|
|
288165
|
+
url += 'tapi';
|
|
288166
|
+
}
|
|
288167
|
+
const nonce = this.customNonce();
|
|
288168
|
+
body = this.urlencode(this.extend({
|
|
288169
|
+
'method': path,
|
|
288170
|
+
'nonce': nonce,
|
|
288171
|
+
}, params));
|
|
288172
|
+
headers = {
|
|
288173
|
+
'Content-Type': 'application/x-www-form-urlencoded',
|
|
288174
|
+
'Key': this.apiKey,
|
|
288175
|
+
'Sign': this.hmac(this.encode(body), this.encode(this.secret), sha512_js_1.sha512),
|
|
288176
|
+
};
|
|
288177
|
+
}
|
|
288178
|
+
return { 'url': url, 'method': method, 'body': body, 'headers': headers };
|
|
288179
|
+
}
|
|
288180
|
+
handleErrors(httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody) {
|
|
288181
|
+
if (response === undefined) {
|
|
288182
|
+
return undefined;
|
|
288183
|
+
}
|
|
288184
|
+
//
|
|
288185
|
+
// {"error": "unsupported currency_pair"}
|
|
288186
|
+
//
|
|
288187
|
+
const feedback = this.id + ' ' + body;
|
|
288188
|
+
const error = this.safeString(response, 'error');
|
|
288189
|
+
if (error !== undefined) {
|
|
288190
|
+
this.throwExactlyMatchedException(this.exceptions['exact'], error, feedback);
|
|
288191
|
+
this.throwBroadlyMatchedException(this.exceptions['broad'], error, feedback);
|
|
288192
|
+
throw new errors_js_1.ExchangeError(feedback); // unknown message
|
|
288193
|
+
}
|
|
288194
|
+
const success = this.safeValue(response, 'success', true);
|
|
288195
|
+
if (!success) {
|
|
288196
|
+
throw new errors_js_1.ExchangeError(feedback);
|
|
288197
|
+
}
|
|
288198
|
+
return undefined;
|
|
288199
|
+
}
|
|
288200
|
+
}
|
|
288201
|
+
exports.default = zaif;
|
|
288202
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemFpZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInphaWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLCtFQUErRTs7Ozs7QUFFL0UsaUVBQTBDO0FBQzFDLGdEQUE2RDtBQUM3RCxrREFBNEM7QUFDNUMsMERBQXVEO0FBQ3ZELDRFQUFzRTtBQUd0RSwrRUFBK0U7QUFFL0U7OztHQUdHO0FBQ0gsTUFBcUIsSUFBSyxTQUFRLGlCQUFRO0lBQ3RDLFFBQVE7UUFDSixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRyxFQUFFO1lBQ3ZDLElBQUksRUFBRSxNQUFNO1lBQ1osTUFBTSxFQUFFLE1BQU07WUFDZCxXQUFXLEVBQUUsQ0FBRSxJQUFJLENBQUU7WUFDckIsMEZBQTBGO1lBQzFGLFdBQVcsRUFBRSxHQUFHO1lBQ2hCLFNBQVMsRUFBRSxHQUFHO1lBQ2QsS0FBSyxFQUFFO2dCQUNILE1BQU0sRUFBRSxTQUFTO2dCQUNqQixNQUFNLEVBQUUsSUFBSTtnQkFDWixRQUFRLEVBQUUsU0FBUztnQkFDbkIsTUFBTSxFQUFFLEtBQUs7Z0JBQ2IsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsYUFBYSxFQUFFLElBQUk7Z0JBQ25CLG1CQUFtQixFQUFFLEtBQUs7Z0JBQzFCLGFBQWEsRUFBRSxJQUFJO2dCQUNuQixjQUFjLEVBQUUsSUFBSTtnQkFDcEIsbUJBQW1CLEVBQUUsSUFBSTtnQkFDekIscUJBQXFCLEVBQUUsS0FBSztnQkFDNUIsa0JBQWtCLEVBQUUsS0FBSztnQkFDekIseUJBQXlCLEVBQUUsS0FBSztnQkFDaEMsbUJBQW1CLEVBQUUsS0FBSztnQkFDMUIsaUJBQWlCLEVBQUUsS0FBSztnQkFDeEIsY0FBYyxFQUFFLElBQUk7Z0JBQ3BCLGdCQUFnQixFQUFFLEtBQUs7Z0JBQ3ZCLDBCQUEwQixFQUFFLEtBQUs7Z0JBQ2pDLGlCQUFpQixFQUFFLElBQUk7Z0JBQ3ZCLGdCQUFn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QVMsRUFBRTtZQUNyQixJQUFJLENBQUMsNEJBQTRCLENBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDOUUsSUFBSSxDQUFDLDRCQUE0QixDQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQzlFLE1BQU0sSUFBSSx5QkFBYSxDQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsa0JBQWtCO1NBQ3pEO1FBQ0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDVixNQUFNLElBQUkseUJBQWEsQ0FBRSxRQUFRLENBQUMsQ0FBQztTQUN0QztRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7Q0FDSjtBQWp1QkQsdUJBaXVCQyIsInNvdXJjZXNDb250ZW50IjpbIlxuLy8gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5pbXBvcnQgRXhjaGFuZ2UgZnJvbSAnLi9hYnN0cmFjdC96YWlmLmpzJztcbmltcG9ydCB7IEV4Y2hhbmdlRXJyb3IsIEJhZFJlcXVlc3QgfSBmcm9tICcuL2Jhc2UvZXJyb3JzLmpzJztcbmltcG9ydCB7IFByZWNpc2UgfSBmcm9tICcuL2Jhc2UvUHJlY2lzZS5qcyc7XG5pbXBvcnQgeyBUSUNLX1NJWkUgfSBmcm9tICcuL2Jhc2UvZnVuY3Rpb25zL251bWJlci5qcyc7XG5pbXBvcnQgeyBzaGE1MTIgfSBmcm9tICcuL3N0YXRpY19kZXBlbmRlbmNpZXMvbm9ibGUtaGFzaGVzL3NoYTUxMi5qcyc7XG5pbXBvcnQgeyBCYWxhbmNlcywgQ3VycmVuY3ksIEludCwgTWFya2V0LCBPcmRlciwgT3JkZXJCb29rLCBPcmRlclNpZGUsIE9yZGVyVHlwZSwgU3RyLCBUaWNrZXIsIFRyYWRlLCBUcmFuc2FjdGlvbiB9IGZyb20gJy4vYmFzZS90eXBlcy5qcyc7XG5cbi8vICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBAY2xhc3MgemFpZlxuICogQGV4dGVuZHMgRXhjaGFuZ2VcbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgemFpZiBleHRlbmRzIEV4Y2hhbmdlIHtcbiAgICBkZXNjcmliZSAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlZXBFeHRlbmQgKHN1cGVyLmRlc2NyaWJlICgpLCB7XG4gICAgICAgICAgICAnaWQnOiAnemFpZicsXG4gICAgICAgICAgICAnbmFtZSc6ICdaYWlmJyxcbiAgICAgICAgICAgICdjb3VudHJpZXMnOiBbICdKUCcgXSxcbiAgICAgICAgICAgIC8vIDEwIHJlcXVlc3RzIHBlciBzZWNvbmQgPSAxMDAwbXMgLyAxMCA9IDEwMG1zIGJldHdlZW4gcmVxdWVzdHMgKHB1YmxpYyBtYXJrZXQgZW5kcG9pbnRzKVxuICAgICAgICAgICAgJ3JhdGVMaW1pdCc6IDEwMCxcbiAgICAgICAgICAgICd2ZXJzaW9uJzogJzEnLFxuICAgICAgICAgICAgJ2hhcyc6IHtcbiAgICAgICAgICAgICAgICAnQ09SUyc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAnc3BvdCc6IHRydWUsXG4gICAgICAgICAgICAgICAgJ21hcmdpbic6IHVuZGVmaW5lZCwgLy8gaGFzIGJ1dCB1bmltcGxlbWVudGVkXG4gICAgICAgICAgICAgICAgJ3N3YXAnOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAnZnV0dXJlJzogZmFsc2UsXG4gICAgICAgICAgICAgICAgJ29wdGlvbic6IGZhbHNlLFxuICAgICAgICAgICAgICAgICdjYW5jZWxPcmRlcic6IHRydWUsXG4gICAgICAgICAgICAgICAgJ2NyZWF0ZU1hcmtldE9yZGVyJzogZmFsc2UsXG4gICAgICAgICAgICAgICAgJ2NyZWF0ZU9yZGVyJzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAnZmV0Y2hCYWxhbmNlJzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAnZmV0Y2hDbG9zZWRPcmRlcnMnOiB0cnVlLFxuICAgICAgICAgICAgICAgICdmZXRjaEZ1bmRpbmdIaXN0b3J5JzogZmFsc2UsXG4gICAgICAgICAgICAgICAgJ2ZldGNoRnVuZGluZ1JhdGUnOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAnZmV0Y2hGdW5kaW5nUmF0ZUhpc3RvcnknOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAnZmV0Y2hGdW5kaW5nUmF0ZXMnOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAnZmV0Y2hJbmRleE9ITENWJzogZmFsc2UsXG4gICAgICAgICAgICAgICAgJ2ZldGNoTWFya2V0cyc6IHRydWUsXG4gICAgICAgICAgICAgICAgJ2ZldGNoTWFya09ITENWJzogZmFsc2UsXG4gICAgICAgICAgICAgICAgJ2ZldGNoT3BlbkludGVyZXN0SGlzdG9yeSc6IGZhbHNlLFxuICAgICAgICAgICAgICAgICdmZXRjaE9wZW5PcmRlcnMnOiB0cnVlLFxuICAgICAgICAgICAgICAgICdmZXRjaE9yZGVyQm9vayc6IHRydWUsXG4gICAgICAgICAgICAgICAgJ2ZldGNoUHJlbWl1bUluZGV4T0hMQ1YnOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAnZmV0Y2hUaWNrZXInOiB0cnVlLFxuICAgICAgICAgICAgICAgICdmZXRjaFRyYWRlcyc6IHRydWUsXG4gICAgICAgICAgICAgICAgJ2ZldGNoVHJhZGluZ0ZlZSc6IGZhbHNlLFxuICAgICAgICAgICAgICAgICdmZXRjaFRyYWRpbmdGZWVzJzogZmFsc2UsXG4gICAgICAgICAgICAgICAgJ3dpdGhkcmF3JzogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAndXJscyc6IHtcbiAgICAgICAgICAgICAgICAnbG9nbyc6ICdodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8xMjk0NDU0LzI3NzY2OTI3LTM5Y2EyYWRhLTVlZWItMTFlNy05NzJmLTFiNDE5OTUxOGNhNi5qcGcnLFxuICAgICAgICAgICAgICAgICdhcGknOiB7XG4gICAgICAgICAgICAgICAgICAgICdyZXN0JzogJ2h0dHBzOi8vYXBpLnphaWYuanAnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ3d3dyc6ICdodHRwczovL3phaWYuanAnLFxuICAgICAgICAgICAgICAgICdkb2MnOiBbXG4gICAgICAgICAgICAgICAgICAgICdodHRwczovL3RlY2hidXJlYXUtYXBpLWRvY3VtZW50LnJlYWR0aGVkb2NzLmlvL2phL2xhdGVzdC9pbmRleC5odG1sJyxcbiAgICAgICAgICAgICAgICAgICAgJ2h0dHBzOi8vY29ycC56YWlmLmpwL2FwaS1kb2NzJyxcbiAgICAgICAgICAgICAgICAgICAgJ2h0dHBzOi8vY29ycC56YWlmLmpwL2FwaS1kb2NzL2FwaV9saW5rcycsXG4gICAgICAgICAgICAgICAgICAgICdodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS96YWlmLmpwJyxcbiAgICAgICAgICAgICAgICAgICAgJ2h0dHBzOi8vZ2l0aHViLmNvbS95b3UyMTk3OS9ub2RlLXphaWYnLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgJ2ZlZXMnOiAnaHR0cHM6Ly96YWlmLmpwL2ZlZT9sYW5nPWVuJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnZmVlcyc6IHtcbiAgICAgICAgICAgICAgICAndHJhZGluZyc6IHtcbiAgICAgICAgICAgICAgICAgICAgJ3BlcmNlbnRhZ2UnOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAndGFrZXInOiB0aGlzLnBhcnNlTnVtYmVyICgnMC4wMDEnKSxcbiAgICAgICAgICAgICAgICAgICAgJ21ha2VyJzogdGhpcy5wYXJzZU51bWJlciAoJzAnKSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICdhcGknOiB7XG4gICAgICAgICAgICAgICAgJ3B1YmxpYyc6IHtcbiAgICAgICAgICAgICAgICAgICAgJ2dldCc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICdkZXB0aC97cGFpcn0nOiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2N1cnJlbmNpZXMve3BhaXJ9JzogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjdXJyZW5jaWVzL2FsbCc6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAnY3VycmVuY3lfcGFpcnMve3BhaXJ9JzogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjdXJyZW5jeV9wYWlycy9hbGwnOiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2xhc3RfcHJpY2Uve3BhaXJ9JzogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0aWNrZXIve3BhaXJ9JzogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0cmFkZXMve3BhaXJ9JzogMSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdwcml2YXRlJzoge1xuICAgICAgICAgICAgICAgICAgICAncG9zdCc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICdhY3RpdmVfb3JkZXJzJzogNSwgLy8gMTAgaW4gNSBzZWNvbmRzID0gMiBwZXIgc2Vjb25kID0+IGNvc3QgPSAxMCAvIDIgPSA1XG4gICAgICAgICAgICAgICAgICAgICAgICAnY2FuY2VsX29yZGVyJzogNSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdkZXBvc2l0X2hpc3RvcnknOiA1LFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9pZF9pbmZvJzogNSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfaW5mbyc6IDEwLCAvLyAxMCBpbiAxMCBzZWNvbmRzID0gMSBwZXIgc2Vjb25kID0+IGNvc3QgPSAxMCAvIDEgPSAxMFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9pbmZvMic6IDUsIC8vIDIwIGluIDEwIHNlY29uZHMgPSAyIHBlciBzZWNvbmQgPT4gY29zdCA9IDEwIC8gMiA9IDVcbiAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfcGVyc29uYWxfaW5mbyc6IDUsXG4gICAgICAgICAgICAgICAgICAgICAgICAndHJhZGUnOiA1LFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RyYWRlX2hpc3RvcnknOiA1MCwgLy8gMTIgaW4gNjAgc2Vjb25kcyA9IDAuMiBwZXIgc2Vjb25kID0+IGNvc3QgPSAxMCAvIDAuMiA9IDUwXG4gICAgICAgICAgICAgICAgICAgICAgICAnd2l0aGRyYXcnOiA1LFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3dpdGhkcmF3X2hpc3RvcnknOiA1LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ2VjYXBpJzoge1xuICAgICAgICAgICAgICAgICAgICAncG9zdCc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICdjcmVhdGVJbnZvaWNlJzogMSwgLy8gdW52ZXJpZmllZFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2dldEludm9pY2UnOiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2dldEludm9pY2VJZHNCeU9yZGVyTnVtYmVyJzogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdjYW5jZWxJbnZvaWNlJzogMSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICd0bGFwaSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJ3Bvc3QnOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X3Bvc2l0aW9ucyc6IDY2LCAvLyAxMCBpbiA2MCBzZWNvbmRzID0gMC4xNjYgcGVyIHNlY29uZCA9PiBjb3N0ID0gMTAgLyAwLjE2NiA9IDY2XG4gICAgICAgICAgICAgICAgICAgICAgICAncG9zaXRpb25faGlzdG9yeSc6IDY2LCAvLyAxMCBpbiA2MCBzZWNvbmRzXG4gICAgICAgICAgICAgICAgICAgICAgICAnYWN0aXZlX3Bvc2l0aW9ucyc6IDUsIC8vIDIwIGluIDEwIHNlY29uZHNcbiAgICAgICAgICAgICAgICAgICAgICAgICdjcmVhdGVfcG9zaXRpb24nOiAzMywgLy8gMyBpbiAxMCBzZWNvbmRzID0gMC4zIHBlciBzZWNvbmQgPT4gY29zdCA9IDEwIC8gMC4zID0gMzNcbiAgICAgICAgICAgICAgICAgICAgICAgICdjaGFuZ2VfcG9zaXRpb24nOiAzMywgLy8gMyBpbiAxMCBzZWNvbmRzXG4gICAgICAgICAgICAgICAgICAgICAgICAnY2FuY2VsX3Bvc2l0aW9uJzogMzMsIC8vIDMgaW4gMTAgc2Vjb25kc1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ2ZhcGknOiB7XG4gICAgICAgICAgICAgICAgICAgICdnZXQnOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnZ3JvdXBzL3tncm91cF9pZH0nOiAxLCAvLyB0ZXN0aW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAnbGFzdF9wcmljZS97Z3JvdXBfaWR9L3twYWlyfSc6IDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAndGlja2VyL3tncm91cF9pZH0ve3BhaXJ9JzogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICd0cmFkZXMve2dyb3VwX2lkfS97cGFpcn0nOiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcHRoL3tncm91cF9pZH0ve3BhaXJ9JzogMSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICdvcHRpb25zJzoge1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICdwcmVjaXNpb25Nb2RlJzogVElDS19TSVpFLFxuICAgICAgICAgICAgJ2V4Y2VwdGlvbnMnOiB7XG4gICAgICAgICAgICAgICAgJ2V4YWN0Jzoge1xuICAgICAgICAgICAgICAgICAgICAndW5zdXBwb3J0ZWQgY3VycmVuY3lfcGFpcic6IEJhZFJlcXVlc3QsIC8vIHtcImVycm9yXCI6IFwidW5zdXBwb3J0ZWQgY3VycmVuY3lfcGFpclwifVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ2Jyb2FkJzoge1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhc3luYyBmZXRjaE1hcmtldHMgKHBhcmFtcyA9IHt9KSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWV0aG9kXG4gICAgICAgICAqIEBuYW1lIHphaWYjZmV0Y2hNYXJrZXRzXG4gICAgICAgICAqIEBzZWUgaHR0cHM6Ly96YWlmLWFwaS1kb2N1bWVudC5yZWFkdGhlZG9jcy5pby9qYS9sYXRlc3QvUHVibGljQVBJLmh0bWwjaWQxMlxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gcmV0cmlldmVzIGRhdGEgb24gYWxsIG1hcmtldHMgZm9yIHphaWZcbiAgICAgICAgICogQHBhcmFtIHtvYmplY3R9IFtwYXJhbXNdIGV4dHJhIHBhcmFtZXRlcnMgc3BlY2lmaWMgdG8gdGhlIGV4Y2hhbmdlIEFQSSBlbmRwb2ludFxuICAgICAgICAgKiBAcmV0dXJucyB7b2JqZWN0W119IGFuIGFycmF5IG9mIG9iamVjdHMgcmVwcmVzZW50aW5nIG1hcmtldCBkYXRhXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCBtYXJrZXRzID0gYXdhaXQgdGhpcy5wdWJsaWNHZXRDdXJyZW5jeVBhaXJzQWxsIChwYXJhbXMpO1xuICAgICAgICAvL1xuICAgICAgICAvLyAgICAgW1xuICAgICAgICAvLyAgICAgICAgIHtcbiAgICAgICAgLy8gICAgICAgICAgICAgXCJhdXhfdW5pdF9wb2ludFwiOiAwLFxuICAgICAgICAvLyAgICAgICAgICAgICBcIml0ZW1famFwYW5lc2VcIjogXCJcXHUzMGQzXFx1MzBjM1xcdTMwYzhcXHUzMGIzXFx1MzBhNFxcdTMwZjNcIixcbiAgICAgICAgLy8gICAgICAgICAgICAgXCJhdXhfdW5pdF9zdGVwXCI6IDUuMCxcbiAgICAgICAgLy8gICAgICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBcIlxcdTMwZDNcXHUzMGMzXFx1MzBjOFxcdTMwYjNcXHUzMGE0XFx1MzBmM1xcdTMwZmJcXHU2NWU1XFx1NjcyY1xcdTUxODZcXHUzMDZlXFx1NTNkNlxcdTVmMTVcXHUzMDkyXFx1ODg0Y1xcdTMwNDZcXHUzMDUzXFx1MzA2OFxcdTMwNGNcXHUzMDY3XFx1MzA0ZFxcdTMwN2VcXHUzMDU5XCIsXG4gICAgICAgIC8vICAgICAgICAgICAgIFwiaXRlbV91bml0X21pblwiOiAwLjAwMSxcbiAgICAgICAgLy8gICAgICAgICAgICAgXCJldmVudF9udW1iZXJcIjogMCxcbiAgICAgICAgLy8gICAgICAgICAgICAgXCJjdXJyZW5jeV9wYWlyXCI6IFwiYnRjX2pweVwiLFxuICAgICAgICAvLyAgICAgICAgICAgICBcImlzX3Rva2VuXCI6IGZhbHNlLFxuICAgICAgICAvLyAgICAgICAgICAgICBcImF1eF91bml0X21pblwiOiA1LjAsXG4gICAgICAgIC8vICAgICAgICAgICAgIFwiYXV4X2phcGFuZXNlXCI6IFwiXFx1NjVlNVxcdTY3MmNcXHU1MTg2XCIsXG4gICAgICAgIC8vICAgICAgICAgICAgIFwiaWRcIjogMSxcbiAgICAgICAgLy8gICAgICAgICAgICAgXCJpdGVtX3VuaXRfc3RlcFwiOiAwLjAwMDEsXG4gICAgICAgIC8vICAgICAgICAgICAgIFwibmFtZVwiOiBcIkJUQy9KUFlcIixcbiAgICAgICAgLy8gICAgICAgICAgICAgXCJzZXFcIjogMCxcbiAgICAgICAgLy8gICAgICAgICAgICAgXCJ0aXRsZVwiOiBcIkJUQy9KUFlcIlxuICAgICAgICAvLyAgICAgICAgIH1cbiAgICAgICAgLy8gICAgIF1cbiAgICAgICAgLy9cbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VNYXJrZXRzIChtYXJrZXRzKTtcbiAgICB9XG5cbiAgICBwYXJzZU1hcmtldCAobWFya2V0KTogTWFya2V0IHtcbiAgICAgICAgY29uc3QgaWQgPSB0aGlzLnNhZmVTdHJpbmcgKG1hcmtldCwgJ2N1cnJlbmN5X3BhaXInKTtcbiAgICAgICAgY29uc3QgbmFtZSA9IHRoaXMuc2FmZVN0cmluZyAobWFya2V0LCAnbmFtZScpO1xuICAgICAgICBjb25zdCBbIGJhc2VJZCwgcXVvdGVJZCBdID0gbmFtZS5zcGxpdCAoJy8nKTtcbiAgICAgICAgY29uc3QgYmFzZSA9IHRoaXMuc2FmZUN1cnJlbmN5Q29kZSAoYmFzZUlkKTtcbiAgICAgICAgY29uc3QgcXVvdGUgPSB0aGlzLnNhZmVDdXJyZW5jeUNvZGUgKHF1b3RlSWQpO1xuICAgICAgICBjb25zdCBzeW1ib2wgPSBiYXNlICsgJy8nICsgcXVvdGU7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAnaWQnOiBpZCxcbiAgICAgICAgICAgICdzeW1ib2wnOiBzeW1ib2wsXG4gICAgICAgICAgICAnYmFzZSc6IGJhc2UsXG4gICAgICAgICAgICAncXVvdGUnOiBxdW90ZSxcbiAgICAgICAgICAgICdzZXR0bGUnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAnYmFzZUlkJzogYmFzZUlkLFxuICAgICAgICAgICAgJ3F1b3RlSWQnOiBxdW90ZUlkLFxuICAgICAgICAgICAgJ3NldHRsZUlkJzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ3R5cGUnOiAnc3BvdCcsXG4gICAgICAgICAgICAnc3BvdCc6IHRydWUsXG4gICAgICAgICAgICAnbWFyZ2luJzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ3N3YXAnOiBmYWxzZSxcbiAgICAgICAgICAgICdmdXR1cmUnOiBmYWxzZSxcbiAgICAgICAgICAgICdvcHRpb24nOiBmYWxzZSxcbiAgICAgICAgICAgICdhY3RpdmUnOiB1bmRlZmluZWQsIC8vIGNhbiB0cmFkZSBvciBub3RcbiAgICAgICAgICAgICdjb250cmFjdCc6IGZhbHNlLFxuICAgICAgICAgICAgJ2xpbmVhcic6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdpbnZlcnNlJzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ2NvbnRyYWN0U2l6ZSc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdleHBpcnknOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAnZXhwaXJ5RGF0ZXRpbWUnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAnc3RyaWtlJzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ29wdGlvblR5cGUnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAncHJlY2lzaW9uJzoge1xuICAgICAgICAgICAgICAgICdhbW91bnQnOiB0aGlzLnNhZmVOdW1iZXIgKG1hcmtldCwgJ2l0ZW1fdW5pdF9zdGVwJyksXG4gICAgICAgICAgICAgICAgJ3ByaWNlJzogdGhpcy5wYXJzZU51bWJlciAodGhpcy5wYXJzZVByZWNpc2lvbiAodGhpcy5zYWZlU3RyaW5nIChtYXJrZXQsICdhdXhfdW5pdF9wb2ludCcpKSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJ2xpbWl0cyc6IHtcbiAgICAgICAgICAgICAgICAnbGV2ZXJhZ2UnOiB7XG4gICAgICAgICAgICAgICAgICAgICdtaW4nOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICdtYXgnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnYW1vdW50Jzoge1xuICAgICAgICAgICAgICAgICAgICAnbWluJzogdGhpcy5zYWZlTnVtYmVyIChtYXJrZXQsICdpdGVtX3VuaXRfbWluJyksXG4gICAgICAgICAgICAgICAgICAgICdtYXgnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAncHJpY2UnOiB7XG4gICAgICAgICAgICAgICAgICAgICdtaW4nOiB0aGlzLnNhZmVOdW1iZXIgKG1hcmtldCwgJ2F1eF91bml0X21pbicpLFxuICAgICAgICAgICAgICAgICAgICAnbWF4JzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ2Nvc3QnOiB7XG4gICAgICAgICAgICAgICAgICAgICdtaW4nOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICdtYXgnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnY3JlYXRlZCc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdpbmZvJzogbWFya2V0LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHBhcnNlQmFsYW5jZSAocmVzcG9uc2UpOiBCYWxhbmNlcyB7XG4gICAgICAgIGNvbnN0IGJhbGFuY2VzID0gdGhpcy5zYWZlVmFsdWUgKHJlc3BvbnNlLCAncmV0dXJuJywge30pO1xuICAgICAgICBjb25zdCBkZXBvc2l0ID0gdGhpcy5zYWZlVmFsdWUgKGJhbGFuY2VzLCAnZGVwb3NpdCcpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICAgICAgICAnaW5mbyc6IHJlc3BvbnNlLFxuICAgICAgICAgICAgJ3RpbWVzdGFtcCc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdkYXRldGltZSc6IHVuZGVmaW5lZCxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgZnVuZHMgPSB0aGlzLnNhZmVWYWx1ZSAoYmFsYW5jZXMsICdmdW5kcycsIHt9KTtcbiAgICAgICAgY29uc3QgY3VycmVuY3lJZHMgPSBPYmplY3Qua2V5cyAoZnVuZHMpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGN1cnJlbmN5SWRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW5jeUlkID0gY3VycmVuY3lJZHNbaV07XG4gICAgICAgICAgICBjb25zdCBjb2RlID0gdGhpcy5zYWZlQ3VycmVuY3lDb2RlIChjdXJyZW5jeUlkKTtcbiAgICAgICAgICAgIGNvbnN0IGJhbGFuY2UgPSB0aGlzLnNhZmVTdHJpbmcgKGZ1bmRzLCBjdXJyZW5jeUlkKTtcbiAgICAgICAgICAgIGNvbnN0IGFjY291bnQgPSB0aGlzLmFjY291bnQgKCk7XG4gICAgICAgICAgICBhY2NvdW50WydmcmVlJ10gPSBiYWxhbmNlO1xuICAgICAgICAgICAgYWNjb3VudFsndG90YWwnXSA9IGJhbGFuY2U7XG4gICAgICAgICAgICBpZiAoZGVwb3NpdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbmN5SWQgaW4gZGVwb3NpdCkge1xuICAgICAgICAgICAgICAgICAgICBhY2NvdW50Wyd0b3RhbCddID0gdGhpcy5zYWZlU3RyaW5nIChkZXBvc2l0LCBjdXJyZW5jeUlkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHRbY29kZV0gPSBhY2NvdW50O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnNhZmVCYWxhbmNlIChyZXN1bHQpO1xuICAgIH1cblxuICAgIGFzeW5jIGZldGNoQmFsYW5jZSAocGFyYW1zID0ge30pOiBQcm9taXNlPEJhbGFuY2VzPiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWV0aG9kXG4gICAgICAgICAqIEBuYW1lIHphaWYjZmV0Y2hCYWxhbmNlXG4gICAgICAgICAqIEBzZWUgaHR0cHM6Ly96YWlmLWFwaS1kb2N1bWVudC5yZWFkdGhlZG9jcy5pby9qYS9sYXRlc3QvVHJhZGluZ0FQSS5odG1sI2lkMTBcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIHF1ZXJ5IGZvciBiYWxhbmNlIGFuZCBnZXQgdGhlIGFtb3VudCBvZiBmdW5kcyBhdmFpbGFibGUgZm9yIHRyYWRpbmcgb3IgZnVuZHMgbG9ja2VkIGluIG9yZGVyc1xuICAgICAgICAgKiBAcGFyYW0ge29iamVjdH0gW3BhcmFtc10gZXh0cmEgcGFyYW1ldGVycyBzcGVjaWZpYyB0byB0aGUgZXhjaGFuZ2UgQVBJIGVuZHBvaW50XG4gICAgICAgICAqIEByZXR1cm5zIHtvYmplY3R9IGEgW2JhbGFuY2Ugc3RydWN0dXJlXXtAbGluayBodHRwczovL2RvY3MuY2N4dC5jb20vIy8/aWQ9YmFsYW5jZS1zdHJ1Y3R1cmV9XG4gICAgICAgICAqL1xuICAgICAgICBhd2FpdCB0aGlzLmxvYWRNYXJrZXRzICgpO1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucHJpdmF0ZVBvc3RHZXRJbmZvIChwYXJhbXMpO1xuICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUJhbGFuY2UgKHJlc3BvbnNlKTtcbiAgICB9XG5cbiAgICBhc3luYyBmZXRjaE9yZGVyQm9vayAoc3ltYm9sOiBzdHJpbmcsIGxpbWl0OiBJbnQgPSB1bmRlZmluZWQsIHBhcmFtcyA9IHt9KTogUHJvbWlzZTxPcmRlckJvb2s+IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZXRob2RcbiAgICAgICAgICogQG5hbWUgemFpZiNmZXRjaE9yZGVyQm9va1xuICAgICAgICAgKiBAc2VlIGh0dHBzOi8vemFpZi1hcGktZG9jdW1lbnQucmVhZHRoZWRvY3MuaW8vamEvbGF0ZXN0L1B1YmxpY0FQSS5odG1sI2lkMzRcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIGZldGNoZXMgaW5mb3JtYXRpb24gb24gb3BlbiBvcmRlcnMgd2l0aCBiaWQgKGJ1eSkgYW5kIGFzayAoc2VsbCkgcHJpY2VzLCB2b2x1bWVzIGFuZCBvdGhlciBkYXRhXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzeW1ib2wgdW5pZmllZCBzeW1ib2wgb2YgdGhlIG1hcmtldCB0byBmZXRjaCB0aGUgb3JkZXIgYm9vayBmb3JcbiAgICAgICAgICogQHBhcmFtIHtpbnR9IFtsaW1pdF0gdGhlIG1heGltdW0gYW1vdW50IG9mIG9yZGVyIGJvb2sgZW50cmllcyB0byByZXR1cm5cbiAgICAgICAgICogQHBhcmFtIHtvYmplY3R9IFtwYXJhbXNdIGV4dHJhIHBhcmFtZXRlcnMgc3BlY2lmaWMgdG8gdGhlIGV4Y2hhbmdlIEFQSSBlbmRwb2ludFxuICAgICAgICAgKiBAcmV0dXJucyB7b2JqZWN0fSBBIGRpY3Rpb25hcnkgb2YgW29yZGVyIGJvb2sgc3RydWN0dXJlc117QGxpbmsgaHR0cHM6Ly9kb2NzLmNjeHQuY29tLyMvP2lkPW9yZGVyLWJvb2stc3RydWN0dXJlfSBpbmRleGVkIGJ5IG1hcmtldCBzeW1ib2xzXG4gICAgICAgICAqL1xuICAgICAgICBhd2FpdCB0aGlzLmxvYWRNYXJrZXRzICgpO1xuICAgICAgICBjb25zdCBtYXJrZXQgPSB0aGlzLm1hcmtldCAoc3ltYm9sKTtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgICAgICAgICdwYWlyJzogbWFya2V0WydpZCddLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucHVibGljR2V0RGVwdGhQYWlyICh0aGlzLmV4dGVuZCAocmVxdWVzdCwgcGFyYW1zKSk7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcnNlT3JkZXJCb29rIChyZXNwb25zZSwgbWFya2V0WydzeW1ib2wnXSk7XG4gICAgfVxuXG4gICAgcGFyc2VUaWNrZXIgKHRpY2tlciwgbWFya2V0OiBNYXJrZXQgPSB1bmRlZmluZWQpOiBUaWNrZXIge1xuICAgICAgICAvL1xuICAgICAgICAvLyB7XG4gICAgICAgIC8vICAgICBcImxhc3RcIjogOWUtMDgsXG4gICAgICAgIC8vICAgICBcImhpZ2hcIjogMWUtMDcsXG4gICAgICAgIC8vICAgICBcImxvd1wiOiA5ZS0wOCxcbiAgICAgICAgLy8gICAgIFwidndhcFwiOiAwLjAsXG4gICAgICAgIC8vICAgICBcInZvbHVtZVwiOiAxMzUyNTAuMCxcbiAgICAgICAgLy8gICAgIFwiYmlkXCI6IDllLTA4LFxuICAgICAgICAvLyAgICAgXCJhc2tcIjogMWUtMDdcbiAgICAgICAgLy8gfVxuICAgICAgICAvL1xuICAgICAgICBjb25zdCBzeW1ib2wgPSB0aGlzLnNhZmVTeW1ib2wgKHVuZGVmaW5lZCwgbWFya2V0KTtcbiAgICAgICAgY29uc3QgdGltZXN0YW1wID0gdGhpcy5taWxsaXNlY29uZHMgKCk7XG4gICAgICAgIGNvbnN0IHZ3YXAgPSB0aGlzLnNhZmVTdHJpbmcgKHRpY2tlciwgJ3Z3YXAnKTtcbiAgICAgICAgY29uc3QgYmFzZVZvbHVtZSA9IHRoaXMuc2FmZVN0cmluZyAodGlja2VyLCAndm9sdW1lJyk7XG4gICAgICAgIGNvbnN0IHF1b3RlVm9sdW1lID0gUHJlY2lzZS5zdHJpbmdNdWwgKGJhc2VWb2x1bWUsIHZ3YXApO1xuICAgICAgICBjb25zdCBsYXN0ID0gdGhpcy5zYWZlU3RyaW5nICh0aWNrZXIsICdsYXN0Jyk7XG4gICAgICAgIHJldHVybiB0aGlzLnNhZmVUaWNrZXIgKHtcbiAgICAgICAgICAgICdzeW1ib2wnOiBzeW1ib2wsXG4gICAgICAgICAgICAndGltZXN0YW1wJzogdGltZXN0YW1wLFxuICAgICAgICAgICAgJ2RhdGV0aW1lJzogdGhpcy5pc284NjAxICh0aW1lc3RhbXApLFxuICAgICAgICAgICAgJ2hpZ2gnOiB0aGlzLnNhZmVTdHJpbmcgKHRpY2tlciwgJ2hpZ2gnKSxcbiAgICAgICAgICAgICdsb3cnOiB0aGlzLnNhZmVTdHJpbmcgKHRpY2tlciwgJ2xvdycpLFxuICAgICAgICAgICAgJ2JpZCc6IHRoaXMuc2FmZVN0cmluZyAodGlja2VyLCAnYmlkJyksXG4gICAgICAgICAgICAnYmlkVm9sdW1lJzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ2Fzayc6IHRoaXMuc2FmZVN0cmluZyAodGlja2VyLCAnYXNrJyksXG4gICAgICAgICAgICAnYXNrVm9sdW1lJzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ3Z3YXAnOiB2d2FwLFxuICAgICAgICAgICAgJ29wZW4nOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAnY2xvc2UnOiBsYXN0LFxuICAgICAgICAgICAgJ2xhc3QnOiBsYXN0LFxuICAgICAgICAgICAgJ3ByZXZpb3VzQ2xvc2UnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAnY2hhbmdlJzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ3BlcmNlbnRhZ2UnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAnYXZlcmFnZSc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdiYXNlVm9sdW1lJzogYmFzZVZvbHVtZSxcbiAgICAgICAgICAgICdxdW90ZVZvbHVtZSc6IHF1b3RlVm9sdW1lLFxuICAgICAgICAgICAgJ2luZm8nOiB0aWNrZXIsXG4gICAgICAgIH0sIG1hcmtldCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZmV0Y2hUaWNrZXIgKHN5bWJvbDogc3RyaW5nLCBwYXJhbXMgPSB7fSk6IFByb21pc2U8VGlja2VyPiB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWV0aG9kXG4gICAgICAgICAqIEBuYW1lIHphaWYjZmV0Y2hUaWNrZXJcbiAgICAgICAgICogQHNlZSBodHRwczovL3phaWYtYXBpLWRvY3VtZW50LnJlYWR0aGVkb2NzLmlvL2phL2xhdGVzdC9QdWJsaWNBUEkuaHRtbCNpZDIyXG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBmZXRjaGVzIGEgcHJpY2UgdGlja2VyLCBhIHN0YXRpc3RpY2FsIGNhbGN1bGF0aW9uIHdpdGggdGhlIGluZm9ybWF0aW9uIGNhbGN1bGF0ZWQgb3ZlciB0aGUgcGFzdCAyNCBob3VycyBmb3IgYSBzcGVjaWZpYyBtYXJrZXRcbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHN5bWJvbCB1bmlmaWVkIHN5bWJvbCBvZiB0aGUgbWFya2V0IHRvIGZldGNoIHRoZSB0aWNrZXIgZm9yXG4gICAgICAgICAqIEBwYXJhbSB7b2JqZWN0fSBbcGFyYW1zXSBleHRyYSBwYXJhbWV0ZXJzIHNwZWNpZmljIHRvIHRoZSBleGNoYW5nZSBBUEkgZW5kcG9pbnRcbiAgICAgICAgICogQHJldHVybnMge29iamVjdH0gYSBbdGlja2VyIHN0cnVjdHVyZV17QGxpbmsgaHR0cHM6Ly9kb2NzLmNjeHQuY29tLyMvP2lkPXRpY2tlci1zdHJ1Y3R1cmV9XG4gICAgICAgICAqL1xuICAgICAgICBhd2FpdCB0aGlzLmxvYWRNYXJrZXRzICgpO1xuICAgICAgICBjb25zdCBtYXJrZXQgPSB0aGlzLm1hcmtldCAoc3ltYm9sKTtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgICAgICAgICdwYWlyJzogbWFya2V0WydpZCddLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCB0aWNrZXIgPSBhd2FpdCB0aGlzLnB1YmxpY0dldFRpY2tlclBhaXIgKHRoaXMuZXh0ZW5kIChyZXF1ZXN0LCBwYXJhbXMpKTtcbiAgICAgICAgLy9cbiAgICAgICAgLy8ge1xuICAgICAgICAvLyAgICAgXCJsYXN0XCI6IDllLTA4LFxuICAgICAgICAvLyAgICAgXCJoaWdoXCI6IDFlLTA3LFxuICAgICAgICAvLyAgICAgXCJsb3dcIjogOWUtMDgsXG4gICAgICAgIC8vICAgICBcInZ3YXBcIjogMC4wLFxuICAgICAgICAvLyAgICAgXCJ2b2x1bWVcIjogMTM1MjUwLjAsXG4gICAgICAgIC8vICAgICBcImJpZFwiOiA5ZS0wOCxcbiAgICAgICAgLy8gICAgIFwiYXNrXCI6IDFlLTA3XG4gICAgICAgIC8vIH1cbiAgICAgICAgLy9cbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VUaWNrZXIgKHRpY2tlciwgbWFya2V0KTtcbiAgICB9XG5cbiAgICBwYXJzZVRyYWRlICh0cmFkZSwgbWFya2V0OiBNYXJrZXQgPSB1bmRlZmluZWQpOiBUcmFkZSB7XG4gICAgICAgIC8vXG4gICAgICAgIC8vIGZldGNoVHJhZGVzIChwdWJsaWMpXG4gICAgICAgIC8vXG4gICAgICAgIC8vICAgICAge1xuICAgICAgICAvLyAgICAgICAgICBcImRhdGVcIjogMTY0ODU1OTQxNCxcbiAgICAgICAgLy8gICAgICAgICAgXCJwcmljZVwiOiA1ODgwMzc1LjAsXG4gICAgICAgIC8vICAgICAgICAgIFwiYW1vdW50XCI6IDAuMDE3LFxuICAgICAgICAvLyAgICAgICAgICBcInRpZFwiOiAxNzYxMjY1NTcsXG4gICAgICAgIC8vICAgICAgICAgIFwiY3VycmVuY3lfcGFpclwiOiBcImJ0Y19qcHlcIixcbiAgICAgICAgLy8gICAgICAgICAgXCJ0cmFkZV90eXBlXCI6IFwiYXNrXCJcbiAgICAgICAgLy8gICAgICB9XG4gICAgICAgIC8vXG4gICAgICAgIGxldCBzaWRlID0gdGhpcy5zYWZlU3RyaW5nICh0cmFkZSwgJ3RyYWRlX3R5cGUnKTtcbiAgICAgICAgc2lkZSA9IChzaWRlID09PSAnYmlkJykgPyAnYnV5JyA6ICdzZWxsJztcbiAgICAgICAgY29uc3QgdGltZXN0YW1wID0gdGhpcy5zYWZlVGltZXN0YW1wICh0cmFkZSwgJ2RhdGUnKTtcbiAgICAgICAgY29uc3QgaWQgPSB0aGlzLnNhZmVTdHJpbmcyICh0cmFkZSwgJ2lkJywgJ3RpZCcpO1xuICAgICAgICBjb25zdCBwcmljZVN0cmluZyA9IHRoaXMuc2FmZVN0cmluZyAodHJhZGUsICdwcmljZScpO1xuICAgICAgICBjb25zdCBhbW91bnRTdHJpbmcgPSB0aGlzLnNhZmVTdHJpbmcgKHRyYWRlLCAnYW1vdW50Jyk7XG4gICAgICAgIGNvbnN0IG1hcmtldElkID0gdGhpcy5zYWZlU3RyaW5nICh0cmFkZSwgJ2N1cnJlbmN5X3BhaXInKTtcbiAgICAgICAgY29uc3Qgc3ltYm9sID0gdGhpcy5zYWZlU3ltYm9sIChtYXJrZXRJZCwgbWFya2V0LCAnXycpO1xuICAgICAgICByZXR1cm4gdGhpcy5zYWZlVHJhZGUgKHtcbiAgICAgICAgICAgICdpZCc6IGlkLFxuICAgICAgICAgICAgJ2luZm8nOiB0cmFkZSxcbiAgICAgICAgICAgICd0aW1lc3RhbXAnOiB0aW1lc3RhbXAsXG4gICAgICAgICAgICAnZGF0ZXRpbWUnOiB0aGlzLmlzbzg2MDEgKHRpbWVzdGFtcCksXG4gICAgICAgICAgICAnc3ltYm9sJzogc3ltYm9sLFxuICAgICAgICAgICAgJ3R5cGUnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAnc2lkZSc6IHNpZGUsXG4gICAgICAgICAgICAnb3JkZXInOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAndGFrZXJPck1ha2VyJzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ3ByaWNlJzogcHJpY2VTdHJpbmcsXG4gICAgICAgICAgICAnYW1vdW50JzogYW1vdW50U3RyaW5nLFxuICAgICAgICAgICAgJ2Nvc3QnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAnZmVlJzogdW5kZWZpbmVkLFxuICAgICAgICB9LCBtYXJrZXQpO1xuICAgIH1cblxuICAgIGFzeW5jIGZldGNoVHJhZGVzIChzeW1ib2w6IHN0cmluZywgc2luY2U6IEludCA9IHVuZGVmaW5lZCwgbGltaXQ6IEludCA9IHVuZGVmaW5lZCwgcGFyYW1zID0ge30pOiBQcm9taXNlPFRyYWRlW10+IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZXRob2RcbiAgICAgICAgICogQG5hbWUgemFpZiNmZXRjaFRyYWRlc1xuICAgICAgICAgKiBAc2VlIGh0dHBzOi8vemFpZi1hcGktZG9jdW1lbnQucmVhZHRoZWRvY3MuaW8vamEvbGF0ZXN0L1B1YmxpY0FQSS5odG1sI2lkMjhcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIGdldCB0aGUgbGlzdCBvZiBtb3N0IHJlY2VudCB0cmFkZXMgZm9yIGEgcGFydGljdWxhciBzeW1ib2xcbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHN5bWJvbCB1bmlmaWVkIHN5bWJvbCBvZiB0aGUgbWFya2V0IHRvIGZldGNoIHRyYWRlcyBmb3JcbiAgICAgICAgICogQHBhcmFtIHtpbnR9IFtzaW5jZV0gdGltZXN0YW1wIGluIG1zIG9mIHRoZSBlYXJsaWVzdCB0cmFkZSB0byBmZXRjaFxuICAgICAgICAgKiBAcGFyYW0ge2ludH0gW2xpbWl0XSB0aGUgbWF4aW11bSBhbW91bnQgb2YgdHJhZGVzIHRvIGZldGNoXG4gICAgICAgICAqIEBwYXJhbSB7b2JqZWN0fSBbcGFyYW1zXSBleHRyYSBwYXJhbWV0ZXJzIHNwZWNpZmljIHRvIHRoZSBleGNoYW5nZSBBUEkgZW5kcG9pbnRcbiAgICAgICAgICogQHJldHVybnMge1RyYWRlW119IGEgbGlzdCBvZiBbdHJhZGUgc3RydWN0dXJlc117QGxpbmsgaHR0cHM6Ly9kb2NzLmNjeHQuY29tLyMvP2lkPXB1YmxpYy10cmFkZXN9XG4gICAgICAgICAqL1xuICAgICAgICBhd2FpdCB0aGlzLmxvYWRNYXJrZXRzICgpO1xuICAgICAgICBjb25zdCBtYXJrZXQgPSB0aGlzLm1hcmtldCAoc3ltYm9sKTtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgICAgICAgICdwYWlyJzogbWFya2V0WydpZCddLFxuICAgICAgICB9O1xuICAgICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLnB1YmxpY0dldFRyYWRlc1BhaXIgKHRoaXMuZXh0ZW5kIChyZXF1ZXN0LCBwYXJhbXMpKTtcbiAgICAgICAgLy9cbiAgICAgICAgLy8gICAgICBbXG4gICAgICAgIC8vICAgICAgICAgIHtcbiAgICAgICAgLy8gICAgICAgICAgICAgIFwiZGF0ZVwiOiAxNjQ4NTU5NDE0LFxuICAgICAgICAvLyAgICAgICAgICAgICAgXCJwcmljZVwiOiA1ODgwMzc1LjAsXG4gICAgICAgIC8vICAgICAgICAgICAgICBcImFtb3VudFwiOiAwLjAxNyxcbiAgICAgICAgLy8gICAgICAgICAgICAgIFwidGlkXCI6IDE3NjEyNjU1NyxcbiAgICAgICAgLy8gICAgICAgICAgICAgIFwiY3VycmVuY3lfcGFpclwiOiBcImJ0Y19qcHlcIixcbiAgICAgICAgLy8gICAgICAgICAgICAgIFwidHJhZGVfdHlwZVwiOiBcImFza1wiXG4gICAgICAgIC8vICAgICAgICAgIH0sIC4uLlxuICAgICAgICAvLyAgICAgIF1cbiAgICAgICAgLy9cbiAgICAgICAgY29uc3QgbnVtVHJhZGVzID0gcmVzcG9uc2UubGVuZ3RoO1xuICAgICAgICBpZiAobnVtVHJhZGVzID09PSAxKSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdFRyYWRlID0gcmVzcG9uc2VbMF07XG4gICAgICAgICAgICBpZiAoIU9iamVjdC5rZXlzIChmaXJzdFRyYWRlKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXNwb25zZSA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnBhcnNlVHJhZGVzIChyZXNwb25zZSwgbWFya2V0LCBzaW5jZSwgbGltaXQpO1xuICAgIH1cblxuICAgIGFzeW5jIGNyZWF0ZU9yZGVyIChzeW1ib2w6IHN0cmluZywgdHlwZTogT3JkZXJUeXBlLCBzaWRlOiBPcmRlclNpZGUsIGFtb3VudCwgcHJpY2UgPSB1bmRlZmluZWQsIHBhcmFtcyA9IHt9KSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAbWV0aG9kXG4gICAgICAgICAqIEBuYW1lIHphaWYjY3JlYXRlT3JkZXJcbiAgICAgICAgICogQHNlZSBodHRwczovL3phaWYtYXBpLWRvY3VtZW50LnJlYWR0aGVkb2NzLmlvL2phL2xhdGVzdC9NYXJnaW5UcmFkaW5nQVBJLmh0bWwjaWQyM1xuICAgICAgICAgKiBAZGVzY3JpcHRpb24gY3JlYXRlIGEgdHJhZGUgb3JkZXJcbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHN5bWJvbCB1bmlmaWVkIHN5bWJvbCBvZiB0aGUgbWFya2V0IHRvIGNyZWF0ZSBhbiBvcmRlciBpblxuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZSBtdXN0IGJlICdsaW1pdCdcbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHNpZGUgJ2J1eScgb3IgJ3NlbGwnXG4gICAgICAgICAqIEBwYXJhbSB7ZmxvYXR9IGFtb3VudCBob3cgbXVjaCBvZiBjdXJyZW5jeSB5b3Ugd2FudCB0byB0cmFkZSBpbiB1bml0cyBvZiBiYXNlIGN1cnJlbmN5XG4gICAgICAgICAqIEBwYXJhbSB7ZmxvYXR9IFtwcmljZV0gdGhlIHByaWNlIGF0IHdoaWNoIHRoZSBvcmRlciBpcyB0byBiZSBmdWxsZmlsbGVkLCBpbiB1bml0cyBvZiB0aGUgcXVvdGUgY3VycmVuY3ksIGlnbm9yZWQgaW4gbWFya2V0IG9yZGVyc1xuICAgICAgICAgKiBAcGFyYW0ge29iamVjdH0gW3BhcmFtc10gZXh0cmEgcGFyYW1ldGVycyBzcGVjaWZpYyB0byB0aGUgZXhjaGFuZ2UgQVBJIGVuZHBvaW50XG4gICAgICAgICAqIEByZXR1cm5zIHtvYmplY3R9IGFuIFtvcmRlciBzdHJ1Y3R1cmVde0BsaW5rIGh0dHBzOi8vZG9jcy5jY3h0LmNvbS8jLz9pZD1vcmRlci1zdHJ1Y3R1cmV9XG4gICAgICAgICAqL1xuICAgICAgICBhd2FpdCB0aGlzLmxvYWRNYXJrZXRzICgpO1xuICAgICAgICBpZiAodHlwZSAhPT0gJ2xpbWl0Jykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2hhbmdlRXJyb3IgKHRoaXMuaWQgKyAnIGNyZWF0ZU9yZGVyKCkgYWxsb3dzIGxpbWl0IG9yZGVycyBvbmx5Jyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbWFya2V0ID0gdGhpcy5tYXJrZXQgKHN5bWJvbCk7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICAgICAgICAnY3VycmVuY3lfcGFpcic6IG1hcmtldFsnaWQnXSxcbiAgICAgICAgICAgICdhY3Rpb24nOiAoc2lkZSA9PT0gJ2J1eScpID8gJ2JpZCcgOiAnYXNrJyxcbiAgICAgICAgICAgICdhbW91bnQnOiBhbW91bnQsXG4gICAgICAgICAgICAncHJpY2UnOiBwcmljZSxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLnByaXZhdGVQb3N0VHJhZGUgKHRoaXMuZXh0ZW5kIChyZXF1ZXN0LCBwYXJhbXMpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2FmZU9yZGVyICh7XG4gICAgICAgICAgICAnaW5mbyc6IHJlc3BvbnNlLFxuICAgICAgICAgICAgJ2lkJzogcmVzcG9uc2VbJ3JldHVybiddWydvcmRlcl9pZCddLnRvU3RyaW5nICgpLFxuICAgICAgICB9LCBtYXJrZXQpO1xuICAgIH1cblxuICAgIGFzeW5jIGNhbmNlbE9yZGVyIChpZDogc3RyaW5nLCBzeW1ib2w6IFN0ciA9IHVuZGVmaW5lZCwgcGFyYW1zID0ge30pIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZXRob2RcbiAgICAgICAgICogQG5hbWUgemFpZiNjYW5jZWxPcmRlclxuICAgICAgICAgKiBAc2VlIGh0dHBzOi8vemFpZi1hcGktZG9jdW1lbnQucmVhZHRoZWRvY3MuaW8vamEvbGF0ZXN0L1RyYWRpbmdBUEkuaHRtbCNpZDM3XG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBjYW5jZWxzIGFuIG9wZW4gb3JkZXJcbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGlkIG9yZGVyIGlkXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzeW1ib2wgbm90IHVzZWQgYnkgemFpZiBjYW5jZWxPcmRlciAoKVxuICAgICAgICAgKiBAcGFyYW0ge29iamVjdH0gW3BhcmFtc10gZXh0cmEgcGFyYW1ldGVycyBzcGVjaWZpYyB0byB0aGUgZXhjaGFuZ2UgQVBJIGVuZHBvaW50XG4gICAgICAgICAqIEByZXR1cm5zIHtvYmplY3R9IEFuIFtvcmRlciBzdHJ1Y3R1cmVde0BsaW5rIGh0dHBzOi8vZG9jcy5jY3h0LmNvbS8jLz9pZD1vcmRlci1zdHJ1Y3R1cmV9XG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0ge1xuICAgICAgICAgICAgJ29yZGVyX2lkJzogaWQsXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnByaXZhdGVQb3N0Q2FuY2VsT3JkZXIgKHRoaXMuZXh0ZW5kIChyZXF1ZXN0LCBwYXJhbXMpKTtcbiAgICB9XG5cbiAgICBwYXJzZU9yZGVyIChvcmRlciwgbWFya2V0OiBNYXJrZXQgPSB1bmRlZmluZWQpOiBPcmRlciB7XG4gICAgICAgIC8vXG4gICAgICAgIC8vICAgICB7XG4gICAgICAgIC8vICAgICAgICAgXCJjdXJyZW5jeV9wYWlyXCI6IFwiYnRjX2pweVwiLFxuICAgICAgICAvLyAgICAgICAgIFwiYWN0aW9uXCI6IFwiYXNrXCIsXG4gICAgICAgIC8vICAgICAgICAgXCJhbW91bnRcIjogMC4wMyxcbiAgICAgICAgLy8gICAgICAgICBcInByaWNlXCI6IDU2MDAwLFxuICAgICAgICAvLyAgICAgICAgIFwidGltZXN0YW1wXCI6IDE0MDIwMjExMjUsXG4gICAgICAgIC8vICAgICAgICAgXCJjb21tZW50XCIgOiBcImRlbW9cIlxuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvL1xuICAgICAgICBsZXQgc2lkZSA9IHRoaXMuc2FmZVN0cmluZyAob3JkZXIsICdhY3Rpb24nKTtcbiAgICAgICAgc2lkZSA9IChzaWRlID09PSAnYmlkJykgPyAnYnV5JyA6ICdzZWxsJztcbiAgICAgICAgY29uc3QgdGltZXN0YW1wID0gdGhpcy5zYWZlVGltZXN0YW1wIChvcmRlciwgJ3RpbWVzdGFtcCcpO1xuICAgICAgICBjb25zdCBtYXJrZXRJZCA9IHRoaXMuc2FmZVN0cmluZyAob3JkZXIsICdjdXJyZW5jeV9wYWlyJyk7XG4gICAgICAgIGNvbnN0IHN5bWJvbCA9IHRoaXMuc2FmZVN5bWJvbCAobWFya2V0SWQsIG1hcmtldCwgJ18nKTtcbiAgICAgICAgY29uc3QgcHJpY2UgPSB0aGlzLnNhZmVTdHJpbmcgKG9yZGVyLCAncHJpY2UnKTtcbiAgICAgICAgY29uc3QgYW1vdW50ID0gdGhpcy5zYWZlU3RyaW5nIChvcmRlciwgJ2Ftb3VudCcpO1xuICAgICAgICBjb25zdCBpZCA9IHRoaXMuc2FmZVN0cmluZyAob3JkZXIsICdpZCcpO1xuICAgICAgICByZXR1cm4gdGhpcy5zYWZlT3JkZXIgKHtcbiAgICAgICAgICAgICdpZCc6IGlkLFxuICAgICAgICAgICAgJ2NsaWVudE9yZGVySWQnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAndGltZXN0YW1wJzogdGltZXN0YW1wLFxuICAgICAgICAgICAgJ2RhdGV0aW1lJzogdGhpcy5pc284NjAxICh0aW1lc3RhbXApLFxuICAgICAgICAgICAgJ2xhc3RUcmFkZVRpbWVzdGFtcCc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdzdGF0dXMnOiAnb3BlbicsXG4gICAgICAgICAgICAnc3ltYm9sJzogc3ltYm9sLFxuICAgICAgICAgICAgJ3R5cGUnOiAnbGltaXQnLFxuICAgICAgICAgICAgJ3RpbWVJbkZvcmNlJzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ3Bvc3RPbmx5JzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ3NpZGUnOiBzaWRlLFxuICAgICAgICAgICAgJ3ByaWNlJzogcHJpY2UsXG4gICAgICAgICAgICAnc3RvcFByaWNlJzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ3RyaWdnZXJQcmljZSc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdjb3N0JzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ2Ftb3VudCc6IGFtb3VudCxcbiAgICAgICAgICAgICdmaWxsZWQnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAncmVtYWluaW5nJzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ3RyYWRlcyc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdmZWUnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAnaW5mbyc6IG9yZGVyLFxuICAgICAgICAgICAgJ2F2ZXJhZ2UnOiB1bmRlZmluZWQsXG4gICAgICAgIH0sIG1hcmtldCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZmV0Y2hPcGVuT3JkZXJzIChzeW1ib2w6IFN0ciA9IHVuZGVmaW5lZCwgc2luY2U6IEludCA9IHVuZGVmaW5lZCwgbGltaXQ6IEludCA9IHVuZGVmaW5lZCwgcGFyYW1zID0ge30pOiBQcm9taXNlPE9yZGVyW10+IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZXRob2RcbiAgICAgICAgICogQG5hbWUgemFpZiNmZXRjaE9wZW5PcmRlcnNcbiAgICAgICAgICogQHNlZSBodHRwczovL3phaWYtYXBpLWRvY3VtZW50LnJlYWR0aGVkb2NzLmlvL2phL2xhdGVzdC9NYXJnaW5UcmFkaW5nQVBJLmh0bWwjaWQyOFxuICAgICAgICAgKiBAZGVzY3JpcHRpb24gZmV0Y2ggYWxsIHVuZmlsbGVkIGN1cnJlbnRseSBvcGVuIG9yZGVyc1xuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3ltYm9sIHVuaWZpZWQgbWFya2V0IHN5bWJvbFxuICAgICAgICAgKiBAcGFyYW0ge2ludH0gW3NpbmNlXSB0aGUgZWFybGllc3QgdGltZSBpbiBtcyB0byBmZXRjaCBvcGVuIG9yZGVycyBmb3JcbiAgICAgICAgICogQHBhcmFtIHtpbnR9IFtsaW1pdF0gdGhlIG1heGltdW0gbnVtYmVyIG9mICBvcGVuIG9yZGVycyBzdHJ1Y3R1cmVzIHRvIHJldHJpZXZlXG4gICAgICAgICAqIEBwYXJhbSB7b2JqZWN0fSBbcGFyYW1zXSBleHRyYSBwYXJhbWV0ZXJzIHNwZWNpZmljIHRvIHRoZSBleGNoYW5nZSBBUEkgZW5kcG9pbnRcbiAgICAgICAgICogQHJldHVybnMge09yZGVyW119IGEgbGlzdCBvZiBbb3JkZXIgc3RydWN0dXJlc117QGxpbmsgaHR0cHM6Ly9kb2NzLmNjeHQuY29tLyMvP2lkPW9yZGVyLXN0cnVjdHVyZX1cbiAgICAgICAgICovXG4gICAgICAgIGF3YWl0IHRoaXMubG9hZE1hcmtldHMgKCk7XG4gICAgICAgIGxldCBtYXJrZXQ6IE1hcmtldCA9IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgICAgICAgIC8vICdpc190b2tlbic6IGZhbHNlLFxuICAgICAgICAgICAgLy8gJ2lzX3Rva2VuX2JvdGgnOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHN5bWJvbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBtYXJrZXQgPSB0aGlzLm1hcmtldCAoc3ltYm9sKTtcbiAgICAgICAgICAgIHJlcXVlc3RbJ2N1cnJlbmN5X3BhaXInXSA9IG1hcmtldFsnaWQnXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucHJpdmF0ZVBvc3RBY3RpdmVPcmRlcnMgKHRoaXMuZXh0ZW5kIChyZXF1ZXN0LCBwYXJhbXMpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VPcmRlcnMgKHJlc3BvbnNlWydyZXR1cm4nXSwgbWFya2V0LCBzaW5jZSwgbGltaXQpO1xuICAgIH1cblxuICAgIGFzeW5jIGZldGNoQ2xvc2VkT3JkZXJzIChzeW1ib2w6IFN0ciA9IHVuZGVmaW5lZCwgc2luY2U6IEludCA9IHVuZGVmaW5lZCwgbGltaXQ6IEludCA9IHVuZGVmaW5lZCwgcGFyYW1zID0ge30pOiBQcm9taXNlPE9yZGVyW10+IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBtZXRob2RcbiAgICAgICAgICogQG5hbWUgemFpZiNmZXRjaENsb3NlZE9yZGVyc1xuICAgICAgICAgKiBAc2VlIGh0dHBzOi8vemFpZi1hcGktZG9jdW1lbnQucmVhZHRoZWRvY3MuaW8vamEvbGF0ZXN0L1RyYWRpbmdBUEkuaHRtbCNpZDI0XG4gICAgICAgICAqIEBkZXNjcmlwdGlvbiBmZXRjaGVzIGluZm9ybWF0aW9uIG9uIG11bHRpcGxlIGNsb3NlZCBvcmRlcnMgbWFkZSBieSB0aGUgdXNlclxuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3ltYm9sIHVuaWZpZWQgbWFya2V0IHN5bWJvbCBvZiB0aGUgbWFya2V0IG9yZGVycyB3ZXJlIG1hZGUgaW5cbiAgICAgICAgICogQHBhcmFtIHtpbnR9IFtzaW5jZV0gdGhlIGVhcmxpZXN0IHRpbWUgaW4gbXMgdG8gZmV0Y2ggb3JkZXJzIGZvclxuICAgICAgICAgKiBAcGFyYW0ge2ludH0gW2xpbWl0XSB0aGUgbWF4aW11bSBudW1iZXIgb2YgIG9yZGUgc3RydWN0dXJlcyB0byByZXRyaWV2ZVxuICAgICAgICAgKiBAcGFyYW0ge29iamVjdH0gW3BhcmFtc10gZXh0cmEgcGFyYW1ldGVycyBzcGVjaWZpYyB0byB0aGUgZXhjaGFuZ2UgQVBJIGVuZHBvaW50XG4gICAgICAgICAqIEByZXR1cm5zIHtPcmRlcltdfSBhIGxpc3Qgb2YgW29yZGVyIHN0cnVjdHVyZXNde0BsaW5rIGh0dHBzOi8vZG9jcy5jY3h0LmNvbS8jLz9pZD1vcmRlci1zdHJ1Y3R1cmV9XG4gICAgICAgICAqL1xuICAgICAgICBhd2FpdCB0aGlzLmxvYWRNYXJrZXRzICgpO1xuICAgICAgICBsZXQgbWFya2V0OiBNYXJrZXQgPSB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICAgICAgICAvLyAnZnJvbSc6IDAsXG4gICAgICAgICAgICAvLyAnY291bnQnOiAxMDAwLFxuICAgICAgICAgICAgLy8gJ2Zyb21faWQnOiAwLFxuICAgICAgICAgICAgLy8gJ2VuZF9pZCc6IDEwMDAsXG4gICAgICAgICAgICAvLyAnb3JkZXInOiAnREVTQycsXG4gICAgICAgICAgICAvLyAnc2luY2UnOiAxNTAzODIxMDUxLFxuICAgICAgICAgICAgLy8gJ2VuZCc6IDE1MDM4MjEwNTEsXG4gICAgICAgICAgICAvLyAnaXNfdG9rZW4nOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHN5bWJvbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBtYXJrZXQgPSB0aGlzLm1hcmtldCAoc3ltYm9sKTtcbiAgICAgICAgICAgIHJlcXVlc3RbJ2N1cnJlbmN5X3BhaXInXSA9IG1hcmtldFsnaWQnXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucHJpdmF0ZVBvc3RUcmFkZUhpc3RvcnkgKHRoaXMuZXh0ZW5kIChyZXF1ZXN0LCBwYXJhbXMpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VPcmRlcnMgKHJlc3BvbnNlWydyZXR1cm4nXSwgbWFya2V0LCBzaW5jZSwgbGltaXQpO1xuICAgIH1cblxuICAgIGFzeW5jIHdpdGhkcmF3IChjb2RlOiBzdHJpbmcsIGFtb3VudCwgYWRkcmVzcywgdGFnID0gdW5kZWZpbmVkLCBwYXJhbXMgPSB7fSkge1xuICAgICAgICAvKipcbiAgICAgICAgICogQG1ldGhvZFxuICAgICAgICAgKiBAbmFtZSB6YWlmI3dpdGhkcmF3XG4gICAgICAgICAqIEBzZWUgaHR0cHM6Ly96YWlmLWFwaS1kb2N1bWVudC5yZWFkdGhlZG9jcy5pby9qYS9sYXRlc3QvVHJhZGluZ0FQSS5odG1sI2lkNDFcbiAgICAgICAgICogQGRlc2NyaXB0aW9uIG1ha2UgYSB3aXRoZHJhd2FsXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjb2RlIHVuaWZpZWQgY3VycmVuY3kgY29kZVxuICAgICAgICAgKiBAcGFyYW0ge2Zsb2F0fSBhbW91bnQgdGhlIGFtb3VudCB0byB3aXRoZHJhd1xuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyB0aGUgYWRkcmVzcyB0byB3aXRoZHJhdyB0b1xuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGFnXG4gICAgICAgICAqIEBwYXJhbSB7b2JqZWN0fSBbcGFyYW1zXSBleHRyYSBwYXJhbWV0ZXJzIHNwZWNpZmljIHRvIHRoZSBleGNoYW5nZSBBUEkgZW5kcG9pbnRcbiAgICAgICAgICogQHJldHVybnMge29iamVjdH0gYSBbdHJhbnNhY3Rpb24gc3RydWN0dXJlXXtAbGluayBodHRwczovL2RvY3MuY2N4dC5jb20vIy8/aWQ9dHJhbnNhY3Rpb24tc3RydWN0dXJlfVxuICAgICAgICAgKi9cbiAgICAgICAgWyB0YWcsIHBhcmFtcyBdID0gdGhpcy5oYW5kbGVXaXRoZHJhd1RhZ0FuZFBhcmFtcyAodGFnLCBwYXJhbXMpO1xuICAgICAgICB0aGlzLmNoZWNrQWRkcmVzcyAoYWRkcmVzcyk7XG4gICAgICAgIGF3YWl0IHRoaXMubG9hZE1hcmtldHMgKCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbmN5ID0gdGhpcy5jdXJyZW5jeSAoY29kZSk7XG4gICAgICAgIGlmIChjb2RlID09PSAnSlBZJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2hhbmdlRXJyb3IgKHRoaXMuaWQgKyAnIHdpdGhkcmF3KCkgZG9lcyBub3QgYWxsb3cgJyArIGNvZGUgKyAnIHdpdGhkcmF3YWxzJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgICAgICAgICdjdXJyZW5jeSc6IGN1cnJlbmN5WydpZCddLFxuICAgICAgICAgICAgJ2Ftb3VudCc6IGFtb3VudCxcbiAgICAgICAgICAgICdhZGRyZXNzJzogYWRkcmVzcyxcbiAgICAgICAgICAgIC8vICdtZXNzYWdlJzogJ0hpIScsIC8vIFhFTSBhbmQgb3RoZXJzXG4gICAgICAgICAgICAvLyAnb3B0X2ZlZSc6IDAuMDAzLCAvLyBCVEMgYW5kIE1PTkEgb25seVxuICAgICAgICB9O1xuICAgICAgICBpZiAodGFnICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJlcXVlc3RbJ21lc3NhZ2UnXSA9IHRhZztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnByaXZhdGVQb3N0V2l0aGRyYXcgKHRoaXMuZXh0ZW5kIChyZXF1ZXN0LCBwYXJhbXMpKTtcbiAgICAgICAgLy9cbiAgICAgICAgLy8gICAgIHtcbiAgICAgICAgLy8gICAgICAgICBcInN1Y2Nlc3NcIjogMSxcbiAgICAgICAgLy8gICAgICAgICBcInJldHVyblwiOiB7XG4gICAgICAgIC8vICAgICAgICAgICAgIFwiaWRcIjogMjM2MzQsXG4gICAgICAgIC8vICAgICAgICAgICAgIFwiZmVlXCI6IDAuMDAxLFxuICAgICAgICAvLyAgICAgICAgICAgICBcInR4aWRcIjosXG4gICAgICAgIC8vICAgICAgICAgICAgIFwiZnVuZHNcIjoge1xuICAgICAgICAvLyAgICAgICAgICAgICAgICAgXCJqcHlcIjogMTUzMjAsXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICBcImJ0Y1wiOiAxLjM5MixcbiAgICAgICAgLy8gICAgICAgICAgICAgICAgIFwieGVtXCI6IDEwMC4yLFxuICAgICAgICAvLyAgICAgICAgICAgICAgICAgXCJtb25hXCI6IDI2MDBcbiAgICAgICAgLy8gICAgICAgICAgICAgfVxuICAgICAgICAvLyAgICAgICAgIH1cbiAgICAgICAgLy8gICAgIH1cbiAgICAgICAgLy9cbiAgICAgICAgY29uc3QgcmV0dXJuRGF0YSA9IHRoaXMuc2FmZVZhbHVlIChyZXN1bHQsICdyZXR1cm4nKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VUcmFuc2FjdGlvbiAocmV0dXJuRGF0YSwgY3VycmVuY3kpO1xuICAgIH1cblxuICAgIHBhcnNlVHJhbnNhY3Rpb24gKHRyYW5zYWN0aW9uLCBjdXJyZW5jeTogQ3VycmVuY3kgPSB1bmRlZmluZWQpOiBUcmFuc2FjdGlvbiB7XG4gICAgICAgIC8vXG4gICAgICAgIC8vICAgICB7XG4gICAgICAgIC8vICAgICAgICAgXCJpZFwiOiAyMzYzNCxcbiAgICAgICAgLy8gICAgICAgICBcImZlZVwiOiAwLjAwMSxcbiAgICAgICAgLy8gICAgICAgICBcInR4aWRcIjosXG4gICAgICAgIC8vICAgICAgICAgXCJmdW5kc1wiOiB7XG4gICAgICAgIC8vICAgICAgICAgICAgIFwianB5XCI6IDE1MzIwLFxuICAgICAgICAvLyAgICAgICAgICAgICBcImJ0Y1wiOiAxLjM5MixcbiAgICAgICAgLy8gICAgICAgICAgICAgXCJ4ZW1cIjogMTAwLjIsXG4gICAgICAgIC8vICAgICAgICAgICAgIFwibW9uYVwiOiAyNjAwXG4gICAgICAgIC8vICAgICAgICAgfVxuICAgICAgICAvLyAgICAgfVxuICAgICAgICAvL1xuICAgICAgICBjdXJyZW5jeSA9IHRoaXMuc2FmZUN1cnJlbmN5ICh1bmRlZmluZWQsIGN1cnJlbmN5KTtcbiAgICAgICAgbGV0IGZlZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgZmVlQ29zdCA9IHRoaXMuc2FmZVZhbHVlICh0cmFuc2FjdGlvbiwgJ2ZlZScpO1xuICAgICAgICBpZiAoZmVlQ29zdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBmZWUgPSB7XG4gICAgICAgICAgICAgICAgJ2Nvc3QnOiBmZWVDb3N0LFxuICAgICAgICAgICAgICAgICdjdXJyZW5jeSc6IGN1cnJlbmN5Wydjb2RlJ10sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAnaWQnOiB0aGlzLnNhZmVTdHJpbmcgKHRyYW5zYWN0aW9uLCAnaWQnKSxcbiAgICAgICAgICAgICd0eGlkJzogdGhpcy5zYWZlU3RyaW5nICh0cmFuc2FjdGlvbiwgJ3R4aWQnKSxcbiAgICAgICAgICAgICd0aW1lc3RhbXAnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAnZGF0ZXRpbWUnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAnbmV0d29yayc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdhZGRyZXNzRnJvbSc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdhZGRyZXNzJzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ2FkZHJlc3NUbyc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdhbW91bnQnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAndHlwZSc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdjdXJyZW5jeSc6IGN1cnJlbmN5Wydjb2RlJ10sXG4gICAgICAgICAgICAnc3RhdHVzJzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgJ3VwZGF0ZWQnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAndGFnRnJvbSc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICd0YWcnOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAndGFnVG8nOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAnY29tbWVudCc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdpbnRlcm5hbCc6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdmZWUnOiBmZWUsXG4gICAgICAgICAgICAnaW5mbyc6IHRyYW5zYWN0aW9uLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGN1c3RvbU5vbmNlICgpIHtcbiAgICAgICAgY29uc3QgbnVtID0gKHRoaXMubWlsbGlzZWNvbmRzICgpIC8gMTAwMCkudG9TdHJpbmcgKCk7XG4gICAgICAgIGNvbnN0IG5vbmNlID0gcGFyc2VGbG9hdCAobnVtKTtcbiAgICAgICAgcmV0dXJuIG5vbmNlLnRvRml4ZWQgKDgpO1xuICAgIH1cblxuICAgIHNpZ24gKHBhdGgsIGFwaSA9ICdwdWJsaWMnLCBtZXRob2QgPSAnR0VUJywgcGFyYW1zID0ge30sIGhlYWRlcnMgPSB1bmRlZmluZWQsIGJvZHkgPSB1bmRlZmluZWQpIHtcbiAgICAgICAgbGV0IHVybCA9IHRoaXMudXJsc1snYXBpJ11bJ3Jlc3QnXSArICcvJztcbiAgICAgICAgaWYgKGFwaSA9PT0gJ3B1YmxpYycpIHtcbiAgICAgICAgICAgIHVybCArPSAnYXBpLycgKyB0aGlzLnZlcnNpb24gKyAnLycgKyB0aGlzLmltcGxvZGVQYXJhbXMgKHBhdGgsIHBhcmFtcyk7XG4gICAgICAgIH0gZWxzZSBpZiAoYXBpID09PSAnZmFwaScpIHtcbiAgICAgICAgICAgIHVybCArPSAnZmFwaS8nICsgdGhpcy52ZXJzaW9uICsgJy8nICsgdGhpcy5pbXBsb2RlUGFyYW1zIChwYXRoLCBwYXJhbXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jaGVja1JlcXVpcmVkQ3JlZGVudGlhbHMgKCk7XG4gICAgICAgICAgICBpZiAoYXBpID09PSAnZWNhcGknKSB7XG4gICAgICAgICAgICAgICAgdXJsICs9ICdlY2FwaSc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGFwaSA9PT0gJ3RsYXBpJykge1xuICAgICAgICAgICAgICAgIHVybCArPSAndGxhcGknO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB1cmwgKz0gJ3RhcGknO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgbm9uY2UgPSB0aGlzLmN1c3RvbU5vbmNlICgpO1xuICAgICAgICAgICAgYm9keSA9IHRoaXMudXJsZW5jb2RlICh0aGlzLmV4dGVuZCAoe1xuICAgICAgICAgICAgICAgICdtZXRob2QnOiBwYXRoLFxuICAgICAgICAgICAgICAgICdub25jZSc6IG5vbmNlLFxuICAgICAgICAgICAgfSwgcGFyYW1zKSk7XG4gICAgICAgICAgICBoZWFkZXJzID0ge1xuICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyxcbiAgICAgICAgICAgICAgICAnS2V5JzogdGhpcy5hcGlLZXksXG4gICAgICAgICAgICAgICAgJ1NpZ24nOiB0aGlzLmhtYWMgKHRoaXMuZW5jb2RlIChib2R5KSwgdGhpcy5lbmNvZGUgKHRoaXMuc2VjcmV0KSwgc2hhNTEyKSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgJ3VybCc6IHVybCwgJ21ldGhvZCc6IG1ldGhvZCwgJ2JvZHknOiBib2R5LCAnaGVhZGVycyc6IGhlYWRlcnMgfTtcbiAgICB9XG5cbiAgICBoYW5kbGVFcnJvcnMgKGh0dHBDb2RlLCByZWFzb24sIHVybCwgbWV0aG9kLCBoZWFkZXJzLCBib2R5LCByZXNwb25zZSwgcmVxdWVzdEhlYWRlcnMsIHJlcXVlc3RCb2R5KSB7XG4gICAgICAgIGlmIChyZXNwb25zZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIC8vXG4gICAgICAgIC8vICAgICB7XCJlcnJvclwiOiBcInVuc3VwcG9ydGVkIGN1cnJlbmN5X3BhaXJcIn1cbiAgICAgICAgLy9cbiAgICAgICAgY29uc3QgZmVlZGJhY2sgPSB0aGlzLmlkICsgJyAnICsgYm9keTtcbiAgICAgICAgY29uc3QgZXJyb3IgPSB0aGlzLnNhZmVTdHJpbmcgKHJlc3BvbnNlLCAnZXJyb3InKTtcbiAgICAgICAgaWYgKGVycm9yICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMudGhyb3dFeGFjdGx5TWF0Y2hlZEV4Y2VwdGlvbiAodGhpcy5leGNlcHRpb25zWydleGFjdCddLCBlcnJvciwgZmVlZGJhY2spO1xuICAgICAgICAgICAgdGhpcy50aHJvd0Jyb2FkbHlNYXRjaGVkRXhjZXB0aW9uICh0aGlzLmV4Y2VwdGlvbnNbJ2Jyb2FkJ10sIGVycm9yLCBmZWVkYmFjayk7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXhjaGFuZ2VFcnJvciAoZmVlZGJhY2spOyAvLyB1bmtub3duIG1lc3NhZ2VcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdWNjZXNzID0gdGhpcy5zYWZlVmFsdWUgKHJlc3BvbnNlLCAnc3VjY2VzcycsIHRydWUpO1xuICAgICAgICBpZiAoIXN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFeGNoYW5nZUVycm9yIChmZWVkYmFjayk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG59XG4iXX0=
|
|
288203
|
+
|
|
288035
288204
|
/***/ })
|
|
288036
288205
|
|
|
288037
288206
|
/******/ });
|
|
@@ -288140,210 +288309,210 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
288140
288309
|
/* harmony export */ Precise: () => (/* reexport safe */ _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_154__.O),
|
|
288141
288310
|
/* harmony export */ RateLimitExceeded: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_156__.RateLimitExceeded),
|
|
288142
288311
|
/* harmony export */ RequestTimeout: () => (/* reexport safe */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_156__.RequestTimeout),
|
|
288143
|
-
/* harmony export */ ace: () => (/* reexport safe */
|
|
288144
|
-
/* harmony export */ alpaca: () => (/* reexport safe */
|
|
288145
|
-
/* harmony export */ ascendex: () => (/* reexport safe */
|
|
288146
|
-
/* harmony export */ bequant: () => (/* reexport safe */
|
|
288147
|
-
/* harmony export */ bigone: () => (/* reexport safe */
|
|
288148
|
-
/* harmony export */ binance: () => (/* reexport safe */
|
|
288149
|
-
/* harmony export */ binancecoinm: () => (/* reexport safe */
|
|
288150
|
-
/* harmony export */ binanceus: () => (/* reexport safe */
|
|
288151
|
-
/* harmony export */ binanceusdm: () => (/* reexport safe */
|
|
288152
|
-
/* harmony export */ bingx: () => (/* reexport safe */
|
|
288153
|
-
/* harmony export */ bit2c: () => (/* reexport safe */
|
|
288154
|
-
/* harmony export */ bitbank: () => (/* reexport safe */
|
|
288155
|
-
/* harmony export */ bitbay: () => (/* reexport safe */
|
|
288156
|
-
/* harmony export */ bitbns: () => (/* reexport safe */
|
|
288157
|
-
/* harmony export */ bitcoincom: () => (/* reexport safe */
|
|
288158
|
-
/* harmony export */ bitfinex: () => (/* reexport safe */
|
|
288159
|
-
/* harmony export */ bitfinex2: () => (/* reexport safe */
|
|
288160
|
-
/* harmony export */ bitflyer: () => (/* reexport safe */
|
|
288161
|
-
/* harmony export */ bitforex: () => (/* reexport safe */
|
|
288162
|
-
/* harmony export */ bitget: () => (/* reexport safe */
|
|
288163
|
-
/* harmony export */ bithumb: () => (/* reexport safe */
|
|
288164
|
-
/* harmony export */ bitmart: () => (/* reexport safe */
|
|
288165
|
-
/* harmony export */ bitmex: () => (/* reexport safe */
|
|
288166
|
-
/* harmony export */ bitopro: () => (/* reexport safe */
|
|
288167
|
-
/* harmony export */ bitpanda: () => (/* reexport safe */
|
|
288168
|
-
/* harmony export */ bitrue: () => (/* reexport safe */
|
|
288169
|
-
/* harmony export */ bitso: () => (/* reexport safe */
|
|
288170
|
-
/* harmony export */ bitstamp: () => (/* reexport safe */
|
|
288171
|
-
/* harmony export */ bitvavo: () => (/* reexport safe */
|
|
288172
|
-
/* harmony export */ bl3p: () => (/* reexport safe */
|
|
288173
|
-
/* harmony export */ blockchaincom: () => (/* reexport safe */
|
|
288174
|
-
/* harmony export */ btcalpha: () => (/* reexport safe */
|
|
288175
|
-
/* harmony export */ btcbox: () => (/* reexport safe */
|
|
288176
|
-
/* harmony export */ btcmarkets: () => (/* reexport safe */
|
|
288177
|
-
/* harmony export */ btcturk: () => (/* reexport safe */
|
|
288178
|
-
/* harmony export */ bybit: () => (/* reexport safe */
|
|
288179
|
-
/* harmony export */ cex: () => (/* reexport safe */
|
|
288180
|
-
/* harmony export */ coinbase: () => (/* reexport safe */
|
|
288181
|
-
/* harmony export */ coinbasepro: () => (/* reexport safe */
|
|
288182
|
-
/* harmony export */ coincheck: () => (/* reexport safe */
|
|
288183
|
-
/* harmony export */ coinex: () => (/* reexport safe */
|
|
288184
|
-
/* harmony export */ coinlist: () => (/* reexport safe */
|
|
288185
|
-
/* harmony export */ coinmate: () => (/* reexport safe */
|
|
288186
|
-
/* harmony export */ coinone: () => (/* reexport safe */
|
|
288187
|
-
/* harmony export */ coinsph: () => (/* reexport safe */
|
|
288188
|
-
/* harmony export */ coinspot: () => (/* reexport safe */
|
|
288189
|
-
/* harmony export */ cryptocom: () => (/* reexport safe */
|
|
288190
|
-
/* harmony export */ currencycom: () => (/* reexport safe */
|
|
288312
|
+
/* harmony export */ ace: () => (/* reexport safe */ _src_ace_js__WEBPACK_IMPORTED_MODULE_2__.Z),
|
|
288313
|
+
/* harmony export */ alpaca: () => (/* reexport safe */ _src_alpaca_js__WEBPACK_IMPORTED_MODULE_3__.Z),
|
|
288314
|
+
/* harmony export */ ascendex: () => (/* reexport safe */ _src_ascendex_js__WEBPACK_IMPORTED_MODULE_4__.Z),
|
|
288315
|
+
/* harmony export */ bequant: () => (/* reexport safe */ _src_bequant_js__WEBPACK_IMPORTED_MODULE_5__.Z),
|
|
288316
|
+
/* harmony export */ bigone: () => (/* reexport safe */ _src_bigone_js__WEBPACK_IMPORTED_MODULE_6__.Z),
|
|
288317
|
+
/* harmony export */ binance: () => (/* reexport safe */ _src_binance_js__WEBPACK_IMPORTED_MODULE_7__.Z),
|
|
288318
|
+
/* harmony export */ binancecoinm: () => (/* reexport safe */ _src_binancecoinm_js__WEBPACK_IMPORTED_MODULE_8__.Z),
|
|
288319
|
+
/* harmony export */ binanceus: () => (/* reexport safe */ _src_binanceus_js__WEBPACK_IMPORTED_MODULE_9__.Z),
|
|
288320
|
+
/* harmony export */ binanceusdm: () => (/* reexport safe */ _src_binanceusdm_js__WEBPACK_IMPORTED_MODULE_10__.Z),
|
|
288321
|
+
/* harmony export */ bingx: () => (/* reexport safe */ _src_bingx_js__WEBPACK_IMPORTED_MODULE_11__.Z),
|
|
288322
|
+
/* harmony export */ bit2c: () => (/* reexport safe */ _src_bit2c_js__WEBPACK_IMPORTED_MODULE_12__.Z),
|
|
288323
|
+
/* harmony export */ bitbank: () => (/* reexport safe */ _src_bitbank_js__WEBPACK_IMPORTED_MODULE_13__.Z),
|
|
288324
|
+
/* harmony export */ bitbay: () => (/* reexport safe */ _src_bitbay_js__WEBPACK_IMPORTED_MODULE_14__.Z),
|
|
288325
|
+
/* harmony export */ bitbns: () => (/* reexport safe */ _src_bitbns_js__WEBPACK_IMPORTED_MODULE_15__.Z),
|
|
288326
|
+
/* harmony export */ bitcoincom: () => (/* reexport safe */ _src_bitcoincom_js__WEBPACK_IMPORTED_MODULE_16__.Z),
|
|
288327
|
+
/* harmony export */ bitfinex: () => (/* reexport safe */ _src_bitfinex_js__WEBPACK_IMPORTED_MODULE_17__.Z),
|
|
288328
|
+
/* harmony export */ bitfinex2: () => (/* reexport safe */ _src_bitfinex2_js__WEBPACK_IMPORTED_MODULE_18__.Z),
|
|
288329
|
+
/* harmony export */ bitflyer: () => (/* reexport safe */ _src_bitflyer_js__WEBPACK_IMPORTED_MODULE_19__.Z),
|
|
288330
|
+
/* harmony export */ bitforex: () => (/* reexport safe */ _src_bitforex_js__WEBPACK_IMPORTED_MODULE_20__.Z),
|
|
288331
|
+
/* harmony export */ bitget: () => (/* reexport safe */ _src_bitget_js__WEBPACK_IMPORTED_MODULE_21__.Z),
|
|
288332
|
+
/* harmony export */ bithumb: () => (/* reexport safe */ _src_bithumb_js__WEBPACK_IMPORTED_MODULE_22__.Z),
|
|
288333
|
+
/* harmony export */ bitmart: () => (/* reexport safe */ _src_bitmart_js__WEBPACK_IMPORTED_MODULE_23__.Z),
|
|
288334
|
+
/* harmony export */ bitmex: () => (/* reexport safe */ _src_bitmex_js__WEBPACK_IMPORTED_MODULE_24__.Z),
|
|
288335
|
+
/* harmony export */ bitopro: () => (/* reexport safe */ _src_bitopro_js__WEBPACK_IMPORTED_MODULE_25__.Z),
|
|
288336
|
+
/* harmony export */ bitpanda: () => (/* reexport safe */ _src_bitpanda_js__WEBPACK_IMPORTED_MODULE_26__.Z),
|
|
288337
|
+
/* harmony export */ bitrue: () => (/* reexport safe */ _src_bitrue_js__WEBPACK_IMPORTED_MODULE_27__.Z),
|
|
288338
|
+
/* harmony export */ bitso: () => (/* reexport safe */ _src_bitso_js__WEBPACK_IMPORTED_MODULE_28__.Z),
|
|
288339
|
+
/* harmony export */ bitstamp: () => (/* reexport safe */ _src_bitstamp_js__WEBPACK_IMPORTED_MODULE_29__.Z),
|
|
288340
|
+
/* harmony export */ bitvavo: () => (/* reexport safe */ _src_bitvavo_js__WEBPACK_IMPORTED_MODULE_30__.Z),
|
|
288341
|
+
/* harmony export */ bl3p: () => (/* reexport safe */ _src_bl3p_js__WEBPACK_IMPORTED_MODULE_31__.Z),
|
|
288342
|
+
/* harmony export */ blockchaincom: () => (/* reexport safe */ _src_blockchaincom_js__WEBPACK_IMPORTED_MODULE_32__.Z),
|
|
288343
|
+
/* harmony export */ btcalpha: () => (/* reexport safe */ _src_btcalpha_js__WEBPACK_IMPORTED_MODULE_33__.Z),
|
|
288344
|
+
/* harmony export */ btcbox: () => (/* reexport safe */ _src_btcbox_js__WEBPACK_IMPORTED_MODULE_34__.Z),
|
|
288345
|
+
/* harmony export */ btcmarkets: () => (/* reexport safe */ _src_btcmarkets_js__WEBPACK_IMPORTED_MODULE_35__.Z),
|
|
288346
|
+
/* harmony export */ btcturk: () => (/* reexport safe */ _src_btcturk_js__WEBPACK_IMPORTED_MODULE_36__.Z),
|
|
288347
|
+
/* harmony export */ bybit: () => (/* reexport safe */ _src_bybit_js__WEBPACK_IMPORTED_MODULE_37__.Z),
|
|
288348
|
+
/* harmony export */ cex: () => (/* reexport safe */ _src_cex_js__WEBPACK_IMPORTED_MODULE_38__.Z),
|
|
288349
|
+
/* harmony export */ coinbase: () => (/* reexport safe */ _src_coinbase_js__WEBPACK_IMPORTED_MODULE_39__.Z),
|
|
288350
|
+
/* harmony export */ coinbasepro: () => (/* reexport safe */ _src_coinbasepro_js__WEBPACK_IMPORTED_MODULE_40__.Z),
|
|
288351
|
+
/* harmony export */ coincheck: () => (/* reexport safe */ _src_coincheck_js__WEBPACK_IMPORTED_MODULE_41__.Z),
|
|
288352
|
+
/* harmony export */ coinex: () => (/* reexport safe */ _src_coinex_js__WEBPACK_IMPORTED_MODULE_42__.Z),
|
|
288353
|
+
/* harmony export */ coinlist: () => (/* reexport safe */ _src_coinlist_js__WEBPACK_IMPORTED_MODULE_43__.Z),
|
|
288354
|
+
/* harmony export */ coinmate: () => (/* reexport safe */ _src_coinmate_js__WEBPACK_IMPORTED_MODULE_44__.Z),
|
|
288355
|
+
/* harmony export */ coinone: () => (/* reexport safe */ _src_coinone_js__WEBPACK_IMPORTED_MODULE_45__.Z),
|
|
288356
|
+
/* harmony export */ coinsph: () => (/* reexport safe */ _src_coinsph_js__WEBPACK_IMPORTED_MODULE_46__.Z),
|
|
288357
|
+
/* harmony export */ coinspot: () => (/* reexport safe */ _src_coinspot_js__WEBPACK_IMPORTED_MODULE_47__.Z),
|
|
288358
|
+
/* harmony export */ cryptocom: () => (/* reexport safe */ _src_cryptocom_js__WEBPACK_IMPORTED_MODULE_48__.Z),
|
|
288359
|
+
/* harmony export */ currencycom: () => (/* reexport safe */ _src_currencycom_js__WEBPACK_IMPORTED_MODULE_49__.Z),
|
|
288191
288360
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__),
|
|
288192
|
-
/* harmony export */ delta: () => (/* reexport safe */
|
|
288193
|
-
/* harmony export */ deribit: () => (/* reexport safe */
|
|
288194
|
-
/* harmony export */ digifinex: () => (/* reexport safe */
|
|
288361
|
+
/* harmony export */ delta: () => (/* reexport safe */ _src_delta_js__WEBPACK_IMPORTED_MODULE_50__.Z),
|
|
288362
|
+
/* harmony export */ deribit: () => (/* reexport safe */ _src_deribit_js__WEBPACK_IMPORTED_MODULE_51__.Z),
|
|
288363
|
+
/* harmony export */ digifinex: () => (/* reexport safe */ _src_digifinex_js__WEBPACK_IMPORTED_MODULE_52__.Z),
|
|
288195
288364
|
/* harmony export */ errors: () => (/* reexport module object */ _src_base_errors_js__WEBPACK_IMPORTED_MODULE_156__),
|
|
288196
288365
|
/* harmony export */ exchanges: () => (/* binding */ exchanges),
|
|
288197
|
-
/* harmony export */ exmo: () => (/* reexport safe */
|
|
288198
|
-
/* harmony export */ fmfwio: () => (/* reexport safe */
|
|
288366
|
+
/* harmony export */ exmo: () => (/* reexport safe */ _src_exmo_js__WEBPACK_IMPORTED_MODULE_53__.Z),
|
|
288367
|
+
/* harmony export */ fmfwio: () => (/* reexport safe */ _src_fmfwio_js__WEBPACK_IMPORTED_MODULE_54__.Z),
|
|
288199
288368
|
/* harmony export */ functions: () => (/* reexport module object */ _src_base_functions_js__WEBPACK_IMPORTED_MODULE_155__),
|
|
288200
|
-
/* harmony export */ gate: () => (/* reexport safe */
|
|
288201
|
-
/* harmony export */ gateio: () => (/* reexport safe */
|
|
288202
|
-
/* harmony export */ gemini: () => (/* reexport safe */
|
|
288203
|
-
/* harmony export */ hitbtc: () => (/* reexport safe */
|
|
288204
|
-
/* harmony export */ hitbtc3: () => (/* reexport safe */
|
|
288205
|
-
/* harmony export */ hollaex: () => (/* reexport safe */
|
|
288206
|
-
/* harmony export */ htx: () => (/* reexport safe */
|
|
288207
|
-
/* harmony export */ huobi: () => (/* reexport safe */
|
|
288208
|
-
/* harmony export */ huobijp: () => (/* reexport safe */
|
|
288209
|
-
/* harmony export */ idex: () => (/* reexport safe */
|
|
288210
|
-
/* harmony export */ independentreserve: () => (/* reexport safe */
|
|
288211
|
-
/* harmony export */ indodax: () => (/* reexport safe */
|
|
288212
|
-
/* harmony export */ kraken: () => (/* reexport safe */
|
|
288213
|
-
/* harmony export */ krakenfutures: () => (/* reexport safe */
|
|
288214
|
-
/* harmony export */ kucoin: () => (/* reexport safe */
|
|
288215
|
-
/* harmony export */ kucoinfutures: () => (/* reexport safe */
|
|
288216
|
-
/* harmony export */ kuna: () => (/* reexport safe */
|
|
288217
|
-
/* harmony export */ latoken: () => (/* reexport safe */
|
|
288218
|
-
/* harmony export */ lbank: () => (/* reexport safe */
|
|
288219
|
-
/* harmony export */ luno: () => (/* reexport safe */
|
|
288220
|
-
/* harmony export */ lykke: () => (/* reexport safe */
|
|
288221
|
-
/* harmony export */ mercado: () => (/* reexport safe */
|
|
288222
|
-
/* harmony export */ mexc: () => (/* reexport safe */
|
|
288223
|
-
/* harmony export */ ndax: () => (/* reexport safe */
|
|
288224
|
-
/* harmony export */ novadax: () => (/* reexport safe */
|
|
288225
|
-
/* harmony export */ oceanex: () => (/* reexport safe */
|
|
288226
|
-
/* harmony export */ okcoin: () => (/* reexport safe */
|
|
288227
|
-
/* harmony export */ okx: () => (/* reexport safe */
|
|
288228
|
-
/* harmony export */ p2b: () => (/* reexport safe */
|
|
288229
|
-
/* harmony export */ paymium: () => (/* reexport safe */
|
|
288230
|
-
/* harmony export */ phemex: () => (/* reexport safe */
|
|
288231
|
-
/* harmony export */ poloniex: () => (/* reexport safe */
|
|
288232
|
-
/* harmony export */ poloniexfutures: () => (/* reexport safe */
|
|
288369
|
+
/* harmony export */ gate: () => (/* reexport safe */ _src_gate_js__WEBPACK_IMPORTED_MODULE_55__.Z),
|
|
288370
|
+
/* harmony export */ gateio: () => (/* reexport safe */ _src_gateio_js__WEBPACK_IMPORTED_MODULE_56__.Z),
|
|
288371
|
+
/* harmony export */ gemini: () => (/* reexport safe */ _src_gemini_js__WEBPACK_IMPORTED_MODULE_57__.Z),
|
|
288372
|
+
/* harmony export */ hitbtc: () => (/* reexport safe */ _src_hitbtc_js__WEBPACK_IMPORTED_MODULE_58__.Z),
|
|
288373
|
+
/* harmony export */ hitbtc3: () => (/* reexport safe */ _src_hitbtc3_js__WEBPACK_IMPORTED_MODULE_59__.Z),
|
|
288374
|
+
/* harmony export */ hollaex: () => (/* reexport safe */ _src_hollaex_js__WEBPACK_IMPORTED_MODULE_60__.Z),
|
|
288375
|
+
/* harmony export */ htx: () => (/* reexport safe */ _src_htx_js__WEBPACK_IMPORTED_MODULE_61__.Z),
|
|
288376
|
+
/* harmony export */ huobi: () => (/* reexport safe */ _src_huobi_js__WEBPACK_IMPORTED_MODULE_62__.Z),
|
|
288377
|
+
/* harmony export */ huobijp: () => (/* reexport safe */ _src_huobijp_js__WEBPACK_IMPORTED_MODULE_63__.Z),
|
|
288378
|
+
/* harmony export */ idex: () => (/* reexport safe */ _src_idex_js__WEBPACK_IMPORTED_MODULE_64__.Z),
|
|
288379
|
+
/* harmony export */ independentreserve: () => (/* reexport safe */ _src_independentreserve_js__WEBPACK_IMPORTED_MODULE_65__.Z),
|
|
288380
|
+
/* harmony export */ indodax: () => (/* reexport safe */ _src_indodax_js__WEBPACK_IMPORTED_MODULE_66__.Z),
|
|
288381
|
+
/* harmony export */ kraken: () => (/* reexport safe */ _src_kraken_js__WEBPACK_IMPORTED_MODULE_67__.Z),
|
|
288382
|
+
/* harmony export */ krakenfutures: () => (/* reexport safe */ _src_krakenfutures_js__WEBPACK_IMPORTED_MODULE_68__.Z),
|
|
288383
|
+
/* harmony export */ kucoin: () => (/* reexport safe */ _src_kucoin_js__WEBPACK_IMPORTED_MODULE_69__.Z),
|
|
288384
|
+
/* harmony export */ kucoinfutures: () => (/* reexport safe */ _src_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_70__.Z),
|
|
288385
|
+
/* harmony export */ kuna: () => (/* reexport safe */ _src_kuna_js__WEBPACK_IMPORTED_MODULE_71__.Z),
|
|
288386
|
+
/* harmony export */ latoken: () => (/* reexport safe */ _src_latoken_js__WEBPACK_IMPORTED_MODULE_72__.Z),
|
|
288387
|
+
/* harmony export */ lbank: () => (/* reexport safe */ _src_lbank_js__WEBPACK_IMPORTED_MODULE_73__.Z),
|
|
288388
|
+
/* harmony export */ luno: () => (/* reexport safe */ _src_luno_js__WEBPACK_IMPORTED_MODULE_74__.Z),
|
|
288389
|
+
/* harmony export */ lykke: () => (/* reexport safe */ _src_lykke_js__WEBPACK_IMPORTED_MODULE_75__.Z),
|
|
288390
|
+
/* harmony export */ mercado: () => (/* reexport safe */ _src_mercado_js__WEBPACK_IMPORTED_MODULE_76__.Z),
|
|
288391
|
+
/* harmony export */ mexc: () => (/* reexport safe */ _src_mexc_js__WEBPACK_IMPORTED_MODULE_77__.Z),
|
|
288392
|
+
/* harmony export */ ndax: () => (/* reexport safe */ _src_ndax_js__WEBPACK_IMPORTED_MODULE_78__.Z),
|
|
288393
|
+
/* harmony export */ novadax: () => (/* reexport safe */ _src_novadax_js__WEBPACK_IMPORTED_MODULE_79__.Z),
|
|
288394
|
+
/* harmony export */ oceanex: () => (/* reexport safe */ _src_oceanex_js__WEBPACK_IMPORTED_MODULE_80__.Z),
|
|
288395
|
+
/* harmony export */ okcoin: () => (/* reexport safe */ _src_okcoin_js__WEBPACK_IMPORTED_MODULE_81__.Z),
|
|
288396
|
+
/* harmony export */ okx: () => (/* reexport safe */ _src_okx_js__WEBPACK_IMPORTED_MODULE_82__.Z),
|
|
288397
|
+
/* harmony export */ p2b: () => (/* reexport safe */ _src_p2b_js__WEBPACK_IMPORTED_MODULE_83__.Z),
|
|
288398
|
+
/* harmony export */ paymium: () => (/* reexport safe */ _src_paymium_js__WEBPACK_IMPORTED_MODULE_84__.Z),
|
|
288399
|
+
/* harmony export */ phemex: () => (/* reexport safe */ _src_phemex_js__WEBPACK_IMPORTED_MODULE_85__.Z),
|
|
288400
|
+
/* harmony export */ poloniex: () => (/* reexport safe */ _src_poloniex_js__WEBPACK_IMPORTED_MODULE_86__.Z),
|
|
288401
|
+
/* harmony export */ poloniexfutures: () => (/* reexport safe */ _src_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_87__.Z),
|
|
288233
288402
|
/* harmony export */ pro: () => (/* binding */ pro),
|
|
288234
|
-
/* harmony export */ probit: () => (/* reexport safe */
|
|
288235
|
-
/* harmony export */ timex: () => (/* reexport safe */
|
|
288236
|
-
/* harmony export */ tokocrypto: () => (/* reexport safe */
|
|
288237
|
-
/* harmony export */ upbit: () => (/* reexport safe */
|
|
288403
|
+
/* harmony export */ probit: () => (/* reexport safe */ _src_probit_js__WEBPACK_IMPORTED_MODULE_88__.Z),
|
|
288404
|
+
/* harmony export */ timex: () => (/* reexport safe */ _src_timex_js__WEBPACK_IMPORTED_MODULE_89__.Z),
|
|
288405
|
+
/* harmony export */ tokocrypto: () => (/* reexport safe */ _src_tokocrypto_js__WEBPACK_IMPORTED_MODULE_90__.Z),
|
|
288406
|
+
/* harmony export */ upbit: () => (/* reexport safe */ _src_upbit_js__WEBPACK_IMPORTED_MODULE_91__.Z),
|
|
288238
288407
|
/* harmony export */ version: () => (/* binding */ version),
|
|
288239
|
-
/* harmony export */ wavesexchange: () => (/* reexport safe */
|
|
288240
|
-
/* harmony export */ wazirx: () => (/* reexport safe */
|
|
288241
|
-
/* harmony export */ whitebit: () => (/* reexport safe */
|
|
288242
|
-
/* harmony export */ woo: () => (/* reexport safe */
|
|
288243
|
-
/* harmony export */ yobit: () => (/* reexport safe */
|
|
288244
|
-
/* harmony export */ zaif: () => (/* reexport safe */
|
|
288408
|
+
/* harmony export */ wavesexchange: () => (/* reexport safe */ _src_wavesexchange_js__WEBPACK_IMPORTED_MODULE_92__.Z),
|
|
288409
|
+
/* harmony export */ wazirx: () => (/* reexport safe */ _src_wazirx_js__WEBPACK_IMPORTED_MODULE_93__.Z),
|
|
288410
|
+
/* harmony export */ whitebit: () => (/* reexport safe */ _src_whitebit_js__WEBPACK_IMPORTED_MODULE_94__.Z),
|
|
288411
|
+
/* harmony export */ woo: () => (/* reexport safe */ _src_woo_js__WEBPACK_IMPORTED_MODULE_95__.Z),
|
|
288412
|
+
/* harmony export */ yobit: () => (/* reexport safe */ _src_yobit_js__WEBPACK_IMPORTED_MODULE_96__.Z),
|
|
288413
|
+
/* harmony export */ zaif: () => (/* reexport safe */ _src_zaif_js__WEBPACK_IMPORTED_MODULE_1__.Z),
|
|
288245
288414
|
/* harmony export */ zonda: () => (/* reexport safe */ _src_zonda_js__WEBPACK_IMPORTED_MODULE_97__.Z)
|
|
288246
288415
|
/* harmony export */ });
|
|
288247
288416
|
/* harmony import */ var _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3043);
|
|
288248
288417
|
/* harmony import */ var _src_base_Precise_js__WEBPACK_IMPORTED_MODULE_154__ = __webpack_require__(2194);
|
|
288249
288418
|
/* harmony import */ var _src_base_functions_js__WEBPACK_IMPORTED_MODULE_155__ = __webpack_require__(7100);
|
|
288250
288419
|
/* harmony import */ var _src_base_errors_js__WEBPACK_IMPORTED_MODULE_156__ = __webpack_require__(6689);
|
|
288251
|
-
/* harmony import */ var
|
|
288252
|
-
/* harmony import */ var
|
|
288253
|
-
/* harmony import */ var
|
|
288254
|
-
/* harmony import */ var
|
|
288255
|
-
/* harmony import */ var
|
|
288256
|
-
/* harmony import */ var
|
|
288257
|
-
/* harmony import */ var
|
|
288258
|
-
/* harmony import */ var
|
|
288259
|
-
/* harmony import */ var
|
|
288260
|
-
/* harmony import */ var
|
|
288261
|
-
/* harmony import */ var
|
|
288262
|
-
/* harmony import */ var
|
|
288263
|
-
/* harmony import */ var
|
|
288264
|
-
/* harmony import */ var
|
|
288265
|
-
/* harmony import */ var
|
|
288266
|
-
/* harmony import */ var
|
|
288267
|
-
/* harmony import */ var
|
|
288268
|
-
/* harmony import */ var
|
|
288269
|
-
/* harmony import */ var
|
|
288270
|
-
/* harmony import */ var
|
|
288271
|
-
/* harmony import */ var
|
|
288272
|
-
/* harmony import */ var
|
|
288273
|
-
/* harmony import */ var
|
|
288274
|
-
/* harmony import */ var
|
|
288275
|
-
/* harmony import */ var
|
|
288276
|
-
/* harmony import */ var
|
|
288277
|
-
/* harmony import */ var
|
|
288278
|
-
/* harmony import */ var
|
|
288279
|
-
/* harmony import */ var
|
|
288280
|
-
/* harmony import */ var
|
|
288281
|
-
/* harmony import */ var
|
|
288282
|
-
/* harmony import */ var
|
|
288283
|
-
/* harmony import */ var
|
|
288284
|
-
/* harmony import */ var
|
|
288285
|
-
/* harmony import */ var
|
|
288286
|
-
/* harmony import */ var
|
|
288287
|
-
/* harmony import */ var
|
|
288288
|
-
/* harmony import */ var
|
|
288289
|
-
/* harmony import */ var
|
|
288290
|
-
/* harmony import */ var
|
|
288291
|
-
/* harmony import */ var
|
|
288292
|
-
/* harmony import */ var
|
|
288293
|
-
/* harmony import */ var
|
|
288294
|
-
/* harmony import */ var
|
|
288295
|
-
/* harmony import */ var
|
|
288296
|
-
/* harmony import */ var
|
|
288297
|
-
/* harmony import */ var
|
|
288298
|
-
/* harmony import */ var
|
|
288299
|
-
/* harmony import */ var
|
|
288300
|
-
/* harmony import */ var
|
|
288301
|
-
/* harmony import */ var
|
|
288302
|
-
/* harmony import */ var
|
|
288303
|
-
/* harmony import */ var
|
|
288304
|
-
/* harmony import */ var
|
|
288305
|
-
/* harmony import */ var
|
|
288306
|
-
/* harmony import */ var
|
|
288307
|
-
/* harmony import */ var
|
|
288308
|
-
/* harmony import */ var
|
|
288309
|
-
/* harmony import */ var
|
|
288310
|
-
/* harmony import */ var
|
|
288311
|
-
/* harmony import */ var
|
|
288312
|
-
/* harmony import */ var
|
|
288313
|
-
/* harmony import */ var
|
|
288314
|
-
/* harmony import */ var
|
|
288315
|
-
/* harmony import */ var
|
|
288316
|
-
/* harmony import */ var
|
|
288317
|
-
/* harmony import */ var
|
|
288318
|
-
/* harmony import */ var
|
|
288319
|
-
/* harmony import */ var
|
|
288320
|
-
/* harmony import */ var
|
|
288321
|
-
/* harmony import */ var
|
|
288322
|
-
/* harmony import */ var
|
|
288323
|
-
/* harmony import */ var
|
|
288324
|
-
/* harmony import */ var
|
|
288325
|
-
/* harmony import */ var
|
|
288326
|
-
/* harmony import */ var
|
|
288327
|
-
/* harmony import */ var
|
|
288328
|
-
/* harmony import */ var
|
|
288329
|
-
/* harmony import */ var
|
|
288330
|
-
/* harmony import */ var
|
|
288331
|
-
/* harmony import */ var
|
|
288332
|
-
/* harmony import */ var
|
|
288333
|
-
/* harmony import */ var
|
|
288334
|
-
/* harmony import */ var
|
|
288335
|
-
/* harmony import */ var
|
|
288336
|
-
/* harmony import */ var
|
|
288337
|
-
/* harmony import */ var
|
|
288338
|
-
/* harmony import */ var
|
|
288339
|
-
/* harmony import */ var
|
|
288340
|
-
/* harmony import */ var
|
|
288341
|
-
/* harmony import */ var
|
|
288342
|
-
/* harmony import */ var
|
|
288343
|
-
/* harmony import */ var
|
|
288344
|
-
/* harmony import */ var
|
|
288345
|
-
/* harmony import */ var
|
|
288346
|
-
/* harmony import */ var
|
|
288420
|
+
/* harmony import */ var _src_ace_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9869);
|
|
288421
|
+
/* harmony import */ var _src_alpaca_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(5660);
|
|
288422
|
+
/* harmony import */ var _src_ascendex_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(9612);
|
|
288423
|
+
/* harmony import */ var _src_bequant_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(2049);
|
|
288424
|
+
/* harmony import */ var _src_bigone_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(7679);
|
|
288425
|
+
/* harmony import */ var _src_binance_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(9987);
|
|
288426
|
+
/* harmony import */ var _src_binancecoinm_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(9212);
|
|
288427
|
+
/* harmony import */ var _src_binanceus_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(2723);
|
|
288428
|
+
/* harmony import */ var _src_binanceusdm_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(3254);
|
|
288429
|
+
/* harmony import */ var _src_bingx_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(7960);
|
|
288430
|
+
/* harmony import */ var _src_bit2c_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(7691);
|
|
288431
|
+
/* harmony import */ var _src_bitbank_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(7820);
|
|
288432
|
+
/* harmony import */ var _src_bitbay_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(668);
|
|
288433
|
+
/* harmony import */ var _src_bitbns_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(7790);
|
|
288434
|
+
/* harmony import */ var _src_bitcoincom_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(1819);
|
|
288435
|
+
/* harmony import */ var _src_bitfinex_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(6537);
|
|
288436
|
+
/* harmony import */ var _src_bitfinex2_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(730);
|
|
288437
|
+
/* harmony import */ var _src_bitflyer_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(8429);
|
|
288438
|
+
/* harmony import */ var _src_bitforex_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(2035);
|
|
288439
|
+
/* harmony import */ var _src_bitget_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(9051);
|
|
288440
|
+
/* harmony import */ var _src_bithumb_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(5305);
|
|
288441
|
+
/* harmony import */ var _src_bitmart_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(3718);
|
|
288442
|
+
/* harmony import */ var _src_bitmex_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(7077);
|
|
288443
|
+
/* harmony import */ var _src_bitopro_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(172);
|
|
288444
|
+
/* harmony import */ var _src_bitpanda_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(2737);
|
|
288445
|
+
/* harmony import */ var _src_bitrue_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(854);
|
|
288446
|
+
/* harmony import */ var _src_bitso_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(4388);
|
|
288447
|
+
/* harmony import */ var _src_bitstamp_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(4667);
|
|
288448
|
+
/* harmony import */ var _src_bitvavo_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(9943);
|
|
288449
|
+
/* harmony import */ var _src_bl3p_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(9476);
|
|
288450
|
+
/* harmony import */ var _src_blockchaincom_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(182);
|
|
288451
|
+
/* harmony import */ var _src_btcalpha_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(6246);
|
|
288452
|
+
/* harmony import */ var _src_btcbox_js__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(7796);
|
|
288453
|
+
/* harmony import */ var _src_btcmarkets_js__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(1776);
|
|
288454
|
+
/* harmony import */ var _src_btcturk_js__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(6304);
|
|
288455
|
+
/* harmony import */ var _src_bybit_js__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(3527);
|
|
288456
|
+
/* harmony import */ var _src_cex_js__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(6445);
|
|
288457
|
+
/* harmony import */ var _src_coinbase_js__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(437);
|
|
288458
|
+
/* harmony import */ var _src_coinbasepro_js__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(8856);
|
|
288459
|
+
/* harmony import */ var _src_coincheck_js__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(2117);
|
|
288460
|
+
/* harmony import */ var _src_coinex_js__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(332);
|
|
288461
|
+
/* harmony import */ var _src_coinlist_js__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(3623);
|
|
288462
|
+
/* harmony import */ var _src_coinmate_js__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(9816);
|
|
288463
|
+
/* harmony import */ var _src_coinone_js__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(7811);
|
|
288464
|
+
/* harmony import */ var _src_coinsph_js__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(5782);
|
|
288465
|
+
/* harmony import */ var _src_coinspot_js__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(7794);
|
|
288466
|
+
/* harmony import */ var _src_cryptocom_js__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(9129);
|
|
288467
|
+
/* harmony import */ var _src_currencycom_js__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(3214);
|
|
288468
|
+
/* harmony import */ var _src_delta_js__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(1753);
|
|
288469
|
+
/* harmony import */ var _src_deribit_js__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(24);
|
|
288470
|
+
/* harmony import */ var _src_digifinex_js__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(8846);
|
|
288471
|
+
/* harmony import */ var _src_exmo_js__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(1729);
|
|
288472
|
+
/* harmony import */ var _src_fmfwio_js__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(5788);
|
|
288473
|
+
/* harmony import */ var _src_gate_js__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(7290);
|
|
288474
|
+
/* harmony import */ var _src_gateio_js__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(7036);
|
|
288475
|
+
/* harmony import */ var _src_gemini_js__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(6743);
|
|
288476
|
+
/* harmony import */ var _src_hitbtc_js__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(4714);
|
|
288477
|
+
/* harmony import */ var _src_hitbtc3_js__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(4815);
|
|
288478
|
+
/* harmony import */ var _src_hollaex_js__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(8422);
|
|
288479
|
+
/* harmony import */ var _src_htx_js__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(5939);
|
|
288480
|
+
/* harmony import */ var _src_huobi_js__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(8146);
|
|
288481
|
+
/* harmony import */ var _src_huobijp_js__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(7034);
|
|
288482
|
+
/* harmony import */ var _src_idex_js__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(8232);
|
|
288483
|
+
/* harmony import */ var _src_independentreserve_js__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(9570);
|
|
288484
|
+
/* harmony import */ var _src_indodax_js__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(1605);
|
|
288485
|
+
/* harmony import */ var _src_kraken_js__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(9922);
|
|
288486
|
+
/* harmony import */ var _src_krakenfutures_js__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(4470);
|
|
288487
|
+
/* harmony import */ var _src_kucoin_js__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(3583);
|
|
288488
|
+
/* harmony import */ var _src_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(1924);
|
|
288489
|
+
/* harmony import */ var _src_kuna_js__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(7732);
|
|
288490
|
+
/* harmony import */ var _src_latoken_js__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(2545);
|
|
288491
|
+
/* harmony import */ var _src_lbank_js__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(3944);
|
|
288492
|
+
/* harmony import */ var _src_luno_js__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(1758);
|
|
288493
|
+
/* harmony import */ var _src_lykke_js__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(3803);
|
|
288494
|
+
/* harmony import */ var _src_mercado_js__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(9013);
|
|
288495
|
+
/* harmony import */ var _src_mexc_js__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(6641);
|
|
288496
|
+
/* harmony import */ var _src_ndax_js__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(4531);
|
|
288497
|
+
/* harmony import */ var _src_novadax_js__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(2449);
|
|
288498
|
+
/* harmony import */ var _src_oceanex_js__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(6749);
|
|
288499
|
+
/* harmony import */ var _src_okcoin_js__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(3007);
|
|
288500
|
+
/* harmony import */ var _src_okx_js__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(4042);
|
|
288501
|
+
/* harmony import */ var _src_p2b_js__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(2466);
|
|
288502
|
+
/* harmony import */ var _src_paymium_js__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(7082);
|
|
288503
|
+
/* harmony import */ var _src_phemex_js__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(79);
|
|
288504
|
+
/* harmony import */ var _src_poloniex_js__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(8891);
|
|
288505
|
+
/* harmony import */ var _src_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(6877);
|
|
288506
|
+
/* harmony import */ var _src_probit_js__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(3657);
|
|
288507
|
+
/* harmony import */ var _src_timex_js__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(1067);
|
|
288508
|
+
/* harmony import */ var _src_tokocrypto_js__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(5261);
|
|
288509
|
+
/* harmony import */ var _src_upbit_js__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(7584);
|
|
288510
|
+
/* harmony import */ var _src_wavesexchange_js__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(3853);
|
|
288511
|
+
/* harmony import */ var _src_wazirx_js__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(6536);
|
|
288512
|
+
/* harmony import */ var _src_whitebit_js__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(5467);
|
|
288513
|
+
/* harmony import */ var _src_woo_js__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(517);
|
|
288514
|
+
/* harmony import */ var _src_yobit_js__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(3850);
|
|
288515
|
+
/* harmony import */ var _src_zaif_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7558);
|
|
288347
288516
|
/* harmony import */ var _src_zonda_js__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__(5140);
|
|
288348
288517
|
/* harmony import */ var _src_pro_alpaca_js__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__(2467);
|
|
288349
288518
|
/* harmony import */ var _src_pro_ascendex_js__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__(2383);
|
|
@@ -288435,7 +288604,7 @@ SOFTWARE.
|
|
|
288435
288604
|
|
|
288436
288605
|
//-----------------------------------------------------------------------------
|
|
288437
288606
|
// this is updated by vss.js when building
|
|
288438
|
-
const version = '4.1.
|
|
288607
|
+
const version = '4.1.97';
|
|
288439
288608
|
_src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e.ccxtVersion = version;
|
|
288440
288609
|
//-----------------------------------------------------------------------------
|
|
288441
288610
|
|
|
@@ -288593,102 +288762,102 @@ _src_base_Exchange_js__WEBPACK_IMPORTED_MODULE_0__/* .Exchange */ .e.ccxtVersion
|
|
|
288593
288762
|
|
|
288594
288763
|
|
|
288595
288764
|
const exchanges = {
|
|
288596
|
-
'ace':
|
|
288597
|
-
'alpaca':
|
|
288598
|
-
'ascendex':
|
|
288599
|
-
'bequant':
|
|
288600
|
-
'bigone':
|
|
288601
|
-
'binance':
|
|
288602
|
-
'binancecoinm':
|
|
288603
|
-
'binanceus':
|
|
288604
|
-
'binanceusdm':
|
|
288605
|
-
'bingx':
|
|
288606
|
-
'bit2c':
|
|
288607
|
-
'bitbank':
|
|
288608
|
-
'bitbay':
|
|
288609
|
-
'bitbns':
|
|
288610
|
-
'bitcoincom':
|
|
288611
|
-
'bitfinex':
|
|
288612
|
-
'bitfinex2':
|
|
288613
|
-
'bitflyer':
|
|
288614
|
-
'bitforex':
|
|
288615
|
-
'bitget':
|
|
288616
|
-
'bithumb':
|
|
288617
|
-
'bitmart':
|
|
288618
|
-
'bitmex':
|
|
288619
|
-
'bitopro':
|
|
288620
|
-
'bitpanda':
|
|
288621
|
-
'bitrue':
|
|
288622
|
-
'bitso':
|
|
288623
|
-
'bitstamp':
|
|
288624
|
-
'bitvavo':
|
|
288625
|
-
'bl3p':
|
|
288626
|
-
'blockchaincom':
|
|
288627
|
-
'btcalpha':
|
|
288628
|
-
'btcbox':
|
|
288629
|
-
'btcmarkets':
|
|
288630
|
-
'btcturk':
|
|
288631
|
-
'bybit':
|
|
288632
|
-
'cex':
|
|
288633
|
-
'coinbase':
|
|
288634
|
-
'coinbasepro':
|
|
288635
|
-
'coincheck':
|
|
288636
|
-
'coinex':
|
|
288637
|
-
'coinlist':
|
|
288638
|
-
'coinmate':
|
|
288639
|
-
'coinone':
|
|
288640
|
-
'coinsph':
|
|
288641
|
-
'coinspot':
|
|
288642
|
-
'cryptocom':
|
|
288643
|
-
'currencycom':
|
|
288644
|
-
'delta':
|
|
288645
|
-
'deribit':
|
|
288646
|
-
'digifinex':
|
|
288647
|
-
'exmo':
|
|
288648
|
-
'fmfwio':
|
|
288649
|
-
'gate':
|
|
288650
|
-
'gateio':
|
|
288651
|
-
'gemini':
|
|
288652
|
-
'hitbtc':
|
|
288653
|
-
'hitbtc3':
|
|
288654
|
-
'hollaex':
|
|
288655
|
-
'htx':
|
|
288656
|
-
'huobi':
|
|
288657
|
-
'huobijp':
|
|
288658
|
-
'idex':
|
|
288659
|
-
'independentreserve':
|
|
288660
|
-
'indodax':
|
|
288661
|
-
'kraken':
|
|
288662
|
-
'krakenfutures':
|
|
288663
|
-
'kucoin':
|
|
288664
|
-
'kucoinfutures':
|
|
288665
|
-
'kuna':
|
|
288666
|
-
'latoken':
|
|
288667
|
-
'lbank':
|
|
288668
|
-
'luno':
|
|
288669
|
-
'lykke':
|
|
288670
|
-
'mercado':
|
|
288671
|
-
'mexc':
|
|
288672
|
-
'ndax':
|
|
288673
|
-
'novadax':
|
|
288674
|
-
'oceanex':
|
|
288675
|
-
'okcoin':
|
|
288676
|
-
'okx':
|
|
288677
|
-
'p2b':
|
|
288678
|
-
'paymium':
|
|
288679
|
-
'phemex':
|
|
288680
|
-
'poloniex':
|
|
288681
|
-
'poloniexfutures':
|
|
288682
|
-
'probit':
|
|
288683
|
-
'timex':
|
|
288684
|
-
'tokocrypto':
|
|
288685
|
-
'upbit':
|
|
288686
|
-
'wavesexchange':
|
|
288687
|
-
'wazirx':
|
|
288688
|
-
'whitebit':
|
|
288689
|
-
'woo':
|
|
288690
|
-
'yobit':
|
|
288691
|
-
'zaif':
|
|
288765
|
+
'ace': _src_ace_js__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z,
|
|
288766
|
+
'alpaca': _src_alpaca_js__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z,
|
|
288767
|
+
'ascendex': _src_ascendex_js__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z,
|
|
288768
|
+
'bequant': _src_bequant_js__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z,
|
|
288769
|
+
'bigone': _src_bigone_js__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z,
|
|
288770
|
+
'binance': _src_binance_js__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .Z,
|
|
288771
|
+
'binancecoinm': _src_binancecoinm_js__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .Z,
|
|
288772
|
+
'binanceus': _src_binanceus_js__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .Z,
|
|
288773
|
+
'binanceusdm': _src_binanceusdm_js__WEBPACK_IMPORTED_MODULE_10__/* ["default"] */ .Z,
|
|
288774
|
+
'bingx': _src_bingx_js__WEBPACK_IMPORTED_MODULE_11__/* ["default"] */ .Z,
|
|
288775
|
+
'bit2c': _src_bit2c_js__WEBPACK_IMPORTED_MODULE_12__/* ["default"] */ .Z,
|
|
288776
|
+
'bitbank': _src_bitbank_js__WEBPACK_IMPORTED_MODULE_13__/* ["default"] */ .Z,
|
|
288777
|
+
'bitbay': _src_bitbay_js__WEBPACK_IMPORTED_MODULE_14__/* ["default"] */ .Z,
|
|
288778
|
+
'bitbns': _src_bitbns_js__WEBPACK_IMPORTED_MODULE_15__/* ["default"] */ .Z,
|
|
288779
|
+
'bitcoincom': _src_bitcoincom_js__WEBPACK_IMPORTED_MODULE_16__/* ["default"] */ .Z,
|
|
288780
|
+
'bitfinex': _src_bitfinex_js__WEBPACK_IMPORTED_MODULE_17__/* ["default"] */ .Z,
|
|
288781
|
+
'bitfinex2': _src_bitfinex2_js__WEBPACK_IMPORTED_MODULE_18__/* ["default"] */ .Z,
|
|
288782
|
+
'bitflyer': _src_bitflyer_js__WEBPACK_IMPORTED_MODULE_19__/* ["default"] */ .Z,
|
|
288783
|
+
'bitforex': _src_bitforex_js__WEBPACK_IMPORTED_MODULE_20__/* ["default"] */ .Z,
|
|
288784
|
+
'bitget': _src_bitget_js__WEBPACK_IMPORTED_MODULE_21__/* ["default"] */ .Z,
|
|
288785
|
+
'bithumb': _src_bithumb_js__WEBPACK_IMPORTED_MODULE_22__/* ["default"] */ .Z,
|
|
288786
|
+
'bitmart': _src_bitmart_js__WEBPACK_IMPORTED_MODULE_23__/* ["default"] */ .Z,
|
|
288787
|
+
'bitmex': _src_bitmex_js__WEBPACK_IMPORTED_MODULE_24__/* ["default"] */ .Z,
|
|
288788
|
+
'bitopro': _src_bitopro_js__WEBPACK_IMPORTED_MODULE_25__/* ["default"] */ .Z,
|
|
288789
|
+
'bitpanda': _src_bitpanda_js__WEBPACK_IMPORTED_MODULE_26__/* ["default"] */ .Z,
|
|
288790
|
+
'bitrue': _src_bitrue_js__WEBPACK_IMPORTED_MODULE_27__/* ["default"] */ .Z,
|
|
288791
|
+
'bitso': _src_bitso_js__WEBPACK_IMPORTED_MODULE_28__/* ["default"] */ .Z,
|
|
288792
|
+
'bitstamp': _src_bitstamp_js__WEBPACK_IMPORTED_MODULE_29__/* ["default"] */ .Z,
|
|
288793
|
+
'bitvavo': _src_bitvavo_js__WEBPACK_IMPORTED_MODULE_30__/* ["default"] */ .Z,
|
|
288794
|
+
'bl3p': _src_bl3p_js__WEBPACK_IMPORTED_MODULE_31__/* ["default"] */ .Z,
|
|
288795
|
+
'blockchaincom': _src_blockchaincom_js__WEBPACK_IMPORTED_MODULE_32__/* ["default"] */ .Z,
|
|
288796
|
+
'btcalpha': _src_btcalpha_js__WEBPACK_IMPORTED_MODULE_33__/* ["default"] */ .Z,
|
|
288797
|
+
'btcbox': _src_btcbox_js__WEBPACK_IMPORTED_MODULE_34__/* ["default"] */ .Z,
|
|
288798
|
+
'btcmarkets': _src_btcmarkets_js__WEBPACK_IMPORTED_MODULE_35__/* ["default"] */ .Z,
|
|
288799
|
+
'btcturk': _src_btcturk_js__WEBPACK_IMPORTED_MODULE_36__/* ["default"] */ .Z,
|
|
288800
|
+
'bybit': _src_bybit_js__WEBPACK_IMPORTED_MODULE_37__/* ["default"] */ .Z,
|
|
288801
|
+
'cex': _src_cex_js__WEBPACK_IMPORTED_MODULE_38__/* ["default"] */ .Z,
|
|
288802
|
+
'coinbase': _src_coinbase_js__WEBPACK_IMPORTED_MODULE_39__/* ["default"] */ .Z,
|
|
288803
|
+
'coinbasepro': _src_coinbasepro_js__WEBPACK_IMPORTED_MODULE_40__/* ["default"] */ .Z,
|
|
288804
|
+
'coincheck': _src_coincheck_js__WEBPACK_IMPORTED_MODULE_41__/* ["default"] */ .Z,
|
|
288805
|
+
'coinex': _src_coinex_js__WEBPACK_IMPORTED_MODULE_42__/* ["default"] */ .Z,
|
|
288806
|
+
'coinlist': _src_coinlist_js__WEBPACK_IMPORTED_MODULE_43__/* ["default"] */ .Z,
|
|
288807
|
+
'coinmate': _src_coinmate_js__WEBPACK_IMPORTED_MODULE_44__/* ["default"] */ .Z,
|
|
288808
|
+
'coinone': _src_coinone_js__WEBPACK_IMPORTED_MODULE_45__/* ["default"] */ .Z,
|
|
288809
|
+
'coinsph': _src_coinsph_js__WEBPACK_IMPORTED_MODULE_46__/* ["default"] */ .Z,
|
|
288810
|
+
'coinspot': _src_coinspot_js__WEBPACK_IMPORTED_MODULE_47__/* ["default"] */ .Z,
|
|
288811
|
+
'cryptocom': _src_cryptocom_js__WEBPACK_IMPORTED_MODULE_48__/* ["default"] */ .Z,
|
|
288812
|
+
'currencycom': _src_currencycom_js__WEBPACK_IMPORTED_MODULE_49__/* ["default"] */ .Z,
|
|
288813
|
+
'delta': _src_delta_js__WEBPACK_IMPORTED_MODULE_50__/* ["default"] */ .Z,
|
|
288814
|
+
'deribit': _src_deribit_js__WEBPACK_IMPORTED_MODULE_51__/* ["default"] */ .Z,
|
|
288815
|
+
'digifinex': _src_digifinex_js__WEBPACK_IMPORTED_MODULE_52__/* ["default"] */ .Z,
|
|
288816
|
+
'exmo': _src_exmo_js__WEBPACK_IMPORTED_MODULE_53__/* ["default"] */ .Z,
|
|
288817
|
+
'fmfwio': _src_fmfwio_js__WEBPACK_IMPORTED_MODULE_54__/* ["default"] */ .Z,
|
|
288818
|
+
'gate': _src_gate_js__WEBPACK_IMPORTED_MODULE_55__/* ["default"] */ .Z,
|
|
288819
|
+
'gateio': _src_gateio_js__WEBPACK_IMPORTED_MODULE_56__/* ["default"] */ .Z,
|
|
288820
|
+
'gemini': _src_gemini_js__WEBPACK_IMPORTED_MODULE_57__/* ["default"] */ .Z,
|
|
288821
|
+
'hitbtc': _src_hitbtc_js__WEBPACK_IMPORTED_MODULE_58__/* ["default"] */ .Z,
|
|
288822
|
+
'hitbtc3': _src_hitbtc3_js__WEBPACK_IMPORTED_MODULE_59__/* ["default"] */ .Z,
|
|
288823
|
+
'hollaex': _src_hollaex_js__WEBPACK_IMPORTED_MODULE_60__/* ["default"] */ .Z,
|
|
288824
|
+
'htx': _src_htx_js__WEBPACK_IMPORTED_MODULE_61__/* ["default"] */ .Z,
|
|
288825
|
+
'huobi': _src_huobi_js__WEBPACK_IMPORTED_MODULE_62__/* ["default"] */ .Z,
|
|
288826
|
+
'huobijp': _src_huobijp_js__WEBPACK_IMPORTED_MODULE_63__/* ["default"] */ .Z,
|
|
288827
|
+
'idex': _src_idex_js__WEBPACK_IMPORTED_MODULE_64__/* ["default"] */ .Z,
|
|
288828
|
+
'independentreserve': _src_independentreserve_js__WEBPACK_IMPORTED_MODULE_65__/* ["default"] */ .Z,
|
|
288829
|
+
'indodax': _src_indodax_js__WEBPACK_IMPORTED_MODULE_66__/* ["default"] */ .Z,
|
|
288830
|
+
'kraken': _src_kraken_js__WEBPACK_IMPORTED_MODULE_67__/* ["default"] */ .Z,
|
|
288831
|
+
'krakenfutures': _src_krakenfutures_js__WEBPACK_IMPORTED_MODULE_68__/* ["default"] */ .Z,
|
|
288832
|
+
'kucoin': _src_kucoin_js__WEBPACK_IMPORTED_MODULE_69__/* ["default"] */ .Z,
|
|
288833
|
+
'kucoinfutures': _src_kucoinfutures_js__WEBPACK_IMPORTED_MODULE_70__/* ["default"] */ .Z,
|
|
288834
|
+
'kuna': _src_kuna_js__WEBPACK_IMPORTED_MODULE_71__/* ["default"] */ .Z,
|
|
288835
|
+
'latoken': _src_latoken_js__WEBPACK_IMPORTED_MODULE_72__/* ["default"] */ .Z,
|
|
288836
|
+
'lbank': _src_lbank_js__WEBPACK_IMPORTED_MODULE_73__/* ["default"] */ .Z,
|
|
288837
|
+
'luno': _src_luno_js__WEBPACK_IMPORTED_MODULE_74__/* ["default"] */ .Z,
|
|
288838
|
+
'lykke': _src_lykke_js__WEBPACK_IMPORTED_MODULE_75__/* ["default"] */ .Z,
|
|
288839
|
+
'mercado': _src_mercado_js__WEBPACK_IMPORTED_MODULE_76__/* ["default"] */ .Z,
|
|
288840
|
+
'mexc': _src_mexc_js__WEBPACK_IMPORTED_MODULE_77__/* ["default"] */ .Z,
|
|
288841
|
+
'ndax': _src_ndax_js__WEBPACK_IMPORTED_MODULE_78__/* ["default"] */ .Z,
|
|
288842
|
+
'novadax': _src_novadax_js__WEBPACK_IMPORTED_MODULE_79__/* ["default"] */ .Z,
|
|
288843
|
+
'oceanex': _src_oceanex_js__WEBPACK_IMPORTED_MODULE_80__/* ["default"] */ .Z,
|
|
288844
|
+
'okcoin': _src_okcoin_js__WEBPACK_IMPORTED_MODULE_81__/* ["default"] */ .Z,
|
|
288845
|
+
'okx': _src_okx_js__WEBPACK_IMPORTED_MODULE_82__/* ["default"] */ .Z,
|
|
288846
|
+
'p2b': _src_p2b_js__WEBPACK_IMPORTED_MODULE_83__/* ["default"] */ .Z,
|
|
288847
|
+
'paymium': _src_paymium_js__WEBPACK_IMPORTED_MODULE_84__/* ["default"] */ .Z,
|
|
288848
|
+
'phemex': _src_phemex_js__WEBPACK_IMPORTED_MODULE_85__/* ["default"] */ .Z,
|
|
288849
|
+
'poloniex': _src_poloniex_js__WEBPACK_IMPORTED_MODULE_86__/* ["default"] */ .Z,
|
|
288850
|
+
'poloniexfutures': _src_poloniexfutures_js__WEBPACK_IMPORTED_MODULE_87__/* ["default"] */ .Z,
|
|
288851
|
+
'probit': _src_probit_js__WEBPACK_IMPORTED_MODULE_88__/* ["default"] */ .Z,
|
|
288852
|
+
'timex': _src_timex_js__WEBPACK_IMPORTED_MODULE_89__/* ["default"] */ .Z,
|
|
288853
|
+
'tokocrypto': _src_tokocrypto_js__WEBPACK_IMPORTED_MODULE_90__/* ["default"] */ .Z,
|
|
288854
|
+
'upbit': _src_upbit_js__WEBPACK_IMPORTED_MODULE_91__/* ["default"] */ .Z,
|
|
288855
|
+
'wavesexchange': _src_wavesexchange_js__WEBPACK_IMPORTED_MODULE_92__/* ["default"] */ .Z,
|
|
288856
|
+
'wazirx': _src_wazirx_js__WEBPACK_IMPORTED_MODULE_93__/* ["default"] */ .Z,
|
|
288857
|
+
'whitebit': _src_whitebit_js__WEBPACK_IMPORTED_MODULE_94__/* ["default"] */ .Z,
|
|
288858
|
+
'woo': _src_woo_js__WEBPACK_IMPORTED_MODULE_95__/* ["default"] */ .Z,
|
|
288859
|
+
'yobit': _src_yobit_js__WEBPACK_IMPORTED_MODULE_96__/* ["default"] */ .Z,
|
|
288860
|
+
'zaif': _src_zaif_js__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z,
|
|
288692
288861
|
'zonda': _src_zonda_js__WEBPACK_IMPORTED_MODULE_97__/* ["default"] */ .Z,
|
|
288693
288862
|
};
|
|
288694
288863
|
const pro = {
|