@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":"dynamic.js","sourceRoot":"","sources":["../../src/config/dynamic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEvD;;;GAGG;AACH,IAAI,gBAAgB,GAAG,KAAK,CAAC;AAE7B,MAAM,UAAU,uBAAuB;IACrC,IAAM,KAAK,GACT,OAAO,CAAC,GAAG,CAAC,kCAAkC;QAC9C,OAAO,CAAC,GAAG,CAAC,sBAAsB;QAClC,EAAE,CAAC;IAEL,IAAI,CAAC,KAAK,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAChC,gBAAgB,GAAG,IAAI,CAAC;QACxB,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAClC,gBAAgB,EAChB,8FAA8F,CAC/F,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,IAAI,IAAI,CAAC;AACvB,CAAC","sourcesContent":["import { logger } from '../utils/logger';\nimport { createBootstrapError } from '../utils/errors';\n\n/**\n * Reads Dynamic SDK environment ID from environment variables.\n * Logs error once if missing. Supports both NEXT_PUBLIC_ and non-prefixed variants.\n */\nlet missingEnvLogged = false;\n\nexport function getDynamicEnvironmentId(): string | null {\n const envId =\n process.env.NEXT_PUBLIC_DYNAMIC_ENVIRONMENT_ID ||\n process.env.DYNAMIC_ENVIRONMENT_ID ||\n '';\n\n if (!envId && !missingEnvLogged) {\n missingEnvLogged = true;\n logger.logError(createBootstrapError(\n 'CONFIG_MISSING',\n 'Dynamic environment ID is missing. Set NEXT_PUBLIC_DYNAMIC_ENVIRONMENT_ID in your .env file.'\n ));\n }\n\n return envId || null;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solana.js","sourceRoot":"","sources":["../../src/config/solana.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAN,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,yCAAwB,CAAA;IACxB,oCAAmB,CAAA;IACnB,kCAAiB,CAAA;AACnB,CAAC,EAJW,aAAa,KAAb,aAAa,QAIxB;AAED,IAAM,sBAAsB,GAAG,qCAAqC,CAAC;AAErE;;;GAGG;AACH,MAAM,UAAU,eAAe;;IAC7B,OAAO,CAAA,MAAA,OAAO,CAAC,GAAG,CAAC,2BAA2B,0CAAE,IAAI,EAAE,KAAI,sBAAsB,CAAC;AACnF,CAAC","sourcesContent":["/**\n * Solana network configuration\n */\n\nexport enum SolanaNetwork {\n MAINNET = 'mainnet-beta',\n TESTNET = 'testnet',\n DEVNET = 'devnet',\n}\n\nconst DEFAULT_SOLANA_RPC_URL = 'https://api.mainnet-beta.solana.com';\n\n/**\n * Resolve the Solana RPC URL from environment variables.\n * Falls back to mainnet RPC if none provided.\n */\nexport function getSolanaRpcUrl(): string {\n return process.env.NEXT_PUBLIC_NORD_SOLANA_URL?.trim() || DEFAULT_SOLANA_RPC_URL;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"turnkey.js","sourceRoot":"","sources":["../../src/config/turnkey.ts"],"names":[],"mappings":";;;;;;;;;;;AAEA,IAAM,cAAc,GAClB,OAAO,CAAC,GAAG,CAAC,mCAAmC;IAC/C,OAAO,CAAC,GAAG,CAAC,uBAAuB;IACnC,EAAE,CAAC;AAEL,IAAM,4BAA4B,GAChC,OAAO,CAAC,GAAG,CAAC,wCAAwC;IACpD,OAAO,CAAC,GAAG,CAAC,4BAA4B;IACxC,EAAE,CAAC;AAEL,IAAM,sBAAsB,GAC1B,OAAO,CAAC,GAAG,CAAC,kCAAkC;IAC9C,OAAO,CAAC,GAAG,CAAC,sBAAsB;IAClC,EAAE,CAAC;AAEL,IAAM,oBAAoB,GACxB,OAAO,CAAC,GAAG,CAAC,gCAAgC;IAC5C,OAAO,CAAC,GAAG,CAAC,oBAAoB;IAChC,yBAAyB,CAAC;AAE5B,IAAM,kCAAkC,GACtC,OAAO,CAAC,GAAG,CAAC,8CAA8C;IAC1D,OAAO,CAAC,GAAG,CAAC,kCAAkC;IAC9C,EAAE,CAAC;AAEL,IAAM,wBAAwB,GAAG,cAAc,KAAK,EAAE,IAAI,4BAA4B,KAAK,EAAE,CAAC;AAE9F,MAAM,CAAC,IAAM,cAAc,GAAiC,wBAAwB;IAClF,CAAC,8BACG,cAAc,EAAE,cAAc,EAC9B,iBAAiB,EAAE,4BAA4B,IAC5C,CAAC,sBAAsB,IAAI,EAAE,YAAY,EAAE,sBAAsB,EAAE,CAAC,GACpE,CAAC,oBAAoB,IAAI,EAAE,UAAU,EAAE,oBAAoB,EAAE,CAAC,GAC9D,CAAC,kCAAkC,IAAI;QACxC,wBAAwB,EAAE,kCAAkC;KAC7D,CAAC,EAEN,CAAC,CAAC,IAAI,CAAC","sourcesContent":["import type { TurnkeyProviderConfig } from \"../turnkey\";\n\nconst TURNKEY_ORG_ID =\n process.env.NEXT_PUBLIC_TURNKEY_ORGANIZATION_ID ||\n process.env.TURNKEY_ORGANIZATION_ID ||\n \"\";\n\nconst TURNKEY_AUTH_PROXY_CONFIG_ID =\n process.env.NEXT_PUBLIC_TURNKEY_AUTH_PROXY_CONFIG_ID ||\n process.env.TURNKEY_AUTH_PROXY_CONFIG_ID ||\n \"\";\n\nconst TURNKEY_AUTH_PROXY_URL =\n process.env.NEXT_PUBLIC_TURNKEY_AUTH_PROXY_URL ||\n process.env.TURNKEY_AUTH_PROXY_URL ||\n \"\";\n\nconst TURNKEY_API_BASE_URL =\n process.env.NEXT_PUBLIC_TURNKEY_API_BASE_URL ||\n process.env.TURNKEY_API_BASE_URL ||\n \"https://api.turnkey.com\";\n\nconst TURNKEY_SESSION_EXPIRATION_SECONDS =\n process.env.NEXT_PUBLIC_TURNKEY_SESSION_EXPIRATION_SECONDS ||\n process.env.TURNKEY_SESSION_EXPIRATION_SECONDS ||\n \"\";\n\nconst hasRequiredTurnkeyConfig = TURNKEY_ORG_ID !== \"\" && TURNKEY_AUTH_PROXY_CONFIG_ID !== \"\";\n\nexport const TURNKEY_CONFIG: TurnkeyProviderConfig | null = hasRequiredTurnkeyConfig\n ? {\n organizationId: TURNKEY_ORG_ID,\n authProxyConfigId: TURNKEY_AUTH_PROXY_CONFIG_ID,\n ...(TURNKEY_AUTH_PROXY_URL && { authProxyUrl: TURNKEY_AUTH_PROXY_URL }),\n ...(TURNKEY_API_BASE_URL && { apiBaseUrl: TURNKEY_API_BASE_URL }),\n ...(TURNKEY_SESSION_EXPIRATION_SECONDS && {\n sessionExpirationSeconds: TURNKEY_SESSION_EXPIRATION_SECONDS,\n }),\n }\n : null;\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"n1-wallet-context.js","sourceRoot":"","sources":["../../src/context/n1-wallet-context.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAGtC,IAAM,eAAe,GAAG,aAAa,CAAgB,EAAmB,CAAC,CAAC;AAC1E,IAAM,uBAAuB,GAAG,aAAa,CAC3C,EAA2B,CAC5B,CAAC;AAEF,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,CAAC","sourcesContent":["import { N1WalletState } from '../types/wallet';\n\nimport { createContext } from 'react';\nimport { N1InternalWalletState } from '../types/wallet';\n\nconst N1WalletContext = createContext<N1WalletState>({} as N1WalletState);\nconst N1InternalWalletContext = createContext<N1InternalWalletState>(\n {} as N1InternalWalletState\n);\n\nexport { N1WalletContext, N1InternalWalletContext };\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/errors/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;;;;;;;;;;;;;;AAEH,qDAAqD;AACrD,OAAO;AAWL,oBAAoB;AACpB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB;AACpB,YAAY;AACZ,oBAAoB,EACpB,SAAS,GACV,MAAM,iBAAiB,CAAC;AAEzB,+CAA+C;AAC/C,0BAA0B;AAC1B,+CAA+C;AAE/C;;;GAGG;AACH,MAAM,CAAN,IAAY,eAYX;AAZD,WAAY,eAAe;IACzB,0DAAuC,CAAA;IACvC,wDAAqC,CAAA;IACrC,kDAA+B,CAAA;IAC/B,kDAA+B,CAAA;IAC/B,kDAA+B,CAAA;IAC/B,sCAAmB,CAAA;IACnB,4DAAyC,CAAA;IACzC,gEAA6C,CAAA;IAC7C,0DAAuC,CAAA;IACvC,kFAA+D,CAAA;IAC/D,kEAA+C,CAAA;AACjD,CAAC,EAZW,eAAe,KAAf,eAAe,QAY1B;AAED;;;;;;;;;;;;;GAaG;AACH;IAAiC,+BAAK;IAKpC,qBACS,IAAqB,EAC5B,OAAe,EACR,OAAiC;QAExC,YAAA,MAAK,YAAC,OAAO,CAAC,SAAC;QAJR,UAAI,GAAJ,IAAI,CAAiB;QAErB,aAAO,GAAP,OAAO,CAA0B;QAP1B,YAAM,GAAG,QAAiB,CAAC;QAUzC,KAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,KAAI,CAAC,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC3C,KAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;;IAC9B,CAAC;IAED;;OAEG;IACH,+BAAS,GAAT;QACE,OAAO;YACL,MAAM,EAAE,QAAQ;YAChB,gDAAgD;YAChD,IAAI,EAAE,IAAI,CAAC,IAA4D;YACvE,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,qCAAe,GAAf;QACE,OAAO;YACL,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;YAC/B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;SAC1E,CAAC;IACJ,CAAC;IACH,kBAAC;AAAD,CAAC,AA1CD,CAAiC,KAAK,GA0CrC;;AAED,qCAAqC;AACrC,SAAS,iBAAiB,CAAC,IAAqB;IAC9C,IAAM,cAAc,GAAG;QACrB,eAAe,CAAC,OAAO;KACxB,CAAC;IACF,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,aAAa,CAAC,IAAqB;;IAC1C,IAAM,MAAM;QACV,GAAC,eAAe,CAAC,iBAAiB,IAAG,mBAAmB;QACxD,GAAC,eAAe,CAAC,gBAAgB,IAAG,kBAAkB;QACtD,GAAC,eAAe,CAAC,aAAa,IAAG,iBAAiB;QAClD,GAAC,eAAe,CAAC,aAAa,IAAG,eAAe;QAChD,GAAC,eAAe,CAAC,aAAa,IAAG,eAAe;QAChD,GAAC,eAAe,CAAC,kBAAkB,IAAG,oBAAoB;QAC1D,GAAC,eAAe,CAAC,oBAAoB,IAAG,sBAAsB;QAC9D,GAAC,eAAe,CAAC,iBAAiB,IAAG,mBAAmB;QACxD,GAAC,eAAe,CAAC,6BAA6B,IAAG,+BAA+B;QAChF,GAAC,eAAe,CAAC,qBAAqB,IAAG,uBAAuB;QAChE,GAAC,eAAe,CAAC,OAAO,IAAG,eAAe;WAC3C,CAAC;IACF,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC;AACxC,CAAC","sourcesContent":["/**\n * N1 Wallet Widget - Error Types\n *\n * This module re-exports the unified N1Error system from utils/errors.ts\n * and provides a backwards-compatible WalletError class for legacy code.\n *\n * NEW CODE SHOULD USE:\n * - N1Error interface\n * - createWalletError(), createTurnkeyError(), etc. factory functions\n * - logger.logError() for structured error logging\n *\n * @example\n * import { createWalletError, N1Error } from '../errors/types';\n *\n * const error = createWalletError('CONNECT_FAILED', 'Failed to connect wallet', {\n * cause: originalError,\n * context: { walletType: 'metamask' }\n * });\n */\n\n// Re-export everything from the unified error system\nexport {\n // Types\n type ErrorDomain,\n type WalletErrorCode as WalletErrorCodeType,\n type TurnkeyErrorCode,\n type DepositErrorCode,\n type ModalErrorCode,\n type NetworkErrorCode,\n type BootstrapErrorCode,\n type N1ErrorCode,\n type N1Error,\n // Factory functions\n createWalletError,\n createTurnkeyError,\n createDepositError,\n createModalError,\n createNetworkError,\n createBootstrapError,\n // Utilities\n isUserRejectionError,\n toN1Error,\n} from '../utils/errors';\n\n// ============================================\n// BACKWARDS COMPATIBILITY\n// ============================================\n\n/**\n * @deprecated Use WalletErrorCodeType from utils/errors instead.\n * This enum is kept for backwards compatibility with existing code.\n */\nexport enum WalletErrorCode {\n CONNECTION_FAILED = 'CONNECTION_FAILED',\n WALLET_NOT_FOUND = 'WALLET_NOT_FOUND',\n USER_REJECTED = 'USER_REJECTED',\n NETWORK_ERROR = 'NETWORK_ERROR',\n INVALID_CHAIN = 'INVALID_CHAIN',\n UNKNOWN = 'UNKNOWN',\n TRANSACTION_FAILED = 'TRANSACTION_FAILED',\n INITIALIZATION_ERROR = 'INITIALIZATION_ERROR',\n USER_FETCH_FAILED = 'USER_FETCH_FAILED',\n SESSION_INITIALIZATION_FAILED = 'SESSION_INITIALIZATION_FAILED',\n AUTHENTICATION_FAILED = 'AUTHENTICATION_FAILED',\n}\n\n/**\n * @deprecated Use N1Error interface and createWalletError() instead.\n * This class is kept for backwards compatibility during migration.\n *\n * Migration guide:\n * ```ts\n * // OLD (deprecated):\n * throw new WalletError(WalletErrorCode.USER_REJECTED, 'User rejected');\n *\n * // NEW (preferred):\n * const error = createWalletError('USER_REJECTED', 'User rejected');\n * logger.logError(error);\n * ```\n */\nexport class WalletError extends Error {\n public readonly domain = 'wallet' as const;\n public readonly recoverable: boolean;\n public readonly timestamp: number;\n\n constructor(\n public code: WalletErrorCode,\n message: string,\n public details?: Record<string, unknown>\n ) {\n super(message);\n this.name = 'WalletError';\n this.recoverable = isRecoverableCode(code);\n this.timestamp = Date.now();\n }\n\n /**\n * Convert to N1Error interface for use with logger.logError()\n */\n toN1Error(): import('../utils/errors').N1Error {\n return {\n domain: 'wallet',\n // The enum value is the same string as the type\n code: this.code as unknown as import('../utils/errors').WalletErrorCode,\n message: this.message,\n recoverable: this.recoverable,\n context: this.details,\n timestamp: this.timestamp,\n };\n }\n\n /**\n * Convert to display-friendly format\n */\n toDisplayFormat() {\n return {\n title: getErrorTitle(this.code),\n message: this.message,\n code: this.code,\n details: this.details ? JSON.stringify(this.details, null, 2) : undefined,\n };\n }\n}\n\n// Helper for backwards compatibility\nfunction isRecoverableCode(code: WalletErrorCode): boolean {\n const nonRecoverable = [\n WalletErrorCode.UNKNOWN,\n ];\n return !nonRecoverable.includes(code);\n}\n\nfunction getErrorTitle(code: WalletErrorCode): string {\n const titles: Record<WalletErrorCode, string> = {\n [WalletErrorCode.CONNECTION_FAILED]: 'Connection Failed',\n [WalletErrorCode.WALLET_NOT_FOUND]: 'Wallet Not Found',\n [WalletErrorCode.USER_REJECTED]: 'Action Rejected',\n [WalletErrorCode.NETWORK_ERROR]: 'Network Error',\n [WalletErrorCode.INVALID_CHAIN]: 'Invalid Chain',\n [WalletErrorCode.TRANSACTION_FAILED]: 'Transaction Failed',\n [WalletErrorCode.INITIALIZATION_ERROR]: 'Initialization Error',\n [WalletErrorCode.USER_FETCH_FAILED]: 'User Fetch Failed',\n [WalletErrorCode.SESSION_INITIALIZATION_FAILED]: 'Session Initialization Failed',\n [WalletErrorCode.AUTHENTICATION_FAILED]: 'Authentication Failed',\n [WalletErrorCode.UNKNOWN]: 'Unknown Error',\n };\n return titles[code] || 'Wallet Error';\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"N1WalletModal.js","sourceRoot":"","sources":["../../../src/features/onboarding-flow/N1WalletModal.tsx"],"names":[],"mappings":"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","sourcesContent":["import { lazy, Suspense, useEffect, useState, useCallback, type SyntheticEvent } from 'react';\nimport { useNetwork } from '../../providers/N1WalletProvider/NetworkProvider';\nimport { useSession } from '../../providers/N1WalletProvider/SessionProvider';\nimport { useModal } from '../../providers/N1WalletProvider/ModalProvider';\nimport { LoadingFallback } from '../../components/LoadingFallback';\nimport { logger } from '../../utils/logger';\n\n// Lazy load the onboarding flow component\nconst OnboardingFlow = lazy(() =>\n import('./OnboardingFlow').then((mod) => ({\n default: mod.OnboardingFlow,\n }))\n);\n\n/** Close animation duration in ms */\nconst CLOSE_ANIMATION_DURATION = 700;\n\n/**\n * Modal component that displays the onboarding flow.\n * Handles lazy loading, animations, backdrop clicks, and modal lifecycle.\n *\n * Uses the modal state machine from ModalProvider:\n * - showLogin: modal is visible (opening, open, or closing)\n * - isClosing: modal is in closing animation state\n * - closeModal(): triggers close animation\n * - onCloseComplete(): called when animation finishes\n */\nlet lastLoggedShowLogin: boolean | null = null;\n\nexport function N1WalletModal() {\n const { showLogin, isClosing, closeModal, onCloseComplete } = useModal();\n\n // Use new providers instead of legacy context\n const { solanaWallet } = useNetwork();\n const { dynamicSdkHasLoaded, setLoading } = useSession();\n\n const [showLoginAnimation, setShowLoginAnimation] = useState(false);\n\n /**\n * Temporarily suppresses document-level click events to prevent backdrop clicks\n * from triggering during modal close animation.\n */\n const suppressDocumentClick = useCallback(() => {\n const handler = (event: MouseEvent | PointerEvent | TouchEvent) => {\n event.preventDefault();\n event.stopPropagation();\n };\n\n document.addEventListener('click', handler, true);\n document.addEventListener('pointerup', handler, true);\n document.addEventListener('touchend', handler, true);\n\n setTimeout(() => {\n document.removeEventListener('click', handler, true);\n document.removeEventListener('pointerup', handler, true);\n document.removeEventListener('touchend', handler, true);\n }, 350);\n }, []);\n\n const blockEventPropagation = useCallback((event: SyntheticEvent | Event) => {\n if ('preventDefault' in event) {\n event.preventDefault();\n }\n if ('stopPropagation' in event) {\n event.stopPropagation();\n }\n const nativeEvent =\n 'nativeEvent' in event\n ? (event.nativeEvent as Event & { stopImmediatePropagation?: () => void })\n : (event as Event & { stopImmediatePropagation?: () => void });\n nativeEvent?.stopImmediatePropagation?.();\n }, []);\n\n // Handle loading state\n useEffect(() => {\n if (dynamicSdkHasLoaded || solanaWallet) {\n setLoading(false);\n }\n }, [dynamicSdkHasLoaded, solanaWallet, setLoading]);\n\n // Handle modal visibility - trigger enter animation\n useEffect(() => {\n if (lastLoggedShowLogin !== showLogin) {\n logger.debug('N1WalletModal: showLogin state changed', { showLogin });\n lastLoggedShowLogin = showLogin;\n }\n\n if (showLogin && !isClosing) {\n setShowLoginAnimation(true);\n }\n }, [showLogin, isClosing]);\n\n // Handle closing animation\n useEffect(() => {\n if (isClosing) {\n logger.debug('N1WalletModal: isClosing → true, beginning close animation');\n setShowLoginAnimation(false);\n const timeout = setTimeout(() => {\n logger.debug('N1WalletModal: closing animation complete');\n onCloseComplete();\n }, CLOSE_ANIMATION_DURATION);\n return () => clearTimeout(timeout);\n }\n }, [isClosing, onCloseComplete]);\n\n // Handle modal close\n const handleClose = useCallback(() => {\n logger.debug('N1WalletModal: handleClose invoked');\n suppressDocumentClick();\n closeModal();\n }, [suppressDocumentClick, closeModal]);\n\n if (!showLogin) return null;\n\n return (\n <div className=\"n1-wallet-widget dark \">\n <div className=\"fixed inset-0 z-50 flex items-center justify-center w-full h-full\">\n <div\n className={`\n fixed inset-0 w-full h-full bg-black/40 backdrop-blur-sm\n transition-all duration-500 cubic-bezier(0.16, 1, 0.3, 1)\n ${showLoginAnimation ? 'opacity-100' : 'opacity-0'}\n `}\n onClick={(event) => {\n logger.debug('N1WalletModal: backdrop clicked, closing modal');\n blockEventPropagation(event);\n handleClose();\n }}\n onMouseDown={blockEventPropagation}\n onMouseUp={blockEventPropagation}\n onPointerDown={blockEventPropagation}\n onPointerUp={blockEventPropagation}\n onTouchStart={blockEventPropagation}\n onTouchEnd={blockEventPropagation}\n />\n <div\n className={`\n scale-100 relative z-50 transition-all duration-500 cubic-bezier(0.16, 1, 0.3, 1)\n ${showLoginAnimation ? 'opacity-100 scale-100' : 'opacity-0 scale-95'}\n `}\n >\n <Suspense fallback={<LoadingFallback />}>\n <OnboardingFlow onClose={handleClose} />\n </Suspense>\n </div>\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OnboardingFlow.js","sourceRoot":"","sources":["../../../src/features/onboarding-flow/OnboardingFlow.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useEffect, useRef } from 'react';\nimport { Header } from './components';\nimport { useOnboardingState } from './providers';\nimport {\n AmountInputScreen,\n AuthLoadingScreen,\n ChainSelectionScreen,\n ConnectWalletScreen,\n DepositProgressScreen,\n DepositSuccessScreen,\n ErrorScreen,\n EntrySelectionScreen,\n TurnkeyAuthScreen,\n TurnkeyPreparingScreen,\n} from './screens';\nimport { OnboardingContext, OnboardingStep } from './types';\nimport { withImageFallback } from './utils/withImageFallback';\n\ninterface OnboardingFlowProps {\n onClose?: () => void;\n}\n\n// Apply the withImageFallback HOC to all screen components\nconst EnhancedConnectWalletScreen = withImageFallback(ConnectWalletScreen);\nconst EnhancedChainSelectionScreen = withImageFallback(ChainSelectionScreen);\nconst EnhancedAmountInputScreen = withImageFallback(AmountInputScreen);\nconst EnhancedDepositProgressScreen = withImageFallback(DepositProgressScreen);\nconst EnhancedDepositSuccessScreen = withImageFallback(DepositSuccessScreen);\nconst EnhancedAuthLoadingScreen = withImageFallback(AuthLoadingScreen);\nconst EnhancedErrorScreen = withImageFallback(ErrorScreen);\nconst EnhancedTurnkeyAuthScreen = withImageFallback(TurnkeyAuthScreen);\nconst EnhancedTurnkeyPreparingScreen = withImageFallback(TurnkeyPreparingScreen);\nconst EnhancedEntrySelectionScreen = withImageFallback(EntrySelectionScreen);\n\ninterface HeaderDisplayConfig {\n title: string;\n backTarget?: {\n state: OnboardingStep;\n contextUpdates?: Partial<OnboardingContext>;\n };\n}\n\nconst DEFAULT_HEADER_CONFIG: HeaderDisplayConfig = { title: 'Bridge' };\n\nconst HEADER_CONFIG: Record<OnboardingStep, HeaderDisplayConfig> = {\n [OnboardingStep.ENTRY_SELECTION]: { title: 'Choose a wallet path' },\n [OnboardingStep.CONNECTING_WALLET]: {\n title: 'Connect Wallet',\n backTarget: {\n state: OnboardingStep.ENTRY_SELECTION,\n contextUpdates: { entryNetwork: null, selectedChain: null, selectedChainId: null, selectedChainNetwork: null },\n },\n },\n [OnboardingStep.TURNKEY_AUTH]: { title: 'Secure Turnkey Login' },\n [OnboardingStep.TURNKEY_PREPARING]: { title: 'Preparing Solana Wallet' },\n [OnboardingStep.CHAIN_SELECTION]: { title: 'Select Network' },\n [OnboardingStep.AMOUNT_INPUT]: {\n title: 'Enter Amount',\n backTarget: {\n state: OnboardingStep.CHAIN_SELECTION,\n contextUpdates: { selectedChain: null, amount: '' },\n },\n },\n [OnboardingStep.DEPOSIT_PROGRESS]: { title: 'Processing Deposit' },\n [OnboardingStep.DEPOSIT_SUCCESS]: { title: 'Deposit Complete' },\n [OnboardingStep.AUTH_LOADING]: { title: 'Authenticating' },\n [OnboardingStep.FINAL_SUCCESS]: { title: 'All Set' },\n [OnboardingStep.ERROR]: {\n title: 'Something Went Wrong',\n backTarget: {\n state: OnboardingStep.ENTRY_SELECTION,\n contextUpdates: {\n entryNetwork: null,\n selectedChain: null,\n selectedChainId: null,\n selectedChainNetwork: null,\n },\n },\n },\n};\n\n/**\n * Main component that renders the appropriate screen based on onboarding state.\n * Handles screen transitions, header configuration, and auto-closes on completion.\n */\nexport const OnboardingFlow: React.FC<OnboardingFlowProps> = ({ onClose }) => {\n const { state, actions, isClosing } = useOnboardingState();\n const shouldAutoClose = state === OnboardingStep.FINAL_SUCCESS;\n\n useEffect(() => {\n if (!shouldAutoClose) {\n return;\n }\n\n if (onClose) {\n onClose();\n }\n }, [shouldAutoClose, onClose]);\n\n if (shouldAutoClose) {\n return null;\n }\n\n const headerConfig = HEADER_CONFIG[state] || DEFAULT_HEADER_CONFIG;\n const backTarget = headerConfig.backTarget;\n const handleBack = backTarget\n ? () => {\n if (backTarget.contextUpdates) {\n actions.updateContext(backTarget.contextUpdates);\n }\n switch (backTarget.state) {\n case OnboardingStep.CHAIN_SELECTION:\n actions.goToChainSelection({ resetSelection: true });\n break;\n case OnboardingStep.ENTRY_SELECTION:\n actions.resetFlow();\n break;\n default:\n break;\n }\n }\n : undefined;\n\n return (\n <div\n className={`z-50 flex items-center justify-center overflow-auto font-era`}\n >\n <div\n className=\"bg-n1-ww-gray-700 relative border border-n1-ww-border rounded-[6px] transition-[max-width,transform,opacity] duration-[3000ms] ease-[cubic-bezier(0.16,1,0.3,1)] m-4 origin-center will-change-[max-width,transform,opacity]\"\n style={{ width: 400 }}\n >\n {/* Header */}\n <Header\n onClose={onClose}\n title={headerConfig.title}\n onBack={handleBack}\n />\n\n {/* Content */}\n <div className=\"wallet-connection-flow-content p-4 overflow-visible\">\n <OnboardingFlowScreenRenderer\n state={state}\n isClosing={isClosing}\n />\n </div>\n </div>\n </div>\n );\n};\n\n/**\n * Maps onboarding state to the corresponding screen component.\n */\nconst renderScreenForState = (state: OnboardingStep) => {\n switch (state) {\n case OnboardingStep.ENTRY_SELECTION:\n return <EnhancedEntrySelectionScreen />;\n case OnboardingStep.CONNECTING_WALLET:\n return <EnhancedConnectWalletScreen />;\n case OnboardingStep.TURNKEY_AUTH:\n return <EnhancedTurnkeyAuthScreen />;\n case OnboardingStep.TURNKEY_PREPARING:\n return <EnhancedTurnkeyPreparingScreen />;\n case OnboardingStep.CHAIN_SELECTION:\n return <EnhancedChainSelectionScreen />;\n case OnboardingStep.AMOUNT_INPUT:\n return <EnhancedAmountInputScreen />;\n case OnboardingStep.DEPOSIT_PROGRESS:\n return <EnhancedDepositProgressScreen />;\n case OnboardingStep.DEPOSIT_SUCCESS:\n return <EnhancedDepositSuccessScreen />;\n case OnboardingStep.AUTH_LOADING:\n return <EnhancedAuthLoadingScreen />;\n case OnboardingStep.ERROR:\n return <EnhancedErrorScreen />;\n default:\n return <EnhancedEntrySelectionScreen />;\n }\n};\n\n/**\n * Renders the active screen with fade animations.\n * Caches screen elements to prevent unnecessary re-renders during transitions.\n */\nconst OnboardingFlowScreenRenderer: React.FC<{\n state: OnboardingStep;\n isClosing: boolean;\n}> = ({ state, isClosing }) => {\n const cachedScreenRef = useRef<{\n state: OnboardingStep;\n element: React.ReactNode;\n }>({\n state,\n element: renderScreenForState(state),\n });\n\n if (cachedScreenRef.current.state !== state) {\n cachedScreenRef.current = {\n state,\n element: renderScreenForState(state),\n };\n }\n\n return (\n <div className={isClosing ? 'n1-ww-animate-fade-out' : 'n1-ww-animate-fade-in'}>\n {cachedScreenRef.current.element}\n </div>\n );\n};\n"]}
|
|
@@ -207,7 +207,6 @@ export var submitBridgeClaim = function (depositId, params) { return __awaiter(v
|
|
|
207
207
|
_a.trys.push([1, 3, , 4]);
|
|
208
208
|
payload = params;
|
|
209
209
|
url = "".concat(config.baseUrl, "/deposits/").concat(depositId, "/claim");
|
|
210
|
-
logger.info('[BridgeAssist] Submitting claim', { url: url, depositId: depositId, payloadKeys: Object.keys(payload) });
|
|
211
210
|
return [4 /*yield*/, fetch(url, {
|
|
212
211
|
method: 'POST',
|
|
213
212
|
headers: {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/bridge-assist/client.ts"],"names":[],"mappings":"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","sourcesContent":["import { BridgeAssistError } from './types';\nimport { getBridgeAssistConfig } from './config';\nimport { logger } from '../../../utils/logger';\nimport { createDepositError } from '../../../utils/errors';\nimport type { PendingDepositStage } from '../utils/deposit/storage';\n\nexport interface BridgeAssistStatus {\n stage: PendingDepositStage;\n tx?: string | null;\n reason?: string | null;\n bridgeTx?: string | null;\n solanaTx?: string | null;\n mintTx?: string | null;\n attestationId?: string | null;\n depositId?: string | null;\n}\n\nconst mapStage = (stage: string | null | undefined): PendingDepositStage => {\n const s = (stage ?? '').toLowerCase();\n if (s === 'failed' || s === 'error') return 'failed';\n if (s === 'confirmed' || s === 'complete' || s === 'completed') return 'solana_confirmed';\n if (s === 'submitted' || s === 'processing' || s === 'pending') return 'solana_submitted';\n // Fallback to initiated if unknown\n return 'initiated';\n};\n\nconst handleResponse = async (response: Response): Promise<any> => {\n if (!response.ok) {\n let errorMessage = response.statusText;\n let retryAfter: number | undefined;\n\n const retryHeader = response.headers.get('Retry-After');\n if (retryHeader) {\n retryAfter = parseInt(retryHeader, 10);\n }\n\n try {\n const errorBody = await response.json();\n if (errorBody.message) {\n errorMessage = errorBody.message;\n } else if (errorBody.error) {\n errorMessage = errorBody.error;\n } else if (Array.isArray(errorBody.errors) && errorBody.errors.length) {\n errorMessage = errorBody.errors.join(', ');\n }\n } catch {\n // ignore json parse error\n }\n throw new BridgeAssistError(errorMessage, response.status, retryAfter);\n }\n return response.json();\n};\n\nexport const createBridgeDeposit = async (\n params: {\n wallet: string;\n chain: string;\n solanaAddress: string;\n amount: string;\n bridgeTx: string;\n depositId?: string;\n attestationId?: string | null;\n }\n): Promise<BridgeAssistStatus | null> => {\n const config = getBridgeAssistConfig();\n if (!config) return null;\n try {\n const response = await fetch(`${config.baseUrl}/deposits`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': config.apiKey || '',\n },\n body: JSON.stringify(params)\n });\n const body = await handleResponse(response);\n const stage = mapStage(body?.stage);\n return {\n stage,\n tx: body?.tx ?? body?.solanaTx ?? null,\n bridgeTx: body?.bridgeTx ?? params.bridgeTx ?? null,\n solanaTx: body?.solanaTx ?? body?.tx ?? null,\n attestationId: body?.attestationId ?? params.attestationId ?? null,\n depositId: body?.depositId ?? params.depositId ?? null,\n reason: body?.reason ?? null,\n };\n } catch (error) {\n logger.logError(createDepositError('BRIDGE_FAILED', 'Failed to create bridge deposit', {\n cause: error instanceof Error ? error : undefined,\n }));\n throw error;\n }\n}\n\nexport const fetchBridgeStatus = async (depositId: string): Promise<BridgeAssistStatus | null> => {\n const config = getBridgeAssistConfig();\n if (!config) return null;\n if (!depositId) return null;\n try {\n const response = await fetch(`${config.baseUrl}/deposits/${depositId}`, {\n method: 'GET',\n headers: {\n 'x-api-key': config.apiKey || '',\n },\n });\n if (response.status === 404) {\n return null;\n }\n const body = await handleResponse(response);\n const stage = mapStage(body?.stage);\n return {\n stage,\n tx: body?.solanaTx ?? body?.tx ?? null,\n bridgeTx: body?.bridgeTx ?? null,\n solanaTx: body?.solanaTx ?? null,\n mintTx: body?.mintTx ?? null,\n attestationId: body?.attestationId ?? null,\n depositId: body?.depositId ?? depositId,\n reason: body?.reason ?? null,\n };\n } catch (error) {\n logger.logError(createDepositError('BRIDGE_FAILED', 'Failed to fetch bridge status', {\n cause: error instanceof Error ? error : undefined,\n context: { depositId },\n }));\n throw error;\n }\n};\n\nexport const submitBridgeClaim = async (\n depositId: string,\n params: {\n solanaTx?: string;\n message?: string;\n attestation?: string;\n sourceChain?: string;\n destinationAddress?: string;\n blockhash?: string;\n lastValidBlockHeight?: number;\n lookupTableAddress?: string;\n userSignature?: string;\n txHash?: string;\n }\n): Promise<{\n tx?: string;\n requiresUserSignature?: boolean;\n stage?: string;\n blockhash?: string;\n lastValidBlockHeight?: number;\n lookupTableAddress?: string;\n signedTx?: string;\n} | null> => {\n const config = getBridgeAssistConfig();\n if (!config) return null;\n\n if (!depositId) throw new Error('Missing depositId for submitBridgeClaim');\n if (!params.message) throw new Error('Missing message for submitBridgeClaim');\n if (!params.attestation) throw new Error('Missing attestation for submitBridgeClaim');\n if (!params.sourceChain) throw new Error('Missing sourceChain for submitBridgeClaim');\n if (!params.destinationAddress) throw new Error('Missing destinationAddress for submitBridgeClaim');\n if (!params.userSignature) throw new Error('Missing userSignature for submitBridgeClaim');\n if (!params.txHash) throw new Error('Missing txHash (hash of signed tx) for submitBridgeClaim');\n\n try {\n // Single-request flow: always send full payload\n const payload = params;\n const url = `${config.baseUrl}/deposits/${depositId}/claim`;\n\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': config.apiKey || '',\n },\n body: JSON.stringify(payload)\n });\n return handleResponse(response);\n } catch (error) {\n logger.logError(createDepositError('CLAIM_FAILED', 'Failed to submit bridge claim', {\n cause: error instanceof Error ? error : undefined,\n context: { depositId },\n }));\n throw error;\n }\n}\n\nexport const fetchServerFeePayer = async (): Promise<string | null> => {\n const config = getBridgeAssistConfig();\n if (!config) return null;\n try {\n const response = await fetch(`${config.baseUrl}/health`, {\n method: 'GET',\n headers: {\n 'x-api-key': config.apiKey || '',\n }\n });\n const data = await handleResponse(response);\n return data.feePayer || null;\n } catch (error) {\n logger.logError(createDepositError('BRIDGE_FAILED', 'Failed to fetch server fee payer', {\n cause: error instanceof Error ? error : undefined,\n }));\n // Surface a clear, typed error for callers so UI can show \"server not available\" and retry.\n // Network/CORS failures typically land here with no HTTP status.\n throw new BridgeAssistError('Bridge Assist server is not available', undefined);\n }\n}\n\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/bridge-assist/config.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,IAAM,qBAAqB,GAAG;IACnC,oDAAoD;IACpD,IAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAC3F,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QACnC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,iCAAiC,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB;KAC3F,CAAC;AACJ,CAAC,CAAC","sourcesContent":["export const getBridgeAssistConfig = (): { baseUrl: string; apiKey?: string } | null => {\n // Support both server-side and client-side env vars\n const baseUrl = process.env.NEXT_PUBLIC_BRIDGE_ASSIST_URL || process.env.BRIDGE_ASSIST_URL;\n if (!baseUrl) return null;\n return {\n baseUrl: baseUrl.replace(/\\/$/, ''),\n apiKey: process.env.NEXT_PUBLIC_BRIDGE_ASSIST_API_KEY || process.env.BRIDGE_ASSIST_API_KEY,\n };\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/bridge-assist/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC","sourcesContent":["export { submitBridgeClaim, fetchServerFeePayer, createBridgeDeposit, fetchBridgeStatus } from './client';\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/bridge-assist/types.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA;IAAuC,qCAAK;IAC1C,2BACE,OAAe,EACR,MAAe,EACf,UAAmB;QAE1B,YAAA,MAAK,YAAC,OAAO,CAAC,SAAC;QAHR,YAAM,GAAN,MAAM,CAAS;QACf,gBAAU,GAAV,UAAU,CAAS;QAG1B,KAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;;IAClC,CAAC;IACH,wBAAC;AAAD,CAAC,AATD,CAAuC,KAAK,GAS3C","sourcesContent":["export class BridgeAssistError extends Error {\n constructor(\n message: string,\n public status?: number,\n public retryAfter?: number\n ) {\n super(message);\n this.name = 'BridgeAssistError';\n }\n}\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { CctpBridgeParams, CctpBridgeResult, CctpClient, CctpConfirmationResult } from './types';
|
|
2
2
|
/**
|
|
3
3
|
* Maps normalized chain names to BridgeKit's chain definition objects.
|
|
4
|
+
* Returns mainnet or testnet chains based on NEXT_PUBLIC_TESTNET env var.
|
|
4
5
|
*/
|
|
5
6
|
export declare const mapChainToBridgeKit: (chain: string) => any;
|
|
6
7
|
export declare const getDomain: (chain: any) => number | undefined;
|
|
@@ -39,7 +39,9 @@ import { createDepositError, createNetworkError } from '../../../utils/errors';
|
|
|
39
39
|
import { explorerBaseForChain } from '../utils/explorerUrl';
|
|
40
40
|
import { BridgeKit } from '@circle-fin/bridge-kit';
|
|
41
41
|
import { createAdapterFromProvider } from '@circle-fin/adapter-viem-v2';
|
|
42
|
-
import { SolanaDevnet, ArbitrumSepolia, BaseSepolia, EthereumSepolia } from '@circle-fin/bridge-kit/chains';
|
|
42
|
+
import { SolanaDevnet, ArbitrumSepolia, BaseSepolia, EthereumSepolia, Solana, Arbitrum, Base, Ethereum, } from '@circle-fin/bridge-kit/chains';
|
|
43
|
+
// Network selection based on NEXT_PUBLIC_TESTNET env var (default: true for testnet)
|
|
44
|
+
var isTestnet = process.env.NEXT_PUBLIC_TESTNET !== 'false';
|
|
43
45
|
var findExplorerUrl = function (steps) {
|
|
44
46
|
var _a;
|
|
45
47
|
var withUrl = steps.find(function (s) { return s.explorerUrl; });
|
|
@@ -47,6 +49,7 @@ var findExplorerUrl = function (steps) {
|
|
|
47
49
|
};
|
|
48
50
|
/**
|
|
49
51
|
* Maps normalized chain names to BridgeKit's chain definition objects.
|
|
52
|
+
* Returns mainnet or testnet chains based on NEXT_PUBLIC_TESTNET env var.
|
|
50
53
|
*/
|
|
51
54
|
export var mapChainToBridgeKit = function (chain) {
|
|
52
55
|
if (!chain || typeof chain !== 'string') {
|
|
@@ -61,16 +64,16 @@ export var mapChainToBridgeKit = function (chain) {
|
|
|
61
64
|
throw new Error('Chain identifier cannot be empty.');
|
|
62
65
|
}
|
|
63
66
|
if (lower === 'arbitrum' || lower === 'arb') {
|
|
64
|
-
return ArbitrumSepolia;
|
|
67
|
+
return isTestnet ? ArbitrumSepolia : Arbitrum;
|
|
65
68
|
}
|
|
66
69
|
if (lower === 'solana') {
|
|
67
|
-
return SolanaDevnet;
|
|
70
|
+
return isTestnet ? SolanaDevnet : Solana;
|
|
68
71
|
}
|
|
69
72
|
if (lower === 'base') {
|
|
70
|
-
return BaseSepolia;
|
|
73
|
+
return isTestnet ? BaseSepolia : Base;
|
|
71
74
|
}
|
|
72
75
|
if (lower === 'ethereum' || lower === 'evm') {
|
|
73
|
-
return EthereumSepolia;
|
|
76
|
+
return isTestnet ? EthereumSepolia : Ethereum;
|
|
74
77
|
}
|
|
75
78
|
// For other chains, log a warning and throw an error instead of returning as-is
|
|
76
79
|
// This helps catch configuration issues early
|
|
@@ -176,7 +179,8 @@ var BridgeKitClient = /** @class */ (function () {
|
|
|
176
179
|
return [2 /*return*/, mappedToChain_1];
|
|
177
180
|
}); }); },
|
|
178
181
|
capabilities: {
|
|
179
|
-
|
|
182
|
+
// We control the destination address here; Bridge Kit may include it in contexts.
|
|
183
|
+
addressContext: 'developer-controlled',
|
|
180
184
|
supportedChains: [mappedToChain_1],
|
|
181
185
|
},
|
|
182
186
|
actionRegistry: {},
|
|
@@ -186,9 +190,45 @@ var BridgeKitClient = /** @class */ (function () {
|
|
|
186
190
|
args[_i] = arguments[_i];
|
|
187
191
|
}
|
|
188
192
|
return __awaiter(_this, void 0, void 0, function () {
|
|
193
|
+
var action;
|
|
194
|
+
var _this = this;
|
|
189
195
|
return __generator(this, function (_a) {
|
|
196
|
+
// Expected usage in Bridge Kit v1.5+: prepareAction("native.balanceOf", { walletAddress }, ctx)
|
|
190
197
|
logger.debug('[CCTP] prepareAction', { args: args });
|
|
191
|
-
|
|
198
|
+
action = args === null || args === void 0 ? void 0 : args[0];
|
|
199
|
+
if (action === 'native.balanceOf') {
|
|
200
|
+
// Return a large synthetic balance (lamports) so preflight passes.
|
|
201
|
+
// We do not rely on destination native balance for our flow since we claim via Bridge Assist.
|
|
202
|
+
return [2 /*return*/, {
|
|
203
|
+
estimate: function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
204
|
+
return [2 /*return*/, ({ gas: BigInt(0), gasPrice: BigInt(0), fee: '0' })];
|
|
205
|
+
}); }); },
|
|
206
|
+
execute: function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
207
|
+
return [2 /*return*/, BigInt('10000000000')];
|
|
208
|
+
}); }); },
|
|
209
|
+
}];
|
|
210
|
+
}
|
|
211
|
+
if (action === 'usdc.balanceOf') {
|
|
212
|
+
return [2 /*return*/, {
|
|
213
|
+
estimate: function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
214
|
+
return [2 /*return*/, ({ gas: BigInt(0), gasPrice: BigInt(0), fee: '0' })];
|
|
215
|
+
}); }); },
|
|
216
|
+
execute: function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
217
|
+
return [2 /*return*/, BigInt(0)];
|
|
218
|
+
}); }); },
|
|
219
|
+
}];
|
|
220
|
+
}
|
|
221
|
+
// Unknown action: surface a recoverable error via the execute path
|
|
222
|
+
return [2 /*return*/, {
|
|
223
|
+
estimate: function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
224
|
+
return [2 /*return*/, ({ gas: BigInt(0), gasPrice: BigInt(0), fee: '0' })];
|
|
225
|
+
}); }); },
|
|
226
|
+
execute: function () { return __awaiter(_this, void 0, void 0, function () {
|
|
227
|
+
return __generator(this, function (_a) {
|
|
228
|
+
throw new Error("Destination adapter does not support action \"".concat(String(action), "\""));
|
|
229
|
+
});
|
|
230
|
+
}); },
|
|
231
|
+
}];
|
|
192
232
|
});
|
|
193
233
|
});
|
|
194
234
|
},
|
|
@@ -198,9 +238,21 @@ var BridgeKitClient = /** @class */ (function () {
|
|
|
198
238
|
args[_i] = arguments[_i];
|
|
199
239
|
}
|
|
200
240
|
return __awaiter(_this, void 0, void 0, function () {
|
|
241
|
+
var _this = this;
|
|
201
242
|
return __generator(this, function (_a) {
|
|
202
243
|
logger.debug('[CCTP] prepare', { args: args });
|
|
203
|
-
throw
|
|
244
|
+
// Do not throw here; return a prepared request so Bridge Kit can
|
|
245
|
+
// mark the destination step as failed during execute (recoverable).
|
|
246
|
+
return [2 /*return*/, {
|
|
247
|
+
estimate: function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
248
|
+
return [2 /*return*/, ({ gas: BigInt(0), gasPrice: BigInt(0), fee: '0' })];
|
|
249
|
+
}); }); },
|
|
250
|
+
execute: function () { return __awaiter(_this, void 0, void 0, function () {
|
|
251
|
+
return __generator(this, function (_a) {
|
|
252
|
+
throw new Error('Destination adapter is read-only (mint not supported)');
|
|
253
|
+
});
|
|
254
|
+
}); },
|
|
255
|
+
}];
|
|
204
256
|
});
|
|
205
257
|
});
|
|
206
258
|
},
|
|
@@ -212,7 +264,7 @@ var BridgeKitClient = /** @class */ (function () {
|
|
|
212
264
|
return __awaiter(_this, void 0, void 0, function () {
|
|
213
265
|
return __generator(this, function (_a) {
|
|
214
266
|
logger.debug('[CCTP] waitForTransaction', { args: args });
|
|
215
|
-
throw new Error('Destination adapter is not
|
|
267
|
+
throw new Error('Destination adapter is read-only (waitForTransaction not supported)');
|
|
216
268
|
});
|
|
217
269
|
});
|
|
218
270
|
},
|
|
@@ -236,6 +288,9 @@ var BridgeKitClient = /** @class */ (function () {
|
|
|
236
288
|
});
|
|
237
289
|
});
|
|
238
290
|
},
|
|
291
|
+
calculateTransactionFee: function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
292
|
+
return [2 /*return*/, BigInt(0)];
|
|
293
|
+
}); }); },
|
|
239
294
|
};
|
|
240
295
|
// Listen to all events to debug/find the right one
|
|
241
296
|
kit.on('*', function (payload) {
|
|
@@ -251,7 +306,10 @@ var BridgeKitClient = /** @class */ (function () {
|
|
|
251
306
|
adapter: dummyDestAdapter,
|
|
252
307
|
chain: mappedToChain_1,
|
|
253
308
|
recipientAddress: params.destinationAddress,
|
|
254
|
-
|
|
309
|
+
// Bridge Kit requires `address` when the adapter is developer-controlled.
|
|
310
|
+
// Without it, preflight throws:
|
|
311
|
+
// "Address is required in context for developer-controlled adapters..."
|
|
312
|
+
address: params.destinationAddress,
|
|
255
313
|
},
|
|
256
314
|
})];
|
|
257
315
|
case 7:
|
|
@@ -314,7 +372,7 @@ var BridgeKitClient = /** @class */ (function () {
|
|
|
314
372
|
};
|
|
315
373
|
BridgeKitClient.prototype.getAttestation = function (txHash, fromChain) {
|
|
316
374
|
return __awaiter(this, void 0, void 0, function () {
|
|
317
|
-
var mappedChain, domain, baseUrl, response, data, messageData, error_2;
|
|
375
|
+
var mappedChain, domain, defaultIrisUrl, baseUrl, response, data, messageData, error_2;
|
|
318
376
|
var _a, _b;
|
|
319
377
|
return __generator(this, function (_c) {
|
|
320
378
|
switch (_c.label) {
|
|
@@ -325,7 +383,8 @@ var BridgeKitClient = /** @class */ (function () {
|
|
|
325
383
|
if (domain === undefined) {
|
|
326
384
|
throw new Error("Domain not found for chain ".concat(fromChain));
|
|
327
385
|
}
|
|
328
|
-
|
|
386
|
+
defaultIrisUrl = isTestnet ? 'https://iris-api-sandbox.circle.com' : 'https://iris-api.circle.com';
|
|
387
|
+
baseUrl = process.env.NEXT_PUBLIC_CIRCLE_IRIS_API_URL || defaultIrisUrl;
|
|
329
388
|
logger.info('[CCTP] Fetching from Iris API', {
|
|
330
389
|
url: "".concat(baseUrl, "/v2/messages/").concat(domain, "?transactionHash=").concat(txHash),
|
|
331
390
|
domain: domain,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridgeKitClient.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/cctp/bridgeKitClient.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n CctpBridgeParams,\n CctpBridgeResult,\n CctpClient,\n CctpConfirmationResult,\n} from './types';\nimport { logger } from '../../../utils/logger';\nimport { EVENTS, createDepositEvent } from '../../../utils/events';\nimport { createDepositError, createNetworkError } from '../../../utils/errors';\nimport { explorerBaseForChain } from '../utils/explorerUrl';\nimport { BridgeKit } from '@circle-fin/bridge-kit';\nimport { createAdapterFromProvider } from '@circle-fin/adapter-viem-v2';\nimport {\n SolanaDevnet,\n ArbitrumSepolia,\n BaseSepolia,\n EthereumSepolia,\n Solana,\n Arbitrum,\n Base,\n Ethereum,\n} from '@circle-fin/bridge-kit/chains';\n\n// Network selection based on NEXT_PUBLIC_TESTNET env var (default: true for testnet)\nconst isTestnet = process.env.NEXT_PUBLIC_TESTNET !== 'false';\n\ninterface BridgeStep {\n name?: string;\n state?: string;\n txHash?: string;\n explorerUrl?: string;\n data?: {\n attestationId?: string;\n txHash?: string;\n status?: string;\n txIndex?: number;\n attestation?: string;\n message?: string;\n };\n}\n\ninterface BridgeResponse {\n steps?: BridgeStep[];\n}\n\nconst findExplorerUrl = (steps: BridgeStep[]): string | null => {\n const withUrl = steps.find((s) => s.explorerUrl);\n return withUrl?.explorerUrl ?? null;\n};\n\n/**\n * Maps normalized chain names to BridgeKit's chain definition objects.\n * Returns mainnet or testnet chains based on NEXT_PUBLIC_TESTNET env var.\n */\nexport const mapChainToBridgeKit = (chain: string): any => {\n if (!chain || typeof chain !== 'string') {\n logger.logError(createNetworkError('CHAIN_UNSUPPORTED', `Invalid chain identifier: ${chain}`, {\n context: { chain },\n }));\n throw new Error(`Invalid chain identifier: ${chain}. Expected a valid chain name string.`);\n }\n\n const lower = chain.toLowerCase().trim();\n if (!lower) {\n logger.logError(createNetworkError('CHAIN_UNSUPPORTED', 'Empty chain string provided'));\n throw new Error('Chain identifier cannot be empty.');\n }\n\n if (lower === 'arbitrum' || lower === 'arb') {\n return isTestnet ? ArbitrumSepolia : Arbitrum;\n }\n if (lower === 'solana') {\n return isTestnet ? SolanaDevnet : Solana;\n }\n if (lower === 'base') {\n return isTestnet ? BaseSepolia : Base;\n }\n if (lower === 'ethereum' || lower === 'evm') {\n return isTestnet ? EthereumSepolia : Ethereum;\n }\n\n // For other chains, log a warning and throw an error instead of returning as-is\n // This helps catch configuration issues early\n logger.logError(createNetworkError('CHAIN_UNSUPPORTED', `Unsupported chain \"${chain}\"`, {\n context: { chain, lower },\n }));\n throw new Error(`Unsupported chain \"${chain}\". Supported chains: arbitrum, base, ethereum, solana`);\n};\n\nexport const getDomain = (chain: any): number | undefined => {\n return chain?.cctp?.domain;\n}\n\n/**\n * Bridge Kit client wrapper. Keeps network interactions isolated for auditability.\n */\nexport class BridgeKitClient implements CctpClient {\n /**\n * Parses Bridge Kit response to extract transaction hashes and attestation ID.\n * Handles variations in step naming and falls back to timestamp-based deposit ID if needed.\n */\n private parseSubmitResponse(response: BridgeResponse): CctpBridgeResult {\n const steps = response.steps ?? [];\n const approve = steps.find((s) => s.name === 'approve' || s.name === 'APPROVE');\n const burn = steps.find((s) => s.name === 'burn' || s.name === 'BURN' || s.name === 'bridge');\n // FIX: Do NOT fall back to approve.txHash. We need the burn/bridge tx for attestation.\n // If burn is missing, we shouldn't consider this a successful bridge submission.\n const bridgeTxId = burn?.txHash ?? burn?.data?.txHash ?? '';\n const attestationId = burn?.data?.attestationId ?? null;\n const explorerUrl =\n burn?.explorerUrl ??\n approve?.explorerUrl ??\n findExplorerUrl(steps) ??\n (bridgeTxId ? `${explorerBaseForChain('ethereum') ?? ''}/${bridgeTxId}` : null);\n\n // If we have no bridge transaction hash, we can't proceed with CCTP flow.\n // This happens if the user approved but rejected the burn, or if bridge-kit failed to capture it.\n if (!bridgeTxId) {\n const stepNames = steps.map((s) => s.name).join(', ');\n logger.logError(createDepositError('BRIDGE_FAILED', 'Missing bridge (burn) tx hash in Bridge Kit response', {\n context: { stepNames },\n }));\n // Throwing here triggers the cleanup in useBridgeDeposit\n throw new Error('Bridge transaction failed: No burn transaction found. Please try again.');\n }\n\n const depositId = bridgeTxId;\n\n return {\n bridgeTxId,\n depositId,\n attestationId,\n explorerUrl,\n };\n }\n\n async submitBridge(params: CctpBridgeParams): Promise<CctpBridgeResult> {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n\n if (!params.wallet) {\n throw new Error('Wallet client is required for CCTP bridge submission');\n }\n\n try {\n // Initialize SDK\n const kit = new BridgeKit();\n\n // Map chains to BridgeKit's expected format\n const mappedFromChain = mapChainToBridgeKit(params.fromChain);\n const mappedToChain = mapChainToBridgeKit(params.toChain);\n\n // Ensure we are on the correct source chain (for EVM)\n if (mappedFromChain && typeof mappedFromChain === 'object' && mappedFromChain.type === 'evm' && 'chainId' in mappedFromChain) {\n const targetChainId = mappedFromChain.chainId;\n if (params.wallet && typeof params.wallet.request === 'function') {\n try {\n const currentChainIdHex = await params.wallet.request({ method: 'eth_chainId' });\n const currentChainId = parseInt(currentChainIdHex, 16);\n\n // Only check, but don't try to switch here since Dynamic should have handled it.\n // If we are still on the wrong chain, log a warning and let it fail (or maybe Dynamic is still updating).\n if (currentChainId !== targetChainId) {\n logger.warn(`[CCTP] Chain mismatch detected in BridgeKitClient. Expected ${targetChainId}, got ${currentChainId}. Dynamic switch might have failed or is pending.`);\n\n // Optional: We could wait a bit more here if we think it's just a race condition\n // await new Promise(resolve => setTimeout(resolve, 2000));\n } else {\n logger.info('[CCTP] Chain check passed');\n }\n } catch (checkErr) {\n logger.warn('[CCTP] Failed to check chain ID', checkErr);\n }\n }\n }\n\n // Initialize Viem adapter\n // Expects params.wallet to be an EIP1193Provider\n // @ts-ignore - Viem adapter types might mismatch\n const sourceAdapter = await createAdapterFromProvider({ provider: params.wallet });\n\n // Create a minimal *read-only* destination adapter to satisfy BridgeKit validation.\n //\n // Bridge Kit v1.5+ will call `prepareAction(\"native.balanceOf\")` on the destination\n // adapter as part of preflight checks. Previously we threw here, which causes the\n // bridge to fail before \"burn\" is submitted.\n //\n // This adapter intentionally does NOT sign or send Solana transactions. If Bridge Kit\n // attempts to execute the destination-side \"mint\" step, that step should fail in a\n // recoverable way (BridgeResult.state === \"error\") while still returning the successful\n // \"approve\"/\"burn\" step tx hashes.\n const dummyDestAdapter = {\n chainType: 'solana' as const,\n getAddress: async () => params.destinationAddress,\n getChain: async () => mappedToChain,\n capabilities: {\n // We control the destination address here; Bridge Kit may include it in contexts.\n addressContext: 'developer-controlled' as const,\n supportedChains: [mappedToChain],\n },\n actionRegistry: {} as any,\n prepareAction: async (...args: any[]) => {\n // Expected usage in Bridge Kit v1.5+: prepareAction(\"native.balanceOf\", { walletAddress }, ctx)\n logger.debug('[CCTP] prepareAction', { args });\n\n const action = args?.[0];\n if (action === 'native.balanceOf') {\n // Return a large synthetic balance (lamports) so preflight passes.\n // We do not rely on destination native balance for our flow since we claim via Bridge Assist.\n return {\n estimate: async () => ({ gas: BigInt(0), gasPrice: BigInt(0), fee: '0' }),\n execute: async () => BigInt('10000000000'),\n };\n }\n\n if (action === 'usdc.balanceOf') {\n return {\n estimate: async () => ({ gas: BigInt(0), gasPrice: BigInt(0), fee: '0' }),\n execute: async () => BigInt(0),\n };\n }\n\n // Unknown action: surface a recoverable error via the execute path\n return {\n estimate: async () => ({ gas: BigInt(0), gasPrice: BigInt(0), fee: '0' }),\n execute: async () => {\n throw new Error(`Destination adapter does not support action \"${String(action)}\"`);\n },\n };\n },\n prepare: async (...args: any[]) => {\n logger.debug('[CCTP] prepare', { args });\n // Do not throw here; return a prepared request so Bridge Kit can\n // mark the destination step as failed during execute (recoverable).\n return {\n estimate: async () => ({ gas: BigInt(0), gasPrice: BigInt(0), fee: '0' }),\n execute: async () => {\n throw new Error('Destination adapter is read-only (mint not supported)');\n },\n };\n },\n waitForTransaction: async (...args: any[]) => {\n logger.debug('[CCTP] waitForTransaction', { args });\n throw new Error('Destination adapter is read-only (waitForTransaction not supported)');\n },\n validateChainSupport: (...args: any[]) => {\n logger.debug('[CCTP] validateChainSupport', { args });\n return;\n },\n switchToChain: async (...args: any[]) => {\n logger.debug('[CCTP] switchToChain', { args });\n return;\n },\n calculateTransactionFee: async () => BigInt(0),\n } as any;\n\n // Listen to all events to debug/find the right one\n kit.on('*', (payload: any) => {\n logger.debug('[CCTP] Bridge event', payload);\n });\n\n // We wrap the bridge call to allow capturing state changes\n const bridgePromise = await kit.bridge({\n amount: params.amount,\n from: {\n adapter: sourceAdapter,\n chain: mappedFromChain,\n },\n to: {\n adapter: dummyDestAdapter,\n chain: mappedToChain,\n recipientAddress: params.destinationAddress,\n // Bridge Kit requires `address` when the adapter is developer-controlled.\n // Without it, preflight throws:\n // \"Address is required in context for developer-controlled adapters...\"\n address: params.destinationAddress,\n },\n });\n\n // We await the result, assuming BridgeKit handles the flow. \n // If it fails at minting (due to dummy adapter), we should catch it but checking if we have burn tx.\n let result: any;\n try {\n result = await bridgePromise;\n logger.info('[CCTP] Bridge result:', JSON.stringify(result, (key, value) =>\n typeof value === 'bigint'\n ? value.toString()\n : value // return everything else unchanged\n , 2));\n } catch (bridgeError) {\n // If we crashed, check if we at least got the burn tx\n // But we can't easily inspect intermediate state from here unless we captured it via events\n // For now, rethrow if we don't have a partial result mechanism\n logger.warn('[CCTP] Bridge call failed, possibly at mint stage', bridgeError);\n throw bridgeError;\n }\n\n return this.parseSubmitResponse(result);\n } catch (error) {\n const message =\n (error as { message?: string })?.message ?? 'CCTP bridge submission failed';\n logger.logError(createDepositError('BRIDGE_FAILED', message, {\n cause: error instanceof Error ? error : undefined,\n context: {\n fromChain: params.fromChain,\n toChain: params.toChain,\n amount: params.amount,\n },\n }));\n throw new Error(message);\n }\n }\n\n async waitForConfirmation(\n bridgeTxId: string,\n attestationId?: string | null\n ): Promise<CctpConfirmationResult> {\n // Fallback implementation since getAttestation is not directly exposed.\n // We assume if bridge returned successfully (in submitBridge), we might have mint info.\n // But if we are polling after page reload, we don't have the kit instance.\n\n // TODO: Implement direct Circle API check for attestation status if needed.\n // https://iris-api.circle.com/v1/attestations/{txHash}\n\n // Return partial result to allow UI to show \"Bridge Submitted\"\n return {\n mintTxId: attestationId ?? bridgeTxId,\n explorerUrl: bridgeTxId ? `${explorerBaseForChain('ethereum') ?? ''}/${bridgeTxId}` : null\n };\n }\n\n async getAttestation(txHash: string, fromChain: string): Promise<{\n attestation: string;\n message: string;\n decodedMessage?: {\n sourceDomain: string;\n destinationDomain: string;\n nonce: string;\n sender: string;\n recipient: string;\n decodedMessageBody?: {\n mintRecipient?: string;\n amount?: string;\n burnToken?: string;\n messageSender?: string;\n };\n };\n } | null> {\n try {\n const mappedChain = mapChainToBridgeKit(fromChain);\n const domain = getDomain(mappedChain);\n\n if (domain === undefined) {\n throw new Error(`Domain not found for chain ${fromChain}`);\n }\n\n // Circle Iris API - mainnet vs testnet\n // Using Iris API v2 endpoint: https://iris-api.circle.com/v2/messages/{domain}?transactionHash={txHash}\n // sourceDomainId mapping: 0 for Ethereum, 3 for Arbitrum, 6 for Base\n const defaultIrisUrl = isTestnet ? 'https://iris-api-sandbox.circle.com' : 'https://iris-api.circle.com';\n const baseUrl = process.env.NEXT_PUBLIC_CIRCLE_IRIS_API_URL || defaultIrisUrl;\n\n logger.info('[CCTP] Fetching from Iris API', {\n url: `${baseUrl}/v2/messages/${domain}?transactionHash=${txHash}`,\n domain,\n txHash,\n fromChain,\n });\n\n const response = await fetch(`${baseUrl}/v2/messages/${domain}?transactionHash=${txHash}`);\n if (!response.ok) {\n logger.warn('[CCTP] Iris API response not ok', {\n status: response.status,\n statusText: response.statusText,\n });\n return null;\n }\n const data = await response.json();\n const messageData = data.messages?.[0];\n\n if (messageData && messageData.attestation && messageData.message && messageData.status === 'complete') {\n logger.info('[CCTP] Iris API data retrieved', {\n hasAttestation: !!messageData.attestation,\n hasMessage: !!messageData.message,\n hasDecodedMessage: !!messageData.decodedMessage,\n decodedMessageBody: messageData.decodedMessage?.decodedMessageBody,\n });\n\n return {\n attestation: messageData.attestation,\n message: messageData.message,\n decodedMessage: messageData.decodedMessage ? {\n sourceDomain: messageData.decodedMessage.sourceDomain,\n destinationDomain: messageData.decodedMessage.destinationDomain,\n nonce: messageData.decodedMessage.nonce,\n sender: messageData.decodedMessage.sender,\n recipient: messageData.decodedMessage.recipient,\n decodedMessageBody: messageData.decodedMessage.decodedMessageBody,\n } : undefined,\n };\n }\n\n logger.warn('[CCTP] Message data incomplete or not ready', {\n hasMessageData: !!messageData,\n status: messageData?.status,\n hasAttestation: !!messageData?.attestation,\n hasMessage: !!messageData?.message,\n });\n return null;\n } catch (error) {\n logger.logError(createNetworkError('RPC_FAILED', 'Failed to fetch attestation from Iris API', {\n cause: error instanceof Error ? error : undefined,\n context: { txHash, fromChain },\n }));\n return null;\n }\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clientFactory.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/cctp/clientFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD;;;GAGG;AACH,MAAM,CAAC,IAAM,aAAa,GAAG,UAAC,MAAmB;IAC/C,OAAO,IAAI,eAAe,EAAE,CAAC;AAC/B,CAAC,CAAC","sourcesContent":["import { BridgeKitClient } from './bridgeKitClient';\nimport type { CctpClient, CctpConfig } from './types';\n\n/**\n * Returns a CCTP client. By default uses the mock client unless explicitly\n * enabled and not opted out via env, keeping audit boundaries clear.\n */\nexport const getCctpClient = (config?: CctpConfig): CctpClient => {\n return new BridgeKitClient();\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/cctp/config.ts"],"names":[],"mappings":";;;;;;;;;;;AAEA;;GAEG;AACH,IAAM,OAAO,GAAG,UAAC,KAAqB;IACpC,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,SAAS,CAAC;IACpC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAC1E,CAAC,CAAC;AAEF;;GAEG;AACH,IAAM,UAAU,GAAG,UAAC,KAAqB;IACvC,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,IAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACtD,CAAC,CAAC;AAaF,IAAM,SAAS,GAAG,UAAC,KAAqB;IACtC,OAAA,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,EAAE,EAAR,CAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;AAAzE,CAAyE,CAAC;AAE5E;;;GAGG;AACH,MAAM,CAAC,IAAM,oBAAoB,GAAG,UAAC,SAAsC;;IACzE,IAAM,IAAI,GAAsB;QAC9B,OAAO,EAAE,MAAA,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,mCAAI,KAAK;QACtE,OAAO,EAAE,MAAA,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,mCAAI,IAAI;QACtE,SAAS,EAAE,MAAA,OAAO,CAAC,GAAG,CAAC,6BAA6B,mCAAI,UAAU;QAClE,OAAO,EAAE,MAAA,OAAO,CAAC,GAAG,CAAC,2BAA2B,mCAAI,QAAQ;QAC5D,8EAA8E;QAC9E,SAAS,EAAE,MAAA,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,mCAAI,CAAC;QACrE,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC;QAChE,iBAAiB,EACf,MAAA,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,mCACtD,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC;QAClC,eAAe,EAAE,MAAA,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,mCAAI,CAAC,QAAQ,CAAC;QACnF,oBAAoB,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC;QACvF,cAAc,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC;QAC3E,eAAe,EAAE,MAAA,OAAO,CAAC,GAAG,CAAC,gCAAgC,mCAAI,IAAI;QACrE,mBAAmB,EAAE,MAAA,OAAO,CAAC,GAAG,CAAC,qCAAqC,mCAAI,IAAI;KAC/E,CAAC;IAEF,6BAAY,IAAI,GAAK,SAAS,EAAG;AACnC,CAAC,CAAC","sourcesContent":["import type { CctpConfig } from './types';\n\n/**\n * Parses boolean environment variables, accepting various truthy string values.\n */\nconst envBool = (value?: string | null): boolean | undefined => {\n if (value == null) return undefined;\n return ['1', 'true', 'yes', 'on'].includes(String(value).toLowerCase());\n};\n\n/**\n * Parses numeric environment variables, returning undefined if invalid.\n */\nconst readNumber = (value?: string | null): number | undefined => {\n if (!value) return undefined;\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : undefined;\n};\n\nexport interface CctpRuntimeConfig extends CctpConfig {\n minAmount?: number;\n maxAmount?: number;\n allowedFromChains?: string[];\n allowedToChains?: string[];\n attestationTimeoutMs?: number;\n retryBackoffMs?: number;\n explorerBaseUrl?: string | null;\n mintExplorerBaseUrl?: string | null;\n}\n\nconst parseList = (value?: string | null): string[] | undefined =>\n value ? value.split(',').map((v) => v.trim()).filter(Boolean) : undefined;\n\n/**\n * Reads CCTP configuration from environment variables with optional overrides.\n * Defaults to mock mode unless explicitly enabled via env var.\n */\nexport const getCctpRuntimeConfig = (overrides?: Partial<CctpRuntimeConfig>): CctpRuntimeConfig => {\n const base: CctpRuntimeConfig = {\n enabled: envBool(process.env.NEXT_PUBLIC_CIRCLE_CCTP_ENABLED) ?? false,\n useMock: envBool(process.env.NEXT_PUBLIC_CIRCLE_CCTP_USE_MOCK) ?? true,\n fromChain: process.env.NEXT_PUBLIC_CIRCLE_FROM_CHAIN ?? 'ethereum',\n toChain: process.env.NEXT_PUBLIC_CIRCLE_TO_CHAIN ?? 'solana',\n // Default to 3 USDC for EVM -> Solana CCTP bridging unless overridden by env.\n minAmount: readNumber(process.env.NEXT_PUBLIC_CIRCLE_MIN_AMOUNT) ?? 3,\n maxAmount: readNumber(process.env.NEXT_PUBLIC_CIRCLE_MAX_AMOUNT),\n allowedFromChains:\n parseList(process.env.NEXT_PUBLIC_CIRCLE_ALLOWED_FROM) ??\n ['ethereum', 'arbitrum', 'base'],\n allowedToChains: parseList(process.env.NEXT_PUBLIC_CIRCLE_ALLOWED_TO) ?? ['solana'],\n attestationTimeoutMs: readNumber(process.env.NEXT_PUBLIC_CIRCLE_ATTESTATION_TIMEOUT_MS),\n retryBackoffMs: readNumber(process.env.NEXT_PUBLIC_CIRCLE_RETRY_BACKOFF_MS),\n explorerBaseUrl: process.env.NEXT_PUBLIC_CIRCLE_EXPLORER_BASE ?? null,\n mintExplorerBaseUrl: process.env.NEXT_PUBLIC_CIRCLE_MINT_EXPLORER_BASE ?? null,\n };\n\n return { ...base, ...overrides };\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mockCctpClient.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/cctp/mockCctpClient.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,IAAM,KAAK,GAAG,UAAC,EAAU,IAAK,OAAA,IAAI,OAAO,CAAC,UAAC,CAAC,IAAK,OAAA,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,EAAjB,CAAiB,CAAC,EAArC,CAAqC,CAAC;AAEpE;IACE,wBACmB,IAGX;QAHW,qBAAA,EAAA,SAGX;QAHW,SAAI,GAAJ,IAAI,CAGf;IACL,CAAC;IAEE,qCAAY,GAAlB,UAAmB,MAAwB;;;;;;4BACzC,qBAAM,KAAK,CAAC,MAAA,IAAI,CAAC,IAAI,CAAC,aAAa,mCAAI,CAAC,CAAC,EAAA;;wBAAzC,SAAyC,CAAC;wBACpC,UAAU,GAAG,iBAAU,IAAI,CAAC,GAAG,EAAE,CAAE,CAAC;wBAC1C,sBAAO;gCACL,UAAU,YAAA;gCACV,SAAS,EAAE,UAAG,MAAM,CAAC,SAAS,cAAI,UAAU,CAAE;gCAC9C,aAAa,EAAE,cAAO,UAAU,CAAE;6BACnC,EAAC;;;;KACH;IAEK,4CAAmB,GAAzB,UACE,UAAkB,EAClB,cAA8B;;;;;4BAE9B,qBAAM,KAAK,CAAC,MAAA,IAAI,CAAC,IAAI,CAAC,cAAc,mCAAI,CAAC,CAAC,EAAA;;wBAA1C,SAA0C,CAAC;wBAC3C,sBAAO,EAAE,QAAQ,EAAE,eAAQ,UAAU,CAAE,EAAE,EAAC;;;;KAC3C;IAEK,uCAAc,GAApB,UAAqB,OAAe,EAAE,UAAkB;;;gBACtD,sBAAO,IAAI,EAAC;;;KACb;IACH,qBAAC;AAAD,CAAC,AA7BD,IA6BC","sourcesContent":["import type { CctpBridgeParams, CctpBridgeResult, CctpClient, CctpConfirmationResult } from './types';\n\nconst delay = (ms: number) => new Promise((r) => setTimeout(r, ms));\n\nexport class MockCctpClient implements CctpClient {\n constructor(\n private readonly opts: {\n submitDelayMs?: number;\n confirmDelayMs?: number;\n } = {}\n ) {}\n\n async submitBridge(params: CctpBridgeParams): Promise<CctpBridgeResult> {\n await delay(this.opts.submitDelayMs ?? 0);\n const bridgeTxId = `bridge-${Date.now()}`;\n return {\n bridgeTxId,\n depositId: `${params.fromChain}-${bridgeTxId}`,\n attestationId: `att-${bridgeTxId}`,\n };\n }\n\n async waitForConfirmation(\n bridgeTxId: string,\n _attestationId?: string | null\n ): Promise<CctpConfirmationResult> {\n await delay(this.opts.confirmDelayMs ?? 0);\n return { mintTxId: `mint-${bridgeTxId}` };\n }\n\n async getAttestation(_txHash: string, _fromChain: string) {\n return null;\n }\n}\n\n\n\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { constructCctpClaimTx, hashVersionedTransaction } from '
|
|
1
|
+
export { constructCctpClaimTx, hashVersionedTransaction } from '../../../../../bridge-assist/cctp-solana';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solanaClaim.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/cctp/solanaClaim.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC","sourcesContent":["export { constructCctpClaimTx, hashVersionedTransaction } from '../../../../../bridge-assist/cctp-solana';\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/cctp/types.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Type definitions for CCTP (Circle Cross-Chain Transfer Protocol) bridge operations.\n */\nexport interface CctpBridgeParams {\n amount: string;\n fromChain: string;\n toChain: string;\n destinationAddress: string;\n minAmount?: number;\n maxAmount?: number;\n wallet?: any;\n}\n\nexport interface CctpBridgeResult {\n bridgeTxId: string;\n depositId: string;\n attestationId?: string | null;\n explorerUrl?: string | null;\n}\n\nexport interface CctpConfirmationResult {\n mintTxId: string;\n explorerUrl?: string | null;\n}\n\nexport interface CctpAttestationResult {\n attestation: string;\n message: string;\n decodedMessage?: {\n sourceDomain: string;\n destinationDomain: string;\n nonce: string;\n sender: string;\n recipient: string;\n decodedMessageBody?: {\n mintRecipient?: string;\n amount?: string;\n burnToken?: string;\n messageSender?: string;\n };\n };\n}\n\nexport interface CctpClient {\n submitBridge: (params: CctpBridgeParams) => Promise<CctpBridgeResult>;\n waitForConfirmation: (\n bridgeTxId: string,\n attestationId?: string | null\n ) => Promise<CctpConfirmationResult>;\n getAttestation: (txHash: string, fromChain: string) => Promise<CctpAttestationResult | null>;\n}\n\nexport interface CctpConfig {\n enabled?: boolean;\n useMock?: boolean;\n fromChain?: string;\n toChain?: string;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChainButton.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/components/ChainButton.tsx"],"names":[],"mappings":";AAKA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AASxD,MAAM,UAAU,WAAW,CAAC,EAKT;QAJjB,KAAK,WAAA,EACL,OAAO,aAAA,EACP,gBAAgB,EAAhB,QAAQ,mBAAG,KAAK,KAAA,EAChB,QAAQ,cAAA;IAER,IAAM,WAAW,GAAG;QAClB,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC,CAAC;IAEF,IAAM,YAAY,GAAG,iEAAiE,CAAC;IAEvF,sBAAsB;IACtB,IAAM,iBAAiB,GAAG,6GAA6G,CAAC;IAExI,IAAM,aAAa,GAAG,UAAG,iBAAiB,+FAA4F,CAAC;IAEvI,OAAO,CACL,kBACE,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,aAAa,aAExB,eAAK,SAAS,EAAC,iCAAiC,aAC9C,cAAK,SAAS,EAAC,8EAA8E,YAC1F,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAChC,KAAC,iBAAiB,IAChB,GAAG,EAAE,KAAK,CAAC,IAAI,EACf,KAAK,EAAE,EAAE,EACT,MAAM,EAAE,EAAE,EACV,GAAG,EAAE,KAAK,CAAC,IAAI,EACf,SAAS,EAAE,YAAY,EACvB,iBAAiB,EAAC,sHAAsH,EACxI,eAAe,EAAC,kBAAkB,EAClC,iBAAiB,EAAC,iBAAiB,GACnC,CACH,CAAC,CAAC,CAAC,CACF,cAAK,SAAS,EAAC,0BAA0B,YAAE,KAAK,CAAC,IAAI,GAAO,CAC7D,GACG,EACN,eAAK,SAAS,EAAC,oDAAoD,aACjE,eAAM,SAAS,EAAC,gCAAgC,YAAE,KAAK,CAAC,IAAI,GAAQ,EACnE,QAAQ,CAAC,CAAC,CAAC,CACV,eAAM,SAAS,EAAC,wCAAwC,YAAE,QAAQ,GAAQ,CAC3E,CAAC,CAAC,CAAC,CACF,eAAM,SAAS,EAAC,+BAA+B,YAAE,KAAK,CAAC,IAAI,GAAQ,CACpE,IACG,IACF,EACN,cAAK,SAAS,EAAC,kCAAkC,YAC9C,QAAQ,CAAC,CAAC,CAAC,CACV,eAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,4BAA4B,aAC5F,eAAM,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,EAAE,EAAC,KAAK,EAAC,MAAM,EAAC,SAAS,GAAE,EACxE,eAAM,QAAQ,EAAC,SAAS,EAAC,QAAQ,EAAC,SAAS,EAAC,CAAC,EAAC,sIAAsI,EAAC,IAAI,EAAC,SAAS,EAAC,MAAM,EAAC,SAAS,EAAC,WAAW,EAAC,KAAK,GAAE,IACpO,CACP,CAAC,CAAC,CAAC,CACF,eAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,4BAA4B,EAAC,SAAS,EAAC,wDAAwD,aAC/J,iBAAQ,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,IAAI,EAAC,OAAO,GAAE,EAC1C,iBAAQ,EAAE,EAAC,GAAG,EAAC,EAAE,EAAC,GAAG,EAAC,CAAC,EAAC,KAAK,EAAC,MAAM,EAAC,OAAO,EAAC,aAAa,EAAC,KAAK,GAAE,IAC9D,CACP,GACG,IACC,CACV,CAAC;AACJ,CAAC","sourcesContent":["/**\n * Reusable button component for selecting a blockchain chain.\n * Displays chain logo, name, optional subtitle, and selection indicator.\n */\nimport { Chain } from \"../types\";\nimport { ImageWithFallback } from \"./ImageWithFallback\";\n\ninterface ChainButtonProps {\n chain: Chain;\n onClick: (chainId: string) => void;\n selected?: boolean;\n subtitle?: string;\n}\n\nexport function ChainButton({\n chain,\n onClick,\n selected = false,\n subtitle,\n}: ChainButtonProps) {\n const handleClick = () => {\n onClick(chain.id);\n };\n\n const imageClasses = \"opacity-90 grayscale brightness-150 transition-all duration-200\";\n\n // Base button classes\n const baseButtonClasses = \"group rounded-lg flex items-center justify-between border p-4 bg-n1-ww-gray-900 transition-all duration-200\";\n \n const buttonClasses = `${baseButtonClasses} border-n1-ww-border hover:border-n1-ww-main-400/50 hover:bg-n1-ww-gray-800 cursor-pointer`;\n\n return (\n <button\n onClick={handleClick}\n className={buttonClasses}\n >\n <div className=\"flex items-center justify-start\">\n <div className=\"flex items-center justify-center rounded-full bg-n1-ww-gray-650 mr-2 h-8 w-8\">\n {typeof chain.logo === \"string\" ? (\n <ImageWithFallback\n src={chain.logo}\n width={48}\n height={48}\n alt={chain.name}\n className={imageClasses}\n fallbackClassName=\"w-12 h-12 rounded-full text-lg font-bold opacity-90 group-hover:scale-105 transition-all duration-200 brightness-150\"\n fallbackBgColor=\"bg-n1-ww-main/20\"\n fallbackTextColor=\"text-n1-ww-main\"\n />\n ) : (\n <div className=\"grayscale brightness-150\">{chain.logo}</div>\n )}\n </div>\n <div className=\"flex flex-col items-start justify-center text-left\">\n <span className=\"text-white font-medium text-sm\">{chain.name}</span>\n {subtitle ? (\n <span className=\"text-n1-ww-gray-100 font-light text-xs\">{subtitle}</span>\n ) : (\n <span className=\"text-white font-light text-xs\">{chain.name}</span>\n )}\n </div>\n </div>\n <div className=\"flex items-center justify-center\">\n {selected ? (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"0.5\" y=\"0.5\" width=\"15\" height=\"15\" rx=\"7.5\" stroke=\"#FF441A\"/>\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M12.3333 5.52227L7.48168 11.4007L7.1762 11.7708L6.83012 11.4354L4 8.69212L4.61955 8.10046L7.10358 10.5083L11.6497 5L12.3333 5.52227Z\" fill=\"#FF441A\" stroke=\"#FF441A\" strokeWidth=\"0.5\"/>\n </svg>\n ) : (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"transition-opacity duration-200 group-hover:opacity-80\">\n <circle cx=\"8\" cy=\"8\" r=\"8\" fill=\"black\"/>\n <circle cx=\"8\" cy=\"8\" r=\"7.5\" stroke=\"white\" strokeOpacity=\"0.2\"/>\n </svg>\n )}\n </div>\n </button>\n );\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/components/Header.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useCallback } from 'react';\nimport { useNetwork } from '../../../providers/N1WalletProvider/NetworkProvider';\nimport { useWalletConnection } from '../providers';\nimport { shortenAddress } from '../../../utils/shortenString';\n\nconst WalletConnectionBadge: React.FC = () => {\n // Use NetworkProvider instead of legacy N1WalletContext\n const { solanaAddress, evmAddress } = useNetwork();\n const { turnkeyEnabled, turnkeyStatus, turnkeyAddress } = useWalletConnection();\n\n const handleShareClick = useCallback(() => {\n if (typeof navigator === 'undefined') return;\n\n const addresses: string[] = [];\n if (evmAddress) addresses.push(evmAddress);\n const displayTurnkeyAddress = solanaAddress || turnkeyAddress;\n if (displayTurnkeyAddress) addresses.push(displayTurnkeyAddress);\n\n const addressesText = addresses.join(' / ');\n\n const nav = navigator as Navigator & {\n share?: (data: ShareData) => Promise<void>;\n };\n\n if (typeof nav.share === 'function') {\n nav.share({ title: 'Wallet addresses', text: addressesText }).catch(() => {});\n return;\n }\n\n if (nav.clipboard?.writeText) {\n nav.clipboard.writeText(addressesText).catch(() => {});\n }\n }, [evmAddress, solanaAddress, turnkeyAddress]);\n\n const displayTurnkeyAddress = solanaAddress || turnkeyAddress;\n const walletBadgeLabel = 'Wallet';\n\n const hasEvmAddress = Boolean(evmAddress);\n const hasTurnkeyAddress = Boolean(displayTurnkeyAddress);\n const isPreparing = turnkeyEnabled && (turnkeyStatus === 'authenticating' || turnkeyStatus === 'creating');\n\n if (!hasEvmAddress && !hasTurnkeyAddress && !isPreparing) {\n return null;\n }\n\n const addresses: string[] = [];\n if (hasEvmAddress) {\n addresses.push(shortenAddress(evmAddress!));\n }\n if (hasTurnkeyAddress) {\n addresses.push(shortenAddress(displayTurnkeyAddress!));\n } else if (isPreparing) {\n addresses.push('Preparing…');\n }\n\n const canShare = hasEvmAddress || hasTurnkeyAddress;\n\n return (\n <div className=\"flex items-center gap-2 text-[11px] leading-tight text-n1-ww-icon\">\n <span className=\"text-[10px] uppercase tracking-wide text-n1-ww-icon/70\">\n {walletBadgeLabel}\n </span>\n <div className=\"flex items-center gap-1 rounded px-2 py-1 text-white\">\n {addresses.map((addr, index) => (\n <React.Fragment key={index}>\n <span className=\"tracking-tight\">{addr}</span>\n {index < addresses.length - 1 && (\n <span className=\"text-n1-ww-icon/70\">/</span>\n )}\n </React.Fragment>\n ))}\n {canShare && (\n <button\n type=\"button\"\n onClick={handleShareClick}\n className=\"flex h-4 w-4 items-center justify-center text-n1-ww-main hover:text-white transition-colors\"\n aria-label=\"Share wallet addresses\"\n >\n <svg\n 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 </button>\n )}\n </div>\n </div>\n );\n};\n\ninterface HeaderProps {\n title?: string;\n onClose?: () => void;\n onBack?: () => void;\n}\n\n/**\n * Header component displaying title, back button (when applicable), wallet connection badge,\n * and close button. Configures navigation based on current onboarding step.\n */\nexport const Header: React.FC<HeaderProps> = ({\n onClose,\n onBack,\n title = 'Bridge',\n}) => {\n return (\n <div className=\"w-full px-4 pt-4\">\n <div className=\"flex items-center h-4 gap-2\">\n <div className=\"flex flex-1 items-center min-w-0\">\n {onBack && (\n <button\n type=\"button\"\n onClick={onBack}\n className=\"flex h-full items-center justify-center cursor-pointer text-n1-ww-icon hover:text-white pr-4\" \n aria-label=\"Go back\"\n >\n <svg\n className=\"h-[10px] w-[6px]\"\n width=\"6\"\n height=\"10\"\n viewBox=\"0 0 6 10\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M5.26316 10L0 5L5.26316 0L6 0.7125L1.48684 5L6 9.2875L5.26316 10Z\" />\n </svg>\n </button>\n )}\n <div className={\" text-[12px] text-n1-ww-icon opacity-90 tracking-[-0.24px] leading-none\"}>\n {title}\n </div>\n </div>\n <div className=\"flex flex-1 items-center justify-center px-2\">\n <WalletConnectionBadge />\n </div>\n <div className=\"flex flex-1 justify-end\">\n <button\n type=\"button\"\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n if (event.nativeEvent?.stopImmediatePropagation) {\n event.nativeEvent.stopImmediatePropagation();\n }\n if (onClose) {\n onClose();\n }\n }}\n className=\"flex h-10 w-10 items-center justify-center cursor-pointer text-n1-ww-icon hover:text-white\"\n >\n <svg\n className=\"h-[10px] w-[10px]\"\n viewBox=\"0 0 10 10\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M5.88381 5L10 0.883812L9.11619 0L5 4.11619L0.883937 0L0 0.883812L4.11619 5L0 9.11619L0.883937 10L5 5.88381L9.11619 10L10 9.11619L5.88381 5Z\" />\n </svg>\n </button>\n </div>\n </div>\n <div className=\"h-4 relative mt-0 w-full\">\n <div className=\"absolute bottom-0 left-0 right-0 top-[-1px] border-b border-n1-ww-border\"></div>\n </div>\n </div>\n );\n}; \n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ImageWithFallback.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/components/ImageWithFallback.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAcxC;;GAEG;AACH,MAAM,CAAC,IAAM,iBAAiB,GAAqC,UAAC,EAUnE;QATC,GAAG,SAAA,EACH,GAAG,SAAA,EACH,aAAc,EAAd,KAAK,mBAAG,MAAM,KAAA,EACd,cAAe,EAAf,MAAM,mBAAG,MAAM,KAAA,EACf,iBAAc,EAAd,SAAS,mBAAG,EAAE,KAAA,EACd,yBAAsB,EAAtB,iBAAiB,mBAAG,EAAE,KAAA,EACtB,YAAY,kBAAA,EACZ,uBAAqC,EAArC,eAAe,mBAAG,mBAAmB,KAAA,EACrC,yBAAyC,EAAzC,iBAAiB,mBAAG,qBAAqB,KAAA;IAEnC,IAAA,KAA8B,QAAQ,CAAC,KAAK,CAAC,EAA5C,UAAU,QAAA,EAAE,aAAa,QAAmB,CAAC;IAEpD,0CAA0C;IAC1C,IAAM,WAAW,GAAG,UAAC,IAAY;QAC/B,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAC;QACrB,OAAO,IAAI;aACR,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,CAAC,CAAC,CAAC,EAAP,CAAO,CAAC;aACtB,IAAI,CAAC,EAAE,CAAC;aACR,WAAW,EAAE;aACb,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrB,CAAC,CAAC;IAEF,IAAM,WAAW,GAAG;QAClB,aAAa,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC,CAAC;IAEF,IAAI,UAAU,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,sBAAsB;QACtB,OAAO,CACL,cACE,SAAS,EAAE,2CAAoC,eAAe,cAAI,iBAAiB,cAAI,iBAAiB,CAAE,EAC1G,KAAK,EAAE;gBACL,KAAK,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAG,KAAK,OAAI,CAAC,CAAC,CAAC,KAAK;gBACvD,MAAM,EAAE,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAG,MAAM,OAAI,CAAC,CAAC,CAAC,MAAM;aAC5D,gBACW,GAAG,YAEd,YAAY,IAAI,WAAW,CAAC,GAAG,CAAC,GAC7B,CACP,CAAC;IACJ,CAAC;IAED,eAAe;IACf,OAAO,CACL,cACE,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,WAAW,GACpB,CACH,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import React, { useState } from 'react';\n\ninterface ImageWithFallbackProps {\n src: string;\n alt: string;\n width?: number | string;\n height?: number | string;\n className?: string;\n fallbackClassName?: string;\n fallbackText?: string;\n fallbackBgColor?: string;\n fallbackTextColor?: string;\n}\n\n/**\n * A component that renders an image with a fallback div when the image is not available\n */\nexport const ImageWithFallback: React.FC<ImageWithFallbackProps> = ({\n src,\n alt,\n width = 'auto',\n height = 'auto',\n className = '',\n fallbackClassName = '',\n fallbackText,\n fallbackBgColor = 'bg-n1-ww-gray-800',\n fallbackTextColor = 'text-n1-ww-gray-400',\n}) => {\n const [imageError, setImageError] = useState(false);\n\n // Get initials from alt text for fallback\n const getInitials = (text: string) => {\n if (!text) return '';\n return text\n .split(' ')\n .map((word) => word[0])\n .join('')\n .toUpperCase()\n .substring(0, 2);\n };\n\n const handleError = () => {\n setImageError(true);\n };\n\n if (imageError || !src) {\n // Render fallback div\n return (\n <div\n className={`flex items-center justify-center ${fallbackBgColor} ${fallbackTextColor} ${fallbackClassName}`}\n style={{\n width: typeof width === 'number' ? `${width}px` : width,\n height: typeof height === 'number' ? `${height}px` : height,\n }}\n aria-label={alt}\n >\n {fallbackText || getInitials(alt)}\n </div>\n );\n }\n\n // Render image\n return (\n <img\n src={src}\n alt={alt}\n width={width}\n height={height}\n className={className}\n onError={handleError}\n />\n );\n};\n"]}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { shortenAddress } from '../../../utils/shortenString';
|
|
3
3
|
import { getSolanaExplorerUrl } from '../utils/deposit/solanaDepositTransaction';
|
|
4
|
+
// Network selection based on NEXT_PUBLIC_TESTNET env var (default: true for testnet)
|
|
5
|
+
var isTestnet = process.env.NEXT_PUBLIC_TESTNET !== 'false';
|
|
4
6
|
/**
|
|
5
7
|
* Displays transaction details in a formatted table.
|
|
6
8
|
* Shows amount, status, network, addresses, and transaction IDs with explorer links.
|
|
@@ -65,7 +67,10 @@ export function TransactionTable(_a) {
|
|
|
65
67
|
return getSolanaExplorerUrl(value);
|
|
66
68
|
}
|
|
67
69
|
if (key === 'from') {
|
|
68
|
-
|
|
70
|
+
// Mainnet doesn't need cluster param, devnet needs ?cluster=devnet
|
|
71
|
+
return isTestnet
|
|
72
|
+
? "https://explorer.solana.com/address/".concat(value, "?cluster=devnet")
|
|
73
|
+
: "https://explorer.solana.com/address/".concat(value);
|
|
69
74
|
}
|
|
70
75
|
return '';
|
|
71
76
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TransactionTable.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/components/TransactionTable.tsx"],"names":[],"mappings":"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","sourcesContent":["import { TableValues } from '../types';\nimport { shortenAddress } from '../../../utils/shortenString';\nimport { getSolanaExplorerUrl } from '../utils/deposit/solanaDepositTransaction';\n\n// Network selection based on NEXT_PUBLIC_TESTNET env var (default: true for testnet)\nconst isTestnet = process.env.NEXT_PUBLIC_TESTNET !== 'false';\n\ninterface TransactionTableProps {\n tableValues: TableValues & {\n amount?: { text: string; visible: boolean; typing: boolean };\n };\n onClose?: () => void;\n}\n\n/**\n * Displays transaction details in a formatted table.\n * Shows amount, status, network, addresses, and transaction IDs with explorer links.\n * Formats addresses with ellipsis and applies color coding based on status.\n */\nexport function TransactionTable({\n tableValues,\n onClose,\n}: TransactionTableProps) {\n // Friendly labels for the keys\n const getLabel = (key: string) => {\n const labels: Record<string, string> = {\n amount: 'Amount',\n tx: 'Transaction ID',\n from: 'From',\n to: 'To',\n network: 'Network',\n status: 'Status',\n };\n\n return labels[key] || key;\n };\n\n // Get appropriate color for values based on key\n const getValueStyles = (key: string, value: string) => {\n if (key === 'status') {\n if (\n value.toLowerCase().includes('success') ||\n value.toLowerCase().includes('confirmed')\n ) {\n return 'text-emerald-500 font-medium';\n }\n if (value.toLowerCase().includes('pending')) {\n return 'text-amber-400 font-medium';\n }\n if (\n value.toLowerCase().includes('fail') ||\n value.toLowerCase().includes('error')\n ) {\n return 'text-red-400 font-medium';\n }\n }\n\n if (key === 'tx') {\n return 'text-n1-ww-gray-200 text-xs font-medium hover:text-n1-ww-main-400 transition-colors duration-200';\n }\n\n if (key === 'network') {\n return 'text-purple-400 font-medium';\n }\n\n if (key === 'from' || key === 'to') {\n return 'text-n1-ww-gray-200 text-xs font-medium hover:text-n1-ww-main-400 transition-colors duration-200';\n }\n\n if (key === 'amount') {\n return 'text-emerald-500 font-semibold';\n }\n\n return 'text-n1-ww-gray-50 font-medium';\n };\n\n // Format display value with ellipsis for long text\n const getDisplayValue = (key: string, value: string) => {\n if (key === 'tx') {\n return shortenAddress(value, 5, 4);\n }\n\n if (key === 'from' || key === 'to') {\n return shortenAddress(value, 5, 4);\n }\n\n return value;\n };\n\n // Get explorer URL for transaction ID or address\n const getExplorerLink = (key: string, value: string) => {\n\n if (key === 'tx') {\n return getSolanaExplorerUrl(value);\n }\n\n if (key === 'from') {\n // Mainnet doesn't need cluster param, devnet needs ?cluster=devnet\n return isTestnet\n ? `https://explorer.solana.com/address/${value}?cluster=devnet`\n : `https://explorer.solana.com/address/${value}`;\n }\n\n return '';\n };\n\n // Order of fields to display\n const fieldOrder = ['amount', 'status', 'network', 'from', 'to', 'tx'];\n\n // Sort entries based on fieldOrder\n const sortedEntries = Object.entries(tableValues).sort(([keyA], [keyB]) => {\n const indexA = fieldOrder.indexOf(keyA);\n const indexB = fieldOrder.indexOf(keyB);\n return (indexA === -1 ? 999 : indexA) - (indexB === -1 ? 999 : indexB);\n });\n\n return (\n <div className=\"relative w-full h-full bg-n1-ww-gray-950 border border-n1-ww-border p-5 rounded-sm flex flex-col justify-center\">\n {onClose && (\n <button\n onClick={onClose}\n className=\"absolute top-3 right-2 text-n1-ww-gray-600 hover:text-n1-ww-gray-300 transition-colors duration-200 focus:outline-none\"\n aria-label=\"Close details\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-5 w-5\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </button>\n )}\n <div className=\"space-y-3 text-sm pt-5\">\n {sortedEntries.map(([key, value]) => (\n <div key={key} className=\"flex items-center justify-between py-2 \">\n <span className=\"text-n1-ww-gray-400 font-medium min-w-[120px]\">\n {getLabel(key)}\n </span>\n <div\n className={`relative transition-all duration-300 ${value.visible ? 'opacity-100' : 'opacity-0'} max-w-[65%] text-right flex-1`}\n >\n {(key === 'tx' || key === 'from') &&\n getExplorerLink(key, value.text) ? (\n <a\n href={getExplorerLink(key, value.text)}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={`${getValueStyles(key, value.text)} break-all inline-block group`}\n title={value.text}\n >\n <span className=\"underline hover:font-bold\">\n {getDisplayValue(key, value.text)}\n </span>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-3 w-3 ml-1 inline-block opacity-50 group-hover:opacity-100 transition-opacity duration-200\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14\"\n />\n </svg>\n </a>\n ) : (\n <span\n className={`${getValueStyles(key, value.text)} break-all inline-block`}\n title={value.text}\n >\n {value.text}\n </span>\n )}\n {value.typing && (\n <span className=\"inline-block ml-1 w-[2px] h-[14px] bg-n1-ww-main-400 n1-ww-animate-pulse\"></span>\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WaitingMessage.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/components/WaitingMessage.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,IAAI,MAAM,0BAA0B,CAAC;AAY5C,MAAM,UAAU,cAAc,CAAC,EAIT;QAHpB,OAAO,aAAA,EACP,kBAAe,EAAf,UAAU,mBAAG,EAAE,KAAA,EACf,iBAAoB,EAApB,SAAS,mBAAG,QAAQ,KAAA;IAEpB,OAAO,CACL,eAAK,SAAS,EAAC,2CAA2C,aACvD,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,CACxB,KAAC,iBAAiB,IAAC,IAAI,EAAE,UAAU,GAAI,CACxC,CAAC,CAAC,CAAC,CACF,KAAC,qBAAqB,KAAG,CAC1B,EACD,eAAK,SAAS,EAAC,4BAA4B,aACzC,aAAI,SAAS,EAAC,mGAAmG,YAC/G,cAAK,SAAS,EAAC,UAAU,YACtB,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,GAC7B,GACH,EACL,cAAK,SAAS,EAAC,mEAAmE,YAChF,cAAK,SAAS,EAAC,UAAU,YACtB,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,GAChC,GACF,IACF,IACF,CACP,CAAC;AACJ,CAAC;AAED,IAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,UAAC,CAAC,EAAE,KAAK,IAAK,OAAA,KAAK,EAAL,CAAK,CAAC,CAAC;AAEnE,IAAM,YAAY,GAAG,cAAM,OAAA,CACzB,cAAK,SAAS,EAAC,6BAA6B,YACzC,WAAW,CAAC,GAAG,CAAC,UAAC,KAAK,IAAK,OAAA,CAC1B,eAEE,SAAS,EAAC,6EAA6E,EACvF,KAAK,EAAE;YACL,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,OAAO;YACf,cAAc,EAAE,UAAG,KAAK,GAAG,IAAI,MAAG;YAClC,iBAAiB,EAAE,MAAM;SAC1B,iBACW,MAAM,IARb,mBAAY,KAAK,CAAE,CASxB,CACH,EAZ2B,CAY3B,CAAC,GACE,CACP,EAhB0B,CAgB1B,CAAC;AAEF,IAAM,qBAAqB,GAAG,cAAM,OAAA,CAClC,cACE,SAAS,EAAC,yCAAyC,gBACxC,sCAAsC,YAEjD,eAAK,SAAS,EAAC,yBAAyB,aACtC,cAAK,SAAS,EAAC,qIAAqI,YAClJ,cAAK,SAAS,EAAC,iFAAiF,YAC9F,KAAC,UAAU,IAAC,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,GAAI,GACjC,GACF,EACN,KAAC,YAAY,KAAG,EAChB,cAAK,SAAS,EAAC,8FAA8F,YAC3G,cAAK,SAAS,EAAC,0EAA0E,YACvF,KAAC,IAAI,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,oBAAoB,GAAG,GAC7C,GACF,EACN,KAAC,YAAY,KAAG,EAChB,cAAK,SAAS,EAAC,8FAA8F,YAC3G,cAAK,SAAS,EAAC,0EAA0E,YACvF,KAAC,WAAW,IAAC,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,GAAI,GAClC,GACF,IACF,GACF,CACP,EAzBmC,CAyBnC,CAAC","sourcesContent":["import { WaitingMessageState } from '../types';\nimport { N1LoaderAnimation } from '../../../animations/N1Loader';\nimport { SolanaLogo, ZeroOneLogo } from '../../../components/logos';\nimport Logo from '../../../components/Logo';\n\n/**\n * Component that displays a loading message with animated loader or transfer animation.\n * Used across multiple screens to show progress states.\n */\ninterface WaitingMessageProps {\n message: WaitingMessageState;\n loaderSize?: number;\n animation?: 'loader' | 'transfer';\n}\n\nexport function WaitingMessage({\n message,\n loaderSize = 48,\n animation = 'loader',\n}: WaitingMessageProps) {\n return (\n <div className=\"flex flex-col items-center justify-center\">\n {animation === 'loader' ? (\n <N1LoaderAnimation size={loaderSize} />\n ) : (\n <TransferWaveAnimation />\n )}\n <div className=\"text-center w-[300px] my-4\">\n <h3 className=\"text-sm text-white transition-all duration-300 h-[32px] flex items-center justify-center relative\"> \n <div className=\"absolute\">\n {message.visible && message.title}\n </div>\n </h3>\n <div className=\"text-xs flex items-center justify-center relative mt-2 font-light\">\n <div className=\"absolute\">\n {message.visible && message.subtitle}\n </div>\n </div>\n </div>\n </div>\n );\n}\n\nconst DOT_INDICES = Array.from({ length: 7 }, (_, index) => index);\n\nconst TransferDots = () => (\n <div className=\"flex items-center gap-[3px]\">\n {DOT_INDICES.map((index) => (\n <span\n key={`wave-dot-${index}`}\n className=\"n1-ww-animate-transfer-dot n1-ww-force-motion rounded-full bg-n1-ww-main/90\"\n style={{\n width: '2.5px',\n height: '2.5px',\n animationDelay: `${index * 0.12}s`,\n animationDuration: '1.6s',\n }}\n aria-hidden=\"true\"\n />\n ))}\n </div>\n);\n\nconst TransferWaveAnimation = () => (\n <div\n className=\"flex w-full items-center justify-center\"\n aria-label=\"Solana deposit moving into N1 and 01\"\n >\n <div className=\"flex items-center gap-2\">\n <div className=\"relative h-7 w-7 rounded-full bg-gradient-to-br from-black via-neutral-900 to-neutral-800 p-px shadow-[0_12px_30px_rgba(0,0,0,0.6)]\">\n <div className=\"flex h-full w-full items-center justify-center rounded-full bg-black text-white\">\n <SolanaLogo width={14} height={14} />\n </div>\n </div>\n <TransferDots />\n <div className=\"relative h-7 w-7 rounded-full bg-n1-ww-gray-800/70 p-px shadow-[0_12px_30px_rgba(0,0,0,0.6)]\">\n <div className=\"flex h-full w-full items-center justify-center rounded-full bg-[#1b1b1b]\">\n <Logo size={12} className=\"text-n1-ww-main/90\" />\n </div>\n </div>\n <TransferDots />\n <div className=\"relative h-7 w-7 rounded-full bg-n1-ww-gray-800/70 p-px shadow-[0_12px_30px_rgba(0,0,0,0.6)]\">\n <div className=\"flex h-full w-full items-center justify-center rounded-full bg-[#1b1b1b]\">\n <ZeroOneLogo width={14} height={11} />\n </div>\n </div>\n </div>\n </div>\n);\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/features/onboarding-flow/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC","sourcesContent":["export * from './ImageWithFallback';\nexport * from './ChainButton';\nexport * from './TransactionTable';\nexport * from './WaitingMessage';\nexport * from './Header';\n"]}
|