@trustware/sdk-staging 1.1.8-staging.7 → 1.1.8-staging.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/core.mjs CHANGED
@@ -53,7 +53,7 @@ var init_constants = __esm({
53
53
  "src/constants.ts"() {
54
54
  "use strict";
55
55
  SDK_NAME = "@trustware/sdk";
56
- SDK_VERSION = "1.1.8-staging.7";
56
+ SDK_VERSION = "1.1.8-staging.8";
57
57
  API_ROOT = "https://bv-staging-api.trustware.io";
58
58
  API_PREFIX = "/api";
59
59
  WALLETCONNECT_PROJECT_ID = "72ea74c400f5111d43aea638d7d83a24";
@@ -434,6 +434,24 @@ var init_registry = __esm({
434
434
  }
435
435
  this._chainsLoaded = true;
436
436
  }
437
+ batchStoreTokens(tokensArr) {
438
+ for (const token of tokensArr) {
439
+ const chainRef = token?.chainId;
440
+ if (chainRef == null) continue;
441
+ const normalized = normalizeToken(token);
442
+ const resolvedChain = this.chain(chainRef);
443
+ const aliases = resolvedChain ? getChainAliases(resolvedChain) : [normalizeChainKey(chainRef)];
444
+ const key = tokenKey(normalized);
445
+ for (const alias of aliases) {
446
+ const existingByKey = this._tokensByChainKey.get(alias) ?? /* @__PURE__ */ new Map();
447
+ existingByKey.set(key, normalized);
448
+ this._tokensByChainKey.set(alias, existingByKey);
449
+ }
450
+ }
451
+ for (const [chainKey, byKey] of this._tokensByChainKey.entries()) {
452
+ this._tokensByChain.set(chainKey, Array.from(byKey.values()));
453
+ }
454
+ }
437
455
  async loadAllTokens() {
438
456
  await this.ensureChainsLoaded();
439
457
  const tokensRes = await fetch(`${this.baseURL}/v1/routes/tokens`, {
@@ -442,9 +460,7 @@ var init_registry = __esm({
442
460
  if (!tokensRes.ok) throw new Error(`tokens: HTTP ${tokensRes.status}`);
443
461
  const tokens = await tokensRes.json();
444
462
  const tokensArr = Array.isArray(tokens) ? tokens : tokens.data ?? [];
445
- for (const token of tokensArr) {
446
- this.storeToken(token);
447
- }
463
+ this.batchStoreTokens(tokensArr);
448
464
  this._loaded = true;
449
465
  }
450
466
  prunePageCache() {
@@ -3950,6 +3966,135 @@ var init_chainHelpers = __esm({
3950
3966
  }
3951
3967
  });
3952
3968
 
3969
+ // src/utils/index.ts
3970
+ function resolveChainLabel(chain) {
3971
+ return chain.networkName || chain.axelarChainName || (chain.id != null ? String(chain.id) : void 0) || (chain.chainId != null ? String(chain.chainId) : void 0) || chain.networkIdentifier || "Chain";
3972
+ }
3973
+ var init_utils = __esm({
3974
+ "src/utils/index.ts"() {
3975
+ "use strict";
3976
+ }
3977
+ });
3978
+
3979
+ // src/widget/data/popularChains.json
3980
+ var popularChains_default;
3981
+ var init_popularChains = __esm({
3982
+ "src/widget/data/popularChains.json"() {
3983
+ popularChains_default = {
3984
+ byTvl: [
3985
+ {
3986
+ name: "Ethereum",
3987
+ chainId: 1
3988
+ },
3989
+ {
3990
+ name: "BSC",
3991
+ chainId: 56
3992
+ },
3993
+ {
3994
+ name: "Solana"
3995
+ },
3996
+ {
3997
+ name: "Tron"
3998
+ },
3999
+ {
4000
+ name: "Bitcoin"
4001
+ },
4002
+ {
4003
+ name: "Base",
4004
+ chainId: 8453
4005
+ },
4006
+ {
4007
+ name: "Hyperliquid L1"
4008
+ },
4009
+ {
4010
+ name: "Provenance"
4011
+ },
4012
+ {
4013
+ name: "Arbitrum",
4014
+ chainId: 42161
4015
+ },
4016
+ {
4017
+ name: "Polygon",
4018
+ chainId: 137
4019
+ },
4020
+ {
4021
+ name: "Plasma",
4022
+ chainId: 9745
4023
+ },
4024
+ {
4025
+ name: "Avalanche",
4026
+ chainId: 43114
4027
+ },
4028
+ {
4029
+ name: "Sui"
4030
+ },
4031
+ {
4032
+ name: "Monad",
4033
+ chainId: 143
4034
+ },
4035
+ {
4036
+ name: "OP Mainnet",
4037
+ chainId: 10
4038
+ },
4039
+ {
4040
+ name: "Cronos",
4041
+ chainId: 25
4042
+ },
4043
+ {
4044
+ name: "Stellar"
4045
+ },
4046
+ {
4047
+ name: "Starknet"
4048
+ },
4049
+ {
4050
+ name: "Near"
4051
+ },
4052
+ {
4053
+ name: "Mantle",
4054
+ chainId: 5e3
4055
+ },
4056
+ {
4057
+ name: "Movement",
4058
+ chainId: 3073
4059
+ },
4060
+ {
4061
+ name: "Ink",
4062
+ chainId: 57073
4063
+ },
4064
+ {
4065
+ name: "Flare"
4066
+ },
4067
+ {
4068
+ name: "Aptos"
4069
+ },
4070
+ {
4071
+ name: "MegaETH",
4072
+ chainId: 4326
4073
+ },
4074
+ {
4075
+ name: "Rootstock",
4076
+ chainId: 30
4077
+ },
4078
+ {
4079
+ name: "dYdX"
4080
+ },
4081
+ {
4082
+ name: "Cardano"
4083
+ },
4084
+ {
4085
+ name: "Stacks"
4086
+ },
4087
+ {
4088
+ name: "X Layer"
4089
+ }
4090
+ ],
4091
+ popularLimit: 8,
4092
+ updatedAt: "2026-06-19",
4093
+ source: "https://api.llama.fi/v2/chains \u2014 sorted by TVL"
4094
+ };
4095
+ }
4096
+ });
4097
+
3953
4098
  // src/core/useChains.ts
3954
4099
  import { useState, useEffect as useEffect2, useMemo } from "react";
3955
4100
  function filterSupportedChains(chains) {
@@ -4024,20 +4169,40 @@ function useChains() {
4024
4169
  const { popularChains, otherChains } = useMemo(() => {
4025
4170
  const popular = [];
4026
4171
  const other = [];
4172
+ const registryEvmIds = new Set(
4173
+ chains.map((c) => Number(c.chainId ?? c.id))
4174
+ );
4175
+ const hasSolana = chains.some((c) => normalizeChainType2(c) === "solana");
4176
+ const popularEvmIds = [];
4177
+ let solanaIsPopular = false;
4178
+ for (const entry of POPULAR_CHAINS_BY_TVL) {
4179
+ if (popularEvmIds.length + (solanaIsPopular ? 1 : 0) >= POPULAR_LIMIT)
4180
+ break;
4181
+ if (typeof entry.chainId === "number" && registryEvmIds.has(entry.chainId)) {
4182
+ popularEvmIds.push(entry.chainId);
4183
+ } else if (!solanaIsPopular && hasSolana && entry.name.toLowerCase() === "solana") {
4184
+ solanaIsPopular = true;
4185
+ }
4186
+ }
4187
+ const popularIdSet = new Set(popularEvmIds);
4027
4188
  for (const chain of chains) {
4028
4189
  const chainId = Number(chain.chainId ?? chain.id);
4029
- if (POPULAR_CHAIN_IDS.has(chainId)) {
4190
+ if (popularIdSet.has(chainId) || solanaIsPopular && normalizeChainType2(chain) === "solana") {
4030
4191
  popular.push(chain);
4031
4192
  } else {
4032
4193
  other.push(chain);
4033
4194
  }
4034
4195
  }
4035
- const popularOrder = [1, 137, 8453];
4036
4196
  popular.sort((a, b) => {
4037
4197
  const aId = Number(a.chainId ?? a.id);
4038
4198
  const bId = Number(b.chainId ?? b.id);
4039
- return popularOrder.indexOf(aId) - popularOrder.indexOf(bId);
4199
+ const aRank = popularEvmIds.indexOf(aId);
4200
+ const bRank = popularEvmIds.indexOf(bId);
4201
+ return (aRank === -1 ? 999 : aRank) - (bRank === -1 ? 999 : bRank);
4040
4202
  });
4203
+ other.sort(
4204
+ (a, b) => resolveChainLabel(a).localeCompare(resolveChainLabel(b))
4205
+ );
4041
4206
  return { popularChains: popular, otherChains: other };
4042
4207
  }, [chains]);
4043
4208
  return {
@@ -4049,20 +4214,16 @@ function useChains() {
4049
4214
  error
4050
4215
  };
4051
4216
  }
4052
- var POPULAR_CHAIN_IDS;
4217
+ var POPULAR_CHAINS_BY_TVL, POPULAR_LIMIT;
4053
4218
  var init_useChains = __esm({
4054
4219
  "src/core/useChains.ts"() {
4055
4220
  "use strict";
4056
4221
  init_registryClient();
4057
4222
  init_chainHelpers();
4058
- POPULAR_CHAIN_IDS = /* @__PURE__ */ new Set([
4059
- 1,
4060
- // Ethereum Mainnet
4061
- 137,
4062
- // Polygon
4063
- 8453
4064
- // Base
4065
- ]);
4223
+ init_utils();
4224
+ init_popularChains();
4225
+ POPULAR_CHAINS_BY_TVL = popularChains_default.byTvl;
4226
+ POPULAR_LIMIT = popularChains_default.popularLimit;
4066
4227
  }
4067
4228
  });
4068
4229
 
@@ -4211,21 +4372,27 @@ function sortTokensByPopularity(tokens, options) {
4211
4372
  const nativeSet = options?.nativeAddresses ?? /* @__PURE__ */ new Set();
4212
4373
  const nativeSymbolSet = options?.nativeSymbols ?? /* @__PURE__ */ new Set();
4213
4374
  const featuredMap = options?.featuredAddresses ?? /* @__PURE__ */ new Map();
4375
+ const featuredSymMap = options?.featuredSymbols ?? /* @__PURE__ */ new Map();
4214
4376
  const getMajorRank = (token) => {
4215
4377
  const addr = normalizeAddress2(token.address);
4378
+ const sym = normalizeSymbol(token.symbol);
4216
4379
  if (nativeSet.has(addr)) return 0;
4217
- if (nativeSymbolSet.has(normalizeSymbol(token.symbol))) return 0;
4380
+ if (nativeSymbolSet.has(sym)) return 0;
4218
4381
  if (featuredMap.has(addr)) return 1;
4382
+ if (featuredSymMap.has(sym)) return 1;
4219
4383
  return getGroupRank(token) + 2;
4220
4384
  };
4385
+ const getFeaturedOrder = (token) => {
4386
+ const byAddr = featuredMap.get(normalizeAddress2(token.address));
4387
+ if (byAddr !== void 0) return byAddr;
4388
+ return featuredSymMap.get(normalizeSymbol(token.symbol)) ?? 0;
4389
+ };
4221
4390
  return tokens.map((token, index) => ({ token, index })).sort((a, b) => {
4222
4391
  const majorA = getMajorRank(a.token);
4223
4392
  const majorB = getMajorRank(b.token);
4224
4393
  if (majorA !== majorB) return majorA - majorB;
4225
4394
  if (majorA === 1) {
4226
- const orderA = featuredMap.get(normalizeAddress2(a.token.address)) ?? 0;
4227
- const orderB = featuredMap.get(normalizeAddress2(b.token.address)) ?? 0;
4228
- return orderA - orderB;
4395
+ return getFeaturedOrder(a.token) - getFeaturedOrder(b.token);
4229
4396
  }
4230
4397
  const chainPopularityDiff = compareChainPopularity(a.token, b.token);
4231
4398
  if (chainPopularityDiff !== 0) return chainPopularityDiff;
@@ -4291,6 +4458,10 @@ var init_featuredAssets = __esm({
4291
4458
  "src/widget/data/featuredAssets.json"() {
4292
4459
  featuredAssets_default = {
4293
4460
  "1": {
4461
+ nativeAsset: {
4462
+ symbol: "ETH",
4463
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4464
+ },
4294
4465
  top: [
4295
4466
  {
4296
4467
  symbol: "AAVE",
@@ -4397,11 +4568,11 @@ var init_featuredAssets = __esm({
4397
4568
  ]
4398
4569
  },
4399
4570
  "10": {
4571
+ nativeAsset: {
4572
+ symbol: "ETH",
4573
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4574
+ },
4400
4575
  top: [
4401
- {
4402
- symbol: "OP",
4403
- address: "0x4200000000000000000000000000000000000042"
4404
- },
4405
4576
  {
4406
4577
  symbol: "AAVE",
4407
4578
  address: "0x76fb31fb4af56892a25e32cfc43de717950c9278"
@@ -4425,6 +4596,10 @@ var init_featuredAssets = __esm({
4425
4596
  {
4426
4597
  symbol: "STG",
4427
4598
  address: "0x296f55f8fb28e498b858d0bcda06d955b2cb3f97"
4599
+ },
4600
+ {
4601
+ symbol: "OP",
4602
+ address: "0x4200000000000000000000000000000000000042"
4428
4603
  }
4429
4604
  ],
4430
4605
  stables: [
@@ -4459,6 +4634,10 @@ var init_featuredAssets = __esm({
4459
4634
  ]
4460
4635
  },
4461
4636
  "100": {
4637
+ nativeAsset: {
4638
+ symbol: "XDAI",
4639
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4640
+ },
4462
4641
  top: [],
4463
4642
  stables: [
4464
4643
  {
@@ -4472,6 +4651,10 @@ var init_featuredAssets = __esm({
4472
4651
  ]
4473
4652
  },
4474
4653
  "1284": {
4654
+ nativeAsset: {
4655
+ symbol: "GLMR",
4656
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4657
+ },
4475
4658
  top: [
4476
4659
  {
4477
4660
  symbol: "WELL",
@@ -4490,6 +4673,10 @@ var init_featuredAssets = __esm({
4490
4673
  ]
4491
4674
  },
4492
4675
  "13371": {
4676
+ nativeAsset: {
4677
+ symbol: "IMX",
4678
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4679
+ },
4493
4680
  top: [],
4494
4681
  stables: [
4495
4682
  {
@@ -4503,6 +4690,10 @@ var init_featuredAssets = __esm({
4503
4690
  ]
4504
4691
  },
4505
4692
  "137": {
4693
+ nativeAsset: {
4694
+ symbol: "POL",
4695
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4696
+ },
4506
4697
  top: [
4507
4698
  {
4508
4699
  symbol: "AAVE",
@@ -4573,6 +4764,10 @@ var init_featuredAssets = __esm({
4573
4764
  ]
4574
4765
  },
4575
4766
  "143": {
4767
+ nativeAsset: {
4768
+ symbol: "MON",
4769
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4770
+ },
4576
4771
  top: [],
4577
4772
  stables: [
4578
4773
  {
@@ -4582,6 +4777,10 @@ var init_featuredAssets = __esm({
4582
4777
  ]
4583
4778
  },
4584
4779
  "146": {
4780
+ nativeAsset: {
4781
+ symbol: "S",
4782
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4783
+ },
4585
4784
  top: [],
4586
4785
  stables: [
4587
4786
  {
@@ -4595,6 +4794,10 @@ var init_featuredAssets = __esm({
4595
4794
  ]
4596
4795
  },
4597
4796
  "1868": {
4797
+ nativeAsset: {
4798
+ symbol: "ETH",
4799
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4800
+ },
4598
4801
  top: [],
4599
4802
  stables: [
4600
4803
  {
@@ -4604,6 +4807,10 @@ var init_featuredAssets = __esm({
4604
4807
  ]
4605
4808
  },
4606
4809
  "2222": {
4810
+ nativeAsset: {
4811
+ symbol: "KAVA",
4812
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4813
+ },
4607
4814
  top: [],
4608
4815
  stables: [
4609
4816
  {
@@ -4617,6 +4824,10 @@ var init_featuredAssets = __esm({
4617
4824
  ]
4618
4825
  },
4619
4826
  "250": {
4827
+ nativeAsset: {
4828
+ symbol: "FTM",
4829
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4830
+ },
4620
4831
  top: [
4621
4832
  {
4622
4833
  symbol: "STG",
@@ -4631,6 +4842,10 @@ var init_featuredAssets = __esm({
4631
4842
  ]
4632
4843
  },
4633
4844
  "252": {
4845
+ nativeAsset: {
4846
+ symbol: "FRAX",
4847
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4848
+ },
4634
4849
  top: [
4635
4850
  {
4636
4851
  symbol: "CRV",
@@ -4645,6 +4860,10 @@ var init_featuredAssets = __esm({
4645
4860
  ]
4646
4861
  },
4647
4862
  "295": {
4863
+ nativeAsset: {
4864
+ symbol: "HBAR",
4865
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4866
+ },
4648
4867
  top: [],
4649
4868
  stables: [
4650
4869
  {
@@ -4654,6 +4873,10 @@ var init_featuredAssets = __esm({
4654
4873
  ]
4655
4874
  },
4656
4875
  "314": {
4876
+ nativeAsset: {
4877
+ symbol: "FIL",
4878
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4879
+ },
4657
4880
  top: [],
4658
4881
  stables: [
4659
4882
  {
@@ -4663,6 +4886,10 @@ var init_featuredAssets = __esm({
4663
4886
  ]
4664
4887
  },
4665
4888
  "3338": {
4889
+ nativeAsset: {
4890
+ symbol: "PEAQ",
4891
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4892
+ },
4666
4893
  top: [],
4667
4894
  stables: [
4668
4895
  {
@@ -4676,6 +4903,10 @@ var init_featuredAssets = __esm({
4676
4903
  ]
4677
4904
  },
4678
4905
  "42161": {
4906
+ nativeAsset: {
4907
+ symbol: "ETH",
4908
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4909
+ },
4679
4910
  top: [
4680
4911
  {
4681
4912
  symbol: "AAVE",
@@ -4766,6 +4997,10 @@ var init_featuredAssets = __esm({
4766
4997
  ]
4767
4998
  },
4768
4999
  "42220": {
5000
+ nativeAsset: {
5001
+ symbol: "CELO",
5002
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
5003
+ },
4769
5004
  top: [],
4770
5005
  stables: [
4771
5006
  {
@@ -4779,6 +5014,10 @@ var init_featuredAssets = __esm({
4779
5014
  ]
4780
5015
  },
4781
5016
  "43114": {
5017
+ nativeAsset: {
5018
+ symbol: "AVAX",
5019
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
5020
+ },
4782
5021
  top: [
4783
5022
  {
4784
5023
  symbol: "PENDLE",
@@ -4817,6 +5056,10 @@ var init_featuredAssets = __esm({
4817
5056
  ]
4818
5057
  },
4819
5058
  "5000": {
5059
+ nativeAsset: {
5060
+ symbol: "MNT",
5061
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
5062
+ },
4820
5063
  top: [],
4821
5064
  stables: [
4822
5065
  {
@@ -4834,6 +5077,10 @@ var init_featuredAssets = __esm({
4834
5077
  ]
4835
5078
  },
4836
5079
  "534352": {
5080
+ nativeAsset: {
5081
+ symbol: "ETH",
5082
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
5083
+ },
4837
5084
  top: [],
4838
5085
  stables: [
4839
5086
  {
@@ -4847,6 +5094,10 @@ var init_featuredAssets = __esm({
4847
5094
  ]
4848
5095
  },
4849
5096
  "56": {
5097
+ nativeAsset: {
5098
+ symbol: "BNB",
5099
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
5100
+ },
4850
5101
  top: [
4851
5102
  {
4852
5103
  symbol: "AAVE",
@@ -4909,6 +5160,10 @@ var init_featuredAssets = __esm({
4909
5160
  ]
4910
5161
  },
4911
5162
  "59144": {
5163
+ nativeAsset: {
5164
+ symbol: "ETH",
5165
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
5166
+ },
4912
5167
  top: [
4913
5168
  {
4914
5169
  symbol: "Cake",
@@ -4923,6 +5178,10 @@ var init_featuredAssets = __esm({
4923
5178
  ]
4924
5179
  },
4925
5180
  "80094": {
5181
+ nativeAsset: {
5182
+ symbol: "BERA",
5183
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
5184
+ },
4926
5185
  top: [],
4927
5186
  stables: [
4928
5187
  {
@@ -4932,6 +5191,10 @@ var init_featuredAssets = __esm({
4932
5191
  ]
4933
5192
  },
4934
5193
  "8453": {
5194
+ nativeAsset: {
5195
+ symbol: "ETH",
5196
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
5197
+ },
4935
5198
  top: [
4936
5199
  {
4937
5200
  symbol: "AAVE",
@@ -5014,6 +5277,10 @@ var init_featuredAssets = __esm({
5014
5277
  ]
5015
5278
  },
5016
5279
  "999": {
5280
+ nativeAsset: {
5281
+ symbol: "HYPE",
5282
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
5283
+ },
5017
5284
  top: [
5018
5285
  {
5019
5286
  symbol: "AXL",
@@ -5046,7 +5313,12 @@ var init_featuredAssets = __esm({
5046
5313
  ]
5047
5314
  },
5048
5315
  "axelar-dojo-1": {
5049
- top: [],
5316
+ top: [
5317
+ {
5318
+ symbol: "AXL",
5319
+ address: "uaxl"
5320
+ }
5321
+ ],
5050
5322
  stables: [
5051
5323
  {
5052
5324
  symbol: "USDe",
@@ -5189,6 +5461,10 @@ var init_featuredAssets = __esm({
5189
5461
  "noble-1": {
5190
5462
  top: [],
5191
5463
  stables: [
5464
+ {
5465
+ symbol: "USDC",
5466
+ address: "uusdc"
5467
+ },
5192
5468
  {
5193
5469
  symbol: "USDY",
5194
5470
  address: "ausdy"
@@ -5226,6 +5502,72 @@ var init_featuredAssets = __esm({
5226
5502
  }
5227
5503
  ]
5228
5504
  },
5505
+ solana: {
5506
+ nativeAsset: {
5507
+ symbol: "SOL",
5508
+ address: "So11111111111111111111111111111111111111111"
5509
+ },
5510
+ top: [
5511
+ {
5512
+ symbol: "RENDER",
5513
+ address: "rndrizKT3MK1iimdxRdWabcF7Zg7AR5T4nud4EkHBof"
5514
+ },
5515
+ {
5516
+ symbol: "SUSHI",
5517
+ address: "ChVzxWRmrTeSgwd3Ui3UumcN8KX7VK3WaD4KGeSKpypj"
5518
+ },
5519
+ {
5520
+ symbol: "ARB",
5521
+ address: "8LH3QMo7xkMJx85Kg4pfiQY1g1ZgiVEe1KktSpaT89mP"
5522
+ },
5523
+ {
5524
+ symbol: "cbBTC",
5525
+ address: "cbbtcf3aa214zXHbiAZQwf4122FBYbraNdFqgw4iMij"
5526
+ },
5527
+ {
5528
+ symbol: "Bonk",
5529
+ address: "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"
5530
+ }
5531
+ ],
5532
+ stables: [
5533
+ {
5534
+ symbol: "USDT",
5535
+ address: "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"
5536
+ },
5537
+ {
5538
+ symbol: "USDC",
5539
+ address: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
5540
+ },
5541
+ {
5542
+ symbol: "USDe",
5543
+ address: "DEkqHyPN7GMRJ5cArtQFAWefqbZb33Hyf6s5iCwjEonT"
5544
+ },
5545
+ {
5546
+ symbol: "PYUSD",
5547
+ address: "2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo"
5548
+ },
5549
+ {
5550
+ symbol: "FDUSD",
5551
+ address: "9zNQRsGLjNKwCUU5Gq5LR8beUCPzQMVMqKAi3SSZh54u"
5552
+ },
5553
+ {
5554
+ symbol: "USDS",
5555
+ address: "USDSwr9ApdHk5bvJKMjzff41FfuX8bSxdKcR81vTwcA"
5556
+ },
5557
+ {
5558
+ symbol: "EURC",
5559
+ address: "HzwqbKZw8HxMN6bF2yFZNrht3c2iXXzpKcFu7uBEDKtr"
5560
+ },
5561
+ {
5562
+ symbol: "USDP",
5563
+ address: "HVbpJAQGNpkgBaYBZQBR1t7yFdvaYVp2vCQQfKKEN4tM"
5564
+ },
5565
+ {
5566
+ symbol: "USDY",
5567
+ address: "A1KLoBrKBde8Ty9qtNQUtq3C2ortoC3u7twggz7sEto6"
5568
+ }
5569
+ ]
5570
+ },
5229
5571
  "ssc-1": {
5230
5572
  top: [
5231
5573
  {
@@ -5278,13 +5620,55 @@ var init_featuredAssets = __esm({
5278
5620
  address: "ibc/F082B65C88E4B6D5EF1DB243CDA1D331D002759E938A0F5CD3FFDC5D53B3E349"
5279
5621
  }
5280
5622
  ]
5623
+ },
5624
+ "solana-mainnet-beta": {
5625
+ nativeAsset: {
5626
+ symbol: "SOL",
5627
+ address: "So11111111111111111111111111111111111111111"
5628
+ },
5629
+ stables: [
5630
+ {
5631
+ symbol: "USDC",
5632
+ address: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
5633
+ },
5634
+ {
5635
+ symbol: "USDT",
5636
+ address: "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"
5637
+ }
5638
+ ],
5639
+ top: [
5640
+ {
5641
+ symbol: "JUP",
5642
+ address: "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN"
5643
+ },
5644
+ {
5645
+ symbol: "BONK",
5646
+ address: "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"
5647
+ },
5648
+ {
5649
+ symbol: "WIF",
5650
+ address: "EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm"
5651
+ },
5652
+ {
5653
+ symbol: "PYTH",
5654
+ address: "HZ1JovNiVvGrGNiiYvEozEVgZ58xaU3RKwX8eACQBCt3"
5655
+ },
5656
+ {
5657
+ symbol: "RAY",
5658
+ address: "4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"
5659
+ },
5660
+ {
5661
+ symbol: "JITO",
5662
+ address: "J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn"
5663
+ }
5664
+ ]
5281
5665
  }
5282
5666
  };
5283
5667
  }
5284
5668
  });
5285
5669
 
5286
5670
  // src/core/useTokens.ts
5287
- import { useState as useState2, useEffect as useEffect3, useMemo as useMemo2 } from "react";
5671
+ import { useState as useState2, useEffect as useEffect3, useMemo as useMemo2, startTransition } from "react";
5288
5672
  function mapTokenDefToToken(tokenDef) {
5289
5673
  return {
5290
5674
  address: tokenDef.address,
@@ -5346,20 +5730,40 @@ function useTokens(chainId) {
5346
5730
  const filtered2 = tokenDefs.filter(
5347
5731
  (item) => chainMap.has(item.chainId.toString())
5348
5732
  );
5349
- setTokens(filtered2.map(mapTokenDefToToken));
5733
+ const mapped2 = filtered2.map(mapTokenDefToToken);
5734
+ startTransition(() => {
5735
+ setTokens(mapped2);
5736
+ });
5737
+ return;
5738
+ }
5739
+ if (!queryDependency) {
5740
+ await registry.ensureLoaded();
5741
+ if (cancelled) return;
5742
+ const tokenDefs = registry.tokens(chainId);
5743
+ const filtered2 = tokenDefs.filter(
5744
+ (item) => chainMap.has(item.chainId.toString())
5745
+ );
5746
+ const mapped2 = filtered2.map(mapTokenDefToToken);
5747
+ startTransition(() => {
5748
+ setTokens(mapped2);
5749
+ setHasNextPage(false);
5750
+ });
5350
5751
  return;
5351
5752
  }
5352
5753
  const page = await registry.tokensPage(chainId, {
5353
- q: queryDependency || void 0,
5754
+ q: queryDependency,
5354
5755
  limit: DEFAULT_PAGE_LIMIT
5355
5756
  });
5356
5757
  if (cancelled) return;
5357
5758
  const filtered = page.data.filter(
5358
5759
  (item) => chainMap.has(item.chainId.toString())
5359
5760
  );
5360
- setTokens(filtered.map(mapTokenDefToToken));
5361
- setNextCursor(page.pageInfo.nextCursor);
5362
- setHasNextPage(page.pageInfo.hasNextPage);
5761
+ const mapped = filtered.map(mapTokenDefToToken);
5762
+ startTransition(() => {
5763
+ setTokens(mapped);
5764
+ setNextCursor(page.pageInfo.nextCursor);
5765
+ setHasNextPage(page.pageInfo.hasNextPage);
5766
+ });
5363
5767
  } catch (err) {
5364
5768
  if (!cancelled) {
5365
5769
  const message = err instanceof Error ? err.message : "Failed to load tokens";
@@ -5405,39 +5809,67 @@ function useTokens(chainId) {
5405
5809
  setIsLoadingMore(false);
5406
5810
  }
5407
5811
  };
5408
- const featuredAddresses = useMemo2(() => {
5812
+ const chainFeatured = useMemo2(() => {
5409
5813
  const key = chainId?.toString() ?? "";
5410
- const chain = FEATURED[key];
5411
- if (!chain) return /* @__PURE__ */ new Map();
5814
+ return FEATURED[key] ?? null;
5815
+ }, [chainId]);
5816
+ const nativeAddresses = useMemo2(() => {
5817
+ const set = new Set(BASE_NATIVE_ADDRESSES);
5818
+ if (chainFeatured?.nativeAsset?.address) {
5819
+ set.add(chainFeatured.nativeAsset.address.toLowerCase());
5820
+ }
5821
+ return set;
5822
+ }, [chainFeatured]);
5823
+ const nativeSymbols = useMemo2(() => {
5824
+ const symbols = /* @__PURE__ */ new Set();
5825
+ if (chainFeatured?.nativeAsset?.symbol) {
5826
+ symbols.add(chainFeatured.nativeAsset.symbol.toUpperCase());
5827
+ }
5828
+ if (chainId) {
5829
+ const chainDef = chainMap.get(chainId.toString());
5830
+ const sym = chainDef?.nativeCurrency?.symbol;
5831
+ if (sym) symbols.add(sym.toUpperCase());
5832
+ }
5833
+ return symbols;
5834
+ }, [chainId, chainMap, chainFeatured]);
5835
+ const featuredAddresses = useMemo2(() => {
5836
+ if (!chainFeatured) return /* @__PURE__ */ new Map();
5412
5837
  const map = /* @__PURE__ */ new Map();
5413
5838
  let order = 0;
5414
- for (const s of chain.stables) map.set(s.address.toLowerCase(), order++);
5415
- for (const t of chain.top) map.set(t.address.toLowerCase(), order++);
5839
+ for (const s of chainFeatured.stables)
5840
+ map.set(s.address.toLowerCase(), order++);
5841
+ for (const t of chainFeatured.top)
5842
+ map.set(t.address.toLowerCase(), order++);
5416
5843
  return map;
5417
- }, [chainId]);
5418
- const nativeSymbols = useMemo2(() => {
5419
- if (!chainId) return /* @__PURE__ */ new Set();
5420
- const chain = chainMap.get(chainId.toString());
5421
- const sym = chain?.nativeCurrency?.symbol;
5422
- if (!sym) return /* @__PURE__ */ new Set();
5423
- return /* @__PURE__ */ new Set([sym.toUpperCase()]);
5424
- }, [chainId, chainMap]);
5844
+ }, [chainFeatured]);
5845
+ const featuredSymbols = useMemo2(() => {
5846
+ if (!chainFeatured) return /* @__PURE__ */ new Map();
5847
+ const map = /* @__PURE__ */ new Map();
5848
+ let order = 0;
5849
+ for (const s of chainFeatured.stables)
5850
+ map.set(s.symbol.toUpperCase(), order++);
5851
+ for (const t of chainFeatured.top) map.set(t.symbol.toUpperCase(), order++);
5852
+ return map;
5853
+ }, [chainFeatured]);
5425
5854
  const filteredTokens = useMemo2(() => {
5426
5855
  const query = searchQuery.toLowerCase().trim();
5427
5856
  const source = query.length === 0 || tokensPaginationEnabled ? tokens : tokens.filter(
5428
5857
  (token) => token.symbol.toLowerCase().includes(query) || token.name.toLowerCase().includes(query) || token.address.toLowerCase().includes(query)
5429
5858
  );
5430
5859
  return sortTokensByPopularity(source, {
5431
- nativeAddresses: NATIVE_ADDRESSES,
5860
+ nativeAddresses,
5432
5861
  nativeSymbols,
5433
- featuredAddresses
5862
+ featuredAddresses,
5863
+ featuredSymbols
5434
5864
  });
5435
5865
  }, [
5436
5866
  tokens,
5437
5867
  searchQuery,
5438
5868
  tokensPaginationEnabled,
5869
+ nativeAddresses,
5439
5870
  nativeSymbols,
5440
- featuredAddresses
5871
+ featuredAddresses,
5872
+ featuredSymbols
5441
5873
  ]);
5442
5874
  return {
5443
5875
  tokens,
@@ -5451,7 +5883,7 @@ function useTokens(chainId) {
5451
5883
  isLoadingMore
5452
5884
  };
5453
5885
  }
5454
- var FEATURED, NATIVE_ADDRESSES, DEFAULT_PAGE_LIMIT;
5886
+ var FEATURED, BASE_NATIVE_ADDRESSES, DEFAULT_PAGE_LIMIT;
5455
5887
  var init_useTokens = __esm({
5456
5888
  "src/core/useTokens.ts"() {
5457
5889
  "use strict";
@@ -5462,10 +5894,10 @@ var init_useTokens = __esm({
5462
5894
  init_chainHelpers();
5463
5895
  init_featuredAssets();
5464
5896
  FEATURED = featuredAssets_default;
5465
- NATIVE_ADDRESSES = /* @__PURE__ */ new Set([
5897
+ BASE_NATIVE_ADDRESSES = /* @__PURE__ */ new Set([
5466
5898
  NATIVE_EVM2.toLowerCase(),
5467
5899
  NATIVE_SOLANA2.toLowerCase(),
5468
- // Some EVM chains (e.g. ZKsync, HyperEVM) use the zero address for the native token
5900
+ // Some EVM chains (e.g. ZKsync) use the zero address for the native token
5469
5901
  "0x0000000000000000000000000000000000000000"
5470
5902
  ]);
5471
5903
  DEFAULT_PAGE_LIMIT = 100;