@suilend/sui-fe-next 2.0.28 → 2.0.29

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.
@@ -61,13 +61,12 @@ import { createDAppKit, getWalletUniqueIdentifier, } from "@mysten/dapp-kit-core
61
61
  import { DAppKitProvider, useCurrentAccount, useCurrentWallet, useDAppKit, useWalletConnection, useWallets, } from "@mysten/dapp-kit-react";
62
62
  import { SuiJsonRpcClient, } from "@mysten/sui/jsonRpc";
63
63
  import { Transaction } from "@mysten/sui/transactions";
64
- import { SUI_DECIMALS, isValidSuiAddress, normalizeSuiAddress, toBase64, } from "@mysten/sui/utils";
65
- import { getWallets } from "@wallet-standard/app";
64
+ import { SUI_DECIMALS, toBase64 } from "@mysten/sui/utils";
66
65
  import BigNumber from "bignumber.js";
67
66
  import { useLDClient } from "launchdarkly-react-client-sdk";
68
67
  import { useLocalStorage } from "usehooks-ts";
69
68
  import { API_URL, formatAddress, isInMsafeApp } from "@suilend/sui-fe";
70
- import { WC_SUI_METHODS, getWalletConnectModal, getWalletConnectProvider, } from "../lib/connector";
69
+ import { getUniversalConnector } from "../lib/connector";
71
70
  import { showErrorToast, showInfoToast } from "../lib/toasts";
72
71
  import { useSettingsContext } from "./SettingsContext";
73
72
  export var WalletType;
@@ -212,50 +211,34 @@ export var useWalletContext = function () { return useContext(WalletContext); };
212
211
  function Inner(_a) {
213
212
  var _b;
214
213
  var _this = this;
215
- var _c, _d;
214
+ var _c, _d, _e, _f, _g;
216
215
  var appName = _a.appName, children = _a.children;
217
216
  var router = useRouter();
218
217
  var queryParams = (_b = {},
219
218
  _b[WalletContextQueryParams.WALLET] = router.query[WalletContextQueryParams.WALLET],
220
219
  _b);
221
- var _e = useSettingsContext(), rpc = _e.rpc, suiClient = _e.suiClient;
222
- // WalletConnect via @walletconnect/universal-provider
223
- // Matches the reference implementation: https://github.com/WalletConnect/react-core-up-sui
224
- var _f = useState(), wcSession = _f[0], setWcSession = _f[1];
225
- // Raw address as returned by the wallet (e.g. Fireblocks returns an
226
- // EVM-length address). We must send this back in WalletConnect request
227
- // params so the wallet recognises it as its own account.
228
- var wcRawAddress = useMemo(function () {
229
- var _a, _b, _c;
230
- 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];
231
- if (!raw)
232
- return undefined;
233
- return raw.split(":").pop();
234
- }, [wcSession]);
235
- // Normalised Sui address (zero-padded to 32 bytes) for on-chain use:
236
- // transaction sender, RPC queries, etc.
237
- var sessionAddress = useMemo(function () {
238
- if (!wcRawAddress)
239
- return undefined;
240
- var normalized = normalizeSuiAddress(wcRawAddress);
241
- return isValidSuiAddress(normalized) ? normalized : undefined;
242
- }, [wcRawAddress]);
220
+ var _h = useSettingsContext(), rpc = _h.rpc, suiClient = _h.suiClient;
221
+ // Only used for wallet connect
222
+ var _j = useState(), universalConnector = _j[0], setUniversalConnector = _j[1];
223
+ var _k = useState(), session = _k[0], setSession = _k[1];
224
+ var sessionAddressWithout0x = (_e = (_d = (_c = session === null || session === void 0 ? void 0 : session.namespaces) === null || _c === void 0 ? void 0 : _c.sui) === null || _d === void 0 ? void 0 : _d.accounts) === null || _e === void 0 ? void 0 : _e[0];
225
+ var sessionAddress = sessionAddressWithout0x
226
+ ? sessionAddressWithout0x.split(":").pop()
227
+ : undefined;
243
228
  useEffect(function () {
244
229
  (function () { return __awaiter(_this, void 0, void 0, function () {
245
- var provider;
230
+ var connector;
246
231
  return __generator(this, function (_a) {
247
232
  switch (_a.label) {
248
- case 0: return [4 /*yield*/, getWalletConnectProvider()];
233
+ case 0: return [4 /*yield*/, getUniversalConnector(rpc.url)];
249
234
  case 1:
250
- provider = _a.sent();
251
- if (provider.session) {
252
- setWcSession(provider.session);
253
- }
235
+ connector = _a.sent();
236
+ setUniversalConnector(connector);
254
237
  return [2 /*return*/];
255
238
  }
256
239
  });
257
240
  }); })();
258
- }, []);
241
+ }, [rpc.url]);
259
242
  // Impersonated address
