@proton/wrap-constants 0.2.71 → 0.2.73

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/index.js CHANGED
@@ -1,8 +1,3809 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
1
29
 
2
- 'use strict'
30
+ // src/index.ts
31
+ var src_exports = {};
32
+ __export(src_exports, {
33
+ Chains: () => Chains,
34
+ ExtendedAssetParser: () => ExtendedAssetParser,
35
+ FEE_FACTOR: () => FEE_FACTOR,
36
+ Graph: () => Graph,
37
+ ILink: () => ILink,
38
+ INode: () => INode,
39
+ ITopics: () => ITopics,
40
+ Networks: () => Networks,
41
+ Providers: () => Providers,
42
+ Status: () => Status,
43
+ TOPICS: () => TOPICS,
44
+ Type: () => Type,
45
+ WRAP_AUTH_ACTION: () => WRAP_AUTH_ACTION,
46
+ WRAP_CONTRACT: () => WRAP_CONTRACT,
47
+ accountParser: () => accountParser,
48
+ addressParser: () => addressParser,
49
+ applyDiscountToFee: () => applyDiscountToFee,
50
+ authorizationParser: () => authorizationParser,
51
+ authorizationsParser: () => authorizationsParser,
52
+ baseActionParser: () => baseActionParser,
53
+ baseActionSerializedParser: () => baseActionSerializedParser,
54
+ bloksRatesParser: () => bloksRatesParser,
55
+ compute_liquidity: () => compute_liquidity,
56
+ compute_transfer: () => compute_transfer,
57
+ compute_transfer_curve: () => compute_transfer_curve,
58
+ createAbstractAuthParser: () => createAbstractAuthParser,
59
+ dailyParser: () => dailyParser,
60
+ depositBodyParser: () => depositBodyParser,
61
+ depthParser: () => depthParser,
62
+ exchangeRateParser: () => exchangeRateParser,
63
+ exchangeRatesParser: () => exchangeRatesParser,
64
+ explorerLinkByChain: () => explorerLinkByChain,
65
+ fillType: () => fillType,
66
+ generateAddressBodyParser: () => generateAddressBodyParser,
67
+ generateAddressResponse: () => generateAddressResponse,
68
+ generateAuthParser: () => generateAuthParser,
69
+ getDailyResponseParser: () => getDailyResponseParser,
70
+ getDepthParser: () => getDepthParser,
71
+ getDepthResponseParser: () => getDepthResponseParser,
72
+ getLeaderboardParser: () => getLeaderboardParser,
73
+ getLeaderboardResponseParser: () => getLeaderboardResponseParser,
74
+ getMarketsResponseParser: () => getMarketsResponseParser,
75
+ getOhlcvParser: () => getOhlcvParser,
76
+ getOhlcvResponseParser: () => getOhlcvResponseParser,
77
+ getOpenOrdersParser: () => getOpenOrdersParser,
78
+ getOpenOrdersResponseParser: () => getOpenOrdersResponseParser,
79
+ getOrderHistoryParser: () => getOrderHistoryParser,
80
+ getOrderHistoryResponseParser: () => getOrderHistoryResponseParser,
81
+ getOrderParser: () => getOrderParser,
82
+ getOrderResponseParser: () => getOrderResponseParser,
83
+ getReferralTotalsParser: () => getReferralTotalsParser,
84
+ getReferralTotalsResponseParser: () => getReferralTotalsResponseParser,
85
+ getReferralsParser: () => getReferralsParser,
86
+ getReferralsResponseParser: () => getReferralsResponseParser,
87
+ getSyncResponseParser: () => getSyncResponseParser,
88
+ getTradeHistoryParser: () => getTradeHistoryParser,
89
+ getTradeHistoryResponseParser: () => getTradeHistoryResponseParser,
90
+ getTradesParser: () => getTradesParser,
91
+ getTradesResponseParser: () => getTradesResponseParser,
92
+ initializeCoins: () => initializeCoins,
93
+ initializeConstants: () => initializeConstants,
94
+ isInputInvalid: () => isInputInvalid,
95
+ isSameToken: () => isSameToken,
96
+ leaderboardParser: () => leaderboardParser,
97
+ logStatus: () => logStatus,
98
+ loginAccountParamsV3Parser: () => loginAccountParamsV3Parser,
99
+ marketParser: () => marketParser,
100
+ median: () => median,
101
+ ohlcvParser: () => ohlcvParser,
102
+ orderHistoryParser: () => orderHistoryParser,
103
+ orderSide: () => orderSide,
104
+ orderType: () => orderType,
105
+ otcOrderResponseParser: () => otcOrderResponseParser,
106
+ otcQuoteBodyParser: () => otcQuoteBodyParser,
107
+ otcQuoteResponseParser: () => otcQuoteResponseParser,
108
+ protonExplorerTxUrl: () => protonExplorerTxUrl,
109
+ rateParser: () => rateParser,
110
+ refferalParser: () => refferalParser,
111
+ refferalTotalParser: () => refferalTotalParser,
112
+ similarChains: () => similarChains,
113
+ singleActionTransactionParser: () => singleActionTransactionParser,
114
+ syncParser: () => syncParser,
115
+ tradeParser: () => tradeParser,
116
+ transactionParser: () => transactionParser,
117
+ webauthActionParser: () => webauthActionParser,
118
+ withdrawBodyParser: () => withdrawBodyParser,
119
+ withdrawHistoryMetalResponseParser: () => withdrawHistoryMetalResponseParser,
120
+ withdrawHistoryMetalSwapParser: () => withdrawHistoryMetalSwapParser,
121
+ withdrawMetalResponseParser: () => withdrawMetalResponseParser,
122
+ withdrawalFeeQuoteParser: () => withdrawalFeeQuoteParser,
123
+ wrapParser: () => wrapParser,
124
+ wrapSetConfParser: () => wrapSetConfParser,
125
+ wrapStartParser: () => wrapStartParser
126
+ });
127
+ module.exports = __toCommonJS(src_exports);
3
128
 
