@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":"onboardingStateMachine.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/providers/onboardingStateMachine.ts"],"names":[],"mappings":"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","sourcesContent":["import { SolanaNetwork } from '../../../config/solana';\nimport { OnboardingContext, OnboardingStep, StoredDepositRecord, initialOnboardingContext } from '../types';\n\n/**\n * State machine for managing the onboarding flow of the N1 wallet widget.\n *\n * This reducer-based state machine handles the complete user journey from initial\n * wallet connection through deposit completion. It manages:\n * - Wallet connection flow (EVM or Solana)\n * - Chain selection\n * - Deposit amount input and processing\n * - Turnkey authentication\n * - Error handling and recovery\n *\n * The machine follows a unidirectional data flow pattern where actions are dispatched\n * to transition between states and update the context.\n */\nexport interface OnboardingStateSnapshot {\n state: OnboardingStep;\n context: OnboardingContext;\n}\n\nexport type OnboardingStateAction =\n | { type: 'SET_CONTEXT'; updates: Partial<OnboardingContext> }\n | { type: 'BEGIN_WALLET_CONNECTION'; entryNetwork: 'evm' | 'solana' }\n | { type: 'GO_TO_CHAIN_SELECTION'; resetSelection: boolean }\n | { type: 'GO_TO_AMOUNT_INPUT' }\n | { type: 'ENTER_TURNKEY_AUTH' }\n | { type: 'ENTER_TURNKEY_PREPARING' }\n | { type: 'RETURN_TO_CONNECTING' }\n | {\n type: 'SELECT_CHAIN';\n selection: {\n id: string;\n name: string;\n network?: string | null;\n };\n }\n | { type: 'START_DEPOSIT' }\n | {\n type: 'DEPOSIT_SUCCESS';\n payload: {\n transactionId: string;\n record: StoredDepositRecord;\n };\n }\n | { type: 'DEPOSIT_FAILED'; message: string }\n | { type: 'GO_TO_AUTH'; hasNordAccount?: boolean }\n | {\n type: 'COMPLETE_FLOW';\n hasActiveSession?: boolean;\n hasNordAccount?: boolean;\n }\n | { type: 'SET_ERROR'; error: Error }\n | { type: 'RESET'; context?: OnboardingContext }\n /** Debug-only: Applies a complete snapshot to override the current state */\n | { type: 'APPLY_SNAPSHOT'; snapshot: OnboardingStateSnapshot };\n\nconst initialMachineState: OnboardingStateSnapshot = {\n state: OnboardingStep.ENTRY_SELECTION,\n context: initialOnboardingContext,\n};\n\n/**\n * Resets chain selection context when navigating to chain selection.\n * If resetSelection is false, keeps selection; otherwise clears all\n * chain and deposit-related fields.\n */\nconst resetSelectionContext = (\n context: OnboardingContext,\n resetSelection: boolean\n): OnboardingContext => {\n if (!resetSelection) {\n return {\n ...context,\n };\n }\n\n return {\n ...context,\n selectedChain: null,\n selectedChainId: null,\n selectedChainNetwork: null,\n amount: '',\n lastDeposit: null,\n };\n};\n\nexport const onboardingStateReducer = (\n machineState: OnboardingStateSnapshot = initialMachineState,\n action: OnboardingStateAction\n): OnboardingStateSnapshot => {\n switch (action.type) {\n case 'SET_CONTEXT':\n return {\n ...machineState,\n context: { ...machineState.context, ...action.updates },\n };\n\n case 'BEGIN_WALLET_CONNECTION': {\n // For Solana, pre-select the chain; for EVM, leave selection null\n const isSolana = action.entryNetwork === 'solana';\n return {\n state: OnboardingStep.CONNECTING_WALLET,\n context: {\n ...machineState.context,\n entryNetwork: action.entryNetwork,\n selectedChain: isSolana ? 'Solana' : null,\n selectedChainId: isSolana ? 'solana' : null,\n selectedChainNetwork: isSolana ? SolanaNetwork.MAINNET : null,\n depositError: undefined,\n lastDeposit: null,\n },\n };\n }\n\n case 'GO_TO_CHAIN_SELECTION':\n return {\n state: OnboardingStep.CHAIN_SELECTION,\n context: resetSelectionContext(machineState.context, action.resetSelection),\n };\n\n case 'GO_TO_AMOUNT_INPUT':\n return {\n state: OnboardingStep.AMOUNT_INPUT,\n context: machineState.context,\n };\n\n case 'ENTER_TURNKEY_AUTH':\n return {\n state: OnboardingStep.TURNKEY_AUTH,\n context: machineState.context,\n };\n\n case 'ENTER_TURNKEY_PREPARING':\n return {\n state: OnboardingStep.TURNKEY_PREPARING,\n context: machineState.context,\n };\n\n case 'RETURN_TO_CONNECTING':\n return {\n state: OnboardingStep.CONNECTING_WALLET,\n context: machineState.context,\n };\n\n case 'SELECT_CHAIN':\n return {\n state: OnboardingStep.AMOUNT_INPUT,\n context: {\n ...machineState.context,\n selectedChain: action.selection.name,\n selectedChainId: action.selection.id,\n selectedChainNetwork: action.selection.network ?? null,\n depositError: undefined,\n lastDeposit: null,\n },\n };\n\n case 'START_DEPOSIT':\n return {\n state: OnboardingStep.DEPOSIT_PROGRESS,\n context: {\n ...machineState.context,\n depositError: undefined,\n error: null,\n },\n };\n\n case 'DEPOSIT_SUCCESS':\n return {\n state: OnboardingStep.DEPOSIT_SUCCESS,\n context: {\n ...machineState.context,\n hasNordAccount: true, // Successful deposit implies Nord account exists\n transactionId: action.payload.transactionId,\n amount: action.payload.record.amount,\n selectedChain: action.payload.record.chainName,\n selectedChainId: action.payload.record.chainId,\n selectedChainNetwork: action.payload.record.chainNetwork,\n lastDeposit: action.payload.record,\n depositError: undefined,\n error: null,\n },\n };\n\n case 'DEPOSIT_FAILED':\n return {\n state: OnboardingStep.AMOUNT_INPUT,\n context: {\n ...machineState.context,\n depositError: action.message,\n },\n };\n\n case 'GO_TO_AUTH':\n return {\n state: OnboardingStep.AUTH_LOADING,\n context: {\n ...machineState.context,\n hasNordAccount:\n action.hasNordAccount ?? machineState.context.hasNordAccount,\n },\n };\n\n case 'COMPLETE_FLOW':\n return {\n state: OnboardingStep.FINAL_SUCCESS,\n context: {\n ...machineState.context,\n hasNordAccount: action.hasNordAccount ?? true,\n hasActiveSession:\n action.hasActiveSession ?? machineState.context.hasActiveSession,\n isDepositOnlyFlow: false,\n },\n };\n\n case 'SET_ERROR':\n return {\n state: OnboardingStep.ERROR,\n context: {\n ...machineState.context,\n error: action.error,\n },\n };\n\n case 'RESET':\n return {\n state: OnboardingStep.ENTRY_SELECTION,\n context: action.context ?? initialOnboardingContext,\n };\n\n case 'APPLY_SNAPSHOT':\n return action.snapshot;\n\n default:\n return machineState;\n }\n};\n\nexport const createInitialOnboardingState = (): OnboardingStateSnapshot =>\n initialMachineState;\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"00-EntrySelectionScreen.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/screens/00-EntrySelectionScreen.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useMemo, type ReactNode } from 'react';\nimport {\n ArbitrumLogo,\n BaseLogo,\n EthereumLogo,\n HyperliquidLogo,\n SolanaLogo,\n} from '../../../components/logos';\nimport { useOnboardingState } from '../providers';\n\ntype EntryOption = {\n id: 'evm' | 'solana';\n title: string;\n subtitle: string;\n icon: ReactNode;\n};\n\nconst ArrowRight = () => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"text-n1-ww-icon group-hover:text-white transition-colors\"\n >\n <path\n d=\"M6 3l4 5-4 5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.4\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nconst EvmLogoStack = () => (\n <div className=\"relative h-10 w-10 flex-none grayscale brightness-150 -top-[0.5rem]\">\n <div className=\"absolute left-0 top-0 flex items-center justify-center w-4 h-8\">\n <ArbitrumLogo width={18} height={18} />\n </div>\n <div className=\"absolute right-0 top-0 flex items-center justify-center w-4 h-8\">\n <EthereumLogo width={20} height={20} />\n </div>\n <div className=\"absolute left-0 top-6 flex items-center justify-center w-4 h-8\">\n <HyperliquidLogo width={18} height={18} />\n </div>\n <div className=\"absolute right-0 top-6 flex items-center justify-center w-4 h-8\">\n <BaseLogo width={18} height={18} />\n </div>\n </div>\n);\n\nconst SelectionButton = ({ option, onClick }: { option: EntryOption; onClick: () => void }) => (\n <button\n type=\"button\"\n onClick={onClick}\n className=\"group w-full rounded-lg border border-n1-ww-border bg-n1-ww-gray-900 px-4 py-3 flex items-center justify-between transition-all duration-200 hover:border-n1-ww-main/60 hover:bg-n1-ww-gray-800\"\n >\n <div className=\"flex items-center gap-3\">\n <div className=\"flex items-center justify-center grayscale brightness-150 h-10 w-10\">\n {option.icon}\n </div>\n <div className=\"flex flex-col items-start text-left\">\n <span className=\"text-white text-sm font-medium leading-tight\">\n {option.title}\n </span>\n <span className=\"text-n1-ww-gray-100 text-xs font-light leading-tight\">\n {option.subtitle}\n </span>\n </div>\n </div>\n <ArrowRight />\n </button>\n);\n\n/**\n * Initial screen allowing users to choose between Solana or EVM wallet entry paths.\n */\nexport function EntrySelectionScreen() {\n const { actions } = useOnboardingState();\n\n const options = useMemo<EntryOption[]>(\n () => [\n {\n id: 'solana',\n title: 'Solana',\n subtitle: 'Use a Solana wallet directly',\n icon: <SolanaLogo width={20} height={20} className=\"grayscale brightness-150\" />,\n },\n {\n id: 'evm',\n title: 'EVM',\n subtitle: 'Connect with Ethereum, Arbitrum, Base, Hyperliquid',\n icon: <EvmLogoStack />,\n },\n ],\n []\n );\n\n return (\n <div className=\"flex flex-col space-y-3\">\n {options.map((option) => (\n <SelectionButton\n key={option.id}\n option={option}\n onClick={() => actions.beginWalletConnection(option.id)}\n />\n ))}\n </div>\n );\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"01-ConnectWalletScreen.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/screens/01-ConnectWalletScreen.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IAC3B,IAAA,KAGF,mBAAmB,EAAE,EAFvB,YAAY,kBAAA,EACZ,aAAa,mBACU,CAAC;IAE1B,+CAA+C;IAC/C,SAAS,CAAC;QACR,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,aAAa,EAAE,CAAC;QAClB,CAAC;IACH,CAAC,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC;IAElC,OAAO,CACL,KAAC,cAAc,IACb,UAAU,EAAE,EAAE,EACd,OAAO,EAAE;YACP,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,mBAAmB;YAC1B,QAAQ,EAAE,sDAAsD;YAChE,QAAQ,EAAE,KAAK;SAChB,GACD,CACH,CAAC;AACJ,CAAC","sourcesContent":["import { useEffect } from 'react';\nimport { useWalletConnection } from '../providers';\nimport { WaitingMessage } from '../components/WaitingMessage';\n\n/**\n * Screen that automatically triggers wallet connection when mounted.\n * Shows loading state while Dynamic widget is open.\n */\nexport function ConnectWalletScreen() {\n const {\n isConnecting,\n connectWallet,\n } = useWalletConnection();\n\n // Auto-trigger connection on mount (only once)\n useEffect(() => {\n if (!isConnecting) {\n connectWallet();\n }\n }, [isConnecting, connectWallet]);\n\n return (\n <WaitingMessage\n loaderSize={52}\n message={{\n visible: true,\n title: 'Connecting Wallet',\n subtitle: 'Please approve the connection request in your wallet',\n isTyping: false,\n }}\n />\n );\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"02-TurnkeyAuthScreen.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/screens/02-TurnkeyAuthScreen.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD;;;GAGG;AACH,IAAM,sBAAsB,GAC1B,+EAA+E,CAAC;AAElF,MAAM,UAAU,iBAAiB;IACzB,IAAA,KAKF,mBAAmB,EAAE,EAJvB,aAAa,mBAAA,EACb,YAAY,kBAAA,EACZ,qBAAqB,2BAAA,EACrB,gBAAgB,sBACO,CAAC;IAE1B,IAAI,aAAa,KAAK,OAAO,EAAE,CAAC;QAC9B,OAAO,CACL,eAAK,SAAS,EAAC,iCAAiC,aAC9C,0BACE,aAAI,SAAS,EAAC,oCAAoC,mDAE7C,EACL,YAAG,SAAS,EAAC,+BAA+B,YACzC,YAAY,IAAI,sBAAsB,GACrC,IACA,EACN,eAAK,SAAS,EAAC,YAAY,aACzB,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,iFAAiF,EAC3F,OAAO,EAAE,qBAAqB,sBAGvB,EACT,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,8EAA8E,EACxF,OAAO,EAAE,gBAAgB,2BAGlB,IACL,IACF,CACP,CAAC;IACJ,CAAC;IAED,IAAM,QAAQ,GACZ,aAAa,KAAK,gBAAgB;QAChC,CAAC,CAAC,yCAAyC;QAC3C,CAAC,CAAC,0BAA0B,CAAC;IAEjC,OAAO,CACL,KAAC,cAAc,IACb,UAAU,EAAE,EAAE,EACd,OAAO,EAAE;YACP,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,sBAAsB;YAC7B,QAAQ,UAAA;YACR,QAAQ,EAAE,KAAK;SAChB,GACD,CACH,CAAC;AACJ,CAAC","sourcesContent":["\"use client\";\n\nimport { WaitingMessage } from '../components/WaitingMessage';\nimport { useWalletConnection } from '../providers';\n\n/**\n * Screen displayed during Turnkey authentication flow.\n * Shows loading state, handles errors, and provides retry/disconnect options.\n */\nconst TURNKEY_ERROR_FALLBACK =\n 'Turnkey could not complete authentication. Retry or disconnect to start over.';\n\nexport function TurnkeyAuthScreen() {\n const {\n turnkeyStatus,\n turnkeyError,\n retryTurnkeyBootstrap,\n disconnectWallet,\n } = useWalletConnection();\n\n if (turnkeyStatus === 'error') {\n return (\n <div className=\"flex flex-col gap-4 text-center\">\n <div>\n <h3 className=\"text-base font-semibold text-white\">\n We couldn't complete Turnkey login\n </h3>\n <p className=\"text-sm text-neutral-400 mt-1\">\n {turnkeyError || TURNKEY_ERROR_FALLBACK}\n </p>\n </div>\n <div className=\"flex gap-2\">\n <button\n type=\"button\"\n className=\"flex-1 h-9 rounded border border-n1-ww-main text-n1-ww-main text-sm font-medium\"\n onClick={retryTurnkeyBootstrap}\n >\n Retry\n </button>\n <button\n type=\"button\"\n className=\"flex-1 h-9 rounded border border-n1-ww-border text-white text-sm font-medium\"\n onClick={disconnectWallet}\n >\n Disconnect\n </button>\n </div>\n </div>\n );\n }\n\n const subtitle =\n turnkeyStatus === 'authenticating'\n ? 'Complete the Turnkey prompt to continue'\n : 'Securing your session...';\n\n return (\n <WaitingMessage\n loaderSize={52}\n message={{\n visible: true,\n title: 'Secure Turnkey login',\n subtitle,\n isTyping: false,\n }}\n />\n );\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"03-TurnkeyPreparingScreen.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/screens/03-TurnkeyPreparingScreen.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD;;;GAGG;AACH,IAAM,sBAAsB,GAC1B,kFAAkF,CAAC;AAErF,MAAM,UAAU,sBAAsB;IAC9B,IAAA,KAKF,mBAAmB,EAAE,EAJvB,aAAa,mBAAA,EACb,YAAY,kBAAA,EACZ,qBAAqB,2BAAA,EACrB,gBAAgB,sBACO,CAAC;IAE1B,IAAI,aAAa,KAAK,OAAO,EAAE,CAAC;QAC9B,OAAO,CACL,eAAK,SAAS,EAAC,iCAAiC,aAC9C,0BACE,aAAI,SAAS,EAAC,oCAAoC,uDAE7C,EACL,YAAG,SAAS,EAAC,+BAA+B,YACzC,YAAY,IAAI,sBAAsB,GACrC,IACA,EACN,eAAK,SAAS,EAAC,YAAY,aACzB,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,iFAAiF,EAC3F,OAAO,EAAE,qBAAqB,sBAGvB,EACT,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,8EAA8E,EACxF,OAAO,EAAE,gBAAgB,2BAGlB,IACL,IACF,CACP,CAAC;IACJ,CAAC;IAED,IAAM,QAAQ,GACZ,aAAa,KAAK,UAAU;QAC1B,CAAC,CAAC,8CAA8C;QAChD,CAAC,CAAC,0BAA0B,CAAC;IAEjC,OAAO,CACL,KAAC,cAAc,IACb,UAAU,EAAE,EAAE,EACd,OAAO,EAAE;YACP,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,0BAA0B;YACjC,QAAQ,UAAA;YACR,QAAQ,EAAE,KAAK;SAChB,GACD,CACH,CAAC;AACJ,CAAC","sourcesContent":["\"use client\";\n\nimport { WaitingMessage } from '../components/WaitingMessage';\nimport { useWalletConnection } from '../providers';\n\n/**\n * Screen displayed while Turnkey provisions a Solana wallet for EVM users.\n * Shows progress, handles session expiration, and provides retry/disconnect options.\n */\nconst TURNKEY_ERROR_FALLBACK =\n 'Turnkey could not prepare your Solana wallet. Retry or disconnect to start over.';\n\nexport function TurnkeyPreparingScreen() {\n const {\n turnkeyStatus,\n turnkeyError,\n retryTurnkeyBootstrap,\n disconnectWallet,\n } = useWalletConnection();\n\n if (turnkeyStatus === 'error') {\n return (\n <div className=\"flex flex-col gap-4 text-center\">\n <div>\n <h3 className=\"text-base font-semibold text-white\">\n We couldn't prepare your Solana wallet\n </h3>\n <p className=\"text-sm text-neutral-400 mt-1\">\n {turnkeyError || TURNKEY_ERROR_FALLBACK}\n </p>\n </div>\n <div className=\"flex gap-2\">\n <button\n type=\"button\"\n className=\"flex-1 h-9 rounded border border-n1-ww-main text-n1-ww-main text-sm font-medium\"\n onClick={retryTurnkeyBootstrap}\n >\n Retry\n </button>\n <button\n type=\"button\"\n className=\"flex-1 h-9 rounded border border-n1-ww-border text-white text-sm font-medium\"\n onClick={disconnectWallet}\n >\n Disconnect\n </button>\n </div>\n </div>\n );\n }\n\n const subtitle =\n turnkeyStatus === 'creating'\n ? 'Provisioning a Nord-ready signer via Turnkey'\n : 'Preparing Solana wallet…';\n\n return (\n <WaitingMessage\n loaderSize={52}\n message={{\n visible: true,\n title: 'Preparing Solana wallet…',\n subtitle,\n isTyping: false,\n }}\n />\n );\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"04-ChainSelectionScreen.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/screens/04-ChainSelectionScreen.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\nimport { logger } from \"../../../utils/logger\";\nimport { ChainButton } from \"../components/ChainButton\";\nimport { useWalletConnection, useOnboardingState } from \"../providers\";\nimport {\n ArbitrumLogo,\n BaseLogo,\n EthereumLogo,\n SolanaLogo,\n} from \"../../../components/logos\";\n\nconst sharedLogoWrapperStyle = { width: 16, height: 16 };\n\nexport const CHAINS_WITH_NETWORK_INFO = [\n {\n id: \"solana\",\n name: \"Solana\",\n subtitle: \"Fast default path\",\n logo: (\n <div className=\"flex items-center justify-center\" style={sharedLogoWrapperStyle}>\n <SolanaLogo width={16} height={16} />\n </div>\n ),\n network: \"solana\",\n },\n {\n id: \"ethereum\",\n name: \"Ethereum\",\n subtitle: undefined,\n logo: (\n <div className=\"flex items-center justify-center\" style={sharedLogoWrapperStyle}>\n <EthereumLogo width={16} height={16} />\n </div>\n ),\n network: \"\",\n },\n {\n id: \"arbitrum\",\n name: \"Arbitrum\",\n subtitle: undefined,\n logo: (\n <div className=\"flex items-center justify-center\" style={sharedLogoWrapperStyle}>\n <ArbitrumLogo width={16} height={16} />\n </div>\n ),\n network: \"\",\n },\n {\n id: \"base\",\n name: \"Base\",\n subtitle: undefined,\n logo: (\n <div className=\"flex items-center justify-center\" style={sharedLogoWrapperStyle}>\n <BaseLogo width={16} height={16} />\n </div>\n ),\n network: \"\",\n },\n] as const;\n\ntype ChainWithNetworkInfo = (typeof CHAINS_WITH_NETWORK_INFO)[number];\n\n/**\n * Screen allowing users to select a blockchain network for deposit.\n * Filters available chains based on flow type (deposit-only shows Solana, regular hides it).\n * Auto-advances to auth/complete if user already has Nord account with active session.\n */\nexport function ChainSelectionScreen() {\n const { disconnectWallet } = useWalletConnection();\n const { actions, context, updateContext } = useOnboardingState();\n\n const availableChains = useMemo(() => {\n // If connected with Solana wallet, only show Solana\n if (context.entryNetwork === 'solana') {\n return CHAINS_WITH_NETWORK_INFO.filter((chain) => chain.id === \"solana\");\n }\n // If deposit-only flow, show all chains including Solana\n if (context.isDepositOnlyFlow) {\n return CHAINS_WITH_NETWORK_INFO;\n }\n // Otherwise, show EVM chains only (hide Solana)\n return CHAINS_WITH_NETWORK_INFO.filter((chain) => chain.id !== \"solana\");\n }, [context.entryNetwork, context.isDepositOnlyFlow]);\n\n const initialSelectedChainId = useMemo(() => {\n if (context.selectedChainId) {\n const chainFromId = availableChains.find(\n (chain) => chain.id === context.selectedChainId\n );\n if (chainFromId) {\n return chainFromId.id;\n }\n }\n\n if (context.selectedChain) {\n const normalizedContextValue = context.selectedChain.toLowerCase();\n const chainFromContext = availableChains.find(\n (chain) =>\n chain.name.toLowerCase() === normalizedContextValue ||\n chain.id.toLowerCase() === normalizedContextValue\n );\n if (chainFromContext) {\n return chainFromContext.id;\n }\n }\n\n return availableChains[0]?.id ?? null;\n }, [context.selectedChain, context.selectedChainId, availableChains]);\n\n const [selectedChainId, setSelectedChainId] = useState<string | null>(\n initialSelectedChainId\n );\n\n const handleChainSelect = useCallback((chainId: string) => {\n logger.debug(\"Chain selected in ChainSelectionScreen:\", chainId);\n\n const chain = availableChains.find((c) => c.id === chainId);\n\n if (chain) {\n setSelectedChainId(chainId);\n } else {\n logger.debug(\"Chain not found:\", chainId);\n }\n }, [logger, availableChains]);\n\n const selectedChain = useMemo(\n () => availableChains.find((chain) => chain.id === selectedChainId),\n [selectedChainId, availableChains]\n );\n\n const persistSelection = useCallback(\n (chain: ChainWithNetworkInfo) => {\n updateContext({\n selectedChain: chain.name,\n selectedChainId: chain.id,\n selectedChainNetwork: chain.network ?? null,\n depositError: undefined,\n lastDeposit: null,\n });\n },\n [updateContext]\n );\n\n const handleContinue = useCallback(() => {\n if (!selectedChain) {\n logger.debug(\"Continue button clicked without selectable chain\");\n return;\n }\n\n persistSelection(selectedChain);\n\n\n\n actions.selectChain({\n id: selectedChain.id,\n name: selectedChain.name,\n network: selectedChain.network ?? null,\n });\n logger.debug(\"Transitioned to amount input from chain selection\");\n }, [\n selectedChain,\n actions,\n persistSelection,\n context.hasActiveSession,\n context.hasNordAccount,\n context.isDepositOnlyFlow,\n ]);\n\n const handleDisconnect = useCallback(() => {\n logger.debug(\"Disconnect button clicked\");\n disconnectWallet();\n }, [disconnectWallet]);\n\n const isContinueDisabled = !selectedChain;\n\n return (\n <div className=\"overflow-visible relative\">\n <div className=\"flex flex-col space-y-3\">\n {availableChains.map((chain) => (\n <ChainButton\n key={chain.id}\n chain={chain}\n onClick={() => handleChainSelect(chain.id)}\n selected={selectedChainId === chain.id}\n subtitle={chain.subtitle}\n />\n ))}\n <div className=\"flex flex-col space-y-2\">\n <button\n type=\"button\"\n onClick={handleContinue}\n disabled={isContinueDisabled}\n className={`w-full h-8 rounded border bg-transparent flex font-medium items-center justify-center transition-all duration-200 transform ${isContinueDisabled\n ? \"border-n1-ww-border opacity-50 cursor-not-allowed\"\n : \"border-n1-ww-main hover:bg-n1-ww-gray-900 cursor-pointer\"\n }`}\n >\n <span\n className={`font-medium text-sm opacity-90 ${isContinueDisabled ? \"text-n1-ww-gray-500\" : \"text-n1-ww-main\"\n }`}\n >\n Continue\n </span>\n </button>\n <button\n type=\"button\"\n onClick={handleDisconnect}\n className=\"w-full h-8 rounded border border-n1-ww-border bg-transparent flex font-medium items-center justify-center transition-all duration-200 transform hover:bg-n1-ww-gray-900 cursor-pointer\"\n >\n <span className=\"text-white font-medium text-sm opacity-90\">\n Disconnect\n </span>\n </button>\n </div>\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
* Screen for entering deposit amount with balance checking and validation.
|
|
3
3
|
* Supports both Solana and EVM chains, fetches USDC balances, and validates minimum deposits.
|
|
4
4
|
*/
|
|
5
|
-
export declare const DEFAULT_MIN_DEPOSIT = 2;
|
|
6
5
|
export declare const BRIDGE_FEE = 1;
|
|
7
6
|
export declare const BALANCE_REFRESH_MS = 20000;
|
|
7
|
+
export declare const DEFAULT_MIN_DEPOSIT: number;
|
|
8
8
|
interface AmountInputScreenProps {
|
|
9
9
|
}
|
|
10
10
|
export declare function AmountInputScreen({}: AmountInputScreenProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -70,7 +70,6 @@ import { getSolanaRpcUrl } from "../../../config/solana";
|
|
|
70
70
|
* Screen for entering deposit amount with balance checking and validation.
|
|
71
71
|
* Supports both Solana and EVM chains, fetches USDC balances, and validates minimum deposits.
|
|
72
72
|
*/
|
|
73
|
-
export var DEFAULT_MIN_DEPOSIT = 2;
|
|
74
73
|
export var BRIDGE_FEE = 1;
|
|
75
74
|
var EVM_USDC_DECIMALS = 6;
|
|
76
75
|
export var BALANCE_REFRESH_MS = 20000;
|
|
@@ -89,6 +88,22 @@ var parseList = function (value) {
|
|
|
89
88
|
.filter(Boolean)
|
|
90
89
|
: [];
|
|
91
90
|
};
|
|
91
|
+
// Network selection based on NEXT_PUBLIC_TESTNET env var (default: true for testnet)
|
|
92
|
+
var isTestnet = process.env.NEXT_PUBLIC_TESTNET !== 'false';
|
|
93
|
+
// Minimum deposit amounts based on environment
|
|
94
|
+
var DEFAULT_MIN_DEPOSIT_TESTNET = 2;
|
|
95
|
+
var DEFAULT_MIN_DEPOSIT_MAINNET = 10;
|
|
96
|
+
export var DEFAULT_MIN_DEPOSIT = isTestnet ? DEFAULT_MIN_DEPOSIT_TESTNET : DEFAULT_MIN_DEPOSIT_MAINNET;
|
|
97
|
+
// Default RPC URLs based on network
|
|
98
|
+
var DEFAULT_ETHEREUM_RPC = isTestnet
|
|
99
|
+
? "https://ethereum-sepolia-rpc.publicnode.com"
|
|
100
|
+
: "https://eth.llamarpc.com";
|
|
101
|
+
var DEFAULT_ARBITRUM_RPC = isTestnet
|
|
102
|
+
? "https://sepolia-rollup.arbitrum.io/rpc"
|
|
103
|
+
: "https://arbitrum.drpc.org";
|
|
104
|
+
var DEFAULT_BASE_RPC = isTestnet
|
|
105
|
+
? "https://sepolia.base.org"
|
|
106
|
+
: "https://mainnet.base.org";
|
|
92
107
|
var EVM_CHAIN_CONFIG = {
|
|
93
108
|
ethereum: {
|
|
94
109
|
nativeSymbol: (_a = process.env.NEXT_PUBLIC_NATIVE_SYMBOL_ETHEREUM) !== null && _a !== void 0 ? _a : "ETH",
|
|
@@ -97,7 +112,7 @@ var EVM_CHAIN_CONFIG = {
|
|
|
97
112
|
usdcDecimals: (_c = parseNumber(process.env.NEXT_PUBLIC_USDC_DECIMALS_ETHEREUM)) !== null && _c !== void 0 ? _c : 6,
|
|
98
113
|
rpcUrls: parseList(process.env.NEXT_PUBLIC_RPC_ETHEREUM).length > 0
|
|
99
114
|
? parseList(process.env.NEXT_PUBLIC_RPC_ETHEREUM)
|
|
100
|
-
: [
|
|
115
|
+
: [DEFAULT_ETHEREUM_RPC],
|
|
101
116
|
minNativeForFees: (_d = parseNumber(process.env.NEXT_PUBLIC_MIN_NATIVE_FOR_FEES_ETHEREUM)) !== null && _d !== void 0 ? _d : 0.002,
|
|
102
117
|
},
|
|
103
118
|
arbitrum: {
|
|
@@ -107,7 +122,7 @@ var EVM_CHAIN_CONFIG = {
|
|
|
107
122
|
usdcDecimals: (_g = parseNumber(process.env.NEXT_PUBLIC_USDC_DECIMALS_ARBITRUM)) !== null && _g !== void 0 ? _g : 6,
|
|
108
123
|
rpcUrls: parseList(process.env.NEXT_PUBLIC_RPC_ARBITRUM).length > 0
|
|
109
124
|
? parseList(process.env.NEXT_PUBLIC_RPC_ARBITRUM)
|
|
110
|
-
: [
|
|
125
|
+
: [DEFAULT_ARBITRUM_RPC],
|
|
111
126
|
minNativeForFees: (_h = parseNumber(process.env.NEXT_PUBLIC_MIN_NATIVE_FOR_FEES_ARBITRUM)) !== null && _h !== void 0 ? _h : 0.002,
|
|
112
127
|
},
|
|
113
128
|
base: {
|
|
@@ -117,7 +132,7 @@ var EVM_CHAIN_CONFIG = {
|
|
|
117
132
|
usdcDecimals: (_l = parseNumber(process.env.NEXT_PUBLIC_USDC_DECIMALS_BASE)) !== null && _l !== void 0 ? _l : 6,
|
|
118
133
|
rpcUrls: parseList(process.env.NEXT_PUBLIC_RPC_BASE).length > 0
|
|
119
134
|
? parseList(process.env.NEXT_PUBLIC_RPC_BASE)
|
|
120
|
-
: [
|
|
135
|
+
: [DEFAULT_BASE_RPC],
|
|
121
136
|
minNativeForFees: (_m = parseNumber(process.env.NEXT_PUBLIC_MIN_NATIVE_FOR_FEES_BASE)) !== null && _m !== void 0 ? _m : 0.002,
|
|
122
137
|
},
|
|
123
138
|
};
|
|
@@ -156,8 +171,12 @@ export function AmountInputScreen(_a) {
|
|
|
156
171
|
var nord = useN1WalletContext().nord;
|
|
157
172
|
var _g = useNetwork(), address = _g.solanaAddress, evmAddress = _g.evmAddress;
|
|
158
173
|
var turnkeyAddress = useWalletConnection().turnkeyAddress;
|
|
159
|
-
|
|
160
|
-
var
|
|
174
|
+
// Compute initial chain to determine initial token values
|
|
175
|
+
var initialChain = normalizeChainId(context.selectedChainId || context.selectedChain || context.entryNetwork);
|
|
176
|
+
var isInitiallyEvm = initialChain !== "solana";
|
|
177
|
+
// For EVM chains, initialize with USDC/6 decimals immediately to avoid flash of "Token unavailable"
|
|
178
|
+
var _h = useState(isInitiallyEvm ? "USDC" : null), tokenSymbol = _h[0], setTokenSymbol = _h[1];
|
|
179
|
+
var _j = useState(isInitiallyEvm ? EVM_USDC_DECIMALS : null), tokenDecimals = _j[0], setTokenDecimals = _j[1];
|
|
161
180
|
var _k = useState(null), nordTokens = _k[0], setNordTokens = _k[1];
|
|
162
181
|
var _l = useState({
|
|
163
182
|
usdc: null,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"05-AmountInputScreen.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/screens/05-AmountInputScreen.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Connection, LAMPORTS_PER_SOL, PublicKey } from \"@solana/web3.js\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { SolanaLogo } from \"../../../components/logos\";\nimport { useN1WalletContext } from \"../../../hooks\";\nimport { useNetwork } from \"../../../providers/N1WalletProvider/NetworkProvider\";\nimport { logger } from \"../../../utils/logger\";\nimport { formatAmount } from \"../../../utils/formatAmount\";\nimport { useDepositFlow, useOnboardingState, useWalletConnection } from \"../providers\";\nimport { WalletBalanceState } from \"../types\";\nimport { isNordConfigured } from \"../utils/nordUtils\";\nimport { getSolanaRpcUrl } from \"../../../config/solana\";\n\n/**\n * Screen for entering deposit amount with balance checking and validation.\n * Supports both Solana and EVM chains, fetches USDC balances, and validates minimum deposits.\n */\nexport const BRIDGE_FEE = 1;\nconst EVM_USDC_DECIMALS = 6;\n\nexport const BALANCE_REFRESH_MS = 20_000;\n\nconst ERC20_BALANCE_OF_SELECTOR = \"0x70a08231\";\n\ninterface EvmChainConfig {\n nativeSymbol: string;\n nativeDecimals: number;\n usdcAddress?: string;\n usdcDecimals: number;\n rpcUrls: string[];\n minNativeForFees: number;\n}\n\nconst parseNumber = (value: string | undefined | null): number | undefined => {\n if (!value) return undefined;\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : undefined;\n};\n\nconst parseList = (value: string | undefined | null): string[] =>\n value\n ? value\n .split(\",\")\n .map((v) => v.trim())\n .filter(Boolean)\n : [];\n\n// Network selection based on NEXT_PUBLIC_TESTNET env var (default: true for testnet)\nconst isTestnet = process.env.NEXT_PUBLIC_TESTNET !== 'false';\n\n// Minimum deposit amounts based on environment\nconst DEFAULT_MIN_DEPOSIT_TESTNET = 2;\nconst DEFAULT_MIN_DEPOSIT_MAINNET = 10;\nexport const DEFAULT_MIN_DEPOSIT = isTestnet ? DEFAULT_MIN_DEPOSIT_TESTNET : DEFAULT_MIN_DEPOSIT_MAINNET;\n\n// Default RPC URLs based on network\nconst DEFAULT_ETHEREUM_RPC = isTestnet\n ? \"https://ethereum-sepolia-rpc.publicnode.com\"\n : \"https://eth.llamarpc.com\";\nconst DEFAULT_ARBITRUM_RPC = isTestnet\n ? \"https://sepolia-rollup.arbitrum.io/rpc\"\n : \"https://arbitrum.drpc.org\";\nconst DEFAULT_BASE_RPC = isTestnet\n ? \"https://sepolia.base.org\"\n : \"https://mainnet.base.org\";\n\nconst EVM_CHAIN_CONFIG: Record<string, EvmChainConfig> = {\n ethereum: {\n nativeSymbol: process.env.NEXT_PUBLIC_NATIVE_SYMBOL_ETHEREUM ?? \"ETH\",\n nativeDecimals:\n parseNumber(process.env.NEXT_PUBLIC_NATIVE_DECIMALS_ETHEREUM) ?? 18,\n usdcAddress: process.env.NEXT_PUBLIC_USDC_ETHEREUM,\n usdcDecimals:\n parseNumber(process.env.NEXT_PUBLIC_USDC_DECIMALS_ETHEREUM) ?? 6,\n rpcUrls:\n parseList(process.env.NEXT_PUBLIC_RPC_ETHEREUM).length > 0\n ? parseList(process.env.NEXT_PUBLIC_RPC_ETHEREUM)\n : [DEFAULT_ETHEREUM_RPC],\n minNativeForFees:\n parseNumber(process.env.NEXT_PUBLIC_MIN_NATIVE_FOR_FEES_ETHEREUM) ??\n 0.002,\n },\n arbitrum: {\n nativeSymbol: process.env.NEXT_PUBLIC_NATIVE_SYMBOL_ARBITRUM ?? \"ETH\",\n nativeDecimals:\n parseNumber(process.env.NEXT_PUBLIC_NATIVE_DECIMALS_ARBITRUM) ?? 18,\n usdcAddress: process.env.NEXT_PUBLIC_USDC_ARBITRUM,\n usdcDecimals:\n parseNumber(process.env.NEXT_PUBLIC_USDC_DECIMALS_ARBITRUM) ?? 6,\n rpcUrls:\n parseList(process.env.NEXT_PUBLIC_RPC_ARBITRUM).length > 0\n ? parseList(process.env.NEXT_PUBLIC_RPC_ARBITRUM)\n : [DEFAULT_ARBITRUM_RPC],\n minNativeForFees:\n parseNumber(process.env.NEXT_PUBLIC_MIN_NATIVE_FOR_FEES_ARBITRUM) ??\n 0.002,\n },\n base: {\n nativeSymbol: process.env.NEXT_PUBLIC_NATIVE_SYMBOL_BASE ?? \"ETH\",\n nativeDecimals:\n parseNumber(process.env.NEXT_PUBLIC_NATIVE_DECIMALS_BASE) ?? 18,\n usdcAddress: process.env.NEXT_PUBLIC_USDC_BASE,\n usdcDecimals: parseNumber(process.env.NEXT_PUBLIC_USDC_DECIMALS_BASE) ?? 6,\n rpcUrls:\n parseList(process.env.NEXT_PUBLIC_RPC_BASE).length > 0\n ? parseList(process.env.NEXT_PUBLIC_RPC_BASE)\n : [DEFAULT_BASE_RPC],\n minNativeForFees:\n parseNumber(process.env.NEXT_PUBLIC_MIN_NATIVE_FOR_FEES_BASE) ?? 0.002,\n },\n};\n\nconst normalizeChainId = (chain?: string | null): string => {\n if (!chain) return \"solana\";\n const lower = chain.toLowerCase();\n if (lower === \"evm\") return \"ethereum\";\n if (lower === \"arb\" || lower === \"arbitrum\" || lower === \"arbitrum-one\")\n return \"arbitrum\";\n if (lower === \"base\") return \"base\";\n return lower;\n};\n\nconst formatBalanceFromHex = (\n value: string | null | undefined,\n decimals: number\n): number => {\n if (!value) return 0;\n try {\n const raw = BigInt(value);\n return Number(raw) / 10 ** decimals;\n } catch {\n return 0;\n }\n};\n\nconst buildBalanceOfData = (wallet: string): string => {\n const stripped = wallet.toLowerCase().replace(/^0x/, \"\");\n return `${ERC20_BALANCE_OF_SELECTOR}${stripped.padStart(64, \"0\")}`;\n};\n\ninterface AmountInputScreenProps { }\n\nexport function AmountInputScreen({ }: AmountInputScreenProps) {\n const { context } = useOnboardingState();\n const { amount, updateAmount, startDeposit } = useDepositFlow();\n const { nord } = useN1WalletContext();\n const { solanaAddress: address, evmAddress } = useNetwork();\n const { turnkeyAddress } = useWalletConnection();\n\n // Compute initial chain to determine initial token values\n const initialChain = normalizeChainId(\n context.selectedChainId || context.selectedChain || context.entryNetwork\n );\n const isInitiallyEvm = initialChain !== \"solana\";\n\n // For EVM chains, initialize with USDC/6 decimals immediately to avoid flash of \"Token unavailable\"\n const [tokenSymbol, setTokenSymbol] = useState<string | null>(\n isInitiallyEvm ? \"USDC\" : null\n );\n const [tokenDecimals, setTokenDecimals] = useState<number | null>(\n isInitiallyEvm ? EVM_USDC_DECIMALS : null\n );\n const [nordTokens, setNordTokens] = useState<any[] | null>(null);\n const [walletBalances, setWalletBalances] = useState<WalletBalanceState>({\n usdc: null,\n native: null,\n loading: false,\n error: null,\n });\n const isMountedRef = useRef(true);\n\n useEffect(() => {\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n\n // Set default amount only on initial mount\n useEffect(() => {\n if (!amount) {\n updateAmount(\"10\");\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const normalizedChain = useMemo(\n () =>\n normalizeChainId(\n context.selectedChainId || context.selectedChain || context.entryNetwork\n ),\n [context.entryNetwork, context.selectedChain, context.selectedChainId]\n );\n\n const selectedChainName = useMemo(() => {\n if (context.selectedChain) {\n return context.selectedChain;\n }\n switch (normalizedChain) {\n case \"ethereum\":\n return \"Ethereum\";\n case \"arbitrum\":\n return \"Arbitrum\";\n case \"base\":\n return \"Base\";\n default:\n return \"Solana\";\n }\n }, [context.selectedChain, normalizedChain]);\n const [tokenMintAddress, setTokenMintAddress] = useState<string | null>(null);\n const solanaRecipient = address || turnkeyAddress || null;\n\n // Simple rule: on EVM chains we always treat the deposit token as USDC with 6 decimals.\n // This avoids depending on Nord token metadata to enable the amount screen.\n useEffect(() => {\n if (normalizedChain === \"solana\") {\n return;\n }\n if (tokenSymbol !== \"USDC\") {\n setTokenSymbol(\"USDC\");\n }\n if (tokenDecimals !== EVM_USDC_DECIMALS) {\n setTokenDecimals(EVM_USDC_DECIMALS);\n }\n if (tokenMintAddress !== null) {\n setTokenMintAddress(null);\n }\n }, [normalizedChain, tokenDecimals, tokenMintAddress, tokenSymbol]);\n const handleDepositClick = useCallback(() => {\n logger.debug(\"Deposit button clicked\", {\n selectedChain: normalizedChain,\n hasEvm: Boolean(evmAddress),\n hasSolana: Boolean(address),\n hasTurnkey: Boolean(turnkeyAddress),\n });\n void startDeposit();\n }, [address, evmAddress, normalizedChain, startDeposit, turnkeyAddress, amount, solanaRecipient]);\n\n useEffect(() => {\n let isCancelled = false;\n\n const loadNordTokens = async () => {\n if (!nord || !isNordConfigured(nord)) {\n if (!isCancelled) {\n setNordTokens(null);\n }\n return;\n }\n\n if (Array.isArray(nord.tokens) && nord.tokens.length > 0) {\n if (!isCancelled) {\n setNordTokens(nord.tokens);\n }\n return;\n }\n\n if (typeof nord.fetchNordInfo !== \"function\") {\n return;\n }\n\n try {\n await nord.fetchNordInfo();\n if (isCancelled) {\n return;\n }\n if (Array.isArray(nord.tokens) && nord.tokens.length > 0) {\n setNordTokens(nord.tokens);\n }\n } catch (error) {\n if (!isCancelled) {\n logger.warn(\"Unable to fetch Nord info:\", error);\n setNordTokens(null);\n }\n }\n };\n\n loadNordTokens();\n\n return () => {\n isCancelled = true;\n };\n }, [nord]);\n\n useEffect(() => {\n if (nord && isNordConfigured(nord)) {\n try {\n if (!nordTokens || nordTokens.length === 0) {\n return;\n }\n const usdcToken =\n nordTokens.find((t: any) => t.symbol === \"USDC_2\") || nordTokens[0];\n if (usdcToken) {\n if (!usdcToken.symbol) {\n throw new Error(\"Nord token configuration missing symbol\");\n }\n if (!Number.isFinite(usdcToken.decimals)) {\n throw new Error(\"Nord token configuration missing decimals\");\n }\n if (!usdcToken.mintAddr) {\n throw new Error(\"Nord token configuration missing mint address\");\n }\n setTokenSymbol(usdcToken.symbol);\n setTokenDecimals(usdcToken.decimals);\n setTokenMintAddress(usdcToken.mintAddr);\n }\n } catch (error) {\n logger.warn(\"Error getting token information from Nord:\", error);\n }\n }\n }, [nord, nordTokens]);\n\n const minDeposit = useMemo(() => {\n if (\n !nord ||\n !isNordConfigured(nord) ||\n !tokenMintAddress ||\n tokenDecimals == null\n ) {\n return DEFAULT_MIN_DEPOSIT;\n }\n try {\n // @ts-ignore\n const mintInfo = nord.protonClient?.mintInfo?.get(tokenMintAddress);\n if (mintInfo?.minDeposit) {\n const minDepositUnits = Number(mintInfo.minDeposit);\n const divisor = 10 ** (tokenDecimals ?? 0);\n if (Number.isFinite(minDepositUnits) && divisor > 0) {\n return minDepositUnits / divisor;\n }\n }\n } catch (error) {\n logger.warn(\"Unable to derive min deposit from Nord config\", error);\n }\n return DEFAULT_MIN_DEPOSIT;\n }, [nord, tokenMintAddress, tokenDecimals]);\n\n const effectiveMinDeposit = useMemo(() => {\n // For EVM chains we enforce: min_deposit + bridge_fee.\n // For Solana: min_deposit only.\n return normalizedChain === \"solana\" ? minDeposit : minDeposit + BRIDGE_FEE;\n }, [minDeposit, normalizedChain]);\n\n const fetchBalances = useCallback(\n async (showSpinner: boolean = true) => {\n const isSolanaChain = normalizedChain === \"solana\";\n const ownerAddress = isSolanaChain ? address : evmAddress;\n const evmConfig = isSolanaChain ? null : EVM_CHAIN_CONFIG[normalizedChain];\n const rpcUrl = evmConfig?.rpcUrls.find(Boolean) ?? null;\n\n if (!ownerAddress || (isSolanaChain && !tokenMintAddress)) {\n if (isMountedRef.current) {\n setWalletBalances({\n usdc: null,\n native: null,\n loading: false,\n error: null,\n });\n }\n return;\n }\n\n if (showSpinner) {\n setWalletBalances((prev) => ({\n ...prev,\n loading: true,\n error: null,\n }));\n }\n\n try {\n if (isSolanaChain) {\n const rpcEndpoint = getSolanaRpcUrl();\n const connection = new Connection(rpcEndpoint, \"confirmed\");\n const ownerKey = new PublicKey(ownerAddress);\n\n const [solLamports, tokenAccounts] = await Promise.all([\n connection.getBalance(ownerKey),\n connection.getParsedTokenAccountsByOwner(ownerKey, {\n mint: new PublicKey(tokenMintAddress!),\n }),\n ]);\n\n const usdcTotal = tokenAccounts.value.reduce((total, { account }) => {\n const info = account.data.parsed?.info;\n const tokenAmount = info?.tokenAmount;\n if (!tokenAmount) {\n return total;\n }\n const uiAmount =\n typeof tokenAmount.uiAmount === \"number\"\n ? tokenAmount.uiAmount\n : parseFloat(tokenAmount.uiAmountString ?? \"0\");\n return total + (Number.isFinite(uiAmount) ? uiAmount : 0);\n }, 0);\n\n if (!isMountedRef.current) {\n return;\n }\n\n setWalletBalances({\n usdc: usdcTotal,\n native: solLamports / LAMPORTS_PER_SOL,\n loading: false,\n error: null,\n });\n return;\n }\n\n if (!evmConfig || !rpcUrl) {\n throw new Error(\"Unsupported chain for balance lookup.\");\n }\n if (!evmConfig.usdcAddress) {\n throw new Error(\"USDC contract is not configured for this chain.\");\n }\n const normalizedOwner = ownerAddress.startsWith(\"0x\")\n ? ownerAddress\n : `0x${ownerAddress}`;\n\n const requestRpc = async (method: string, params: any[]) => {\n const response = await fetch(rpcUrl, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n jsonrpc: \"2.0\",\n id: Date.now(),\n method,\n params,\n }),\n });\n if (!response.ok) {\n throw new Error(\n `RPC request failed with status ${response.status}`\n );\n }\n const payload = await response.json();\n if (payload?.error) {\n throw new Error(\n payload.error?.message || \"RPC request failed for balances.\"\n );\n }\n return payload?.result as string;\n };\n\n const [nativeHex, usdcHex] = await Promise.all([\n requestRpc(\"eth_getBalance\", [normalizedOwner, \"latest\"]),\n requestRpc(\"eth_call\", [\n { to: evmConfig.usdcAddress, data: buildBalanceOfData(normalizedOwner) },\n \"latest\",\n ]),\n ]);\n\n const usdcBalance = formatBalanceFromHex(\n usdcHex,\n evmConfig.usdcDecimals\n );\n const nativeBalance = formatBalanceFromHex(\n nativeHex,\n evmConfig.nativeDecimals\n );\n\n if (!isMountedRef.current) {\n return;\n }\n\n setWalletBalances({\n usdc: usdcBalance,\n native: nativeBalance,\n loading: false,\n error: null,\n });\n } catch (error) {\n logger.warn(\"Failed to load wallet balances\", error);\n if (!isMountedRef.current) {\n return;\n }\n setWalletBalances((prev) => ({\n ...prev,\n loading: false,\n error: \"Unable to fetch wallet balances. Please try again.\",\n }));\n }\n },\n [address, evmAddress, normalizedChain, tokenMintAddress]\n );\n\n useEffect(() => {\n if (normalizedChain === \"solana\" && !tokenMintAddress) {\n return;\n }\n fetchBalances();\n const interval = setInterval(() => {\n fetchBalances(false);\n }, BALANCE_REFRESH_MS);\n\n return () => clearInterval(interval);\n }, [fetchBalances, normalizedChain, tokenMintAddress]);\n\n const isSolana = normalizedChain === \"solana\";\n const nativeSymbol =\n isSolana\n ? \"SOL\"\n : EVM_CHAIN_CONFIG[normalizedChain]?.nativeSymbol ?? \"ETH\";\n const requiredNativeForFees = isSolana\n ? 0.002\n : EVM_CHAIN_CONFIG[normalizedChain]?.minNativeForFees ?? 0.002;\n const gasFeeDisplay = isSolana ? \"~$0.30\" : \"~$0.40\";\n const minDepositDisplay = effectiveMinDeposit.toString();\n const tokenSymbolDisplay = tokenSymbol ?? \"—\";\n\n const formattedBalance =\n walletBalances.usdc == null || tokenDecimals == null\n ? walletBalances.loading\n ? \"Loading...\"\n : \"—\"\n : formatAmount(walletBalances.usdc, tokenDecimals);\n\n const formattedNativeBalance =\n walletBalances.native == null\n ? walletBalances.loading\n ? \"Loading...\"\n : \"—\"\n : walletBalances.native.toFixed(4);\n\n const numericAmount = Number(amount || 0);\n const hasEnteredAmount = Number.isFinite(numericAmount) && numericAmount > 0;\n const meetsMinDeposit = numericAmount >= effectiveMinDeposit;\n const hasSufficientUsdc =\n walletBalances.usdc == null ? false : numericAmount <= walletBalances.usdc;\n const hasSufficientNative =\n walletBalances.native == null\n ? false\n : walletBalances.native >= requiredNativeForFees;\n\n const validationError = useMemo(() => {\n if (isSolana && !address) {\n return \"Connect a wallet to continue.\";\n }\n\n if (!isSolana && !evmAddress) {\n return \"Connect an EVM wallet to continue.\";\n }\n\n if (walletBalances.error) {\n return walletBalances.error;\n }\n\n if (!tokenSymbol || tokenDecimals == null) {\n return \"Token information unavailable. Please try again later.\";\n }\n\n if (!hasEnteredAmount) {\n return \"Enter an amount to continue.\";\n }\n\n if (\n walletBalances.loading ||\n walletBalances.usdc == null ||\n walletBalances.native == null\n ) {\n return null;\n }\n\n if (!isSolana && !solanaRecipient) {\n return \"Preparing Solana deposit address. Please wait a moment and retry.\";\n }\n\n if (!meetsMinDeposit) {\n return `Minimum deposit is ${effectiveMinDeposit} ${tokenSymbolDisplay}.`;\n }\n\n if (!hasSufficientUsdc) {\n return `Insufficient ${tokenSymbol} balance for this deposit.`;\n }\n\n if (!hasSufficientNative) {\n return `Not enough ${nativeSymbol} to cover network fees.`;\n }\n\n return null;\n }, [\n address,\n evmAddress,\n walletBalances.error,\n walletBalances.loading,\n walletBalances.usdc,\n walletBalances.native,\n hasEnteredAmount,\n hasSufficientNative,\n hasSufficientUsdc,\n meetsMinDeposit,\n tokenSymbol,\n tokenDecimals,\n effectiveMinDeposit,\n isSolana,\n nativeSymbol,\n solanaRecipient,\n tokenSymbolDisplay,\n ]);\n\n const isValidAmount = !walletBalances.loading && validationError === null;\n\n const handleUseMax = () => {\n if (\n walletBalances.usdc == null ||\n walletBalances.usdc <= 0 ||\n tokenDecimals == null\n ) {\n return;\n }\n updateAmount(walletBalances.usdc.toFixed(tokenDecimals));\n };\n\n return (\n <div className=\"overflow-hidden relative\">\n {/* Header Section */}\n <div className=\"flex items-center justify-between mb-4\">\n <h2 className=\"text-sm text-white font-medium\">Deposit From</h2>\n <div className=\"flex items-center space-x-2 rounded-md bg-n1-ww-border h-5 justify-center p-1\">\n {isSolana ? (\n <div className=\"rounded-full flex items-center justify-center bg-black h-3 w-3\">\n <SolanaLogo width={6} height={6} />\n </div>\n ) : (\n <div className=\"w-4 h-4 rounded-full bg-n1-ww-gray-600\"></div>\n )}\n <span className=\"text-white text-xs font-medium\">\n {selectedChainName}\n </span>\n </div>\n </div>\n\n {/* Deposit Information Section */}\n <div className=\"space-y-3 mb-4 text-white text-xs font-light\">\n <div className=\"flex items-center justify-between\">\n <span>Available Balance:</span>\n <span>\n {formattedBalance} {tokenSymbolDisplay}\n </span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span>{nativeSymbol} Balance:</span>\n <span>\n {formattedNativeBalance} {nativeSymbol}\n </span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span>Minimum Deposit:</span>\n <span>\n {minDepositDisplay} {tokenSymbolDisplay}\n </span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span>Gas Fee:</span>\n <span>{gasFeeDisplay}</span>\n </div>\n </div>\n\n <div className=\"h-px bg-n1-ww-border mb-4\"></div>\n\n {/* Amount Input Section */}\n <div className=\"mb-4 flex justify-between w-full\">\n <div className=\"flex items-center gap-3\">\n <div className=\"flex items-center justify-between border border-n1-ww-gray-400 bg-n1-ww-gray-600 flex-1 w-[292px] rounded h-8 px-2\">\n <span className=\"text-white text-sm font-medium\">Amount</span>\n <div className=\"flex items-center space-x-2\">\n <input\n type=\"text\"\n inputMode=\"decimal\"\n value={amount}\n onChange={(e) => {\n const val = e.target.value;\n // Allow empty, or valid decimal numbers\n if (val === \"\" || /^\\d*\\.?\\d*$/.test(val)) {\n updateAmount(val);\n }\n }}\n className=\"text-white font-light text-xs text-right bg-transparent border-none outline-none focus:ring-2 focus:ring-n1-ww-main focus:ring-offset-0 rounded px-1 w-20\"\n />\n <button className=\"border border-n1-ww-gray-400 h-5 text-white text-xs font-light flex items-center justify-center px-1 rounded transition-colors\">\n {tokenSymbolDisplay}\n </button>\n </div>\n </div>\n </div>\n <button\n className=\"border border-n1-ww-gray-400 bg-n1-ww-gray-600 rounded text-white text-sm font-medium px-2 h-8 hover:bg-n1-ww-gray-800 transition-colors w-[68px]\"\n onClick={handleUseMax}\n type=\"button\"\n >\n Max\n </button>\n </div>\n\n {validationError && (\n <p className=\"mb-2 text-xs\" style={{ color: '#f87171' }}>{validationError}</p>\n )}\n\n {/* Deposit Button */}\n <button\n onClick={handleDepositClick}\n disabled={!isValidAmount}\n type=\"button\"\n className={`\n w-full h-8 rounded border bg-transparent flex font-medium items-center justify-center\n transition-all duration-200 transform\n ${isValidAmount\n ? \"border-n1-ww-main hover:bg-n1-ww-gray-900 cursor-pointer\"\n : \"border-n1-ww-border opacity-50 cursor-not-allowed\"\n }\n `}\n >\n <span\n className={`\n font-medium text-sm opacity-90\n ${isValidAmount ? \"text-n1-ww-main\" : \"text-n1-ww-gray-600\"}\n `}\n >\n Deposit\n </span>\n </button>\n </div>\n );\n}\n"]}
|
|
@@ -102,7 +102,7 @@ export function DepositProgressScreen() {
|
|
|
102
102
|
}, [actions]);
|
|
103
103
|
// SIMPLIFIED: When on DEPOSIT_PROGRESS screen, trigger claim if we have deposit ID
|
|
104
104
|
useEffect(function () {
|
|
105
|
-
var _a, _b, _c, _d, _e
|
|
105
|
+
var _a, _b, _c, _d, _e;
|
|
106
106
|
var clearAutoRetry = function () {
|
|
107
107
|
if (autoRetryTimeoutRef.current) {
|
|
108
108
|
clearTimeout(autoRetryTimeoutRef.current);
|
|
@@ -124,26 +124,17 @@ export function DepositProgressScreen() {
|
|
|
124
124
|
bridgeError: bridgeError,
|
|
125
125
|
depositProgressPhase: depositProgressPhase,
|
|
126
126
|
});
|
|
127
|
-
// If deposit is already confirmed (solana_confirmed),
|
|
127
|
+
// If deposit is already confirmed (solana_confirmed), the deposit flow provider
|
|
128
|
+
// will handle the success transition via finalizeBridgeSuccess or handleResumePendingDeposit.
|
|
129
|
+
// We should NOT dispatch success here to avoid a race condition where we dispatch
|
|
130
|
+
// with stale localStorage data before the flow provider dispatches with correct data.
|
|
131
|
+
// This caused a bug where the success modal would flash from one amount to another.
|
|
128
132
|
if ((pending === null || pending === void 0 ? void 0 : pending.stage) === 'solana_confirmed') {
|
|
129
|
-
logger.info('[DepositProgressScreen] Deposit already confirmed -
|
|
133
|
+
logger.info('[DepositProgressScreen] Deposit already confirmed - waiting for flow provider to handle success', {
|
|
130
134
|
depositId: pending.depositId,
|
|
131
135
|
stage: pending.stage,
|
|
132
136
|
});
|
|
133
|
-
|
|
134
|
-
clearPendingDeposit();
|
|
135
|
-
actions.markDepositSuccess({
|
|
136
|
-
transactionId: txId,
|
|
137
|
-
record: {
|
|
138
|
-
transactionId: txId,
|
|
139
|
-
amount: (_a = pending.amount) !== null && _a !== void 0 ? _a : '0',
|
|
140
|
-
tokenSymbol: 'USDC',
|
|
141
|
-
chainId: (_b = pending.chain) !== null && _b !== void 0 ? _b : 'solana',
|
|
142
|
-
chainName: pending.chain === 'solana' ? 'Solana' : ((_c = pending.chain) !== null && _c !== void 0 ? _c : 'Solana'),
|
|
143
|
-
chainNetwork: null,
|
|
144
|
-
timestamp: Date.now(),
|
|
145
|
-
},
|
|
146
|
-
});
|
|
137
|
+
// Don't dispatch success here - let the deposit flow handle it
|
|
147
138
|
return;
|
|
148
139
|
}
|
|
149
140
|
if (!(pending === null || pending === void 0 ? void 0 : pending.depositId)) {
|
|
@@ -173,9 +164,9 @@ export function DepositProgressScreen() {
|
|
|
173
164
|
clearAutoRetry();
|
|
174
165
|
return;
|
|
175
166
|
}
|
|
176
|
-
var pendingWalletLower = (
|
|
177
|
-
var evmAddressLower = (
|
|
178
|
-
var addressLower = (
|
|
167
|
+
var pendingWalletLower = (_b = (_a = pending.wallet) === null || _a === void 0 ? void 0 : _a.toLowerCase()) !== null && _b !== void 0 ? _b : '';
|
|
168
|
+
var evmAddressLower = (_c = evmAddress === null || evmAddress === void 0 ? void 0 : evmAddress.toLowerCase()) !== null && _c !== void 0 ? _c : '';
|
|
169
|
+
var addressLower = (_d = address === null || address === void 0 ? void 0 : address.toLowerCase()) !== null && _d !== void 0 ? _d : '';
|
|
179
170
|
var walletMatches = pendingWalletLower && (evmAddressLower === pendingWalletLower ||
|
|
180
171
|
addressLower === pendingWalletLower);
|
|
181
172
|
logger.debug('[DepositProgressScreen] Wallet matching check', {
|
|
@@ -200,7 +191,7 @@ export function DepositProgressScreen() {
|
|
|
200
191
|
var canClaim = !isEvmFlow || turnkeyReady;
|
|
201
192
|
// Check if error is retryable and safe to auto-retry (avoid retry loops on non-network errors).
|
|
202
193
|
var isRetryableError = bridgeError && bridgeRetryable;
|
|
203
|
-
var errorLower = (
|
|
194
|
+
var errorLower = (_e = bridgeError === null || bridgeError === void 0 ? void 0 : bridgeError.toLowerCase()) !== null && _e !== void 0 ? _e : '';
|
|
204
195
|
var autoRetryReason = !isRetryableError
|
|
205
196
|
? null
|
|
206
197
|
: errorLower.includes('blockhash expired') || errorLower.includes('blockhash not found')
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"06-DepositProgressScreen.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/screens/06-DepositProgressScreen.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useMemo, useRef } from \"react\";\nimport { WaitingMessage } from \"../components/WaitingMessage\";\nimport { useDepositFlow } from \"../providers\";\nimport { useOnboardingState } from \"../providers/OnboardingStateProvider\";\nimport { OnboardingStep, WaitingMessageState } from \"../types\";\nimport { clearPendingDeposit, readPendingDeposit } from \"../utils/deposit/storage\";\nimport { logger } from \"../../../utils/logger\";\nimport { useN1WalletContext } from \"../../../hooks\";\nimport { useNetwork } from \"../../../providers/N1WalletProvider/NetworkProvider\";\nimport { useSession } from \"../../../providers/N1WalletProvider/SessionProvider\";\nimport { useWalletConnection } from \"../providers/WalletConnectionProvider\";\n\nexport const DEPOSIT_PROGRESS_MESSAGE: WaitingMessageState = {\n visible: true,\n title: \"Processing Deposit\",\n subtitle: \"Please wait while we process your deposit\",\n isTyping: false,\n};\n\nconst SUBTITLES: Record<'bridge' | 'claim' | 'solana' | 'nord', string> = {\n bridge: 'Bridging via CCTP. Waiting for bridge confirmation…',\n claim: 'Claiming CCTP deposit. Please sign the transaction in your wallet to continue',\n solana: 'Please sign the transaction in your wallet to continue', // Only for direct Solana deposits\n nord: 'Waiting for N1 to process the deposit...',\n};\n\n/**\n * Screen displayed during deposit processing.\n * Shows phase-specific messages (bridge/solana/nord) and transaction details.\n * Displays bridge errors with retry option when applicable.\n */\nexport function DepositProgressScreen() {\n const {\n depositProgressPhase,\n pendingBridgeExplorerUrl,\n pendingBridgeTx,\n pendingMintTx,\n bridgeRetryable,\n bridgeError,\n isDepositing,\n authStatus,\n authStatusMessage,\n authErrorMessage,\n bridgeApprovalPending,\n bridgeApprovalError,\n startDeposit,\n } = useDepositFlow();\n\n const { state, context, actions } = useOnboardingState();\n const { nord } = useN1WalletContext();\n const { solanaAddress: address, evmAddress, solanaWallet } = useNetwork();\n const { nordUser } = useSession();\n const { turnkeyStatus, turnkeyEnabled } = useWalletConnection();\n\n // Prevent accumulating auto-retry timers when the effect re-runs frequently.\n const autoRetryTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const returnedToChainSelectionRef = useRef(false);\n\n // Ensure pending timer is cleared on unmount.\n useEffect(() => {\n return () => {\n if (autoRetryTimeoutRef.current) {\n clearTimeout(autoRetryTimeoutRef.current);\n autoRetryTimeoutRef.current = null;\n }\n };\n }, []);\n\n // Log initial state on mount\n useEffect(() => {\n const pending = readPendingDeposit();\n logger.info('[DepositProgressScreen] Component mounted', {\n depositProgressPhase,\n bridgeError,\n bridgeRetryable,\n isDepositing,\n hasPending: !!pending,\n pendingDepositId: pending?.depositId,\n });\n }, []); // Only on mount\n\n // Check if we're resuming a pending deposit - only check deposit ID and wallet match\n const isResuming = useMemo(() => {\n const pending = readPendingDeposit();\n if (!pending?.depositId) return false;\n\n const hasWallet = !!(address || evmAddress);\n if (!hasWallet) return false;\n\n const pendingWalletLower = pending.wallet?.toLowerCase() ?? '';\n const addressLower = address?.toLowerCase() ?? '';\n const evmAddressLower = evmAddress?.toLowerCase() ?? '';\n\n return (\n (addressLower && addressLower === pendingWalletLower) ||\n (evmAddressLower && evmAddressLower === pendingWalletLower)\n );\n }, [address, evmAddress]);\n\n // Check if the pending deposit is in a failed state (from localStorage)\n const failedDepositInfo = useMemo(() => {\n const pending = readPendingDeposit();\n if (!pending || pending.stage !== 'failed') return null;\n return {\n reason: pending.reason || 'The deposit failed. Please try again.',\n depositId: pending.depositId,\n };\n }, [bridgeError, isDepositing]); // Re-check when error state changes\n\n // Handler to clear failed deposit and start over\n const handleStartOver = useCallback(() => {\n logger.info('[DepositProgressScreen] User clicked Start Over - clearing pending deposit');\n clearPendingDeposit();\n actions.goToChainSelection({ resetSelection: true });\n }, [actions]);\n\n // SIMPLIFIED: When on DEPOSIT_PROGRESS screen, trigger claim if we have deposit ID\n useEffect(() => {\n const clearAutoRetry = () => {\n if (autoRetryTimeoutRef.current) {\n clearTimeout(autoRetryTimeoutRef.current);\n autoRetryTimeoutRef.current = null;\n }\n };\n\n if (state !== OnboardingStep.DEPOSIT_PROGRESS) {\n clearAutoRetry();\n return;\n }\n\n const pending = readPendingDeposit();\n logger.info('[DepositProgressScreen] Effect triggered - checking pending deposit', {\n hasPending: !!pending,\n depositId: pending?.depositId,\n stage: pending?.stage,\n tx: pending?.tx,\n mintTx: pending?.mintTx,\n isDepositing,\n bridgeError,\n depositProgressPhase,\n });\n\n // If deposit is already confirmed (solana_confirmed), the deposit flow provider\n // will handle the success transition via finalizeBridgeSuccess or handleResumePendingDeposit.\n // We should NOT dispatch success here to avoid a race condition where we dispatch\n // with stale localStorage data before the flow provider dispatches with correct data.\n // This caused a bug where the success modal would flash from one amount to another.\n if (pending?.stage === 'solana_confirmed') {\n logger.info('[DepositProgressScreen] Deposit already confirmed - waiting for flow provider to handle success', {\n depositId: pending.depositId,\n stage: pending.stage,\n });\n // Don't dispatch success here - let the deposit flow handle it\n return;\n }\n\n if (!pending?.depositId) {\n logger.info('[DepositProgressScreen] No pending deposit ID found');\n // If we have a user-facing message (e.g. tx hash already used), keep the user on the\n // progress screen so they can read it. Do not redirect to chain selection.\n if (context.depositError || bridgeError) {\n clearAutoRetry();\n return;\n }\n // If we can't resume (common after refresh during signing), route back to amount input\n // so the user can restart cleanly instead of being stuck on the progress screen.\n if (!returnedToChainSelectionRef.current && !isDepositing) {\n returnedToChainSelectionRef.current = true;\n actions.goToChainSelection({ resetSelection: true });\n }\n clearAutoRetry();\n return;\n }\n\n // Check for either EVM or Solana address - bridge deposits can use either\n if (!evmAddress && !address) {\n logger.debug('[DepositProgressScreen] Waiting for wallet address', {\n hasEvmAddress: !!evmAddress,\n hasSolanaAddress: !!address,\n });\n logger.info('[DepositProgressScreen] No wallet address, waiting for wallet connection');\n clearAutoRetry();\n return;\n }\n\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 logger.debug('[DepositProgressScreen] Wallet matching check', {\n walletMatches,\n pendingWallet: pending.wallet,\n evmAddress,\n solanaAddress: address,\n matchType: evmAddressLower === pendingWalletLower ? 'EVM' : (addressLower === pendingWalletLower ? 'Solana' : 'none'),\n });\n\n logger.info('[DepositProgressScreen] Checking deposit state', {\n walletMatches,\n isDepositing,\n depositProgressPhase,\n depositId: pending.depositId,\n hasBridgeError: !!bridgeError,\n });\n\n // If we have a deposit ID matching wallet, trigger claim\n // Ignore stage from localStorage - let the claim process determine current state\n // BUT: Only if solanaWallet is ready (needed for claim signing)\n const isEvmFlow = context.entryNetwork === 'evm';\n const turnkeyReady = !turnkeyEnabled || turnkeyStatus === 'ready';\n const canClaim = !isEvmFlow || turnkeyReady;\n\n // Check if error is retryable and safe to auto-retry (avoid retry loops on non-network errors).\n const isRetryableError = bridgeError && bridgeRetryable;\n const errorLower = bridgeError?.toLowerCase() ?? '';\n const autoRetryReason =\n !isRetryableError\n ? null\n : errorLower.includes('blockhash expired') || errorLower.includes('blockhash not found')\n ? 'blockhash'\n : errorLower.includes('fee payer')\n ? 'feePayer'\n : errorLower.includes('server is not available') || errorLower.includes('bridge assist')\n ? 'server'\n : errorLower.includes('transaction was not confirmed') || errorLower.includes('timed out')\n ? 'timeout'\n : null;\n\n // Auto-retry if:\n // 1. There's a retryable error (like blockhash expired) - always retry these\n // 2. OR there's no error and all conditions are met\n const shouldAutoRetry = Boolean(autoRetryReason) && !isDepositing && !context.depositError;\n // Important: never auto-trigger claim when an error exists; only auto-retry via the controlled path above.\n const shouldTriggerClaim = !bridgeError && !context.depositError && walletMatches && !isDepositing && solanaWallet && canClaim && nord && nordUser;\n\n logger.info('[DepositProgressScreen] Claim trigger evaluation', {\n walletMatches,\n isDepositing,\n hasSolanaWallet: !!solanaWallet,\n canClaim,\n hasNord: !!nord,\n hasNordUser: !!nordUser,\n shouldTriggerClaim,\n bridgeError,\n bridgeRetryable,\n isRetryableError,\n autoRetryReason,\n shouldAutoRetry,\n });\n\n // If there's a non-retryable error, don't auto-retry (user must manually retry)\n if (bridgeError && !isRetryableError) {\n clearAutoRetry();\n logger.info('[DepositProgressScreen] Skipping auto-retry due to non-retryable error', {\n bridgeError,\n depositId: pending.depositId,\n });\n return;\n }\n\n // Auto-retry for retryable errors (like blockhash expired)\n // Add a small delay to avoid immediate retry loops\n if (shouldAutoRetry && walletMatches && solanaWallet && canClaim && nord && nordUser) {\n // If an auto-retry is already scheduled, don't schedule another one.\n if (autoRetryTimeoutRef.current) {\n return;\n }\n\n logger.info('[DepositProgressScreen] Auto-retrying claim due to retryable error', {\n bridgeError,\n depositId: pending.depositId,\n autoRetryReason,\n });\n // Small delay to ensure error state is processed, then retry\n autoRetryTimeoutRef.current = setTimeout(() => {\n autoRetryTimeoutRef.current = null;\n logger.info('[DepositProgressScreen] Executing auto-retry now');\n void startDeposit();\n }, 5000);\n return;\n }\n\n // Conditions changed (or error cleared) — cancel any scheduled auto-retry.\n clearAutoRetry();\n\n // If the pending deposit is already marked as failed in localStorage, don't auto-trigger.\n // The user should manually retry or the error should be shown.\n if (pending.stage === 'failed') {\n logger.info('[DepositProgressScreen] Pending deposit is marked as failed - not auto-triggering', {\n depositId: pending.depositId,\n reason: pending.reason,\n stage: pending.stage,\n });\n clearAutoRetry();\n return;\n }\n\n // Normal claim trigger (no error or error was cleared)\n if (shouldTriggerClaim) {\n if (!nord || !nordUser) {\n logger.info('[DepositProgressScreen] Waiting for Nord client/session', {\n hasNord: !!nord,\n hasNordUser: !!nordUser,\n depositId: pending.depositId,\n });\n return;\n }\n\n logger.info('[DepositProgressScreen] Triggering claim for pending deposit', {\n currentPhase: depositProgressPhase,\n depositId: pending.depositId,\n hasBridgeError: !!bridgeError,\n hasSolanaWallet: !!solanaWallet,\n turnkeyStatus,\n });\n void startDeposit();\n } else if (walletMatches && !isDepositing && (!solanaWallet || !canClaim)) {\n const missingConditions: string[] = [];\n if (!solanaWallet) missingConditions.push('solanaWallet');\n if (!canClaim) missingConditions.push('canClaim (Turnkey not ready)');\n\n logger.info('[DepositProgressScreen] Waiting for conditions before triggering claim', {\n missingConditions,\n currentPhase: depositProgressPhase,\n depositId: pending.depositId,\n hasSolanaWallet: !!solanaWallet,\n turnkeyEnabled,\n turnkeyStatus,\n isEvmFlow,\n });\n // Don't call startDeposit - it will be called again when solanaWallet becomes available\n } else if (walletMatches && !isDepositing) {\n const missingConditions: string[] = [];\n if (!solanaWallet) missingConditions.push('solanaWallet');\n if (!canClaim) missingConditions.push('canClaim');\n if (!nord) missingConditions.push('nord');\n if (!nordUser) missingConditions.push('nordUser');\n\n logger.info('[DepositProgressScreen] Cannot trigger claim - missing conditions', {\n missingConditions,\n depositId: pending.depositId,\n });\n }\n }, [\n state,\n context.entryNetwork,\n startDeposit,\n isDepositing,\n depositProgressPhase,\n evmAddress,\n address,\n bridgeError,\n bridgeRetryable,\n solanaWallet,\n turnkeyStatus,\n turnkeyEnabled,\n nord,\n nordUser\n ]);\n\n const message = useMemo(() => {\n const baseMessage = {\n ...DEPOSIT_PROGRESS_MESSAGE,\n subtitle: SUBTITLES[depositProgressPhase] ?? SUBTITLES.solana,\n };\n\n // If deposit failed, show failed state\n if (failedDepositInfo && !isDepositing) {\n return {\n ...baseMessage,\n title: \"Deposit Failed\",\n subtitle: \"Click retry to try again\",\n };\n }\n\n // If resuming, update the title to indicate we're continuing\n if (isResuming) {\n return {\n ...baseMessage,\n title: \"Continuing Deposit Process\",\n };\n }\n\n return baseMessage;\n }, [depositProgressPhase, isResuming, failedDepositInfo, isDepositing]);\n\n const showBridgeDetails =\n Boolean(bridgeApprovalPending) ||\n Boolean(bridgeApprovalError) ||\n Boolean(pendingBridgeTx) ||\n Boolean(pendingMintTx) ||\n Boolean(bridgeError) ||\n Boolean(failedDepositInfo);\n\n return (\n <div className=\"overflow-hidden relative space-y-3\">\n <WaitingMessage message={message} animation=\"transfer\" />\n {showBridgeDetails && (\n <div className=\"text-xs text-white/70 space-y-2\">\n {bridgeApprovalPending && (\n <div className=\"text-amber-200/90\">Awaiting approval/burn on EVM…</div>\n )}\n {bridgeApprovalError && (\n <div className=\"text-amber-200/90\">Approval/burn failed: {bridgeApprovalError}</div>\n )}\n {pendingBridgeTx && (\n <div>\n Bridge tx:{' '}\n {pendingBridgeExplorerUrl ? (\n <a className=\"underline\" href={pendingBridgeExplorerUrl} target=\"_blank\" rel=\"noreferrer\">\n {pendingBridgeTx}\n </a>\n ) : (\n <span>{pendingBridgeTx}</span>\n )}\n </div>\n )}\n {pendingMintTx && (\n <div>\n Mint tx:{' '}\n {pendingBridgeExplorerUrl ? (\n <a className=\"underline\" href={pendingBridgeExplorerUrl} target=\"_blank\" rel=\"noreferrer\">\n {pendingMintTx}\n </a>\n ) : (\n <span>{pendingMintTx}</span>\n )}\n </div>\n )}\n {bridgeError && (\n <div className=\"text-amber-200/90\">\n {bridgeError}\n {bridgeRetryable && (\n <button\n type=\"button\"\n onClick={startDeposit}\n className=\"ml-2 underline text-white\"\n disabled={isDepositing}\n >\n {isDepositing ? 'Retrying…' : 'Retry'}\n </button>\n )}\n {!isDepositing && (\n <button\n type=\"button\"\n onClick={handleStartOver}\n className=\"ml-2 underline text-white/70\"\n >\n Start Over\n </button>\n )}\n </div>\n )}\n {failedDepositInfo && !bridgeError && (\n <div className=\"text-amber-200/90\">\n {failedDepositInfo.reason}\n <button\n type=\"button\"\n onClick={startDeposit}\n className=\"ml-2 underline text-white\"\n disabled={isDepositing}\n >\n {isDepositing ? 'Retrying…' : 'Retry'}\n </button>\n <button\n type=\"button\"\n onClick={handleStartOver}\n className=\"ml-2 underline text-white/70\"\n disabled={isDepositing}\n >\n Start Over\n </button>\n </div>\n )}\n </div>\n )}\n {context.depositError &&\n (!bridgeError ||\n context.depositError.trim().toLowerCase() !== bridgeError.trim().toLowerCase()) && (\n <div className=\"text-xs text-amber-200/90\">{context.depositError}</div>\n )}\n {depositProgressPhase === 'solana' && authStatus === 'loading' && authStatusMessage && (\n <div className=\"text-xs text-white/70\">{authStatusMessage}</div>\n )}\n {depositProgressPhase === 'solana' && authStatus === 'error' && authErrorMessage && (\n <div className=\"text-xs text-amber-200/90\">{authErrorMessage}</div>\n )}\n </div>\n );\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"07-DepositSuccessScreen.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/screens/07-DepositSuccessScreen.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useState } from \"react\";\nimport { useN1WalletContext } from \"../../../hooks\";\nimport { logger } from \"../../../utils/logger\";\nimport { shortenAddress } from \"../../../utils/shortenString\";\nimport { useDepositFlow, useOnboardingState } from \"../providers\";\nimport { getSolanaExplorerUrl } from \"../utils/deposit/solanaDepositTransaction\";\nimport { isNordConfigured } from \"../utils/nordUtils\";\n\n// Share icon component reused from Header.tsx\nconst ShareIcon = ({ className }: { className?: string }) => (\n <svg\n className={className || \"h-full w-full\"}\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M5.93066 8.06944L12.3473 1.65277\"\n stroke=\"currentColor\"\n strokeWidth=\"1.2\"\n strokeLinecap=\"round\"\n />\n <path\n d=\"M8.06958 1.65277H12.3474V5.93055\"\n stroke=\"currentColor\"\n strokeWidth=\"1.2\"\n strokeLinecap=\"round\"\n />\n <path\n d=\"M10.7431 7.80207V12.3472H1.65283V3.25693H6.19797\"\n stroke=\"currentColor\"\n strokeWidth=\"1.2\"\n strokeLinecap=\"round\"\n />\n </svg>\n);\n\n/**\n * Screen displayed after successful deposit completion.\n * Shows transaction details, amounts, and explorer links.\n * Provides continue/close button based on flow type.\n */\nexport function DepositSuccessScreen() {\n const { amount, completeDeposit, transactionResult, transactionId } =\n useDepositFlow();\n const { nord } = useN1WalletContext();\n const { context } = useOnboardingState();\n const [isContinueEnabled] = useState(true);\n const [tokenSymbol, setTokenSymbol] = useState(\"USDC\");\n const [copiedAddress, setCopiedAddress] = useState(false);\n const [showCopyTooltip, setShowCopyTooltip] = useState(false);\n\n const fallbackTransaction = transactionResult ?? {\n success: true,\n transactionId: transactionId ?? \"\",\n amount: amount || \"0\",\n tokenSymbol: \"USDC\",\n fromAddress: \"\",\n toAddress: \"\",\n networkName: context.selectedChain || \"\",\n status: \"Completed\",\n explorerUrl: transactionId ? getSolanaExplorerUrl(transactionId) : \"\",\n };\n\n // Get token information from Nord if available\n useEffect(() => {\n if (nord && isNordConfigured(nord)) {\n try {\n const usdcToken =\n nord.tokens.find((t) => t.symbol === \"USDC_2\") || nord.tokens[0];\n if (usdcToken) {\n setTokenSymbol(usdcToken.symbol);\n }\n } catch (error) {\n logger.warn(\"Error getting token information from Nord:\", error);\n }\n }\n }, [nord]);\n\n // Solana transaction ID (from depositSpl)\n const solanaTransactionId =\n transactionId || fallbackTransaction.transactionId;\n const solanaTransactionIdShort = shortenAddress(solanaTransactionId, 5, 4);\n const solanaExplorerUrl = solanaTransactionId\n ? getSolanaExplorerUrl(solanaTransactionId)\n : \"\";\n\n // N1 transaction ID (could be derived from transactionResult or generated)\n // For now, using a formatted version or placeholder\n const n1TransactionId = transactionResult?.transactionId\n ? `n1_${transactionResult.transactionId.substring(0, 8)}`\n : `n1_${solanaTransactionId.substring(0, 8)}`;\n const n1TransactionIdShort = shortenAddress(n1TransactionId, 5, 4);\n // N1 explorer URL (placeholder - adjust based on actual N1 explorer)\n const n1ExplorerUrl = `https://explorer.n1.network/tx/${n1TransactionId}`;\n\n const fromAddressShort = shortenAddress(\n fallbackTransaction.fromAddress,\n 5,\n 4\n );\n const fromAddressFull = fallbackTransaction.fromAddress;\n\n // Handle copy to clipboard for wallet address\n const handleCopyAddress = async () => {\n if (!fromAddressFull || typeof navigator === \"undefined\") return;\n\n const nav = navigator as Navigator & {\n clipboard?: { writeText: (text: string) => Promise<void> };\n };\n\n if (nav.clipboard?.writeText) {\n try {\n await nav.clipboard.writeText(fromAddressFull);\n setCopiedAddress(true);\n setTimeout(() => {\n setCopiedAddress(false);\n }, 1000);\n } catch (error) {\n logger.warn(\"Failed to copy address:\", error);\n }\n }\n };\n\n return (\n <div className=\"relative w-full\">\n <div className=\"flex flex-col space-y-4\">\n {/* Amount display */}\n <div className=\"w-full py-4\">\n <div className=\"flex items-center justify-center\">\n <div className=\"text-center flex items-end\">\n <div className=\"text-5xl md:text-6xl tracking-tight text-n1-ww-main font-medium\">\n {Number(amount).toLocaleString()}\n </div>\n <div className=\"h-5 inline-flex items-center justify-center border border-n1-ww-border rounded px-1 py-1 ml-2 mb-1\">\n <span className=\"text-white text-xs font-light\">\n {tokenSymbol}\n </span>\n </div>\n </div>\n </div>\n </div>\n\n {/* Transaction details */}\n <div className=\"space-y-3 mb-4\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-white text-xs font-light\">Amount:</span>\n <span className=\"text-white text-xs font-light\">\n {Number(amount).toLocaleString()} {tokenSymbol}\n </span>\n </div>\n\n <div className=\"flex items-center justify-between\">\n <span className=\"text-white text-xs font-light\">Status:</span>\n <div className=\"flex items-center gap-2\">\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"text-n1-ww-accent-neon\"\n >\n <rect\n x=\"0.5\"\n y=\"0.5\"\n width=\"13\"\n height=\"13\"\n rx=\"6.5\"\n stroke=\"currentColor\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M10.7917 4.83199L6.54647 9.9756L6.27917 10.2995L5.97635 10.0059L3.5 7.60561L4.0421 7.0879L6.21563 9.19473L10.1935 4.375L10.7917 4.83199Z\"\n fill=\"currentColor\"\n stroke=\"currentColor\"\n strokeWidth=\"0.5\"\n />\n </svg>\n <span className=\"text-n1-ww-accent-neon text-xs font-light\">\n {fallbackTransaction.status}\n </span>\n </div>\n </div>\n\n <div className=\"flex items-center justify-between\">\n <span className=\"text-white text-xs font-light\">From:</span>\n <div className=\"relative flex items-center gap-1 group\">\n <button\n onClick={handleCopyAddress}\n onMouseEnter={() => !copiedAddress && setShowCopyTooltip(true)}\n onMouseLeave={() => setShowCopyTooltip(false)}\n className=\"text-white text-xs font-light underline cursor-pointer hover:text-n1-ww-main transition-colors\"\n >\n {fromAddressShort}\n </button>\n {(copiedAddress || showCopyTooltip) && (\n <div\n className={`absolute top-full mt-1 left-1/2 -translate-x-1/2 px-2 py-1 bg-n1-ww-gray-800 border border-n1-ww-border rounded text-xs text-white whitespace-nowrap z-10 pointer-events-none ${\n copiedAddress\n ? \"opacity-100\"\n : showCopyTooltip\n ? \"opacity-100\"\n : \"opacity-0\"\n } transition-opacity duration-200`}\n >\n {copiedAddress ? \"Copied!\" : \"Click to copy\"}\n </div>\n )}\n </div>\n </div>\n\n <div className=\"flex items-center justify-between\">\n <span className=\"text-white text-xs font-light\">\n N1 Transaction ID:\n </span>\n <div className=\"flex items-center gap-1\">\n <span className=\"text-white text-xs font-light underline\">\n {n1TransactionIdShort}\n </span>\n {n1ExplorerUrl && (\n <a\n href={n1ExplorerUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex h-4 w-4 flex-shrink-0 items-center justify-center text-n1-ww-main hover:text-white transition-colors\"\n aria-label=\"View N1 transaction on explorer\"\n >\n <ShareIcon />\n </a>\n )}\n </div>\n </div>\n\n <div className=\"flex items-center justify-between\">\n <span className=\"text-white text-xs font-light\">\n Solana Transaction ID:\n </span>\n <div className=\"flex items-center gap-1\">\n <span className=\"text-white text-xs font-light underline\">\n {solanaTransactionIdShort}\n </span>\n {solanaExplorerUrl && (\n <a\n href={solanaExplorerUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex h-4 w-4 flex-shrink-0 items-center justify-center text-n1-ww-main hover:text-white transition-colors\"\n aria-label=\"View transaction on explorer\"\n >\n <ShareIcon />\n </a>\n )}\n </div>\n </div>\n </div>\n\n {/* Separator */}\n <div className=\"h-px bg-n1-ww-border mb-4\"></div>\n\n {/* Continue / Close button */}\n <button\n onClick={isContinueEnabled ? completeDeposit : undefined}\n disabled={!isContinueEnabled}\n className={`\n w-full h-8 rounded border bg-transparent flex font-medium items-center justify-center\n transition-all duration-200 transform\n ${\n isContinueEnabled\n ? \"border-n1-ww-main hover:bg-n1-ww-gray-900 cursor-pointer text-n1-ww-main\"\n : \"border-n1-ww-border opacity-50 cursor-not-allowed text-n1-ww-gray-600\"\n }\n `}\n >\n <span className=\"font-medium text-sm opacity-90\">\n {context.isDepositOnlyFlow ? \"Close\" : \"Continue\"}\n </span>\n </button>\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"08-AuthLoadingScreen.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/screens/08-AuthLoadingScreen.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IACzB,IAAA,KAA4B,QAAQ,CAAU,KAAK,CAAC,EAAnD,SAAS,QAAA,EAAE,YAAY,QAA4B,CAAC;IAC3D,IAAM,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAEjC,IAAA,KAKF,cAAc,EAAE,EAJlB,WAAW,iBAAA,EACX,UAAU,gBAAA,EACV,gBAAgB,sBAAA,EAChB,iBAAiB,uBACC,CAAC;IAErB,yCAAyC;IACzC,SAAS,CAAC;QACR,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC9B,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC;YAChC,WAAW,EAAE,CAAC;QAChB,CAAC;IACH,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,IAAM,WAAW,GAAG;QAClB,iCAAiC;QACjC,gBAAgB,CAAC,OAAO,GAAG,KAAK,CAAC;QACjC,WAAW,EAAE,CAAC;IAChB,CAAC,CAAC;IAEF,IAAM,cAAc,GAAG;QACrB,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,gBAAgB;QACvB,QAAQ,EACN,iBAAiB,IAAI,+CAA+C;QACtE,QAAQ,EAAE,KAAK;KAChB,CAAC;IAEF,OAAO,CACL,cAAK,SAAS,EAAC,0BAA0B,YACtC,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,CACxB,KAAC,cAAc,IAAC,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,cAAc,GAAI,CAC5D,CAAC,CAAC,CAAC,CACF,eAAK,SAAS,EAAC,mDAAmD,aAChE,aAAI,SAAS,EAAC,kCAAkC,sCAE3C,EACL,YAAG,SAAS,EAAC,0BAA0B,4EAEnC,EACH,gBAAgB,IAAI,CACnB,YAAG,SAAS,EAAC,sBAAsB,YAAE,gBAAgB,GAAK,CAC3D,EACD,cAAK,SAAS,EAAC,aAAa,YAC1B,iBACE,OAAO,EAAE,WAAW,EACpB,YAAY,EAAE,cAAM,OAAA,YAAY,CAAC,IAAI,CAAC,EAAlB,CAAkB,EACtC,YAAY,EAAE,cAAM,OAAA,YAAY,CAAC,KAAK,CAAC,EAAnB,CAAmB,EACvC,SAAS,EAAE,0RAIR,EACH,KAAK,EAAE;4BACL,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU;yBAClD,0BAGM,GACL,IACF,CACP,GACG,CACP,CAAC;AACJ,CAAC","sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport { useDepositFlow } from '../providers';\nimport { WaitingMessage } from '../components/WaitingMessage';\n\n/**\n * Screen that automatically triggers Nord authentication when mounted.\n * Shows loading state and handles authentication errors with retry option.\n */\nexport function AuthLoadingScreen() {\n const [isHovered, setIsHovered] = useState<boolean>(false);\n const authInitiatedRef = useRef(false);\n \n const { \n performAuth,\n authStatus, \n authErrorMessage, \n authStatusMessage\n } = useDepositFlow();\n\n // Auto-trigger auth on mount (only once)\n useEffect(() => {\n if (!authInitiatedRef.current) {\n authInitiatedRef.current = true;\n performAuth();\n }\n }, [performAuth]);\n\n const handleRetry = () => {\n // Reset and retry authentication\n authInitiatedRef.current = false;\n performAuth();\n };\n\n const loadingMessage = {\n visible: true,\n title: 'Authenticating',\n subtitle:\n authStatusMessage || 'Please wait while we create your Nord account',\n isTyping: false,\n };\n\n return (\n <div className=\"overflow-hidden relative\">\n {authStatus !== 'error' ? (\n <WaitingMessage loaderSize={52} message={loadingMessage} />\n ) : (\n <div className=\"flex flex-col items-center text-center space-y-2 \">\n <h3 className=\"text-xl text-white font-semibold\">\n Authentication Failed\n </h3>\n <p className=\"text-sm text-neutral-400\">\n There was an error during authentication. Please try again.\n </p>\n {authErrorMessage && (\n <p className=\"text-xs text-red-400\">{authErrorMessage}</p>\n )}\n <div className=\"pt-4 w-full\">\n <button\n onClick={handleRetry}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n className={`\n w-full h-8 rounded border bg-transparent flex items-center justify-center font-medium text-sm\n transition-all duration-200 transform\n border-n1-ww-main text-n1-ww-main hover:bg-n1-ww-gray-900 cursor-pointer\n `}\n style={{\n transform: isHovered ? 'scale(0.99)' : 'scale(1)',\n }}\n >\n Try Again\n </button>\n </div>\n </div>\n )}\n </div>\n );\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"09-ErrorScreen.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/screens/09-ErrorScreen.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useCallback } from 'react';\nimport { useOnboardingState } from '../providers';\nimport { useDepositFlow } from '../providers/DepositFlowProvider';\nimport { useWalletConnection } from '../providers';\n\n/**\n * Error screen displayed when the onboarding flow encounters an unrecoverable error.\n * Shows error message, provides retry option, and bridge-specific retry when applicable.\n */\nexport function ErrorScreen() {\n const { context, actions } = useOnboardingState();\n const { depositProgressPhase, bridgeRetryable, startDeposit } = useDepositFlow();\n const { retryTurnkeyBootstrap, turnkeyEnabled } = useWalletConnection();\n\n const message =\n context.error?.message ||\n (context.depositError && depositProgressPhase === 'bridge'\n ? 'Bridge transaction did not complete. Retry or switch chains.'\n : context.depositError) ||\n 'Something went wrong while preparing Nord. Please try again.';\n\n const handleRetry = useCallback(() => {\n // If it's a Turnkey error, retry the bootstrap and go directly to Turnkey auth screen\n const isTurnkeyError = turnkeyEnabled && \n (context.error?.message?.toLowerCase().includes('turnkey') ||\n context.error?.message?.toLowerCase().includes('wallet authorization cancelled'));\n \n if (isTurnkeyError) {\n // Retry Turnkey bootstrap (resets state to 'idle', which will trigger bootstrap again)\n retryTurnkeyBootstrap();\n // Ensure entryNetwork is set to 'evm' for Turnkey flow\n if (context.entryNetwork !== 'evm') {\n actions.updateContext({ entryNetwork: 'evm' });\n }\n // Navigate directly to Turnkey auth screen\n actions.enterTurnkeyAuth();\n } else {\n // For non-Turnkey errors, reset the flow completely\n actions.resetFlow();\n }\n }, [actions, retryTurnkeyBootstrap, turnkeyEnabled, context.error, context.entryNetwork]);\n\n return (\n <div className=\"overflow-hidden relative\">\n <div className=\"flex flex-col items-center text-center space-y-4\">\n <div className=\"flex h-14 w-14 items-center justify-center rounded-full text-n1-ww-main\">\n <svg\n width=\"28\"\n height=\"28\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"opacity-90\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path\n d=\"M9 9L15 15M15 9L9 15\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </svg>\n </div>\n <div className=\"space-y-1 max-w-[280px]\">\n <h3 className=\"text-base font-medium text-white tracking-tight\">\n Unable to Continue\n </h3>\n <p className=\"text-xs text-white/70 leading-relaxed\">{message}</p>\n </div>\n <button\n type=\"button\"\n onClick={handleRetry}\n className=\"w-full h-8 rounded border border-n1-ww-main bg-transparent flex font-medium items-center justify-center text-sm text-n1-ww-main transition-all duration-200 transform hover:bg-n1-ww-gray-900 cursor-pointer\"\n >\n Try Again\n </button>\n {depositProgressPhase === 'bridge' && bridgeRetryable && (\n <button\n type=\"button\"\n onClick={startDeposit}\n className=\"w-full h-8 rounded border border-n1-ww-border bg-transparent flex font-medium items-center justify-center text-sm text-white transition-all duration-200 transform hover:bg-n1-ww-gray-900 cursor-pointer\"\n >\n Retry bridge\n </button>\n )}\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/screens/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC","sourcesContent":["export * from './00-EntrySelectionScreen';\nexport * from './01-ConnectWalletScreen';\nexport * from './02-TurnkeyAuthScreen';\nexport * from './03-TurnkeyPreparingScreen';\nexport * from './04-ChainSelectionScreen';\nexport * from './05-AmountInputScreen';\nexport * from './06-DepositProgressScreen';\nexport * from './07-DepositSuccessScreen';\nexport * from './08-AuthLoadingScreen';\nexport * from './09-ErrorScreen';\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"turnkeySessionMachine.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/turnkey/turnkeySessionMachine.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,GAEtB,MAAM,wCAAwC,CAAC","sourcesContent":["export {\n TurnkeySessionMachine,\n type TurnkeySessionSnapshot,\n} from '../../../turnkey/turnkeySessionMachine';\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/features/onboarding-flow/types.ts"],"names":[],"mappings":"AAGA;;GAEG;AAEH;;GAEG;AACH,MAAM,CAAN,IAAY,cAYX;AAZD,WAAY,cAAc;IACxB,qDAAmC,CAAA;IACnC,yDAAuC,CAAA;IACvC,+CAA6B,CAAA;IAC7B,yDAAuC,CAAA;IACvC,qDAAmC,CAAA;IACnC,+CAA6B,CAAA;IAC7B,uDAAqC,CAAA;IACrC,qDAAmC,CAAA;IACnC,+CAA6B,CAAA;IAC7B,iDAA+B,CAAA;IAC/B,iCAAe,CAAA;AACjB,CAAC,EAZW,cAAc,KAAd,cAAc,QAYzB;AAyCD;;GAEG;AACH,MAAM,CAAC,IAAM,wBAAwB,GAAsB;IACzD,cAAc,EAAE,KAAK;IACrB,gBAAgB,EAAE,KAAK;IACvB,kBAAkB,EAAE,KAAK;IACzB,YAAY,EAAE,IAAI;IAClB,aAAa,EAAE,IAAI;IACnB,eAAe,EAAE,IAAI;IACrB,oBAAoB,EAAE,IAAI;IAC1B,MAAM,EAAE,EAAE;IACV,aAAa,EAAE,IAAI;IACnB,KAAK,EAAE,IAAI;IACX,YAAY,EAAE,SAAS;IACvB,iBAAiB,EAAE,KAAK;IACxB,WAAW,EAAE,IAAI;CAClB,CAAC","sourcesContent":["import React from 'react';\nimport { PublicKey } from '@solana/web3.js';\n\n/**\n * Shared types for the onboarding flow state machine\n */\n\n/**\n * Enum representing all possible states in the onboarding flow\n */\nexport enum OnboardingStep {\n ENTRY_SELECTION = 'ENTRY_SELECTION',\n CONNECTING_WALLET = 'CONNECTING_WALLET',\n TURNKEY_AUTH = 'TURNKEY_AUTH',\n TURNKEY_PREPARING = 'TURNKEY_PREPARING',\n CHAIN_SELECTION = 'CHAIN_SELECTION',\n AMOUNT_INPUT = 'AMOUNT_INPUT',\n DEPOSIT_PROGRESS = 'DEPOSIT_PROGRESS',\n DEPOSIT_SUCCESS = 'DEPOSIT_SUCCESS',\n AUTH_LOADING = 'AUTH_LOADING',\n FINAL_SUCCESS = 'FINAL_SUCCESS',\n ERROR = 'ERROR',\n}\n\n\n\n/**\n * Interface representing the onboarding context, containing all data necessary\n * for the onboarding flow\n */\nexport interface StoredDepositRecord {\n transactionId: string;\n amount: string;\n tokenSymbol: string;\n chainId: string;\n chainName: string;\n chainNetwork: string | null;\n timestamp: number;\n}\n\nexport interface OnboardingContext {\n hasNordAccount: boolean;\n hasActiveSession: boolean;\n hasExistingBalance: boolean;\n entryNetwork: 'evm' | 'solana' | null;\n selectedChain: string | null;\n selectedChainId: string | null;\n selectedChainNetwork: string | null;\n amount: string;\n transactionId: string | null;\n error: Error | null;\n depositError?: string;\n isDepositOnlyFlow: boolean;\n lastDeposit: StoredDepositRecord | null;\n}\n\nexport interface WalletBalanceState {\n usdc: number | null;\n native: number | null;\n loading: boolean;\n error: string | null;\n}\n\n/**\n * Initial onboarding context with default values\n */\nexport const initialOnboardingContext: OnboardingContext = {\n hasNordAccount: false,\n hasActiveSession: false,\n hasExistingBalance: false,\n entryNetwork: null,\n selectedChain: null,\n selectedChainId: null,\n selectedChainNetwork: null,\n amount: '',\n transactionId: null,\n error: null,\n depositError: undefined,\n isDepositOnlyFlow: false,\n lastDeposit: null,\n};\n\nexport interface TableValues {\n amount?: { text: string; visible: boolean; typing: boolean };\n tx: { text: string; visible: boolean; typing: boolean };\n from: { text: string; visible: boolean; typing: boolean };\n to: { text: string; visible: boolean; typing: boolean };\n network: { text: string; visible: boolean; typing: boolean };\n status: { text: string; visible: boolean; typing: boolean };\n}\n\nexport interface WaitingMessageState {\n title: string;\n subtitle: string;\n visible: boolean;\n isTyping: boolean;\n}\n\n/**\n * Interface for a blockchain network\n */\nexport interface Chain {\n id: string;\n name: string;\n logo: string | React.ReactNode;\n network?: string;\n description?: string;\n}\n\nexport type DepositProgressPhase = 'bridge' | 'claim' | 'solana' | 'nord';\n\nexport interface ProtonDepositRecord {\n eventIndex?: number | string | null;\n createdAtSlot: number;\n amount: number;\n depositorTokenAccount: string;\n bufferAccount: string;\n recipient: string;\n mint: string;\n}\n\nexport interface ProtonClientLike {\n depositsForRecipient: (\n recipient: PublicKey,\n options: {\n startSlot?: number;\n order: 'desc' | 'asc';\n }\n ) => Promise<ProtonDepositRecord[]>;\n}\n\n/**\n * Structural type for Solana Connection to avoid version mismatches\n * between @solana/web3.js instances from different packages\n */\nexport interface SolanaConnectionLike {\n getSignatureStatuses: (\n signatures: string[],\n config?: { searchTransactionHistory?: boolean }\n ) => Promise<{\n context: { slot: number };\n value: ({ slot: number; err: unknown } | null)[];\n }>;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridgeUtils.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/utils/bridgeUtils.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;GAEG;AACH,MAAM,CAAC,IAAM,iBAAiB,GAAG,UAAC,KAAc;IAC9C,IAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,UAAG,KAAK,CAAE,CAAC;IAChE,IAAM,UAAU,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IACrC,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjE,OAAO,kEAAkE,CAAC;IAC5E,CAAC;IACD,IAAI,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QACxC,OAAO,yDAAyD,CAAC;IACnE,CAAC;IACD,IAAI,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QACzE,OAAO,2DAA2D,CAAC;IACrE,CAAC;IACD,IAAI,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACrE,OAAO,wDAAwD,CAAC;IAClE,CAAC;IACD,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAClE,OAAO,iFAAiF,CAAC;IAC3F,CAAC;IACD,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QACpE,OAAO,4CAA4C,CAAC;IACtD,CAAC;IACD,IAAI,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5E,OAAO,iDAAiD,CAAC;IAC3D,CAAC;IACD,OAAO,GAAG,IAAI,0CAA0C,CAAC;AAC3D,CAAC,CAAC;AAEF,8DAA8D;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC","sourcesContent":["// Re-export from centralized chain utilities\nexport { normalizeCctpChain } from '../../../utils/chain';\n\n/**\n * Formats bridge errors into user-friendly messages.\n */\nexport const formatBridgeError = (error: unknown): string => {\n const raw = error instanceof Error ? error.message : `${error}`;\n const normalized = raw.toLowerCase();\n if (normalized.includes('user') && normalized.includes('denied')) {\n return 'You rejected the bridge transaction. Please approve to continue.';\n }\n if (normalized.includes('insufficient')) {\n return 'Bridge failed due to insufficient balance or allowance.';\n }\n if (normalized.includes('timeout') || normalized.includes('attestation')) {\n return 'Bridge confirmation is taking too long. Retry the bridge.';\n }\n if (normalized.includes('invalid') || normalized.includes('payload')) {\n return 'Bridge request was rejected. Please retry the deposit.';\n }\n if (normalized.includes('conflict') || normalized.includes('409')) {\n return 'Bridge request conflicted with an existing deposit. Retry with a fresh deposit.';\n }\n if (normalized.includes('429') || normalized.includes('rate limit')) {\n return 'Service is busy. Please retry in a moment.';\n }\n if (normalized.includes('unauthorized') || normalized.includes('signature')) {\n return 'Request was rejected. Please retry the deposit.';\n }\n return raw || 'Bridge transaction failed. Please retry.';\n};\n\n// Re-export deriveChainLabel from centralized chain utilities\nexport { deriveChainLabel } from '../../../utils/chain';\n\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attestationUtils.js","sourceRoot":"","sources":["../../../../../src/features/onboarding-flow/utils/deposit/attestationUtils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAUlD;;;GAGG;AACH,MAAM,CAAC,IAAM,kBAAkB,GAAG,iEAAO,EAMd;;QALzB,UAAU,gBAAA,EACV,UAAU,gBAAA,EACV,WAAW,iBAAA,EACX,SAAS,eAAA,EACT,cAAc,oBAAA;;;;gBAER,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACrB,SAAS,GAAY,IAAI,CAAC;;;qBAEvB,CAAA,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,SAAS,CAAA;;;;gBAET,qBAAM,UAAU,CAAC,cAAc,CAAC,UAAU,EAAE,WAAW,CAAC,EAAA;;gBAA1E,eAAe,GAAG,SAAwD;gBAChF,IAAI,eAAe,EAAE,CAAC;oBACpB,sBAAO,eAAe,EAAC;gBACzB,CAAC;;;;gBAED,SAAS,GAAG,OAAK,CAAC;gBAClB,MAAM,CAAC,IAAI,CAAC,yDAAyD,EAAE;oBACrE,KAAK,SAAA;oBACL,YAAY,EAAE,OAAK,YAAY,KAAK,CAAC,CAAC,CAAC,OAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAK,CAAC;iBACrE,CAAC,CAAC;;oBAGL,qBAAM,KAAK,CAAC,cAAc,CAAC,EAAA;;gBAA3B,SAA2B,CAAC;;;gBAGxB,YAAY,GAChB,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;gBACnG,MAAM,IAAI,KAAK,CAAC,oCAA6B,SAAS,iBAAO,YAAY,MAAG,CAAC,CAAC;;;KAC/E,CAAC","sourcesContent":["import { BridgeKitClient } from '../../cctp/bridgeKitClient';\nimport { delay } from './solanaUtils';\nimport { logger } from '../../../../utils/logger';\n\nexport interface WaitForAttestationParams {\n cctpClient: BridgeKitClient;\n bridgeTxId: string;\n sourceChain: string;\n timeoutMs: number;\n retryBackoffMs: number;\n}\n\n/**\n * Polls Circle/Iris for attestation data for a given bridge tx.\n * Throws on timeout.\n */\nexport const waitForAttestation = async ({\n cctpClient,\n bridgeTxId,\n sourceChain,\n timeoutMs,\n retryBackoffMs,\n}: WaitForAttestationParams) => {\n const start = Date.now();\n let lastError: unknown = null;\n\n while (Date.now() - start < timeoutMs) {\n try {\n const attestationData = await cctpClient.getAttestation(bridgeTxId, sourceChain);\n if (attestationData) {\n return attestationData;\n }\n } catch (error) {\n lastError = error;\n logger.warn('[BridgeDeposit] Error fetching attestation, retrying...', {\n error,\n errorMessage: error instanceof Error ? error.message : String(error),\n });\n }\n\n await delay(retryBackoffMs);\n }\n\n const errorMessage =\n lastError instanceof Error ? lastError.message : lastError ? String(lastError) : 'unknown error';\n throw new Error(`Attestation timeout after ${timeoutMs}ms (${errorMessage})`);\n};\n\n\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridgeUtils.js","sourceRoot":"","sources":["../../../../../src/features/onboarding-flow/utils/deposit/bridgeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,6CAA6C;AAC7C,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE/E;;GAEG;AACH,MAAM,CAAC,IAAM,iBAAiB,GAAG,UAAC,KAAc;IAC9C,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC;AAC3C,CAAC,CAAC","sourcesContent":["import { toDepositError } from '../../errors/depositError';\n\n// Re-export from centralized chain utilities\nexport { normalizeCctpChain, deriveChainLabel } from '../../../../utils/chain';\n\n/**\n * Formats bridge errors into user-friendly messages.\n */\nexport const formatBridgeError = (error: unknown): string => {\n return toDepositError(error).userMessage;\n};\n\n"]}
|