signer-test-sdk-react 0.0.21 → 0.0.23

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 (93) hide show
  1. package/dist/src/AbstraxnProvider.d.ts +5 -13
  2. package/dist/src/AbstraxnProvider.js +14 -3126
  3. package/dist/src/AbstraxnProvider.js.map +1 -1
  4. package/dist/src/ConnectButton.css +1 -1
  5. package/dist/src/ExternalWalletButtons.css +1 -1
  6. package/dist/src/ExternalWalletButtons.js +2 -2
  7. package/dist/src/ExternalWalletButtons.js.map +1 -1
  8. package/dist/src/WalletModal.css +193 -373
  9. package/dist/src/WalletModal.d.ts +1 -1
  10. package/dist/src/WalletModal.js +108 -45
  11. package/dist/src/WalletModal.js.map +1 -1
  12. package/dist/src/chains.d.ts +4 -3
  13. package/dist/src/chains.js +154 -84
  14. package/dist/src/chains.js.map +1 -1
  15. package/dist/src/components/AbstraxnProvider/AbstraxnProvider.d.ts +12 -0
  16. package/dist/src/components/AbstraxnProvider/AbstraxnProvider.js +146 -0
  17. package/dist/src/components/AbstraxnProvider/AbstraxnProvider.js.map +1 -0
  18. package/dist/src/components/AbstraxnProvider/AbstraxnProviderInner.d.ts +25 -0
  19. package/dist/src/components/AbstraxnProvider/AbstraxnProviderInner.js +3086 -0
  20. package/dist/src/components/AbstraxnProvider/AbstraxnProviderInner.js.map +1 -0
  21. package/dist/src/components/AbstraxnProvider/AbstraxnProviderWithWagmi.d.ts +8 -0
  22. package/dist/src/components/AbstraxnProvider/AbstraxnProviderWithWagmi.js +46 -0
  23. package/dist/src/components/AbstraxnProvider/AbstraxnProviderWithWagmi.js.map +1 -0
  24. package/dist/src/components/AbstraxnProvider/AbstraxnProviderWithoutWagmi.d.ts +8 -0
  25. package/dist/src/components/AbstraxnProvider/AbstraxnProviderWithoutWagmi.js +12 -0
  26. package/dist/src/components/AbstraxnProvider/AbstraxnProviderWithoutWagmi.js.map +1 -0
  27. package/dist/src/components/AbstraxnProvider/context.d.ts +2 -0
  28. package/dist/src/components/AbstraxnProvider/context.js +6 -0
  29. package/dist/src/components/AbstraxnProvider/context.js.map +1 -0
  30. package/dist/src/components/AbstraxnProvider/index.d.ts +6 -0
  31. package/dist/src/components/AbstraxnProvider/index.js +7 -0
  32. package/dist/src/components/AbstraxnProvider/index.js.map +1 -0
  33. package/dist/src/components/AbstraxnProvider/useAbstraxnProviderBase.d.ts +30 -0
  34. package/dist/src/components/AbstraxnProvider/useAbstraxnProviderBase.js +49 -0
  35. package/dist/src/components/AbstraxnProvider/useAbstraxnProviderBase.js.map +1 -0
  36. package/dist/src/components/AbstraxnProvider/useAbstraxnWallet.d.ts +2 -0
  37. package/dist/src/components/AbstraxnProvider/useAbstraxnWallet.js +13 -0
  38. package/dist/src/components/AbstraxnProvider/useAbstraxnWallet.js.map +1 -0
  39. package/dist/src/components/AbstraxnProvider/useOAuthCallbacks.d.ts +22 -0
  40. package/dist/src/components/AbstraxnProvider/useOAuthCallbacks.js +242 -0
  41. package/dist/src/components/AbstraxnProvider/useOAuthCallbacks.js.map +1 -0
  42. package/dist/src/components/AbstraxnProvider/useWalletInitialization.d.ts +25 -0
  43. package/dist/src/components/AbstraxnProvider/useWalletInitialization.js +539 -0
  44. package/dist/src/components/AbstraxnProvider/useWalletInitialization.js.map +1 -0
  45. package/dist/src/components/AbstraxnProvider/utils.d.ts +41 -0
  46. package/dist/src/components/AbstraxnProvider/utils.js +139 -0
  47. package/dist/src/components/AbstraxnProvider/utils.js.map +1 -0
  48. package/dist/src/components/OnboardingUI/OnboardingUI.css +8 -5
  49. package/dist/src/components/OnboardingUI/OnboardingUIWeb.js +6 -0
  50. package/dist/src/components/OnboardingUI/OnboardingUIWeb.js.map +1 -1
  51. package/dist/src/components/WalletModal/components/ChainSelector.css +249 -102
  52. package/dist/src/components/WalletModal/components/ChainSelector.d.ts +7 -6
  53. package/dist/src/components/WalletModal/components/ChainSelector.js +68 -27
  54. package/dist/src/components/WalletModal/components/ChainSelector.js.map +1 -1
  55. package/dist/src/components/WalletModal/components/ExportKeyModal.css +89 -88
  56. package/dist/src/components/WalletModal/components/ExportKeyModal.d.ts +6 -1
  57. package/dist/src/components/WalletModal/components/ExportKeyModal.js +6 -11
  58. package/dist/src/components/WalletModal/components/ExportKeyModal.js.map +1 -1
  59. package/dist/src/components/WalletModal/components/ExportWarningModal.css +107 -2
  60. package/dist/src/components/WalletModal/components/ExportWarningModal.d.ts +7 -1
  61. package/dist/src/components/WalletModal/components/ExportWarningModal.js +5 -3
  62. package/dist/src/components/WalletModal/components/ExportWarningModal.js.map +1 -1
  63. package/dist/src/components/WalletModal/components/ManageWalletModal.css +90 -4
  64. package/dist/src/components/WalletModal/components/ManageWalletModal.d.ts +3 -3
  65. package/dist/src/components/WalletModal/components/ManageWalletModal.js +28 -13
  66. package/dist/src/components/WalletModal/components/ManageWalletModal.js.map +1 -1
  67. package/dist/src/components/WalletModal/components/PreviewTransactionModal.css +3 -4
  68. package/dist/src/components/WalletModal/components/ReceiveModal.css +93 -58
  69. package/dist/src/components/WalletModal/components/ReceiveModal.js +1 -1
  70. package/dist/src/components/WalletModal/components/ReceiveModal.js.map +1 -1
  71. package/dist/src/components/WalletModal/components/SendModal.css +170 -127
  72. package/dist/src/components/WalletModal/components/SendModal.d.ts +4 -6
  73. package/dist/src/components/WalletModal/components/SendModal.js +131 -39
  74. package/dist/src/components/WalletModal/components/SendModal.js.map +1 -1
  75. package/dist/src/components/WalletModal/components/SuccessModal.css +7 -8
  76. package/dist/src/components/WalletModal/components/TokenSelectorModal.css +240 -0
  77. package/dist/src/components/WalletModal/components/TokenSelectorModal.d.ts +21 -0
  78. package/dist/src/components/WalletModal/components/TokenSelectorModal.js +44 -0
  79. package/dist/src/components/WalletModal/components/TokenSelectorModal.js.map +1 -0
  80. package/dist/src/components/WalletModal/components/index.d.ts +2 -0
  81. package/dist/src/components/WalletModal/components/index.js +1 -0
  82. package/dist/src/components/WalletModal/components/index.js.map +1 -1
  83. package/dist/src/hooks.d.ts +4712 -789
  84. package/dist/src/hooks.js +182 -147
  85. package/dist/src/hooks.js.map +1 -1
  86. package/dist/src/index.d.ts +1 -1
  87. package/dist/src/index.js +1 -1
  88. package/dist/src/index.js.map +1 -1
  89. package/dist/src/wagmiConfig.d.ts +1 -1
  90. package/dist/src/wagmiConfig.js +33 -20
  91. package/dist/src/wagmiConfig.js.map +1 -1
  92. package/dist/tsconfig.tsbuildinfo +1 -1
  93. package/package.json +1 -1
