@trustware/sdk-staging 1.1.8-staging.7 → 1.1.9-staging.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.
Files changed (44) hide show
  1. package/README.md +0 -2
  2. package/dist/{blockchain-BONedEsU.d.cts → blockchain-BxAFzp0s.d.cts} +5 -1
  3. package/dist/{blockchain-BONedEsU.d.ts → blockchain-BxAFzp0s.d.ts} +5 -1
  4. package/dist/constants.cjs +1 -1
  5. package/dist/constants.mjs +1 -1
  6. package/dist/{core-DnrIv4h8.d.ts → core-D_jx805U.d.cts} +33 -5
  7. package/dist/{core-BUe031hU.d.cts → core-p_5BLdbE.d.ts} +33 -5
  8. package/dist/core.cjs +549 -80
  9. package/dist/core.cjs.map +1 -1
  10. package/dist/core.d.cts +4 -4
  11. package/dist/core.d.ts +4 -4
  12. package/dist/core.mjs +550 -81
  13. package/dist/core.mjs.map +1 -1
  14. package/dist/{detect-DlbgTrkm.d.cts → detect--pmNlAHv.d.cts} +1 -1
  15. package/dist/{detect-MWKHLhn9.d.ts → detect-qAX6I4JI.d.ts} +1 -1
  16. package/dist/index.cjs +2380 -1674
  17. package/dist/index.cjs.map +1 -1
  18. package/dist/index.d.cts +8 -8
  19. package/dist/index.d.ts +8 -8
  20. package/dist/index.mjs +2090 -1383
  21. package/dist/index.mjs.map +1 -1
  22. package/dist/{manager-aOd3vkF9.d.ts → manager-DFQkemW0.d.ts} +1 -3
  23. package/dist/{manager-DKVW7zeh.d.cts → manager-aMi4_Ss6.d.cts} +1 -3
  24. package/dist/smart-account.cjs +1 -2
  25. package/dist/smart-account.cjs.map +1 -1
  26. package/dist/smart-account.d.cts +24 -24
  27. package/dist/smart-account.d.ts +24 -24
  28. package/dist/smart-account.mjs +1 -2
  29. package/dist/smart-account.mjs.map +1 -1
  30. package/dist/{types-MtdjJgwT.d.ts → types-BJY9r-mz.d.ts} +1 -1
  31. package/dist/{types-B3nKHW6H.d.cts → types-DX3HtFcn.d.cts} +1 -1
  32. package/dist/wallet.cjs +22 -7
  33. package/dist/wallet.cjs.map +1 -1
  34. package/dist/wallet.d.cts +4 -4
  35. package/dist/wallet.d.ts +4 -4
  36. package/dist/wallet.mjs +22 -7
  37. package/dist/wallet.mjs.map +1 -1
  38. package/dist/widget.cjs +2340 -1634
  39. package/dist/widget.cjs.map +1 -1
  40. package/dist/widget.d.cts +2 -2
  41. package/dist/widget.d.ts +2 -2
  42. package/dist/widget.mjs +2050 -1343
  43. package/dist/widget.mjs.map +1 -1
  44. package/package.json +3 -2
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.9-staging.1";
57
57
  API_ROOT = "https://bv-staging-api.trustware.io";
58
58
  API_PREFIX = "/api";
59
59
  WALLETCONNECT_PROJECT_ID = "72ea74c400f5111d43aea638d7d83a24";
@@ -71,16 +71,6 @@ var init_config2 = __esm({
71
71
  });
72
72
 
73
73
  // src/core/http.ts
74
- var http_exports = {};
75
- __export(http_exports, {
76
- RateLimitError: () => RateLimitError,
77
- apiBase: () => apiBase,
78
- assertOK: () => assertOK,
79
- jsonHeaders: () => jsonHeaders,
80
- parseRateLimitHeaders: () => parseRateLimitHeaders,
81
- rateLimitedFetch: () => rateLimitedFetch,
82
- validateSdkAccess: () => validateSdkAccess
83
- });
84
74
  function apiBase() {
85
75
  return `${API_ROOT}${API_PREFIX}`;
86
76
  }
@@ -278,11 +268,6 @@ var init_chains = __esm({
278
268
  });
279
269
 
280
270
  // src/registry.ts
