@spacesops/wdk-react-native-core 1.0.0-beta.40
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.
- package/README.md +551 -0
- package/dist/__mocks__/react.d.ts +40 -0
- package/dist/__mocks__/react.js +33 -0
- package/dist/__mocks__/react.js.map +1 -0
- package/dist/__mocks__/secureStorage.d.ts +26 -0
- package/dist/__mocks__/secureStorage.js +80 -0
- package/dist/__mocks__/secureStorage.js.map +1 -0
- package/dist/__tests__/hooks/useBalance.test.d.ts +6 -0
- package/dist/__tests__/hooks/useBalance.test.js +217 -0
- package/dist/__tests__/hooks/useBalance.test.js.map +1 -0
- package/dist/__tests__/hooks/useWallet.test.d.ts +6 -0
- package/dist/__tests__/hooks/useWallet.test.js +105 -0
- package/dist/__tests__/hooks/useWallet.test.js.map +1 -0
- package/dist/__tests__/hooks/useWalletManager.test.d.ts +6 -0
- package/dist/__tests__/hooks/useWalletManager.test.js +193 -0
- package/dist/__tests__/hooks/useWalletManager.test.js.map +1 -0
- package/dist/__tests__/hooks/useWdkApp.test.d.ts +6 -0
- package/dist/__tests__/hooks/useWdkApp.test.js +55 -0
- package/dist/__tests__/hooks/useWdkApp.test.js.map +1 -0
- package/dist/__tests__/hooks/useWorklet.test.d.ts +6 -0
- package/dist/__tests__/hooks/useWorklet.test.js +168 -0
- package/dist/__tests__/hooks/useWorklet.test.js.map +1 -0
- package/dist/__tests__/provider/WdkAppProvider.test.d.ts +6 -0
- package/dist/__tests__/provider/WdkAppProvider.test.js +57 -0
- package/dist/__tests__/provider/WdkAppProvider.test.js.map +1 -0
- package/dist/__tests__/services/accountService.test.d.ts +6 -0
- package/dist/__tests__/services/accountService.test.js +216 -0
- package/dist/__tests__/services/accountService.test.js.map +1 -0
- package/dist/__tests__/services/addressService.test.d.ts +6 -0
- package/dist/__tests__/services/addressService.test.js +246 -0
- package/dist/__tests__/services/addressService.test.js.map +1 -0
- package/dist/__tests__/services/balanceService.test.d.ts +6 -0
- package/dist/__tests__/services/balanceService.test.js +333 -0
- package/dist/__tests__/services/balanceService.test.js.map +1 -0
- package/dist/__tests__/services/walletSetupService.test.d.ts +6 -0
- package/dist/__tests__/services/walletSetupService.test.js +304 -0
- package/dist/__tests__/services/walletSetupService.test.js.map +1 -0
- package/dist/__tests__/services/walletSwitchingService.test.d.ts +6 -0
- package/dist/__tests__/services/walletSwitchingService.test.js +209 -0
- package/dist/__tests__/services/walletSwitchingService.test.js.map +1 -0
- package/dist/__tests__/services/workletLifecycleService.test.d.ts +6 -0
- package/dist/__tests__/services/workletLifecycleService.test.js +451 -0
- package/dist/__tests__/services/workletLifecycleService.test.js.map +1 -0
- package/dist/__tests__/setup.d.ts +7 -0
- package/dist/__tests__/setup.js +49 -0
- package/dist/__tests__/setup.js.map +1 -0
- package/dist/__tests__/storage/mmkvStorage.test.d.ts +6 -0
- package/dist/__tests__/storage/mmkvStorage.test.js +213 -0
- package/dist/__tests__/storage/mmkvStorage.test.js.map +1 -0
- package/dist/__tests__/store/walletStore.test.d.ts +4 -0
- package/dist/__tests__/store/walletStore.test.js +86 -0
- package/dist/__tests__/store/walletStore.test.js.map +1 -0
- package/dist/__tests__/store/workletStore.test.d.ts +4 -0
- package/dist/__tests__/store/workletStore.test.js +255 -0
- package/dist/__tests__/store/workletStore.test.js.map +1 -0
- package/dist/__tests__/types/hrpc.test.d.ts +4 -0
- package/dist/__tests__/types/hrpc.test.js +99 -0
- package/dist/__tests__/types/hrpc.test.js.map +1 -0
- package/dist/__tests__/utils/balanceUtils.test.d.ts +4 -0
- package/dist/__tests__/utils/balanceUtils.test.js +133 -0
- package/dist/__tests__/utils/balanceUtils.test.js.map +1 -0
- package/dist/__tests__/utils/errorHandling.test.d.ts +6 -0
- package/dist/__tests__/utils/errorHandling.test.js +119 -0
- package/dist/__tests__/utils/errorHandling.test.js.map +1 -0
- package/dist/__tests__/utils/errorUtils.test.d.ts +4 -0
- package/dist/__tests__/utils/errorUtils.test.js +133 -0
- package/dist/__tests__/utils/errorUtils.test.js.map +1 -0
- package/dist/__tests__/utils/initializationState.test.d.ts +6 -0
- package/dist/__tests__/utils/initializationState.test.js +243 -0
- package/dist/__tests__/utils/initializationState.test.js.map +1 -0
- package/dist/__tests__/utils/jsonUtils.test.d.ts +4 -0
- package/dist/__tests__/utils/jsonUtils.test.js +118 -0
- package/dist/__tests__/utils/jsonUtils.test.js.map +1 -0
- package/dist/__tests__/utils/mmkvKeyManager.test.d.ts +6 -0
- package/dist/__tests__/utils/mmkvKeyManager.test.js +158 -0
- package/dist/__tests__/utils/mmkvKeyManager.test.js.map +1 -0
- package/dist/__tests__/utils/mnemonicUtils.test.d.ts +4 -0
- package/dist/__tests__/utils/mnemonicUtils.test.js +40 -0
- package/dist/__tests__/utils/mnemonicUtils.test.js.map +1 -0
- package/dist/__tests__/utils/raceConditions.test.d.ts +6 -0
- package/dist/__tests__/utils/raceConditions.test.js +239 -0
- package/dist/__tests__/utils/raceConditions.test.js.map +1 -0
- package/dist/__tests__/utils/result.test.d.ts +4 -0
- package/dist/__tests__/utils/result.test.js +66 -0
- package/dist/__tests__/utils/result.test.js.map +1 -0
- package/dist/__tests__/utils/schemas.test.d.ts +4 -0
- package/dist/__tests__/utils/schemas.test.js +66 -0
- package/dist/__tests__/utils/schemas.test.js.map +1 -0
- package/dist/__tests__/utils/storeHelpers.test.d.ts +4 -0
- package/dist/__tests__/utils/storeHelpers.test.js +227 -0
- package/dist/__tests__/utils/storeHelpers.test.js.map +1 -0
- package/dist/__tests__/utils/typeGuards.test.d.ts +4 -0
- package/dist/__tests__/utils/typeGuards.test.js +175 -0
- package/dist/__tests__/utils/typeGuards.test.js.map +1 -0
- package/dist/__tests__/utils/validation.test.d.ts +4 -0
- package/dist/__tests__/utils/validation.test.js +126 -0
- package/dist/__tests__/utils/validation.test.js.map +1 -0
- package/dist/__tests__/utils/walletUtils.test.d.ts +4 -0
- package/dist/__tests__/utils/walletUtils.test.js +156 -0
- package/dist/__tests__/utils/walletUtils.test.js.map +1 -0
- package/dist/hooks/useBalance.d.ts +170 -0
- package/dist/hooks/useBalance.js +442 -0
- package/dist/hooks/useBalance.js.map +1 -0
- package/dist/hooks/useWallet.d.ts +43 -0
- package/dist/hooks/useWallet.js +193 -0
- package/dist/hooks/useWallet.js.map +1 -0
- package/dist/hooks/useWalletManager.d.ts +100 -0
- package/dist/hooks/useWalletManager.js +526 -0
- package/dist/hooks/useWalletManager.js.map +1 -0
- package/dist/hooks/useWdkApp.d.ts +66 -0
- package/dist/hooks/useWdkApp.js +74 -0
- package/dist/hooks/useWdkApp.js.map +1 -0
- package/dist/hooks/useWorklet.d.ts +66 -0
- package/dist/hooks/useWorklet.js +42 -0
- package/dist/hooks/useWorklet.js.map +1 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -0
- package/dist/provider/WdkAppProvider.d.ts +112 -0
- package/dist/provider/WdkAppProvider.js +558 -0
- package/dist/provider/WdkAppProvider.js.map +1 -0
- package/dist/services/accountService.d.ts +52 -0
- package/dist/services/accountService.js +119 -0
- package/dist/services/accountService.js.map +1 -0
- package/dist/services/addressService.d.ts +22 -0
- package/dist/services/addressService.js +110 -0
- package/dist/services/addressService.js.map +1 -0
- package/dist/services/balanceService.d.ts +114 -0
- package/dist/services/balanceService.js +208 -0
- package/dist/services/balanceService.js.map +1 -0
- package/dist/services/walletSetupService.d.ts +217 -0
- package/dist/services/walletSetupService.js +535 -0
- package/dist/services/walletSetupService.js.map +1 -0
- package/dist/services/walletSwitchingService.d.ts +48 -0
- package/dist/services/walletSwitchingService.js +143 -0
- package/dist/services/walletSwitchingService.js.map +1 -0
- package/dist/services/workletLifecycleService.d.ts +117 -0
- package/dist/services/workletLifecycleService.js +433 -0
- package/dist/services/workletLifecycleService.js.map +1 -0
- package/dist/storage/mmkvStorage.d.ts +44 -0
- package/dist/storage/mmkvStorage.js +348 -0
- package/dist/storage/mmkvStorage.js.map +1 -0
- package/dist/store/walletStore.d.ts +130 -0
- package/dist/store/walletStore.js +204 -0
- package/dist/store/walletStore.js.map +1 -0
- package/dist/store/workletStore.d.ts +121 -0
- package/dist/store/workletStore.js +256 -0
- package/dist/store/workletStore.js.map +1 -0
- package/dist/types/hrpc.d.ts +60 -0
- package/dist/types/hrpc.js +26 -0
- package/dist/types/hrpc.js.map +1 -0
- package/dist/types.d.ts +168 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/balanceUtils.d.ts +30 -0
- package/dist/utils/balanceUtils.js +86 -0
- package/dist/utils/balanceUtils.js.map +1 -0
- package/dist/utils/constants.d.ts +66 -0
- package/dist/utils/constants.js +73 -0
- package/dist/utils/constants.js.map +1 -0
- package/dist/utils/errorHandling.d.ts +47 -0
- package/dist/utils/errorHandling.js +54 -0
- package/dist/utils/errorHandling.js.map +1 -0
- package/dist/utils/errorUtils.d.ts +89 -0
- package/dist/utils/errorUtils.js +264 -0
- package/dist/utils/errorUtils.js.map +1 -0
- package/dist/utils/initializationState.d.ts +129 -0
- package/dist/utils/initializationState.js +220 -0
- package/dist/utils/initializationState.js.map +1 -0
- package/dist/utils/jsonUtils.d.ts +21 -0
- package/dist/utils/jsonUtils.js +67 -0
- package/dist/utils/jsonUtils.js.map +1 -0
- package/dist/utils/logger.d.ts +27 -0
- package/dist/utils/logger.js +50 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/mmkvKeyManager.d.ts +57 -0
- package/dist/utils/mmkvKeyManager.js +214 -0
- package/dist/utils/mmkvKeyManager.js.map +1 -0
- package/dist/utils/mnemonicUtils.d.ts +17 -0
- package/dist/utils/mnemonicUtils.js +28 -0
- package/dist/utils/mnemonicUtils.js.map +1 -0
- package/dist/utils/operationMutex.d.ts +69 -0
- package/dist/utils/operationMutex.js +150 -0
- package/dist/utils/operationMutex.js.map +1 -0
- package/dist/utils/result.d.ts +34 -0
- package/dist/utils/result.js +43 -0
- package/dist/utils/result.js.map +1 -0
- package/dist/utils/schemas.d.ts +365 -0
- package/dist/utils/schemas.js +152 -0
- package/dist/utils/schemas.js.map +1 -0
- package/dist/utils/storeHelpers.d.ts +112 -0
- package/dist/utils/storeHelpers.js +198 -0
- package/dist/utils/storeHelpers.js.map +1 -0
- package/dist/utils/typeGuards.d.ts +70 -0
- package/dist/utils/typeGuards.js +95 -0
- package/dist/utils/typeGuards.js.map +1 -0
- package/dist/utils/validation.d.ts +53 -0
- package/dist/utils/validation.js +152 -0
- package/dist/utils/validation.js.map +1 -0
- package/dist/utils/walletStateHelpers.d.ts +62 -0
- package/dist/utils/walletStateHelpers.js +81 -0
- package/dist/utils/walletStateHelpers.js.map +1 -0
- package/dist/utils/walletUtils.d.ts +38 -0
- package/dist/utils/walletUtils.js +87 -0
- package/dist/utils/walletUtils.js.map +1 -0
- package/package.json +79 -0
- package/src/__mocks__/react.ts +34 -0
- package/src/__mocks__/secureStorage.ts +87 -0
- package/src/__tests__/hooks/useBalance.test.ts +286 -0
- package/src/__tests__/hooks/useWallet.test.ts +122 -0
- package/src/__tests__/hooks/useWalletManager.test.ts +271 -0
- package/src/__tests__/hooks/useWdkApp.test.tsx +59 -0
- package/src/__tests__/hooks/useWorklet.test.ts +195 -0
- package/src/__tests__/provider/WdkAppProvider.test.tsx +67 -0
- package/src/__tests__/services/accountService.test.ts +337 -0
- package/src/__tests__/services/addressService.test.ts +312 -0
- package/src/__tests__/services/balanceService.test.ts +411 -0
- package/src/__tests__/services/walletSetupService.test.ts +463 -0
- package/src/__tests__/services/walletSwitchingService.test.ts +258 -0
- package/src/__tests__/services/workletLifecycleService.test.ts +514 -0
- package/src/__tests__/setup.ts +54 -0
- package/src/__tests__/storage/mmkvStorage.test.ts +325 -0
- package/src/__tests__/store/walletStore.test.ts +101 -0
- package/src/__tests__/store/workletStore.test.ts +329 -0
- package/src/__tests__/types/hrpc.test.ts +125 -0
- package/src/__tests__/utils/balanceUtils.test.ts +151 -0
- package/src/__tests__/utils/errorHandling.test.ts +147 -0
- package/src/__tests__/utils/errorUtils.test.ts +170 -0
- package/src/__tests__/utils/initializationState.test.ts +337 -0
- package/src/__tests__/utils/jsonUtils.test.ts +131 -0
- package/src/__tests__/utils/mmkvKeyManager.test.ts +205 -0
- package/src/__tests__/utils/mnemonicUtils.test.ts +48 -0
- package/src/__tests__/utils/raceConditions.test.ts +292 -0
- package/src/__tests__/utils/result.test.ts +73 -0
- package/src/__tests__/utils/schemas.test.ts +82 -0
- package/src/__tests__/utils/storeHelpers.test.ts +323 -0
- package/src/__tests__/utils/typeGuards.test.ts +209 -0
- package/src/__tests__/utils/validation.test.ts +152 -0
- package/src/__tests__/utils/walletUtils.test.ts +195 -0
- package/src/hooks/useBalance.ts +597 -0
- package/src/hooks/useWallet.ts +288 -0
- package/src/hooks/useWalletManager.ts +654 -0
- package/src/hooks/useWdkApp.ts +78 -0
- package/src/hooks/useWorklet.ts +109 -0
- package/src/index.ts +112 -0
- package/src/provider/WdkAppProvider.tsx +764 -0
- package/src/services/accountService.ts +134 -0
- package/src/services/addressService.ts +125 -0
- package/src/services/balanceService.ts +291 -0
- package/src/services/walletSetupService.ts +695 -0
- package/src/services/walletSwitchingService.ts +157 -0
- package/src/services/workletLifecycleService.ts +561 -0
- package/src/storage/mmkvStorage.ts +417 -0
- package/src/store/walletStore.ts +301 -0
- package/src/store/workletStore.ts +340 -0
- package/src/types/hrpc.ts +78 -0
- package/src/types.ts +188 -0
- package/src/utils/balanceUtils.ts +96 -0
- package/src/utils/constants.ts +84 -0
- package/src/utils/errorHandling.md +163 -0
- package/src/utils/errorHandling.ts +61 -0
- package/src/utils/errorUtils.ts +300 -0
- package/src/utils/initializationState.ts +242 -0
- package/src/utils/jsonUtils.ts +75 -0
- package/src/utils/logger.ts +54 -0
- package/src/utils/mmkvKeyManager.ts +256 -0
- package/src/utils/mnemonicUtils.ts +35 -0
- package/src/utils/operationMutex.ts +181 -0
- package/src/utils/result.ts +57 -0
- package/src/utils/schemas.ts +190 -0
- package/src/utils/storeHelpers.ts +236 -0
- package/src/utils/typeGuards.ts +129 -0
- package/src/utils/validation.ts +174 -0
- package/src/utils/walletStateHelpers.ts +104 -0
- package/src/utils/walletUtils.ts +107 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* useWdkApp Hook
|
|
3
|
+
*
|
|
4
|
+
* Hook to access WdkAppProvider context for app-level initialization state.
|
|
5
|
+
* Must be used within WdkAppProvider.
|
|
6
|
+
*
|
|
7
|
+
* Purpose: Check if the app is ready and get initialization status.
|
|
8
|
+
* - Use this to check: "Is the app ready? What's the initialization status?"
|
|
9
|
+
* - For wallet operations (addresses, account methods): Use useWallet()
|
|
10
|
+
* - For wallet lifecycle (create, load, import, delete): Use useWalletManager()
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* Simple usage (most common):
|
|
14
|
+
* ```tsx
|
|
15
|
+
* import { AppStatus } from '@tetherto/wdk-react-native-core'
|
|
16
|
+
*
|
|
17
|
+
* function MyComponent() {
|
|
18
|
+
* const { status, isReady, activeWalletId, error } = useWdkApp()
|
|
19
|
+
*
|
|
20
|
+
* if (isReady) {
|
|
21
|
+
* return <AppContent walletId={activeWalletId} />
|
|
22
|
+
* }
|
|
23
|
+
*
|
|
24
|
+
* if (status === AppStatus.ERROR) {
|
|
25
|
+
* return <ErrorScreen error={error} />
|
|
26
|
+
* }
|
|
27
|
+
*
|
|
28
|
+
* return <LoadingScreen />
|
|
29
|
+
* }
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* Advanced usage (granular control):
|
|
34
|
+
* ```tsx
|
|
35
|
+
* function MyComponent() {
|
|
36
|
+
* const { workletState, walletState, activeWalletId } = useWdkApp()
|
|
37
|
+
*
|
|
38
|
+
* // Show different UI based on specific states
|
|
39
|
+
* if (workletState.isReady && walletState.status === 'not_loaded') {
|
|
40
|
+
* return <SelectWalletScreen />
|
|
41
|
+
* }
|
|
42
|
+
*
|
|
43
|
+
* if (workletState.error) {
|
|
44
|
+
* return <WorkletErrorScreen error={workletState.error} />
|
|
45
|
+
* }
|
|
46
|
+
*
|
|
47
|
+
* if (walletState.error) {
|
|
48
|
+
* return <WalletErrorScreen error={walletState.error} />
|
|
49
|
+
* }
|
|
50
|
+
*
|
|
51
|
+
* if (walletState.status === 'ready') {
|
|
52
|
+
* return <AppContent walletId={activeWalletId} />
|
|
53
|
+
* }
|
|
54
|
+
*
|
|
55
|
+
* return <LoadingScreen />
|
|
56
|
+
* }
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
|
|
60
|
+
import { useContext } from 'react'
|
|
61
|
+
|
|
62
|
+
import { WdkAppContext } from '../provider/WdkAppProvider'
|
|
63
|
+
import type { WdkAppContextValue } from '../provider/WdkAppProvider'
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Hook to access WdkAppProvider context
|
|
67
|
+
*
|
|
68
|
+
* @returns WdkApp context value with initialization state
|
|
69
|
+
* @throws Error if used outside WdkAppProvider
|
|
70
|
+
*/
|
|
71
|
+
export function useWdkApp(): WdkAppContextValue {
|
|
72
|
+
const context = useContext(WdkAppContext)
|
|
73
|
+
if (!context) {
|
|
74
|
+
throw new Error('useWdkApp must be used within WdkAppProvider')
|
|
75
|
+
}
|
|
76
|
+
return context
|
|
77
|
+
}
|
|
78
|
+
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { useShallow } from 'zustand/react/shallow'
|
|
2
|
+
|
|
3
|
+
import type { HRPC } from '@spacesops/pear-wrk-wdk'
|
|
4
|
+
import type { WorkletStartResponse } from '@spacesops/pear-wrk-wdk/types/rpc'
|
|
5
|
+
import type { Worklet } from '@spacesops/react-native-bare-kit'
|
|
6
|
+
|
|
7
|
+
import { WorkletLifecycleService } from '../services/workletLifecycleService'
|
|
8
|
+
import { getWorkletStore } from '../store/workletStore'
|
|
9
|
+
import type { NetworkConfigs } from '../types'
|
|
10
|
+
import type { WorkletStore } from '../store/workletStore'
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Hook to interact with the worklet
|
|
14
|
+
*
|
|
15
|
+
* This is the main hook that components should use to access worklet functionality.
|
|
16
|
+
*
|
|
17
|
+
* For wallet-specific operations (addresses, accounts), use `useWallet()` hook instead.
|
|
18
|
+
*
|
|
19
|
+
* The worklet automatically starts when `WdkAppProvider` loads.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```tsx
|
|
23
|
+
* const { hrpc, isInitialized, isLoading, initializeWDK, generateEntropyAndEncrypt, error } = useWorklet()
|
|
24
|
+
*
|
|
25
|
+
* useEffect(() => {
|
|
26
|
+
* if (isInitialized && !isLoading) {
|
|
27
|
+
* // Worklet is already started by WdkAppProvider
|
|
28
|
+
* const { encryptionKey, encryptedSeedBuffer } = await generateEntropyAndEncrypt(12)
|
|
29
|
+
* await initializeWDK({ encryptionKey, encryptedSeed: encryptedSeedBuffer })
|
|
30
|
+
* }
|
|
31
|
+
* }, [isInitialized, isLoading])
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export interface UseWorkletResult {
|
|
35
|
+
// State (reactive)
|
|
36
|
+
isWorkletStarted: boolean
|
|
37
|
+
isInitialized: boolean
|
|
38
|
+
isLoading: boolean
|
|
39
|
+
error: string | null
|
|
40
|
+
hrpc: HRPC | null
|
|
41
|
+
worklet: Worklet | null
|
|
42
|
+
workletStartResult: WorkletStartResponse | null
|
|
43
|
+
wdkInitResult: { status?: string | null } | null
|
|
44
|
+
encryptedSeed: string | null
|
|
45
|
+
encryptionKey: string | null
|
|
46
|
+
networkConfigs: NetworkConfigs | null
|
|
47
|
+
// Actions
|
|
48
|
+
initializeWDK: (options: { encryptionKey: string; encryptedSeed: string }) => Promise<void>
|
|
49
|
+
generateEntropyAndEncrypt: (wordCount?: 12 | 24) => Promise<{
|
|
50
|
+
encryptionKey: string
|
|
51
|
+
encryptedSeedBuffer: string
|
|
52
|
+
encryptedEntropyBuffer: string
|
|
53
|
+
}>
|
|
54
|
+
getMnemonicFromEntropy: (encryptedEntropy: string, encryptionKey: string) => Promise<{ mnemonic: string }>
|
|
55
|
+
getSeedAndEntropyFromMnemonic: (mnemonic: string) => Promise<{
|
|
56
|
+
encryptionKey: string
|
|
57
|
+
encryptedSeedBuffer: string
|
|
58
|
+
encryptedEntropyBuffer: string
|
|
59
|
+
}>
|
|
60
|
+
initializeWorklet: (options: {
|
|
61
|
+
encryptionKey: string
|
|
62
|
+
encryptedSeed: string
|
|
63
|
+
networkConfigs: NetworkConfigs
|
|
64
|
+
}) => Promise<void>
|
|
65
|
+
reset: () => void
|
|
66
|
+
clearError: () => void
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export function useWorklet(): UseWorkletResult {
|
|
70
|
+
const store = getWorkletStore()
|
|
71
|
+
|
|
72
|
+
// Subscribe to state changes
|
|
73
|
+
const selector = useShallow((state: WorkletStore) => ({
|
|
74
|
+
isWorkletStarted: state.isWorkletStarted,
|
|
75
|
+
isInitialized: state.isInitialized,
|
|
76
|
+
isLoading: state.isLoading,
|
|
77
|
+
error: state.error,
|
|
78
|
+
hrpc: state.hrpc,
|
|
79
|
+
worklet: state.worklet,
|
|
80
|
+
workletStartResult: state.workletStartResult,
|
|
81
|
+
wdkInitResult: state.wdkInitResult,
|
|
82
|
+
encryptedSeed: state.encryptedSeed,
|
|
83
|
+
encryptionKey: state.encryptionKey,
|
|
84
|
+
networkConfigs: state.networkConfigs,
|
|
85
|
+
}))
|
|
86
|
+
const workletState = store(selector)
|
|
87
|
+
|
|
88
|
+
return {
|
|
89
|
+
isWorkletStarted: workletState.isWorkletStarted,
|
|
90
|
+
isInitialized: workletState.isInitialized,
|
|
91
|
+
isLoading: workletState.isLoading,
|
|
92
|
+
error: workletState.error,
|
|
93
|
+
hrpc: workletState.hrpc,
|
|
94
|
+
worklet: workletState.worklet,
|
|
95
|
+
workletStartResult: workletState.workletStartResult,
|
|
96
|
+
wdkInitResult: workletState.wdkInitResult,
|
|
97
|
+
encryptedSeed: workletState.encryptedSeed,
|
|
98
|
+
encryptionKey: workletState.encryptionKey,
|
|
99
|
+
networkConfigs: workletState.networkConfigs,
|
|
100
|
+
initializeWDK: WorkletLifecycleService.initializeWDK,
|
|
101
|
+
generateEntropyAndEncrypt: WorkletLifecycleService.generateEntropyAndEncrypt,
|
|
102
|
+
getMnemonicFromEntropy: WorkletLifecycleService.getMnemonicFromEntropy,
|
|
103
|
+
getSeedAndEntropyFromMnemonic: WorkletLifecycleService.getSeedAndEntropyFromMnemonic,
|
|
104
|
+
initializeWorklet: WorkletLifecycleService.initializeWorklet,
|
|
105
|
+
reset: WorkletLifecycleService.reset,
|
|
106
|
+
clearError: WorkletLifecycleService.clearError,
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @tetherto/wdk-react-native-core
|
|
3
|
+
*
|
|
4
|
+
* Core functionality for React Native wallets
|
|
5
|
+
* Provides wallet management, balance fetching, and worklet operations
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
// Core Types (Network, Token, and Wallet types)
|
|
9
|
+
export type {
|
|
10
|
+
NetworkConfig,
|
|
11
|
+
NetworkConfigs,
|
|
12
|
+
TokenConfig,
|
|
13
|
+
NetworkTokens,
|
|
14
|
+
TokenConfigs,
|
|
15
|
+
Wallet,
|
|
16
|
+
WalletAddresses,
|
|
17
|
+
WalletBalances,
|
|
18
|
+
BalanceLoadingStates,
|
|
19
|
+
BalanceFetchResult,
|
|
20
|
+
TokenConfigProvider,
|
|
21
|
+
TokenHelpers,
|
|
22
|
+
WalletStore,
|
|
23
|
+
} from './types'
|
|
24
|
+
|
|
25
|
+
// HRPC Type Extensions (for extending HRPC functionality)
|
|
26
|
+
export type { ExtendedHRPC } from './types/hrpc'
|
|
27
|
+
export { isExtendedHRPC, asExtendedHRPC } from './types/hrpc'
|
|
28
|
+
|
|
29
|
+
// Provider (main entry point)
|
|
30
|
+
export { WdkAppProvider } from './provider/WdkAppProvider'
|
|
31
|
+
export type { WdkAppProviderProps, WdkAppContextValue } from './provider/WdkAppProvider'
|
|
32
|
+
|
|
33
|
+
// Hooks (public API)
|
|
34
|
+
export { useWorklet } from './hooks/useWorklet'
|
|
35
|
+
export { useWallet } from './hooks/useWallet'
|
|
36
|
+
export { useWdkApp } from './hooks/useWdkApp'
|
|
37
|
+
|
|
38
|
+
export { useWalletManager } from './hooks/useWalletManager'
|
|
39
|
+
export type { UseWalletManagerResult, WalletInfo } from './hooks/useWalletManager'
|
|
40
|
+
export { useBalance, useBalancesForWallet, useBalancesForWallets, useRefreshBalance, balanceQueryKeys } from './hooks/useBalance'
|
|
41
|
+
export type { AccountInfo } from './store/walletStore'
|
|
42
|
+
|
|
43
|
+
// Validation Utilities (for validating configs before use)
|
|
44
|
+
export {
|
|
45
|
+
validateNetworkConfigs,
|
|
46
|
+
validateTokenConfigs,
|
|
47
|
+
validateBalanceRefreshInterval,
|
|
48
|
+
validateAccountIndex,
|
|
49
|
+
validateTokenAddress,
|
|
50
|
+
} from './utils/validation'
|
|
51
|
+
|
|
52
|
+
// Zod Schemas (for runtime validation)
|
|
53
|
+
export {
|
|
54
|
+
networkConfigSchema,
|
|
55
|
+
networkConfigsSchema,
|
|
56
|
+
tokenConfigSchema,
|
|
57
|
+
tokenConfigsSchema,
|
|
58
|
+
walletAddressesSchema,
|
|
59
|
+
walletBalancesSchema,
|
|
60
|
+
accountIndexSchema,
|
|
61
|
+
networkNameSchema,
|
|
62
|
+
balanceStringSchema,
|
|
63
|
+
ethereumAddressSchema,
|
|
64
|
+
sparkAddressSchema,
|
|
65
|
+
addressSchema,
|
|
66
|
+
} from './utils/schemas'
|
|
67
|
+
|
|
68
|
+
// Type Guards (for runtime type checking)
|
|
69
|
+
export {
|
|
70
|
+
isNetworkConfigs,
|
|
71
|
+
isTokenConfigs,
|
|
72
|
+
isEthereumAddress,
|
|
73
|
+
isValidAccountIndex,
|
|
74
|
+
isValidNetworkName,
|
|
75
|
+
} from './utils/typeGuards'
|
|
76
|
+
|
|
77
|
+
// Services
|
|
78
|
+
export { WorkletLifecycleService } from './services/workletLifecycleService'
|
|
79
|
+
export { AddressService } from './services/addressService'
|
|
80
|
+
export { AccountService } from './services/accountService'
|
|
81
|
+
export { BalanceService } from './services/balanceService'
|
|
82
|
+
export { WalletSetupService } from './services/walletSetupService'
|
|
83
|
+
export { WalletSwitchingService } from './services/walletSwitchingService'
|
|
84
|
+
|
|
85
|
+
// Utility Functions
|
|
86
|
+
export { validateMnemonic } from './utils/mnemonicUtils'
|
|
87
|
+
export { convertBalanceToString, formatBalance, convertBigIntToString } from './utils/balanceUtils'
|
|
88
|
+
export { normalizeError, getErrorMessage, isErrorType, createContextualError } from './utils/errorUtils'
|
|
89
|
+
|
|
90
|
+
// Result Type (for error handling patterns)
|
|
91
|
+
export type { Result } from './utils/result'
|
|
92
|
+
export { ok, err, toResult, toResultSync } from './utils/result'
|
|
93
|
+
|
|
94
|
+
// Initialization State Machine
|
|
95
|
+
export {
|
|
96
|
+
InitializationStatus,
|
|
97
|
+
AppStatus,
|
|
98
|
+
isErrorStatus,
|
|
99
|
+
isReadyStatus,
|
|
100
|
+
isInProgressStatus,
|
|
101
|
+
isAppReadyStatus,
|
|
102
|
+
isAppInProgressStatus,
|
|
103
|
+
hasWorkletStarted,
|
|
104
|
+
canLoadWallet,
|
|
105
|
+
hasWorkletStartedApp,
|
|
106
|
+
canLoadWalletApp,
|
|
107
|
+
getStatusMessage,
|
|
108
|
+
getAppStatusMessage,
|
|
109
|
+
getWorkletStatus,
|
|
110
|
+
getCombinedStatus
|
|
111
|
+
} from './utils/initializationState'
|
|
112
|
+
|