@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.cjs CHANGED
@@ -75,7 +75,7 @@ var init_constants = __esm({
75
75
  "src/constants.ts"() {
76
76
  "use strict";
77
77
  SDK_NAME = "@trustware/sdk";
78
- SDK_VERSION = "1.1.8-staging.7";
78
+ SDK_VERSION = "1.1.8-staging.8";
79
79
  API_ROOT = "https://bv-staging-api.trustware.io";
80
80
  API_PREFIX = "/api";
81
81
  WALLETCONNECT_PROJECT_ID = "72ea74c400f5111d43aea638d7d83a24";
@@ -456,6 +456,24 @@ var init_registry = __esm({
456
456
  }
457
457
  this._chainsLoaded = true;
458
458
  }
459
+ batchStoreTokens(tokensArr) {
460
+ for (const token of tokensArr) {
461
+ const chainRef = token?.chainId;
462
+ if (chainRef == null) continue;
463
+ const normalized = normalizeToken(token);
464
+ const resolvedChain = this.chain(chainRef);
465
+ const aliases = resolvedChain ? getChainAliases(resolvedChain) : [normalizeChainKey(chainRef)];
466
+ const key = tokenKey(normalized);
467
+ for (const alias of aliases) {
468
+ const existingByKey = this._tokensByChainKey.get(alias) ?? /* @__PURE__ */ new Map();
469
+ existingByKey.set(key, normalized);
470
+ this._tokensByChainKey.set(alias, existingByKey);
471
+ }
472
+ }
473
+ for (const [chainKey, byKey] of this._tokensByChainKey.entries()) {
474
+ this._tokensByChain.set(chainKey, Array.from(byKey.values()));
475
+ }
476
+ }
459
477
  async loadAllTokens() {
460
478
  await this.ensureChainsLoaded();
461
479
  const tokensRes = await fetch(`${this.baseURL}/v1/routes/tokens`, {
@@ -464,9 +482,7 @@ var init_registry = __esm({
464
482
  if (!tokensRes.ok) throw new Error(`tokens: HTTP ${tokensRes.status}`);
465
483
  const tokens = await tokensRes.json();
466
484
  const tokensArr = Array.isArray(tokens) ? tokens : tokens.data ?? [];
467
- for (const token of tokensArr) {
468
- this.storeToken(token);
469
- }
485
+ this.batchStoreTokens(tokensArr);
470
486
  this._loaded = true;
471
487
  }
472
488
  prunePageCache() {
@@ -3972,6 +3988,135 @@ var init_chainHelpers = __esm({
3972
3988
  }
3973
3989
  });
3974
3990
 
3991
+ // src/utils/index.ts
3992
+ function resolveChainLabel(chain) {
3993
+ return chain.networkName || chain.axelarChainName || (chain.id != null ? String(chain.id) : void 0) || (chain.chainId != null ? String(chain.chainId) : void 0) || chain.networkIdentifier || "Chain";
3994
+ }
3995
+ var init_utils = __esm({
3996
+ "src/utils/index.ts"() {
3997
+ "use strict";
3998
+ }
3999
+ });
4000
+
4001
+ // src/widget/data/popularChains.json
4002
+ var popularChains_default;
4003
+ var init_popularChains = __esm({
4004
+ "src/widget/data/popularChains.json"() {
4005
+ popularChains_default = {
4006
+ byTvl: [
4007
+ {
4008
+ name: "Ethereum",
4009
+ chainId: 1
4010
+ },
4011
+ {
4012
+ name: "BSC",
4013
+ chainId: 56
4014
+ },
4015
+ {
4016
+ name: "Solana"
4017
+ },
4018
+ {
4019
+ name: "Tron"
4020
+ },
4021
+ {
4022
+ name: "Bitcoin"
4023
+ },
4024
+ {
4025
+ name: "Base",
4026
+ chainId: 8453
4027
+ },
4028
+ {
4029
+ name: "Hyperliquid L1"
4030
+ },
4031
+ {
4032
+ name: "Provenance"
4033
+ },
4034
+ {
4035
+ name: "Arbitrum",
4036
+ chainId: 42161
4037
+ },
4038
+ {
4039
+ name: "Polygon",
4040
+ chainId: 137
4041
+ },
4042
+ {
4043
+ name: "Plasma",
4044
+ chainId: 9745
4045
+ },
4046
+ {
4047
+ name: "Avalanche",
4048
+ chainId: 43114
4049
+ },
4050
+ {
4051
+ name: "Sui"
4052
+ },
4053
+ {
4054
+ name: "Monad",
4055
+ chainId: 143
4056
+ },
4057
+ {
4058
+ name: "OP Mainnet",
4059
+ chainId: 10
4060
+ },
4061
+ {
4062
+ name: "Cronos",
4063
+ chainId: 25
4064
+ },
4065
+ {
4066
+ name: "Stellar"
4067
+ },
4068
+ {
4069
+ name: "Starknet"
4070
+ },
4071
+ {
4072
+ name: "Near"
4073
+ },
4074
+ {
4075
+ name: "Mantle",
4076
+ chainId: 5e3
4077
+ },
4078
+ {
4079
+ name: "Movement",
4080
+ chainId: 3073
4081
+ },
4082
+ {
4083
+ name: "Ink",
4084
+ chainId: 57073
4085
+ },
4086
+ {
4087
+ name: "Flare"
4088
+ },
4089
+ {
4090
+ name: "Aptos"
4091
+ },
4092
+ {
4093
+ name: "MegaETH",
4094
+ chainId: 4326
4095
+ },
4096
+ {
4097
+ name: "Rootstock",
4098
+ chainId: 30
4099
+ },
4100
+ {
4101
+ name: "dYdX"
4102
+ },
4103
+ {
4104
+ name: "Cardano"
4105
+ },
4106
+ {
4107
+ name: "Stacks"
4108
+ },
4109
+ {
4110
+ name: "X Layer"
4111
+ }
4112
+ ],
4113
+ popularLimit: 8,
4114
+ updatedAt: "2026-06-19",
4115
+ source: "https://api.llama.fi/v2/chains \u2014 sorted by TVL"
4116
+ };
4117
+ }
4118
+ });
4119
+
3975
4120
  // src/core/useChains.ts
3976
4121
  function filterSupportedChains(chains) {
3977
4122
  const supportedChainTypes = /* @__PURE__ */ new Set(["evm", "solana", "cosmos", "bitcoin"]);
@@ -4045,20 +4190,40 @@ function useChains() {
4045
4190
  const { popularChains, otherChains } = (0, import_react2.useMemo)(() => {
4046
4191
  const popular = [];
4047
4192
  const other = [];
4193
+ const registryEvmIds = new Set(
4194
+ chains.map((c) => Number(c.chainId ?? c.id))
4195
+ );
4196
+ const hasSolana = chains.some((c) => normalizeChainType2(c) === "solana");
4197
+ const popularEvmIds = [];
4198
+ let solanaIsPopular = false;
4199
+ for (const entry of POPULAR_CHAINS_BY_TVL) {
4200
+ if (popularEvmIds.length + (solanaIsPopular ? 1 : 0) >= POPULAR_LIMIT)
4201
+ break;
4202
+ if (typeof entry.chainId === "number" && registryEvmIds.has(entry.chainId)) {
4203
+ popularEvmIds.push(entry.chainId);
4204
+ } else if (!solanaIsPopular && hasSolana && entry.name.toLowerCase() === "solana") {
4205
+ solanaIsPopular = true;
4206
+ }
4207
+ }
4208
+ const popularIdSet = new Set(popularEvmIds);
4048
4209
  for (const chain of chains) {
4049
4210
  const chainId = Number(chain.chainId ?? chain.id);
4050
- if (POPULAR_CHAIN_IDS.has(chainId)) {
4211
+ if (popularIdSet.has(chainId) || solanaIsPopular && normalizeChainType2(chain) === "solana") {
4051
4212
  popular.push(chain);
4052
4213
  } else {
4053
4214
  other.push(chain);
4054
4215
  }
4055
4216
  }
4056
- const popularOrder = [1, 137, 8453];
4057
4217
  popular.sort((a, b) => {
4058
4218
  const aId = Number(a.chainId ?? a.id);
4059
4219
  const bId = Number(b.chainId ?? b.id);
4060
- return popularOrder.indexOf(aId) - popularOrder.indexOf(bId);
4220
+ const aRank = popularEvmIds.indexOf(aId);
4221
+ const bRank = popularEvmIds.indexOf(bId);
4222
+ return (aRank === -1 ? 999 : aRank) - (bRank === -1 ? 999 : bRank);
4061
4223
  });
4224
+ other.sort(
4225
+ (a, b) => resolveChainLabel(a).localeCompare(resolveChainLabel(b))
4226
+ );
4062
4227
  return { popularChains: popular, otherChains: other };
4063
4228
  }, [chains]);
4064
4229
  return {
@@ -4070,21 +4235,17 @@ function useChains() {
4070
4235
  error
4071
4236
  };
4072
4237
  }
4073
- var import_react2, POPULAR_CHAIN_IDS;
4238
+ var import_react2, POPULAR_CHAINS_BY_TVL, POPULAR_LIMIT;
4074
4239
  var init_useChains = __esm({
4075
4240
  "src/core/useChains.ts"() {
4076
4241
  "use strict";
4077
4242
  import_react2 = require("react");
4078
4243
  init_registryClient();
4079
4244
  init_chainHelpers();
4080
- POPULAR_CHAIN_IDS = /* @__PURE__ */ new Set([
4081
- 1,
4082
- // Ethereum Mainnet
4083
- 137,
4084
- // Polygon
4085
- 8453
4086
- // Base
4087
- ]);
4245
+ init_utils();
4246
+ init_popularChains();
4247
+ POPULAR_CHAINS_BY_TVL = popularChains_default.byTvl;
4248
+ POPULAR_LIMIT = popularChains_default.popularLimit;
4088
4249
  }
4089
4250
  });
4090
4251
 
@@ -4233,21 +4394,27 @@ function sortTokensByPopularity(tokens, options) {
4233
4394
  const nativeSet = options?.nativeAddresses ?? /* @__PURE__ */ new Set();
4234
4395
  const nativeSymbolSet = options?.nativeSymbols ?? /* @__PURE__ */ new Set();
4235
4396
  const featuredMap = options?.featuredAddresses ?? /* @__PURE__ */ new Map();
4397
+ const featuredSymMap = options?.featuredSymbols ?? /* @__PURE__ */ new Map();
4236
4398
  const getMajorRank = (token) => {
4237
4399
  const addr = normalizeAddress2(token.address);
4400
+ const sym = normalizeSymbol(token.symbol);
4238
4401
  if (nativeSet.has(addr)) return 0;
4239
- if (nativeSymbolSet.has(normalizeSymbol(token.symbol))) return 0;
4402
+ if (nativeSymbolSet.has(sym)) return 0;
4240
4403
  if (featuredMap.has(addr)) return 1;
4404
+ if (featuredSymMap.has(sym)) return 1;
4241
4405
  return getGroupRank(token) + 2;
4242
4406
  };
4407
+ const getFeaturedOrder = (token) => {
4408
+ const byAddr = featuredMap.get(normalizeAddress2(token.address));
4409
+ if (byAddr !== void 0) return byAddr;
4410
+ return featuredSymMap.get(normalizeSymbol(token.symbol)) ?? 0;
4411
+ };
4243
4412
  return tokens.map((token, index) => ({ token, index })).sort((a, b) => {
4244
4413
  const majorA = getMajorRank(a.token);
4245
4414
  const majorB = getMajorRank(b.token);
4246
4415
  if (majorA !== majorB) return majorA - majorB;
4247
4416
  if (majorA === 1) {
4248
- const orderA = featuredMap.get(normalizeAddress2(a.token.address)) ?? 0;
4249
- const orderB = featuredMap.get(normalizeAddress2(b.token.address)) ?? 0;
4250
- return orderA - orderB;
4417
+ return getFeaturedOrder(a.token) - getFeaturedOrder(b.token);
4251
4418
  }
4252
4419
  const chainPopularityDiff = compareChainPopularity(a.token, b.token);
4253
4420
  if (chainPopularityDiff !== 0) return chainPopularityDiff;
@@ -4313,6 +4480,10 @@ var init_featuredAssets = __esm({
4313
4480
  "src/widget/data/featuredAssets.json"() {
4314
4481
  featuredAssets_default = {
4315
4482
  "1": {
4483
+ nativeAsset: {
4484
+ symbol: "ETH",
4485
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4486
+ },
4316
4487
  top: [
4317
4488
  {
4318
4489
  symbol: "AAVE",
@@ -4419,11 +4590,11 @@ var init_featuredAssets = __esm({
4419
4590
  ]
4420
4591
  },
4421
4592
  "10": {
4593
+ nativeAsset: {
4594
+ symbol: "ETH",
4595
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4596
+ },
4422
4597
  top: [
4423
- {
4424
- symbol: "OP",
4425
- address: "0x4200000000000000000000000000000000000042"
4426
- },
4427
4598
  {
4428
4599
  symbol: "AAVE",
4429
4600
  address: "0x76fb31fb4af56892a25e32cfc43de717950c9278"
@@ -4447,6 +4618,10 @@ var init_featuredAssets = __esm({
4447
4618
  {
4448
4619
  symbol: "STG",
4449
4620
  address: "0x296f55f8fb28e498b858d0bcda06d955b2cb3f97"
4621
+ },
4622
+ {
4623
+ symbol: "OP",
4624
+ address: "0x4200000000000000000000000000000000000042"
4450
4625
  }
4451
4626
  ],
4452
4627
  stables: [
@@ -4481,6 +4656,10 @@ var init_featuredAssets = __esm({
4481
4656
  ]
4482
4657
  },
4483
4658
  "100": {
4659
+ nativeAsset: {
4660
+ symbol: "XDAI",
4661
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4662
+ },
4484
4663
  top: [],
4485
4664
  stables: [
4486
4665
  {
@@ -4494,6 +4673,10 @@ var init_featuredAssets = __esm({
4494
4673
  ]
4495
4674
  },
4496
4675
  "1284": {
4676
+ nativeAsset: {
4677
+ symbol: "GLMR",
4678
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4679
+ },
4497
4680
  top: [
4498
4681
  {
4499
4682
  symbol: "WELL",
@@ -4512,6 +4695,10 @@ var init_featuredAssets = __esm({
4512
4695
  ]
4513
4696
  },
4514
4697
  "13371": {
4698
+ nativeAsset: {
4699
+ symbol: "IMX",
4700
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4701
+ },
4515
4702
  top: [],
4516
4703
  stables: [
4517
4704
  {
@@ -4525,6 +4712,10 @@ var init_featuredAssets = __esm({
4525
4712
  ]
4526
4713
  },
4527
4714
  "137": {
4715
+ nativeAsset: {
4716
+ symbol: "POL",
4717
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4718
+ },
4528
4719
  top: [
4529
4720
  {
4530
4721
  symbol: "AAVE",
@@ -4595,6 +4786,10 @@ var init_featuredAssets = __esm({
4595
4786
  ]
4596
4787
  },
4597
4788
  "143": {
4789
+ nativeAsset: {
4790
+ symbol: "MON",
4791
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4792
+ },
4598
4793
  top: [],
4599
4794
  stables: [
4600
4795
  {
@@ -4604,6 +4799,10 @@ var init_featuredAssets = __esm({
4604
4799
  ]
4605
4800
  },
4606
4801
  "146": {
4802
+ nativeAsset: {
4803
+ symbol: "S",
4804
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4805
+ },
4607
4806
  top: [],
4608
4807
  stables: [
4609
4808
  {
@@ -4617,6 +4816,10 @@ var init_featuredAssets = __esm({
4617
4816
  ]
4618
4817
  },
4619
4818
  "1868": {
4819
+ nativeAsset: {
4820
+ symbol: "ETH",
4821
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4822
+ },
4620
4823
  top: [],
4621
4824
  stables: [
4622
4825
  {
@@ -4626,6 +4829,10 @@ var init_featuredAssets = __esm({
4626
4829
  ]
4627
4830
  },
4628
4831
  "2222": {
4832
+ nativeAsset: {
4833
+ symbol: "KAVA",
4834
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4835
+ },
4629
4836
  top: [],
4630
4837
  stables: [
4631
4838
  {
@@ -4639,6 +4846,10 @@ var init_featuredAssets = __esm({
4639
4846
  ]
4640
4847
  },
4641
4848
  "250": {
4849
+ nativeAsset: {
4850
+ symbol: "FTM",
4851
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4852
+ },
4642
4853
  top: [
4643
4854
  {
4644
4855
  symbol: "STG",
@@ -4653,6 +4864,10 @@ var init_featuredAssets = __esm({
4653
4864
  ]
4654
4865
  },
4655
4866
  "252": {
4867
+ nativeAsset: {
4868
+ symbol: "FRAX",
4869
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4870
+ },
4656
4871
  top: [
4657
4872
  {
4658
4873
  symbol: "CRV",
@@ -4667,6 +4882,10 @@ var init_featuredAssets = __esm({
4667
4882
  ]
4668
4883
  },
4669
4884
  "295": {
4885
+ nativeAsset: {
4886
+ symbol: "HBAR",
4887
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4888
+ },
4670
4889
  top: [],
4671
4890
  stables: [
4672
4891
  {
@@ -4676,6 +4895,10 @@ var init_featuredAssets = __esm({
4676
4895
  ]
4677
4896
  },
4678
4897
  "314": {
4898
+ nativeAsset: {
4899
+ symbol: "FIL",
4900
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4901
+ },
4679
4902
  top: [],
4680
4903
  stables: [
4681
4904
  {
@@ -4685,6 +4908,10 @@ var init_featuredAssets = __esm({
4685
4908
  ]
4686
4909
  },
4687
4910
  "3338": {
4911
+ nativeAsset: {
4912
+ symbol: "PEAQ",
4913
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4914
+ },
4688
4915
  top: [],
4689
4916
  stables: [
4690
4917
  {
@@ -4698,6 +4925,10 @@ var init_featuredAssets = __esm({
4698
4925
  ]
4699
4926
  },
4700
4927
  "42161": {
4928
+ nativeAsset: {
4929
+ symbol: "ETH",
4930
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4931
+ },
4701
4932
  top: [
4702
4933
  {
4703
4934
  symbol: "AAVE",
@@ -4788,6 +5019,10 @@ var init_featuredAssets = __esm({
4788
5019
  ]
4789
5020
  },
4790
5021
  "42220": {
5022
+ nativeAsset: {
5023
+ symbol: "CELO",
5024
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
5025
+ },
4791
5026
  top: [],
4792
5027
  stables: [
4793
5028
  {
@@ -4801,6 +5036,10 @@ var init_featuredAssets = __esm({
4801
5036
  ]
4802
5037
  },
4803
5038
  "43114": {
5039
+ nativeAsset: {
5040
+ symbol: "AVAX",
5041
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
5042
+ },
4804
5043
  top: [
4805
5044
  {
4806
5045
  symbol: "PENDLE",
@@ -4839,6 +5078,10 @@ var init_featuredAssets = __esm({
4839
5078
  ]
4840
5079
  },
4841
5080
  "5000": {
5081
+ nativeAsset: {
5082
+ symbol: "MNT",
5083
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
5084
+ },
4842
5085
  top: [],
4843
5086
  stables: [
4844
5087
  {
@@ -4856,6 +5099,10 @@ var init_featuredAssets = __esm({
4856
5099
  ]
4857
5100
  },
4858
5101
  "534352": {
5102
+ nativeAsset: {
5103
+ symbol: "ETH",
5104
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
5105
+ },
4859
5106
  top: [],
4860
5107
  stables: [
4861
5108
  {
@@ -4869,6 +5116,10 @@ var init_featuredAssets = __esm({
4869
5116
  ]
4870
5117
  },
4871
5118
  "56": {
5119
+ nativeAsset: {
5120
+ symbol: "BNB",
5121
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
5122
+ },
4872
5123
  top: [
4873
5124
  {
4874
5125
  symbol: "AAVE",
@@ -4931,6 +5182,10 @@ var init_featuredAssets = __esm({
4931
5182
  ]
4932
5183
  },
4933
5184
  "59144": {
5185
+ nativeAsset: {
5186
+ symbol: "ETH",
5187
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
5188
+ },
4934
5189
  top: [
4935
5190
  {
4936
5191
  symbol: "Cake",
@@ -4945,6 +5200,10 @@ var init_featuredAssets = __esm({
4945
5200
  ]
4946
5201
  },
4947
5202
  "80094": {
5203
+ nativeAsset: {
5204
+ symbol: "BERA",
5205
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
5206
+ },
4948
5207
  top: [],
4949
5208
  stables: [
4950
5209
  {
@@ -4954,6 +5213,10 @@ var init_featuredAssets = __esm({
4954
5213
  ]
4955
5214
  },
4956
5215
  "8453": {
5216
+ nativeAsset: {
5217
+ symbol: "ETH",
5218
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
5219
+ },
4957
5220
  top: [
4958
5221
  {
4959
5222
  symbol: "AAVE",
@@ -5036,6 +5299,10 @@ var init_featuredAssets = __esm({
5036
5299
  ]
5037
5300
  },
5038
5301
  "999": {
5302
+ nativeAsset: {
5303
+ symbol: "HYPE",
5304
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
5305
+ },
5039
5306
  top: [
5040
5307
  {
5041
5308
  symbol: "AXL",
@@ -5068,7 +5335,12 @@ var init_featuredAssets = __esm({
5068
5335
  ]
5069
5336
  },
5070
5337
  "axelar-dojo-1": {
5071
- top: [],
5338
+ top: [
5339
+ {
5340
+ symbol: "AXL",
5341
+ address: "uaxl"
5342
+ }
5343
+ ],
5072
5344
  stables: [
5073
5345
  {
5074
5346
  symbol: "USDe",
@@ -5211,6 +5483,10 @@ var init_featuredAssets = __esm({
5211
5483
  "noble-1": {
5212
5484
  top: [],
5213
5485
  stables: [
5486
+ {
5487
+ symbol: "USDC",
5488
+ address: "uusdc"
5489
+ },
5214
5490
  {
5215
5491
  symbol: "USDY",
5216
5492
  address: "ausdy"
@@ -5248,6 +5524,72 @@ var init_featuredAssets = __esm({
5248
5524
  }
5249
5525
  ]
5250
5526
  },
5527
+ solana: {
5528
+ nativeAsset: {
5529
+ symbol: "SOL",
5530
+ address: "So11111111111111111111111111111111111111111"
5531
+ },
5532
+ top: [
5533
+ {
5534
+ symbol: "RENDER",
5535
+ address: "rndrizKT3MK1iimdxRdWabcF7Zg7AR5T4nud4EkHBof"
5536
+ },
5537
+ {
5538
+ symbol: "SUSHI",
5539
+ address: "ChVzxWRmrTeSgwd3Ui3UumcN8KX7VK3WaD4KGeSKpypj"
5540
+ },
5541
+ {
5542
+ symbol: "ARB",
5543
+ address: "8LH3QMo7xkMJx85Kg4pfiQY1g1ZgiVEe1KktSpaT89mP"
5544
+ },
5545
+ {
5546
+ symbol: "cbBTC",
5547
+ address: "cbbtcf3aa214zXHbiAZQwf4122FBYbraNdFqgw4iMij"
5548
+ },
5549
+ {
5550
+ symbol: "Bonk",
5551
+ address: "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"
5552
+ }
5553
+ ],
5554
+ stables: [
5555
+ {
5556
+ symbol: "USDT",
5557
+ address: "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"
5558
+ },
5559
+ {
5560
+ symbol: "USDC",
5561
+ address: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
5562
+ },
5563
+ {
5564
+ symbol: "USDe",
5565
+ address: "DEkqHyPN7GMRJ5cArtQFAWefqbZb33Hyf6s5iCwjEonT"
5566
+ },
5567
+ {
5568
+ symbol: "PYUSD",
5569
+ address: "2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo"
5570
+ },
5571
+ {
5572
+ symbol: "FDUSD",
5573
+ address: "9zNQRsGLjNKwCUU5Gq5LR8beUCPzQMVMqKAi3SSZh54u"
5574
+ },
5575
+ {
5576
+ symbol: "USDS",
5577
+ address: "USDSwr9ApdHk5bvJKMjzff41FfuX8bSxdKcR81vTwcA"
5578
+ },
5579
+ {
5580
+ symbol: "EURC",
5581
+ address: "HzwqbKZw8HxMN6bF2yFZNrht3c2iXXzpKcFu7uBEDKtr"
5582
+ },
5583
+ {
5584
+ symbol: "USDP",
5585
+ address: "HVbpJAQGNpkgBaYBZQBR1t7yFdvaYVp2vCQQfKKEN4tM"
5586
+ },
5587
+ {
5588
+ symbol: "USDY",
5589
+ address: "A1KLoBrKBde8Ty9qtNQUtq3C2ortoC3u7twggz7sEto6"
5590
+ }
5591
+ ]
5592
+ },
5251
5593
  "ssc-1": {
5252
5594
  top: [
5253
5595
  {
@@ -5300,6 +5642,48 @@ var init_featuredAssets = __esm({
5300
5642
  address: "ibc/F082B65C88E4B6D5EF1DB243CDA1D331D002759E938A0F5CD3FFDC5D53B3E349"
5301
5643
  }
5302
5644
  ]
5645
+ },
5646
+ "solana-mainnet-beta": {
5647
+ nativeAsset: {
5648
+ symbol: "SOL",
5649
+ address: "So11111111111111111111111111111111111111111"
5650
+ },
5651
+ stables: [
5652
+ {
5653
+ symbol: "USDC",
5654
+ address: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
5655
+ },
5656
+ {
5657
+ symbol: "USDT",
5658
+ address: "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"
5659
+ }
5660
+ ],
5661
+ top: [
5662
+ {
5663
+ symbol: "JUP",
5664
+ address: "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN"
5665
+ },
5666
+ {
5667
+ symbol: "BONK",
5668
+ address: "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"
5669
+ },
5670
+ {
5671
+ symbol: "WIF",
5672
+ address: "EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm"
5673
+ },
5674
+ {
5675
+ symbol: "PYTH",
5676
+ address: "HZ1JovNiVvGrGNiiYvEozEVgZ58xaU3RKwX8eACQBCt3"
5677
+ },
5678
+ {
5679
+ symbol: "RAY",
5680
+ address: "4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"
5681
+ },
5682
+ {
5683
+ symbol: "JITO",
5684
+ address: "J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn"
5685
+ }
5686
+ ]
5303
5687
  }
5304
5688
  };
5305
5689
  }
@@ -5367,20 +5751,40 @@ function useTokens(chainId) {
5367
5751
  const filtered2 = tokenDefs.filter(
5368
5752
  (item) => chainMap.has(item.chainId.toString())
5369
5753
  );
5370
- setTokens(filtered2.map(mapTokenDefToToken));
5754
+ const mapped2 = filtered2.map(mapTokenDefToToken);
5755
+ (0, import_react3.startTransition)(() => {
5756
+ setTokens(mapped2);
5757
+ });
5758
+ return;
5759
+ }
5760
+ if (!queryDependency) {
5761
+ await registry.ensureLoaded();
5762
+ if (cancelled) return;
5763
+ const tokenDefs = registry.tokens(chainId);
5764
+ const filtered2 = tokenDefs.filter(
5765
+ (item) => chainMap.has(item.chainId.toString())
5766
+ );
5767
+ const mapped2 = filtered2.map(mapTokenDefToToken);
5768
+ (0, import_react3.startTransition)(() => {
5769
+ setTokens(mapped2);
5770
+ setHasNextPage(false);
5771
+ });
5371
5772
  return;
5372
5773
  }
5373
5774
  const page = await registry.tokensPage(chainId, {
5374
- q: queryDependency || void 0,
5775
+ q: queryDependency,
5375
5776
  limit: DEFAULT_PAGE_LIMIT
5376
5777
  });
5377
5778
  if (cancelled) return;
5378
5779
  const filtered = page.data.filter(
5379
5780
  (item) => chainMap.has(item.chainId.toString())
5380
5781
  );
5381
- setTokens(filtered.map(mapTokenDefToToken));
5382
- setNextCursor(page.pageInfo.nextCursor);
5383
- setHasNextPage(page.pageInfo.hasNextPage);
5782
+ const mapped = filtered.map(mapTokenDefToToken);
5783
+ (0, import_react3.startTransition)(() => {
5784
+ setTokens(mapped);
5785
+ setNextCursor(page.pageInfo.nextCursor);
5786
+ setHasNextPage(page.pageInfo.hasNextPage);
5787
+ });
5384
5788
  } catch (err) {
5385
5789
  if (!cancelled) {
5386
5790
  const message = err instanceof Error ? err.message : "Failed to load tokens";
@@ -5426,39 +5830,67 @@ function useTokens(chainId) {
5426
5830
  setIsLoadingMore(false);
5427
5831
  }
5428
5832
  };
5429
- const featuredAddresses = (0, import_react3.useMemo)(() => {
5833
+ const chainFeatured = (0, import_react3.useMemo)(() => {
5430
5834
  const key = chainId?.toString() ?? "";
5431
- const chain = FEATURED[key];
5432
- if (!chain) return /* @__PURE__ */ new Map();
5835
+ return FEATURED[key] ?? null;
5836
+ }, [chainId]);
5837
+ const nativeAddresses = (0, import_react3.useMemo)(() => {
5838
+ const set = new Set(BASE_NATIVE_ADDRESSES);
5839
+ if (chainFeatured?.nativeAsset?.address) {
5840
+ set.add(chainFeatured.nativeAsset.address.toLowerCase());
5841
+ }
5842
+ return set;
5843
+ }, [chainFeatured]);
5844
+ const nativeSymbols = (0, import_react3.useMemo)(() => {
5845
+ const symbols = /* @__PURE__ */ new Set();
5846
+ if (chainFeatured?.nativeAsset?.symbol) {
5847
+ symbols.add(chainFeatured.nativeAsset.symbol.toUpperCase());
5848
+ }
5849
+ if (chainId) {
5850
+ const chainDef = chainMap.get(chainId.toString());
5851
+ const sym = chainDef?.nativeCurrency?.symbol;
5852
+ if (sym) symbols.add(sym.toUpperCase());
5853
+ }
5854
+ return symbols;
5855
+ }, [chainId, chainMap, chainFeatured]);
5856
+ const featuredAddresses = (0, import_react3.useMemo)(() => {
5857
+ if (!chainFeatured) return /* @__PURE__ */ new Map();
5433
5858
  const map = /* @__PURE__ */ new Map();
5434
5859
  let order = 0;
5435
- for (const s of chain.stables) map.set(s.address.toLowerCase(), order++);
5436
- for (const t of chain.top) map.set(t.address.toLowerCase(), order++);
5860
+ for (const s of chainFeatured.stables)
5861
+ map.set(s.address.toLowerCase(), order++);
5862
+ for (const t of chainFeatured.top)
5863
+ map.set(t.address.toLowerCase(), order++);
5437
5864
  return map;
5438
- }, [chainId]);
5439
- const nativeSymbols = (0, import_react3.useMemo)(() => {
5440
- if (!chainId) return /* @__PURE__ */ new Set();
5441
- const chain = chainMap.get(chainId.toString());
5442
- const sym = chain?.nativeCurrency?.symbol;
5443
- if (!sym) return /* @__PURE__ */ new Set();
5444
- return /* @__PURE__ */ new Set([sym.toUpperCase()]);
5445
- }, [chainId, chainMap]);
5865
+ }, [chainFeatured]);
5866
+ const featuredSymbols = (0, import_react3.useMemo)(() => {
5867
+ if (!chainFeatured) return /* @__PURE__ */ new Map();
5868
+ const map = /* @__PURE__ */ new Map();
5869
+ let order = 0;
5870
+ for (const s of chainFeatured.stables)
5871
+ map.set(s.symbol.toUpperCase(), order++);
5872
+ for (const t of chainFeatured.top) map.set(t.symbol.toUpperCase(), order++);
5873
+ return map;
5874
+ }, [chainFeatured]);
5446
5875
  const filteredTokens = (0, import_react3.useMemo)(() => {
5447
5876
  const query = searchQuery.toLowerCase().trim();
5448
5877
  const source = query.length === 0 || tokensPaginationEnabled ? tokens : tokens.filter(
5449
5878
  (token) => token.symbol.toLowerCase().includes(query) || token.name.toLowerCase().includes(query) || token.address.toLowerCase().includes(query)
5450
5879
  );
5451
5880
  return sortTokensByPopularity(source, {
5452
- nativeAddresses: NATIVE_ADDRESSES,
5881
+ nativeAddresses,
5453
5882
  nativeSymbols,
5454
- featuredAddresses
5883
+ featuredAddresses,
5884
+ featuredSymbols
5455
5885
  });
5456
5886
  }, [
5457
5887
  tokens,
5458
5888
  searchQuery,
5459
5889
  tokensPaginationEnabled,
5890
+ nativeAddresses,
5460
5891
  nativeSymbols,
5461
- featuredAddresses
5892
+ featuredAddresses,
5893
+ featuredSymbols
5462
5894
  ]);
5463
5895
  return {
5464
5896
  tokens,
@@ -5472,7 +5904,7 @@ function useTokens(chainId) {
5472
5904
  isLoadingMore
5473
5905
  };
5474
5906
  }
5475
- var import_react3, FEATURED, NATIVE_ADDRESSES, DEFAULT_PAGE_LIMIT;
5907
+ var import_react3, FEATURED, BASE_NATIVE_ADDRESSES, DEFAULT_PAGE_LIMIT;
5476
5908
  var init_useTokens = __esm({
5477
5909
  "src/core/useTokens.ts"() {
5478
5910
  "use strict";
@@ -5484,10 +5916,10 @@ var init_useTokens = __esm({
5484
5916
  init_chainHelpers();
5485
5917
  init_featuredAssets();
5486
5918
  FEATURED = featuredAssets_default;
5487
- NATIVE_ADDRESSES = /* @__PURE__ */ new Set([
5919
+ BASE_NATIVE_ADDRESSES = /* @__PURE__ */ new Set([
5488
5920
  NATIVE_EVM2.toLowerCase(),
5489
5921
  NATIVE_SOLANA2.toLowerCase(),
5490
- // Some EVM chains (e.g. ZKsync, HyperEVM) use the zero address for the native token
5922
+ // Some EVM chains (e.g. ZKsync) use the zero address for the native token
5491
5923
  "0x0000000000000000000000000000000000000000"
5492
5924
  ]);
5493
5925
  DEFAULT_PAGE_LIMIT = 100;