260
243
  var impersonatedAddress = queryParams[WalletContextQueryParams.WALLET];
261
244
  // Wallets
@@ -369,7 +352,7 @@ function Inner(_a) {
369
352
  wallets__web,
370
353
  ]);
371
354
  // Wallet
372
- var _g = useState(false), isConnectWalletDropdownOpen = _g[0], setIsConnectWalletDropdownOpen = _g[1];
355
+ var _l = useState(false), isConnectWalletDropdownOpen = _l[0], setIsConnectWalletDropdownOpen = _l[1];
373
356
  var rawWallet = useCurrentWallet();
374
357
  var wallet = useMemo(function () {
375
358
  if (sessionAddress) {
@@ -383,23 +366,17 @@ function Inner(_a) {
383
366
  var disconnectWallet = dAppKit.disconnectWallet;
384
367
  var signPersonalMessageRaw = dAppKit.signPersonalMessage;
385
368
  var walletConnectSignPersonalMessage = useCallback(function (message) { return __awaiter(_this, void 0, void 0, function () {
386
- var provider, res;
369
+ var res;
387
370
  return __generator(this, function (_a) {
388
371
  switch (_a.label) {
389
372
  case 0:
390
- if (!sessionAddress)
373
+ if (!sessionAddress || !universalConnector)
391
374
  throw new Error("Wallet not connected");
392
- return [4 /*yield*/, getWalletConnectProvider()];
393
- case 1:
394
- provider = _a.sent();
395
- return [4 /*yield*/, provider.request({
396
- method: WC_SUI_METHODS.SIGN_PERSONAL_MESSAGE,
397
- params: {
398
- message: message.toString(),
399
- account: wcRawAddress !== null && wcRawAddress !== void 0 ? wcRawAddress : sessionAddress,
400
- },
375
+ return [4 /*yield*/, universalConnector.request({
376
+ method: "sui_signPersonalMessage",
377
+ params: { message: message.toString() },
401
378
  }, "sui:mainnet")];
402
- case 2:
379
+ case 1:
403
380
  res = _a.sent();
404
381
  return [2 /*return*/, {
405
382
  signature: res.signature,
@@ -407,122 +384,49 @@ function Inner(_a) {
407
384
  }];
408
385
  }
409
386
  });
410
- }); }, [sessionAddress, wcRawAddress]);
411
- var connectWalletWrapper = useCallback(function (_wallet) { return __awaiter(_this, void 0, void 0, function () {
412
- var provider, modal, _a, provider, _b, err_1;
413
- return __generator(this, function (_c) {
414
- switch (_c.label) {
415
- case 0:
416
- _c.trys.push([0, 17, , 18]);
417
- if (!(_wallet === null || _wallet === void 0 ? void 0 : _wallet.walletConnect)) return [3 /*break*/, 10];
418
- return [4 /*yield*/, getWalletConnectProvider()];
419
- case 1:
420
- provider = _c.sent();
421
- return [4 /*yield*/, getWalletConnectModal(rpc.url)];
422
- case 2:
423
- modal = _c.sent();
424
- modal.open();
425
- _c.label = 3;
426
- case 3:
427
- _c.trys.push([3, , 5, 6]);
428
- return [4 /*yield*/, provider.connect({
429
- namespaces: {
430
- sui: {
431
- methods: [
432
- WC_SUI_METHODS.SIGN_TRANSACTION,
433
- WC_SUI_METHODS.SIGN_AND_EXECUTE_TRANSACTION,
434
- WC_SUI_METHODS.SIGN_PERSONAL_MESSAGE,
435
- ],
436
- chains: ["sui:mainnet"],
437
- events: [],
438
- },
439
- },
440
- })];
441
- case 4:
442
- _c.sent();
443
- return [3 /*break*/, 6];
444
- case 5:
445
- modal.close();
446
- return [7 /*endfinally*/];
447
- case 6:
448
- _c.trys.push([6, 8, , 9]);
449
- return [4 /*yield*/, disconnectWallet()];
450
- case 7:
451
- _c.sent();
452
- return [3 /*break*/, 9];
453
- case 8:
454
- _a = _c.sent();
455
- return [3 /*break*/, 9];
456
- case 9:
457
- setWcSession(provider.session);
458
- return [2 /*return*/];
459
- case 10:
460
- if (!_wallet.raw)
461
- throw new Error("Missing wallet");
462
- return [4 /*yield*/, connectWallet({ wallet: _wallet.raw })];
463
- case 11:
464
- _c.sent();
465
- _c.label = 12;
466
- case 12:
467
- _c.trys.push([12, 15, , 16]);
468
- return [4 /*yield*/, getWalletConnectProvider()];
469
- case 13:
470
- provider = _c.sent();
471
- return [4 /*yield*/, provider.disconnect()];
472
- case 14:
473
- _c.sent();
474
- return [3 /*break*/, 16];
475
- case 15:
476
- _b = _c.sent();
477
- return [3 /*break*/, 16];
478
- case 16:
479
- setWcSession(null);
480
- showInfoToast("Connected ".concat(_wallet.name));
481
- setIsConnectWalletDropdownOpen(false);
482
- return [3 /*break*/, 18];
483
- case 17:
484
- err_1 = _c.sent();
485
- showErrorToast("Failed to connect ".concat(_wallet.name), err_1);
486
- console.error(err_1);
487
- return [3 /*break*/, 18];
488
- case 18: return [2 /*return*/];
387
+ }); }, [sessionAddress, universalConnector]);
388
+ var connectWalletWrapper = useCallback(function (_wallet) {
389
+ try {
390
+ if (_wallet === null || _wallet === void 0 ? void 0 : _wallet.walletConnect) {
391
+ universalConnector.connect().then(function (res) {
392
+ disconnectWallet();
393
+ setSession(res.session);
394
+ });
395
+ return;
489
396
  }
490
- });
491
- }); }, [rpc.url, connectWallet, disconnectWallet]);
492
- var disconnectWalletWrapper = useCallback(function () { return __awaiter(_this, void 0, void 0, function () {
493
- var provider, err_2;
494
- return __generator(this, function (_a) {
495
- switch (_a.label) {
496
- case 0:
497
- _a.trys.push([0, 6, , 7]);
498
- if (!sessionAddress) return [3 /*break*/, 3];
499
- return [4 /*yield*/, getWalletConnectProvider()];
500
- case 1:
501
- provider = _a.sent();
502
- return [4 /*yield*/, provider.disconnect()];
503
- case 2:
504
- _a.sent();
505
- setWcSession(null);
506
- return [3 /*break*/, 5];
507
- case 3: return [4 /*yield*/, disconnectWallet()];
508
- case 4:
509
- _a.sent();
510
- showInfoToast("Disconnected wallet");
511
- _a.label = 5;
512
- case 5: return [3 /*break*/, 7];
513
- case 6:
514
- err_2 = _a.sent();
515
- showErrorToast("Failed to disconnect wallet", err_2);
516
- console.error(err_2);
517
- return [3 /*break*/, 7];
518
- case 7: return [2 /*return*/];
397
+ if (!_wallet.raw)
398
+ throw new Error("Missing wallet");
399
+ connectWallet({ wallet: _wallet.raw });
400
+ universalConnector.disconnect();
401
+ setSession(null);
402
+ showInfoToast("Connected ".concat(_wallet.name));
403
+ setIsConnectWalletDropdownOpen(false);
404
+ }
405
+ catch (err) {
406
+ showErrorToast("Failed to connect ".concat(_wallet.name), err);
407
+ console.error(err);
408
+ }
409
+ }, [connectWallet, disconnectWallet, universalConnector]);
410
+ var disconnectWalletWrapper = useCallback(function () {
411
+ try {
412
+ if (sessionAddress) {
413
+ universalConnector.disconnect();
414
+ setSession(null);
519
415
  }
520
- });
521
- }); }, [sessionAddress, disconnectWallet]);
416
+ else {
417
+ disconnectWallet();
418
+ showInfoToast("Disconnected wallet");
419
+ }
420
+ }
421
+ catch (err) {
422
+ showErrorToast("Failed to disconnect wallet", err);
423
+ console.error(err);
424
+ }
425
+ }, [sessionAddress, universalConnector, disconnectWallet]);
522
426
  // Accounts
523
427
  var walletConnection = useWalletConnection();
524
- 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]);
525
- var accountRes = (_d = useCurrentAccount()) !== null && _d !== void 0 ? _d : undefined;
428
+ 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 : []; }, [(_f = walletConnection.wallet) === null || _f === void 0 ? void 0 : _f.accounts]);
429
+ var accountRes = (_g = useCurrentAccount()) !== null && _g !== void 0 ? _g : undefined;
526
430
  var walletConnectAccount = useMemo(function () {
527
431
  return sessionAddress
528
432
  ? {
@@ -597,7 +501,7 @@ function Inner(_a) {
597
501
  if (!(wallet === null || wallet === void 0 ? void 0 : wallet.name))
598
502
  return;
599
503
  (function () { return __awaiter(_this, void 0, void 0, function () {
600
- var err_3;
504
+ var err_1;
601
505
  return __generator(this, function (_a) {
602
506
  switch (_a.label) {
603
507
  case 0:
@@ -617,8 +521,8 @@ function Inner(_a) {
617
521
  _a.sent();
618
522
  return [3 /*break*/, 3];
619
523
  case 2:
620
- err_3 = _a.sent();
621
- console.error(err_3);
524
+ err_1 = _a.sent();
525
+ console.error(err_1);
622
526
  return [3 /*break*/, 3];
623
527
  case 3: return [2 /*return*/];
624
528
  }
@@ -633,7 +537,7 @@ function Inner(_a) {
633
537
  args_1[_i - 1] = arguments[_i];
634
538
  }
635
539
  return __awaiter(_this, __spreadArray([transaction_1], args_1, true), void 0, function (transaction, setGasBudget) {
636
- var _address, _transaction, inspectResults, err_4;
540
+ var _address, _transaction, inspectResults, err_2;
637
541
  if (setGasBudget === void 0) { setGasBudget = true; }
638
542
  return __generator(this, function (_a) {
639
543
  switch (_a.label) {
@@ -659,43 +563,20 @@ function Inner(_a) {
659
563
  throw new Error(inspectResults.error);
660
564
  return [2 /*return*/, inspectResults];
661
565
  case 3:
662
- err_4 = _a.sent();
566
+ err_2 = _a.sent();
663
567
  // _transaction.getData().inputs.filter(input=>!!input.Object).map(input=>input.)
664
- console.error(err_4);
665
- throw err_4;
568
+ console.error(err_2);
569
+ throw err_2;
666
570
  case 4: return [2 /*return*/];
667
571
  }
668
572
  });
669
573
  });
670
574
  }, [impersonatedAddress, account === null || account === void 0 ? void 0 : account.address, gasBudget, suiClient]);
671
- var waitForTransactionWithCheck = useCallback(function (digest) { return __awaiter(_this, void 0, void 0, function () {
672
- var res;
575
+ var signExecuteAndWaitForTransaction = useCallback(function (transaction, onSetGasBudget, onSign, onExecute) { return __awaiter(_this, void 0, void 0, function () {
576
+ var _address, signedTransaction, txBytes, res, res1, res2, err_3;
673
577
  var _a, _b;
674
578
  return __generator(this, function (_c) {
675
579
  switch (_c.label) {
676
- case 0: return [4 /*yield*/, suiClient.waitForTransaction({
677
- digest: digest,
678
- options: {
679
- showBalanceChanges: true,
680
- showEffects: true,
681
- showEvents: true,
682
- showObjectChanges: true,
683
- },
684
- })];
685
- case 1:
686
- res = _c.sent();
687
- if (((_a = res.effects) === null || _a === void 0 ? void 0 : _a.status) !== undefined &&
688
- res.effects.status.status === "failure")
689
- throw new Error((_b = res.effects.status.error) !== null && _b !== void 0 ? _b : "Transaction failed");
690
- return [2 /*return*/, res];
691
- }
692
- });
693
- }); }, [suiClient]);
694
- var signExecuteAndWaitForTransaction = useCallback(function (transaction, onSetGasBudget, onSign, onExecute) { return __awaiter(_this, void 0, void 0, function () {
695
- var _address, provider_1, txBytes, txBase64, wcAddress, params, topic, signClient, pingErr_1, debugHandler, pendingBefore, wcRequest, methods, signRes, execDigest, _i, methods_1, method, res_1, err_5, execRes, msafeWallet, msafeFeature, msafeAccount, usedSignOnly, signedTransaction, res1, err_6, message, res, digest, err_7;
696
- var _a, _b, _c, _d, _e;
697
- return __generator(this, function (_f) {
698
- switch (_f.label) {
699
580
  case 0:
700
581
  _address = impersonatedAddress !== null && impersonatedAddress !== void 0 ? impersonatedAddress : account === null || account === void 0 ? void 0 : account.address;
701
582
  if (_address) {
@@ -704,9 +585,9 @@ function Inner(_a) {
704
585
  }
705
586
  catch (err) { }
706
587
  }
707
- _f.label = 1;
588
+ _c.label = 1;
708
589
  case 1:
709
- _f.trys.push([1, 33, , 34]);
590
+ _c.trys.push([1, 9, , 10]);
710
591
  // Gas budget
711
592
  if (gasBudget !== "")
712
593
  transaction.setGasBudget(+new BigNumber(gasBudget)
@@ -715,210 +596,75 @@ function Inner(_a) {
715
596
  onSetGasBudget === null || onSetGasBudget === void 0 ? void 0 : onSetGasBudget(transaction);
716
597
  // Log
717
598
  console.log("[WalletContext] signExecuteAndWaitForTransaction - transaction.getData():", transaction.getData());
718
- if (!sessionAddress) return [3 /*break*/, 21];
719
- return [4 /*yield*/, getWalletConnectProvider()];
720
- case 2:
721
- provider_1 = _f.sent();
599
+ signedTransaction = void 0;
600
+ if (!(sessionAddress && universalConnector)) return [3 /*break*/, 4];
722
601
  transaction.setSender(sessionAddress);
723
602
  return [4 /*yield*/, transaction.build({ client: suiClient })];
603
+ case 2:
604
+ txBytes = _c.sent();
605
+ return [4 /*yield*/, universalConnector.request({
606
+ method: "sui_signTransaction",
607
+ params: {
608
+ transaction: toBase64(txBytes),
609
+ address: sessionAddress,
610
+ },
611
+ }, "sui:mainnet")];
724
612
  case 3:
725
- txBytes = _f.sent();
726
- txBase64 = toBase64(txBytes);
727
- wcAddress = wcRawAddress !== null && wcRawAddress !== void 0 ? wcRawAddress : sessionAddress;
728
- params = {
729
- transaction: txBase64,
730
- account: wcAddress,
613
+ res = _c.sent();
614
+ signedTransaction = {
615
+ bytes: res.transactionBytes,
616
+ signature: res.signature,
731
617
  };
732
- topic = (_a = provider_1.session) === null || _a === void 0 ? void 0 : _a.topic;
733
- console.log("[WalletContext] WalletConnect session topic:", topic);
734
- console.log("[WalletContext] WalletConnect — session namespaces:", JSON.stringify((_b = provider_1.session) === null || _b === void 0 ? void 0 : _b.namespaces));
735
- console.log("[WalletContext] WalletConnect — request params:", params);
736
- if (!topic)
737
- throw new Error("WalletConnect session not found");
738
- signClient = provider_1.client;
739
- // Debug: full session dump
740
- console.log("[WalletContext] WalletConnect — full session:", JSON.stringify(provider_1.session, null, 2));
741
- console.log("[WalletContext] WalletConnect — relay connected:", signClient.core.relayer.connected);
742
- _f.label = 4;
743
- case 4:
744
- _f.trys.push([4, 6, , 7]);
745
- return [4 /*yield*/, signClient.ping({ topic: topic })];
618
+ return [3 /*break*/, 6];
619
+ case 4: return [4 /*yield*/, dAppKit.signTransaction({
620
+ transaction: transaction,
621
+ })];
746
622
  case 5:
747
- _f.sent();
748
- console.log("[WalletContext] WalletConnect — ping succeeded (peer is alive)");
749
- return [3 /*break*/, 7];
623
+ signedTransaction = _c.sent();
624
+ _c.label = 6;
750
625
  case 6:
751
- pingErr_1 = _f.sent();
752
- console.error("[WalletContext] WalletConnect — ping FAILED (peer may be offline):", pingErr_1);
753
- return [3 /*break*/, 7];
754
- case 7:
755
- debugHandler = function (event) {
756
- console.log("[WalletContext] WalletConnect — relay message received:", event);
757
- };
758
- signClient.core.relayer.on("message", debugHandler);
759
- pendingBefore = (_e = (_d = (_c = signClient.pendingRequest).getAll) === null || _d === void 0 ? void 0 : _d.call(_c)) !== null && _e !== void 0 ? _e : [];
760
- console.log("[WalletContext] WalletConnect — pending requests before:", Array.isArray(pendingBefore) ? pendingBefore.length : pendingBefore);
761
- wcRequest = function (method, requestParams, timeoutMs) {
762
- if (timeoutMs === void 0) { timeoutMs = 15000; }
763
- return new Promise(function (resolve, reject) {
764
- var timer = setTimeout(function () {
765
- reject(new Error("WalletConnect request \"".concat(method, "\" timed out after ").concat(timeoutMs / 1000, "s \u2014 the wallet did not respond. ") +
766
- "This usually means the wallet does not support this method."));
767
- }, timeoutMs);
768
- console.log("[WalletContext] WalletConnect \u2014 sending request:", JSON.stringify({
769
- method: method,
770
- params: requestParams,
771
- chainId: "sui:mainnet",
772
- }));
773
- provider_1
774
- .request({ method: method, params: requestParams }, "sui:mainnet")
775
- .then(function (res) {
776
- clearTimeout(timer);
777
- resolve(res);
778
- })
779
- .catch(function (err) {
780
- clearTimeout(timer);
781
- reject(err);
782
- });
783
- });
784
- };
785
- methods = [
786
- WC_SUI_METHODS.SIGN_TRANSACTION,
787
- WC_SUI_METHODS.SIGN_AND_EXECUTE_TRANSACTION,
788
- ];
789
- signRes = null;
790
- execDigest = null;
791
- _i = 0, methods_1 = methods;
792
- _f.label = 8;
793
- case 8:
794
- if (!(_i < methods_1.length)) return [3 /*break*/, 16];
795
- method = methods_1[_i];
796
- _f.label = 9;
797
- case 9:
798
- _f.trys.push([9, 14, , 15]);
799
- console.log("[WalletContext] WalletConnect \u2014 trying ".concat(method));
800
- if (!(method === WC_SUI_METHODS.SIGN_TRANSACTION)) return [3 /*break*/, 11];
801
- return [4 /*yield*/, wcRequest(method, params)];
802
- case 10:
803
- signRes = _f.sent();
804
- console.log("[WalletContext] WalletConnect \u2014 ".concat(method, " succeeded"));
805
- return [3 /*break*/, 16];
806
- case 11: return [4 /*yield*/, wcRequest(method, params)];
807
- case 12:
808
- res_1 = _f.sent();
809
- console.log("[WalletContext] WalletConnect \u2014 ".concat(method, " succeeded, digest:"), res_1.digest);
810
- execDigest = res_1.digest;
811
- return [3 /*break*/, 16];
812
- case 13: return [3 /*break*/, 15];
813
- case 14:
814
- err_5 = _f.sent();
815
- console.warn("[WalletContext] WalletConnect \u2014 ".concat(method, " failed:"), err_5);
816
- return [3 /*break*/, 15];
817
- case 15:
818
- _i++;
819
- return [3 /*break*/, 8];
820
- case 16:
821
- // Cleanup debug listener
822
- signClient.core.relayer.off("message", debugHandler);
823
- if (!execDigest) return [3 /*break*/, 18];
824
- return [4 /*yield*/, waitForTransactionWithCheck(execDigest)];
825
- case 17: return [2 /*return*/, _f.sent()];
826
- case 18:
827
- if (!signRes) {
828
- throw new Error("WalletConnect: wallet did not respond to any signing method. " +
829
- "Check that the wallet supports Sui transactions and that the session is active.");
830
- }
831
- console.log("[WalletContext] WalletConnect — executing signed transaction on-chain");
832
- return [4 /*yield*/, suiClient.executeTransactionBlock({
833
- transactionBlock: signRes.transactionBytes,
834
- signature: signRes.signature,
835
- })];
836
- case 19:
837
- execRes = _f.sent();
838
- return [4 /*yield*/, waitForTransactionWithCheck(execRes.digest)];
839
- case 20: return [2 /*return*/, _f.sent()];
840
- case 21:
841
- if (!isInMsafeApp()) return [3 /*break*/, 24];
842
- msafeWallet = getWallets()
843
- .get()
844
- .find(function (w) { return w.name === WalletName.MSAFE_WALLET; });
845
- msafeFeature = msafeWallet === null || msafeWallet === void 0 ? void 0 : msafeWallet.features["sui:signAndExecuteTransactionBlock"];
846
- if (!(msafeFeature && account)) return [3 /*break*/, 23];
847
- msafeAccount = msafeWallet.accounts.find(function (a) { return a.address === account.address; });
848
- if (!msafeAccount)
849
- throw new Error("MSafe account not found");
850
- return [4 /*yield*/, msafeFeature.signAndExecuteTransactionBlock({
851
- transactionBlock: transaction,
852
- account: msafeAccount,
853
- chain: "sui:mainnet",
854
- })];
855
- case 22:
856
- _f.sent();
857
- // MSafe proposes the transaction to the multisig queue;
858
- // the promise never resolves (only rejects on cancel).
859
- // If we reach here the proposal was accepted.
860
- throw new Error("Unreachable");
861
- case 23: throw new Error("MSafe wallet not found. Please reload the page inside MSafe.");
862
- case 24:
863
- usedSignOnly = false;
864
- _f.label = 25;
865
- case 25:
866
- _f.trys.push([25, 29, , 30]);
867
- return [4 /*yield*/, dAppKit.signTransaction({
868
- transaction: transaction,
869
- })];
870
- case 26:
871
- signedTransaction = _f.sent();
872
- usedSignOnly = true;
873
626
  onSign === null || onSign === void 0 ? void 0 : onSign(signedTransaction);
874
627
  return [4 /*yield*/, suiClient.executeTransactionBlock({
875
628
  transactionBlock: signedTransaction.bytes,
876
629
  signature: signedTransaction.signature,
877
630
  })];
878
- case 27:
879
- res1 = _f.sent();
631
+ case 7:
632
+ res1 = _c.sent();
880
633
  onExecute === null || onExecute === void 0 ? void 0 : onExecute(res1);
881
- return [4 /*yield*/, waitForTransactionWithCheck(res1.digest)];
882
- case 28: return [2 /*return*/, _f.sent()];
883
- case 29:
884
- err_6 = _f.sent();
885
- if (usedSignOnly)
886
- throw err_6;
887
- message = err_6 instanceof Error ? err_6.message : String(err_6);
888
- if (!message.includes("does not support"))
889
- throw err_6;
890
- console.warn("[WalletContext] Wallet does not support sign-only, falling back to signAndExecuteTransaction");
891
- return [3 /*break*/, 30];
892
- case 30: return [4 /*yield*/, dAppKit.signAndExecuteTransaction({
893
- transaction: transaction,
894
- })];
895
- case 31:
896
- res = _f.sent();
897
- digest = res.$kind === "Transaction"
898
- ? res.Transaction.digest
899
- : res.FailedTransaction.digest;
900
- return [4 /*yield*/, waitForTransactionWithCheck(digest)];
901
- case 32: return [2 /*return*/, _f.sent()];
902
- case 33:
903
- err_7 = _f.sent();
904
- console.error(err_7);
905
- throw err_7;
906
- case 34: return [2 /*return*/];
634
+ return [4 /*yield*/, suiClient.waitForTransaction({
635
+ digest: res1.digest,
636
+ options: {
637
+ showBalanceChanges: true,
638
+ showEffects: true,
639
+ showEvents: true,
640
+ showObjectChanges: true,
641
+ },
642
+ })];
643
+ case 8:
644
+ res2 = _c.sent();
645
+ if (((_a = res2.effects) === null || _a === void 0 ? void 0 : _a.status) !== undefined &&
646
+ res2.effects.status.status === "failure")
647
+ throw new Error((_b = res2.effects.status.error) !== null && _b !== void 0 ? _b : "Transaction failed");
648
+ return [2 /*return*/, res2];
649
+ case 9:
650
+ err_3 = _c.sent();
651
+ console.error(err_3);
652
+ throw err_3;
653
+ case 10: return [2 /*return*/];
907
654
  }
908
655
  });
909
656
  }); }, [
657
+ universalConnector,
910
658
  sessionAddress,
911
- wcRawAddress,
912
659
  gasBudget,
913
660
  impersonatedAddress,
914
- account,
661
+ account === null || account === void 0 ? void 0 : account.address,
915
662
  dryRunTransaction,
916
663
  suiClient,
917
664
  dAppKit,
918
- waitForTransactionWithCheck,
919
665
  ]);
920
666
  // Using Ledger
921
- 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];
667
+ var _m = useLocalStorage("isUsingLedger-".concat(impersonatedAddress !== null && impersonatedAddress !== void 0 ? impersonatedAddress : account === null || account === void 0 ? void 0 : account.address), false), isUsingLedger = _m[0], setIsUsingLedger = _m[1];
922
668
  // Context
923
669
  var contextValue = useMemo(function () {
924
670
  return {
@@ -1,10 +1,3 @@
1
- import { type AppKit } from "@reown/appkit/core";
2
- import UniversalProvider from "@walletconnect/universal-provider";
1
+ import { UniversalConnector } from "@reown/appkit-universal-connector";
3
2
  export declare const projectId = "eebad6a56ec8b3f08b70175934d35a9d";
4
- export declare function getWalletConnectProvider(): Promise<UniversalProvider>;
5
- export declare function getWalletConnectModal(rpcUrl: string): Promise<AppKit>;
6
- export declare const WC_SUI_METHODS: {
7
- readonly SIGN_TRANSACTION: "sui_signTransaction";
8
- readonly SIGN_AND_EXECUTE_TRANSACTION: "sui_signAndExecuteTransaction";
9
- readonly SIGN_PERSONAL_MESSAGE: "sui_signPersonalMessage";
10
- };
3
+ export declare function getUniversalConnector(rpcUrl: string): Promise<UniversalConnector>;