@@ -3,26 +3,28 @@
3
3
  */
4
4
  import { createConfig, createStorage, http, cookieStorage } from '@wagmi/core';
5
5
  import { injected, walletConnect } from 'wagmi/connectors';
6
- import { polygonAmoy } from 'viem/chains';
7
6
  import { SUPPORTED_CHAINS } from 'signer-test-sdk-core';
8
7
  /**
9
8
  * Convert internal Chain type to viem Chain type
10
9
  * Uses viem's built-in chain definitions when available for better compatibility
11
10
  */
12
11
  function convertToViemChain(chain) {
13
- // Use viem's built-in chain for Polygon Amoy if available
14
- if (chain.id === 80002) {
15
- return polygonAmoy;
16
- }
12
+ const c = chain;
13
+ // Handle block explorers - ensure URL is valid
14
+ const blockExplorers = c.blockExplorers || (c.explorerUrl && c.explorerUrl.startsWith('http') ? {
15
+ default: { name: 'Explorer', url: c.explorerUrl }
16
+ } : undefined);
17
17
  return {
18
- id: chain.id,
18
+ id: Number(chain.id),
19
19
  name: chain.name,
20
20
  nativeCurrency: chain.nativeCurrency,
21
21
  rpcUrls: {
22
22
  default: {
23
- http: [chain.rpcUrl],
23
+ http: [chain.rpcUrl || ''],
24
24
  },
25
25
  },
26
+ blockExplorers,
27
+ testnet: c.testnet || c.isTestnet || false,
26
28
  };
27
29
  }
