ccxt 4.2.12 → 4.2.13

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.
Files changed (63) hide show
  1. package/README.md +3 -3
  2. package/dist/ccxt.browser.js +718 -240
  3. package/dist/ccxt.browser.min.js +3 -3
  4. package/dist/cjs/ccxt.js +1 -1
  5. package/dist/cjs/js/ccxt.js +1 -1
  6. package/dist/cjs/js/src/bigone.js +89 -22
  7. package/dist/cjs/js/src/binance.js +34 -27
  8. package/dist/cjs/js/src/bingx.js +106 -36
  9. package/dist/cjs/js/src/bitget.js +13 -6
  10. package/dist/cjs/js/src/bitmart.js +3 -3
  11. package/dist/cjs/js/src/bybit.js +1 -1
  12. package/dist/cjs/js/src/coinbase.js +176 -26
  13. package/dist/cjs/js/src/coinlist.js +1 -1
  14. package/dist/cjs/js/src/coinone.js +1 -1
  15. package/dist/cjs/js/src/deribit.js +1 -1
  16. package/dist/cjs/js/src/gate.js +74 -56
  17. package/dist/cjs/js/src/gemini.js +1 -1
  18. package/dist/cjs/js/src/htx.js +26 -1
  19. package/dist/cjs/js/src/independentreserve.js +7 -5
  20. package/dist/cjs/js/src/kraken.js +3 -7
  21. package/dist/cjs/js/src/lbank.js +59 -33
  22. package/dist/cjs/js/src/oceanex.js +1 -1
  23. package/dist/cjs/js/src/okx.js +2 -1
  24. package/dist/cjs/js/src/phemex.js +9 -2
  25. package/dist/cjs/js/src/pro/kraken.js +1 -1
  26. package/dist/cjs/js/src/pro/okx.js +52 -2
  27. package/dist/cjs/js/src/probit.js +4 -2
  28. package/dist/cjs/js/src/wavesexchange.js +1 -1
  29. package/dist/cjs/js/src/woo.js +52 -2
  30. package/js/ccxt.d.ts +1 -1
  31. package/js/ccxt.js +1 -1
  32. package/js/src/abstract/bingx.d.ts +2 -0
  33. package/js/src/abstract/okx.d.ts +1 -0
  34. package/js/src/bigone.d.ts +2 -0
  35. package/js/src/bigone.js +89 -22
  36. package/js/src/binance.js +34 -27
  37. package/js/src/bingx.js +106 -36
  38. package/js/src/bitget.js +13 -6
  39. package/js/src/bitmart.js +3 -3
  40. package/js/src/bybit.js +1 -1
  41. package/js/src/coinbase.d.ts +26 -3
  42. package/js/src/coinbase.js +176 -26
  43. package/js/src/coinlist.js +1 -1
  44. package/js/src/coinone.js +1 -1
  45. package/js/src/deribit.js +1 -1
  46. package/js/src/gate.js +74 -56
  47. package/js/src/gemini.js +1 -1
  48. package/js/src/htx.d.ts +1 -0
  49. package/js/src/htx.js +26 -1
  50. package/js/src/independentreserve.js +7 -5
  51. package/js/src/kraken.js +3 -7
  52. package/js/src/lbank.js +59 -33
  53. package/js/src/oceanex.js +1 -1
  54. package/js/src/okx.js +2 -1
  55. package/js/src/phemex.js +9 -2
  56. package/js/src/pro/kraken.js +1 -1
  57. package/js/src/pro/okx.d.ts +1 -0
  58. package/js/src/pro/okx.js +52 -2
  59. package/js/src/probit.js +4 -2
  60. package/js/src/wavesexchange.js +1 -1
  61. package/js/src/woo.d.ts +2 -0
  62. package/js/src/woo.js +52 -2
  63. package/package.json +1 -1
