@gala-chain/launchpad-sdk 8.1.0 → 9.0.0-rc.0

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 (252) hide show
  1. package/CHANGELOG.md +362 -0
  2. package/EXAMPLES.md +95 -681
  3. package/MIGRATING-TO-9.0.md +301 -0
  4. package/README.md +46 -17
  5. package/dist/LaunchpadSDK.d.ts +138 -413
  6. package/dist/LaunchpadSDK.d.ts.map +1 -1
  7. package/dist/api/LaunchpadAPI.d.ts +5 -37
  8. package/dist/api/LaunchpadAPI.d.ts.map +1 -1
  9. package/dist/auth/SignatureAuth.d.ts +2 -2
  10. package/dist/auth/SignatureAuth.d.ts.map +1 -1
  11. package/dist/auth/types.d.ts +1 -1
  12. package/dist/auth/types.d.ts.map +1 -1
  13. package/dist/config/environments.d.ts +7 -2
  14. package/dist/config/environments.d.ts.map +1 -1
  15. package/dist/constants/decimals.d.ts +0 -23
  16. package/dist/constants/decimals.d.ts.map +1 -1
  17. package/dist/constants/endpoints.d.ts +0 -7
  18. package/dist/constants/endpoints.d.ts.map +1 -1
  19. package/dist/constants/version.generated.d.ts +1 -1
  20. package/dist/constants/version.generated.d.ts.map +1 -1
  21. package/dist/helpers/sdk.d.ts.map +1 -1
  22. package/dist/index.browser.d.ts +8 -22
  23. package/dist/index.browser.d.ts.map +1 -1
  24. package/dist/index.browser.esm.js +1 -1
  25. package/dist/index.cjs +1 -1
  26. package/dist/index.esm.js +1 -1
  27. package/dist/index.js +1 -1
  28. package/dist/index.node.d.ts +4 -5
  29. package/dist/index.node.d.ts.map +1 -1
  30. package/dist/launchpad/bundle-submission.d.ts +1 -9
  31. package/dist/launchpad/bundle-submission.d.ts.map +1 -1
  32. package/dist/launchpad/transport.d.ts +2 -1
  33. package/dist/launchpad/transport.d.ts.map +1 -1
  34. package/dist/native.cjs +1 -1
  35. package/dist/native.d.ts +3 -4
  36. package/dist/native.d.ts.map +1 -1
  37. package/dist/native.esm.js +1 -1
  38. package/dist/schemas/user.d.ts +0 -15
  39. package/dist/schemas/user.d.ts.map +1 -1
  40. package/dist/services/AbstractCacheService.d.ts +2 -2
  41. package/dist/services/GalaChainBalanceService.d.ts +17 -89
  42. package/dist/services/GalaChainBalanceService.d.ts.map +1 -1
  43. package/dist/services/GalaChainLockService.d.ts +19 -20
  44. package/dist/services/GalaChainLockService.d.ts.map +1 -1
  45. package/dist/services/GalaChainService.d.ts +28 -15
  46. package/dist/services/GalaChainService.d.ts.map +1 -1
  47. package/dist/services/GalaChainTokenService.d.ts +25 -53
  48. package/dist/services/GalaChainTokenService.d.ts.map +1 -1
  49. package/dist/services/GalaChainTransferService.d.ts +42 -41
  50. package/dist/services/GalaChainTransferService.d.ts.map +1 -1
  51. package/dist/services/LaunchpadPriceService.d.ts +66 -0
  52. package/dist/services/LaunchpadPriceService.d.ts.map +1 -0
  53. package/dist/services/NftCollectionService.d.ts +22 -6
  54. package/dist/services/NftCollectionService.d.ts.map +1 -1
  55. package/dist/services/TokenResolverService.d.ts +5 -5
  56. package/dist/services/TokenResolverService.d.ts.map +1 -1
  57. package/dist/services/gateway-transport.d.ts +32 -0
  58. package/dist/services/gateway-transport.d.ts.map +1 -0
  59. package/dist/services/gateway-writes.d.ts +83 -0
  60. package/dist/services/gateway-writes.d.ts.map +1 -0
  61. package/dist/signing/index.d.ts +2 -3
  62. package/dist/signing/index.d.ts.map +1 -1
  63. package/dist/signing/signers.d.ts +7 -8
  64. package/dist/signing/signers.d.ts.map +1 -1
  65. package/dist/signing/types.d.ts +7 -10
  66. package/dist/signing/types.d.ts.map +1 -1
  67. package/dist/types/burn.dto.d.ts +4 -2
  68. package/dist/types/burn.dto.d.ts.map +1 -1
  69. package/dist/types/common.d.ts +2 -23
  70. package/dist/types/common.d.ts.map +1 -1
  71. package/dist/types/dto.d.ts +0 -5
  72. package/dist/types/dto.d.ts.map +1 -1
  73. package/dist/types/launchpad.dto.d.ts +0 -257
  74. package/dist/types/launchpad.dto.d.ts.map +1 -1
  75. package/dist/types/lock.dto.d.ts +12 -7
  76. package/dist/types/lock.dto.d.ts.map +1 -1
  77. package/dist/types/options.dto.d.ts +8 -34
  78. package/dist/types/options.dto.d.ts.map +1 -1
  79. package/dist/types/user.dto.d.ts +7 -62
  80. package/dist/types/user.dto.d.ts.map +1 -1
  81. package/dist/utils/address-formatter.d.ts +10 -2
  82. package/dist/utils/address-formatter.d.ts.map +1 -1
  83. package/dist/utils/agent-config.d.ts +9 -4
  84. package/dist/utils/agent-config.d.ts.map +1 -1
  85. package/dist/utils/auto-pagination.d.ts +6 -239
  86. package/dist/utils/auto-pagination.d.ts.map +1 -1
  87. package/dist/utils/bignumber-helpers.d.ts +3 -2
  88. package/dist/utils/bignumber-helpers.d.ts.map +1 -1
  89. package/dist/utils/delimiter-parser.d.ts +0 -13
  90. package/dist/utils/delimiter-parser.d.ts.map +1 -1
  91. package/dist/utils/error-patterns.d.ts +0 -47
  92. package/dist/utils/error-patterns.d.ts.map +1 -1
  93. package/dist/utils/error-wrapper.d.ts +5 -5
  94. package/dist/utils/errors.d.ts +0 -308
  95. package/dist/utils/errors.d.ts.map +1 -1
  96. package/dist/utils/http.d.ts +15 -3
  97. package/dist/utils/http.d.ts.map +1 -1
  98. package/dist/utils/token-format-converter.d.ts +1 -1
  99. package/dist/utils/token-parser.d.ts +6 -127
  100. package/dist/utils/token-parser.d.ts.map +1 -1
  101. package/dist/utils/token-stringification.d.ts +7 -7
  102. package/dist/utils/token-stringification.d.ts.map +1 -1
  103. package/dist/utils/tokenNameNormalizer.d.ts +2 -2
  104. package/dist/utils/tokenNormalizer.d.ts +5 -29
  105. package/dist/utils/tokenNormalizer.d.ts.map +1 -1
  106. package/dist/utils/unique-key-generator.d.ts +7 -134
  107. package/dist/utils/unique-key-generator.d.ts.map +1 -1
  108. package/dist/utils/validation-helpers.d.ts +3 -5
  109. package/dist/utils/validation-helpers.d.ts.map +1 -1
  110. package/package.json +47 -87
  111. package/dist/api/dto/BurnTokensDto.d.ts +0 -77
  112. package/dist/api/dto/BurnTokensDto.d.ts.map +0 -1
  113. package/dist/api/dto/LockTokenDto.d.ts +0 -85
  114. package/dist/api/dto/LockTokenDto.d.ts.map +0 -1
  115. package/dist/api/dto/TransferTokenDto.d.ts +0 -64
  116. package/dist/api/dto/TransferTokenDto.d.ts.map +0 -1
  117. package/dist/api/dto/UnlockTokenDto.d.ts +0 -74
  118. package/dist/api/dto/UnlockTokenDto.d.ts.map +0 -1
  119. package/dist/bridge/BridgeService.d.ts +0 -484
  120. package/dist/bridge/BridgeService.d.ts.map +0 -1
  121. package/dist/bridge/GalaConnectClient.d.ts +0 -170
  122. package/dist/bridge/GalaConnectClient.d.ts.map +0 -1
  123. package/dist/bridge/constants/index.d.ts +0 -7
  124. package/dist/bridge/constants/index.d.ts.map +0 -1
  125. package/dist/bridge/constants/tokens.d.ts +0 -212
  126. package/dist/bridge/constants/tokens.d.ts.map +0 -1
  127. package/dist/bridge/index.d.ts +0 -24
  128. package/dist/bridge/index.d.ts.map +0 -1
  129. package/dist/bridge/public-types.d.ts +0 -2
  130. package/dist/bridge/public-types.d.ts.map +0 -1
  131. package/dist/bridge/strategies/BridgeStrategy.d.ts +0 -204
  132. package/dist/bridge/strategies/BridgeStrategy.d.ts.map +0 -1
  133. package/dist/bridge/strategies/EthereumBridgeStrategy.d.ts +0 -178
  134. package/dist/bridge/strategies/EthereumBridgeStrategy.d.ts.map +0 -1
  135. package/dist/bridge/strategies/SolanaBridgeStrategy.d.ts +0 -236
  136. package/dist/bridge/strategies/SolanaBridgeStrategy.d.ts.map +0 -1
  137. package/dist/bridge/types/bridge.dto.d.ts +0 -772
  138. package/dist/bridge/types/bridge.dto.d.ts.map +0 -1
  139. package/dist/bridge/types/bridgeable-token.dto.d.ts +0 -209
  140. package/dist/bridge/types/bridgeable-token.dto.d.ts.map +0 -1
  141. package/dist/bridge/types/eip712.d.ts +0 -66
  142. package/dist/bridge/types/eip712.d.ts.map +0 -1
  143. package/dist/bridge/types/index.d.ts +0 -8
  144. package/dist/bridge/types/index.d.ts.map +0 -1
  145. package/dist/bridge/utils/RateLimiter.d.ts +0 -34
  146. package/dist/bridge/utils/RateLimiter.d.ts.map +0 -1
  147. package/dist/bridge/utils/address-formatter.d.ts +0 -25
  148. package/dist/bridge/utils/address-formatter.d.ts.map +0 -1
  149. package/dist/bridge/utils/addressValidation.d.ts +0 -200
  150. package/dist/bridge/utils/addressValidation.d.ts.map +0 -1
  151. package/dist/bridge/utils/balanceHelpers.d.ts +0 -215
  152. package/dist/bridge/utils/balanceHelpers.d.ts.map +0 -1
  153. package/dist/bridge/utils/bridgeErrors.d.ts +0 -98
  154. package/dist/bridge/utils/bridgeErrors.d.ts.map +0 -1
  155. package/dist/bridge/utils/bridgeOutHelpers.d.ts +0 -68
  156. package/dist/bridge/utils/bridgeOutHelpers.d.ts.map +0 -1
  157. package/dist/bridge/utils/bridgePayload.d.ts +0 -98
  158. package/dist/bridge/utils/bridgePayload.d.ts.map +0 -1
  159. package/dist/bridge/utils/bridgeStatusParser.d.ts +0 -76
  160. package/dist/bridge/utils/bridgeStatusParser.d.ts.map +0 -1
  161. package/dist/bridge/utils/eip712Helpers.d.ts +0 -66
  162. package/dist/bridge/utils/eip712Helpers.d.ts.map +0 -1
  163. package/dist/bridge/utils/index.d.ts +0 -19
  164. package/dist/bridge/utils/index.d.ts.map +0 -1
  165. package/dist/bridge/utils/retry.d.ts +0 -112
  166. package/dist/bridge/utils/retry.d.ts.map +0 -1
  167. package/dist/bridge/utils/strategyDelegation.d.ts +0 -126
  168. package/dist/bridge/utils/strategyDelegation.d.ts.map +0 -1
  169. package/dist/bridge/utils/tokenIdUtils.d.ts +0 -86
  170. package/dist/bridge/utils/tokenIdUtils.d.ts.map +0 -1
  171. package/dist/bridge/utils/tokenMath.d.ts +0 -39
  172. package/dist/bridge/utils/tokenMath.d.ts.map +0 -1
  173. package/dist/bridge/utils/tokenMetadataResolver.d.ts +0 -97
  174. package/dist/bridge/utils/tokenMetadataResolver.d.ts.map +0 -1
  175. package/dist/helpers/wallet.d.ts +0 -151
  176. package/dist/helpers/wallet.d.ts.map +0 -1
  177. package/dist/react/WalletContext.d.ts +0 -60
  178. package/dist/react/WalletContext.d.ts.map +0 -1
  179. package/dist/react/index.d.ts +0 -65
  180. package/dist/react/index.d.ts.map +0 -1
  181. package/dist/react/types.d.ts +0 -76
  182. package/dist/react/types.d.ts.map +0 -1
  183. package/dist/react/useWallet.d.ts +0 -123
  184. package/dist/react/useWallet.d.ts.map +0 -1
  185. package/dist/react/useWalletConnection.d.ts +0 -89
  186. package/dist/react/useWalletConnection.d.ts.map +0 -1
  187. package/dist/react/useWalletDetection.d.ts +0 -81
  188. package/dist/react/useWalletDetection.d.ts.map +0 -1
  189. package/dist/react.cjs +0 -1
  190. package/dist/react.esm.js +0 -1
  191. package/dist/services/AbstractTokenFetchService.d.ts +0 -150
  192. package/dist/services/AbstractTokenFetchService.d.ts.map +0 -1
  193. package/dist/services/BatchedCacheService.d.ts +0 -133
  194. package/dist/services/BatchedCacheService.d.ts.map +0 -1
  195. package/dist/services/BridgeableTokenCache.d.ts +0 -120
  196. package/dist/services/BridgeableTokenCache.d.ts.map +0 -1
  197. package/dist/services/BridgeableTokenService.d.ts +0 -218
  198. package/dist/services/BridgeableTokenService.d.ts.map +0 -1
  199. package/dist/services/DexService.d.ts +0 -440
  200. package/dist/services/DexService.d.ts.map +0 -1
  201. package/dist/services/NetworkKeyedCacheService.d.ts +0 -185
  202. package/dist/services/NetworkKeyedCacheService.d.ts.map +0 -1
  203. package/dist/services/PriceHistoryService.d.ts +0 -209
  204. package/dist/services/PriceHistoryService.d.ts.map +0 -1
  205. package/dist/services/WrapService.d.ts +0 -171
  206. package/dist/services/WrapService.d.ts.map +0 -1
  207. package/dist/services/WrappableTokenCache.d.ts +0 -100
  208. package/dist/services/WrappableTokenCache.d.ts.map +0 -1
  209. package/dist/services/WrappableTokenService.d.ts +0 -130
  210. package/dist/services/WrappableTokenService.d.ts.map +0 -1
  211. package/dist/setup.d.ts +0 -8
  212. package/dist/setup.d.ts.map +0 -1
  213. package/dist/tokens/transfers.d.ts +0 -95
  214. package/dist/tokens/transfers.d.ts.map +0 -1
  215. package/dist/types/galachain-api.types.d.ts +0 -297
  216. package/dist/types/galachain-api.types.d.ts.map +0 -1
  217. package/dist/types/priceHistory.dto.d.ts +0 -134
  218. package/dist/types/priceHistory.dto.d.ts.map +0 -1
  219. package/dist/types/token.types.d.ts +0 -359
  220. package/dist/types/token.types.d.ts.map +0 -1
  221. package/dist/types/wrappable-token.dto.d.ts +0 -305
  222. package/dist/types/wrappable-token.dto.d.ts.map +0 -1
  223. package/dist/utils/crypto-compat.d.ts +0 -40
  224. package/dist/utils/crypto-compat.d.ts.map +0 -1
  225. package/dist/utils/load-env.d.ts +0 -31
  226. package/dist/utils/load-env.d.ts.map +0 -1
  227. package/dist/utils/token-instance-key.d.ts +0 -57
  228. package/dist/utils/token-instance-key.d.ts.map +0 -1
  229. package/dist/utils/wallet.d.ts +0 -166
  230. package/dist/utils/wallet.d.ts.map +0 -1
  231. package/dist/wallet/ExternalWalletProvider.d.ts +0 -90
  232. package/dist/wallet/ExternalWalletProvider.d.ts.map +0 -1
  233. package/dist/wallet/GalaWalletProvider.d.ts +0 -122
  234. package/dist/wallet/GalaWalletProvider.d.ts.map +0 -1
  235. package/dist/wallet/PrivateKeyProvider.d.ts +0 -90
  236. package/dist/wallet/PrivateKeyProvider.d.ts.map +0 -1
  237. package/dist/wallet/detection.d.ts +0 -107
  238. package/dist/wallet/detection.d.ts.map +0 -1
  239. package/dist/wallet/event-handlers.d.ts +0 -50
  240. package/dist/wallet/event-handlers.d.ts.map +0 -1
  241. package/dist/wallet/index.d.ts +0 -51
  242. package/dist/wallet/index.d.ts.map +0 -1
  243. package/dist/wallet/signing-operation.d.ts +0 -19
  244. package/dist/wallet/signing-operation.d.ts.map +0 -1
  245. package/dist/wallet/typed-data-helpers.d.ts +0 -68
  246. package/dist/wallet/typed-data-helpers.d.ts.map +0 -1
  247. package/dist/wallet/types.d.ts +0 -267
  248. package/dist/wallet/types.d.ts.map +0 -1
  249. package/dist/wallet/utils.d.ts +0 -117
  250. package/dist/wallet/utils.d.ts.map +0 -1
  251. package/dist/wallet.cjs +0 -1
  252. package/dist/wallet.esm.js +0 -1