4
- if (process.env.NODE_ENV === 'production') {
5
- module.exports = require('./wrap-constants.cjs.production.min.js')
6
- } else {
7
- module.exports = require('./wrap-constants.cjs.development.js')
129
+ // src/coins.ts
130
+ var Chains = /* @__PURE__ */ ((Chains2) => {
131
+ Chains2["BitcoinMainnet"] = "Bitcoin";
132
+ Chains2["BitcoinTestnet"] = "Bitcoin (Testnet)";
133
+ Chains2["EthereumMainnet"] = "Ethereum";
134
+ Chains2["EthereumRopsten"] = "Ethereum (Ropsten)";
135
+ Chains2["LitecoinMainnet"] = "Litecoin";
136
+ Chains2["LitecoinTestnet"] = "Litecoin (Testnet)";
137
+ Chains2["BitcoinCashMainnet"] = "Bitcoin Cash";
138
+ Chains2["BitcoinCashTestnet"] = "Bitcoin Cash (Testnet)";
139
+ Chains2["StellarMainnet"] = "Stellar";
140
+ Chains2["StellarTestnet"] = "Stellar (Testnet)";
141
+ Chains2["ProtonMainnet"] = "Proton";
142
+ Chains2["ProtonTestnet"] = "Proton (Testnet)";
143
+ Chains2["PolkadotMainnet"] = "Polkadot";
144
+ Chains2["BinanceBEP2"] = "Binance (BEP2)";
145
+ Chains2["BinanceBEP20"] = "Binance (BEP20)";
146
+ Chains2["EosMainnet"] = "EOS";
147
+ Chains2["EosTestnet"] = "EOS (Jungle Testnet)";
148
+ Chains2["HederaMainnet"] = "Hedera (Mainnet)";
149
+ Chains2["HederaTestnet"] = "Hedera (Testnet)";
150
+ Chains2["DogeMainnet"] = "Dogecoin";
151
+ Chains2["CardanoMainnet"] = "Cardano";
152
+ Chains2["AvalancheXChain"] = "Avalanche X-Chain";
153
+ Chains2["AvalancheCChain"] = "Avalanche C-Chain";
154
+ Chains2["PolygonMainnet"] = "Polygon";
155
+ Chains2["TerraMainnet"] = "Terra";
156
+ Chains2["RippleMainnet"] = "Ripple";
157
+ Chains2["SolanaMainnet"] = "Solana";
158
+ Chains2["XDCMainnet"] = "XDC Network";
159
+ Chains2["MetalXTestnet"] = "Metal X-Chain (Testnet)";
160
+ Chains2["MetalCTestnet"] = "Metal C-Chain (Testnet)";
161
+ Chains2["MetalCMainnet"] = "Metal C-Chain";
162
+ return Chains2;
163
+ })(Chains || {});
164
+ var Networks = /* @__PURE__ */ ((Networks2) => {
165
+ Networks2["Mainnet"] = "mainnet";
166
+ Networks2["Testnet"] = "testnet";
167
+ Networks2["Ropsten"] = "ropsten";
168
+ Networks2["ERC20"] = "erc20";
169
+ Networks2["BEP20"] = "bep20";
170
+ Networks2["XLM"] = "xlm";
171
+ Networks2["AVM"] = "avm";
172
+ Networks2["EVM"] = "evm";
173
+ return Networks2;
174
+ })(Networks || {});
175
+ var similarChains = {
176
+ ["Ethereum" /* EthereumMainnet */]: ["Binance (BEP20)" /* BinanceBEP20 */],
177
+ ["Binance (BEP20)" /* BinanceBEP20 */]: ["Ethereum" /* EthereumMainnet */]
178
+ };
179
+ var Providers = /* @__PURE__ */ ((Providers2) => {
180
+ Providers2["FIREBLOCKS"] = "fireblocks";
181
+ Providers2["METAL"] = "metal";
182
+ return Providers2;
183
+ })(Providers || {});
184
+ var explorerLinkByChain = {
185
+ ["Bitcoin" /* BitcoinMainnet */]: (txid) => `https://blockchain.com/btc/tx/${txid}`,
186
+ ["Bitcoin (Testnet)" /* BitcoinTestnet */]: (txid) => `https://blockstream.info/testnet/tx/${txid}`,
187
+ ["Ethereum" /* EthereumMainnet */]: (txid) => `https://etherscan.io/tx/${txid}`,
188
+ ["Ethereum (Ropsten)" /* EthereumRopsten */]: (txid) => `https://ropsten.etherscan.io/tx/${txid}`,
189
+ ["Litecoin" /* LitecoinMainnet */]: (txid) => `https://blockchair.com/litecoin/transaction/${txid}`,
190
+ ["Litecoin (Testnet)" /* LitecoinTestnet */]: (txid) => `https://blockexplorer.one/litecoin/testnet/blockHash/${txid}`,
191
+ ["Bitcoin Cash" /* BitcoinCashMainnet */]: (txid) => `https://blockchair.com/bitcoin-cash/transaction/${txid}`,
192
+ ["Bitcoin Cash (Testnet)" /* BitcoinCashTestnet */]: (txid) => `https://blockexplorer.one/bitcoin-cash/testnet/blockHash/${txid}`,
193
+ ["Stellar" /* StellarMainnet */]: (txid) => `https://blockchair.com/stellar/transaction/${txid}`,
194
+ ["Stellar (Testnet)" /* StellarTestnet */]: (txid) => `https://testnet.steexp.com/tx/${txid}`,
195
+ ["Proton" /* ProtonMainnet */]: (txid, traces) => `https://proton.bloks.io/transaction/${txid}${traces ? "?tab=traces" : ""}`,
196
+ ["Proton (Testnet)" /* ProtonTestnet */]: (txid, traces) => `https://proton-test.bloks.io/transaction/${txid}${traces ? "?tab=traces" : ""}`,
197
+ ["Polkadot" /* PolkadotMainnet */]: (txid) => `https://polkadot.subscan.io/extrinsic/${txid}`,
198
+ ["Binance (BEP2)" /* BinanceBEP2 */]: (txid) => `https://binance.mintscan.io/txs/${txid}`,
199
+ ["Binance (BEP20)" /* BinanceBEP20 */]: (txid) => `https://bscscan.com/tx/${txid}`,
200
+ ["EOS" /* EosMainnet */]: (txid) => `https://bloks.io/transaction/${txid}`,
201
+ ["EOS (Jungle Testnet)" /* EosTestnet */]: (txid) => `https://jungle.bloks.io/transaction/${txid}`,
202
+ ["Hedera (Mainnet)" /* HederaMainnet */]: (txid) => `https://app.dragonglass.me/transactions/${txid}`,
203
+ ["Hedera (Testnet)" /* HederaTestnet */]: (txid) => `https://testnet.dragonglass.me/transactions/${txid}`,
204
+ ["Dogecoin" /* DogeMainnet */]: (txid) => `https://blockchair.com/dogecoin/transaction/${txid}`,
205
+ ["Cardano" /* CardanoMainnet */]: (txid) => `https://explorer.cardano.org/en/transaction?id=${txid}`,
206
+ ["Avalanche X-Chain" /* AvalancheXChain */]: (txid) => `https://avascan.info/blockchain/x/tx/${txid}`,
207
+ ["Avalanche C-Chain" /* AvalancheCChain */]: (txid) => `https://snowtrace.io/tx/${txid}`,
208
+ ["Polygon" /* PolygonMainnet */]: (txid) => `https://polygonscan.com/tx/${txid}`,
209
+ ["Terra" /* TerraMainnet */]: (txid) => `https://terra.stake.id/?#/tx/${txid}`,
210
+ ["Ripple" /* RippleMainnet */]: (txid) => `https://xrpscan.com/tx/${txid}`,
211
+ ["Solana" /* SolanaMainnet */]: (txid) => `https://explorer.solana.com/tx/${txid}`,
212
+ ["Metal X-Chain (Testnet)" /* MetalXTestnet */]: (txid) => `https://metalscan.io/tx/${txid}`,
213
+ ["Metal C-Chain (Testnet)" /* MetalCTestnet */]: (txid) => `https://tahoe.metaltrace.io/tx/${txid}`,
214
+ ["Metal C-Chain" /* MetalCMainnet */]: (txid) => `https://metalscan.io/tx/${txid}`,
215
+ ["XDC Network" /* XDCMainnet */]: (txid) => `https://xdc.blocksscan.io/txs/${txid}`
216
+ };
217
+ var protonExplorerTxUrl = (chain, txId, traces) => chain === "proton" ? explorerLinkByChain["Proton" /* ProtonMainnet */](txId, traces) : explorerLinkByChain["Proton (Testnet)" /* ProtonTestnet */](txId, traces);
218
+ var initializeCoins = (protonChain) => {
219
+ const IS_MAINNET = protonChain === "proton";
220
+ const IS_TESTNET = protonChain === "proton-test";
221
+ const coins = [
222
+ {
223
+ allowSwap: true,
224
+ allowBridge: IS_MAINNET,
225
+ allowLend: true,
226
+ allowBorrow: true,
227
+ name: "Proton",
228
+ coin: "XPR",
229
+ xtokenSymbol: "XPR",
230
+ xtokenPrecision: 4,
231
+ xtokenContract: "eosio.token",
232
+ wallets: [
233
+ ...IS_MAINNET ? [
234
+ {
235
+ wallet: "XPR-ERC20",
236
+ symbol: "XPR",
237
+ chain: "Ethereum" /* EthereumMainnet */,
238
+ network: "erc20" /* ERC20 */,
239
+ precision: 4,
240
+ contract: "0xD7EFB00D12C2C13131FD319336FDF952525DA2AF",
241
+ provider: "fireblocks" /* FIREBLOCKS */,
242
+ hasWithdrawMemo: false
243
+ },
244
+ {
245
+ wallet: "XPR-BEP20",
246
+ symbol: "XPR",
247
+ chain: "Binance (BEP20)" /* BinanceBEP20 */,
248
+ network: "bep20" /* BEP20 */,
249
+ precision: 4,
250
+ contract: "0x5DE3939B2F811A61D830E6F52D13B066881412AB",
251
+ provider: "fireblocks" /* FIREBLOCKS */,
252
+ hasWithdrawMemo: false
253
+ }
254
+ ] : []
255
+ ],
256
+ image: "https://www.proton.org/images/tokens/eosio-tokenXPR.png",
257
+ coingeckoId: "proton"
258
+ },
259
+ {
260
+ allowSwap: true,
261
+ allowBridge: true,
262
+ allowLend: true,
263
+ allowBorrow: true,
264
+ name: "USD Coin",
265
+ coin: "USDC",
266
+ xtokenSymbol: "XUSDC",
267
+ xtokenPrecision: 6,
268
+ xtokenContract: "xtokens",
269
+ wallets: [
270
+ ...IS_MAINNET ? [
271
+ {
272
+ wallet: "USDC",
273
+ symbol: "USDC",
274
+ chain: "Ethereum" /* EthereumMainnet */,
275
+ network: "erc20" /* ERC20 */,
276
+ precision: 6,
277
+ contract: "0xA0B86991C6218B36C1D19D4A2E9EB0CE3606EB48",
278
+ provider: "fireblocks" /* FIREBLOCKS */,
279
+ hasWithdrawMemo: false
280
+ },
281
+ // {
282
+ // wallet: 'USDC-BEP20',
283
+ // symbol: 'USDC',
284
+ // chain: Chains.BinanceBEP20,
285
+ // network: Networks.BEP20,
286
+ // precision: 18,
287
+ // contract: '0x8AC76A51CC950D9822D68B83FE1AD97B32CD580D',
288
+ // provider: Providers.FIREBLOCKS,
289
+ // hasWithdrawMemo: false
290
+ // },
291
+ {
292
+ wallet: "USDC-XLM",
293
+ symbol: "USDC",
294
+ chain: "Stellar" /* StellarMainnet */,
295
+ network: "xlm" /* XLM */,
296
+ precision: 7,
297
+ contract: void 0,
298
+ provider: "fireblocks" /* FIREBLOCKS */,
299
+ hasWithdrawMemo: true
300
+ }
301
+ ] : [],
302
+ ...IS_TESTNET ? [
303
+ {
304
+ wallet: "USDC",
305
+ symbol: "USDC",
306
+ chain: "Ethereum (Ropsten)" /* EthereumRopsten */,
307
+ network: "ropsten" /* Ropsten */,
308
+ precision: 6,
309
+ contract: "0xA0B86991C6218B36C1D19D4A2E9EB0CE3606EB48",
310
+ provider: "fireblocks" /* FIREBLOCKS */,
311
+ hasWithdrawMemo: false
312
+ },
313
+ {
314
+ wallet: "USDC-XLM",
315
+ symbol: "USDC",
316
+ chain: "Stellar (Testnet)" /* StellarTestnet */,
317
+ network: "xlm" /* XLM */,
318
+ precision: 7,
319
+ contract: void 0,
320
+ provider: "fireblocks" /* FIREBLOCKS */,
321
+ hasWithdrawMemo: true
322
+ }
323
+ ] : []
324
+ ],
325
+ image: "https://www.proton.org/images/tokens/xtokensXUSDC.png",
326
+ coingeckoId: "usd-coin"
327
+ },
328
+ {
329
+ allowSwap: true,
330
+ allowBridge: IS_MAINNET,
331
+ allowLend: true,
332
+ allowBorrow: true,
333
+ name: "Metal DAO",
334
+ coin: "MTL",
335
+ xtokenSymbol: "XMT",
336
+ xtokenPrecision: 8,
337
+ xtokenContract: "xtokens",
338
+ wallets: [
339
+ ...IS_MAINNET ? [
340
+ {
341
+ wallet: "MTL",
342
+ symbol: "MTL",
343
+ chain: "Ethereum" /* EthereumMainnet */,
344
+ network: "erc20" /* ERC20 */,
345
+ precision: 8,
346
+ contract: "0xF433089366899D83A9F26A773D59EC7ECF30355E",
347
+ provider: "fireblocks" /* FIREBLOCKS */,
348
+ hasWithdrawMemo: false
349
+ }
350
+ ] : []
351
+ ],
352
+ image: "https://www.proton.org/images/tokens/xtokensXMT.png",
353
+ coingeckoId: "metal"
354
+ },
355
+ {
356
+ allowSwap: true,
357
+ allowBridge: true,
358
+ allowLend: false,
359
+ allowBorrow: false,
360
+ name: "Metal Blockchain",
361
+ coin: "METAL",
362
+ xtokenSymbol: "METAL",
363
+ xtokenPrecision: 8,
364
+ xtokenContract: "xtokens",
365
+ wallets: [
366
+ ...IS_TESTNET ? [
367
+ {
368
+ wallet: "METAL",
369
+ symbol: "METAL",
370
+ chain: "Metal C-Chain (Testnet)" /* MetalCTestnet */,
371
+ network: "evm" /* EVM */,
372
+ precision: 18,
373
+ contract: "",
374
+ provider: "metal" /* METAL */,
375
+ hasWithdrawMemo: false
376
+ }
377
+ ] : [],
378
+ ...IS_MAINNET ? [
379
+ {
380
+ wallet: "METAL",
381
+ symbol: "METAL",
382
+ chain: "Metal C-Chain" /* MetalCMainnet */,
383
+ network: "evm" /* EVM */,
384
+ precision: 18,
385
+ contract: "",
386
+ provider: "metal" /* METAL */,
387
+ hasWithdrawMemo: false
388
+ },
389
+ {
390
+ wallet: "METAL",
391
+ symbol: "METAL",
392
+ chain: "Ethereum" /* EthereumMainnet */,
393
+ network: "erc20" /* ERC20 */,
394
+ precision: 18,
395
+ contract: "",
396
+ provider: "fireblocks" /* FIREBLOCKS */,
397
+ hasWithdrawMemo: false
398
+ }
399
+ ] : []
400
+ ],
401
+ image: "https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/metal-chain.png",
402
+ coingeckoId: "metal-blockchain"
403
+ },
404
+ {
405
+ allowSwap: true,
406
+ allowBridge: true,
407
+ allowLend: true,
408
+ allowBorrow: true,
409
+ name: "Bitcoin",
410
+ coin: "BTC",
411
+ xtokenSymbol: "XBTC",
412
+ xtokenPrecision: 8,
413
+ xtokenContract: "xtokens",
414
+ wallets: [
415
+ ...IS_MAINNET ? [
416
+ {
417
+ wallet: "BTC",
418
+ symbol: "BTC",
419
+ chain: "Bitcoin" /* BitcoinMainnet */,
420
+ network: "mainnet" /* Mainnet */,
421
+ precision: 8,
422
+ contract: void 0,
423
+ provider: "fireblocks" /* FIREBLOCKS */,
424
+ hasWithdrawMemo: false
425
+ }
426
+ ] : [],
427
+ ...IS_TESTNET ? [
428
+ {
429
+ wallet: "BTC",
430
+ symbol: "BTC",
431
+ chain: "Bitcoin (Testnet)" /* BitcoinTestnet */,
432
+ network: "testnet" /* Testnet */,
433
+ precision: 8,
434
+ contract: void 0,
435
+ provider: "fireblocks" /* FIREBLOCKS */,
436
+ hasWithdrawMemo: false
437
+ }
438
+ ] : []
439
+ ],
440
+ image: "https://www.proton.org/images/tokens/xtokensXBTC.png",
441
+ coingeckoId: "bitcoin"
442
+ },
443
+ {
444
+ allowSwap: true,
445
+ allowBridge: true,
446
+ allowLend: true,
447
+ allowBorrow: true,
448
+ name: "Ethereum",
449
+ coin: "ETH",
450
+ xtokenSymbol: "XETH",
451
+ xtokenPrecision: 8,
452
+ xtokenContract: "xtokens",
453
+ wallets: [
454
+ ...IS_MAINNET ? [
455
+ {
456
+ wallet: "ETH",
457
+ symbol: "ETH",
458
+ chain: "Ethereum" /* EthereumMainnet */,
459
+ network: "mainnet" /* Mainnet */,
460
+ precision: 18,
461
+ contract: "0x0000000000000000000000000000000000000000",
462
+ provider: "fireblocks" /* FIREBLOCKS */,
463
+ hasWithdrawMemo: false
464
+ }
465
+ ] : [],
466
+ ...IS_TESTNET ? [
467
+ {
468
+ wallet: "ETH",
469
+ symbol: "ETH",
470
+ chain: "Ethereum (Ropsten)" /* EthereumRopsten */,
471
+ network: "ropsten" /* Ropsten */,
472
+ precision: 18,
473
+ contract: "0x0000000000000000000000000000000000000000",
474
+ provider: "fireblocks" /* FIREBLOCKS */,
475
+ hasWithdrawMemo: false
476
+ }
477
+ ] : []
478
+ ],
479
+ image: "https://www.proton.org/images/tokens/xtokensXETH.png",
480
+ coingeckoId: "ethereum"
481
+ },
482
+ {
483
+ allowSwap: true,
484
+ allowBridge: false,
485
+ allowLend: false,
486
+ allowBorrow: false,
487
+ name: "Loan",
488
+ coin: "LOAN",
489
+ xtokenSymbol: "LOAN",
490
+ xtokenPrecision: 4,
491
+ xtokenContract: "loan.token",
492
+ wallets: [],
493
+ image: "https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/loan.png",
494
+ coingeckoId: "proton-loan"
495
+ },
496
+ {
497
+ allowSwap: true,
498
+ allowBridge: true,
499
+ allowLend: false,
500
+ allowBorrow: false,
501
+ name: "Tether",
502
+ coin: "USDT",
503
+ xtokenSymbol: "XUSDT",
504
+ xtokenPrecision: 6,
505
+ xtokenContract: "xtokens",
506
+ wallets: [
507
+ ...IS_MAINNET ? [
508
+ {
509
+ wallet: "USDT",
510
+ symbol: "USDT",
511
+ chain: "Ethereum" /* EthereumMainnet */,
512
+ network: "erc20" /* ERC20 */,
513
+ precision: 6,
514
+ contract: "0xDAC17F958D2EE523A2206206994597C13D831EC7",
515
+ provider: "fireblocks" /* FIREBLOCKS */,
516
+ hasWithdrawMemo: false
517
+ }
518
+ ] : [],
519
+ ...IS_MAINNET ? [
520
+ {
521
+ wallet: "USDT-BEP20",
522
+ symbol: "USDT",
523
+ chain: "Binance (BEP20)" /* BinanceBEP20 */,
524
+ network: "bep20" /* BEP20 */,
525
+ precision: 18,
526
+ contract: "0x55d398326f99059fF775485246999027B3197955",
527
+ provider: "fireblocks" /* FIREBLOCKS */,
528
+ hasWithdrawMemo: false
529
+ }
530
+ ] : [],
531
+ ...IS_TESTNET ? [
532
+ {
533
+ wallet: "USDT",
534
+ symbol: "USDT",
535
+ chain: "Ethereum (Ropsten)" /* EthereumRopsten */,
536
+ network: "ropsten" /* Ropsten */,
537
+ precision: 6,
538
+ contract: "0xDAC17F958D2EE523A2206206994597C13D831EC7",
539
+ provider: "fireblocks" /* FIREBLOCKS */,
540
+ hasWithdrawMemo: false
541
+ }
542
+ ] : []
543
+ ],
544
+ image: "https://www.proton.org/images/tokens/xtokensXUSDT.png",
545
+ coingeckoId: "tether"
546
+ },
547
+ {
548
+ allowSwap: false,
549
+ allowBridge: IS_MAINNET,
550
+ allowLend: false,
551
+ allowBorrow: false,
552
+ name: "TrueUSD",
553
+ coin: "TUSD",
554
+ xtokenSymbol: "XTUSD",
555
+ xtokenPrecision: 6,
556
+ xtokenContract: "xtokens",
557
+ wallets: [
558
+ ...IS_MAINNET ? [
559
+ {
560
+ wallet: "TUSD",
561
+ symbol: "TUSD",
562
+ chain: "Ethereum" /* EthereumMainnet */,
563
+ network: "erc20" /* ERC20 */,
564
+ precision: 18,
565
+ contract: "0x0000000000085D4780B73119B644AE5ECD22B376",
566
+ provider: "fireblocks" /* FIREBLOCKS */,
567
+ hasWithdrawMemo: false
568
+ }
569
+ ] : []
570
+ ],
571
+ image: "https://www.proton.org/images/tokens/xtokensXTUSD.png",
572
+ coingeckoId: "true-usd"
573
+ },
574
+ {
575
+ allowSwap: false,
576
+ allowBridge: IS_MAINNET,
577
+ allowLend: false,
578
+ allowBorrow: false,
579
+ name: "Euro Coin",
580
+ coin: "EUROC",
581
+ xtokenSymbol: "XEUROC",
582
+ xtokenPrecision: 6,
583
+ xtokenContract: "xtokens",
584
+ wallets: [
585
+ ...IS_MAINNET ? [
586
+ {
587
+ wallet: "EUROC",
588
+ symbol: "EUROC-ERC20",
589
+ chain: "Ethereum" /* EthereumMainnet */,
590
+ network: "erc20" /* ERC20 */,
591
+ precision: 6,
592
+ contract: "0x1aBaEA1f7C830bD89Acc67eC4af516284b1bC33c",
593
+ provider: "fireblocks" /* FIREBLOCKS */,
594
+ hasWithdrawMemo: false
595
+ }
596
+ ] : []
597
+ ],
598
+ image: "https://assets.coingecko.com/coins/images/26045/small/euro-coin.png?1655394420",
599
+ coingeckoId: "euro-coin"
600
+ },
601
+ {
602
+ allowSwap: false,
603
+ allowBridge: IS_MAINNET,
604
+ allowLend: false,
605
+ allowBorrow: false,
606
+ name: "XDC Network",
607
+ coin: "XDC",
608
+ xtokenSymbol: "XDC",
609
+ xtokenPrecision: 4,
610
+ xtokenContract: "xtokens",
611
+ wallets: [
612
+ ...IS_MAINNET ? [
613
+ {
614
+ wallet: "XDC",
615
+ symbol: "XDC",
616
+ chain: "XDC Network" /* XDCMainnet */,
617
+ network: "mainnet" /* Mainnet */,
618
+ precision: 18,
619
+ contract: "",
620
+ provider: "fireblocks" /* FIREBLOCKS */,
621
+ hasWithdrawMemo: false
622
+ }
623
+ ] : []
624
+ ],
625
+ image: "https://assets.coingecko.com/coins/images/2912/small/xdc-icon.png?1633700890",
626
+ coingeckoId: "xdce-crowd-sale"
627
+ },
628
+ {
629
+ allowSwap: false,
630
+ allowBridge: IS_MAINNET,
631
+ allowLend: false,
632
+ allowBorrow: false,
633
+ name: "Paxos Dollar",
634
+ coin: "PAX",
635
+ xtokenSymbol: "XPAX",
636
+ xtokenPrecision: 6,
637
+ xtokenContract: "xtokens",
638
+ wallets: [
639
+ ...IS_MAINNET ? [
640
+ {
641
+ wallet: "PAX",
642
+ symbol: "PAX",
643
+ chain: "Ethereum" /* EthereumMainnet */,
644
+ network: "erc20" /* ERC20 */,
645
+ precision: 18,
646
+ contract: "0x8E870D67F660D95D5BE530380D0EC0BD388289E1",
647
+ provider: "fireblocks" /* FIREBLOCKS */,
648
+ hasWithdrawMemo: false
649
+ }
650
+ ] : []
651
+ ],
652
+ image: "https://www.proton.org/images/tokens/xtokensXPAX.png",
653
+ coingeckoId: "paxos-standard"
654
+ },
655
+ {
656
+ allowSwap: false,
657
+ allowBridge: true,
658
+ allowLend: false,
659
+ allowBorrow: false,
660
+ name: "Paxos Gold",
661
+ coin: "PAXG",
662
+ xtokenSymbol: "XPAXG",
663
+ xtokenPrecision: 8,
664
+ xtokenContract: "xtokens",
665
+ wallets: [
666
+ ...IS_MAINNET ? [
667
+ {
668
+ wallet: "PAXG",
669
+ symbol: "PAXG",
670
+ chain: "Ethereum" /* EthereumMainnet */,
671
+ network: "erc20" /* ERC20 */,
672
+ precision: 18,
673
+ contract: "0x45804880DE22913DAFE09F4980848ECE6ECBAF78",
674
+ provider: "fireblocks" /* FIREBLOCKS */,
675
+ hasWithdrawMemo: false
676
+ }
677
+ ] : [],
678
+ ...IS_TESTNET ? [
679
+ {
680
+ wallet: "PAXG",
681
+ symbol: "PAXG",
682
+ chain: "Ethereum (Ropsten)" /* EthereumRopsten */,
683
+ network: "ropsten" /* Ropsten */,
684
+ precision: 18,
685
+ contract: "0x45804880DE22913DAFE09F4980848ECE6ECBAF78",
686
+ provider: "fireblocks" /* FIREBLOCKS */,
687
+ hasWithdrawMemo: false
688
+ }
689
+ ] : []
690
+ ],
691
+ image: "https://www.proton.org/images/tokens/xtokensXPAXG.png",
692
+ coingeckoId: "pax-gold"
693
+ },
694
+ {
695
+ allowSwap: IS_MAINNET,
696
+ allowBridge: false,
697
+ allowLend: false,
698
+ allowBorrow: false,
699
+ name: "Storex",
700
+ coin: "STRX",
701
+ xtokenSymbol: "STRX",
702
+ xtokenPrecision: 4,
703
+ xtokenContract: "storex",
704
+ wallets: [],
705
+ image: "https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/strx.png",
706
+ coingeckoId: ""
707
+ },
708
+ {
709
+ allowSwap: false,
710
+ allowBridge: false,
711
+ allowLend: false,
712
+ allowBorrow: false,
713
+ name: "Mint",
714
+ coin: "MINT",
715
+ xtokenSymbol: "MINT",
716
+ xtokenPrecision: 4,
717
+ xtokenContract: "protonmint",
718
+ wallets: [],
719
+ image: "https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/PMLogo-04.png",
720
+ coingeckoId: ""
721
+ },
722
+ {
723
+ allowSwap: IS_MAINNET,
724
+ allowBridge: false,
725
+ allowLend: false,
726
+ allowBorrow: false,
727
+ name: "Snipcoins",
728
+ coin: "SNIPS",
729
+ xtokenSymbol: "SNIPS",
730
+ xtokenPrecision: 4,
731
+ xtokenContract: "snipcoins",
732
+ wallets: [],
733
+ image: "https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/snips.png",
734
+ coingeckoId: ""
735
+ },
736
+ {
737
+ allowSwap: IS_MAINNET,
738
+ allowBridge: true,
739
+ allowLend: false,
740
+ allowBorrow: false,
741
+ name: "Uniswap",
742
+ coin: "UNI",
743
+ xtokenSymbol: "XUNI",
744
+ xtokenPrecision: 6,
745
+ xtokenContract: "xtokens",
746
+ wallets: [
747
+ ...IS_MAINNET ? [
748
+ {
749
+ wallet: "UNI",
750
+ symbol: "UNI",
751
+ chain: "Ethereum" /* EthereumMainnet */,
752
+ network: "erc20" /* ERC20 */,
753
+ precision: 18,
754
+ contract: "0x1F9840A85D5AF5BF1D1762F925BDADDC4201F984",
755
+ provider: "fireblocks" /* FIREBLOCKS */,
756
+ hasWithdrawMemo: false
757
+ }
758
+ ] : [],
759
+ ...IS_TESTNET ? [
760
+ {
761
+ wallet: "UNI",
762
+ symbol: "UNI",
763
+ chain: "Ethereum (Ropsten)" /* EthereumRopsten */,
764
+ network: "ropsten" /* Ropsten */,
765
+ precision: 18,
766
+ contract: "0x1F9840A85D5AF5BF1D1762F925BDADDC4201F984",
767
+ provider: "fireblocks" /* FIREBLOCKS */,
768
+ hasWithdrawMemo: false
769
+ }
770
+ ] : []
771
+ ],
772
+ image: "https://www.proton.org/images/tokens/xtokensXUNI.png",
773
+ coingeckoId: "uniswap"
774
+ },
775
+ {
776
+ allowSwap: false,
777
+ allowBridge: false,
778
+ allowLend: false,
779
+ allowBorrow: false,
780
+ name: "1INCH",
781
+ coin: "1INCH",
782
+ xtokenSymbol: "XINCH",
783
+ xtokenPrecision: 6,
784
+ xtokenContract: "xtokens",
785
+ wallets: [
786
+ ...IS_MAINNET ? [
787
+ {
788
+ wallet: "1INCH",
789
+ symbol: "1INCH",
790
+ chain: "Ethereum" /* EthereumMainnet */,
791
+ network: "erc20" /* ERC20 */,
792
+ precision: 18,
793
+ contract: "0x111111111117DC0AA78B770FA6A738034120C302",
794
+ provider: "fireblocks" /* FIREBLOCKS */,
795
+ hasWithdrawMemo: false
796
+ }
797
+ ] : []
798
+ ],
799
+ image: "https://www.proton.org/images/tokens/xtokensXINCH.png",
800
+ coingeckoId: "1inch"
801
+ },
802
+ {
803
+ allowSwap: false,
804
+ allowBridge: false,
805
+ allowLend: false,
806
+ allowBorrow: false,
807
+ name: "Chainlink",
808
+ coin: "LINK",
809
+ xtokenSymbol: "XLINK",
810
+ xtokenPrecision: 6,
811
+ xtokenContract: "xtokens",
812
+ wallets: [
813
+ ...IS_MAINNET ? [
814
+ {
815
+ wallet: "LINK",
816
+ symbol: "LINK",
817
+ chain: "Ethereum" /* EthereumMainnet */,
818
+ network: "erc20" /* ERC20 */,
819
+ precision: 18,
820
+ contract: "0x514910771AF9CA656AF840DFF83E8264ECF986CA",
821
+ provider: "fireblocks" /* FIREBLOCKS */,
822
+ hasWithdrawMemo: false
823
+ }
824
+ ] : []
825
+ ],
826
+ image: "https://www.proton.org/images/tokens/xtokensXLINK.png",
827
+ coingeckoId: "chainlink"
828
+ },
829
+ {
830
+ allowSwap: IS_MAINNET,
831
+ allowBridge: true,
832
+ allowLend: false,
833
+ allowBorrow: false,
834
+ name: "Litecoin",
835
+ coin: "LTC",
836
+ xtokenSymbol: "XLTC",
837
+ xtokenPrecision: 8,
838
+ xtokenContract: "xtokens",
839
+ wallets: [
840
+ ...IS_MAINNET ? [
841
+ {
842
+ wallet: "LTC",
843
+ symbol: "LTC",
844
+ chain: "Litecoin" /* LitecoinMainnet */,
845
+ network: "mainnet" /* Mainnet */,
846
+ precision: 8,
847
+ contract: void 0,
848
+ provider: "fireblocks" /* FIREBLOCKS */,
849
+ hasWithdrawMemo: false
850
+ }
851
+ ] : [],
852
+ ...IS_TESTNET ? [
853
+ {
854
+ wallet: "LTC",
855
+ symbol: "LTC",
856
+ chain: "Litecoin (Testnet)" /* LitecoinTestnet */,
857
+ network: "testnet" /* Testnet */,
858
+ precision: 8,
859
+ contract: void 0,
860
+ provider: "fireblocks" /* FIREBLOCKS */,
861
+ hasWithdrawMemo: false
862
+ }
863
+ ] : []
864
+ ],
865
+ image: "https://www.proton.org/images/tokens/xtokensXLTC.png",
866
+ coingeckoId: "litecoin"
867
+ },
868
+ {
869
+ allowSwap: false,
870
+ allowBridge: true,
871
+ allowLend: false,
872
+ allowBorrow: false,
873
+ name: "Bitcoin Cash",
874
+ coin: "BCH",
875
+ xtokenSymbol: "XBCH",
876
+ xtokenPrecision: 8,
877
+ xtokenContract: "xtokens",
878
+ wallets: [
879
+ ...IS_MAINNET ? [
880
+ {
881
+ wallet: "BCH",
882
+ symbol: "BCH",
883
+ chain: "Bitcoin Cash" /* BitcoinCashMainnet */,
884
+ network: "mainnet" /* Mainnet */,
885
+ precision: 8,
886
+ contract: void 0,
887
+ provider: "fireblocks" /* FIREBLOCKS */,
888
+ hasWithdrawMemo: false
889
+ }
890
+ ] : [],
891
+ ...IS_TESTNET ? [
892
+ {
893
+ wallet: "BCH",
894
+ symbol: "BCH",
895
+ chain: "Bitcoin Cash (Testnet)" /* BitcoinCashTestnet */,
896
+ network: "testnet" /* Testnet */,
897
+ precision: 8,
898
+ contract: void 0,
899
+ provider: "fireblocks" /* FIREBLOCKS */,
900
+ hasWithdrawMemo: false
901
+ }
902
+ ] : []
903
+ ],
904
+ image: "https://www.proton.org/images/tokens/xtokensXBCH.png",
905
+ coingeckoId: "bitcoin-cash"
906
+ },
907
+ {
908
+ allowSwap: true,
909
+ allowBridge: true,
910
+ allowLend: false,
911
+ allowBorrow: false,
912
+ name: "LunarCrush",
913
+ coin: "LUNR",
914
+ xtokenSymbol: "XLUNR",
915
+ xtokenPrecision: 4,
916
+ xtokenContract: "xtokens",
917
+ wallets: [
918
+ ...IS_MAINNET ? [
919
+ {
920
+ wallet: "LUNR",
921
+ symbol: "LUNR",
922
+ chain: "Ethereum" /* EthereumMainnet */,
923
+ network: "erc20" /* ERC20 */,
924
+ precision: 4,
925
+ contract: void 0,
926
+ provider: "fireblocks" /* FIREBLOCKS */,
927
+ hasWithdrawMemo: false
928
+ }
929
+ ] : []
930
+ ],
931
+ image: "https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/xlunr.png",
932
+ coingeckoId: "lunr-token"
933
+ },
934
+ {
935
+ allowSwap: false,
936
+ allowBridge: IS_TESTNET,
937
+ allowLend: false,
938
+ allowBorrow: false,
939
+ name: "Stellar",
940
+ coin: "XLM",
941
+ xtokenSymbol: "XXLM",
942
+ xtokenPrecision: 6,
943
+ xtokenContract: "xtokens",
944
+ wallets: [
945
+ ...IS_MAINNET ? [
946
+ {
947
+ wallet: "XLM",
948
+ symbol: "XLM",
949
+ chain: "Stellar" /* StellarMainnet */,
950
+ network: "mainnet" /* Mainnet */,
951
+ precision: 7,
952
+ contract: void 0,
953
+ provider: "fireblocks" /* FIREBLOCKS */,
954
+ hasWithdrawMemo: true
955
+ }
956
+ ] : [],
957
+ ...IS_TESTNET ? [
958
+ {
959
+ wallet: "XLM",
960
+ symbol: "XLM",
961
+ chain: "Stellar (Testnet)" /* StellarTestnet */,
962
+ network: "testnet" /* Testnet */,
963
+ precision: 7,
964
+ contract: void 0,
965
+ provider: "fireblocks" /* FIREBLOCKS */,
966
+ hasWithdrawMemo: true
967
+ }
968
+ ] : []
969
+ ],
970
+ image: "https://www.proton.org/images/tokens/xtokensXXLM.png",
971
+ coingeckoId: "stellar"
972
+ },
973
+ {
974
+ allowSwap: false,
975
+ allowBridge: false,
976
+ allowLend: false,
977
+ allowBorrow: false,
978
+ name: "Sense",
979
+ coin: "SENSE",
980
+ xtokenSymbol: "XSENSE",
981
+ xtokenPrecision: 4,
982
+ xtokenContract: "sense",
983
+ wallets: [],
984
+ image: "https://www.proton.org/images/tokens/senseXSENSE.png",
985
+ coingeckoId: "sense"
986
+ },
987
+ {
988
+ allowSwap: false,
989
+ allowBridge: false,
990
+ allowLend: false,
991
+ allowBorrow: false,
992
+ name: "Polkadot",
993
+ coin: "DOT",
994
+ xtokenSymbol: "XDOT",
995
+ xtokenPrecision: 8,
996
+ xtokenContract: "xtokens",
997
+ wallets: [
998
+ ...IS_MAINNET ? [
999
+ {
1000
+ wallet: "DOT",
1001
+ symbol: "DOT",
1002
+ chain: "Polkadot" /* PolkadotMainnet */,
1003
+ network: "mainnet" /* Mainnet */,
1004
+ precision: 10,
1005
+ contract: void 0,
1006
+ provider: "fireblocks" /* FIREBLOCKS */,
1007
+ hasWithdrawMemo: false
1008
+ }
1009
+ ] : []
1010
+ ],
1011
+ image: "https://www.proton.org/images/tokens/xtokensXDOT.png",
1012
+ coingeckoId: "polkadot"
1013
+ },
1014
+ {
1015
+ allowSwap: true,
1016
+ allowBridge: IS_MAINNET,
1017
+ allowLend: false,
1018
+ allowBorrow: false,
1019
+ name: "Binance Coin",
1020
+ coin: "BNB",
1021
+ xtokenSymbol: "XBNB",
1022
+ xtokenPrecision: 8,
1023
+ xtokenContract: "xtokens",
1024
+ wallets: [
1025
+ ...IS_MAINNET ? [
1026
+ {
1027
+ wallet: "BNB",
1028
+ symbol: "BNB",
1029
+ chain: "Binance (BEP20)" /* BinanceBEP20 */,
1030
+ network: "bep20" /* BEP20 */,
1031
+ precision: 18,
1032
+ contract: void 0,
1033
+ provider: "fireblocks" /* FIREBLOCKS */,
1034
+ hasWithdrawMemo: false
1035
+ }
1036
+ ] : []
1037
+ ],
1038
+ image: "https://www.proton.org/images/tokens/xtokensXBNB.png",
1039
+ coingeckoId: "binancecoin"
1040
+ },
1041
+ {
1042
+ allowSwap: false,
1043
+ allowBridge: false,
1044
+ allowLend: false,
1045
+ allowBorrow: false,
1046
+ name: "Binance USD",
1047
+ coin: "BUSD",
1048
+ xtokenSymbol: "XBUSD",
1049
+ xtokenPrecision: 6,
1050
+ xtokenContract: "xtokens",
1051
+ wallets: [
1052
+ // ...(IS_MAINNET ? [{
1053
+ // wallet: 'BUSD-BEP20',
1054
+ // symbol: 'BUSD',
1055
+ // chain: Chains.BinanceBEP20,
1056
+ // network: Networks.BEP20,
1057
+ // precision: 18,
1058
+ // contract: '0xe9e7cea3dedca5984780bafc599bd69add087d56',
1059
+ // provider: Providers.FIREBLOCKS,
1060
+ // hasWithdrawMemo: false
1061
+ // }]: [])
1062
+ ],
1063
+ image: "https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/xbusd.png",
1064
+ coingeckoId: "binance-usd"
1065
+ },
1066
+ {
1067
+ allowSwap: true,
1068
+ allowBridge: true,
1069
+ allowLend: false,
1070
+ allowBorrow: false,
1071
+ name: "EOS",
1072
+ coin: "EOS",
1073
+ xtokenSymbol: "XEOS",
1074
+ xtokenPrecision: 4,
1075
+ xtokenContract: "xtokens",
1076
+ wallets: [
1077
+ ...IS_MAINNET ? [
1078
+ {
1079
+ wallet: "EOS",
1080
+ symbol: "EOS",
1081
+ chain: "EOS" /* EosMainnet */,
1082
+ network: "mainnet" /* Mainnet */,
1083
+ precision: 4,
1084
+ contract: void 0,
1085
+ provider: "fireblocks" /* FIREBLOCKS */,
1086
+ hasWithdrawMemo: true
1087
+ }
1088
+ ] : [],
1089
+ ...IS_TESTNET ? [
1090
+ {
1091
+ wallet: "EOS",
1092
+ symbol: "EOS",
1093
+ chain: "EOS (Jungle Testnet)" /* EosTestnet */,
1094
+ network: "testnet" /* Testnet */,
1095
+ precision: 4,
1096
+ contract: void 0,
1097
+ provider: "fireblocks" /* FIREBLOCKS */,
1098
+ hasWithdrawMemo: true
1099
+ }
1100
+ ] : []
1101
+ ],
1102
+ image: "https://www.proton.org/images/tokens/xtokensXEOS.png",
1103
+ coingeckoId: "eos"
1104
+ },
1105
+ {
1106
+ allowSwap: IS_MAINNET,
1107
+ allowBridge: IS_MAINNET,
1108
+ allowLend: true,
1109
+ allowBorrow: true,
1110
+ name: "Dogecoin",
1111
+ coin: "DOGE",
1112
+ xtokenSymbol: "XDOGE",
1113
+ xtokenPrecision: 6,
1114
+ xtokenContract: "xtokens",
1115
+ wallets: [
1116
+ ...IS_MAINNET ? [
1117
+ {
1118
+ wallet: "DOGE",
1119
+ symbol: "DOGE",
1120
+ chain: "Dogecoin" /* DogeMainnet */,
1121
+ network: "mainnet" /* Mainnet */,
1122
+ precision: 8,
1123
+ contract: void 0,
1124
+ provider: "fireblocks" /* FIREBLOCKS */,
1125
+ hasWithdrawMemo: false
1126
+ }
1127
+ ] : []
1128
+ ],
1129
+ image: "https://www.proton.org/images/tokens/xtokensXDOGE.png",
1130
+ coingeckoId: "dogecoin"
1131
+ },
1132
+ {
1133
+ allowSwap: IS_MAINNET,
1134
+ allowBridge: IS_MAINNET,
1135
+ allowLend: false,
1136
+ allowBorrow: false,
1137
+ name: "Cardano",
1138
+ coin: "ADA",
1139
+ xtokenSymbol: "XADA",
1140
+ xtokenPrecision: 6,
1141
+ xtokenContract: "xtokens",
1142
+ wallets: [
1143
+ ...IS_MAINNET ? [
1144
+ {
1145
+ wallet: "ADA",
1146
+ symbol: "ADA",
1147
+ chain: "Cardano" /* CardanoMainnet */,
1148
+ network: "mainnet" /* Mainnet */,
1149
+ precision: 6,
1150
+ contract: void 0,
1151
+ provider: "fireblocks" /* FIREBLOCKS */,
1152
+ hasWithdrawMemo: false
1153
+ }
1154
+ ] : []
1155
+ ],
1156
+ image: "https://www.proton.org/images/tokens/xtokensXADA.png",
1157
+ coingeckoId: "cardano"
1158
+ },
1159
+ // Adding
1160
+ {
1161
+ allowSwap: false,
1162
+ allowBridge: false,
1163
+ allowLend: false,
1164
+ allowBorrow: false,
1165
+ name: "Terra",
1166
+ coin: "LUNA",
1167
+ xtokenSymbol: "XLUNA",
1168
+ xtokenPrecision: 6,
1169
+ xtokenContract: "xtokens",
1170
+ wallets: [
1171
+ // ...(IS_MAINNET ? [{
1172
+ // wallet: 'LUNA',
1173
+ // symbol: 'LUNA',
1174
+ // chain: Chains.TerraMainnet,
1175
+ // network: Networks.Mainnet,
1176
+ // precision: 6,
1177
+ // contract: undefined,
1178
+ // provider: Providers.FIREBLOCKS,
1179
+ // hasWithdrawMemo: true
1180
+ // }]: [])
1181
+ ],
1182
+ image: "https://www.proton.org/images/tokens/xtokensXLUNA.png",
1183
+ coingeckoId: "terra-luna"
1184
+ },
1185
+ {
1186
+ allowSwap: false,
1187
+ allowBridge: false,
1188
+ allowLend: false,
1189
+ allowBorrow: false,
1190
+ name: "TerraUSD",
1191
+ coin: "UST",
1192
+ xtokenSymbol: "XUST",
1193
+ xtokenPrecision: 6,
1194
+ xtokenContract: "xtokens",
1195
+ wallets: [
1196
+ ...IS_MAINNET ? [
1197
+ {
1198
+ wallet: "UST",
1199
+ symbol: "UST",
1200
+ chain: "Terra" /* TerraMainnet */,
1201
+ network: "mainnet" /* Mainnet */,
1202
+ precision: 6,
1203
+ contract: void 0,
1204
+ provider: "fireblocks" /* FIREBLOCKS */,
1205
+ hasWithdrawMemo: true
1206
+ }
1207
+ ] : []
1208
+ ],
1209
+ image: "https://www.proton.org/images/tokens/xtokensXUST.png",
1210
+ coingeckoId: "terrausd"
1211
+ },
1212
+ {
1213
+ allowSwap: false,
1214
+ allowBridge: IS_MAINNET,
1215
+ allowLend: false,
1216
+ allowBorrow: false,
1217
+ name: "Solana",
1218
+ coin: "SOL",
1219
+ xtokenSymbol: "XSOL",
1220
+ xtokenPrecision: 6,
1221
+ xtokenContract: "xtokens",
1222
+ wallets: [
1223
+ ...IS_MAINNET ? [
1224
+ {
1225
+ wallet: "SOL",
1226
+ symbol: "SOL",
1227
+ chain: "Solana" /* SolanaMainnet */,
1228
+ network: "mainnet" /* Mainnet */,
1229
+ precision: 9,
1230
+ contract: void 0,
1231
+ provider: "fireblocks" /* FIREBLOCKS */,
1232
+ hasWithdrawMemo: false
1233
+ }
1234
+ ] : []
1235
+ ],
1236
+ image: "https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/xsol.png",
1237
+ coingeckoId: "solana"
1238
+ },
1239
+ {
1240
+ allowSwap: false,
1241
+ allowBridge: IS_MAINNET,
1242
+ allowLend: false,
1243
+ allowBorrow: false,
1244
+ name: "Ripple",
1245
+ coin: "XRP",
1246
+ xtokenSymbol: "XXRP",
1247
+ xtokenPrecision: 6,
1248
+ xtokenContract: "xtokens",
1249
+ wallets: [
1250
+ ...IS_MAINNET ? [
1251
+ {
1252
+ wallet: "XRP",
1253
+ symbol: "XRP",
1254
+ chain: "Ripple" /* RippleMainnet */,
1255
+ network: "mainnet" /* Mainnet */,
1256
+ precision: 6,
1257
+ contract: void 0,
1258
+ provider: "fireblocks" /* FIREBLOCKS */,
1259
+ hasWithdrawMemo: true
1260
+ }
1261
+ ] : []
1262
+ ],
1263
+ image: "https://raw.githubusercontent.com/eoscafe/eos-airdrops/master/logos/xxrp.png",
1264
+ coingeckoId: "ripple"
1265
+ },
1266
+ // Future
1267
+ {
1268
+ allowSwap: false,
1269
+ allowBridge: false,
1270
+ allowLend: false,
1271
+ allowBorrow: false,
1272
+ name: "Avalanche",
1273
+ coin: "AVAX",
1274
+ xtokenSymbol: "XAVAX",
1275
+ xtokenPrecision: 9,
1276
+ xtokenContract: "xtokens",
1277
+ wallets: [
1278
+ ...IS_MAINNET ? [
1279
+ {
1280
+ wallet: "AVAX",
1281
+ symbol: "AVAX",
1282
+ chain: "Avalanche C-Chain" /* AvalancheCChain */,
1283
+ network: "mainnet" /* Mainnet */,
1284
+ precision: 9,
1285
+ contract: void 0,
1286
+ provider: "fireblocks" /* FIREBLOCKS */,
1287
+ hasWithdrawMemo: false
1288
+ }
1289
+ ] : []
1290
+ ],
1291
+ image: "https://www.proton.org/images/tokens/xtokensXAVAX.png",
1292
+ coingeckoId: "avalanche-2"
1293
+ },
1294
+ {
1295
+ allowSwap: false,
1296
+ allowBridge: false,
1297
+ allowLend: false,
1298
+ allowBorrow: false,
1299
+ name: "Polygon",
1300
+ coin: "MATIC",
1301
+ xtokenSymbol: "XMATIC",
1302
+ xtokenPrecision: 8,
1303
+ xtokenContract: "xtokens",
1304
+ wallets: [
1305
+ ...IS_MAINNET ? [
1306
+ {
1307
+ wallet: "MATIC",
1308
+ symbol: "MATIC",
1309
+ chain: "Polygon" /* PolygonMainnet */,
1310
+ network: "mainnet" /* Mainnet */,
1311
+ precision: 18,
1312
+ contract: "0x0000000000000000000000000000000000000000",
1313
+ provider: "fireblocks" /* FIREBLOCKS */,
1314
+ hasWithdrawMemo: false
1315
+ }
1316
+ ] : []
1317
+ ],
1318
+ image: "https://www.proton.org/images/tokens/xtokensXMATIC.png",
1319
+ coingeckoId: "matic-network"
1320
+ },
1321
+ {
1322
+ allowSwap: true,
1323
+ allowBridge: false,
1324
+ allowLend: false,
1325
+ allowBorrow: false,
1326
+ name: "Metal Dollar",
1327
+ coin: "XMD",
1328
+ xtokenSymbol: "XMD",
1329
+ xtokenPrecision: 6,
1330
+ xtokenContract: "xmd.token",
1331
+ wallets: [],
1332
+ image: "https://github.com/eoscafe/eos-airdrops/blob/master/logos/xmd.png?raw=true",
1333
+ coingeckoId: ""
1334
+ },
1335
+ {
1336
+ allowSwap: false,
1337
+ allowBridge: IS_TESTNET,
1338
+ allowLend: false,
1339
+ allowBorrow: false,
1340
+ name: "HBAR",
1341
+ coin: "HBAR",
1342
+ xtokenSymbol: "XHBAR",
1343
+ xtokenPrecision: 6,
1344
+ xtokenContract: "xtokens",
1345
+ wallets: [
1346
+ ...IS_TESTNET ? [
1347
+ {
1348
+ wallet: "HBAR",
1349
+ symbol: "HBAR",
1350
+ chain: "Hedera (Testnet)" /* HederaTestnet */,
1351
+ network: "testnet" /* Testnet */,
1352
+ precision: 8,
1353
+ contract: void 0,
1354
+ provider: "fireblocks" /* FIREBLOCKS */,
1355
+ hasWithdrawMemo: true
1356
+ }
1357
+ ] : []
1358
+ ],
1359
+ image: "https://www.proton.org/images/tokens/xtokensXHBAR.png",
1360
+ coingeckoId: "hedera-hashgraph"
1361
+ }
1362
+ ];
1363
+ const walletWithDuplicateChains = coins.find((coin) => {
1364
+ const chains = coin.wallets.map((wallet) => wallet.chain);
1365
+ return new Set(chains).size !== chains.length;
1366
+ });
1367
+ if (walletWithDuplicateChains) {
1368
+ throw new Error(
1369
+ `Coin ${walletWithDuplicateChains.coin} has duplicate chains in wallet`
1370
+ );
1371
+ }
1372
+ return {
1373
+ allCoins: coins,
1374
+ swapCoins: coins.filter((coin) => coin.allowSwap),
1375
+ bridgeCoins: coins.filter((coin) => coin.allowBridge),
1376
+ lendCoins: coins.filter((coin) => coin.allowLend),
1377
+ borrowCoins: coins.filter((coin) => coin.allowBorrow),
1378
+ loanCoins: coins.filter((coin) => coin.allowLend || coin.allowBorrow),
1379
+ allEnabledCoins: coins.filter(
1380
+ (coin) => coin.allowSwap || coin.allowBridge || coin.xtokenSymbol === "XMD"
1381
+ )
1382
+ };
1383
+ };
1384
+
1385
+ // src/parsers/actions.ts
1386
+ var z2 = __toESM(require("zod"));
1387
+
1388
+ // src/parsers/base.ts
1389
+ var z = __toESM(require("zod"));
1390
+ var accountParser = z.string().regex(/^[.1-5a-z]{0,12}[.1-5a-j]?$/);
1391
+ var authorizationParser = z.object({
1392
+ actor: accountParser,
1393
+ permission: z.string()
1394
+ });
1395
+ var authorizationsParser = z.array(authorizationParser).min(1);
1396
+ var ExtendedAssetParser = z.object({
1397
+ quantity: z.string(),
1398
+ contract: accountParser
1399
+ });
1400
+
1401
+ // src/parsers/actions.ts
1402
+ var actionParser = z2.object({
1403
+ account: z2.string(),
1404
+ name: z2.string(),
1405
+ authorization: z2.array(
1406
+ z2.object({
1407
+ actor: z2.string(),
1408
+ permission: z2.string()
1409
+ })
1410
+ ),
1411
+ data: z2.any(),
1412
+ hex_data: z2.string().optional()
1413
+ });
1414
+ var transactionExtensionsParser = z2.array(z2.number().or(z2.string())).optional();
1415
+ var rawTransactionParser = z2.object({
1416
+ expiration: z2.string(),
1417
+ ref_block_num: z2.number(),
1418
+ ref_block_prefix: z2.number(),
1419
+ max_net_usage_words: z2.number(),
1420
+ max_cpu_usage_ms: z2.number(),
1421
+ delay_sec: z2.number(),
1422
+ context_free_actions: z2.array(actionParser),
1423
+ transaction_extensions: z2.array(transactionExtensionsParser)
1424
+ });
1425
+ var baseActionParser = (contract, action, data) => z2.object({
1426
+ account: contract === "*" ? accountParser : z2.literal(contract),
1427
+ name: z2.literal(action),
1428
+ data: z2.object(data),
1429
+ authorization: authorizationsParser
1430
+ });
1431
+ var baseActionSerializedParser = (contract, action, data) => z2.object({
1432
+ account: contract === "*" ? accountParser : z2.literal(contract),
1433
+ name: z2.literal(action),
1434
+ data: z2.string().or(z2.object(data)),
1435
+ authorization: authorizationsParser
1436
+ });
1437
+ var webauthActionParser = (contract, action, data) => z2.object({
1438
+ account: z2.literal("webauthn"),
1439
+ name: z2.literal("exec"),
1440
+ data: z2.object({
1441
+ account: accountParser,
1442
+ key: z2.object({
1443
+ key: z2.array(z2.string().or(z2.object({
1444
+ modulus: z2.string(),
1445
+ exponent: z2.string()
1446
+ }))),
1447
+ user_presence: z2.number(),
1448
+ rpid: z2.string()
1449
+ }),
1450
+ nonce: z2.number(),
1451
+ permissions: authorizationsParser,
1452
+ signature: z2.object({
1453
+ auth_data: z2.string(),
1454
+ client_json: z2.string(),
1455
+ signature: z2.string()
1456
+ }),
1457
+ trx: rawTransactionParser.merge(
1458
+ z2.object({
1459
+ actions: z2.array(
1460
+ baseActionSerializedParser(contract, action, data)
1461
+ ).length(1)
1462
+ })
1463
+ )
1464
+ }),
1465
+ authorization: authorizationsParser
1466
+ });
1467
+ var singleActionTransactionParser = (contract, action, data) => {
1468
+ const baseAction = baseActionParser(contract, action, data);
1469
+ const webauthAction = webauthActionParser(contract, action, data);
1470
+ return rawTransactionParser.merge(z2.object({
1471
+ actions: z2.array(baseAction.or(webauthAction)).length(1)
1472
+ }));
1473
+ };
1474
+
1475
+ // src/parsers/address.ts
1476
+ var z4 = __toESM(require("zod"));
1477
+
1478
+ // src/parsers/auth.ts
1479
+ var z3 = __toESM(require("zod"));
1480
+
1481
+ // src/constants.ts
1482
+ var WRAP_CONTRACT = "proton.wrap";
1483
+ var WRAP_AUTH_ACTION = "generateauth";
1484
+ var FEE_FACTOR = 1e4;
1485
+ var initializeConstants = (chain) => {
1486
+ const { swapCoins, bridgeCoins, allEnabledCoins, allCoins, lendCoins, borrowCoins, loanCoins } = initializeCoins(chain);
1487
+ const constants = {
1488
+ SWAP_CONTRACT: "proton.swaps",
1489
+ DEX_CONTRACT: "dex",
1490
+ FEE_FACTOR,
1491
+ GOOGLE_MAPS_KEY: "AIzaSyDb2_CrK032kSIqBXbkdwmaLKWELl0SxVs",
1492
+ SWAP_URL: chain === "proton" ? "https://otc.protonswap.com" : "https://otc-test.protonswap.com",
1493
+ WRAP_SERVER_URL: chain === "proton" ? "https://www.api.bloks.io/proton-wrap-public2" : "https://www.api.bloks.io/proton-wrap-testnet-public2",
1494
+ WRAP_CONTRACT,
1495
+ WRAP_ACTIONS: {
1496
+ SAVE_ADDRESS: "saveaddress2",
1497
+ DELETE_ADDRESS: "deladdress2",
1498
+ WRAP_START: "wrapstart2",
1499
+ WRAP_FINISH: "wrapfinish2",
1500
+ WRAP_PROCESS: "wrapprocess2",
1501
+ WRAP_SET_CONF: "wrapsetconf2"
1502
+ },
1503
+ WRAP_TABLES: {
1504
+ ADDRESSES: "addresses2",
1505
+ WRAPS: "wraps2"
1506
+ },
1507
+ ADDRESSES_INDEXES: {
1508
+ BY_ACCOUNT: 2,
1509
+ BY_ADDR_HASH: 3
1510
+ },
1511
+ WRAPS_INDEXES: {
1512
+ BY_ACCOUNT: 2,
1513
+ BY_STATUS: 3,
1514
+ BY_WRAP_HASH: 4
1515
+ },
1516
+ WRAP_PROCESS_TIMER: 5e3,
1517
+ FARM_CONTRACT: "yield.farms",
1518
+ WEBHOOK_PERMISSION: "webhook",
1519
+ PUBLIC_PERMISSION: "public",
1520
+ LIGHT_PERMISSION: "light",
1521
+ WRAP_AUTH_ACTION,
1522
+ METAL_ENDPOINT: chain === "proton" ? "https://cirrus.metalpay.com" : "https://cirrus-dev.metalpay.com",
1523
+ METAL_PROTON_ENDPOINT: chain === "proton" ? "https://api.protonchain.com" : "https://api-dev.protonchain.com",
1524
+ METAL_DEX_HTTP_ENDPOINT: chain === "proton" ? "https://metal-dexdb.global.binfra.one/dex" : "https://metallicus-dbapi-dev01.binfra.one/dex",
1525
+ METAL_DEX_WS_ENDPOINT: chain === "proton" ? "wss://metal-dexdb.global.binfra.one/dexws" : "wss://metallicus-dbapi-dev01.binfra.one/dexws",
1526
+ PROTON_ENDPOINTS: chain === "proton" ? ["https://metal-proton-rpc.global.binfra.one", "https://proton.greymass.com", "https://proton.eoscafeblock.com", "https://proton.cryptolions.io", "https://proton.eosusa.news"] : ["https://metal-protontest-rpc.global.binfra.one", "https://testnet.protonchain.com"],
1527
+ CHAIN_ID: chain === "proton" ? "384da888112027f0321850a169f737c33e53b388aad48b5adace4bab97f437e0" : "71ee83bcf52142d61019d95f9cc5427ba6a0d7ff8accd9e2088ae2abeaf3d3dd",
1528
+ DEX_PROCESS_SIZE: 30,
1529
+ DEX_SLTPPROCESS_SIZE: 10,
1530
+ MAX_PRICE: "9223372036854775806",
1531
+ MAX_ITEMS_PER_PAGE_DESKTOP: 25,
1532
+ MIN_PRICE: 1,
1533
+ DEFAULT_DEX_SYMBOL: chain === "proton" ? "XPR_XMD" : "XPR_XUSDC",
1534
+ CHAIN: chain,
1535
+ SWAP_COINS: swapCoins,
1536
+ BRIDGE_COINS: bridgeCoins,
1537
+ ALL_ENABLED_COINS: allEnabledCoins,
1538
+ LEND_COINS: lendCoins,
1539
+ BORROW_COINS: borrowCoins,
1540
+ LOAN_COINS: loanCoins,
1541
+ ALL_COINS: allCoins,
1542
+ findBridgeCoinWalletByXtokenAndChain(xtokenSymbol, chain2) {
1543
+ const bridgeCoin = constants.BRIDGE_COINS.find((bridgeCoin2) => bridgeCoin2.xtokenSymbol === xtokenSymbol);
1544
+ if (!bridgeCoin)
1545
+ return void 0;
1546
+ const bridgeWallet = bridgeCoin.wallets.find((bridgeWallet2) => bridgeWallet2.chain === chain2);
1547
+ if (!bridgeWallet)
1548
+ return void 0;
1549
+ return {
1550
+ ...bridgeCoin,
1551
+ ...bridgeWallet
1552
+ };
1553
+ },
1554
+ findBridgeCoinWallet(coin, wallet) {
1555
+ const bridgeCoin = constants.BRIDGE_COINS.find((bridgeCoin2) => bridgeCoin2.coin === coin);
1556
+ if (!bridgeCoin)
1557
+ return void 0;
1558
+ const bridgeWallet = bridgeCoin.wallets.find((bridgeWallet2) => bridgeWallet2.wallet === wallet);
1559
+ if (!bridgeWallet)
1560
+ return void 0;
1561
+ return {
1562
+ ...bridgeCoin,
1563
+ ...bridgeWallet
1564
+ };
1565
+ },
1566
+ findBridgeCoinNetwork(coin, network) {
1567
+ const bridgeCoin = constants.BRIDGE_COINS.find((bridgeCoin2) => bridgeCoin2.coin === coin);
1568
+ if (!bridgeCoin)
1569
+ return void 0;
1570
+ const bridgeWallet = bridgeCoin.wallets.find((bridgeWallet2) => bridgeWallet2.network === network);
1571
+ if (!bridgeWallet)
1572
+ return void 0;
1573
+ return {
1574
+ ...bridgeCoin,
1575
+ ...bridgeWallet
1576
+ };
1577
+ }
1578
+ };
1579
+ return constants;
1580
+ };
1581
+
1582
+ // src/parsers/auth.ts
1583
+ var createAbstractAuthParser = (contract, action, data) => {
1584
+ return z3.object({
1585
+ signer: authorizationParser,
1586
+ signatures: z3.array(z3.string()).length(1),
1587
+ transaction: singleActionTransactionParser(contract, action, data)
1588
+ });
1589
+ };
1590
+ var generateAuthData = {
1591
+ time: z3.string(),
1592
+ protonAccount: z3.string()
1593
+ };
1594
+ var generateAuthActionsBaseParser = baseActionParser(WRAP_CONTRACT, WRAP_AUTH_ACTION, generateAuthData);
1595
+ var generateAuthParser = createAbstractAuthParser(WRAP_CONTRACT, WRAP_AUTH_ACTION, generateAuthData);
1596
+
1597
+ // src/parsers/address.ts
1598
+ var addressParser = z4.object({
1599
+ index: z4.number(),
1600
+ account: accountParser,
1601
+ chain: z4.string(),
1602
+ address: z4.string(),
1603
+ address_hash: z4.string()
1604
+ });
1605
+ var generateAddressBodyParser = z4.object({
1606
+ coin: z4.string(),
1607
+ wallet: z4.string()
1608
+ }).merge(generateAuthParser);
1609
+ var generateAddressResponse = z4.object({
1610
+ id: z4.string(),
1611
+ // "2448834505708930950",
1612
+ address: z4.string(),
1613
+ // "0x617C03C1E2Bf81C062A4CEfbE312c070E1d86d18",
1614
+ coin: z4.string(),
1615
+ // "ETH",
1616
+ wallet: z4.string(),
1617
+ // "ETH",
1618
+ memo: z4.string().optional()
1619
+ });
1620
+
1621
+ // src/parsers/currency.ts
1622
+ var z5 = __toESM(require("zod"));
1623
+ var rateParser = z5.object({
1624
+ counterCurrency: z5.string(),
1625
+ price: z5.number(),
1626
+ priceChangePercent: z5.number(),
1627
+ marketCap: z5.number(),
1628
+ volume: z5.number(),
1629
+ timestamp: z5.number()
1630
+ });
1631
+ var exchangeRateParser = z5.object({
1632
+ contract: z5.string(),
1633
+ symbol: z5.string(),
1634
+ rank: z5.number(),
1635
+ rates: z5.array(rateParser)
1636
+ });
1637
+ var exchangeRatesParser = z5.array(exchangeRateParser);
1638
+ var bloksRatesParser = z5.array(z5.object({
1639
+ contract: z5.string(),
1640
+ symbol: z5.string(),
1641
+ rank: z5.number(),
1642
+ rates: z5.array(rateParser)
1643
+ }));
1644
+
1645
+ // src/parsers/deposit.ts
1646
+ var z6 = __toESM(require("zod"));
1647
+ var Type = /* @__PURE__ */ ((Type2) => {
1648
+ Type2["RECEIVE"] = "receive";
1649
+ Type2["SEND"] = "send";
1650
+ return Type2;
1651
+ })(Type || {});
1652
+ var depositBodyParser = z6.object({
1653
+ id: z6.string(),
1654
+ // "0x000010203121388fac991"
1655
+ type: z6.nativeEnum(Type),
1656
+ // "receive" or "send"
1657
+ hash: z6.string(),
1658
+ // "0x000010203121388fac991"
1659
+ coin: z6.string(),
1660
+ // "ETH" or "XPR"
1661
+ wallet: z6.string(),
1662
+ // "ETH-ROPSTEN" or "XPR-MAINNET"
1663
+ network: z6.string()
1664
+ // "erc29"
1665
+ });
1666
+ var transactionParser = z6.object({
1667
+ id: z6.string(),
1668
+ // "2629304740076324677"
1669
+ wallet: z6.string(),
1670
+ // "ETH"
1671
+ value: z6.number(),
1672
+ // 10000000000000000
1673
+ valueString: z6.string(),
1674
+ // "10000000000000000"
1675
+ address: z6.string(),
1676
+ // "0x0000"
1677
+ type: z6.nativeEnum(Type),
1678
+ // "receive" or "send"
1679
+ state: z6.string(),
1680
+ // "confirmed"
1681
+ confirmations: z6.number(),
1682
+ // 1
1683
+ hash: z6.string(),
1684
+ // "b4781422be95fee8fbbf720e3e0fa9705ae834474ef25f5724cdd0f5d23211ed"
1685
+ blockHash: z6.string().optional().nullable(),
1686
+ // "000000000000000000089b270eb99f75107d6a9cde37ec944cb80a2998df7b43"
1687
+ blockHeight: z6.number().optional().nullable()
1688
+ // 643159
1689
+ });
1690
+
1691
+ // src/parsers/otc.ts
1692
+ var z7 = __toESM(require("zod"));
1693
+ var otcOrderResponseParser = z7.object({
1694
+ success: z7.boolean(),
1695
+ transaction_id: z7.string(),
1696
+ errormsg: z7.string().optional()
1697
+ });
1698
+ var otcQuoteBodyParser = z7.object({
1699
+ baseAmount: z7.number(),
1700
+ baseSymbol: z7.string(),
1701
+ quoteSymbol: z7.string()
1702
+ });
1703
+ var otcQuoteResponseParser = z7.object({
1704
+ success: z7.boolean(),
1705
+ token: z7.string(),
1706
+ qty: z7.number(),
1707
+ errormsg: z7.string().optional()
1708
+ });
1709
+
1710
+ // src/parsers/withdraw.ts
1711
+ var z8 = __toESM(require("zod"));
1712
+ var withdrawData = {
1713
+ from: z8.string().refine((val) => val !== WRAP_CONTRACT, {
1714
+ message: `${WRAP_CONTRACT} must be receiver`
1715
+ }),
1716
+ to: z8.literal(WRAP_CONTRACT),
1717
+ quantity: z8.string(),
1718
+ memo: z8.string()
1719
+ };
1720
+ var withdrawBodyBaseAction = baseActionParser("*", "transfer", withdrawData);
1721
+ var withdrawBodyParser = z8.object({
1722
+ signer: authorizationParser,
1723
+ signatures: z8.array(z8.string()).length(1),
1724
+ transaction: singleActionTransactionParser("*", "transfer", withdrawData),
1725
+ quoteId: z8.string(),
1726
+ provider: z8.string().optional()
1727
+ });
1728
+ var withdrawMetalResponseParser = z8.object({
1729
+ success: z8.boolean(),
1730
+ id: z8.string()
1731
+ });
1732
+ var withdrawalFeeQuoteParser = z8.object({
1733
+ quoteId: z8.string(),
1734
+ estimatedFee: z8.string(),
1735
+ currency: z8.string(),
1736
+ network: z8.string()
1737
+ });
1738
+
1739
+ // src/parsers/withdrawalHistory.ts
1740
+ var z9 = __toESM(require("zod"));
1741
+ var withdrawHistoryMetalSwapParser = z9.object({
1742
+ id: z9.string(),
1743
+ status: z9.string(),
1744
+ amount: z9.string(),
1745
+ currency: z9.string(),
1746
+ network: z9.string(),
1747
+ created: z9.string(),
1748
+ withdrawalAddress: z9.string(),
1749
+ withdrawalHash: z9.string().optional()
1750
+ });
1751
+ var withdrawHistoryMetalResponseParser = z9.object({
1752
+ swaps: z9.array(withdrawHistoryMetalSwapParser),
1753
+ page: z9.number(),
1754
+ pageSize: z9.number(),
1755
+ numberOfElements: z9.number(),
1756
+ totalPages: z9.number(),
1757
+ totalElements: z9.number()
1758
+ });
1759
+
1760
+ // src/parsers/wrap.ts
1761
+ var z10 = __toESM(require("zod"));
1762
+ var Status = /* @__PURE__ */ ((Status2) => {
1763
+ Status2["PENDING"] = "pending";
1764
+ Status2["SUCCESS"] = "success";
1765
+ Status2["FAIL"] = "fail";
1766
+ Status2["PROCESSING"] = "processing";
1767
+ return Status2;
1768
+ })(Status || {});
1769
+ var wrapStartParser = z10.object({
1770
+ balance: ExtendedAssetParser,
1771
+ id: z10.string(),
1772
+ txid: z10.string(),
1773
+ chain: z10.string(),
1774
+ deposit_address: z10.string(),
1775
+ confirmations: z10.number()
1776
+ });
1777
+ var wrapSetConfParser = z10.object({
1778
+ wrap_hash: z10.string(),
1779
+ confirmations: z10.number()
1780
+ });
1781
+ var wrapParser = z10.object({
1782
+ index: z10.number(),
1783
+ proton_account: z10.string(),
1784
+ balance: ExtendedAssetParser,
1785
+ id: z10.string(),
1786
+ txid: z10.string(),
1787
+ chain: z10.string(),
1788
+ deposit_address: z10.string(),
1789
+ status: z10.nativeEnum(Status),
1790
+ finish_txid: z10.string(),
1791
+ wrap_hash: z10.string(),
1792
+ confirmations: z10.number()
1793
+ });
1794
+
1795
+ // src/parsers/dex.ts
1796
+ var z11 = __toESM(require("zod"));
1797
+ var ohlcvParser = z11.object({
1798
+ time: z11.number(),
1799
+ open: z11.number(),
1800
+ high: z11.number(),
1801
+ low: z11.number(),
1802
+ close: z11.number(),
1803
+ volume: z11.number(),
1804
+ volume_bid: z11.number(),
1805
+ count: z11.number()
1806
+ });
1807
+ var getOhlcvParser = z11.object({
1808
+ interval: z11.string(),
1809
+ from: z11.string(),
1810
+ to: z11.string(),
1811
+ symbol: z11.string(),
1812
+ limit: z11.string().default("500").refine((n) => +n <= 1e3, "Max limit is 1000")
1813
+ });
1814
+ var getOhlcvResponseParser = z11.object({
1815
+ sync: z11.number(),
1816
+ data: z11.array(ohlcvParser)
1817
+ });
1818
+ var orderHistoryParser = z11.object({
1819
+ seq: z11.number(),
1820
+ block_num: z11.number(),
1821
+ block_time: z11.string(),
1822
+ order_id: z11.number(),
1823
+ market_id: z11.number(),
1824
+ quantity_init: z11.number().optional(),
1825
+ quantity_curr: z11.number(),
1826
+ price: z11.number(),
1827
+ account_name: z11.string(),
1828
+ order_side: z11.number(),
1829
+ order_type: z11.number(),
1830
+ trigger_price: z11.number(),
1831
+ fill_type: z11.number(),
1832
+ status: z11.string(),
1833
+ quantity_change: z11.number(),
1834
+ trx_id: z11.string()
1835
+ });
1836
+ var getOpenOrdersParser = z11.object({
1837
+ account: z11.string(),
1838
+ symbol: z11.string().optional(),
1839
+ offset: z11.string().default("0"),
1840
+ limit: z11.string().default("100").refine((n) => +n <= 250, "Max limit is 250")
1841
+ });
1842
+ var getOpenOrdersResponseParser = z11.object({
1843
+ sync: z11.number(),
1844
+ count: z11.number(),
1845
+ data: z11.array(orderHistoryParser)
1846
+ });
1847
+ var getOrderHistoryParser = z11.object({
1848
+ account: z11.string(),
1849
+ symbol: z11.string().optional(),
1850
+ offset: z11.string().default("0"),
1851
+ limit: z11.string().default("100").refine((n) => +n <= 250, "Max limit is 250"),
1852
+ trx_id: z11.string().optional(),
1853
+ status: z11.string().optional()
1854
+ });
1855
+ var getOrderHistoryResponseParser = z11.object({
1856
+ sync: z11.number(),
1857
+ count: z11.number(),
1858
+ data: z11.array(orderHistoryParser)
1859
+ });
1860
+ var getOrderParser = z11.object({
1861
+ order_id: z11.string()
1862
+ });
1863
+ var getOrderResponseParser = z11.object({
1864
+ sync: z11.number(),
1865
+ data: z11.array(orderHistoryParser)
1866
+ });
1867
+ var depthParser = z11.object({
1868
+ level: z11.number(),
1869
+ ask: z11.number(),
1870
+ bid: z11.number(),
1871
+ count: z11.number()
1872
+ });
1873
+ var getDepthParser = z11.object({
1874
+ symbol: z11.string(),
1875
+ step: z11.string(),
1876
+ limit: z11.string().default("100").refine((n) => +n <= 250, "Max limit is 250")
1877
+ });
1878
+ var getDepthResponseParser = z11.object({
1879
+ sync: z11.number(),
1880
+ data: z11.object({
1881
+ bids: z11.array(depthParser),
1882
+ asks: z11.array(depthParser)
1883
+ })
1884
+ });
1885
+ var dailyParser = z11.object({
1886
+ market_id: z11.number(),
1887
+ first: z11.number(),
1888
+ last: z11.number(),
1889
+ bid: z11.number(),
1890
+ ask: z11.number(),
1891
+ change_percentage_24hr: z11.number(),
1892
+ high: z11.number(),
1893
+ low: z11.number()
1894
+ });
1895
+ var getDailyResponseParser = z11.object({
1896
+ sync: z11.number(),
1897
+ data: z11.array(dailyParser)
1898
+ });
1899
+ var marketParser = z11.object({
1900
+ market_id: z11.number(),
1901
+ symbol: z11.string(),
1902
+ status_code: z11.number(),
1903
+ type: z11.string(),
1904
+ maker_fee: z11.number(),
1905
+ taker_fee: z11.number(),
1906
+ order_min: z11.number(),
1907
+ bid_token: z11.object({
1908
+ code: z11.string(),
1909
+ precision: z11.number(),
1910
+ contract: z11.string(),
1911
+ multiplier: z11.number()
1912
+ }),
1913
+ ask_token: z11.object({
1914
+ code: z11.string(),
1915
+ precision: z11.number(),
1916
+ contract: z11.string(),
1917
+ multiplier: z11.number()
1918
+ })
1919
+ });
1920
+ var getMarketsResponseParser = z11.object({
1921
+ sync: z11.number(),
1922
+ data: z11.array(marketParser)
1923
+ });
1924
+ var tradeParser = z11.object({
1925
+ block_num: z11.number(),
1926
+ block_time: z11.string(),
1927
+ trade_id: z11.number(),
1928
+ market_id: z11.number(),
1929
+ price: z11.number(),
1930
+ bid_user: z11.string(),
1931
+ bid_user_order_id: z11.number(),
1932
+ bid_total: z11.number(),
1933
+ bid_amount: z11.number(),
1934
+ bid_fee: z11.number(),
1935
+ ask_user: z11.string(),
1936
+ ask_user_order_id: z11.number(),
1937
+ ask_total: z11.number(),
1938
+ ask_amount: z11.number(),
1939
+ ask_fee: z11.number(),
1940
+ order_side: z11.number(),
1941
+ trx_id: z11.string()
1942
+ });
1943
+ var getTradesParser = z11.object({
1944
+ symbol: z11.string(),
1945
+ offset: z11.string().default("0"),
1946
+ limit: z11.string().default("100").refine((n) => +n <= 250, "Max limit is 250")
1947
+ });
1948
+ var getTradesResponseParser = z11.object({
1949
+ sync: z11.number(),
1950
+ data: z11.array(tradeParser)
1951
+ });
1952
+ var getTradeHistoryParser = z11.object({
1953
+ account: z11.string(),
1954
+ symbol: z11.string().optional(),
1955
+ offset: z11.string().default("0"),
1956
+ limit: z11.string().default("100").refine((n) => +n <= 250, "Max limit is 250")
1957
+ });
1958
+ var getTradeHistoryResponseParser = z11.object({
1959
+ sync: z11.number(),
1960
+ count: z11.number(),
1961
+ data: z11.array(tradeParser)
1962
+ });
1963
+ var syncParser = z11.object({
1964
+ sourceid: z11.number(),
1965
+ block_num: z11.string(),
1966
+ block_time: z11.string(),
1967
+ irreversible: z11.string(),
1968
+ is_master: z11.number(),
1969
+ last_updated: z11.string()
1970
+ });
1971
+ var getSyncResponseParser = z11.object({
1972
+ dbSecondsBehind: z11.number(),
1973
+ chronicleSecondsBehind: z11.number(),
1974
+ maxSecondsBehind: z11.number()
1975
+ });
1976
+ var refferalTotalParser = z11.object({
1977
+ referrer: z11.string(),
1978
+ market_id: z11.number(),
1979
+ bid_fee: z11.number(),
1980
+ bid_total: z11.number(),
1981
+ ask_fee: z11.number(),
1982
+ ask_total: z11.number()
1983
+ });
1984
+ var getReferralTotalsParser = z11.object({
1985
+ referrer: z11.string()
1986
+ });
1987
+ var getReferralTotalsResponseParser = z11.object({
1988
+ sync: z11.number(),
1989
+ data: z11.array(refferalTotalParser)
1990
+ });
1991
+ var refferalParser = z11.object({
1992
+ referred_user: z11.string()
1993
+ });
1994
+ var getReferralsParser = z11.object({
1995
+ referrer: z11.string()
1996
+ });
1997
+ var getReferralsResponseParser = z11.object({
1998
+ sync: z11.number(),
1999
+ data: z11.array(refferalParser)
2000
+ });
2001
+ var leaderboardParser = z11.object({
2002
+ user: z11.string(),
2003
+ total: z11.number()
2004
+ });
2005
+ var getLeaderboardParser = z11.object({
2006
+ market_ids: z11.array(z11.string()),
2007
+ from: z11.string(),
2008
+ to: z11.string()
2009
+ });
2010
+ var getLeaderboardResponseParser = z11.object({
2011
+ sync: z11.number(),
2012
+ data: z11.array(leaderboardParser)
2013
+ });
2014
+ var orderType = /* @__PURE__ */ ((orderType2) => {
2015
+ orderType2[orderType2["ORDERBOOK"] = 0] = "ORDERBOOK";
2016
+ orderType2[orderType2["LIMIT"] = 1] = "LIMIT";
2017
+ orderType2[orderType2["STOPLOSS"] = 2] = "STOPLOSS";
2018
+ orderType2[orderType2["TAKEPROFIT"] = 3] = "TAKEPROFIT";
2019
+ return orderType2;
2020
+ })(orderType || {});
2021
+ var orderSide = /* @__PURE__ */ ((orderSide2) => {
2022
+ orderSide2[orderSide2["INVALID"] = 0] = "INVALID";
2023
+ orderSide2[orderSide2["BUY"] = 1] = "BUY";
2024
+ orderSide2[orderSide2["SELL"] = 2] = "SELL";
2025
+ return orderSide2;
2026
+ })(orderSide || {});
2027
+ var fillType = /* @__PURE__ */ ((fillType2) => {
2028
+ fillType2[fillType2["GTC"] = 0] = "GTC";
2029
+ fillType2[fillType2["IOC"] = 1] = "IOC";
2030
+ fillType2[fillType2["POST_ONLY"] = 2] = "POST_ONLY";
2031
+ return fillType2;
2032
+ })(fillType || {});
2033
+ var logStatus = /* @__PURE__ */ ((logStatus2) => {
2034
+ logStatus2["CREATE"] = "create";
2035
+ logStatus2["UPDATE"] = "update";
2036
+ logStatus2["TRANSFER"] = "transfer";
2037
+ logStatus2["CANCEL"] = "cancel";
2038
+ logStatus2["DELETE"] = "delete";
2039
+ return logStatus2;
2040
+ })(logStatus || {});
2041
+ var ITopics = /* @__PURE__ */ ((ITopics2) => {
2042
+ ITopics2["TRADES"] = "TRADES";
2043
+ ITopics2["ORDERS"] = "ORDERS";
2044
+ return ITopics2;
2045
+ })(ITopics || {});
2046
+ var TOPICS = {
2047
+ ["TRADES" /* TRADES */]: {
2048
+ topic: "TRADES" /* TRADES */
2049
+ },
2050
+ ["ORDERS" /* ORDERS */]: {
2051
+ topic: "ORDERS" /* ORDERS */
2052
+ }
2053
+ };
2054
+
2055
+ // src/parsers/login.ts
2056
+ var z12 = __toESM(require("zod"));
2057
+ var loginAccountParamsV3Parser = z12.object({
2058
+ email: z12.string().optional(),
2059
+ verificationCode: z12.string().optional()
2060
+ }).merge(generateAuthParser);
2061
+
2062
+ // src/utils.ts
2063
+ var isSameToken = (token1, token2) => {
2064
+ return token1.xtokenSymbol === token2.xtokenSymbol && token1.xtokenPrecision === token2.xtokenPrecision && token1.xtokenContract === token2.xtokenContract;
2065
+ };
2066
+ var median = (numbers) => {
2067
+ const sorted = numbers.slice().sort((a, b) => a - b);
2068
+ const middle = Math.floor(sorted.length / 2);
2069
+ if (sorted.length % 2 === 0) {
2070
+ return (sorted[middle - 1] + sorted[middle]) / 2;
2071
+ }
2072
+ return sorted[middle];
2073
+ };
2074
+
2075
+ // src/graph.ts
2076
+ var import_lodash = __toESM(require("lodash.clonedeep"));
2077
+ var INode = class {
2078
+ constructor(key, data) {
2079
+ this.key = key;
2080
+ this.data = {};
2081
+ if (data) {
2082
+ this.data = data;
2083
+ }
2084
+ }
2085
+ };
2086
+ var ILink = class {
2087
+ constructor(from, to, data) {
2088
+ this.from = from;
2089
+ this.to = to;
2090
+ this.data = {};
2091
+ if (data) {
2092
+ this.data = data;
2093
+ }
2094
+ }
2095
+ };
2096
+ var Graph = class {
2097
+ constructor() {
2098
+ this.nodes = [];
2099
+ this.links = [];
2100
+ this.lastPathFound = [];
2101
+ this.isEquals = (a, b) => a.key === b.key;
2102
+ }
2103
+ addNode(k, v) {
2104
+ const node = this.findNode(k);
2105
+ if (!node) {
2106
+ this.nodes.push(new INode(k, v));
2107
+ }
2108
+ }
2109
+ addNodes(...nodes) {
2110
+ nodes.forEach((node) => typeof node === "string" ? this.addNode(node) : this.addNode(node[0], node[1]));
2111
+ }
2112
+ findNode(k) {
2113
+ const inode = new INode(k);
2114
+ return this.nodes.find((node) => this.isEquals(node, inode));
2115
+ }
2116
+ findNodes(...keys) {
2117
+ return keys.map((k) => this.findNode(k));
2118
+ }
2119
+ requireFindNodes(...keys) {
2120
+ const nodes = this.findNodes(...keys);
2121
+ if (nodes.some((n) => n === void 0)) {
2122
+ throw new Error("One of the nodes does not exist");
2123
+ }
2124
+ return nodes;
2125
+ }
2126
+ addLink(nodeA, nodeB, data) {
2127
+ const [inodeA, inodeB] = this.requireFindNodes(nodeA, nodeB);
2128
+ this.links.push(new ILink(inodeA, inodeB, data));
2129
+ }
2130
+ addLinks(...links) {
2131
+ links.forEach((link) => this.addLink(...link));
2132
+ }
2133
+ /**
2134
+ * Get all nodes linked
2135
+ * to from `node`.
2136
+ */
2137
+ findLinkedNodes(node) {
2138
+ return this.links.reduce((acc, link) => {
2139
+ if (this.isEquals(link.from, node)) {
2140
+ acc.push(link.to);
2141
+ }
2142
+ return acc;
2143
+ }, []);
2144
+ }
2145
+ findAllPaths(from, to) {
2146
+ const allPaths = [];
2147
+ const [fromNode, toNode] = this.requireFindNodes(from, to);
2148
+ const path = [fromNode];
2149
+ let seen = /* @__PURE__ */ new Set();
2150
+ const stuck = (x) => {
2151
+ if (this.isEquals(x, toNode)) {
2152
+ return false;
2153
+ }
2154
+ for (const y of this.findLinkedNodes(x)) {
2155
+ if (!seen.has(y.key)) {
2156
+ seen.add(y.key);
2157
+ if (!stuck(y)) {
2158
+ return false;
2159
+ }
2160
+ }
2161
+ }
2162
+ return true;
2163
+ };
2164
+ const search = (x) => {
2165
+ if (this.isEquals(x, toNode)) {
2166
+ allPaths.push((0, import_lodash.default)(path));
2167
+ return;
2168
+ }
2169
+ seen = new Set(path.map((p) => p.key));
2170
+ if (stuck(x)) {
2171
+ return;
2172
+ }
2173
+ for (const y of this.findLinkedNodes(x)) {
2174
+ if (!path.includes(y)) {
2175
+ path.push(y);
2176
+ search(y);
2177
+ path.pop();
2178
+ }
2179
+ }
2180
+ };
2181
+ search(fromNode);
2182
+ return allPaths;
2183
+ }
2184
+ };
2185
+
2186
+ // node_modules/bignumber.js/bignumber.mjs
2187
+ var isNumeric = /^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i;
2188
+ var mathceil = Math.ceil;
2189
+ var mathfloor = Math.floor;
2190
+ var bignumberError = "[BigNumber Error] ";
2191
+ var tooManyDigits = bignumberError + "Number primitive has more than 15 significant digits: ";
2192
+ var BASE = 1e14;
2193
+ var LOG_BASE = 14;
2194
+ var MAX_SAFE_INTEGER = 9007199254740991;
2195
+ var POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13];
2196
+ var SQRT_BASE = 1e7;
2197
+ var MAX = 1e9;
2198
+ function clone(configObject) {
2199
+ var div, convertBase, parseNumeric, P = BigNumber2.prototype = { constructor: BigNumber2, toString: null, valueOf: null }, ONE = new BigNumber2(1), DECIMAL_PLACES = 20, ROUNDING_MODE = 4, TO_EXP_NEG = -7, TO_EXP_POS = 21, MIN_EXP = -1e7, MAX_EXP = 1e7, CRYPTO = false, MODULO_MODE = 1, POW_PRECISION = 0, FORMAT = {
2200
+ prefix: "",
2201
+ groupSize: 3,
2202
+ secondaryGroupSize: 0,
2203
+ groupSeparator: ",",
2204
+ decimalSeparator: ".",
2205
+ fractionGroupSize: 0,
2206
+ fractionGroupSeparator: "\xA0",
2207
+ // non-breaking space
2208
+ suffix: ""
2209
+ }, ALPHABET = "0123456789abcdefghijklmnopqrstuvwxyz", alphabetHasNormalDecimalDigits = true;
2210
+ function BigNumber2(v, b) {
2211
+ var alphabet, c, caseChanged, e, i, isNum, len, str, x = this;
2212
+ if (!(x instanceof BigNumber2))
2213
+ return new BigNumber2(v, b);
2214
+ if (b == null) {
2215
+ if (v && v._isBigNumber === true) {
2216
+ x.s = v.s;
2217
+ if (!v.c || v.e > MAX_EXP) {
2218
+ x.c = x.e = null;
2219
+ } else if (v.e < MIN_EXP) {
2220
+ x.c = [x.e = 0];
2221
+ } else {
2222
+ x.e = v.e;
2223
+ x.c = v.c.slice();
2224
+ }
2225
+ return;
2226
+ }
2227
+ if ((isNum = typeof v == "number") && v * 0 == 0) {
2228
+ x.s = 1 / v < 0 ? (v = -v, -1) : 1;
2229
+ if (v === ~~v) {
2230
+ for (e = 0, i = v; i >= 10; i /= 10, e++)
2231
+ ;
2232
+ if (e > MAX_EXP) {
2233
+ x.c = x.e = null;
2234
+ } else {
2235
+ x.e = e;
2236
+ x.c = [v];
2237
+ }
2238
+ return;
2239
+ }
2240
+ str = String(v);
2241
+ } else {
2242
+ if (!isNumeric.test(str = String(v)))
2243
+ return parseNumeric(x, str, isNum);
2244
+ x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1;
2245
+ }
2246
+ if ((e = str.indexOf(".")) > -1)
2247
+ str = str.replace(".", "");
2248
+ if ((i = str.search(/e/i)) > 0) {
2249
+ if (e < 0)
2250
+ e = i;
2251
+ e += +str.slice(i + 1);
2252
+ str = str.substring(0, i);
2253
+ } else if (e < 0) {
2254
+ e = str.length;
2255
+ }
2256
+ } else {
2257
+ intCheck(b, 2, ALPHABET.length, "Base");
2258
+ if (b == 10 && alphabetHasNormalDecimalDigits) {
2259
+ x = new BigNumber2(v);
2260
+ return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);
2261
+ }
2262
+ str = String(v);
2263
+ if (isNum = typeof v == "number") {
2264
+ if (v * 0 != 0)
2265
+ return parseNumeric(x, str, isNum, b);
2266
+ x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1;
2267
+ if (BigNumber2.DEBUG && str.replace(/^0\.0*|\./, "").length > 15) {
2268
+ throw Error(tooManyDigits + v);
2269
+ }
2270
+ } else {
2271
+ x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1;
2272
+ }
2273
+ alphabet = ALPHABET.slice(0, b);
2274
+ e = i = 0;
2275
+ for (len = str.length; i < len; i++) {
2276
+ if (alphabet.indexOf(c = str.charAt(i)) < 0) {
2277
+ if (c == ".") {
2278
+ if (i > e) {
2279
+ e = len;
2280
+ continue;
2281
+ }
2282
+ } else if (!caseChanged) {
2283
+ if (str == str.toUpperCase() && (str = str.toLowerCase()) || str == str.toLowerCase() && (str = str.toUpperCase())) {
2284
+ caseChanged = true;
2285
+ i = -1;
2286
+ e = 0;
2287
+ continue;
2288
+ }
2289
+ }
2290
+ return parseNumeric(x, String(v), isNum, b);
2291
+ }
2292
+ }
2293
+ isNum = false;
2294
+ str = convertBase(str, b, 10, x.s);
2295
+ if ((e = str.indexOf(".")) > -1)
2296
+ str = str.replace(".", "");
2297
+ else
2298
+ e = str.length;
2299
+ }
2300
+ for (i = 0; str.charCodeAt(i) === 48; i++)
2301
+ ;
2302
+ for (len = str.length; str.charCodeAt(--len) === 48; )
2303
+ ;
2304
+ if (str = str.slice(i, ++len)) {
2305
+ len -= i;
2306
+ if (isNum && BigNumber2.DEBUG && len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) {
2307
+ throw Error(tooManyDigits + x.s * v);
2308
+ }
2309
+ if ((e = e - i - 1) > MAX_EXP) {
2310
+ x.c = x.e = null;
2311
+ } else if (e < MIN_EXP) {
2312
+ x.c = [x.e = 0];
2313
+ } else {
2314
+ x.e = e;
2315
+ x.c = [];
2316
+ i = (e + 1) % LOG_BASE;
2317
+ if (e < 0)
2318
+ i += LOG_BASE;
2319
+ if (i < len) {
2320
+ if (i)
2321
+ x.c.push(+str.slice(0, i));
2322
+ for (len -= LOG_BASE; i < len; ) {
2323
+ x.c.push(+str.slice(i, i += LOG_BASE));
2324
+ }
2325
+ i = LOG_BASE - (str = str.slice(i)).length;
2326
+ } else {
2327
+ i -= len;
2328
+ }
2329
+ for (; i--; str += "0")
2330
+ ;
2331
+ x.c.push(+str);
2332
+ }
2333
+ } else {
2334
+ x.c = [x.e = 0];
2335
+ }
2336
+ }
2337
+ BigNumber2.clone = clone;
2338
+ BigNumber2.ROUND_UP = 0;
2339
+ BigNumber2.ROUND_DOWN = 1;
2340
+ BigNumber2.ROUND_CEIL = 2;
2341
+ BigNumber2.ROUND_FLOOR = 3;
2342
+ BigNumber2.ROUND_HALF_UP = 4;
2343
+ BigNumber2.ROUND_HALF_DOWN = 5;
2344
+ BigNumber2.ROUND_HALF_EVEN = 6;
2345
+ BigNumber2.ROUND_HALF_CEIL = 7;
2346
+ BigNumber2.ROUND_HALF_FLOOR = 8;
2347
+ BigNumber2.EUCLID = 9;
2348
+ BigNumber2.config = BigNumber2.set = function(obj) {
2349
+ var p, v;
2350
+ if (obj != null) {
2351
+ if (typeof obj == "object") {
2352
+ if (obj.hasOwnProperty(p = "DECIMAL_PLACES")) {
2353
+ v = obj[p];
2354
+ intCheck(v, 0, MAX, p);
2355
+ DECIMAL_PLACES = v;
2356
+ }
2357
+ if (obj.hasOwnProperty(p = "ROUNDING_MODE")) {
2358
+ v = obj[p];
2359
+ intCheck(v, 0, 8, p);
2360
+ ROUNDING_MODE = v;
2361
+ }
2362
+ if (obj.hasOwnProperty(p = "EXPONENTIAL_AT")) {
2363
+ v = obj[p];
2364
+ if (v && v.pop) {
2365
+ intCheck(v[0], -MAX, 0, p);
2366
+ intCheck(v[1], 0, MAX, p);
2367
+ TO_EXP_NEG = v[0];
2368
+ TO_EXP_POS = v[1];
2369
+ } else {
2370
+ intCheck(v, -MAX, MAX, p);
2371
+ TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v);
2372
+ }
2373
+ }
2374
+ if (obj.hasOwnProperty(p = "RANGE")) {
2375
+ v = obj[p];
2376
+ if (v && v.pop) {
2377
+ intCheck(v[0], -MAX, -1, p);
2378
+ intCheck(v[1], 1, MAX, p);
2379
+ MIN_EXP = v[0];
2380
+ MAX_EXP = v[1];
2381
+ } else {
2382
+ intCheck(v, -MAX, MAX, p);
2383
+ if (v) {
2384
+ MIN_EXP = -(MAX_EXP = v < 0 ? -v : v);
2385
+ } else {
2386
+ throw Error(bignumberError + p + " cannot be zero: " + v);
2387
+ }
2388
+ }
2389
+ }
2390
+ if (obj.hasOwnProperty(p = "CRYPTO")) {
2391
+ v = obj[p];
2392
+ if (v === !!v) {
2393
+ if (v) {
2394
+ if (typeof crypto != "undefined" && crypto && (crypto.getRandomValues || crypto.randomBytes)) {
2395
+ CRYPTO = v;
2396
+ } else {
2397
+ CRYPTO = !v;
2398
+ throw Error(bignumberError + "crypto unavailable");
2399
+ }
2400
+ } else {
2401
+ CRYPTO = v;
2402
+ }
2403
+ } else {
2404
+ throw Error(bignumberError + p + " not true or false: " + v);
2405
+ }
2406
+ }
2407
+ if (obj.hasOwnProperty(p = "MODULO_MODE")) {
2408
+ v = obj[p];
2409
+ intCheck(v, 0, 9, p);
2410
+ MODULO_MODE = v;
2411
+ }
2412
+ if (obj.hasOwnProperty(p = "POW_PRECISION")) {
2413
+ v = obj[p];
2414
+ intCheck(v, 0, MAX, p);
2415
+ POW_PRECISION = v;
2416
+ }
2417
+ if (obj.hasOwnProperty(p = "FORMAT")) {
2418
+ v = obj[p];
2419
+ if (typeof v == "object")
2420
+ FORMAT = v;
2421
+ else
2422
+ throw Error(bignumberError + p + " not an object: " + v);
2423
+ }
2424
+ if (obj.hasOwnProperty(p = "ALPHABET")) {
2425
+ v = obj[p];
2426
+ if (typeof v == "string" && !/^.?$|[+\-.\s]|(.).*\1/.test(v)) {
2427
+ alphabetHasNormalDecimalDigits = v.slice(0, 10) == "0123456789";
2428
+ ALPHABET = v;
2429
+ } else {
2430
+ throw Error(bignumberError + p + " invalid: " + v);
2431
+ }
2432
+ }
2433
+ } else {
2434
+ throw Error(bignumberError + "Object expected: " + obj);
2435
+ }
2436
+ }
2437
+ return {
2438
+ DECIMAL_PLACES,
2439
+ ROUNDING_MODE,
2440
+ EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],
2441
+ RANGE: [MIN_EXP, MAX_EXP],
2442
+ CRYPTO,
2443
+ MODULO_MODE,
2444
+ POW_PRECISION,
2445
+ FORMAT,
2446
+ ALPHABET
2447
+ };
2448
+ };
2449
+ BigNumber2.isBigNumber = function(v) {
2450
+ if (!v || v._isBigNumber !== true)
2451
+ return false;
2452
+ if (!BigNumber2.DEBUG)
2453
+ return true;
2454
+ var i, n, c = v.c, e = v.e, s = v.s;
2455
+ out:
2456
+ if ({}.toString.call(c) == "[object Array]") {
2457
+ if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) {
2458
+ if (c[0] === 0) {
2459
+ if (e === 0 && c.length === 1)
2460
+ return true;
2461
+ break out;
2462
+ }
2463
+ i = (e + 1) % LOG_BASE;
2464
+ if (i < 1)
2465
+ i += LOG_BASE;
2466
+ if (String(c[0]).length == i) {
2467
+ for (i = 0; i < c.length; i++) {
2468
+ n = c[i];
2469
+ if (n < 0 || n >= BASE || n !== mathfloor(n))
2470
+ break out;
2471
+ }
2472
+ if (n !== 0)
2473
+ return true;
2474
+ }
2475
+ }
2476
+ } else if (c === null && e === null && (s === null || s === 1 || s === -1)) {
2477
+ return true;
2478
+ }
2479
+ throw Error(bignumberError + "Invalid BigNumber: " + v);
2480
+ };
2481
+ BigNumber2.maximum = BigNumber2.max = function() {
2482
+ return maxOrMin(arguments, P.lt);
2483
+ };
2484
+ BigNumber2.minimum = BigNumber2.min = function() {
2485
+ return maxOrMin(arguments, P.gt);
2486
+ };
2487
+ BigNumber2.random = function() {
2488
+ var pow2_53 = 9007199254740992;
2489
+ var random53bitInt = Math.random() * pow2_53 & 2097151 ? function() {
2490
+ return mathfloor(Math.random() * pow2_53);
2491
+ } : function() {
2492
+ return (Math.random() * 1073741824 | 0) * 8388608 + (Math.random() * 8388608 | 0);
2493
+ };
2494
+ return function(dp) {
2495
+ var a, b, e, k, v, i = 0, c = [], rand = new BigNumber2(ONE);
2496
+ if (dp == null)
2497
+ dp = DECIMAL_PLACES;
2498
+ else
2499
+ intCheck(dp, 0, MAX);
2500
+ k = mathceil(dp / LOG_BASE);
2501
+ if (CRYPTO) {
2502
+ if (crypto.getRandomValues) {
2503
+ a = crypto.getRandomValues(new Uint32Array(k *= 2));
2504
+ for (; i < k; ) {
2505
+ v = a[i] * 131072 + (a[i + 1] >>> 11);
2506
+ if (v >= 9e15) {
2507
+ b = crypto.getRandomValues(new Uint32Array(2));
2508
+ a[i] = b[0];
2509
+ a[i + 1] = b[1];
2510
+ } else {
2511
+ c.push(v % 1e14);
2512
+ i += 2;
2513
+ }
2514
+ }
2515
+ i = k / 2;
2516
+ } else if (crypto.randomBytes) {
2517
+ a = crypto.randomBytes(k *= 7);
2518
+ for (; i < k; ) {
2519
+ v = (a[i] & 31) * 281474976710656 + a[i + 1] * 1099511627776 + a[i + 2] * 4294967296 + a[i + 3] * 16777216 + (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6];
2520
+ if (v >= 9e15) {
2521
+ crypto.randomBytes(7).copy(a, i);
2522
+ } else {
2523
+ c.push(v % 1e14);
2524
+ i += 7;
2525
+ }
2526
+ }
2527
+ i = k / 7;
2528
+ } else {
2529
+ CRYPTO = false;
2530
+ throw Error(bignumberError + "crypto unavailable");
2531
+ }
2532
+ }
2533
+ if (!CRYPTO) {
2534
+ for (; i < k; ) {
2535
+ v = random53bitInt();
2536
+ if (v < 9e15)
2537
+ c[i++] = v % 1e14;
2538
+ }
2539
+ }
2540
+ k = c[--i];
2541
+ dp %= LOG_BASE;
2542
+ if (k && dp) {
2543
+ v = POWS_TEN[LOG_BASE - dp];
2544
+ c[i] = mathfloor(k / v) * v;
2545
+ }
2546
+ for (; c[i] === 0; c.pop(), i--)
2547
+ ;
2548
+ if (i < 0) {
2549
+ c = [e = 0];
2550
+ } else {
2551
+ for (e = -1; c[0] === 0; c.splice(0, 1), e -= LOG_BASE)
2552
+ ;
2553
+ for (i = 1, v = c[0]; v >= 10; v /= 10, i++)
2554
+ ;
2555
+ if (i < LOG_BASE)
2556
+ e -= LOG_BASE - i;
2557
+ }
2558
+ rand.e = e;
2559
+ rand.c = c;
2560
+ return rand;
2561
+ };
2562
+ }();
2563
+ BigNumber2.sum = function() {
2564
+ var i = 1, args = arguments, sum = new BigNumber2(args[0]);
2565
+ for (; i < args.length; )
2566
+ sum = sum.plus(args[i++]);
2567
+ return sum;
2568
+ };
2569
+ convertBase = function() {
2570
+ var decimal = "0123456789";
2571
+ function toBaseOut(str, baseIn, baseOut, alphabet) {
2572
+ var j, arr = [0], arrL, i = 0, len = str.length;
2573
+ for (; i < len; ) {
2574
+ for (arrL = arr.length; arrL--; arr[arrL] *= baseIn)
2575
+ ;
2576
+ arr[0] += alphabet.indexOf(str.charAt(i++));
2577
+ for (j = 0; j < arr.length; j++) {
2578
+ if (arr[j] > baseOut - 1) {
2579
+ if (arr[j + 1] == null)
2580
+ arr[j + 1] = 0;
2581
+ arr[j + 1] += arr[j] / baseOut | 0;
2582
+ arr[j] %= baseOut;
2583
+ }
2584
+ }
2585
+ }
2586
+ return arr.reverse();
2587
+ }
2588
+ return function(str, baseIn, baseOut, sign, callerIsToString) {
2589
+ var alphabet, d, e, k, r, x, xc, y, i = str.indexOf("."), dp = DECIMAL_PLACES, rm = ROUNDING_MODE;
2590
+ if (i >= 0) {
2591
+ k = POW_PRECISION;
2592
+ POW_PRECISION = 0;
2593
+ str = str.replace(".", "");
2594
+ y = new BigNumber2(baseIn);
2595
+ x = y.pow(str.length - i);
2596
+ POW_PRECISION = k;
2597
+ y.c = toBaseOut(
2598
+ toFixedPoint(coeffToString(x.c), x.e, "0"),
2599
+ 10,
2600
+ baseOut,
2601
+ decimal
2602
+ );
2603
+ y.e = y.c.length;
2604
+ }
2605
+ xc = toBaseOut(str, baseIn, baseOut, callerIsToString ? (alphabet = ALPHABET, decimal) : (alphabet = decimal, ALPHABET));
2606
+ e = k = xc.length;
2607
+ for (; xc[--k] == 0; xc.pop())
2608
+ ;
2609
+ if (!xc[0])
2610
+ return alphabet.charAt(0);
2611
+ if (i < 0) {
2612
+ --e;
2613
+ } else {
2614
+ x.c = xc;
2615
+ x.e = e;
2616
+ x.s = sign;
2617
+ x = div(x, y, dp, rm, baseOut);
2618
+ xc = x.c;
2619
+ r = x.r;
2620
+ e = x.e;
2621
+ }
2622
+ d = e + dp + 1;
2623
+ i = xc[d];
2624
+ k = baseOut / 2;
2625
+ r = r || d < 0 || xc[d + 1] != null;
2626
+ r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2)) : i > k || i == k && (rm == 4 || r || rm == 6 && xc[d - 1] & 1 || rm == (x.s < 0 ? 8 : 7));
2627
+ if (d < 1 || !xc[0]) {
2628
+ str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0);
2629
+ } else {
2630
+ xc.length = d;
2631
+ if (r) {
2632
+ for (--baseOut; ++xc[--d] > baseOut; ) {
2633
+ xc[d] = 0;
2634
+ if (!d) {
2635
+ ++e;
2636
+ xc = [1].concat(xc);
2637
+ }
2638
+ }
2639
+ }
2640
+ for (k = xc.length; !xc[--k]; )
2641
+ ;
2642
+ for (i = 0, str = ""; i <= k; str += alphabet.charAt(xc[i++]))
2643
+ ;
2644
+ str = toFixedPoint(str, e, alphabet.charAt(0));
2645
+ }
2646
+ return str;
2647
+ };
2648
+ }();
2649
+ div = function() {
2650
+ function multiply(x, k, base) {
2651
+ var m, temp, xlo, xhi, carry = 0, i = x.length, klo = k % SQRT_BASE, khi = k / SQRT_BASE | 0;
2652
+ for (x = x.slice(); i--; ) {
2653
+ xlo = x[i] % SQRT_BASE;
2654
+ xhi = x[i] / SQRT_BASE | 0;
2655
+ m = khi * xlo + xhi * klo;
2656
+ temp = klo * xlo + m % SQRT_BASE * SQRT_BASE + carry;
2657
+ carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi;
2658
+ x[i] = temp % base;
2659
+ }
2660
+ if (carry)
2661
+ x = [carry].concat(x);
2662
+ return x;
2663
+ }
2664
+ function compare2(a, b, aL, bL) {
2665
+ var i, cmp;
2666
+ if (aL != bL) {
2667
+ cmp = aL > bL ? 1 : -1;
2668
+ } else {
2669
+ for (i = cmp = 0; i < aL; i++) {
2670
+ if (a[i] != b[i]) {
2671
+ cmp = a[i] > b[i] ? 1 : -1;
2672
+ break;
2673
+ }
2674
+ }
2675
+ }
2676
+ return cmp;
2677
+ }
2678
+ function subtract(a, b, aL, base) {
2679
+ var i = 0;
2680
+ for (; aL--; ) {
2681
+ a[aL] -= i;
2682
+ i = a[aL] < b[aL] ? 1 : 0;
2683
+ a[aL] = i * base + a[aL] - b[aL];
2684
+ }
2685
+ for (; !a[0] && a.length > 1; a.splice(0, 1))
2686
+ ;
2687
+ }
2688
+ return function(x, y, dp, rm, base) {
2689
+ var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0, yL, yz, s = x.s == y.s ? 1 : -1, xc = x.c, yc = y.c;
2690
+ if (!xc || !xc[0] || !yc || !yc[0]) {
2691
+ return new BigNumber2(
2692
+ // Return NaN if either NaN, or both Infinity or 0.
2693
+ !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN : (
2694
+ // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0.
2695
+ xc && xc[0] == 0 || !yc ? s * 0 : s / 0
2696
+ )
2697
+ );
2698
+ }
2699
+ q = new BigNumber2(s);
2700
+ qc = q.c = [];
2701
+ e = x.e - y.e;
2702
+ s = dp + e + 1;
2703
+ if (!base) {
2704
+ base = BASE;
2705
+ e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);
2706
+ s = s / LOG_BASE | 0;
2707
+ }
2708
+ for (i = 0; yc[i] == (xc[i] || 0); i++)
2709
+ ;
2710
+ if (yc[i] > (xc[i] || 0))
2711
+ e--;
2712
+ if (s < 0) {
2713
+ qc.push(1);
2714
+ more = true;
2715
+ } else {
2716
+ xL = xc.length;
2717
+ yL = yc.length;
2718
+ i = 0;
2719
+ s += 2;
2720
+ n = mathfloor(base / (yc[0] + 1));
2721
+ if (n > 1) {
2722
+ yc = multiply(yc, n, base);
2723
+ xc = multiply(xc, n, base);
2724
+ yL = yc.length;
2725
+ xL = xc.length;
2726
+ }
2727
+ xi = yL;
2728
+ rem = xc.slice(0, yL);
2729
+ remL = rem.length;
2730
+ for (; remL < yL; rem[remL++] = 0)
2731
+ ;
2732
+ yz = yc.slice();
2733
+ yz = [0].concat(yz);
2734
+ yc0 = yc[0];
2735
+ if (yc[1] >= base / 2)
2736
+ yc0++;
2737
+ do {
2738
+ n = 0;
2739
+ cmp = compare2(yc, rem, yL, remL);
2740
+ if (cmp < 0) {
2741
+ rem0 = rem[0];
2742
+ if (yL != remL)
2743
+ rem0 = rem0 * base + (rem[1] || 0);
2744
+ n = mathfloor(rem0 / yc0);
2745
+ if (n > 1) {
2746
+ if (n >= base)
2747
+ n = base - 1;
2748
+ prod = multiply(yc, n, base);
2749
+ prodL = prod.length;
2750
+ remL = rem.length;
2751
+ while (compare2(prod, rem, prodL, remL) == 1) {
2752
+ n--;
2753
+ subtract(prod, yL < prodL ? yz : yc, prodL, base);
2754
+ prodL = prod.length;
2755
+ cmp = 1;
2756
+ }
2757
+ } else {
2758
+ if (n == 0) {
2759
+ cmp = n = 1;
2760
+ }
2761
+ prod = yc.slice();
2762
+ prodL = prod.length;
2763
+ }
2764
+ if (prodL < remL)
2765
+ prod = [0].concat(prod);
2766
+ subtract(rem, prod, remL, base);
2767
+ remL = rem.length;
2768
+ if (cmp == -1) {
2769
+ while (compare2(yc, rem, yL, remL) < 1) {
2770
+ n++;
2771
+ subtract(rem, yL < remL ? yz : yc, remL, base);
2772
+ remL = rem.length;
2773
+ }
2774
+ }
2775
+ } else if (cmp === 0) {
2776
+ n++;
2777
+ rem = [0];
2778
+ }
2779
+ qc[i++] = n;
2780
+ if (rem[0]) {
2781
+ rem[remL++] = xc[xi] || 0;
2782
+ } else {
2783
+ rem = [xc[xi]];
2784
+ remL = 1;
2785
+ }
2786
+ } while ((xi++ < xL || rem[0] != null) && s--);
2787
+ more = rem[0] != null;
2788
+ if (!qc[0])
2789
+ qc.splice(0, 1);
2790
+ }
2791
+ if (base == BASE) {
2792
+ for (i = 1, s = qc[0]; s >= 10; s /= 10, i++)
2793
+ ;
2794
+ round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);
2795
+ } else {
2796
+ q.e = e;
2797
+ q.r = +more;
2798
+ }
2799
+ return q;
2800
+ };
2801
+ }();
2802
+ function format(n, i, rm, id) {
2803
+ var c0, e, ne, len, str;
2804
+ if (rm == null)
2805
+ rm = ROUNDING_MODE;
2806
+ else
2807
+ intCheck(rm, 0, 8);
2808
+ if (!n.c)
2809
+ return n.toString();
2810
+ c0 = n.c[0];
2811
+ ne = n.e;
2812
+ if (i == null) {
2813
+ str = coeffToString(n.c);
2814
+ str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS) ? toExponential(str, ne) : toFixedPoint(str, ne, "0");
2815
+ } else {
2816
+ n = round(new BigNumber2(n), i, rm);
2817
+ e = n.e;
2818
+ str = coeffToString(n.c);
2819
+ len = str.length;
2820
+ if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) {
2821
+ for (; len < i; str += "0", len++)
2822
+ ;
2823
+ str = toExponential(str, e);
2824
+ } else {
2825
+ i -= ne;
2826
+ str = toFixedPoint(str, e, "0");
2827
+ if (e + 1 > len) {
2828
+ if (--i > 0)
2829
+ for (str += "."; i--; str += "0")
2830
+ ;
2831
+ } else {
2832
+ i += e - len;
2833
+ if (i > 0) {
2834
+ if (e + 1 == len)
2835
+ str += ".";
2836
+ for (; i--; str += "0")
2837
+ ;
2838
+ }
2839
+ }
2840
+ }
2841
+ }
2842
+ return n.s < 0 && c0 ? "-" + str : str;
2843
+ }
2844
+ function maxOrMin(args, method) {
2845
+ var n, i = 1, m = new BigNumber2(args[0]);
2846
+ for (; i < args.length; i++) {
2847
+ n = new BigNumber2(args[i]);
2848
+ if (!n.s) {
2849
+ m = n;
2850
+ break;
2851
+ } else if (method.call(m, n)) {
2852
+ m = n;
2853
+ }
2854
+ }
2855
+ return m;
2856
+ }
2857
+ function normalise(n, c, e) {
2858
+ var i = 1, j = c.length;
2859
+ for (; !c[--j]; c.pop())
2860
+ ;
2861
+ for (j = c[0]; j >= 10; j /= 10, i++)
2862
+ ;
2863
+ if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {
2864
+ n.c = n.e = null;
2865
+ } else if (e < MIN_EXP) {
2866
+ n.c = [n.e = 0];
2867
+ } else {
2868
+ n.e = e;
2869
+ n.c = c;
2870
+ }
2871
+ return n;
2872
+ }
2873
+ parseNumeric = function() {
2874
+ var basePrefix = /^(-?)0([xbo])(?=\w[\w.]*$)/i, dotAfter = /^([^.]+)\.$/, dotBefore = /^\.([^.]+)$/, isInfinityOrNaN = /^-?(Infinity|NaN)$/, whitespaceOrPlus = /^\s*\+(?=[\w.])|^\s+|\s+$/g;
2875
+ return function(x, str, isNum, b) {
2876
+ var base, s = isNum ? str : str.replace(whitespaceOrPlus, "");
2877
+ if (isInfinityOrNaN.test(s)) {
2878
+ x.s = isNaN(s) ? null : s < 0 ? -1 : 1;
2879
+ } else {
2880
+ if (!isNum) {
2881
+ s = s.replace(basePrefix, function(m, p1, p2) {
2882
+ base = (p2 = p2.toLowerCase()) == "x" ? 16 : p2 == "b" ? 2 : 8;
2883
+ return !b || b == base ? p1 : m;
2884
+ });
2885
+ if (b) {
2886
+ base = b;
2887
+ s = s.replace(dotAfter, "$1").replace(dotBefore, "0.$1");
2888
+ }
2889
+ if (str != s)
2890
+ return new BigNumber2(s, base);
2891
+ }
2892
+ if (BigNumber2.DEBUG) {
2893
+ throw Error(bignumberError + "Not a" + (b ? " base " + b : "") + " number: " + str);
2894
+ }
2895
+ x.s = null;
2896
+ }
2897
+ x.c = x.e = null;
2898
+ };
2899
+ }();
2900
+ function round(x, sd, rm, r) {
2901
+ var d, i, j, k, n, ni, rd, xc = x.c, pows10 = POWS_TEN;
2902
+ if (xc) {
2903
+ out: {
2904
+ for (d = 1, k = xc[0]; k >= 10; k /= 10, d++)
2905
+ ;
2906
+ i = sd - d;
2907
+ if (i < 0) {
2908
+ i += LOG_BASE;
2909
+ j = sd;
2910
+ n = xc[ni = 0];
2911
+ rd = n / pows10[d - j - 1] % 10 | 0;
2912
+ } else {
2913
+ ni = mathceil((i + 1) / LOG_BASE);
2914
+ if (ni >= xc.length) {
2915
+ if (r) {
2916
+ for (; xc.length <= ni; xc.push(0))
2917
+ ;
2918
+ n = rd = 0;
2919
+ d = 1;
2920
+ i %= LOG_BASE;
2921
+ j = i - LOG_BASE + 1;
2922
+ } else {
2923
+ break out;
2924
+ }
2925
+ } else {
2926
+ n = k = xc[ni];
2927
+ for (d = 1; k >= 10; k /= 10, d++)
2928
+ ;
2929
+ i %= LOG_BASE;
2930
+ j = i - LOG_BASE + d;
2931
+ rd = j < 0 ? 0 : n / pows10[d - j - 1] % 10 | 0;
2932
+ }
2933
+ }
2934
+ r = r || sd < 0 || // Are there any non-zero digits after the rounding digit?
2935
+ // The expression n % pows10[d - j - 1] returns all digits of n to the right
2936
+ // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.
2937
+ xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]);
2938
+ r = rm < 4 ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2)) : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 && // Check whether the digit to the left of the rounding digit is odd.
2939
+ (i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10 & 1 || rm == (x.s < 0 ? 8 : 7));
2940
+ if (sd < 1 || !xc[0]) {
2941
+ xc.length = 0;
2942
+ if (r) {
2943
+ sd -= x.e + 1;
2944
+ xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE];
2945
+ x.e = -sd || 0;
2946
+ } else {
2947
+ xc[0] = x.e = 0;
2948
+ }
2949
+ return x;
2950
+ }
2951
+ if (i == 0) {
2952
+ xc.length = ni;
2953
+ k = 1;
2954
+ ni--;
2955
+ } else {
2956
+ xc.length = ni + 1;
2957
+ k = pows10[LOG_BASE - i];
2958
+ xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0;
2959
+ }
2960
+ if (r) {
2961
+ for (; ; ) {
2962
+ if (ni == 0) {
2963
+ for (i = 1, j = xc[0]; j >= 10; j /= 10, i++)
2964
+ ;
2965
+ j = xc[0] += k;
2966
+ for (k = 1; j >= 10; j /= 10, k++)
2967
+ ;
2968
+ if (i != k) {
2969
+ x.e++;
2970
+ if (xc[0] == BASE)
2971
+ xc[0] = 1;
2972
+ }
2973
+ break;
2974
+ } else {
2975
+ xc[ni] += k;
2976
+ if (xc[ni] != BASE)
2977
+ break;
2978
+ xc[ni--] = 0;
2979
+ k = 1;
2980
+ }
2981
+ }
2982
+ }
2983
+ for (i = xc.length; xc[--i] === 0; xc.pop())
2984
+ ;
2985
+ }
2986
+ if (x.e > MAX_EXP) {
2987
+ x.c = x.e = null;
2988
+ } else if (x.e < MIN_EXP) {
2989
+ x.c = [x.e = 0];
2990
+ }
2991
+ }
2992
+ return x;
2993
+ }
2994
+ function valueOf(n) {
2995
+ var str, e = n.e;
2996
+ if (e === null)
2997
+ return n.toString();
2998
+ str = coeffToString(n.c);
2999
+ str = e <= TO_EXP_NEG || e >= TO_EXP_POS ? toExponential(str, e) : toFixedPoint(str, e, "0");
3000
+ return n.s < 0 ? "-" + str : str;
3001
+ }
3002
+ P.absoluteValue = P.abs = function() {
3003
+ var x = new BigNumber2(this);
3004
+ if (x.s < 0)
3005
+ x.s = 1;
3006
+ return x;
3007
+ };
3008
+ P.comparedTo = function(y, b) {
3009
+ return compare(this, new BigNumber2(y, b));
3010
+ };
3011
+ P.decimalPlaces = P.dp = function(dp, rm) {
3012
+ var c, n, v, x = this;
3013
+ if (dp != null) {
3014
+ intCheck(dp, 0, MAX);
3015
+ if (rm == null)
3016
+ rm = ROUNDING_MODE;
3017
+ else
3018
+ intCheck(rm, 0, 8);
3019
+ return round(new BigNumber2(x), dp + x.e + 1, rm);
3020
+ }
3021
+ if (!(c = x.c))
3022
+ return null;
3023
+ n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;
3024
+ if (v = c[v])
3025
+ for (; v % 10 == 0; v /= 10, n--)
3026
+ ;
3027
+ if (n < 0)
3028
+ n = 0;
3029
+ return n;
3030
+ };
3031
+ P.dividedBy = P.div = function(y, b) {
3032
+ return div(this, new BigNumber2(y, b), DECIMAL_PLACES, ROUNDING_MODE);
3033
+ };
3034
+ P.dividedToIntegerBy = P.idiv = function(y, b) {
3035
+ return div(this, new BigNumber2(y, b), 0, 1);
3036
+ };
3037
+ P.exponentiatedBy = P.pow = function(n, m) {
3038
+ var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y, x = this;
3039
+ n = new BigNumber2(n);
3040
+ if (n.c && !n.isInteger()) {
3041
+ throw Error(bignumberError + "Exponent not an integer: " + valueOf(n));
3042
+ }
3043
+ if (m != null)
3044
+ m = new BigNumber2(m);
3045
+ nIsBig = n.e > 14;
3046
+ if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) {
3047
+ y = new BigNumber2(Math.pow(+valueOf(x), nIsBig ? n.s * (2 - isOdd(n)) : +valueOf(n)));
3048
+ return m ? y.mod(m) : y;
3049
+ }
3050
+ nIsNeg = n.s < 0;
3051
+ if (m) {
3052
+ if (m.c ? !m.c[0] : !m.s)
3053
+ return new BigNumber2(NaN);
3054
+ isModExp = !nIsNeg && x.isInteger() && m.isInteger();
3055
+ if (isModExp)
3056
+ x = x.mod(m);
3057
+ } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0 ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7 : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) {
3058
+ k = x.s < 0 && isOdd(n) ? -0 : 0;
3059
+ if (x.e > -1)
3060
+ k = 1 / k;
3061
+ return new BigNumber2(nIsNeg ? 1 / k : k);
3062
+ } else if (POW_PRECISION) {
3063
+ k = mathceil(POW_PRECISION / LOG_BASE + 2);
3064
+ }
3065
+ if (nIsBig) {
3066
+ half = new BigNumber2(0.5);
3067
+ if (nIsNeg)
3068
+ n.s = 1;
3069
+ nIsOdd = isOdd(n);
3070
+ } else {
3071
+ i = Math.abs(+valueOf(n));
3072
+ nIsOdd = i % 2;
3073
+ }
3074
+ y = new BigNumber2(ONE);
3075
+ for (; ; ) {
3076
+ if (nIsOdd) {
3077
+ y = y.times(x);
3078
+ if (!y.c)
3079
+ break;
3080
+ if (k) {
3081
+ if (y.c.length > k)
3082
+ y.c.length = k;
3083
+ } else if (isModExp) {
3084
+ y = y.mod(m);
3085
+ }
3086
+ }
3087
+ if (i) {
3088
+ i = mathfloor(i / 2);
3089
+ if (i === 0)
3090
+ break;
3091
+ nIsOdd = i % 2;
3092
+ } else {
3093
+ n = n.times(half);
3094
+ round(n, n.e + 1, 1);
3095
+ if (n.e > 14) {
3096
+ nIsOdd = isOdd(n);
3097
+ } else {
3098
+ i = +valueOf(n);
3099
+ if (i === 0)
3100
+ break;
3101
+ nIsOdd = i % 2;
3102
+ }
3103
+ }
3104
+ x = x.times(x);
3105
+ if (k) {
3106
+ if (x.c && x.c.length > k)
3107
+ x.c.length = k;
3108
+ } else if (isModExp) {
3109
+ x = x.mod(m);
3110
+ }
3111
+ }
3112
+ if (isModExp)
3113
+ return y;
3114
+ if (nIsNeg)
3115
+ y = ONE.div(y);
3116
+ return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y;
3117
+ };
3118
+ P.integerValue = function(rm) {
3119
+ var n = new BigNumber2(this);
3120
+ if (rm == null)
3121
+ rm = ROUNDING_MODE;
3122
+ else
3123
+ intCheck(rm, 0, 8);
3124
+ return round(n, n.e + 1, rm);
3125
+ };
3126
+ P.isEqualTo = P.eq = function(y, b) {
3127
+ return compare(this, new BigNumber2(y, b)) === 0;
3128
+ };
3129
+ P.isFinite = function() {
3130
+ return !!this.c;
3131
+ };
3132
+ P.isGreaterThan = P.gt = function(y, b) {
3133
+ return compare(this, new BigNumber2(y, b)) > 0;
3134
+ };
3135
+ P.isGreaterThanOrEqualTo = P.gte = function(y, b) {
3136
+ return (b = compare(this, new BigNumber2(y, b))) === 1 || b === 0;
3137
+ };
3138
+ P.isInteger = function() {
3139
+ return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;
3140
+ };
3141
+ P.isLessThan = P.lt = function(y, b) {
3142
+ return compare(this, new BigNumber2(y, b)) < 0;
3143
+ };
3144
+ P.isLessThanOrEqualTo = P.lte = function(y, b) {
3145
+ return (b = compare(this, new BigNumber2(y, b))) === -1 || b === 0;
3146
+ };
3147
+ P.isNaN = function() {
3148
+ return !this.s;
3149
+ };
3150
+ P.isNegative = function() {
3151
+ return this.s < 0;
3152
+ };
3153
+ P.isPositive = function() {
3154
+ return this.s > 0;
3155
+ };
3156
+ P.isZero = function() {
3157
+ return !!this.c && this.c[0] == 0;
3158
+ };
3159
+ P.minus = function(y, b) {
3160
+ var i, j, t, xLTy, x = this, a = x.s;
3161
+ y = new BigNumber2(y, b);
3162
+ b = y.s;
3163
+ if (!a || !b)
3164
+ return new BigNumber2(NaN);
3165
+ if (a != b) {
3166
+ y.s = -b;
3167
+ return x.plus(y);
3168
+ }
3169
+ var xe = x.e / LOG_BASE, ye = y.e / LOG_BASE, xc = x.c, yc = y.c;
3170
+ if (!xe || !ye) {
3171
+ if (!xc || !yc)
3172
+ return xc ? (y.s = -b, y) : new BigNumber2(yc ? x : NaN);
3173
+ if (!xc[0] || !yc[0]) {
3174
+ return yc[0] ? (y.s = -b, y) : new BigNumber2(xc[0] ? x : (
3175
+ // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity
3176
+ ROUNDING_MODE == 3 ? -0 : 0
3177
+ ));
3178
+ }
3179
+ }
3180
+ xe = bitFloor(xe);
3181
+ ye = bitFloor(ye);
3182
+ xc = xc.slice();
3183
+ if (a = xe - ye) {
3184
+ if (xLTy = a < 0) {
3185
+ a = -a;
3186
+ t = xc;
3187
+ } else {
3188
+ ye = xe;
3189
+ t = yc;
3190
+ }
3191
+ t.reverse();
3192
+ for (b = a; b--; t.push(0))
3193
+ ;
3194
+ t.reverse();
3195
+ } else {
3196
+ j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;
3197
+ for (a = b = 0; b < j; b++) {
3198
+ if (xc[b] != yc[b]) {
3199
+ xLTy = xc[b] < yc[b];
3200
+ break;
3201
+ }
3202
+ }
3203
+ }
3204
+ if (xLTy)
3205
+ t = xc, xc = yc, yc = t, y.s = -y.s;
3206
+ b = (j = yc.length) - (i = xc.length);
3207
+ if (b > 0)
3208
+ for (; b--; xc[i++] = 0)
3209
+ ;
3210
+ b = BASE - 1;
3211
+ for (; j > a; ) {
3212
+ if (xc[--j] < yc[j]) {
3213
+ for (i = j; i && !xc[--i]; xc[i] = b)
3214
+ ;
3215
+ --xc[i];
3216
+ xc[j] += BASE;
3217
+ }
3218
+ xc[j] -= yc[j];
3219
+ }
3220
+ for (; xc[0] == 0; xc.splice(0, 1), --ye)
3221
+ ;
3222
+ if (!xc[0]) {
3223
+ y.s = ROUNDING_MODE == 3 ? -1 : 1;
3224
+ y.c = [y.e = 0];
3225
+ return y;
3226
+ }
3227
+ return normalise(y, xc, ye);
3228
+ };
3229
+ P.modulo = P.mod = function(y, b) {
3230
+ var q, s, x = this;
3231
+ y = new BigNumber2(y, b);
3232
+ if (!x.c || !y.s || y.c && !y.c[0]) {
3233
+ return new BigNumber2(NaN);
3234
+ } else if (!y.c || x.c && !x.c[0]) {
3235
+ return new BigNumber2(x);
3236
+ }
3237
+ if (MODULO_MODE == 9) {
3238
+ s = y.s;
3239
+ y.s = 1;
3240
+ q = div(x, y, 0, 3);
3241
+ y.s = s;
3242
+ q.s *= s;
3243
+ } else {
3244
+ q = div(x, y, 0, MODULO_MODE);
3245
+ }
3246
+ y = x.minus(q.times(y));
3247
+ if (!y.c[0] && MODULO_MODE == 1)
3248
+ y.s = x.s;
3249
+ return y;
3250
+ };
3251
+ P.multipliedBy = P.times = function(y, b) {
3252
+ var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc, base, sqrtBase, x = this, xc = x.c, yc = (y = new BigNumber2(y, b)).c;
3253
+ if (!xc || !yc || !xc[0] || !yc[0]) {
3254
+ if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) {
3255
+ y.c = y.e = y.s = null;
3256
+ } else {
3257
+ y.s *= x.s;
3258
+ if (!xc || !yc) {
3259
+ y.c = y.e = null;
3260
+ } else {
3261
+ y.c = [0];
3262
+ y.e = 0;
3263
+ }
3264
+ }
3265
+ return y;
3266
+ }
3267
+ e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);
3268
+ y.s *= x.s;
3269
+ xcL = xc.length;
3270
+ ycL = yc.length;
3271
+ if (xcL < ycL)
3272
+ zc = xc, xc = yc, yc = zc, i = xcL, xcL = ycL, ycL = i;
3273
+ for (i = xcL + ycL, zc = []; i--; zc.push(0))
3274
+ ;
3275
+ base = BASE;
3276
+ sqrtBase = SQRT_BASE;
3277
+ for (i = ycL; --i >= 0; ) {
3278
+ c = 0;
3279
+ ylo = yc[i] % sqrtBase;
3280
+ yhi = yc[i] / sqrtBase | 0;
3281
+ for (k = xcL, j = i + k; j > i; ) {
3282
+ xlo = xc[--k] % sqrtBase;
3283
+ xhi = xc[k] / sqrtBase | 0;
3284
+ m = yhi * xlo + xhi * ylo;
3285
+ xlo = ylo * xlo + m % sqrtBase * sqrtBase + zc[j] + c;
3286
+ c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi;
3287
+ zc[j--] = xlo % base;
3288
+ }
3289
+ zc[j] = c;
3290
+ }
3291
+ if (c) {
3292
+ ++e;
3293
+ } else {
3294
+ zc.splice(0, 1);
3295
+ }
3296
+ return normalise(y, zc, e);
3297
+ };
3298
+ P.negated = function() {
3299
+ var x = new BigNumber2(this);
3300
+ x.s = -x.s || null;
3301
+ return x;
3302
+ };
3303
+ P.plus = function(y, b) {
3304
+ var t, x = this, a = x.s;
3305
+ y = new BigNumber2(y, b);
3306
+ b = y.s;
3307
+ if (!a || !b)
3308
+ return new BigNumber2(NaN);
3309
+ if (a != b) {
3310
+ y.s = -b;
3311
+ return x.minus(y);
3312
+ }
3313
+ var xe = x.e / LOG_BASE, ye = y.e / LOG_BASE, xc = x.c, yc = y.c;
3314
+ if (!xe || !ye) {
3315
+ if (!xc || !yc)
3316
+ return new BigNumber2(a / 0);
3317
+ if (!xc[0] || !yc[0])
3318
+ return yc[0] ? y : new BigNumber2(xc[0] ? x : a * 0);
3319
+ }
3320
+ xe = bitFloor(xe);
3321
+ ye = bitFloor(ye);
3322
+ xc = xc.slice();
3323
+ if (a = xe - ye) {
3324
+ if (a > 0) {
3325
+ ye = xe;
3326
+ t = yc;
3327
+ } else {
3328
+ a = -a;
3329
+ t = xc;
3330
+ }
3331
+ t.reverse();
3332
+ for (; a--; t.push(0))
3333
+ ;
3334
+ t.reverse();
3335
+ }
3336
+ a = xc.length;
3337
+ b = yc.length;
3338
+ if (a - b < 0)
3339
+ t = yc, yc = xc, xc = t, b = a;
3340
+ for (a = 0; b; ) {
3341
+ a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0;
3342
+ xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;
3343
+ }
3344
+ if (a) {
3345
+ xc = [a].concat(xc);
3346
+ ++ye;
3347
+ }
3348
+ return normalise(y, xc, ye);
3349
+ };
3350
+ P.precision = P.sd = function(sd, rm) {
3351
+ var c, n, v, x = this;
3352
+ if (sd != null && sd !== !!sd) {
3353
+ intCheck(sd, 1, MAX);
3354
+ if (rm == null)
3355
+ rm = ROUNDING_MODE;
3356
+ else
3357
+ intCheck(rm, 0, 8);
3358
+ return round(new BigNumber2(x), sd, rm);
3359
+ }
3360
+ if (!(c = x.c))
3361
+ return null;
3362
+ v = c.length - 1;
3363
+ n = v * LOG_BASE + 1;
3364
+ if (v = c[v]) {
3365
+ for (; v % 10 == 0; v /= 10, n--)
3366
+ ;
3367
+ for (v = c[0]; v >= 10; v /= 10, n++)
3368
+ ;
3369
+ }
3370
+ if (sd && x.e + 1 > n)
3371
+ n = x.e + 1;
3372
+ return n;
3373
+ };
3374
+ P.shiftedBy = function(k) {
3375
+ intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);
3376
+ return this.times("1e" + k);
3377
+ };
3378
+ P.squareRoot = P.sqrt = function() {
3379
+ var m, n, r, rep, t, x = this, c = x.c, s = x.s, e = x.e, dp = DECIMAL_PLACES + 4, half = new BigNumber2("0.5");
3380
+ if (s !== 1 || !c || !c[0]) {
3381
+ return new BigNumber2(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0);
3382
+ }
3383
+ s = Math.sqrt(+valueOf(x));
3384
+ if (s == 0 || s == 1 / 0) {
3385
+ n = coeffToString(c);
3386
+ if ((n.length + e) % 2 == 0)
3387
+ n += "0";
3388
+ s = Math.sqrt(+n);
3389
+ e = bitFloor((e + 1) / 2) - (e < 0 || e % 2);
3390
+ if (s == 1 / 0) {
3391
+ n = "5e" + e;
3392
+ } else {
3393
+ n = s.toExponential();
3394
+ n = n.slice(0, n.indexOf("e") + 1) + e;
3395
+ }
3396
+ r = new BigNumber2(n);
3397
+ } else {
3398
+ r = new BigNumber2(s + "");
3399
+ }
3400
+ if (r.c[0]) {
3401
+ e = r.e;
3402
+ s = e + dp;
3403
+ if (s < 3)
3404
+ s = 0;
3405
+ for (; ; ) {
3406
+ t = r;
3407
+ r = half.times(t.plus(div(x, t, dp, 1)));
3408
+ if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) {
3409
+ if (r.e < e)
3410
+ --s;
3411
+ n = n.slice(s - 3, s + 1);
3412
+ if (n == "9999" || !rep && n == "4999") {
3413
+ if (!rep) {
3414
+ round(t, t.e + DECIMAL_PLACES + 2, 0);
3415
+ if (t.times(t).eq(x)) {
3416
+ r = t;
3417
+ break;
3418
+ }
3419
+ }
3420
+ dp += 4;
3421
+ s += 4;
3422
+ rep = 1;
3423
+ } else {
3424
+ if (!+n || !+n.slice(1) && n.charAt(0) == "5") {
3425
+ round(r, r.e + DECIMAL_PLACES + 2, 1);
3426
+ m = !r.times(r).eq(x);
3427
+ }
3428
+ break;
3429
+ }
3430
+ }
3431
+ }
3432
+ }
3433
+ return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);
3434
+ };
3435
+ P.toExponential = function(dp, rm) {
3436
+ if (dp != null) {
3437
+ intCheck(dp, 0, MAX);
3438
+ dp++;
3439
+ }
3440
+ return format(this, dp, rm, 1);
3441
+ };
3442
+ P.toFixed = function(dp, rm) {
3443
+ if (dp != null) {
3444
+ intCheck(dp, 0, MAX);
3445
+ dp = dp + this.e + 1;
3446
+ }
3447
+ return format(this, dp, rm);
3448
+ };
3449
+ P.toFormat = function(dp, rm, format2) {
3450
+ var str, x = this;
3451
+ if (format2 == null) {
3452
+ if (dp != null && rm && typeof rm == "object") {
3453
+ format2 = rm;
3454
+ rm = null;
3455
+ } else if (dp && typeof dp == "object") {
3456
+ format2 = dp;
3457
+ dp = rm = null;
3458
+ } else {
3459
+ format2 = FORMAT;
3460
+ }
3461
+ } else if (typeof format2 != "object") {
3462
+ throw Error(bignumberError + "Argument not an object: " + format2);
3463
+ }
3464
+ str = x.toFixed(dp, rm);
3465
+ if (x.c) {
3466
+ var i, arr = str.split("."), g1 = +format2.groupSize, g2 = +format2.secondaryGroupSize, groupSeparator = format2.groupSeparator || "", intPart = arr[0], fractionPart = arr[1], isNeg = x.s < 0, intDigits = isNeg ? intPart.slice(1) : intPart, len = intDigits.length;
3467
+ if (g2)
3468
+ i = g1, g1 = g2, g2 = i, len -= i;
3469
+ if (g1 > 0 && len > 0) {
3470
+ i = len % g1 || g1;
3471
+ intPart = intDigits.substr(0, i);
3472
+ for (; i < len; i += g1)
3473
+ intPart += groupSeparator + intDigits.substr(i, g1);
3474
+ if (g2 > 0)
3475
+ intPart += groupSeparator + intDigits.slice(i);
3476
+ if (isNeg)
3477
+ intPart = "-" + intPart;
3478
+ }
3479
+ str = fractionPart ? intPart + (format2.decimalSeparator || "") + ((g2 = +format2.fractionGroupSize) ? fractionPart.replace(
3480
+ new RegExp("\\d{" + g2 + "}\\B", "g"),
3481
+ "$&" + (format2.fractionGroupSeparator || "")
3482
+ ) : fractionPart) : intPart;
3483
+ }
3484
+ return (format2.prefix || "") + str + (format2.suffix || "");
3485
+ };
3486
+ P.toFraction = function(md) {
3487
+ var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s, x = this, xc = x.c;
3488
+ if (md != null) {
3489
+ n = new BigNumber2(md);
3490
+ if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) {
3491
+ throw Error(bignumberError + "Argument " + (n.isInteger() ? "out of range: " : "not an integer: ") + valueOf(n));
3492
+ }
3493
+ }
3494
+ if (!xc)
3495
+ return new BigNumber2(x);
3496
+ d = new BigNumber2(ONE);
3497
+ n1 = d0 = new BigNumber2(ONE);
3498
+ d1 = n0 = new BigNumber2(ONE);
3499
+ s = coeffToString(xc);
3500
+ e = d.e = s.length - x.e - 1;
3501
+ d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];
3502
+ md = !md || n.comparedTo(d) > 0 ? e > 0 ? d : n1 : n;
3503
+ exp = MAX_EXP;
3504
+ MAX_EXP = 1 / 0;
3505
+ n = new BigNumber2(s);
3506
+ n0.c[0] = 0;
3507
+ for (; ; ) {
3508
+ q = div(n, d, 0, 1);
3509
+ d2 = d0.plus(q.times(d1));
3510
+ if (d2.comparedTo(md) == 1)
3511
+ break;
3512
+ d0 = d1;
3513
+ d1 = d2;
3514
+ n1 = n0.plus(q.times(d2 = n1));
3515
+ n0 = d2;
3516
+ d = n.minus(q.times(d2 = d));
3517
+ n = d2;
3518
+ }
3519
+ d2 = div(md.minus(d0), d1, 0, 1);
3520
+ n0 = n0.plus(d2.times(n1));
3521
+ d0 = d0.plus(d2.times(d1));
3522
+ n0.s = n1.s = x.s;
3523
+ e = e * 2;
3524
+ r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo(
3525
+ div(n0, d0, e, ROUNDING_MODE).minus(x).abs()
3526
+ ) < 1 ? [n1, d1] : [n0, d0];
3527
+ MAX_EXP = exp;
3528
+ return r;
3529
+ };
3530
+ P.toNumber = function() {
3531
+ return +valueOf(this);
3532
+ };
3533
+ P.toPrecision = function(sd, rm) {
3534
+ if (sd != null)
3535
+ intCheck(sd, 1, MAX);
3536
+ return format(this, sd, rm, 2);
3537
+ };
3538
+ P.toString = function(b) {
3539
+ var str, n = this, s = n.s, e = n.e;
3540
+ if (e === null) {
3541
+ if (s) {
3542
+ str = "Infinity";
3543
+ if (s < 0)
3544
+ str = "-" + str;
3545
+ } else {
3546
+ str = "NaN";
3547
+ }
3548
+ } else {
3549
+ if (b == null) {
3550
+ str = e <= TO_EXP_NEG || e >= TO_EXP_POS ? toExponential(coeffToString(n.c), e) : toFixedPoint(coeffToString(n.c), e, "0");
3551
+ } else if (b === 10 && alphabetHasNormalDecimalDigits) {
3552
+ n = round(new BigNumber2(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE);
3553
+ str = toFixedPoint(coeffToString(n.c), n.e, "0");
3554
+ } else {
3555
+ intCheck(b, 2, ALPHABET.length, "Base");
3556
+ str = convertBase(toFixedPoint(coeffToString(n.c), e, "0"), 10, b, s, true);
3557
+ }
3558
+ if (s < 0 && n.c[0])
3559
+ str = "-" + str;
3560
+ }
3561
+ return str;
3562
+ };
3563
+ P.valueOf = P.toJSON = function() {
3564
+ return valueOf(this);
3565
+ };
3566
+ P._isBigNumber = true;
3567
+ P[Symbol.toStringTag] = "BigNumber";
3568
+ P[Symbol.for("nodejs.util.inspect.custom")] = P.valueOf;
3569
+ if (configObject != null)
3570
+ BigNumber2.set(configObject);
3571
+ return BigNumber2;
3572
+ }
3573
+ function bitFloor(n) {
3574
+ var i = n | 0;
3575
+ return n > 0 || n === i ? i : i - 1;
3576
+ }
3577
+ function coeffToString(a) {
3578
+ var s, z13, i = 1, j = a.length, r = a[0] + "";
3579
+ for (; i < j; ) {
3580
+ s = a[i++] + "";
3581
+ z13 = LOG_BASE - s.length;
3582
+ for (; z13--; s = "0" + s)
3583
+ ;
3584
+ r += s;
3585
+ }
3586
+ for (j = r.length; r.charCodeAt(--j) === 48; )
3587
+ ;
3588
+ return r.slice(0, j + 1 || 1);
8
3589
  }
