@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
package/README.md CHANGED
@@ -117,14 +117,21 @@ The full guide lives in [`docs/`](docs/). Start with the topic that matches what
117
117
 
118
118
  ## AI agent docs
119
119
 
120
- This package ships with AI-consumable integration & migration docs at `node_modules/@sodax/wallet-sdk-react/ai-exported/`. Point your AI coding agent at [`ai-exported/AGENTS.md`](ai-exported/AGENTS.md) to start it routes to integration recipes (new consumers), migration recipes (v1 v2), and reference tables.
120
+ AI-readable docs for `@sodax/wallet-sdk-react` (and the other `@sodax/*` packages) are shipped via [`@sodax/skills`](https://github.com/icon-project/sodax-sdks/tree/main/packages/skills) — a separate npm package bundling Claude-Code SKILL.md files and a long-form knowledge tree.
121
121
 
122
+ **Recommended: [`skills` CLI](https://github.com/vercel-labs/skills)** — from your project root:
123
+
124
+ ```bash
125
+ npx skills@latest add icon-project/sodax-sdks/packages/skills
122
126
  ```
123
- > Read node_modules/@sodax/wallet-sdk-react/ai-exported/AGENTS.md and integrate
124
- > SODAX wallet connectivity into my Next.js app.
127
+
128
+ **npm + `AGENTS.md` pointer** (fallback for web chats, or when you prefer a devDependency over the CLI):
129
+
130
+ ```bash
131
+ pnpm add -D @sodax/skills
125
132
  ```
126
133
 
127
- The CI guard `scripts/check-ai-exported.sh` validates that every hook reference and sub-path in those docs resolves to a real export.
134
+ Then point your agent at `node_modules/@sodax/skills/AGENTS.md`. See [docs/ai-integration-guide.md](https://github.com/icon-project/sodax-sdks/blob/main/docs/ai-integration-guide.md) for all install modes and per-tool wiring.
128
135
 
129
136
  ---
130
137
 
@@ -147,7 +154,7 @@ See [Connectors](docs/CONNECTORS.md) for the full list of deep-import sub-paths.
147
154
 
148
155
  ## Requirements
149
156
 
150
- - Node.js >= 18.0.0
157
+ - Node.js >= 20.12.0
151
158
  - React >= 19
152
159
  - TypeScript
153
160
 
@@ -143,4 +143,4 @@ declare abstract class XConnector implements IXConnector {
143
143
  get installUrl(): string | undefined;
144
144
  }
145
145
 
146
- export { type IXConnector as I, type XAccount as X, type XConnection as a, XService as b, XConnector as c, type IXService as d };
146
+ export { type IXConnector as I, type XAccount as X, type IXService as a, type XConnection as b, XConnector as c, XService as d };
@@ -60,5 +60,3 @@ var getWagmiChainId = (xChainId) => {
60
60
  };
61
61
 
62
62
  export { getEntryDefaults, getRpcUrl, getWagmiChainId, isNativeToken, resolveEvmDefaults, sortConnectors };
63
- //# sourceMappingURL=chunk-NY7U7OJW.mjs.map
64
- //# sourceMappingURL=chunk-NY7U7OJW.mjs.map
@@ -1,5 +1,5 @@
1
- import { NEAR_DEFAULT_RPC_URL } from './chunk-MXZVF5HR.mjs';
2
- import { XService, XConnector } from './chunk-X2MHIWXO.mjs';
1
+ import { NEAR_DEFAULT_RPC_URL } from './chunk-NAKCAL2M.mjs';
2
+ import { XService, XConnector } from './chunk-IFXZQW4C.mjs';
3
3
  import { NearConnector } from '@hot-labs/near-connect';
4
4
  import { JsonRpcProvider } from 'near-api-js';
5
5
 
@@ -84,5 +84,3 @@ var NearXConnector = class extends XConnector {
84
84
  };
85
85
 
86
86
  export { NearXConnector, NearXService };
87
- //# sourceMappingURL=chunk-BXJLBR4G.mjs.map
88
- //# sourceMappingURL=chunk-BXJLBR4G.mjs.map
@@ -1,5 +1,5 @@
1
- import { isNativeToken } from './chunk-NY7U7OJW.mjs';
2
- import { XService } from './chunk-X2MHIWXO.mjs';
1
+ import { isNativeToken } from './chunk-7V7O3Q7Y.mjs';
2
+ import { XService } from './chunk-IFXZQW4C.mjs';
3
3
  import { PublicKey } from '@solana/web3.js';
4
4
  import { getAssociatedTokenAddressSync, getAccount } from '@solana/spl-token';
5
5
 
@@ -37,5 +37,3 @@ var SolanaXService = class _SolanaXService extends XService {
37
37
  };
38
38
 
39
39
  export { SolanaXService };
40
- //# sourceMappingURL=chunk-XZ7CHO2S.mjs.map
41
- //# sourceMappingURL=chunk-XZ7CHO2S.mjs.map
@@ -96,5 +96,3 @@ var XConnector = class {
96
96
  };
97
97
 
98
98
  export { XConnector, XService };
99
- //# sourceMappingURL=chunk-X2MHIWXO.mjs.map
100
- //# sourceMappingURL=chunk-X2MHIWXO.mjs.map
@@ -1,6 +1,6 @@
1
- import { assertSuiProviderShape, assert, isRecord, hasStringProperty, hasOptionalStringProperty } from './chunk-MAQ47Q52.mjs';
2
- import { isNativeToken } from './chunk-NY7U7OJW.mjs';
3
- import { XService, XConnector } from './chunk-X2MHIWXO.mjs';
1
+ import { assertSuiProviderShape, assert, isRecord, hasStringProperty, hasOptionalStringProperty } from './chunk-TACW7Z4D.mjs';
2
+ import { isNativeToken } from './chunk-7V7O3Q7Y.mjs';
3
+ import { XService, XConnector } from './chunk-IFXZQW4C.mjs';
4
4
  import { SuiWalletProvider } from '@sodax/wallet-sdk-core';
5
5
 
6
6
  var SuiXService = class _SuiXService extends XService {
@@ -98,5 +98,3 @@ var SuiXConnector = class extends XConnector {
98
98
  };
99
99
 
100
100
  export { SuiXConnector, SuiXService };
101
- //# sourceMappingURL=chunk-7ULB6DW4.mjs.map
102
- //# sourceMappingURL=chunk-7ULB6DW4.mjs.map
@@ -1,5 +1,5 @@
1
- import { SolanaXService } from './chunk-XZ7CHO2S.mjs';
2
- import { XConnector } from './chunk-X2MHIWXO.mjs';
1
+ import { SolanaXService } from './chunk-FSOGMSJH.mjs';
2
+ import { XConnector } from './chunk-IFXZQW4C.mjs';
3
3
 
4
4
  // src/xchains/solana/SolanaXConnector.ts
5
5
  var SolanaXConnector = class extends XConnector {
@@ -29,5 +29,3 @@ var SolanaXConnector = class extends XConnector {
29
29
  };
30
30
 
31
31
  export { SolanaXConnector };
32
- //# sourceMappingURL=chunk-N5A2TMF6.mjs.map
33
- //# sourceMappingURL=chunk-N5A2TMF6.mjs.map
@@ -1,10 +1,10 @@
1
- import { XService, XConnector } from './chunk-X2MHIWXO.mjs';
1
+ import { XService, XConnector } from './chunk-IFXZQW4C.mjs';
2
2
  import { getNetworkEndpoints, Network } from '@injectivelabs/networks';
3
3
  import { IndexerGrpcAccountPortfolioApi, ChainGrpcWasmApi, getInjectiveAddress } from '@injectivelabs/sdk-ts';
4
4
  import { ChainId } from '@injectivelabs/ts-types';
5
5
  import { MsgBroadcaster } from '@injectivelabs/wallet-core';
6
6
  import { mainnet } from 'wagmi/chains';
7
- import { WalletStrategy } from '@injectivelabs/wallet-strategy';
7
+ import { WalletStrategy } from '@sodax/libs/injective/wallet-strategy';
8
8
  import { isCosmosBrowserWallet, isEvmBrowserWallet } from '@injectivelabs/wallet-base';
9
9
  import { isCosmosWalletInstalled } from '@injectivelabs/wallet-cosmos';
10
10
 
@@ -121,5 +121,3 @@ var InjectiveXConnector = class extends XConnector {
121
121
  };
122
122
 
123
123
  export { InjectiveXConnector, InjectiveXService };
124
- //# sourceMappingURL=chunk-BKJB527E.mjs.map
125
- //# sourceMappingURL=chunk-BKJB527E.mjs.map
@@ -30,5 +30,3 @@ var WALLET_METADATA = {
30
30
  };
31
31
 
32
32
  export { BITCOIN_DEFAULT_RPC_URL, EVM_DEFAULT_RECONNECT_ON_MOUNT, EVM_DEFAULT_SSR, NEAR_DEFAULT_RPC_URL, SOLANA_DEFAULT_AUTO_CONNECT, SOLANA_DEFAULT_RPC_URL, SOLANA_METAMASK_CONNECT_TIMEOUT_MS, STELLAR_DEFAULT_HORIZON_RPC_URL, STELLAR_DEFAULT_SOROBAN_RPC_URL, SUI_DEFAULT_AUTO_CONNECT, SUI_DEFAULT_NETWORK, WALLET_METADATA };
33
- //# sourceMappingURL=chunk-MXZVF5HR.mjs.map
34
- //# sourceMappingURL=chunk-MXZVF5HR.mjs.map
@@ -1,7 +1,6 @@
1
- import { XService, XConnector } from './chunk-X2MHIWXO.mjs';
2
- import { fetchCallReadOnlyFunction, Cl } from '@stacks/transactions';
3
- import { networkFrom } from '@stacks/network';
4
- import { request, disconnect } from '@stacks/connect';
1
+ import { XService, XConnector } from './chunk-IFXZQW4C.mjs';
2
+ import { networkFrom, fetchCallReadOnlyFunction, Cl } from '@sodax/libs/stacks/core';
3
+ import { request, disconnect } from '@sodax/libs/stacks/connect';
5
4
  import { useMemo } from 'react';
6
5
 
7
6
  var StacksXService = class _StacksXService extends XService {
@@ -19,6 +18,12 @@ var StacksXService = class _StacksXService extends XService {
19
18
  }
20
19
  return _StacksXService.instance;
21
20
  }
21
+ /**
22
+ * @warning Network / fetch / contract-read failures are silently swallowed —
23
+ * `0n` is returned on any error. Callers cannot distinguish "zero balance"
24
+ * from "fetch failed"; UI that needs to surface the failure must wrap this
25
+ * call externally and re-fetch on its own error path.
26
+ */
22
27
  async getBalance(address, xToken) {
23
28
  if (!address) return 0n;
24
29
  if (xToken.symbol === "STX") {
@@ -55,6 +60,7 @@ var StacksXService = class _StacksXService extends XService {
55
60
  }
56
61
  };
57
62
  function getProviderFromId(id) {
63
+ if (typeof window === "undefined") return void 0;
58
64
  return id.split(".").reduce((acc, part) => acc?.[part], window);
59
65
  }
60
66
  var StacksXConnector = class extends XConnector {
@@ -136,5 +142,3 @@ function useStacksXConnectors() {
136
142
  }
137
143
 
138
144
  export { STACKS_PROVIDERS, StacksXConnector, StacksXService, useStacksXConnectors };
139
- //# sourceMappingURL=chunk-PJLEJVAU.mjs.map
140
- //# sourceMappingURL=chunk-PJLEJVAU.mjs.map
@@ -0,0 +1 @@
1
+
@@ -29,5 +29,3 @@ function assertSuiProviderShape(caller, client, wallet, account) {
29
29
  }
30
30
 
31
31
  export { assert, assertSuiProviderShape, hasBooleanProperty, hasFunctionProperty, hasOptionalStringProperty, hasStringProperty, isRecord };
32
- //# sourceMappingURL=chunk-MAQ47Q52.mjs.map
33
- //# sourceMappingURL=chunk-MAQ47Q52.mjs.map
@@ -1,15 +1,15 @@
1
- import { StellarWalletsKitXConnector, StellarXService } from './chunk-66BAUK56.mjs';
2
- import { SuiXService } from './chunk-7ULB6DW4.mjs';
3
- import { EvmXService } from './chunk-E5IAZ7E6.mjs';
4
- import { IconHanaXConnector, IconXService, CHAIN_INFO } from './chunk-2BOUGCJ7.mjs';
5
- import { assert, isRecord, hasFunctionProperty } from './chunk-MAQ47Q52.mjs';
6
- import { InjectiveXConnector, InjectiveXService } from './chunk-BKJB527E.mjs';
7
- import { NearXService, NearXConnector } from './chunk-BXJLBR4G.mjs';
8
- import { BITCOIN_DEFAULT_RPC_URL, WALLET_METADATA } from './chunk-MXZVF5HR.mjs';
9
- import { SolanaXService } from './chunk-XZ7CHO2S.mjs';
10
- import { isNativeToken, getEntryDefaults, getRpcUrl } from './chunk-NY7U7OJW.mjs';
11
- import { STACKS_PROVIDERS, StacksXService, StacksXConnector } from './chunk-PJLEJVAU.mjs';
12
- import { XConnector, XService } from './chunk-X2MHIWXO.mjs';
1
+ import { StellarWalletsKitXConnector, StellarXService } from './chunk-X7BHR7WS.mjs';
2
+ import { SuiXService } from './chunk-JQ4H4GJ5.mjs';
3
+ import { EvmXService } from './chunk-Z5GXDHGL.mjs';
4
+ import { InjectiveXConnector, InjectiveXService } from './chunk-MWWVB7TD.mjs';
5
+ import { NearXConnector, NearXService } from './chunk-C6M34IVL.mjs';
6
+ import { IconHanaXConnector, CHAIN_INFO, IconXService } from './chunk-WPZOLGVB.mjs';
7
+ import { assert, isRecord, hasFunctionProperty } from './chunk-TACW7Z4D.mjs';
8
+ import { BITCOIN_DEFAULT_RPC_URL, WALLET_METADATA } from './chunk-NAKCAL2M.mjs';
9
+ import { SolanaXService } from './chunk-FSOGMSJH.mjs';
10
+ import { isNativeToken, getEntryDefaults, getRpcUrl } from './chunk-7V7O3Q7Y.mjs';
11
+ import { StacksXConnector, STACKS_PROVIDERS, StacksXService } from './chunk-OPYSVPRW.mjs';
12
+ import { XConnector, XService } from './chunk-IFXZQW4C.mjs';
13
13
  import { ChainTypeArr, baseChainInfo, ChainKeys, detectBitcoinAddressType, CHAIN_KEYS } from '@sodax/types';
14
14
  import { AddressPurpose, MessageSigningProtocols } from 'sats-connect';
15
15
  import { createContext, useMemo, useSyncExternalStore, useCallback, useState, useRef, useContext, useEffect } from 'react';
@@ -803,9 +803,20 @@ var useXWalletStore = create()(
803
803
  }
804
804
  })),
805
805
  {
806
- // key kept as 'xwagmi-store' for backward compat existing users won't lose persisted connections on upgrade
806
+ // key kept as 'xwagmi-store' for backward compat, existing users won't lose persisted connections on upgrade
807
807
  name: "xwagmi-store",
808
- storage: createJSONStorage(() => localStorage),
808
+ // Throw on SSR or when localStorage rejects writes (Safari strict
809
+ // private mode, disabled storage). `createJSONStorage` catches the
810
+ // throw, zustand short-circuits `.persist`, and downstream falls back
811
+ // via `usePersistHydrated`. `setItem` probe is required because modern
812
+ // Safari only throws on writes, not reads.
813
+ storage: createJSONStorage(() => {
814
+ if (typeof window === "undefined") throw new Error("no window");
815
+ const probe = "__sodax_probe__";
816
+ window.localStorage.setItem(probe, "1");
817
+ window.localStorage.removeItem(probe);
818
+ return window.localStorage;
819
+ }),
809
820
  partialize: (state) => ({
810
821
  xConnections: state.xConnections,
811
822
  userDisconnected: state.userDisconnected
@@ -988,6 +999,33 @@ function useChainGroups({ order } = {}) {
988
999
  [enabledChains, xConnections, order]
989
1000
  );
990
1001
  }
1002
+ var NOOP = () => {
1003
+ };
1004
+ function subscribe(onChange) {
1005
+ const api = useXWalletStore.persist;
1006
+ if (!api) return NOOP;
1007
+ const unsubHydrate = api.onHydrate(onChange);
1008
+ const unsubFinish = api.onFinishHydration(onChange);
1009
+ return () => {
1010
+ unsubHydrate();
1011
+ unsubFinish();
1012
+ };
1013
+ }
1014
+ var getSnapshot = () => useXWalletStore.persist?.hasHydrated() ?? true;
1015
+ var getServerSnapshot = () => false;
1016
+ function usePersistHydrated() {
1017
+ return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
1018
+ }
1019
+ function whenPersistReady(cb) {
1020
+ const api = useXWalletStore.persist;
1021
+ if (!api || api.hasHydrated()) {
1022
+ cb();
1023
+ return;
1024
+ }
1025
+ api.onFinishHydration(cb);
1026
+ }
1027
+
1028
+ // src/hooks/useConnectedChains.ts
991
1029
  function buildConnectedChains(xConnections, xConnectorsByChain, isReady = true, order) {
992
1030
  const chains = [];
993
1031
  for (const chainType of ChainTypeArr) {
@@ -1012,22 +1050,10 @@ function buildConnectedChains(xConnections, xConnectorsByChain, isReady = true,
1012
1050
  status: isReady ? "ready" : "loading"
1013
1051
  };
1014
1052
  }
1015
- function subscribeHydration(onChange) {
1016
- const unsubHydrate = useXWalletStore.persist.onHydrate(onChange);
1017
- const unsubFinish = useXWalletStore.persist.onFinishHydration(onChange);
1018
- return () => {
1019
- unsubHydrate();
1020
- unsubFinish();
1021
- };
1022
- }
1023
1053
  function useConnectedChains({ order } = {}) {
1024
1054
  const xConnections = useXConnections();
1025
1055
  const xConnectorsByChain = useXConnectorsByChain();
1026
- const isReady = useSyncExternalStore(
1027
- subscribeHydration,
1028
- () => useXWalletStore.persist.hasHydrated(),
1029
- () => false
1030
- );
1056
+ const isReady = usePersistHydrated();
1031
1057
  return useMemo(
1032
1058
  () => buildConnectedChains(xConnections, xConnectorsByChain, isReady, order),
1033
1059
  [xConnections, xConnectorsByChain, isReady, order]
@@ -1580,6 +1606,4 @@ function useBitcoinXConnectors() {
1580
1606
  }, [xService]);
1581
1607
  }
1582
1608
 
1583
- export { BitcoinXConnector, BitcoinXService, OKXXConnector, UnisatXConnector, WalletConfigProvider, XverseXConnector, chainRegistry, getXChainType, getXService, useBatchConnect, useBatchDisconnect, useBitcoinXConnectors, useChainGroups, useConnectedChains, useConnectionFlow, useEnabledChainTypes, useEnabledChains, useEvmSwitchChain, useIsChainEnabled, useIsWalletInstalled, useWalletConfig, useWalletModal, useWalletProvider, useXAccount, useXAccounts, useXConnect, useXConnection, useXConnections, useXConnectors, useXConnectorsByChain, useXDisconnect, useXService, useXServices, useXSignMessage, useXWalletStore };
1584
- //# sourceMappingURL=chunk-PLCA4ZDJ.mjs.map
1585
- //# sourceMappingURL=chunk-PLCA4ZDJ.mjs.map
1609
+ export { BitcoinXConnector, BitcoinXService, OKXXConnector, UnisatXConnector, WalletConfigProvider, XverseXConnector, chainRegistry, getXChainType, getXService, useBatchConnect, useBatchDisconnect, useBitcoinXConnectors, useChainGroups, useConnectedChains, useConnectionFlow, useEnabledChainTypes, useEnabledChains, useEvmSwitchChain, useIsChainEnabled, useIsWalletInstalled, usePersistHydrated, useWalletConfig, useWalletModal, useWalletProvider, useXAccount, useXAccounts, useXConnect, useXConnection, useXConnections, useXConnectors, useXConnectorsByChain, useXDisconnect, useXService, useXServices, useXSignMessage, useXWalletStore, whenPersistReady };
@@ -1,7 +1,7 @@
1
- import { assert, isRecord, hasBooleanProperty } from './chunk-MAQ47Q52.mjs';
2
- import { WALLET_METADATA } from './chunk-MXZVF5HR.mjs';
3
- import { isNativeToken } from './chunk-NY7U7OJW.mjs';
4
- import { XService, XConnector } from './chunk-X2MHIWXO.mjs';
1
+ import { assert, isRecord, hasBooleanProperty } from './chunk-TACW7Z4D.mjs';
2
+ import { WALLET_METADATA } from './chunk-NAKCAL2M.mjs';
3
+ import { isNativeToken } from './chunk-7V7O3Q7Y.mjs';
4
+ import { XService, XConnector } from './chunk-IFXZQW4C.mjs';
5
5
  import * as IconSdkRaw from 'icon-sdk-js';
6
6
 
7
7
  var IconSdk = "default" in IconSdkRaw.default ? IconSdkRaw.default : IconSdkRaw;
@@ -146,5 +146,3 @@ var IconHanaXConnector = class extends XConnector {
146
146
  };
147
147
 
148
148
  export { CHAIN_INFO, IconHanaXConnector, IconXService, SupportedChainId, request };
149
- //# sourceMappingURL=chunk-2BOUGCJ7.mjs.map
150
- //# sourceMappingURL=chunk-2BOUGCJ7.mjs.map
@@ -1,8 +1,8 @@
1
- import { STELLAR_DEFAULT_HORIZON_RPC_URL, STELLAR_DEFAULT_SOROBAN_RPC_URL } from './chunk-MXZVF5HR.mjs';
2
- import { XService, XConnector } from './chunk-X2MHIWXO.mjs';
3
- import { StellarWalletsKit, allowAllModules, WalletNetwork } from '@creit.tech/stellar-wallets-kit';
1
+ import { STELLAR_DEFAULT_HORIZON_RPC_URL, STELLAR_DEFAULT_SOROBAN_RPC_URL } from './chunk-NAKCAL2M.mjs';
2
+ import { XService, XConnector } from './chunk-IFXZQW4C.mjs';
3
+ import { StellarWalletsKit, WalletNetwork, allowAllModules } from '@creit.tech/stellar-wallets-kit';
4
4
  import * as StellarSdk from '@stellar/stellar-sdk';
5
- import { rpc, Address, Contract, TimeoutInfinite, scValToBigInt } from '@stellar/stellar-sdk';
5
+ import { rpc, Contract, TimeoutInfinite, scValToBigInt, Address } from '@stellar/stellar-sdk';
6
6
 
7
7
  var CustomSorobanServer = class extends rpc.Server {
8
8
  customHeaders;
@@ -198,5 +198,3 @@ var StellarWalletsKitXConnector = class extends XConnector {
198
198
  };
199
199
 
200
200
  export { StellarWalletsKitXConnector, StellarXService };
201
- //# sourceMappingURL=chunk-66BAUK56.mjs.map
202
- //# sourceMappingURL=chunk-66BAUK56.mjs.map
@@ -1,9 +1,9 @@
1
- import { getRpcUrl, getWagmiChainId, isNativeToken } from './chunk-NY7U7OJW.mjs';
2
- import { XService, XConnector } from './chunk-X2MHIWXO.mjs';
1
+ import { getRpcUrl, getWagmiChainId, isNativeToken } from './chunk-7V7O3Q7Y.mjs';
2
+ import { XService, XConnector } from './chunk-IFXZQW4C.mjs';
3
3
  import { ChainKeys } from '@sodax/types';
4
- import { defineChain, erc20Abi } from 'viem';
4
+ import { erc20Abi, defineChain } from 'viem';
5
5
  import { getPublicClient } from 'wagmi/actions';
6
- import { createConfig, createStorage, http, cookieStorage } from 'wagmi';
6
+ import { createConfig, createStorage, cookieStorage, http } from 'wagmi';
7
7
  import { mainnet, avalanche, arbitrum, base, bsc, sonic, optimism, polygon, lightlinkPhoenix, kaia, redbellyMainnet } from 'wagmi/chains';
8
8
 
9
9
  var hyper = /* @__PURE__ */ defineChain({
@@ -47,7 +47,13 @@ var createWagmiConfig = (evmChains, options) => {
47
47
  redbellyMainnet
48
48
  ],
49
49
  connectors: options?.connectors ?? [],
50
- ssr: options?.ssr,
50
+ // NOTE: wagmi's `ssr` is a hydration-timing flag, not an "is host app SSR"
51
+ // flag. `true` defers `Hydrate.onMount()` into `useEffect` (safe for both
52
+ // CSR and SSR); `false` runs it in render and trips React's "setState
53
+ // during render" warning on subscribers like `EvmHydrator`. Default to
54
+ // `true` so direct callers of `createWagmiConfig` stay safe — only pass
55
+ // `false` if you have a specific reason. See issue #129.
56
+ ssr: options?.ssr ?? true,
51
57
  transports: {
52
58
  [mainnet.id]: http(getRpcUrl(evmChains?.[ChainKeys.ETHEREUM_MAINNET])),
53
59
  [avalanche.id]: http(getRpcUrl(evmChains?.[ChainKeys.AVALANCHE_MAINNET])),
@@ -182,5 +188,3 @@ var EvmXConnector = class extends XConnector {
182
188
  };
183
189
 
184
190
  export { EvmXConnector, EvmXService, createWagmiConfig };
185
- //# sourceMappingURL=chunk-E5IAZ7E6.mjs.map
186
- //# sourceMappingURL=chunk-E5IAZ7E6.mjs.map
@@ -1,8 +1,8 @@
1
- import { ChainType, EvmChainKey, SolanaChainKey, SuiChainKey, IconChainKey, NearChainKey, StellarChainKey, StellarRpcConfig, BitcoinChainKey, BitcoinRpcConfig, InjectiveChainKey, InjectiveRpcConfig, StacksChainKey, StacksNetworkName, StacksNetworkLike, ChainKey, baseChainInfo } from '@sodax/types';
2
- import { EvmWalletDefaults, SolanaWalletDefaults, SuiWalletDefaults, IconWalletDefaults, NearWalletDefaults, StellarWalletDefaults, BitcoinWalletDefaults, InjectiveWalletDefaults, StacksWalletDefaults } from '@sodax/wallet-sdk-core';
1
+ import { BitcoinRpcConfig, ChainType, EvmChainKey, SolanaChainKey, SuiChainKey, IconChainKey, NearChainKey, StellarChainKey, StellarRpcConfig, BitcoinChainKey, InjectiveChainKey, InjectiveRpcConfig, StacksChainKey, StacksNetworkName, StacksNetworkLike, ChainKey, baseChainInfo } from '@sodax/types';
2
+ import { BitcoinWalletDefaults, EvmWalletDefaults, SolanaWalletDefaults, SuiWalletDefaults, IconWalletDefaults, NearWalletDefaults, StellarWalletDefaults, InjectiveWalletDefaults, StacksWalletDefaults } from '@sodax/wallet-sdk-core';
3
3
  import { State } from 'wagmi';
4
4
  import { WalletConnectParameters } from 'wagmi/connectors';
5
- import { I as IXConnector } from './XConnector-B9YQTVJ4.js';
5
+ import { I as IXConnector } from './XConnector-12q0OVe5.js';
6
6
 
7
7
  type SimpleChainEntry<D> = {
8
8
  rpcUrl?: string;
@@ -29,7 +29,12 @@ type StacksChainEntry = StacksNetworkName | (StacksNetworkLike & {
29
29
  type EvmAdapterFields = {
30
30
  /** Attempt to reconnect previously connected wallets on mount. @default false */
31
31
  reconnectOnMount?: boolean;
32
- /** Enable SSR-safe hydration for Next.js. @default true */
32
+ /**
33
+ * wagmi hydration-timing flag (not an "app is SSR" flag).
34
+ * `true` defers wagmi reconnect into `useEffect`; `false` runs it in render
35
+ * and triggers React's "setState during render" warning. Keep `true` unless
36
+ * you know you need otherwise. @default true
37
+ */
33
38
  ssr?: boolean;
34
39
  /** Wagmi SSR hydration state — pass `cookieToInitialState()` to avoid disconnect flash on first load (Next.js only). */
35
40
  initialState?: State;
@@ -143,4 +148,4 @@ type SodaxWalletConfig = {
143
148
  [T in ChainType]?: ChainTypeConfig<T>;
144
149
  };
145
150
 
146
- export type { BitcoinChainEntry as B, ChainEntry as C, EvmChainEntry as E, IconChainEntry as I, NearChainEntry as N, SodaxWalletConfig as S, WalletDefaultsByKey as W, SolanaChainEntry as a, SuiChainEntry as b, StellarChainEntry as c, InjectiveChainEntry as d, StacksChainEntry as e, EvmAdapterFields as f, SolanaAdapterFields as g, SuiAdapterFields as h, ChainMeta as i, ChainTypeOf as j, ChainTypeConfig as k, EvmTypeConfig as l, SolanaTypeConfig as m, SuiTypeConfig as n, BitcoinTypeConfig as o, StellarTypeConfig as p, InjectiveTypeConfig as q, IconTypeConfig as r, NearTypeConfig as s, StacksTypeConfig as t };
151
+ export type { BitcoinChainEntry as B, ChainEntry as C, EvmAdapterFields as E, IconChainEntry as I, NearChainEntry as N, SodaxWalletConfig as S, WalletDefaultsByKey as W, BitcoinTypeConfig as a, ChainMeta as b, ChainTypeConfig as c, ChainTypeOf as d, EvmChainEntry as e, EvmTypeConfig as f, IconTypeConfig as g, InjectiveChainEntry as h, InjectiveTypeConfig as i, NearTypeConfig as j, SolanaAdapterFields as k, SolanaChainEntry as l, SolanaTypeConfig as m, StacksChainEntry as n, StacksTypeConfig as o, StellarChainEntry as p, StellarTypeConfig as q, SuiAdapterFields as r, SuiChainEntry as s, SuiTypeConfig as t };
package/dist/index.d.ts CHANGED
@@ -1,11 +1,11 @@
1
1
  import { SpokeChainKey, GetChainType, ChainType, ChainKey, EvmChainKey, XToken, GetWalletProviderType } from '@sodax/types';
2
2
  export { IWalletProvider } from '@sodax/types';
3
- import { X as XAccount, I as IXConnector, a as XConnection, b as XService, c as XConnector } from './XConnector-B9YQTVJ4.js';
4
- export { d as IXService } from './XConnector-B9YQTVJ4.js';
3
+ import { X as XAccount, I as IXConnector, b as XConnection, d as XService, c as XConnector } from './XConnector-12q0OVe5.js';
4
+ export { a as IXService } from './XConnector-12q0OVe5.js';
5
5
  import * as react from 'react';
6
6
  import { ReactNode } from 'react';
7
- import { S as SodaxWalletConfig, C as ChainEntry, W as WalletDefaultsByKey, E as EvmChainEntry } from './config-OlnzyEUE.js';
8
- export { B as BitcoinChainEntry, o as BitcoinTypeConfig, i as ChainMeta, k as ChainTypeConfig, j as ChainTypeOf, f as EvmAdapterFields, l as EvmTypeConfig, I as IconChainEntry, r as IconTypeConfig, d as InjectiveChainEntry, q as InjectiveTypeConfig, N as NearChainEntry, s as NearTypeConfig, g as SolanaAdapterFields, a as SolanaChainEntry, m as SolanaTypeConfig, e as StacksChainEntry, t as StacksTypeConfig, c as StellarChainEntry, p as StellarTypeConfig, h as SuiAdapterFields, b as SuiChainEntry, n as SuiTypeConfig } from './config-OlnzyEUE.js';
7
+ import { S as SodaxWalletConfig, C as ChainEntry, W as WalletDefaultsByKey, e as EvmChainEntry } from './config-DEsqgrG1.js';
8
+ export { B as BitcoinChainEntry, a as BitcoinTypeConfig, b as ChainMeta, c as ChainTypeConfig, d as ChainTypeOf, E as EvmAdapterFields, f as EvmTypeConfig, I as IconChainEntry, g as IconTypeConfig, h as InjectiveChainEntry, i as InjectiveTypeConfig, N as NearChainEntry, j as NearTypeConfig, k as SolanaAdapterFields, l as SolanaChainEntry, m as SolanaTypeConfig, n as StacksChainEntry, o as StacksTypeConfig, p as StellarChainEntry, q as StellarTypeConfig, r as SuiAdapterFields, s as SuiChainEntry, t as SuiTypeConfig } from './config-DEsqgrG1.js';
9
9
  import { UseMutationResult } from '@tanstack/react-query';
10
10
  import * as react_jsx_runtime from 'react/jsx-runtime';
11
11
  import { EvmWalletDefaults } from '@sodax/wallet-sdk-core';
@@ -317,7 +317,7 @@ type UseConnectedChainsOptions = {
317
317
  * metadata (name + icon) looked up from the store. Useful for "Manage
318
318
  * connections" UIs and status badges.
319
319
  *
320
- * Gate rendering on `status === 'ready'` to avoid the "Connect wallet"
320
+ * Gate rendering on `status === 'ready'` to avoid the "Connect wallet" to
321
321
  * "Connected" flicker on reload while the store rehydrates from localStorage.
322
322
  *
323
323
  * @example
@@ -326,7 +326,7 @@ type UseConnectedChainsOptions = {
326
326
  * return total >= 1 ? <ConnectedChainsDisplay chains={chains} /> : <ConnectCta />;
327
327
  *
328
328
  * @example
329
- * // Deterministic display order required if rendering a list that must
329
+ * // Deterministic display order, required if rendering a list that must
330
330
  * // be stable across page reloads (hydrator race otherwise randomizes
331
331
  * // insertion order).
332
332
  * const { chains } = useConnectedChains({ order: ['EVM', 'ICON', 'SOLANA'] });
package/dist/index.mjs CHANGED
@@ -1,21 +1,21 @@
1
- import { WalletConfigProvider, useXWalletStore, chainRegistry, useWalletConfig } from './chunk-PLCA4ZDJ.mjs';
2
- export { WalletConfigProvider, getXChainType, getXService, useBatchConnect, useBatchDisconnect, useChainGroups, useConnectedChains, useConnectionFlow, useEnabledChainTypes, useEnabledChains, useEvmSwitchChain, useIsChainEnabled, useIsWalletInstalled, useWalletConfig, useWalletModal, useWalletProvider, useXAccount, useXAccounts, useXConnect, useXConnection, useXConnections, useXConnectors, useXConnectorsByChain, useXDisconnect, useXService, useXServices, useXSignMessage } from './chunk-PLCA4ZDJ.mjs';
3
- import { StellarXService } from './chunk-66BAUK56.mjs';
4
- import { SuiXService, SuiXConnector } from './chunk-7ULB6DW4.mjs';
5
- import { createWagmiConfig, EvmXService, EvmXConnector } from './chunk-E5IAZ7E6.mjs';
6
- import { request } from './chunk-2BOUGCJ7.mjs';
7
- import { assertSuiProviderShape } from './chunk-MAQ47Q52.mjs';
8
- import { InjectiveXService } from './chunk-BKJB527E.mjs';
9
- import './chunk-BXJLBR4G.mjs';
10
- import { SOLANA_DEFAULT_AUTO_CONNECT, SOLANA_DEFAULT_RPC_URL, SUI_DEFAULT_AUTO_CONNECT, SUI_DEFAULT_NETWORK, EVM_DEFAULT_RECONNECT_ON_MOUNT, EVM_DEFAULT_SSR, SOLANA_METAMASK_CONNECT_TIMEOUT_MS } from './chunk-MXZVF5HR.mjs';
11
- import { SolanaXConnector } from './chunk-N5A2TMF6.mjs';
12
- import { SolanaXService } from './chunk-XZ7CHO2S.mjs';
13
- import { getEntryDefaults, resolveEvmDefaults } from './chunk-NY7U7OJW.mjs';
14
- export { getEntryDefaults, getRpcUrl, getWagmiChainId, isNativeToken, resolveEvmDefaults, sortConnectors } from './chunk-NY7U7OJW.mjs';
15
- import './chunk-PJLEJVAU.mjs';
16
- import './chunk-TZMKDXFA.mjs';
17
- export { XConnector, XService } from './chunk-X2MHIWXO.mjs';
18
- import { useRef, useEffect, useMemo, useState } from 'react';
1
+ import { WalletConfigProvider, useXWalletStore, whenPersistReady, chainRegistry, useWalletConfig, usePersistHydrated } from './chunk-VCESC6QT.mjs';
2
+ export { WalletConfigProvider, getXChainType, getXService, useBatchConnect, useBatchDisconnect, useChainGroups, useConnectedChains, useConnectionFlow, useEnabledChainTypes, useEnabledChains, useEvmSwitchChain, useIsChainEnabled, useIsWalletInstalled, useWalletConfig, useWalletModal, useWalletProvider, useXAccount, useXAccounts, useXConnect, useXConnection, useXConnections, useXConnectors, useXConnectorsByChain, useXDisconnect, useXService, useXServices, useXSignMessage } from './chunk-VCESC6QT.mjs';
3
+ import { StellarXService } from './chunk-X7BHR7WS.mjs';
4
+ import { SuiXService, SuiXConnector } from './chunk-JQ4H4GJ5.mjs';
5
+ import { createWagmiConfig, EvmXService, EvmXConnector } from './chunk-Z5GXDHGL.mjs';
6
+ import { InjectiveXService } from './chunk-MWWVB7TD.mjs';
7
+ import './chunk-C6M34IVL.mjs';
8
+ import { request } from './chunk-WPZOLGVB.mjs';
9
+ import { assertSuiProviderShape } from './chunk-TACW7Z4D.mjs';
10
+ import { SOLANA_DEFAULT_AUTO_CONNECT, SOLANA_DEFAULT_RPC_URL, SUI_DEFAULT_AUTO_CONNECT, SUI_DEFAULT_NETWORK, EVM_DEFAULT_RECONNECT_ON_MOUNT, EVM_DEFAULT_SSR, SOLANA_METAMASK_CONNECT_TIMEOUT_MS } from './chunk-NAKCAL2M.mjs';
11
+ import { SolanaXConnector } from './chunk-LKSSME2J.mjs';
12
+ import { SolanaXService } from './chunk-FSOGMSJH.mjs';
13
+ import { getEntryDefaults, resolveEvmDefaults } from './chunk-7V7O3Q7Y.mjs';
14
+ export { getEntryDefaults, getRpcUrl, getWagmiChainId, isNativeToken, resolveEvmDefaults, sortConnectors } from './chunk-7V7O3Q7Y.mjs';
15
+ import './chunk-OPYSVPRW.mjs';
16
+ import './chunk-QMXBY3UI.mjs';
17
+ export { XConnector, XService } from './chunk-IFXZQW4C.mjs';
18
+ import { useRef, useEffect, useMemo } from 'react';
19
19
  import { WagmiProvider, useConfig, useConnectors, useAccount, usePublicClient, useWalletClient, useReconnect, useConnect, useDisconnect, useSignMessage } from 'wagmi';
20
20
  import { walletConnect } from 'wagmi/connectors';
21
21
  import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
@@ -50,12 +50,7 @@ var EvmHydrator = () => {
50
50
  EvmXService.getInstance().setXConnectors(evmConnectors);
51
51
  useXWalletStore.getState().setXConnectors("EVM", evmConnectors);
52
52
  }, [evmConnectors]);
53
- const [hydrated, setHydrated] = useState(() => useXWalletStore.persist.hasHydrated());
54
- useEffect(() => {
55
- if (hydrated) return;
56
- const unsub = useXWalletStore.persist.onFinishHydration(() => setHydrated(true));
57
- return unsub;
58
- }, [hydrated]);
53
+ const hydrated = usePersistHydrated();
59
54
  useEffect(() => {
60
55
  if (!hydrated) return;
61
56
  if (status !== "disconnected") return;
@@ -509,11 +504,7 @@ function useInitChainServices(walletConfig) {
509
504
  reconnectStellar().catch((error) => console.warn("[wallet-sdk-react] Stellar reconnect failed:", error));
510
505
  }
511
506
  };
512
- if (useXWalletStore.persist.hasHydrated()) {
513
- afterHydration();
514
- } else {
515
- useXWalletStore.persist.onFinishHydration(afterHydration);
516
- }
507
+ whenPersistReady(afterHydration);
517
508
  }, []);
518
509
  }
519
510
  var SodaxWalletProvider = ({ children, config }) => {
@@ -534,5 +525,3 @@ var SodaxWalletProvider = ({ children, config }) => {
534
525
  };
535
526
 
536
527
  export { SodaxWalletProvider };
537
- //# sourceMappingURL=index.mjs.map
538
- //# sourceMappingURL=index.mjs.map
@@ -1,4 +1,4 @@
1
- import { b as XService, c as XConnector, X as XAccount } from '../../XConnector-B9YQTVJ4.js';
1
+ import { d as XService, c as XConnector, X as XAccount } from '../../XConnector-12q0OVe5.js';
2
2
  import { XToken, IBitcoinWalletProvider, BtcWalletAddressType } from '@sodax/types';
3
3
  export { BtcWalletAddressType } from '@sodax/types';
4
4
  import { BitcoinWalletDefaults } from '@sodax/wallet-sdk-core';
@@ -1,16 +1,14 @@
1
- export { BitcoinXConnector, BitcoinXService, OKXXConnector, UnisatXConnector, XverseXConnector, useBitcoinXConnectors } from '../../chunk-PLCA4ZDJ.mjs';
2
- import '../../chunk-66BAUK56.mjs';
3
- import '../../chunk-7ULB6DW4.mjs';
4
- import '../../chunk-E5IAZ7E6.mjs';
5
- import '../../chunk-2BOUGCJ7.mjs';
6
- import '../../chunk-MAQ47Q52.mjs';
7
- import '../../chunk-BKJB527E.mjs';
8
- import '../../chunk-BXJLBR4G.mjs';
9
- import '../../chunk-MXZVF5HR.mjs';
10
- import '../../chunk-XZ7CHO2S.mjs';
11
- import '../../chunk-NY7U7OJW.mjs';
12
- import '../../chunk-PJLEJVAU.mjs';
13
- import '../../chunk-TZMKDXFA.mjs';
14
- import '../../chunk-X2MHIWXO.mjs';
15
- //# sourceMappingURL=index.mjs.map
16
- //# sourceMappingURL=index.mjs.map
1
+ export { BitcoinXConnector, BitcoinXService, OKXXConnector, UnisatXConnector, XverseXConnector, useBitcoinXConnectors } from '../../chunk-VCESC6QT.mjs';
2
+ import '../../chunk-X7BHR7WS.mjs';
3
+ import '../../chunk-JQ4H4GJ5.mjs';
4
+ import '../../chunk-Z5GXDHGL.mjs';
5
+ import '../../chunk-MWWVB7TD.mjs';
6
+ import '../../chunk-C6M34IVL.mjs';
7
+ import '../../chunk-WPZOLGVB.mjs';
8
+ import '../../chunk-TACW7Z4D.mjs';
9
+ import '../../chunk-NAKCAL2M.mjs';
10
+ import '../../chunk-FSOGMSJH.mjs';
11
+ import '../../chunk-7V7O3Q7Y.mjs';
12
+ import '../../chunk-OPYSVPRW.mjs';
13
+ import '../../chunk-QMXBY3UI.mjs';
14
+ import '../../chunk-IFXZQW4C.mjs';
@@ -1,6 +1,6 @@
1
- import { b as XService, c as XConnector, X as XAccount } from '../../XConnector-B9YQTVJ4.js';
1
+ import { d as XService, c as XConnector, X as XAccount } from '../../XConnector-12q0OVe5.js';
2
2
  import { XToken } from '@sodax/types';
3
- import { l as EvmTypeConfig } from '../../config-OlnzyEUE.js';
3
+ import { f as EvmTypeConfig } from '../../config-DEsqgrG1.js';
4
4
  import { Config, CreateConnectorFn, Connector } from 'wagmi';
5
5
  import '@sodax/wallet-sdk-core';
6
6
  import 'wagmi/connectors';
@@ -9,7 +9,7 @@ type WagmiOptions = {
9
9
  reconnectOnMount?: boolean;
10
10
  ssr?: boolean;
11
11
  };
12
- declare const createWagmiConfig: (evmChains: EvmTypeConfig["chains"], options?: WagmiOptions & {
12
+ declare const createWagmiConfig: (evmChains?: EvmTypeConfig["chains"], options?: WagmiOptions & {
13
13
  connectors?: CreateConnectorFn[];
14
14
  }) => Config;
15
15
  /**
@@ -1,5 +1,3 @@
1
- export { EvmXConnector, EvmXService, createWagmiConfig as createWagmi, createWagmiConfig } from '../../chunk-E5IAZ7E6.mjs';
2
- import '../../chunk-NY7U7OJW.mjs';
3
- import '../../chunk-X2MHIWXO.mjs';
4
- //# sourceMappingURL=index.mjs.map
5
- //# sourceMappingURL=index.mjs.map
1
+ export { EvmXConnector, EvmXService, createWagmiConfig as createWagmi, createWagmiConfig } from '../../chunk-Z5GXDHGL.mjs';
2
+ import '../../chunk-7V7O3Q7Y.mjs';
3
+ import '../../chunk-IFXZQW4C.mjs';
@@ -1,4 +1,4 @@
1
- import { b as XService, c as XConnector, X as XAccount } from '../../XConnector-B9YQTVJ4.js';
1
+ import { d as XService, c as XConnector, X as XAccount } from '../../XConnector-12q0OVe5.js';
2
2
  import { IconService } from 'icon-sdk-js';
3
3
  import { XToken } from '@sodax/types';
4
4
 
@@ -1,7 +1,5 @@
1
- export { CHAIN_INFO, IconHanaXConnector, IconXService, SupportedChainId } from '../../chunk-2BOUGCJ7.mjs';
2
- import '../../chunk-MAQ47Q52.mjs';
3
- import '../../chunk-MXZVF5HR.mjs';
4
- import '../../chunk-NY7U7OJW.mjs';
5
- import '../../chunk-X2MHIWXO.mjs';
6
- //# sourceMappingURL=index.mjs.map
7
- //# sourceMappingURL=index.mjs.map
1
+ export { CHAIN_INFO, IconHanaXConnector, IconXService, SupportedChainId } from '../../chunk-WPZOLGVB.mjs';
2
+ import '../../chunk-TACW7Z4D.mjs';
3
+ import '../../chunk-NAKCAL2M.mjs';
4
+ import '../../chunk-7V7O3Q7Y.mjs';
5
+ import '../../chunk-IFXZQW4C.mjs';