@pancakeswap/tokens 0.9.1 → 0.10.0

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.
@@ -1,5 +1,5 @@
1
1
 
2
- > @pancakeswap/tokens@0.9.1 build /home/runner/work/pancake-frontend/pancake-frontend/packages/tokens
2
+ > @pancakeswap/tokens@0.10.0 build /home/runner/work/pancake-frontend/pancake-frontend/packages/tokens
3
3
  > tsup
4
4
 
5
5
  CLI Building entry: {"index":"./src/index.ts"}
@@ -10,7 +10,7 @@ CLI Target: es2020
10
10
  CLI Cleaning output folder
11
11
  ESM Build start
12
12
  CJS Build start
13
- CJS dist/index.js 136.40 KB
14
- CJS ⚡️ Build success in 1889ms
15
- ESM dist/index.mjs 126.24 KB
16
- ESM ⚡️ Build success in 1889ms
13
+ CJS dist/index.js 137.39 KB
14
+ CJS ⚡️ Build success in 1993ms
15
+ ESM dist/index.mjs 127.15 KB
16
+ ESM ⚡️ Build success in 1997ms
package/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # @pancakeswap/tokens
2
2
 
3
+ ## 0.10.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 9974742: Add Arc (chain 5042) for swap. Arc settles gas in USDC and has no wrapped native, so it is the first chain to declare `wrappedNativeCurrency: null` and a `gasTokenOverride` — the 6-decimal ERC-20 view of the same balance the RPC reports with 18 decimals.
8
+
9
+ The router's gas model now denominates gas in `wrappedNative ?? gasTokenOverride` and rescales raw gas between the two decimal scales, instead of refusing to build a model at all without a wrapped native. Max-spend reserves gas on whichever token actually pays for it, and surfaces that would otherwise list the native currency alongside its ERC-20 twin now show only one of them.
10
+
11
+ ### Patch Changes
12
+
13
+ - 9974742: Model a chain's wrapped native as an explicit capability. `EvmChainConfig` gains `wrappedNativeCurrency: TokenMetadata | null`, populated for all 21 EVM chains, where `null` states that the chain has no wrap/unwrap operation at all rather than that nobody filled the field in. It also gains an optional `gasTokenOverride` for chains whose product-facing gas token is an ERC-20 with different decimals from the RPC-native currency.
14
+
15
+ `WNATIVE` is now typed `Partial<Record<ChainId, ERC20Token>>` and a `getWrappedNative()` accessor is exported, so every lookup has to handle the missing case instead of throwing on the first property access. A new test keeps the metadata and the `WNATIVE` map from drifting apart.
16
+
17
+ - Updated dependencies [9974742]
18
+ - Updated dependencies [9974742]
19
+ - Updated dependencies [9974742]
20
+ - @pancakeswap/chains@0.10.0
21
+ - @pancakeswap/sdk@5.9.3
22
+ - @pancakeswap/token-lists@0.1.1
23
+
3
24
  ## 0.9.1
4
25
 
5
26
  ### Patch Changes
@@ -751,5 +751,10 @@ export declare const allTokens: {
751
751
  weth: import("@pancakeswap/sdk").ERC20Token;
752
752
  usdg: import("@pancakeswap/sdk").ERC20Token;
753
753
  };
754
+ 5042: {
755
+ usdc: import("@pancakeswap/sdk").ERC20Token;
756
+ weth: import("@pancakeswap/sdk").ERC20Token;
757
+ eurc: import("@pancakeswap/sdk").ERC20Token;
758
+ };
754
759
  };
755
760
  //# sourceMappingURL=allTokens.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"allTokens.d.ts","sourceRoot":"","sources":["../src/allTokens.ts"],"names":[],"mappings":"AAwBA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsBrB,CAAA"}