28
30
  /**
@@ -31,45 +33,56 @@ function convertToViemChain(chain) {
31
33
  * without requiring @metamask/sdk
32
34
  */
33
35
  export function createWagmiConfig(chains, walletConnectProjectId, enabledConnectors, theme, ssr) {
34
- // Check if chains are already viem Chain objects (have rpcUrls.default.http structure)
35
- const isViemChains = chains && chains?.length > 0 && chains[0].rpcUrls?.default?.http;
36
- const viemChains = chains
37
- ? (isViemChains
38
- ? chains // Use viem chains directly
39
- : chains.map(convertToViemChain)) // Convert core chains to viem chains
36
+ // Normalize chains to ensure they are all valid viem Chain objects
37
+ // This handles mixed arrays of viem Chains and CoreChains (e.g. custom chains)
38
+ const viemChains = chains && chains.length > 0
39
+ ? chains.map((chain) => {
40
+ // Check if it's already a viem Chain (has rpcUrls.default.http)
41
+ if (chain.rpcUrls?.default?.http) {
42
+ return chain;
43
+ }
44
+ // Otherwise convert from CoreChain/custom format
45
+ return convertToViemChain(chain);
46
+ })
40
47
  : SUPPORTED_CHAINS.map(convertToViemChain);
41
48
  const connectors = [];
42
49
  // Add connectors based on enabled list
43
50
  // Note: 'injected' connector will automatically detect MetaMask and other injected wallets
44
51
  // without requiring @metamask/sdk. The 'metaMask' connector option is mapped to 'injected'
45
- const connectorsToAdd = enabledConnectors || ['injected'];
52
+ const connectorsToAdd = enabledConnectors || ["injected"];
46
53
  // Map 'metaMask' to 'injected' since injected connector works with MetaMask without @metamask/sdk
47
- const normalizedConnectors = connectorsToAdd.map(connector => connector === 'metaMask' ? 'injected' : connector);
54
+ const normalizedConnectors = connectorsToAdd.map((connector) => connector === "metaMask" ? "injected" : connector);
48
55
  // Remove duplicates
49
56
  const uniqueConnectors = [...new Set(normalizedConnectors)];
50
- if (uniqueConnectors.includes('injected')) {
57
+ if (uniqueConnectors.includes("injected")) {
51
58
  // Injected connector detects MetaMask, Coinbase Wallet, and other browser-injected wallets
52
59
  // This works without requiring @metamask/sdk
53
60
  connectors.push(injected());
54
61
  }
55
62
  // WalletConnect connector
56
- if (uniqueConnectors.includes('walletConnect')) {
63
+ if (uniqueConnectors.includes("walletConnect")) {
57
64
  if (!walletConnectProjectId) {
58
- console.warn('WalletConnect project ID is required for WalletConnect connector. Skipping...');
65
+ console.warn("WalletConnect project ID is required for WalletConnect connector. Skipping...");
59
66
  }
60
67
  else {
61
68
  connectors.push(walletConnect({
62
69
  projectId: walletConnectProjectId,
70
+ metadata: {
71
+ name: 'Abstraxn',
72
+ description: 'Abstraxn Wallet',
73
+ url: typeof window !== 'undefined' ? window.location.origin : 'https://abstraxn.com',
74
+ icons: ['https://avatars.githubusercontent.com/u/37784886']
75
+ },
63
76
  showQrModal: true,
64
77
  qrModalOptions: {
65
- themeMode: theme === 'dark' ? 'dark' : 'light',
78
+ themeMode: theme === "dark" ? "dark" : "light",
66
79
  },
67
80
  }));
68
81
  }
69
82
  }
70
83
  // Ensure we have at least one chain
71
84
  if (viemChains.length === 0) {
72
- throw new Error('At least one chain is required');
85
+ throw new Error("At least one chain is required");
73
86
  }
74
87
  return createConfig({
75
88
  chains: viemChains,
@@ -1 +1 @@
1
- {"version":3,"file":"wagmiConfig.js","sourceRoot":"","sources":["../../src/wagmiConfig.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAe,MAAM,aAAa,CAAC;AAC5F,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE3D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAA2B,MAAM,sBAAsB,CAAC;AAEjF;;;GAGG;AACH,SAAS,kBAAkB,CAAC,KAAgB;IAC1C,0DAA0D;IAC1D,IAAI,KAAK,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;QACvB,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,OAAO;QACL,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,OAAO,EAAE;YACP,OAAO,EAAE;gBACP,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;aACrB;SACF;KACO,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAA8B,EAC9B,sBAA+B,EAC/B,iBAAiE,EACjE,KAAwB,EACxB,GAAa;IAEb,uFAAuF;IACvF,MAAM,YAAY,GAAG,MAAM,IAAI,MAAM,EAAE,MAAM,GAAG,CAAC,IAAK,MAAM,CAAC,CAAC,CAAS,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;IAE/F,MAAM,UAAU,GAAG,MAAM;QACvB,CAAC,CAAC,CAAC,YAAY;YACX,CAAC,CAAE,MAAkB,CAAC,2BAA2B;YACjD,CAAC,CAAE,MAAsB,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,qCAAqC;QAC5F,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAE7C,MAAM,UAAU,GAAG,EAAE,CAAC;IAEtB,uCAAuC;IACvC,2FAA2F;IAC3F,2FAA2F;IAC3F,MAAM,eAAe,GAAG,iBAAiB,IAAI,CAAC,UAAU,CAAC,CAAC;IAE1D,kGAAkG;IAClG,MAAM,oBAAoB,GAAG,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAC3D,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAClD,CAAC;IAEF,oBAAoB;IACpB,MAAM,gBAAgB,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAE5D,IAAI,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC1C,2FAA2F;QAC3F,6CAA6C;QAC7C,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,0BAA0B;IAC1B,IAAI,gBAAgB,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QAC/C,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAC;QAChG,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC;gBAC5B,SAAS,EAAE,sBAAsB;gBACjC,WAAW,EAAE,IAAI;gBACjB,cAAc,EAAE;oBACd,SAAS,EAAE,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;iBAC/C;aACF,CAAC,CAAC,CAAC;QACN,CAAC;IACH,CAAC;IAED,oCAAoC;IACpC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,YAAY,CAAC;QAClB,MAAM,EAAE,UAAiC;QACzC,UAAU;QACV,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YAC3C,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC;YACvB,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAA6C,CAAC;QACjD,yCAAyC;QACzC,OAAO,EAAE,GAAG;YACV,CAAC,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;YAC3C,CAAC,CAAC,CAAC,OAAO,MAAM,KAAK,WAAW;gBAC5B,CAAC,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC;gBACjD,CAAC,CAAC,SAAS,CAAC;QAClB,GAAG,EAAE,CAAC,CAAC,GAAG;KACX,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"wagmiConfig.js","sourceRoot":"","sources":["../../src/wagmiConfig.ts"],"names":[],"mappings":"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"}