@n1xyz/wallet-widget 0.0.34 → 0.0.35-alpha.1
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/dist/bridge-assist/cctp-solana.d.ts +33 -0
- package/dist/bridge-assist/cctp-solana.js +392 -0
- package/dist/bridge-assist/cctp-solana.js.map +1 -0
- package/dist/main.css +1 -2
- package/dist/src/adapters/evm.d.ts +39 -0
- package/dist/src/adapters/evm.js +338 -0
- package/dist/src/adapters/evm.js.map +1 -0
- package/dist/src/adapters/factory.d.ts +37 -0
- package/dist/src/adapters/factory.js +82 -0
- package/dist/src/adapters/factory.js.map +1 -0
- package/dist/src/adapters/index.d.ts +33 -0
- package/dist/src/adapters/index.js +36 -0
- package/dist/src/adapters/index.js.map +1 -0
- package/dist/src/adapters/solana.d.ts +37 -0
- package/dist/src/adapters/solana.js +359 -0
- package/dist/src/adapters/solana.js.map +1 -0
- package/dist/src/adapters/types.d.ts +160 -0
- package/dist/src/adapters/types.js +20 -0
- package/dist/src/adapters/types.js.map +1 -0
- package/dist/src/animations/N1Loader.js.map +1 -0
- package/dist/src/animations/N1Loader.json +1 -0
- package/dist/src/animations/Processing.js.map +1 -0
- package/dist/src/animations/Processing.json +1 -0
- package/dist/{components → src/components}/LoadingFallback.d.ts +3 -0
- package/dist/{components → src/components}/LoadingFallback.js +3 -0
- package/dist/src/components/LoadingFallback.js.map +1 -0
- package/dist/{components → src/components}/Logo.d.ts +4 -0
- package/dist/{components → src/components}/Logo.js +4 -0
- package/dist/src/components/Logo.js.map +1 -0
- package/dist/src/components/N1ConnectButton.d.ts +13 -0
- package/dist/src/components/N1ConnectButton.js +66 -0
- package/dist/src/components/N1ConnectButton.js.map +1 -0
- package/dist/src/components/logos/ArbitrumLogo.js.map +1 -0
- package/dist/src/components/logos/BaseLogo.js +6 -0
- package/dist/src/components/logos/BaseLogo.js.map +1 -0
- package/dist/src/components/logos/BeraLogo.js.map +1 -0
- package/dist/src/components/logos/BitcoinLogo.js.map +1 -0
- package/dist/src/components/logos/EthereumLogo.js.map +1 -0
- package/dist/{components → src/components}/logos/HyperliquidLogo.js +1 -1
- package/dist/src/components/logos/HyperliquidLogo.js.map +1 -0
- package/dist/src/components/logos/OptimismLogo.js.map +1 -0
- package/dist/src/components/logos/SolanaLogo.js.map +1 -0
- package/dist/src/components/logos/ZeroOneLogo.js.map +1 -0
- package/dist/src/components/logos/index.js.map +1 -0
- package/dist/src/config/chains.d.ts +18 -0
- package/dist/src/config/chains.js +58 -0
- package/dist/src/config/chains.js.map +1 -0
- package/dist/src/config/dynamic.js +18 -0
- package/dist/src/config/dynamic.js.map +1 -0
- package/dist/src/config/solana.js.map +1 -0
- package/dist/src/config/turnkey.d.ts +2 -0
- package/dist/{config → src/config}/turnkey.js +9 -12
- package/dist/src/config/turnkey.js.map +1 -0
- package/dist/src/context/n1-wallet-context.js.map +1 -0
- package/dist/src/errors/types.d.ts +72 -0
- package/dist/src/errors/types.js +140 -0
- package/dist/src/errors/types.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/N1WalletModal.js +44 -29
- package/dist/src/features/onboarding-flow/N1WalletModal.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/OnboardingFlow.d.ts +2 -1
- package/dist/{features → src/features}/onboarding-flow/OnboardingFlow.js +54 -8
- package/dist/src/features/onboarding-flow/OnboardingFlow.js.map +1 -0
- package/dist/src/features/onboarding-flow/bridge-assist/client.d.ts +42 -0
- package/dist/src/features/onboarding-flow/bridge-assist/client.js +268 -0
- package/dist/src/features/onboarding-flow/bridge-assist/client.js.map +1 -0
- package/dist/src/features/onboarding-flow/bridge-assist/config.d.ts +4 -0
- package/dist/src/features/onboarding-flow/bridge-assist/config.js +11 -0
- package/dist/src/features/onboarding-flow/bridge-assist/config.js.map +1 -0
- package/dist/src/features/onboarding-flow/bridge-assist/index.d.ts +1 -0
- package/dist/src/features/onboarding-flow/bridge-assist/index.js +2 -0
- package/dist/src/features/onboarding-flow/bridge-assist/index.js.map +1 -0
- package/dist/src/features/onboarding-flow/bridge-assist/types.d.ts +5 -0
- package/dist/src/features/onboarding-flow/bridge-assist/types.js +28 -0
- package/dist/src/features/onboarding-flow/bridge-assist/types.js.map +1 -0
- package/dist/src/features/onboarding-flow/cctp/bridgeKitClient.d.ts +35 -0
- package/dist/src/features/onboarding-flow/cctp/bridgeKitClient.js +391 -0
- package/dist/src/features/onboarding-flow/cctp/bridgeKitClient.js.map +1 -0
- package/dist/src/features/onboarding-flow/cctp/clientFactory.d.ts +6 -0
- package/dist/src/features/onboarding-flow/cctp/clientFactory.js +9 -0
- package/dist/src/features/onboarding-flow/cctp/clientFactory.js.map +1 -0
- package/dist/src/features/onboarding-flow/cctp/config.d.ts +16 -0
- package/dist/src/features/onboarding-flow/cctp/config.js +55 -0
- package/dist/src/features/onboarding-flow/cctp/config.js.map +1 -0
- package/dist/src/features/onboarding-flow/cctp/mockCctpClient.d.ts +11 -0
- package/dist/src/features/onboarding-flow/cctp/mockCctpClient.js +85 -0
- package/dist/src/features/onboarding-flow/cctp/mockCctpClient.js.map +1 -0
- package/dist/src/features/onboarding-flow/cctp/solanaClaim.d.ts +1 -0
- package/dist/src/features/onboarding-flow/cctp/solanaClaim.js +2 -0
- package/dist/src/features/onboarding-flow/cctp/solanaClaim.js.map +1 -0
- package/dist/src/features/onboarding-flow/cctp/types.d.ts +50 -0
- package/dist/src/features/onboarding-flow/cctp/types.js +2 -0
- package/dist/src/features/onboarding-flow/cctp/types.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/components/ChainButton.d.ts +5 -2
- package/dist/src/features/onboarding-flow/components/ChainButton.js +14 -0
- package/dist/src/features/onboarding-flow/components/ChainButton.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/components/Header.d.ts +2 -2
- package/dist/src/features/onboarding-flow/components/Header.js +69 -0
- package/dist/src/features/onboarding-flow/components/Header.js.map +1 -0
- package/dist/src/features/onboarding-flow/components/ImageWithFallback.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/components/TransactionTable.d.ts +5 -0
- package/dist/{features → src/features}/onboarding-flow/components/TransactionTable.js +8 -3
- package/dist/src/features/onboarding-flow/components/TransactionTable.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/components/WaitingMessage.d.ts +4 -0
- package/dist/src/features/onboarding-flow/components/WaitingMessage.js.map +1 -0
- package/dist/src/features/onboarding-flow/components/index.js.map +1 -0
- package/dist/src/features/onboarding-flow/errors/depositError.d.ts +36 -0
- package/dist/src/features/onboarding-flow/errors/depositError.js +134 -0
- package/dist/src/features/onboarding-flow/errors/depositError.js.map +1 -0
- package/dist/src/features/onboarding-flow/hooks/useBridgeDeposit.d.ts +35 -0
- package/dist/src/features/onboarding-flow/hooks/useBridgeDeposit.js +585 -0
- package/dist/src/features/onboarding-flow/hooks/useBridgeDeposit.js.map +1 -0
- package/dist/src/features/onboarding-flow/hooks/useDepositAuth.d.ts +6 -0
- package/dist/src/features/onboarding-flow/hooks/useDepositAuth.js +141 -0
- package/dist/src/features/onboarding-flow/hooks/useDepositAuth.js.map +1 -0
- package/dist/src/features/onboarding-flow/hooks/useDepositHydration.d.ts +15 -0
- package/dist/src/features/onboarding-flow/hooks/useDepositHydration.js +83 -0
- package/dist/src/features/onboarding-flow/hooks/useDepositHydration.js.map +1 -0
- package/dist/src/features/onboarding-flow/hooks/usePendingDepositState.d.ts +6 -0
- package/dist/src/features/onboarding-flow/hooks/usePendingDepositState.js +45 -0
- package/dist/src/features/onboarding-flow/hooks/usePendingDepositState.js.map +1 -0
- package/dist/src/features/onboarding-flow/hooks/useSolanaDeposit.d.ts +13 -0
- package/dist/src/features/onboarding-flow/hooks/useSolanaDeposit.js +161 -0
- package/dist/src/features/onboarding-flow/hooks/useSolanaDeposit.js.map +1 -0
- package/dist/src/features/onboarding-flow/index.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/providers/DepositFlowProvider.d.ts +10 -3
- package/dist/src/features/onboarding-flow/providers/DepositFlowProvider.js +762 -0
- package/dist/src/features/onboarding-flow/providers/DepositFlowProvider.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/providers/OnboardingStateProvider.d.ts +5 -0
- package/dist/src/features/onboarding-flow/providers/OnboardingStateProvider.js +399 -0
- package/dist/src/features/onboarding-flow/providers/OnboardingStateProvider.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/providers/StateProvider.d.ts +2 -2
- package/dist/{features → src/features}/onboarding-flow/providers/StateProvider.js +2 -2
- package/dist/src/features/onboarding-flow/providers/StateProvider.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/providers/WalletConnectionProvider.d.ts +8 -0
- package/dist/src/features/onboarding-flow/providers/WalletConnectionProvider.js +938 -0
- package/dist/src/features/onboarding-flow/providers/WalletConnectionProvider.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/providers/debug.js +5 -1
- package/dist/src/features/onboarding-flow/providers/debug.js.map +1 -0
- package/dist/src/features/onboarding-flow/providers/index.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/providers/onboardingStateMachine.d.ts +28 -1
- package/dist/{features → src/features}/onboarding-flow/providers/onboardingStateMachine.js +38 -4
- package/dist/src/features/onboarding-flow/providers/onboardingStateMachine.js.map +1 -0
- package/dist/src/features/onboarding-flow/screens/00-EntrySelectionScreen.d.ts +4 -0
- package/dist/src/features/onboarding-flow/screens/00-EntrySelectionScreen.js +32 -0
- package/dist/src/features/onboarding-flow/screens/00-EntrySelectionScreen.js.map +1 -0
- package/dist/src/features/onboarding-flow/screens/01-ConnectWalletScreen.d.ts +5 -0
- package/dist/{features → src/features}/onboarding-flow/screens/01-ConnectWalletScreen.js +5 -0
- package/dist/src/features/onboarding-flow/screens/01-ConnectWalletScreen.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/screens/02-TurnkeyAuthScreen.js +8 -1
- package/dist/src/features/onboarding-flow/screens/02-TurnkeyAuthScreen.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/screens/03-TurnkeyPreparingScreen.js +8 -1
- package/dist/src/features/onboarding-flow/screens/03-TurnkeyPreparingScreen.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/screens/04-ChainSelectionScreen.d.ts +11 -11
- package/dist/{features → src/features}/onboarding-flow/screens/04-ChainSelectionScreen.js +59 -29
- package/dist/src/features/onboarding-flow/screens/04-ChainSelectionScreen.js.map +1 -0
- package/dist/src/features/onboarding-flow/screens/05-AmountInputScreen.d.ts +11 -0
- package/dist/src/features/onboarding-flow/screens/05-AmountInputScreen.js +585 -0
- package/dist/src/features/onboarding-flow/screens/05-AmountInputScreen.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/screens/06-DepositProgressScreen.d.ts +5 -0
- package/dist/src/features/onboarding-flow/screens/06-DepositProgressScreen.js +367 -0
- package/dist/src/features/onboarding-flow/screens/06-DepositProgressScreen.js.map +1 -0
- package/dist/src/features/onboarding-flow/screens/07-DepositSuccessScreen.d.ts +6 -0
- package/dist/{features → src/features}/onboarding-flow/screens/07-DepositSuccessScreen.js +11 -5
- package/dist/src/features/onboarding-flow/screens/07-DepositSuccessScreen.js.map +1 -0
- package/dist/src/features/onboarding-flow/screens/08-AuthLoadingScreen.d.ts +5 -0
- package/dist/{features → src/features}/onboarding-flow/screens/08-AuthLoadingScreen.js +5 -1
- package/dist/src/features/onboarding-flow/screens/08-AuthLoadingScreen.js.map +1 -0
- package/dist/src/features/onboarding-flow/screens/09-ErrorScreen.d.ts +5 -0
- package/dist/src/features/onboarding-flow/screens/09-ErrorScreen.js +43 -0
- package/dist/src/features/onboarding-flow/screens/09-ErrorScreen.js.map +1 -0
- package/dist/src/features/onboarding-flow/screens/index.d.ts +10 -0
- package/dist/src/features/onboarding-flow/screens/index.js +11 -0
- package/dist/src/features/onboarding-flow/screens/index.js.map +1 -0
- package/dist/src/features/onboarding-flow/turnkey/turnkeySessionMachine.d.ts +1 -0
- package/dist/src/features/onboarding-flow/turnkey/turnkeySessionMachine.js +2 -0
- package/dist/src/features/onboarding-flow/turnkey/turnkeySessionMachine.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/types.d.ts +38 -11
- package/dist/{features → src/features}/onboarding-flow/types.js +5 -0
- package/dist/src/features/onboarding-flow/types.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/bridgeUtils.d.ts +6 -0
- package/dist/src/features/onboarding-flow/utils/bridgeUtils.js +34 -0
- package/dist/src/features/onboarding-flow/utils/bridgeUtils.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/deposit/attestationUtils.d.ts +29 -0
- package/dist/src/features/onboarding-flow/utils/deposit/attestationUtils.js +82 -0
- package/dist/src/features/onboarding-flow/utils/deposit/attestationUtils.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/deposit/bridgeUtils.d.ts +5 -0
- package/dist/src/features/onboarding-flow/utils/deposit/bridgeUtils.js +10 -0
- package/dist/src/features/onboarding-flow/utils/deposit/bridgeUtils.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/deposit/claimConfirmation.d.ts +14 -0
- package/dist/src/features/onboarding-flow/utils/deposit/claimConfirmation.js +94 -0
- package/dist/src/features/onboarding-flow/utils/deposit/claimConfirmation.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/deposit/claimSubmission.d.ts +25 -0
- package/dist/src/features/onboarding-flow/utils/deposit/claimSubmission.js +212 -0
- package/dist/src/features/onboarding-flow/utils/deposit/claimSubmission.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/deposit/depositPolling.d.ts +37 -0
- package/dist/src/features/onboarding-flow/utils/deposit/depositPolling.js +199 -0
- package/dist/src/features/onboarding-flow/utils/deposit/depositPolling.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/deposit/evmTxInterceptor.d.ts +27 -0
- package/dist/src/features/onboarding-flow/utils/deposit/evmTxInterceptor.js +149 -0
- package/dist/src/features/onboarding-flow/utils/deposit/evmTxInterceptor.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/deposit/nonceUtils.d.ts +5 -0
- package/dist/src/features/onboarding-flow/utils/deposit/nonceUtils.js +121 -0
- package/dist/src/features/onboarding-flow/utils/deposit/nonceUtils.js.map +1 -0
- package/dist/{features/onboarding-flow/utils/transaction.d.ts → src/features/onboarding-flow/utils/deposit/solanaDepositTransaction.d.ts} +3 -3
- package/dist/src/features/onboarding-flow/utils/deposit/solanaDepositTransaction.js +8 -0
- package/dist/src/features/onboarding-flow/utils/deposit/solanaDepositTransaction.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/deposit/solanaUtils.d.ts +12 -0
- package/dist/src/features/onboarding-flow/utils/deposit/solanaUtils.js +150 -0
- package/dist/src/features/onboarding-flow/utils/deposit/solanaUtils.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/deposit/storage.d.ts +52 -0
- package/dist/src/features/onboarding-flow/utils/deposit/storage.js +243 -0
- package/dist/src/features/onboarding-flow/utils/deposit/storage.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/deposit/walletUtils.d.ts +36 -0
- package/dist/src/features/onboarding-flow/utils/deposit/walletUtils.js +304 -0
- package/dist/src/features/onboarding-flow/utils/deposit/walletUtils.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/depositPolling.d.ts +1 -0
- package/dist/src/features/onboarding-flow/utils/depositPolling.js +3 -0
- package/dist/src/features/onboarding-flow/utils/depositPolling.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/explorerUrl.d.ts +14 -0
- package/dist/src/features/onboarding-flow/utils/explorerUrl.js +44 -0
- package/dist/src/features/onboarding-flow/utils/explorerUrl.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/nordUtils.d.ts +8 -0
- package/dist/{features/onboarding-flow/utils/nordUser.js → src/features/onboarding-flow/utils/nordUtils.js} +14 -1
- package/dist/src/features/onboarding-flow/utils/nordUtils.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/pendingDepositCookie.d.ts +13 -0
- package/dist/src/features/onboarding-flow/utils/pendingDepositCookie.js +15 -0
- package/dist/src/features/onboarding-flow/utils/pendingDepositCookie.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/pendingDepositStorage.d.ts +15 -0
- package/dist/src/features/onboarding-flow/utils/pendingDepositStorage.js +94 -0
- package/dist/src/features/onboarding-flow/utils/pendingDepositStorage.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/utils/utils.d.ts +9 -2
- package/dist/{features → src/features}/onboarding-flow/utils/utils.js +9 -4
- package/dist/src/features/onboarding-flow/utils/utils.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/withImageFallback.d.ts +6 -0
- package/dist/{features → src/features}/onboarding-flow/utils/withImageFallback.js +2 -3
- package/dist/src/features/onboarding-flow/utils/withImageFallback.js.map +1 -0
- package/dist/src/hooks/index.js.map +1 -0
- package/dist/src/hooks/useN1Wallet.d.ts +12 -0
- package/dist/{hooks → src/hooks}/useN1Wallet.js +10 -0
- package/dist/src/hooks/useN1Wallet.js.map +1 -0
- package/dist/src/hooks/useNordUserInitialization.d.ts +12 -0
- package/dist/{hooks → src/hooks}/useNordUserInitialization.js +74 -33
- package/dist/src/hooks/useNordUserInitialization.js.map +1 -0
- package/dist/src/index.d.ts +9 -0
- package/dist/src/index.js +16 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/providers/LazyWalletProvider.d.ts +4 -0
- package/dist/src/providers/LazyWalletProvider.js +404 -0
- package/dist/src/providers/LazyWalletProvider.js.map +1 -0
- package/dist/src/providers/N1WalletProvider/ContextBridge.d.ts +28 -0
- package/dist/src/providers/N1WalletProvider/ContextBridge.js +273 -0
- package/dist/src/providers/N1WalletProvider/ContextBridge.js.map +1 -0
- package/dist/src/providers/N1WalletProvider/ModalProvider.d.ts +113 -0
- package/dist/src/providers/N1WalletProvider/ModalProvider.js +319 -0
- package/dist/src/providers/N1WalletProvider/ModalProvider.js.map +1 -0
- package/dist/src/providers/N1WalletProvider/NetworkProvider.d.ts +88 -0
- package/dist/src/providers/N1WalletProvider/NetworkProvider.js +252 -0
- package/dist/src/providers/N1WalletProvider/NetworkProvider.js.map +1 -0
- package/dist/src/providers/N1WalletProvider/SessionProvider.d.ts +71 -0
- package/dist/src/providers/N1WalletProvider/SessionProvider.js +187 -0
- package/dist/src/providers/N1WalletProvider/SessionProvider.js.map +1 -0
- package/dist/src/providers/N1WalletProvider/SigningProvider.d.ts +58 -0
- package/dist/src/providers/N1WalletProvider/SigningProvider.js +134 -0
- package/dist/src/providers/N1WalletProvider/SigningProvider.js.map +1 -0
- package/dist/src/providers/N1WalletProvider/ThemingProvider.d.ts +50 -0
- package/dist/src/providers/N1WalletProvider/ThemingProvider.js +102 -0
- package/dist/src/providers/N1WalletProvider/ThemingProvider.js.map +1 -0
- package/dist/src/providers/N1WalletProvider/index.d.ts +21 -0
- package/dist/src/providers/N1WalletProvider/index.js +27 -0
- package/dist/src/providers/N1WalletProvider/index.js.map +1 -0
- package/dist/src/providers/N1WalletProvider.d.ts +17 -0
- package/dist/src/providers/N1WalletProvider.js +102 -0
- package/dist/src/providers/N1WalletProvider.js.map +1 -0
- package/dist/{providers → src/providers}/ShadowRootWrapper.d.ts +4 -0
- package/dist/{providers → src/providers}/ShadowRootWrapper.js +4 -0
- package/dist/src/providers/ShadowRootWrapper.js.map +1 -0
- package/dist/{providers → src/providers}/WalletErrorBoundary.d.ts +7 -2
- package/dist/{providers → src/providers}/WalletErrorBoundary.js +5 -1
- package/dist/src/providers/WalletErrorBoundary.js.map +1 -0
- package/dist/src/services/bootstrap/DepositRecoveryService.d.ts +64 -0
- package/dist/src/services/bootstrap/DepositRecoveryService.js +245 -0
- package/dist/src/services/bootstrap/DepositRecoveryService.js.map +1 -0
- package/dist/src/services/bootstrap/DynamicSdkService.d.ts +62 -0
- package/dist/src/services/bootstrap/DynamicSdkService.js +335 -0
- package/dist/src/services/bootstrap/DynamicSdkService.js.map +1 -0
- package/dist/src/services/bootstrap/SessionBootstrapService.d.ts +78 -0
- package/dist/src/services/bootstrap/SessionBootstrapService.js +280 -0
- package/dist/src/services/bootstrap/SessionBootstrapService.js.map +1 -0
- package/dist/src/services/bootstrap/TurnkeyBootstrapService.d.ts +92 -0
- package/dist/src/services/bootstrap/TurnkeyBootstrapService.js +253 -0
- package/dist/src/services/bootstrap/TurnkeyBootstrapService.js.map +1 -0
- package/dist/src/services/bootstrap/index.d.ts +13 -0
- package/dist/src/services/bootstrap/index.js +16 -0
- package/dist/src/services/bootstrap/index.js.map +1 -0
- package/dist/src/services/bootstrap/types.d.ts +92 -0
- package/dist/src/services/bootstrap/types.js +7 -0
- package/dist/src/services/bootstrap/types.js.map +1 -0
- package/dist/src/services/storage/StorageService.d.ts +98 -0
- package/dist/src/services/storage/StorageService.js +360 -0
- package/dist/src/services/storage/StorageService.js.map +1 -0
- package/dist/src/services/storage/index.d.ts +9 -0
- package/dist/src/services/storage/index.js +10 -0
- package/dist/src/services/storage/index.js.map +1 -0
- package/dist/src/services/storage/keys.d.ts +28 -0
- package/dist/src/services/storage/keys.js +45 -0
- package/dist/src/services/storage/keys.js.map +1 -0
- package/dist/src/services/storage/types.d.ts +73 -0
- package/dist/src/services/storage/types.js +23 -0
- package/dist/src/services/storage/types.js.map +1 -0
- package/dist/src/store/index.d.ts +8 -0
- package/dist/src/store/index.js +24 -0
- package/dist/src/store/index.js.map +1 -0
- package/dist/src/store/selectors.d.ts +105 -0
- package/dist/src/store/selectors.js +183 -0
- package/dist/src/store/selectors.js.map +1 -0
- package/dist/src/store/slices/bootstrapSlice.d.ts +64 -0
- package/dist/src/store/slices/bootstrapSlice.js +78 -0
- package/dist/src/store/slices/bootstrapSlice.js.map +1 -0
- package/dist/src/store/slices/configSlice.d.ts +7 -0
- package/dist/src/store/slices/configSlice.js +14 -0
- package/dist/src/store/slices/configSlice.js.map +1 -0
- package/dist/src/store/slices/index.d.ts +10 -0
- package/dist/src/store/slices/index.js +10 -0
- package/dist/src/store/slices/index.js.map +1 -0
- package/dist/src/store/slices/sessionSlice.d.ts +7 -0
- package/dist/src/store/slices/sessionSlice.js +17 -0
- package/dist/src/store/slices/sessionSlice.js.map +1 -0
- package/dist/src/store/slices/signingSlice.d.ts +7 -0
- package/dist/src/store/slices/signingSlice.js +14 -0
- package/dist/src/store/slices/signingSlice.js.map +1 -0
- package/dist/src/store/slices/uiSlice.d.ts +9 -0
- package/dist/src/store/slices/uiSlice.js +25 -0
- package/dist/src/store/slices/uiSlice.js.map +1 -0
- package/dist/src/store/slices/walletSlice.d.ts +7 -0
- package/dist/src/store/slices/walletSlice.js +21 -0
- package/dist/src/store/slices/walletSlice.js.map +1 -0
- package/dist/src/store/store.d.ts +50 -0
- package/dist/src/store/store.js +259 -0
- package/dist/src/store/store.js.map +1 -0
- package/dist/src/store/subscriptions/depositPersistence.d.ts +32 -0
- package/dist/src/store/subscriptions/depositPersistence.js +106 -0
- package/dist/src/store/subscriptions/depositPersistence.js.map +1 -0
- package/dist/src/store/subscriptions/index.d.ts +34 -0
- package/dist/src/store/subscriptions/index.js +73 -0
- package/dist/src/store/subscriptions/index.js.map +1 -0
- package/dist/src/store/subscriptions/turnkeyPersistence.d.ts +42 -0
- package/dist/src/store/subscriptions/turnkeyPersistence.js +127 -0
- package/dist/src/store/subscriptions/turnkeyPersistence.js.map +1 -0
- package/dist/src/store/types.d.ts +166 -0
- package/dist/src/store/types.js +7 -0
- package/dist/src/store/types.js.map +1 -0
- package/dist/src/styles/cdn-fonts.d.ts +12 -0
- package/dist/src/styles/cdn-fonts.js +63 -0
- package/dist/src/styles/cdn-fonts.js.map +1 -0
- package/dist/src/styles/embedded-main-css.d.ts +2 -0
- package/dist/src/styles/embedded-main-css.js +3 -0
- package/dist/src/styles/embedded-main-css.js.map +1 -0
- package/dist/src/turnkey/TurnkeyProvider.d.ts +21 -0
- package/dist/src/turnkey/TurnkeyProvider.js +695 -0
- package/dist/src/turnkey/TurnkeyProvider.js.map +1 -0
- package/dist/src/turnkey/createTurnkeyWallet.d.ts +39 -0
- package/dist/src/turnkey/createTurnkeyWallet.js +319 -0
- package/dist/src/turnkey/createTurnkeyWallet.js.map +1 -0
- package/dist/src/turnkey/createWalletProvider.d.ts +8 -0
- package/dist/src/turnkey/createWalletProvider.js +286 -0
- package/dist/src/turnkey/createWalletProvider.js.map +1 -0
- package/dist/src/turnkey/index.d.ts +3 -0
- package/dist/src/turnkey/index.js +3 -0
- package/dist/src/turnkey/index.js.map +1 -0
- package/dist/src/turnkey/turnkeySessionMachine.d.ts +39 -0
- package/dist/src/turnkey/turnkeySessionMachine.js +77 -0
- package/dist/src/turnkey/turnkeySessionMachine.js.map +1 -0
- package/dist/src/turnkey/turnkeySessionStorage.d.ts +48 -0
- package/dist/src/turnkey/turnkeySessionStorage.js +183 -0
- package/dist/src/turnkey/turnkeySessionStorage.js.map +1 -0
- package/dist/{turnkey → src/turnkey}/types.d.ts +21 -8
- package/dist/src/turnkey/types.js +12 -0
- package/dist/src/turnkey/types.js.map +1 -0
- package/dist/{types → src/types}/wallet.d.ts +39 -13
- package/dist/src/types/wallet.js.map +1 -0
- package/dist/src/utils/address.d.ts +130 -0
- package/dist/src/utils/address.js +274 -0
- package/dist/src/utils/address.js.map +1 -0
- package/dist/src/utils/chain.d.ts +89 -0
- package/dist/src/utils/chain.js +282 -0
- package/dist/src/utils/chain.js.map +1 -0
- package/dist/{utils → src/utils}/ed25519.d.ts +0 -2
- package/dist/{utils → src/utils}/ed25519.js +4 -19
- package/dist/src/utils/ed25519.js.map +1 -0
- package/dist/src/utils/errors.d.ts +68 -0
- package/dist/src/utils/errors.js +190 -0
- package/dist/src/utils/errors.js.map +1 -0
- package/dist/src/utils/events.d.ts +124 -0
- package/dist/src/utils/events.js +155 -0
- package/dist/src/utils/events.js.map +1 -0
- package/dist/src/utils/formatAmount.d.ts +4 -0
- package/dist/src/utils/formatAmount.js +9 -0
- package/dist/src/utils/formatAmount.js.map +1 -0
- package/dist/src/utils/logger.d.ts +45 -0
- package/dist/{utils → src/utils}/logger.js +68 -2
- package/dist/src/utils/logger.js.map +1 -0
- package/dist/src/utils/shortenString.d.ts +5 -0
- package/dist/src/utils/shortenString.js +16 -0
- package/dist/src/utils/shortenString.js.map +1 -0
- package/package.json +37 -15
- package/dist/animations/N1Loader.js.map +0 -1
- package/dist/animations/Processing.js.map +0 -1
- package/dist/components/LoadingFallback.js.map +0 -1
- package/dist/components/Logo.js.map +0 -1
- package/dist/components/N1ConnectButton.d.ts +0 -5
- package/dist/components/N1ConnectButton.js +0 -49
- package/dist/components/N1ConnectButton.js.map +0 -1
- package/dist/components/logos/ArbitrumLogo.js.map +0 -1
- package/dist/components/logos/BaseLogo.js +0 -6
- package/dist/components/logos/BaseLogo.js.map +0 -1
- package/dist/components/logos/BeraLogo.js.map +0 -1
- package/dist/components/logos/BitcoinLogo.js.map +0 -1
- package/dist/components/logos/EthereumLogo.js.map +0 -1
- package/dist/components/logos/HyperliquidLogo.js.map +0 -1
- package/dist/components/logos/OptimismLogo.js.map +0 -1
- package/dist/components/logos/SolanaLogo.js.map +0 -1
- package/dist/components/logos/ZeroOneLogo.js.map +0 -1
- package/dist/components/logos/index.js.map +0 -1
- package/dist/config/chains.d.ts +0 -0
- package/dist/config/chains.js +0 -2
- package/dist/config/chains.js.map +0 -1
- package/dist/config/dynamic.js +0 -13
- package/dist/config/dynamic.js.map +0 -1
- package/dist/config/solana.js.map +0 -1
- package/dist/config/turnkey.d.ts +0 -2
- package/dist/config/turnkey.js.map +0 -1
- package/dist/config.d.ts +0 -2
- package/dist/config.js +0 -3
- package/dist/config.js.map +0 -1
- package/dist/context/n1-wallet-context.js.map +0 -1
- package/dist/errors/types.d.ts +0 -25
- package/dist/errors/types.js +0 -77
- package/dist/errors/types.js.map +0 -1
- package/dist/features/onboarding-flow/N1WalletModal.js.map +0 -1
- package/dist/features/onboarding-flow/OnboardingFlow.js.map +0 -1
- package/dist/features/onboarding-flow/components/ChainButton.js +0 -21
- package/dist/features/onboarding-flow/components/ChainButton.js.map +0 -1
- package/dist/features/onboarding-flow/components/Header.js +0 -45
- package/dist/features/onboarding-flow/components/Header.js.map +0 -1
- package/dist/features/onboarding-flow/components/ImageWithFallback.js.map +0 -1
- package/dist/features/onboarding-flow/components/TransactionTable.js.map +0 -1
- package/dist/features/onboarding-flow/components/WaitingMessage.js.map +0 -1
- package/dist/features/onboarding-flow/components/index.js.map +0 -1
- package/dist/features/onboarding-flow/index.js.map +0 -1
- package/dist/features/onboarding-flow/providers/DepositFlowProvider.js +0 -525
- package/dist/features/onboarding-flow/providers/DepositFlowProvider.js.map +0 -1
- package/dist/features/onboarding-flow/providers/OnboardingStateProvider.js +0 -185
- package/dist/features/onboarding-flow/providers/OnboardingStateProvider.js.map +0 -1
- package/dist/features/onboarding-flow/providers/StateProvider.js.map +0 -1
- package/dist/features/onboarding-flow/providers/WalletConnectionProvider.js +0 -394
- package/dist/features/onboarding-flow/providers/WalletConnectionProvider.js.map +0 -1
- package/dist/features/onboarding-flow/providers/debug.js.map +0 -1
- package/dist/features/onboarding-flow/providers/index.js.map +0 -1
- package/dist/features/onboarding-flow/providers/onboardingStateMachine.js.map +0 -1
- package/dist/features/onboarding-flow/screens/01-ConnectWalletScreen.d.ts +0 -1
- package/dist/features/onboarding-flow/screens/01-ConnectWalletScreen.js.map +0 -1
- package/dist/features/onboarding-flow/screens/02-ChainSelectionScreen.d.ts +0 -31
- package/dist/features/onboarding-flow/screens/02-ChainSelectionScreen.js +0 -100
- package/dist/features/onboarding-flow/screens/02-ChainSelectionScreen.js.map +0 -1
- package/dist/features/onboarding-flow/screens/02-TurnkeyAuthScreen.js.map +0 -1
- package/dist/features/onboarding-flow/screens/03-AmountInputScreen.d.ts +0 -6
- package/dist/features/onboarding-flow/screens/03-AmountInputScreen.js +0 -360
- package/dist/features/onboarding-flow/screens/03-AmountInputScreen.js.map +0 -1
- package/dist/features/onboarding-flow/screens/03-TurnkeyPreparingScreen.js.map +0 -1
- package/dist/features/onboarding-flow/screens/04-ChainSelectionScreen.js.map +0 -1
- package/dist/features/onboarding-flow/screens/04-DepositProgressScreen.d.ts +0 -3
- package/dist/features/onboarding-flow/screens/04-DepositProgressScreen.js +0 -31
- package/dist/features/onboarding-flow/screens/04-DepositProgressScreen.js.map +0 -1
- package/dist/features/onboarding-flow/screens/05-AmountInputScreen.d.ts +0 -6
- package/dist/features/onboarding-flow/screens/05-AmountInputScreen.js +0 -360
- package/dist/features/onboarding-flow/screens/05-AmountInputScreen.js.map +0 -1
- package/dist/features/onboarding-flow/screens/05-DepositSuccessScreen.d.ts +0 -1
- package/dist/features/onboarding-flow/screens/05-DepositSuccessScreen.js +0 -136
- package/dist/features/onboarding-flow/screens/05-DepositSuccessScreen.js.map +0 -1
- package/dist/features/onboarding-flow/screens/06-AuthLoadingScreen.d.ts +0 -1
- package/dist/features/onboarding-flow/screens/06-AuthLoadingScreen.js +0 -31
- package/dist/features/onboarding-flow/screens/06-AuthLoadingScreen.js.map +0 -1
- package/dist/features/onboarding-flow/screens/06-DepositProgressScreen.js +0 -31
- package/dist/features/onboarding-flow/screens/06-DepositProgressScreen.js.map +0 -1
- package/dist/features/onboarding-flow/screens/07-DepositSuccessScreen.d.ts +0 -1
- package/dist/features/onboarding-flow/screens/07-DepositSuccessScreen.js.map +0 -1
- package/dist/features/onboarding-flow/screens/07-ErrorScreen.d.ts +0 -1
- package/dist/features/onboarding-flow/screens/07-ErrorScreen.js +0 -14
- package/dist/features/onboarding-flow/screens/07-ErrorScreen.js.map +0 -1
- package/dist/features/onboarding-flow/screens/08-AuthLoadingScreen.d.ts +0 -1
- package/dist/features/onboarding-flow/screens/08-AuthLoadingScreen.js.map +0 -1
- package/dist/features/onboarding-flow/screens/08-TurnkeyAuthScreen.d.ts +0 -1
- package/dist/features/onboarding-flow/screens/08-TurnkeyAuthScreen.js +0 -18
- package/dist/features/onboarding-flow/screens/08-TurnkeyAuthScreen.js.map +0 -1
- package/dist/features/onboarding-flow/screens/09-ErrorScreen.d.ts +0 -1
- package/dist/features/onboarding-flow/screens/09-ErrorScreen.js +0 -14
- package/dist/features/onboarding-flow/screens/09-ErrorScreen.js.map +0 -1
- package/dist/features/onboarding-flow/screens/09-TurnkeyPreparingScreen.d.ts +0 -1
- package/dist/features/onboarding-flow/screens/09-TurnkeyPreparingScreen.js +0 -18
- package/dist/features/onboarding-flow/screens/09-TurnkeyPreparingScreen.js.map +0 -1
- package/dist/features/onboarding-flow/screens/TurnkeyAuthScreen.d.ts +0 -1
- package/dist/features/onboarding-flow/screens/TurnkeyAuthScreen.js +0 -18
- package/dist/features/onboarding-flow/screens/TurnkeyAuthScreen.js.map +0 -1
- package/dist/features/onboarding-flow/screens/TurnkeyPreparingScreen.d.ts +0 -1
- package/dist/features/onboarding-flow/screens/TurnkeyPreparingScreen.js +0 -18
- package/dist/features/onboarding-flow/screens/TurnkeyPreparingScreen.js.map +0 -1
- package/dist/features/onboarding-flow/screens/index.d.ts +0 -7
- package/dist/features/onboarding-flow/screens/index.js +0 -8
- package/dist/features/onboarding-flow/screens/index.js.map +0 -1
- package/dist/features/onboarding-flow/types.js.map +0 -1
- package/dist/features/onboarding-flow/utils/depositStorage.d.ts +0 -4
- package/dist/features/onboarding-flow/utils/depositStorage.js +0 -48
- package/dist/features/onboarding-flow/utils/depositStorage.js.map +0 -1
- package/dist/features/onboarding-flow/utils/imageUtils.d.ts +0 -21
- package/dist/features/onboarding-flow/utils/imageUtils.js +0 -110
- package/dist/features/onboarding-flow/utils/imageUtils.js.map +0 -1
- package/dist/features/onboarding-flow/utils/nordUser.d.ts +0 -1
- package/dist/features/onboarding-flow/utils/nordUser.js.map +0 -1
- package/dist/features/onboarding-flow/utils/nordUtils.d.ts +0 -40
- package/dist/features/onboarding-flow/utils/nordUtils.js +0 -64
- package/dist/features/onboarding-flow/utils/nordUtils.js.map +0 -1
- package/dist/features/onboarding-flow/utils/session.d.ts +0 -17
- package/dist/features/onboarding-flow/utils/session.js +0 -69
- package/dist/features/onboarding-flow/utils/session.js.map +0 -1
- package/dist/features/onboarding-flow/utils/transaction.js +0 -8
- package/dist/features/onboarding-flow/utils/transaction.js.map +0 -1
- package/dist/features/onboarding-flow/utils/utils.js.map +0 -1
- package/dist/features/onboarding-flow/utils/withImageFallback.d.ts +0 -7
- package/dist/features/onboarding-flow/utils/withImageFallback.js.map +0 -1
- package/dist/features/turnkey/createTurnkeyWallet.d.ts +0 -25
- package/dist/features/turnkey/createTurnkeyWallet.js +0 -119
- package/dist/features/turnkey/createTurnkeyWallet.js.map +0 -1
- package/dist/hooks/index.js.map +0 -1
- package/dist/hooks/useN1Wallet.d.ts +0 -2
- package/dist/hooks/useN1Wallet.js.map +0 -1
- package/dist/hooks/useNordUserInitialization.d.ts +0 -1
- package/dist/hooks/useNordUserInitialization.js.map +0 -1
- package/dist/index.d.ts +0 -7
- package/dist/index.js +0 -8
- package/dist/index.js.map +0 -1
- package/dist/polyfills/windowEthereumGuard.d.ts +0 -6
- package/dist/polyfills/windowEthereumGuard.js +0 -28
- package/dist/polyfills/windowEthereumGuard.js.map +0 -1
- package/dist/providers/LazyWalletProvider.d.ts +0 -1
- package/dist/providers/LazyWalletProvider.js +0 -230
- package/dist/providers/LazyWalletProvider.js.map +0 -1
- package/dist/providers/N1WalletProvider.d.ts +0 -3
- package/dist/providers/N1WalletProvider.js +0 -267
- package/dist/providers/N1WalletProvider.js.map +0 -1
- package/dist/providers/ShadowRootWrapper.js.map +0 -1
- package/dist/providers/TurnkeyProviderBridge.d.ts +0 -7
- package/dist/providers/TurnkeyProviderBridge.js +0 -20
- package/dist/providers/TurnkeyProviderBridge.js.map +0 -1
- package/dist/providers/WalletErrorBoundary.js.map +0 -1
- package/dist/styles/embedded-main-css.d.ts +0 -2
- package/dist/styles/embedded-main-css.js +0 -3
- package/dist/styles/embedded-main-css.js.map +0 -1
- package/dist/turnkey/TurnkeyProvider.d.ts +0 -9
- package/dist/turnkey/TurnkeyProvider.js +0 -378
- package/dist/turnkey/TurnkeyProvider.js.map +0 -1
- package/dist/turnkey/createWalletProvider.d.ts +0 -3
- package/dist/turnkey/createWalletProvider.js +0 -180
- package/dist/turnkey/createWalletProvider.js.map +0 -1
- package/dist/turnkey/index.d.ts +0 -3
- package/dist/turnkey/index.js +0 -3
- package/dist/turnkey/index.js.map +0 -1
- package/dist/turnkey/types.js +0 -8
- package/dist/turnkey/types.js.map +0 -1
- package/dist/types/wallet.js.map +0 -1
- package/dist/utils/ed25519.js.map +0 -1
- package/dist/utils/getPseudoName.d.ts +0 -1
- package/dist/utils/getPseudoName.js +0 -5826
- package/dist/utils/getPseudoName.js.map +0 -1
- package/dist/utils/logger.d.ts +0 -21
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/shortenString.d.ts +0 -2
- package/dist/utils/shortenString.js +0 -9
- package/dist/utils/shortenString.js.map +0 -1
- package/dist/utils/turnkeySessionStorage.d.ts +0 -3
- package/dist/utils/turnkeySessionStorage.js +0 -33
- package/dist/utils/turnkeySessionStorage.js.map +0 -1
- package/dist/utils/words.d.ts +0 -9
- package/dist/utils/words.js +0 -93572
- package/dist/utils/words.js.map +0 -1
- /package/dist/{animations → src/animations}/N1Loader.d.ts +0 -0
- /package/dist/{animations → src/animations}/N1Loader.js +0 -0
- /package/dist/{animations → src/animations}/Processing.d.ts +0 -0
- /package/dist/{animations → src/animations}/Processing.js +0 -0
- /package/dist/{components → src/components}/logos/ArbitrumLogo.d.ts +0 -0
- /package/dist/{components → src/components}/logos/ArbitrumLogo.js +0 -0
- /package/dist/{components → src/components}/logos/BaseLogo.d.ts +0 -0
- /package/dist/{components → src/components}/logos/BeraLogo.d.ts +0 -0
- /package/dist/{components → src/components}/logos/BeraLogo.js +0 -0
- /package/dist/{components → src/components}/logos/BitcoinLogo.d.ts +0 -0
- /package/dist/{components → src/components}/logos/BitcoinLogo.js +0 -0
- /package/dist/{components → src/components}/logos/EthereumLogo.d.ts +0 -0
- /package/dist/{components → src/components}/logos/EthereumLogo.js +0 -0
- /package/dist/{components → src/components}/logos/HyperliquidLogo.d.ts +0 -0
- /package/dist/{components → src/components}/logos/OptimismLogo.d.ts +0 -0
- /package/dist/{components → src/components}/logos/OptimismLogo.js +0 -0
- /package/dist/{components → src/components}/logos/SolanaLogo.d.ts +0 -0
- /package/dist/{components → src/components}/logos/SolanaLogo.js +0 -0
- /package/dist/{components → src/components}/logos/ZeroOneLogo.d.ts +0 -0
- /package/dist/{components → src/components}/logos/ZeroOneLogo.js +0 -0
- /package/dist/{components → src/components}/logos/index.d.ts +0 -0
- /package/dist/{components → src/components}/logos/index.js +0 -0
- /package/dist/{config → src/config}/dynamic.d.ts +0 -0
- /package/dist/{config → src/config}/solana.d.ts +0 -0
- /package/dist/{config → src/config}/solana.js +0 -0
- /package/dist/{context → src/context}/n1-wallet-context.d.ts +0 -0
- /package/dist/{context → src/context}/n1-wallet-context.js +0 -0
- /package/dist/{features → src/features}/onboarding-flow/N1WalletModal.d.ts +0 -0
- /package/dist/{features → src/features}/onboarding-flow/components/ImageWithFallback.d.ts +0 -0
- /package/dist/{features → src/features}/onboarding-flow/components/ImageWithFallback.js +0 -0
- /package/dist/{features → src/features}/onboarding-flow/components/WaitingMessage.js +0 -0
- /package/dist/{features → src/features}/onboarding-flow/components/index.d.ts +0 -0
- /package/dist/{features → src/features}/onboarding-flow/components/index.js +0 -0
- /package/dist/{features → src/features}/onboarding-flow/index.d.ts +0 -0
- /package/dist/{features → src/features}/onboarding-flow/index.js +0 -0
- /package/dist/{features → src/features}/onboarding-flow/providers/debug.d.ts +0 -0
- /package/dist/{features → src/features}/onboarding-flow/providers/index.d.ts +0 -0
- /package/dist/{features → src/features}/onboarding-flow/providers/index.js +0 -0
- /package/dist/{features → src/features}/onboarding-flow/screens/02-TurnkeyAuthScreen.d.ts +0 -0
- /package/dist/{features → src/features}/onboarding-flow/screens/03-TurnkeyPreparingScreen.d.ts +0 -0
- /package/dist/{hooks → src/hooks}/index.d.ts +0 -0
- /package/dist/{hooks → src/hooks}/index.js +0 -0
- /package/dist/{types → src/types}/wallet.js +0 -0
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { createContext, useCallback, useContext, useEffect, useMemo, useRef, } from 'react';
|
|
4
|
+
import { logger } from '../../utils/logger';
|
|
5
|
+
import { EVENTS, createModalEvent } from '../../utils/events';
|
|
6
|
+
import { useWalletStore, getWalletActions } from '../../store';
|
|
7
|
+
import { MODAL_COOLDOWN_MS } from '../../store/slices/uiSlice';
|
|
8
|
+
// ---------------------------------------------------------------------------
|
|
9
|
+
// Context
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
var ModalContext = createContext(null);
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
// Hooks
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
/**
|
|
16
|
+
* Hook to access modal state and actions.
|
|
17
|
+
* Must be used within a ModalProvider.
|
|
18
|
+
*/
|
|
19
|
+
export function useModal() {
|
|
20
|
+
var context = useContext(ModalContext);
|
|
21
|
+
if (!context) {
|
|
22
|
+
throw new Error('useModal must be used within a ModalProvider');
|
|
23
|
+
}
|
|
24
|
+
return context;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Hook to access modal state only (no actions).
|
|
28
|
+
* Useful for components that only need to read state.
|
|
29
|
+
*/
|
|
30
|
+
export function useModalState() {
|
|
31
|
+
var _a = useModal(), showLogin = _a.showLogin, isOpen = _a.isOpen, isClosing = _a.isClosing, viewMode = _a.viewMode, depositFlowRequestId = _a.depositFlowRequestId, modalState = _a.modalState, showDynamicWidget = _a.showDynamicWidget, dynamicHandleLogOut = _a.dynamicHandleLogOut, disconnectWalletHandler = _a.disconnectWalletHandler, walletConnectCancelledHandler = _a.walletConnectCancelledHandler;
|
|
32
|
+
return { showLogin: showLogin, isOpen: isOpen, isClosing: isClosing, viewMode: viewMode, depositFlowRequestId: depositFlowRequestId, modalState: modalState, showDynamicWidget: showDynamicWidget, dynamicHandleLogOut: dynamicHandleLogOut, disconnectWalletHandler: disconnectWalletHandler, walletConnectCancelledHandler: walletConnectCancelledHandler };
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Hook to access modal actions only (no state).
|
|
36
|
+
* Useful for components that only need to trigger actions.
|
|
37
|
+
*/
|
|
38
|
+
export function useModalActions() {
|
|
39
|
+
var _a = useModal(), openModal = _a.openModal, closeModal = _a.closeModal, onCloseComplete = _a.onCloseComplete, setViewMode = _a.setViewMode, startDepositFlow = _a.startDepositFlow, setShowDynamicWidget = _a.setShowDynamicWidget, setDynamicHandleLogOut = _a.setDynamicHandleLogOut, setDisconnectWalletHandler = _a.setDisconnectWalletHandler, setWalletConnectCancelledHandler = _a.setWalletConnectCancelledHandler;
|
|
40
|
+
return { openModal: openModal, closeModal: closeModal, onCloseComplete: onCloseComplete, setViewMode: setViewMode, startDepositFlow: startDepositFlow, setShowDynamicWidget: setShowDynamicWidget, setDynamicHandleLogOut: setDynamicHandleLogOut, setDisconnectWalletHandler: setDisconnectWalletHandler, setWalletConnectCancelledHandler: setWalletConnectCancelledHandler };
|
|
41
|
+
}
|
|
42
|
+
// ---------------------------------------------------------------------------
|
|
43
|
+
// State Machine Helpers
|
|
44
|
+
// ---------------------------------------------------------------------------
|
|
45
|
+
/**
|
|
46
|
+
* Valid state transitions for the modal state machine.
|
|
47
|
+
*/
|
|
48
|
+
var VALID_TRANSITIONS = {
|
|
49
|
+
closed: ['opening'],
|
|
50
|
+
opening: ['open', 'closed'],
|
|
51
|
+
open: ['closing'],
|
|
52
|
+
closing: ['closed'],
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Check if a transition is valid.
|
|
56
|
+
*/
|
|
57
|
+
function isValidTransition(from, to) {
|
|
58
|
+
var _a, _b;
|
|
59
|
+
return (_b = (_a = VALID_TRANSITIONS[from]) === null || _a === void 0 ? void 0 : _a.includes(to)) !== null && _b !== void 0 ? _b : false;
|
|
60
|
+
}
|
|
61
|
+
// ---------------------------------------------------------------------------
|
|
62
|
+
// Provider
|
|
63
|
+
// ---------------------------------------------------------------------------
|
|
64
|
+
/**
|
|
65
|
+
* ModalProvider manages all modal-related state via a state machine.
|
|
66
|
+
*
|
|
67
|
+
* State Machine:
|
|
68
|
+
* closed → opening (user clicks connect)
|
|
69
|
+
* opening → open (SDK ready)
|
|
70
|
+
* opening → closed (cancelled before ready)
|
|
71
|
+
* open → closing (user closes modal)
|
|
72
|
+
* closing → closed (animation complete, cooldown starts)
|
|
73
|
+
*
|
|
74
|
+
* Responsibilities:
|
|
75
|
+
* - Modal state machine transitions
|
|
76
|
+
* - Cooldown protection between open/close cycles
|
|
77
|
+
* - Deposit-only flow initiation
|
|
78
|
+
* - Deferred modal open until Dynamic SDK is ready
|
|
79
|
+
*
|
|
80
|
+
* Does NOT handle:
|
|
81
|
+
* - Wallet connection state
|
|
82
|
+
* - Session/signing state
|
|
83
|
+
* - Network/chain state
|
|
84
|
+
* - Theming/styling
|
|
85
|
+
*/
|
|
86
|
+
export function ModalProvider(_a) {
|
|
87
|
+
// -------------------------------------------------------------------------
|
|
88
|
+
// State from Store (UI slice)
|
|
89
|
+
// -------------------------------------------------------------------------
|
|
90
|
+
var children = _a.children;
|
|
91
|
+
var modalState = useWalletStore(function (state) { return state.ui.modalState; });
|
|
92
|
+
var viewMode = useWalletStore(function (state) { return state.ui.viewMode; });
|
|
93
|
+
var depositFlowRequestId = useWalletStore(function (state) { return state.ui.depositFlowRequestId; });
|
|
94
|
+
var modalCooldownUntil = useWalletStore(function (state) { return state.ui.modalCooldownUntil; });
|
|
95
|
+
var showDynamicWidget = useWalletStore(function (state) { return state.ui.showDynamicWidget; });
|
|
96
|
+
var dynamicHandleLogOut = useWalletStore(function (state) { return state.ui.dynamicHandleLogOut; });
|
|
97
|
+
var disconnectWalletHandler = useWalletStore(function (state) { return state.ui.disconnectWalletHandler; });
|
|
98
|
+
var walletConnectCancelledHandler = useWalletStore(function (state) { return state.ui.walletConnectCancelledHandler; });
|
|
99
|
+
// -------------------------------------------------------------------------
|
|
100
|
+
// Dependencies from Store (session slice) - no more prop drilling!
|
|
101
|
+
// -------------------------------------------------------------------------
|
|
102
|
+
var dynamicSdkHasLoaded = useWalletStore(function (state) { return state.session.dynamicSdkLoaded; });
|
|
103
|
+
var nordUser = useWalletStore(function (state) { return state.session.nordUser; });
|
|
104
|
+
// Derived state for backwards compatibility
|
|
105
|
+
var showLogin = modalState !== 'closed';
|
|
106
|
+
var isOpen = modalState === 'open';
|
|
107
|
+
var isClosing = modalState === 'closing';
|
|
108
|
+
// Get stable action references
|
|
109
|
+
var storeActions = getWalletActions().ui;
|
|
110
|
+
// Ref for pending open requests (when SDK not ready)
|
|
111
|
+
var pendingOpenRef = useRef(false);
|
|
112
|
+
// -------------------------------------------------------------------------
|
|
113
|
+
// State Machine Transitions
|
|
114
|
+
// -------------------------------------------------------------------------
|
|
115
|
+
/**
|
|
116
|
+
* Transition to a new modal state with validation.
|
|
117
|
+
*/
|
|
118
|
+
var transition = useCallback(function (to) {
|
|
119
|
+
var from = useWalletStore.getState().ui.modalState;
|
|
120
|
+
if (!isValidTransition(from, to)) {
|
|
121
|
+
logger.warn('[ModalProvider] Invalid transition', { from: from, to: to });
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
logger.debug('[ModalProvider] Transition', { from: from, to: to });
|
|
125
|
+
storeActions.setModalState(to);
|
|
126
|
+
// Log events for analytics
|
|
127
|
+
if (to === 'open') {
|
|
128
|
+
logger.event(createModalEvent(EVENTS.MODAL.OPEN, {}));
|
|
129
|
+
}
|
|
130
|
+
else if (to === 'closed' && from === 'closing') {
|
|
131
|
+
logger.event(createModalEvent(EVENTS.MODAL.CLOSE, {}));
|
|
132
|
+
}
|
|
133
|
+
return true;
|
|
134
|
+
}, [storeActions]);
|
|
135
|
+
// -------------------------------------------------------------------------
|
|
136
|
+
// Modal Actions
|
|
137
|
+
// -------------------------------------------------------------------------
|
|
138
|
+
/**
|
|
139
|
+
* Opens the modal. Handles cooldown and SDK readiness.
|
|
140
|
+
*/
|
|
141
|
+
var openModal = useCallback(function () {
|
|
142
|
+
var currentState = useWalletStore.getState().ui.modalState;
|
|
143
|
+
var cooldownUntil = useWalletStore.getState().ui.modalCooldownUntil;
|
|
144
|
+
logger.debug('[ModalProvider] openModal called', {
|
|
145
|
+
currentState: currentState,
|
|
146
|
+
dynamicSdkHasLoaded: dynamicSdkHasLoaded,
|
|
147
|
+
cooldownUntil: cooldownUntil,
|
|
148
|
+
now: Date.now(),
|
|
149
|
+
});
|
|
150
|
+
// Already open or opening
|
|
151
|
+
if (currentState !== 'closed') {
|
|
152
|
+
logger.debug('[ModalProvider] openModal ignored - not in closed state');
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
// Check cooldown
|
|
156
|
+
if (Date.now() < cooldownUntil) {
|
|
157
|
+
logger.debug('[ModalProvider] openModal blocked by cooldown');
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
// Defer if SDK not ready
|
|
161
|
+
if (!dynamicSdkHasLoaded) {
|
|
162
|
+
logger.debug('[ModalProvider] openModal deferred - SDK not ready');
|
|
163
|
+
pendingOpenRef.current = true;
|
|
164
|
+
transition('opening');
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
// Transition to opening, then immediately to open
|
|
168
|
+
transition('opening');
|
|
169
|
+
// Since SDK is ready, go directly to open
|
|
170
|
+
transition('open');
|
|
171
|
+
}, [dynamicSdkHasLoaded, transition]);
|
|
172
|
+
/**
|
|
173
|
+
* Effect: When Dynamic SDK becomes ready, complete pending open.
|
|
174
|
+
*/
|
|
175
|
+
useEffect(function () {
|
|
176
|
+
var currentState = useWalletStore.getState().ui.modalState;
|
|
177
|
+
if (dynamicSdkHasLoaded && currentState === 'opening') {
|
|
178
|
+
logger.debug('[ModalProvider] SDK ready, completing open transition');
|
|
179
|
+
pendingOpenRef.current = false;
|
|
180
|
+
transition('open');
|
|
181
|
+
}
|
|
182
|
+
}, [dynamicSdkHasLoaded, transition]);
|
|
183
|
+
/**
|
|
184
|
+
* Closes the modal (starts closing animation).
|
|
185
|
+
*/
|
|
186
|
+
var closeModal = useCallback(function () {
|
|
187
|
+
var currentState = useWalletStore.getState().ui.modalState;
|
|
188
|
+
logger.debug('[ModalProvider] closeModal called', { currentState: currentState });
|
|
189
|
+
if (currentState === 'opening') {
|
|
190
|
+
// Cancel before fully open
|
|
191
|
+
transition('closed');
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
if (currentState === 'open') {
|
|
195
|
+
transition('closing');
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
logger.debug('[ModalProvider] closeModal ignored - not in open/opening state');
|
|
199
|
+
}, [transition]);
|
|
200
|
+
/**
|
|
201
|
+
* Called when close animation completes.
|
|
202
|
+
*/
|
|
203
|
+
var onCloseComplete = useCallback(function () {
|
|
204
|
+
var currentState = useWalletStore.getState().ui.modalState;
|
|
205
|
+
if (currentState !== 'closing') {
|
|
206
|
+
logger.debug('[ModalProvider] onCloseComplete ignored - not in closing state');
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
// Start cooldown
|
|
210
|
+
var cooldownUntil = Date.now() + MODAL_COOLDOWN_MS;
|
|
211
|
+
storeActions.setModalCooldownUntil(cooldownUntil);
|
|
212
|
+
logger.debug('[ModalProvider] Cooldown started', { cooldownUntil: cooldownUntil });
|
|
213
|
+
// Complete transition
|
|
214
|
+
transition('closed');
|
|
215
|
+
}, [storeActions, transition]);
|
|
216
|
+
/**
|
|
217
|
+
* Sets the view mode for debug overrides.
|
|
218
|
+
*/
|
|
219
|
+
var setViewMode = useCallback(function (mode) {
|
|
220
|
+
storeActions.setViewMode(mode);
|
|
221
|
+
}, [storeActions]);
|
|
222
|
+
/**
|
|
223
|
+
* Register the Dynamic SDK widget show function.
|
|
224
|
+
*/
|
|
225
|
+
var setShowDynamicWidget = useCallback(function (fn) {
|
|
226
|
+
storeActions.setShowDynamicWidget(fn);
|
|
227
|
+
}, [storeActions]);
|
|
228
|
+
/**
|
|
229
|
+
* Register the Dynamic SDK logout function.
|
|
230
|
+
*/
|
|
231
|
+
var setDynamicHandleLogOut = useCallback(function (fn) {
|
|
232
|
+
storeActions.setDynamicHandleLogOut(fn);
|
|
233
|
+
}, [storeActions]);
|
|
234
|
+
/**
|
|
235
|
+
* Register the disconnect wallet handler.
|
|
236
|
+
*/
|
|
237
|
+
var setDisconnectWalletHandler = useCallback(function (fn) {
|
|
238
|
+
storeActions.setDisconnectWalletHandler(fn);
|
|
239
|
+
}, [storeActions]);
|
|
240
|
+
/**
|
|
241
|
+
* Register the wallet connect cancelled handler.
|
|
242
|
+
*/
|
|
243
|
+
var setWalletConnectCancelledHandler = useCallback(function (fn) {
|
|
244
|
+
storeActions.setWalletConnectCancelledHandler(fn);
|
|
245
|
+
}, [storeActions]);
|
|
246
|
+
// -------------------------------------------------------------------------
|
|
247
|
+
// Deposit-Only Flow
|
|
248
|
+
// -------------------------------------------------------------------------
|
|
249
|
+
/**
|
|
250
|
+
* Initiates a deposit-only flow for users with active sessions.
|
|
251
|
+
* Returns false if no authenticated session exists, triggering fallback to regular flow.
|
|
252
|
+
*/
|
|
253
|
+
var startDepositFlow = useCallback(function () {
|
|
254
|
+
if (!nordUser || !nordUser.sessionId) {
|
|
255
|
+
logger.warn('[ModalProvider] startDepositFlow called without authenticated session; falling back to regular flow');
|
|
256
|
+
openModal();
|
|
257
|
+
return false;
|
|
258
|
+
}
|
|
259
|
+
var currentRequestId = useWalletStore.getState().ui.depositFlowRequestId;
|
|
260
|
+
logger.debug('[ModalProvider] starting deposit-only flow', {
|
|
261
|
+
hasSession: Boolean(nordUser.sessionId),
|
|
262
|
+
});
|
|
263
|
+
storeActions.setDepositFlowRequestId(currentRequestId + 1);
|
|
264
|
+
openModal();
|
|
265
|
+
return true;
|
|
266
|
+
}, [nordUser, openModal, storeActions]);
|
|
267
|
+
// -------------------------------------------------------------------------
|
|
268
|
+
// Context Value
|
|
269
|
+
// -------------------------------------------------------------------------
|
|
270
|
+
var value = useMemo(function () { return ({
|
|
271
|
+
// Derived state
|
|
272
|
+
showLogin: showLogin,
|
|
273
|
+
isOpen: isOpen,
|
|
274
|
+
isClosing: isClosing,
|
|
275
|
+
viewMode: viewMode,
|
|
276
|
+
depositFlowRequestId: depositFlowRequestId,
|
|
277
|
+
modalState: modalState,
|
|
278
|
+
showDynamicWidget: showDynamicWidget,
|
|
279
|
+
dynamicHandleLogOut: dynamicHandleLogOut,
|
|
280
|
+
disconnectWalletHandler: disconnectWalletHandler,
|
|
281
|
+
walletConnectCancelledHandler: walletConnectCancelledHandler,
|
|
282
|
+
// Actions
|
|
283
|
+
openModal: openModal,
|
|
284
|
+
closeModal: closeModal,
|
|
285
|
+
onCloseComplete: onCloseComplete,
|
|
286
|
+
setViewMode: setViewMode,
|
|
287
|
+
startDepositFlow: startDepositFlow,
|
|
288
|
+
setShowDynamicWidget: setShowDynamicWidget,
|
|
289
|
+
setDynamicHandleLogOut: setDynamicHandleLogOut,
|
|
290
|
+
setDisconnectWalletHandler: setDisconnectWalletHandler,
|
|
291
|
+
setWalletConnectCancelledHandler: setWalletConnectCancelledHandler,
|
|
292
|
+
}); }, [
|
|
293
|
+
showLogin,
|
|
294
|
+
isOpen,
|
|
295
|
+
isClosing,
|
|
296
|
+
viewMode,
|
|
297
|
+
depositFlowRequestId,
|
|
298
|
+
modalState,
|
|
299
|
+
showDynamicWidget,
|
|
300
|
+
dynamicHandleLogOut,
|
|
301
|
+
disconnectWalletHandler,
|
|
302
|
+
walletConnectCancelledHandler,
|
|
303
|
+
openModal,
|
|
304
|
+
closeModal,
|
|
305
|
+
onCloseComplete,
|
|
306
|
+
setViewMode,
|
|
307
|
+
startDepositFlow,
|
|
308
|
+
setShowDynamicWidget,
|
|
309
|
+
setDynamicHandleLogOut,
|
|
310
|
+
setDisconnectWalletHandler,
|
|
311
|
+
setWalletConnectCancelledHandler,
|
|
312
|
+
]);
|
|
313
|
+
return _jsx(ModalContext.Provider, { value: value, children: children });
|
|
314
|
+
}
|
|
315
|
+
// ---------------------------------------------------------------------------
|
|
316
|
+
// Exports
|
|
317
|
+
// ---------------------------------------------------------------------------
|
|
318
|
+
export { ModalContext };
|
|
319
|
+
//# sourceMappingURL=ModalProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModalProvider.js","sourceRoot":"","sources":["../../../../src/providers/N1WalletProvider/ModalProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["'use client';\n\nimport React, {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { N1ModalViewMode } from '../../types/wallet';\nimport { logger } from '../../utils/logger';\nimport { EVENTS, createModalEvent } from '../../utils/events';\nimport { useWalletStore, getWalletActions, WalletStore } from '../../store';\nimport { MODAL_COOLDOWN_MS } from '../../store/slices/uiSlice';\nimport type { ModalState, ShowDynamicWidgetFn, DynamicLogoutFn, DisconnectWalletFn, WalletConnectCancelledFn } from '../../store/types';\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface ModalStateValues {\n /** Whether the modal is visible (opening, open, or closing) */\n showLogin: boolean;\n /** Whether the modal is fully open and interactive */\n isOpen: boolean;\n /** Whether the modal is in the process of closing (for animations) */\n isClosing: boolean;\n /** Current view mode for the modal (debug override or Automatic) */\n viewMode: N1ModalViewMode;\n /** Monotonically increasing ID to trigger deposit-only flows */\n depositFlowRequestId: number;\n /** Raw modal state for advanced use cases */\n modalState: ModalState;\n /** Function to show/hide the Dynamic SDK wallet widget */\n showDynamicWidget: ShowDynamicWidgetFn;\n /** Function to handle Dynamic SDK logout */\n dynamicHandleLogOut: DynamicLogoutFn;\n /** Handler called when wallet is disconnected */\n disconnectWalletHandler: DisconnectWalletFn;\n /** Handler called when wallet connection is cancelled */\n walletConnectCancelledHandler: WalletConnectCancelledFn;\n}\n\nexport interface ModalActions {\n /**\n * Opens the modal (transitions: closed → opening → open).\n * Subject to cooldown and SDK readiness checks.\n */\n openModal: () => void;\n /**\n * Closes the modal (transitions: open → closing → closed).\n * Triggers exit animation and cooldown.\n */\n closeModal: () => void;\n /**\n * Called when close animation completes.\n * Transitions: closing → closed, starts cooldown.\n */\n onCloseComplete: () => void;\n /**\n * Sets the view mode for debug overrides.\n * Use N1ModalViewMode.Automatic for normal operation.\n */\n setViewMode: (mode: N1ModalViewMode) => void;\n /**\n * Initiates a deposit-only flow for authenticated users.\n * Returns true if the flow was started, false if fallback to regular flow.\n */\n startDepositFlow: () => boolean;\n /**\n * Register the Dynamic SDK widget show function.\n */\n setShowDynamicWidget: (fn: ShowDynamicWidgetFn) => void;\n /**\n * Register the Dynamic SDK logout function.\n */\n setDynamicHandleLogOut: (fn: DynamicLogoutFn) => void;\n /**\n * Register the disconnect wallet handler.\n */\n setDisconnectWalletHandler: (fn: DisconnectWalletFn) => void;\n /**\n * Register the wallet connect cancelled handler.\n */\n setWalletConnectCancelledHandler: (fn: WalletConnectCancelledFn) => void;\n}\n\nexport interface ModalContextValue extends ModalStateValues, ModalActions {}\n\nexport interface ModalProviderProps {\n children: React.ReactNode;\n}\n\n// ---------------------------------------------------------------------------\n// Context\n// ---------------------------------------------------------------------------\n\nconst ModalContext = createContext<ModalContextValue | null>(null);\n\n// ---------------------------------------------------------------------------\n// Hooks\n// ---------------------------------------------------------------------------\n\n/**\n * Hook to access modal state and actions.\n * Must be used within a ModalProvider.\n */\nexport function useModal(): ModalContextValue {\n const context = useContext(ModalContext);\n if (!context) {\n throw new Error('useModal must be used within a ModalProvider');\n }\n return context;\n}\n\n/**\n * Hook to access modal state only (no actions).\n * Useful for components that only need to read state.\n */\nexport function useModalState(): ModalStateValues {\n const { showLogin, isOpen, isClosing, viewMode, depositFlowRequestId, modalState, showDynamicWidget, dynamicHandleLogOut, disconnectWalletHandler, walletConnectCancelledHandler } = useModal();\n return { showLogin, isOpen, isClosing, viewMode, depositFlowRequestId, modalState, showDynamicWidget, dynamicHandleLogOut, disconnectWalletHandler, walletConnectCancelledHandler };\n}\n\n/**\n * Hook to access modal actions only (no state).\n * Useful for components that only need to trigger actions.\n */\nexport function useModalActions(): ModalActions {\n const { openModal, closeModal, onCloseComplete, setViewMode, startDepositFlow, setShowDynamicWidget, setDynamicHandleLogOut, setDisconnectWalletHandler, setWalletConnectCancelledHandler } = useModal();\n return { openModal, closeModal, onCloseComplete, setViewMode, startDepositFlow, setShowDynamicWidget, setDynamicHandleLogOut, setDisconnectWalletHandler, setWalletConnectCancelledHandler };\n}\n\n// ---------------------------------------------------------------------------\n// State Machine Helpers\n// ---------------------------------------------------------------------------\n\n/**\n * Valid state transitions for the modal state machine.\n */\nconst VALID_TRANSITIONS: Record<ModalState, ModalState[]> = {\n closed: ['opening'],\n opening: ['open', 'closed'],\n open: ['closing'],\n closing: ['closed'],\n};\n\n/**\n * Check if a transition is valid.\n */\nfunction isValidTransition(from: ModalState, to: ModalState): boolean {\n return VALID_TRANSITIONS[from]?.includes(to) ?? false;\n}\n\n// ---------------------------------------------------------------------------\n// Provider\n// ---------------------------------------------------------------------------\n\n/**\n * ModalProvider manages all modal-related state via a state machine.\n *\n * State Machine:\n * closed → opening (user clicks connect)\n * opening → open (SDK ready)\n * opening → closed (cancelled before ready)\n * open → closing (user closes modal)\n * closing → closed (animation complete, cooldown starts)\n *\n * Responsibilities:\n * - Modal state machine transitions\n * - Cooldown protection between open/close cycles\n * - Deposit-only flow initiation\n * - Deferred modal open until Dynamic SDK is ready\n *\n * Does NOT handle:\n * - Wallet connection state\n * - Session/signing state\n * - Network/chain state\n * - Theming/styling\n */\nexport function ModalProvider({ children }: ModalProviderProps) {\n // -------------------------------------------------------------------------\n // State from Store (UI slice)\n // -------------------------------------------------------------------------\n\n const modalState = useWalletStore((state: WalletStore) => state.ui.modalState);\n const viewMode = useWalletStore((state: WalletStore) => state.ui.viewMode);\n const depositFlowRequestId = useWalletStore((state: WalletStore) => state.ui.depositFlowRequestId);\n const modalCooldownUntil = useWalletStore((state: WalletStore) => state.ui.modalCooldownUntil);\n const showDynamicWidget = useWalletStore((state: WalletStore) => state.ui.showDynamicWidget);\n const dynamicHandleLogOut = useWalletStore((state: WalletStore) => state.ui.dynamicHandleLogOut);\n const disconnectWalletHandler = useWalletStore((state: WalletStore) => state.ui.disconnectWalletHandler);\n const walletConnectCancelledHandler = useWalletStore((state: WalletStore) => state.ui.walletConnectCancelledHandler);\n\n // -------------------------------------------------------------------------\n // Dependencies from Store (session slice) - no more prop drilling!\n // -------------------------------------------------------------------------\n\n const dynamicSdkHasLoaded = useWalletStore((state: WalletStore) => state.session.dynamicSdkLoaded);\n const nordUser = useWalletStore((state: WalletStore) => state.session.nordUser);\n\n // Derived state for backwards compatibility\n const showLogin = modalState !== 'closed';\n const isOpen = modalState === 'open';\n const isClosing = modalState === 'closing';\n\n // Get stable action references\n const storeActions = getWalletActions().ui;\n\n // Ref for pending open requests (when SDK not ready)\n const pendingOpenRef = useRef(false);\n\n // -------------------------------------------------------------------------\n // State Machine Transitions\n // -------------------------------------------------------------------------\n\n /**\n * Transition to a new modal state with validation.\n */\n const transition = useCallback(\n (to: ModalState) => {\n const from = useWalletStore.getState().ui.modalState;\n\n if (!isValidTransition(from, to)) {\n logger.warn('[ModalProvider] Invalid transition', { from, to });\n return false;\n }\n\n logger.debug('[ModalProvider] Transition', { from, to });\n storeActions.setModalState(to);\n\n // Log events for analytics\n if (to === 'open') {\n logger.event(createModalEvent(EVENTS.MODAL.OPEN, {}));\n } else if (to === 'closed' && from === 'closing') {\n logger.event(createModalEvent(EVENTS.MODAL.CLOSE, {}));\n }\n\n return true;\n },\n [storeActions]\n );\n\n // -------------------------------------------------------------------------\n // Modal Actions\n // -------------------------------------------------------------------------\n\n /**\n * Opens the modal. Handles cooldown and SDK readiness.\n */\n const openModal = useCallback(() => {\n const currentState = useWalletStore.getState().ui.modalState;\n const cooldownUntil = useWalletStore.getState().ui.modalCooldownUntil;\n\n logger.debug('[ModalProvider] openModal called', {\n currentState,\n dynamicSdkHasLoaded,\n cooldownUntil,\n now: Date.now(),\n });\n\n // Already open or opening\n if (currentState !== 'closed') {\n logger.debug('[ModalProvider] openModal ignored - not in closed state');\n return;\n }\n\n // Check cooldown\n if (Date.now() < cooldownUntil) {\n logger.debug('[ModalProvider] openModal blocked by cooldown');\n return;\n }\n\n // Defer if SDK not ready\n if (!dynamicSdkHasLoaded) {\n logger.debug('[ModalProvider] openModal deferred - SDK not ready');\n pendingOpenRef.current = true;\n transition('opening');\n return;\n }\n\n // Transition to opening, then immediately to open\n transition('opening');\n // Since SDK is ready, go directly to open\n transition('open');\n }, [dynamicSdkHasLoaded, transition]);\n\n /**\n * Effect: When Dynamic SDK becomes ready, complete pending open.\n */\n useEffect(() => {\n const currentState = useWalletStore.getState().ui.modalState;\n\n if (dynamicSdkHasLoaded && currentState === 'opening') {\n logger.debug('[ModalProvider] SDK ready, completing open transition');\n pendingOpenRef.current = false;\n transition('open');\n }\n }, [dynamicSdkHasLoaded, transition]);\n\n /**\n * Closes the modal (starts closing animation).\n */\n const closeModal = useCallback(() => {\n const currentState = useWalletStore.getState().ui.modalState;\n\n logger.debug('[ModalProvider] closeModal called', { currentState });\n\n if (currentState === 'opening') {\n // Cancel before fully open\n transition('closed');\n return;\n }\n\n if (currentState === 'open') {\n transition('closing');\n return;\n }\n\n logger.debug('[ModalProvider] closeModal ignored - not in open/opening state');\n }, [transition]);\n\n /**\n * Called when close animation completes.\n */\n const onCloseComplete = useCallback(() => {\n const currentState = useWalletStore.getState().ui.modalState;\n\n if (currentState !== 'closing') {\n logger.debug('[ModalProvider] onCloseComplete ignored - not in closing state');\n return;\n }\n\n // Start cooldown\n const cooldownUntil = Date.now() + MODAL_COOLDOWN_MS;\n storeActions.setModalCooldownUntil(cooldownUntil);\n logger.debug('[ModalProvider] Cooldown started', { cooldownUntil });\n\n // Complete transition\n transition('closed');\n }, [storeActions, transition]);\n\n /**\n * Sets the view mode for debug overrides.\n */\n const setViewMode = useCallback(\n (mode: N1ModalViewMode) => {\n storeActions.setViewMode(mode);\n },\n [storeActions]\n );\n\n /**\n * Register the Dynamic SDK widget show function.\n */\n const setShowDynamicWidget = useCallback(\n (fn: ShowDynamicWidgetFn) => {\n storeActions.setShowDynamicWidget(fn);\n },\n [storeActions]\n );\n\n /**\n * Register the Dynamic SDK logout function.\n */\n const setDynamicHandleLogOut = useCallback(\n (fn: DynamicLogoutFn) => {\n storeActions.setDynamicHandleLogOut(fn);\n },\n [storeActions]\n );\n\n /**\n * Register the disconnect wallet handler.\n */\n const setDisconnectWalletHandler = useCallback(\n (fn: DisconnectWalletFn) => {\n storeActions.setDisconnectWalletHandler(fn);\n },\n [storeActions]\n );\n\n /**\n * Register the wallet connect cancelled handler.\n */\n const setWalletConnectCancelledHandler = useCallback(\n (fn: WalletConnectCancelledFn) => {\n storeActions.setWalletConnectCancelledHandler(fn);\n },\n [storeActions]\n );\n\n // -------------------------------------------------------------------------\n // Deposit-Only Flow\n // -------------------------------------------------------------------------\n\n /**\n * Initiates a deposit-only flow for users with active sessions.\n * Returns false if no authenticated session exists, triggering fallback to regular flow.\n */\n const startDepositFlow = useCallback(() => {\n if (!nordUser || !nordUser.sessionId) {\n logger.warn(\n '[ModalProvider] startDepositFlow called without authenticated session; falling back to regular flow'\n );\n openModal();\n return false;\n }\n\n const currentRequestId = useWalletStore.getState().ui.depositFlowRequestId;\n\n logger.debug('[ModalProvider] starting deposit-only flow', {\n hasSession: Boolean(nordUser.sessionId),\n });\n\n storeActions.setDepositFlowRequestId(currentRequestId + 1);\n openModal();\n return true;\n }, [nordUser, openModal, storeActions]);\n\n // -------------------------------------------------------------------------\n // Context Value\n // -------------------------------------------------------------------------\n\n const value = useMemo<ModalContextValue>(\n () => ({\n // Derived state\n showLogin,\n isOpen,\n isClosing,\n viewMode,\n depositFlowRequestId,\n modalState,\n showDynamicWidget,\n dynamicHandleLogOut,\n disconnectWalletHandler,\n walletConnectCancelledHandler,\n // Actions\n openModal,\n closeModal,\n onCloseComplete,\n setViewMode,\n startDepositFlow,\n setShowDynamicWidget,\n setDynamicHandleLogOut,\n setDisconnectWalletHandler,\n setWalletConnectCancelledHandler,\n }),\n [\n showLogin,\n isOpen,\n isClosing,\n viewMode,\n depositFlowRequestId,\n modalState,\n showDynamicWidget,\n dynamicHandleLogOut,\n disconnectWalletHandler,\n walletConnectCancelledHandler,\n openModal,\n closeModal,\n onCloseComplete,\n setViewMode,\n startDepositFlow,\n setShowDynamicWidget,\n setDynamicHandleLogOut,\n setDisconnectWalletHandler,\n setWalletConnectCancelledHandler,\n ]\n );\n\n return <ModalContext.Provider value={value}>{children}</ModalContext.Provider>;\n}\n\n// ---------------------------------------------------------------------------\n// Exports\n// ---------------------------------------------------------------------------\n\nexport { ModalContext };\n"]}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { SolanaWalletAdapter, EVMWalletAdapter } from '../../adapters';
|
|
3
|
+
import type { Balance } from '../../types/wallet';
|
|
4
|
+
export type WalletNetworkType = 'solana' | 'evm' | null;
|
|
5
|
+
export interface NetworkState {
|
|
6
|
+
/** Current active wallet network */
|
|
7
|
+
walletNetwork: WalletNetworkType;
|
|
8
|
+
/** Whether the wallet is in Solana mode */
|
|
9
|
+
isSolanaMode: boolean;
|
|
10
|
+
/** Whether the wallet is in EVM mode */
|
|
11
|
+
isEvmMode: boolean;
|
|
12
|
+
/** Solana wallet address */
|
|
13
|
+
solanaAddress: string;
|
|
14
|
+
/** EVM wallet address */
|
|
15
|
+
evmAddress: string | null;
|
|
16
|
+
/** Current EVM chain identifier */
|
|
17
|
+
evmChain: string | null;
|
|
18
|
+
/** User's preferred wallet network (before wallet connects) */
|
|
19
|
+
preferredWalletNetwork: WalletNetworkType;
|
|
20
|
+
/** The connected Solana wallet instance */
|
|
21
|
+
solanaWallet: any;
|
|
22
|
+
/** The connected EVM wallet instance */
|
|
23
|
+
evmWallet: any;
|
|
24
|
+
/** Unified Solana wallet adapter (null if not connected) */
|
|
25
|
+
solanaAdapter: SolanaWalletAdapter | null;
|
|
26
|
+
/** Unified EVM wallet adapter (null if not connected) */
|
|
27
|
+
evmAdapter: EVMWalletAdapter | null;
|
|
28
|
+
/** Token balances from the wallet */
|
|
29
|
+
balances: Balance[];
|
|
30
|
+
}
|
|
31
|
+
export interface NetworkActions {
|
|
32
|
+
/** Set the Solana wallet address */
|
|
33
|
+
setSolanaAddress: (address: string) => void;
|
|
34
|
+
/** Set the EVM wallet address */
|
|
35
|
+
setEvmAddress: React.Dispatch<React.SetStateAction<string | null>>;
|
|
36
|
+
/** Set the current EVM chain */
|
|
37
|
+
setEvmChain: React.Dispatch<React.SetStateAction<string | null>>;
|
|
38
|
+
/** Set the preferred wallet network */
|
|
39
|
+
setPreferredWalletNetwork: (network: WalletNetworkType) => void;
|
|
40
|
+
/** Set the Solana wallet instance */
|
|
41
|
+
setSolanaWallet: (wallet: any) => void;
|
|
42
|
+
/** Set the EVM wallet instance */
|
|
43
|
+
setEvmWallet: (wallet: any) => void;
|
|
44
|
+
/** Set the token balances */
|
|
45
|
+
setBalances: (balances: Balance[]) => void;
|
|
46
|
+
}
|
|
47
|
+
export interface NetworkContextValue extends NetworkState, NetworkActions {
|
|
48
|
+
}
|
|
49
|
+
export interface NetworkProviderProps {
|
|
50
|
+
children: React.ReactNode;
|
|
51
|
+
}
|
|
52
|
+
declare const NetworkContext: React.Context<NetworkContextValue | null>;
|
|
53
|
+
/**
|
|
54
|
+
* Hook to access network state and actions.
|
|
55
|
+
* Must be used within a NetworkProvider.
|
|
56
|
+
*/
|
|
57
|
+
export declare function useNetwork(): NetworkContextValue;
|
|
58
|
+
/**
|
|
59
|
+
* Hook to access network state only (no actions).
|
|
60
|
+
* Useful for components that only need to read state.
|
|
61
|
+
*/
|
|
62
|
+
export declare function useNetworkState(): NetworkState;
|
|
63
|
+
/**
|
|
64
|
+
* Hook to access network actions only (no state).
|
|
65
|
+
* Useful for components that only need to trigger actions.
|
|
66
|
+
*/
|
|
67
|
+
export declare function useNetworkActions(): NetworkActions;
|
|
68
|
+
/**
|
|
69
|
+
* NetworkProvider manages wallet network state.
|
|
70
|
+
*
|
|
71
|
+
* Responsibilities:
|
|
72
|
+
* - Track which network is active (Solana vs EVM)
|
|
73
|
+
* - Store wallet addresses for both networks
|
|
74
|
+
* - Store wallet instances
|
|
75
|
+
* - Derive isSolanaMode/isEvmMode from walletNetwork
|
|
76
|
+
* - Auto-detect network from connected wallet
|
|
77
|
+
*
|
|
78
|
+
* Does NOT handle:
|
|
79
|
+
* - Modal state
|
|
80
|
+
* - Session/authentication state
|
|
81
|
+
* - Signing functions
|
|
82
|
+
* - Theming
|
|
83
|
+
*
|
|
84
|
+
* NOTE: Uses clean Zustand approach - reads/writes directly from store.
|
|
85
|
+
* TurnkeyProvider was fixed to not reset during bootstrap, preventing race conditions.
|
|
86
|
+
*/
|
|
87
|
+
export declare function NetworkProvider({ children }: NetworkProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
88
|
+
export { NetworkContext };
|