package/js/src/binance.js CHANGED
@@ -47,7 +47,6 @@ export default class binance extends Exchange {
47
47
  'createMarketBuyOrderWithCost': true,
48
48
  'createMarketOrderWithCost': true,
49
49
  'createMarketSellOrderWithCost': true,
50
- 'createTrailingPercentOrder': true,
51
50
  'createOrder': true,
52
51
  'createOrders': true,
53
52
  'createPostOnlyOrder': true,
@@ -55,6 +54,7 @@ export default class binance extends Exchange {
55
54
  'createStopLimitOrder': true,
56
55
  'createStopMarketOrder': false,
57
56
  'createStopOrder': true,
57
+ 'createTrailingPercentOrder': true,
58
58
  'editOrder': true,
59
59
  'fetchAccounts': undefined,
60
60
  'fetchBalance': true,
@@ -6108,12 +6108,13 @@ export default class binance extends Exchange {
6108
6108
  * @name binance#transfer
6109
6109
  * @description transfer currency internally between wallets on the same account
6110
6110
  * @see https://binance-docs.github.io/apidocs/spot/en/#user-universal-transfer-user_data
6111
- * @see https://binance-docs.github.io/apidocs/spot/en/#isolated-margin-account-transfer-margin
6112
6111
  * @param {string} code unified currency code
6113
6112
  * @param {float} amount amount to transfer
6114
6113
  * @param {string} fromAccount account to transfer from
6115
6114
  * @param {string} toAccount account to transfer to
6116
6115
  * @param {object} [params] extra parameters specific to the exchange API endpoint
6116
+ * @param {string} [params.type] exchange specific transfer type
6117
+ * @param {string} [params.symbol] the unified symbol, required for isolated margin transfers
6117
6118
  * @returns {object} a [transfer structure]{@link https://docs.ccxt.com/#/?id=transfer-structure}
6118
6119
  */
6119
6120
  await this.loadMarkets();
@@ -6124,76 +6125,82 @@ export default class binance extends Exchange {
6124
6125
  };
6125
6126
  request['type'] = this.safeString(params, 'type');
6126
6127
  params = this.omit(params, 'type');
6127
- let response = undefined;
6128
6128
  if (request['type'] === undefined) {
6129
6129
  const symbol = this.safeString(params, 'symbol');
6130
+ let market = undefined;
6130
6131
  if (symbol !== undefined) {
6132
+ market = this.market(symbol);
6131
6133
  params = this.omit(params, 'symbol');
6132
6134
  }
6133
6135
  let fromId = this.convertTypeToAccount(fromAccount).toUpperCase();
6134
6136
  let toId = this.convertTypeToAccount(toAccount).toUpperCase();
6137
+ let isolatedSymbol = undefined;
6138
+ if (market !== undefined) {
6139
+ isolatedSymbol = market['id'];
6140
+ }
6135
6141
  if (fromId === 'ISOLATED') {
6136
6142
  if (symbol === undefined) {
6137
6143
  throw new ArgumentsRequired(this.id + ' transfer () requires params["symbol"] when fromAccount is ' + fromAccount);
6138
6144
  }
6139
- else {
6140
- fromId = this.marketId(symbol);
6141
- }
6142
6145
  }
6143
6146
  if (toId === 'ISOLATED') {
6144
6147
  if (symbol === undefined) {
6145
6148
  throw new ArgumentsRequired(this.id + ' transfer () requires params["symbol"] when toAccount is ' + toAccount);
6146
6149
  }
6147
- else {
6148
- toId = this.marketId(symbol);
6149
- }
6150
6150
  }
6151
6151
  const accountsById = this.safeValue(this.options, 'accountsById', {});
6152
6152
  const fromIsolated = !(fromId in accountsById);
6153
6153
  const toIsolated = !(toId in accountsById);
6154
+ if (fromIsolated && (market === undefined)) {
6155
+ isolatedSymbol = fromId; // allow user provide symbol as the from/to account
6156
+ }
6157
+ if (toIsolated && (market === undefined)) {
6158
+ isolatedSymbol = toId;
6159
+ }
6154
6160
  if (fromIsolated || toIsolated) { // Isolated margin transfer
6155
6161
  const fromFuture = fromId === 'UMFUTURE' || fromId === 'CMFUTURE';
6156
6162
  const toFuture = toId === 'UMFUTURE' || toId === 'CMFUTURE';
6157
6163
  const fromSpot = fromId === 'MAIN';
6158
6164
  const toSpot = toId === 'MAIN';
6159
6165
  const funding = fromId === 'FUNDING' || toId === 'FUNDING';
6160
- const mining = fromId === 'MINING' || toId === 'MINING';
6161
6166
  const option = fromId === 'OPTION' || toId === 'OPTION';
6162
- const prohibitedWithIsolated = fromFuture || toFuture || mining || funding || option;
6167
+ const prohibitedWithIsolated = fromFuture || toFuture || funding || option;
6163
6168
  if ((fromIsolated || toIsolated) && prohibitedWithIsolated) {
6164
6169
  throw new BadRequest(this.id + ' transfer () does not allow transfers between ' + fromAccount + ' and ' + toAccount);
6165
6170
  }
6166
6171
  else if (toSpot && fromIsolated) {
6167
- request['transFrom'] = 'ISOLATED_MARGIN';
6168
- request['transTo'] = 'SPOT';
6169
- request['symbol'] = fromId;
6170
- response = await this.sapiPostMarginIsolatedTransfer(this.extend(request, params));
6172
+ fromId = 'ISOLATED_MARGIN';
6173
+ request['fromSymbol'] = isolatedSymbol;
6171
6174
  }
6172
6175
  else if (fromSpot && toIsolated) {
6173
- request['transFrom'] = 'SPOT';
6174
- request['transTo'] = 'ISOLATED_MARGIN';
6175
- request['symbol'] = toId;
6176
- response = await this.sapiPostMarginIsolatedTransfer(this.extend(request, params));
6176
+ toId = 'ISOLATED_MARGIN';
6177
+ request['toSymbol'] = isolatedSymbol;
6177
6178
  }
6178
6179
  else {
6179
- if (fromIsolated) {
6180
+ if (fromIsolated && toIsolated) {
6180
6181
  request['fromSymbol'] = fromId;
6181
- fromId = 'ISOLATEDMARGIN';
6182
- }
6183
- if (toIsolated) {
6184
6182
  request['toSymbol'] = toId;
6183
+ fromId = 'ISOLATEDMARGIN';
6185
6184
  toId = 'ISOLATEDMARGIN';
6186
6185
  }
6187
- request['type'] = fromId + '_' + toId;
6186
+ else {
6187
+ if (fromIsolated) {
6188
+ request['fromSymbol'] = isolatedSymbol;
6189
+ fromId = 'ISOLATEDMARGIN';
6190
+ }
6191
+ if (toIsolated) {
6192
+ request['toSymbol'] = isolatedSymbol;
6193
+ toId = 'ISOLATEDMARGIN';
6194
+ }
6195
+ }
6188
6196
  }
6197
+ request['type'] = fromId + '_' + toId;
6189
6198
  }
6190
6199
  else {
6191
6200
  request['type'] = fromId + '_' + toId;
6192
6201
  }
6193
6202
  }
6194
- if (response === undefined) {
6195
- response = await this.sapiPostAssetTransfer(this.extend(request, params));
6196
- }
6203
+ const response = await this.sapiPostAssetTransfer(this.extend(request, params));
6197
6204
  //
6198
6205
  // {
6199
6206
  // "tranId":13526853623
package/js/src/bingx.js CHANGED
@@ -122,6 +122,7 @@ export default class bingx extends Exchange {
122
122
  'trade/query': 3,
123
123
  'trade/openOrders': 3,
124
124
  'trade/historyOrders': 3,
125
+ 'trade/myTrades': 3,
125
126
  'user/commissionRate': 3,
126
127
  'account/balance': 3,
127
128
  },
@@ -181,6 +182,7 @@ export default class bingx extends Exchange {
181
182
  'user/positions': 3,
182
183
  'user/income': 3,
183
184
  'trade/openOrders': 3,
185
+ 'trade/openOrder': 3,
184
186
  'trade/order': 3,
185
187
  'trade/marginType': 3,
186
188
  'trade/leverage': 3,
@@ -848,6 +850,22 @@ export default class bingx extends Exchange {
848
850
  // "buyerMaker": false
849
851
  // }
850
852
  //
853
+ // spot
854
+ // fetchMyTrades
855
+ // {
856
+ // "symbol": "LTC-USDT",
857
+ // "id": 36237072,
858
+ // "orderId": 1674069326895775744,
859
+ // "price": "85.891",
860
+ // "qty": "0.0582",
861
+ // "quoteQty": "4.9988562000000005",
862
+ // "commission": -0.00005820000000000001,
863
+ // "commissionAsset": "LTC",
864
+ // "time": 1687964205000,
865
+ // "isBuyer": true,
866
+ // "isMaker": false
867
+ // }
868
+ //
851
869
  // swap
852
870
  // fetchTrades
853
871
  //
@@ -910,7 +928,7 @@ export default class bingx extends Exchange {
910
928
  }
911
929
  const cost = this.safeString(trade, 'quoteQty');
912
930
  const type = (cost === undefined) ? 'spot' : 'swap';
913
- const currencyId = this.safeString2(trade, 'currency', 'N');
931
+ const currencyId = this.safeStringN(trade, ['currency', 'N', 'commissionAsset']);
914
932
  const currencyCode = this.safeCurrencyCode(currencyId);
915
933
  const m = this.safeValue(trade, 'm');
916
934
  const marketId = this.safeString(trade, 's');
@@ -926,6 +944,14 @@ export default class bingx extends Exchange {
926
944
  takeOrMaker = 'taker';
927
945
  }
928
946
  }
947
+ const isBuyer = this.safeValue(trade, 'isBuyer');
948
+ if (isBuyer !== undefined) {
949
+ side = isBuyer ? 'buy' : 'sell';
950
+ }
951
+ const isMaker = this.safeValue(trade, 'isMaker');
952
+ if (isMaker !== undefined) {
953
+ takeOrMaker = isMaker ? 'maker' : 'taker';
954
+ }
929
955
  return this.safeTrade({
930
956
  'id': this.safeStringN(trade, ['id', 't']),
931
957
  'info': trade,
@@ -3260,57 +3286,101 @@ export default class bingx extends Exchange {
3260
3286
  * @method
3261
3287
  * @name bingx#fetchMyTrades
3262
3288
  * @description fetch all trades made by the user
3289
+ * @see https://bingx-api.github.io/docs/#/en-us/spot/trade-api.html#Query%20Order%20History
3263
3290
  * @see https://bingx-api.github.io/docs/#/swapV2/trade-api.html#Query%20historical%20transaction%20orders
3264
3291
  * @param {string} [symbol] unified market symbol
3265
3292
  * @param {int} [since] the earliest time in ms to fetch trades for
3266
3293
  * @param {int} [limit] the maximum number of trades structures to retrieve
3267
3294
  * @param {object} [params] extra parameters specific to the exchange API endpoint
3295
+ * @param {int} [params.until] timestamp in ms for the ending date filter, default is undefined
3268
3296
  * @param {string} params.trandingUnit COIN (directly represent assets such as BTC and ETH) or CONT (represents the number of contract sheets)
3269
3297
  * @returns {object[]} a list of [trade structures]{@link https://docs.ccxt.com/#/?id=trade-structure}
3270
3298
  */
3271
3299
  if (symbol === undefined) {
3272
3300
  throw new ArgumentsRequired(this.id + ' fetchMyTrades() requires a symbol argument');
3273
3301
  }
3274
- if (since === undefined) {
3275
- throw new ArgumentsRequired(this.id + ' fetchMyTrades() requires a since argument');
3276
- }
3277
- const tradingUnit = this.safeStringUpper(params, 'tradingUnit', 'CONT');
3278
3302
  await this.loadMarkets();
3279
3303
  const market = this.market(symbol);
3280
- if (market['spot']) {
3281
- throw new BadSymbol(this.id + ' fetchMyTrades() supports swap contracts only');
3282
- }
3304
+ const now = this.milliseconds();
3305
+ let response = undefined;
3283
3306
  const request = {
3284
3307
  'symbol': market['id'],
3285
- 'tradingUnit': tradingUnit,
3286
- 'startTs': since,
3287
- 'endTs': this.nonce(),
3288
3308
  };
3289
- const query = this.omit(params, 'tradingUnit');
3290
- const response = await this.swapV2PrivateGetTradeAllFillOrders(this.extend(request, query));
3291
- //
3292
- // {
3293
- // "code": "0",
3294
- // "msg": '',
3295
- // "data": { fill_orders: [
3296
- // {
3297
- // "volume": "0.1",
3298
- // "price": "106.75",
3299
- // "amount": "10.6750",
3300
- // "commission": "-0.0053",
3301
- // "currency": "USDT",
3302
- // "orderId": "1676213270274379776",
3303
- // "liquidatedPrice": "0.00",
3304
- // "liquidatedMarginRatio": "0.00",
3305
- // "filledTime": "2023-07-04T20:56:01.000+0800"
3306
- // }
3307
- // ]
3308
- // }
3309
- // }
3310
- //
3311
- const data = this.safeValue(response, 'data', []);
3312
- const fillOrders = this.safeValue(data, 'fill_orders', []);
3313
- return this.parseTrades(fillOrders, market, since, limit, query);
3309
+ if (since !== undefined) {
3310
+ const startTimeReq = market['spot'] ? 'startTime' : 'startTs';
3311
+ request[startTimeReq] = since;
3312
+ }
3313
+ else if (market['swap']) {
3314
+ request['startTs'] = now - 7776000000; // 90 days
3315
+ }
3316
+ const until = this.safeInteger(params, 'until');
3317
+ params = this.omit(params, 'until');
3318
+ if (until !== undefined) {
3319
+ const endTimeReq = market['spot'] ? 'endTime' : 'endTs';
3320
+ request[endTimeReq] = until;
3321
+ }
3322
+ else if (market['swap']) {
3323
+ request['endTs'] = now;
3324
+ }
3325
+ let fills = undefined;
3326
+ if (market['spot']) {
3327
+ response = await this.spotV1PrivateGetTradeMyTrades(this.extend(request, params));
3328
+ const data = this.safeValue(response, 'data', []);
3329
+ fills = this.safeValue(data, 'fills', []);
3330
+ //
3331
+ // {
3332
+ // "code": 0,
3333
+ // "msg": "",
3334
+ // "debugMsg": "",
3335
+ // "data": {
3336
+ // "fills": [
3337
+ // {
3338
+ // "symbol": "LTC-USDT",
3339
+ // "id": 36237072,
3340
+ // "orderId": 1674069326895775744,
3341
+ // "price": "85.891",
3342
+ // "qty": "0.0582",
3343
+ // "quoteQty": "4.9988562000000005",
3344
+ // "commission": -0.00005820000000000001,
3345
+ // "commissionAsset": "LTC",
3346
+ // "time": 1687964205000,
3347
+ // "isBuyer": true,
3348
+ // "isMaker": false
3349
+ // }
3350
+ // ]
3351
+ // }
3352
+ // }
3353
+ //
3354
+ }
3355
+ else {
3356
+ const tradingUnit = this.safeStringUpper(params, 'tradingUnit', 'CONT');
3357
+ params = this.omit(params, 'tradingUnit');
3358
+ request['tradingUnit'] = tradingUnit;
3359
+ response = await this.swapV2PrivateGetTradeAllFillOrders(this.extend(request, params));
3360
+ const data = this.safeValue(response, 'data', []);
3361
+ fills = this.safeValue(data, 'fill_orders', []);
3362
+ //
3363
+ // {
3364
+ // "code": "0",
3365
+ // "msg": '',
3366
+ // "data": { fill_orders: [
3367
+ // {
3368
+ // "volume": "0.1",
3369
+ // "price": "106.75",
3370
+ // "amount": "10.6750",
3371
+ // "commission": "-0.0053",
3372
+ // "currency": "USDT",
3373
+ // "orderId": "1676213270274379776",
3374
+ // "liquidatedPrice": "0.00",
3375
+ // "liquidatedMarginRatio": "0.00",
3376
+ // "filledTime": "2023-07-04T20:56:01.000+0800"
3377
+ // }
3378
+ // ]
3379
+ // }
3380
+ // }
3381
+ //
3382
+ }
3383
+ return this.parseTrades(fills, market, since, limit, params);
3314
3384
  }
3315
3385
  parseDepositWithdrawFee(fee, currency = undefined) {
3316
3386
  //
package/js/src/bitget.js CHANGED
@@ -43,10 +43,10 @@ export default class bitget extends Exchange {
43
43
  'createMarketBuyOrderWithCost': true,
44
44
  'createMarketOrderWithCost': false,
45
45
  'createMarketSellOrderWithCost': false,
46
- 'createTrailingPercentOrder': true,
47
46
  'createOrder': true,
48
47
  'createOrders': true,
49
48
  'createReduceOnlyOrder': false,
49
+ 'createTrailingPercentOrder': true,
50
50
  'editOrder': true,
51
51
  'fetchAccounts': false,
52
52
  'fetchBalance': true,
@@ -2960,7 +2960,12 @@ export default class bitget extends Exchange {
2960
2960
  'symbol': market['id'],
2961
2961
  };
2962
2962
  if (limit !== undefined) {
2963
- request['limit'] = limit;
2963
+ if (market['contract']) {
2964
+ request['limit'] = Math.min(limit, 1000);
2965
+ }
2966
+ else {
2967
+ request['limit'] = limit;
2968
+ }
2964
2969
  }
2965
2970
  const options = this.safeValue(this.options, 'fetchTrades', {});
2966
2971
  let response = undefined;
@@ -3272,11 +3277,12 @@ export default class bitget extends Exchange {
3272
3277
  const marketType = market['spot'] ? 'spot' : 'swap';
3273
3278
  const timeframes = this.options['timeframes'][marketType];
3274
3279
  const selectedTimeframe = this.safeString(timeframes, timeframe, timeframe);
3275
- let request = {
3280
+ const request = {
3276
3281
  'symbol': market['id'],
3277
3282
  'granularity': selectedTimeframe,
3278
3283
  };
3279
- [request, params] = this.handleUntilOption('endTime', request, params);
3284
+ const until = this.safeInteger2(params, 'until', 'till');
3285
+ params = this.omit(params, ['until', 'till']);
3280
3286
  if (limit !== undefined) {
3281
3287
  request['limit'] = limit;
3282
3288
  }
@@ -3289,6 +3295,9 @@ export default class bitget extends Exchange {
3289
3295
  if (since !== undefined) {
3290
3296
  request['startTime'] = since;
3291
3297
  }
3298
+ if (until !== undefined) {
3299
+ request['endTime'] = until;
3300
+ }
3292
3301
  }
3293
3302
  let response = undefined;
3294
3303
  if (market['spot']) {
@@ -3296,8 +3305,6 @@ export default class bitget extends Exchange {
3296
3305
  response = await this.publicSpotGetV2SpotMarketCandles(this.extend(request, params));
3297
3306
  }
3298
3307
  else if (method === 'publicSpotGetV2SpotMarketHistoryCandles') {
3299
- const until = this.safeInteger2(params, 'until', 'till');
3300
- params = this.omit(params, ['until', 'till']);
3301
3308
  if (since !== undefined) {
3302
3309
  if (limit === undefined) {
3303
3310
  limit = 100; // exchange default
package/js/src/bitmart.js CHANGED
@@ -42,12 +42,12 @@ export default class bitmart extends Exchange {
42
42
  'createMarketBuyOrderWithCost': true,
43
43
  'createMarketOrderWithCost': false,
44
44
  'createMarketSellOrderWithCost': false,
45
- 'createTrailingPercentOrder': true,
46
45
  'createOrder': true,
47
46
  'createPostOnlyOrder': true,
48
47
  'createStopLimitOrder': false,
49
48
  'createStopMarketOrder': false,
50
49
  'createStopOrder': false,
50
+ 'createTrailingPercentOrder': true,
51
51
  'fetchBalance': true,
52
52
  'fetchBorrowInterest': true,
53
53
  'fetchBorrowRateHistories': false,
@@ -266,8 +266,8 @@ export default class bitmart extends Exchange {
266
266
  'trading': {
267
267
  'tierBased': true,
268
268
  'percentage': true,
269
- 'taker': this.parseNumber('0.0025'),
270
- 'maker': this.parseNumber('0.0025'),
269
+ 'taker': this.parseNumber('0.0040'),
270
+ 'maker': this.parseNumber('0.0035'),
271
271
  'tiers': {
272
272
  'taker': [
273
273
  [this.parseNumber('0'), this.parseNumber('0.0020')],
package/js/src/bybit.js CHANGED
@@ -42,7 +42,6 @@ export default class bybit extends Exchange {
42
42
  'closePosition': false,
43
43
  'createMarketBuyOrderWithCost': true,
44
44
  'createMarketSellOrderWithCost': false,
45
- 'createTrailingAmountOrder': true,
46
45
  'createOrder': true,
47
46
  'createOrders': true,
48
47
  'createPostOnlyOrder': true,
@@ -50,6 +49,7 @@ export default class bybit extends Exchange {
50
49
  'createStopLimitOrder': true,
51
50
  'createStopMarketOrder': true,
52
51
  'createStopOrder': true,
52
+ 'createTrailingAmountOrder': true,
53
53
  'editOrder': true,
54
54
  'fetchBalance': true,
55
55
  'fetchBorrowInterest': false,
@@ -33,10 +33,10 @@ export default class coinbase extends Exchange {
33
33
  id: string;
34
34
  txid: string;
35
35
  timestamp: number;
36
- datetime: string;
36
+ datetime: any;
37
37
  network: any;
38
- address: any;
39
- addressTo: any;
38
+ address: string;
39
+ addressTo: string;
40
40
  addressFrom: any;
41
41
  tag: any;
42
42
  tagTo: any;
@@ -114,6 +114,29 @@ export default class coinbase extends Exchange {
114
114
  fetchMyTrades(symbol?: Str, since?: Int, limit?: Int, params?: {}): Promise<Trade[]>;
115
115
  fetchOrderBook(symbol: string, limit?: Int, params?: {}): Promise<OrderBook>;
116
116
  fetchBidsAsks(symbols?: Strings, params?: {}): Promise<import("./base/types.js").Dictionary<Ticker>>;
117
+ withdraw(code: string, amount: any, address: any, tag?: any, params?: {}): Promise<{
118
+ info: any;
119
+ id: string;
120
+ txid: string;
121
+ timestamp: number;
122
+ datetime: any;
123
+ network: any;
124
+ address: string;
125
+ addressTo: string;
126
+ addressFrom: any;
127
+ tag: any;
128
+ tagTo: any;
129
+ tagFrom: any;
130
+ type: string;
131
+ amount: number;
132
+ currency: string;
133
+ status: string;
134
+ updated: number;
135
+ fee: {
136
+ cost: number;
137
+ currency: string;
138
+ };
139
+ }>;
117
140
  sign(path: any, api?: any[], method?: string, params?: {}, headers?: any, body?: any): {
118
141
  url: string;
119
142
  method: string;