@sodax/wallet-sdk-react 2.0.0-rc.3 → 2.0.0-rc.5

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 (129) 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-XZ7CHO2S.mjs → chunk-FSOGMSJH.mjs} +2 -4
  6. package/dist/{chunk-X2MHIWXO.mjs → chunk-IFXZQW4C.mjs} +0 -2
  7. package/dist/{chunk-7ULB6DW4.mjs → chunk-JQ4H4GJ5.mjs} +3 -5
  8. package/dist/{chunk-N5A2TMF6.mjs → chunk-LKSSME2J.mjs} +2 -4
  9. package/dist/{chunk-BKJB527E.mjs → chunk-MWWVB7TD.mjs} +2 -4
  10. package/dist/{chunk-MXZVF5HR.mjs → chunk-NAKCAL2M.mjs} +0 -2
  11. package/dist/{chunk-PJLEJVAU.mjs → chunk-OPYSVPRW.mjs} +10 -6
  12. package/dist/chunk-QMXBY3UI.mjs +1 -0
  13. package/dist/{chunk-MAQ47Q52.mjs → chunk-TACW7Z4D.mjs} +0 -2
  14. package/dist/{chunk-PLCA4ZDJ.mjs → chunk-VCESC6QT.mjs} +54 -30
  15. package/dist/{chunk-2BOUGCJ7.mjs → chunk-WPZOLGVB.mjs} +4 -6
  16. package/dist/{chunk-66BAUK56.mjs → chunk-X7BHR7WS.mjs} +4 -6
  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/docs/ADDING_A_NEW_CHAIN.md +1 -1
  40. package/docs/SUB_PATH_EXPORTS.md +14 -42
  41. package/package.json +35 -28
  42. package/ai-exported/AGENTS.md +0 -122
  43. package/ai-exported/integration/README.md +0 -102
  44. package/ai-exported/integration/ai-rules.md +0 -136
  45. package/ai-exported/integration/architecture.md +0 -181
  46. package/ai-exported/integration/examples/01-minimal-evm.tsx +0 -75
  47. package/ai-exported/integration/examples/02-multi-chain-modal.tsx +0 -169
  48. package/ai-exported/integration/examples/03-nextjs-app-router.tsx +0 -99
  49. package/ai-exported/integration/examples/04-walletconnect-setup.tsx +0 -89
  50. package/ai-exported/integration/examples/README.md +0 -29
  51. package/ai-exported/integration/recipes/batch-operations.md +0 -223
  52. package/ai-exported/integration/recipes/bridge-to-sdk.md +0 -164
  53. package/ai-exported/integration/recipes/chain-detection.md +0 -254
  54. package/ai-exported/integration/recipes/connect-button.md +0 -156
  55. package/ai-exported/integration/recipes/multi-chain-modal.md +0 -199
  56. package/ai-exported/integration/recipes/setup.md +0 -160
  57. package/ai-exported/integration/recipes/sign-message.md +0 -137
  58. package/ai-exported/integration/recipes/sub-path-imports.md +0 -95
  59. package/ai-exported/integration/recipes/switch-chain.md +0 -141
  60. package/ai-exported/integration/recipes/walletconnect-setup.md +0 -139
  61. package/ai-exported/integration/reference/api-surface.md +0 -175
  62. package/ai-exported/integration/reference/chain-support.md +0 -78
  63. package/ai-exported/integration/reference/connectors.md +0 -74
  64. package/ai-exported/integration/reference/hooks.md +0 -204
  65. package/ai-exported/integration/reference/wallet-brands.md +0 -106
  66. package/ai-exported/migration/README.md +0 -49
  67. package/ai-exported/migration/ai-rules.md +0 -144
  68. package/ai-exported/migration/breaking-changes.md +0 -305
  69. package/ai-exported/migration/checklist.md +0 -159
  70. package/ai-exported/migration/recipes/connect-button.md +0 -166
  71. package/ai-exported/migration/recipes/multi-chain-modal.md +0 -244
  72. package/ai-exported/migration/recipes/ssr-setup.md +0 -164
  73. package/ai-exported/migration/recipes/walletconnect-migration.md +0 -168
  74. package/ai-exported/migration/reference/components.md +0 -73
  75. package/ai-exported/migration/reference/config.md +0 -325
  76. package/ai-exported/migration/reference/hooks.md +0 -323
  77. package/ai-exported/migration/reference/imports.md +0 -157
  78. package/dist/chunk-2BOUGCJ7.mjs.map +0 -1
  79. package/dist/chunk-66BAUK56.mjs.map +0 -1
  80. package/dist/chunk-7ULB6DW4.mjs.map +0 -1
  81. package/dist/chunk-BKJB527E.mjs.map +0 -1
  82. package/dist/chunk-BXJLBR4G.mjs.map +0 -1
  83. package/dist/chunk-E5IAZ7E6.mjs.map +0 -1
  84. package/dist/chunk-MAQ47Q52.mjs.map +0 -1
  85. package/dist/chunk-MXZVF5HR.mjs.map +0 -1
  86. package/dist/chunk-N5A2TMF6.mjs.map +0 -1
  87. package/dist/chunk-NY7U7OJW.mjs.map +0 -1
  88. package/dist/chunk-PJLEJVAU.mjs.map +0 -1
  89. package/dist/chunk-PLCA4ZDJ.mjs.map +0 -1
  90. package/dist/chunk-TZMKDXFA.mjs +0 -3
  91. package/dist/chunk-TZMKDXFA.mjs.map +0 -1
  92. package/dist/chunk-X2MHIWXO.mjs.map +0 -1
  93. package/dist/chunk-XZ7CHO2S.mjs.map +0 -1
  94. package/dist/index.cjs +0 -3337
  95. package/dist/index.cjs.map +0 -1
  96. package/dist/index.mjs.map +0 -1
  97. package/dist/xchains/bitcoin/index.cjs +0 -1927
  98. package/dist/xchains/bitcoin/index.cjs.map +0 -1
  99. package/dist/xchains/bitcoin/index.mjs.map +0 -1
  100. package/dist/xchains/evm/index.cjs +0 -316
  101. package/dist/xchains/evm/index.cjs.map +0 -1
  102. package/dist/xchains/evm/index.mjs.map +0 -1
  103. package/dist/xchains/icon/index.cjs +0 -311
  104. package/dist/xchains/icon/index.cjs.map +0 -1
  105. package/dist/xchains/icon/index.mjs.map +0 -1
  106. package/dist/xchains/injective/index.cjs +0 -223
  107. package/dist/xchains/injective/index.cjs.map +0 -1
  108. package/dist/xchains/injective/index.mjs.map +0 -1
  109. package/dist/xchains/near/index.cjs +0 -190
  110. package/dist/xchains/near/index.cjs.map +0 -1
  111. package/dist/xchains/near/index.mjs.map +0 -1
  112. package/dist/xchains/solana/index.cjs +0 -186
  113. package/dist/xchains/solana/index.cjs.map +0 -1
  114. package/dist/xchains/solana/index.mjs.map +0 -1
  115. package/dist/xchains/stacks/index.cjs +0 -240
  116. package/dist/xchains/stacks/index.cjs.map +0 -1
  117. package/dist/xchains/stacks/index.mjs.map +0 -1
  118. package/dist/xchains/stellar/index.cjs +0 -322
  119. package/dist/xchains/stellar/index.cjs.map +0 -1
  120. package/dist/xchains/stellar/index.mjs.map +0 -1
  121. package/dist/xchains/sui/index.cjs +0 -248
  122. package/dist/xchains/sui/index.cjs.map +0 -1
  123. package/dist/xchains/sui/index.mjs.map +0 -1
  124. package/skills/SKILLS.md +0 -84
  125. package/skills/bridge-to-sdk.md +0 -148
  126. package/skills/connect-button.md +0 -116
  127. package/skills/evm-only-walletconnect.md +0 -111
  128. package/skills/multi-chain-modal.md +0 -178
  129. 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"]}