281
- var registry_exports = {};
282
- __export(registry_exports, {
283
- NATIVE: () => NATIVE,
284
- Registry: () => Registry
285
- });
286
271
  function getChainAliases(chain) {
287
272
  const values = [
288
273
  chain.chainId,
@@ -434,6 +419,24 @@ var init_registry = __esm({
434
419
  }
435
420
  this._chainsLoaded = true;
436
421
  }
422
+ batchStoreTokens(tokensArr) {
423
+ for (const token of tokensArr) {
424
+ const chainRef = token?.chainId;
425
+ if (chainRef == null) continue;
426
+ const normalized = normalizeToken(token);
427
+ const resolvedChain = this.chain(chainRef);
428
+ const aliases = resolvedChain ? getChainAliases(resolvedChain) : [normalizeChainKey(chainRef)];
429
+ const key = tokenKey(normalized);
430
+ for (const alias of aliases) {
431
+ const existingByKey = this._tokensByChainKey.get(alias) ?? /* @__PURE__ */ new Map();
432
+ existingByKey.set(key, normalized);
433
+ this._tokensByChainKey.set(alias, existingByKey);
434
+ }
435
+ }
436
+ for (const [chainKey, byKey] of this._tokensByChainKey.entries()) {
437
+ this._tokensByChain.set(chainKey, Array.from(byKey.values()));
438
+ }
439
+ }
437
440
  async loadAllTokens() {
438
441
  await this.ensureChainsLoaded();
439
442
  const tokensRes = await fetch(`${this.baseURL}/v1/routes/tokens`, {
@@ -442,9 +445,7 @@ var init_registry = __esm({
442
445
  if (!tokensRes.ok) throw new Error(`tokens: HTTP ${tokensRes.status}`);
443
446
  const tokens = await tokensRes.json();
444
447
  const tokensArr = Array.isArray(tokens) ? tokens : tokens.data ?? [];
445
- for (const token of tokensArr) {
446
- this.storeToken(token);
447
- }
448
+ this.batchStoreTokens(tokensArr);
448
449
  this._loaded = true;
449
450
  }
450
451
  prunePageCache() {
@@ -1800,7 +1801,7 @@ async function parseStreamingBalances(response, address, options = {}) {
1800
1801
  }
1801
1802
  return stream();
1802
1803
  }
1803
- async function getBalances(chainRef, address) {
1804
+ async function getBalances(chainRef, address, opts) {
1804
1805
  const reg = await ensureRegistry();
1805
1806
  const chain = reg.chain(chainRef);
1806
1807
  if (!chain) return [];
@@ -1815,8 +1816,10 @@ async function getBalances(chainRef, address) {
1815
1816
  chain.nativeCurrency?.decimals ?? "",
1816
1817
  normalizeChainType(chain) ?? ""
1817
1818
  ].join(":");
1818
- const cached = balanceCache.get(cacheKey);
1819
- if (cached) return cached;
1819
+ if (!opts?.forceRefresh) {
1820
+ const cached = balanceCache.get(cacheKey);
1821
+ if (cached) return cached;
1822
+ }
1820
1823
  const url = `${apiBase()}/v1/data/wallets/${encodeURIComponent(chainKey)}/${trimmedAddress}/balances`;
1821
1824
  const response = await fetch(url, {
1822
1825
  method: "GET",
@@ -2129,11 +2132,27 @@ function toSolanaWalletInterface(provider) {
2129
2132
  serializedTransactionBase64
2130
2133
  );
2131
2134
  if (provider.signAndSendTransaction) {
2132
- const result = await provider.signAndSendTransaction(transaction, {
2133
- preflightCommitment: "confirmed"
2134
- });
2135
- if (typeof result === "string") return result;
2136
- if (result?.signature) return result.signature;
2135
+ const MAX_INTERNAL_ERROR_ATTEMPTS = 3;
2136
+ const INTERNAL_ERROR_RETRY_DELAY_MS = 500;
2137
+ for (let attempt = 1; attempt <= MAX_INTERNAL_ERROR_ATTEMPTS; attempt++) {
2138
+ try {
2139
+ const result = await provider.signAndSendTransaction(transaction, {
2140
+ skipPreflight: true
2141
+ });
2142
+ if (typeof result === "string") return result;
2143
+ if (result?.signature) return result.signature;
2144
+ break;
2145
+ } catch (err) {
2146
+ const code = err?.code;
2147
+ if (code === -32603 && attempt < MAX_INTERNAL_ERROR_ATTEMPTS) {
2148
+ await new Promise(
2149
+ (resolve) => setTimeout(resolve, INTERNAL_ERROR_RETRY_DELAY_MS * attempt)
2150
+ );
2151
+ continue;
2152
+ }
2153
+ throw err;
2154
+ }
2155
+ }
2137
2156
  }
2138
2157
  if (!provider.signTransaction) {
2139
2158
  throw new Error("Connected Solana wallet cannot sign transactions");
@@ -3863,6 +3882,10 @@ var init_routes = __esm({
3863
3882
  });
3864
3883
 
3865
3884
  // src/core/registryClient.ts
3885
+ var registryClient_exports = {};
3886
+ __export(registryClient_exports, {
3887
+ getSharedRegistry: () => getSharedRegistry
3888
+ });
3866
3889
  function registryCacheKey() {
3867
3890
  const base = apiBase();
3868
3891
  const apiKey = TrustwareConfigStore.peek()?.apiKey ?? "__uninitialized__";
@@ -3950,6 +3973,135 @@ var init_chainHelpers = __esm({
3950
3973
  }
3951
3974
  });
3952
3975
 
3976
+ // src/utils/index.ts
3977
+ function resolveChainLabel(chain) {
3978
+ return chain.networkName || chain.axelarChainName || (chain.id != null ? String(chain.id) : void 0) || (chain.chainId != null ? String(chain.chainId) : void 0) || chain.networkIdentifier || "Chain";
3979
+ }
3980
+ var init_utils = __esm({
3981
+ "src/utils/index.ts"() {
3982
+ "use strict";
3983
+ }
3984
+ });
3985
+
3986
+ // src/widget/data/popularChains.json
3987
+ var popularChains_default;
3988
+ var init_popularChains = __esm({
3989
+ "src/widget/data/popularChains.json"() {
3990
+ popularChains_default = {
3991
+ byTvl: [
3992
+ {
3993
+ name: "Ethereum",
3994
+ chainId: 1
3995
+ },
3996
+ {
3997
+ name: "BSC",
3998
+ chainId: 56
3999
+ },
4000
+ {
4001
+ name: "Solana"
4002
+ },
4003
+ {
4004
+ name: "Tron"
4005
+ },
4006
+ {
4007
+ name: "Bitcoin"
4008
+ },
4009
+ {
4010
+ name: "Base",
4011
+ chainId: 8453
4012
+ },
4013
+ {
4014
+ name: "Hyperliquid L1"
4015
+ },
4016
+ {
4017
+ name: "Provenance"
4018
+ },
4019
+ {
4020
+ name: "Arbitrum",
4021
+ chainId: 42161
4022
+ },
4023
+ {
4024
+ name: "Polygon",
4025
+ chainId: 137
4026
+ },
4027
+ {
4028
+ name: "Plasma",
4029
+ chainId: 9745
4030
+ },
4031
+ {
4032
+ name: "Avalanche",
4033
+ chainId: 43114
4034
+ },
4035
+ {
4036
+ name: "Sui"
4037
+ },
4038
+ {
4039
+ name: "Monad",
4040
+ chainId: 143
4041
+ },
4042
+ {
4043
+ name: "OP Mainnet",
4044
+ chainId: 10
4045
+ },
4046
+ {
4047
+ name: "Cronos",
4048
+ chainId: 25
4049
+ },
4050
+ {
4051
+ name: "Stellar"
4052
+ },
4053
+ {
4054
+ name: "Starknet"
4055
+ },
4056
+ {
4057
+ name: "Near"
4058
+ },
4059
+ {
4060
+ name: "Mantle",
4061
+ chainId: 5e3
4062
+ },
4063
+ {
4064
+ name: "Movement",
4065
+ chainId: 3073
4066
+ },
4067
+ {
4068
+ name: "Ink",
4069
+ chainId: 57073
4070
+ },
4071
+ {
4072
+ name: "Flare"
4073
+ },
4074
+ {
4075
+ name: "Aptos"
4076
+ },
4077
+ {
4078
+ name: "MegaETH",
4079
+ chainId: 4326
4080
+ },
4081
+ {
4082
+ name: "Rootstock",
4083
+ chainId: 30
4084
+ },
4085
+ {
4086
+ name: "dYdX"
4087
+ },
4088
+ {
4089
+ name: "Cardano"
4090
+ },
4091
+ {
4092
+ name: "Stacks"
4093
+ },
4094
+ {
4095
+ name: "X Layer"
4096
+ }
4097
+ ],
4098
+ popularLimit: 8,
4099
+ updatedAt: "2026-06-19",
4100
+ source: "https://api.llama.fi/v2/chains \u2014 sorted by TVL"
4101
+ };
4102
+ }
4103
+ });
4104
+
3953
4105
  // src/core/useChains.ts
3954
4106
  import { useState, useEffect as useEffect2, useMemo } from "react";
3955
4107
  function filterSupportedChains(chains) {
@@ -4024,20 +4176,40 @@ function useChains() {
4024
4176
  const { popularChains, otherChains } = useMemo(() => {
4025
4177
  const popular = [];
4026
4178
  const other = [];
4179
+ const registryEvmIds = new Set(
4180
+ chains.map((c) => Number(c.chainId ?? c.id))
4181
+ );
4182
+ const hasSolana = chains.some((c) => normalizeChainType2(c) === "solana");
4183
+ const popularEvmIds = [];
4184
+ let solanaIsPopular = false;
4185
+ for (const entry of POPULAR_CHAINS_BY_TVL) {
4186
+ if (popularEvmIds.length + (solanaIsPopular ? 1 : 0) >= POPULAR_LIMIT)
4187
+ break;
4188
+ if (typeof entry.chainId === "number" && registryEvmIds.has(entry.chainId)) {
4189
+ popularEvmIds.push(entry.chainId);
4190
+ } else if (!solanaIsPopular && hasSolana && entry.name.toLowerCase() === "solana") {
4191
+ solanaIsPopular = true;
4192
+ }
4193
+ }
4194
+ const popularIdSet = new Set(popularEvmIds);
4027
4195
  for (const chain of chains) {
4028
4196
  const chainId = Number(chain.chainId ?? chain.id);
4029
- if (POPULAR_CHAIN_IDS.has(chainId)) {
4197
+ if (popularIdSet.has(chainId) || solanaIsPopular && normalizeChainType2(chain) === "solana") {
4030
4198
  popular.push(chain);
4031
4199
  } else {
4032
4200
  other.push(chain);
4033
4201
  }
4034
4202
  }
4035
- const popularOrder = [1, 137, 8453];
4036
4203
  popular.sort((a, b) => {
4037
4204
  const aId = Number(a.chainId ?? a.id);
4038
4205
  const bId = Number(b.chainId ?? b.id);
4039
- return popularOrder.indexOf(aId) - popularOrder.indexOf(bId);
4206
+ const aRank = popularEvmIds.indexOf(aId);
4207
+ const bRank = popularEvmIds.indexOf(bId);
4208
+ return (aRank === -1 ? 999 : aRank) - (bRank === -1 ? 999 : bRank);
4040
4209
  });
4210
+ other.sort(
4211
+ (a, b) => resolveChainLabel(a).localeCompare(resolveChainLabel(b))
4212
+ );
4041
4213
  return { popularChains: popular, otherChains: other };
4042
4214
  }, [chains]);
4043
4215
  return {
@@ -4049,20 +4221,16 @@ function useChains() {
4049
4221
  error
4050
4222
  };
4051
4223
  }
4052
- var POPULAR_CHAIN_IDS;
4224
+ var POPULAR_CHAINS_BY_TVL, POPULAR_LIMIT;
4053
4225
  var init_useChains = __esm({
4054
4226
  "src/core/useChains.ts"() {
4055
4227
  "use strict";
4056
4228
  init_registryClient();
4057
4229
  init_chainHelpers();
4058
- POPULAR_CHAIN_IDS = /* @__PURE__ */ new Set([
4059
- 1,
4060
- // Ethereum Mainnet
4061
- 137,
4062
- // Polygon
4063
- 8453
4064
- // Base
4065
- ]);
4230
+ init_utils();
4231
+ init_popularChains();
4232
+ POPULAR_CHAINS_BY_TVL = popularChains_default.byTvl;
4233
+ POPULAR_LIMIT = popularChains_default.popularLimit;
4066
4234
  }
4067
4235
  });
4068
4236
 
@@ -4211,21 +4379,27 @@ function sortTokensByPopularity(tokens, options) {
4211
4379
  const nativeSet = options?.nativeAddresses ?? /* @__PURE__ */ new Set();
4212
4380
  const nativeSymbolSet = options?.nativeSymbols ?? /* @__PURE__ */ new Set();
4213
4381
  const featuredMap = options?.featuredAddresses ?? /* @__PURE__ */ new Map();
4382
+ const featuredSymMap = options?.featuredSymbols ?? /* @__PURE__ */ new Map();
4214
4383
  const getMajorRank = (token) => {
4215
4384
  const addr = normalizeAddress2(token.address);
4385
+ const sym = normalizeSymbol(token.symbol);
4216
4386
  if (nativeSet.has(addr)) return 0;
4217
- if (nativeSymbolSet.has(normalizeSymbol(token.symbol))) return 0;
4387
+ if (nativeSymbolSet.has(sym)) return 0;
4218
4388
  if (featuredMap.has(addr)) return 1;
4389
+ if (featuredSymMap.has(sym)) return 1;
4219
4390
  return getGroupRank(token) + 2;
4220
4391
  };
4392
+ const getFeaturedOrder = (token) => {
4393
+ const byAddr = featuredMap.get(normalizeAddress2(token.address));
4394
+ if (byAddr !== void 0) return byAddr;
4395
+ return featuredSymMap.get(normalizeSymbol(token.symbol)) ?? 0;
4396
+ };
4221
4397
  return tokens.map((token, index) => ({ token, index })).sort((a, b) => {
4222
4398
  const majorA = getMajorRank(a.token);
4223
4399
  const majorB = getMajorRank(b.token);
4224
4400
  if (majorA !== majorB) return majorA - majorB;
4225
4401
  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;
4402
+ return getFeaturedOrder(a.token) - getFeaturedOrder(b.token);
4229
4403
  }
4230
4404
  const chainPopularityDiff = compareChainPopularity(a.token, b.token);
4231
4405
  if (chainPopularityDiff !== 0) return chainPopularityDiff;
@@ -4291,6 +4465,10 @@ var init_featuredAssets = __esm({
4291
4465
  "src/widget/data/featuredAssets.json"() {
4292
4466
  featuredAssets_default = {
4293
4467
  "1": {
4468
+ nativeAsset: {
4469
+ symbol: "ETH",
4470
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4471
+ },
4294
4472
  top: [
4295
4473
  {
4296
4474
  symbol: "AAVE",
@@ -4397,11 +4575,11 @@ var init_featuredAssets = __esm({
4397
4575
  ]
4398
4576
  },
4399
4577
  "10": {
4578
+ nativeAsset: {
4579
+ symbol: "ETH",
4580
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4581
+ },
4400
4582
  top: [
4401
- {
4402
- symbol: "OP",
4403
- address: "0x4200000000000000000000000000000000000042"
4404
- },
4405
4583
  {
4406
4584
  symbol: "AAVE",
4407
4585
  address: "0x76fb31fb4af56892a25e32cfc43de717950c9278"
@@ -4425,6 +4603,10 @@ var init_featuredAssets = __esm({
4425
4603
  {
4426
4604
  symbol: "STG",
4427
4605
  address: "0x296f55f8fb28e498b858d0bcda06d955b2cb3f97"
4606
+ },
4607
+ {
4608
+ symbol: "OP",
4609
+ address: "0x4200000000000000000000000000000000000042"
4428
4610
  }
4429
4611
  ],
4430
4612
  stables: [
@@ -4459,6 +4641,10 @@ var init_featuredAssets = __esm({
4459
4641
  ]
4460
4642
  },
4461
4643
  "100": {
4644
+ nativeAsset: {
4645
+ symbol: "XDAI",
4646
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4647
+ },
4462
4648
  top: [],
4463
4649
  stables: [
4464
4650
  {
@@ -4472,6 +4658,10 @@ var init_featuredAssets = __esm({
4472
4658
  ]
4473
4659
  },
4474
4660
  "1284": {
4661
+ nativeAsset: {
4662
+ symbol: "GLMR",
4663
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4664
+ },
4475
4665
  top: [
4476
4666
  {
4477
4667
  symbol: "WELL",
@@ -4490,6 +4680,10 @@ var init_featuredAssets = __esm({
4490
4680
  ]
4491
4681
  },
4492
4682
  "13371": {
4683
+ nativeAsset: {
4684
+ symbol: "IMX",
4685
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4686
+ },
4493
4687
  top: [],
4494
4688
  stables: [
4495
4689
  {
@@ -4503,6 +4697,10 @@ var init_featuredAssets = __esm({
4503
4697
  ]
4504
4698
  },
4505
4699
  "137": {
4700
+ nativeAsset: {
4701
+ symbol: "POL",
4702
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4703
+ },
4506
4704
  top: [
4507
4705
  {
4508
4706
  symbol: "AAVE",
@@ -4573,6 +4771,10 @@ var init_featuredAssets = __esm({
4573
4771
  ]
4574
4772
  },
4575
4773
  "143": {
4774
+ nativeAsset: {
4775
+ symbol: "MON",
4776
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4777
+ },
4576
4778
  top: [],
4577
4779
  stables: [
4578
4780
  {
@@ -4582,6 +4784,10 @@ var init_featuredAssets = __esm({
4582
4784
  ]
4583
4785
  },
4584
4786
  "146": {
4787
+ nativeAsset: {
4788
+ symbol: "S",
4789
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4790
+ },
4585
4791
  top: [],
4586
4792
  stables: [
4587
4793
  {
@@ -4595,6 +4801,10 @@ var init_featuredAssets = __esm({
4595
4801
  ]
4596
4802
  },
4597
4803
  "1868": {
4804
+ nativeAsset: {
4805
+ symbol: "ETH",
4806
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4807
+ },
4598
4808
  top: [],
4599
4809
  stables: [
4600
4810
  {
@@ -4604,6 +4814,10 @@ var init_featuredAssets = __esm({
4604
4814
  ]
4605
4815
  },
4606
4816
  "2222": {
4817
+ nativeAsset: {
4818
+ symbol: "KAVA",
4819
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4820
+ },
4607
4821
  top: [],
4608
4822
  stables: [
4609
4823
  {
@@ -4617,6 +4831,10 @@ var init_featuredAssets = __esm({
4617
4831
  ]
4618
4832
  },
4619
4833
  "250": {
4834
+ nativeAsset: {
4835
+ symbol: "FTM",
4836
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4837
+ },
4620
4838
  top: [
4621
4839
  {
4622
4840
  symbol: "STG",
@@ -4631,6 +4849,10 @@ var init_featuredAssets = __esm({
4631
4849
  ]
4632
4850
  },
4633
4851
  "252": {
4852
+ nativeAsset: {
4853
+ symbol: "FRAX",
4854
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4855
+ },
4634
4856
  top: [
4635
4857
  {
4636
4858
  symbol: "CRV",
@@ -4645,6 +4867,10 @@ var init_featuredAssets = __esm({
4645
4867
  ]
4646
4868
  },
4647
4869
  "295": {
4870
+ nativeAsset: {
4871
+ symbol: "HBAR",
4872
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4873
+ },
4648
4874
  top: [],
4649
4875
  stables: [
4650
4876
  {
@@ -4654,6 +4880,10 @@ var init_featuredAssets = __esm({
4654
4880
  ]
4655
4881
  },
4656
4882
  "314": {
4883
+ nativeAsset: {
4884
+ symbol: "FIL",
4885
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4886
+ },
4657
4887
  top: [],
4658
4888
  stables: [
4659
4889
  {
@@ -4663,6 +4893,10 @@ var init_featuredAssets = __esm({
4663
4893
  ]
4664
4894
  },
4665
4895
  "3338": {
4896
+ nativeAsset: {
4897
+ symbol: "PEAQ",
4898
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4899
+ },
4666
4900
  top: [],
4667
4901
  stables: [
4668
4902
  {
@@ -4676,6 +4910,10 @@ var init_featuredAssets = __esm({
4676
4910
  ]
4677
4911
  },
4678
4912
  "42161": {
4913
+ nativeAsset: {
4914
+ symbol: "ETH",
4915
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
4916
+ },
4679
4917
  top: [
4680
4918
  {
4681
4919
  symbol: "AAVE",
@@ -4766,6 +5004,10 @@ var init_featuredAssets = __esm({
4766
5004
  ]
4767
5005
  },
4768
5006
  "42220": {
5007
+ nativeAsset: {
5008
+ symbol: "CELO",
5009
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
5010
+ },
4769
5011
  top: [],
4770
5012
  stables: [
4771
5013
  {
@@ -4779,6 +5021,10 @@ var init_featuredAssets = __esm({
4779
5021
  ]
4780
5022
  },
4781
5023
  "43114": {
5024
+ nativeAsset: {
5025
+ symbol: "AVAX",
5026
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
5027
+ },
4782
5028
  top: [
4783
5029
  {
4784
5030
  symbol: "PENDLE",
@@ -4817,6 +5063,10 @@ var init_featuredAssets = __esm({
4817
5063
  ]
4818
5064
  },
4819
5065
  "5000": {
5066
+ nativeAsset: {
5067
+ symbol: "MNT",
5068
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
5069
+ },
4820
5070
  top: [],
4821
5071
  stables: [
4822
5072
  {
@@ -4834,6 +5084,10 @@ var init_featuredAssets = __esm({
4834
5084
  ]
4835
5085
  },
4836
5086
  "534352": {
5087
+ nativeAsset: {
5088
+ symbol: "ETH",
5089
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
5090
+ },
4837
5091
  top: [],
4838
5092
  stables: [
4839
5093
  {
@@ -4847,6 +5101,10 @@ var init_featuredAssets = __esm({
4847
5101
  ]
4848
5102
  },
4849
5103
  "56": {
5104
+ nativeAsset: {
5105
+ symbol: "BNB",
5106
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
5107
+ },
4850
5108
  top: [
4851
5109
  {
4852
5110
  symbol: "AAVE",
@@ -4909,6 +5167,10 @@ var init_featuredAssets = __esm({
4909
5167
  ]
4910
5168
  },
4911
5169
  "59144": {
5170
+ nativeAsset: {
5171
+ symbol: "ETH",
5172
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
5173
+ },
4912
5174
  top: [
4913
5175
  {
4914
5176
  symbol: "Cake",
@@ -4923,6 +5185,10 @@ var init_featuredAssets = __esm({
4923
5185
  ]
4924
5186
  },
4925
5187
  "80094": {
5188
+ nativeAsset: {
5189
+ symbol: "BERA",
5190
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
5191
+ },
4926
5192
  top: [],
4927
5193
  stables: [
4928
5194
  {
@@ -4932,6 +5198,10 @@ var init_featuredAssets = __esm({
4932
5198
  ]
4933
5199
  },
4934
5200
  "8453": {
5201
+ nativeAsset: {
5202
+ symbol: "ETH",
5203
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
5204
+ },
4935
5205
  top: [
4936
5206
  {
4937
5207
  symbol: "AAVE",
@@ -5014,6 +5284,10 @@ var init_featuredAssets = __esm({
5014
5284
  ]
5015
5285
  },
5016
5286
  "999": {
5287
+ nativeAsset: {
5288
+ symbol: "HYPE",
5289
+ address: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
5290
+ },
5017
5291
  top: [
5018
5292
  {
5019
5293
  symbol: "AXL",
@@ -5046,7 +5320,12 @@ var init_featuredAssets = __esm({
5046
5320
  ]
5047
5321
  },
5048
5322
  "axelar-dojo-1": {
5049
- top: [],
5323
+ top: [
5324
+ {
5325
+ symbol: "AXL",
5326
+ address: "uaxl"
5327
+ }
5328
+ ],
5050
5329
  stables: [
5051
5330
  {
5052
5331
  symbol: "USDe",
@@ -5189,6 +5468,10 @@ var init_featuredAssets = __esm({
5189
5468
  "noble-1": {
5190
5469
  top: [],
5191
5470
  stables: [
5471
+ {
5472
+ symbol: "USDC",
5473
+ address: "uusdc"
5474
+ },
5192
5475
  {
5193
5476
  symbol: "USDY",
5194
5477
  address: "ausdy"
@@ -5226,6 +5509,72 @@ var init_featuredAssets = __esm({
5226
5509
  }
5227
5510
  ]
5228
5511
  },
5512
+ solana: {
5513
+ nativeAsset: {
5514
+ symbol: "SOL",
5515
+ address: "So11111111111111111111111111111111111111111"
5516
+ },
5517
+ top: [
5518
+ {
5519
+ symbol: "RENDER",
5520
+ address: "rndrizKT3MK1iimdxRdWabcF7Zg7AR5T4nud4EkHBof"
5521
+ },
5522
+ {
5523
+ symbol: "SUSHI",
5524
+ address: "ChVzxWRmrTeSgwd3Ui3UumcN8KX7VK3WaD4KGeSKpypj"
5525
+ },
5526
+ {
5527
+ symbol: "ARB",
5528
+ address: "8LH3QMo7xkMJx85Kg4pfiQY1g1ZgiVEe1KktSpaT89mP"
5529
+ },
5530
+ {
5531
+ symbol: "cbBTC",
5532
+ address: "cbbtcf3aa214zXHbiAZQwf4122FBYbraNdFqgw4iMij"
5533
+ },
5534
+ {
5535
+ symbol: "Bonk",
5536
+ address: "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"
5537
+ }
5538
+ ],
5539
+ stables: [
5540
+ {
5541
+ symbol: "USDT",
5542
+ address: "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"
5543
+ },
5544
+ {
5545
+ symbol: "USDC",
5546
+ address: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
5547
+ },
5548
+ {
5549
+ symbol: "USDe",
5550
+ address: "DEkqHyPN7GMRJ5cArtQFAWefqbZb33Hyf6s5iCwjEonT"
5551
+ },
5552
+ {
5553
+ symbol: "PYUSD",
5554
+ address: "2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo"
5555
+ },
5556
+ {
5557
+ symbol: "FDUSD",
5558
+ address: "9zNQRsGLjNKwCUU5Gq5LR8beUCPzQMVMqKAi3SSZh54u"
5559
+ },
5560
+ {
5561
+ symbol: "USDS",
5562
+ address: "USDSwr9ApdHk5bvJKMjzff41FfuX8bSxdKcR81vTwcA"
5563
+ },
5564
+ {
5565
+ symbol: "EURC",
5566
+ address: "HzwqbKZw8HxMN6bF2yFZNrht3c2iXXzpKcFu7uBEDKtr"
5567
+ },
5568
+ {
5569
+ symbol: "USDP",
5570
+ address: "HVbpJAQGNpkgBaYBZQBR1t7yFdvaYVp2vCQQfKKEN4tM"
5571
+ },
5572
+ {
5573
+ symbol: "USDY",
5574
+ address: "A1KLoBrKBde8Ty9qtNQUtq3C2ortoC3u7twggz7sEto6"
5575
+ }
5576
+ ]
5577
+ },
5229
5578
  "ssc-1": {
5230
5579
  top: [
5231
5580
  {
@@ -5278,13 +5627,55 @@ var init_featuredAssets = __esm({
5278
5627
  address: "ibc/F082B65C88E4B6D5EF1DB243CDA1D331D002759E938A0F5CD3FFDC5D53B3E349"
5279
5628
  }
5280
5629
  ]
5630
+ },
5631
+ "solana-mainnet-beta": {
5632
+ nativeAsset: {
5633
+ symbol: "SOL",
5634
+ address: "So11111111111111111111111111111111111111111"
5635
+ },
5636
+ stables: [
5637
+ {
5638
+ symbol: "USDC",
5639
+ address: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
5640
+ },
5641
+ {
5642
+ symbol: "USDT",
5643
+ address: "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"
5644
+ }
5645
+ ],
5646
+ top: [
5647
+ {
5648
+ symbol: "JUP",
5649
+ address: "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN"
5650
+ },
5651
+ {
5652
+ symbol: "BONK",
5653
+ address: "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"
5654
+ },
5655
+ {
5656
+ symbol: "WIF",
5657
+ address: "EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm"
5658
+ },
5659
+ {
5660
+ symbol: "PYTH",
5661
+ address: "HZ1JovNiVvGrGNiiYvEozEVgZ58xaU3RKwX8eACQBCt3"
5662
+ },
5663
+ {
5664
+ symbol: "RAY",
5665
+ address: "4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"
5666
+ },
5667
+ {
5668
+ symbol: "JITO",
5669
+ address: "J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn"
5670
+ }
5671
+ ]
5281
5672
  }
5282
5673
  };
5283
5674
  }
5284
5675
  });
5285
5676
 
5286
5677
  // src/core/useTokens.ts
5287
- import { useState as useState2, useEffect as useEffect3, useMemo as useMemo2 } from "react";
5678
+ import { useState as useState2, useEffect as useEffect3, useMemo as useMemo2, startTransition } from "react";
5288
5679
  function mapTokenDefToToken(tokenDef) {
5289
5680
  return {
5290
5681
  address: tokenDef.address,
@@ -5346,20 +5737,40 @@ function useTokens(chainId) {
5346
5737
  const filtered2 = tokenDefs.filter(
5347
5738
  (item) => chainMap.has(item.chainId.toString())
5348
5739
  );
5349
- setTokens(filtered2.map(mapTokenDefToToken));
5740
+ const mapped2 = filtered2.map(mapTokenDefToToken);
5741
+ startTransition(() => {
5742
+ setTokens(mapped2);
5743
+ });
5744
+ return;
5745
+ }
5746
+ if (!queryDependency) {
5747
+ await registry.ensureLoaded();
5748
+ if (cancelled) return;
5749
+ const tokenDefs = registry.tokens(chainId);
5750
+ const filtered2 = tokenDefs.filter(
5751
+ (item) => chainMap.has(item.chainId.toString())
5752
+ );
5753
+ const mapped2 = filtered2.map(mapTokenDefToToken);
5754
+ startTransition(() => {
5755
+ setTokens(mapped2);
5756
+ setHasNextPage(false);
5757
+ });
5350
5758
  return;
5351
5759
  }
5352
5760
  const page = await registry.tokensPage(chainId, {
5353
- q: queryDependency || void 0,
5761
+ q: queryDependency,
5354
5762
  limit: DEFAULT_PAGE_LIMIT
5355
5763
  });
5356
5764
  if (cancelled) return;
5357
5765
  const filtered = page.data.filter(
5358
5766
  (item) => chainMap.has(item.chainId.toString())
5359
5767
  );
5360
- setTokens(filtered.map(mapTokenDefToToken));
5361
- setNextCursor(page.pageInfo.nextCursor);
5362
- setHasNextPage(page.pageInfo.hasNextPage);
5768
+ const mapped = filtered.map(mapTokenDefToToken);
5769
+ startTransition(() => {
5770
+ setTokens(mapped);
5771
+ setNextCursor(page.pageInfo.nextCursor);
5772
+ setHasNextPage(page.pageInfo.hasNextPage);
5773
+ });
5363
5774
  } catch (err) {
5364
5775
  if (!cancelled) {
5365
5776
  const message = err instanceof Error ? err.message : "Failed to load tokens";
@@ -5405,39 +5816,67 @@ function useTokens(chainId) {
5405
5816
  setIsLoadingMore(false);
5406
5817
  }
5407
5818
  };
5408
- const featuredAddresses = useMemo2(() => {
5819
+ const chainFeatured = useMemo2(() => {
5409
5820
  const key = chainId?.toString() ?? "";
5410
- const chain = FEATURED[key];
5411
- if (!chain) return /* @__PURE__ */ new Map();
5821
+ return FEATURED[key] ?? null;
5822
+ }, [chainId]);
5823
+ const nativeAddresses = useMemo2(() => {
5824
+ const set = new Set(BASE_NATIVE_ADDRESSES);
5825
+ if (chainFeatured?.nativeAsset?.address) {
5826
+ set.add(chainFeatured.nativeAsset.address.toLowerCase());
5827
+ }
5828
+ return set;
5829
+ }, [chainFeatured]);
5830
+ const nativeSymbols = useMemo2(() => {
5831
+ const symbols = /* @__PURE__ */ new Set();
5832
+ if (chainFeatured?.nativeAsset?.symbol) {
5833
+ symbols.add(chainFeatured.nativeAsset.symbol.toUpperCase());
5834
+ }
5835
+ if (chainId) {
5836
+ const chainDef = chainMap.get(chainId.toString());
5837
+ const sym = chainDef?.nativeCurrency?.symbol;
5838
+ if (sym) symbols.add(sym.toUpperCase());
5839
+ }
5840
+ return symbols;
5841
+ }, [chainId, chainMap, chainFeatured]);
5842
+ const featuredAddresses = useMemo2(() => {
5843
+ if (!chainFeatured) return /* @__PURE__ */ new Map();
5412
5844
  const map = /* @__PURE__ */ new Map();
5413
5845
  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++);
5846
+ for (const s of chainFeatured.stables)
5847
+ map.set(s.address.toLowerCase(), order++);
5848
+ for (const t of chainFeatured.top)
5849
+ map.set(t.address.toLowerCase(), order++);
5416
5850
  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]);
5851
+ }, [chainFeatured]);
5852
+ const featuredSymbols = useMemo2(() => {
5853
+ if (!chainFeatured) return /* @__PURE__ */ new Map();
5854
+ const map = /* @__PURE__ */ new Map();
5855
+ let order = 0;
5856
+ for (const s of chainFeatured.stables)
5857
+ map.set(s.symbol.toUpperCase(), order++);
5858
+ for (const t of chainFeatured.top) map.set(t.symbol.toUpperCase(), order++);
5859
+ return map;
5860
+ }, [chainFeatured]);
5425
5861
  const filteredTokens = useMemo2(() => {
5426
5862
  const query = searchQuery.toLowerCase().trim();
5427
5863
  const source = query.length === 0 || tokensPaginationEnabled ? tokens : tokens.filter(
5428
5864
  (token) => token.symbol.toLowerCase().includes(query) || token.name.toLowerCase().includes(query) || token.address.toLowerCase().includes(query)
5429
5865
  );
5430
5866
  return sortTokensByPopularity(source, {
5431
- nativeAddresses: NATIVE_ADDRESSES,
5867
+ nativeAddresses,
5432
5868
  nativeSymbols,
5433
- featuredAddresses
5869
+ featuredAddresses,
5870
+ featuredSymbols
5434
5871
  });
5435
5872
  }, [
5436
5873
  tokens,
5437
5874
  searchQuery,
5438
5875
  tokensPaginationEnabled,
5876
+ nativeAddresses,
5439
5877
  nativeSymbols,
5440
- featuredAddresses
5878
+ featuredAddresses,
5879
+ featuredSymbols
5441
5880
  ]);
5442
5881
  return {
5443
5882
  tokens,
@@ -5451,7 +5890,7 @@ function useTokens(chainId) {
5451
5890
  isLoadingMore
5452
5891
  };
5453
5892
  }
5454
- var FEATURED, NATIVE_ADDRESSES, DEFAULT_PAGE_LIMIT;
5893
+ var FEATURED, BASE_NATIVE_ADDRESSES, DEFAULT_PAGE_LIMIT;
5455
5894
  var init_useTokens = __esm({
5456
5895
  "src/core/useTokens.ts"() {
5457
5896
  "use strict";
@@ -5462,10 +5901,10 @@ var init_useTokens = __esm({
5462
5901
  init_chainHelpers();
5463
5902
  init_featuredAssets();
5464
5903
  FEATURED = featuredAssets_default;
5465
- NATIVE_ADDRESSES = /* @__PURE__ */ new Set([
5904
+ BASE_NATIVE_ADDRESSES = /* @__PURE__ */ new Set([
5466
5905
  NATIVE_EVM2.toLowerCase(),
5467
5906
  NATIVE_SOLANA2.toLowerCase(),
5468
- // Some EVM chains (e.g. ZKsync, HyperEVM) use the zero address for the native token
5907
+ // Some EVM chains (e.g. ZKsync) use the zero address for the native token
5469
5908
  "0x0000000000000000000000000000000000000000"
5470
5909
  ]);
5471
5910
  DEFAULT_PAGE_LIMIT = 100;
@@ -5614,7 +6053,6 @@ function resolveConfig(input) {
5614
6053
  defaultSlippage: normalizeSlippage(
5615
6054
  input.routes.defaultSlippage ?? DEFAULT_SLIPPAGE
5616
6055
  ),
5617
- routeType: input.routes.routeType ?? "swap",
5618
6056
  options: {
5619
6057
  ...input.routes.options
5620
6058
  }
@@ -5815,10 +6253,9 @@ async function sendRouteTransaction(b, fallbackChainId) {
5815
6253
  if (w.ecosystem !== "solana") {
5816
6254
  throw new Error("A Solana wallet is required for this route");
5817
6255
  }
5818
- const { Registry: Registry2 } = await Promise.resolve().then(() => (init_registry(), registry_exports));
5819
- const { apiBase: apiBase2 } = await Promise.resolve().then(() => (init_http(), http_exports));
5820
- const registry = new Registry2(apiBase2());
5821
- await registry.ensureLoaded();
6256
+ const { getSharedRegistry: getSharedRegistry2 } = await Promise.resolve().then(() => (init_registryClient(), registryClient_exports));
6257
+ const registry = getSharedRegistry2();
6258
+ await registry.ensureChainsLoaded();
5822
6259
  const chain = registry.chain(
5823
6260
  String(fallbackChainId ?? txReq.chainId ?? "")
5824
6261
  );
@@ -5832,9 +6269,8 @@ async function sendRouteTransaction(b, fallbackChainId) {
5832
6269
  async function runTopUp(params) {
5833
6270
  const w = walletManager.wallet;
5834
6271
  if (!w) throw new Error("Trustware.wallet not configured");
5835
- const { Registry: Registry2 } = await Promise.resolve().then(() => (init_registry(), registry_exports));
5836
- const { apiBase: apiBase2 } = await Promise.resolve().then(() => (init_http(), http_exports));
5837
- const reg = new Registry2(apiBase2());
6272
+ const { getSharedRegistry: getSharedRegistry2 } = await Promise.resolve().then(() => (init_registryClient(), registryClient_exports));
6273
+ const reg = getSharedRegistry2();
5838
6274
  await reg.ensureLoaded();
5839
6275
  const fromAddress = await w.getAddress();
5840
6276
  const currentChainRef = w.ecosystem === "evm" ? String(await w.getChainId()) : await w.getChainKey?.() ?? "solana-mainnet-beta";
@@ -5943,6 +6379,39 @@ var init_core = __esm({
5943
6379
  getConfig() {
5944
6380
  return TrustwareConfigStore.get();
5945
6381
  },
6382
+ /**
6383
+ * Read the SDK's currently configured theme mode.
6384
+ *
6385
+ * Returns the raw setting — `"light" | "dark" | "system"` — i.e. whatever
6386
+ * was last passed to `init()` or `setTheme()`. When the mode is `"system"`,
6387
+ * the widget resolves the actual light/dark appearance itself (from the OS
6388
+ * `prefers-color-scheme`, or a saved preference if the user has used the
6389
+ * widget's built-in theme toggle), so this getter still reports `"system"`
6390
+ * rather than the resolved value.
6391
+ */
6392
+ getTheme() {
6393
+ return TrustwareConfigStore.get().theme;
6394
+ },
6395
+ /**
6396
+ * Set the widget's theme at runtime.
6397
+ *
6398
+ * Call this from your own app's theme toggle to keep an embedded
6399
+ * `TrustwareWidget` in sync with your UI — no remount required, any
6400
+ * mounted widget picks up the change immediately.
6401
+ *
6402
+ * Passing `"light"` or `"dark"` pins the widget to that mode. Passing
6403
+ * `"system"` makes it follow the OS preference again — unless the user
6404
+ * previously used the widget's own in-widget theme toggle, in which case
6405
+ * their saved choice takes precedence until they toggle it again.
6406
+ *
6407
+ * @example
6408
+ * // In your app's own dark-mode toggle handler:
6409
+ * Trustware.setTheme(isDark ? "dark" : "light");
6410
+ */
6411
+ setTheme(theme) {
6412
+ TrustwareConfigStore.update({ theme });
6413
+ return Trustware;
6414
+ },
5946
6415
  setDestinationAddress(address) {
5947
6416
  const prev = TrustwareConfigStore.get();
5948
6417
  TrustwareConfigStore.update({