3590
+ function compare(x, y) {
3591
+ var a, b, xc = x.c, yc = y.c, i = x.s, j = y.s, k = x.e, l = y.e;
3592
+ if (!i || !j)
3593
+ return null;
3594
+ a = xc && !xc[0];
3595
+ b = yc && !yc[0];
3596
+ if (a || b)
3597
+ return a ? b ? 0 : -j : i;
3598
+ if (i != j)
3599
+ return i;
3600
+ a = i < 0;
3601
+ b = k == l;
3602
+ if (!xc || !yc)
3603
+ return b ? 0 : !xc ^ a ? 1 : -1;
3604
+ if (!b)
3605
+ return k > l ^ a ? 1 : -1;
3606
+ j = (k = xc.length) < (l = yc.length) ? k : l;
3607
+ for (i = 0; i < j; i++)
3608
+ if (xc[i] != yc[i])
3609
+ return xc[i] > yc[i] ^ a ? 1 : -1;
3610
+ return k == l ? 0 : k > l ^ a ? 1 : -1;
3611
+ }
3612
+ function intCheck(n, min, max, name) {
3613
+ if (n < min || n > max || n !== mathfloor(n)) {
3614
+ throw Error(bignumberError + (name || "Argument") + (typeof n == "number" ? n < min || n > max ? " out of range: " : " not an integer: " : " not a primitive number: ") + String(n));
3615
+ }
3616
+ }
3617
+ function isOdd(n) {
3618
+ var k = n.c.length - 1;
3619
+ return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;
3620
+ }
3621
+ function toExponential(str, e) {
3622
+ return (str.length > 1 ? str.charAt(0) + "." + str.slice(1) : str) + (e < 0 ? "e" : "e+") + e;
3623
+ }
3624
+ function toFixedPoint(str, e, z13) {
3625
+ var len, zs;
3626
+ if (e < 0) {
3627
+ for (zs = z13 + "."; ++e; zs += z13)
3628
+ ;
3629
+ str = zs + str;
3630
+ } else {
3631
+ len = str.length;
3632
+ if (++e > len) {
3633
+ for (zs = z13, e -= len; --e; zs += z13)
3634
+ ;
3635
+ str += zs;
3636
+ } else if (e < len) {
3637
+ str = str.slice(0, e) + "." + str.slice(e);
3638
+ }
3639
+ }
3640
+ return str;
3641
+ }
3642
+ var BigNumber = clone();
3643
+
3644
+ // src/math.ts
3645
+ var compute_transfer = (pool1, pool2, swap, exchange_fee, precision) => {
3646
+ const term1 = pool2;
3647
+ const term2over = pool1.times(pool2);
3648
+ const term2under = pool1.plus(swap);
3649
+ const term2 = term2over.div(term2under).integerValue(BigNumber.ROUND_DOWN);
3650
+ const term = term1.minus(term2);
3651
+ const fee = new BigNumber(exchange_fee).div(FEE_FACTOR);
3652
+ const result = term.minus(term.times(fee));
3653
+ return result.integerValue(BigNumber.ROUND_DOWN).shiftedBy(-precision);
3654
+ };
3655
+ var compute_transfer_curve = (reserve_in, reserve_out, amount_in, exchange_fee, precision, amplifier) => {
3656
+ if (amplifier === 0) {
3657
+ return compute_transfer(new BigNumber(reserve_in), new BigNumber(reserve_out), new BigNumber(amount_in), exchange_fee, precision);
3658
+ }
3659
+ const MAX_ITERATIONS = 10;
3660
+ const sum = reserve_in + reserve_out;
3661
+ let D = sum;
3662
+ let D_prev = 0;
3663
+ const F = (v) => {
3664
+ return (v >= 0 ? 1 : -1) * Math.floor(Math.abs(v));
3665
+ };
3666
+ let i = MAX_ITERATIONS;
3667
+ while (D != D_prev && i--) {
3668
+ const prod1 = F(F(D * D / (reserve_in * 2)) * D / (reserve_out * 2));
3669
+ D_prev = D;
3670
+ D = F(2 * D * (amplifier * sum + prod1) / ((2 * amplifier - 1) * D + 3 * prod1));
3671
+ }
3672
+ const b = reserve_in + amount_in + F(D / (amplifier * 2)) - D;
3673
+ const c = F(F(D * D / ((reserve_in + amount_in) * 2)) * D / (amplifier * 4));
3674
+ let x = D, x_prev = 0;
3675
+ i = MAX_ITERATIONS;
3676
+ while (x != x_prev && i--) {
3677
+ x_prev = F(x);
3678
+ x = +new BigNumber(x * x + c).div(2 * x + b).toFixed(0, BigNumber.ROUND_DOWN);
3679
+ }
3680
+ if (reserve_out <= x) {
3681
+ throw new Error("curve: insufficient reserve out");
3682
+ }
3683
+ const amount_out_with_fee = new BigNumber(reserve_out - x);
3684
+ const fee = amount_out_with_fee.times(exchange_fee).div(FEE_FACTOR).plus(1).toFixed(0, BigNumber.ROUND_DOWN);
3685
+ const amount_out = amount_out_with_fee.minus(fee);
3686
+ return amount_out.integerValue(BigNumber.ROUND_DOWN).shiftedBy(-precision);
3687
+ };
3688
+ var compute_liquidity = (amount_lt, pool, lt_supply, precision) => {
3689
+ const over = amount_lt.times(pool);
3690
+ const under = lt_supply;
3691
+ const result = over.div(under).integerValue(BigNumber.ROUND_DOWN);
3692
+ return +result.shiftedBy(-precision).toFixed(precision, BigNumber.ROUND_DOWN);
3693
+ };
3694
+ var isInputInvalid = (data, value, pool) => {
3695
+ value = String(value);
3696
+ const isBackspace = data === null;
3697
+ const isNumber = !/[0-9]|\./.test(data);
3698
+ const isDoubleDot = data === "." && value.indexOf(".") !== value.length - 1;
3699
+ const isPrecisionTooHigh = value && value.indexOf(".") !== -1 && value.split(".")[1].length > pool.xtokenPrecision;
3700
+ const isInvalid = !isBackspace && Boolean(isNumber || isDoubleDot || isPrecisionTooHigh);
3701
+ return isInvalid;
3702
+ };
3703
+ var applyDiscountToFee = (fee, staked) => {
3704
+ if (staked >= 1e7) {
3705
+ return fee * 0;
3706
+ } else if (staked >= 1e6) {
3707
+ return fee * 0.33;
3708
+ } else if (staked >= 1e5) {
3709
+ return fee * 0.66;
3710
+ } else {
3711
+ return fee;
3712
+ }
3713
+ };
3714
+ // Annotate the CommonJS export names for ESM import in node:
3715
+ 0 && (module.exports = {
3716
+ Chains,
3717
+ ExtendedAssetParser,
3718
+ FEE_FACTOR,
3719
+ Graph,
3720
+ ILink,
3721
+ INode,
3722
+ ITopics,
3723
+ Networks,
3724
+ Providers,
3725
+ Status,
3726
+ TOPICS,
3727
+ Type,
3728
+ WRAP_AUTH_ACTION,
3729
+ WRAP_CONTRACT,
3730
+ accountParser,
3731
+ addressParser,
3732
+ applyDiscountToFee,
3733
+ authorizationParser,
3734
+ authorizationsParser,
3735
+ baseActionParser,
3736
+ baseActionSerializedParser,
3737
+ bloksRatesParser,
3738
+ compute_liquidity,
3739
+ compute_transfer,
3740
+ compute_transfer_curve,
3741
+ createAbstractAuthParser,
3742
+ dailyParser,
3743
+ depositBodyParser,
3744
+ depthParser,
3745
+ exchangeRateParser,
3746
+ exchangeRatesParser,
3747
+ explorerLinkByChain,
3748
+ fillType,
3749
+ generateAddressBodyParser,
3750
+ generateAddressResponse,
3751
+ generateAuthParser,
3752
+ getDailyResponseParser,
3753
+ getDepthParser,
3754
+ getDepthResponseParser,
3755
+ getLeaderboardParser,
3756
+ getLeaderboardResponseParser,
3757
+ getMarketsResponseParser,
3758
+ getOhlcvParser,
3759
+ getOhlcvResponseParser,
3760
+ getOpenOrdersParser,
3761
+ getOpenOrdersResponseParser,
3762
+ getOrderHistoryParser,
3763
+ getOrderHistoryResponseParser,
3764
+ getOrderParser,
3765
+ getOrderResponseParser,
3766
+ getReferralTotalsParser,
3767
+ getReferralTotalsResponseParser,
3768
+ getReferralsParser,
3769
+ getReferralsResponseParser,
3770
+ getSyncResponseParser,
3771
+ getTradeHistoryParser,
3772
+ getTradeHistoryResponseParser,
3773
+ getTradesParser,
3774
+ getTradesResponseParser,
3775
+ initializeCoins,
3776
+ initializeConstants,
3777
+ isInputInvalid,
3778
+ isSameToken,
3779
+ leaderboardParser,
3780
+ logStatus,
3781
+ loginAccountParamsV3Parser,
3782
+ marketParser,
3783
+ median,
3784
+ ohlcvParser,
3785
+ orderHistoryParser,
3786
+ orderSide,
3787
+ orderType,
3788
+ otcOrderResponseParser,
3789
+ otcQuoteBodyParser,
3790
+ otcQuoteResponseParser,
3791
+ protonExplorerTxUrl,
3792
+ rateParser,
3793
+ refferalParser,
3794
+ refferalTotalParser,
3795
+ similarChains,
3796
+ singleActionTransactionParser,
3797
+ syncParser,
3798
+ tradeParser,
3799
+ transactionParser,
3800
+ webauthActionParser,
3801
+ withdrawBodyParser,
3802
+ withdrawHistoryMetalResponseParser,
3803
+ withdrawHistoryMetalSwapParser,
3804
+ withdrawMetalResponseParser,
3805
+ withdrawalFeeQuoteParser,
3806
+ wrapParser,
3807
+ wrapSetConfParser,
3808
+ wrapStartParser
3809
+ });