1
+ {"version":3,"file":"allTokens.d.ts","sourceRoot":"","sources":["../src/allTokens.ts"],"names":[],"mappings":"AAyBA,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuBrB,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { ERC20Token } from '@pancakeswap/sdk';
2
+ export declare const arcTokens: {
3
+ /**
4
+ * The ERC-20 interface over Arc's native USDC balance. Six decimals, while the
5
+ * same balance read through `eth_getBalance` has eighteen — all trading, display
6
+ * and approval flows use this one.
7
+ */
8
+ usdc: ERC20Token;
9
+ /** Bridged ETH, not a wrapped native — Arc has none. */
10
+ weth: ERC20Token;
11
+ eurc: ERC20Token;
12
+ };
13
+ //# sourceMappingURL=arc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arc.d.ts","sourceRoot":"","sources":["../../src/constants/arc.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,eAAO,MAAM,SAAS;IACpB;;;;OAIG;;IASH,wDAAwD;;;CAiBzD,CAAA"}
@@ -138,5 +138,6 @@ export declare const STABLE_COIN: {
138
138
  143: ERC20Token;
139
139
  10143: ERC20Token;
140
140
  4663: ERC20Token;
141
+ 5042: ERC20Token;
141
142
  };
142
143
  //# sourceMappingURL=common.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/constants/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAI7C,eAAO,MAAM,YAAY,YAOxB,CAAA;AAED,eAAO,MAAM,YAAY,YAOxB,CAAA;AAED,eAAO,MAAM,QAAQ,YAOpB,CAAA;AAED,eAAO,MAAM,YAAY,YAOxB,CAAA;AAED,eAAO,MAAM,QAAQ,YAOpB,CAAA;AAED,eAAO,MAAM,WAAW,YAMvB,CAAA;AAED,eAAO,MAAM,QAAQ,YAOpB,CAAA;AAED,eAAO,MAAM,QAAQ,YAOpB,CAAA;AAED,eAAO,MAAM,QAAQ,YAOpB,CAAA;AAED,eAAO,MAAM,QAAQ,YAOpB,CAAA;AAED,eAAO,MAAM,YAAY,YAOxB,CAAA;AAED,eAAO,MAAM,QAAQ,YAOpB,CAAA;AAED,eAAO,MAAM,WAAW,YAOvB,CAAA;AAED,eAAO,MAAM,IAAI;;;;;;;CAqBhB,CAAA;AAED,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;CA4GhB,CAAA;AAED,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;CA8HhB,CAAA;AAED,eAAO,MAAM,IAAI;;CAEhB,CAAA;AAED,eAAO,MAAM,IAAI;;;;;;;;;;;;CAoEhB,CAAA;AAED,eAAO,MAAM,IAAI;;;;;;;;;CAShB,CAAA;AAED,eAAO,MAAM,GAAG;;;;;;;;;CASf,CAAA;AAED,eAAO,MAAM,IAAI;;;;;;;;;CAShB,CAAA;AAED,eAAO,MAAM,GAAG;;;;;;;CAiDf,CAAA;AAED,eAAO,MAAM,QAAQ,YAOpB,CAAA;AAED,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;CAsBwB,CAAA"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/constants/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAK7C,eAAO,MAAM,YAAY,YAOxB,CAAA;AAED,eAAO,MAAM,YAAY,YAOxB,CAAA;AAED,eAAO,MAAM,QAAQ,YAOpB,CAAA;AAED,eAAO,MAAM,YAAY,YAOxB,CAAA;AAED,eAAO,MAAM,QAAQ,YAOpB,CAAA;AAED,eAAO,MAAM,WAAW,YAMvB,CAAA;AAED,eAAO,MAAM,QAAQ,YAOpB,CAAA;AAED,eAAO,MAAM,QAAQ,YAOpB,CAAA;AAED,eAAO,MAAM,QAAQ,YAOpB,CAAA;AAED,eAAO,MAAM,QAAQ,YAOpB,CAAA;AAED,eAAO,MAAM,YAAY,YAOxB,CAAA;AAED,eAAO,MAAM,QAAQ,YAOpB,CAAA;AAED,eAAO,MAAM,WAAW,YAOvB,CAAA;AAED,eAAO,MAAM,IAAI;;;;;;;CAqBhB,CAAA;AAED,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;CA4GhB,CAAA;AAED,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;CA8HhB,CAAA;AAED,eAAO,MAAM,IAAI;;CAEhB,CAAA;AAED,eAAO,MAAM,IAAI;;;;;;;;;;;;CAoEhB,CAAA;AAED,eAAO,MAAM,IAAI;;;;;;;;;CAShB,CAAA;AAED,eAAO,MAAM,GAAG;;;;;;;;;CASf,CAAA;AAED,eAAO,MAAM,IAAI;;;;;;;;;CAShB,CAAA;AAED,eAAO,MAAM,GAAG;;;;;;;CAiDf,CAAA;AAED,eAAO,MAAM,QAAQ,YAOpB,CAAA;AAED,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;CAuBwB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAU,KAAK,EAAW,MAAM,kBAAkB,CAAA;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAE7C,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAE1D,cAAc,oBAAoB,CAAA;AAClC,cAAc,6BAA6B,CAAA;AAU3C;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,eAAe,CAAC,OAAO,CAAqB,CAAA;AAErE,wBAAgB,eAAe,CAAC,kBAAkB,EAAE,GAAG,OAMtD;AAED,wBAAgB,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,CAGlE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAU,KAAK,EAAW,MAAM,kBAAkB,CAAA;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAE7C,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAE1D,cAAc,oBAAoB,CAAA;AAClC,cAAc,6BAA6B,CAAA;AAU3C;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,eAAe,CAAC,OAAO,CAAqB,CAAA;AAErE,wBAAgB,eAAe,CAAC,kBAAkB,EAAE,GAAG,OAMtD;AAED,wBAAgB,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,SAAS,CAOlE"}
package/dist/index.d.ts CHANGED
@@ -15,6 +15,7 @@ export * from './constants/monad';
15
15
  export * from './constants/monadTestnet';
16
16
  export * from './constants/opBNB';
17
17
  export * from './constants/opBnbTestnet';
18
+ export * from './constants/arc';
18
19
  export * from './constants/robinhood';
19
20
  export * from './constants/scrollSepolia';
20
21
  export * from './constants/sepolia';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,kBAAkB,CAAA;AAChC,cAAc,yBAAyB,CAAA;AACvC,cAAc,yBAAyB,CAAA;AACvC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,wBAAwB,CAAA;AACtC,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,0BAA0B,CAAA;AACxC,cAAc,mBAAmB,CAAA;AACjC,cAAc,0BAA0B,CAAA;AACxC,cAAc,mBAAmB,CAAA;AACjC,cAAc,0BAA0B,CAAA;AACxC,cAAc,uBAAuB,CAAA;AACrC,cAAc,2BAA2B,CAAA;AACzC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,2BAA2B,CAAA;AACzC,cAAc,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,uBAAuB,CAAA;AACrC,cAAc,wBAAwB,CAAA;AACtC,cAAc,kBAAkB,CAAA;AAChC,cAAc,yBAAyB,CAAA;AACvC,cAAc,yBAAyB,CAAA;AACvC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,wBAAwB,CAAA;AACtC,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,0BAA0B,CAAA;AACxC,cAAc,mBAAmB,CAAA;AACjC,cAAc,0BAA0B,CAAA;AACxC,cAAc,mBAAmB,CAAA;AACjC,cAAc,0BAA0B,CAAA;AACxC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,uBAAuB,CAAA;AACrC,cAAc,2BAA2B,CAAA;AACzC,cAAc,qBAAqB,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA;AAClC,cAAc,2BAA2B,CAAA;AACzC,cAAc,WAAW,CAAA"}
package/dist/index.js CHANGED
@@ -4,6 +4,38 @@ var chains = require('@pancakeswap/chains');
4
4
  var sdk = require('@pancakeswap/sdk');
5
5
 
6
6
  // src/constants/arb.ts
7
+ var arcTokens = {
8
+ /**
9
+ * The ERC-20 interface over Arc's native USDC balance. Six decimals, while the
10
+ * same balance read through `eth_getBalance` has eighteen — all trading, display
11
+ * and approval flows use this one.
12
+ */
13
+ usdc: new sdk.ERC20Token(
14
+ chains.ChainId.ARC,
15
+ "0x3600000000000000000000000000000000000000",
16
+ 6,
17
+ "USDC",
18
+ "USD Coin",
19
+ "https://www.circle.com/usdc"
20
+ ),
21
+ /** Bridged ETH, not a wrapped native — Arc has none. */
22
+ weth: new sdk.ERC20Token(
23
+ chains.ChainId.ARC,
24
+ "0x128cC466B61f542da60c70e3aA11c10e19B84EDB",
25
+ 18,
26
+ "WETH",
27
+ "Wrapped Ether",
28
+ "https://weth.io"
29
+ ),
30
+ eurc: new sdk.ERC20Token(
31
+ chains.ChainId.ARC,
32
+ "0xbEf5f6d51CB62b58e6A8f77868681825C6fe21c1",
33
+ 6,
34
+ "EURC",
35
+ "Euro Coin",
36
+ "https://www.circle.com/eurc"
37
+ )
38
+ };
7
39
  var robinhoodTokens = {
8
40
  weth: new sdk.ERC20Token(chains.ChainId.ROBINHOOD, "0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73", 18, "WETH", "Wrapped Ether"),
9
41
  usdg: new sdk.ERC20Token(
@@ -589,7 +621,8 @@ var STABLE_COIN = {
589
621
  [chains.ChainId.BASE_SEPOLIA]: USDC[chains.ChainId.BASE_SEPOLIA],
590
622
  [chains.ChainId.MONAD_MAINNET]: USDC[chains.ChainId.MONAD_MAINNET],
591
623
  [chains.ChainId.MONAD_TESTNET]: USDC[chains.ChainId.MONAD_TESTNET],
592
- [chains.ChainId.ROBINHOOD]: robinhoodTokens.usdg
624
+ [chains.ChainId.ROBINHOOD]: robinhoodTokens.usdg,
625
+ [chains.ChainId.ARC]: arcTokens.usdc
593
626
  };
594
627
 
595
628
  // src/constants/arb.ts
@@ -5656,7 +5689,8 @@ var allTokens = {
5656
5689
  [chains.ChainId.BASE_SEPOLIA]: baseSepoliaTokens,
5657
5690
  [chains.ChainId.MONAD_MAINNET]: monadTokens,
5658
5691
  [chains.ChainId.MONAD_TESTNET]: monadTestnetTokens,
5659
- [chains.ChainId.ROBINHOOD]: robinhoodTokens
5692
+ [chains.ChainId.ROBINHOOD]: robinhoodTokens,
5693
+ [chains.ChainId.ARC]: arcTokens
5660
5694
  };
5661
5695
 
5662
5696
  // src/helpers/getTokensByChain.ts
@@ -5696,7 +5730,8 @@ var searchTopTokens = {
5696
5730
  [chains.ChainId.BASE_SEPOLIA]: [],
5697
5731
  [chains.ChainId.MONAD_MAINNET]: [],
5698
5732
  [chains.ChainId.MONAD_TESTNET]: [],
5699
- [chains.ChainId.ROBINHOOD]: []
5733
+ [chains.ChainId.ROBINHOOD]: [],
5734
+ [chains.ChainId.ARC]: []
5700
5735
  };
5701
5736
 
5702
5737
  // src/helpers/getSearchTopTokensByChain.ts
@@ -5724,7 +5759,10 @@ function serializeTokens(unserializedTokens) {
5724
5759
  return serializedTokens;
5725
5760
  }
5726
5761
  function unwrappedToken(token) {
5727
- if (token && token.equals(sdk.WNATIVE[token.chainId]))
5762
+ if (!token)
5763
+ return token;
5764
+ const wnative = sdk.WNATIVE[token.chainId];
5765
+ if (wnative && token.equals(wnative))
5728
5766
  return sdk.Native.onChain(token.chainId);
5729
5767
  return token;
5730
5768
  }
@@ -5756,6 +5794,7 @@ exports.WSOL = WSOL;
5756
5794
  exports.arbSepoliaTokens = arbSepoliaTokens;
5757
5795
  exports.arbitrumGoerliTokens = arbitrumGoerliTokens;
5758
5796
  exports.arbitrumTokens = arbitrumTokens;
5797
+ exports.arcTokens = arcTokens;
5759
5798
  exports.baseSepoliaTokens = baseSepoliaTokens;
5760
5799
  exports.baseTestnetTokens = baseTestnetTokens;
5761
5800
  exports.baseTokens = baseTokens;
package/dist/index.mjs CHANGED
@@ -2,6 +2,38 @@ import { ChainId, NonEVMChainId } from '@pancakeswap/chains';
2
2
  import { ERC20Token, SPLToken, TOKEN_WSOL, WETH9, WBNB, ChainId as ChainId$1, WNATIVE, Native } from '@pancakeswap/sdk';
3
3
 
4
4
  // src/constants/arb.ts
5
+ var arcTokens = {
6
+ /**
7
+ * The ERC-20 interface over Arc's native USDC balance. Six decimals, while the
8
+ * same balance read through `eth_getBalance` has eighteen — all trading, display
9
+ * and approval flows use this one.
10
+ */
11
+ usdc: new ERC20Token(
12
+ ChainId.ARC,
13
+ "0x3600000000000000000000000000000000000000",
14
+ 6,
15
+ "USDC",
16
+ "USD Coin",
17
+ "https://www.circle.com/usdc"
18
+ ),
19
+ /** Bridged ETH, not a wrapped native — Arc has none. */
20
+ weth: new ERC20Token(
21
+ ChainId.ARC,
22
+ "0x128cC466B61f542da60c70e3aA11c10e19B84EDB",
23
+ 18,
24
+ "WETH",
25
+ "Wrapped Ether",
26
+ "https://weth.io"
27
+ ),
28
+ eurc: new ERC20Token(
29
+ ChainId.ARC,
30
+ "0xbEf5f6d51CB62b58e6A8f77868681825C6fe21c1",
31
+ 6,
32
+ "EURC",
33
+ "Euro Coin",
34
+ "https://www.circle.com/eurc"
35
+ )
36
+ };
5
37
  var robinhoodTokens = {
6
38
  weth: new ERC20Token(ChainId.ROBINHOOD, "0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73", 18, "WETH", "Wrapped Ether"),
7
39
  usdg: new ERC20Token(
@@ -587,7 +619,8 @@ var STABLE_COIN = {
587
619
  [ChainId.BASE_SEPOLIA]: USDC[ChainId.BASE_SEPOLIA],
588
620
  [ChainId.MONAD_MAINNET]: USDC[ChainId.MONAD_MAINNET],
589
621
  [ChainId.MONAD_TESTNET]: USDC[ChainId.MONAD_TESTNET],
590
- [ChainId.ROBINHOOD]: robinhoodTokens.usdg
622
+ [ChainId.ROBINHOOD]: robinhoodTokens.usdg,
623
+ [ChainId.ARC]: arcTokens.usdc
591
624
  };
592
625
 
593
626
  // src/constants/arb.ts
@@ -5654,7 +5687,8 @@ var allTokens = {
5654
5687
  [ChainId.BASE_SEPOLIA]: baseSepoliaTokens,
5655
5688
  [ChainId.MONAD_MAINNET]: monadTokens,
5656
5689
  [ChainId.MONAD_TESTNET]: monadTestnetTokens,
5657
- [ChainId.ROBINHOOD]: robinhoodTokens
5690
+ [ChainId.ROBINHOOD]: robinhoodTokens,
5691
+ [ChainId.ARC]: arcTokens
5658
5692
  };
5659
5693
 
5660
5694
  // src/helpers/getTokensByChain.ts
@@ -5694,7 +5728,8 @@ var searchTopTokens = {
5694
5728
  [ChainId.BASE_SEPOLIA]: [],
5695
5729
  [ChainId.MONAD_MAINNET]: [],
5696
5730
  [ChainId.MONAD_TESTNET]: [],
5697
- [ChainId.ROBINHOOD]: []
5731
+ [ChainId.ROBINHOOD]: [],
5732
+ [ChainId.ARC]: []
5698
5733
  };
5699
5734
 
5700
5735
  // src/helpers/getSearchTopTokensByChain.ts
@@ -5722,9 +5757,12 @@ function serializeTokens(unserializedTokens) {
5722
5757
  return serializedTokens;
5723
5758
  }
5724
5759
  function unwrappedToken(token) {
5725
- if (token && token.equals(WNATIVE[token.chainId]))
5760
+ if (!token)
5761
+ return token;
5762
+ const wnative = WNATIVE[token.chainId];
5763
+ if (wnative && token.equals(wnative))
5726
5764
  return Native.onChain(token.chainId);
5727
5765
  return token;
5728
5766
  }
5729
5767
 
5730
- export { BUSD, BUSD_BSC, BUSD_ETH, BUSD_GOERLI, BUSD_TESTNET, CAKE, CAKE_MAINNET, CAKE_TESTNET, DAI, EMPTY_LIST, RAY, STABLE_COIN, USD1, USD1_BSC, USDC, USDC_BSC, USDC_ETH, USDC_GOERLI, USDC_TESTNET, USDT, USDT_BSC, USDT_ETH, WBTC_ETH, WSOL, arbSepoliaTokens, arbitrumGoerliTokens, arbitrumTokens, baseSepoliaTokens, baseTestnetTokens, baseTokens, bscTestnetTokens, bscTokens, ethereumTokens, getSearchTopTokensByChain, getTokenByAddress, getTokenBySymbol, getTokensByChain, goerliTestnetTokens, lineaTestnetTokens, lineaTokens, mSOL, monadTestnetTokens, monadTokens, opBnbTestnetTokens, opBnbTokens, robinhoodTokens, scrollSepoliaTokens, sepoliaTokens, serializeTokens, solanaTokens, unwrappedToken, zkSyncTestnetTokens, zksyncTokens };
5768
+ export { BUSD, BUSD_BSC, BUSD_ETH, BUSD_GOERLI, BUSD_TESTNET, CAKE, CAKE_MAINNET, CAKE_TESTNET, DAI, EMPTY_LIST, RAY, STABLE_COIN, USD1, USD1_BSC, USDC, USDC_BSC, USDC_ETH, USDC_GOERLI, USDC_TESTNET, USDT, USDT_BSC, USDT_ETH, WBTC_ETH, WSOL, arbSepoliaTokens, arbitrumGoerliTokens, arbitrumTokens, arcTokens, baseSepoliaTokens, baseTestnetTokens, baseTokens, bscTestnetTokens, bscTokens, ethereumTokens, getSearchTopTokensByChain, getTokenByAddress, getTokenBySymbol, getTokensByChain, goerliTestnetTokens, lineaTestnetTokens, lineaTokens, mSOL, monadTestnetTokens, monadTokens, opBnbTestnetTokens, opBnbTokens, robinhoodTokens, scrollSepoliaTokens, sepoliaTokens, serializeTokens, solanaTokens, unwrappedToken, zkSyncTestnetTokens, zksyncTokens };
@@ -1 +1 @@
1
- {"version":3,"file":"searchTopTokens.d.ts","sourceRoot":"","sources":["../src/searchTopTokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAG/C,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,CAsB3D,CAAA"}
1
+ {"version":3,"file":"searchTopTokens.d.ts","sourceRoot":"","sources":["../src/searchTopTokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAG/C,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,CAuB3D,CAAA"}
package/package.json CHANGED
@@ -1,21 +1,21 @@
1
1
  {
2
2
  "name": "@pancakeswap/tokens",
3
3
  "license": "MIT",
4
- "version": "0.9.1",
4
+ "version": "0.10.0",
5
5
  "description": "Tokens for pancakeswap",
6
6
  "main": "./dist/index.js",
7
7
  "module": "./dist/index.mjs",
8
8
  "sideEffects": false,
9
9
  "types": "./dist/index.d.ts",
10
10
  "dependencies": {
11
- "@pancakeswap/chains": "0.9.0",
12
- "@pancakeswap/sdk": "5.9.2",
11
+ "@pancakeswap/chains": "0.10.0",
12
+ "@pancakeswap/sdk": "5.9.3",
13
13
  "@pancakeswap/token-lists": "0.1.1"
14
14
  },
15
15
  "devDependencies": {
16
16
  "tsup": "^6.7.0",
17
17
  "@pancakeswap/solana-core-sdk": "0.2.1",
18
- "@pancakeswap/utils": "8.0.3"
18
+ "@pancakeswap/utils": "8.0.4"
19
19
  },
20
20
  "exports": {
21
21
  ".": {
package/src/allTokens.ts CHANGED
@@ -16,6 +16,7 @@ import { monadTokens } from './constants/monad'
16
16
  import { monadTestnetTokens } from './constants/monadTestnet'
17
17
  import { opBnbTokens } from './constants/opBNB'
18
18
  import { opBnbTestnetTokens } from './constants/opBnbTestnet'
19
+ import { arcTokens } from './constants/arc'
19
20
  import { robinhoodTokens } from './constants/robinhood'
20
21
  import { scrollSepoliaTokens } from './constants/scrollSepolia'
21
22
  import { sepoliaTokens } from './constants/sepolia'
@@ -44,4 +45,5 @@ export const allTokens = {
44
45
  [ChainId.MONAD_MAINNET]: monadTokens,
45
46
  [ChainId.MONAD_TESTNET]: monadTestnetTokens,
46
47
  [ChainId.ROBINHOOD]: robinhoodTokens,
48
+ [ChainId.ARC]: arcTokens,
47
49
  }
@@ -0,0 +1,35 @@
1
+ import { ChainId } from '@pancakeswap/chains'
2
+ import { ERC20Token } from '@pancakeswap/sdk'
3
+
4
+ export const arcTokens = {
5
+ /**
6
+ * The ERC-20 interface over Arc's native USDC balance. Six decimals, while the
7
+ * same balance read through `eth_getBalance` has eighteen — all trading, display
8
+ * and approval flows use this one.
9
+ */
10
+ usdc: new ERC20Token(
11
+ ChainId.ARC,
12
+ '0x3600000000000000000000000000000000000000',
13
+ 6,
14
+ 'USDC',
15
+ 'USD Coin',
16
+ 'https://www.circle.com/usdc',
17
+ ),
18
+ /** Bridged ETH, not a wrapped native — Arc has none. */
19
+ weth: new ERC20Token(
20
+ ChainId.ARC,
21
+ '0x128cC466B61f542da60c70e3aA11c10e19B84EDB',
22
+ 18,
23
+ 'WETH',
24
+ 'Wrapped Ether',
25
+ 'https://weth.io',
26
+ ),
27
+ eurc: new ERC20Token(
28
+ ChainId.ARC,
29
+ '0xbEf5f6d51CB62b58e6A8f77868681825C6fe21c1',
30
+ 6,
31
+ 'EURC',
32
+ 'Euro Coin',
33
+ 'https://www.circle.com/eurc',
34
+ ),
35
+ }
@@ -1,5 +1,6 @@
1
1
  import { ChainId, NonEVMChainId } from '@pancakeswap/chains'
2
2
  import { ERC20Token } from '@pancakeswap/sdk'
3
+ import { arcTokens } from './arc'
3
4
  import { robinhoodTokens } from './robinhood'
4
5
  import { solanaTokens } from './solana'
5
6
 
@@ -569,4 +570,5 @@ export const STABLE_COIN = {
569
570
  [ChainId.MONAD_MAINNET]: USDC[ChainId.MONAD_MAINNET],
570
571
  [ChainId.MONAD_TESTNET]: USDC[ChainId.MONAD_TESTNET],
571
572
  [ChainId.ROBINHOOD]: robinhoodTokens.usdg,
573
+ [ChainId.ARC]: arcTokens.usdc,
572
574
  } satisfies Partial<Record<ChainId, ERC20Token>>
@@ -28,6 +28,10 @@ export function serializeTokens(unserializedTokens: any) {
28
28
  }
29
29
 
30
30
  export function unwrappedToken(token?: Token): Currency | undefined {
31
- if (token && token.equals(WNATIVE[token.chainId as keyof typeof WNATIVE])) return Native.onChain(token.chainId)
31
+ if (!token) return token
32
+ // Chains with no wrapped native (Arc) have nothing to unwrap into, and
33
+ // `Token.equals` dereferences its argument before any other check.
34
+ const wnative = WNATIVE[token.chainId as ChainId]
35
+ if (wnative && token.equals(wnative)) return Native.onChain(token.chainId)
32
36
  return token
33
37
  }
package/src/index.ts CHANGED
@@ -15,6 +15,7 @@ export * from './constants/monad'
15
15
  export * from './constants/monadTestnet'
16
16
  export * from './constants/opBNB'
17
17
  export * from './constants/opBnbTestnet'
18
+ export * from './constants/arc'
18
19
  export * from './constants/robinhood'
19
20
  export * from './constants/scrollSepolia'
20
21
  export * from './constants/sepolia'
@@ -24,4 +24,5 @@ export const searchTopTokens: Record<ChainId, UnifiedToken[]> = {
24
24
  [ChainId.MONAD_MAINNET]: [],
25
25
  [ChainId.MONAD_TESTNET]: [],
26
26
  [ChainId.ROBINHOOD]: [],
27
+ [ChainId.ARC]: [],
27
28
  }