ccxt-ir 4.9.22 → 4.9.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cjs/ccxt.js CHANGED
@@ -100,6 +100,7 @@ var huobi = require('./src/huobi.js');
100
100
  var hyperliquid = require('./src/hyperliquid.js');
101
101
  var independentreserve = require('./src/independentreserve.js');
102
102
  var indodax = require('./src/indodax.js');
103
+ var iranexchange = require('./src/iranexchange.js');
103
104
  var jibitex = require('./src/jibitex.js');
104
105
  var kcex = require('./src/kcex.js');
105
106
  var kifpoolme = require('./src/kifpoolme.js');
@@ -233,7 +234,7 @@ var xt$1 = require('./src/pro/xt.js');
233
234
 
234
235
  //-----------------------------------------------------------------------------
235
236
  // this is updated by vss.js when building
236
- const version = '4.9.22';
237
+ const version = '4.9.25';
237
238
  Exchange["default"].ccxtVersion = version;
238
239
  const exchanges = {
239
240
  'abantether': abantether["default"],
@@ -324,6 +325,7 @@ const exchanges = {
324
325
  'hyperliquid': hyperliquid["default"],
325
326
  'independentreserve': independentreserve["default"],
326
327
  'indodax': indodax["default"],
328
+ 'iranexchange': iranexchange["default"],
327
329
  'jibitex': jibitex["default"],
328
330
  'kcex': kcex["default"],
329
331
  'kifpoolme': kifpoolme["default"],
@@ -596,6 +598,7 @@ exports.huobi = huobi["default"];
596
598
  exports.hyperliquid = hyperliquid["default"];
597
599
  exports.independentreserve = independentreserve["default"];
598
600
  exports.indodax = indodax["default"];
601
+ exports.iranexchange = iranexchange["default"];
599
602
  exports.jibitex = jibitex["default"];
600
603
  exports.kcex = kcex["default"];
601
604
  exports.kifpoolme = kifpoolme["default"];
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var Exchange$1 = require('../base/Exchange.js');
6
+
7
+ // ----------------------------------------------------------------------------
8
+ class Exchange extends Exchange$1["default"] {
9
+ }
10
+
11
+ exports["default"] = Exchange;
@@ -0,0 +1,400 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var iranexchange$1 = require('./abstract/iranexchange.js');
6
+
7
+ // ----------------------------------------------------------------------------
8
+ // ---------------------------------------------------------------------------
9
+ /**
10
+ * @class iranexchange
11
+ * @augments Exchange
12
+ * @description Set rateLimit to 1000 if fully verified
13
+ */
14
+ class iranexchange extends iranexchange$1["default"] {
15
+ describe() {
16
+ return this.deepExtend(super.describe(), {
17
+ 'id': 'iranexchange',
18
+ 'name': 'Iran Exchange',
19
+ 'countries': ['IR'],
20
+ 'rateLimit': 1000,
21
+ 'version': '1',
22
+ 'certified': false,
23
+ 'pro': false,
24
+ 'timeout': 30000,
25
+ 'has': {
26
+ 'CORS': undefined,
27
+ 'spot': false,
28
+ 'margin': false,
29
+ 'swap': false,
30
+ 'future': false,
31
+ 'option': false,
32
+ 'addMargin': false,
33
+ 'cancelAllOrders': false,
34
+ 'cancelOrder': false,
35
+ 'cancelOrders': false,
36
+ 'createDepositAddress': false,
37
+ 'createOrder': false,
38
+ 'createStopLimitOrder': false,
39
+ 'createStopMarketOrder': false,
40
+ 'createStopOrder': false,
41
+ 'editOrder': false,
42
+ 'fetchBalance': false,
43
+ 'fetchBorrowInterest': false,
44
+ 'fetchBorrowRateHistories': false,
45
+ 'fetchBorrowRateHistory': false,
46
+ 'fetchClosedOrders': false,
47
+ 'fetchCrossBorrowRate': false,
48
+ 'fetchCrossBorrowRates': false,
49
+ 'fetchCurrencies': false,
50
+ 'fetchDepositAddress': false,
51
+ 'fetchDeposits': false,
52
+ 'fetchFundingHistory': false,
53
+ 'fetchFundingRate': false,
54
+ 'fetchFundingRateHistory': false,
55
+ 'fetchFundingRates': false,
56
+ 'fetchIndexOHLCV': false,
57
+ 'fetchIsolatedBorrowRate': false,
58
+ 'fetchIsolatedBorrowRates': false,
59
+ 'fetchL2OrderBook': false,
60
+ 'fetchLedger': false,
61
+ 'fetchLedgerEntry': false,
62
+ 'fetchLeverageTiers': false,
63
+ 'fetchMarkets': true,
64
+ 'fetchMarkOHLCV': false,
65
+ 'fetchMyTrades': false,
66
+ 'fetchOHLCV': false,
67
+ 'fetchOpenInterestHistory': false,
68
+ 'fetchOpenOrders': false,
69
+ 'fetchOrder': false,
70
+ 'fetchOrderBook': false,
71
+ 'fetchOrders': false,
72
+ 'fetchOrderTrades': 'emulated',
73
+ 'fetchPositions': false,
74
+ 'fetchPremiumIndexOHLCV': false,
75
+ 'fetchTicker': true,
76
+ 'fetchTickers': true,
77
+ 'fetchTime': false,
78
+ 'fetchTrades': false,
79
+ 'fetchTradingFee': false,
80
+ 'fetchTradingFees': false,
81
+ 'fetchWithdrawals': false,
82
+ 'otc': true,
83
+ 'setLeverage': false,
84
+ 'setMarginMode': false,
85
+ 'transfer': false,
86
+ 'withdraw': false,
87
+ },
88
+ 'comment': 'This comment is optional',
89
+ 'urls': {
90
+ 'logo': 'https://cdn.arz.digital/cr-odin/img/exchanges/iran-exchange/64x64.png',
91
+ 'api': {
92
+ 'public': 'https://api.iranexchange.com/api/public/modules/crypto',
93
+ },
94
+ 'www': 'https://iranexchange.com/',
95
+ 'doc': [
96
+ 'https://iranexchange.com/',
97
+ ],
98
+ },
99
+ 'api': {
100
+ 'public': {
101
+ 'get': {
102
+ 'v1/client/listProduct': 1,
103
+ 'v1/client/getBySymbol': 1,
104
+ },
105
+ },
106
+ },
107
+ 'fees': {
108
+ 'trading': {
109
+ 'tierBased': false,
110
+ 'percentage': true,
111
+ 'maker': this.parseNumber('0.001'),
112
+ 'taker': this.parseNumber('0.001'),
113
+ },
114
+ },
115
+ });
116
+ }
117
+ async fetchMarkets(params = {}) {
118
+ /**
119
+ * @method
120
+ * @name iranexchange#fetchMarkets
121
+ * @description retrieves data on all markets for iranexchange
122
+ * @see https://iranexchange.co/
123
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
124
+ * @returns {object[]} an array of objects representing market data
125
+ */
126
+ const response = await this.publicGetV1ClientListProduct();
127
+ const markets = this.safeList(response, 'data');
128
+ const result = [];
129
+ for (let i = 0; i < markets.length; i++) {
130
+ const market = this.parseMarket(markets[i]);
131
+ result.push(market);
132
+ }
133
+ return result;
134
+ }
135
+ parseMarket(market) {
136
+ // {
137
+ // _id: "60b08a57b202353abb592032",
138
+ // name: "Bitcoin",
139
+ // fa_name: "بیت کوین",
140
+ // symbol: "BTC",
141
+ // slug: "bitcoin",
142
+ // is_sell_to_customer_active: 1,
143
+ // is_fast_sell_to_customer_active: 1,
144
+ // is_buy_from_customer_active: 1,
145
+ // logo: "https://iranexchange.com/strapi/media/BTC_78d99b9d12.png",
146
+ // dollar_price: 89240.18,
147
+ // sell_to_iranicard_currency_price: 1234526,
148
+ // buy_from_iranicard_currency_price: 1239474,
149
+ // fast_sell_to_iranicard_currency_price: 1234526,
150
+ // buy_from_iranicard_network_list: [
151
+ // {
152
+ // network: "BTC",
153
+ // name: "Bitcoin",
154
+ // addressRegex: "^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$|^[(bc1q)|(bc1p)][0-9A-Za-z]{37,62}$",
155
+ // coin: "BTC",
156
+ // withdrawEnable: true,
157
+ // depositEnable: true,
158
+ // withdrawMin: "0.000100000",
159
+ // withdrawMax: null,
160
+ // withdrawFee: "0.000100000",
161
+ // sameAddress: false,
162
+ // memoRegex: null,
163
+ // tradeEnable: true
164
+ // }
165
+ // ],
166
+ // sell_to_iranicard_network_list: [
167
+ // {
168
+ // network: "BTC",
169
+ // name: "Bitcoin",
170
+ // addressRegex: "^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$|^[(bc1q)|(bc1p)][0-9A-Za-z]{37,62}$",
171
+ // coin: "BTC",
172
+ // withdrawEnable: true,
173
+ // depositEnable: true,
174
+ // withdrawMin: "0.000100000",
175
+ // withdrawMax: null,
176
+ // withdrawFee: "0.000100000",
177
+ // sameAddress: false,
178
+ // memoRegex: null,
179
+ // tradeEnable: true
180
+ // }
181
+ // ],
182
+ // is_price_maker_active: 1,
183
+ // quotation: {
184
+ // maxPrice: "90199.99",
185
+ // minPrice: "88925",
186
+ // dailyChangePercent: "-0.26"
187
+ // },
188
+ // dailyChangePercent: -0.26,
189
+ // order: 0,
190
+ // stock_status: "in_stock",
191
+ // stock_label: null,
192
+ // stock_description: null
193
+ // },
194
+ const id = this.safeString(market, 'symbol') + '_' + 'IRT';
195
+ let baseId = this.safeString(market, 'symbol');
196
+ let quoteId = 'IRT';
197
+ const base = this.safeCurrencyCode(baseId);
198
+ const quote = this.safeCurrencyCode(quoteId);
199
+ baseId = baseId.toLowerCase();
200
+ quoteId = quoteId.toLowerCase();
201
+ return {
202
+ 'id': id,
203
+ 'symbol': base + '/' + quote,
204
+ 'base': base,
205
+ 'quote': quote,
206
+ 'settle': undefined,
207
+ 'baseId': baseId,
208
+ 'quoteId': quoteId,
209
+ 'settleId': undefined,
210
+ 'type': 'otc',
211
+ 'spot': false,
212
+ 'margin': false,
213
+ 'swap': false,
214
+ 'future': false,
215
+ 'option': false,
216
+ 'active': true,
217
+ 'contract': false,
218
+ 'linear': undefined,
219
+ 'inverse': undefined,
220
+ 'contractSize': undefined,
221
+ 'expiry': undefined,
222
+ 'expiryDatetime': undefined,
223
+ 'strike': undefined,
224
+ 'optionType': undefined,
225
+ 'precision': {
226
+ 'amount': undefined,
227
+ 'price': undefined,
228
+ },
229
+ 'limits': {
230
+ 'leverage': {
231
+ 'min': undefined,
232
+ 'max': undefined,
233
+ },
234
+ 'amount': {
235
+ 'min': undefined,
236
+ 'max': undefined,
237
+ },
238
+ 'price': {
239
+ 'min': undefined,
240
+ 'max': undefined,
241
+ },
242
+ 'cost': {
243
+ 'min': undefined,
244
+ 'max': undefined,
245
+ },
246
+ },
247
+ 'created': undefined,
248
+ 'info': market,
249
+ };
250
+ }
251
+ async fetchTickers(symbols = undefined, params = {}) {
252
+ /**
253
+ * @method
254
+ * @name iranexchange#fetchTickers
255
+ * @description fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
256
+ * @see https://iranexchange.co/
257
+ * @param {string[]|undefined} symbols unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
258
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
259
+ * @returns {object} a dictionary of [ticker structures]{@link https://docs.ccxt.com/#/?id=ticker-structure}
260
+ */
261
+ await this.loadMarkets();
262
+ if (symbols !== undefined) {
263
+ symbols = this.marketSymbols(symbols);
264
+ }
265
+ const response = await this.publicGetV1ClientListProduct();
266
+ const markets = this.safeList(response, 'data');
267
+ const result = {};
268
+ for (let i = 0; i < markets.length; i++) {
269
+ const ticker = this.parseTicker(markets[i]);
270
+ const symbol = ticker['symbol'];
271
+ result[symbol] = ticker;
272
+ }
273
+ return this.filterByArrayTickers(result, 'symbol', symbols);
274
+ }
275
+ async fetchTicker(symbol, params = {}) {
276
+ /**
277
+ * @method
278
+ * @name iranexchange#fetchTicker
279
+ * @description fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
280
+ * @see https://iranexchange.co/
281
+ * @param {string} symbol unified symbol of the market to fetch the ticker for
282
+ * @param {object} [params] extra parameters specific to the exchange API endpoint
283
+ * @returns {object} a [ticker structure]{@link https://docs.ccxt.com/#/?id=ticker-structure}
284
+ */
285
+ await this.loadMarkets();
286
+ const market = this.market(symbol);
287
+ const request = {
288
+ 'id': market['base'],
289
+ };
290
+ const response = await this.publicGetV1ClientGetBySymbol(request);
291
+ const marketData = this.safeDict(response, 'data');
292
+ const ticker = this.parseTicker(marketData);
293
+ return ticker;
294
+ }
295
+ parseTicker(ticker, market = undefined) {
296
+ // {
297
+ // _id: "60b08a57b202353abb592032",
298
+ // name: "Bitcoin",
299
+ // fa_name: "بیت کوین",
300
+ // symbol: "BTC",
301
+ // slug: "bitcoin",
302
+ // is_sell_to_customer_active: 1,
303
+ // is_fast_sell_to_customer_active: 1,
304
+ // is_buy_from_customer_active: 1,
305
+ // logo: "https://iranexchange.com/strapi/media/BTC_78d99b9d12.png",
306
+ // dollar_price: 89240.18,
307
+ // sell_to_iranicard_currency_price: 1234526,
308
+ // buy_from_iranicard_currency_price: 1239474,
309
+ // fast_sell_to_iranicard_currency_price: 1234526,
310
+ // buy_from_iranicard_network_list: [
311
+ // {
312
+ // network: "BTC",
313
+ // name: "Bitcoin",
314
+ // addressRegex: "^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$|^[(bc1q)|(bc1p)][0-9A-Za-z]{37,62}$",
315
+ // coin: "BTC",
316
+ // withdrawEnable: true,
317
+ // depositEnable: true,
318
+ // withdrawMin: "0.000100000",
319
+ // withdrawMax: null,
320
+ // withdrawFee: "0.000100000",
321
+ // sameAddress: false,
322
+ // memoRegex: null,
323
+ // tradeEnable: true
324
+ // }
325
+ // ],
326
+ // sell_to_iranicard_network_list: [
327
+ // {
328
+ // network: "BTC",
329
+ // name: "Bitcoin",
330
+ // addressRegex: "^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$|^[(bc1q)|(bc1p)][0-9A-Za-z]{37,62}$",
331
+ // coin: "BTC",
332
+ // withdrawEnable: true,
333
+ // depositEnable: true,
334
+ // withdrawMin: "0.000100000",
335
+ // withdrawMax: null,
336
+ // withdrawFee: "0.000100000",
337
+ // sameAddress: false,
338
+ // memoRegex: null,
339
+ // tradeEnable: true
340
+ // }
341
+ // ],
342
+ // is_price_maker_active: 1,
343
+ // quotation: {
344
+ // maxPrice: "90199.99",
345
+ // minPrice: "88925",
346
+ // dailyChangePercent: "-0.26"
347
+ // },
348
+ // dailyChangePercent: -0.26,
349
+ // order: 0,
350
+ // stock_status: "in_stock",
351
+ // stock_label: null,
352
+ // stock_description: null
353
+ // }
354
+ const marketType = 'otc';
355
+ const marketId = this.safeString(ticker, 'symbol') + '_' + 'IRT';
356
+ const symbol = this.safeSymbol(marketId, market, undefined, marketType);
357
+ const quotation = this.safeValue(ticker, 'quotation', {});
358
+ const dollar_price = this.safeFloat(ticker, 'dollar_price', 0);
359
+ const high = this.safeFloat(quotation, 'maxPrice', 0) * dollar_price;
360
+ const low = this.safeFloat(quotation, 'minPrice', 0) * dollar_price;
361
+ const bid = this.safeFloat(ticker, 'sell_to_iranicard_currency_price', 0) * dollar_price;
362
+ const ask = this.safeFloat(ticker, 'buy_from_iranicard_currency_price', 0) * dollar_price;
363
+ const last = this.safeFloat(ticker, 'sell_to_iranicard_currency_price', 0) * dollar_price;
364
+ const change = this.safeFloat(quotation, 'dailyChangePercent', 0);
365
+ return this.safeTicker({
366
+ 'symbol': symbol,
367
+ 'timestamp': undefined,
368
+ 'datetime': undefined,
369
+ 'high': high,
370
+ 'low': low,
371
+ 'bid': bid,
372
+ 'bidVolume': undefined,
373
+ 'ask': ask,
374
+ 'askVolume': undefined,
375
+ 'vwap': undefined,
376
+ 'open': last,
377
+ 'close': last,
378
+ 'last': last,
379
+ 'previousClose': undefined,
380
+ 'change': change,
381
+ 'percentage': change,
382
+ 'average': undefined,
383
+ 'baseVolume': undefined,
384
+ 'quoteVolume': undefined,
385
+ 'info': ticker,
386
+ }, market);
387
+ }
388
+ sign(path, api = 'public', method = 'GET', params = {}, headers = undefined, body = undefined) {
389
+ const query = this.omit(params, this.extractParams(path));
390
+ let url = this.urls['api']['public'] + '/' + path + '?' + this.urlencode(query);
391
+ const pair_id = this.safeString(params, 'id');
392
+ if (pair_id !== undefined) {
393
+ url = this.urls['api']['public'] + '/' + path + '/' + pair_id;
394
+ }
395
+ headers = { 'Content-Type': 'application/json' };
396
+ return { 'url': url, 'method': method, 'body': body, 'headers': headers };
397
+ }
398
+ }
399
+
400
+ exports["default"] = iranexchange;
package/js/ccxt.d.ts CHANGED
@@ -4,7 +4,7 @@ import * as functions from './src/base/functions.js';
4
4
  import * as errors from './src/base/errors.js';
5
5
  import type { Int, int, Str, Strings, Num, Bool, IndexType, OrderSide, OrderType, MarketType, SubType, Dict, NullableDict, List, NullableList, Fee, OHLCV, OHLCVC, implicitReturnType, Market, Currency, Dictionary, MinMax, FeeInterface, TradingFeeInterface, MarketMarginModes, MarketInterface, Trade, Order, OrderBook, Ticker, Transaction, Tickers, CurrencyInterface, Balance, BalanceAccount, Account, PartialBalances, Balances, DepositAddress, WithdrawalResponse, FundingRate, FundingRates, Position, BorrowInterest, LeverageTier, LedgerEntry, DepositWithdrawFeeNetwork, DepositWithdrawFee, TransferEntry, CrossBorrowRate, IsolatedBorrowRate, FundingRateHistory, OpenInterest, Liquidation, OrderRequest, CancellationRequest, FundingHistory, MarginMode, Greeks, Conversion, Option, LastPrice, Leverage, MarginModification, Leverages, LastPrices, Currencies, TradingFees, MarginModes, OptionChain, IsolatedBorrowRates, CrossBorrowRates, LeverageTiers, LongShortRatio, OrderBooks, OpenInterests, ConstructorArgs } from './src/base/types.js';
6
6
  import { BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, ManualInteractionNeeded, RestrictedLocation, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, ChecksumError, RequestTimeout, BadResponse, NullResponse, CancelPending, UnsubscribeError } from './src/base/errors.js';
7
- declare const version = "4.9.22";
7
+ declare const version = "4.9.25";
8
8
  import abantether from './src/abantether.js';
9
9
  import afratether from './src/afratether.js';
10
10
  import alpaca from './src/alpaca.js';
@@ -93,6 +93,7 @@ import huobi from './src/huobi.js';
93
93
  import hyperliquid from './src/hyperliquid.js';
94
94
  import independentreserve from './src/independentreserve.js';
95
95
  import indodax from './src/indodax.js';
96
+ import iranexchange from './src/iranexchange.js';
96
97
  import jibitex from './src/jibitex.js';
97
98
  import kcex from './src/kcex.js';
98
99
  import kifpoolme from './src/kifpoolme.js';
@@ -312,6 +313,7 @@ declare const exchanges: {
312
313
  hyperliquid: typeof hyperliquid;
313
314
  independentreserve: typeof independentreserve;
314
315
  indodax: typeof indodax;
316
+ iranexchange: typeof iranexchange;
315
317
  jibitex: typeof jibitex;
316
318
  kcex: typeof kcex;
317
319
  kifpoolme: typeof kifpoolme;
@@ -614,6 +616,7 @@ declare const ccxt: {
614
616
  hyperliquid: typeof hyperliquid;
615
617
  independentreserve: typeof independentreserve;
616
618
  indodax: typeof indodax;
619
+ iranexchange: typeof iranexchange;
617
620
  jibitex: typeof jibitex;
618
621
  kcex: typeof kcex;
619
622
  kifpoolme: typeof kifpoolme;
@@ -672,5 +675,5 @@ declare const ccxt: {
672
675
  zaif: typeof zaif;
673
676
  zonda: typeof zonda;
674
677
  } & typeof functions & typeof errors;
675
- export { version, Exchange, exchanges, pro, Precise, functions, errors, BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, ManualInteractionNeeded, RestrictedLocation, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, ChecksumError, RequestTimeout, BadResponse, NullResponse, CancelPending, UnsubscribeError, Int, int, Str, Strings, Num, Bool, IndexType, OrderSide, OrderType, MarketType, SubType, Dict, NullableDict, List, NullableList, Fee, OHLCV, OHLCVC, implicitReturnType, Market, Currency, ConstructorArgs, Dictionary, MinMax, FeeInterface, TradingFeeInterface, MarketMarginModes, MarketInterface, Trade, Order, OrderBook, OrderBooks, Ticker, Transaction, Tickers, CurrencyInterface, Balance, BalanceAccount, Account, PartialBalances, Balances, DepositAddress, WithdrawalResponse, FundingRate, FundingRates, Position, BorrowInterest, LeverageTier, LedgerEntry, DepositWithdrawFeeNetwork, DepositWithdrawFee, TransferEntry, CrossBorrowRate, IsolatedBorrowRate, FundingRateHistory, OpenInterest, OpenInterests, Liquidation, OrderRequest, CancellationRequest, FundingHistory, MarginMode, Greeks, Conversion, Option, LastPrice, Leverage, LongShortRatio, MarginModification, Leverages, LastPrices, Currencies, TradingFees, MarginModes, OptionChain, IsolatedBorrowRates, CrossBorrowRates, LeverageTiers, abantether, afratether, alpaca, apex, arzinja, arzplus, ascendex, bequant, bigone, binance, binancecoinm, binanceus, binanceusdm, bingx, bit24, bit2c, bitbank, bitbarg, bitbns, bitfinex, bitflyer, bitget, bithumb, bitimen, bitir, bitmart, bitmex, bitopro, bitpin, bitrue, bitso, bitstamp, bitteam, bittrade, bitunix, bitvavo, blockchaincom, blofin, btcalpha, btcbox, btcmarkets, btcturk, bybit, bydfi, cafearz, cex, coinbase, coinbaseadvanced, coinbaseexchange, coinbaseinternational, coincatch, coincheck, coinex, coinmate, coinmetro, coinone, coinsph, coinspot, cryptocom, cryptomus, defx, delta, deribit, derive, digifinex, ellipx, eterex, excoino, exir, exmo, exnovin, farhadexchange, fmfwio, foxbit, gate, gateio, gemini, hamtapay, hashkey, hibachi, hitbtc, hitobit, hollaex, htx, huobi, hyperliquid, independentreserve, indodax, jibitex, kcex, kifpoolme, kraken, krakenfutures, kucoin, kucoinfutures, latoken, lbank, luno, mazdax, mercado, mexc, modetrade, myokx, ndax, nobitex, novadax, oceanex, okcoin, okexchange, okx, okxus, ompfinex, onetrading, oxfun, p2b, paradex, paymium, phemex, pingi, poloniex, pooleno, probit, ramzinex, sarmayex, sarrafex, tabdeal, tehran_exchange, tetherland, timex, tokocrypto, toobit, tradeogre, twox, ubitex, upbit, vertex, wallex, wavesexchange, whitebit, woo, woofipro, xt, yobit, zaif, zonda, };
678
+ export { version, Exchange, exchanges, pro, Precise, functions, errors, BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, ManualInteractionNeeded, RestrictedLocation, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, ChecksumError, RequestTimeout, BadResponse, NullResponse, CancelPending, UnsubscribeError, Int, int, Str, Strings, Num, Bool, IndexType, OrderSide, OrderType, MarketType, SubType, Dict, NullableDict, List, NullableList, Fee, OHLCV, OHLCVC, implicitReturnType, Market, Currency, ConstructorArgs, Dictionary, MinMax, FeeInterface, TradingFeeInterface, MarketMarginModes, MarketInterface, Trade, Order, OrderBook, OrderBooks, Ticker, Transaction, Tickers, CurrencyInterface, Balance, BalanceAccount, Account, PartialBalances, Balances, DepositAddress, WithdrawalResponse, FundingRate, FundingRates, Position, BorrowInterest, LeverageTier, LedgerEntry, DepositWithdrawFeeNetwork, DepositWithdrawFee, TransferEntry, CrossBorrowRate, IsolatedBorrowRate, FundingRateHistory, OpenInterest, OpenInterests, Liquidation, OrderRequest, CancellationRequest, FundingHistory, MarginMode, Greeks, Conversion, Option, LastPrice, Leverage, LongShortRatio, MarginModification, Leverages, LastPrices, Currencies, TradingFees, MarginModes, OptionChain, IsolatedBorrowRates, CrossBorrowRates, LeverageTiers, abantether, afratether, alpaca, apex, arzinja, arzplus, ascendex, bequant, bigone, binance, binancecoinm, binanceus, binanceusdm, bingx, bit24, bit2c, bitbank, bitbarg, bitbns, bitfinex, bitflyer, bitget, bithumb, bitimen, bitir, bitmart, bitmex, bitopro, bitpin, bitrue, bitso, bitstamp, bitteam, bittrade, bitunix, bitvavo, blockchaincom, blofin, btcalpha, btcbox, btcmarkets, btcturk, bybit, bydfi, cafearz, cex, coinbase, coinbaseadvanced, coinbaseexchange, coinbaseinternational, coincatch, coincheck, coinex, coinmate, coinmetro, coinone, coinsph, coinspot, cryptocom, cryptomus, defx, delta, deribit, derive, digifinex, ellipx, eterex, excoino, exir, exmo, exnovin, farhadexchange, fmfwio, foxbit, gate, gateio, gemini, hamtapay, hashkey, hibachi, hitbtc, hitobit, hollaex, htx, huobi, hyperliquid, independentreserve, indodax, iranexchange, jibitex, kcex, kifpoolme, kraken, krakenfutures, kucoin, kucoinfutures, latoken, lbank, luno, mazdax, mercado, mexc, modetrade, myokx, ndax, nobitex, novadax, oceanex, okcoin, okexchange, okx, okxus, ompfinex, onetrading, oxfun, p2b, paradex, paymium, phemex, pingi, poloniex, pooleno, probit, ramzinex, sarmayex, sarrafex, tabdeal, tehran_exchange, tetherland, timex, tokocrypto, toobit, tradeogre, twox, ubitex, upbit, vertex, wallex, wavesexchange, whitebit, woo, woofipro, xt, yobit, zaif, zonda, };
676
679
  export default ccxt;
package/js/ccxt.js CHANGED
@@ -38,7 +38,7 @@ import * as errors from './src/base/errors.js';
38
38
  import { BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, ManualInteractionNeeded, RestrictedLocation, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, ChecksumError, RequestTimeout, BadResponse, NullResponse, CancelPending, UnsubscribeError } from './src/base/errors.js';
39
39
  //-----------------------------------------------------------------------------
40
40
  // this is updated by vss.js when building
41
- const version = '4.9.22';
41
+ const version = '4.9.25';
42
42
  Exchange.ccxtVersion = version;
43
43
  //-----------------------------------------------------------------------------
44
44
  import abantether from './src/abantether.js';
@@ -129,6 +129,7 @@ import huobi from './src/huobi.js';
129
129
  import hyperliquid from './src/hyperliquid.js';
130
130
  import independentreserve from './src/independentreserve.js';
131
131
  import indodax from './src/indodax.js';
132
+ import iranexchange from './src/iranexchange.js';
132
133
  import jibitex from './src/jibitex.js';
133
134
  import kcex from './src/kcex.js';
134
135
  import kifpoolme from './src/kifpoolme.js';
@@ -349,6 +350,7 @@ const exchanges = {
349
350
  'hyperliquid': hyperliquid,
350
351
  'independentreserve': independentreserve,
351
352
  'indodax': indodax,
353
+ 'iranexchange': iranexchange,
352
354
  'jibitex': jibitex,
353
355
  'kcex': kcex,
354
356
  'kifpoolme': kifpoolme,
@@ -494,6 +496,6 @@ pro.exchanges = Object.keys(pro);
494
496
  pro['Exchange'] = Exchange; // now the same for rest and ts
495
497
  //-----------------------------------------------------------------------------
496
498
  const ccxt = Object.assign({ version, Exchange, Precise, 'exchanges': Object.keys(exchanges), 'pro': pro }, exchanges, functions, errors);
497
- export { version, Exchange, exchanges, pro, Precise, functions, errors, BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, ManualInteractionNeeded, RestrictedLocation, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, ChecksumError, RequestTimeout, BadResponse, NullResponse, CancelPending, UnsubscribeError, abantether, afratether, alpaca, apex, arzinja, arzplus, ascendex, bequant, bigone, binance, binancecoinm, binanceus, binanceusdm, bingx, bit24, bit2c, bitbank, bitbarg, bitbns, bitfinex, bitflyer, bitget, bithumb, bitimen, bitir, bitmart, bitmex, bitopro, bitpin, bitrue, bitso, bitstamp, bitteam, bittrade, bitunix, bitvavo, blockchaincom, blofin, btcalpha, btcbox, btcmarkets, btcturk, bybit, bydfi, cafearz, cex, coinbase, coinbaseadvanced, coinbaseexchange, coinbaseinternational, coincatch, coincheck, coinex, coinmate, coinmetro, coinone, coinsph, coinspot, cryptocom, cryptomus, defx, delta, deribit, derive, digifinex, ellipx, eterex, excoino, exir, exmo, exnovin, farhadexchange, fmfwio, foxbit, gate, gateio, gemini, hamtapay, hashkey, hibachi, hitbtc, hitobit, hollaex, htx, huobi, hyperliquid, independentreserve, indodax, jibitex, kcex, kifpoolme, kraken, krakenfutures, kucoin, kucoinfutures, latoken, lbank, luno, mazdax, mercado, mexc, modetrade, myokx, ndax, nobitex, novadax, oceanex, okcoin, okexchange, okx, okxus, ompfinex, onetrading, oxfun, p2b, paradex, paymium, phemex, pingi, poloniex, pooleno, probit, ramzinex, sarmayex, sarrafex, tabdeal, tehran_exchange, tetherland, timex, tokocrypto, toobit, tradeogre, twox, ubitex, upbit, vertex, wallex, wavesexchange, whitebit, woo, woofipro, xt, yobit, zaif, zonda, };
499
+ export { version, Exchange, exchanges, pro, Precise, functions, errors, BaseError, ExchangeError, AuthenticationError, PermissionDenied, AccountNotEnabled, AccountSuspended, ArgumentsRequired, BadRequest, BadSymbol, OperationRejected, NoChange, MarginModeAlreadySet, MarketClosed, ManualInteractionNeeded, RestrictedLocation, InsufficientFunds, InvalidAddress, AddressPending, InvalidOrder, OrderNotFound, OrderNotCached, OrderImmediatelyFillable, OrderNotFillable, DuplicateOrderId, ContractUnavailable, NotSupported, InvalidProxySettings, ExchangeClosedByUser, OperationFailed, NetworkError, DDoSProtection, RateLimitExceeded, ExchangeNotAvailable, OnMaintenance, InvalidNonce, ChecksumError, RequestTimeout, BadResponse, NullResponse, CancelPending, UnsubscribeError, abantether, afratether, alpaca, apex, arzinja, arzplus, ascendex, bequant, bigone, binance, binancecoinm, binanceus, binanceusdm, bingx, bit24, bit2c, bitbank, bitbarg, bitbns, bitfinex, bitflyer, bitget, bithumb, bitimen, bitir, bitmart, bitmex, bitopro, bitpin, bitrue, bitso, bitstamp, bitteam, bittrade, bitunix, bitvavo, blockchaincom, blofin, btcalpha, btcbox, btcmarkets, btcturk, bybit, bydfi, cafearz, cex, coinbase, coinbaseadvanced, coinbaseexchange, coinbaseinternational, coincatch, coincheck, coinex, coinmate, coinmetro, coinone, coinsph, coinspot, cryptocom, cryptomus, defx, delta, deribit, derive, digifinex, ellipx, eterex, excoino, exir, exmo, exnovin, farhadexchange, fmfwio, foxbit, gate, gateio, gemini, hamtapay, hashkey, hibachi, hitbtc, hitobit, hollaex, htx, huobi, hyperliquid, independentreserve, indodax, iranexchange, jibitex, kcex, kifpoolme, kraken, krakenfutures, kucoin, kucoinfutures, latoken, lbank, luno, mazdax, mercado, mexc, modetrade, myokx, ndax, nobitex, novadax, oceanex, okcoin, okexchange, okx, okxus, ompfinex, onetrading, oxfun, p2b, paradex, paymium, phemex, pingi, poloniex, pooleno, probit, ramzinex, sarmayex, sarrafex, tabdeal, tehran_exchange, tetherland, timex, tokocrypto, toobit, tradeogre, twox, ubitex, upbit, vertex, wallex, wavesexchange, whitebit, woo, woofipro, xt, yobit, zaif, zonda, };
498
500
  export default ccxt;
499
501
  //-----------------------------------------------------------------------------
@@ -0,0 +1,9 @@
1
+ import { implicitReturnType } from '../base/types.js';
2
+ import { Exchange as _Exchange } from '../base/Exchange.js';
3
+ interface Exchange {
4
+ publicGetV1ClientListProduct(params?: {}): Promise<implicitReturnType>;
5
+ publicGetV1ClientGetBySymbol(params?: {}): Promise<implicitReturnType>;
6
+ }
7
+ declare abstract class Exchange extends _Exchange {
8
+ }
9
+ export default Exchange;
@@ -0,0 +1,11 @@
1
+ // ----------------------------------------------------------------------------
2
+
3
+ // PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN:
4
+ // https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code
5
+ // EDIT THE CORRESPONDENT .ts FILE INSTEAD
6
+
7
+ // -------------------------------------------------------------------------------
8
+ import { Exchange as _Exchange } from '../base/Exchange.js';
9
+ class Exchange extends _Exchange {
10
+ }
11
+ export default Exchange;
@@ -252,7 +252,7 @@ export default class Exchange {
252
252
  outputLen: number;
253
253
  blockLen: number;
254
254
  create(): import("../static_dependencies/noble-hashes/utils.js").Hash<import("../static_dependencies/noble-hashes/utils.js").Hash<any>>;
255
- }, digest?: "hex" | "base64" | "binary") => any;
255
+ }, digest?: "binary" | "hex" | "base64") => any;
256
256
  arrayConcat: (a: any[], b: any[]) => any[];
257
257
  encode: (str: string) => Uint8Array;
258
258
  urlencode: (object: object, sort?: boolean) => string;
@@ -261,7 +261,7 @@ export default class Exchange {
261
261
  outputLen: number;
262
262
  blockLen: number;
263
263
  create(): import("../static_dependencies/noble-hashes/utils.js").Hash<import("../static_dependencies/noble-hashes/utils.js").Hash<any>>;
264
- }, digest?: "hex" | "base64" | "binary") => any;
264
+ }, digest?: "binary" | "hex" | "base64") => any;
265
265
  numberToString: typeof functions.numberToString;