@@ -1,60 +0,0 @@
1
- /**
2
- * Wallet Context
3
- *
4
- * React context provider for managing wallet state across components.
5
- * Provides connection state, detected wallets, and actions for connecting/disconnecting.
6
- *
7
- * @packageDocumentation
8
- */
9
- import { type ReactNode } from 'react';
10
- import type { WalletContextValue, WalletProviderProps } from './types';
11
- /**
12
- * React context for wallet state
13
- */
14
- export declare const WalletContext: import("react").Context<WalletContextValue>;
15
- /**
16
- * Wallet context provider component
17
- *
18
- * Wraps your application to provide wallet state and actions to all child components.
19
- *
20
- * @example
21
- * ```tsx
22
- * import { WalletProvider, useWallet } from '@gala-chain/launchpad-sdk/react';
23
- *
24
- * function App() {
25
- * return (
26
- * <WalletProvider autoDetect onConnect={(addr) => console.log('Connected:', addr)}>
27
- * <MyApp />
28
- * </WalletProvider>
29
- * );
30
- * }
31
- *
32
- * function MyApp() {
33
- * const { isConnected, address, detectedWallets, connectDetected } = useWallet();
34
- *
35
- * if (!isConnected) {
36
- * return (
37
- * <div>
38
- * {detectedWallets.map(wallet => (
39
- * <button key={wallet.rdns} onClick={() => connectDetected(wallet)}>
40
- * Connect {wallet.name}
41
- * </button>
42
- * ))}
43
- * </div>
44
- * );
45
- * }
46
- *
47
- * return <div>Connected: {address}</div>;
48
- * }
49
- * ```
50
- */
51
- export declare function WalletProvider({ children, autoDetect, initialProvider, autoConnect, onConnect, onDisconnect, onError, }: WalletProviderProps): ReactNode;
52
- /**
53
- * Hook to access the wallet context
54
- *
55
- * Must be used within a WalletProvider.
56
- *
57
- * @throws Error if used outside of WalletProvider
58
- */
59
- export declare function useWalletContext(): WalletContextValue;
60
- //# sourceMappingURL=WalletContext.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WalletContext.d.ts","sourceRoot":"","sources":["../../src/react/WalletContext.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAEL,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AAMf,OAAO,KAAK,EAEV,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,SAAS,CAAC;AA6CjB;;GAEG;AACH,eAAO,MAAM,aAAa,6CAAyD,CAAC;AAOpF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,UAAsB,EACtB,eAAe,EACf,WAAkB,EAClB,SAAS,EACT,YAAY,EACZ,OAAO,GACR,EAAE,mBAAmB,GAAG,SAAS,CA0MjC;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,IAAI,kBAAkB,CAMrD"}
@@ -1,65 +0,0 @@
1
- /**
2
- * React Wallet Integration
3
- *
4
- * React hooks and components for wallet integration in React applications.
5
- * Provides context-based state management, wallet detection, and connection handling.
6
- *
7
- * @example
8
- * ```tsx
9
- * import {
10
- * WalletProvider,
11
- * useWallet,
12
- * useWalletConnection,
13
- * useWalletDetection,
14
- * } from '@gala-chain/launchpad-sdk/react';
15
- *
16
- * // Wrap your app with WalletProvider
17
- * function App() {
18
- * return (
19
- * <WalletProvider autoDetect>
20
- * <MyApp />
21
- * </WalletProvider>
22
- * );
23
- * }
24
- *
25
- * // Use hooks in components
26
- * function WalletButton() {
27
- * const { isConnected, address, disconnect } = useWallet();
28
- * const { wallets } = useWalletDetection();
29
- * const { connectDetected, isConnecting } = useWalletConnection();
30
- *
31
- * if (isConnected) {
32
- * return (
33
- * <button onClick={disconnect}>
34
- * {address?.slice(0, 6)}...{address?.slice(-4)}
35
- * </button>
36
- * );
37
- * }
38
- *
39
- * return (
40
- * <div>
41
- * {wallets.map(wallet => (
42
- * <button
43
- * key={wallet.rdns}
44
- * onClick={() => connectDetected(wallet)}
45
- * disabled={isConnecting}
46
- * >
47
- * <img src={wallet.icon} alt="" />
48
- * {wallet.name}
49
- * </button>
50
- * ))}
51
- * </div>
52
- * );
53
- * }
54
- * ```
55
- *
56
- * @packageDocumentation
57
- */
58
- export { useWalletContext, WalletContext, WalletProvider } from './WalletContext';
59
- export { useGalaAddress, useIsWalletConnected, useWallet, useWalletAddress, useWalletProvider, } from './useWallet';
60
- export { useWalletConnection, type UseWalletConnectionReturn } from './useWalletConnection';
61
- export { useWalletDetection, type UseWalletDetectionReturn } from './useWalletDetection';
62
- export type { ConnectionStatus, WalletContextActions, WalletContextState, WalletContextValue, WalletProviderProps, } from './types';
63
- export type { DetectedWallet, Eip6963ProviderInfo, WalletConnectionState, WalletProvider as WalletProviderInterface, } from '../wallet/types';
64
- export { detectWallets, ExternalWalletProvider, KNOWN_WALLET_RDNS, PrivateKeyProvider, } from '../wallet';
65
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AAGH,OAAO,EAAE,gBAAgB,EAAC,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGjF,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,SAAS,EACT,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,mBAAmB,EAAE,KAAK,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAG5F,OAAO,EAAE,kBAAkB,EAAE,KAAK,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAGzF,YAAY,EACV,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,cAAc,IAAI,uBAAuB,GAC1C,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,WAAW,CAAC"}
@@ -1,76 +0,0 @@
1
- /**
2
- * React Wallet Types
3
- *
4
- * Type definitions for the React wallet integration hooks and context.
5
- *
6
- * @packageDocumentation
7
- */
8
- import type { ReactNode } from 'react';
9
- import type { DetectedWallet, WalletProvider } from '../wallet/types';
10
- /**
11
- * Wallet context state
12
- */
13
- export interface WalletContextState {
14
- /** The currently connected wallet provider */
15
- provider: WalletProvider | null;
16
- /** The connected wallet address (0x format) */
17
- address: string | null;
18
- /** The connected wallet address in Gala format (eth|0x...) */
19
- galaAddress: string | null;
20
- /** Whether a wallet is currently connected */
21
- isConnected: boolean;
22
- /** Whether a connection is in progress */
23
- isConnecting: boolean;
24
- /** Whether wallets are being detected */
25
- isDetecting: boolean;
26
- /** Connection error if any */
27
- error: Error | null;
28
- /** List of detected wallets (EIP-6963) */
29
- detectedWallets: DetectedWallet[];
30
- }
31
- /**
32
- * Wallet context actions
33
- */
34
- export interface WalletContextActions {
35
- /** Connect to a wallet using a provider */
36
- connect: (provider: WalletProvider) => Promise<string>;
37
- /** Connect to a detected wallet by its info */
38
- connectDetected: (wallet: DetectedWallet) => Promise<string>;
39
- /** Disconnect from the current wallet */
40
- disconnect: () => Promise<void>;
41
- /** Set the wallet provider directly (for external state management) */
42
- setProvider: (provider: WalletProvider | null) => void;
43
- /** Refresh the list of detected wallets */
44
- refreshWallets: () => Promise<void>;
45
- /** Clear any connection error */
46
- clearError: () => void;
47
- }
48
- /**
49
- * Full wallet context value
50
- */
51
- export interface WalletContextValue extends WalletContextState, WalletContextActions {
52
- }
53
- /**
54
- * Wallet provider component props
55
- */
56
- export interface WalletProviderProps {
57
- /** Child components */
58
- children: ReactNode;
59
- /** Auto-detect wallets on mount (default: true in browser) */
60
- autoDetect?: boolean;
61
- /** Initial wallet provider to use */
62
- initialProvider?: WalletProvider;
63
- /** Auto-connect if a provider is set (default: true) */
64
- autoConnect?: boolean;
65
- /** Callback when wallet connects */
66
- onConnect?: (address: string, provider: WalletProvider) => void;
67
- /** Callback when wallet disconnects */
68
- onDisconnect?: () => void;
69
- /** Callback when an error occurs */
70
- onError?: (error: Error) => void;
71
- }
72
- /**
73
- * Connection status for useWalletConnection hook
74
- */
75
- export type ConnectionStatus = 'disconnected' | 'connecting' | 'connected' | 'error';
76
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/react/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,cAAc,EAAC,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,8CAA8C;IAC9C,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;IAEhC,+CAA+C;IAC/C,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAEvB,8DAA8D;IAC9D,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B,8CAA8C;IAC9C,WAAW,EAAE,OAAO,CAAC;IAErB,0CAA0C;IAC1C,YAAY,EAAE,OAAO,CAAC;IAEtB,yCAAyC;IACzC,WAAW,EAAE,OAAO,CAAC;IAErB,8BAA8B;IAC9B,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAEpB,0CAA0C;IAC1C,eAAe,EAAE,cAAc,EAAE,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,2CAA2C;IAC3C,OAAO,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAEvD,+CAA+C;IAC/C,eAAe,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAE7D,yCAAyC;IACzC,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhC,uEAAuE;IACvE,WAAW,EAAE,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,KAAK,IAAI,CAAC;IAEvD,2CAA2C;IAC3C,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpC,iCAAiC;IACjC,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB,EAAE,oBAAoB;CAAG;AAEvF;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,uBAAuB;IACvB,QAAQ,EAAE,SAAS,CAAC;IAEpB,8DAA8D;IAC9D,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,qCAAqC;IACrC,eAAe,CAAC,EAAE,cAAc,CAAC;IAEjC,wDAAwD;IACxD,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,oCAAoC;IACpC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAC;IAEhE,uCAAuC;IACvC,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAE1B,oCAAoC;IACpC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,cAAc,GAAG,YAAY,GAAG,WAAW,GAAG,OAAO,CAAC"}
@@ -1,123 +0,0 @@
1
- /**
2
- * useWallet Hook
3
- *
4
- * Primary hook for accessing wallet state and actions.
5
- * This is the main hook most applications will use.
6
- *
7
- * @packageDocumentation
8
- */
9
- import type { WalletProvider } from '../wallet/types';
10
- import type { WalletContextValue } from './types';
11
- /**
12
- * Hook to access the current wallet state and actions
13
- *
14
- * This is the primary hook for wallet integration. It provides:
15
- * - Current connection state (address, isConnected, etc.)
16
- * - Detected wallets list
17
- * - Actions (connect, disconnect, etc.)
18
- *
19
- * @returns The complete wallet context value
20
- *
21
- * @example
22
- * ```tsx
23
- * import { useWallet } from '@gala-chain/launchpad-sdk/react';
24
- *
25
- * function WalletButton() {
26
- * const {
27
- * isConnected,
28
- * address,
29
- * isConnecting,
30
- * error,
31
- * detectedWallets,
32
- * connectDetected,
33
- * disconnect
34
- * } = useWallet();
35
- *
36
- * if (isConnecting) {
37
- * return <button disabled>Connecting...</button>;
38
- * }
39
- *
40
- * if (isConnected) {
41
- * return (
42
- * <div>
43
- * <span>{address?.slice(0, 6)}...{address?.slice(-4)}</span>
44
- * <button onClick={disconnect}>Disconnect</button>
45
- * </div>
46
- * );
47
- * }
48
- *
49
- * return (
50
- * <div>
51
- * {error && <p style={{ color: 'red' }}>{error.message}</p>}
52
- * {detectedWallets.map(wallet => (
53
- * <button
54
- * key={wallet.rdns}
55
- * onClick={() => connectDetected(wallet)}
56
- * >
57
- * <img src={wallet.icon} alt={wallet.name} width={24} />
58
- * {wallet.name}
59
- * </button>
60
- * ))}
61
- * {detectedWallets.length === 0 && (
62
- * <p>No wallets detected. Please install a wallet extension.</p>
63
- * )}
64
- * </div>
65
- * );
66
- * }
67
- * ```
68
- */
69
- export declare function useWallet(): WalletContextValue;
70
- /**
71
- * Hook to get just the wallet address
72
- *
73
- * @returns The connected address or null
74
- *
75
- * @example
76
- * ```tsx
77
- * const address = useWalletAddress();
78
- * console.log('Connected to:', address);
79
- * ```
80
- */
81
- export declare function useWalletAddress(): string | null;
82
- /**
83
- * Hook to get the Gala-formatted address
84
- *
85
- * @returns The connected address in Gala format (eth|0x...) or null
86
- *
87
- * @example
88
- * ```tsx
89
- * const galaAddress = useGalaAddress();
90
- * // Use with SDK methods that require Gala format
91
- * sdk.fetchTokensHeld({ ownerAddress: galaAddress });
92
- * ```
93
- */
94
- export declare function useGalaAddress(): string | null;
95
- /**
96
- * Hook to check if wallet is connected
97
- *
98
- * @returns True if a wallet is connected
99
- *
100
- * @example
101
- * ```tsx
102
- * const isConnected = useIsWalletConnected();
103
- * if (isConnected) {
104
- * // Show authenticated content
105
- * }
106
- * ```
107
- */
108
- export declare function useIsWalletConnected(): boolean;
109
- /**
110
- * Hook to get the current wallet provider
111
- *
112
- * @returns The wallet provider or null
113
- *
114
- * @example
115
- * ```tsx
116
- * const provider = useWalletProvider();
117
- * if (provider) {
118
- * const signature = await provider.signMessage('Hello');
119
- * }
120
- * ```
121
- */
122
- export declare function useWalletProvider(): WalletProvider | null;
123
- //# sourceMappingURL=useWallet.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useWallet.d.ts","sourceRoot":"","sources":["../../src/react/useWallet.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAGlD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AACH,wBAAgB,SAAS,IAAI,kBAAkB,CAE9C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAGhD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,IAAI,MAAM,GAAG,IAAI,CAG9C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAG9C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,GAAG,IAAI,CAGzD"}
@@ -1,89 +0,0 @@
1
- /**
2
- * useWalletConnection Hook
3
- *
4
- * Hook for managing wallet connection lifecycle.
5
- * Provides connection actions and status tracking.
6
- *
7
- * @packageDocumentation
8
- */
9
- import type { DetectedWallet, WalletProvider } from '../wallet/types';
10
- import type { ConnectionStatus } from './types';
11
- /**
12
- * Return type for useWalletConnection
13
- */
14
- export interface UseWalletConnectionReturn {
15
- /** Current connection status */
16
- status: ConnectionStatus;
17
- /** Whether currently connecting */
18
- isConnecting: boolean;
19
- /** Whether connected to a wallet */
20
- isConnected: boolean;
21
- /** Connection error if any */
22
- error: Error | null;
23
- /** Connect to a wallet provider */
24
- connect: (provider: WalletProvider) => Promise<string>;
25
- /** Connect to a detected wallet */
26
- connectDetected: (wallet: DetectedWallet) => Promise<string>;
27
- /** Disconnect from the current wallet */
28
- disconnect: () => Promise<void>;
29
- /** Clear any connection error */
30
- clearError: () => void;
31
- }
32
- /**
33
- * Hook for managing wallet connection
34
- *
35
- * Provides a focused interface for connection management:
36
- * - Connection status tracking
37
- * - Connect/disconnect actions
38
- * - Error handling
39
- *
40
- * @returns Connection state and actions
41
- *
42
- * @example
43
- * ```tsx
44
- * import { useWalletConnection, useWalletDetection } from '@gala-chain/launchpad-sdk/react';
45
- *
46
- * function ConnectWallet() {
47
- * const { status, connect, disconnect, error, clearError } = useWalletConnection();
48
- * const { wallets } = useWalletDetection();
49
- *
50
- * const handleConnect = async (wallet) => {
51
- * try {
52
- * await connect(new ExternalWalletProvider(wallet.provider));
53
- * console.log('Connected!');
54
- * } catch (err) {
55
- * console.error('Connection failed:', err);
56
- * }
57
- * };
58
- *
59
- * switch (status) {
60
- * case 'connecting':
61
- * return <div>Connecting...</div>;
62
- *
63
- * case 'connected':
64
- * return <button onClick={disconnect}>Disconnect</button>;
65
- *
66
- * case 'error':
67
- * return (
68
- * <div>
69
- * <p>Error: {error?.message}</p>
70
- * <button onClick={clearError}>Try Again</button>
71
- * </div>
72
- * );
73
- *
74
- * default:
75
- * return (
76
- * <div>
77
- * {wallets.map(w => (
78
- * <button key={w.info.rdns} onClick={() => handleConnect(w)}>
79
- * {w.info.name}
80
- * </button>
81
- * ))}
82
- * </div>
83
- * );
84
- * }
85
- * }
86
- * ```
87
- */
88
- export declare function useWalletConnection(): UseWalletConnectionReturn;
89
- //# sourceMappingURL=useWalletConnection.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useWalletConnection.d.ts","sourceRoot":"","sources":["../../src/react/useWalletConnection.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAC,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAGhD;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,gCAAgC;IAChC,MAAM,EAAE,gBAAgB,CAAC;IAEzB,mCAAmC;IACnC,YAAY,EAAE,OAAO,CAAC;IAEtB,oCAAoC;IACpC,WAAW,EAAE,OAAO,CAAC;IAErB,8BAA8B;IAC9B,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAEpB,mCAAmC;IACnC,OAAO,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAEvD,mCAAmC;IACnC,eAAe,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAE7D,yCAAyC;IACzC,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhC,iCAAiC;IACjC,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,wBAAgB,mBAAmB,IAAI,yBAAyB,CAgC/D"}
@@ -1,81 +0,0 @@
1
- /**
2
- * useWalletDetection Hook
3
- *
4
- * Hook for detecting available browser wallets via EIP-6963.
5
- * Provides the list of detected wallets and detection state.
6
- *
7
- * @packageDocumentation
8
- */
9
- import type { DetectedWallet } from '../wallet/types';
10
- /**
11
- * Return type for useWalletDetection
12
- */
13
- export interface UseWalletDetectionReturn {
14
- /** List of all detected wallets */
15
- wallets: DetectedWallet[];
16
- /** Whether wallet detection is in progress */
17
- isDetecting: boolean;
18
- /** Refresh the list of detected wallets */
19
- refresh: () => Promise<void>;
20
- /** Check if a specific wallet is available by RDNS */
21
- hasWallet: (rdns: string) => boolean;
22
- /** Get a wallet by its RDNS identifier */
23
- getWallet: (rdns: string) => DetectedWallet | undefined;
24
- /** Check if MetaMask is available */
25
- hasMetaMask: boolean;
26
- /** Check if Coinbase Wallet is available */
27
- hasCoinbaseWallet: boolean;
28
- /** Check if any wallet is available */
29
- hasAnyWallet: boolean;
30
- }
31
- /**
32
- * Hook for detecting available browser wallets
33
- *
34
- * Uses EIP-6963 to discover installed wallet extensions.
35
- * Automatically updates when new wallets are detected.
36
- *
37
- * @returns Detection state and wallet list
38
- *
39
- * @example
40
- * ```tsx
41
- * import { useWalletDetection, useWalletConnection } from '@gala-chain/launchpad-sdk/react';
42
- *
43
- * function WalletSelector() {
44
- * const { wallets, isDetecting, hasAnyWallet, hasMetaMask } = useWalletDetection();
45
- * const { connectDetected } = useWalletConnection();
46
- *
47
- * if (isDetecting) {
48
- * return <div>Detecting wallets...</div>;
49
- * }
50
- *
51
- * if (!hasAnyWallet) {
52
- * return (
53
- * <div>
54
- * <p>No wallets detected.</p>
55
- * <a href="https://metamask.io/download/" target="_blank">
56
- * Install MetaMask
57
- * </a>
58
- * </div>
59
- * );
60
- * }
61
- *
62
- * return (
63
- * <div>
64
- * <h3>Select a wallet:</h3>
65
- * {wallets.map(wallet => (
66
- * <button
67
- * key={wallet.rdns}
68
- * onClick={() => connectDetected(wallet)}
69
- * style={{ display: 'flex', alignItems: 'center', gap: '8px' }}
70
- * >
71
- * <img src={wallet.icon} alt="" width={24} height={24} />
72
- * {wallet.name}
73
- * </button>
74
- * ))}
75
- * </div>
76
- * );
77
- * }
78
- * ```
79
- */
80
- export declare function useWalletDetection(): UseWalletDetectionReturn;
81
- //# sourceMappingURL=useWalletDetection.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useWalletDetection.d.ts","sourceRoot":"","sources":["../../src/react/useWalletDetection.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGtD;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,mCAAmC;IACnC,OAAO,EAAE,cAAc,EAAE,CAAC;IAE1B,8CAA8C;IAC9C,WAAW,EAAE,OAAO,CAAC;IAErB,2CAA2C;IAC3C,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7B,sDAAsD;IACtD,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAErC,0CAA0C;IAC1C,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,cAAc,GAAG,SAAS,CAAC;IAExD,qCAAqC;IACrC,WAAW,EAAE,OAAO,CAAC;IAErB,4CAA4C;IAC5C,iBAAiB,EAAE,OAAO,CAAC;IAE3B,uCAAuC;IACvC,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,wBAAgB,kBAAkB,IAAI,wBAAwB,CAkD7D"}
package/dist/react.cjs DELETED
@@ -1 +0,0 @@
1
- "use strict";var e=require("react/jsx-runtime"),t=require("react"),n=require("ethers");const r={METAMASK:"io.metamask",METAMASK_FLASK:"io.metamask.flask",COINBASE:"com.coinbase.wallet",TRUST_WALLET:"com.trustwallet.app",PHANTOM:"app.phantom",RAINBOW:"me.rainbow",OKX:"com.okex.wallet",RABBY:"io.rabby",BRAVE:"com.brave.wallet",FRAME:"sh.frame",LEDGER:"com.ledger",ZERION:"io.zerion.wallet",GALA:"com.gala.wallet"},s={[r.METAMASK]:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIxLjU0IDQuMjJsLTguMzQgNi4yMSAxLjU0LTMuNjUtLTUuNTMtMi41MXoiIGZpbGw9IiNFMjc2MUIiLz48L3N2Zz4=",[r.GALA]:"data:image/png;base64,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"};function o(){return"undefined"!=typeof window&&"function"==typeof window.dispatchEvent}function i(e){return"object"==typeof e&&null!==e&&"function"==typeof e.request}async function a(e=500){const t=[],n=new Map;return o()?new Promise(a=>{const d=new Set,c=e=>{const r=e,{info:o,provider:i}=r.detail;if(d.has(o.uuid))return;d.add(o.uuid);const a={id:o.rdns||o.uuid,name:o.name,rdns:o.rdns||o.uuid,icon:o.icon??s[o.rdns||""]??"",provider:i,isInjected:!1};t.push(a),n.set(a.id,a)};window.addEventListener("eip6963:announceProvider",c),window.dispatchEvent(new Event("eip6963:requestProvider")),setTimeout(()=>{if(window.removeEventListener("eip6963:announceProvider",c),0===t.length){const e=o()?window.ethereum??null:null;if(e){const o=window;let i="Browser Wallet",a="injected";o.ethereum?.isMetaMask?(i="MetaMask",a=r.METAMASK):o.ethereum?.isCoinbaseWallet?(i="Coinbase Wallet",a=r.COINBASE):o.ethereum?.isTrust&&(i="Trust Wallet",a=r.TRUST_WALLET);const d={id:a,name:i,rdns:a,icon:s[a]??"",provider:e,isInjected:!0};t.push(d),n.set(d.id,d)}}if(!n.has(r.TRUST_WALLET)){const e=function(){if(!o())return null;const e=window;if(i(e.ethereum)&&e.ethereum.isTrust)return e.ethereum;const t=e.ethereum?.providers?.find(e=>i(e)&&!0===e.isTrust);return void 0!==t?t:i(e.trustwallet)?e.trustwallet:null}();if(null!==e&&!t.some(t=>t.provider===e)){const o={id:r.TRUST_WALLET,name:"Trust Wallet",rdns:r.TRUST_WALLET,icon:s[r.TRUST_WALLET]??"",provider:e,isInjected:!0};t.push(o),n.set(o.id,o)}}const e=window;if(e.gala?.request&&!n.has(r.GALA)){const o={id:r.GALA,name:"Gala Wallet",rdns:r.GALA,icon:s[r.GALA]??"",provider:e.gala,isInjected:!0};t.push(o),n.set(o.id,o)}a({wallets:t,byId:n,hasWallets:t.length>0,...void 0===t[0]?{}:{primary:t[0]}})},e)}):{wallets:t,byId:n,hasWallets:!1}}function d(e,t,n){return{types:{EIP712Domain:c(e),...t},primaryType:Object.keys(t)[0],domain:l(e),message:n}}function c(e){const t=[];return void 0!==e.name&&t.push({name:"name",type:"string"}),void 0!==e.version&&t.push({name:"version",type:"string"}),void 0!==e.chainId&&t.push({name:"chainId",type:"uint256"}),void 0!==e.verifyingContract&&t.push({name:"verifyingContract",type:"address"}),void 0!==e.salt&&t.push({name:"salt",type:"bytes32"}),t}function l(e){const t={};return void 0!==e.name&&(t.name=e.name),void 0!==e.version&&(t.version=e.version),void 0!==e.chainId&&(t.chainId="bigint"==typeof e.chainId||"number"==typeof e.chainId?`0x${e.chainId.toString(16)}`:e.chainId),void 0!==e.verifyingContract&&(t.verifyingContract=e.verifyingContract),void 0!==e.salt&&(t.salt=e.salt),t}function u(e){return`0x${Buffer.from(e,"utf8").toString("hex")}`}async function h(e,t,n){return e.request({method:"personal_sign",params:[u(n),t]})}async function A(e,t,n,r,s){return e.request({method:"eth_signTypedData_v4",params:[t,JSON.stringify(d(n,r,s))]})}class w{constructor(e){this.connectedAddress=null,this.provider=e,this.eventHandlers=function(e,t,r){if(null==e||"function"!=typeof e.on)return{accountsChanged:null,disconnect:null};const s=e=>{const r=e[0];t(void 0===r?null:n.getAddress(r))},o=()=>r();return e.on("accountsChanged",s),e.on("disconnect",o),{accountsChanged:s,disconnect:o}}(e,e=>{this.connectedAddress=e},()=>{this.connectedAddress=null})}removeEventListeners(){!function(e,t){if("function"!=typeof e.removeListener)return;null!==t.accountsChanged&&e.removeListener("accountsChanged",t.accountsChanged);null!==t.disconnect&&e.removeListener("disconnect",t.disconnect)}(this.provider,this.eventHandlers)}}class v extends Error{constructor(e,t,n){super(e),this.code=t,this.originalError=n,this.name="WalletProviderError"}}var E;async function g(e,t,n){try{return await e()}catch(e){if(e instanceof v)throw e;return t(e,n)}}!function(e){e.USER_REJECTED="USER_REJECTED",e.NOT_CONNECTED="NOT_CONNECTED",e.CONNECTION_FAILED="CONNECTION_FAILED",e.SIGNING_FAILED="SIGNING_FAILED",e.PROVIDER_NOT_AVAILABLE="PROVIDER_NOT_AVAILABLE",e.PRIVATE_KEY_NOT_ACCESSIBLE="PRIVATE_KEY_NOT_ACCESSIBLE",e.INVALID_CONFIG="INVALID_CONFIG",e.CHAIN_MISMATCH="CHAIN_MISMATCH",e.UNKNOWN="UNKNOWN"}(E||(E={}));const p=4001,f=4100,m=4900,y=4901;class N extends w{constructor(e){if(super(e),this.providerType="external",null==e)throw new v("EIP-1193 provider is required",E.INVALID_CONFIG)}handleProviderError(e,t){const n=e;if(n.code===p)throw new v(`User rejected ${t}`,E.USER_REJECTED,e instanceof Error?e:void 0);if(n.code===f)throw new v("Wallet is not authorized",E.NOT_CONNECTED,e instanceof Error?e:void 0);if(n.code===m||n.code===y)throw this.connectedAddress=null,new v("Wallet disconnected",E.NOT_CONNECTED,e instanceof Error?e:void 0);throw new v(n.message??`${t} failed`,t.includes("sign")?E.SIGNING_FAILED:E.UNKNOWN,e instanceof Error?e:void 0)}ensureConnected(){if(!this.connectedAddress)throw new v("Wallet is not connected. Call connect() first.",E.NOT_CONNECTED)}async connect(){try{const e=await this.provider.request({method:"eth_requestAccounts"});if(null==e||0===e.length)throw new v("No accounts returned from wallet",E.CONNECTION_FAILED);const t=e[0];if(void 0===t)throw new v("No accounts returned from wallet",E.CONNECTION_FAILED);return this.connectedAddress=n.getAddress(t),this.connectedAddress}catch(e){if(e instanceof v)throw e;return this.handleProviderError(e,"connect")}}async disconnect(){this.connectedAddress=null,this.removeEventListeners();try{await this.provider.request({method:"wallet_revokePermissions",params:[{eth_accounts:{}}]})}catch{}}isConnected(){return null!==this.connectedAddress}async signMessage(e){return this.ensureConnected(),g(()=>h(this.provider,this.connectedAddress,e),(e,t)=>this.handleProviderError(e,t),"sign message")}async signTypedData(e,t,n){return this.ensureConnected(),g(()=>A(this.provider,this.connectedAddress,e,t,n),(e,t)=>this.handleProviderError(e,t),"sign typed data")}async getAddress(){await Promise.resolve(),this.ensureConnected();const e=this.connectedAddress;if(null==e)throw new v("Wallet is not connected",E.NOT_CONNECTED);return e}async getGalaAddress(){return`eth|${(await this.getAddress()).slice(2)}`}async getPrivateKey(){return Promise.reject(new v("Private key is not accessible with external wallet providers. Use PrivateKeyProvider if you need private key access for @gala-chain operations.",E.PRIVATE_KEY_NOT_ACCESSIBLE))}getProvider(){return this.provider}}class C extends w{constructor(e){if(super(e),this.providerType="external",this.galaRawAddress=null,!e)throw new v("Gala Wallet provider is required",E.PROVIDER_NOT_AVAILABLE)}parseGalaError(e){if(e instanceof Error)try{const t=JSON.parse(e.message);if("object"==typeof t&&null!==t){const n=t,r={message:"string"==typeof n.message?n.message:e.message};return"number"==typeof n.code&&(r.code=n.code),r}return{message:e.message}}catch{return{message:e.message}}return{message:String(e)}}handleProviderError(e,t){const n=this.parseGalaError(e);if(4001===n.code)throw new v(`User rejected ${t}`,E.USER_REJECTED,e instanceof Error?e:void 0);if(4900===n.code)throw this.connectedAddress=null,new v("Wallet disconnected",E.NOT_CONNECTED,e instanceof Error?e:void 0);const r=n.message?n.message:`${t} failed`;throw new v(r,t.includes("sign")?E.SIGNING_FAILED:E.UNKNOWN,e instanceof Error?e:void 0)}ensureConnected(){if(null===this.connectedAddress||void 0===this.connectedAddress)throw new v("Wallet is not connected. Call connect() first.",E.NOT_CONNECTED)}async connect(){try{const e=await this.provider.request({method:"eth_requestAccounts"});if(null==e||0===e.length)throw new v("No accounts returned from Gala Wallet",E.CONNECTION_FAILED);const t=e[0];if(void 0===t)throw new v("No accounts returned from Gala Wallet",E.CONNECTION_FAILED);this.galaRawAddress=t;let r=t;return r.startsWith("eth|")?r=`0x${r.slice(4)}`:r.startsWith("0x")||(r=`0x${r}`),this.connectedAddress=n.getAddress(r),this.connectedAddress}catch(e){if(e instanceof v)throw e;return this.handleProviderError(e,"connect")}}async disconnect(){this.connectedAddress=null,this.galaRawAddress=null,this.removeEventListeners();try{await this.provider.disconnect()}catch{}}isConnected(){return null!==this.connectedAddress}async signMessage(e){return this.ensureConnected(),g(async()=>(await this.provider.setAddress(this.galaRawAddress??this.connectedAddress),h(this.provider,this.connectedAddress,e)),(e,t)=>this.handleProviderError(e,t),"sign message")}async signTypedData(e,t,n){return this.ensureConnected(),g(async()=>(await this.provider.setAddress(this.galaRawAddress??this.connectedAddress),A(this.provider,this.connectedAddress,e,t,n)),(e,t)=>this.handleProviderError(e,t),"sign typed data")}getAddress(){return this.ensureConnected(),Promise.resolve(this.connectedAddress)}async getGalaAddress(){return`eth|${(await this.getAddress()).slice(2)}`}getPrivateKey(){throw new v("Private key is not accessible with Gala Wallet. Use PrivateKeyProvider if you need private key access for @gala-chain operations.",E.PRIVATE_KEY_NOT_ACCESSIBLE)}getProvider(){return this.provider}}const I={provider:null,address:null,galaAddress:null,isConnected:!1,isConnecting:!1,isDetecting:!1,error:null,detectedWallets:[],connect:async()=>{throw new Error("WalletContext not initialized")},connectDetected:async()=>{throw new Error("WalletContext not initialized")},disconnect:async()=>{throw new Error("WalletContext not initialized")},setProvider:()=>{throw new Error("WalletContext not initialized")},refreshWallets:async()=>{throw new Error("WalletContext not initialized")},clearError:()=>{throw new Error("WalletContext not initialized")}},L=t.createContext(I),T="undefined"!=typeof window;function W(){const e=t.useContext(L);if(e===I)throw new Error("useWalletContext must be used within a WalletProvider");return e}class D{constructor(e){this.providerType="privateKey",this.connected=!0;try{this.wallet=new n.Wallet(e)}catch(e){throw new v("Invalid private key provided",E.INVALID_CONFIG,e instanceof Error?e:void 0)}}static fromWallet(e){return new D(e.privateKey)}async signMessage(e){try{return await this.wallet.signMessage(e)}catch(e){throw new v("Failed to sign message",E.SIGNING_FAILED,e instanceof Error?e:void 0)}}async signTypedData(e,t,n){try{return await this.wallet.signTypedData(e,t,n)}catch(e){throw new v("Failed to sign typed data",E.SIGNING_FAILED,e instanceof Error?e:void 0)}}getAddress(){return Promise.resolve(n.getAddress(this.wallet.address))}async getGalaAddress(){return`eth|${(await this.getAddress()).slice(2)}`}async connect(){return this.connected=!0,this.getAddress()}disconnect(){return this.connected=!1,Promise.resolve()}isConnected(){return this.connected}getPrivateKey(){return Promise.resolve(this.wallet.privateKey)}getWallet(){return this.wallet}}exports.ExternalWalletProvider=N,exports.KNOWN_WALLET_RDNS=r,exports.PrivateKeyProvider=D,exports.WalletContext=L,exports.WalletProvider=function({children:n,autoDetect:s=T,initialProvider:i,autoConnect:d=!0,onConnect:c,onDisconnect:l,onError:u}){const[h,A]=t.useState(i??null),[w,v]=t.useState(null),[E,g]=t.useState(null),[p,f]=t.useState(!1),[m,y]=t.useState(!1),[I,W]=t.useState(null),[D,O]=t.useState([]),S=null!==h&&null!==w,M=t.useCallback(()=>{W(null)},[]),P=t.useCallback(e=>{A(e),e||(v(null),g(null))},[]),G=t.useCallback(async e=>{f(!0),W(null);try{e.isConnected()||await e.connect();const t=await e.getAddress(),n=await e.getGalaAddress();return A(e),v(t),g(n),c?.(t,e),t}catch(e){const t=e instanceof Error?e:new Error(String(e));throw W(t),u?.(t),t}finally{f(!1)}},[c,u]),x=t.useCallback(async e=>{if(e.rdns===r.GALA){const t=new C(e.provider);return G(t)}const t=new N(e.provider);return G(t)},[G]),R=t.useCallback(async()=>{if(h)try{await h.disconnect()}catch{}A(null),v(null),g(null),W(null),l?.()},[h,l]),b=t.useCallback(async()=>{if(T){y(!0);try{let e=[...(await a()).wallets];const t=window;if(void 0!==t.gala&&!e.some(e=>e.rdns===r.GALA)){e=[{id:r.GALA,name:"Gala Wallet",rdns:r.GALA,icon:"",provider:t.gala,isInjected:!0},...e]}O(e)}catch{O([])}finally{y(!1)}}},[]);t.useEffect(()=>{if(!s||!T)return;b();const e=function(e){if(!o())return()=>{};let t=!0,n={wallets:[],byId:new Map,hasWallets:!1};const r=r=>{if(!t)return;const s=r,{info:o,provider:i}=s.detail,a=o.rdns||o.uuid;if(n.byId.has(a))return;const d={id:a,name:o.name,rdns:a,icon:o.icon??"",provider:i,isInjected:!1},c=[...n.wallets,d],l=new Map(n.byId);l.set(d.id,d),n={wallets:c,byId:l,hasWallets:!0,...void 0===c[0]?{}:{primary:c[0]}},e(n)};return window.addEventListener("eip6963:announceProvider",r),a().then(r=>{t&&(n=r,e(r))}),()=>{t=!1,window.removeEventListener("eip6963:announceProvider",r)}}(e=>{O(e.wallets)});return()=>{e()}},[s,b]),t.useEffect(()=>{i&&d&&!S&&!p&&G(i)},[i,d,S,p,G]);const U=t.useMemo(()=>({provider:h,address:w,galaAddress:E,isConnected:S,isConnecting:p,isDetecting:m,error:I,detectedWallets:D,connect:G,connectDetected:x,disconnect:R,setProvider:P,refreshWallets:b,clearError:M}),[h,w,E,S,p,m,I,D,G,x,R,P,b,M]);return e.jsx(L.Provider,{value:U,children:n})},exports.detectWallets=a,exports.useGalaAddress=function(){const{galaAddress:e}=W();return e},exports.useIsWalletConnected=function(){const{isConnected:e}=W();return e},exports.useWallet=function(){return W()},exports.useWalletAddress=function(){const{address:e}=W();return e},exports.useWalletConnection=function(){const{isConnecting:e,isConnected:n,error:r,connect:s,connectDetected:o,disconnect:i,clearError:a}=W(),d=t.useMemo(()=>e?"connecting":r?"error":n?"connected":"disconnected",[e,r,n]);return t.useMemo(()=>({status:d,isConnecting:e,isConnected:n,error:r,connect:s,connectDetected:o,disconnect:i,clearError:a}),[d,e,n,r,s,o,i,a])},exports.useWalletContext=W,exports.useWalletDetection=function(){const{detectedWallets:e,isDetecting:n,refreshWallets:s}=W(),o=t.useMemo(()=>t=>e.some(e=>e.rdns===t),[e]),i=t.useMemo(()=>t=>e.find(e=>e.rdns===t),[e]),a=t.useMemo(()=>e.some(e=>e.rdns===r.METAMASK),[e]),d=t.useMemo(()=>e.some(e=>e.rdns===r.COINBASE),[e]),c=e.length>0;return t.useMemo(()=>({wallets:e,isDetecting:n,refresh:s,hasWallet:o,getWallet:i,hasMetaMask:a,hasCoinbaseWallet:d,hasAnyWallet:c}),[e,n,s,o,i,a,d,c])},exports.useWalletProvider=function(){const{provider:e}=W();return e};
package/dist/react.esm.js DELETED
@@ -1 +0,0 @@
1
- if(void 0===globalThis.process&&(globalThis.process={env:{},versions:{},platform:"browser"}),void 0===globalThis.Buffer){var e=function(e){return"number"==typeof e||ArrayBuffer,new Uint8Array(e)};e.isBuffer=function(){return!1},e.from=function(e,n){if("string"==typeof e){if("hex"===n){var t=(e.match(/.{1,2}/g)||[]).map(function(e){return parseInt(e,16)});return new Uint8Array(t)}return(new TextEncoder).encode(e)}return e instanceof ArrayBuffer?new Uint8Array(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(e)},e.alloc=function(e){return new Uint8Array(e)},e.concat=function(e){for(var n=0,t=0;t<e.length;t++)n+=e[t].length;for(var r=new Uint8Array(n),s=0,i=0;i<e.length;i++)r.set(e[i],s),s+=e[i].length;return r},e.prototype=Object.create(Uint8Array.prototype),globalThis.Buffer=e}import{jsx as n}from"react/jsx-runtime";import{createContext as t,useState as r,useCallback as s,useEffect as i,useMemo as o,useContext as a}from"react";import{getAddress as c,Wallet as d}from"ethers";const l={METAMASK:"io.metamask",METAMASK_FLASK:"io.metamask.flask",COINBASE:"com.coinbase.wallet",TRUST_WALLET:"com.trustwallet.app",PHANTOM:"app.phantom",RAINBOW:"me.rainbow",OKX:"com.okex.wallet",RABBY:"io.rabby",BRAVE:"com.brave.wallet",FRAME:"sh.frame",LEDGER:"com.ledger",ZERION:"io.zerion.wallet",GALA:"com.gala.wallet"},u={[l.METAMASK]:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIxLjU0IDQuMjJsLTguMzQgNi4yMSAxLjU0LTMuNjUtLTUuNTMtMi41MXoiIGZpbGw9IiNFMjc2MUIiLz48L3N2Zz4=",[l.GALA]:"data:image/png;base64,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"};function h(){return"undefined"!=typeof window&&"function"==typeof window.dispatchEvent}function A(e){return"object"==typeof e&&null!==e&&"function"==typeof e.request}async function w(e=500){const n=[],t=new Map;return h()?new Promise(r=>{const s=new Set,i=e=>{const r=e,{info:i,provider:o}=r.detail;if(s.has(i.uuid))return;s.add(i.uuid);const a={id:i.rdns||i.uuid,name:i.name,rdns:i.rdns||i.uuid,icon:i.icon??u[i.rdns||""]??"",provider:o,isInjected:!1};n.push(a),t.set(a.id,a)};window.addEventListener("eip6963:announceProvider",i),window.dispatchEvent(new Event("eip6963:requestProvider")),setTimeout(()=>{if(window.removeEventListener("eip6963:announceProvider",i),0===n.length){const e=h()?window.ethereum??null:null;if(e){const r=window;let s="Browser Wallet",i="injected";r.ethereum?.isMetaMask?(s="MetaMask",i=l.METAMASK):r.ethereum?.isCoinbaseWallet?(s="Coinbase Wallet",i=l.COINBASE):r.ethereum?.isTrust&&(s="Trust Wallet",i=l.TRUST_WALLET);const o={id:i,name:s,rdns:i,icon:u[i]??"",provider:e,isInjected:!0};n.push(o),t.set(o.id,o)}}if(!t.has(l.TRUST_WALLET)){const e=function(){if(!h())return null;const e=window;if(A(e.ethereum)&&e.ethereum.isTrust)return e.ethereum;const n=e.ethereum?.providers?.find(e=>A(e)&&!0===e.isTrust);return void 0!==n?n:A(e.trustwallet)?e.trustwallet:null}();if(null!==e&&!n.some(n=>n.provider===e)){const r={id:l.TRUST_WALLET,name:"Trust Wallet",rdns:l.TRUST_WALLET,icon:u[l.TRUST_WALLET]??"",provider:e,isInjected:!0};n.push(r),t.set(r.id,r)}}const e=window;if(e.gala?.request&&!t.has(l.GALA)){const r={id:l.GALA,name:"Gala Wallet",rdns:l.GALA,icon:u[l.GALA]??"",provider:e.gala,isInjected:!0};n.push(r),t.set(r.id,r)}r({wallets:n,byId:t,hasWallets:n.length>0,...void 0===n[0]?{}:{primary:n[0]}})},e)}):{wallets:n,byId:t,hasWallets:!1}}function f(e,n,t){return{types:{EIP712Domain:v(e),...n},primaryType:Object.keys(n)[0],domain:g(e),message:t}}function v(e){const n=[];return void 0!==e.name&&n.push({name:"name",type:"string"}),void 0!==e.version&&n.push({name:"version",type:"string"}),void 0!==e.chainId&&n.push({name:"chainId",type:"uint256"}),void 0!==e.verifyingContract&&n.push({name:"verifyingContract",type:"address"}),void 0!==e.salt&&n.push({name:"salt",type:"bytes32"}),n}function g(e){const n={};return void 0!==e.name&&(n.name=e.name),void 0!==e.version&&(n.version=e.version),void 0!==e.chainId&&(n.chainId="bigint"==typeof e.chainId||"number"==typeof e.chainId?`0x${e.chainId.toString(16)}`:e.chainId),void 0!==e.verifyingContract&&(n.verifyingContract=e.verifyingContract),void 0!==e.salt&&(n.salt=e.salt),n}function E(e){return`0x${Buffer.from(e,"utf8").toString("hex")}`}async function p(e,n,t){return e.request({method:"personal_sign",params:[E(t),n]})}async function y(e,n,t,r,s){return e.request({method:"eth_signTypedData_v4",params:[n,JSON.stringify(f(t,r,s))]})}class m{constructor(e){this.connectedAddress=null,this.provider=e,this.eventHandlers=function(e,n,t){if(null==e||"function"!=typeof e.on)return{accountsChanged:null,disconnect:null};const r=e=>{const t=e[0];n(void 0===t?null:c(t))},s=()=>t();return e.on("accountsChanged",r),e.on("disconnect",s),{accountsChanged:r,disconnect:s}}(e,e=>{this.connectedAddress=e},()=>{this.connectedAddress=null})}removeEventListeners(){!function(e,n){if("function"!=typeof e.removeListener)return;null!==n.accountsChanged&&e.removeListener("accountsChanged",n.accountsChanged);null!==n.disconnect&&e.removeListener("disconnect",n.disconnect)}(this.provider,this.eventHandlers)}}class N extends Error{constructor(e,n,t){super(e),this.code=n,this.originalError=t,this.name="WalletProviderError"}}var I;async function C(e,n,t){try{return await e()}catch(e){if(e instanceof N)throw e;return n(e,t)}}!function(e){e.USER_REJECTED="USER_REJECTED",e.NOT_CONNECTED="NOT_CONNECTED",e.CONNECTION_FAILED="CONNECTION_FAILED",e.SIGNING_FAILED="SIGNING_FAILED",e.PROVIDER_NOT_AVAILABLE="PROVIDER_NOT_AVAILABLE",e.PRIVATE_KEY_NOT_ACCESSIBLE="PRIVATE_KEY_NOT_ACCESSIBLE",e.INVALID_CONFIG="INVALID_CONFIG",e.CHAIN_MISMATCH="CHAIN_MISMATCH",e.UNKNOWN="UNKNOWN"}(I||(I={}));const L=4001,T=4100,O=4900,D=4901;class S extends m{constructor(e){if(super(e),this.providerType="external",null==e)throw new N("EIP-1193 provider is required",I.INVALID_CONFIG)}handleProviderError(e,n){const t=e;if(t.code===L)throw new N(`User rejected ${n}`,I.USER_REJECTED,e instanceof Error?e:void 0);if(t.code===T)throw new N("Wallet is not authorized",I.NOT_CONNECTED,e instanceof Error?e:void 0);if(t.code===O||t.code===D)throw this.connectedAddress=null,new N("Wallet disconnected",I.NOT_CONNECTED,e instanceof Error?e:void 0);throw new N(t.message??`${n} failed`,n.includes("sign")?I.SIGNING_FAILED:I.UNKNOWN,e instanceof Error?e:void 0)}ensureConnected(){if(!this.connectedAddress)throw new N("Wallet is not connected. Call connect() first.",I.NOT_CONNECTED)}async connect(){try{const e=await this.provider.request({method:"eth_requestAccounts"});if(null==e||0===e.length)throw new N("No accounts returned from wallet",I.CONNECTION_FAILED);const n=e[0];if(void 0===n)throw new N("No accounts returned from wallet",I.CONNECTION_FAILED);return this.connectedAddress=c(n),this.connectedAddress}catch(e){if(e instanceof N)throw e;return this.handleProviderError(e,"connect")}}async disconnect(){this.connectedAddress=null,this.removeEventListeners();try{await this.provider.request({method:"wallet_revokePermissions",params:[{eth_accounts:{}}]})}catch{}}isConnected(){return null!==this.connectedAddress}async signMessage(e){return this.ensureConnected(),C(()=>p(this.provider,this.connectedAddress,e),(e,n)=>this.handleProviderError(e,n),"sign message")}async signTypedData(e,n,t){return this.ensureConnected(),C(()=>y(this.provider,this.connectedAddress,e,n,t),(e,n)=>this.handleProviderError(e,n),"sign typed data")}async getAddress(){await Promise.resolve(),this.ensureConnected();const e=this.connectedAddress;if(null==e)throw new N("Wallet is not connected",I.NOT_CONNECTED);return e}async getGalaAddress(){return`eth|${(await this.getAddress()).slice(2)}`}async getPrivateKey(){return Promise.reject(new N("Private key is not accessible with external wallet providers. Use PrivateKeyProvider if you need private key access for @gala-chain operations.",I.PRIVATE_KEY_NOT_ACCESSIBLE))}getProvider(){return this.provider}}class W extends m{constructor(e){if(super(e),this.providerType="external",this.galaRawAddress=null,!e)throw new N("Gala Wallet provider is required",I.PROVIDER_NOT_AVAILABLE)}parseGalaError(e){if(e instanceof Error)try{const n=JSON.parse(e.message);if("object"==typeof n&&null!==n){const t=n,r={message:"string"==typeof t.message?t.message:e.message};return"number"==typeof t.code&&(r.code=t.code),r}return{message:e.message}}catch{return{message:e.message}}return{message:String(e)}}handleProviderError(e,n){const t=this.parseGalaError(e);if(4001===t.code)throw new N(`User rejected ${n}`,I.USER_REJECTED,e instanceof Error?e:void 0);if(4900===t.code)throw this.connectedAddress=null,new N("Wallet disconnected",I.NOT_CONNECTED,e instanceof Error?e:void 0);const r=t.message?t.message:`${n} failed`;throw new N(r,n.includes("sign")?I.SIGNING_FAILED:I.UNKNOWN,e instanceof Error?e:void 0)}ensureConnected(){if(null===this.connectedAddress||void 0===this.connectedAddress)throw new N("Wallet is not connected. Call connect() first.",I.NOT_CONNECTED)}async connect(){try{const e=await this.provider.request({method:"eth_requestAccounts"});if(null==e||0===e.length)throw new N("No accounts returned from Gala Wallet",I.CONNECTION_FAILED);const n=e[0];if(void 0===n)throw new N("No accounts returned from Gala Wallet",I.CONNECTION_FAILED);this.galaRawAddress=n;let t=n;return t.startsWith("eth|")?t=`0x${t.slice(4)}`:t.startsWith("0x")||(t=`0x${t}`),this.connectedAddress=c(t),this.connectedAddress}catch(e){if(e instanceof N)throw e;return this.handleProviderError(e,"connect")}}async disconnect(){this.connectedAddress=null,this.galaRawAddress=null,this.removeEventListeners();try{await this.provider.disconnect()}catch{}}isConnected(){return null!==this.connectedAddress}async signMessage(e){return this.ensureConnected(),C(async()=>(await this.provider.setAddress(this.galaRawAddress??this.connectedAddress),p(this.provider,this.connectedAddress,e)),(e,n)=>this.handleProviderError(e,n),"sign message")}async signTypedData(e,n,t){return this.ensureConnected(),C(async()=>(await this.provider.setAddress(this.galaRawAddress??this.connectedAddress),y(this.provider,this.connectedAddress,e,n,t)),(e,n)=>this.handleProviderError(e,n),"sign typed data")}getAddress(){return this.ensureConnected(),Promise.resolve(this.connectedAddress)}async getGalaAddress(){return`eth|${(await this.getAddress()).slice(2)}`}getPrivateKey(){throw new N("Private key is not accessible with Gala Wallet. Use PrivateKeyProvider if you need private key access for @gala-chain operations.",I.PRIVATE_KEY_NOT_ACCESSIBLE)}getProvider(){return this.provider}}const M={provider:null,address:null,galaAddress:null,isConnected:!1,isConnecting:!1,isDetecting:!1,error:null,detectedWallets:[],connect:async()=>{throw new Error("WalletContext not initialized")},connectDetected:async()=>{throw new Error("WalletContext not initialized")},disconnect:async()=>{throw new Error("WalletContext not initialized")},setProvider:()=>{throw new Error("WalletContext not initialized")},refreshWallets:async()=>{throw new Error("WalletContext not initialized")},clearError:()=>{throw new Error("WalletContext not initialized")}},P=t(M),U="undefined"!=typeof window;function G({children:e,autoDetect:t=U,initialProvider:a,autoConnect:c=!0,onConnect:d,onDisconnect:u,onError:A}){const[f,v]=r(a??null),[g,E]=r(null),[p,y]=r(null),[m,N]=r(!1),[I,C]=r(!1),[L,T]=r(null),[O,D]=r([]),M=null!==f&&null!==g,G=s(()=>{T(null)},[]),b=s(e=>{v(e),e||(E(null),y(null))},[]),B=s(async e=>{N(!0),T(null);try{e.isConnected()||await e.connect();const n=await e.getAddress(),t=await e.getGalaAddress();return v(e),E(n),y(t),d?.(n,e),n}catch(e){const n=e instanceof Error?e:new Error(String(e));throw T(n),A?.(n),n}finally{N(!1)}},[d,A]),R=s(async e=>{if(e.rdns===l.GALA){const n=new W(e.provider);return B(n)}const n=new S(e.provider);return B(n)},[B]),V=s(async()=>{if(f)try{await f.disconnect()}catch{}v(null),E(null),y(null),T(null),u?.()},[f,u]),F=s(async()=>{if(U){C(!0);try{let e=[...(await w()).wallets];const n=window;if(void 0!==n.gala&&!e.some(e=>e.rdns===l.GALA)){e=[{id:l.GALA,name:"Gala Wallet",rdns:l.GALA,icon:"",provider:n.gala,isInjected:!0},...e]}D(e)}catch{D([])}finally{C(!1)}}},[]);i(()=>{if(!t||!U)return;F();const e=function(e){if(!h())return()=>{};let n=!0,t={wallets:[],byId:new Map,hasWallets:!1};const r=r=>{if(!n)return;const s=r,{info:i,provider:o}=s.detail,a=i.rdns||i.uuid;if(t.byId.has(a))return;const c={id:a,name:i.name,rdns:a,icon:i.icon??"",provider:o,isInjected:!1},d=[...t.wallets,c],l=new Map(t.byId);l.set(c.id,c),t={wallets:d,byId:l,hasWallets:!0,...void 0===d[0]?{}:{primary:d[0]}},e(t)};return window.addEventListener("eip6963:announceProvider",r),w().then(r=>{n&&(t=r,e(r))}),()=>{n=!1,window.removeEventListener("eip6963:announceProvider",r)}}(e=>{D(e.wallets)});return()=>{e()}},[t,F]),i(()=>{a&&c&&!M&&!m&&B(a)},[a,c,M,m,B]);const K=o(()=>({provider:f,address:g,galaAddress:p,isConnected:M,isConnecting:m,isDetecting:I,error:L,detectedWallets:O,connect:B,connectDetected:R,disconnect:V,setProvider:b,refreshWallets:F,clearError:G}),[f,g,p,M,m,I,L,O,B,R,V,b,F,G]);return n(P.Provider,{value:K,children:e})}function b(){const e=a(P);if(e===M)throw new Error("useWalletContext must be used within a WalletProvider");return e}function B(){return b()}function R(){const{address:e}=b();return e}function V(){const{galaAddress:e}=b();return e}function F(){const{isConnected:e}=b();return e}function K(){const{provider:e}=b();return e}function j(){const{isConnecting:e,isConnected:n,error:t,connect:r,connectDetected:s,disconnect:i,clearError:a}=b(),c=o(()=>e?"connecting":t?"error":n?"connected":"disconnected",[e,t,n]);return o(()=>({status:c,isConnecting:e,isConnected:n,error:t,connect:r,connectDetected:s,disconnect:i,clearError:a}),[c,e,n,t,r,s,i,a])}function x(){const{detectedWallets:e,isDetecting:n,refreshWallets:t}=b(),r=o(()=>n=>e.some(e=>e.rdns===n),[e]),s=o(()=>n=>e.find(e=>e.rdns===n),[e]),i=o(()=>e.some(e=>e.rdns===l.METAMASK),[e]),a=o(()=>e.some(e=>e.rdns===l.COINBASE),[e]),c=e.length>0;return o(()=>({wallets:e,isDetecting:n,refresh:t,hasWallet:r,getWallet:s,hasMetaMask:i,hasCoinbaseWallet:a,hasAnyWallet:c}),[e,n,t,r,s,i,a,c])}class Q{constructor(e){this.providerType="privateKey",this.connected=!0;try{this.wallet=new d(e)}catch(e){throw new N("Invalid private key provided",I.INVALID_CONFIG,e instanceof Error?e:void 0)}}static fromWallet(e){return new Q(e.privateKey)}async signMessage(e){try{return await this.wallet.signMessage(e)}catch(e){throw new N("Failed to sign message",I.SIGNING_FAILED,e instanceof Error?e:void 0)}}async signTypedData(e,n,t){try{return await this.wallet.signTypedData(e,n,t)}catch(e){throw new N("Failed to sign typed data",I.SIGNING_FAILED,e instanceof Error?e:void 0)}}getAddress(){return Promise.resolve(c(this.wallet.address))}async getGalaAddress(){return`eth|${(await this.getAddress()).slice(2)}`}async connect(){return this.connected=!0,this.getAddress()}disconnect(){return this.connected=!1,Promise.resolve()}isConnected(){return this.connected}getPrivateKey(){return Promise.resolve(this.wallet.privateKey)}getWallet(){return this.wallet}}export{S as ExternalWalletProvider,l as KNOWN_WALLET_RDNS,Q as PrivateKeyProvider,P as WalletContext,G as WalletProvider,w as detectWallets,V as useGalaAddress,F as useIsWalletConnected,B as useWallet,R as useWalletAddress,j as useWalletConnection,b as useWalletContext,x as useWalletDetection,K as useWalletProvider};