@suilend/sui-fe-next 2.0.13 → 2.0.14

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.
@@ -220,8 +220,7 @@ function Inner(_a) {
220
220
  var suiClient = useSettingsContext().suiClient;
221
221
  // WalletConnect via @walletconnect/universal-provider
222
222
  // Matches the reference implementation: https://github.com/WalletConnect/react-core-up-sui
223
- var _f = useState(), wcProvider = _f[0], setWcProvider = _f[1];
224
- var _g = useState(), wcSession = _g[0], setWcSession = _g[1];
223
+ var _f = useState(), wcSession = _f[0], setWcSession = _f[1];
225
224
  var sessionAddress = useMemo(function () {
226
225
  var _a, _b, _c;
227
226
  var raw = (_c = (_b = (_a = wcSession === null || wcSession === void 0 ? void 0 : wcSession.namespaces) === null || _a === void 0 ? void 0 : _a.sui) === null || _b === void 0 ? void 0 : _b.accounts) === null || _c === void 0 ? void 0 : _c[0];
@@ -235,7 +234,6 @@ function Inner(_a) {
235
234
  case 0: return [4 /*yield*/, getWalletConnectProvider()];
236
235
  case 1:
237
236
  provider = _a.sent();
238
- setWcProvider(provider);
239
237
  if (provider.session) {
240
238
  setWcSession(provider.session);
241
239
  }
@@ -357,7 +355,7 @@ function Inner(_a) {
357
355
  wallets__web,
358
356
  ]);
359
357
  // Wallet
360
- var _h = useState(false), isConnectWalletDropdownOpen = _h[0], setIsConnectWalletDropdownOpen = _h[1];
358
+ var _g = useState(false), isConnectWalletDropdownOpen = _g[0], setIsConnectWalletDropdownOpen = _g[1];
361
359
  var rawWallet = useCurrentWallet();
362
360
  var wallet = useMemo(function () {
363
361
  if (sessionAddress) {
@@ -371,17 +369,20 @@ function Inner(_a) {
371
369
  var disconnectWallet = dAppKit.disconnectWallet;
372
370
  var signPersonalMessageRaw = dAppKit.signPersonalMessage;
373
371
  var walletConnectSignPersonalMessage = useCallback(function (message) { return __awaiter(_this, void 0, void 0, function () {
374
- var res;
372
+ var provider, res;
375
373
  return __generator(this, function (_a) {
376
374
  switch (_a.label) {
377
375
  case 0:
378
- if (!sessionAddress || !wcProvider)
376
+ if (!sessionAddress)
379
377
  throw new Error("Wallet not connected");
380
- return [4 /*yield*/, wcProvider.request({
378
+ return [4 /*yield*/, getWalletConnectProvider()];
379
+ case 1:
380
+ provider = _a.sent();
381
+ return [4 /*yield*/, provider.request({
381
382
  method: WC_SUI_METHODS.SIGN_PERSONAL_MESSAGE,
382
383
  params: { message: message.toString(), address: sessionAddress },
383
384
  }, "sui:mainnet")];
384
- case 1:
385
+ case 2:
385
386
  res = _a.sent();
386
387
  return [2 /*return*/, {
387
388
  signature: res.signature,
@@ -389,19 +390,18 @@ function Inner(_a) {
389
390
  }];
390
391
  }
391
392
  });
392
- }); }, [sessionAddress, wcProvider]);
393
+ }); }, [sessionAddress]);
393
394
  var connectWalletWrapper = useCallback(function (_wallet) { return __awaiter(_this, void 0, void 0, function () {
394
- var _a, _b, err_1;
395
+ var provider, _a, provider, _b, err_1;
395
396
  return __generator(this, function (_c) {
396
397
  switch (_c.label) {
397
398
  case 0:
398
- _c.trys.push([0, 12, , 13]);
399
- if (!(_wallet === null || _wallet === void 0 ? void 0 : _wallet.walletConnect)) return [3 /*break*/, 6];
400
- if (!wcProvider)
401
- throw new Error("WalletConnect provider not ready");
402
- // Connect with optionalNamespaces — matches the reference app exactly.
403
- // Methods are declared at connect time, not at init time.
404
- return [4 /*yield*/, wcProvider.connect({
399
+ _c.trys.push([0, 14, , 15]);
400
+ if (!(_wallet === null || _wallet === void 0 ? void 0 : _wallet.walletConnect)) return [3 /*break*/, 7];
401
+ return [4 /*yield*/, getWalletConnectProvider()];
402
+ case 1:
403
+ provider = _c.sent();
404
+ return [4 /*yield*/, provider.connect({
405
405
  optionalNamespaces: {
406
406
  sui: {
407
407
  methods: [
@@ -414,80 +414,84 @@ function Inner(_a) {
414
414
  },
415
415
  },
416
416
  })];
417
- case 1:
418
- // Connect with optionalNamespaces — matches the reference app exactly.
419
- // Methods are declared at connect time, not at init time.
420
- _c.sent();
421
- _c.label = 2;
422
417
  case 2:
423
- _c.trys.push([2, 4, , 5]);
424
- return [4 /*yield*/, disconnectWallet()];
425
- case 3:
426
418
  _c.sent();
427
- return [3 /*break*/, 5];
419
+ _c.label = 3;
420
+ case 3:
421
+ _c.trys.push([3, 5, , 6]);
422
+ return [4 /*yield*/, disconnectWallet()];
428
423
  case 4:
429
- _a = _c.sent();
430
- return [3 /*break*/, 5];
424
+ _c.sent();
425
+ return [3 /*break*/, 6];
431
426
  case 5:
432
- setWcSession(wcProvider.session);
433
- return [2 /*return*/];
427
+ _a = _c.sent();
428
+ return [3 /*break*/, 6];
434
429
  case 6:
430
+ setWcSession(provider.session);
431
+ return [2 /*return*/];
432
+ case 7:
435
433
  if (!_wallet.raw)
436
434
  throw new Error("Missing wallet");
437
435
  return [4 /*yield*/, connectWallet({ wallet: _wallet.raw })];
438
- case 7:
439
- _c.sent();
440
- _c.label = 8;
441
436
  case 8:
442
- _c.trys.push([8, 10, , 11]);
443
- return [4 /*yield*/, (wcProvider === null || wcProvider === void 0 ? void 0 : wcProvider.disconnect())];
444
- case 9:
445
437
  _c.sent();
446
- return [3 /*break*/, 11];
438
+ _c.label = 9;
439
+ case 9:
440
+ _c.trys.push([9, 12, , 13]);
441
+ return [4 /*yield*/, getWalletConnectProvider()];
447
442
  case 10:
448
- _b = _c.sent();
449
- return [3 /*break*/, 11];
443
+ provider = _c.sent();
444
+ return [4 /*yield*/, provider.disconnect()];
450
445
  case 11:
446
+ _c.sent();
447
+ return [3 /*break*/, 13];
448
+ case 12:
449
+ _b = _c.sent();
450
+ return [3 /*break*/, 13];
451
+ case 13:
451
452
  setWcSession(null);
452
453
  showInfoToast("Connected ".concat(_wallet.name));
453
454
  setIsConnectWalletDropdownOpen(false);
454
- return [3 /*break*/, 13];
455
- case 12:
455
+ return [3 /*break*/, 15];
456
+ case 14:
456
457
  err_1 = _c.sent();
457
458
  showErrorToast("Failed to connect ".concat(_wallet.name), err_1);
458
459
  console.error(err_1);
459
- return [3 /*break*/, 13];
460
- case 13: return [2 /*return*/];
460
+ return [3 /*break*/, 15];
461
+ case 15: return [2 /*return*/];
461
462
  }
462
463
  });
463
- }); }, [connectWallet, disconnectWallet, wcProvider]);
464
+ }); }, [connectWallet, disconnectWallet]);
464
465
  var disconnectWalletWrapper = useCallback(function () { return __awaiter(_this, void 0, void 0, function () {
465
- var err_2;
466
+ var provider, err_2;
466
467
  return __generator(this, function (_a) {
467
468
  switch (_a.label) {
468
469
  case 0:
469
- _a.trys.push([0, 5, , 6]);
470
- if (!sessionAddress) return [3 /*break*/, 2];
471
- return [4 /*yield*/, (wcProvider === null || wcProvider === void 0 ? void 0 : wcProvider.disconnect())];
470
+ _a.trys.push([0, 6, , 7]);
471
+ if (!sessionAddress) return [3 /*break*/, 3];
472
+ return [4 /*yield*/, getWalletConnectProvider()];
472
473
  case 1:
474
+ provider = _a.sent();
475
+ return [4 /*yield*/, provider.disconnect()];
476
+ case 2:
473
477
  _a.sent();
474
478
  setWcSession(null);
475
- return [3 /*break*/, 4];
476
- case 2: return [4 /*yield*/, disconnectWallet()];
477
- case 3:
479
+ return [3 /*break*/, 5];
480
+ case 3: return [4 /*yield*/, disconnectWallet()];
481
+ case 4:
478
482
  _a.sent();
479
483
  showInfoToast("Disconnected wallet");
480
- _a.label = 4;
481
- case 4: return [3 /*break*/, 6];
482
- case 5:
484
+ _a.label = 5;
485
+ case 5: return [3 /*break*/, 7];
486
+ case 6:
483
487
  err_2 = _a.sent();
484
488
  showErrorToast("Failed to disconnect wallet", err_2);
485
489
  console.error(err_2);
486
- return [3 /*break*/, 6];
487
- case 6: return [2 /*return*/];
490
+ return [3 /*break*/, 7];
491
+ case 7: return [2 /*return*/];
488
492
  }
489
493
  });
490
- }); }, [sessionAddress, wcProvider, disconnectWallet]);
494
+ }); }, [sessionAddress, disconnectWallet]);
491
495
  // Accounts
492
496
  var walletConnection = useWalletConnection();
493
497
  var accountsRes = useMemo(function () { var _a, _b; return (_b = (_a = walletConnection.wallet) === null || _a === void 0 ? void 0 : _a.accounts) !== null && _b !== void 0 ? _b : []; }, [(_c = walletConnection.wallet) === null || _c === void 0 ? void 0 : _c.accounts]);
@@ -651,7 +655,7 @@ function Inner(_a) {
651
655
  });
652
656
  }); }, [suiClient]);