266
266
  parseTimeframe: (timeframe: string) => number;
267
267
  safeInteger2: (o: any, k1: IndexType, k2: IndexType, $default?: number) => number;
@@ -311,7 +311,7 @@ export default class coinbaseexchange extends Exchange {
311
311
  * @returns {object[]} a list of [transaction structures]{@link https://docs.ccxt.com/#/?id=transaction-structure}
312
312
  */
313
313
  fetchWithdrawals(code?: Str, since?: Int, limit?: Int, params?: {}): Promise<Transaction[]>;
314
- parseTransactionStatus(transaction: any): "canceled" | "pending" | "ok" | "failed";
314
+ parseTransactionStatus(transaction: any): "pending" | "ok" | "failed" | "canceled";
315
315
  parseTransaction(transaction: Dict, currency?: Currency): Transaction;
316
316
  /**
317
317
  * @method
@@ -0,0 +1,21 @@
1
+ import Exchange from './abstract/iranexchange.js';
2
+ import { Market, Strings, Ticker, Tickers } from './base/types.js';
3
+ /**
4
+ * @class iranexchange
5
+ * @augments Exchange
6
+ * @description Set rateLimit to 1000 if fully verified
7
+ */
8
+ export default class iranexchange extends Exchange {
9
+ describe(): any;
10
+ fetchMarkets(params?: {}): Promise<Market[]>;
11
+ parseMarket(market: any): Market;
12
+ fetchTickers(symbols?: Strings, params?: {}): Promise<Tickers>;
13
+ fetchTicker(symbol: string, params?: {}): Promise<Ticker>;
14
+ parseTicker(ticker: any, market?: Market): Ticker;
15
+ sign(path: any, api?: string, method?: string, params?: {}, headers?: any, body?: any): {
16
+ url: string;
17
+ method: string;
18
+ body: any;
19
+ headers: any;
20
+ };
21
+ }