ccxt 4.2.45 → 4.2.47
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/CHANGELOG.md +5405 -8414
- package/README.md +4 -4
- package/change.sh +5 -3
- package/dist/ccxt.browser.js +824 -64
- package/dist/ccxt.browser.min.js +7 -7
- package/dist/cjs/ccxt.js +1 -1
- package/dist/cjs/src/base/ws/Cache.js +13 -5
- package/dist/cjs/src/base/ws/OrderBook.js +2 -2
- package/dist/cjs/src/binance.js +34 -12
- package/dist/cjs/src/bitfinex2.js +1 -0
- package/dist/cjs/src/bithumb.js +5 -0
- package/dist/cjs/src/btcturk.js +11 -0
- package/dist/cjs/src/bybit.js +185 -2
- package/dist/cjs/src/coinbase.js +9 -5
- package/dist/cjs/src/coincheck.js +11 -0
- package/dist/cjs/src/coinmate.js +114 -1
- package/dist/cjs/src/coinsph.js +32 -1
- package/dist/cjs/src/coinspot.js +7 -0
- package/dist/cjs/src/cryptocom.js +2 -2
- package/dist/cjs/src/currencycom.js +22 -0
- package/dist/cjs/src/deribit.js +34 -1
- package/dist/cjs/src/exmo.js +22 -0
- package/dist/cjs/src/gemini.js +15 -0
- package/dist/cjs/src/hitbtc.js +2 -0
- package/dist/cjs/src/hollaex.js +27 -1
- package/dist/cjs/src/idex.js +60 -1
- package/dist/cjs/src/indodax.js +106 -1
- package/dist/cjs/src/latoken.js +3 -0
- package/dist/cjs/src/mercado.js +3 -0
- package/dist/cjs/src/oceanex.js +3 -0
- package/dist/cjs/src/okx.js +1 -0
- package/dist/cjs/src/pro/bitget.js +12 -8
- package/dist/cjs/src/pro/bitmart.js +11 -11
- package/dist/cjs/src/pro/bitmex.js +4 -4
- package/dist/cjs/src/pro/cex.js +2 -2
- package/dist/cjs/src/pro/gemini.js +4 -3
- package/dist/cjs/src/timex.js +65 -0
- package/js/ccxt.d.ts +1 -1
- package/js/ccxt.js +1 -1
- package/js/src/abstract/bequant.d.ts +2 -0
- package/js/src/abstract/bitcoincom.d.ts +2 -0
- package/js/src/abstract/bithumb.d.ts +5 -0
- package/js/src/abstract/coinmate.d.ts +12 -0
- package/js/src/abstract/fmfwio.d.ts +2 -0
- package/js/src/abstract/hitbtc.d.ts +2 -0
- package/js/src/abstract/hitbtc3.d.ts +2 -0
- package/js/src/abstract/hollaex.d.ts +3 -0
- package/js/src/abstract/okx.d.ts +1 -0
- package/js/src/base/Exchange.d.ts +9 -7
- package/js/src/base/ws/Cache.d.ts +5 -1
- package/js/src/base/ws/Cache.js +13 -5
- package/js/src/base/ws/OrderBook.d.ts +5 -1
- package/js/src/base/ws/OrderBook.js +3 -3
- package/js/src/binance.d.ts +1 -1
- package/js/src/binance.js +34 -12
- package/js/src/bitfinex2.js +1 -0
- package/js/src/bithumb.js +5 -0
- package/js/src/btcturk.js +11 -0
- package/js/src/bybit.d.ts +2 -0
- package/js/src/bybit.js +185 -2
- package/js/src/coinbase.js +9 -5
- package/js/src/coincheck.js +11 -0
- package/js/src/coinmate.d.ts +3 -1
- package/js/src/coinmate.js +114 -1
- package/js/src/coinsph.js +32 -1
- package/js/src/coinspot.js +7 -0
- package/js/src/cryptocom.js +2 -2
- package/js/src/currencycom.js +22 -0
- package/js/src/deribit.js +34 -1
- package/js/src/exmo.js +22 -0
- package/js/src/gemini.js +15 -0
- package/js/src/hitbtc.js +2 -0
- package/js/src/hollaex.js +27 -1
- package/js/src/idex.d.ts +14 -0
- package/js/src/idex.js +60 -1
- package/js/src/indodax.d.ts +3 -0
- package/js/src/indodax.js +106 -1
- package/js/src/latoken.js +3 -0
- package/js/src/mercado.js +3 -0
- package/js/src/oceanex.js +3 -0
- package/js/src/okx.js +1 -0
- package/js/src/pro/bitget.js +12 -8
- package/js/src/pro/bitmart.js +11 -11
- package/js/src/pro/bitmex.js +4 -4
- package/js/src/pro/cex.js +2 -2
- package/js/src/pro/gemini.js +4 -3
- package/js/src/timex.d.ts +14 -0
- package/js/src/timex.js +65 -0
- package/package.json +1 -1
- package/skip-tests.json +4 -0
package/js/src/indodax.js
CHANGED
|
@@ -49,6 +49,9 @@ export default class indodax extends Exchange {
|
|
|
49
49
|
'fetchCrossBorrowRate': false,
|
|
50
50
|
'fetchCrossBorrowRates': false,
|
|
51
51
|
'fetchDeposit': false,
|
|
52
|
+
'fetchDepositAddress': 'emulated',
|
|
53
|
+
'fetchDepositAddresses': true,
|
|
54
|
+
'fetchDepositAddressesByNetwork': false,
|
|
52
55
|
'fetchDeposits': false,
|
|
53
56
|
'fetchDepositsWithdrawals': true,
|
|
54
57
|
'fetchFundingHistory': false,
|
|
@@ -160,7 +163,25 @@ export default class indodax extends Exchange {
|
|
|
160
163
|
'options': {
|
|
161
164
|
'recvWindow': 5 * 1000,
|
|
162
165
|
'timeDifference': 0,
|
|
163
|
-
'adjustForTimeDifference': false,
|
|
166
|
+
'adjustForTimeDifference': false,
|
|
167
|
+
'networks': {
|
|
168
|
+
'XLM': 'Stellar Token',
|
|
169
|
+
'BSC': 'bep20',
|
|
170
|
+
'TRC20': 'trc20',
|
|
171
|
+
'MATIC': 'polygon',
|
|
172
|
+
// 'BEP2': 'bep2',
|
|
173
|
+
// 'ARB': 'arb',
|
|
174
|
+
// 'ERC20': 'erc20',
|
|
175
|
+
// 'KIP7': 'kip7',
|
|
176
|
+
// 'MAINNET': 'mainnet', // TODO: does mainnet just mean the default?
|
|
177
|
+
// 'OEP4': 'oep4',
|
|
178
|
+
// 'OP': 'op',
|
|
179
|
+
// 'SPL': 'spl',
|
|
180
|
+
// 'TRC10': 'trc10',
|
|
181
|
+
// 'ZRC2': 'zrc2'
|
|
182
|
+
// 'ETH': 'eth'
|
|
183
|
+
// 'BASE': 'base'
|
|
184
|
+
},
|
|
164
185
|
},
|
|
165
186
|
'commonCurrencies': {
|
|
166
187
|
'STR': 'XLM',
|
|
@@ -1019,6 +1040,90 @@ export default class indodax extends Exchange {
|
|
|
1019
1040
|
};
|
|
1020
1041
|
return this.safeString(statuses, status, status);
|
|
1021
1042
|
}
|
|
1043
|
+
async fetchDepositAddresses(codes = undefined, params = {}) {
|
|
1044
|
+
/**
|
|
1045
|
+
* @method
|
|
1046
|
+
* @name indodax#fetchDepositAddresses
|
|
1047
|
+
* @description fetch deposit addresses for multiple currencies and chain types
|
|
1048
|
+
* @param {string[]} [codes] list of unified currency codes, default is undefined
|
|
1049
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
1050
|
+
* @returns {object} a list of [address structures]{@link https://docs.ccxt.com/#/?id=address-structure}
|
|
1051
|
+
*/
|
|
1052
|
+
await this.loadMarkets();
|
|
1053
|
+
const response = await this.privatePostGetInfo(params);
|
|
1054
|
+
//
|
|
1055
|
+
// {
|
|
1056
|
+
// success: '1',
|
|
1057
|
+
// return: {
|
|
1058
|
+
// server_time: '1708031570',
|
|
1059
|
+
// balance: {
|
|
1060
|
+
// idr: '29952',
|
|
1061
|
+
// ...
|
|
1062
|
+
// },
|
|
1063
|
+
// balance_hold: {
|
|
1064
|
+
// idr: '0',
|
|
1065
|
+
// ...
|
|
1066
|
+
// },
|
|
1067
|
+
// address: {
|
|
1068
|
+
// btc: '1KMntgzvU7iTSgMBWc11nVuJjAyfW3qJyk',
|
|
1069
|
+
// ...
|
|
1070
|
+
// },
|
|
1071
|
+
// memo_is_required: {
|
|
1072
|
+
// btc: { mainnet: false },
|
|
1073
|
+
// ...
|
|
1074
|
+
// },
|
|
1075
|
+
// network: {
|
|
1076
|
+
// btc: 'mainnet',
|
|
1077
|
+
// ...
|
|
1078
|
+
// },
|
|
1079
|
+
// user_id: '276011',
|
|
1080
|
+
// name: '',
|
|
1081
|
+
// email: 'testbitcoincoid@mailforspam.com',
|
|
1082
|
+
// profile_picture: null,
|
|
1083
|
+
// verification_status: 'unverified',
|
|
1084
|
+
// gauth_enable: true,
|
|
1085
|
+
// withdraw_status: '0'
|
|
1086
|
+
// }
|
|
1087
|
+
// }
|
|
1088
|
+
//
|
|
1089
|
+
const data = this.safeDict(response, 'return');
|
|
1090
|
+
const addresses = this.safeDict(data, 'address', {});
|
|
1091
|
+
const networks = this.safeDict(data, 'network', {});
|
|
1092
|
+
const addressKeys = Object.keys(addresses);
|
|
1093
|
+
const result = {
|
|
1094
|
+
'info': data,
|
|
1095
|
+
};
|
|
1096
|
+
for (let i = 0; i < addressKeys.length; i++) {
|
|
1097
|
+
const marketId = addressKeys[i];
|
|
1098
|
+
const code = this.safeCurrencyCode(marketId);
|
|
1099
|
+
const address = this.safeString(addresses, marketId);
|
|
1100
|
+
if ((address !== undefined) && ((codes === undefined) || (this.inArray(code, codes)))) {
|
|
1101
|
+
this.checkAddress(address);
|
|
1102
|
+
let network = undefined;
|
|
1103
|
+
if (marketId in networks) {
|
|
1104
|
+
const networkId = this.safeString(networks, marketId);
|
|
1105
|
+
if (networkId.indexOf(',') >= 0) {
|
|
1106
|
+
network = [];
|
|
1107
|
+
const networkIds = networkId.split(',');
|
|
1108
|
+
for (let j = 0; j < networkIds.length; j++) {
|
|
1109
|
+
network.push(this.networkIdToCode(networkIds[j]).toUpperCase());
|
|
1110
|
+
}
|
|
1111
|
+
}
|
|
1112
|
+
else {
|
|
1113
|
+
network = this.networkIdToCode(networkId).toUpperCase();
|
|
1114
|
+
}
|
|
1115
|
+
}
|
|
1116
|
+
result[code] = {
|
|
1117
|
+
'info': {},
|
|
1118
|
+
'currency': code,
|
|
1119
|
+
'address': address,
|
|
1120
|
+
'network': network,
|
|
1121
|
+
'tag': undefined,
|
|
1122
|
+
};
|
|
1123
|
+
}
|
|
1124
|
+
}
|
|
1125
|
+
return result;
|
|
1126
|
+
}
|
|
1022
1127
|
sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
|
|
1023
1128
|
let url = this.urls['api'][api];
|
|
1024
1129
|
if (api === 'public') {
|
package/js/src/latoken.js
CHANGED
|
@@ -44,6 +44,9 @@ export default class latoken extends Exchange {
|
|
|
44
44
|
'fetchCrossBorrowRate': false,
|
|
45
45
|
'fetchCrossBorrowRates': false,
|
|
46
46
|
'fetchCurrencies': true,
|
|
47
|
+
'fetchDepositAddress': false,
|
|
48
|
+
'fetchDepositAddresses': false,
|
|
49
|
+
'fetchDepositAddressesByNetwork': false,
|
|
47
50
|
'fetchDepositsWithdrawals': true,
|
|
48
51
|
'fetchDepositWithdrawFees': false,
|
|
49
52
|
'fetchIsolatedBorrowRate': false,
|
package/js/src/mercado.js
CHANGED
|
@@ -43,6 +43,9 @@ export default class mercado extends Exchange {
|
|
|
43
43
|
'fetchBorrowRateHistory': false,
|
|
44
44
|
'fetchCrossBorrowRate': false,
|
|
45
45
|
'fetchCrossBorrowRates': false,
|
|
46
|
+
'fetchDepositAddress': false,
|
|
47
|
+
'fetchDepositAddresses': false,
|
|
48
|
+
'fetchDepositAddressesByNetwork': false,
|
|
46
49
|
'fetchFundingHistory': false,
|
|
47
50
|
'fetchFundingRate': false,
|
|
48
51
|
'fetchFundingRateHistory': false,
|
package/js/src/oceanex.js
CHANGED
|
@@ -50,6 +50,9 @@ export default class oceanex extends Exchange {
|
|
|
50
50
|
'fetchClosedOrders': true,
|
|
51
51
|
'fetchCrossBorrowRate': false,
|
|
52
52
|
'fetchCrossBorrowRates': false,
|
|
53
|
+
'fetchDepositAddress': false,
|
|
54
|
+
'fetchDepositAddresses': false,
|
|
55
|
+
'fetchDepositAddressesByNetwork': false,
|
|
53
56
|
'fetchIsolatedBorrowRate': false,
|
|
54
57
|
'fetchIsolatedBorrowRates': false,
|
|
55
58
|
'fetchMarkets': true,
|
package/js/src/okx.js
CHANGED
|
@@ -447,6 +447,7 @@ export default class okx extends Exchange {
|
|
|
447
447
|
'account/quick-margin-borrow-repay': 4,
|
|
448
448
|
'account/borrow-repay': 5 / 3,
|
|
449
449
|
'account/simulated_margin': 10,
|
|
450
|
+
'account/position-builder': 10,
|
|
450
451
|
'account/set-riskOffset-type': 2,
|
|
451
452
|
'account/activate-option': 4,
|
|
452
453
|
'account/set-auto-loan': 4,
|
package/js/src/pro/bitget.js
CHANGED
|
@@ -521,13 +521,15 @@ export default class bitget extends bitgetRest {
|
|
|
521
521
|
const rawOrderBook = this.safeValue(data, 0);
|
|
522
522
|
const timestamp = this.safeInteger(rawOrderBook, 'ts');
|
|
523
523
|
const incrementalBook = channel === 'books';
|
|
524
|
-
let storedOrderBook = undefined;
|
|
525
524
|
if (incrementalBook) {
|
|
526
|
-
storedOrderBook = this.safeValue(this.orderbooks, symbol);
|
|
527
|
-
if (
|
|
528
|
-
|
|
529
|
-
|
|
525
|
+
// storedOrderBook = this.safeValue (this.orderbooks, symbol);
|
|
526
|
+
if (!(symbol in this.orderbooks)) {
|
|
527
|
+
// const ob = this.orderBook ({});
|
|
528
|
+
const ob = this.countedOrderBook({});
|
|
529
|
+
ob['symbol'] = symbol;
|
|
530
|
+
this.orderbooks[symbol] = ob;
|
|
530
531
|
}
|
|
532
|
+
const storedOrderBook = this.orderbooks[symbol];
|
|
531
533
|
const asks = this.safeValue(rawOrderBook, 'asks', []);
|
|
532
534
|
const bids = this.safeValue(rawOrderBook, 'bids', []);
|
|
533
535
|
this.handleDeltas(storedOrderBook['asks'], asks);
|
|
@@ -562,10 +564,12 @@ export default class bitget extends bitgetRest {
|
|
|
562
564
|
}
|
|
563
565
|
}
|
|
564
566
|
else {
|
|
565
|
-
|
|
567
|
+
const orderbook = this.orderBook({});
|
|
568
|
+
const parsedOrderbook = this.parseOrderBook(rawOrderBook, symbol, timestamp);
|
|
569
|
+
orderbook.reset(parsedOrderbook);
|
|
570
|
+
this.orderbooks[symbol] = orderbook;
|
|
566
571
|
}
|
|
567
|
-
this.orderbooks[symbol]
|
|
568
|
-
client.resolve(storedOrderBook, messageHash);
|
|
572
|
+
client.resolve(this.orderbooks[symbol], messageHash);
|
|
569
573
|
}
|
|
570
574
|
handleDelta(bookside, delta) {
|
|
571
575
|
const bidAsk = this.parseBidAsk(delta, 0, 1);
|
package/js/src/pro/bitmart.js
CHANGED
|
@@ -1320,13 +1320,13 @@ export default class bitmart extends bitmartRest {
|
|
|
1320
1320
|
const update = datas[i];
|
|
1321
1321
|
const marketId = this.safeString(update, 'symbol');
|
|
1322
1322
|
const symbol = this.safeSymbol(marketId);
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
this.orderbooks[symbol] = orderbook;
|
|
1323
|
+
if (!(symbol in this.orderbooks)) {
|
|
1324
|
+
const ob = this.orderBook({}, limit);
|
|
1325
|
+
ob['symbol'] = symbol;
|
|
1326
|
+
this.orderbooks[symbol] = ob;
|
|
1328
1327
|
}
|
|
1329
|
-
const
|
|
1328
|
+
const orderbook = this.orderbooks[symbol];
|
|
1329
|
+
const type = this.safeString(update, 'type');
|
|
1330
1330
|
if ((type === 'snapshot') || (!(channelName.indexOf('increase') >= 0))) {
|
|
1331
1331
|
orderbook.reset({});
|
|
1332
1332
|
}
|
|
@@ -1350,12 +1350,12 @@ export default class bitmart extends bitmartRest {
|
|
|
1350
1350
|
const depths = data['depths'];
|
|
1351
1351
|
const marketId = this.safeString(data, 'symbol');
|
|
1352
1352
|
const symbol = this.safeSymbol(marketId);
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
this.orderbooks[symbol] = orderbook;
|
|
1353
|
+
if (!(symbol in this.orderbooks)) {
|
|
1354
|
+
const ob = this.orderBook({}, limit);
|
|
1355
|
+
ob['symbol'] = symbol;
|
|
1356
|
+
this.orderbooks[symbol] = ob;
|
|
1358
1357
|
}
|
|
1358
|
+
const orderbook = this.orderbooks[symbol];
|
|
1359
1359
|
const way = this.safeNumber(data, 'way');
|
|
1360
1360
|
const side = (way === 1) ? 'bids' : 'asks';
|
|
1361
1361
|
if (way === 1) {
|
package/js/src/pro/bitmex.js
CHANGED
|
@@ -351,11 +351,11 @@ export default class bitmex extends bitmexRest {
|
|
|
351
351
|
const market = this.safeMarket(marketId);
|
|
352
352
|
const symbol = market['symbol'];
|
|
353
353
|
const messageHash = table + ':' + marketId;
|
|
354
|
-
|
|
354
|
+
const ticker = this.safeDict(this.tickers, symbol, {});
|
|
355
355
|
const info = this.safeDict(ticker, 'info', {});
|
|
356
|
-
|
|
357
|
-
tickers[symbol] =
|
|
358
|
-
this.tickers[symbol] =
|
|
356
|
+
const parsedTicker = this.parseTicker(this.extend(info, update), market);
|
|
357
|
+
tickers[symbol] = parsedTicker;
|
|
358
|
+
this.tickers[symbol] = parsedTicker;
|
|
359
359
|
client.resolve(ticker, messageHash);
|
|
360
360
|
}
|
|
361
361
|
client.resolve(tickers, 'instrument');
|
package/js/src/pro/cex.js
CHANGED
|
@@ -174,7 +174,7 @@ export default class cex extends cexRest {
|
|
|
174
174
|
stored.append(parsed);
|
|
175
175
|
}
|
|
176
176
|
const messageHash = 'trades';
|
|
177
|
-
this.trades = stored;
|
|
177
|
+
this.trades = stored; // trades don't have symbol
|
|
178
178
|
client.resolve(this.trades, messageHash);
|
|
179
179
|
}
|
|
180
180
|
parseWsOldTrade(trade, market = undefined) {
|
|
@@ -218,7 +218,7 @@ export default class cex extends cexRest {
|
|
|
218
218
|
// }
|
|
219
219
|
//
|
|
220
220
|
const data = this.safeValue(message, 'data', []);
|
|
221
|
-
const stored = this.trades;
|
|
221
|
+
const stored = this.trades; // to do fix this, this.trades is not meant to be used like this
|
|
222
222
|
for (let i = 0; i < data.length; i++) {
|
|
223
223
|
const rawTrade = data[i];
|
|
224
224
|
const parsed = this.parseWsOldTrade(rawTrade);
|
package/js/src/pro/gemini.js
CHANGED
|
@@ -463,10 +463,11 @@ export default class gemini extends geminiRest {
|
|
|
463
463
|
const market = this.safeMarket(marketId.toLowerCase());
|
|
464
464
|
const symbol = market['symbol'];
|
|
465
465
|
const messageHash = 'orderbook:' + symbol;
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
466
|
+
if (!(symbol in this.orderbooks)) {
|
|
467
|
+
const ob = this.orderBook();
|
|
468
|
+
this.orderbooks[symbol] = ob;
|
|
469
469
|
}
|
|
470
|
+
const orderbook = this.orderbooks[symbol];
|
|
470
471
|
const bids = orderbook['bids'];
|
|
471
472
|
const asks = orderbook['asks'];
|
|
472
473
|
for (let i = 0; i < rawOrderBookChanges.length; i++) {
|
package/js/src/timex.d.ts
CHANGED
|
@@ -67,6 +67,20 @@ export default class timex extends Exchange {
|
|
|
67
67
|
parseTrade(trade: any, market?: Market): Trade;
|
|
68
68
|
parseOHLCV(ohlcv: any, market?: Market): OHLCV;
|
|
69
69
|
parseOrder(order: any, market?: Market): Order;
|
|
70
|
+
fetchDepositAddress(code: string, params?: {}): Promise<{
|
|
71
|
+
info: any;
|
|
72
|
+
currency: string;
|
|
73
|
+
address: string;
|
|
74
|
+
tag: any;
|
|
75
|
+
network: any;
|
|
76
|
+
}>;
|
|
77
|
+
parseDepositAddress(depositAddress: any, currency?: Currency): {
|
|
78
|
+
info: any;
|
|
79
|
+
currency: string;
|
|
80
|
+
address: string;
|
|
81
|
+
tag: any;
|
|
82
|
+
network: any;
|
|
83
|
+
};
|
|
70
84
|
sign(path: any, api?: string, method?: string, params?: {}, headers?: any, body?: any): {
|
|
71
85
|
url: string;
|
|
72
86
|
method: string;
|
package/js/src/timex.js
CHANGED
|
@@ -44,6 +44,9 @@ export default class timex extends Exchange {
|
|
|
44
44
|
'fetchCrossBorrowRates': false,
|
|
45
45
|
'fetchCurrencies': true,
|
|
46
46
|
'fetchDeposit': false,
|
|
47
|
+
'fetchDepositAddress': true,
|
|
48
|
+
'fetchDepositAddresses': false,
|
|
49
|
+
'fetchDepositAddressesByNetwork': false,
|
|
47
50
|
'fetchDeposits': true,
|
|
48
51
|
'fetchFundingHistory': false,
|
|
49
52
|
'fetchFundingRate': false,
|
|
@@ -1524,7 +1527,69 @@ export default class timex extends Exchange {
|
|
|
1524
1527
|
'trades': rawTrades,
|
|
1525
1528
|
}, market);
|
|
1526
1529
|
}
|
|
1530
|
+
async fetchDepositAddress(code, params = {}) {
|
|
1531
|
+
/**
|
|
1532
|
+
* @method
|
|
1533
|
+
* @name timex#fetchDepositAddress
|
|
1534
|
+
* @description fetch the deposit address for a currency associated with this account, does not accept params["network"]
|
|
1535
|
+
* @param {string} code unified currency code
|
|
1536
|
+
* @param {object} [params] extra parameters specific to the exchange API endpoint
|
|
1537
|
+
* @returns {object} an [address structure]{@link https://docs.ccxt.com/#/?id=address-structure}
|
|
1538
|
+
*/
|
|
1539
|
+
await this.loadMarkets();
|
|
1540
|
+
const currency = this.currency(code);
|
|
1541
|
+
const request = {
|
|
1542
|
+
'symbol': currency['code'],
|
|
1543
|
+
};
|
|
1544
|
+
const response = await this.currenciesGetSSymbol(this.extend(request, params));
|
|
1545
|
+
//
|
|
1546
|
+
// {
|
|
1547
|
+
// id: '1',
|
|
1548
|
+
// currency: {
|
|
1549
|
+
// symbol: 'BTC',
|
|
1550
|
+
// name: 'Bitcoin',
|
|
1551
|
+
// address: '0x8370fbc6ddec1e18b4e41e72ed943e238458487c',
|
|
1552
|
+
// decimals: '8',
|
|
1553
|
+
// tradeDecimals: '20',
|
|
1554
|
+
// fiatSymbol: 'BTC',
|
|
1555
|
+
// depositEnabled: true,
|
|
1556
|
+
// withdrawalEnabled: true,
|
|
1557
|
+
// transferEnabled: true,
|
|
1558
|
+
// active: true
|
|
1559
|
+
// }
|
|
1560
|
+
// }
|
|
1561
|
+
//
|
|
1562
|
+
const data = this.safeDict(response, 'currency', {});
|
|
1563
|
+
return this.parseDepositAddress(data, currency);
|
|
1564
|
+
}
|
|
1565
|
+
parseDepositAddress(depositAddress, currency = undefined) {
|
|
1566
|
+
//
|
|
1567
|
+
// {
|
|
1568
|
+
// symbol: 'BTC',
|
|
1569
|
+
// name: 'Bitcoin',
|
|
1570
|
+
// address: '0x8370fbc6ddec1e18b4e41e72ed943e238458487c',
|
|
1571
|
+
// decimals: '8',
|
|
1572
|
+
// tradeDecimals: '20',
|
|
1573
|
+
// fiatSymbol: 'BTC',
|
|
1574
|
+
// depositEnabled: true,
|
|
1575
|
+
// withdrawalEnabled: true,
|
|
1576
|
+
// transferEnabled: true,
|
|
1577
|
+
// active: true
|
|
1578
|
+
// }
|
|
1579
|
+
//
|
|
1580
|
+
const currencyId = this.safeString(depositAddress, 'symbol');
|
|
1581
|
+
return {
|
|
1582
|
+
'info': depositAddress,
|
|
1583
|
+
'currency': this.safeCurrencyCode(currencyId, currency),
|
|
1584
|
+
'address': this.safeString(depositAddress, 'address'),
|
|
1585
|
+
'tag': undefined,
|
|
1586
|
+
'network': undefined,
|
|
1587
|
+
};
|
|
1588
|
+
}
|
|
1527
1589
|
sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
|
|
1590
|
+
const paramsToExtract = this.extractParams(path);
|
|
1591
|
+
path = this.implodeParams(path, params);
|
|
1592
|
+
params = this.omit(params, paramsToExtract);
|
|
1528
1593
|
let url = this.urls['api']['rest'] + '/' + api + '/' + path;
|
|
1529
1594
|
if (Object.keys(params).length) {
|
|
1530
1595
|
url += '?' + this.urlencodeWithArrayRepeat(params);
|
package/package.json
CHANGED
package/skip-tests.json
CHANGED
|
@@ -356,6 +356,8 @@
|
|
|
356
356
|
}
|
|
357
357
|
},
|
|
358
358
|
"onetrading": {
|
|
359
|
+
"skip": true,
|
|
360
|
+
"until": "2024-02-28",
|
|
359
361
|
"skipWs": true,
|
|
360
362
|
"skipMethods": {
|
|
361
363
|
"fetchOrderBook": "some bid might be lower than next bid",
|
|
@@ -707,6 +709,8 @@
|
|
|
707
709
|
}
|
|
708
710
|
},
|
|
709
711
|
"coinsph": {
|
|
712
|
+
"skip": true,
|
|
713
|
+
"until": "2024-02-20",
|
|
710
714
|
"skipMethods": {
|
|
711
715
|
"loadMarkets": {
|
|
712
716
|
"taker":"messed",
|