@pancakeswap/swap-sdk-evm 1.2.0 → 1.2.1

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.
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Minimal ERC-165 ABI fragment — just the `supportsInterface(bytes4)` view.
3
+ * Used to probe whether a contract advertises support for a given interface ID.
4
+ */
5
+ export declare const erc165Abi: readonly [{
6
+ readonly type: "function";
7
+ readonly name: "supportsInterface";
8
+ readonly inputs: readonly [{
9
+ readonly name: "interfaceId";
10
+ readonly type: "bytes4";
11
+ }];
12
+ readonly outputs: readonly [{
13
+ readonly type: "bool";
14
+ }];
15
+ readonly stateMutability: "view";
16
+ }];
17
+ //# sourceMappingURL=ERC165.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ERC165.d.ts","sourceRoot":"","sources":["../../src/abis/ERC165.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;EAQZ,CAAA"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * ERC-8056 (Scaled UI Amount) ABI fragments.
3
+ *
4
+ * Based on the `IScaledUIAmount` interface from the BNB Chain partner integration doc
5
+ * v1.0 (8 Apr 2026). The spec itself is in Draft as of Oct 2025; these fragments are
6
+ * pinned against the concrete implementation Binance is deploying for Stock Tokens.
7
+ *
8
+ * Spec: https://eips.ethereum.org/EIPS/eip-8056
9
+ *
10
+ * Notes:
11
+ * - `newUIMultiplier` and `effectiveAt` are optional getters in the spec. Real
12
+ * implementations may or may not expose them — reads must use `allowFailure: true`.
13
+ * - `totalSupplyUI()` does NOT exist on Binance Stock Tokens per the partner doc FAQ;
14
+ * compute as `toUIAmount(totalSupply())` instead.
15
+ * - All on-chain helpers (`toUIAmount`, `fromUIAmount`, `balanceOfUI`) match the
16
+ * contract's rounding exactly; prefer them over JS math when available.
17
+ */
18
+ export declare const scaledUIAmountAbi: readonly [{
19
+ readonly type: "function";
20
+ readonly name: "uiMultiplier";
21
+ readonly inputs: readonly [];
22
+ readonly outputs: readonly [{
23
+ readonly type: "uint256";
24
+ }];
25
+ readonly stateMutability: "view";
26
+ }, {
27
+ readonly type: "function";
28
+ readonly name: "toUIAmount";
29
+ readonly inputs: readonly [{
30
+ readonly name: "rawAmount";
31
+ readonly type: "uint256";
32
+ }];
33
+ readonly outputs: readonly [{
34
+ readonly type: "uint256";
35
+ }];
36
+ readonly stateMutability: "view";
37
+ }, {
38
+ readonly type: "function";
39
+ readonly name: "fromUIAmount";
40
+ readonly inputs: readonly [{
41
+ readonly name: "uiAmount";
42
+ readonly type: "uint256";
43
+ }];
44
+ readonly outputs: readonly [{
45
+ readonly type: "uint256";
46
+ }];
47
+ readonly stateMutability: "view";
48
+ }, {
49
+ readonly type: "function";
50
+ readonly name: "balanceOfUI";
51
+ readonly inputs: readonly [{
52
+ readonly name: "account";
53
+ readonly type: "address";
54
+ }];
55
+ readonly outputs: readonly [{
56
+ readonly type: "uint256";
57
+ }];
58
+ readonly stateMutability: "view";
59
+ }, {
60
+ readonly type: "function";
61
+ readonly name: "newUIMultiplier";
62
+ readonly inputs: readonly [];
63
+ readonly outputs: readonly [{
64
+ readonly type: "uint256";
65
+ }];
66
+ readonly stateMutability: "view";
67
+ }, {
68
+ readonly type: "function";
69
+ readonly name: "effectiveAt";
70
+ readonly inputs: readonly [];
71
+ readonly outputs: readonly [{
72
+ readonly type: "uint256";
73
+ }];
74
+ readonly stateMutability: "view";
75
+ }, {
76
+ readonly type: "event";
77
+ readonly name: "UIMultiplierUpdated";
78
+ readonly inputs: readonly [{
79
+ readonly name: "oldMultiplier";
80
+ readonly type: "uint256";
81
+ readonly indexed: false;
82
+ }, {
83
+ readonly name: "newMultiplier";
84
+ readonly type: "uint256";
85
+ readonly indexed: false;
86
+ }, {
87
+ readonly name: "setAtTimestamp";
88
+ readonly type: "uint256";
89
+ readonly indexed: false;
90
+ }, {
91
+ readonly name: "effectiveAtTimestamp";
92
+ readonly type: "uint256";
93
+ readonly indexed: false;
94
+ }];
95
+ }, {
96
+ readonly type: "event";
97
+ readonly name: "TransferWithUIAmount";
98
+ readonly inputs: readonly [{
99
+ readonly name: "from";
100
+ readonly type: "address";
101
+ readonly indexed: true;
102
+ }, {
103
+ readonly name: "to";
104
+ readonly type: "address";
105
+ readonly indexed: true;
106
+ }, {
107
+ readonly name: "amount";
108
+ readonly type: "uint256";
109
+ readonly indexed: false;
110
+ }, {
111
+ readonly name: "uiAmount";
112
+ readonly type: "uint256";
113
+ readonly indexed: false;
114
+ }];
115
+ }];
116
+ //# sourceMappingURL=ScaledUIAmount.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScaledUIAmount.d.ts","sourceRoot":"","sources":["../../src/abis/ScaledUIAmount.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyEpB,CAAA"}
@@ -23,6 +23,7 @@ export declare const WETH9: {
23
23
  84532: ERC20Token;
24
24
  143: ERC20Token;
25
25
  10143: ERC20Token;
26
+ 4663: ERC20Token;
26
27
  };
