@lifi/widget 3.20.5 → 3.21.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 (68) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/esm/App.d.ts +1 -1
  3. package/dist/esm/components/Card/Card.js +1 -0
  4. package/dist/esm/components/Card/Card.js.map +1 -1
  5. package/dist/esm/components/Card/CardIconButton.d.ts +1 -1
  6. package/dist/esm/components/Tabs/Tabs.style.d.ts +1 -1
  7. package/dist/esm/components/TokenList/TokenList.style.d.ts +2 -2
  8. package/dist/esm/components/TokenList/TokenListItem.js +2 -2
  9. package/dist/esm/components/TokenList/TokenListItem.js.map +1 -1
  10. package/dist/esm/config/version.d.ts +1 -1
  11. package/dist/esm/config/version.js +1 -1
  12. package/dist/esm/hooks/useAvailableChains.js +6 -1
  13. package/dist/esm/hooks/useAvailableChains.js.map +1 -1
  14. package/dist/esm/hooks/useDebouncedWatch.d.ts +1 -1
  15. package/dist/esm/hooks/useExplorer.d.ts +1 -0
  16. package/dist/esm/hooks/useExplorer.js +11 -1
  17. package/dist/esm/hooks/useExplorer.js.map +1 -1
  18. package/dist/esm/hooks/useIsContractAddress.d.ts +1 -1
  19. package/dist/esm/hooks/useIsContractAddress.js.map +1 -1
  20. package/dist/esm/hooks/useTokens.js +8 -1
  21. package/dist/esm/hooks/useTokens.js.map +1 -1
  22. package/dist/esm/hooks/useWidgetEvents.d.ts +3 -3
  23. package/dist/esm/pages/TransactionPage/StartTransactionButton.js +6 -2
  24. package/dist/esm/pages/TransactionPage/StartTransactionButton.js.map +1 -1
  25. package/dist/esm/providers/WalletProvider/SDKProviders.js +16 -2
  26. package/dist/esm/providers/WalletProvider/SDKProviders.js.map +1 -1
  27. package/dist/esm/providers/WalletProvider/SVMBaseProvider.js +2 -1
  28. package/dist/esm/providers/WalletProvider/SVMBaseProvider.js.map +1 -1
  29. package/dist/esm/providers/WalletProvider/SuiBaseProvider.d.ts +2 -0
  30. package/dist/esm/providers/WalletProvider/SuiBaseProvider.js +22 -0
  31. package/dist/esm/providers/WalletProvider/SuiBaseProvider.js.map +1 -0
  32. package/dist/esm/providers/WalletProvider/SuiExternalContext.d.ts +1 -0
  33. package/dist/esm/providers/WalletProvider/SuiExternalContext.js +3 -0
  34. package/dist/esm/providers/WalletProvider/SuiExternalContext.js.map +1 -0
  35. package/dist/esm/providers/WalletProvider/SuiProvider.d.ts +3 -0
  36. package/dist/esm/providers/WalletProvider/SuiProvider.js +18 -0
  37. package/dist/esm/providers/WalletProvider/SuiProvider.js.map +1 -0
  38. package/dist/esm/providers/WalletProvider/UTXOBaseProvider.js.map +1 -1
  39. package/dist/esm/providers/WalletProvider/WalletProvider.js +2 -1
  40. package/dist/esm/providers/WalletProvider/WalletProvider.js.map +1 -1
  41. package/dist/esm/providers/WalletProvider/useExternalWalletProvider.js +16 -2
  42. package/dist/esm/providers/WalletProvider/useExternalWalletProvider.js.map +1 -1
  43. package/dist/esm/providers/WidgetProvider/WidgetProvider.js +1 -1
  44. package/dist/esm/providers/WidgetProvider/WidgetProvider.js.map +1 -1
  45. package/dist/esm/providers/WidgetProvider/utils.d.ts +1 -1
  46. package/dist/esm/utils/chainType.js +2 -1
  47. package/dist/esm/utils/chainType.js.map +1 -1
  48. package/package.json +14 -11
  49. package/package.json.tmp +14 -11
  50. package/src/components/Card/Card.tsx +1 -0
  51. package/src/components/TokenList/TokenListItem.tsx +2 -2
  52. package/src/config/version.ts +1 -1
  53. package/src/hooks/useAvailableChains.ts +6 -1
  54. package/src/hooks/useExplorer.ts +13 -2
  55. package/src/hooks/useIsContractAddress.ts +6 -1
  56. package/src/hooks/useTokens.ts +8 -1
  57. package/src/pages/TransactionPage/StartTransactionButton.tsx +7 -2
  58. package/src/providers/WalletProvider/SDKProviders.tsx +20 -2
  59. package/src/providers/WalletProvider/SVMBaseProvider.tsx +2 -1
  60. package/src/providers/WalletProvider/SuiBaseProvider.tsx +37 -0
  61. package/src/providers/WalletProvider/SuiExternalContext.ts +3 -0
  62. package/src/providers/WalletProvider/SuiProvider.tsx +26 -0
  63. package/src/providers/WalletProvider/UTXOBaseProvider.tsx +8 -4
  64. package/src/providers/WalletProvider/WalletProvider.tsx +5 -2
  65. package/src/providers/WalletProvider/useExternalWalletProvider.ts +16 -3
  66. package/src/providers/WidgetProvider/WidgetProvider.tsx +1 -1
  67. package/src/utils/chainType.ts +2 -1
  68. package/tsconfig.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetProvider.js","sourceRoot":"","sources":["../../../../src/providers/WidgetProvider/WidgetProvider.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAA;AAGhF,MAAM,cAAc,GAAuB;IACzC,SAAS,EAAE,EAAE;IACb,UAAU,EAAE,EAAE;CACf,CAAA;AAED,MAAM,aAAa,GAAG,aAAa,CAAqB,cAAc,CAAC,CAAA;AAEvE,MAAM,CAAC,MAAM,eAAe,GAAG,GAAuB,EAAE,CACtD,UAAU,CAAC,aAAa,CAAC,CAAA;AAE3B,IAAI,cAAc,GAAG,KAAK,CAAA;AAE1B,MAAM,CAAC,MAAM,cAAc,GAEvB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE;IACzC,MAAM,SAAS,GAAG,KAAK,EAAE,CAAA;IACzB,MAAM,EAAE,kBAAkB,EAAE,GAAG,kBAAkB,EAAE,CAAA;IAEnD,IAAI,CAAC,YAAY,EAAE,UAAU,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;IAC/D,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,GAAuB,EAAE;QAC7C,IAAI,CAAC;YACH,qCAAqC;YACrC,MAAM,KAAK,GAAG;gBACZ,GAAG,YAAY;gBACf,SAAS;aACY,CAAA;YAEvB,iDAAiD;YACjD,kBAAkB,CAAC,KAAK,CAAC,CAAA;YAEzB,gBAAgB;YAChB,MAAM,OAAO,GAAc;gBACzB,GAAG,YAAY,CAAC,SAAS;gBACzB,MAAM,EAAE,YAAY,CAAC,MAAM;gBAC3B,UAAU,EAAE,YAAY,CAAC,UAAU,IAAI,MAAM,EAAE,QAAQ,CAAC,QAAQ;gBAChE,YAAY,EAAE;oBACZ,GAAG,EAAE,YAAY,CAAC,SAAS,EAAE,GAAG,IAAI,YAAY,CAAC,GAAG;oBACpD,QAAQ,EAAE,YAAY,CAAC,QAAQ;oBAC/B,KAAK,EAAE,YAAY,CAAC,aAAa;oBACjC,QAAQ,EAAE,YAAY,CAAC,QAAQ;oBAC/B,GAAG,YAAY,CAAC,SAAS,EAAE,YAAY;iBACxC;gBACD,mBAAmB,EAAE,IAAI;gBACzB,aAAa,EAAE,OAAO;gBACtB,wBAAwB;gBACxB,eAAe;aAChB,CAAA;YACD,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,YAAY,CAAC,OAAO,CAAC,CAAA;gBACrB,cAAc,GAAG,IAAI,CAAA;YACvB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACrB,CAAC;YAED,OAAO,KAAK,CAAA;QACd,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACf,OAAO;gBACL,GAAG,YAAY;gBACf,SAAS;gBACT,UAAU,EAAE,YAAY,CAAC,UAAU;aACpC,CAAA;QACH,CAAC;IACH,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC,CAAA;IACjD,OAAO,CACL,KAAC,aAAa,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAA0B,CAC1E,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"WidgetProvider.js","sourceRoot":"","sources":["../../../../src/providers/WidgetProvider/WidgetProvider.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAA;AAGhF,MAAM,cAAc,GAAuB;IACzC,SAAS,EAAE,EAAE;IACb,UAAU,EAAE,EAAE;CACf,CAAA;AAED,MAAM,aAAa,GAAG,aAAa,CAAqB,cAAc,CAAC,CAAA;AAEvE,MAAM,CAAC,MAAM,eAAe,GAAG,GAAuB,EAAE,CACtD,UAAU,CAAC,aAAa,CAAC,CAAA;AAE3B,IAAI,cAAc,GAAG,KAAK,CAAA;AAE1B,MAAM,CAAC,MAAM,cAAc,GAEvB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE;IACzC,MAAM,SAAS,GAAG,KAAK,EAAE,CAAA;IACzB,MAAM,EAAE,kBAAkB,EAAE,GAAG,kBAAkB,EAAE,CAAA;IAEnD,IAAI,CAAC,YAAY,EAAE,UAAU,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;IAC/D,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,GAAuB,EAAE;QAC7C,IAAI,CAAC;YACH,qCAAqC;YACrC,MAAM,KAAK,GAAG;gBACZ,GAAG,YAAY;gBACf,SAAS;aACY,CAAA;YAEvB,iDAAiD;YACjD,kBAAkB,CAAC,KAAK,CAAC,CAAA;YAEzB,gBAAgB;YAChB,MAAM,OAAO,GAAc;gBACzB,GAAG,YAAY,CAAC,SAAS;gBACzB,MAAM,EAAE,YAAY,CAAC,MAAM;gBAC3B,UAAU,EAAE,YAAY,CAAC,UAAU,IAAI,MAAM,EAAE,QAAQ,CAAC,QAAQ;gBAChE,YAAY,EAAE;oBACZ,GAAG,EAAE,YAAY,CAAC,SAAS,EAAE,GAAG,IAAI,YAAY,CAAC,GAAG;oBACpD,QAAQ,EAAE,YAAY,CAAC,QAAQ;oBAC/B,KAAK,EAAE,YAAY,CAAC,aAAa;oBACjC,QAAQ,EAAE,YAAY,CAAC,QAAQ;oBAC/B,GAAG,YAAY,CAAC,SAAS,EAAE,YAAY;iBACxC;gBACD,mBAAmB,EAAE,IAAI;gBACzB,aAAa,EAAE,OAAO;gBACtB,aAAa,EAAE,KAAK;gBACpB,eAAe;aAChB,CAAA;YACD,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,YAAY,CAAC,OAAO,CAAC,CAAA;gBACrB,cAAc,GAAG,IAAI,CAAA;YACvB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACrB,CAAC;YAED,OAAO,KAAK,CAAA;QACd,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACf,OAAO;gBACL,GAAG,YAAY;gBACf,SAAS;gBACT,UAAU,EAAE,YAAY,CAAC,UAAU;aACpC,CAAA;QACH,CAAC;IACH,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC,CAAA;IACjD,OAAO,CACL,KAAC,aAAa,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAA0B,CAC1E,CAAA;AACH,CAAC,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import type { WidgetConfig } from '../../types/widget.js';
2
- export declare const attemptToFindMatchingToAddressInConfig: (address: string, config: WidgetConfig) => import("../../types/widget.js").ToAddress | {
2
+ export declare const attemptToFindMatchingToAddressInConfig: (address: string, config: WidgetConfig) => import("../../index.js").ToAddress | {
3
3
  address: string;
4
4
  chainType: import("@lifi/sdk").ChainType | undefined;
5
5
  };
@@ -1,11 +1,12 @@
1
1
  import { isUTXOAddress } from '@bigmi/core';
2
2
  import { ChainId, ChainType, isSVMAddress } from '@lifi/sdk';
3
+ import { isValidSuiAddress } from '@mysten/sui/utils';
3
4
  import { isAddress as isEVMAddress } from 'viem';
4
5
  const chainTypeAddressValidation = {
5
6
  [ChainType.EVM]: isEVMAddress,
6
7
  [ChainType.SVM]: isSVMAddress,
8
+ [ChainType.MVM]: isValidSuiAddress,
7
9
  [ChainType.UTXO]: isUTXOAddress,
8
- [ChainType.MVM]: () => false,
9
10
  };
10
11
  export const getChainTypeFromAddress = (address) => {
11
12
  for (const chainType in chainTypeAddressValidation) {
@@ -1 +1 @@
1
- {"version":3,"file":"chainType.js","sourceRoot":"","sources":["../../../src/utils/chainType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC5D,OAAO,EAAE,SAAS,IAAI,YAAY,EAAE,MAAM,MAAM,CAAA;AAEhD,MAAM,0BAA0B,GAAG;IACjC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,YAAY;IAC7B,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,YAAY;IAC7B,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,aAAa;IAC/B,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK;CAC7B,CAAA;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,OAAe,EACQ,EAAE;IACzB,KAAK,MAAM,SAAS,IAAI,0BAA0B,EAAE,CAAC;QACnD,MAAM,WAAW,GACf,0BAA0B,CAAC,SAAsB,CAAC,CAAC,OAAO,CAAC,CAAA;QAC7D,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,SAAsB,CAAA;QAC/B,CAAC;IACH,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG;IAC5B,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG;IAC5B,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,GAAG;IAC7B,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG;CAC7B,CAAA"}
1
+ {"version":3,"file":"chainType.js","sourceRoot":"","sources":["../../../src/utils/chainType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,SAAS,IAAI,YAAY,EAAE,MAAM,MAAM,CAAA;AAEhD,MAAM,0BAA0B,GAAG;IACjC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,YAAY;IAC7B,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,YAAY;IAC7B,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,iBAAiB;IAClC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,aAAa;CAChC,CAAA;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,OAAe,EACQ,EAAE;IACzB,KAAK,MAAM,SAAS,IAAI,0BAA0B,EAAE,CAAC;QACnD,MAAM,WAAW,GACf,0BAA0B,CAAC,SAAsB,CAAC,CAAC,OAAO,CAAC,CAAA;QAC7D,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,SAAsB,CAAA;QAC/B,CAAC;IACH,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG;IAC5B,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG;IAC5B,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,GAAG;IAC7B,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG;CAC7B,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lifi/widget",
3
- "version": "3.20.5",
3
+ "version": "3.21.1",
4
4
  "description": "LI.FI Widget for cross-chain bridging and swapping. It will drive your multi-chain strategy and attract new users from everywhere.",
5
5
  "type": "module",
6
6
  "main": "./dist/esm/index.js",
@@ -30,29 +30,32 @@
30
30
  "lifi"
31
31
  ],
32
32
  "dependencies": {
33
- "@bigmi/client": "^0.1.1",
34
- "@bigmi/core": "^0.1.1",
33
+ "@bigmi/client": "^0.2.1",
34
+ "@bigmi/core": "^0.2.1",
35
35
  "@emotion/react": "^11.14.0",
36
36
  "@emotion/styled": "^11.14.0",
37
- "@lifi/sdk": "^3.6.14",
37
+ "@lifi/sdk": "^3.7.1",
38
38
  "@mui/icons-material": "^7.1.0",
39
39
  "@mui/material": "^7.1.0",
40
40
  "@mui/system": "^7.1.0",
41
- "@solana/wallet-adapter-base": "^0.9.24",
42
- "@solana/web3.js": "^1.98.0",
43
- "@tanstack/react-virtual": "^3.13.8",
44
- "i18next": "^25.1.2",
41
+ "@mysten/sui": "^1.29.1",
42
+ "@solana/wallet-adapter-base": "^0.9.26",
43
+ "@solana/wallet-adapter-coinbase": "^0.1.22",
44
+ "@solana/web3.js": "^1.98.2",
45
+ "@tanstack/react-virtual": "^3.13.9",
46
+ "i18next": "^25.2.0",
45
47
  "microdiff": "^1.5.0",
46
48
  "mitt": "^3.0.1",
47
49
  "react-i18next": "^15.5.1",
48
50
  "react-intersection-observer": "^9.16.0",
49
51
  "react-router-dom": "^6.30.0",
50
- "viem": "^2.29.2",
52
+ "viem": "^2.30.0",
51
53
  "zustand": "^5.0.4",
52
- "@lifi/wallet-management": "^3.8.2"
54
+ "@lifi/wallet-management": "^3.9.1"
53
55
  },
54
56
  "peerDependencies": {
55
- "@bigmi/react": ">=0.1.0",
57
+ "@bigmi/react": ">=0.2.1",
58
+ "@mysten/dapp-kit": ">=0.16.0",
56
59
  "@solana/wallet-adapter-react": ">=0.15.35",
57
60
  "@tanstack/react-query": ">=5.68.0",
58
61
  "react": ">=18",
package/package.json.tmp CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lifi/widget",
3
- "version": "3.20.5",
3
+ "version": "3.21.1",
4
4
  "description": "LI.FI Widget for cross-chain bridging and swapping. It will drive your multi-chain strategy and attract new users from everywhere.",
5
5
  "type": "module",
6
6
  "main": "./src/index.ts",
@@ -49,25 +49,27 @@
49
49
  "lifi"
50
50
  ],
51
51
  "dependencies": {
52
- "@bigmi/client": "^0.1.1",
53
- "@bigmi/core": "^0.1.1",
52
+ "@bigmi/client": "^0.2.1",
53
+ "@bigmi/core": "^0.2.1",
54
54
  "@emotion/react": "^11.14.0",
55
55
  "@emotion/styled": "^11.14.0",
56
- "@lifi/sdk": "^3.6.14",
56
+ "@lifi/sdk": "^3.7.1",
57
57
  "@lifi/wallet-management": "workspace:^",
58
58
  "@mui/icons-material": "^7.1.0",
59
59
  "@mui/material": "^7.1.0",
60
60
  "@mui/system": "^7.1.0",
61
- "@solana/wallet-adapter-base": "^0.9.24",
62
- "@solana/web3.js": "^1.98.0",
63
- "@tanstack/react-virtual": "^3.13.8",
64
- "i18next": "^25.1.2",
61
+ "@mysten/sui": "^1.29.1",
62
+ "@solana/wallet-adapter-base": "^0.9.26",
63
+ "@solana/wallet-adapter-coinbase": "^0.1.22",
64
+ "@solana/web3.js": "^1.98.2",
65
+ "@tanstack/react-virtual": "^3.13.9",
66
+ "i18next": "^25.2.0",
65
67
  "microdiff": "^1.5.0",
66
68
  "mitt": "^3.0.1",
67
69
  "react-i18next": "^15.5.1",
68
70
  "react-intersection-observer": "^9.16.0",
69
71
  "react-router-dom": "^6.30.0",
70
- "viem": "^2.29.2",
72
+ "viem": "^2.30.0",
71
73
  "zustand": "^5.0.4"
72
74
  },
73
75
  "devDependencies": {
@@ -76,10 +78,11 @@
76
78
  "react": "^19.1.0",
77
79
  "react-dom": "^19.1.0",
78
80
  "typescript": "^5.8.3",
79
- "vitest": "^3.1.3"
81
+ "vitest": "^3.1.4"
80
82
  },
81
83
  "peerDependencies": {
82
- "@bigmi/react": ">=0.1.0",
84
+ "@bigmi/react": ">=0.2.1",
85
+ "@mysten/dapp-kit": ">=0.16.0",
83
86
  "@solana/wallet-adapter-react": ">=0.15.35",
84
87
  "@tanstack/react-query": ">=5.68.0",
85
88
  "react": ">=18",
@@ -38,6 +38,7 @@ export const Card = styled(MuiCard, {
38
38
  '&:hover': {
39
39
  backgroundColor: `color-mix(in srgb, ${theme.vars.palette.primary.main} 40%, black)`,
40
40
  },
41
+ borderColor: theme.vars.palette.primary.main,
41
42
  }),
42
43
  },
43
44
  },
@@ -85,7 +85,7 @@ export const TokenListItemButton: React.FC<TokenListItemButtonProps> = ({
85
85
  isBalanceLoading,
86
86
  }) => {
87
87
  const { t } = useTranslation()
88
- const { getAddressLink } = useExplorer()
88
+ const { getTokenAddressLink } = useExplorer()
89
89
 
90
90
  const container = useRef(null)
91
91
  const timeoutId = useRef<ReturnType<typeof setTimeout>>(undefined)
@@ -184,7 +184,7 @@ export const TokenListItemButton: React.FC<TokenListItemButtonProps> = ({
184
184
  <IconButton
185
185
  size="small"
186
186
  LinkComponent={Link}
187
- href={getAddressLink(tokenAddress!, chain)}
187
+ href={getTokenAddressLink(tokenAddress!, chain)}
188
188
  target="_blank"
189
189
  rel="nofollow noreferrer"
190
190
  onClick={(e) => e.stopPropagation()}
@@ -1,2 +1,2 @@
1
1
  export const name = '@lifi/widget'
2
- export const version = '3.20.5'
2
+ export const version = '3.21.1'
@@ -10,7 +10,12 @@ export type GetChainById = (
10
10
  chains?: ExtendedChain[]
11
11
  ) => ExtendedChain | undefined
12
12
 
13
- const supportedChainTypes = [ChainType.EVM, ChainType.SVM, ChainType.UTXO]
13
+ const supportedChainTypes = [
14
+ ChainType.EVM,
15
+ ChainType.SVM,
16
+ ChainType.UTXO,
17
+ ChainType.MVM,
18
+ ]
14
19
 
15
20
  export const useAvailableChains = (chainTypes?: ChainType[]) => {
16
21
  const { chains } = useWidgetConfig()
@@ -1,4 +1,5 @@
1
- import type { Chain } from '@lifi/sdk'
1
+ import type { Chain, EVMChain } from '@lifi/sdk'
2
+ import { ChainId } from '@lifi/sdk'
2
3
  import { lifiExplorerUrl } from '../config/constants.js'
3
4
  import { useAvailableChains } from '../hooks/useAvailableChains.js'
4
5
  import { useWidgetConfig } from '../providers/WidgetProvider/WidgetProvider.js'
@@ -46,7 +47,8 @@ export const useExplorer = () => {
46
47
  return `${baseUrl}/tx/${txHash}`
47
48
  }
48
49
  const resolvedChain = resolveChain(chain)
49
- return `${resolvedChain ? getBaseUrl(resolvedChain) : lifiExplorerUrl}/tx/${txHash}`
50
+ const txPathSegment = resolvedChain?.id === ChainId.SUI ? 'txblock' : 'tx'
51
+ return `${resolvedChain ? getBaseUrl(resolvedChain) : lifiExplorerUrl}/${txPathSegment}/${txHash}`
50
52
  }
51
53
 
52
54
  const getAddressLink = (address: string, chain?: Chain | number) => {
@@ -61,8 +63,17 @@ export const useExplorer = () => {
61
63
  return `${resolvedChain ? getBaseUrl(resolvedChain) : lifiExplorerUrl}/address/${address}`
62
64
  }
63
65
 
66
+ const getTokenAddressLink = (address: string, chain?: Chain | number) => {
67
+ const link = getAddressLink(address, chain)
68
+ if (chain === ChainId.SUI || (chain as EVMChain)?.id === ChainId.SUI) {
69
+ return link.replace('address', 'coin')
70
+ }
71
+ return link
72
+ }
73
+
64
74
  return {
65
75
  getTransactionLink,
66
76
  getAddressLink,
77
+ getTokenAddressLink,
67
78
  }
68
79
  }
@@ -6,7 +6,12 @@ export const useIsContractAddress = (
6
6
  address?: string,
7
7
  chainId?: number,
8
8
  chainType?: ChainType
9
- ) => {
9
+ ): {
10
+ isContractAddress: boolean
11
+ contractCode?: string
12
+ isLoading: boolean
13
+ isFetched: boolean
14
+ } => {
10
15
  const {
11
16
  data: contractCode,
12
17
  isLoading,
@@ -10,7 +10,14 @@ export const useTokens = (selectedChainId?: number) => {
10
10
  const { data, isLoading } = useQuery({
11
11
  queryKey: ['tokens'],
12
12
  queryFn: () =>
13
- getTokens({ chainTypes: [ChainType.EVM, ChainType.SVM, ChainType.UTXO] }),
13
+ getTokens({
14
+ chainTypes: [
15
+ ChainType.EVM,
16
+ ChainType.SVM,
17
+ ChainType.UTXO,
18
+ ChainType.MVM,
19
+ ],
20
+ }),
14
21
  refetchInterval: 3_600_000,
15
22
  staleTime: 3_600_000,
16
23
  })
@@ -1,3 +1,4 @@
1
+ import { useMemo } from 'react'
1
2
  import { BaseTransactionButton } from '../../components/BaseTransactionButton/BaseTransactionButton.js'
2
3
  import { useMessageQueue } from '../../components/Messages/useMessageQueue.js'
3
4
  import type { StartTransactionButtonProps } from './types.js'
@@ -8,13 +9,17 @@ export const StartTransactionButton: React.FC<StartTransactionButtonProps> = ({
8
9
  text,
9
10
  loading,
10
11
  }) => {
11
- const { hasMessages, isLoading } = useMessageQueue(route, true)
12
+ const { messages, isLoading } = useMessageQueue(route, true)
13
+
14
+ const hasNonGasMessages = useMemo(() => {
15
+ return messages.some((message) => message.id !== 'INSUFFICIENT_GAS')
16
+ }, [messages])
12
17
 
13
18
  return (
14
19
  <BaseTransactionButton
15
20
  onClick={onClick}
16
21
  text={text}
17
- disabled={hasMessages}
22
+ disabled={hasNonGasMessages}
18
23
  loading={isLoading || loading}
19
24
  />
20
25
  )
@@ -1,7 +1,8 @@
1
1
  import { getConnectorClient as getBigmiConnectorClient } from '@bigmi/client'
2
2
  import { useConfig as useBigmiConfig } from '@bigmi/react'
3
3
  import type { SDKProvider } from '@lifi/sdk'
4
- import { ChainType, EVM, Solana, UTXO, config } from '@lifi/sdk'
4
+ import { ChainType, EVM, Solana, Sui, UTXO, config } from '@lifi/sdk'
5
+ import { useCurrentWallet } from '@mysten/dapp-kit'
5
6
  import type { SignerWalletAdapter } from '@solana/wallet-adapter-base'
6
7
  import { useWallet } from '@solana/wallet-adapter-react'
7
8
  import { useEffect } from 'react'
@@ -17,6 +18,7 @@ export const SDKProviders = () => {
17
18
  const { wallet } = useWallet()
18
19
  const wagmiConfig = useWagmiConfig()
19
20
  const bigmiConfig = useBigmiConfig()
21
+ const { currentWallet } = useCurrentWallet()
20
22
 
21
23
  useEffect(() => {
22
24
  // Configure SDK Providers
@@ -30,6 +32,9 @@ export const SDKProviders = () => {
30
32
  const hasConfiguredUTXOProvider = sdkConfig?.providers?.some(
31
33
  (provider) => provider.type === ChainType.UTXO
32
34
  )
35
+ const hasConfiguredSuiProvider = sdkConfig?.providers?.some(
36
+ (provider) => provider.type === ChainType.MVM
37
+ )
33
38
  if (!hasConfiguredEVMProvider) {
34
39
  providers.push(
35
40
  EVM({
@@ -57,11 +62,24 @@ export const SDKProviders = () => {
57
62
  })
58
63
  )
59
64
  }
65
+ if (!hasConfiguredSuiProvider) {
66
+ providers.push(
67
+ Sui({
68
+ getWallet: async () => currentWallet!,
69
+ })
70
+ )
71
+ }
60
72
  if (sdkConfig?.providers?.length) {
61
73
  providers.push(...sdkConfig.providers)
62
74
  }
63
75
  config.setProviders(providers)
64
- }, [bigmiConfig, sdkConfig?.providers, wagmiConfig, wallet?.adapter])
76
+ }, [
77
+ bigmiConfig,
78
+ currentWallet,
79
+ sdkConfig?.providers,
80
+ wagmiConfig,
81
+ wallet?.adapter,
82
+ ])
65
83
 
66
84
  return null
67
85
  }
@@ -1,5 +1,6 @@
1
1
  import type { Adapter } from '@solana/wallet-adapter-base'
2
2
  import { WalletAdapterNetwork } from '@solana/wallet-adapter-base'
3
+ import { CoinbaseWalletAdapter } from '@solana/wallet-adapter-coinbase'
3
4
  import {
4
5
  ConnectionProvider,
5
6
  WalletProvider,
@@ -20,7 +21,7 @@ const endpoint = clusterApiUrl(WalletAdapterNetwork.Mainnet)
20
21
  * instantiate its legacy wallet adapter here. Common legacy adapters can be found
21
22
  * in the npm package `@solana/wallet-adapter-wallets`.
22
23
  */
23
- const wallets: Adapter[] = []
24
+ const wallets: Adapter[] = [new CoinbaseWalletAdapter()]
24
25
 
25
26
  export const SVMBaseProvider: FC<PropsWithChildren> = ({ children }) => {
26
27
  return (
@@ -0,0 +1,37 @@
1
+ import { ChainId } from '@lifi/sdk'
2
+ import {
3
+ SuiClientProvider,
4
+ WalletProvider,
5
+ createNetworkConfig,
6
+ } from '@mysten/dapp-kit'
7
+ import { getFullnodeUrl } from '@mysten/sui/client'
8
+ import { type FC, type PropsWithChildren, useMemo } from 'react'
9
+ import { useAvailableChains } from '../../hooks/useAvailableChains.js'
10
+
11
+ export const SuiBaseProvider: FC<PropsWithChildren> = ({ children }) => {
12
+ const { chains } = useAvailableChains()
13
+
14
+ const config = useMemo(() => {
15
+ const sui = chains?.find((chain) => chain.id === ChainId.SUI)
16
+ if (sui) {
17
+ return createNetworkConfig({
18
+ mainnet: { url: sui.metamask?.rpcUrls[0] ?? getFullnodeUrl('mainnet') },
19
+ })
20
+ }
21
+ }, [chains])
22
+
23
+ if (!config?.networkConfig) {
24
+ return null
25
+ }
26
+
27
+ return (
28
+ <SuiClientProvider networks={config.networkConfig} defaultNetwork="mainnet">
29
+ <WalletProvider
30
+ storageKey="li.fi-widget-sui-wallet-connection"
31
+ autoConnect
32
+ >
33
+ {children}
34
+ </WalletProvider>
35
+ </SuiClientProvider>
36
+ )
37
+ }
@@ -0,0 +1,3 @@
1
+ import { createContext } from 'react'
2
+
3
+ export const SuiExternalContext = createContext<boolean>(false)
@@ -0,0 +1,26 @@
1
+ import { ChainType } from '@lifi/sdk'
2
+ import { SuiClientContext } from '@mysten/dapp-kit'
3
+ import { type FC, type PropsWithChildren, useContext } from 'react'
4
+ import { isItemAllowed } from '../../utils/item.js'
5
+ import { useWidgetConfig } from '../WidgetProvider/WidgetProvider.js'
6
+ import { SuiBaseProvider } from './SuiBaseProvider.js'
7
+ import { SuiExternalContext } from './SuiExternalContext.js'
8
+
9
+ export function useInSuiContext(): boolean {
10
+ const { chains } = useWidgetConfig()
11
+ const context = useContext(SuiClientContext)
12
+
13
+ return Boolean(context) && isItemAllowed(ChainType.MVM, chains?.types)
14
+ }
15
+
16
+ export const SuiProvider: FC<PropsWithChildren> = ({ children }) => {
17
+ const inSuiContext = useInSuiContext()
18
+
19
+ return inSuiContext ? (
20
+ <SuiExternalContext.Provider value={inSuiContext}>
21
+ {children}
22
+ </SuiExternalContext.Provider>
23
+ ) : (
24
+ <SuiBaseProvider>{children}</SuiBaseProvider>
25
+ )
26
+ }
@@ -1,10 +1,11 @@
1
+ import type { Config } from '@bigmi/client'
1
2
  import { BigmiProvider, useReconnect } from '@bigmi/react'
2
- import type { DefaultWagmiConfigResult } from '@lifi/wallet-management'
3
+ import type { DefaultBigmiConfigResult } from '@lifi/wallet-management'
3
4
  import { createDefaultBigmiConfig } from '@lifi/wallet-management'
4
5
  import { type FC, type PropsWithChildren, useRef } from 'react'
5
6
 
6
7
  export const UTXOBaseProvider: FC<PropsWithChildren> = ({ children }) => {
7
- const bigmi = useRef<DefaultWagmiConfigResult>(null)
8
+ const bigmi = useRef<DefaultBigmiConfigResult>(null)
8
9
 
9
10
  if (!bigmi.current) {
10
11
  bigmi.current = createDefaultBigmiConfig({
@@ -15,10 +16,13 @@ export const UTXOBaseProvider: FC<PropsWithChildren> = ({ children }) => {
15
16
  })
16
17
  }
17
18
 
18
- useReconnect(bigmi.current.config)
19
+ useReconnect(bigmi.current.config as Config)
19
20
 
20
21
  return (
21
- <BigmiProvider config={bigmi.current.config} reconnectOnMount={false}>
22
+ <BigmiProvider
23
+ config={bigmi.current.config as Config}
24
+ reconnectOnMount={false}
25
+ >
22
26
  {children}
23
27
  </BigmiProvider>
24
28
  )
@@ -6,6 +6,7 @@ import { useWidgetConfig } from '../WidgetProvider/WidgetProvider.js'
6
6
  import { EVMProvider } from './EVMProvider.js'
7
7
  import { SDKProviders } from './SDKProviders.js'
8
8
  import { SVMProvider } from './SVMProvider.js'
9
+ import { SuiProvider } from './SuiProvider.js'
9
10
  import { UTXOProvider } from './UTXOProvider.js'
10
11
  import { useExternalWalletProvider } from './useExternalWalletProvider.js'
11
12
 
@@ -14,8 +15,10 @@ export const WalletProvider: FC<PropsWithChildren> = ({ children }) => {
14
15
  <EVMProvider>
15
16
  <SVMProvider>
16
17
  <UTXOProvider>
17
- <SDKProviders />
18
- <WalletMenuProvider>{children}</WalletMenuProvider>
18
+ <SuiProvider>
19
+ <SDKProviders />
20
+ <WalletMenuProvider>{children}</WalletMenuProvider>
21
+ </SuiProvider>
19
22
  </UTXOProvider>
20
23
  </SVMProvider>
21
24
  </EVMProvider>
@@ -3,6 +3,7 @@ import { useContext, useMemo } from 'react'
3
3
  import { useWidgetConfig } from '../WidgetProvider/WidgetProvider.js'
4
4
  import { EVMExternalContext } from './EVMExternalContext.js'
5
5
  import { SVMExternalContext } from './SVMExternalContext.js'
6
+ import { SuiExternalContext } from './SuiExternalContext.js'
6
7
  import { UTXOExternalContext } from './UTXOExternalContext.js'
7
8
 
8
9
  interface ExternalWalletProvider {
@@ -11,14 +12,19 @@ interface ExternalWalletProvider {
11
12
  internalChainTypes: ChainType[]
12
13
  }
13
14
 
14
- const internalChainTypes = [ChainType.EVM, ChainType.SVM, ChainType.UTXO]
15
+ const internalChainTypes = [
16
+ ChainType.EVM,
17
+ ChainType.SVM,
18
+ ChainType.UTXO,
19
+ ChainType.MVM,
20
+ ]
15
21
 
16
22
  export function useExternalWalletProvider(): ExternalWalletProvider {
17
23
  const { walletConfig } = useWidgetConfig()
18
24
  const hasExternalEVMContext = useContext(EVMExternalContext)
19
25
  const hasExternalSVMContext = useContext(SVMExternalContext)
20
26
  const hasExternalUTXOContext = useContext(UTXOExternalContext)
21
-
27
+ const hasExternalSuiContext = useContext(SuiExternalContext)
22
28
  const data = useMemo(() => {
23
29
  const providers: ChainType[] = []
24
30
  if (hasExternalEVMContext) {
@@ -30,8 +36,14 @@ export function useExternalWalletProvider(): ExternalWalletProvider {
30
36
  if (hasExternalUTXOContext) {
31
37
  providers.push(ChainType.UTXO)
32
38
  }
39
+ if (hasExternalSuiContext) {
40
+ providers.push(ChainType.MVM)
41
+ }
33
42
  const hasExternalProvider =
34
- hasExternalEVMContext || hasExternalSVMContext || hasExternalUTXOContext
43
+ hasExternalEVMContext ||
44
+ hasExternalSVMContext ||
45
+ hasExternalUTXOContext ||
46
+ hasExternalSuiContext
35
47
 
36
48
  const useExternalWalletProvidersOnly =
37
49
  hasExternalProvider && !walletConfig?.usePartialWalletManagement
@@ -46,6 +58,7 @@ export function useExternalWalletProvider(): ExternalWalletProvider {
46
58
  hasExternalEVMContext,
47
59
  hasExternalSVMContext,
48
60
  hasExternalUTXOContext,
61
+ hasExternalSuiContext,
49
62
  walletConfig?.usePartialWalletManagement,
50
63
  ])
51
64
 
@@ -52,7 +52,7 @@ export const WidgetProvider: React.FC<
52
52
  },
53
53
  disableVersionCheck: true,
54
54
  widgetVersion: version,
55
- // preloadChains: false,
55
+ preloadChains: false,
56
56
  // debug: true,
57
57
  }
58
58
  if (!sdkInitialized) {
@@ -1,12 +1,13 @@
1
1
  import { isUTXOAddress } from '@bigmi/core'
2
2
  import { ChainId, ChainType, isSVMAddress } from '@lifi/sdk'
3
+ import { isValidSuiAddress } from '@mysten/sui/utils'
3
4
  import { isAddress as isEVMAddress } from 'viem'
4
5
 
5
6
  const chainTypeAddressValidation = {
6
7
  [ChainType.EVM]: isEVMAddress,
7
8
  [ChainType.SVM]: isSVMAddress,
9
+ [ChainType.MVM]: isValidSuiAddress,
8
10
  [ChainType.UTXO]: isUTXOAddress,
9
- [ChainType.MVM]: () => false,
10
11
  }
11
12
 
12
13
  export const getChainTypeFromAddress = (
package/tsconfig.json CHANGED
@@ -6,8 +6,8 @@
6
6
  "sourceMap": true,
7
7
  "outDir": "dist/esm",
8
8
  "rootDir": "./src",
9
- "module": "NodeNext",
10
- "moduleResolution": "NodeNext",
9
+ "module": "ESNext",
10
+ "moduleResolution": "Bundler",
11
11
  "skipLibCheck": true
12
12
  },
13
13
  "include": ["./src/**/*", "./src/**/*.json"],