@sodax/wallet-sdk-react 2.0.0-rc.1 → 2.0.0-rc.11

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 (141) hide show
  1. package/README.md +12 -5
  2. package/dist/{XConnector-B9YQTVJ4.d.ts → XConnector-12q0OVe5.d.ts} +1 -1
  3. package/dist/{chunk-NY7U7OJW.mjs → chunk-7V7O3Q7Y.mjs} +0 -2
  4. package/dist/{chunk-BXJLBR4G.mjs → chunk-C6M34IVL.mjs} +2 -4
  5. package/dist/{chunk-X2MHIWXO.mjs → chunk-IFXZQW4C.mjs} +0 -2
  6. package/dist/{chunk-7ULB6DW4.mjs → chunk-JQ4H4GJ5.mjs} +3 -5
  7. package/dist/{chunk-PLCA4ZDJ.mjs → chunk-MAFHQGRP.mjs} +54 -30
  8. package/dist/{chunk-BKJB527E.mjs → chunk-MWWVB7TD.mjs} +2 -4
  9. package/dist/{chunk-MXZVF5HR.mjs → chunk-NAKCAL2M.mjs} +0 -2
  10. package/dist/{chunk-PJLEJVAU.mjs → chunk-OPYSVPRW.mjs} +10 -6
  11. package/dist/chunk-QMXBY3UI.mjs +1 -0
  12. package/dist/{chunk-MAQ47Q52.mjs → chunk-TACW7Z4D.mjs} +0 -2
  13. package/dist/chunk-VPNYFVP6.mjs +53 -0
  14. package/dist/{chunk-2BOUGCJ7.mjs → chunk-WPZOLGVB.mjs} +4 -6
  15. package/dist/{chunk-66BAUK56.mjs → chunk-X7BHR7WS.mjs} +4 -6
  16. package/dist/{chunk-N5A2TMF6.mjs → chunk-XJA2MJMG.mjs} +2 -4
  17. package/dist/{chunk-E5IAZ7E6.mjs → chunk-Z5GXDHGL.mjs} +11 -7
  18. package/dist/{config-OlnzyEUE.d.ts → config-DEsqgrG1.d.ts} +10 -5
  19. package/dist/index.d.ts +6 -6
  20. package/dist/index.mjs +20 -31
  21. package/dist/xchains/bitcoin/index.d.ts +1 -1
  22. package/dist/xchains/bitcoin/index.mjs +14 -16
  23. package/dist/xchains/evm/index.d.ts +3 -3
  24. package/dist/xchains/evm/index.mjs +3 -5
  25. package/dist/xchains/icon/index.d.ts +1 -1
  26. package/dist/xchains/icon/index.mjs +5 -7
  27. package/dist/xchains/injective/index.d.ts +2 -2
  28. package/dist/xchains/injective/index.mjs +3 -5
  29. package/dist/xchains/near/index.d.ts +1 -1
  30. package/dist/xchains/near/index.mjs +4 -6
  31. package/dist/xchains/solana/index.d.ts +1 -1
  32. package/dist/xchains/solana/index.mjs +5 -7
  33. package/dist/xchains/stacks/index.d.ts +10 -4
  34. package/dist/xchains/stacks/index.mjs +3 -5
  35. package/dist/xchains/stellar/index.d.ts +1 -1
  36. package/dist/xchains/stellar/index.mjs +4 -6
  37. package/dist/xchains/sui/index.d.ts +1 -1
  38. package/dist/xchains/sui/index.mjs +5 -7
  39. package/package.json +39 -31
  40. package/ai-exported/AGENTS.md +0 -122
  41. package/ai-exported/integration/README.md +0 -102
  42. package/ai-exported/integration/ai-rules.md +0 -136
  43. package/ai-exported/integration/architecture.md +0 -181
  44. package/ai-exported/integration/examples/01-minimal-evm.tsx +0 -75
  45. package/ai-exported/integration/examples/02-multi-chain-modal.tsx +0 -169
  46. package/ai-exported/integration/examples/03-nextjs-app-router.tsx +0 -99
  47. package/ai-exported/integration/examples/04-walletconnect-setup.tsx +0 -89
  48. package/ai-exported/integration/examples/README.md +0 -29
  49. package/ai-exported/integration/recipes/batch-operations.md +0 -223
  50. package/ai-exported/integration/recipes/bridge-to-sdk.md +0 -164
  51. package/ai-exported/integration/recipes/chain-detection.md +0 -254
  52. package/ai-exported/integration/recipes/connect-button.md +0 -156
  53. package/ai-exported/integration/recipes/multi-chain-modal.md +0 -199
  54. package/ai-exported/integration/recipes/setup.md +0 -158
  55. package/ai-exported/integration/recipes/sign-message.md +0 -137
  56. package/ai-exported/integration/recipes/sub-path-imports.md +0 -95
  57. package/ai-exported/integration/recipes/switch-chain.md +0 -141
  58. package/ai-exported/integration/recipes/walletconnect-setup.md +0 -139
  59. package/ai-exported/integration/reference/api-surface.md +0 -175
  60. package/ai-exported/integration/reference/chain-support.md +0 -78
  61. package/ai-exported/integration/reference/connectors.md +0 -74
  62. package/ai-exported/integration/reference/hooks.md +0 -204
  63. package/ai-exported/integration/reference/wallet-brands.md +0 -106
  64. package/ai-exported/migration/README.md +0 -49
  65. package/ai-exported/migration/ai-rules.md +0 -144
  66. package/ai-exported/migration/breaking-changes.md +0 -305
  67. package/ai-exported/migration/checklist.md +0 -159
  68. package/ai-exported/migration/recipes/connect-button.md +0 -166
  69. package/ai-exported/migration/recipes/multi-chain-modal.md +0 -244
  70. package/ai-exported/migration/recipes/ssr-setup.md +0 -162
  71. package/ai-exported/migration/recipes/walletconnect-migration.md +0 -168
  72. package/ai-exported/migration/reference/components.md +0 -73
  73. package/ai-exported/migration/reference/config.md +0 -307
  74. package/ai-exported/migration/reference/hooks.md +0 -278
  75. package/ai-exported/migration/reference/imports.md +0 -157
  76. package/dist/chunk-2BOUGCJ7.mjs.map +0 -1
  77. package/dist/chunk-66BAUK56.mjs.map +0 -1
  78. package/dist/chunk-7ULB6DW4.mjs.map +0 -1
  79. package/dist/chunk-BKJB527E.mjs.map +0 -1
  80. package/dist/chunk-BXJLBR4G.mjs.map +0 -1
  81. package/dist/chunk-E5IAZ7E6.mjs.map +0 -1
  82. package/dist/chunk-MAQ47Q52.mjs.map +0 -1
  83. package/dist/chunk-MXZVF5HR.mjs.map +0 -1
  84. package/dist/chunk-N5A2TMF6.mjs.map +0 -1
  85. package/dist/chunk-NY7U7OJW.mjs.map +0 -1
  86. package/dist/chunk-PJLEJVAU.mjs.map +0 -1
  87. package/dist/chunk-PLCA4ZDJ.mjs.map +0 -1
  88. package/dist/chunk-TZMKDXFA.mjs +0 -3
  89. package/dist/chunk-TZMKDXFA.mjs.map +0 -1
  90. package/dist/chunk-X2MHIWXO.mjs.map +0 -1
  91. package/dist/chunk-XZ7CHO2S.mjs +0 -41
  92. package/dist/chunk-XZ7CHO2S.mjs.map +0 -1
  93. package/dist/index.cjs +0 -3337
  94. package/dist/index.cjs.map +0 -1
  95. package/dist/index.mjs.map +0 -1
  96. package/dist/xchains/bitcoin/index.cjs +0 -1927
  97. package/dist/xchains/bitcoin/index.cjs.map +0 -1
  98. package/dist/xchains/bitcoin/index.mjs.map +0 -1
  99. package/dist/xchains/evm/index.cjs +0 -316
  100. package/dist/xchains/evm/index.cjs.map +0 -1
  101. package/dist/xchains/evm/index.mjs.map +0 -1
  102. package/dist/xchains/icon/index.cjs +0 -311
  103. package/dist/xchains/icon/index.cjs.map +0 -1
  104. package/dist/xchains/icon/index.mjs.map +0 -1
  105. package/dist/xchains/injective/index.cjs +0 -223
  106. package/dist/xchains/injective/index.cjs.map +0 -1
  107. package/dist/xchains/injective/index.mjs.map +0 -1
  108. package/dist/xchains/near/index.cjs +0 -190
  109. package/dist/xchains/near/index.cjs.map +0 -1
  110. package/dist/xchains/near/index.mjs.map +0 -1
  111. package/dist/xchains/solana/index.cjs +0 -186
  112. package/dist/xchains/solana/index.cjs.map +0 -1
  113. package/dist/xchains/solana/index.mjs.map +0 -1
  114. package/dist/xchains/stacks/index.cjs +0 -240
  115. package/dist/xchains/stacks/index.cjs.map +0 -1
  116. package/dist/xchains/stacks/index.mjs.map +0 -1
  117. package/dist/xchains/stellar/index.cjs +0 -322
  118. package/dist/xchains/stellar/index.cjs.map +0 -1
  119. package/dist/xchains/stellar/index.mjs.map +0 -1
  120. package/dist/xchains/sui/index.cjs +0 -248
  121. package/dist/xchains/sui/index.cjs.map +0 -1
  122. package/dist/xchains/sui/index.mjs.map +0 -1
  123. package/docs/ADDING_A_NEW_CHAIN.md +0 -440
  124. package/docs/ARCHITECTURE.md +0 -291
  125. package/docs/BATCH_OPERATIONS.md +0 -267
  126. package/docs/CHAIN_DETECTION.md +0 -216
  127. package/docs/CONFIGURE_PROVIDER.md +0 -360
  128. package/docs/CONNECTORS.md +0 -247
  129. package/docs/CONNECT_FLOW.md +0 -276
  130. package/docs/EVM_SWITCH_CHAIN.md +0 -161
  131. package/docs/SIGN_MESSAGE.md +0 -213
  132. package/docs/SUB_PATH_EXPORTS.md +0 -246
  133. package/docs/WALLETCONNECT.md +0 -154
  134. package/docs/WALLET_MODAL.md +0 -331
  135. package/docs/WALLET_PROVIDER_BRIDGE.md +0 -226
  136. package/skills/SKILLS.md +0 -84
  137. package/skills/bridge-to-sdk.md +0 -148
  138. package/skills/connect-button.md +0 -116
  139. package/skills/evm-only-walletconnect.md +0 -111
  140. package/skills/multi-chain-modal.md +0 -178
  141. package/skills/setup.md +0 -107
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/providers/evm/EvmHydrator.tsx","../src/providers/evm/EvmActions.tsx","../src/providers/evm/EvmProvider.tsx","../src/providers/solana/SolanaHydrator.tsx","../src/providers/solana/SolanaActions.tsx","../src/providers/solana/SolanaProvider.tsx","../src/providers/sui/SuiHydrator.tsx","../src/providers/sui/SuiActions.tsx","../src/providers/sui/SuiProvider.tsx","../src/xchains/icon/actions.ts","../src/xchains/injective/actions.ts","../src/xchains/stellar/actions.ts","../src/hooks/useInitChainServices.ts","../src/SodaxWalletProvider.tsx"],"names":["useConfig","useRef","useEffect","useMemo","useWallet","ChainKeys","jsx","SolanaConnectionProvider","jsxs","SolanaWalletProvider","useWallets","SuiWalletProvider"],"mappings":"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","file":"index.mjs","sourcesContent":["import { useEffect, useMemo, useRef, useState } from 'react';\nimport { useConfig, useConnectors, useAccount, usePublicClient, useWalletClient, useReconnect } from 'wagmi';\nimport { EvmWalletProvider } from '@sodax/wallet-sdk-core';\nimport { EvmXService } from '@/xchains/evm/EvmXService.js';\nimport { EvmXConnector } from '@/xchains/evm/index.js';\nimport { useXWalletStore } from '@/useXWalletStore.js';\nimport { useWalletConfig } from '@/context/WalletConfigContext.js';\nimport { resolveEvmDefaults } from '@/utils/walletRpcConfig.js';\n\nexport const EvmHydrator = () => {\n const wagmiConfig = useConfig();\n const connectors = useConnectors();\n const { address, status, connector } = useAccount();\n const evmPublicClient = usePublicClient();\n const { data: evmWalletClient } = useWalletClient();\n const setXConnection = useXWalletStore(state => state.setXConnection);\n const unsetXConnection = useXWalletStore(state => state.unsetXConnection);\n const setWalletProvider = useXWalletStore(state => state.setWalletProvider);\n const userDisconnectedEvm = useXWalletStore(state => state.userDisconnected.EVM);\n const { reconnect } = useReconnect();\n const walletConfig = useWalletConfig();\n\n useEffect(() => {\n if (wagmiConfig) {\n EvmXService.getInstance().wagmiConfig = wagmiConfig;\n }\n }, [wagmiConfig]);\n\n const evmConnectors = useMemo(() => connectors.map(c => new EvmXConnector(c)), [connectors]);\n useEffect(() => {\n EvmXService.getInstance().setXConnectors(evmConnectors);\n useXWalletStore.getState().setXConnectors('EVM', evmConnectors);\n }, [evmConnectors]);\n\n // Retry reconnect when new connectors announce (Hana lazy-announces post-mount) or\n // when status settles to 'disconnected' with a persisted connection. wagmi's\n // `Hydrate.onMount()` only runs once and won't retry on its own.\n // `hydrated` gates retry until persist rehydration so `xConnections.EVM` and\n // `userDisconnected.EVM` reads are authoritative.\n const [hydrated, setHydrated] = useState(() => useXWalletStore.persist.hasHydrated());\n useEffect(() => {\n if (hydrated) return;\n const unsub = useXWalletStore.persist.onFinishHydration(() => setHydrated(true));\n return unsub;\n }, [hydrated]);\n // biome-ignore lint/correctness/useExhaustiveDependencies: `connectors` is a re-fire trigger only — wagmi mipd appends new connectors when wallets announce post-mount, and we want to retry reconnect each time the list grows\n useEffect(() => {\n if (!hydrated) return;\n if (status !== 'disconnected') return;\n const state = useXWalletStore.getState();\n if (!state.xConnections.EVM) return;\n if (state.userDisconnected.EVM) return;\n reconnect();\n }, [hydrated, connectors, status, reconnect]);\n\n // wasConnectedRef: skip the initial 'disconnected' tick before wagmi reconnects.\n // userDisconnectedEvm: skip ghost reconnects when a wallet ignores `wallet_revokePermissions`.\n // Don't gate on walletClient — wagmi still reports 'connected' when the active chain\n // is outside wagmiConfig.chains (e.g. Injective EVM 1776), so useWalletClient() never\n // resolves and the connection would be hidden. xConnections.EVM tracks intent;\n // walletProviders.EVM stays undefined until walletClient resolves, and callers\n // prompt switchChain before signing.\n const wasConnectedRef = useRef(false);\n useEffect(() => {\n if (status === 'connecting' || status === 'reconnecting') return;\n if (status === 'connected' && address && connector) {\n if (userDisconnectedEvm) return;\n wasConnectedRef.current = true;\n setXConnection('EVM', {\n xAccount: { address: address as string, xChainType: 'EVM' },\n xConnectorId: connector.id,\n });\n } else if (status === 'disconnected' && wasConnectedRef.current) {\n wasConnectedRef.current = false;\n unsetXConnection('EVM');\n }\n }, [address, status, connector, userDisconnectedEvm, setXConnection, unsetXConnection]);\n\n const walletProvider = useMemo(() => {\n if (!evmPublicClient || !evmWalletClient) return undefined;\n if (userDisconnectedEvm) return undefined;\n const defaults = resolveEvmDefaults(evmWalletClient.chain.id, walletConfig.EVM?.chains);\n return new EvmWalletProvider({\n walletClient: evmWalletClient,\n publicClient: evmPublicClient,\n defaults,\n });\n }, [evmPublicClient, evmWalletClient, walletConfig.EVM?.chains, userDisconnectedEvm]);\n\n useEffect(() => {\n setWalletProvider('EVM', walletProvider);\n }, [walletProvider, setWalletProvider]);\n\n return null;\n};\n","import { useEffect, useRef } from 'react';\nimport { useConfig, useConnect, useDisconnect, useSignMessage } from 'wagmi';\nimport { useXWalletStore } from '@/useXWalletStore.js';\n\nexport const EvmActions = () => {\n const wagmiConfig = useConfig();\n const { connectAsync } = useConnect();\n const { disconnectAsync } = useDisconnect();\n const { signMessageAsync } = useSignMessage();\n const registerChainActions = useXWalletStore(state => state.registerChainActions);\n\n const connectRef = useRef(connectAsync);\n const disconnectRef = useRef(disconnectAsync);\n const signMessageRef = useRef(signMessageAsync);\n const wagmiConfigRef = useRef(wagmiConfig);\n\n useEffect(() => {\n connectRef.current = connectAsync;\n disconnectRef.current = disconnectAsync;\n signMessageRef.current = signMessageAsync;\n wagmiConfigRef.current = wagmiConfig;\n }, [connectAsync, disconnectAsync, signMessageAsync, wagmiConfig]);\n\n useEffect(() => {\n registerChainActions('EVM', {\n connect: async (xConnectorId: string) => {\n const connector = wagmiConfigRef.current.connectors.find(c => c.id === xConnectorId);\n if (!connector) {\n console.warn(\n `[EvmActions] connect: connector \"${xConnectorId}\" not found in wagmi config`,\n wagmiConfigRef.current.connectors.map(c => c.id),\n );\n return undefined;\n }\n // Clear flag before awaiting — flips re-fire EvmHydrator's effects, surfacing\n // any pre-existing wagmi connection (ghost auto-reconnect).\n useXWalletStore.getState().clearUserDisconnected('EVM');\n try {\n await connectRef.current({ connector });\n } catch (error) {\n if (error instanceof Error && error.name === 'ConnectorAlreadyConnectedError') {\n return undefined;\n }\n throw error;\n }\n return undefined;\n },\n disconnect: async () => {\n // Clear zustand + flag synchronously so UI is consistent regardless of whether\n // wagmi.disconnect() throws (Hana 4200), hangs (WC relay), or succeeds.\n const store = useXWalletStore.getState();\n store.unsetXConnection('EVM');\n store.markUserDisconnected('EVM');\n try {\n await disconnectRef.current();\n } catch (error) {\n console.warn('[EvmActions] wagmi disconnect failed (zustand already cleared):', error);\n }\n },\n getConnectors: () => useXWalletStore.getState().xConnectorsByChain.EVM ?? [],\n getConnection: () => useXWalletStore.getState().xConnections.EVM,\n signMessage: async (message: string) => {\n const signature = await signMessageRef.current({ message });\n return signature;\n },\n });\n }, [registerChainActions]);\n\n return null;\n};\n","import { type ReactNode, useMemo, useRef } from 'react';\nimport { WagmiProvider } from 'wagmi';\nimport { walletConnect } from 'wagmi/connectors';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport { createWagmiConfig } from '@/xchains/evm/EvmXService.js';\nimport type { EvmTypeConfig } from '@/types/config.js';\nimport { EvmHydrator } from './EvmHydrator.js';\nimport { EvmActions } from './EvmActions.js';\nimport { EVM_DEFAULT_RECONNECT_ON_MOUNT, EVM_DEFAULT_SSR } from '@/constants.js';\n\ntype EvmProviderProps = {\n children: ReactNode;\n /** EVM type slot — wagmi adapter settings + nested per-chain entries. */\n config: EvmTypeConfig;\n};\n\nexport const EvmProvider = ({ children, config }: EvmProviderProps) => {\n const reconnectOnMount = config.reconnectOnMount ?? EVM_DEFAULT_RECONNECT_ON_MOUNT;\n const ssr = config.ssr ?? EVM_DEFAULT_SSR;\n\n const queryClientRef = useRef<QueryClient>(null);\n if (!queryClientRef.current) {\n queryClientRef.current = new QueryClient();\n }\n\n const walletConnectConfig = config.walletConnect;\n\n const wagmiConfig = useMemo(() => {\n const connectors = [];\n if (walletConnectConfig) {\n if (walletConnectConfig.projectId) {\n connectors.push(walletConnect({ showQrModal: true, ...walletConnectConfig }));\n } else {\n console.warn('[wallet-sdk-react] walletConnect.projectId is required — WalletConnect connector skipped.');\n }\n }\n return createWagmiConfig(config.chains, { reconnectOnMount, ssr, connectors });\n }, [config.chains, reconnectOnMount, ssr, walletConnectConfig]);\n\n // wagmi requires its own QueryClientProvider — this is wagmi-internal, not the app's React Query cache.\n return (\n <QueryClientProvider client={queryClientRef.current}>\n <WagmiProvider reconnectOnMount={reconnectOnMount} config={wagmiConfig} initialState={config.initialState}>\n <EvmHydrator />\n <EvmActions />\n {children}\n </WagmiProvider>\n </QueryClientProvider>\n );\n};\n","import { useEffect, useMemo, useRef } from 'react';\nimport { useConnection, useWallet } from '@solana/wallet-adapter-react';\nimport { SolanaWalletProvider } from '@sodax/wallet-sdk-core';\nimport { ChainKeys } from '@sodax/types';\nimport { SolanaXService } from '@/xchains/solana/SolanaXService.js';\nimport { SolanaXConnector } from '@/xchains/solana/index.js';\nimport { useXWalletStore } from '@/useXWalletStore.js';\nimport { useWalletConfig } from '@/context/WalletConfigContext.js';\nimport { getEntryDefaults } from '@/utils/walletRpcConfig.js';\n\n/**\n * Hydrates Solana state from @solana/wallet-adapter-react hooks into SolanaXService singleton and store.\n */\nexport const SolanaHydrator = () => {\n const { connection } = useConnection();\n const solanaWallet = useWallet();\n const setXConnection = useXWalletStore(state => state.setXConnection);\n const unsetXConnection = useXWalletStore(state => state.unsetXConnection);\n const setWalletProvider = useXWalletStore(state => state.setWalletProvider);\n const walletConfig = useWalletConfig();\n const solanaDefaults = getEntryDefaults<typeof ChainKeys.SOLANA_MAINNET>(\n walletConfig.SOLANA?.chains?.[ChainKeys.SOLANA_MAINNET],\n );\n\n useEffect(() => {\n if (connection) {\n SolanaXService.getInstance().connection = connection;\n }\n }, [connection]);\n\n // useWallet() returns a new object ref every render — keep a ref so effects\n // can read the full object without listing it as a dep.\n // Empty deps array means this effect runs after every render to keep the ref fresh.\n const solanaWalletRef = useRef(solanaWallet);\n useEffect(() => {\n solanaWalletRef.current = solanaWallet;\n });\n\n // Memoize installed connectors. solanaWallet.wallets is an unstable array reference,\n // but we only care about the installed subset and stable adapter identity.\n const solanaConnectors = useMemo(\n () =>\n solanaWallet.wallets\n .filter(wallet => wallet.readyState === 'Installed')\n .map(wallet => new SolanaXConnector(wallet)),\n [solanaWallet.wallets],\n );\n\n useEffect(() => {\n SolanaXService.getInstance().setXConnectors(solanaConnectors);\n useXWalletStore.getState().setXConnectors('SOLANA', solanaConnectors);\n }, [solanaConnectors]);\n\n const wasConnectedRef = useRef(!!useXWalletStore.getState().xConnections.SOLANA);\n useEffect(() => {\n if (solanaWallet.connected && solanaWallet.publicKey) {\n wasConnectedRef.current = true;\n setXConnection('SOLANA', {\n xAccount: { address: solanaWallet.publicKey.toString(), xChainType: 'SOLANA' },\n xConnectorId: `${solanaWallet.wallet?.adapter.name}`,\n });\n } else if (wasConnectedRef.current) {\n wasConnectedRef.current = false;\n unsetXConnection('SOLANA');\n }\n }, [solanaWallet.connected, solanaWallet.publicKey, solanaWallet.wallet, setXConnection, unsetXConnection]);\n\n // Memoize wallet provider. Must wait for publicKey to be available — without it,\n // SolanaWalletProvider.getWalletAddress() throws \"Wallet public key is not initialized\".\n // Use solanaWallet directly (not ref) because useMemo runs DURING render, before the\n // effect that syncs the ref — ref would be one render behind.\n // biome-ignore lint/correctness/useExhaustiveDependencies: solanaWallet object ref changes every render but we only care about the listed primitive/stable fields; adding solanaWallet itself would defeat memoization\n const walletProvider = useMemo(() => {\n if (solanaWallet.connected && solanaWallet.publicKey && solanaWallet.wallet && connection) {\n return new SolanaWalletProvider({\n wallet: solanaWallet,\n endpoint: connection.rpcEndpoint,\n defaults: solanaDefaults,\n });\n }\n return undefined;\n }, [solanaWallet.connected, solanaWallet.publicKey, solanaWallet.wallet, connection, solanaDefaults]);\n\n useEffect(() => {\n SolanaXService.getInstance().wallet = solanaWalletRef.current;\n setWalletProvider('SOLANA', walletProvider);\n }, [walletProvider, setWalletProvider]);\n\n return null;\n};\n","import { useEffect, useRef } from 'react';\nimport { useWallet } from '@solana/wallet-adapter-react';\nimport { useXWalletStore } from '@/useXWalletStore.js';\nimport { SOLANA_METAMASK_CONNECT_TIMEOUT_MS } from '@/constants.js';\n\n/**\n * Registers Solana ChainActions into the store.\n *\n * Connect strategy (unified for all Solana wallets including MetaMask):\n * 1. select() tells wallet-adapter-react which wallet to use.\n * 2. If already connected (autoConnect on refresh), skip.\n * 3. Listen for adapter 'connect'/'error' events first.\n * 4. Trigger walletRef.current.connect() after a tick (React needs to flush select() state).\n * 5. Resolve/reject based on adapter events — no timing dependency.\n */\nexport const SolanaActions = () => {\n const solanaWallet = useWallet();\n const registerChainActions = useXWalletStore(state => state.registerChainActions);\n\n const walletRef = useRef(solanaWallet);\n useEffect(() => { walletRef.current = solanaWallet; }, [solanaWallet]);\n\n useEffect(() => {\n registerChainActions('SOLANA', {\n connect: async (xConnectorId: string) => {\n const wallet = walletRef.current.wallets.find(w => w.adapter.name === xConnectorId);\n if (!wallet) {\n console.warn(\n `[SolanaActions] connect: wallet \"${xConnectorId}\" not found in adapter list`,\n walletRef.current.wallets.map(w => w.adapter.name),\n );\n return undefined;\n }\n\n walletRef.current.select(wallet.adapter.name);\n\n // Already connected (e.g. autoConnect on page refresh) — nothing to do\n if (wallet.adapter.connected) {\n return undefined;\n }\n\n // Event-driven connect: listen for result first, then trigger.\n // Works for all wallets (Phantom, MetaMask, etc.) without timing assumptions.\n await new Promise<void>((resolve, reject) => {\n const timeout = setTimeout(() => {\n cleanup();\n reject(new Error('Wallet connection timeout'));\n }, SOLANA_METAMASK_CONNECT_TIMEOUT_MS);\n\n const onConnect = () => { cleanup(); resolve(); };\n const onError = (err: Error) => { cleanup(); reject(err); };\n const cleanup = () => {\n clearTimeout(timeout);\n wallet.adapter.off('connect', onConnect);\n wallet.adapter.off('error', onError);\n };\n\n wallet.adapter.on('connect', onConnect);\n wallet.adapter.on('error', onError);\n\n // Yield one tick so React can flush select() state, then trigger connect\n // through React layer. If autoConnect is already connecting, skip — the\n // event listeners above will catch the result either way.\n setTimeout(() => {\n if (!wallet.adapter.connected && !wallet.adapter.connecting) {\n walletRef.current.connect().catch(err => { cleanup(); reject(err); });\n }\n }, 0);\n });\n\n return undefined;\n },\n disconnect: async () => {\n await walletRef.current.disconnect();\n },\n getConnectors: () => useXWalletStore.getState().xConnectorsByChain.SOLANA ?? [],\n getConnection: () => useXWalletStore.getState().xConnections.SOLANA,\n signMessage: async (message: string) => {\n if (!walletRef.current.signMessage) {\n throw new Error('Solana wallet not connected');\n }\n const signature = await walletRef.current.signMessage(new TextEncoder().encode(message));\n return Buffer.from(signature).toString('base64');\n },\n });\n }, [registerChainActions]);\n\n return null;\n};\n","import type { ReactNode } from 'react';\nimport {\n ConnectionProvider as SolanaConnectionProvider,\n WalletProvider as SolanaWalletProvider,\n} from '@solana/wallet-adapter-react';\nimport { ChainKeys } from '@sodax/types';\nimport type { SolanaTypeConfig } from '@/types/config.js';\nimport { SolanaHydrator } from './SolanaHydrator.js';\nimport { SolanaActions } from './SolanaActions.js';\nimport { SOLANA_DEFAULT_AUTO_CONNECT, SOLANA_DEFAULT_RPC_URL } from '@/constants.js';\n\nconst emptyWallets: [] = [];\n\ntype SolanaProviderProps = {\n children: ReactNode;\n /** Solana type slot — adapter settings + nested chain entries. */\n config: SolanaTypeConfig;\n};\n\nexport const SolanaProvider = ({ children, config }: SolanaProviderProps) => {\n const autoConnect = config.autoConnect ?? SOLANA_DEFAULT_AUTO_CONNECT;\n const endpoint = config.chains?.[ChainKeys.SOLANA_MAINNET]?.rpcUrl ?? SOLANA_DEFAULT_RPC_URL;\n\n return (\n <SolanaConnectionProvider endpoint={endpoint}>\n <SolanaWalletProvider wallets={emptyWallets} autoConnect={autoConnect}>\n <SolanaHydrator />\n <SolanaActions />\n {children}\n </SolanaWalletProvider>\n </SolanaConnectionProvider>\n );\n};\n","import { useEffect, useMemo, useRef } from 'react';\nimport { useCurrentAccount, useCurrentWallet, useSuiClient, useWallets } from '@mysten/dapp-kit';\nimport { SuiWalletProvider } from '@sodax/wallet-sdk-core';\nimport { ChainKeys } from '@sodax/types';\nimport { SuiXService, SuiXConnector } from '@/xchains/sui/index.js';\nimport { useXWalletStore } from '@/useXWalletStore.js';\nimport { useWalletConfig } from '@/context/WalletConfigContext.js';\nimport { getEntryDefaults } from '@/utils/walletRpcConfig.js';\nimport { assertSuiProviderShape } from '@/shared/guards.js';\n\n/**\n * Hydrates SUI state from @mysten/dapp-kit hooks into SuiXService singleton and store.\n */\nexport const SuiHydrator = (): null => {\n const suiClient = useSuiClient();\n const { currentWallet } = useCurrentWallet();\n const suiAccount = useCurrentAccount();\n const suiWallets = useWallets();\n const setXConnection = useXWalletStore(state => state.setXConnection);\n const unsetXConnection = useXWalletStore(state => state.unsetXConnection);\n const setWalletProvider = useXWalletStore(state => state.setWalletProvider);\n const walletConfig = useWalletConfig();\n const suiDefaults = getEntryDefaults<typeof ChainKeys.SUI_MAINNET>(walletConfig.SUI?.chains?.[ChainKeys.SUI_MAINNET]);\n\n // Sync dapp-kit values into the SuiXService singleton in a single effect.\n // The singleton is read by SuiXService.createWalletProvider() and balance methods.\n useEffect(() => {\n const service = SuiXService.getInstance();\n if (suiClient) service.suiClient = suiClient;\n if (currentWallet) service.suiWallet = currentWallet;\n if (suiAccount) service.suiAccount = suiAccount;\n }, [suiClient, currentWallet, suiAccount]);\n\n // Memoize the connector list — useWallets returns a new array reference even when the\n // underlying wallet set hasn't changed. Without memoization, every render would create\n // new XConnector instances and trigger downstream re-renders.\n const suiConnectors = useMemo(() => suiWallets.map(wallet => new SuiXConnector(wallet)), [suiWallets]);\n useEffect(() => {\n SuiXService.getInstance().setXConnectors(suiConnectors);\n useXWalletStore.getState().setXConnectors('SUI', suiConnectors);\n }, [suiConnectors]);\n\n const wasConnectedRef = useRef(!!useXWalletStore.getState().xConnections.SUI);\n useEffect(() => {\n if (currentWallet && suiAccount?.address) {\n wasConnectedRef.current = true;\n setXConnection('SUI', {\n xAccount: { address: suiAccount.address, xChainType: 'SUI' },\n // Match SuiXConnector.id derivation: prefer Wallet Standard `id`, fall back to `name`.\n xConnectorId: currentWallet.id ?? currentWallet.name,\n });\n } else if (wasConnectedRef.current) {\n wasConnectedRef.current = false;\n unsetXConnection('SUI');\n }\n }, [currentWallet, suiAccount, setXConnection, unsetXConnection]);\n\n // Create wallet provider directly from hook values (not singleton) — useMemo runs during\n // render, before the useEffect that syncs values into the singleton. Reading from the\n // singleton here would use stale fields from the previous render.\n const walletProvider = useMemo(() => {\n if (suiClient && currentWallet && suiAccount) {\n assertSuiProviderShape('SuiHydrator', suiClient, currentWallet, suiAccount);\n\n // @mysten/dapp-kit and wallet-sdk-core may resolve different @mysten/sui versions.\n // The types are structurally identical but nominally different.\n // `as unknown as T` documents a known, intentional version-mismatch cast —\n // unlike `as any`, it doesn't silence unrelated type errors.\n type SuiWalletProviderConfig = ConstructorParameters<typeof SuiWalletProvider>[0];\n return new SuiWalletProvider({\n client: suiClient,\n wallet: currentWallet,\n account: suiAccount,\n defaults: suiDefaults,\n } as unknown as SuiWalletProviderConfig);\n }\n return undefined;\n }, [suiClient, currentWallet, suiAccount, suiDefaults]);\n\n useEffect(() => {\n setWalletProvider('SUI', walletProvider);\n }, [walletProvider, setWalletProvider]);\n\n return null;\n};\n","import { useEffect, useRef } from 'react';\nimport { useConnectWallet, useDisconnectWallet, useWallets, useSignPersonalMessage } from '@mysten/dapp-kit';\nimport { useXWalletStore } from '@/useXWalletStore.js';\n\n/**\n * Registers SUI ChainActions into the store.\n */\nexport const SuiActions = () => {\n const suiWallets = useWallets();\n const { mutateAsync: suiConnectAsync } = useConnectWallet();\n const { mutateAsync: suiDisconnectAsync } = useDisconnectWallet();\n const { mutateAsync: signPersonalMessage } = useSignPersonalMessage();\n const registerChainActions = useXWalletStore(state => state.registerChainActions);\n\n const connectRef = useRef(suiConnectAsync);\n const disconnectRef = useRef(suiDisconnectAsync);\n const signMessageRef = useRef(signPersonalMessage);\n const walletsRef = useRef(suiWallets);\n\n useEffect(() => { connectRef.current = suiConnectAsync; }, [suiConnectAsync]);\n useEffect(() => { disconnectRef.current = suiDisconnectAsync; }, [suiDisconnectAsync]);\n useEffect(() => { signMessageRef.current = signPersonalMessage; }, [signPersonalMessage]);\n useEffect(() => { walletsRef.current = suiWallets; }, [suiWallets]);\n\n useEffect(() => {\n registerChainActions('SUI', {\n connect: async (xConnectorId: string) => {\n // Match SuiXConnector.id derivation: prefer Wallet Standard `id`, fall back to `name`.\n const wallet = walletsRef.current.find(w => (w.id ?? w.name) === xConnectorId);\n if (!wallet) {\n console.warn(\n `[SuiActions] connect: wallet \"${xConnectorId}\" not found in adapter list`,\n walletsRef.current.map(w => w.name),\n );\n return undefined;\n }\n await connectRef.current({ wallet });\n return undefined;\n },\n disconnect: async () => {\n await disconnectRef.current();\n // SUI disconnection state is cleared by SuiHydrator (single writer for provider-managed chains)\n },\n getConnectors: () => useXWalletStore.getState().xConnectorsByChain.SUI ?? [],\n getConnection: () => useXWalletStore.getState().xConnections.SUI,\n signMessage: async (message: string) => {\n const res = await signMessageRef.current({ message: new Uint8Array(new TextEncoder().encode(message)) });\n return res.signature;\n },\n });\n }, [registerChainActions]);\n\n return null;\n};\n","import type { ReactNode } from 'react';\nimport { ChainKeys } from '@sodax/types';\nimport { SuiClientProvider, WalletProvider as SuiWalletProvider } from '@mysten/dapp-kit';\nimport { getFullnodeUrl } from '@mysten/sui/client';\nimport type { SuiTypeConfig } from '@/types/config.js';\nimport { SuiHydrator } from './SuiHydrator.js';\nimport { SuiActions } from './SuiActions.js';\nimport { SUI_DEFAULT_AUTO_CONNECT, SUI_DEFAULT_NETWORK } from '@/constants.js';\n\ntype SuiProviderProps = {\n children: ReactNode;\n /** Sui type slot — adapter settings + nested chain entries. */\n config: SuiTypeConfig;\n};\n\nexport const SuiProvider = ({ children, config }: SuiProviderProps) => {\n const autoConnect = config.autoConnect ?? SUI_DEFAULT_AUTO_CONNECT;\n const network = config.network ?? SUI_DEFAULT_NETWORK;\n const rpcUrl = config.chains?.[ChainKeys.SUI_MAINNET]?.rpcUrl ?? getFullnodeUrl(network);\n\n return (\n <SuiClientProvider networks={{ [network]: { url: rpcUrl } }} defaultNetwork={network}>\n <SuiWalletProvider autoConnect={autoConnect}>\n <SuiHydrator />\n <SuiActions />\n {children}\n </SuiWalletProvider>\n </SuiClientProvider>\n );\n};\n","import { useXWalletStore } from '@/useXWalletStore.js';\nimport { ICONexRequestEventType, ICONexResponseEventType, request } from './iconex/index.js';\n\nexport const reconnectIcon = async () => {\n const iconConnection = useXWalletStore.getState().xConnections.ICON;\n if (!iconConnection) return;\n\n const recentXConnectorId = iconConnection.xConnectorId;\n\n const detail = await request({\n type: ICONexRequestEventType.REQUEST_ADDRESS,\n });\n\n if (detail?.type === ICONexResponseEventType.RESPONSE_ADDRESS) {\n useXWalletStore.getState().setXConnection('ICON', {\n xAccount: {\n address: detail?.payload,\n xChainType: 'ICON',\n },\n xConnectorId: recentXConnectorId,\n });\n }\n};\n","import { useXWalletStore } from '@/useXWalletStore.js';\nimport { InjectiveXService } from './InjectiveXService.js';\nimport { isEvmBrowserWallet, Wallet } from '@injectivelabs/wallet-base';\nimport { getInjectiveAddress } from '@injectivelabs/sdk-ts';\n\nfunction isWallet(value: string): value is Wallet {\n return Object.values(Wallet).some(v => v === value);\n}\n\nexport const reconnectInjective = async () => {\n const injectiveConnection = useXWalletStore.getState().xConnections.INJECTIVE;\n if (!injectiveConnection) return;\n\n const recentXConnectorId = injectiveConnection.xConnectorId;\n if (!isWallet(recentXConnectorId)) {\n console.warn(`[Injective] Stale wallet ID skipped: ${recentXConnectorId}`);\n return;\n }\n\n const walletStrategy = InjectiveXService.getInstance().walletStrategy;\n await walletStrategy.setWallet(recentXConnectorId);\n const addresses = await walletStrategy.getAddresses();\n\n const firstAddress = addresses?.[0];\n if (!firstAddress) return;\n\n const address = isEvmBrowserWallet(recentXConnectorId) ? getInjectiveAddress(firstAddress) : firstAddress;\n\n useXWalletStore.getState().setXConnection('INJECTIVE', {\n xAccount: {\n address,\n xChainType: 'INJECTIVE',\n },\n xConnectorId: recentXConnectorId,\n });\n};\n","import { useXWalletStore } from '@/useXWalletStore.js';\nimport { StellarXService } from './StellarXService.js';\n\nexport const reconnectStellar = async () => {\n const stellarConnection = useXWalletStore.getState().xConnections.STELLAR;\n if (!stellarConnection) return;\n\n const recentXConnectorId = stellarConnection.xConnectorId;\n const stellarWalletKit = StellarXService.getInstance().walletsKit;\n stellarWalletKit.setWallet(recentXConnectorId);\n const { address } = await stellarWalletKit.getAddress();\n useXWalletStore.getState().setXConnection('STELLAR', {\n xAccount: {\n address,\n xChainType: 'STELLAR',\n },\n xConnectorId: recentXConnectorId,\n });\n};\n","import { useEffect } from 'react';\nimport type { ChainType } from '@sodax/types';\nimport type { SodaxWalletConfig } from '@/types/config.js';\nimport { useXWalletStore } from '@/useXWalletStore.js';\nimport { chainRegistry } from '@/chainRegistry.js';\nimport { reconnectIcon } from '@/xchains/icon/actions.js';\nimport { reconnectInjective } from '@/xchains/injective/actions.js';\nimport { reconnectStellar } from '@/xchains/stellar/actions.js';\n\n/**\n * Initializes chain services based on config. Runs once on mount.\n * Config is immutable after initial render — dynamic changes require remounting SodaxWalletProvider.\n * After persist hydration, re-fires setXConnection for every persisted connection so the\n * createWalletProvider side-effect rebuilds walletProviders (which are not persisted).\n */\nexport function useInitChainServices(walletConfig: SodaxWalletConfig) {\n const initChainServices = useXWalletStore(state => state.initChainServices);\n const cleanupDisabledConnections = useXWalletStore(state => state.cleanupDisabledConnections);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: run-once on mount — config is immutable after initial render, dynamic changes require remounting SodaxWalletProvider\n useEffect(() => {\n initChainServices(walletConfig);\n\n const afterHydration = () => {\n cleanupDisabledConnections();\n\n const store = useXWalletStore.getState();\n for (const chainType of Object.keys(store.xConnections) as ChainType[]) {\n if (!chainRegistry[chainType]?.createWalletProvider) continue;\n const conn = store.xConnections[chainType];\n if (conn) store.setXConnection(chainType, conn);\n }\n\n if (walletConfig.ICON) {\n reconnectIcon().catch(error => console.warn('[wallet-sdk-react] ICON reconnect failed:', error));\n }\n if (walletConfig.INJECTIVE) {\n reconnectInjective().catch(error => console.warn('[wallet-sdk-react] Injective reconnect failed:', error));\n }\n if (walletConfig.STELLAR) {\n reconnectStellar().catch(error => console.warn('[wallet-sdk-react] Stellar reconnect failed:', error));\n }\n };\n\n if (useXWalletStore.persist.hasHydrated()) {\n afterHydration();\n } else {\n useXWalletStore.persist.onFinishHydration(afterHydration);\n }\n }, []);\n}\n","'use client';\n\nimport { type ReactNode, useRef } from 'react';\n\nimport type { SodaxWalletConfig } from './types/config.js';\nimport { WalletConfigProvider } from './context/WalletConfigContext.js';\nimport { EvmProvider } from './providers/evm/index.js';\nimport { SolanaProvider } from './providers/solana/index.js';\nimport { SuiProvider } from './providers/sui/index.js';\nimport { useInitChainServices } from './hooks/useInitChainServices.js';\n\nexport type SodaxWalletProviderProps = {\n children: ReactNode;\n /**\n * Captured once on mount. Dynamic changes require remounting `SodaxWalletProvider`\n * — passing a new reference on subsequent renders has no effect.\n */\n config: SodaxWalletConfig;\n};\n\n/**\n * Root provider for SODAX wallet connectivity. Mounts only the chain-type adapters opted\n * into via `config` and bridges to `@sodax/wallet-sdk-core` so SDK calls receive a typed\n * `IXxxWalletProvider`.\n *\n * Top-level keys on `SodaxWalletConfig` are chain-type slots (`EVM`, `SOLANA`, `BITCOIN`, …).\n * Omit a slot to skip mounting that adapter; pass `{}` to mount with SDK defaults. Provider-\n * managed chains (EVM/Solana/Sui) wrap their native React adapter (wagmi / wallet-adapter /\n * dapp-kit) plus a `<Hydrator>` that syncs adapter state into the Zustand store; non-provider\n * chains register `ChainActions` directly during `useInitChainServices`.\n *\n * **Config is captured once on mount** via `useRef` — subsequent re-renders with a new\n * reference have no effect. To swap config at runtime, remount with a new `key` prop.\n *\n * Must be wrapped by `<QueryClientProvider>` from `@tanstack/react-query` (or, if also\n * using `@sodax/dapp-kit`, see Setup skill for the full provider-stack ordering).\n *\n * @see {@link https://github.com/icon-project/sodax-sdks/blob/main/packages/wallet-sdk-react/docs/CONFIGURE_PROVIDER.md | Configure SodaxWalletProvider}\n */\nexport const SodaxWalletProvider = ({ children, config }: SodaxWalletProviderProps) => {\n // Freeze config on first render so context, store, and wagmi all share one snapshot\n // and unstable parent references can't trigger re-init.\n const configRef = useRef<SodaxWalletConfig>(config);\n const frozen = configRef.current;\n\n useInitChainServices(frozen);\n\n let content = <>{children}</>;\n\n if (frozen.SOLANA) {\n content = <SolanaProvider config={frozen.SOLANA}>{content}</SolanaProvider>;\n }\n\n if (frozen.SUI) {\n content = <SuiProvider config={frozen.SUI}>{content}</SuiProvider>;\n }\n\n if (frozen.EVM) {\n content = <EvmProvider config={frozen.EVM}>{content}</EvmProvider>;\n }\n\n return <WalletConfigProvider value={frozen}>{content}</WalletConfigProvider>;\n};\n"]}