@n1xyz/wallet-widget 0.0.35-alpha.2 → 0.0.35-alpha.20
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/adapters/evm.js.map +1 -0
- package/dist/adapters/factory.js.map +1 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/solana.js.map +1 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/animations/N1Loader.js.map +1 -0
- package/dist/animations/Processing.js.map +1 -0
- package/dist/bridge-assist/cctp-solana.d.ts +1 -0
- package/dist/bridge-assist/cctp-solana.js +12 -6
- package/dist/bridge-assist/cctp-solana.js.map +1 -1
- package/dist/components/LoadingFallback.js.map +1 -0
- package/dist/components/Logo.js.map +1 -0
- package/dist/components/N1ConnectButton.js.map +1 -0
- package/dist/components/logos/ArbitrumLogo.js.map +1 -0
- package/dist/components/logos/BaseLogo.js.map +1 -0
- package/dist/components/logos/BeraLogo.js.map +1 -0
- package/dist/components/logos/BitcoinLogo.js.map +1 -0
- package/dist/components/logos/EthereumLogo.js.map +1 -0
- package/dist/components/logos/HyperliquidLogo.js.map +1 -0
- package/dist/components/logos/OptimismLogo.js.map +1 -0
- package/dist/components/logos/SolanaLogo.js.map +1 -0
- package/dist/components/logos/ZeroOneLogo.js.map +1 -0
- package/dist/components/logos/index.js.map +1 -0
- package/dist/{src/config → config}/chains.js +45 -15
- package/dist/config/chains.js.map +1 -0
- package/dist/config/dynamic.js.map +1 -0
- package/dist/config/solana.js.map +1 -0
- package/dist/config/turnkey.js.map +1 -0
- package/dist/context/n1-wallet-context.js.map +1 -0
- package/dist/errors/types.js.map +1 -0
- package/dist/features/onboarding-flow/N1WalletModal.js.map +1 -0
- package/dist/features/onboarding-flow/OnboardingFlow.js.map +1 -0
- package/dist/{src/features → features}/onboarding-flow/bridge-assist/client.js +0 -1
- package/dist/features/onboarding-flow/bridge-assist/client.js.map +1 -0
- package/dist/features/onboarding-flow/bridge-assist/config.js.map +1 -0
- package/dist/features/onboarding-flow/bridge-assist/index.js.map +1 -0
- package/dist/features/onboarding-flow/bridge-assist/types.js.map +1 -0
- package/dist/{src/features → features}/onboarding-flow/cctp/bridgeKitClient.d.ts +1 -0
- package/dist/{src/features → features}/onboarding-flow/cctp/bridgeKitClient.js +71 -12
- package/dist/features/onboarding-flow/cctp/bridgeKitClient.js.map +1 -0
- package/dist/features/onboarding-flow/cctp/clientFactory.js.map +1 -0
- package/dist/features/onboarding-flow/cctp/config.js.map +1 -0
- package/dist/features/onboarding-flow/cctp/mockCctpClient.js.map +1 -0
- package/dist/{src/features → features}/onboarding-flow/cctp/solanaClaim.d.ts +1 -1
- package/dist/features/onboarding-flow/cctp/solanaClaim.js +2 -0
- package/dist/features/onboarding-flow/cctp/solanaClaim.js.map +1 -0
- package/dist/features/onboarding-flow/cctp/types.js.map +1 -0
- package/dist/features/onboarding-flow/components/ChainButton.js.map +1 -0
- package/dist/features/onboarding-flow/components/Header.js.map +1 -0
- package/dist/features/onboarding-flow/components/ImageWithFallback.js.map +1 -0
- package/dist/{src/features → features}/onboarding-flow/components/TransactionTable.js +6 -1
- package/dist/features/onboarding-flow/components/TransactionTable.js.map +1 -0
- package/dist/features/onboarding-flow/components/WaitingMessage.js.map +1 -0
- package/dist/features/onboarding-flow/components/index.js.map +1 -0
- package/dist/features/onboarding-flow/errors/depositError.js.map +1 -0
- package/dist/{src/features → features}/onboarding-flow/hooks/useBridgeDeposit.js +60 -15
- package/dist/features/onboarding-flow/hooks/useBridgeDeposit.js.map +1 -0
- package/dist/features/onboarding-flow/hooks/useDepositAuth.js.map +1 -0
- package/dist/features/onboarding-flow/hooks/useDepositHydration.js.map +1 -0
- package/dist/{src/features → features}/onboarding-flow/hooks/usePendingDepositState.js +27 -2
- package/dist/features/onboarding-flow/hooks/usePendingDepositState.js.map +1 -0
- package/dist/{src/features → features}/onboarding-flow/hooks/useSolanaDeposit.js +1 -1
- package/dist/features/onboarding-flow/hooks/useSolanaDeposit.js.map +1 -0
- package/dist/features/onboarding-flow/index.js.map +1 -0
- package/dist/{src/features → features}/onboarding-flow/providers/DepositFlowProvider.js +9 -4
- package/dist/features/onboarding-flow/providers/DepositFlowProvider.js.map +1 -0
- package/dist/{src/features → features}/onboarding-flow/providers/OnboardingStateProvider.js +2 -4
- package/dist/features/onboarding-flow/providers/OnboardingStateProvider.js.map +1 -0
- package/dist/features/onboarding-flow/providers/StateProvider.js.map +1 -0
- package/dist/{src/features → features}/onboarding-flow/providers/WalletConnectionProvider.js +136 -74
- package/dist/features/onboarding-flow/providers/WalletConnectionProvider.js.map +1 -0
- package/dist/{src/features → features}/onboarding-flow/providers/debug.js +14 -1
- package/dist/features/onboarding-flow/providers/debug.js.map +1 -0
- package/dist/features/onboarding-flow/providers/index.js.map +1 -0
- package/dist/features/onboarding-flow/providers/onboardingStateMachine.js.map +1 -0
- package/dist/features/onboarding-flow/screens/00-EntrySelectionScreen.js.map +1 -0
- package/dist/features/onboarding-flow/screens/01-ConnectWalletScreen.js.map +1 -0
- package/dist/features/onboarding-flow/screens/02-TurnkeyAuthScreen.js.map +1 -0
- package/dist/features/onboarding-flow/screens/03-TurnkeyPreparingScreen.js.map +1 -0
- package/dist/features/onboarding-flow/screens/04-ChainSelectionScreen.js.map +1 -0
- package/dist/{src/features → features}/onboarding-flow/screens/05-AmountInputScreen.d.ts +1 -1
- package/dist/{src/features → features}/onboarding-flow/screens/05-AmountInputScreen.js +25 -6
- package/dist/features/onboarding-flow/screens/05-AmountInputScreen.js.map +1 -0
- package/dist/{src/features → features}/onboarding-flow/screens/06-DepositProgressScreen.js +12 -21
- package/dist/features/onboarding-flow/screens/06-DepositProgressScreen.js.map +1 -0
- package/dist/features/onboarding-flow/screens/07-DepositSuccessScreen.js.map +1 -0
- package/dist/features/onboarding-flow/screens/08-AuthLoadingScreen.js.map +1 -0
- package/dist/features/onboarding-flow/screens/09-ErrorScreen.js.map +1 -0
- package/dist/features/onboarding-flow/screens/index.js.map +1 -0
- package/dist/features/onboarding-flow/turnkey/turnkeySessionMachine.js.map +1 -0
- package/dist/features/onboarding-flow/types.js.map +1 -0
- package/dist/features/onboarding-flow/utils/bridgeUtils.js.map +1 -0
- package/dist/features/onboarding-flow/utils/deposit/attestationUtils.js.map +1 -0
- package/dist/features/onboarding-flow/utils/deposit/bridgeUtils.js.map +1 -0
- package/dist/{src/features → features}/onboarding-flow/utils/deposit/claimConfirmation.js +41 -7
- package/dist/features/onboarding-flow/utils/deposit/claimConfirmation.js.map +1 -0
- package/dist/{src/features → features}/onboarding-flow/utils/deposit/claimSubmission.d.ts +1 -1
- package/dist/{src/features → features}/onboarding-flow/utils/deposit/claimSubmission.js +58 -37
- package/dist/features/onboarding-flow/utils/deposit/claimSubmission.js.map +1 -0
- package/dist/features/onboarding-flow/utils/deposit/depositPolling.js.map +1 -0
- package/dist/features/onboarding-flow/utils/deposit/evmTxInterceptor.js.map +1 -0
- package/dist/features/onboarding-flow/utils/deposit/nonceUtils.js.map +1 -0
- package/dist/{src/features → features}/onboarding-flow/utils/deposit/solanaDepositTransaction.d.ts +2 -1
- package/dist/features/onboarding-flow/utils/deposit/solanaDepositTransaction.js +14 -0
- package/dist/features/onboarding-flow/utils/deposit/solanaDepositTransaction.js.map +1 -0
- package/dist/features/onboarding-flow/utils/deposit/solanaUtils.js.map +1 -0
- package/dist/features/onboarding-flow/utils/deposit/storage.js.map +1 -0
- package/dist/features/onboarding-flow/utils/deposit/walletUtils.js.map +1 -0
- package/dist/features/onboarding-flow/utils/depositPolling.js.map +1 -0
- package/dist/features/onboarding-flow/utils/explorerUrl.js.map +1 -0
- package/dist/features/onboarding-flow/utils/nordUtils.js.map +1 -0
- package/dist/features/onboarding-flow/utils/pendingDepositCookie.js.map +1 -0
- package/dist/features/onboarding-flow/utils/pendingDepositStorage.js.map +1 -0
- package/dist/features/onboarding-flow/utils/utils.js.map +1 -0
- package/dist/features/onboarding-flow/utils/withImageFallback.js.map +1 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/useN1Wallet.js.map +1 -0
- package/dist/hooks/useNordUserInitialization.js.map +1 -0
- package/dist/index.js.map +1 -0
- package/dist/main.css +1 -1
- package/dist/{src/providers → providers}/LazyWalletProvider.js +105 -57
- package/dist/providers/LazyWalletProvider.js.map +1 -0
- package/dist/providers/N1WalletProvider/ContextBridge.js.map +1 -0
- package/dist/providers/N1WalletProvider/ModalProvider.js.map +1 -0
- package/dist/providers/N1WalletProvider/NetworkProvider.js.map +1 -0
- package/dist/providers/N1WalletProvider/SessionProvider.js.map +1 -0
- package/dist/providers/N1WalletProvider/SigningProvider.js.map +1 -0
- package/dist/providers/N1WalletProvider/ThemingProvider.js.map +1 -0
- package/dist/providers/N1WalletProvider/index.js.map +1 -0
- package/dist/providers/N1WalletProvider.js.map +1 -0
- package/dist/providers/ShadowRootWrapper.js.map +1 -0
- package/dist/providers/WalletErrorBoundary.js.map +1 -0
- package/dist/services/bootstrap/DepositRecoveryService.js.map +1 -0
- package/dist/services/bootstrap/DynamicSdkService.js.map +1 -0
- package/dist/services/bootstrap/SessionBootstrapService.js.map +1 -0
- package/dist/services/bootstrap/TurnkeyBootstrapService.js.map +1 -0
- package/dist/services/bootstrap/index.js.map +1 -0
- package/dist/services/bootstrap/types.js.map +1 -0
- package/dist/services/storage/StorageService.js.map +1 -0
- package/dist/services/storage/index.js.map +1 -0
- package/dist/services/storage/keys.js.map +1 -0
- package/dist/services/storage/types.js.map +1 -0
- package/dist/store/index.js.map +1 -0
- package/dist/store/selectors.js.map +1 -0
- package/dist/store/slices/bootstrapSlice.js.map +1 -0
- package/dist/store/slices/configSlice.js.map +1 -0
- package/dist/store/slices/index.js.map +1 -0
- package/dist/store/slices/sessionSlice.js.map +1 -0
- package/dist/store/slices/signingSlice.js.map +1 -0
- package/dist/store/slices/uiSlice.js.map +1 -0
- package/dist/store/slices/walletSlice.js.map +1 -0
- package/dist/store/store.js.map +1 -0
- package/dist/store/subscriptions/depositPersistence.js.map +1 -0
- package/dist/store/subscriptions/index.js.map +1 -0
- package/dist/store/subscriptions/turnkeyPersistence.js.map +1 -0
- package/dist/store/types.js.map +1 -0
- package/dist/styles/cdn-fonts.js.map +1 -0
- package/dist/styles/embedded-main-css.js.map +1 -0
- package/dist/turnkey/TurnkeyProvider.js.map +1 -0
- package/dist/turnkey/createTurnkeyWallet.js.map +1 -0
- package/dist/turnkey/createWalletProvider.js.map +1 -0
- package/dist/turnkey/index.js.map +1 -0
- package/dist/turnkey/turnkeySessionMachine.js.map +1 -0
- package/dist/turnkey/turnkeySessionStorage.js.map +1 -0
- package/dist/turnkey/types.js.map +1 -0
- package/dist/types/wallet.js.map +1 -0
- package/dist/utils/address.js.map +1 -0
- package/dist/utils/chain.js.map +1 -0
- package/dist/utils/ed25519.js.map +1 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/events.js.map +1 -0
- package/dist/utils/formatAmount.js.map +1 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/shortenString.js.map +1 -0
- package/package.json +16 -34
- package/LICENSE +0 -44
- package/README.md +0 -197
- package/dist/src/adapters/evm.js.map +0 -1
- package/dist/src/adapters/factory.js.map +0 -1
- package/dist/src/adapters/index.js.map +0 -1
- package/dist/src/adapters/solana.js.map +0 -1
- package/dist/src/adapters/types.js.map +0 -1
- package/dist/src/animations/N1Loader.js.map +0 -1
- package/dist/src/animations/N1Loader.json +0 -1
- package/dist/src/animations/Processing.js.map +0 -1
- package/dist/src/animations/Processing.json +0 -1
- package/dist/src/components/LoadingFallback.js.map +0 -1
- package/dist/src/components/Logo.js.map +0 -1
- package/dist/src/components/N1ConnectButton.js.map +0 -1
- package/dist/src/components/logos/ArbitrumLogo.js.map +0 -1
- package/dist/src/components/logos/BaseLogo.js.map +0 -1
- package/dist/src/components/logos/BeraLogo.js.map +0 -1
- package/dist/src/components/logos/BitcoinLogo.js.map +0 -1
- package/dist/src/components/logos/EthereumLogo.js.map +0 -1
- package/dist/src/components/logos/HyperliquidLogo.js.map +0 -1
- package/dist/src/components/logos/OptimismLogo.js.map +0 -1
- package/dist/src/components/logos/SolanaLogo.js.map +0 -1
- package/dist/src/components/logos/ZeroOneLogo.js.map +0 -1
- package/dist/src/components/logos/index.js.map +0 -1
- package/dist/src/config/chains.js.map +0 -1
- package/dist/src/config/dynamic.js.map +0 -1
- package/dist/src/config/solana.js.map +0 -1
- package/dist/src/config/turnkey.js.map +0 -1
- package/dist/src/context/n1-wallet-context.js.map +0 -1
- package/dist/src/errors/types.js.map +0 -1
- package/dist/src/features/onboarding-flow/N1WalletModal.js.map +0 -1
- package/dist/src/features/onboarding-flow/OnboardingFlow.js.map +0 -1
- package/dist/src/features/onboarding-flow/bridge-assist/client.js.map +0 -1
- package/dist/src/features/onboarding-flow/bridge-assist/config.js.map +0 -1
- package/dist/src/features/onboarding-flow/bridge-assist/index.js.map +0 -1
- package/dist/src/features/onboarding-flow/bridge-assist/types.js.map +0 -1
- package/dist/src/features/onboarding-flow/cctp/bridgeKitClient.js.map +0 -1
- package/dist/src/features/onboarding-flow/cctp/clientFactory.js.map +0 -1
- package/dist/src/features/onboarding-flow/cctp/config.js.map +0 -1
- package/dist/src/features/onboarding-flow/cctp/mockCctpClient.js.map +0 -1
- package/dist/src/features/onboarding-flow/cctp/solanaClaim.js +0 -2
- package/dist/src/features/onboarding-flow/cctp/solanaClaim.js.map +0 -1
- package/dist/src/features/onboarding-flow/cctp/types.js.map +0 -1
- package/dist/src/features/onboarding-flow/components/ChainButton.js.map +0 -1
- package/dist/src/features/onboarding-flow/components/Header.js.map +0 -1
- package/dist/src/features/onboarding-flow/components/ImageWithFallback.js.map +0 -1
- package/dist/src/features/onboarding-flow/components/TransactionTable.js.map +0 -1
- package/dist/src/features/onboarding-flow/components/WaitingMessage.js.map +0 -1
- package/dist/src/features/onboarding-flow/components/index.js.map +0 -1
- package/dist/src/features/onboarding-flow/errors/depositError.js.map +0 -1
- package/dist/src/features/onboarding-flow/hooks/useBridgeDeposit.js.map +0 -1
- package/dist/src/features/onboarding-flow/hooks/useDepositAuth.js.map +0 -1
- package/dist/src/features/onboarding-flow/hooks/useDepositHydration.js.map +0 -1
- package/dist/src/features/onboarding-flow/hooks/usePendingDepositState.js.map +0 -1
- package/dist/src/features/onboarding-flow/hooks/useSolanaDeposit.js.map +0 -1
- package/dist/src/features/onboarding-flow/index.js.map +0 -1
- package/dist/src/features/onboarding-flow/providers/DepositFlowProvider.js.map +0 -1
- package/dist/src/features/onboarding-flow/providers/OnboardingStateProvider.js.map +0 -1
- package/dist/src/features/onboarding-flow/providers/StateProvider.js.map +0 -1
- package/dist/src/features/onboarding-flow/providers/WalletConnectionProvider.js.map +0 -1
- package/dist/src/features/onboarding-flow/providers/debug.js.map +0 -1
- package/dist/src/features/onboarding-flow/providers/index.js.map +0 -1
- package/dist/src/features/onboarding-flow/providers/onboardingStateMachine.js.map +0 -1
- package/dist/src/features/onboarding-flow/screens/00-EntrySelectionScreen.js.map +0 -1
- package/dist/src/features/onboarding-flow/screens/01-ConnectWalletScreen.js.map +0 -1
- package/dist/src/features/onboarding-flow/screens/02-TurnkeyAuthScreen.js.map +0 -1
- package/dist/src/features/onboarding-flow/screens/03-TurnkeyPreparingScreen.js.map +0 -1
- package/dist/src/features/onboarding-flow/screens/04-ChainSelectionScreen.js.map +0 -1
- package/dist/src/features/onboarding-flow/screens/05-AmountInputScreen.js.map +0 -1
- package/dist/src/features/onboarding-flow/screens/06-DepositProgressScreen.js.map +0 -1
- package/dist/src/features/onboarding-flow/screens/07-DepositSuccessScreen.js.map +0 -1
- package/dist/src/features/onboarding-flow/screens/08-AuthLoadingScreen.js.map +0 -1
- package/dist/src/features/onboarding-flow/screens/09-ErrorScreen.js.map +0 -1
- package/dist/src/features/onboarding-flow/screens/index.js.map +0 -1
- package/dist/src/features/onboarding-flow/turnkey/turnkeySessionMachine.js.map +0 -1
- package/dist/src/features/onboarding-flow/types.js.map +0 -1
- package/dist/src/features/onboarding-flow/utils/bridgeUtils.js.map +0 -1
- package/dist/src/features/onboarding-flow/utils/deposit/attestationUtils.js.map +0 -1
- package/dist/src/features/onboarding-flow/utils/deposit/bridgeUtils.js.map +0 -1
- package/dist/src/features/onboarding-flow/utils/deposit/claimConfirmation.js.map +0 -1
- package/dist/src/features/onboarding-flow/utils/deposit/claimSubmission.js.map +0 -1
- package/dist/src/features/onboarding-flow/utils/deposit/depositPolling.js.map +0 -1
- package/dist/src/features/onboarding-flow/utils/deposit/evmTxInterceptor.js.map +0 -1
- package/dist/src/features/onboarding-flow/utils/deposit/nonceUtils.js.map +0 -1
- package/dist/src/features/onboarding-flow/utils/deposit/solanaDepositTransaction.js +0 -8
- package/dist/src/features/onboarding-flow/utils/deposit/solanaDepositTransaction.js.map +0 -1
- package/dist/src/features/onboarding-flow/utils/deposit/solanaUtils.js.map +0 -1
- package/dist/src/features/onboarding-flow/utils/deposit/storage.js.map +0 -1
- package/dist/src/features/onboarding-flow/utils/deposit/walletUtils.js.map +0 -1
- package/dist/src/features/onboarding-flow/utils/depositPolling.js.map +0 -1
- package/dist/src/features/onboarding-flow/utils/explorerUrl.js.map +0 -1
- package/dist/src/features/onboarding-flow/utils/nordUtils.js.map +0 -1
- package/dist/src/features/onboarding-flow/utils/pendingDepositCookie.js.map +0 -1
- package/dist/src/features/onboarding-flow/utils/pendingDepositStorage.js.map +0 -1
- package/dist/src/features/onboarding-flow/utils/utils.js.map +0 -1
- package/dist/src/features/onboarding-flow/utils/withImageFallback.js.map +0 -1
- package/dist/src/hooks/index.js.map +0 -1
- package/dist/src/hooks/useN1Wallet.js.map +0 -1
- package/dist/src/hooks/useNordUserInitialization.js.map +0 -1
- package/dist/src/index.js.map +0 -1
- package/dist/src/providers/LazyWalletProvider.js.map +0 -1
- package/dist/src/providers/N1WalletProvider/ContextBridge.js.map +0 -1
- package/dist/src/providers/N1WalletProvider/ModalProvider.js.map +0 -1
- package/dist/src/providers/N1WalletProvider/NetworkProvider.js.map +0 -1
- package/dist/src/providers/N1WalletProvider/SessionProvider.js.map +0 -1
- package/dist/src/providers/N1WalletProvider/SigningProvider.js.map +0 -1
- package/dist/src/providers/N1WalletProvider/ThemingProvider.js.map +0 -1
- package/dist/src/providers/N1WalletProvider/index.js.map +0 -1
- package/dist/src/providers/N1WalletProvider.js.map +0 -1
- package/dist/src/providers/N1WalletProviderTemp.d.ts +0 -0
- package/dist/src/providers/N1WalletProviderTemp.js +0 -184
- package/dist/src/providers/N1WalletProviderTemp.js.map +0 -1
- package/dist/src/providers/ShadowRootWrapper.js.map +0 -1
- package/dist/src/providers/WalletErrorBoundary.js.map +0 -1
- package/dist/src/services/bootstrap/DepositRecoveryService.js.map +0 -1
- package/dist/src/services/bootstrap/DynamicSdkService.js.map +0 -1
- package/dist/src/services/bootstrap/SessionBootstrapService.js.map +0 -1
- package/dist/src/services/bootstrap/TurnkeyBootstrapService.js.map +0 -1
- package/dist/src/services/bootstrap/index.js.map +0 -1
- package/dist/src/services/bootstrap/types.js.map +0 -1
- package/dist/src/services/storage/StorageService.js.map +0 -1
- package/dist/src/services/storage/index.js.map +0 -1
- package/dist/src/services/storage/keys.js.map +0 -1
- package/dist/src/services/storage/types.js.map +0 -1
- package/dist/src/store/index.js.map +0 -1
- package/dist/src/store/selectors.js.map +0 -1
- package/dist/src/store/slices/bootstrapSlice.js.map +0 -1
- package/dist/src/store/slices/configSlice.js.map +0 -1
- package/dist/src/store/slices/index.js.map +0 -1
- package/dist/src/store/slices/sessionSlice.js.map +0 -1
- package/dist/src/store/slices/signingSlice.js.map +0 -1
- package/dist/src/store/slices/uiSlice.js.map +0 -1
- package/dist/src/store/slices/walletSlice.js.map +0 -1
- package/dist/src/store/store.js.map +0 -1
- package/dist/src/store/subscriptions/depositPersistence.js.map +0 -1
- package/dist/src/store/subscriptions/fontInjection.d.ts +0 -18
- package/dist/src/store/subscriptions/fontInjection.js +0 -90
- package/dist/src/store/subscriptions/fontInjection.js.map +0 -1
- package/dist/src/store/subscriptions/index.js.map +0 -1
- package/dist/src/store/subscriptions/turnkeyPersistence.js.map +0 -1
- package/dist/src/store/types.js.map +0 -1
- package/dist/src/styles/cdn-fonts.js.map +0 -1
- package/dist/src/styles/embedded-main-css.js.map +0 -1
- package/dist/src/turnkey/TurnkeyProvider.js.map +0 -1
- package/dist/src/turnkey/createTurnkeyWallet.js.map +0 -1
- package/dist/src/turnkey/createWalletProvider.js.map +0 -1
- package/dist/src/turnkey/index.js.map +0 -1
- package/dist/src/turnkey/turnkeySessionMachine.js.map +0 -1
- package/dist/src/turnkey/turnkeySessionStorage.js.map +0 -1
- package/dist/src/turnkey/types.js.map +0 -1
- package/dist/src/types/dynamic-wallets.d.ts +0 -104
- package/dist/src/types/dynamic-wallets.js +0 -8
- package/dist/src/types/dynamic-wallets.js.map +0 -1
- package/dist/src/types/wallet.js.map +0 -1
- package/dist/src/utils/address.js.map +0 -1
- package/dist/src/utils/chain.js.map +0 -1
- package/dist/src/utils/ed25519.js.map +0 -1
- package/dist/src/utils/errors.js.map +0 -1
- package/dist/src/utils/events.js.map +0 -1
- package/dist/src/utils/formatAmount.js.map +0 -1
- package/dist/src/utils/logger.js.map +0 -1
- package/dist/src/utils/shortenString.js.map +0 -1
- /package/dist/{src/adapters → adapters}/evm.d.ts +0 -0
- /package/dist/{src/adapters → adapters}/evm.js +0 -0
- /package/dist/{src/adapters → adapters}/factory.d.ts +0 -0
- /package/dist/{src/adapters → adapters}/factory.js +0 -0
- /package/dist/{src/adapters → adapters}/index.d.ts +0 -0
- /package/dist/{src/adapters → adapters}/index.js +0 -0
- /package/dist/{src/adapters → adapters}/solana.d.ts +0 -0
- /package/dist/{src/adapters → adapters}/solana.js +0 -0
- /package/dist/{src/adapters → adapters}/types.d.ts +0 -0
- /package/dist/{src/adapters → adapters}/types.js +0 -0
- /package/dist/{src/animations → animations}/N1Loader.d.ts +0 -0
- /package/dist/{src/animations → animations}/N1Loader.js +0 -0
- /package/dist/{src/animations → animations}/Processing.d.ts +0 -0
- /package/dist/{src/animations → animations}/Processing.js +0 -0
- /package/dist/{src/components → components}/LoadingFallback.d.ts +0 -0
- /package/dist/{src/components → components}/LoadingFallback.js +0 -0
- /package/dist/{src/components → components}/Logo.d.ts +0 -0
- /package/dist/{src/components → components}/Logo.js +0 -0
- /package/dist/{src/components → components}/N1ConnectButton.d.ts +0 -0
- /package/dist/{src/components → components}/N1ConnectButton.js +0 -0
- /package/dist/{src/components → components}/logos/ArbitrumLogo.d.ts +0 -0
- /package/dist/{src/components → components}/logos/ArbitrumLogo.js +0 -0
- /package/dist/{src/components → components}/logos/BaseLogo.d.ts +0 -0
- /package/dist/{src/components → components}/logos/BaseLogo.js +0 -0
- /package/dist/{src/components → components}/logos/BeraLogo.d.ts +0 -0
- /package/dist/{src/components → components}/logos/BeraLogo.js +0 -0
- /package/dist/{src/components → components}/logos/BitcoinLogo.d.ts +0 -0
- /package/dist/{src/components → components}/logos/BitcoinLogo.js +0 -0
- /package/dist/{src/components → components}/logos/EthereumLogo.d.ts +0 -0
- /package/dist/{src/components → components}/logos/EthereumLogo.js +0 -0
- /package/dist/{src/components → components}/logos/HyperliquidLogo.d.ts +0 -0
- /package/dist/{src/components → components}/logos/HyperliquidLogo.js +0 -0
- /package/dist/{src/components → components}/logos/OptimismLogo.d.ts +0 -0
- /package/dist/{src/components → components}/logos/OptimismLogo.js +0 -0
- /package/dist/{src/components → components}/logos/SolanaLogo.d.ts +0 -0
- /package/dist/{src/components → components}/logos/SolanaLogo.js +0 -0
- /package/dist/{src/components → components}/logos/ZeroOneLogo.d.ts +0 -0
- /package/dist/{src/components → components}/logos/ZeroOneLogo.js +0 -0
- /package/dist/{src/components → components}/logos/index.d.ts +0 -0
- /package/dist/{src/components → components}/logos/index.js +0 -0
- /package/dist/{src/config → config}/chains.d.ts +0 -0
- /package/dist/{src/config → config}/dynamic.d.ts +0 -0
- /package/dist/{src/config → config}/dynamic.js +0 -0
- /package/dist/{src/config → config}/solana.d.ts +0 -0
- /package/dist/{src/config → config}/solana.js +0 -0
- /package/dist/{src/config → config}/turnkey.d.ts +0 -0
- /package/dist/{src/config → config}/turnkey.js +0 -0
- /package/dist/{src/context → context}/n1-wallet-context.d.ts +0 -0
- /package/dist/{src/context → context}/n1-wallet-context.js +0 -0
- /package/dist/{src/errors → errors}/types.d.ts +0 -0
- /package/dist/{src/errors → errors}/types.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/N1WalletModal.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/N1WalletModal.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/OnboardingFlow.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/OnboardingFlow.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/bridge-assist/client.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/bridge-assist/config.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/bridge-assist/config.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/bridge-assist/index.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/bridge-assist/index.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/bridge-assist/types.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/bridge-assist/types.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/cctp/clientFactory.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/cctp/clientFactory.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/cctp/config.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/cctp/config.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/cctp/mockCctpClient.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/cctp/mockCctpClient.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/cctp/types.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/cctp/types.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/components/ChainButton.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/components/ChainButton.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/components/Header.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/components/Header.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/components/ImageWithFallback.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/components/ImageWithFallback.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/components/TransactionTable.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/components/WaitingMessage.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/components/WaitingMessage.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/components/index.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/components/index.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/errors/depositError.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/errors/depositError.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/hooks/useBridgeDeposit.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/hooks/useDepositAuth.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/hooks/useDepositAuth.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/hooks/useDepositHydration.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/hooks/useDepositHydration.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/hooks/usePendingDepositState.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/hooks/useSolanaDeposit.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/index.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/index.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/providers/DepositFlowProvider.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/providers/OnboardingStateProvider.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/providers/StateProvider.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/providers/StateProvider.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/providers/WalletConnectionProvider.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/providers/debug.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/providers/index.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/providers/index.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/providers/onboardingStateMachine.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/providers/onboardingStateMachine.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/screens/00-EntrySelectionScreen.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/screens/00-EntrySelectionScreen.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/screens/01-ConnectWalletScreen.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/screens/01-ConnectWalletScreen.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/screens/02-TurnkeyAuthScreen.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/screens/02-TurnkeyAuthScreen.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/screens/03-TurnkeyPreparingScreen.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/screens/03-TurnkeyPreparingScreen.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/screens/04-ChainSelectionScreen.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/screens/04-ChainSelectionScreen.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/screens/06-DepositProgressScreen.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/screens/07-DepositSuccessScreen.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/screens/07-DepositSuccessScreen.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/screens/08-AuthLoadingScreen.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/screens/08-AuthLoadingScreen.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/screens/09-ErrorScreen.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/screens/09-ErrorScreen.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/screens/index.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/screens/index.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/turnkey/turnkeySessionMachine.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/turnkey/turnkeySessionMachine.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/types.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/types.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/utils/bridgeUtils.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/utils/bridgeUtils.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/utils/deposit/attestationUtils.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/utils/deposit/attestationUtils.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/utils/deposit/bridgeUtils.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/utils/deposit/bridgeUtils.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/utils/deposit/claimConfirmation.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/utils/deposit/depositPolling.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/utils/deposit/depositPolling.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/utils/deposit/evmTxInterceptor.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/utils/deposit/evmTxInterceptor.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/utils/deposit/nonceUtils.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/utils/deposit/nonceUtils.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/utils/deposit/solanaUtils.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/utils/deposit/solanaUtils.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/utils/deposit/storage.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/utils/deposit/storage.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/utils/deposit/walletUtils.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/utils/deposit/walletUtils.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/utils/depositPolling.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/utils/depositPolling.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/utils/explorerUrl.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/utils/explorerUrl.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/utils/nordUtils.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/utils/nordUtils.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/utils/pendingDepositCookie.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/utils/pendingDepositCookie.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/utils/pendingDepositStorage.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/utils/pendingDepositStorage.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/utils/utils.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/utils/utils.js +0 -0
- /package/dist/{src/features → features}/onboarding-flow/utils/withImageFallback.d.ts +0 -0
- /package/dist/{src/features → features}/onboarding-flow/utils/withImageFallback.js +0 -0
- /package/dist/{src/hooks → hooks}/index.d.ts +0 -0
- /package/dist/{src/hooks → hooks}/index.js +0 -0
- /package/dist/{src/hooks → hooks}/useN1Wallet.d.ts +0 -0
- /package/dist/{src/hooks → hooks}/useN1Wallet.js +0 -0
- /package/dist/{src/hooks → hooks}/useNordUserInitialization.d.ts +0 -0
- /package/dist/{src/hooks → hooks}/useNordUserInitialization.js +0 -0
- /package/dist/{src/index.d.ts → index.d.ts} +0 -0
- /package/dist/{src/index.js → index.js} +0 -0
- /package/dist/{src/providers → providers}/LazyWalletProvider.d.ts +0 -0
- /package/dist/{src/providers → providers}/N1WalletProvider/ContextBridge.d.ts +0 -0
- /package/dist/{src/providers → providers}/N1WalletProvider/ContextBridge.js +0 -0
- /package/dist/{src/providers → providers}/N1WalletProvider/ModalProvider.d.ts +0 -0
- /package/dist/{src/providers → providers}/N1WalletProvider/ModalProvider.js +0 -0
- /package/dist/{src/providers → providers}/N1WalletProvider/NetworkProvider.d.ts +0 -0
- /package/dist/{src/providers → providers}/N1WalletProvider/NetworkProvider.js +0 -0
- /package/dist/{src/providers → providers}/N1WalletProvider/SessionProvider.d.ts +0 -0
- /package/dist/{src/providers → providers}/N1WalletProvider/SessionProvider.js +0 -0
- /package/dist/{src/providers → providers}/N1WalletProvider/SigningProvider.d.ts +0 -0
- /package/dist/{src/providers → providers}/N1WalletProvider/SigningProvider.js +0 -0
- /package/dist/{src/providers → providers}/N1WalletProvider/ThemingProvider.d.ts +0 -0
- /package/dist/{src/providers → providers}/N1WalletProvider/ThemingProvider.js +0 -0
- /package/dist/{src/providers → providers}/N1WalletProvider/index.d.ts +0 -0
- /package/dist/{src/providers → providers}/N1WalletProvider/index.js +0 -0
- /package/dist/{src/providers → providers}/N1WalletProvider.d.ts +0 -0
- /package/dist/{src/providers → providers}/N1WalletProvider.js +0 -0
- /package/dist/{src/providers → providers}/ShadowRootWrapper.d.ts +0 -0
- /package/dist/{src/providers → providers}/ShadowRootWrapper.js +0 -0
- /package/dist/{src/providers → providers}/WalletErrorBoundary.d.ts +0 -0
- /package/dist/{src/providers → providers}/WalletErrorBoundary.js +0 -0
- /package/dist/{src/services → services}/bootstrap/DepositRecoveryService.d.ts +0 -0
- /package/dist/{src/services → services}/bootstrap/DepositRecoveryService.js +0 -0
- /package/dist/{src/services → services}/bootstrap/DynamicSdkService.d.ts +0 -0
- /package/dist/{src/services → services}/bootstrap/DynamicSdkService.js +0 -0
- /package/dist/{src/services → services}/bootstrap/SessionBootstrapService.d.ts +0 -0
- /package/dist/{src/services → services}/bootstrap/SessionBootstrapService.js +0 -0
- /package/dist/{src/services → services}/bootstrap/TurnkeyBootstrapService.d.ts +0 -0
- /package/dist/{src/services → services}/bootstrap/TurnkeyBootstrapService.js +0 -0
- /package/dist/{src/services → services}/bootstrap/index.d.ts +0 -0
- /package/dist/{src/services → services}/bootstrap/index.js +0 -0
- /package/dist/{src/services → services}/bootstrap/types.d.ts +0 -0
- /package/dist/{src/services → services}/bootstrap/types.js +0 -0
- /package/dist/{src/services → services}/storage/StorageService.d.ts +0 -0
- /package/dist/{src/services → services}/storage/StorageService.js +0 -0
- /package/dist/{src/services → services}/storage/index.d.ts +0 -0
- /package/dist/{src/services → services}/storage/index.js +0 -0
- /package/dist/{src/services → services}/storage/keys.d.ts +0 -0
- /package/dist/{src/services → services}/storage/keys.js +0 -0
- /package/dist/{src/services → services}/storage/types.d.ts +0 -0
- /package/dist/{src/services → services}/storage/types.js +0 -0
- /package/dist/{src/store → store}/index.d.ts +0 -0
- /package/dist/{src/store → store}/index.js +0 -0
- /package/dist/{src/store → store}/selectors.d.ts +0 -0
- /package/dist/{src/store → store}/selectors.js +0 -0
- /package/dist/{src/store → store}/slices/bootstrapSlice.d.ts +0 -0
- /package/dist/{src/store → store}/slices/bootstrapSlice.js +0 -0
- /package/dist/{src/store → store}/slices/configSlice.d.ts +0 -0
- /package/dist/{src/store → store}/slices/configSlice.js +0 -0
- /package/dist/{src/store → store}/slices/index.d.ts +0 -0
- /package/dist/{src/store → store}/slices/index.js +0 -0
- /package/dist/{src/store → store}/slices/sessionSlice.d.ts +0 -0
- /package/dist/{src/store → store}/slices/sessionSlice.js +0 -0
- /package/dist/{src/store → store}/slices/signingSlice.d.ts +0 -0
- /package/dist/{src/store → store}/slices/signingSlice.js +0 -0
- /package/dist/{src/store → store}/slices/uiSlice.d.ts +0 -0
- /package/dist/{src/store → store}/slices/uiSlice.js +0 -0
- /package/dist/{src/store → store}/slices/walletSlice.d.ts +0 -0
- /package/dist/{src/store → store}/slices/walletSlice.js +0 -0
- /package/dist/{src/store → store}/store.d.ts +0 -0
- /package/dist/{src/store → store}/store.js +0 -0
- /package/dist/{src/store → store}/subscriptions/depositPersistence.d.ts +0 -0
- /package/dist/{src/store → store}/subscriptions/depositPersistence.js +0 -0
- /package/dist/{src/store → store}/subscriptions/index.d.ts +0 -0
- /package/dist/{src/store → store}/subscriptions/index.js +0 -0
- /package/dist/{src/store → store}/subscriptions/turnkeyPersistence.d.ts +0 -0
- /package/dist/{src/store → store}/subscriptions/turnkeyPersistence.js +0 -0
- /package/dist/{src/store → store}/types.d.ts +0 -0
- /package/dist/{src/store → store}/types.js +0 -0
- /package/dist/{src/styles → styles}/cdn-fonts.d.ts +0 -0
- /package/dist/{src/styles → styles}/cdn-fonts.js +0 -0
- /package/dist/{src/styles → styles}/embedded-main-css.d.ts +0 -0
- /package/dist/{src/styles → styles}/embedded-main-css.js +0 -0
- /package/dist/{src/turnkey → turnkey}/TurnkeyProvider.d.ts +0 -0
- /package/dist/{src/turnkey → turnkey}/TurnkeyProvider.js +0 -0
- /package/dist/{src/turnkey → turnkey}/createTurnkeyWallet.d.ts +0 -0
- /package/dist/{src/turnkey → turnkey}/createTurnkeyWallet.js +0 -0
- /package/dist/{src/turnkey → turnkey}/createWalletProvider.d.ts +0 -0
- /package/dist/{src/turnkey → turnkey}/createWalletProvider.js +0 -0
- /package/dist/{src/turnkey → turnkey}/index.d.ts +0 -0
- /package/dist/{src/turnkey → turnkey}/index.js +0 -0
- /package/dist/{src/turnkey → turnkey}/turnkeySessionMachine.d.ts +0 -0
- /package/dist/{src/turnkey → turnkey}/turnkeySessionMachine.js +0 -0
- /package/dist/{src/turnkey → turnkey}/turnkeySessionStorage.d.ts +0 -0
- /package/dist/{src/turnkey → turnkey}/turnkeySessionStorage.js +0 -0
- /package/dist/{src/turnkey → turnkey}/types.d.ts +0 -0
- /package/dist/{src/turnkey → turnkey}/types.js +0 -0
- /package/dist/{src/types → types}/wallet.d.ts +0 -0
- /package/dist/{src/types → types}/wallet.js +0 -0
- /package/dist/{src/utils → utils}/address.d.ts +0 -0
- /package/dist/{src/utils → utils}/address.js +0 -0
- /package/dist/{src/utils → utils}/chain.d.ts +0 -0
- /package/dist/{src/utils → utils}/chain.js +0 -0
- /package/dist/{src/utils → utils}/ed25519.d.ts +0 -0
- /package/dist/{src/utils → utils}/ed25519.js +0 -0
- /package/dist/{src/utils → utils}/errors.d.ts +0 -0
- /package/dist/{src/utils → utils}/errors.js +0 -0
- /package/dist/{src/utils → utils}/events.d.ts +0 -0
- /package/dist/{src/utils → utils}/events.js +0 -0
- /package/dist/{src/utils → utils}/formatAmount.d.ts +0 -0
- /package/dist/{src/utils → utils}/formatAmount.js +0 -0
- /package/dist/{src/utils → utils}/logger.d.ts +0 -0
- /package/dist/{src/utils → utils}/logger.js +0 -0
- /package/dist/{src/utils → utils}/shortenString.d.ts +0 -0
- /package/dist/{src/utils → utils}/shortenString.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"depositError.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/errors/depositError.ts"],"names":[],"mappings":"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","sourcesContent":["import { BridgeAssistError } from '../bridge-assist/types';\n\nexport enum DepositErrorCode {\n USER_REJECTED = 'USER_REJECTED',\n WALLET_NOT_READY = 'WALLET_NOT_READY',\n WALLET_NOT_CONNECTED = 'WALLET_NOT_CONNECTED',\n WRONG_WALLET_CHAIN = 'WRONG_WALLET_CHAIN',\n INVALID_AMOUNT = 'INVALID_AMOUNT',\n BELOW_MINIMUM_DEPOSIT = 'BELOW_MINIMUM_DEPOSIT',\n INSUFFICIENT_BALANCE = 'INSUFFICIENT_BALANCE',\n INSUFFICIENT_FEES = 'INSUFFICIENT_FEES',\n NETWORK_ERROR = 'NETWORK_ERROR',\n ATTESTATION_NOT_READY = 'ATTESTATION_NOT_READY',\n ATTESTATION_TIMEOUT = 'ATTESTATION_TIMEOUT',\n BRIDGE_ASSIST_NOT_FOUND = 'BRIDGE_ASSIST_NOT_FOUND',\n BRIDGE_ASSIST_CONFLICT = 'BRIDGE_ASSIST_CONFLICT',\n BRIDGE_ASSIST_RATE_LIMITED = 'BRIDGE_ASSIST_RATE_LIMITED',\n BRIDGE_ASSIST_UNAUTHORIZED = 'BRIDGE_ASSIST_UNAUTHORIZED',\n CLAIM_SUBMISSION_FAILED = 'CLAIM_SUBMISSION_FAILED',\n BRIDGE_SUBMISSION_FAILED = 'BRIDGE_SUBMISSION_FAILED',\n NORD_DEPOSIT_FAILED = 'NORD_DEPOSIT_FAILED',\n SESSION_EXPIRED = 'SESSION_EXPIRED',\n UNKNOWN = 'UNKNOWN',\n}\n\nexport type DepositErrorDetails = Record<string, unknown>;\n\nexport class DepositError extends Error {\n public readonly name = 'DepositError';\n\n constructor(\n public readonly code: DepositErrorCode,\n message: string,\n public readonly retryable: boolean,\n public readonly userMessage: string,\n public readonly details?: DepositErrorDetails,\n public readonly cause?: unknown,\n ) {\n super(message);\n }\n}\n\nconst msg = (e: unknown): string =>\n e instanceof Error ? e.message : e == null ? '' : String(e);\n\nconst includesAny = (haystack: string, needles: string[]) =>\n needles.some((n) => haystack.includes(n));\n\n/**\n * Normalizes unknown errors into a stable taxonomy.\n * This is the single source of truth for: retryability, user-safe copy, and structured metadata.\n */\nexport const toDepositError = (\n error: unknown,\n context?: DepositErrorDetails,\n): DepositError => {\n if (error instanceof DepositError) return error;\n\n const rawMessage = msg(error);\n const lower = rawMessage.toLowerCase();\n\n // Bridge Assist HTTP-ish errors\n if (error instanceof BridgeAssistError) {\n const status = error.status;\n if (status === 404) {\n return new DepositError(\n DepositErrorCode.BRIDGE_ASSIST_NOT_FOUND,\n rawMessage,\n true,\n 'Deposit record was not found yet. Retrying…',\n { ...context, status },\n error,\n );\n }\n if (status === 409) {\n return new DepositError(\n DepositErrorCode.BRIDGE_ASSIST_CONFLICT,\n rawMessage,\n false,\n 'This deposit conflicted with an existing request. Please start a new deposit.',\n { ...context, status },\n error,\n );\n }\n if (status === 429) {\n return new DepositError(\n DepositErrorCode.BRIDGE_ASSIST_RATE_LIMITED,\n rawMessage,\n true,\n 'Service is busy. Please retry in a moment.',\n { ...context, status, retryAfter: error.retryAfter },\n error,\n );\n }\n if (status === 401 || status === 403) {\n return new DepositError(\n DepositErrorCode.BRIDGE_ASSIST_UNAUTHORIZED,\n rawMessage,\n false,\n 'Request was rejected. Please reconnect your wallet and try again.',\n { ...context, status },\n error,\n );\n }\n }\n\n // Turnkey session expired (API key expired after browser refresh)\n if (includesAny(lower, ['api_key_expired', 'expired api key', 'turnkeyerror', 'failed to sign transaction'])) {\n return new DepositError(\n DepositErrorCode.SESSION_EXPIRED,\n rawMessage,\n true,\n 'Your session has expired. Please disconnect and reconnect your wallet to continue.',\n context,\n error,\n );\n }\n\n // Wallet / user intent\n if (includesAny(lower, ['user rejected', 'user denied', 'rejected the request', 'denied transaction'])) {\n return new DepositError(\n DepositErrorCode.USER_REJECTED,\n rawMessage,\n false,\n 'You rejected the transaction. Please approve to continue.',\n context,\n error,\n );\n }\n\n // Minimum / amount validation (e.g. Nord min deposit)\n if (includesAny(lower, ['less than the minimum deposit', 'minimum deposit'])) {\n return new DepositError(\n DepositErrorCode.BELOW_MINIMUM_DEPOSIT,\n rawMessage,\n false,\n rawMessage, // already user-friendly in most cases\n context,\n error,\n );\n }\n\n if (includesAny(lower, ['invalid amount', 'amount must be', 'amount is required'])) {\n return new DepositError(\n DepositErrorCode.INVALID_AMOUNT,\n rawMessage,\n false,\n 'Enter a valid amount to continue.',\n context,\n error,\n );\n }\n\n // Retryable on-chain / network-ish failures\n if (includesAny(lower, ['blockhash expired', 'blockhash not found'])) {\n return new DepositError(\n DepositErrorCode.CLAIM_SUBMISSION_FAILED,\n rawMessage,\n true,\n 'Transaction expired. Retrying…',\n context,\n error,\n );\n }\n\n if (includesAny(lower, ['fee payer not available', 'server fee payer not available', 'fee payer'])) {\n return new DepositError(\n DepositErrorCode.NETWORK_ERROR,\n rawMessage,\n true,\n 'Claim server is not available. Retrying…',\n context,\n error,\n );\n }\n\n if (includesAny(lower, ['bridge assist server is not available', 'server is not available', 'failed to fetch'])) {\n return new DepositError(\n DepositErrorCode.NETWORK_ERROR,\n rawMessage,\n true,\n 'Claim server is not available. Retrying…',\n context,\n error,\n );\n }\n\n if (includesAny(lower, ['timed out', 'timeout', 'transaction was not confirmed'])) {\n return new DepositError(\n DepositErrorCode.NETWORK_ERROR,\n rawMessage,\n true,\n 'Network is taking too long to respond. Retrying…',\n context,\n error,\n );\n }\n\n // Balance / allowance\n if (lower.includes('insufficient')) {\n return new DepositError(\n DepositErrorCode.INSUFFICIENT_BALANCE,\n rawMessage,\n false,\n 'Insufficient balance or allowance to complete the deposit.',\n context,\n error,\n );\n }\n\n // Attestation signals\n if (includesAny(lower, ['attestation not ready'])) {\n return new DepositError(\n DepositErrorCode.ATTESTATION_NOT_READY,\n rawMessage,\n true,\n 'Attestation not ready yet. Please wait a moment and try again.',\n context,\n error,\n );\n }\n\n if (includesAny(lower, ['attestation timeout'])) {\n return new DepositError(\n DepositErrorCode.ATTESTATION_TIMEOUT,\n rawMessage,\n true,\n 'Bridge confirmation is taking too long. Please retry.',\n context,\n error,\n );\n }\n\n return new DepositError(\n DepositErrorCode.UNKNOWN,\n rawMessage || 'Unknown error',\n false,\n rawMessage || 'Something went wrong. Please try again.',\n context,\n error,\n );\n};\n\n\n"]}
|
|
@@ -347,7 +347,7 @@ export var useBridgeDeposit = function (_a) {
|
|
|
347
347
|
turnkeyAddress,
|
|
348
348
|
]);
|
|
349
349
|
var resumeClaimProcess = useCallback(function (pendingState) { return __awaiter(void 0, void 0, void 0, function () {
|
|
350
|
-
var depositId, bridgeTx, isEvmFlow, turnkeyStillInitializing, solanaRecipient, cctpClient, cctpConfig, fromChain, attestationData, nonceAlreadyProcessed, updated_1, claimDepositError_1, errorMessage, signature, updated, error_2;
|
|
350
|
+
var depositId, bridgeTx, isEvmFlow, turnkeyStillInitializing, solanaRecipient, cctpClient, cctpConfig, fromChain, attestationData, nonceAlreadyProcessed, updated_1, attemptNordDepositWithFallback, claimDepositError_1, errorMessage, isAlreadyCompletedError, nordDepositError_1, nordErrorMsg, signature, updated, error_2;
|
|
351
351
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
352
352
|
return __generator(this, function (_m) {
|
|
353
353
|
switch (_m.label) {
|
|
@@ -434,7 +434,7 @@ export var useBridgeDeposit = function (_a) {
|
|
|
434
434
|
setBridgeRetryable(false);
|
|
435
435
|
_m.label = 1;
|
|
436
436
|
case 1:
|
|
437
|
-
_m.trys.push([1,
|
|
437
|
+
_m.trys.push([1, 14, , 15]);
|
|
438
438
|
cctpClient = new BridgeKitClient();
|
|
439
439
|
cctpConfig = getCctpRuntimeConfig();
|
|
440
440
|
fromChain = normalizeCctpChain(pendingState.chain || context.selectedChainId || context.entryNetwork || cctpConfig.fromChain);
|
|
@@ -450,7 +450,7 @@ export var useBridgeDeposit = function (_a) {
|
|
|
450
450
|
return [4 /*yield*/, checkUsedNonceAccount((_a = attestationData.decodedMessage) === null || _a === void 0 ? void 0 : _a.nonce)];
|
|
451
451
|
case 3:
|
|
452
452
|
nonceAlreadyProcessed = _m.sent();
|
|
453
|
-
if (!nonceAlreadyProcessed) return [3 /*break*/,
|
|
453
|
+
if (!nonceAlreadyProcessed) return [3 /*break*/, 11];
|
|
454
454
|
logger.info('[BridgeDeposit] Nonce already processed - CCTP claim was completed previously', {
|
|
455
455
|
depositId: depositId,
|
|
456
456
|
bridgeTx: bridgeTx,
|
|
@@ -465,9 +465,34 @@ export var useBridgeDeposit = function (_a) {
|
|
|
465
465
|
setPendingMintTx((_f = updated_1.mintTx) !== null && _f !== void 0 ? _f : null);
|
|
466
466
|
setPendingDepositId(updated_1.depositId);
|
|
467
467
|
setDepositProgressPhase('claim');
|
|
468
|
+
attemptNordDepositWithFallback = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
469
|
+
var withBridgeStage;
|
|
470
|
+
return __generator(this, function (_a) {
|
|
471
|
+
switch (_a.label) {
|
|
472
|
+
case 0:
|
|
473
|
+
// Validate we have an amount to deposit
|
|
474
|
+
if (!pendingState.amount || Number(pendingState.amount) <= 0) {
|
|
475
|
+
throw new Error('No valid deposit amount available');
|
|
476
|
+
}
|
|
477
|
+
logger.info('[BridgeDeposit] Attempting Nord deposit with saved amount', {
|
|
478
|
+
amount: pendingState.amount,
|
|
479
|
+
});
|
|
480
|
+
withBridgeStage = advancePendingDeposit(updated_1, {
|
|
481
|
+
stage: 'bridge_confirmed',
|
|
482
|
+
amount: pendingState.amount,
|
|
483
|
+
});
|
|
484
|
+
setDepositProgressPhase('solana');
|
|
485
|
+
return [4 /*yield*/, runSolanaDeposit(pendingState.amount, withBridgeStage)];
|
|
486
|
+
case 1:
|
|
487
|
+
_a.sent();
|
|
488
|
+
return [2 /*return*/];
|
|
489
|
+
}
|
|
490
|
+
});
|
|
491
|
+
}); };
|
|
468
492
|
_m.label = 4;
|
|
469
493
|
case 4:
|
|
470
|
-
_m.trys.push([4, 6, ,
|
|
494
|
+
_m.trys.push([4, 6, , 11]);
|
|
495
|
+
// Attempt to confirm claim and get USDC balance
|
|
471
496
|
return [4 /*yield*/, confirmClaimAndDeposit({
|
|
472
497
|
signature: (_h = (_g = updated_1.mintTx) !== null && _g !== void 0 ? _g : updated_1.tx) !== null && _h !== void 0 ? _h : null,
|
|
473
498
|
destinationAddress: solanaRecipient,
|
|
@@ -476,22 +501,42 @@ export var useBridgeDeposit = function (_a) {
|
|
|
476
501
|
skipConfirmation: true,
|
|
477
502
|
})];
|
|
478
503
|
case 5:
|
|
504
|
+
// Attempt to confirm claim and get USDC balance
|
|
479
505
|
_m.sent();
|
|
480
|
-
|
|
506
|
+
// Success - deposit flow continues normally
|
|
507
|
+
return [2 /*return*/];
|
|
481
508
|
case 6:
|
|
482
509
|
claimDepositError_1 = _m.sent();
|
|
483
510
|
errorMessage = claimDepositError_1 instanceof Error ? claimDepositError_1.message : String(claimDepositError_1);
|
|
484
|
-
logger.
|
|
511
|
+
logger.warn('[BridgeDeposit] confirmClaimAndDeposit failed after nonce processed', {
|
|
485
512
|
error: errorMessage,
|
|
486
513
|
});
|
|
487
|
-
|
|
514
|
+
isAlreadyCompletedError = errorMessage.toLowerCase().includes('already be completed');
|
|
515
|
+
if (!isAlreadyCompletedError) return [3 /*break*/, 10];
|
|
516
|
+
_m.label = 7;
|
|
517
|
+
case 7:
|
|
518
|
+
_m.trys.push([7, 9, , 10]);
|
|
519
|
+
return [4 /*yield*/, attemptNordDepositWithFallback()];
|
|
520
|
+
case 8:
|
|
521
|
+
_m.sent();
|
|
522
|
+
// If we got here, Nord deposit succeeded! Continue flow normally
|
|
523
|
+
return [2 /*return*/];
|
|
524
|
+
case 9:
|
|
525
|
+
nordDepositError_1 = _m.sent();
|
|
526
|
+
nordErrorMsg = nordDepositError_1 instanceof Error ? nordDepositError_1.message : String(nordDepositError_1);
|
|
527
|
+
logger.info('[BridgeDeposit] Nord deposit failed after completion check', {
|
|
528
|
+
error: nordErrorMsg,
|
|
529
|
+
});
|
|
530
|
+
// Both USDC check and Nord deposit failed - deposit is truly complete
|
|
488
531
|
clearPendingDeposit();
|
|
489
532
|
setBridgeError('This deposit appears to be already completed. Your funds should be in your Nord account. Click "Start Over" to continue.');
|
|
490
533
|
setBridgeRetryable(false);
|
|
491
534
|
setIsDepositing(false);
|
|
492
|
-
return [
|
|
493
|
-
case
|
|
494
|
-
|
|
535
|
+
return [2 /*return*/];
|
|
536
|
+
case 10:
|
|
537
|
+
// For any other error type, re-throw to allow user to retry
|
|
538
|
+
throw claimDepositError_1;
|
|
539
|
+
case 11:
|
|
495
540
|
// If the nonce was NOT processed, we need a Solana signer to submit the claim.
|
|
496
541
|
if (!solanaWallet) {
|
|
497
542
|
setBridgeError('Solana wallet not connected. Please connect your Solana wallet to continue.');
|
|
@@ -521,7 +566,7 @@ export var useBridgeDeposit = function (_a) {
|
|
|
521
566
|
bridgeTx: bridgeTx,
|
|
522
567
|
attestationId: (_l = pendingState.attestationId) !== null && _l !== void 0 ? _l : null,
|
|
523
568
|
})];
|
|
524
|
-
case
|
|
569
|
+
case 12:
|
|
525
570
|
signature = _m.sent();
|
|
526
571
|
updated = advancePendingDeposit(pendingState, {
|
|
527
572
|
stage: 'bridge_confirmed',
|
|
@@ -538,10 +583,10 @@ export var useBridgeDeposit = function (_a) {
|
|
|
538
583
|
amountHint: pendingState.amount,
|
|
539
584
|
pendingState: updated,
|
|
540
585
|
})];
|
|
541
|
-
case
|
|
586
|
+
case 13:
|
|
542
587
|
_m.sent();
|
|
543
|
-
return [3 /*break*/,
|
|
544
|
-
case
|
|
588
|
+
return [3 /*break*/, 15];
|
|
589
|
+
case 14:
|
|
545
590
|
error_2 = _m.sent();
|
|
546
591
|
logger.logError(createDepositError('CLAIM_FAILED', 'Failed to resume claim process', {
|
|
547
592
|
cause: error_2 instanceof Error ? error_2 : undefined,
|
|
@@ -550,7 +595,7 @@ export var useBridgeDeposit = function (_a) {
|
|
|
550
595
|
setBridgeError(formatBridgeError(error_2));
|
|
551
596
|
setIsDepositing(false);
|
|
552
597
|
throw error_2;
|
|
553
|
-
case
|
|
598
|
+
case 15: return [2 /*return*/];
|
|
554
599
|
}
|
|
555
600
|
});
|
|
556
601
|
}); }, [
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBridgeDeposit.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/hooks/useBridgeDeposit.ts"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useRef, useState } from 'react';\nimport { useOnboardingState } from '../providers/OnboardingStateProvider';\nimport { getCctpRuntimeConfig } from '../cctp/config';\nimport {\n advancePendingDeposit,\n clearPendingDeposit,\n createPendingDepositDraft,\n PendingDepositState,\n writePendingDeposit,\n} from '../utils/deposit/storage';\nimport { formatBridgeError, normalizeCctpChain } from '../utils/deposit/bridgeUtils';\nimport { explorerBaseForChain, pickExplorerUrl } from '../utils/explorerUrl';\nimport { logger } from '../../../utils/logger';\nimport { createDepositError } from '../../../utils/errors';\nimport { useWalletConnection } from '../providers/WalletConnectionProvider';\nimport { BridgeKitClient, mapChainToBridgeKit } from '../cctp/bridgeKitClient';\nimport { checkUsedNonceAccount } from '../utils/deposit/nonceUtils';\nimport { waitForAttestation } from '../utils/deposit/attestationUtils';\nimport { ensureCorrectNetwork, getWalletProvider, validateBridgeConfig } from '../utils/deposit/walletUtils';\nimport { submitClaimWithRetry } from '../utils/deposit/claimSubmission';\nimport { confirmClaimAndGetUsdcBalance } from '../utils/deposit/claimConfirmation';\nimport { EvmTxInterceptor } from '../utils/deposit/evmTxInterceptor';\nimport { useNetwork } from '../../../providers/N1WalletProvider/NetworkProvider';\n\ninterface UseBridgeDepositProps {\n setDepositProgressPhase: (phase: 'bridge' | 'claim' | 'solana' | 'nord') => void;\n setPendingBridgeTx: (tx: string | null) => void;\n setPendingMintTx: (tx: string | null) => void;\n setPendingDepositId: (id: string | null) => void;\n setPendingBridgeExplorerUrl: (url: string | null) => void;\n ensurePendingDraft: (amount: string) => ReturnType<typeof createPendingDepositDraft>;\n finalizeBridgeSuccess: (status: { tx?: string | null; mintTx?: string | null; bridgeTx?: string | null; solanaTx?: string | null; depositId?: string | null }) => void;\n setIsDepositing: (isDepositing: boolean) => void;\n runSolanaDeposit: (\n amount: string,\n pendingState?: ReturnType<typeof createPendingDepositDraft> | null\n ) => Promise<{\n txId: string | null;\n workingState: ReturnType<typeof createPendingDepositDraft>;\n solanaTx: string | null;\n }>;\n}\n\nexport const useBridgeDeposit = ({\n setDepositProgressPhase,\n setPendingBridgeTx,\n setPendingMintTx,\n setPendingDepositId,\n setPendingBridgeExplorerUrl,\n ensurePendingDraft,\n finalizeBridgeSuccess,\n setIsDepositing,\n runSolanaDeposit,\n}: UseBridgeDepositProps) => {\n const { context, updateContext } = useOnboardingState();\n\n // Use NetworkProvider for wallet state\n const { solanaAddress, evmWallet, solanaWallet, evmAdapter } = useNetwork();\n const { turnkeyAddress, turnkeyStatus, turnkeyEnabled } = useWalletConnection();\n\n const [bridgeRetryable, setBridgeRetryable] = useState(false);\n const [bridgeError, setBridgeError] = useState<string | null>(null);\n const [bridgeApprovalPending, setBridgeApprovalPending] = useState(false);\n const [bridgeApprovalError, setBridgeApprovalError] = useState<string | null>(null);\n\n\n\n const lookupTableAddress = process.env.NEXT_PUBLIC_CCTP_LOOKUP_TABLE_ADDRESS;\n const claimFinalizationInFlightRef = useRef<Promise<void> | null>(null);\n\n const confirmClaimAndDeposit = useCallback(\n async ({\n signature,\n destinationAddress,\n amountHint,\n pendingState,\n skipConfirmation,\n }: {\n signature: string | null;\n destinationAddress: string;\n amountHint?: string | number | null;\n pendingState?: PendingDepositState | null;\n skipConfirmation?: boolean;\n }) => {\n logger.info('[BridgeDeposit] confirmClaimAndDeposit called', {\n signature,\n destinationAddress,\n amountHint,\n skipConfirmation,\n pendingStage: pendingState?.stage,\n pendingTx: pendingState?.tx,\n });\n\n if (claimFinalizationInFlightRef.current) {\n logger.info('[BridgeDeposit] confirmClaimAndDeposit - already in flight, returning existing promise');\n return claimFinalizationInFlightRef.current;\n }\n\n const promise = (async () => {\n let amount: string;\n let txSignature: string | null;\n try {\n logger.info('[BridgeDeposit] Calling confirmClaimAndGetUsdcBalance...');\n const res = await confirmClaimAndGetUsdcBalance({\n signature,\n destinationAddress,\n amountHint,\n skipConfirmation,\n });\n logger.info('[BridgeDeposit] confirmClaimAndGetUsdcBalance returned', {\n amount: res.amount,\n txSignature: res.txSignature,\n });\n amount = res.amount;\n txSignature = res.txSignature;\n } catch (e) {\n logger.warn('[BridgeDeposit] confirmClaimAndGetUsdcBalance threw error', {\n error: e instanceof Error ? e.message : String(e),\n });\n const message = e instanceof Error ? e.message : String(e);\n // If the claim nonce was already processed and there's no USDC to deposit,\n // the user likely already completed the deposit earlier. Clear pending state\n // to avoid trapping them in an endless \"resume\" loop.\n if (message.toLowerCase().includes('already be completed')) {\n logger.info('[BridgeDeposit] Deposit appears to be already completed - clearing pending state', {\n message,\n });\n clearPendingDeposit();\n setPendingDepositId(null);\n updateContext({\n depositError: 'This deposit appears to be already completed. Your funds should be in your Nord account.',\n });\n // Do not duplicate the message as a bridgeError; depositError is rendered on the progress screen.\n setBridgeError(null);\n setBridgeRetryable(false);\n setDepositProgressPhase('claim');\n setIsDepositing(false);\n return;\n }\n throw e;\n }\n\n const draft = pendingState ?? ensurePendingDraft(amount);\n const withBridgeStage = advancePendingDeposit(draft, {\n stage: 'bridge_confirmed',\n // Preserve the original EVM bridge tx hash - only update mintTx\n mintTx: txSignature,\n amount,\n });\n\n setDepositProgressPhase('solana');\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const depositResult = await runSolanaDeposit(amount, withBridgeStage);\n\n finalizeBridgeSuccess({\n tx: depositResult.txId,\n mintTx: txSignature,\n bridgeTx: withBridgeStage.tx ?? txSignature,\n solanaTx: depositResult.solanaTx,\n depositId: withBridgeStage.depositId,\n });\n })().finally(() => {\n claimFinalizationInFlightRef.current = null;\n });\n\n claimFinalizationInFlightRef.current = promise;\n return promise;\n },\n [\n ensurePendingDraft,\n finalizeBridgeSuccess,\n runSolanaDeposit,\n setDepositProgressPhase,\n setPendingDepositId,\n setBridgeError,\n setBridgeRetryable,\n setIsDepositing,\n updateContext,\n ]\n );\n\n const startCctpBridge = useCallback(\n async (draftAmount: string) => {\n setDepositProgressPhase('bridge');\n setBridgeApprovalPending(true);\n setBridgeApprovalError(null);\n\n const cctpClient = new BridgeKitClient();\n const cctpConfig = getCctpRuntimeConfig();\n const fromChain = normalizeCctpChain(context.selectedChainId ?? context.entryNetwork ?? cctpConfig.fromChain);\n\n await ensureCorrectNetwork({ evmWallet, evmAdapter, targetChain: fromChain });\n validateBridgeConfig(cctpConfig, fromChain, draftAmount);\n\n let workingState = ensurePendingDraft(draftAmount);\n\n const solanaRecipient = solanaAddress || turnkeyAddress || '';\n if (!solanaRecipient) {\n setBridgeApprovalPending(false);\n throw new Error('Turnkey Solana address is not ready yet. Please wait a moment and retry.');\n }\n\n const { provider, walletClient } = await getWalletProvider(evmWallet, evmAdapter);\n if (!provider && !walletClient && !cctpConfig.useMock) {\n setBridgeApprovalPending(false);\n throw new Error('Wallet provider not available for CCTP bridging');\n }\n\n // Persist tx hash ASAP (especially burn) so refresh can resume.\n // We use the interceptor to capture the tx hash before the high-level await returns.\n const interceptor = new EvmTxInterceptor((txHash) => {\n workingState = writePendingDeposit({\n ...workingState,\n depositId: txHash,\n stage: 'bridge_submitted',\n tx: txHash,\n chain: workingState.chain || fromChain,\n amount: workingState.amount || draftAmount,\n updatedAt: Date.now(),\n });\n setPendingDepositId(workingState.depositId);\n setPendingBridgeTx(txHash);\n setDepositProgressPhase('claim');\n });\n\n const walletForBridge = interceptor.wrap(provider || walletClient);\n\n let bridgeTxId: string;\n let depositId: string;\n let attestationId: string | null | undefined;\n\n try {\n const submission = await cctpClient.submitBridge({\n amount: draftAmount,\n fromChain,\n toChain: 'solana',\n destinationAddress: solanaRecipient,\n wallet: walletForBridge,\n });\n bridgeTxId = submission.bridgeTxId;\n depositId = submission.depositId;\n attestationId = submission.attestationId;\n } catch (error) {\n const message = formatBridgeError(error);\n setBridgeApprovalError(message);\n setBridgeError(message);\n setBridgeRetryable(true);\n setBridgeApprovalPending(false);\n clearPendingDeposit();\n throw error;\n } finally {\n setBridgeApprovalPending(false);\n }\n\n const bridgeExplorerUrl = pickExplorerUrl(\n workingState.explorerUrl,\n cctpConfig.explorerBaseUrl ?? explorerBaseForChain(context.entryNetwork),\n bridgeTxId,\n );\n workingState = advancePendingDeposit(workingState, {\n stage: 'bridge_submitted',\n tx: bridgeTxId,\n attestationId,\n explorerUrl: bridgeExplorerUrl ?? null,\n });\n setPendingBridgeExplorerUrl(workingState.explorerUrl ?? null);\n setPendingBridgeTx(bridgeTxId);\n if (depositId && depositId !== workingState.depositId) {\n workingState = writePendingDeposit({\n ...workingState,\n depositId,\n attestationId: attestationId ?? workingState.attestationId ?? null,\n updatedAt: Date.now(),\n });\n }\n setPendingDepositId(depositId || workingState.depositId);\n\n const attestationData = await waitForAttestation({\n cctpClient,\n bridgeTxId,\n sourceChain: fromChain,\n timeoutMs: cctpConfig.attestationTimeoutMs ?? 120_000,\n retryBackoffMs: cctpConfig.retryBackoffMs ?? 5_000,\n });\n\n const nonceAlreadyProcessed = await checkUsedNonceAccount(attestationData?.decodedMessage?.nonce);\n if (nonceAlreadyProcessed) {\n const updatedState = advancePendingDeposit(workingState, {\n stage: 'bridge_confirmed',\n tx: workingState.tx ?? bridgeTxId ?? null,\n mintTx: workingState.mintTx ?? null,\n attestationId,\n explorerUrl: workingState.explorerUrl ?? null,\n });\n\n setPendingMintTx(updatedState.mintTx ?? null);\n setPendingDepositId(updatedState.depositId);\n setDepositProgressPhase('claim');\n\n await confirmClaimAndDeposit({\n signature: updatedState.mintTx ?? updatedState.tx ?? null,\n destinationAddress: solanaRecipient,\n amountHint: draftAmount,\n pendingState: updatedState,\n skipConfirmation: true,\n });\n\n return updatedState;\n }\n\n setDepositProgressPhase('solana');\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const finalSignature = await submitClaimWithRetry({\n depositId,\n message: attestationData.message,\n attestation: attestationData.attestation,\n sourceChain: fromChain,\n destinationAddress: solanaRecipient,\n lookupTableAddress: lookupTableAddress ?? '',\n solanaWallet: solanaWallet as any,\n fallbackWallet: solanaAddress || turnkeyAddress || '',\n fallbackAmount: attestationData.decodedMessage?.decodedMessageBody?.amount || draftAmount || '0',\n bridgeTx: bridgeTxId,\n attestationId: attestationId ?? null,\n });\n\n workingState = advancePendingDeposit(workingState, {\n stage: 'bridge_confirmed',\n // Preserve the original EVM bridge tx hash - don't overwrite with Solana signature\n mintTx: finalSignature,\n attestationId,\n explorerUrl: finalSignature\n ? pickExplorerUrl(null, cctpConfig.mintExplorerBaseUrl ?? explorerBaseForChain('solana'), finalSignature)\n : workingState.explorerUrl,\n });\n\n setPendingMintTx(finalSignature);\n setPendingDepositId(workingState.depositId);\n setDepositProgressPhase('claim');\n\n await confirmClaimAndDeposit({\n signature: finalSignature,\n destinationAddress: solanaRecipient,\n amountHint: draftAmount,\n pendingState: workingState,\n });\n\n return workingState;\n },\n [\n solanaAddress,\n confirmClaimAndDeposit,\n context.entryNetwork,\n context.selectedChainId,\n ensurePendingDraft,\n evmAdapter,\n evmWallet,\n lookupTableAddress,\n setDepositProgressPhase,\n setPendingBridgeExplorerUrl,\n setPendingBridgeTx,\n setPendingDepositId,\n setPendingMintTx,\n solanaWallet,\n turnkeyAddress,\n ]\n );\n\n const resumeClaimProcess = useCallback(\n async (pendingState: PendingDepositState) => {\n // Log full pending state for debugging\n logger.info('[BridgeDeposit] resumeClaimProcess called', {\n depositId: pendingState.depositId,\n stage: pendingState.stage,\n tx: pendingState.tx,\n mintTx: pendingState.mintTx,\n chain: pendingState.chain,\n amount: pendingState.amount,\n wallet: pendingState.wallet,\n reason: pendingState.reason,\n updatedAt: pendingState.updatedAt,\n });\n\n const depositId = pendingState.depositId;\n if (!depositId) {\n logger.warn('[BridgeDeposit] resumeClaimProcess - no depositId, showing error');\n setBridgeError('Missing deposit ID. Please start a new deposit.');\n setBridgeRetryable(false);\n return;\n }\n\n // If the deposit is already in a terminal state, don't try to resume\n if (pendingState.stage === 'solana_confirmed') {\n logger.info('[BridgeDeposit] Deposit already in solana_confirmed state - clearing and completing', {\n depositId,\n stage: pendingState.stage,\n });\n clearPendingDeposit();\n finalizeBridgeSuccess({\n tx: pendingState.tx,\n mintTx: pendingState.mintTx,\n bridgeTx: pendingState.tx,\n depositId: pendingState.depositId,\n });\n return;\n }\n\n // If the deposit was submitted to Solana but we refreshed before confirmation,\n // the deposit might have actually completed. Show message with Start Over option.\n if (pendingState.stage === 'solana_submitted' && pendingState.tx) {\n logger.info('[BridgeDeposit] Deposit in solana_submitted state - may already be complete', {\n depositId,\n stage: pendingState.stage,\n tx: pendingState.tx,\n });\n // Clear state and show message - user can check their Nord account\n clearPendingDeposit();\n setBridgeError('Your deposit may have already completed. Please check your Nord account balance. Click \"Start Over\" if you need to make another deposit.');\n setBridgeRetryable(false);\n setIsDepositing(false);\n return;\n }\n\n // BridgeKit uses the burn tx hash for attestation lookup.\n // After refresh, `depositId` might be a local draft id if the user refreshed mid-sign.\n const bridgeTx = pendingState.tx;\n if (!bridgeTx || !bridgeTx.startsWith('0x')) {\n logger.warn('[BridgeDeposit] Cannot resume claim: missing bridge tx hash (likely refreshed before signing burn tx)', {\n depositId,\n tx: pendingState.tx,\n stage: pendingState.stage,\n });\n setBridgeError('Bridge transaction was not completed. Please start the deposit again.');\n setBridgeRetryable(true);\n setIsDepositing(false);\n return;\n }\n\n // Check if Turnkey is still initializing for EVM flows\n const isEvmFlow = context.entryNetwork === 'evm';\n const turnkeyStillInitializing = turnkeyEnabled && turnkeyStatus !== 'ready';\n\n if (isEvmFlow && turnkeyStillInitializing) {\n setBridgeError('Preparing Solana wallet... Please wait.');\n setBridgeRetryable(false); // Don't allow retry until Turnkey is ready\n setDepositProgressPhase('claim');\n return;\n }\n\n const solanaRecipient = solanaAddress || turnkeyAddress || pendingState.wallet;\n if (!solanaRecipient) {\n setBridgeError('Missing Solana deposit address. Please reconnect your wallet.');\n setBridgeRetryable(true);\n return;\n }\n\n setPendingBridgeTx(bridgeTx);\n setDepositProgressPhase('claim');\n setIsDepositing(true);\n setBridgeError(null);\n setBridgeRetryable(false);\n\n try {\n const cctpClient = new BridgeKitClient();\n const cctpConfig = getCctpRuntimeConfig();\n\n const fromChain = normalizeCctpChain(\n pendingState.chain || context.selectedChainId || context.entryNetwork || cctpConfig.fromChain,\n );\n\n const attestationData = await cctpClient.getAttestation(bridgeTx, fromChain);\n if (!attestationData) {\n setBridgeError('Attestation not ready yet. Please wait a moment and try again.');\n setBridgeRetryable(true);\n setIsDepositing(false);\n return;\n }\n\n const nonceAlreadyProcessed = await checkUsedNonceAccount(attestationData.decodedMessage?.nonce);\n if (nonceAlreadyProcessed) {\n logger.info('[BridgeDeposit] Nonce already processed - CCTP claim was completed previously', {\n depositId,\n bridgeTx,\n nonce: attestationData.decodedMessage?.nonce,\n });\n\n const updated = advancePendingDeposit(pendingState, {\n stage: 'bridge_confirmed',\n tx: pendingState.tx ?? null,\n mintTx: pendingState.mintTx ?? pendingState.tx ?? null,\n attestationId: pendingState.attestationId,\n });\n\n setPendingMintTx(updated.mintTx ?? null);\n setPendingDepositId(updated.depositId);\n setDepositProgressPhase('claim');\n\n // Helper to attempt Nord deposit with fallback amount\n const attemptNordDepositWithFallback = async (): Promise<void> => {\n // Validate we have an amount to deposit\n if (!pendingState.amount || Number(pendingState.amount) <= 0) {\n throw new Error('No valid deposit amount available');\n }\n\n logger.info('[BridgeDeposit] Attempting Nord deposit with saved amount', {\n amount: pendingState.amount,\n });\n\n const withBridgeStage = advancePendingDeposit(updated, {\n stage: 'bridge_confirmed',\n amount: pendingState.amount,\n });\n\n setDepositProgressPhase('solana');\n await runSolanaDeposit(pendingState.amount, withBridgeStage);\n };\n\n try {\n // Attempt to confirm claim and get USDC balance\n await confirmClaimAndDeposit({\n signature: updated.mintTx ?? updated.tx ?? null,\n destinationAddress: solanaRecipient,\n amountHint: pendingState.amount,\n pendingState: updated,\n skipConfirmation: true,\n });\n\n // Success - deposit flow continues normally\n return;\n } catch (claimDepositError) {\n const errorMessage = claimDepositError instanceof Error ? claimDepositError.message : String(claimDepositError);\n\n logger.warn('[BridgeDeposit] confirmClaimAndDeposit failed after nonce processed', {\n error: errorMessage,\n });\n\n // Check if error indicates deposit was already completed\n const isAlreadyCompletedError = errorMessage.toLowerCase().includes('already be completed');\n\n if (isAlreadyCompletedError) {\n // USDC balance check says deposit is complete, but we should verify\n // by attempting the Nord deposit with our saved amount\n try {\n await attemptNordDepositWithFallback();\n // If we got here, Nord deposit succeeded! Continue flow normally\n return;\n } catch (nordDepositError) {\n const nordErrorMsg = nordDepositError instanceof Error ? nordDepositError.message : String(nordDepositError);\n\n logger.info('[BridgeDeposit] Nord deposit failed after completion check', {\n error: nordErrorMsg,\n });\n\n // Both USDC check and Nord deposit failed - deposit is truly complete\n clearPendingDeposit();\n setBridgeError('This deposit appears to be already completed. Your funds should be in your Nord account. Click \"Start Over\" to continue.');\n setBridgeRetryable(false);\n setIsDepositing(false);\n return;\n }\n }\n\n // For any other error type, re-throw to allow user to retry\n throw claimDepositError;\n }\n }\n\n // If the nonce was NOT processed, we need a Solana signer to submit the claim.\n if (!solanaWallet) {\n setBridgeError('Solana wallet not connected. Please connect your Solana wallet to continue.');\n setBridgeRetryable(true);\n setDepositProgressPhase('claim');\n setIsDepositing(false);\n return;\n }\n\n if (solanaWallet.chain !== 'SOL') {\n setBridgeError('Wallet is not a Solana wallet. Please connect a Solana wallet.');\n setBridgeRetryable(true);\n setDepositProgressPhase('claim');\n setIsDepositing(false);\n return;\n }\n\n setDepositProgressPhase('solana');\n\n const signature = await submitClaimWithRetry({\n depositId,\n message: attestationData.message,\n attestation: attestationData.attestation,\n sourceChain: pendingState.chain || fromChain,\n destinationAddress: solanaRecipient,\n lookupTableAddress: lookupTableAddress ?? '',\n solanaWallet: solanaWallet as any,\n fallbackWallet: solanaAddress || turnkeyAddress || '',\n fallbackAmount: attestationData.decodedMessage?.decodedMessageBody?.amount || pendingState.amount || '0',\n bridgeTx,\n attestationId: pendingState.attestationId ?? null,\n });\n\n const updated = advancePendingDeposit(pendingState, {\n stage: 'bridge_confirmed',\n // Preserve the original EVM bridge tx hash - don't overwrite with Solana signature\n mintTx: signature,\n attestationId: pendingState.attestationId,\n });\n\n setPendingMintTx(signature);\n setPendingDepositId(updated.depositId);\n setDepositProgressPhase('claim');\n\n await confirmClaimAndDeposit({\n signature,\n destinationAddress: solanaRecipient,\n amountHint: pendingState.amount,\n pendingState: updated,\n });\n } catch (error) {\n logger.logError(createDepositError('CLAIM_FAILED', 'Failed to resume claim process', {\n cause: error instanceof Error ? error : undefined,\n context: { depositId },\n }));\n setBridgeError(formatBridgeError(error));\n setIsDepositing(false);\n throw error;\n }\n },\n [\n solanaAddress,\n confirmClaimAndDeposit,\n context.entryNetwork,\n context.selectedChainId,\n lookupTableAddress,\n setDepositProgressPhase,\n setIsDepositing,\n setPendingBridgeTx,\n setPendingDepositId,\n setPendingMintTx,\n solanaWallet,\n turnkeyAddress,\n turnkeyEnabled,\n turnkeyStatus,\n ]\n );\n\n return {\n startCctpBridge,\n resumeClaimProcess,\n bridgeRetryable,\n setBridgeRetryable,\n bridgeError,\n setBridgeError,\n bridgeApprovalPending,\n setBridgeApprovalPending,\n bridgeApprovalError,\n setBridgeApprovalError,\n };\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDepositAuth.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/hooks/useDepositAuth.ts"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\nimport { useNetwork } from '../../../providers/N1WalletProvider/NetworkProvider';\nimport { useSession } from '../../../providers/N1WalletProvider/SessionProvider';\nimport { logger } from '../../../utils/logger';\nimport { useOnboardingState } from '../providers/OnboardingStateProvider';\n\nexport const useDepositAuth = () => {\n const {\n actions: flowActions,\n updateContext,\n } = useOnboardingState();\n\n // Use NetworkProvider for address and SessionProvider for nordUser\n const { solanaAddress } = useNetwork();\n const { nordUser } = useSession();\n\n const [authStatus, setAuthStatus] = useState<'loading' | 'success' | 'error'>('loading');\n const [authErrorMessage, setAuthErrorMessage] = useState<string | null>(null);\n const [authStatusMessage, setAuthStatusMessage] = useState<string | null>(null);\n\n const authInFlightRef = useRef(false);\n const waitingForNordUserRef = useRef(false);\n\n /**\n * Authenticate session\n */\n const performAuth = useCallback(async () => {\n if (authInFlightRef.current) {\n return;\n }\n\n authInFlightRef.current = true;\n try {\n // Step 1: Tell user to sign transaction\n setAuthStatusMessage(\n 'Please sign the transaction to authenticate your session'\n );\n\n if (!nordUser) {\n waitingForNordUserRef.current = true;\n setAuthStatus('loading');\n setAuthStatusMessage('Preparing your Nord session…');\n return;\n }\n\n waitingForNordUserRef.current = false;\n\n // Step 2: Call nordUser.refreshSession and get sessionId\n setAuthStatusMessage('Session is being authenticated...');\n\n // Get the session public key from the nordUser\n const sessionPubKey = nordUser.sessionPubKey;\n if (!sessionPubKey) {\n throw new Error('Session public key is not available');\n }\n\n // Refresh the session\n await nordUser.refreshSession();\n await nordUser.updateAccountId();\n\n // Get the sessionId after refresh\n const sessionId = nordUser.sessionId;\n if (!sessionId) {\n throw new Error('Failed to get session ID after refresh');\n }\n\n logger.debug('Session refreshed successfully', {\n sessionId: sessionId.toString(),\n });\n\n // Step 3: Store sessionId in localStorage\n if (solanaAddress) {\n const sessionIdKey = `n1_sessionId_${solanaAddress}`;\n localStorage.setItem(sessionIdKey, sessionId.toString());\n logger.debug('Stored sessionId in localStorage', { key: sessionIdKey });\n }\n\n // Step 4: Update status to success\n setAuthStatus('success');\n\n // updateContext({ hasActiveSession: true });\n flowActions.completeFlow({\n hasActiveSession: true,\n hasNordAccount: true,\n });\n\n } catch (error) {\n logger.error('Authentication error:', error);\n setAuthStatus('error');\n setAuthErrorMessage(\n error instanceof Error ? error.message : 'Unknown error occurred'\n );\n } finally {\n authInFlightRef.current = false;\n }\n }, [\n updateContext,\n flowActions,\n solanaAddress,\n nordUser,\n ]);\n\n useEffect(() => {\n if (waitingForNordUserRef.current && nordUser) {\n performAuth();\n }\n }, [nordUser, performAuth]);\n\n return {\n authStatus,\n authErrorMessage,\n authStatusMessage,\n performAuth,\n };\n};\n\n\n\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDepositHydration.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/hooks/useDepositHydration.ts"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useRef } from 'react';\nimport { useOnboardingState } from '../providers/OnboardingStateProvider';\nimport { OnboardingStep, DepositProgressPhase } from '../types';\nimport {\n readPendingDeposit,\n PendingDepositStage,\n} from '../utils/deposit/storage';\nimport { logger } from '../../../utils/logger';\n\ninterface UseDepositHydrationProps {\n setPendingDepositId: (id: string | null) => void;\n setAmount: (amount: string) => void;\n setTransactionId: (id: string | null) => void;\n setIsDepositing: (isDepositing: boolean) => void;\n setPendingBridgeExplorerUrl: (url: string | null) => void;\n setPendingBridgeTx: (tx: string | null) => void;\n setPendingMintTx: (tx: string | null) => void;\n setDepositProgressPhase: (phase: DepositProgressPhase) => void;\n setBridgeError: (error: string | null) => void;\n setBridgeRetryable: (retryable: boolean) => void;\n}\n\n/**\n * Maps the stored pending deposit stage to the correct UI phase.\n */\nconst mapStageToPhase = (stage: PendingDepositStage): DepositProgressPhase => {\n switch (stage) {\n case 'initiated':\n case 'bridge_submitted':\n return 'bridge';\n case 'bridge_confirmed':\n // Confirmed on source chain (or attestation ready) -> Ready to claim\n return 'claim';\n case 'solana_submitted':\n case 'solana_confirmed':\n // Transaction sent to Solana -> showing solana progress or final confirmation\n return 'solana';\n case 'failed':\n // Default to claim if failed, as it's likely a bridge/claim failure\n return 'claim';\n default:\n return 'claim';\n }\n};\n\nexport const useDepositHydration = ({\n setPendingDepositId,\n setAmount,\n setTransactionId,\n setIsDepositing,\n setPendingBridgeExplorerUrl,\n setPendingBridgeTx,\n setPendingMintTx,\n setDepositProgressPhase,\n setBridgeError,\n setBridgeRetryable,\n}: UseDepositHydrationProps) => {\n const { state } = useOnboardingState();\n\n const lastHydratedKeyRef = useRef<string | null>(null);\n\n // Hydrate pending deposit details from localStorage while on the progress screen.\n // This makes \"Recover\" update the UI immediately without a hard refresh.\n useEffect(() => {\n if (state !== OnboardingStep.DEPOSIT_PROGRESS) {\n return;\n }\n\n const pending = readPendingDeposit();\n if (!pending || !pending.depositId) {\n return;\n }\n\n const updatedAt =\n typeof (pending as any).updatedAt === 'number' ? (pending as any).updatedAt : 0;\n const key = `${pending.depositId}:${updatedAt}`;\n\n // Always re-hydrate if the phase might be wrong (e.g. forced 'claim' vs actual 'bridge')\n // But specific field checks might be better. For now, rely on key change.\n if (lastHydratedKeyRef.current === key) {\n return;\n }\n lastHydratedKeyRef.current = key;\n\n logger.info('[DepositHydration] Hydrating pending deposit from localStorage', {\n depositId: pending.depositId,\n stage: pending.stage,\n updatedAt,\n });\n\n const phase = mapStageToPhase(pending.stage);\n\n setPendingDepositId(pending.depositId);\n setPendingBridgeTx((pending as any).tx ?? null);\n setPendingMintTx((pending as any).mintTx ?? null);\n setPendingBridgeExplorerUrl((pending as any).explorerUrl ?? null);\n setAmount((pending as any).amount ?? '');\n setTransactionId(pending.depositId ?? null);\n\n // Not depositing actively after hydration\n setIsDepositing(false);\n\n setDepositProgressPhase(phase);\n\n // Clear any stale errors - fresh start\n setBridgeError(null);\n setBridgeRetryable(false);\n }, [\n state,\n setAmount,\n setBridgeError,\n setBridgeRetryable,\n setDepositProgressPhase,\n setIsDepositing,\n setPendingBridgeExplorerUrl,\n setPendingBridgeTx,\n setPendingDepositId,\n setPendingMintTx,\n setTransactionId,\n ]);\n\n};\n\n"]}
|
|
@@ -1,7 +1,19 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
1
12
|
import { useCallback, useState } from 'react';
|
|
2
13
|
import { useNetwork } from '../../../providers/N1WalletProvider/NetworkProvider';
|
|
3
14
|
import { useOnboardingState } from '../providers/OnboardingStateProvider';
|
|
4
|
-
import { clearPendingDeposit, createPendingDepositDraft, readPendingDeposit, } from '../utils/deposit/storage';
|
|
15
|
+
import { clearPendingDeposit, createPendingDepositDraft, readPendingDeposit, writePendingDeposit, } from '../utils/deposit/storage';
|
|
16
|
+
import { logger } from '../../../utils/logger';
|
|
5
17
|
export var usePendingDepositState = function () {
|
|
6
18
|
var context = useOnboardingState().context;
|
|
7
19
|
// Use NetworkProvider instead of legacy N1WalletContext
|
|
@@ -31,9 +43,22 @@ export var usePendingDepositState = function () {
|
|
|
31
43
|
amount: draftAmount,
|
|
32
44
|
});
|
|
33
45
|
setPendingDepositId(draft.depositId);
|
|
34
|
-
// Meta write removed as it's now unified
|
|
35
46
|
return draft;
|
|
36
47
|
}
|
|
48
|
+
// If pending state exists but amount differs, update it.
|
|
49
|
+
// This ensures the localStorage has the current user input amount,
|
|
50
|
+
// preventing stale amounts from being used in success records.
|
|
51
|
+
// Only update if we're still in early stages (before bridge/solana submission).
|
|
52
|
+
var canUpdateAmount = pendingState.stage === 'initiated';
|
|
53
|
+
if (canUpdateAmount && pendingState.amount !== draftAmount) {
|
|
54
|
+
logger.debug('[PendingDepositState] Updating pending draft amount', {
|
|
55
|
+
oldAmount: pendingState.amount,
|
|
56
|
+
newAmount: draftAmount,
|
|
57
|
+
stage: pendingState.stage,
|
|
58
|
+
});
|
|
59
|
+
var updatedState = writePendingDeposit(__assign(__assign({}, pendingState), { amount: draftAmount }));
|
|
60
|
+
return updatedState;
|
|
61
|
+
}
|
|
37
62
|
return pendingState;
|
|
38
63
|
}, [solanaAddress, context.selectedChainId, context.selectedChain, evmAddress, isEvmMode, pendingDepositId]);
|
|
39
64
|
return {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePendingDepositState.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/hooks/usePendingDepositState.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,qDAAqD,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EACzB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,MAAM,CAAC,IAAM,sBAAsB,GAAG;IAElC,IAAA,OAAO,GACL,kBAAkB,EAAE,QADf,CACgB;IAEzB,wDAAwD;IAClD,IAAA,KAA2C,UAAU,EAAE,EAArD,aAAa,mBAAA,EAAE,UAAU,gBAAA,EAAE,SAAS,eAAiB,CAAC;IAExD,IAAA,KAA0C,QAAQ,CAAgB,IAAI,CAAC,EAAtE,gBAAgB,QAAA,EAAE,mBAAmB,QAAiC,CAAC;IAE9E,IAAM,kBAAkB,GAAG,WAAW,CACpC,UAAC,WAAmB;;QAClB,8DAA8D;QAC9D,IAAM,cAAc,GAAG,SAAS;YAC9B,CAAC,CAAC,UAAU,IAAI,aAAa;YAC7B,CAAC,CAAC,aAAa,CAAC;QAClB,IAAM,aAAa,GAAG,MAAA,OAAO,CAAC,eAAe,mCAAI,CAAC,MAAA,OAAO,CAAC,aAAa,mCAAI,QAAQ,CAAC,CAAC;QACrF,IAAI,YAAY,GAAG,kBAAkB,EAAE,CAAC;QACxC,IAAI,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,KAAK,MAAK,QAAQ,EAAE,CAAC;YACrC,mBAAmB,EAAE,CAAC;YACtB,YAAY,GAAG,IAAI,CAAC;QACtB,CAAC;QACD,IAAI,YAAY,IAAI,gBAAgB,IAAI,YAAY,CAAC,SAAS,KAAK,gBAAgB,EAAE,CAAC;YACpF,mBAAmB,EAAE,CAAC;YACtB,YAAY,GAAG,IAAI,CAAC;QACtB,CAAC;QACD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,IAAM,KAAK,GAAG,yBAAyB,CAAC;gBACtC,SAAS,EAAE,gBAAgB,aAAhB,gBAAgB,cAAhB,gBAAgB,GAAI,cAAO,IAAI,CAAC,GAAG,EAAE,CAAE;gBAClD,MAAM,EAAE,cAAc,IAAI,EAAE;gBAC5B,KAAK,EAAE,aAAa;gBACpB,MAAM,EAAE,WAAW;aACpB,CAAC,CAAC;YACH,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACrC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,yDAAyD;QACzD,mEAAmE;QACnE,+DAA+D;QAC/D,gFAAgF;QAChF,IAAM,eAAe,GAAG,YAAY,CAAC,KAAK,KAAK,WAAW,CAAC;QAC3D,IAAI,eAAe,IAAI,YAAY,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAC3D,MAAM,CAAC,KAAK,CAAC,qDAAqD,EAAE;gBAClE,SAAS,EAAE,YAAY,CAAC,MAAM;gBAC9B,SAAS,EAAE,WAAW;gBACtB,KAAK,EAAE,YAAY,CAAC,KAAK;aAC1B,CAAC,CAAC;YACH,IAAM,YAAY,GAAG,mBAAmB,uBACnC,YAAY,KACf,MAAM,EAAE,WAAW,IACnB,CAAC;YACH,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC,EACD,CAAC,aAAa,EAAE,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,CAAC,CACzG,CAAC;IAEF,OAAO;QACL,gBAAgB,kBAAA;QAChB,mBAAmB,qBAAA;QACnB,kBAAkB,oBAAA;KACnB,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { useCallback, useState } from 'react';\nimport { useNetwork } from '../../../providers/N1WalletProvider/NetworkProvider';\nimport { useOnboardingState } from '../providers/OnboardingStateProvider';\nimport {\n clearPendingDeposit,\n createPendingDepositDraft,\n readPendingDeposit,\n writePendingDeposit,\n} from '../utils/deposit/storage';\nimport { logger } from '../../../utils/logger';\n\nexport const usePendingDepositState = () => {\n const {\n context,\n } = useOnboardingState();\n\n // Use NetworkProvider instead of legacy N1WalletContext\n const { solanaAddress, evmAddress, isEvmMode } = useNetwork();\n\n const [pendingDepositId, setPendingDepositId] = useState<string | null>(null);\n\n const ensurePendingDraft = useCallback(\n (draftAmount: string): ReturnType<typeof createPendingDepositDraft> => {\n // Use isEvmMode flag instead of checking context.entryNetwork\n const walletForDraft = isEvmMode\n ? evmAddress || solanaAddress\n : solanaAddress;\n const chainForDraft = context.selectedChainId ?? (context.selectedChain ?? 'solana');\n let pendingState = readPendingDeposit();\n if (pendingState?.stage === 'failed') {\n clearPendingDeposit();\n pendingState = null;\n }\n if (pendingState && pendingDepositId && pendingState.depositId !== pendingDepositId) {\n clearPendingDeposit();\n pendingState = null;\n }\n if (!pendingState) {\n const draft = createPendingDepositDraft({\n depositId: pendingDepositId ?? `dep-${Date.now()}`,\n wallet: walletForDraft || '',\n chain: chainForDraft,\n amount: draftAmount,\n });\n setPendingDepositId(draft.depositId);\n return draft;\n }\n\n // If pending state exists but amount differs, update it.\n // This ensures the localStorage has the current user input amount,\n // preventing stale amounts from being used in success records.\n // Only update if we're still in early stages (before bridge/solana submission).\n const canUpdateAmount = pendingState.stage === 'initiated';\n if (canUpdateAmount && pendingState.amount !== draftAmount) {\n logger.debug('[PendingDepositState] Updating pending draft amount', {\n oldAmount: pendingState.amount,\n newAmount: draftAmount,\n stage: pendingState.stage,\n });\n const updatedState = writePendingDeposit({\n ...pendingState,\n amount: draftAmount,\n });\n return updatedState;\n }\n\n return pendingState;\n },\n [solanaAddress, context.selectedChainId, context.selectedChain, evmAddress, isEvmMode, pendingDepositId]\n );\n\n return {\n pendingDepositId,\n setPendingDepositId,\n ensurePendingDraft,\n };\n};\n\n"]}
|
|
@@ -84,7 +84,7 @@ export var useSolanaDeposit = function (_a) {
|
|
|
84
84
|
}
|
|
85
85
|
recipientKey = new PublicKey(solanaRecipient);
|
|
86
86
|
usdcToken = Array.isArray(nord === null || nord === void 0 ? void 0 : nord.tokens)
|
|
87
|
-
? nord === null || nord === void 0 ? void 0 : nord.tokens.find(function (t) { return t.symbol === 'USDC_2'; })
|
|
87
|
+
? (nord === null || nord === void 0 ? void 0 : nord.tokens.find(function (t) { return t.symbol === 'USDC_2'; })) || (nord === null || nord === void 0 ? void 0 : nord.tokens[0])
|
|
88
88
|
: null;
|
|
89
89
|
if (!usdcToken) {
|
|
90
90
|
throw new Error('Nord token configuration is missing USDC. Verify your Nord deployment.');
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSolanaDeposit.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/hooks/useSolanaDeposit.ts"],"names":[],"mappings":"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","sourcesContent":["import { useCallback } from 'react';\nimport { PublicKey } from '@solana/web3.js';\nimport { useN1WalletContext } from '../../../hooks';\nimport { useNetwork } from '../../../providers/N1WalletProvider/NetworkProvider';\nimport { useSession } from '../../../providers/N1WalletProvider/SessionProvider';\nimport { advancePendingDeposit, createPendingDepositDraft } from '../utils/deposit/storage';\nimport {\n waitForDepositEventIndex,\n waitForNordAcknowledgement,\n waitForTransactionSlot,\n} from '../utils/deposit/solanaUtils';\nimport { ProtonClientLike, SolanaConnectionLike } from '../types';\nimport { useWalletConnection } from '../providers/WalletConnectionProvider';\nimport { logger } from '../../../utils/logger';\nimport { createDepositError } from '../../../utils/errors';\n\ninterface UseSolanaDepositProps {\n setDepositProgressPhase: (phase: 'bridge' | 'solana' | 'nord') => void;\n ensurePendingDraft: (amount: string) => ReturnType<typeof createPendingDepositDraft>;\n}\n\nexport const useSolanaDeposit = ({\n setDepositProgressPhase,\n ensurePendingDraft,\n}: UseSolanaDepositProps) => {\n // Use new providers for address and nordUser\n const { solanaAddress } = useNetwork();\n const { nordUser } = useSession();\n // nord client still comes from legacy context (passed as prop)\n const { nord } = useN1WalletContext();\n\n const { turnkeyAddress } = useWalletConnection();\n\n const runSolanaDeposit = useCallback(\n async (draftAmount: string, pendingState?: ReturnType<typeof createPendingDepositDraft> | null) => {\n logger.info(\"[SolanaDeposit] runSolanaDeposit called\", {\n draftAmount,\n hasPendingState: !!pendingState,\n });\n\n if (!nord || !nordUser) {\n logger.logError(createDepositError('SOLANA_TX_FAILED', 'Nord client/session not available'));\n throw new Error('Nord client/session not available for Solana deposit');\n }\n setDepositProgressPhase('solana');\n let workingState = pendingState ?? ensurePendingDraft(draftAmount);\n\n const normalizedAmount = parseFloat(draftAmount);\n let txId: string | null = null;\n let serializedTx: string | null = null;\n\n const protonClient = nord?.protonClient as ProtonClientLike | undefined;\n const solanaConnection = nord?.solanaConnection as SolanaConnectionLike | undefined;\n\n if (!protonClient || !solanaConnection) {\n logger.logError(createDepositError('SOLANA_TX_FAILED', 'Missing Solana or Proton configuration'));\n throw new Error('Nord client is missing Solana or Proton configuration. Verify your Nord deployment.');\n }\n\n const solanaRecipient = solanaAddress || turnkeyAddress;\n if (!solanaRecipient) {\n logger.logError(createDepositError('SOLANA_TX_FAILED', 'Solana recipient unavailable'));\n throw new Error('Solana recipient is unavailable. Wait for Turnkey to finish provisioning.');\n }\n const recipientKey = new PublicKey(solanaRecipient);\n\n const usdcToken = Array.isArray(nord?.tokens)\n ? nord?.tokens.find((t: any) => t.symbol === 'USDC_2') || nord?.tokens[0]\n : null;\n\n if (!usdcToken) {\n throw new Error('Nord token configuration is missing USDC. Verify your Nord deployment.');\n }\n\n setDepositProgressPhase('solana');\n // Check if this is a CCTP bridge flow (tx already has EVM hash starting with 0x)\n // If so, don't overwrite tx - only update mintTx later\n const isBridgeFlow = workingState.tx?.startsWith('0x') ?? false;\n workingState = advancePendingDeposit(workingState, {\n stage: 'solana_submitted',\n // For bridge flows, preserve the EVM tx hash; for native Solana, use the Solana txId\n tx: isBridgeFlow ? workingState.tx : (txId ?? workingState.tx ?? null),\n });\n\n logger.info(\"[SolanaDeposit] Calling nordUser.deposit...\", {\n normalizedAmount,\n tokenId: usdcToken.tokenId,\n });\n\n // Try primary deposit method\n if (typeof nordUser?.deposit === 'function') {\n const depositResponse = await nordUser.deposit({\n amount: normalizedAmount,\n tokenId: usdcToken.tokenId,\n });\n\n if (depositResponse) {\n if (typeof depositResponse === 'string') {\n txId = depositResponse;\n } else if (\n typeof depositResponse === 'object' &&\n 'signature' in depositResponse &&\n typeof depositResponse.signature === 'string'\n ) {\n txId = depositResponse.signature;\n if ('rawTx' in depositResponse && typeof depositResponse.rawTx === 'string') {\n serializedTx = depositResponse.rawTx;\n }\n }\n }\n }\n\n // Fallback to depositSpl if primary failed or returned nothing\n if (!txId) {\n logger.info(\"[SolanaDeposit] No txId from deposit, trying depositSpl...\");\n const splTx = await nordUser?.depositSpl(normalizedAmount, usdcToken.tokenId);\n if (typeof splTx === 'string') {\n txId = splTx;\n } else if (splTx && typeof splTx === 'object' && 'signature' in splTx && typeof splTx.signature === 'string') {\n txId = splTx.signature;\n if ('rawTx' in splTx && typeof splTx.rawTx === 'string') {\n serializedTx = splTx.rawTx;\n }\n }\n }\n\n if (!txId) {\n logger.logError(createDepositError('SOLANA_TX_FAILED', 'Failed to get transaction ID'));\n throw new Error('Failed to submit deposit transaction.');\n }\n\n logger.info(\"[SolanaDeposit] Transaction submitted successfully\", { txId });\n\n workingState = advancePendingDeposit(workingState, {\n stage: 'solana_submitted',\n // For bridge flows, preserve the EVM tx hash and set mintTx; for native Solana, set tx\n tx: isBridgeFlow ? workingState.tx : txId,\n mintTx: isBridgeFlow ? txId : undefined,\n });\n\n const slot = await waitForTransactionSlot(solanaConnection, txId);\n const eventIndex = await waitForDepositEventIndex(\n protonClient,\n recipientKey,\n slot\n );\n\n setDepositProgressPhase('nord');\n workingState = advancePendingDeposit(workingState, {\n stage: 'solana_confirmed',\n // For bridge flows, preserve the EVM tx hash and set mintTx; for native Solana, set tx\n tx: isBridgeFlow ? workingState.tx : txId,\n mintTx: isBridgeFlow ? txId : undefined,\n });\n\n await waitForNordAcknowledgement(nord!, eventIndex);\n\n return { txId, workingState, solanaTx: serializedTx };\n },\n [solanaAddress, turnkeyAddress, ensurePendingDraft, nord, nordUser, setDepositProgressPhase]\n );\n\n return {\n runSolanaDeposit,\n };\n};\n\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/features/onboarding-flow/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC","sourcesContent":["export { OnboardingFlow } from './OnboardingFlow';\n"]}
|
|
@@ -121,7 +121,7 @@ export var DepositFlowProvider = function (_a) {
|
|
|
121
121
|
var _q = useDepositAuth(), authStatus = _q.authStatus, authErrorMessage = _q.authErrorMessage, authStatusMessage = _q.authStatusMessage, performAuth = _q.performAuth;
|
|
122
122
|
var _r = usePendingDepositState(), setPendingDepositId = _r.setPendingDepositId, ensurePendingDraft = _r.ensurePendingDraft;
|
|
123
123
|
var finalizeBridgeSuccess = useCallback(function (status) {
|
|
124
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
|
|
124
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
125
125
|
logger.info('[DepositFlow] finalizeBridgeSuccess called', status);
|
|
126
126
|
if (bridgeCompletionRef.current) {
|
|
127
127
|
logger.warn('[DepositFlow] finalizeBridgeSuccess skipped - already completed');
|
|
@@ -132,14 +132,19 @@ export var DepositFlowProvider = function (_a) {
|
|
|
132
132
|
var chainInfo = deriveChainLabel((_b = (_a = draft === null || draft === void 0 ? void 0 : draft.chain) !== null && _a !== void 0 ? _a : context.selectedChainId) !== null && _b !== void 0 ? _b : selectedChain);
|
|
133
133
|
var txId = (_h = (_g = (_f = (_e = (_d = (_c = status.tx) !== null && _c !== void 0 ? _c : status.solanaTx) !== null && _d !== void 0 ? _d : status.mintTx) !== null && _e !== void 0 ? _e : status.bridgeTx) !== null && _f !== void 0 ? _f : draft === null || draft === void 0 ? void 0 : draft.tx) !== null && _g !== void 0 ? _g : draft === null || draft === void 0 ? void 0 : draft.mintTx) !== null && _h !== void 0 ? _h : null;
|
|
134
134
|
logger.debug('[DepositFlow] Finalizing bridge success', { txId: txId, draft: draft, chainInfo: chainInfo });
|
|
135
|
-
|
|
135
|
+
// For bridge deposits, prefer localStorage draft amount over React state because:
|
|
136
|
+
// - draft.amount is updated by advancePendingDeposit with the ACTUAL received amount
|
|
137
|
+
// from confirmClaimAndGetUsdcBalance (after bridge fees)
|
|
138
|
+
// - React state `amount` is the user's INPUT amount (before fees)
|
|
139
|
+
// The actual deposited amount may differ from input due to bridge fees.
|
|
140
|
+
var depositAmount = (_k = (_j = ((draft === null || draft === void 0 ? void 0 : draft.amount) && draft.amount !== '' ? draft.amount : null)) !== null && _j !== void 0 ? _j : (amount && amount !== '' ? amount : null)) !== null && _k !== void 0 ? _k : '0';
|
|
136
141
|
var record = {
|
|
137
142
|
transactionId: txId !== null && txId !== void 0 ? txId : 'pending-bridge',
|
|
138
143
|
amount: depositAmount,
|
|
139
144
|
tokenSymbol: 'USDC',
|
|
140
145
|
chainId: chainInfo.id,
|
|
141
146
|
chainName: chainInfo.name,
|
|
142
|
-
chainNetwork: (
|
|
147
|
+
chainNetwork: (_l = context.selectedChainNetwork) !== null && _l !== void 0 ? _l : null,
|
|
143
148
|
timestamp: Date.now(),
|
|
144
149
|
};
|
|
145
150
|
var result = {
|
|
@@ -151,7 +156,7 @@ export var DepositFlowProvider = function (_a) {
|
|
|
151
156
|
toAddress: 'Exchange Account',
|
|
152
157
|
networkName: chainInfo.name,
|
|
153
158
|
status: 'Completed',
|
|
154
|
-
explorerUrl: (
|
|
159
|
+
explorerUrl: (_p = (_o = pickExplorerUrl((_m = draft === null || draft === void 0 ? void 0 : draft.explorerUrl) !== null && _m !== void 0 ? _m : null, explorerBaseForChain(chainInfo.id), record.transactionId)) !== null && _o !== void 0 ? _o : getSolanaExplorerUrl(record.transactionId)) !== null && _p !== void 0 ? _p : undefined,
|
|
155
160
|
};
|
|
156
161
|
logger.info('[DepositFlow] marking bridge completion', { record: record });
|
|
157
162
|
bridgeCompletionRef.current = true;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DepositFlowProvider.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/providers/DepositFlowProvider.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { createContext, useCallback, useContext, useEffect, useRef, useState } from 'react';\nimport { useN1WalletContext } from '../../../hooks';\nimport { logger } from '../../../utils/logger';\nimport { EVENTS, createDepositEvent } from '../../../utils/events';\nimport { createDepositError } from '../../../utils/errors';\nimport { useBridgeDeposit } from '../hooks/useBridgeDeposit';\nimport { useDepositAuth } from '../hooks/useDepositAuth';\nimport { useDepositHydration } from '../hooks/useDepositHydration';\nimport { usePendingDepositState } from '../hooks/usePendingDepositState';\nimport { useSolanaDeposit } from '../hooks/useSolanaDeposit';\nimport { DepositProgressPhase, OnboardingStep } from '../types';\nimport { deriveChainLabel, formatBridgeError } from '../utils/deposit/bridgeUtils';\nimport { toDepositError } from '../errors/depositError';\nimport {\n getSolanaExplorerUrl,\n SolanaDepositTransactionResult,\n} from '../utils/deposit/solanaDepositTransaction';\nimport {\n advancePendingDeposit, clearLastDepositRecord, clearPendingDeposit,\n createPendingDepositDraft, readPendingDeposit, saveLastDepositRecord\n} from '../utils/deposit/storage';\nimport { isLikelyLedgerSolanaWallet } from '../utils/deposit/walletUtils';\nimport { explorerBaseForChain, pickExplorerUrl } from '../utils/explorerUrl';\nimport { useOnboardingState } from './OnboardingStateProvider';\nimport { useWalletConnection } from './WalletConnectionProvider';\nimport { useNetwork } from '../../../providers/N1WalletProvider/NetworkProvider';\nimport { useSession } from '../../../providers/N1WalletProvider/SessionProvider';\n\n// Define the shape of the deposit state value\nexport interface DepositFlowContextValue {\n amount: string;\n isDepositing: boolean;\n depositProgressPhase: DepositProgressPhase;\n pendingBridgeExplorerUrl: string | null;\n pendingBridgeTx: string | null;\n pendingMintTx: string | null;\n bridgeRetryable: boolean;\n bridgeApprovalPending: boolean;\n bridgeApprovalError: string | null;\n bridgeError: string | null;\n transactionId: string | null;\n transactionResult: SolanaDepositTransactionResult | null;\n authStatus: 'loading' | 'success' | 'error';\n authErrorMessage: string | null;\n authStatusMessage: string | null;\n updateAmount: (newAmount: string) => void;\n startDeposit: () => Promise<void>;\n completeDeposit: () => void;\n performAuth: () => Promise<void>;\n}\n\n// Create the context with a default value\nconst DepositFlowContext = createContext<DepositFlowContextValue | undefined>(undefined);\n\n// Props for the provider component\ninterface DepositFlowProviderProps {\n children: React.ReactNode;\n}\n\n/**\n * Provider component for the deposit flow state\n */\nexport const DepositFlowProvider: React.FC<DepositFlowProviderProps> = ({\n children,\n}) => {\n // Get flow state context\n const {\n state,\n context,\n actions: flowActions,\n updateContext,\n isDebugOverride,\n } = useOnboardingState();\n\n // Get wallet context\n const { nord } = useN1WalletContext();\n const { solanaAddress: address, evmAddress, solanaWallet, evmWallet, solanaAdapter } = useNetwork();\n const { nordUser, turnkeyEnabled } = useSession();\n const { turnkeyAddress, turnkeyStatus } = useWalletConnection();\n\n // chain\n const [selectedChain, setSelectedChain] = useState<string | null>(\n context.selectedChain\n );\n\n // transaction & deposit\n const [amount, setAmount] = useState(context.amount);\n const [isDepositing, setIsDepositing] = useState(false);\n\n // Initialize phase - only check deposit ID, determine bridge flow from context\n const getInitialPhase = (): DepositProgressPhase => {\n const pending = readPendingDeposit();\n if (!pending?.depositId) return 'solana';\n\n // Determine if it's a bridge flow from context (not from localStorage)\n const entryNetwork = context.entryNetwork ?? 'solana';\n const selectedChainId = context.selectedChainId ?? '';\n const isBridgeFlow = entryNetwork === 'evm' && selectedChainId.toLowerCase() !== 'solana';\n\n if (isBridgeFlow) {\n // Bridge flow with deposit ID -> claim phase (we'll determine actual state by checking attestation)\n return 'claim';\n }\n\n // Direct Solana flow\n return 'solana';\n };\n\n const [depositProgressPhase, setDepositProgressPhase] =\n useState<DepositProgressPhase>(getInitialPhase());\n const [transactionId, setTransactionId] = useState<string | null>(context.transactionId);\n const [transactionResult, setTransactionResult] = useState<SolanaDepositTransactionResult | null>(null);\n\n const [pendingBridgeExplorerUrl, setPendingBridgeExplorerUrl] = useState<string | null>(null);\n const [pendingBridgeTx, setPendingBridgeTx] = useState<string | null>(null);\n const [pendingMintTx, setPendingMintTx] = useState<string | null>(null);\n\n const bridgeCompletionRef = useRef(false);\n const startDepositInFlightRef = useRef(false);\n\n // Use refs to track previous values\n const prevContextRef = useRef(context);\n\n /**\n * Handle an error by transitioning to error state\n */\n const handleError = useCallback(\n (error: Error) => {\n const normalized = toDepositError(error);\n logger.logError(createDepositError('BRIDGE_FAILED', normalized.message, {\n recoverable: normalized.retryable,\n cause: error,\n context: {\n code: normalized.code,\n userMessage: normalized.userMessage,\n details: normalized.details,\n },\n }));\n flowActions.setErrorState(normalized);\n },\n [flowActions]\n );\n\n const {\n authStatus,\n authErrorMessage,\n authStatusMessage,\n performAuth,\n } = useDepositAuth();\n\n const {\n setPendingDepositId,\n ensurePendingDraft,\n } = usePendingDepositState();\n\n const finalizeBridgeSuccess = useCallback(\n (status: { tx?: string | null; mintTx?: string | null; bridgeTx?: string | null; solanaTx?: string | null; depositId?: string | null }) => {\n logger.info('[DepositFlow] finalizeBridgeSuccess called', status);\n if (bridgeCompletionRef.current) {\n logger.warn('[DepositFlow] finalizeBridgeSuccess skipped - already completed');\n return;\n }\n\n const pending = readPendingDeposit();\n const draft = pending;\n const chainInfo = deriveChainLabel(draft?.chain ?? context.selectedChainId ?? selectedChain);\n const txId =\n status.tx ??\n status.solanaTx ??\n status.mintTx ??\n status.bridgeTx ??\n draft?.tx ??\n draft?.mintTx ??\n null;\n\n logger.debug('[DepositFlow] Finalizing bridge success', { txId, draft, chainInfo });\n\n // For bridge deposits, prefer localStorage draft amount over React state because:\n // - draft.amount is updated by advancePendingDeposit with the ACTUAL received amount\n // from confirmClaimAndGetUsdcBalance (after bridge fees)\n // - React state `amount` is the user's INPUT amount (before fees)\n // The actual deposited amount may differ from input due to bridge fees.\n const depositAmount =\n (draft?.amount && draft.amount !== '' ? draft.amount : null) ??\n (amount && amount !== '' ? amount : null) ??\n '0';\n const record = {\n transactionId: txId ?? 'pending-bridge',\n amount: depositAmount,\n tokenSymbol: 'USDC',\n chainId: chainInfo.id,\n chainName: chainInfo.name,\n chainNetwork: context.selectedChainNetwork ?? null,\n timestamp: Date.now(),\n };\n const result: SolanaDepositTransactionResult = {\n success: true,\n transactionId: record.transactionId,\n amount: depositAmount,\n tokenSymbol: 'USDC',\n fromAddress: address || 'Your Wallet',\n toAddress: 'Exchange Account',\n networkName: chainInfo.name,\n status: 'Completed',\n explorerUrl:\n pickExplorerUrl(\n draft?.explorerUrl ?? null,\n explorerBaseForChain(chainInfo.id),\n record.transactionId\n ) ?? getSolanaExplorerUrl(record.transactionId) ?? undefined,\n };\n\n logger.info('[DepositFlow] marking bridge completion', { record });\n\n bridgeCompletionRef.current = true;\n setTransactionId(txId ?? null);\n setTransactionResult(result);\n setDepositProgressPhase('nord');\n setIsDepositing(false);\n clearPendingDeposit();\n saveLastDepositRecord(address, record);\n\n logger.info('[DepositFlow] dispatching markDepositSuccess');\n flowActions.markDepositSuccess({\n transactionId: record.transactionId,\n record,\n });\n },\n [address, amount, context.selectedChainId, context.selectedChainNetwork, evmAddress, flowActions, selectedChain]\n );\n\n const { runSolanaDeposit } = useSolanaDeposit({\n setDepositProgressPhase,\n ensurePendingDraft,\n });\n\n const {\n startCctpBridge,\n resumeClaimProcess,\n bridgeRetryable,\n setBridgeRetryable,\n bridgeError,\n setBridgeError,\n bridgeApprovalPending,\n setBridgeApprovalPending,\n bridgeApprovalError,\n setBridgeApprovalError,\n } = useBridgeDeposit({\n setDepositProgressPhase,\n setPendingBridgeTx,\n setPendingMintTx,\n setPendingDepositId,\n setPendingBridgeExplorerUrl,\n ensurePendingDraft,\n finalizeBridgeSuccess,\n setIsDepositing,\n runSolanaDeposit,\n });\n\n useDepositHydration({\n setPendingDepositId,\n setAmount,\n setTransactionId,\n setIsDepositing,\n setPendingBridgeExplorerUrl,\n setPendingBridgeTx,\n setPendingMintTx,\n setDepositProgressPhase,\n setBridgeError,\n setBridgeRetryable,\n });\n\n /**\n * Update amount for deposit\n */\n const updateAmount = useCallback(\n (newAmount: string) => {\n setAmount(newAmount);\n updateContext({ amount: newAmount });\n },\n [updateContext]\n );\n\n /**\n * Helper to handle resuming a pending deposit\n */\n const handleResumePendingDeposit = useCallback(async (\n pending: any,\n walletMatches: boolean\n ) => {\n // If user is connected with a different wallet, do not start a new deposit.\n // Ask them to connect the correct wallet (or clear the pending deposit) first.\n if (!walletMatches) {\n logger.logError(createDepositError('WALLET_MISMATCH', 'Pending deposit exists but connected wallet does not match', {\n recoverable: false,\n context: {\n pendingWallet: pending.wallet,\n depositId: pending.depositId,\n },\n }));\n setBridgeError('You have a pending deposit. Please connect the same wallet that started it to continue.');\n setBridgeRetryable(false);\n setIsDepositing(false);\n setDepositProgressPhase('claim');\n setPendingDepositId(pending.depositId);\n return;\n }\n\n // Determine if this is a Solana native flow or a Bridge flow\n // We check the stored chain - if it's 'solana', it's a native Solana deposit.\n // If it's any EVM chain (ethereum, arbitrum, etc.), it's a CCTP bridge flow.\n // Note: The stage (solana_submitted, bridge_confirmed, etc.) does NOT indicate the flow type,\n // since CCTP bridge flows also have solana_* stages for the claim phase.\n const pendingChain = (pending.chain ?? '').toLowerCase();\n\n // EVM chains that indicate a CCTP bridge flow\n const evmChains = ['ethereum', 'eth', 'arbitrum', 'arb', 'arbitrum-one', 'polygon', 'base', 'optimism', 'avalanche', 'evm'];\n const isEvmChain = evmChains.some(c => pendingChain.includes(c));\n\n // If we have a bridge tx hash (starts with 0x), it's definitely an EVM bridge flow\n const hasBridgeTxHash = pending.tx && pending.tx.startsWith('0x');\n\n // Solana native: explicitly 'solana' chain, or empty chain WITHOUT a bridge tx hash\n const isSolanaNative = pendingChain === 'solana' || (!isEvmChain && !hasBridgeTxHash && pendingChain === '');\n\n // Only check for Ledger wallets on Solana native flows, not EVM/CCTP bridge flows\n // Also skip the check during resume - if they started the deposit, they already passed the check\n // The Ledger check should only happen when starting a NEW deposit, not when resuming\n // (Removing the Ledger check here entirely to avoid false positives after browser refresh)\n\n if (isSolanaNative) {\n logger.info('[Deposit] ===== SOLANA RESUME DETECTED =====', {\n depositId: pending.depositId,\n chain: pending.chain,\n stage: pending.stage\n });\n\n // If the deposit is already confirmed, transition to success immediately\n if (pending.stage === 'solana_confirmed') {\n logger.info('[Deposit] Solana deposit already confirmed - transitioning to success', {\n depositId: pending.depositId,\n tx: pending.tx,\n mintTx: pending.mintTx,\n });\n const txId = pending.mintTx || pending.tx || pending.depositId;\n clearPendingDeposit();\n flowActions.markDepositSuccess({\n transactionId: txId,\n record: {\n transactionId: txId,\n amount: pending.amount ?? '0',\n tokenSymbol: 'USDC',\n chainId: pending.chain ?? 'solana',\n chainName: pending.chain === 'solana' ? 'Solana' : (pending.chain ?? 'Solana'),\n chainNetwork: null,\n timestamp: Date.now(),\n },\n });\n return;\n }\n\n setPendingDepositId(pending.depositId);\n setDepositProgressPhase('solana');\n\n // If we have a transaction hash, we can try to \"resume\" monitoring,\n // but typically the UI just needs to be in 'solana' phase and useSolanaDeposit internals\n // or the user interaction will handle the rest.\n // If there's NO tx hash, it just means they started but didn't sign.\n // In that case, we should probably allow them to just \"Retry\" (sign again)\n // rather than showing a \"missing bridge hash\" error.\n\n if (pending.tx) {\n setTransactionId(pending.tx);\n // We could try to auto-monitor here if we had a dedicated \"resumeSolana\" function,\n // but for now, setting phase to 'solana' allows the user to see the state.\n // If it was already confirmed, the initial hydration might have caught it?\n // or we just let them \"Retry\" if it seems stuck.\n setBridgeError('Transaction submitted. Please wait for confirmation.');\n setBridgeRetryable(false); // Maybe true if they want to try again?\n setIsDepositing(true);\n } else {\n // No TX hash yet - likely interrupted before signing\n logger.info('[Deposit] Solana deposit resumed without TX - allowing retry');\n setBridgeError(null);\n setBridgeRetryable(true); // Allow them to click \"Sign\" / \"Retry\" \n setIsDepositing(false);\n }\n return;\n }\n\n // --- EVM / CCTP FLOW BELOW ---\n\n // STATE 1: Pending deposit ID exists and matches wallet address (EVM or Solana) -> CLAIM\n logger.info('[Deposit] ===== CLAIM MODE DETECTED (CCTP) =====', {\n depositId: pending.depositId,\n });\n\n // For EVM flows with Turnkey, ensure Turnkey is ready before attempting claim.\n const isEvmFlow = context.entryNetwork === 'evm';\n const turnkeyReady = !turnkeyEnabled || !!solanaWallet;\n const canClaim = !isEvmFlow || turnkeyReady;\n\n if (!canClaim) {\n const errorMsg =\n turnkeyEnabled && !solanaWallet\n ? 'Preparing Solana wallet... Please wait.'\n : 'Wallet not ready. Please try again.';\n setBridgeError(errorMsg);\n setBridgeRetryable(true);\n setIsDepositing(false);\n return;\n }\n\n // Clear previous errors\n setBridgeError(null);\n setBridgeRetryable(false);\n setBridgeApprovalError(null);\n\n // Restore bridge tx from pending state\n const bridgeTxFromPending = pending.tx ?? null;\n if (bridgeTxFromPending) {\n setPendingBridgeTx(bridgeTxFromPending);\n\n const explorerUrl = pending.explorerUrl ??\n pickExplorerUrl(\n null,\n explorerBaseForChain(pending.chain),\n bridgeTxFromPending\n );\n if (explorerUrl) {\n setPendingBridgeExplorerUrl(explorerUrl);\n }\n } else {\n logger.warn('[DepositFlow] Pending deposit missing bridge tx hash');\n setPendingDepositId(pending.depositId);\n setDepositProgressPhase('claim');\n setBridgeError('Pending deposit found, but the bridge transaction hash is missing. Please retry from the progress screen.');\n setBridgeRetryable(true);\n setIsDepositing(false);\n return;\n }\n\n // Restore mint tx\n if (pending.mintTx) {\n setPendingMintTx(pending.mintTx);\n }\n\n setPendingDepositId(pending.depositId);\n setDepositProgressPhase('claim');\n setIsDepositing(true);\n\n try {\n await resumeClaimProcess(pending);\n } catch (claimError) {\n const normalized = toDepositError(claimError, { depositId: pending.depositId, stage: 'claim' });\n setIsDepositing(false);\n setBridgeError(normalized.userMessage);\n setBridgeRetryable(normalized.retryable);\n throw claimError;\n }\n }, [\n context.entryNetwork,\n solanaWallet,\n turnkeyEnabled,\n setBridgeError,\n setBridgeRetryable,\n setIsDepositing,\n setDepositProgressPhase,\n setPendingDepositId,\n setBridgeApprovalError,\n setPendingBridgeTx,\n setPendingBridgeExplorerUrl,\n setPendingMintTx,\n resumeClaimProcess,\n setTransactionId\n ]);\n\n\n /**\n * Helper to validate conditions for a new deposit\n */\n const validateNewDeposit = useCallback((\n amountStr: string,\n isBridgeFlow: boolean,\n targetChainId: string | null\n ) => {\n if (!amountStr || parseFloat(amountStr) <= 0) {\n throw new Error('Invalid amount');\n }\n if (!nord) {\n throw new Error('Nord client is unavailable. Please check your configuration and try again.');\n }\n if (!nordUser) {\n throw new Error('Your Nord session is not ready yet. Reconnect your wallet to retry.');\n }\n if (!address && !turnkeyAddress) {\n throw new Error('We were unable to determine your Solana deposit address. Please reconnect your wallet and try again.');\n }\n if (isBridgeFlow && !evmAddress) {\n throw new Error('No connected EVM wallet was found for bridging. Please reconnect your EVM wallet.');\n }\n }, [nord, nordUser, address, turnkeyAddress, evmAddress]);\n\n\n /**\n * Helper to handle starting a NEW deposit\n */\n const handleNewDeposit = useCallback(async () => {\n logger.debug('[DepositFlow] SUBMIT MODE: Starting new deposit');\n\n // Cleanup previous state\n bridgeCompletionRef.current = false;\n setPendingBridgeTx(null);\n setPendingMintTx(null);\n setPendingBridgeExplorerUrl(null);\n setBridgeError(null);\n setBridgeRetryable(false);\n setBridgeApprovalError(null);\n\n // Chain resolution\n const targetChainId =\n context.selectedChainId ??\n (context.selectedChain ? context.selectedChain.toLowerCase() : null) ??\n (selectedChain ? selectedChain.toLowerCase() : null);\n\n const normalizedTargetChainIdRaw = (targetChainId ?? context.entryNetwork ?? 'solana').toLowerCase();\n const normalizedTargetChainId =\n normalizedTargetChainIdRaw === 'evm'\n ? 'ethereum'\n : normalizedTargetChainIdRaw === 'arb' || normalizedTargetChainIdRaw === 'arbitrum-one'\n ? 'arbitrum'\n : normalizedTargetChainIdRaw;\n\n // Bridge flow determination\n const hasEvmWallet = !!evmAddress;\n const isEvmChain = normalizedTargetChainId !== 'solana';\n const isBridgeFlow = hasEvmWallet && isEvmChain;\n\n // Only run the signMessage probe for direct Solana deposits.\n // Bridge flow will run through the resume/claim path where the check already exists.\n if (!isBridgeFlow && solanaWallet) {\n try {\n if (await isLikelyLedgerSolanaWallet(solanaWallet, solanaAdapter)) {\n handleError(new Error('Ledger wallets are not supported for this action'));\n return;\n }\n } catch (e: any) {\n if (e?.code === 'N1_SIGNATURE_CANCELLED') {\n setIsDepositing(false);\n flowActions.markDepositFailed('Signature cancelled');\n return;\n }\n handleError(e instanceof Error ? e : new Error(String(e)));\n return;\n }\n }\n\n try {\n validateNewDeposit(amount, isBridgeFlow, targetChainId);\n } catch (validationError: any) {\n handleError(validationError);\n return;\n }\n\n logger.event(createDepositEvent(EVENTS.DEPOSIT.START, {\n amount,\n chain: selectedChain || context.selectedChain,\n isBridgeFlow,\n }));\n setIsDepositing(true);\n flowActions.startDeposit();\n\n try {\n if (isBridgeFlow) {\n await startCctpBridge(amount);\n setDepositProgressPhase('bridge');\n return;\n }\n\n // Direct Solana Deposit\n const pendingState = ensurePendingDraft(amount);\n const { txId } = await runSolanaDeposit(amount, pendingState);\n\n // Construct success record\n const result: SolanaDepositTransactionResult = {\n success: true,\n transactionId: txId,\n amount,\n tokenSymbol: 'USDC',\n fromAddress: address || 'Your Wallet',\n toAddress: 'Exchange Account',\n networkName: selectedChain ?? context.selectedChain ?? 'Solana',\n status: 'Completed',\n explorerUrl: getSolanaExplorerUrl(txId),\n };\n const depositRecord = {\n transactionId: txId,\n amount,\n tokenSymbol: 'USDC',\n chainId: context.selectedChainId ?? (selectedChain ?? 'solana'),\n chainName: context.selectedChain ?? (selectedChain ?? 'Solana'),\n chainNetwork: context.selectedChainNetwork ?? null,\n timestamp: Date.now(),\n };\n\n saveLastDepositRecord(address, depositRecord);\n clearPendingDeposit();\n setPendingDepositId(null);\n setBridgeRetryable(false);\n setBridgeError(null);\n setTransactionId(txId);\n setTransactionResult(result);\n\n logger.event(createDepositEvent(EVENTS.DEPOSIT.COMPLETE, {\n transactionId: txId,\n amount,\n chain: selectedChain || context.selectedChain,\n }));\n flowActions.markDepositSuccess({\n transactionId: txId,\n record: depositRecord,\n });\n\n } catch (depositError) {\n const normalized = toDepositError(depositError, {\n stage: depositProgressPhase,\n isBridgeFlow: depositProgressPhase === 'bridge' || depositProgressPhase === 'claim',\n });\n\n logger.event(createDepositEvent(EVENTS.DEPOSIT.FAILED, {\n code: normalized.code,\n message: normalized.message,\n retryable: normalized.retryable,\n stage: depositProgressPhase,\n }));\n logger.logError(createDepositError('BRIDGE_FAILED', normalized.message || 'Deposit failed', {\n recoverable: normalized.retryable,\n context: { code: normalized.code, stage: depositProgressPhase },\n cause: depositError instanceof Error ? depositError : undefined,\n }));\n\n // Try to persist failure state\n try {\n const existing = readPendingDeposit();\n if (existing) {\n advancePendingDeposit(existing, {\n stage: normalized.retryable ? existing.stage : 'failed',\n reason: normalized.message || 'Deposit failed',\n });\n }\n } catch (e) { /* ignore */ }\n\n // Set errors\n const isBridgeError = depositProgressPhase === 'bridge' || depositProgressPhase === 'claim';\n if (isBridgeError) {\n setBridgeError(normalized.userMessage);\n setBridgeRetryable(normalized.retryable);\n if (bridgeApprovalPending) {\n setBridgeApprovalError(normalized.userMessage);\n setBridgeApprovalPending(false);\n }\n }\n\n if (normalized.retryable) {\n setBridgeError(normalized.userMessage);\n setBridgeRetryable(true);\n return;\n }\n\n flowActions.markDepositFailed(normalized.message || 'Failed to process deposit');\n } finally {\n setIsDepositing(false);\n }\n }, [\n context,\n selectedChain,\n evmAddress,\n solanaWallet,\n evmWallet,\n amount,\n address,\n turnkeyAddress,\n nord,\n nordUser,\n handleError,\n setBridgeError,\n setBridgeRetryable,\n setBridgeApprovalError,\n setPendingBridgeTx,\n setPendingMintTx,\n setPendingBridgeExplorerUrl,\n setPendingDepositId,\n setDepositProgressPhase,\n startCctpBridge,\n runSolanaDeposit,\n ensurePendingDraft,\n flowActions,\n depositProgressPhase,\n bridgeApprovalPending,\n validateNewDeposit,\n setTransactionId,\n setTransactionResult,\n bridgeApprovalPending\n ]);\n\n /**\n * Main entry point for starting a deposit\n */\n const startDeposit = useCallback(async () => {\n if (startDepositInFlightRef.current) {\n logger.debug('[DepositFlow] startDeposit ignored (already in flight)');\n return;\n }\n\n startDepositInFlightRef.current = true;\n try {\n logger.debug('[DepositFlow] startDeposit called');\n updateContext({ depositError: undefined });\n\n const pending = readPendingDeposit();\n\n // Check if we should resume a pending deposit\n if (pending?.depositId) {\n const pendingWalletLower = pending.wallet?.toLowerCase() ?? '';\n const evmAddressLower = evmAddress?.toLowerCase() ?? '';\n const addressLower = address?.toLowerCase() ?? '';\n const walletMatches = pendingWalletLower && (\n evmAddressLower === pendingWalletLower ||\n addressLower === pendingWalletLower\n );\n\n await handleResumePendingDeposit(pending, !!walletMatches);\n return;\n }\n\n // Otherwise, start a new one\n await handleNewDeposit();\n } finally {\n startDepositInFlightRef.current = false;\n }\n\n }, [\n readPendingDeposit,\n evmAddress,\n address,\n handleResumePendingDeposit,\n handleNewDeposit,\n updateContext\n ]);\n\n /**\n * Complete the deposit process and move to the next screen\n */\n const completeDeposit = useCallback(() => {\n clearLastDepositRecord(address);\n clearPendingDeposit();\n setPendingDepositId(null);\n updateContext({ lastDeposit: null });\n\n if (context.isDepositOnlyFlow) {\n flowActions.completeFlow({\n hasNordAccount: true,\n hasActiveSession: true,\n });\n return;\n }\n\n // Check if user has an active session to determine the next state\n if (context.hasActiveSession) {\n // If user has an active session, go directly to FINAL_SUCCESS\n flowActions.completeFlow({\n hasNordAccount: true,\n hasActiveSession: true,\n });\n } else {\n // If user doesn't have an active session, go to authentication flow\n flowActions.requireAuth({ hasNordAccount: true });\n }\n }, [context.hasActiveSession, context.isDepositOnlyFlow, flowActions, address, updateContext, evmAddress, setPendingDepositId]);\n\n\n /**\n * Update state based on context changes\n */\n useEffect(() => {\n const prevContext = prevContextRef.current;\n\n // Only update state if the relevant context values have actually changed\n if (context.selectedChain !== prevContext.selectedChain) {\n setSelectedChain(context.selectedChain);\n }\n\n if (context.amount !== prevContext.amount) {\n setAmount(context.amount);\n }\n\n if (context.transactionId !== prevContext.transactionId) {\n setTransactionId(context.transactionId);\n }\n\n // Update the ref to the current context\n prevContextRef.current = context;\n }, [context]);\n\n // Phase correction logic removed.\n // We now rely on correct hydration in useDepositHydration.ts.\n\n useEffect(() => {\n if (!isDebugOverride || state !== OnboardingStep.DEPOSIT_SUCCESS || transactionResult) {\n return;\n }\n\n const mockTransactionId = context.transactionId ?? 'debug-tx-12345';\n const fallbackChain = context.selectedChain ?? 'Solana';\n setTransactionId(mockTransactionId);\n setTransactionResult({\n success: true,\n transactionId: mockTransactionId,\n amount: context.amount || '1,250',\n tokenSymbol: 'USDC',\n fromAddress: address || 'Debug Wallet',\n toAddress: 'Nord Account',\n networkName: fallbackChain,\n status: 'Completed',\n explorerUrl: getSolanaExplorerUrl(mockTransactionId),\n });\n }, [isDebugOverride, state, transactionResult, context, address]);\n\n // Create the context value\n const contextValue: DepositFlowContextValue = {\n amount,\n isDepositing,\n depositProgressPhase,\n pendingBridgeExplorerUrl,\n pendingBridgeTx,\n pendingMintTx,\n bridgeRetryable,\n bridgeApprovalPending,\n bridgeApprovalError,\n bridgeError,\n transactionId,\n transactionResult,\n authStatus,\n authErrorMessage,\n authStatusMessage,\n updateAmount,\n startDeposit,\n completeDeposit,\n performAuth,\n };\n\n return (\n <DepositFlowContext.Provider value={contextValue}>\n {children}\n </DepositFlowContext.Provider>\n );\n};\n\n/**\n * Hook to use the deposit flow context\n */\nexport const useDepositFlow = (): DepositFlowContextValue => {\n const context = useContext(DepositFlowContext);\n if (context === undefined) {\n throw new Error('useDepositFlow must be used within a DepositFlowProvider');\n }\n return context;\n};\n"]}
|
|
@@ -86,10 +86,8 @@ export var OnboardingStateProvider = function (_a) {
|
|
|
86
86
|
contextRef.current = context;
|
|
87
87
|
}, [context]);
|
|
88
88
|
var guardedDispatch = useCallback(function (action) {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
return;
|
|
92
|
-
}
|
|
89
|
+
// Note: Removed isDebugOverride check to allow navigation in debug mode
|
|
90
|
+
// Debug mode now properly initializes context so navigation works
|
|
93
91
|
if (!dynamicSdkHasLoaded) {
|
|
94
92
|
logger.debug("Ignoring action ".concat(action.type, " until Dynamic SDK is ready"));
|
|
95
93
|
return;
|