653
657
  var signExecuteAndWaitForTransaction = useCallback(function (transaction, onSetGasBudget, onSign, onExecute) { return __awaiter(_this, void 0, void 0, function () {
654
- var _address, txBytes, txBase64, params, res_1, signAndExecErr_1, signRes, execRes, usedSignOnly, signedTransaction, res1, err_5, message, res, digest, err_6;
658
+ var _address, provider, txBytes, txBase64, params, res_1, signAndExecErr_1, signRes, execRes, usedSignOnly, signedTransaction, res1, err_5, message, res, digest, err_6;
655
659
  return __generator(this, function (_a) {
656
660
  switch (_a.label) {
657
661
  case 0:
@@ -664,7 +668,7 @@ function Inner(_a) {
664
668
  }
665
669
  _a.label = 1;
666
670
  case 1:
667
- _a.trys.push([1, 20, , 21]);
671
+ _a.trys.push([1, 21, , 22]);
668
672
  // Gas budget
669
673
  if (gasBudget !== "")
670
674
  transaction.setGasBudget(+new BigNumber(gasBudget)
@@ -673,59 +677,60 @@ function Inner(_a) {
673
677
  onSetGasBudget === null || onSetGasBudget === void 0 ? void 0 : onSetGasBudget(transaction);
674
678
  // Log
675
679
  console.log("[WalletContext] signExecuteAndWaitForTransaction - transaction.getData():", transaction.getData());
676
- if (!(sessionAddress && wcProvider)) return [3 /*break*/, 11];
677
- // WalletConnect path — uses @walletconnect/universal-provider directly,
678
- // matching the reference app: https://github.com/WalletConnect/react-core-up-sui
680
+ if (!sessionAddress) return [3 /*break*/, 12];
681
+ return [4 /*yield*/, getWalletConnectProvider()];
682
+ case 2:
683
+ provider = _a.sent();
679
684
  transaction.setSender(sessionAddress);
680
685
  return [4 /*yield*/, transaction.build({ client: suiClient })];
681
- case 2:
686
+ case 3:
682
687
  txBytes = _a.sent();
683
688
  txBase64 = toBase64(txBytes);
684
689
  params = {
685
690
  transaction: txBase64,
686
691
  address: sessionAddress,
687
692
  };
688
- _a.label = 3;
689
- case 3:
690
- _a.trys.push([3, 6, , 7]);
693
+ _a.label = 4;
694
+ case 4:
695
+ _a.trys.push([4, 7, , 8]);
691
696
  console.log("[WalletContext] WalletConnect — trying sui_signAndExecuteTransaction");
692
- return [4 /*yield*/, wcProvider.request({
697
+ return [4 /*yield*/, provider.request({
693
698
  method: WC_SUI_METHODS.SIGN_AND_EXECUTE_TRANSACTION,
694
699
  params: params,
695
700
  }, "sui:mainnet")];
696
- case 4:
701
+ case 5:
697
702
  res_1 = _a.sent();
698
703
  console.log("[WalletContext] WalletConnect — sui_signAndExecuteTransaction succeeded, digest:", res_1.digest);
699
704
  return [4 /*yield*/, waitForTransactionWithCheck(res_1.digest)];
700
- case 5: return [2 /*return*/, _a.sent()];
701
- case 6:
705
+ case 6: return [2 /*return*/, _a.sent()];
706
+ case 7:
702
707
  signAndExecErr_1 = _a.sent();
703
708
  console.warn("[WalletContext] WalletConnect — sui_signAndExecuteTransaction failed:", signAndExecErr_1);
704
- return [3 /*break*/, 7];
705
- case 7:
709
+ return [3 /*break*/, 8];
710
+ case 8:
706
711
  // Fallback: sign-only, then dApp-side execute
707
712
  console.log("[WalletContext] WalletConnect — trying sui_signTransaction (sign-only fallback)");
708
- return [4 /*yield*/, wcProvider.request({ method: WC_SUI_METHODS.SIGN_TRANSACTION, params: params }, "sui:mainnet")];
709
- case 8:
713
+ return [4 /*yield*/, provider.request({ method: WC_SUI_METHODS.SIGN_TRANSACTION, params: params }, "sui:mainnet")];
714
+ case 9:
710
715
  signRes = _a.sent();
711
716
  console.log("[WalletContext] WalletConnect — sui_signTransaction succeeded, executing on-chain");
712
717
  return [4 /*yield*/, suiClient.executeTransactionBlock({
713
718
  transactionBlock: signRes.transactionBytes,
714
719
  signature: signRes.signature,
715
720
  })];
716
- case 9:
721
+ case 10:
717
722
  execRes = _a.sent();
718
723
  return [4 /*yield*/, waitForTransactionWithCheck(execRes.digest)];
719
- case 10: return [2 /*return*/, _a.sent()];
720
- case 11:
721
- usedSignOnly = false;
722
- _a.label = 12;
724
+ case 11: return [2 /*return*/, _a.sent()];
723
725
  case 12:
724
- _a.trys.push([12, 16, , 17]);
726
+ usedSignOnly = false;
727
+ _a.label = 13;
728
+ case 13:
729
+ _a.trys.push([13, 17, , 18]);
725
730
  return [4 /*yield*/, dAppKit.signTransaction({
726
731
  transaction: transaction,
727
732
  })];
728
- case 13:
733
+ case 14:
729
734
  signedTransaction = _a.sent();
730
735
  usedSignOnly = true;
731
736
  onSign === null || onSign === void 0 ? void 0 : onSign(signedTransaction);
@@ -733,12 +738,12 @@ function Inner(_a) {
733
738
  transactionBlock: signedTransaction.bytes,
734
739
  signature: signedTransaction.signature,
735
740
  })];
736
- case 14:
741
+ case 15:
737
742
  res1 = _a.sent();
738
743
  onExecute === null || onExecute === void 0 ? void 0 : onExecute(res1);
739
744
  return [4 /*yield*/, waitForTransactionWithCheck(res1.digest)];
740
- case 15: return [2 /*return*/, _a.sent()];
741
- case 16:
745
+ case 16: return [2 /*return*/, _a.sent()];
746
+ case 17:
742
747
  err_5 = _a.sent();
743
748
  if (usedSignOnly)
744
749
  throw err_5;
@@ -746,26 +751,25 @@ function Inner(_a) {
746
751
  if (!message.includes("does not support"))
747
752
  throw err_5;
748
753
  console.warn("[WalletContext] Wallet does not support sign-only, falling back to signAndExecuteTransaction");
749
- return [3 /*break*/, 17];
750
- case 17: return [4 /*yield*/, dAppKit.signAndExecuteTransaction({
754
+ return [3 /*break*/, 18];
755
+ case 18: return [4 /*yield*/, dAppKit.signAndExecuteTransaction({
751
756
  transaction: transaction,
752
757
  })];
753
- case 18:
758
+ case 19:
754
759
  res = _a.sent();
755
760
  digest = res.$kind === "Transaction"
756
761
  ? res.Transaction.digest
757
762
  : res.FailedTransaction.digest;
758
763
  return [4 /*yield*/, waitForTransactionWithCheck(digest)];
759
- case 19: return [2 /*return*/, _a.sent()];
760
- case 20:
764
+ case 20: return [2 /*return*/, _a.sent()];
765
+ case 21:
761
766
  err_6 = _a.sent();
762
767
  console.error(err_6);
763
768
  throw err_6;
764
- case 21: return [2 /*return*/];
769
+ case 22: return [2 /*return*/];
765
770
  }
766
771
  });
767
772
  }); }, [
768
- wcProvider,
769
773
  sessionAddress,
770
774
  gasBudget,
771
775
  impersonatedAddress,
@@ -776,7 +780,7 @@ function Inner(_a) {
776
780
  waitForTransactionWithCheck,
777
781
  ]);
778
782
  // Using Ledger
779
- var _j = useLocalStorage("isUsingLedger-".concat(impersonatedAddress !== null && impersonatedAddress !== void 0 ? impersonatedAddress : account === null || account === void 0 ? void 0 : account.address), false), isUsingLedger = _j[0], setIsUsingLedger = _j[1];
783
+ var _h = useLocalStorage("isUsingLedger-".concat(impersonatedAddress !== null && impersonatedAddress !== void 0 ? impersonatedAddress : account === null || account === void 0 ? void 0 : account.address), false), isUsingLedger = _h[0], setIsUsingLedger = _h[1];
780
784
  // Context
781
785
  var contextValue = useMemo(function () {
782
786
  return {
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@suilend/sui-fe-next","version":"2.0.13","private":false,"description":"A collection of TypeScript frontend components and hooks","author":"Suilend","license":"MIT","main":"./index.js","exports":{".":"./index.js","./contexts/WalletContext":"./contexts/WalletContext.jsx","./contexts/SettingsContext":"./contexts/SettingsContext.jsx","./contexts":"./contexts/index.js","./fetchers":"./fetchers/index.js","./fetchers/useFetchBalances":"./fetchers/useFetchBalances.js","./hooks/useRefreshOnBalancesChange":"./hooks/useRefreshOnBalancesChange.js","./hooks/useLedgerHashDialog":"./hooks/useLedgerHashDialog.js","./hooks/useIsAndroid":"./hooks/useIsAndroid.jsx","./hooks/useCoinMetadataMap":"./hooks/useCoinMetadataMap.js","./hooks":"./hooks/index.js","./hooks/useIsTouchscreen":"./hooks/useIsTouchscreen.jsx","./hooks/useIsiOS":"./hooks/useIsiOS.jsx","./hooks/keypair":"./hooks/keypair.js","./lib/track":"./lib/track.js","./lib":"./lib/index.js","./lib/router":"./lib/router.js","./lib/toasts":"./lib/toasts.jsx","./lib/connector":"./lib/connector.js"},"types":"./index.js","scripts":{"build":"rm -rf ./dist && bun tsc","eslint":"eslint --fix src/","prettier":"prettier --write src/","lint":"bun eslint && bun prettier && bun tsc --noEmit","release":"bun run build && bun ./release.js && cd ./dist && npm publish --access public"},"repository":{"type":"git","url":"git+https://github.com/suilend/sui-fe.git"},"bugs":{"url":"https://github.com/suilend/sui-fe/issues"},"dependencies":{"@reown/appkit":"1.8.2","@walletconnect/universal-provider":"2.21.1","@tanstack/react-query":"^5.60.2","bignumber.js":"^9.1.2","launchdarkly-react-client-sdk":"^3.6.0","lodash":"^4.17.21","mixpanel-browser":"^2.72.0","next":"^15.0.3","react":"18.3.1","react-dom":"18.3.1","react-responsive":"^10.0.0","sonner":"1.4.41","swr":"^2.2.5","tailwind-merge":"^2.5.4","usehooks-ts":"^3.1.1"},"devDependencies":{"@tsconfig/next":"^2.0.3","@types/lodash":"^4.17.13","@types/node":"^22.9.0","@types/react":"^18.3.12","@types/react-dom":"^18.3.1","@typescript-eslint/eslint-plugin":"^8.14.0","@typescript-eslint/parser":"^8.14.0","eslint":"^9.14.0","eslint-config-next":"^15.0.3","eslint-config-prettier":"^9.1.0","eslint-plugin-import":"^2.31.0","eslint-plugin-prettier":"^5.2.1","prettier":"^3.3.3","ts-node":"^10.9.2","typescript":"^5.6.3"},"peerDependencies":{"@mysten/dapp-kit-core":"1.0.3","@mysten/dapp-kit-react":"1.0.1","@mysten/sui":"2.3.1","@mysten/wallet-standard":"0.20.0","@suilend/sui-fe":"^2.0.10"}}
1
+ {"name":"@suilend/sui-fe-next","version":"2.0.14","private":false,"description":"A collection of TypeScript frontend components and hooks","author":"Suilend","license":"MIT","main":"./index.js","exports":{".":"./index.js","./contexts/WalletContext":"./contexts/WalletContext.jsx","./contexts/SettingsContext":"./contexts/SettingsContext.jsx","./contexts":"./contexts/index.js","./fetchers":"./fetchers/index.js","./fetchers/useFetchBalances":"./fetchers/useFetchBalances.js","./hooks/useRefreshOnBalancesChange":"./hooks/useRefreshOnBalancesChange.js","./hooks/useLedgerHashDialog":"./hooks/useLedgerHashDialog.js","./hooks/useIsAndroid":"./hooks/useIsAndroid.jsx","./hooks/useCoinMetadataMap":"./hooks/useCoinMetadataMap.js","./hooks":"./hooks/index.js","./hooks/useIsTouchscreen":"./hooks/useIsTouchscreen.jsx","./hooks/useIsiOS":"./hooks/useIsiOS.jsx","./hooks/keypair":"./hooks/keypair.js","./lib/track":"./lib/track.js","./lib":"./lib/index.js","./lib/router":"./lib/router.js","./lib/toasts":"./lib/toasts.jsx","./lib/connector":"./lib/connector.js"},"types":"./index.js","scripts":{"build":"rm -rf ./dist && bun tsc","eslint":"eslint --fix src/","prettier":"prettier --write src/","lint":"bun eslint && bun prettier && bun tsc --noEmit","release":"bun run build && bun ./release.js && cd ./dist && npm publish --access public"},"repository":{"type":"git","url":"git+https://github.com/suilend/sui-fe.git"},"bugs":{"url":"https://github.com/suilend/sui-fe/issues"},"dependencies":{"@reown/appkit":"1.8.2","@walletconnect/universal-provider":"2.21.1","@tanstack/react-query":"^5.60.2","bignumber.js":"^9.1.2","launchdarkly-react-client-sdk":"^3.6.0","lodash":"^4.17.21","mixpanel-browser":"^2.72.0","next":"^15.0.3","react":"18.3.1","react-dom":"18.3.1","react-responsive":"^10.0.0","sonner":"1.4.41","swr":"^2.2.5","tailwind-merge":"^2.5.4","usehooks-ts":"^3.1.1"},"devDependencies":{"@tsconfig/next":"^2.0.3","@types/lodash":"^4.17.13","@types/node":"^22.9.0","@types/react":"^18.3.12","@types/react-dom":"^18.3.1","@typescript-eslint/eslint-plugin":"^8.14.0","@typescript-eslint/parser":"^8.14.0","eslint":"^9.14.0","eslint-config-next":"^15.0.3","eslint-config-prettier":"^9.1.0","eslint-plugin-import":"^2.31.0","eslint-plugin-prettier":"^5.2.1","prettier":"^3.3.3","ts-node":"^10.9.2","typescript":"^5.6.3"},"peerDependencies":{"@mysten/dapp-kit-core":"1.0.3","@mysten/dapp-kit-react":"1.0.1","@mysten/sui":"2.3.1","@mysten/wallet-standard":"0.20.0","@suilend/sui-fe":"^2.0.10"}}