27
28
  export declare const WBNB: {
28
29
  1: ERC20Token;
@@ -52,6 +53,7 @@ export declare const WNATIVE: {
52
53
  84532: ERC20Token;
53
54
  143: ERC20Token;
54
55
  10143: ERC20Token;
56
+ 4663: ERC20Token;
55
57
  };
56
58
  export declare const NATIVE: {
57
59
  1: {
@@ -154,5 +156,10 @@ export declare const NATIVE: {
154
156
  symbol: string;
155
157
  decimals: number;
156
158
  };
159
+ 4663: {
160
+ readonly name: "Ether";
161
+ readonly symbol: "ETH";
162
+ readonly decimals: 18;
163
+ };
157
164
  };
158
165
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAElD,eAAO,MAAM,YAAY,SAAmB,CAAA;AAC5C,eAAO,MAAM,mBAAmB,SAAmB,CAAA;AAEnD,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;CAiKjB,CAAA;AAED,eAAO,MAAM,IAAI;;;;;;CAyChB,CAAA;AAED,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;CAqB4B,CAAA;AAUhD,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8DlB,CAAA"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAElD,eAAO,MAAM,YAAY,SAAmB,CAAA;AAC5C,eAAO,MAAM,mBAAmB,SAAmB,CAAA;AAEnD,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;CAyKjB,CAAA;AAED,eAAO,MAAM,IAAI;;;;;;CAyChB,CAAA;AAED,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;CAsB4B,CAAA;AAUhD,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+DlB,CAAA"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,9 @@
1
1
  export * from './constants';
2
2
  export * from './entities';
3
3
  export * from './abis/ERC20';
4
+ export * from './abis/ERC165';
5
+ export * from './abis/ScaledUIAmount';
4
6
  export * from './utils';
5
7
  export * from './ether';
8
+ export * from './scaledUIAmount';
6
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA;AACrC,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,kBAAkB,CAAA"}
package/dist/index.js CHANGED
@@ -192,6 +192,14 @@ var WETH9 = {
192
192
  "WMON",
193
193
  "Wrapped Monad",
194
194
  "https://www.monad.xyz/"
195
+ ),
196
+ [chains.ChainId.ROBINHOOD]: new ERC20Token(
197
+ chains.ChainId.ROBINHOOD,
198
+ chains.robinhoodChainConfig.tokens.wrappedNative,
199
+ 18,
200
+ "WETH",
201
+ "Wrapped Ether",
202
+ "https://weth.io"
195
203
  )
196
204
  };
197
205
  var WBNB = {
@@ -256,7 +264,8 @@ var WNATIVE = {
256
264
  [chains.ChainId.ARBITRUM_SEPOLIA]: WETH9[chains.ChainId.ARBITRUM_SEPOLIA],
257
265
  [chains.ChainId.BASE_SEPOLIA]: WETH9[chains.ChainId.BASE_SEPOLIA],
258
266
  [chains.ChainId.MONAD_MAINNET]: WETH9[chains.ChainId.MONAD_MAINNET],
259
- [chains.ChainId.MONAD_TESTNET]: WETH9[chains.ChainId.MONAD_TESTNET]
267
+ [chains.ChainId.MONAD_TESTNET]: WETH9[chains.ChainId.MONAD_TESTNET],
268
+ [chains.ChainId.ROBINHOOD]: WETH9[chains.ChainId.ROBINHOOD]
260
269
  };
261
270
  var ETHER = { name: "Ether", symbol: "ETH", decimals: 18 };
262
271
  var BNB = {
@@ -316,7 +325,8 @@ var NATIVE = {
316
325
  name: "Monad Testnet Ether",
317
326
  symbol: "MON",
318
327
  decimals: 18
319
- }
328
+ },
329
+ [chains.ChainId.ROBINHOOD]: ETHER
320
330
  };
321
331
  var _Native = class extends swapSdkCore.NativeCurrency {
322
332
  constructor({
@@ -368,6 +378,90 @@ var erc20Abi = [
368
378
  type: "function"
369
379
  }
370
380
  ];
381
+
382
+ // src/abis/ERC165.ts
383
+ var erc165Abi = [
384
+ {
385
+ type: "function",
386
+ name: "supportsInterface",
387
+ inputs: [{ name: "interfaceId", type: "bytes4" }],
388
+ outputs: [{ type: "bool" }],
389
+ stateMutability: "view"
390
+ }
391
+ ];
392
+
393
+ // src/abis/ScaledUIAmount.ts
394
+ var scaledUIAmountAbi = [
395
+ // ─── Core required interface (ERC-165 ID: 0xa60bf13d) ───
396
+ {
397
+ type: "function",
398
+ name: "uiMultiplier",
399
+ inputs: [],
400
+ outputs: [{ type: "uint256" }],
401
+ stateMutability: "view"
402
+ },
403
+ {
404
+ type: "function",
405
+ name: "toUIAmount",
406
+ inputs: [{ name: "rawAmount", type: "uint256" }],
407
+ outputs: [{ type: "uint256" }],
408
+ stateMutability: "view"
409
+ },
410
+ {
411
+ type: "function",
412
+ name: "fromUIAmount",
413
+ inputs: [{ name: "uiAmount", type: "uint256" }],
414
+ outputs: [{ type: "uint256" }],
415
+ stateMutability: "view"
416
+ },
417
+ // ─── Balances extension (ERC-165 ID: 0xd890fd71) ───
418
+ {
419
+ type: "function",
420
+ name: "balanceOfUI",
421
+ inputs: [{ name: "account", type: "address" }],
422
+ outputs: [{ type: "uint256" }],
423
+ stateMutability: "view"
424
+ },
425
+ // ─── Pending-change getters (optional in spec; common in implementations) ───
426
+ {
427
+ type: "function",
428
+ name: "newUIMultiplier",
429
+ inputs: [],
430
+ outputs: [{ type: "uint256" }],
431
+ stateMutability: "view"
432
+ },
433
+ {
434
+ type: "function",
435
+ name: "effectiveAt",
436
+ inputs: [],
437
+ outputs: [{ type: "uint256" }],
438
+ stateMutability: "view"
439
+ },
440
+ // ─── Events ───
441
+ // Both timestamps required per BNB doc §4.1
442
+ {
443
+ type: "event",
444
+ name: "UIMultiplierUpdated",
445
+ inputs: [
446
+ { name: "oldMultiplier", type: "uint256", indexed: false },
447
+ { name: "newMultiplier", type: "uint256", indexed: false },
448
+ { name: "setAtTimestamp", type: "uint256", indexed: false },
449
+ { name: "effectiveAtTimestamp", type: "uint256", indexed: false }
450
+ ]
451
+ },
452
+ // Optional event — emits raw + UI in one record (lets activity history show both
453
+ // without re-deriving from the current multiplier)
454
+ {
455
+ type: "event",
456
+ name: "TransferWithUIAmount",
457
+ inputs: [
458
+ { name: "from", type: "address", indexed: true },
459
+ { name: "to", type: "address", indexed: true },
460
+ { name: "amount", type: "uint256", indexed: false },
461
+ { name: "uiAmount", type: "uint256", indexed: false }
462
+ ]
463
+ }
464
+ ];
371
465
  var _Ether = class extends swapSdkCore.NativeCurrency {
372
466
  constructor(chainId) {
373
467
  super(chainId, 18, "ETH", "Ether");
@@ -389,17 +483,86 @@ var _Ether = class extends swapSdkCore.NativeCurrency {
389
483
  };
390
484
  var Ether = _Ether;
391
485
  Ether._etherCache = {};
486
+ var SCALED_UI_AMOUNT_INTERFACE_ID = "0xa60bf13d";
487
+ var SCALED_UI_AMOUNT_BALANCES_INTERFACE_ID = "0xd890fd71";
488
+ var IDENTITY_SCALED_UI_AMOUNT_METADATA = {
489
+ enabled: false,
490
+ multiplier: swapSdkCore.SCALED_UI_DENOMINATOR
491
+ };
492
+ async function probeIsScaledUIAmount(client, address) {
493
+ try {
494
+ const result = await client.readContract({
495
+ address,
496
+ abi: erc165Abi,
497
+ functionName: "supportsInterface",
498
+ args: [SCALED_UI_AMOUNT_INTERFACE_ID]
499
+ });
500
+ return Boolean(result);
501
+ } catch {
502
+ return false;
503
+ }
504
+ }
505
+ async function fetchScaledUIAmountMetadata(client, address) {
506
+ const results = await client.multicall({
507
+ contracts: [
508
+ { address, abi: scaledUIAmountAbi, functionName: "uiMultiplier" },
509
+ { address, abi: scaledUIAmountAbi, functionName: "newUIMultiplier" },
510
+ { address, abi: scaledUIAmountAbi, functionName: "effectiveAt" }
511
+ ],
512
+ allowFailure: true
513
+ });
514
+ const [activeRes, pendingMRes, pendingTsRes] = results;
515
+ if (activeRes.status !== "success") {
516
+ return IDENTITY_SCALED_UI_AMOUNT_METADATA;
517
+ }
518
+ const multiplier = activeRes.result;
519
+ if (multiplier === 0n) {
520
+ return IDENTITY_SCALED_UI_AMOUNT_METADATA;
521
+ }
522
+ const newMultiplier = pendingMRes.status === "success" ? pendingMRes.result : void 0;
523
+ const effectiveAtRaw = pendingTsRes.status === "success" ? pendingTsRes.result : void 0;
524
+ const effectiveAt = effectiveAtRaw !== void 0 ? Number(effectiveAtRaw) : void 0;
525
+ const hasPending = newMultiplier !== void 0 && effectiveAt !== void 0 && newMultiplier !== multiplier && effectiveAt > 0;
526
+ return hasPending ? { enabled: true, multiplier, newMultiplier, effectiveAt } : { enabled: true, multiplier };
527
+ }
392
528
 
529
+ Object.defineProperty(exports, 'SCALED_UI_DENOMINATOR', {
530
+ enumerable: true,
531
+ get: function () { return swapSdkCore.SCALED_UI_DENOMINATOR; }
532
+ });
533
+ Object.defineProperty(exports, 'SCALED_UI_MULTIPLIER_DECIMALS', {
534
+ enumerable: true,
535
+ get: function () { return swapSdkCore.SCALED_UI_MULTIPLIER_DECIMALS; }
536
+ });
537
+ Object.defineProperty(exports, 'fromScaledUIAmount', {
538
+ enumerable: true,
539
+ get: function () { return swapSdkCore.fromScaledUIAmount; }
540
+ });
541
+ Object.defineProperty(exports, 'isIdentityScaledUIMultiplier', {
542
+ enumerable: true,
543
+ get: function () { return swapSdkCore.isIdentityScaledUIMultiplier; }
544
+ });
545
+ Object.defineProperty(exports, 'toScaledUIAmount', {
546
+ enumerable: true,
547
+ get: function () { return swapSdkCore.toScaledUIAmount; }
548
+ });
393
549
  exports.ERC20Token = ERC20Token;
394
550
  exports.Ether = Ether;
551
+ exports.IDENTITY_SCALED_UI_AMOUNT_METADATA = IDENTITY_SCALED_UI_AMOUNT_METADATA;
395
552
  exports.NATIVE = NATIVE;
396
553
  exports.Native = Native;
397
554
  exports.ONE_HUNDRED_PERCENT = ONE_HUNDRED_PERCENT;
555
+ exports.SCALED_UI_AMOUNT_BALANCES_INTERFACE_ID = SCALED_UI_AMOUNT_BALANCES_INTERFACE_ID;
556
+ exports.SCALED_UI_AMOUNT_INTERFACE_ID = SCALED_UI_AMOUNT_INTERFACE_ID;
398
557
  exports.WBNB = WBNB;
399
558
  exports.WETH9 = WETH9;
400
559
  exports.WNATIVE = WNATIVE;
401
560
  exports.ZERO_PERCENT = ZERO_PERCENT;
561
+ exports.erc165Abi = erc165Abi;
402
562
  exports.erc20Abi = erc20Abi;
563
+ exports.fetchScaledUIAmountMetadata = fetchScaledUIAmountMetadata;
564
+ exports.probeIsScaledUIAmount = probeIsScaledUIAmount;
565
+ exports.scaledUIAmountAbi = scaledUIAmountAbi;
403
566
  exports.validateAndParseAddress = validateAndParseAddress;
404
567
  //# sourceMappingURL=out.js.map
405
568
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/constants.ts","../src/entities/erc20Token.ts","../src/utils.ts","../src/entities/native.ts","../src/abis/ERC20.ts","../src/ether.ts"],"names":["invariant","NativeCurrency"],"mappings":"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","sourcesContent":["import { ChainId } from '@pancakeswap/chains'\nimport { Percent } from '@pancakeswap/swap-sdk-core'\n\nimport { ERC20Token } from './entities/erc20Token'\n\nexport const ZERO_PERCENT = new Percent('0')\nexport const ONE_HUNDRED_PERCENT = new Percent('1')\n\nexport const WETH9 = {\n [ChainId.ETHEREUM]: new ERC20Token(\n ChainId.ETHEREUM,\n '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.GOERLI]: new ERC20Token(\n ChainId.GOERLI,\n '0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.BSC]: new ERC20Token(\n ChainId.BSC,\n '0x2170Ed0880ac9A755fd29B2688956BD959F933F8',\n 18,\n 'ETH',\n 'Binance-Peg Ethereum Token',\n 'https://ethereum.org',\n ),\n [ChainId.BSC_TESTNET]: new ERC20Token(\n ChainId.BSC,\n '0xE7bCB9e341D546b66a46298f4893f5650a56e99E',\n 18,\n 'ETH',\n 'ETH',\n 'https://ethereum.org',\n ),\n [ChainId.ARBITRUM_ONE]: new ERC20Token(\n ChainId.ARBITRUM_ONE,\n '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.ARBITRUM_GOERLI]: new ERC20Token(\n ChainId.ARBITRUM_GOERLI,\n '0xEe01c0CD76354C383B8c7B4e65EA88D00B06f36f',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.ZKSYNC]: new ERC20Token(\n ChainId.ZKSYNC,\n '0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.ZKSYNC_TESTNET]: new ERC20Token(\n ChainId.ZKSYNC_TESTNET,\n '0x02968DB286f24cB18bB5b24903eC8eBFAcf591C0',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.LINEA]: new ERC20Token(\n ChainId.LINEA,\n '0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.LINEA_TESTNET]: new ERC20Token(\n ChainId.LINEA_TESTNET,\n '0x2C1b868d6596a18e32E61B901E4060C872647b6C',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.OPBNB_TESTNET]: new ERC20Token(\n ChainId.OPBNB_TESTNET,\n '0x584f7b986d9942B0859a1E6921efA5342A673d04',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.OPBNB]: new ERC20Token(\n ChainId.OPBNB,\n '0xE7798f023fC62146e8Aa1b36Da45fb70855a77Ea',\n 18,\n 'ETH',\n 'Binance-Peg Ethereum Token',\n 'https://ethereum.org',\n ),\n [ChainId.BASE]: new ERC20Token(\n ChainId.BASE,\n '0x4200000000000000000000000000000000000006',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.BASE_TESTNET]: new ERC20Token(\n ChainId.BASE_TESTNET,\n '0x4200000000000000000000000000000000000006',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.SCROLL_SEPOLIA]: new ERC20Token(\n ChainId.SCROLL_SEPOLIA,\n '0x5300000000000000000000000000000000000004',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.SEPOLIA]: new ERC20Token(\n ChainId.SEPOLIA,\n '0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.ARBITRUM_SEPOLIA]: new ERC20Token(\n ChainId.ARBITRUM_SEPOLIA,\n '0x1bdc540dEB9Ed1fA29964DeEcCc524A8f5e2198e',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.BASE_SEPOLIA]: new ERC20Token(\n ChainId.BASE_SEPOLIA,\n '0x4200000000000000000000000000000000000006',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.MONAD_MAINNET]: new ERC20Token(\n ChainId.MONAD_MAINNET,\n '0x3bd359C1119dA7Da1D913D1C4D2B7c461115433A',\n 18,\n 'WMON',\n 'Wrapped Monad',\n 'https://www.monad.xyz/',\n ),\n [ChainId.MONAD_TESTNET]: new ERC20Token(\n ChainId.MONAD_TESTNET,\n '0x760AfE86e5de5fa0Ee542fc7B7B713e1c5425701',\n 18,\n 'WMON',\n 'Wrapped Monad',\n 'https://www.monad.xyz/',\n ),\n}\n\nexport const WBNB = {\n [ChainId.ETHEREUM]: new ERC20Token(\n ChainId.ETHEREUM,\n '0x418D75f65a02b3D53B2418FB8E1fe493759c7605',\n 18,\n 'WBNB',\n 'Wrapped BNB',\n 'https://www.binance.org',\n ),\n [ChainId.BSC]: new ERC20Token(\n ChainId.BSC,\n '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c',\n 18,\n 'WBNB',\n 'Wrapped BNB',\n 'https://www.binance.org',\n ),\n [ChainId.BSC_TESTNET]: new ERC20Token(\n ChainId.BSC_TESTNET,\n '0xae13d989daC2f0dEbFf460aC112a837C89BAa7cd',\n 18,\n 'WBNB',\n 'Wrapped BNB',\n 'https://www.binance.org',\n ),\n [ChainId.OPBNB_TESTNET]: new ERC20Token(\n ChainId.OPBNB_TESTNET,\n '0x4200000000000000000000000000000000000006',\n 18,\n 'WBNB',\n 'Wrapped BNB',\n 'https://www.binance.org',\n ),\n [ChainId.OPBNB]: new ERC20Token(\n ChainId.OPBNB,\n '0x4200000000000000000000000000000000000006',\n 18,\n 'WBNB',\n 'Wrapped BNB',\n 'https://www.binance.org',\n ),\n}\n\nexport const WNATIVE = {\n [ChainId.ETHEREUM]: WETH9[ChainId.ETHEREUM],\n [ChainId.GOERLI]: WETH9[ChainId.GOERLI],\n [ChainId.BSC]: WBNB[ChainId.BSC],\n [ChainId.BSC_TESTNET]: WBNB[ChainId.BSC_TESTNET],\n [ChainId.ARBITRUM_ONE]: WETH9[ChainId.ARBITRUM_ONE],\n [ChainId.ARBITRUM_GOERLI]: WETH9[ChainId.ARBITRUM_GOERLI],\n [ChainId.ZKSYNC]: WETH9[ChainId.ZKSYNC],\n [ChainId.ZKSYNC_TESTNET]: WETH9[ChainId.ZKSYNC_TESTNET],\n [ChainId.LINEA]: WETH9[ChainId.LINEA],\n [ChainId.LINEA_TESTNET]: WETH9[ChainId.LINEA_TESTNET],\n [ChainId.OPBNB_TESTNET]: WBNB[ChainId.OPBNB_TESTNET],\n [ChainId.OPBNB]: WBNB[ChainId.OPBNB],\n [ChainId.BASE]: WETH9[ChainId.BASE],\n [ChainId.BASE_TESTNET]: WETH9[ChainId.BASE_TESTNET],\n [ChainId.SCROLL_SEPOLIA]: WETH9[ChainId.SCROLL_SEPOLIA],\n [ChainId.SEPOLIA]: WETH9[ChainId.SEPOLIA],\n [ChainId.ARBITRUM_SEPOLIA]: WETH9[ChainId.ARBITRUM_SEPOLIA],\n [ChainId.BASE_SEPOLIA]: WETH9[ChainId.BASE_SEPOLIA],\n [ChainId.MONAD_MAINNET]: WETH9[ChainId.MONAD_MAINNET],\n [ChainId.MONAD_TESTNET]: WETH9[ChainId.MONAD_TESTNET],\n} satisfies Partial<Record<ChainId, ERC20Token>>\n\nconst ETHER = { name: 'Ether', symbol: 'ETH', decimals: 18 } as const\n\nconst BNB = {\n name: 'Binance Chain Native Token',\n symbol: 'BNB',\n decimals: 18,\n} as const\n\nexport const NATIVE = {\n [ChainId.ETHEREUM]: ETHER,\n [ChainId.GOERLI]: { name: 'Goerli Ether', symbol: 'GOR', decimals: 18 },\n [ChainId.BSC]: BNB,\n [ChainId.BSC_TESTNET]: {\n name: 'Binance Chain Native Token',\n symbol: 'tBNB',\n decimals: 18,\n },\n [ChainId.ARBITRUM_ONE]: ETHER,\n [ChainId.ARBITRUM_GOERLI]: {\n name: 'Arbitrum Goerli Ether',\n symbol: 'AGOR',\n decimals: 18,\n },\n [ChainId.ZKSYNC]: ETHER,\n [ChainId.ZKSYNC_TESTNET]: ETHER,\n [ChainId.LINEA]: ETHER,\n [ChainId.LINEA_TESTNET]: ETHER,\n [ChainId.OPBNB]: BNB,\n [ChainId.OPBNB_TESTNET]: {\n name: 'Binance Chain Native Token',\n symbol: 'tBNB',\n decimals: 18,\n },\n [ChainId.BASE]: ETHER,\n [ChainId.BASE_TESTNET]: ETHER,\n [ChainId.SCROLL_SEPOLIA]: ETHER,\n [ChainId.SEPOLIA]: {\n name: 'Sepolia Ether',\n symbol: 'SEP',\n decimals: 18,\n },\n [ChainId.ARBITRUM_SEPOLIA]: {\n name: 'Arbitrum Sepolia Ether',\n symbol: 'ETH',\n decimals: 18,\n },\n [ChainId.BASE_SEPOLIA]: {\n name: 'Sepolia Ether',\n symbol: 'ETH',\n decimals: 18,\n },\n [ChainId.MONAD_MAINNET]: {\n name: 'Monad',\n symbol: 'MON',\n decimals: 18,\n },\n [ChainId.MONAD_TESTNET]: {\n name: 'Monad Testnet Ether',\n symbol: 'MON',\n decimals: 18,\n },\n} satisfies Partial<\n Record<\n ChainId,\n {\n name: string\n symbol: string\n decimals: number\n }\n >\n>\n","import { Token } from '@pancakeswap/swap-sdk-core'\nimport { Address } from 'viem'\n\nimport { validateAndParseAddress } from '../utils'\n\n// /**\n// * Represents an ERC20 token with a unique address and some metadata.\n// */\nexport class ERC20Token extends Token {\n public constructor(\n chainId: number,\n address: Address,\n decimals: number,\n symbol: string,\n name?: string,\n projectLink?: string,\n ) {\n super(chainId, validateAndParseAddress(address), decimals, symbol, name, projectLink)\n }\n}\n","import { type Address, getAddress } from 'viem'\nimport invariant from 'tiny-invariant'\nimport warning from 'tiny-warning'\n\n// warns if addresses are not checksummed\n// eslint-disable-next-line consistent-return\nexport function validateAndParseAddress(address: string): Address {\n try {\n const checksummedAddress = getAddress(address)\n warning(address === checksummedAddress, `${address} is not checksummed.`)\n return checksummedAddress\n } catch (error) {\n invariant(false, `${address} is not a valid address.`)\n }\n}\n","import invariant from 'tiny-invariant'\nimport { Currency, Token, NativeCurrency } from '@pancakeswap/swap-sdk-core'\n\nimport { WNATIVE, NATIVE } from '../constants'\n\n/**\n *\n * Native is the main usage of a 'native' currency, i.e. for BSC mainnet and all testnets\n */\nexport class Native extends NativeCurrency {\n protected constructor({\n chainId,\n decimals,\n name,\n symbol,\n }: {\n chainId: number\n decimals: number\n symbol: string\n name: string\n }) {\n super(chainId, decimals, symbol, name)\n }\n\n public get wrapped(): Token {\n const wnative = WNATIVE[this.chainId as keyof typeof WNATIVE]\n invariant(!!wnative, 'WRAPPED')\n return wnative\n }\n\n private static cache: { [chainId: number]: Native } = {}\n\n public static onChain(chainId: number): Native {\n if (chainId in this.cache) {\n return this.cache[chainId]\n }\n invariant(!!NATIVE[chainId as keyof typeof NATIVE], 'NATIVE_CURRENCY')\n const { decimals, name, symbol } = NATIVE[chainId as keyof typeof WNATIVE]\n // eslint-disable-next-line no-return-assign\n return (this.cache[chainId] = new Native({ chainId, decimals, symbol, name }))\n }\n\n public equals(other: Currency): boolean {\n return other.isNative && other.chainId === this.chainId\n }\n}\n","export const erc20Abi = [\n {\n constant: true,\n inputs: [],\n name: 'decimals',\n outputs: [{ name: '', type: 'uint8' }],\n payable: false,\n stateMutability: 'view',\n type: 'function',\n },\n {\n constant: true,\n inputs: [{ name: '', type: 'address' }],\n name: 'balanceOf',\n outputs: [{ name: '', type: 'uint256' }],\n payable: false,\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n","import invariant from 'tiny-invariant'\nimport { Currency, NativeCurrency, Token } from '@pancakeswap/swap-sdk-core'\nimport { ChainId } from '@pancakeswap/chains'\n\nimport { WETH9 } from './constants'\n\n/**\n * Ether is the main usage of a 'native' currency, i.e. for Ethereum mainnet and all testnets\n */\nexport class Ether extends NativeCurrency {\n protected constructor(chainId: number) {\n super(chainId, 18, 'ETH', 'Ether')\n }\n\n public get wrapped(): Token {\n const weth9 = WETH9[this.chainId as ChainId.ETHEREUM | ChainId.GOERLI]\n\n invariant(!!weth9, 'WRAPPED')\n\n return weth9\n }\n\n private static _etherCache: { [chainId: number]: Ether } = {}\n\n public static onChain(chainId: number): Ether {\n if (!this._etherCache[chainId]) {\n this._etherCache[chainId] = new Ether(chainId)\n }\n\n return this._etherCache[chainId]\n }\n\n public equals(other: Currency): boolean {\n return other.isNative && other.chainId === this.chainId\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/constants.ts","../src/entities/erc20Token.ts","../src/utils.ts","../src/entities/native.ts","../src/abis/ERC20.ts","../src/abis/ERC165.ts","../src/abis/ScaledUIAmount.ts","../src/ether.ts","../src/scaledUIAmount.ts"],"names":["invariant","NativeCurrency","SCALED_UI_DENOMINATOR"],"mappings":";AAAA,SAAS,SAAS,4BAA4B;AAC9C,SAAS,eAAe;;;ACDxB,SAAS,aAAa;;;ACAtB,SAAuB,kBAAkB;AACzC,OAAO,eAAe;AACtB,OAAO,aAAa;AAIb,SAAS,wBAAwB,SAA0B;AAChE,MAAI;AACF,UAAM,qBAAqB,WAAW,OAAO;AAC7C,YAAQ,YAAY,oBAAoB,GAAG,6BAA6B;AACxE,WAAO;AAAA,EACT,SAAS,OAAP;AACA,cAAU,OAAO,GAAG,iCAAiC;AAAA,EACvD;AACF;;;ADNO,IAAM,aAAN,cAAyB,MAAM;AAAA,EAC7B,YACL,SACA,SACA,UACA,QACA,MACA,aACA;AACA,UAAM,SAAS,wBAAwB,OAAO,GAAG,UAAU,QAAQ,MAAM,WAAW;AAAA,EACtF;AACF;;;ADdO,IAAM,eAAe,IAAI,QAAQ,GAAG;AACpC,IAAM,sBAAsB,IAAI,QAAQ,GAAG;AAE3C,IAAM,QAAQ;AAAA,EACnB,CAAC,QAAQ,QAAQ,GAAG,IAAI;AAAA,IACtB,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,CAAC,QAAQ,MAAM,GAAG,IAAI;AAAA,IACpB,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,CAAC,QAAQ,GAAG,GAAG,IAAI;AAAA,IACjB,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,CAAC,QAAQ,WAAW,GAAG,IAAI;AAAA,IACzB,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,CAAC,QAAQ,YAAY,GAAG,IAAI;AAAA,IAC1B,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,CAAC,QAAQ,eAAe,GAAG,IAAI;AAAA,IAC7B,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,CAAC,QAAQ,MAAM,GAAG,IAAI;AAAA,IACpB,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,CAAC,QAAQ,cAAc,GAAG,IAAI;AAAA,IAC5B,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,CAAC,QAAQ,KAAK,GAAG,IAAI;AAAA,IACnB,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,CAAC,QAAQ,aAAa,GAAG,IAAI;AAAA,IAC3B,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,CAAC,QAAQ,aAAa,GAAG,IAAI;AAAA,IAC3B,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,CAAC,QAAQ,KAAK,GAAG,IAAI;AAAA,IACnB,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,CAAC,QAAQ,IAAI,GAAG,IAAI;AAAA,IAClB,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,CAAC,QAAQ,YAAY,GAAG,IAAI;AAAA,IAC1B,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,CAAC,QAAQ,cAAc,GAAG,IAAI;AAAA,IAC5B,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,CAAC,QAAQ,OAAO,GAAG,IAAI;AAAA,IACrB,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,CAAC,QAAQ,gBAAgB,GAAG,IAAI;AAAA,IAC9B,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,CAAC,QAAQ,YAAY,GAAG,IAAI;AAAA,IAC1B,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,CAAC,QAAQ,aAAa,GAAG,IAAI;AAAA,IAC3B,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,CAAC,QAAQ,aAAa,GAAG,IAAI;AAAA,IAC3B,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,CAAC,QAAQ,SAAS,GAAG,IAAI;AAAA,IACvB,QAAQ;AAAA,IACR,qBAAqB,OAAO;AAAA,IAC5B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEO,IAAM,OAAO;AAAA,EAClB,CAAC,QAAQ,QAAQ,GAAG,IAAI;AAAA,IACtB,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,CAAC,QAAQ,GAAG,GAAG,IAAI;AAAA,IACjB,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,CAAC,QAAQ,WAAW,GAAG,IAAI;AAAA,IACzB,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,CAAC,QAAQ,aAAa,GAAG,IAAI;AAAA,IAC3B,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,CAAC,QAAQ,KAAK,GAAG,IAAI;AAAA,IACnB,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEO,IAAM,UAAU;AAAA,EACrB,CAAC,QAAQ,QAAQ,GAAG,MAAM,QAAQ,QAAQ;AAAA,EAC1C,CAAC,QAAQ,MAAM,GAAG,MAAM,QAAQ,MAAM;AAAA,EACtC,CAAC,QAAQ,GAAG,GAAG,KAAK,QAAQ,GAAG;AAAA,EAC/B,CAAC,QAAQ,WAAW,GAAG,KAAK,QAAQ,WAAW;AAAA,EAC/C,CAAC,QAAQ,YAAY,GAAG,MAAM,QAAQ,YAAY;AAAA,EAClD,CAAC,QAAQ,eAAe,GAAG,MAAM,QAAQ,eAAe;AAAA,EACxD,CAAC,QAAQ,MAAM,GAAG,MAAM,QAAQ,MAAM;AAAA,EACtC,CAAC,QAAQ,cAAc,GAAG,MAAM,QAAQ,cAAc;AAAA,EACtD,CAAC,QAAQ,KAAK,GAAG,MAAM,QAAQ,KAAK;AAAA,EACpC,CAAC,QAAQ,aAAa,GAAG,MAAM,QAAQ,aAAa;AAAA,EACpD,CAAC,QAAQ,aAAa,GAAG,KAAK,QAAQ,aAAa;AAAA,EACnD,CAAC,QAAQ,KAAK,GAAG,KAAK,QAAQ,KAAK;AAAA,EACnC,CAAC,QAAQ,IAAI,GAAG,MAAM,QAAQ,IAAI;AAAA,EAClC,CAAC,QAAQ,YAAY,GAAG,MAAM,QAAQ,YAAY;AAAA,EAClD,CAAC,QAAQ,cAAc,GAAG,MAAM,QAAQ,cAAc;AAAA,EACtD,CAAC,QAAQ,OAAO,GAAG,MAAM,QAAQ,OAAO;AAAA,EACxC,CAAC,QAAQ,gBAAgB,GAAG,MAAM,QAAQ,gBAAgB;AAAA,EAC1D,CAAC,QAAQ,YAAY,GAAG,MAAM,QAAQ,YAAY;AAAA,EAClD,CAAC,QAAQ,aAAa,GAAG,MAAM,QAAQ,aAAa;AAAA,EACpD,CAAC,QAAQ,aAAa,GAAG,MAAM,QAAQ,aAAa;AAAA,EACpD,CAAC,QAAQ,SAAS,GAAG,MAAM,QAAQ,SAAS;AAC9C;AAEA,IAAM,QAAQ,EAAE,MAAM,SAAS,QAAQ,OAAO,UAAU,GAAG;AAE3D,IAAM,MAAM;AAAA,EACV,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,UAAU;AACZ;AAEO,IAAM,SAAS;AAAA,EACpB,CAAC,QAAQ,QAAQ,GAAG;AAAA,EACpB,CAAC,QAAQ,MAAM,GAAG,EAAE,MAAM,gBAAgB,QAAQ,OAAO,UAAU,GAAG;AAAA,EACtE,CAAC,QAAQ,GAAG,GAAG;AAAA,EACf,CAAC,QAAQ,WAAW,GAAG;AAAA,IACrB,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,UAAU;AAAA,EACZ;AAAA,EACA,CAAC,QAAQ,YAAY,GAAG;AAAA,EACxB,CAAC,QAAQ,eAAe,GAAG;AAAA,IACzB,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,UAAU;AAAA,EACZ;AAAA,EACA,CAAC,QAAQ,MAAM,GAAG;AAAA,EAClB,CAAC,QAAQ,cAAc,GAAG;AAAA,EAC1B,CAAC,QAAQ,KAAK,GAAG;AAAA,EACjB,CAAC,QAAQ,aAAa,GAAG;AAAA,EACzB,CAAC,QAAQ,KAAK,GAAG;AAAA,EACjB,CAAC,QAAQ,aAAa,GAAG;AAAA,IACvB,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,UAAU;AAAA,EACZ;AAAA,EACA,CAAC,QAAQ,IAAI,GAAG;AAAA,EAChB,CAAC,QAAQ,YAAY,GAAG;AAAA,EACxB,CAAC,QAAQ,cAAc,GAAG;AAAA,EAC1B,CAAC,QAAQ,OAAO,GAAG;AAAA,IACjB,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,UAAU;AAAA,EACZ;AAAA,EACA,CAAC,QAAQ,gBAAgB,GAAG;AAAA,IAC1B,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,UAAU;AAAA,EACZ;AAAA,EACA,CAAC,QAAQ,YAAY,GAAG;AAAA,IACtB,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,UAAU;AAAA,EACZ;AAAA,EACA,CAAC,QAAQ,aAAa,GAAG;AAAA,IACvB,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,UAAU;AAAA,EACZ;AAAA,EACA,CAAC,QAAQ,aAAa,GAAG;AAAA,IACvB,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,UAAU;AAAA,EACZ;AAAA,EACA,CAAC,QAAQ,SAAS,GAAG;AACvB;;;AGpTA,OAAOA,gBAAe;AACtB,SAA0B,sBAAsB;AAQzC,IAAM,UAAN,cAAqB,eAAe;AAAA,EAC/B,YAAY;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAKG;AACD,UAAM,SAAS,UAAU,QAAQ,IAAI;AAAA,EACvC;AAAA,EAEA,IAAW,UAAiB;AAC1B,UAAM,UAAU,QAAQ,KAAK,OAA+B;AAC5D,IAAAA,WAAU,CAAC,CAAC,SAAS,SAAS;AAC9B,WAAO;AAAA,EACT;AAAA,EAIA,OAAc,QAAQ,SAAyB;AAC7C,QAAI,WAAW,KAAK,OAAO;AACzB,aAAO,KAAK,MAAM,OAAO;AAAA,IAC3B;AACA,IAAAA,WAAU,CAAC,CAAC,OAAO,OAA8B,GAAG,iBAAiB;AACrE,UAAM,EAAE,UAAU,MAAM,OAAO,IAAI,OAAO,OAA+B;AAEzE,WAAQ,KAAK,MAAM,OAAO,IAAI,IAAI,QAAO,EAAE,SAAS,UAAU,QAAQ,KAAK,CAAC;AAAA,EAC9E;AAAA,EAEO,OAAO,OAA0B;AACtC,WAAO,MAAM,YAAY,MAAM,YAAY,KAAK;AAAA,EAClD;AACF;AApCO,IAAM,SAAN;AAAM,OAqBI,QAAuC,CAAC;;;AC9BlD,IAAM,WAAW;AAAA,EACtB;AAAA,IACE,UAAU;AAAA,IACV,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,QAAQ,CAAC;AAAA,IACrC,SAAS;AAAA,IACT,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,UAAU;AAAA,IACV,QAAQ,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IACtC,MAAM;AAAA,IACN,SAAS,CAAC,EAAE,MAAM,IAAI,MAAM,UAAU,CAAC;AAAA,IACvC,SAAS;AAAA,IACT,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AACF;;;ACfO,IAAM,YAAY;AAAA,EACvB;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ,CAAC,EAAE,MAAM,eAAe,MAAM,SAAS,CAAC;AAAA,IAChD,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC;AAAA,IAC1B,iBAAiB;AAAA,EACnB;AACF;;;ACKO,IAAM,oBAAoB;AAAA;AAAA,EAE/B;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,UAAU,CAAC;AAAA,IAC7B,iBAAiB;AAAA,EACnB;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ,CAAC,EAAE,MAAM,aAAa,MAAM,UAAU,CAAC;AAAA,IAC/C,SAAS,CAAC,EAAE,MAAM,UAAU,CAAC;AAAA,IAC7B,iBAAiB;AAAA,EACnB;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ,CAAC,EAAE,MAAM,YAAY,MAAM,UAAU,CAAC;AAAA,IAC9C,SAAS,CAAC,EAAE,MAAM,UAAU,CAAC;AAAA,IAC7B,iBAAiB;AAAA,EACnB;AAAA;AAAA,EAGA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ,CAAC,EAAE,MAAM,WAAW,MAAM,UAAU,CAAC;AAAA,IAC7C,SAAS,CAAC,EAAE,MAAM,UAAU,CAAC;AAAA,IAC7B,iBAAiB;AAAA,EACnB;AAAA;AAAA,EAGA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,UAAU,CAAC;AAAA,IAC7B,iBAAiB;AAAA,EACnB;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC,EAAE,MAAM,UAAU,CAAC;AAAA,IAC7B,iBAAiB;AAAA,EACnB;AAAA;AAAA;AAAA,EAIA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,MACN,EAAE,MAAM,iBAAiB,MAAM,WAAW,SAAS,MAAM;AAAA,MACzD,EAAE,MAAM,iBAAiB,MAAM,WAAW,SAAS,MAAM;AAAA,MACzD,EAAE,MAAM,kBAAkB,MAAM,WAAW,SAAS,MAAM;AAAA,MAC1D,EAAE,MAAM,wBAAwB,MAAM,WAAW,SAAS,MAAM;AAAA,IAClE;AAAA,EACF;AAAA;AAAA;AAAA,EAGA;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,MACN,EAAE,MAAM,QAAQ,MAAM,WAAW,SAAS,KAAK;AAAA,MAC/C,EAAE,MAAM,MAAM,MAAM,WAAW,SAAS,KAAK;AAAA,MAC7C,EAAE,MAAM,UAAU,MAAM,WAAW,SAAS,MAAM;AAAA,MAClD,EAAE,MAAM,YAAY,MAAM,WAAW,SAAS,MAAM;AAAA,IACtD;AAAA,EACF;AACF;;;AC1FA,OAAOA,gBAAe;AACtB,SAAmB,kBAAAC,uBAA6B;AAQzC,IAAM,SAAN,cAAoBA,gBAAe;AAAA,EAC9B,YAAY,SAAiB;AACrC,UAAM,SAAS,IAAI,OAAO,OAAO;AAAA,EACnC;AAAA,EAEA,IAAW,UAAiB;AAC1B,UAAM,QAAQ,MAAM,KAAK,OAA4C;AAErE,IAAAD,WAAU,CAAC,CAAC,OAAO,SAAS;AAE5B,WAAO;AAAA,EACT;AAAA,EAIA,OAAc,QAAQ,SAAwB;AAC5C,QAAI,CAAC,KAAK,YAAY,OAAO,GAAG;AAC9B,WAAK,YAAY,OAAO,IAAI,IAAI,OAAM,OAAO;AAAA,IAC/C;AAEA,WAAO,KAAK,YAAY,OAAO;AAAA,EACjC;AAAA,EAEO,OAAO,OAA0B;AACtC,WAAO,MAAM,YAAY,MAAM,YAAY,KAAK;AAAA,EAClD;AACF;AA1BO,IAAM,QAAN;AAAM,MAaI,cAA4C,CAAC;;;ACnB9D,SAAS,6BAA6B;AAuHtC;AAAA,EACE,yBAAAE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAjHA,IAAM,gCAAgC;AACtC,IAAM,yCAAyC;AAwB/C,IAAM,qCAA6D;AAAA,EACxE,SAAS;AAAA,EACT,YAAY;AACd;AAaA,eAAsB,sBAAsB,QAAsB,SAAoC;AACpG,MAAI;AACF,UAAM,SAAS,MAAM,OAAO,aAAa;AAAA,MACvC;AAAA,MACA,KAAK;AAAA,MACL,cAAc;AAAA,MACd,MAAM,CAAC,6BAA6B;AAAA,IACtC,CAAC;AACD,WAAO,QAAQ,MAAM;AAAA,EACvB,QAAE;AACA,WAAO;AAAA,EACT;AACF;AAeA,eAAsB,4BACpB,QACA,SACiC;AACjC,QAAM,UAAU,MAAM,OAAO,UAAU;AAAA,IACrC,WAAW;AAAA,MACT,EAAE,SAAS,KAAK,mBAAmB,cAAc,eAAe;AAAA,MAChE,EAAE,SAAS,KAAK,mBAAmB,cAAc,kBAAkB;AAAA,MACnE,EAAE,SAAS,KAAK,mBAAmB,cAAc,cAAc;AAAA,IACjE;AAAA,IACA,cAAc;AAAA,EAChB,CAAC;AAED,QAAM,CAAC,WAAW,aAAa,YAAY,IAAI;AAE/C,MAAI,UAAU,WAAW,WAAW;AAClC,WAAO;AAAA,EACT;AAEA,QAAM,aAAa,UAAU;AAI7B,MAAI,eAAe,IAAI;AACrB,WAAO;AAAA,EACT;AACA,QAAM,gBAAgB,YAAY,WAAW,YAAa,YAAY,SAAoB;AAC1F,QAAM,iBAAiB,aAAa,WAAW,YAAa,aAAa,SAAoB;AAC7F,QAAM,cAAc,mBAAmB,SAAY,OAAO,cAAc,IAAI;AAG5E,QAAM,aACJ,kBAAkB,UAAa,gBAAgB,UAAa,kBAAkB,cAAc,cAAc;AAE5G,SAAO,aAAa,EAAE,SAAS,MAAM,YAAY,eAAe,YAAY,IAAI,EAAE,SAAS,MAAM,WAAW;AAC9G","sourcesContent":["import { ChainId, robinhoodChainConfig } from '@pancakeswap/chains'\nimport { Percent } from '@pancakeswap/swap-sdk-core'\n\nimport { ERC20Token } from './entities/erc20Token'\n\nexport const ZERO_PERCENT = new Percent('0')\nexport const ONE_HUNDRED_PERCENT = new Percent('1')\n\nexport const WETH9 = {\n [ChainId.ETHEREUM]: new ERC20Token(\n ChainId.ETHEREUM,\n '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.GOERLI]: new ERC20Token(\n ChainId.GOERLI,\n '0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.BSC]: new ERC20Token(\n ChainId.BSC,\n '0x2170Ed0880ac9A755fd29B2688956BD959F933F8',\n 18,\n 'ETH',\n 'Binance-Peg Ethereum Token',\n 'https://ethereum.org',\n ),\n [ChainId.BSC_TESTNET]: new ERC20Token(\n ChainId.BSC,\n '0xE7bCB9e341D546b66a46298f4893f5650a56e99E',\n 18,\n 'ETH',\n 'ETH',\n 'https://ethereum.org',\n ),\n [ChainId.ARBITRUM_ONE]: new ERC20Token(\n ChainId.ARBITRUM_ONE,\n '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.ARBITRUM_GOERLI]: new ERC20Token(\n ChainId.ARBITRUM_GOERLI,\n '0xEe01c0CD76354C383B8c7B4e65EA88D00B06f36f',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.ZKSYNC]: new ERC20Token(\n ChainId.ZKSYNC,\n '0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.ZKSYNC_TESTNET]: new ERC20Token(\n ChainId.ZKSYNC_TESTNET,\n '0x02968DB286f24cB18bB5b24903eC8eBFAcf591C0',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.LINEA]: new ERC20Token(\n ChainId.LINEA,\n '0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.LINEA_TESTNET]: new ERC20Token(\n ChainId.LINEA_TESTNET,\n '0x2C1b868d6596a18e32E61B901E4060C872647b6C',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.OPBNB_TESTNET]: new ERC20Token(\n ChainId.OPBNB_TESTNET,\n '0x584f7b986d9942B0859a1E6921efA5342A673d04',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.OPBNB]: new ERC20Token(\n ChainId.OPBNB,\n '0xE7798f023fC62146e8Aa1b36Da45fb70855a77Ea',\n 18,\n 'ETH',\n 'Binance-Peg Ethereum Token',\n 'https://ethereum.org',\n ),\n [ChainId.BASE]: new ERC20Token(\n ChainId.BASE,\n '0x4200000000000000000000000000000000000006',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.BASE_TESTNET]: new ERC20Token(\n ChainId.BASE_TESTNET,\n '0x4200000000000000000000000000000000000006',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.SCROLL_SEPOLIA]: new ERC20Token(\n ChainId.SCROLL_SEPOLIA,\n '0x5300000000000000000000000000000000000004',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.SEPOLIA]: new ERC20Token(\n ChainId.SEPOLIA,\n '0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.ARBITRUM_SEPOLIA]: new ERC20Token(\n ChainId.ARBITRUM_SEPOLIA,\n '0x1bdc540dEB9Ed1fA29964DeEcCc524A8f5e2198e',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.BASE_SEPOLIA]: new ERC20Token(\n ChainId.BASE_SEPOLIA,\n '0x4200000000000000000000000000000000000006',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.MONAD_MAINNET]: new ERC20Token(\n ChainId.MONAD_MAINNET,\n '0x3bd359C1119dA7Da1D913D1C4D2B7c461115433A',\n 18,\n 'WMON',\n 'Wrapped Monad',\n 'https://www.monad.xyz/',\n ),\n [ChainId.MONAD_TESTNET]: new ERC20Token(\n ChainId.MONAD_TESTNET,\n '0x760AfE86e5de5fa0Ee542fc7B7B713e1c5425701',\n 18,\n 'WMON',\n 'Wrapped Monad',\n 'https://www.monad.xyz/',\n ),\n [ChainId.ROBINHOOD]: new ERC20Token(\n ChainId.ROBINHOOD,\n robinhoodChainConfig.tokens.wrappedNative,\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n}\n\nexport const WBNB = {\n [ChainId.ETHEREUM]: new ERC20Token(\n ChainId.ETHEREUM,\n '0x418D75f65a02b3D53B2418FB8E1fe493759c7605',\n 18,\n 'WBNB',\n 'Wrapped BNB',\n 'https://www.binance.org',\n ),\n [ChainId.BSC]: new ERC20Token(\n ChainId.BSC,\n '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c',\n 18,\n 'WBNB',\n 'Wrapped BNB',\n 'https://www.binance.org',\n ),\n [ChainId.BSC_TESTNET]: new ERC20Token(\n ChainId.BSC_TESTNET,\n '0xae13d989daC2f0dEbFf460aC112a837C89BAa7cd',\n 18,\n 'WBNB',\n 'Wrapped BNB',\n 'https://www.binance.org',\n ),\n [ChainId.OPBNB_TESTNET]: new ERC20Token(\n ChainId.OPBNB_TESTNET,\n '0x4200000000000000000000000000000000000006',\n 18,\n 'WBNB',\n 'Wrapped BNB',\n 'https://www.binance.org',\n ),\n [ChainId.OPBNB]: new ERC20Token(\n ChainId.OPBNB,\n '0x4200000000000000000000000000000000000006',\n 18,\n 'WBNB',\n 'Wrapped BNB',\n 'https://www.binance.org',\n ),\n}\n\nexport const WNATIVE = {\n [ChainId.ETHEREUM]: WETH9[ChainId.ETHEREUM],\n [ChainId.GOERLI]: WETH9[ChainId.GOERLI],\n [ChainId.BSC]: WBNB[ChainId.BSC],\n [ChainId.BSC_TESTNET]: WBNB[ChainId.BSC_TESTNET],\n [ChainId.ARBITRUM_ONE]: WETH9[ChainId.ARBITRUM_ONE],\n [ChainId.ARBITRUM_GOERLI]: WETH9[ChainId.ARBITRUM_GOERLI],\n [ChainId.ZKSYNC]: WETH9[ChainId.ZKSYNC],\n [ChainId.ZKSYNC_TESTNET]: WETH9[ChainId.ZKSYNC_TESTNET],\n [ChainId.LINEA]: WETH9[ChainId.LINEA],\n [ChainId.LINEA_TESTNET]: WETH9[ChainId.LINEA_TESTNET],\n [ChainId.OPBNB_TESTNET]: WBNB[ChainId.OPBNB_TESTNET],\n [ChainId.OPBNB]: WBNB[ChainId.OPBNB],\n [ChainId.BASE]: WETH9[ChainId.BASE],\n [ChainId.BASE_TESTNET]: WETH9[ChainId.BASE_TESTNET],\n [ChainId.SCROLL_SEPOLIA]: WETH9[ChainId.SCROLL_SEPOLIA],\n [ChainId.SEPOLIA]: WETH9[ChainId.SEPOLIA],\n [ChainId.ARBITRUM_SEPOLIA]: WETH9[ChainId.ARBITRUM_SEPOLIA],\n [ChainId.BASE_SEPOLIA]: WETH9[ChainId.BASE_SEPOLIA],\n [ChainId.MONAD_MAINNET]: WETH9[ChainId.MONAD_MAINNET],\n [ChainId.MONAD_TESTNET]: WETH9[ChainId.MONAD_TESTNET],\n [ChainId.ROBINHOOD]: WETH9[ChainId.ROBINHOOD],\n} satisfies Partial<Record<ChainId, ERC20Token>>\n\nconst ETHER = { name: 'Ether', symbol: 'ETH', decimals: 18 } as const\n\nconst BNB = {\n name: 'Binance Chain Native Token',\n symbol: 'BNB',\n decimals: 18,\n} as const\n\nexport const NATIVE = {\n [ChainId.ETHEREUM]: ETHER,\n [ChainId.GOERLI]: { name: 'Goerli Ether', symbol: 'GOR', decimals: 18 },\n [ChainId.BSC]: BNB,\n [ChainId.BSC_TESTNET]: {\n name: 'Binance Chain Native Token',\n symbol: 'tBNB',\n decimals: 18,\n },\n [ChainId.ARBITRUM_ONE]: ETHER,\n [ChainId.ARBITRUM_GOERLI]: {\n name: 'Arbitrum Goerli Ether',\n symbol: 'AGOR',\n decimals: 18,\n },\n [ChainId.ZKSYNC]: ETHER,\n [ChainId.ZKSYNC_TESTNET]: ETHER,\n [ChainId.LINEA]: ETHER,\n [ChainId.LINEA_TESTNET]: ETHER,\n [ChainId.OPBNB]: BNB,\n [ChainId.OPBNB_TESTNET]: {\n name: 'Binance Chain Native Token',\n symbol: 'tBNB',\n decimals: 18,\n },\n [ChainId.BASE]: ETHER,\n [ChainId.BASE_TESTNET]: ETHER,\n [ChainId.SCROLL_SEPOLIA]: ETHER,\n [ChainId.SEPOLIA]: {\n name: 'Sepolia Ether',\n symbol: 'SEP',\n decimals: 18,\n },\n [ChainId.ARBITRUM_SEPOLIA]: {\n name: 'Arbitrum Sepolia Ether',\n symbol: 'ETH',\n decimals: 18,\n },\n [ChainId.BASE_SEPOLIA]: {\n name: 'Sepolia Ether',\n symbol: 'ETH',\n decimals: 18,\n },\n [ChainId.MONAD_MAINNET]: {\n name: 'Monad',\n symbol: 'MON',\n decimals: 18,\n },\n [ChainId.MONAD_TESTNET]: {\n name: 'Monad Testnet Ether',\n symbol: 'MON',\n decimals: 18,\n },\n [ChainId.ROBINHOOD]: ETHER,\n} satisfies Partial<\n Record<\n ChainId,\n {\n name: string\n symbol: string\n decimals: number\n }\n >\n>\n","import { Token } from '@pancakeswap/swap-sdk-core'\nimport { Address } from 'viem'\n\nimport { validateAndParseAddress } from '../utils'\n\n// /**\n// * Represents an ERC20 token with a unique address and some metadata.\n// */\nexport class ERC20Token extends Token {\n public constructor(\n chainId: number,\n address: Address,\n decimals: number,\n symbol: string,\n name?: string,\n projectLink?: string,\n ) {\n super(chainId, validateAndParseAddress(address), decimals, symbol, name, projectLink)\n }\n}\n","import { type Address, getAddress } from 'viem'\nimport invariant from 'tiny-invariant'\nimport warning from 'tiny-warning'\n\n// warns if addresses are not checksummed\n// eslint-disable-next-line consistent-return\nexport function validateAndParseAddress(address: string): Address {\n try {\n const checksummedAddress = getAddress(address)\n warning(address === checksummedAddress, `${address} is not checksummed.`)\n return checksummedAddress\n } catch (error) {\n invariant(false, `${address} is not a valid address.`)\n }\n}\n","import invariant from 'tiny-invariant'\nimport { Currency, Token, NativeCurrency } from '@pancakeswap/swap-sdk-core'\n\nimport { WNATIVE, NATIVE } from '../constants'\n\n/**\n *\n * Native is the main usage of a 'native' currency, i.e. for BSC mainnet and all testnets\n */\nexport class Native extends NativeCurrency {\n protected constructor({\n chainId,\n decimals,\n name,\n symbol,\n }: {\n chainId: number\n decimals: number\n symbol: string\n name: string\n }) {\n super(chainId, decimals, symbol, name)\n }\n\n public get wrapped(): Token {\n const wnative = WNATIVE[this.chainId as keyof typeof WNATIVE]\n invariant(!!wnative, 'WRAPPED')\n return wnative\n }\n\n private static cache: { [chainId: number]: Native } = {}\n\n public static onChain(chainId: number): Native {\n if (chainId in this.cache) {\n return this.cache[chainId]\n }\n invariant(!!NATIVE[chainId as keyof typeof NATIVE], 'NATIVE_CURRENCY')\n const { decimals, name, symbol } = NATIVE[chainId as keyof typeof WNATIVE]\n // eslint-disable-next-line no-return-assign\n return (this.cache[chainId] = new Native({ chainId, decimals, symbol, name }))\n }\n\n public equals(other: Currency): boolean {\n return other.isNative && other.chainId === this.chainId\n }\n}\n","export const erc20Abi = [\n {\n constant: true,\n inputs: [],\n name: 'decimals',\n outputs: [{ name: '', type: 'uint8' }],\n payable: false,\n stateMutability: 'view',\n type: 'function',\n },\n {\n constant: true,\n inputs: [{ name: '', type: 'address' }],\n name: 'balanceOf',\n outputs: [{ name: '', type: 'uint256' }],\n payable: false,\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n","/**\n * Minimal ERC-165 ABI fragment — just the `supportsInterface(bytes4)` view.\n * Used to probe whether a contract advertises support for a given interface ID.\n */\nexport const erc165Abi = [\n {\n type: 'function',\n name: 'supportsInterface',\n inputs: [{ name: 'interfaceId', type: 'bytes4' }],\n outputs: [{ type: 'bool' }],\n stateMutability: 'view',\n },\n] as const\n","/**\n * ERC-8056 (Scaled UI Amount) ABI fragments.\n *\n * Based on the `IScaledUIAmount` interface from the BNB Chain partner integration doc\n * v1.0 (8 Apr 2026). The spec itself is in Draft as of Oct 2025; these fragments are\n * pinned against the concrete implementation Binance is deploying for Stock Tokens.\n *\n * Spec: https://eips.ethereum.org/EIPS/eip-8056\n *\n * Notes:\n * - `newUIMultiplier` and `effectiveAt` are optional getters in the spec. Real\n * implementations may or may not expose them — reads must use `allowFailure: true`.\n * - `totalSupplyUI()` does NOT exist on Binance Stock Tokens per the partner doc FAQ;\n * compute as `toUIAmount(totalSupply())` instead.\n * - All on-chain helpers (`toUIAmount`, `fromUIAmount`, `balanceOfUI`) match the\n * contract's rounding exactly; prefer them over JS math when available.\n */\nexport const scaledUIAmountAbi = [\n // ─── Core required interface (ERC-165 ID: 0xa60bf13d) ───\n {\n type: 'function',\n name: 'uiMultiplier',\n inputs: [],\n outputs: [{ type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'toUIAmount',\n inputs: [{ name: 'rawAmount', type: 'uint256' }],\n outputs: [{ type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'fromUIAmount',\n inputs: [{ name: 'uiAmount', type: 'uint256' }],\n outputs: [{ type: 'uint256' }],\n stateMutability: 'view',\n },\n\n // ─── Balances extension (ERC-165 ID: 0xd890fd71) ───\n {\n type: 'function',\n name: 'balanceOfUI',\n inputs: [{ name: 'account', type: 'address' }],\n outputs: [{ type: 'uint256' }],\n stateMutability: 'view',\n },\n\n // ─── Pending-change getters (optional in spec; common in implementations) ───\n {\n type: 'function',\n name: 'newUIMultiplier',\n inputs: [],\n outputs: [{ type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'effectiveAt',\n inputs: [],\n outputs: [{ type: 'uint256' }],\n stateMutability: 'view',\n },\n\n // ─── Events ───\n // Both timestamps required per BNB doc §4.1\n {\n type: 'event',\n name: 'UIMultiplierUpdated',\n inputs: [\n { name: 'oldMultiplier', type: 'uint256', indexed: false },\n { name: 'newMultiplier', type: 'uint256', indexed: false },\n { name: 'setAtTimestamp', type: 'uint256', indexed: false },\n { name: 'effectiveAtTimestamp', type: 'uint256', indexed: false },\n ],\n },\n // Optional event — emits raw + UI in one record (lets activity history show both\n // without re-deriving from the current multiplier)\n {\n type: 'event',\n name: 'TransferWithUIAmount',\n inputs: [\n { name: 'from', type: 'address', indexed: true },\n { name: 'to', type: 'address', indexed: true },\n { name: 'amount', type: 'uint256', indexed: false },\n { name: 'uiAmount', type: 'uint256', indexed: false },\n ],\n },\n] as const\n","import invariant from 'tiny-invariant'\nimport { Currency, NativeCurrency, Token } from '@pancakeswap/swap-sdk-core'\nimport { ChainId } from '@pancakeswap/chains'\n\nimport { WETH9 } from './constants'\n\n/**\n * Ether is the main usage of a 'native' currency, i.e. for Ethereum mainnet and all testnets\n */\nexport class Ether extends NativeCurrency {\n protected constructor(chainId: number) {\n super(chainId, 18, 'ETH', 'Ether')\n }\n\n public get wrapped(): Token {\n const weth9 = WETH9[this.chainId as ChainId.ETHEREUM | ChainId.GOERLI]\n\n invariant(!!weth9, 'WRAPPED')\n\n return weth9\n }\n\n private static _etherCache: { [chainId: number]: Ether } = {}\n\n public static onChain(chainId: number): Ether {\n if (!this._etherCache[chainId]) {\n this._etherCache[chainId] = new Ether(chainId)\n }\n\n return this._etherCache[chainId]\n }\n\n public equals(other: Currency): boolean {\n return other.isNative && other.chainId === this.chainId\n }\n}\n","// EVM-side ScaledUI utilities — ERC-165 detection and multicall metadata fetcher.\n// Pure functions, no React; the app layer wires react-query + caching on top.\n\nimport { SCALED_UI_DENOMINATOR } from '@pancakeswap/swap-sdk-core'\nimport type { Address, PublicClient } from 'viem'\nimport { erc165Abi } from './abis/ERC165'\nimport { scaledUIAmountAbi } from './abis/ScaledUIAmount'\n\n/**\n * ERC-8056 ERC-165 interface IDs.\n *\n * Pinned in the BNB Chain partner integration doc v1.0 (8 Apr 2026). The spec lists\n * \"others TBD\" for the optional conversion / new-multiplier sub-interfaces — do not\n * rely on those IDs being stable until the spec moves out of Draft status.\n */\nexport const SCALED_UI_AMOUNT_INTERFACE_ID = '0xa60bf13d' as const\nexport const SCALED_UI_AMOUNT_BALANCES_INTERFACE_ID = '0xd890fd71' as const\n\n/**\n * Live ScaledUI metadata for a token, fetched from chain.\n *\n * The single join point between tokenlist `extensions.scaledUIAmount.enabled` and the\n * on-chain multiplier state. Consumers should treat `{ enabled: false, multiplier: 1e18 }`\n * as the identity case and early-out from any scaling logic.\n */\nexport type ScaledUIAmountMetadata = {\n /** True if the contract implements ERC-8056's `uiMultiplier()`. */\n enabled: boolean\n /** Currently active multiplier (18-decimal fixed point). Defaults to `1e18` (identity). */\n multiplier: bigint\n /** Pending scheduled multiplier (only present when an upcoming change is announced). */\n newMultiplier?: bigint\n /** Unix timestamp (seconds) at which the pending change activates. */\n effectiveAt?: number\n}\n\n/**\n * The identity metadata — returned for non-scaled tokens and on any read failure.\n * Safe default: behaves like a normal ERC-20 in every downstream calculation.\n */\nexport const IDENTITY_SCALED_UI_AMOUNT_METADATA: ScaledUIAmountMetadata = {\n enabled: false,\n multiplier: SCALED_UI_DENOMINATOR,\n}\n\n/**\n * Probe a token contract for ERC-8056 support via ERC-165 `supportsInterface(0xa60bf13d)`.\n *\n * Returns `false` on any error (contract doesn't implement ERC-165, RPC failure, etc.) —\n * the caller is responsible for caching positive AND negative results with appropriate\n * TTL (see ticket memory: asymmetric 6-month/30-day cache in IndexedDB).\n *\n * Note: this is a perf-optimisation probe, not a correctness gate. Even if it returns\n * a stale \"yes\", `fetchScaledUIAmountMetadata` below will gracefully fall back to the\n * identity metadata if the actual contract calls revert.\n */\nexport async function probeIsScaledUIAmount(client: PublicClient, address: Address): Promise<boolean> {\n try {\n const result = await client.readContract({\n address,\n abi: erc165Abi,\n functionName: 'supportsInterface',\n args: [SCALED_UI_AMOUNT_INTERFACE_ID],\n })\n return Boolean(result)\n } catch {\n return false\n }\n}\n\n/**\n * Fetch live ScaledUI metadata for a token via a single multicall.\n *\n * Defensive read posture:\n * - All three reads use `allowFailure: true`.\n * - If `uiMultiplier()` fails, treats the token as non-scaled (identity metadata).\n * - If only the pending getters fail (common — they're optional in the spec), returns\n * the active multiplier without pending-change info.\n *\n * Use this in concert with the IndexedDB ERC-165 cache to skip the call entirely for\n * tokens we know aren't 8056. But even without the cache, this function is safe to\n * call against any contract — it won't throw.\n */\nexport async function fetchScaledUIAmountMetadata(\n client: PublicClient,\n address: Address,\n): Promise<ScaledUIAmountMetadata> {\n const results = await client.multicall({\n contracts: [\n { address, abi: scaledUIAmountAbi, functionName: 'uiMultiplier' },\n { address, abi: scaledUIAmountAbi, functionName: 'newUIMultiplier' },\n { address, abi: scaledUIAmountAbi, functionName: 'effectiveAt' },\n ],\n allowFailure: true,\n })\n\n const [activeRes, pendingMRes, pendingTsRes] = results\n\n if (activeRes.status !== 'success') {\n return IDENTITY_SCALED_UI_AMOUNT_METADATA\n }\n\n const multiplier = activeRes.result as bigint\n // Defensive: 0 is an invalid multiplier per ERC-8056 but a buggy / malicious\n // contract could return it. Treat as a read failure so downstream math doesn't\n // collapse displayed amounts to 0 or hit a bigint divide-by-zero.\n if (multiplier === 0n) {\n return IDENTITY_SCALED_UI_AMOUNT_METADATA\n }\n const newMultiplier = pendingMRes.status === 'success' ? (pendingMRes.result as bigint) : undefined\n const effectiveAtRaw = pendingTsRes.status === 'success' ? (pendingTsRes.result as bigint) : undefined\n const effectiveAt = effectiveAtRaw !== undefined ? Number(effectiveAtRaw) : undefined\n\n // No \"pending change\" if newMultiplier matches current OR effectiveAt is unset/zero.\n const hasPending =\n newMultiplier !== undefined && effectiveAt !== undefined && newMultiplier !== multiplier && effectiveAt > 0\n\n return hasPending ? { enabled: true, multiplier, newMultiplier, effectiveAt } : { enabled: true, multiplier }\n}\n\n// Re-export the math primitives so consumers can `import from '@pancakeswap/swap-sdk-evm'`\n// for one-stop access to detection + math.\nexport {\n SCALED_UI_DENOMINATOR,\n SCALED_UI_MULTIPLIER_DECIMALS,\n fromScaledUIAmount,\n isIdentityScaledUIMultiplier,\n toScaledUIAmount,\n} from '@pancakeswap/swap-sdk-core'\n"]}
package/dist/index.mjs CHANGED
@@ -1,5 +1,6 @@
1
- import { ChainId } from '@pancakeswap/chains';
2
- import { Percent, Token, NativeCurrency } from '@pancakeswap/swap-sdk-core';
1
+ import { ChainId, robinhoodChainConfig } from '@pancakeswap/chains';
2
+ import { Percent, Token, SCALED_UI_DENOMINATOR, NativeCurrency } from '@pancakeswap/swap-sdk-core';
3
+ export { SCALED_UI_DENOMINATOR, SCALED_UI_MULTIPLIER_DECIMALS, fromScaledUIAmount, isIdentityScaledUIMultiplier, toScaledUIAmount } from '@pancakeswap/swap-sdk-core';
3
4
  import { getAddress } from 'viem';
4
5
  import invariant2 from 'tiny-invariant';
5
6
  import warning from 'tiny-warning';
@@ -185,6 +186,14 @@ var WETH9 = {
185
186
  "WMON",
186
187
  "Wrapped Monad",
187
188
  "https://www.monad.xyz/"
189
+ ),
190
+ [ChainId.ROBINHOOD]: new ERC20Token(
191
+ ChainId.ROBINHOOD,
192
+ robinhoodChainConfig.tokens.wrappedNative,
193
+ 18,
194
+ "WETH",
195
+ "Wrapped Ether",
196
+ "https://weth.io"
188
197
  )
189
198
  };
190
199
  var WBNB = {
@@ -249,7 +258,8 @@ var WNATIVE = {
249
258
  [ChainId.ARBITRUM_SEPOLIA]: WETH9[ChainId.ARBITRUM_SEPOLIA],
250
259
  [ChainId.BASE_SEPOLIA]: WETH9[ChainId.BASE_SEPOLIA],
251
260
  [ChainId.MONAD_MAINNET]: WETH9[ChainId.MONAD_MAINNET],
252
- [ChainId.MONAD_TESTNET]: WETH9[ChainId.MONAD_TESTNET]
261
+ [ChainId.MONAD_TESTNET]: WETH9[ChainId.MONAD_TESTNET],
262
+ [ChainId.ROBINHOOD]: WETH9[ChainId.ROBINHOOD]
253
263
  };
254
264
  var ETHER = { name: "Ether", symbol: "ETH", decimals: 18 };
255
265
  var BNB = {
@@ -309,7 +319,8 @@ var NATIVE = {
309
319
  name: "Monad Testnet Ether",
310
320
  symbol: "MON",
311
321
  decimals: 18
312
- }
322
+ },
323
+ [ChainId.ROBINHOOD]: ETHER
313
324
  };
314
325
  var _Native = class extends NativeCurrency {
315
326
  constructor({
@@ -361,6 +372,90 @@ var erc20Abi = [
361
372
  type: "function"
362
373
  }
363
374
  ];
375
+
376
+ // src/abis/ERC165.ts
377
+ var erc165Abi = [
378
+ {
379
+ type: "function",
380
+ name: "supportsInterface",
381
+ inputs: [{ name: "interfaceId", type: "bytes4" }],
382
+ outputs: [{ type: "bool" }],
383
+ stateMutability: "view"
384
+ }
385
+ ];
386
+
387
+ // src/abis/ScaledUIAmount.ts
388
+ var scaledUIAmountAbi = [
389
+ // ─── Core required interface (ERC-165 ID: 0xa60bf13d) ───
390
+ {
391
+ type: "function",
392
+ name: "uiMultiplier",
393
+ inputs: [],
394
+ outputs: [{ type: "uint256" }],
395
+ stateMutability: "view"
396
+ },
397
+ {
398
+ type: "function",
399
+ name: "toUIAmount",
400
+ inputs: [{ name: "rawAmount", type: "uint256" }],
401
+ outputs: [{ type: "uint256" }],
402
+ stateMutability: "view"
403
+ },
404
+ {
405
+ type: "function",
406
+ name: "fromUIAmount",
407
+ inputs: [{ name: "uiAmount", type: "uint256" }],
408
+ outputs: [{ type: "uint256" }],
409
+ stateMutability: "view"
410
+ },
411
+ // ─── Balances extension (ERC-165 ID: 0xd890fd71) ───
412
+ {
413
+ type: "function",
414
+ name: "balanceOfUI",
415
+ inputs: [{ name: "account", type: "address" }],
416
+ outputs: [{ type: "uint256" }],
417
+ stateMutability: "view"
418
+ },
419
+ // ─── Pending-change getters (optional in spec; common in implementations) ───
420
+ {
421
+ type: "function",
422
+ name: "newUIMultiplier",
423
+ inputs: [],
424
+ outputs: [{ type: "uint256" }],
425
+ stateMutability: "view"
426
+ },
427
+ {
428
+ type: "function",
429
+ name: "effectiveAt",
430
+ inputs: [],
431
+ outputs: [{ type: "uint256" }],
432
+ stateMutability: "view"
433
+ },
434
+ // ─── Events ───
435
+ // Both timestamps required per BNB doc §4.1
436
+ {
437
+ type: "event",
438
+ name: "UIMultiplierUpdated",
439
+ inputs: [
440
+ { name: "oldMultiplier", type: "uint256", indexed: false },
441
+ { name: "newMultiplier", type: "uint256", indexed: false },
442
+ { name: "setAtTimestamp", type: "uint256", indexed: false },
443
+ { name: "effectiveAtTimestamp", type: "uint256", indexed: false }
444
+ ]
445
+ },
446
+ // Optional event — emits raw + UI in one record (lets activity history show both
447
+ // without re-deriving from the current multiplier)
448
+ {
449
+ type: "event",
450
+ name: "TransferWithUIAmount",
451
+ inputs: [
452
+ { name: "from", type: "address", indexed: true },
453
+ { name: "to", type: "address", indexed: true },
454
+ { name: "amount", type: "uint256", indexed: false },
455
+ { name: "uiAmount", type: "uint256", indexed: false }
456
+ ]
457
+ }
458
+ ];
364
459
  var _Ether = class extends NativeCurrency {
365
460
  constructor(chainId) {
366
461
  super(chainId, 18, "ETH", "Ether");
@@ -382,7 +477,49 @@ var _Ether = class extends NativeCurrency {
382
477
  };
383
478
  var Ether = _Ether;
384
479
  Ether._etherCache = {};
480
+ var SCALED_UI_AMOUNT_INTERFACE_ID = "0xa60bf13d";
481
+ var SCALED_UI_AMOUNT_BALANCES_INTERFACE_ID = "0xd890fd71";
482
+ var IDENTITY_SCALED_UI_AMOUNT_METADATA = {
483
+ enabled: false,
484
+ multiplier: SCALED_UI_DENOMINATOR
485
+ };
486
+ async function probeIsScaledUIAmount(client, address) {
487
+ try {
488
+ const result = await client.readContract({
489
+ address,
490
+ abi: erc165Abi,
491
+ functionName: "supportsInterface",
492
+ args: [SCALED_UI_AMOUNT_INTERFACE_ID]
493
+ });
494
+ return Boolean(result);
495
+ } catch {
496
+ return false;
497
+ }
498
+ }
499
+ async function fetchScaledUIAmountMetadata(client, address) {
500
+ const results = await client.multicall({
501
+ contracts: [
502
+ { address, abi: scaledUIAmountAbi, functionName: "uiMultiplier" },
503
+ { address, abi: scaledUIAmountAbi, functionName: "newUIMultiplier" },
504
+ { address, abi: scaledUIAmountAbi, functionName: "effectiveAt" }
505
+ ],
506
+ allowFailure: true
507
+ });
508
+ const [activeRes, pendingMRes, pendingTsRes] = results;
509
+ if (activeRes.status !== "success") {
510
+ return IDENTITY_SCALED_UI_AMOUNT_METADATA;
511
+ }
512
+ const multiplier = activeRes.result;
513
+ if (multiplier === 0n) {
514
+ return IDENTITY_SCALED_UI_AMOUNT_METADATA;
515
+ }
516
+ const newMultiplier = pendingMRes.status === "success" ? pendingMRes.result : void 0;
517
+ const effectiveAtRaw = pendingTsRes.status === "success" ? pendingTsRes.result : void 0;
518
+ const effectiveAt = effectiveAtRaw !== void 0 ? Number(effectiveAtRaw) : void 0;
519
+ const hasPending = newMultiplier !== void 0 && effectiveAt !== void 0 && newMultiplier !== multiplier && effectiveAt > 0;
520
+ return hasPending ? { enabled: true, multiplier, newMultiplier, effectiveAt } : { enabled: true, multiplier };
521
+ }
385
522
 
386
- export { ERC20Token, Ether, NATIVE, Native, ONE_HUNDRED_PERCENT, WBNB, WETH9, WNATIVE, ZERO_PERCENT, erc20Abi, validateAndParseAddress };
523
+ export { ERC20Token, Ether, IDENTITY_SCALED_UI_AMOUNT_METADATA, NATIVE, Native, ONE_HUNDRED_PERCENT, SCALED_UI_AMOUNT_BALANCES_INTERFACE_ID, SCALED_UI_AMOUNT_INTERFACE_ID, WBNB, WETH9, WNATIVE, ZERO_PERCENT, erc165Abi, erc20Abi, fetchScaledUIAmountMetadata, probeIsScaledUIAmount, scaledUIAmountAbi, validateAndParseAddress };
387
524
  //# sourceMappingURL=out.js.map
388
525
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/constants.ts","../src/entities/erc20Token.ts","../src/utils.ts","../src/entities/native.ts","../src/abis/ERC20.ts","../src/ether.ts"],"names":["invariant","NativeCurrency"],"mappings":"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","sourcesContent":["import { ChainId } from '@pancakeswap/chains'\nimport { Percent } from '@pancakeswap/swap-sdk-core'\n\nimport { ERC20Token } from './entities/erc20Token'\n\nexport const ZERO_PERCENT = new Percent('0')\nexport const ONE_HUNDRED_PERCENT = new Percent('1')\n\nexport const WETH9 = {\n [ChainId.ETHEREUM]: new ERC20Token(\n ChainId.ETHEREUM,\n '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.GOERLI]: new ERC20Token(\n ChainId.GOERLI,\n '0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.BSC]: new ERC20Token(\n ChainId.BSC,\n '0x2170Ed0880ac9A755fd29B2688956BD959F933F8',\n 18,\n 'ETH',\n 'Binance-Peg Ethereum Token',\n 'https://ethereum.org',\n ),\n [ChainId.BSC_TESTNET]: new ERC20Token(\n ChainId.BSC,\n '0xE7bCB9e341D546b66a46298f4893f5650a56e99E',\n 18,\n 'ETH',\n 'ETH',\n 'https://ethereum.org',\n ),\n [ChainId.ARBITRUM_ONE]: new ERC20Token(\n ChainId.ARBITRUM_ONE,\n '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.ARBITRUM_GOERLI]: new ERC20Token(\n ChainId.ARBITRUM_GOERLI,\n '0xEe01c0CD76354C383B8c7B4e65EA88D00B06f36f',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.ZKSYNC]: new ERC20Token(\n ChainId.ZKSYNC,\n '0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.ZKSYNC_TESTNET]: new ERC20Token(\n ChainId.ZKSYNC_TESTNET,\n '0x02968DB286f24cB18bB5b24903eC8eBFAcf591C0',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.LINEA]: new ERC20Token(\n ChainId.LINEA,\n '0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.LINEA_TESTNET]: new ERC20Token(\n ChainId.LINEA_TESTNET,\n '0x2C1b868d6596a18e32E61B901E4060C872647b6C',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.OPBNB_TESTNET]: new ERC20Token(\n ChainId.OPBNB_TESTNET,\n '0x584f7b986d9942B0859a1E6921efA5342A673d04',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.OPBNB]: new ERC20Token(\n ChainId.OPBNB,\n '0xE7798f023fC62146e8Aa1b36Da45fb70855a77Ea',\n 18,\n 'ETH',\n 'Binance-Peg Ethereum Token',\n 'https://ethereum.org',\n ),\n [ChainId.BASE]: new ERC20Token(\n ChainId.BASE,\n '0x4200000000000000000000000000000000000006',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.BASE_TESTNET]: new ERC20Token(\n ChainId.BASE_TESTNET,\n '0x4200000000000000000000000000000000000006',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.SCROLL_SEPOLIA]: new ERC20Token(\n ChainId.SCROLL_SEPOLIA,\n '0x5300000000000000000000000000000000000004',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.SEPOLIA]: new ERC20Token(\n ChainId.SEPOLIA,\n '0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.ARBITRUM_SEPOLIA]: new ERC20Token(\n ChainId.ARBITRUM_SEPOLIA,\n '0x1bdc540dEB9Ed1fA29964DeEcCc524A8f5e2198e',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.BASE_SEPOLIA]: new ERC20Token(\n ChainId.BASE_SEPOLIA,\n '0x4200000000000000000000000000000000000006',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.MONAD_MAINNET]: new ERC20Token(\n ChainId.MONAD_MAINNET,\n '0x3bd359C1119dA7Da1D913D1C4D2B7c461115433A',\n 18,\n 'WMON',\n 'Wrapped Monad',\n 'https://www.monad.xyz/',\n ),\n [ChainId.MONAD_TESTNET]: new ERC20Token(\n ChainId.MONAD_TESTNET,\n '0x760AfE86e5de5fa0Ee542fc7B7B713e1c5425701',\n 18,\n 'WMON',\n 'Wrapped Monad',\n 'https://www.monad.xyz/',\n ),\n}\n\nexport const WBNB = {\n [ChainId.ETHEREUM]: new ERC20Token(\n ChainId.ETHEREUM,\n '0x418D75f65a02b3D53B2418FB8E1fe493759c7605',\n 18,\n 'WBNB',\n 'Wrapped BNB',\n 'https://www.binance.org',\n ),\n [ChainId.BSC]: new ERC20Token(\n ChainId.BSC,\n '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c',\n 18,\n 'WBNB',\n 'Wrapped BNB',\n 'https://www.binance.org',\n ),\n [ChainId.BSC_TESTNET]: new ERC20Token(\n ChainId.BSC_TESTNET,\n '0xae13d989daC2f0dEbFf460aC112a837C89BAa7cd',\n 18,\n 'WBNB',\n 'Wrapped BNB',\n 'https://www.binance.org',\n ),\n [ChainId.OPBNB_TESTNET]: new ERC20Token(\n ChainId.OPBNB_TESTNET,\n '0x4200000000000000000000000000000000000006',\n 18,\n 'WBNB',\n 'Wrapped BNB',\n 'https://www.binance.org',\n ),\n [ChainId.OPBNB]: new ERC20Token(\n ChainId.OPBNB,\n '0x4200000000000000000000000000000000000006',\n 18,\n 'WBNB',\n 'Wrapped BNB',\n 'https://www.binance.org',\n ),\n}\n\nexport const WNATIVE = {\n [ChainId.ETHEREUM]: WETH9[ChainId.ETHEREUM],\n [ChainId.GOERLI]: WETH9[ChainId.GOERLI],\n [ChainId.BSC]: WBNB[ChainId.BSC],\n [ChainId.BSC_TESTNET]: WBNB[ChainId.BSC_TESTNET],\n [ChainId.ARBITRUM_ONE]: WETH9[ChainId.ARBITRUM_ONE],\n [ChainId.ARBITRUM_GOERLI]: WETH9[ChainId.ARBITRUM_GOERLI],\n [ChainId.ZKSYNC]: WETH9[ChainId.ZKSYNC],\n [ChainId.ZKSYNC_TESTNET]: WETH9[ChainId.ZKSYNC_TESTNET],\n [ChainId.LINEA]: WETH9[ChainId.LINEA],\n [ChainId.LINEA_TESTNET]: WETH9[ChainId.LINEA_TESTNET],\n [ChainId.OPBNB_TESTNET]: WBNB[ChainId.OPBNB_TESTNET],\n [ChainId.OPBNB]: WBNB[ChainId.OPBNB],\n [ChainId.BASE]: WETH9[ChainId.BASE],\n [ChainId.BASE_TESTNET]: WETH9[ChainId.BASE_TESTNET],\n [ChainId.SCROLL_SEPOLIA]: WETH9[ChainId.SCROLL_SEPOLIA],\n [ChainId.SEPOLIA]: WETH9[ChainId.SEPOLIA],\n [ChainId.ARBITRUM_SEPOLIA]: WETH9[ChainId.ARBITRUM_SEPOLIA],\n [ChainId.BASE_SEPOLIA]: WETH9[ChainId.BASE_SEPOLIA],\n [ChainId.MONAD_MAINNET]: WETH9[ChainId.MONAD_MAINNET],\n [ChainId.MONAD_TESTNET]: WETH9[ChainId.MONAD_TESTNET],\n} satisfies Partial<Record<ChainId, ERC20Token>>\n\nconst ETHER = { name: 'Ether', symbol: 'ETH', decimals: 18 } as const\n\nconst BNB = {\n name: 'Binance Chain Native Token',\n symbol: 'BNB',\n decimals: 18,\n} as const\n\nexport const NATIVE = {\n [ChainId.ETHEREUM]: ETHER,\n [ChainId.GOERLI]: { name: 'Goerli Ether', symbol: 'GOR', decimals: 18 },\n [ChainId.BSC]: BNB,\n [ChainId.BSC_TESTNET]: {\n name: 'Binance Chain Native Token',\n symbol: 'tBNB',\n decimals: 18,\n },\n [ChainId.ARBITRUM_ONE]: ETHER,\n [ChainId.ARBITRUM_GOERLI]: {\n name: 'Arbitrum Goerli Ether',\n symbol: 'AGOR',\n decimals: 18,\n },\n [ChainId.ZKSYNC]: ETHER,\n [ChainId.ZKSYNC_TESTNET]: ETHER,\n [ChainId.LINEA]: ETHER,\n [ChainId.LINEA_TESTNET]: ETHER,\n [ChainId.OPBNB]: BNB,\n [ChainId.OPBNB_TESTNET]: {\n name: 'Binance Chain Native Token',\n symbol: 'tBNB',\n decimals: 18,\n },\n [ChainId.BASE]: ETHER,\n [ChainId.BASE_TESTNET]: ETHER,\n [ChainId.SCROLL_SEPOLIA]: ETHER,\n [ChainId.SEPOLIA]: {\n name: 'Sepolia Ether',\n symbol: 'SEP',\n decimals: 18,\n },\n [ChainId.ARBITRUM_SEPOLIA]: {\n name: 'Arbitrum Sepolia Ether',\n symbol: 'ETH',\n decimals: 18,\n },\n [ChainId.BASE_SEPOLIA]: {\n name: 'Sepolia Ether',\n symbol: 'ETH',\n decimals: 18,\n },\n [ChainId.MONAD_MAINNET]: {\n name: 'Monad',\n symbol: 'MON',\n decimals: 18,\n },\n [ChainId.MONAD_TESTNET]: {\n name: 'Monad Testnet Ether',\n symbol: 'MON',\n decimals: 18,\n },\n} satisfies Partial<\n Record<\n ChainId,\n {\n name: string\n symbol: string\n decimals: number\n }\n >\n>\n","import { Token } from '@pancakeswap/swap-sdk-core'\nimport { Address } from 'viem'\n\nimport { validateAndParseAddress } from '../utils'\n\n// /**\n// * Represents an ERC20 token with a unique address and some metadata.\n// */\nexport class ERC20Token extends Token {\n public constructor(\n chainId: number,\n address: Address,\n decimals: number,\n symbol: string,\n name?: string,\n projectLink?: string,\n ) {\n super(chainId, validateAndParseAddress(address), decimals, symbol, name, projectLink)\n }\n}\n","import { type Address, getAddress } from 'viem'\nimport invariant from 'tiny-invariant'\nimport warning from 'tiny-warning'\n\n// warns if addresses are not checksummed\n// eslint-disable-next-line consistent-return\nexport function validateAndParseAddress(address: string): Address {\n try {\n const checksummedAddress = getAddress(address)\n warning(address === checksummedAddress, `${address} is not checksummed.`)\n return checksummedAddress\n } catch (error) {\n invariant(false, `${address} is not a valid address.`)\n }\n}\n","import invariant from 'tiny-invariant'\nimport { Currency, Token, NativeCurrency } from '@pancakeswap/swap-sdk-core'\n\nimport { WNATIVE, NATIVE } from '../constants'\n\n/**\n *\n * Native is the main usage of a 'native' currency, i.e. for BSC mainnet and all testnets\n */\nexport class Native extends NativeCurrency {\n protected constructor({\n chainId,\n decimals,\n name,\n symbol,\n }: {\n chainId: number\n decimals: number\n symbol: string\n name: string\n }) {\n super(chainId, decimals, symbol, name)\n }\n\n public get wrapped(): Token {\n const wnative = WNATIVE[this.chainId as keyof typeof WNATIVE]\n invariant(!!wnative, 'WRAPPED')\n return wnative\n }\n\n private static cache: { [chainId: number]: Native } = {}\n\n public static onChain(chainId: number): Native {\n if (chainId in this.cache) {\n return this.cache[chainId]\n }\n invariant(!!NATIVE[chainId as keyof typeof NATIVE], 'NATIVE_CURRENCY')\n const { decimals, name, symbol } = NATIVE[chainId as keyof typeof WNATIVE]\n // eslint-disable-next-line no-return-assign\n return (this.cache[chainId] = new Native({ chainId, decimals, symbol, name }))\n }\n\n public equals(other: Currency): boolean {\n return other.isNative && other.chainId === this.chainId\n }\n}\n","export const erc20Abi = [\n {\n constant: true,\n inputs: [],\n name: 'decimals',\n outputs: [{ name: '', type: 'uint8' }],\n payable: false,\n stateMutability: 'view',\n type: 'function',\n },\n {\n constant: true,\n inputs: [{ name: '', type: 'address' }],\n name: 'balanceOf',\n outputs: [{ name: '', type: 'uint256' }],\n payable: false,\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n","import invariant from 'tiny-invariant'\nimport { Currency, NativeCurrency, Token } from '@pancakeswap/swap-sdk-core'\nimport { ChainId } from '@pancakeswap/chains'\n\nimport { WETH9 } from './constants'\n\n/**\n * Ether is the main usage of a 'native' currency, i.e. for Ethereum mainnet and all testnets\n */\nexport class Ether extends NativeCurrency {\n protected constructor(chainId: number) {\n super(chainId, 18, 'ETH', 'Ether')\n }\n\n public get wrapped(): Token {\n const weth9 = WETH9[this.chainId as ChainId.ETHEREUM | ChainId.GOERLI]\n\n invariant(!!weth9, 'WRAPPED')\n\n return weth9\n }\n\n private static _etherCache: { [chainId: number]: Ether } = {}\n\n public static onChain(chainId: number): Ether {\n if (!this._etherCache[chainId]) {\n this._etherCache[chainId] = new Ether(chainId)\n }\n\n return this._etherCache[chainId]\n }\n\n public equals(other: Currency): boolean {\n return other.isNative && other.chainId === this.chainId\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/constants.ts","../src/entities/erc20Token.ts","../src/utils.ts","../src/entities/native.ts","../src/abis/ERC20.ts","../src/abis/ERC165.ts","../src/abis/ScaledUIAmount.ts","../src/ether.ts","../src/scaledUIAmount.ts"],"names":["invariant","NativeCurrency","SCALED_UI_DENOMINATOR"],"mappings":"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","sourcesContent":["import { ChainId, robinhoodChainConfig } from '@pancakeswap/chains'\nimport { Percent } from '@pancakeswap/swap-sdk-core'\n\nimport { ERC20Token } from './entities/erc20Token'\n\nexport const ZERO_PERCENT = new Percent('0')\nexport const ONE_HUNDRED_PERCENT = new Percent('1')\n\nexport const WETH9 = {\n [ChainId.ETHEREUM]: new ERC20Token(\n ChainId.ETHEREUM,\n '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.GOERLI]: new ERC20Token(\n ChainId.GOERLI,\n '0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.BSC]: new ERC20Token(\n ChainId.BSC,\n '0x2170Ed0880ac9A755fd29B2688956BD959F933F8',\n 18,\n 'ETH',\n 'Binance-Peg Ethereum Token',\n 'https://ethereum.org',\n ),\n [ChainId.BSC_TESTNET]: new ERC20Token(\n ChainId.BSC,\n '0xE7bCB9e341D546b66a46298f4893f5650a56e99E',\n 18,\n 'ETH',\n 'ETH',\n 'https://ethereum.org',\n ),\n [ChainId.ARBITRUM_ONE]: new ERC20Token(\n ChainId.ARBITRUM_ONE,\n '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.ARBITRUM_GOERLI]: new ERC20Token(\n ChainId.ARBITRUM_GOERLI,\n '0xEe01c0CD76354C383B8c7B4e65EA88D00B06f36f',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.ZKSYNC]: new ERC20Token(\n ChainId.ZKSYNC,\n '0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.ZKSYNC_TESTNET]: new ERC20Token(\n ChainId.ZKSYNC_TESTNET,\n '0x02968DB286f24cB18bB5b24903eC8eBFAcf591C0',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.LINEA]: new ERC20Token(\n ChainId.LINEA,\n '0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.LINEA_TESTNET]: new ERC20Token(\n ChainId.LINEA_TESTNET,\n '0x2C1b868d6596a18e32E61B901E4060C872647b6C',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.OPBNB_TESTNET]: new ERC20Token(\n ChainId.OPBNB_TESTNET,\n '0x584f7b986d9942B0859a1E6921efA5342A673d04',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.OPBNB]: new ERC20Token(\n ChainId.OPBNB,\n '0xE7798f023fC62146e8Aa1b36Da45fb70855a77Ea',\n 18,\n 'ETH',\n 'Binance-Peg Ethereum Token',\n 'https://ethereum.org',\n ),\n [ChainId.BASE]: new ERC20Token(\n ChainId.BASE,\n '0x4200000000000000000000000000000000000006',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.BASE_TESTNET]: new ERC20Token(\n ChainId.BASE_TESTNET,\n '0x4200000000000000000000000000000000000006',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.SCROLL_SEPOLIA]: new ERC20Token(\n ChainId.SCROLL_SEPOLIA,\n '0x5300000000000000000000000000000000000004',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.SEPOLIA]: new ERC20Token(\n ChainId.SEPOLIA,\n '0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.ARBITRUM_SEPOLIA]: new ERC20Token(\n ChainId.ARBITRUM_SEPOLIA,\n '0x1bdc540dEB9Ed1fA29964DeEcCc524A8f5e2198e',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.BASE_SEPOLIA]: new ERC20Token(\n ChainId.BASE_SEPOLIA,\n '0x4200000000000000000000000000000000000006',\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n [ChainId.MONAD_MAINNET]: new ERC20Token(\n ChainId.MONAD_MAINNET,\n '0x3bd359C1119dA7Da1D913D1C4D2B7c461115433A',\n 18,\n 'WMON',\n 'Wrapped Monad',\n 'https://www.monad.xyz/',\n ),\n [ChainId.MONAD_TESTNET]: new ERC20Token(\n ChainId.MONAD_TESTNET,\n '0x760AfE86e5de5fa0Ee542fc7B7B713e1c5425701',\n 18,\n 'WMON',\n 'Wrapped Monad',\n 'https://www.monad.xyz/',\n ),\n [ChainId.ROBINHOOD]: new ERC20Token(\n ChainId.ROBINHOOD,\n robinhoodChainConfig.tokens.wrappedNative,\n 18,\n 'WETH',\n 'Wrapped Ether',\n 'https://weth.io',\n ),\n}\n\nexport const WBNB = {\n [ChainId.ETHEREUM]: new ERC20Token(\n ChainId.ETHEREUM,\n '0x418D75f65a02b3D53B2418FB8E1fe493759c7605',\n 18,\n 'WBNB',\n 'Wrapped BNB',\n 'https://www.binance.org',\n ),\n [ChainId.BSC]: new ERC20Token(\n ChainId.BSC,\n '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c',\n 18,\n 'WBNB',\n 'Wrapped BNB',\n 'https://www.binance.org',\n ),\n [ChainId.BSC_TESTNET]: new ERC20Token(\n ChainId.BSC_TESTNET,\n '0xae13d989daC2f0dEbFf460aC112a837C89BAa7cd',\n 18,\n 'WBNB',\n 'Wrapped BNB',\n 'https://www.binance.org',\n ),\n [ChainId.OPBNB_TESTNET]: new ERC20Token(\n ChainId.OPBNB_TESTNET,\n '0x4200000000000000000000000000000000000006',\n 18,\n 'WBNB',\n 'Wrapped BNB',\n 'https://www.binance.org',\n ),\n [ChainId.OPBNB]: new ERC20Token(\n ChainId.OPBNB,\n '0x4200000000000000000000000000000000000006',\n 18,\n 'WBNB',\n 'Wrapped BNB',\n 'https://www.binance.org',\n ),\n}\n\nexport const WNATIVE = {\n [ChainId.ETHEREUM]: WETH9[ChainId.ETHEREUM],\n [ChainId.GOERLI]: WETH9[ChainId.GOERLI],\n [ChainId.BSC]: WBNB[ChainId.BSC],\n [ChainId.BSC_TESTNET]: WBNB[ChainId.BSC_TESTNET],\n [ChainId.ARBITRUM_ONE]: WETH9[ChainId.ARBITRUM_ONE],\n [ChainId.ARBITRUM_GOERLI]: WETH9[ChainId.ARBITRUM_GOERLI],\n [ChainId.ZKSYNC]: WETH9[ChainId.ZKSYNC],\n [ChainId.ZKSYNC_TESTNET]: WETH9[ChainId.ZKSYNC_TESTNET],\n [ChainId.LINEA]: WETH9[ChainId.LINEA],\n [ChainId.LINEA_TESTNET]: WETH9[ChainId.LINEA_TESTNET],\n [ChainId.OPBNB_TESTNET]: WBNB[ChainId.OPBNB_TESTNET],\n [ChainId.OPBNB]: WBNB[ChainId.OPBNB],\n [ChainId.BASE]: WETH9[ChainId.BASE],\n [ChainId.BASE_TESTNET]: WETH9[ChainId.BASE_TESTNET],\n [ChainId.SCROLL_SEPOLIA]: WETH9[ChainId.SCROLL_SEPOLIA],\n [ChainId.SEPOLIA]: WETH9[ChainId.SEPOLIA],\n [ChainId.ARBITRUM_SEPOLIA]: WETH9[ChainId.ARBITRUM_SEPOLIA],\n [ChainId.BASE_SEPOLIA]: WETH9[ChainId.BASE_SEPOLIA],\n [ChainId.MONAD_MAINNET]: WETH9[ChainId.MONAD_MAINNET],\n [ChainId.MONAD_TESTNET]: WETH9[ChainId.MONAD_TESTNET],\n [ChainId.ROBINHOOD]: WETH9[ChainId.ROBINHOOD],\n} satisfies Partial<Record<ChainId, ERC20Token>>\n\nconst ETHER = { name: 'Ether', symbol: 'ETH', decimals: 18 } as const\n\nconst BNB = {\n name: 'Binance Chain Native Token',\n symbol: 'BNB',\n decimals: 18,\n} as const\n\nexport const NATIVE = {\n [ChainId.ETHEREUM]: ETHER,\n [ChainId.GOERLI]: { name: 'Goerli Ether', symbol: 'GOR', decimals: 18 },\n [ChainId.BSC]: BNB,\n [ChainId.BSC_TESTNET]: {\n name: 'Binance Chain Native Token',\n symbol: 'tBNB',\n decimals: 18,\n },\n [ChainId.ARBITRUM_ONE]: ETHER,\n [ChainId.ARBITRUM_GOERLI]: {\n name: 'Arbitrum Goerli Ether',\n symbol: 'AGOR',\n decimals: 18,\n },\n [ChainId.ZKSYNC]: ETHER,\n [ChainId.ZKSYNC_TESTNET]: ETHER,\n [ChainId.LINEA]: ETHER,\n [ChainId.LINEA_TESTNET]: ETHER,\n [ChainId.OPBNB]: BNB,\n [ChainId.OPBNB_TESTNET]: {\n name: 'Binance Chain Native Token',\n symbol: 'tBNB',\n decimals: 18,\n },\n [ChainId.BASE]: ETHER,\n [ChainId.BASE_TESTNET]: ETHER,\n [ChainId.SCROLL_SEPOLIA]: ETHER,\n [ChainId.SEPOLIA]: {\n name: 'Sepolia Ether',\n symbol: 'SEP',\n decimals: 18,\n },\n [ChainId.ARBITRUM_SEPOLIA]: {\n name: 'Arbitrum Sepolia Ether',\n symbol: 'ETH',\n decimals: 18,\n },\n [ChainId.BASE_SEPOLIA]: {\n name: 'Sepolia Ether',\n symbol: 'ETH',\n decimals: 18,\n },\n [ChainId.MONAD_MAINNET]: {\n name: 'Monad',\n symbol: 'MON',\n decimals: 18,\n },\n [ChainId.MONAD_TESTNET]: {\n name: 'Monad Testnet Ether',\n symbol: 'MON',\n decimals: 18,\n },\n [ChainId.ROBINHOOD]: ETHER,\n} satisfies Partial<\n Record<\n ChainId,\n {\n name: string\n symbol: string\n decimals: number\n }\n >\n>\n","import { Token } from '@pancakeswap/swap-sdk-core'\nimport { Address } from 'viem'\n\nimport { validateAndParseAddress } from '../utils'\n\n// /**\n// * Represents an ERC20 token with a unique address and some metadata.\n// */\nexport class ERC20Token extends Token {\n public constructor(\n chainId: number,\n address: Address,\n decimals: number,\n symbol: string,\n name?: string,\n projectLink?: string,\n ) {\n super(chainId, validateAndParseAddress(address), decimals, symbol, name, projectLink)\n }\n}\n","import { type Address, getAddress } from 'viem'\nimport invariant from 'tiny-invariant'\nimport warning from 'tiny-warning'\n\n// warns if addresses are not checksummed\n// eslint-disable-next-line consistent-return\nexport function validateAndParseAddress(address: string): Address {\n try {\n const checksummedAddress = getAddress(address)\n warning(address === checksummedAddress, `${address} is not checksummed.`)\n return checksummedAddress\n } catch (error) {\n invariant(false, `${address} is not a valid address.`)\n }\n}\n","import invariant from 'tiny-invariant'\nimport { Currency, Token, NativeCurrency } from '@pancakeswap/swap-sdk-core'\n\nimport { WNATIVE, NATIVE } from '../constants'\n\n/**\n *\n * Native is the main usage of a 'native' currency, i.e. for BSC mainnet and all testnets\n */\nexport class Native extends NativeCurrency {\n protected constructor({\n chainId,\n decimals,\n name,\n symbol,\n }: {\n chainId: number\n decimals: number\n symbol: string\n name: string\n }) {\n super(chainId, decimals, symbol, name)\n }\n\n public get wrapped(): Token {\n const wnative = WNATIVE[this.chainId as keyof typeof WNATIVE]\n invariant(!!wnative, 'WRAPPED')\n return wnative\n }\n\n private static cache: { [chainId: number]: Native } = {}\n\n public static onChain(chainId: number): Native {\n if (chainId in this.cache) {\n return this.cache[chainId]\n }\n invariant(!!NATIVE[chainId as keyof typeof NATIVE], 'NATIVE_CURRENCY')\n const { decimals, name, symbol } = NATIVE[chainId as keyof typeof WNATIVE]\n // eslint-disable-next-line no-return-assign\n return (this.cache[chainId] = new Native({ chainId, decimals, symbol, name }))\n }\n\n public equals(other: Currency): boolean {\n return other.isNative && other.chainId === this.chainId\n }\n}\n","export const erc20Abi = [\n {\n constant: true,\n inputs: [],\n name: 'decimals',\n outputs: [{ name: '', type: 'uint8' }],\n payable: false,\n stateMutability: 'view',\n type: 'function',\n },\n {\n constant: true,\n inputs: [{ name: '', type: 'address' }],\n name: 'balanceOf',\n outputs: [{ name: '', type: 'uint256' }],\n payable: false,\n stateMutability: 'view',\n type: 'function',\n },\n] as const\n","/**\n * Minimal ERC-165 ABI fragment — just the `supportsInterface(bytes4)` view.\n * Used to probe whether a contract advertises support for a given interface ID.\n */\nexport const erc165Abi = [\n {\n type: 'function',\n name: 'supportsInterface',\n inputs: [{ name: 'interfaceId', type: 'bytes4' }],\n outputs: [{ type: 'bool' }],\n stateMutability: 'view',\n },\n] as const\n","/**\n * ERC-8056 (Scaled UI Amount) ABI fragments.\n *\n * Based on the `IScaledUIAmount` interface from the BNB Chain partner integration doc\n * v1.0 (8 Apr 2026). The spec itself is in Draft as of Oct 2025; these fragments are\n * pinned against the concrete implementation Binance is deploying for Stock Tokens.\n *\n * Spec: https://eips.ethereum.org/EIPS/eip-8056\n *\n * Notes:\n * - `newUIMultiplier` and `effectiveAt` are optional getters in the spec. Real\n * implementations may or may not expose them — reads must use `allowFailure: true`.\n * - `totalSupplyUI()` does NOT exist on Binance Stock Tokens per the partner doc FAQ;\n * compute as `toUIAmount(totalSupply())` instead.\n * - All on-chain helpers (`toUIAmount`, `fromUIAmount`, `balanceOfUI`) match the\n * contract's rounding exactly; prefer them over JS math when available.\n */\nexport const scaledUIAmountAbi = [\n // ─── Core required interface (ERC-165 ID: 0xa60bf13d) ───\n {\n type: 'function',\n name: 'uiMultiplier',\n inputs: [],\n outputs: [{ type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'toUIAmount',\n inputs: [{ name: 'rawAmount', type: 'uint256' }],\n outputs: [{ type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'fromUIAmount',\n inputs: [{ name: 'uiAmount', type: 'uint256' }],\n outputs: [{ type: 'uint256' }],\n stateMutability: 'view',\n },\n\n // ─── Balances extension (ERC-165 ID: 0xd890fd71) ───\n {\n type: 'function',\n name: 'balanceOfUI',\n inputs: [{ name: 'account', type: 'address' }],\n outputs: [{ type: 'uint256' }],\n stateMutability: 'view',\n },\n\n // ─── Pending-change getters (optional in spec; common in implementations) ───\n {\n type: 'function',\n name: 'newUIMultiplier',\n inputs: [],\n outputs: [{ type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'effectiveAt',\n inputs: [],\n outputs: [{ type: 'uint256' }],\n stateMutability: 'view',\n },\n\n // ─── Events ───\n // Both timestamps required per BNB doc §4.1\n {\n type: 'event',\n name: 'UIMultiplierUpdated',\n inputs: [\n { name: 'oldMultiplier', type: 'uint256', indexed: false },\n { name: 'newMultiplier', type: 'uint256', indexed: false },\n { name: 'setAtTimestamp', type: 'uint256', indexed: false },\n { name: 'effectiveAtTimestamp', type: 'uint256', indexed: false },\n ],\n },\n // Optional event — emits raw + UI in one record (lets activity history show both\n // without re-deriving from the current multiplier)\n {\n type: 'event',\n name: 'TransferWithUIAmount',\n inputs: [\n { name: 'from', type: 'address', indexed: true },\n { name: 'to', type: 'address', indexed: true },\n { name: 'amount', type: 'uint256', indexed: false },\n { name: 'uiAmount', type: 'uint256', indexed: false },\n ],\n },\n] as const\n","import invariant from 'tiny-invariant'\nimport { Currency, NativeCurrency, Token } from '@pancakeswap/swap-sdk-core'\nimport { ChainId } from '@pancakeswap/chains'\n\nimport { WETH9 } from './constants'\n\n/**\n * Ether is the main usage of a 'native' currency, i.e. for Ethereum mainnet and all testnets\n */\nexport class Ether extends NativeCurrency {\n protected constructor(chainId: number) {\n super(chainId, 18, 'ETH', 'Ether')\n }\n\n public get wrapped(): Token {\n const weth9 = WETH9[this.chainId as ChainId.ETHEREUM | ChainId.GOERLI]\n\n invariant(!!weth9, 'WRAPPED')\n\n return weth9\n }\n\n private static _etherCache: { [chainId: number]: Ether } = {}\n\n public static onChain(chainId: number): Ether {\n if (!this._etherCache[chainId]) {\n this._etherCache[chainId] = new Ether(chainId)\n }\n\n return this._etherCache[chainId]\n }\n\n public equals(other: Currency): boolean {\n return other.isNative && other.chainId === this.chainId\n }\n}\n","// EVM-side ScaledUI utilities — ERC-165 detection and multicall metadata fetcher.\n// Pure functions, no React; the app layer wires react-query + caching on top.\n\nimport { SCALED_UI_DENOMINATOR } from '@pancakeswap/swap-sdk-core'\nimport type { Address, PublicClient } from 'viem'\nimport { erc165Abi } from './abis/ERC165'\nimport { scaledUIAmountAbi } from './abis/ScaledUIAmount'\n\n/**\n * ERC-8056 ERC-165 interface IDs.\n *\n * Pinned in the BNB Chain partner integration doc v1.0 (8 Apr 2026). The spec lists\n * \"others TBD\" for the optional conversion / new-multiplier sub-interfaces — do not\n * rely on those IDs being stable until the spec moves out of Draft status.\n */\nexport const SCALED_UI_AMOUNT_INTERFACE_ID = '0xa60bf13d' as const\nexport const SCALED_UI_AMOUNT_BALANCES_INTERFACE_ID = '0xd890fd71' as const\n\n/**\n * Live ScaledUI metadata for a token, fetched from chain.\n *\n * The single join point between tokenlist `extensions.scaledUIAmount.enabled` and the\n * on-chain multiplier state. Consumers should treat `{ enabled: false, multiplier: 1e18 }`\n * as the identity case and early-out from any scaling logic.\n */\nexport type ScaledUIAmountMetadata = {\n /** True if the contract implements ERC-8056's `uiMultiplier()`. */\n enabled: boolean\n /** Currently active multiplier (18-decimal fixed point). Defaults to `1e18` (identity). */\n multiplier: bigint\n /** Pending scheduled multiplier (only present when an upcoming change is announced). */\n newMultiplier?: bigint\n /** Unix timestamp (seconds) at which the pending change activates. */\n effectiveAt?: number\n}\n\n/**\n * The identity metadata — returned for non-scaled tokens and on any read failure.\n * Safe default: behaves like a normal ERC-20 in every downstream calculation.\n */\nexport const IDENTITY_SCALED_UI_AMOUNT_METADATA: ScaledUIAmountMetadata = {\n enabled: false,\n multiplier: SCALED_UI_DENOMINATOR,\n}\n\n/**\n * Probe a token contract for ERC-8056 support via ERC-165 `supportsInterface(0xa60bf13d)`.\n *\n * Returns `false` on any error (contract doesn't implement ERC-165, RPC failure, etc.) —\n * the caller is responsible for caching positive AND negative results with appropriate\n * TTL (see ticket memory: asymmetric 6-month/30-day cache in IndexedDB).\n *\n * Note: this is a perf-optimisation probe, not a correctness gate. Even if it returns\n * a stale \"yes\", `fetchScaledUIAmountMetadata` below will gracefully fall back to the\n * identity metadata if the actual contract calls revert.\n */\nexport async function probeIsScaledUIAmount(client: PublicClient, address: Address): Promise<boolean> {\n try {\n const result = await client.readContract({\n address,\n abi: erc165Abi,\n functionName: 'supportsInterface',\n args: [SCALED_UI_AMOUNT_INTERFACE_ID],\n })\n return Boolean(result)\n } catch {\n return false\n }\n}\n\n/**\n * Fetch live ScaledUI metadata for a token via a single multicall.\n *\n * Defensive read posture:\n * - All three reads use `allowFailure: true`.\n * - If `uiMultiplier()` fails, treats the token as non-scaled (identity metadata).\n * - If only the pending getters fail (common — they're optional in the spec), returns\n * the active multiplier without pending-change info.\n *\n * Use this in concert with the IndexedDB ERC-165 cache to skip the call entirely for\n * tokens we know aren't 8056. But even without the cache, this function is safe to\n * call against any contract — it won't throw.\n */\nexport async function fetchScaledUIAmountMetadata(\n client: PublicClient,\n address: Address,\n): Promise<ScaledUIAmountMetadata> {\n const results = await client.multicall({\n contracts: [\n { address, abi: scaledUIAmountAbi, functionName: 'uiMultiplier' },\n { address, abi: scaledUIAmountAbi, functionName: 'newUIMultiplier' },\n { address, abi: scaledUIAmountAbi, functionName: 'effectiveAt' },\n ],\n allowFailure: true,\n })\n\n const [activeRes, pendingMRes, pendingTsRes] = results\n\n if (activeRes.status !== 'success') {\n return IDENTITY_SCALED_UI_AMOUNT_METADATA\n }\n\n const multiplier = activeRes.result as bigint\n // Defensive: 0 is an invalid multiplier per ERC-8056 but a buggy / malicious\n // contract could return it. Treat as a read failure so downstream math doesn't\n // collapse displayed amounts to 0 or hit a bigint divide-by-zero.\n if (multiplier === 0n) {\n return IDENTITY_SCALED_UI_AMOUNT_METADATA\n }\n const newMultiplier = pendingMRes.status === 'success' ? (pendingMRes.result as bigint) : undefined\n const effectiveAtRaw = pendingTsRes.status === 'success' ? (pendingTsRes.result as bigint) : undefined\n const effectiveAt = effectiveAtRaw !== undefined ? Number(effectiveAtRaw) : undefined\n\n // No \"pending change\" if newMultiplier matches current OR effectiveAt is unset/zero.\n const hasPending =\n newMultiplier !== undefined && effectiveAt !== undefined && newMultiplier !== multiplier && effectiveAt > 0\n\n return hasPending ? { enabled: true, multiplier, newMultiplier, effectiveAt } : { enabled: true, multiplier }\n}\n\n// Re-export the math primitives so consumers can `import from '@pancakeswap/swap-sdk-evm'`\n// for one-stop access to detection + math.\nexport {\n SCALED_UI_DENOMINATOR,\n SCALED_UI_MULTIPLIER_DECIMALS,\n fromScaledUIAmount,\n isIdentityScaledUIMultiplier,\n toScaledUIAmount,\n} from '@pancakeswap/swap-sdk-core'\n"]}
@@ -0,0 +1,60 @@
1
+ import type { Address, PublicClient } from 'viem';
2
+ /**
3
+ * ERC-8056 ERC-165 interface IDs.
4
+ *
5
+ * Pinned in the BNB Chain partner integration doc v1.0 (8 Apr 2026). The spec lists
6
+ * "others TBD" for the optional conversion / new-multiplier sub-interfaces — do not
7
+ * rely on those IDs being stable until the spec moves out of Draft status.
8
+ */
9
+ export declare const SCALED_UI_AMOUNT_INTERFACE_ID: "0xa60bf13d";
10
+ export declare const SCALED_UI_AMOUNT_BALANCES_INTERFACE_ID: "0xd890fd71";
11
+ /**
12
+ * Live ScaledUI metadata for a token, fetched from chain.
13
+ *
14
+ * The single join point between tokenlist `extensions.scaledUIAmount.enabled` and the
15
+ * on-chain multiplier state. Consumers should treat `{ enabled: false, multiplier: 1e18 }`
16
+ * as the identity case and early-out from any scaling logic.
17
+ */
18
+ export type ScaledUIAmountMetadata = {
19
+ /** True if the contract implements ERC-8056's `uiMultiplier()`. */
20
+ enabled: boolean;
21
+ /** Currently active multiplier (18-decimal fixed point). Defaults to `1e18` (identity). */
22
+ multiplier: bigint;
23
+ /** Pending scheduled multiplier (only present when an upcoming change is announced). */
24
+ newMultiplier?: bigint;
25
+ /** Unix timestamp (seconds) at which the pending change activates. */
26
+ effectiveAt?: number;
27
+ };
28
+ /**
29
+ * The identity metadata — returned for non-scaled tokens and on any read failure.
30
+ * Safe default: behaves like a normal ERC-20 in every downstream calculation.
31
+ */
32
+ export declare const IDENTITY_SCALED_UI_AMOUNT_METADATA: ScaledUIAmountMetadata;
33
+ /**
34
+ * Probe a token contract for ERC-8056 support via ERC-165 `supportsInterface(0xa60bf13d)`.
35
+ *
36
+ * Returns `false` on any error (contract doesn't implement ERC-165, RPC failure, etc.) —
37
+ * the caller is responsible for caching positive AND negative results with appropriate
38
+ * TTL (see ticket memory: asymmetric 6-month/30-day cache in IndexedDB).
39
+ *
40
+ * Note: this is a perf-optimisation probe, not a correctness gate. Even if it returns
41
+ * a stale "yes", `fetchScaledUIAmountMetadata` below will gracefully fall back to the
42
+ * identity metadata if the actual contract calls revert.
43
+ */
44
+ export declare function probeIsScaledUIAmount(client: PublicClient, address: Address): Promise<boolean>;
45
+ /**
46
+ * Fetch live ScaledUI metadata for a token via a single multicall.
47
+ *
48
+ * Defensive read posture:
49
+ * - All three reads use `allowFailure: true`.
50
+ * - If `uiMultiplier()` fails, treats the token as non-scaled (identity metadata).
51
+ * - If only the pending getters fail (common — they're optional in the spec), returns
52
+ * the active multiplier without pending-change info.
53
+ *
54
+ * Use this in concert with the IndexedDB ERC-165 cache to skip the call entirely for
55
+ * tokens we know aren't 8056. But even without the cache, this function is safe to
56
+ * call against any contract — it won't throw.
57
+ */
58
+ export declare function fetchScaledUIAmountMetadata(client: PublicClient, address: Address): Promise<ScaledUIAmountMetadata>;
59
+ export { SCALED_UI_DENOMINATOR, SCALED_UI_MULTIPLIER_DECIMALS, fromScaledUIAmount, isIdentityScaledUIMultiplier, toScaledUIAmount, } from '@pancakeswap/swap-sdk-core';
60
+ //# sourceMappingURL=scaledUIAmount.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaledUIAmount.d.ts","sourceRoot":"","sources":["../src/scaledUIAmount.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAIjD;;;;;;GAMG;AACH,eAAO,MAAM,6BAA6B,EAAG,YAAqB,CAAA;AAClE,eAAO,MAAM,sCAAsC,EAAG,YAAqB,CAAA;AAE3E;;;;;;GAMG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,mEAAmE;IACnE,OAAO,EAAE,OAAO,CAAA;IAChB,2FAA2F;IAC3F,UAAU,EAAE,MAAM,CAAA;IAClB,wFAAwF;IACxF,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,kCAAkC,EAAE,sBAGhD,CAAA;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAYpG;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,sBAAsB,CAAC,CAgCjC;AAID,OAAO,EACL,qBAAqB,EACrB,6BAA6B,EAC7B,kBAAkB,EAClB,4BAA4B,EAC5B,gBAAgB,GACjB,MAAM,4BAA4B,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pancakeswap/swap-sdk-evm",
3
- "version": "1.2.0",
3
+ "version": "1.2.1",
4
4
  "description": "An SDK for Pancakeswap EVM based chains",
5
5
  "repository": {
6
6
  "type": "git",
@@ -18,7 +18,7 @@
18
18
  "tiny-invariant": "^1.3.0",
19
19
  "tiny-warning": "^1.0.3",
20
20
  "viem": "2.37.13",
21
- "@pancakeswap/chains": "0.8.0",
21
+ "@pancakeswap/chains": "0.9.0",
22
22
  "@pancakeswap/swap-sdk-core": "1.6.0"
23
23
  },
24
24
  "devDependencies": {