@n1xyz/wallet-widget 0.0.35-alpha.0 → 0.0.35-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bridge-assist/cctp-solana.d.ts +33 -0
- package/dist/bridge-assist/cctp-solana.js +392 -0
- package/dist/bridge-assist/cctp-solana.js.map +1 -0
- package/dist/main.css +1 -2
- package/dist/src/adapters/evm.d.ts +39 -0
- package/dist/src/adapters/evm.js +338 -0
- package/dist/src/adapters/evm.js.map +1 -0
- package/dist/src/adapters/factory.d.ts +37 -0
- package/dist/src/adapters/factory.js +82 -0
- package/dist/src/adapters/factory.js.map +1 -0
- package/dist/src/adapters/index.d.ts +33 -0
- package/dist/src/adapters/index.js +36 -0
- package/dist/src/adapters/index.js.map +1 -0
- package/dist/src/adapters/solana.d.ts +37 -0
- package/dist/src/adapters/solana.js +359 -0
- package/dist/src/adapters/solana.js.map +1 -0
- package/dist/src/adapters/types.d.ts +160 -0
- package/dist/src/adapters/types.js +20 -0
- package/dist/src/adapters/types.js.map +1 -0
- package/dist/src/animations/N1Loader.js.map +1 -0
- package/dist/src/animations/N1Loader.json +1 -0
- package/dist/src/animations/Processing.js.map +1 -0
- package/dist/src/animations/Processing.json +1 -0
- package/dist/{components → src/components}/LoadingFallback.d.ts +3 -0
- package/dist/{components → src/components}/LoadingFallback.js +3 -0
- package/dist/src/components/LoadingFallback.js.map +1 -0
- package/dist/{components → src/components}/Logo.d.ts +4 -0
- package/dist/{components → src/components}/Logo.js +4 -0
- package/dist/src/components/Logo.js.map +1 -0
- package/dist/src/components/N1ConnectButton.d.ts +13 -0
- package/dist/src/components/N1ConnectButton.js +66 -0
- package/dist/src/components/N1ConnectButton.js.map +1 -0
- package/dist/src/components/logos/ArbitrumLogo.js.map +1 -0
- package/dist/src/components/logos/BaseLogo.js +6 -0
- package/dist/src/components/logos/BaseLogo.js.map +1 -0
- package/dist/src/components/logos/BeraLogo.js.map +1 -0
- package/dist/src/components/logos/BitcoinLogo.js.map +1 -0
- package/dist/src/components/logos/EthereumLogo.js.map +1 -0
- package/dist/{components → src/components}/logos/HyperliquidLogo.js +1 -1
- package/dist/src/components/logos/HyperliquidLogo.js.map +1 -0
- package/dist/src/components/logos/OptimismLogo.js.map +1 -0
- package/dist/src/components/logos/SolanaLogo.js.map +1 -0
- package/dist/src/components/logos/ZeroOneLogo.js.map +1 -0
- package/dist/src/components/logos/index.js.map +1 -0
- package/dist/src/config/chains.d.ts +18 -0
- package/dist/src/config/chains.js +58 -0
- package/dist/src/config/chains.js.map +1 -0
- package/dist/src/config/dynamic.d.ts +1 -0
- package/dist/src/config/dynamic.js +18 -0
- package/dist/src/config/dynamic.js.map +1 -0
- package/dist/src/config/solana.js.map +1 -0
- package/dist/src/config/turnkey.d.ts +2 -0
- package/dist/src/config/turnkey.js +32 -0
- package/dist/src/config/turnkey.js.map +1 -0
- package/dist/src/context/n1-wallet-context.js.map +1 -0
- package/dist/src/errors/types.d.ts +72 -0
- package/dist/src/errors/types.js +140 -0
- package/dist/src/errors/types.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/N1WalletModal.js +44 -29
- package/dist/src/features/onboarding-flow/N1WalletModal.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/OnboardingFlow.d.ts +2 -1
- package/dist/{features → src/features}/onboarding-flow/OnboardingFlow.js +54 -8
- package/dist/src/features/onboarding-flow/OnboardingFlow.js.map +1 -0
- package/dist/src/features/onboarding-flow/bridge-assist/client.d.ts +42 -0
- package/dist/src/features/onboarding-flow/bridge-assist/client.js +268 -0
- package/dist/src/features/onboarding-flow/bridge-assist/client.js.map +1 -0
- package/dist/src/features/onboarding-flow/bridge-assist/config.d.ts +4 -0
- package/dist/src/features/onboarding-flow/bridge-assist/config.js +11 -0
- package/dist/src/features/onboarding-flow/bridge-assist/config.js.map +1 -0
- package/dist/src/features/onboarding-flow/bridge-assist/index.d.ts +1 -0
- package/dist/src/features/onboarding-flow/bridge-assist/index.js +2 -0
- package/dist/src/features/onboarding-flow/bridge-assist/index.js.map +1 -0
- package/dist/src/features/onboarding-flow/bridge-assist/types.d.ts +5 -0
- package/dist/src/features/onboarding-flow/bridge-assist/types.js +28 -0
- package/dist/src/features/onboarding-flow/bridge-assist/types.js.map +1 -0
- package/dist/src/features/onboarding-flow/cctp/bridgeKitClient.d.ts +35 -0
- package/dist/src/features/onboarding-flow/cctp/bridgeKitClient.js +391 -0
- package/dist/src/features/onboarding-flow/cctp/bridgeKitClient.js.map +1 -0
- package/dist/src/features/onboarding-flow/cctp/clientFactory.d.ts +6 -0
- package/dist/src/features/onboarding-flow/cctp/clientFactory.js +9 -0
- package/dist/src/features/onboarding-flow/cctp/clientFactory.js.map +1 -0
- package/dist/src/features/onboarding-flow/cctp/config.d.ts +16 -0
- package/dist/src/features/onboarding-flow/cctp/config.js +55 -0
- package/dist/src/features/onboarding-flow/cctp/config.js.map +1 -0
- package/dist/src/features/onboarding-flow/cctp/mockCctpClient.d.ts +11 -0
- package/dist/src/features/onboarding-flow/cctp/mockCctpClient.js +85 -0
- package/dist/src/features/onboarding-flow/cctp/mockCctpClient.js.map +1 -0
- package/dist/src/features/onboarding-flow/cctp/solanaClaim.d.ts +1 -0
- package/dist/src/features/onboarding-flow/cctp/solanaClaim.js +2 -0
- package/dist/src/features/onboarding-flow/cctp/solanaClaim.js.map +1 -0
- package/dist/src/features/onboarding-flow/cctp/types.d.ts +50 -0
- package/dist/src/features/onboarding-flow/cctp/types.js +2 -0
- package/dist/src/features/onboarding-flow/cctp/types.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/components/ChainButton.d.ts +5 -2
- package/dist/src/features/onboarding-flow/components/ChainButton.js +14 -0
- package/dist/src/features/onboarding-flow/components/ChainButton.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/components/Header.d.ts +2 -2
- package/dist/src/features/onboarding-flow/components/Header.js +69 -0
- package/dist/src/features/onboarding-flow/components/Header.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/components/ImageWithFallback.d.ts +2 -5
- package/dist/src/features/onboarding-flow/components/ImageWithFallback.js +33 -0
- package/dist/src/features/onboarding-flow/components/ImageWithFallback.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/components/TransactionTable.d.ts +5 -0
- package/dist/{features → src/features}/onboarding-flow/components/TransactionTable.js +8 -3
- package/dist/src/features/onboarding-flow/components/TransactionTable.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/components/WaitingMessage.d.ts +4 -0
- package/dist/src/features/onboarding-flow/components/WaitingMessage.js.map +1 -0
- package/dist/src/features/onboarding-flow/components/index.js.map +1 -0
- package/dist/src/features/onboarding-flow/errors/depositError.d.ts +36 -0
- package/dist/src/features/onboarding-flow/errors/depositError.js +134 -0
- package/dist/src/features/onboarding-flow/errors/depositError.js.map +1 -0
- package/dist/src/features/onboarding-flow/hooks/useBridgeDeposit.d.ts +35 -0
- package/dist/src/features/onboarding-flow/hooks/useBridgeDeposit.js +585 -0
- package/dist/src/features/onboarding-flow/hooks/useBridgeDeposit.js.map +1 -0
- package/dist/src/features/onboarding-flow/hooks/useDepositAuth.d.ts +6 -0
- package/dist/src/features/onboarding-flow/hooks/useDepositAuth.js +141 -0
- package/dist/src/features/onboarding-flow/hooks/useDepositAuth.js.map +1 -0
- package/dist/src/features/onboarding-flow/hooks/useDepositHydration.d.ts +15 -0
- package/dist/src/features/onboarding-flow/hooks/useDepositHydration.js +83 -0
- package/dist/src/features/onboarding-flow/hooks/useDepositHydration.js.map +1 -0
- package/dist/src/features/onboarding-flow/hooks/usePendingDepositState.d.ts +6 -0
- package/dist/src/features/onboarding-flow/hooks/usePendingDepositState.js +45 -0
- package/dist/src/features/onboarding-flow/hooks/usePendingDepositState.js.map +1 -0
- package/dist/src/features/onboarding-flow/hooks/useSolanaDeposit.d.ts +13 -0
- package/dist/src/features/onboarding-flow/hooks/useSolanaDeposit.js +161 -0
- package/dist/src/features/onboarding-flow/hooks/useSolanaDeposit.js.map +1 -0
- package/dist/src/features/onboarding-flow/index.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/providers/DepositFlowProvider.d.ts +10 -3
- package/dist/src/features/onboarding-flow/providers/DepositFlowProvider.js +762 -0
- package/dist/src/features/onboarding-flow/providers/DepositFlowProvider.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/providers/OnboardingStateProvider.d.ts +5 -0
- package/dist/src/features/onboarding-flow/providers/OnboardingStateProvider.js +399 -0
- package/dist/src/features/onboarding-flow/providers/OnboardingStateProvider.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/providers/StateProvider.d.ts +2 -2
- package/dist/{features → src/features}/onboarding-flow/providers/StateProvider.js +2 -2
- package/dist/src/features/onboarding-flow/providers/StateProvider.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/providers/WalletConnectionProvider.d.ts +8 -0
- package/dist/src/features/onboarding-flow/providers/WalletConnectionProvider.js +938 -0
- package/dist/src/features/onboarding-flow/providers/WalletConnectionProvider.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/providers/debug.js +5 -1
- package/dist/src/features/onboarding-flow/providers/debug.js.map +1 -0
- package/dist/src/features/onboarding-flow/providers/index.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/providers/onboardingStateMachine.d.ts +28 -1
- package/dist/{features → src/features}/onboarding-flow/providers/onboardingStateMachine.js +38 -4
- package/dist/src/features/onboarding-flow/providers/onboardingStateMachine.js.map +1 -0
- package/dist/src/features/onboarding-flow/screens/00-EntrySelectionScreen.d.ts +4 -0
- package/dist/src/features/onboarding-flow/screens/00-EntrySelectionScreen.js +32 -0
- package/dist/src/features/onboarding-flow/screens/00-EntrySelectionScreen.js.map +1 -0
- package/dist/src/features/onboarding-flow/screens/01-ConnectWalletScreen.d.ts +5 -0
- package/dist/{features → src/features}/onboarding-flow/screens/01-ConnectWalletScreen.js +5 -0
- package/dist/src/features/onboarding-flow/screens/01-ConnectWalletScreen.js.map +1 -0
- package/dist/src/features/onboarding-flow/screens/02-TurnkeyAuthScreen.d.ts +1 -0
- package/dist/src/features/onboarding-flow/screens/02-TurnkeyAuthScreen.js +25 -0
- package/dist/src/features/onboarding-flow/screens/02-TurnkeyAuthScreen.js.map +1 -0
- package/dist/src/features/onboarding-flow/screens/03-TurnkeyPreparingScreen.d.ts +1 -0
- package/dist/src/features/onboarding-flow/screens/03-TurnkeyPreparingScreen.js +25 -0
- package/dist/src/features/onboarding-flow/screens/03-TurnkeyPreparingScreen.js.map +1 -0
- package/dist/{features/onboarding-flow/screens/02-ChainSelectionScreen.d.ts → src/features/onboarding-flow/screens/04-ChainSelectionScreen.d.ts} +11 -11
- package/dist/{features/onboarding-flow/screens/02-ChainSelectionScreen.js → src/features/onboarding-flow/screens/04-ChainSelectionScreen.js} +60 -30
- package/dist/src/features/onboarding-flow/screens/04-ChainSelectionScreen.js.map +1 -0
- package/dist/src/features/onboarding-flow/screens/05-AmountInputScreen.d.ts +11 -0
- package/dist/src/features/onboarding-flow/screens/05-AmountInputScreen.js +585 -0
- package/dist/src/features/onboarding-flow/screens/05-AmountInputScreen.js.map +1 -0
- package/dist/{features/onboarding-flow/screens/04-DepositProgressScreen.d.ts → src/features/onboarding-flow/screens/06-DepositProgressScreen.d.ts} +5 -0
- package/dist/src/features/onboarding-flow/screens/06-DepositProgressScreen.js +367 -0
- package/dist/src/features/onboarding-flow/screens/06-DepositProgressScreen.js.map +1 -0
- package/dist/src/features/onboarding-flow/screens/07-DepositSuccessScreen.d.ts +6 -0
- package/dist/{features/onboarding-flow/screens/05-DepositSuccessScreen.js → src/features/onboarding-flow/screens/07-DepositSuccessScreen.js} +12 -6
- package/dist/src/features/onboarding-flow/screens/07-DepositSuccessScreen.js.map +1 -0
- package/dist/src/features/onboarding-flow/screens/08-AuthLoadingScreen.d.ts +5 -0
- package/dist/{features/onboarding-flow/screens/06-AuthLoadingScreen.js → src/features/onboarding-flow/screens/08-AuthLoadingScreen.js} +6 -2
- package/dist/src/features/onboarding-flow/screens/08-AuthLoadingScreen.js.map +1 -0
- package/dist/src/features/onboarding-flow/screens/09-ErrorScreen.d.ts +5 -0
- package/dist/src/features/onboarding-flow/screens/09-ErrorScreen.js +43 -0
- package/dist/src/features/onboarding-flow/screens/09-ErrorScreen.js.map +1 -0
- package/dist/src/features/onboarding-flow/screens/index.d.ts +10 -0
- package/dist/src/features/onboarding-flow/screens/index.js +11 -0
- package/dist/src/features/onboarding-flow/screens/index.js.map +1 -0
- package/dist/src/features/onboarding-flow/turnkey/turnkeySessionMachine.d.ts +1 -0
- package/dist/src/features/onboarding-flow/turnkey/turnkeySessionMachine.js +2 -0
- package/dist/src/features/onboarding-flow/turnkey/turnkeySessionMachine.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/types.d.ts +38 -11
- package/dist/{features → src/features}/onboarding-flow/types.js +5 -0
- package/dist/src/features/onboarding-flow/types.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/bridgeUtils.d.ts +6 -0
- package/dist/src/features/onboarding-flow/utils/bridgeUtils.js +34 -0
- package/dist/src/features/onboarding-flow/utils/bridgeUtils.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/deposit/attestationUtils.d.ts +29 -0
- package/dist/src/features/onboarding-flow/utils/deposit/attestationUtils.js +82 -0
- package/dist/src/features/onboarding-flow/utils/deposit/attestationUtils.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/deposit/bridgeUtils.d.ts +5 -0
- package/dist/src/features/onboarding-flow/utils/deposit/bridgeUtils.js +10 -0
- package/dist/src/features/onboarding-flow/utils/deposit/bridgeUtils.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/deposit/claimConfirmation.d.ts +14 -0
- package/dist/src/features/onboarding-flow/utils/deposit/claimConfirmation.js +94 -0
- package/dist/src/features/onboarding-flow/utils/deposit/claimConfirmation.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/deposit/claimSubmission.d.ts +25 -0
- package/dist/src/features/onboarding-flow/utils/deposit/claimSubmission.js +212 -0
- package/dist/src/features/onboarding-flow/utils/deposit/claimSubmission.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/deposit/depositPolling.d.ts +37 -0
- package/dist/src/features/onboarding-flow/utils/deposit/depositPolling.js +199 -0
- package/dist/src/features/onboarding-flow/utils/deposit/depositPolling.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/deposit/evmTxInterceptor.d.ts +27 -0
- package/dist/src/features/onboarding-flow/utils/deposit/evmTxInterceptor.js +149 -0
- package/dist/src/features/onboarding-flow/utils/deposit/evmTxInterceptor.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/deposit/nonceUtils.d.ts +5 -0
- package/dist/src/features/onboarding-flow/utils/deposit/nonceUtils.js +121 -0
- package/dist/src/features/onboarding-flow/utils/deposit/nonceUtils.js.map +1 -0
- package/dist/{features/onboarding-flow/utils/transaction.d.ts → src/features/onboarding-flow/utils/deposit/solanaDepositTransaction.d.ts} +3 -3
- package/dist/src/features/onboarding-flow/utils/deposit/solanaDepositTransaction.js +8 -0
- package/dist/src/features/onboarding-flow/utils/deposit/solanaDepositTransaction.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/deposit/solanaUtils.d.ts +12 -0
- package/dist/src/features/onboarding-flow/utils/deposit/solanaUtils.js +150 -0
- package/dist/src/features/onboarding-flow/utils/deposit/solanaUtils.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/deposit/storage.d.ts +52 -0
- package/dist/src/features/onboarding-flow/utils/deposit/storage.js +243 -0
- package/dist/src/features/onboarding-flow/utils/deposit/storage.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/deposit/walletUtils.d.ts +36 -0
- package/dist/src/features/onboarding-flow/utils/deposit/walletUtils.js +304 -0
- package/dist/src/features/onboarding-flow/utils/deposit/walletUtils.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/depositPolling.d.ts +1 -0
- package/dist/src/features/onboarding-flow/utils/depositPolling.js +3 -0
- package/dist/src/features/onboarding-flow/utils/depositPolling.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/explorerUrl.d.ts +14 -0
- package/dist/src/features/onboarding-flow/utils/explorerUrl.js +44 -0
- package/dist/src/features/onboarding-flow/utils/explorerUrl.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/nordUtils.d.ts +8 -0
- package/dist/{features/onboarding-flow/utils/nordUser.js → src/features/onboarding-flow/utils/nordUtils.js} +14 -1
- package/dist/src/features/onboarding-flow/utils/nordUtils.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/pendingDepositCookie.d.ts +13 -0
- package/dist/src/features/onboarding-flow/utils/pendingDepositCookie.js +15 -0
- package/dist/src/features/onboarding-flow/utils/pendingDepositCookie.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/pendingDepositStorage.d.ts +15 -0
- package/dist/src/features/onboarding-flow/utils/pendingDepositStorage.js +94 -0
- package/dist/src/features/onboarding-flow/utils/pendingDepositStorage.js.map +1 -0
- package/dist/{features → src/features}/onboarding-flow/utils/utils.d.ts +9 -2
- package/dist/{features → src/features}/onboarding-flow/utils/utils.js +9 -4
- package/dist/src/features/onboarding-flow/utils/utils.js.map +1 -0
- package/dist/src/features/onboarding-flow/utils/withImageFallback.d.ts +6 -0
- package/dist/{features → src/features}/onboarding-flow/utils/withImageFallback.js +2 -3
- package/dist/src/features/onboarding-flow/utils/withImageFallback.js.map +1 -0
- package/dist/src/hooks/index.js.map +1 -0
- package/dist/src/hooks/useN1Wallet.d.ts +12 -0
- package/dist/{hooks → src/hooks}/useN1Wallet.js +10 -0
- package/dist/src/hooks/useN1Wallet.js.map +1 -0
- package/dist/src/hooks/useNordUserInitialization.d.ts +12 -0
- package/dist/{hooks → src/hooks}/useNordUserInitialization.js +74 -33
- package/dist/src/hooks/useNordUserInitialization.js.map +1 -0
- package/dist/src/index.d.ts +9 -0
- package/dist/src/index.js +16 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/providers/LazyWalletProvider.d.ts +4 -0
- package/dist/src/providers/LazyWalletProvider.js +404 -0
- package/dist/src/providers/LazyWalletProvider.js.map +1 -0
- package/dist/src/providers/N1WalletProvider/ContextBridge.d.ts +28 -0
- package/dist/src/providers/N1WalletProvider/ContextBridge.js +273 -0
- package/dist/src/providers/N1WalletProvider/ContextBridge.js.map +1 -0
- package/dist/src/providers/N1WalletProvider/ModalProvider.d.ts +113 -0
- package/dist/src/providers/N1WalletProvider/ModalProvider.js +319 -0
- package/dist/src/providers/N1WalletProvider/ModalProvider.js.map +1 -0
- package/dist/src/providers/N1WalletProvider/NetworkProvider.d.ts +88 -0
- package/dist/src/providers/N1WalletProvider/NetworkProvider.js +252 -0
- package/dist/src/providers/N1WalletProvider/NetworkProvider.js.map +1 -0
- package/dist/src/providers/N1WalletProvider/SessionProvider.d.ts +71 -0
- package/dist/src/providers/N1WalletProvider/SessionProvider.js +187 -0
- package/dist/src/providers/N1WalletProvider/SessionProvider.js.map +1 -0
- package/dist/src/providers/N1WalletProvider/SigningProvider.d.ts +58 -0
- package/dist/src/providers/N1WalletProvider/SigningProvider.js +134 -0
- package/dist/src/providers/N1WalletProvider/SigningProvider.js.map +1 -0
- package/dist/src/providers/N1WalletProvider/ThemingProvider.d.ts +50 -0
- package/dist/src/providers/N1WalletProvider/ThemingProvider.js +102 -0
- package/dist/src/providers/N1WalletProvider/ThemingProvider.js.map +1 -0
- package/dist/src/providers/N1WalletProvider/index.d.ts +21 -0
- package/dist/src/providers/N1WalletProvider/index.js +27 -0
- package/dist/src/providers/N1WalletProvider/index.js.map +1 -0
- package/dist/src/providers/N1WalletProvider.d.ts +17 -0
- package/dist/src/providers/N1WalletProvider.js +102 -0
- package/dist/src/providers/N1WalletProvider.js.map +1 -0
- package/dist/{providers → src/providers}/ShadowRootWrapper.d.ts +4 -0
- package/dist/{providers → src/providers}/ShadowRootWrapper.js +4 -5
- package/dist/src/providers/ShadowRootWrapper.js.map +1 -0
- package/dist/{providers → src/providers}/WalletErrorBoundary.d.ts +7 -2
- package/dist/{providers → src/providers}/WalletErrorBoundary.js +5 -1
- package/dist/src/providers/WalletErrorBoundary.js.map +1 -0
- package/dist/src/services/bootstrap/DepositRecoveryService.d.ts +64 -0
- package/dist/src/services/bootstrap/DepositRecoveryService.js +245 -0
- package/dist/src/services/bootstrap/DepositRecoveryService.js.map +1 -0
- package/dist/src/services/bootstrap/DynamicSdkService.d.ts +62 -0
- package/dist/src/services/bootstrap/DynamicSdkService.js +335 -0
- package/dist/src/services/bootstrap/DynamicSdkService.js.map +1 -0
- package/dist/src/services/bootstrap/SessionBootstrapService.d.ts +78 -0
- package/dist/src/services/bootstrap/SessionBootstrapService.js +280 -0
- package/dist/src/services/bootstrap/SessionBootstrapService.js.map +1 -0
- package/dist/src/services/bootstrap/TurnkeyBootstrapService.d.ts +92 -0
- package/dist/src/services/bootstrap/TurnkeyBootstrapService.js +253 -0
- package/dist/src/services/bootstrap/TurnkeyBootstrapService.js.map +1 -0
- package/dist/src/services/bootstrap/index.d.ts +13 -0
- package/dist/src/services/bootstrap/index.js +16 -0
- package/dist/src/services/bootstrap/index.js.map +1 -0
- package/dist/src/services/bootstrap/types.d.ts +92 -0
- package/dist/src/services/bootstrap/types.js +7 -0
- package/dist/src/services/bootstrap/types.js.map +1 -0
- package/dist/src/services/storage/StorageService.d.ts +98 -0
- package/dist/src/services/storage/StorageService.js +360 -0
- package/dist/src/services/storage/StorageService.js.map +1 -0
- package/dist/src/services/storage/index.d.ts +9 -0
- package/dist/src/services/storage/index.js +10 -0
- package/dist/src/services/storage/index.js.map +1 -0
- package/dist/src/services/storage/keys.d.ts +28 -0
- package/dist/src/services/storage/keys.js +45 -0
- package/dist/src/services/storage/keys.js.map +1 -0
- package/dist/src/services/storage/types.d.ts +73 -0
- package/dist/src/services/storage/types.js +23 -0
- package/dist/src/services/storage/types.js.map +1 -0
- package/dist/src/store/index.d.ts +8 -0
- package/dist/src/store/index.js +24 -0
- package/dist/src/store/index.js.map +1 -0
- package/dist/src/store/selectors.d.ts +105 -0
- package/dist/src/store/selectors.js +183 -0
- package/dist/src/store/selectors.js.map +1 -0
- package/dist/src/store/slices/bootstrapSlice.d.ts +64 -0
- package/dist/src/store/slices/bootstrapSlice.js +78 -0
- package/dist/src/store/slices/bootstrapSlice.js.map +1 -0
- package/dist/src/store/slices/configSlice.d.ts +7 -0
- package/dist/src/store/slices/configSlice.js +14 -0
- package/dist/src/store/slices/configSlice.js.map +1 -0
- package/dist/src/store/slices/index.d.ts +10 -0
- package/dist/src/store/slices/index.js +10 -0
- package/dist/src/store/slices/index.js.map +1 -0
- package/dist/src/store/slices/sessionSlice.d.ts +7 -0
- package/dist/src/store/slices/sessionSlice.js +17 -0
- package/dist/src/store/slices/sessionSlice.js.map +1 -0
- package/dist/src/store/slices/signingSlice.d.ts +7 -0
- package/dist/src/store/slices/signingSlice.js +14 -0
- package/dist/src/store/slices/signingSlice.js.map +1 -0
- package/dist/src/store/slices/uiSlice.d.ts +9 -0
- package/dist/src/store/slices/uiSlice.js +25 -0
- package/dist/src/store/slices/uiSlice.js.map +1 -0
- package/dist/src/store/slices/walletSlice.d.ts +7 -0
- package/dist/src/store/slices/walletSlice.js +21 -0
- package/dist/src/store/slices/walletSlice.js.map +1 -0
- package/dist/src/store/store.d.ts +50 -0
- package/dist/src/store/store.js +259 -0
- package/dist/src/store/store.js.map +1 -0
- package/dist/src/store/subscriptions/depositPersistence.d.ts +32 -0
- package/dist/src/store/subscriptions/depositPersistence.js +106 -0
- package/dist/src/store/subscriptions/depositPersistence.js.map +1 -0
- package/dist/src/store/subscriptions/index.d.ts +34 -0
- package/dist/src/store/subscriptions/index.js +73 -0
- package/dist/src/store/subscriptions/index.js.map +1 -0
- package/dist/src/store/subscriptions/turnkeyPersistence.d.ts +42 -0
- package/dist/src/store/subscriptions/turnkeyPersistence.js +127 -0
- package/dist/src/store/subscriptions/turnkeyPersistence.js.map +1 -0
- package/dist/src/store/types.d.ts +166 -0
- package/dist/src/store/types.js +7 -0
- package/dist/src/store/types.js.map +1 -0
- package/dist/src/styles/cdn-fonts.d.ts +12 -0
- package/dist/{styles → src/styles}/cdn-fonts.js +20 -2
- package/dist/src/styles/cdn-fonts.js.map +1 -0
- package/dist/src/styles/embedded-main-css.d.ts +2 -0
- package/dist/src/styles/embedded-main-css.js +3 -0
- package/dist/src/styles/embedded-main-css.js.map +1 -0
- package/dist/src/turnkey/TurnkeyProvider.d.ts +21 -0
- package/dist/src/turnkey/TurnkeyProvider.js +695 -0
- package/dist/src/turnkey/TurnkeyProvider.js.map +1 -0
- package/dist/src/turnkey/createTurnkeyWallet.d.ts +39 -0
- package/dist/src/turnkey/createTurnkeyWallet.js +319 -0
- package/dist/src/turnkey/createTurnkeyWallet.js.map +1 -0
- package/dist/src/turnkey/createWalletProvider.d.ts +8 -0
- package/dist/src/turnkey/createWalletProvider.js +286 -0
- package/dist/src/turnkey/createWalletProvider.js.map +1 -0
- package/dist/src/turnkey/index.d.ts +3 -0
- package/dist/src/turnkey/index.js +3 -0
- package/dist/src/turnkey/index.js.map +1 -0
- package/dist/src/turnkey/turnkeySessionMachine.d.ts +39 -0
- package/dist/src/turnkey/turnkeySessionMachine.js +77 -0
- package/dist/src/turnkey/turnkeySessionMachine.js.map +1 -0
- package/dist/src/turnkey/turnkeySessionStorage.d.ts +48 -0
- package/dist/src/turnkey/turnkeySessionStorage.js +183 -0
- package/dist/src/turnkey/turnkeySessionStorage.js.map +1 -0
- package/dist/src/turnkey/types.d.ts +61 -0
- package/dist/src/turnkey/types.js +12 -0
- package/dist/src/turnkey/types.js.map +1 -0
- package/dist/{types → src/types}/wallet.d.ts +39 -13
- package/dist/src/types/wallet.js.map +1 -0
- package/dist/src/utils/address.d.ts +130 -0
- package/dist/src/utils/address.js +274 -0
- package/dist/src/utils/address.js.map +1 -0
- package/dist/src/utils/chain.d.ts +89 -0
- package/dist/src/utils/chain.js +282 -0
- package/dist/src/utils/chain.js.map +1 -0
- package/dist/{utils → src/utils}/ed25519.d.ts +0 -2
- package/dist/{utils → src/utils}/ed25519.js +5 -20
- package/dist/src/utils/ed25519.js.map +1 -0
- package/dist/src/utils/errors.d.ts +68 -0
- package/dist/src/utils/errors.js +190 -0
- package/dist/src/utils/errors.js.map +1 -0
- package/dist/src/utils/events.d.ts +124 -0
- package/dist/src/utils/events.js +155 -0
- package/dist/src/utils/events.js.map +1 -0
- package/dist/src/utils/formatAmount.d.ts +4 -0
- package/dist/src/utils/formatAmount.js +9 -0
- package/dist/src/utils/formatAmount.js.map +1 -0
- package/dist/src/utils/logger.d.ts +45 -0
- package/dist/{utils → src/utils}/logger.js +68 -2
- package/dist/src/utils/logger.js.map +1 -0
- package/dist/src/utils/shortenString.d.ts +5 -0
- package/dist/src/utils/shortenString.js +16 -0
- package/dist/src/utils/shortenString.js.map +1 -0
- package/package.json +45 -29
- package/dist/animations/N1Loader.js.map +0 -1
- package/dist/animations/Processing.js.map +0 -1
- package/dist/components/LoadingFallback.js.map +0 -1
- package/dist/components/Logo.js.map +0 -1
- package/dist/components/N1ConnectButton.d.ts +0 -5
- package/dist/components/N1ConnectButton.js +0 -49
- package/dist/components/N1ConnectButton.js.map +0 -1
- package/dist/components/logos/ArbitrumLogo.js.map +0 -1
- package/dist/components/logos/BaseLogo.js +0 -6
- package/dist/components/logos/BaseLogo.js.map +0 -1
- package/dist/components/logos/BeraLogo.js.map +0 -1
- package/dist/components/logos/BitcoinLogo.js.map +0 -1
- package/dist/components/logos/EthereumLogo.js.map +0 -1
- package/dist/components/logos/HyperliquidLogo.js.map +0 -1
- package/dist/components/logos/OptimismLogo.js.map +0 -1
- package/dist/components/logos/SolanaLogo.js.map +0 -1
- package/dist/components/logos/ZeroOneLogo.js.map +0 -1
- package/dist/components/logos/index.js.map +0 -1
- package/dist/config/chains.d.ts +0 -0
- package/dist/config/chains.js +0 -2
- package/dist/config/chains.js.map +0 -1
- package/dist/config/solana.js.map +0 -1
- package/dist/config.d.ts +0 -2
- package/dist/config.js +0 -3
- package/dist/config.js.map +0 -1
- package/dist/context/n1-wallet-context.js.map +0 -1
- package/dist/errors/types.d.ts +0 -25
- package/dist/errors/types.js +0 -77
- package/dist/errors/types.js.map +0 -1
- package/dist/features/onboarding-flow/N1WalletModal.js.map +0 -1
- package/dist/features/onboarding-flow/OnboardingFlow.js.map +0 -1
- package/dist/features/onboarding-flow/components/ChainButton.js +0 -21
- package/dist/features/onboarding-flow/components/ChainButton.js.map +0 -1
- package/dist/features/onboarding-flow/components/Header.js +0 -45
- package/dist/features/onboarding-flow/components/Header.js.map +0 -1
- package/dist/features/onboarding-flow/components/ImageWithFallback.js +0 -63
- package/dist/features/onboarding-flow/components/ImageWithFallback.js.map +0 -1
- package/dist/features/onboarding-flow/components/TransactionTable.js.map +0 -1
- package/dist/features/onboarding-flow/components/WaitingMessage.js.map +0 -1
- package/dist/features/onboarding-flow/components/index.js.map +0 -1
- package/dist/features/onboarding-flow/index.js.map +0 -1
- package/dist/features/onboarding-flow/providers/DepositFlowProvider.js +0 -525
- package/dist/features/onboarding-flow/providers/DepositFlowProvider.js.map +0 -1
- package/dist/features/onboarding-flow/providers/OnboardingStateProvider.js +0 -185
- package/dist/features/onboarding-flow/providers/OnboardingStateProvider.js.map +0 -1
- package/dist/features/onboarding-flow/providers/StateProvider.js.map +0 -1
- package/dist/features/onboarding-flow/providers/WalletConnectionProvider.js +0 -394
- package/dist/features/onboarding-flow/providers/WalletConnectionProvider.js.map +0 -1
- package/dist/features/onboarding-flow/providers/debug.js.map +0 -1
- package/dist/features/onboarding-flow/providers/index.js.map +0 -1
- package/dist/features/onboarding-flow/providers/onboardingStateMachine.js.map +0 -1
- package/dist/features/onboarding-flow/screens/01-ConnectWalletScreen.d.ts +0 -1
- package/dist/features/onboarding-flow/screens/01-ConnectWalletScreen.js.map +0 -1
- package/dist/features/onboarding-flow/screens/02-ChainSelectionScreen.js.map +0 -1
- package/dist/features/onboarding-flow/screens/03-AmountInputScreen.d.ts +0 -6
- package/dist/features/onboarding-flow/screens/03-AmountInputScreen.js +0 -360
- package/dist/features/onboarding-flow/screens/03-AmountInputScreen.js.map +0 -1
- package/dist/features/onboarding-flow/screens/04-DepositProgressScreen.js +0 -31
- package/dist/features/onboarding-flow/screens/04-DepositProgressScreen.js.map +0 -1
- package/dist/features/onboarding-flow/screens/05-DepositSuccessScreen.d.ts +0 -1
- package/dist/features/onboarding-flow/screens/05-DepositSuccessScreen.js.map +0 -1
- package/dist/features/onboarding-flow/screens/06-AuthLoadingScreen.d.ts +0 -1
- package/dist/features/onboarding-flow/screens/06-AuthLoadingScreen.js.map +0 -1
- package/dist/features/onboarding-flow/screens/07-ErrorScreen.d.ts +0 -1
- package/dist/features/onboarding-flow/screens/07-ErrorScreen.js +0 -14
- package/dist/features/onboarding-flow/screens/07-ErrorScreen.js.map +0 -1
- package/dist/features/onboarding-flow/screens/index.d.ts +0 -7
- package/dist/features/onboarding-flow/screens/index.js +0 -8
- package/dist/features/onboarding-flow/screens/index.js.map +0 -1
- package/dist/features/onboarding-flow/types.js.map +0 -1
- package/dist/features/onboarding-flow/utils/depositStorage.d.ts +0 -4
- package/dist/features/onboarding-flow/utils/depositStorage.js +0 -48
- package/dist/features/onboarding-flow/utils/depositStorage.js.map +0 -1
- package/dist/features/onboarding-flow/utils/imageUtils.d.ts +0 -21
- package/dist/features/onboarding-flow/utils/imageUtils.js +0 -110
- package/dist/features/onboarding-flow/utils/imageUtils.js.map +0 -1
- package/dist/features/onboarding-flow/utils/nordUser.d.ts +0 -1
- package/dist/features/onboarding-flow/utils/nordUser.js.map +0 -1
- package/dist/features/onboarding-flow/utils/nordUtils.d.ts +0 -40
- package/dist/features/onboarding-flow/utils/nordUtils.js +0 -64
- package/dist/features/onboarding-flow/utils/nordUtils.js.map +0 -1
- package/dist/features/onboarding-flow/utils/session.d.ts +0 -17
- package/dist/features/onboarding-flow/utils/session.js +0 -69
- package/dist/features/onboarding-flow/utils/session.js.map +0 -1
- package/dist/features/onboarding-flow/utils/transaction.js +0 -8
- package/dist/features/onboarding-flow/utils/transaction.js.map +0 -1
- package/dist/features/onboarding-flow/utils/utils.js.map +0 -1
- package/dist/features/onboarding-flow/utils/withImageFallback.d.ts +0 -7
- package/dist/features/onboarding-flow/utils/withImageFallback.js.map +0 -1
- package/dist/hooks/index.js.map +0 -1
- package/dist/hooks/useN1Wallet.d.ts +0 -2
- package/dist/hooks/useN1Wallet.js.map +0 -1
- package/dist/hooks/useNordUserInitialization.d.ts +0 -1
- package/dist/hooks/useNordUserInitialization.js.map +0 -1
- package/dist/index.d.ts +0 -7
- package/dist/index.js +0 -8
- package/dist/index.js.map +0 -1
- package/dist/polyfills/windowEthereumGuard.d.ts +0 -6
- package/dist/polyfills/windowEthereumGuard.js +0 -28
- package/dist/polyfills/windowEthereumGuard.js.map +0 -1
- package/dist/providers/LazyWalletProvider.d.ts +0 -1
- package/dist/providers/LazyWalletProvider.js +0 -230
- package/dist/providers/LazyWalletProvider.js.map +0 -1
- package/dist/providers/N1WalletProvider.d.ts +0 -3
- package/dist/providers/N1WalletProvider.js +0 -271
- package/dist/providers/N1WalletProvider.js.map +0 -1
- package/dist/providers/ShadowRootWrapper.js.map +0 -1
- package/dist/providers/WalletErrorBoundary.js.map +0 -1
- package/dist/styles/cdn-fonts.d.ts +0 -1
- package/dist/styles/cdn-fonts.js.map +0 -1
- package/dist/styles/embedded-main-css.d.ts +0 -2
- package/dist/styles/embedded-main-css.js +0 -3
- package/dist/styles/embedded-main-css.js.map +0 -1
- package/dist/types/wallet.js.map +0 -1
- package/dist/utils/ed25519.js.map +0 -1
- package/dist/utils/getPseudoName.d.ts +0 -1
- package/dist/utils/getPseudoName.js +0 -5826
- package/dist/utils/getPseudoName.js.map +0 -1
- package/dist/utils/logger.d.ts +0 -21
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/shortenString.d.ts +0 -2
- package/dist/utils/shortenString.js +0 -9
- package/dist/utils/shortenString.js.map +0 -1
- package/dist/utils/words.d.ts +0 -9
- package/dist/utils/words.js +0 -93572
- package/dist/utils/words.js.map +0 -1
- /package/dist/{animations → src/animations}/N1Loader.d.ts +0 -0
- /package/dist/{animations → src/animations}/N1Loader.js +0 -0
- /package/dist/{animations → src/animations}/Processing.d.ts +0 -0
- /package/dist/{animations → src/animations}/Processing.js +0 -0
- /package/dist/{components → src/components}/logos/ArbitrumLogo.d.ts +0 -0
- /package/dist/{components → src/components}/logos/ArbitrumLogo.js +0 -0
- /package/dist/{components → src/components}/logos/BaseLogo.d.ts +0 -0
- /package/dist/{components → src/components}/logos/BeraLogo.d.ts +0 -0
- /package/dist/{components → src/components}/logos/BeraLogo.js +0 -0
- /package/dist/{components → src/components}/logos/BitcoinLogo.d.ts +0 -0
- /package/dist/{components → src/components}/logos/BitcoinLogo.js +0 -0
- /package/dist/{components → src/components}/logos/EthereumLogo.d.ts +0 -0
- /package/dist/{components → src/components}/logos/EthereumLogo.js +0 -0
- /package/dist/{components → src/components}/logos/HyperliquidLogo.d.ts +0 -0
- /package/dist/{components → src/components}/logos/OptimismLogo.d.ts +0 -0
- /package/dist/{components → src/components}/logos/OptimismLogo.js +0 -0
- /package/dist/{components → src/components}/logos/SolanaLogo.d.ts +0 -0
- /package/dist/{components → src/components}/logos/SolanaLogo.js +0 -0
- /package/dist/{components → src/components}/logos/ZeroOneLogo.d.ts +0 -0
- /package/dist/{components → src/components}/logos/ZeroOneLogo.js +0 -0
- /package/dist/{components → src/components}/logos/index.d.ts +0 -0
- /package/dist/{components → src/components}/logos/index.js +0 -0
- /package/dist/{config → src/config}/solana.d.ts +0 -0
- /package/dist/{config → src/config}/solana.js +0 -0
- /package/dist/{context → src/context}/n1-wallet-context.d.ts +0 -0
- /package/dist/{context → src/context}/n1-wallet-context.js +0 -0
- /package/dist/{features → src/features}/onboarding-flow/N1WalletModal.d.ts +0 -0
- /package/dist/{features → src/features}/onboarding-flow/components/WaitingMessage.js +0 -0
- /package/dist/{features → src/features}/onboarding-flow/components/index.d.ts +0 -0
- /package/dist/{features → src/features}/onboarding-flow/components/index.js +0 -0
- /package/dist/{features → src/features}/onboarding-flow/index.d.ts +0 -0
- /package/dist/{features → src/features}/onboarding-flow/index.js +0 -0
- /package/dist/{features → src/features}/onboarding-flow/providers/debug.d.ts +0 -0
- /package/dist/{features → src/features}/onboarding-flow/providers/index.d.ts +0 -0
- /package/dist/{features → src/features}/onboarding-flow/providers/index.js +0 -0
- /package/dist/{hooks → src/hooks}/index.d.ts +0 -0
- /package/dist/{hooks → src/hooks}/index.js +0 -0
- /package/dist/{types → src/types}/wallet.js +0 -0
|
@@ -0,0 +1,391 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
11
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
12
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
13
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
14
|
+
function step(op) {
|
|
15
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
16
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
17
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
18
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
19
|
+
switch (op[0]) {
|
|
20
|
+
case 0: case 1: t = op; break;
|
|
21
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
22
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
23
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
24
|
+
default:
|
|
25
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
26
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
27
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
28
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
29
|
+
if (t[2]) _.ops.pop();
|
|
30
|
+
_.trys.pop(); continue;
|
|
31
|
+
}
|
|
32
|
+
op = body.call(thisArg, _);
|
|
33
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
34
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
import { logger } from '../../../utils/logger';
|
|
38
|
+
import { createDepositError, createNetworkError } from '../../../utils/errors';
|
|
39
|
+
import { explorerBaseForChain } from '../utils/explorerUrl';
|
|
40
|
+
import { BridgeKit } from '@circle-fin/bridge-kit';
|
|
41
|
+
import { createAdapterFromProvider } from '@circle-fin/adapter-viem-v2';
|
|
42
|
+
import { SolanaDevnet, ArbitrumSepolia, BaseSepolia, EthereumSepolia } from '@circle-fin/bridge-kit/chains';
|
|
43
|
+
var findExplorerUrl = function (steps) {
|
|
44
|
+
var _a;
|
|
45
|
+
var withUrl = steps.find(function (s) { return s.explorerUrl; });
|
|
46
|
+
return (_a = withUrl === null || withUrl === void 0 ? void 0 : withUrl.explorerUrl) !== null && _a !== void 0 ? _a : null;
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Maps normalized chain names to BridgeKit's chain definition objects.
|
|
50
|
+
*/
|
|
51
|
+
export var mapChainToBridgeKit = function (chain) {
|
|
52
|
+
if (!chain || typeof chain !== 'string') {
|
|
53
|
+
logger.logError(createNetworkError('CHAIN_UNSUPPORTED', "Invalid chain identifier: ".concat(chain), {
|
|
54
|
+
context: { chain: chain },
|
|
55
|
+
}));
|
|
56
|
+
throw new Error("Invalid chain identifier: ".concat(chain, ". Expected a valid chain name string."));
|
|
57
|
+
}
|
|
58
|
+
var lower = chain.toLowerCase().trim();
|
|
59
|
+
if (!lower) {
|
|
60
|
+
logger.logError(createNetworkError('CHAIN_UNSUPPORTED', 'Empty chain string provided'));
|
|
61
|
+
throw new Error('Chain identifier cannot be empty.');
|
|
62
|
+
}
|
|
63
|
+
if (lower === 'arbitrum' || lower === 'arb') {
|
|
64
|
+
return ArbitrumSepolia;
|
|
65
|
+
}
|
|
66
|
+
if (lower === 'solana') {
|
|
67
|
+
return SolanaDevnet;
|
|
68
|
+
}
|
|
69
|
+
if (lower === 'base') {
|
|
70
|
+
return BaseSepolia;
|
|
71
|
+
}
|
|
72
|
+
if (lower === 'ethereum' || lower === 'evm') {
|
|
73
|
+
return EthereumSepolia;
|
|
74
|
+
}
|
|
75
|
+
// For other chains, log a warning and throw an error instead of returning as-is
|
|
76
|
+
// This helps catch configuration issues early
|
|
77
|
+
logger.logError(createNetworkError('CHAIN_UNSUPPORTED', "Unsupported chain \"".concat(chain, "\""), {
|
|
78
|
+
context: { chain: chain, lower: lower },
|
|
79
|
+
}));
|
|
80
|
+
throw new Error("Unsupported chain \"".concat(chain, "\". Supported chains: arbitrum, base, ethereum, solana"));
|
|
81
|
+
};
|
|
82
|
+
export var getDomain = function (chain) {
|
|
83
|
+
var _a;
|
|
84
|
+
return (_a = chain === null || chain === void 0 ? void 0 : chain.cctp) === null || _a === void 0 ? void 0 : _a.domain;
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* Bridge Kit client wrapper. Keeps network interactions isolated for auditability.
|
|
88
|
+
*/
|
|
89
|
+
var BridgeKitClient = /** @class */ (function () {
|
|
90
|
+
function BridgeKitClient() {
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Parses Bridge Kit response to extract transaction hashes and attestation ID.
|
|
94
|
+
* Handles variations in step naming and falls back to timestamp-based deposit ID if needed.
|
|
95
|
+
*/
|
|
96
|
+
BridgeKitClient.prototype.parseSubmitResponse = function (response) {
|
|
97
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
98
|
+
var steps = (_a = response.steps) !== null && _a !== void 0 ? _a : [];
|
|
99
|
+
var approve = steps.find(function (s) { return s.name === 'approve' || s.name === 'APPROVE'; });
|
|
100
|
+
var burn = steps.find(function (s) { return s.name === 'burn' || s.name === 'BURN' || s.name === 'bridge'; });
|
|
101
|
+
// FIX: Do NOT fall back to approve.txHash. We need the burn/bridge tx for attestation.
|
|
102
|
+
// If burn is missing, we shouldn't consider this a successful bridge submission.
|
|
103
|
+
var bridgeTxId = (_d = (_b = burn === null || burn === void 0 ? void 0 : burn.txHash) !== null && _b !== void 0 ? _b : (_c = burn === null || burn === void 0 ? void 0 : burn.data) === null || _c === void 0 ? void 0 : _c.txHash) !== null && _d !== void 0 ? _d : '';
|
|
104
|
+
var attestationId = (_f = (_e = burn === null || burn === void 0 ? void 0 : burn.data) === null || _e === void 0 ? void 0 : _e.attestationId) !== null && _f !== void 0 ? _f : null;
|
|
105
|
+
var explorerUrl = (_j = (_h = (_g = burn === null || burn === void 0 ? void 0 : burn.explorerUrl) !== null && _g !== void 0 ? _g : approve === null || approve === void 0 ? void 0 : approve.explorerUrl) !== null && _h !== void 0 ? _h : findExplorerUrl(steps)) !== null && _j !== void 0 ? _j : (bridgeTxId ? "".concat((_k = explorerBaseForChain('ethereum')) !== null && _k !== void 0 ? _k : '', "/").concat(bridgeTxId) : null);
|
|
106
|
+
// If we have no bridge transaction hash, we can't proceed with CCTP flow.
|
|
107
|
+
// This happens if the user approved but rejected the burn, or if bridge-kit failed to capture it.
|
|
108
|
+
if (!bridgeTxId) {
|
|
109
|
+
var stepNames = steps.map(function (s) { return s.name; }).join(', ');
|
|
110
|
+
logger.logError(createDepositError('BRIDGE_FAILED', 'Missing bridge (burn) tx hash in Bridge Kit response', {
|
|
111
|
+
context: { stepNames: stepNames },
|
|
112
|
+
}));
|
|
113
|
+
// Throwing here triggers the cleanup in useBridgeDeposit
|
|
114
|
+
throw new Error('Bridge transaction failed: No burn transaction found. Please try again.');
|
|
115
|
+
}
|
|
116
|
+
var depositId = bridgeTxId;
|
|
117
|
+
return {
|
|
118
|
+
bridgeTxId: bridgeTxId,
|
|
119
|
+
depositId: depositId,
|
|
120
|
+
attestationId: attestationId,
|
|
121
|
+
explorerUrl: explorerUrl,
|
|
122
|
+
};
|
|
123
|
+
};
|
|
124
|
+
BridgeKitClient.prototype.submitBridge = function (params) {
|
|
125
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
126
|
+
var kit, mappedFromChain, mappedToChain_1, targetChainId, currentChainIdHex, currentChainId, checkErr_1, sourceAdapter, dummyDestAdapter, bridgePromise, result, bridgeError_1, error_1, message;
|
|
127
|
+
var _this = this;
|
|
128
|
+
var _a;
|
|
129
|
+
return __generator(this, function (_b) {
|
|
130
|
+
switch (_b.label) {
|
|
131
|
+
case 0:
|
|
132
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
133
|
+
if (!params.wallet) {
|
|
134
|
+
throw new Error('Wallet client is required for CCTP bridge submission');
|
|
135
|
+
}
|
|
136
|
+
_b.label = 1;
|
|
137
|
+
case 1:
|
|
138
|
+
_b.trys.push([1, 12, , 13]);
|
|
139
|
+
kit = new BridgeKit();
|
|
140
|
+
mappedFromChain = mapChainToBridgeKit(params.fromChain);
|
|
141
|
+
mappedToChain_1 = mapChainToBridgeKit(params.toChain);
|
|
142
|
+
if (!(mappedFromChain && typeof mappedFromChain === 'object' && mappedFromChain.type === 'evm' && 'chainId' in mappedFromChain)) return [3 /*break*/, 5];
|
|
143
|
+
targetChainId = mappedFromChain.chainId;
|
|
144
|
+
if (!(params.wallet && typeof params.wallet.request === 'function')) return [3 /*break*/, 5];
|
|
145
|
+
_b.label = 2;
|
|
146
|
+
case 2:
|
|
147
|
+
_b.trys.push([2, 4, , 5]);
|
|
148
|
+
return [4 /*yield*/, params.wallet.request({ method: 'eth_chainId' })];
|
|
149
|
+
case 3:
|
|
150
|
+
currentChainIdHex = _b.sent();
|
|
151
|
+
currentChainId = parseInt(currentChainIdHex, 16);
|
|
152
|
+
// Only check, but don't try to switch here since Dynamic should have handled it.
|
|
153
|
+
// If we are still on the wrong chain, log a warning and let it fail (or maybe Dynamic is still updating).
|
|
154
|
+
if (currentChainId !== targetChainId) {
|
|
155
|
+
logger.warn("[CCTP] Chain mismatch detected in BridgeKitClient. Expected ".concat(targetChainId, ", got ").concat(currentChainId, ". Dynamic switch might have failed or is pending."));
|
|
156
|
+
// Optional: We could wait a bit more here if we think it's just a race condition
|
|
157
|
+
// await new Promise(resolve => setTimeout(resolve, 2000));
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
logger.info('[CCTP] Chain check passed');
|
|
161
|
+
}
|
|
162
|
+
return [3 /*break*/, 5];
|
|
163
|
+
case 4:
|
|
164
|
+
checkErr_1 = _b.sent();
|
|
165
|
+
logger.warn('[CCTP] Failed to check chain ID', checkErr_1);
|
|
166
|
+
return [3 /*break*/, 5];
|
|
167
|
+
case 5: return [4 /*yield*/, createAdapterFromProvider({ provider: params.wallet })];
|
|
168
|
+
case 6:
|
|
169
|
+
sourceAdapter = _b.sent();
|
|
170
|
+
dummyDestAdapter = {
|
|
171
|
+
chainType: 'solana',
|
|
172
|
+
getAddress: function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
173
|
+
return [2 /*return*/, params.destinationAddress];
|
|
174
|
+
}); }); },
|
|
175
|
+
getChain: function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
176
|
+
return [2 /*return*/, mappedToChain_1];
|
|
177
|
+
}); }); },
|
|
178
|
+
capabilities: {
|
|
179
|
+
addressContext: 'user-controlled',
|
|
180
|
+
supportedChains: [mappedToChain_1],
|
|
181
|
+
},
|
|
182
|
+
actionRegistry: {},
|
|
183
|
+
prepareAction: function () {
|
|
184
|
+
var args = [];
|
|
185
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
186
|
+
args[_i] = arguments[_i];
|
|
187
|
+
}
|
|
188
|
+
return __awaiter(_this, void 0, void 0, function () {
|
|
189
|
+
return __generator(this, function (_a) {
|
|
190
|
+
logger.debug('[CCTP] prepareAction', { args: args });
|
|
191
|
+
throw new Error('Destination adapter is not fully implemented');
|
|
192
|
+
});
|
|
193
|
+
});
|
|
194
|
+
},
|
|
195
|
+
prepare: function () {
|
|
196
|
+
var args = [];
|
|
197
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
198
|
+
args[_i] = arguments[_i];
|
|
199
|
+
}
|
|
200
|
+
return __awaiter(_this, void 0, void 0, function () {
|
|
201
|
+
return __generator(this, function (_a) {
|
|
202
|
+
logger.debug('[CCTP] prepare', { args: args });
|
|
203
|
+
throw new Error('Destination adapter is not fully implemented');
|
|
204
|
+
});
|
|
205
|
+
});
|
|
206
|
+
},
|
|
207
|
+
waitForTransaction: function () {
|
|
208
|
+
var args = [];
|
|
209
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
210
|
+
args[_i] = arguments[_i];
|
|
211
|
+
}
|
|
212
|
+
return __awaiter(_this, void 0, void 0, function () {
|
|
213
|
+
return __generator(this, function (_a) {
|
|
214
|
+
logger.debug('[CCTP] waitForTransaction', { args: args });
|
|
215
|
+
throw new Error('Destination adapter is not fully implemented');
|
|
216
|
+
});
|
|
217
|
+
});
|
|
218
|
+
},
|
|
219
|
+
validateChainSupport: function () {
|
|
220
|
+
var args = [];
|
|
221
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
222
|
+
args[_i] = arguments[_i];
|
|
223
|
+
}
|
|
224
|
+
logger.debug('[CCTP] validateChainSupport', { args: args });
|
|
225
|
+
return;
|
|
226
|
+
},
|
|
227
|
+
switchToChain: function () {
|
|
228
|
+
var args = [];
|
|
229
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
230
|
+
args[_i] = arguments[_i];
|
|
231
|
+
}
|
|
232
|
+
return __awaiter(_this, void 0, void 0, function () {
|
|
233
|
+
return __generator(this, function (_a) {
|
|
234
|
+
logger.debug('[CCTP] switchToChain', { args: args });
|
|
235
|
+
return [2 /*return*/];
|
|
236
|
+
});
|
|
237
|
+
});
|
|
238
|
+
},
|
|
239
|
+
};
|
|
240
|
+
// Listen to all events to debug/find the right one
|
|
241
|
+
kit.on('*', function (payload) {
|
|
242
|
+
logger.debug('[CCTP] Bridge event', payload);
|
|
243
|
+
});
|
|
244
|
+
return [4 /*yield*/, kit.bridge({
|
|
245
|
+
amount: params.amount,
|
|
246
|
+
from: {
|
|
247
|
+
adapter: sourceAdapter,
|
|
248
|
+
chain: mappedFromChain,
|
|
249
|
+
},
|
|
250
|
+
to: {
|
|
251
|
+
adapter: dummyDestAdapter,
|
|
252
|
+
chain: mappedToChain_1,
|
|
253
|
+
recipientAddress: params.destinationAddress,
|
|
254
|
+
address: undefined, // Explicitly undefined to avoid accidental properties
|
|
255
|
+
},
|
|
256
|
+
})];
|
|
257
|
+
case 7:
|
|
258
|
+
bridgePromise = _b.sent();
|
|
259
|
+
result = void 0;
|
|
260
|
+
_b.label = 8;
|
|
261
|
+
case 8:
|
|
262
|
+
_b.trys.push([8, 10, , 11]);
|
|
263
|
+
return [4 /*yield*/, bridgePromise];
|
|
264
|
+
case 9:
|
|
265
|
+
result = _b.sent();
|
|
266
|
+
logger.info('[CCTP] Bridge result:', JSON.stringify(result, function (key, value) {
|
|
267
|
+
return typeof value === 'bigint'
|
|
268
|
+
? value.toString()
|
|
269
|
+
: value;
|
|
270
|
+
} // return everything else unchanged
|
|
271
|
+
, 2));
|
|
272
|
+
return [3 /*break*/, 11];
|
|
273
|
+
case 10:
|
|
274
|
+
bridgeError_1 = _b.sent();
|
|
275
|
+
// If we crashed, check if we at least got the burn tx
|
|
276
|
+
// But we can't easily inspect intermediate state from here unless we captured it via events
|
|
277
|
+
// For now, rethrow if we don't have a partial result mechanism
|
|
278
|
+
logger.warn('[CCTP] Bridge call failed, possibly at mint stage', bridgeError_1);
|
|
279
|
+
throw bridgeError_1;
|
|
280
|
+
case 11: return [2 /*return*/, this.parseSubmitResponse(result)];
|
|
281
|
+
case 12:
|
|
282
|
+
error_1 = _b.sent();
|
|
283
|
+
message = (_a = error_1 === null || error_1 === void 0 ? void 0 : error_1.message) !== null && _a !== void 0 ? _a : 'CCTP bridge submission failed';
|
|
284
|
+
logger.logError(createDepositError('BRIDGE_FAILED', message, {
|
|
285
|
+
cause: error_1 instanceof Error ? error_1 : undefined,
|
|
286
|
+
context: {
|
|
287
|
+
fromChain: params.fromChain,
|
|
288
|
+
toChain: params.toChain,
|
|
289
|
+
amount: params.amount,
|
|
290
|
+
},
|
|
291
|
+
}));
|
|
292
|
+
throw new Error(message);
|
|
293
|
+
case 13: return [2 /*return*/];
|
|
294
|
+
}
|
|
295
|
+
});
|
|
296
|
+
});
|
|
297
|
+
};
|
|
298
|
+
BridgeKitClient.prototype.waitForConfirmation = function (bridgeTxId, attestationId) {
|
|
299
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
300
|
+
var _a;
|
|
301
|
+
return __generator(this, function (_b) {
|
|
302
|
+
// Fallback implementation since getAttestation is not directly exposed.
|
|
303
|
+
// We assume if bridge returned successfully (in submitBridge), we might have mint info.
|
|
304
|
+
// But if we are polling after page reload, we don't have the kit instance.
|
|
305
|
+
// TODO: Implement direct Circle API check for attestation status if needed.
|
|
306
|
+
// https://iris-api.circle.com/v1/attestations/{txHash}
|
|
307
|
+
// Return partial result to allow UI to show "Bridge Submitted"
|
|
308
|
+
return [2 /*return*/, {
|
|
309
|
+
mintTxId: attestationId !== null && attestationId !== void 0 ? attestationId : bridgeTxId,
|
|
310
|
+
explorerUrl: bridgeTxId ? "".concat((_a = explorerBaseForChain('ethereum')) !== null && _a !== void 0 ? _a : '', "/").concat(bridgeTxId) : null
|
|
311
|
+
}];
|
|
312
|
+
});
|
|
313
|
+
});
|
|
314
|
+
};
|
|
315
|
+
BridgeKitClient.prototype.getAttestation = function (txHash, fromChain) {
|
|
316
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
317
|
+
var mappedChain, domain, baseUrl, response, data, messageData, error_2;
|
|
318
|
+
var _a, _b;
|
|
319
|
+
return __generator(this, function (_c) {
|
|
320
|
+
switch (_c.label) {
|
|
321
|
+
case 0:
|
|
322
|
+
_c.trys.push([0, 3, , 4]);
|
|
323
|
+
mappedChain = mapChainToBridgeKit(fromChain);
|
|
324
|
+
domain = getDomain(mappedChain);
|
|
325
|
+
if (domain === undefined) {
|
|
326
|
+
throw new Error("Domain not found for chain ".concat(fromChain));
|
|
327
|
+
}
|
|
328
|
+
baseUrl = process.env.NEXT_PUBLIC_CIRCLE_IRIS_API_URL || 'https://iris-api-sandbox.circle.com';
|
|
329
|
+
logger.info('[CCTP] Fetching from Iris API', {
|
|
330
|
+
url: "".concat(baseUrl, "/v2/messages/").concat(domain, "?transactionHash=").concat(txHash),
|
|
331
|
+
domain: domain,
|
|
332
|
+
txHash: txHash,
|
|
333
|
+
fromChain: fromChain,
|
|
334
|
+
});
|
|
335
|
+
return [4 /*yield*/, fetch("".concat(baseUrl, "/v2/messages/").concat(domain, "?transactionHash=").concat(txHash))];
|
|
336
|
+
case 1:
|
|
337
|
+
response = _c.sent();
|
|
338
|
+
if (!response.ok) {
|
|
339
|
+
logger.warn('[CCTP] Iris API response not ok', {
|
|
340
|
+
status: response.status,
|
|
341
|
+
statusText: response.statusText,
|
|
342
|
+
});
|
|
343
|
+
return [2 /*return*/, null];
|
|
344
|
+
}
|
|
345
|
+
return [4 /*yield*/, response.json()];
|
|
346
|
+
case 2:
|
|
347
|
+
data = _c.sent();
|
|
348
|
+
messageData = (_a = data.messages) === null || _a === void 0 ? void 0 : _a[0];
|
|
349
|
+
if (messageData && messageData.attestation && messageData.message && messageData.status === 'complete') {
|
|
350
|
+
logger.info('[CCTP] Iris API data retrieved', {
|
|
351
|
+
hasAttestation: !!messageData.attestation,
|
|
352
|
+
hasMessage: !!messageData.message,
|
|
353
|
+
hasDecodedMessage: !!messageData.decodedMessage,
|
|
354
|
+
decodedMessageBody: (_b = messageData.decodedMessage) === null || _b === void 0 ? void 0 : _b.decodedMessageBody,
|
|
355
|
+
});
|
|
356
|
+
return [2 /*return*/, {
|
|
357
|
+
attestation: messageData.attestation,
|
|
358
|
+
message: messageData.message,
|
|
359
|
+
decodedMessage: messageData.decodedMessage ? {
|
|
360
|
+
sourceDomain: messageData.decodedMessage.sourceDomain,
|
|
361
|
+
destinationDomain: messageData.decodedMessage.destinationDomain,
|
|
362
|
+
nonce: messageData.decodedMessage.nonce,
|
|
363
|
+
sender: messageData.decodedMessage.sender,
|
|
364
|
+
recipient: messageData.decodedMessage.recipient,
|
|
365
|
+
decodedMessageBody: messageData.decodedMessage.decodedMessageBody,
|
|
366
|
+
} : undefined,
|
|
367
|
+
}];
|
|
368
|
+
}
|
|
369
|
+
logger.warn('[CCTP] Message data incomplete or not ready', {
|
|
370
|
+
hasMessageData: !!messageData,
|
|
371
|
+
status: messageData === null || messageData === void 0 ? void 0 : messageData.status,
|
|
372
|
+
hasAttestation: !!(messageData === null || messageData === void 0 ? void 0 : messageData.attestation),
|
|
373
|
+
hasMessage: !!(messageData === null || messageData === void 0 ? void 0 : messageData.message),
|
|
374
|
+
});
|
|
375
|
+
return [2 /*return*/, null];
|
|
376
|
+
case 3:
|
|
377
|
+
error_2 = _c.sent();
|
|
378
|
+
logger.logError(createNetworkError('RPC_FAILED', 'Failed to fetch attestation from Iris API', {
|
|
379
|
+
cause: error_2 instanceof Error ? error_2 : undefined,
|
|
380
|
+
context: { txHash: txHash, fromChain: fromChain },
|
|
381
|
+
}));
|
|
382
|
+
return [2 /*return*/, null];
|
|
383
|
+
case 4: return [2 /*return*/];
|
|
384
|
+
}
|
|
385
|
+
});
|
|
386
|
+
});
|
|
387
|
+
};
|
|
388
|
+
return BridgeKitClient;
|
|
389
|
+
}());
|
|
390
|
+
export { BridgeKitClient };
|
|
391
|
+
//# sourceMappingURL=bridgeKitClient.js.map
|
|
@@ -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 { SolanaDevnet, ArbitrumSepolia, BaseSepolia, EthereumSepolia } from '@circle-fin/bridge-kit/chains';\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 */\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 ArbitrumSepolia;\n }\n if (lower === 'solana') {\n return SolanaDevnet;\n }\n if (lower === 'base') {\n return BaseSepolia;\n }\n if (lower === 'ethereum' || lower === 'evm') {\n return EthereumSepolia;\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 destination adapter to satisfy BridgeKit validation\n // This allows us to proceed with \"Burn\" on source even if we can't sign on destination yet\n // The adapter needs to have the required structure for validation to pass\n const dummyDestAdapter = {\n chainType: 'solana' as const,\n getAddress: async () => params.destinationAddress,\n getChain: async () => mappedToChain,\n capabilities: {\n addressContext: 'user-controlled' as const,\n supportedChains: [mappedToChain],\n },\n actionRegistry: {} as any,\n prepareAction: async (...args: any[]) => {\n logger.debug('[CCTP] prepareAction', { args });\n throw new Error('Destination adapter is not fully implemented');\n },\n prepare: async (...args: any[]) => {\n logger.debug('[CCTP] prepare', { args });\n throw new Error('Destination adapter is not fully implemented');\n },\n waitForTransaction: async (...args: any[]) => {\n logger.debug('[CCTP] waitForTransaction', { args });\n throw new Error('Destination adapter is not fully implemented');\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 } 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 address: undefined, // Explicitly undefined to avoid accidental properties\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 for Testnet\n // For mainnet it might be different (iris-api.circle.com vs iris-api-sandbox.circle.com)\n // Using Iris API v2 endpoint: https://iris-api-sandbox.circle.com/v2/messages/{domain}?transactionHash={txHash}\n // sourceDomainId mapping: 0 for Ethereum, 3 for Arbitrum, 6 for Base\n const baseUrl = process.env.NEXT_PUBLIC_CIRCLE_IRIS_API_URL || 'https://iris-api-sandbox.circle.com';\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,6 @@
|
|
|
1
|
+
import type { CctpClient, CctpConfig } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Returns a CCTP client. By default uses the mock client unless explicitly
|
|
4
|
+
* enabled and not opted out via env, keeping audit boundaries clear.
|
|
5
|
+
*/
|
|
6
|
+
export declare const getCctpClient: (config?: CctpConfig) => CctpClient;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { BridgeKitClient } from './bridgeKitClient';
|
|
2
|
+
/**
|
|
3
|
+
* Returns a CCTP client. By default uses the mock client unless explicitly
|
|
4
|
+
* enabled and not opted out via env, keeping audit boundaries clear.
|
|
5
|
+
*/
|
|
6
|
+
export var getCctpClient = function (config) {
|
|
7
|
+
return new BridgeKitClient();
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=clientFactory.js.map
|
|
@@ -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,16 @@
|
|
|
1
|
+
import type { CctpConfig } from './types';
|
|
2
|
+
export interface CctpRuntimeConfig extends CctpConfig {
|
|
3
|
+
minAmount?: number;
|
|
4
|
+
maxAmount?: number;
|
|
5
|
+
allowedFromChains?: string[];
|
|
6
|
+
allowedToChains?: string[];
|
|
7
|
+
attestationTimeoutMs?: number;
|
|
8
|
+
retryBackoffMs?: number;
|
|
9
|
+
explorerBaseUrl?: string | null;
|
|
10
|
+
mintExplorerBaseUrl?: string | null;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Reads CCTP configuration from environment variables with optional overrides.
|
|
14
|
+
* Defaults to mock mode unless explicitly enabled via env var.
|
|
15
|
+
*/
|
|
16
|
+
export declare const getCctpRuntimeConfig: (overrides?: Partial<CctpRuntimeConfig>) => CctpRuntimeConfig;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Parses boolean environment variables, accepting various truthy string values.
|
|
14
|
+
*/
|
|
15
|
+
var envBool = function (value) {
|
|
16
|
+
if (value == null)
|
|
17
|
+
return undefined;
|
|
18
|
+
return ['1', 'true', 'yes', 'on'].includes(String(value).toLowerCase());
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Parses numeric environment variables, returning undefined if invalid.
|
|
22
|
+
*/
|
|
23
|
+
var readNumber = function (value) {
|
|
24
|
+
if (!value)
|
|
25
|
+
return undefined;
|
|
26
|
+
var parsed = Number(value);
|
|
27
|
+
return Number.isFinite(parsed) ? parsed : undefined;
|
|
28
|
+
};
|
|
29
|
+
var parseList = function (value) {
|
|
30
|
+
return value ? value.split(',').map(function (v) { return v.trim(); }).filter(Boolean) : undefined;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Reads CCTP configuration from environment variables with optional overrides.
|
|
34
|
+
* Defaults to mock mode unless explicitly enabled via env var.
|
|
35
|
+
*/
|
|
36
|
+
export var getCctpRuntimeConfig = function (overrides) {
|
|
37
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
38
|
+
var base = {
|
|
39
|
+
enabled: (_a = envBool(process.env.NEXT_PUBLIC_CIRCLE_CCTP_ENABLED)) !== null && _a !== void 0 ? _a : false,
|
|
40
|
+
useMock: (_b = envBool(process.env.NEXT_PUBLIC_CIRCLE_CCTP_USE_MOCK)) !== null && _b !== void 0 ? _b : true,
|
|
41
|
+
fromChain: (_c = process.env.NEXT_PUBLIC_CIRCLE_FROM_CHAIN) !== null && _c !== void 0 ? _c : 'ethereum',
|
|
42
|
+
toChain: (_d = process.env.NEXT_PUBLIC_CIRCLE_TO_CHAIN) !== null && _d !== void 0 ? _d : 'solana',
|
|
43
|
+
// Default to 3 USDC for EVM -> Solana CCTP bridging unless overridden by env.
|
|
44
|
+
minAmount: (_e = readNumber(process.env.NEXT_PUBLIC_CIRCLE_MIN_AMOUNT)) !== null && _e !== void 0 ? _e : 3,
|
|
45
|
+
maxAmount: readNumber(process.env.NEXT_PUBLIC_CIRCLE_MAX_AMOUNT),
|
|
46
|
+
allowedFromChains: (_f = parseList(process.env.NEXT_PUBLIC_CIRCLE_ALLOWED_FROM)) !== null && _f !== void 0 ? _f : ['ethereum', 'arbitrum', 'base'],
|
|
47
|
+
allowedToChains: (_g = parseList(process.env.NEXT_PUBLIC_CIRCLE_ALLOWED_TO)) !== null && _g !== void 0 ? _g : ['solana'],
|
|
48
|
+
attestationTimeoutMs: readNumber(process.env.NEXT_PUBLIC_CIRCLE_ATTESTATION_TIMEOUT_MS),
|
|
49
|
+
retryBackoffMs: readNumber(process.env.NEXT_PUBLIC_CIRCLE_RETRY_BACKOFF_MS),
|
|
50
|
+
explorerBaseUrl: (_h = process.env.NEXT_PUBLIC_CIRCLE_EXPLORER_BASE) !== null && _h !== void 0 ? _h : null,
|
|
51
|
+
mintExplorerBaseUrl: (_j = process.env.NEXT_PUBLIC_CIRCLE_MINT_EXPLORER_BASE) !== null && _j !== void 0 ? _j : null,
|
|
52
|
+
};
|
|
53
|
+
return __assign(__assign({}, base), overrides);
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -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,11 @@
|
|
|
1
|
+
import type { CctpBridgeParams, CctpBridgeResult, CctpClient, CctpConfirmationResult } from './types';
|
|
2
|
+
export declare class MockCctpClient implements CctpClient {
|
|
3
|
+
private readonly opts;
|
|
4
|
+
constructor(opts?: {
|
|
5
|
+
submitDelayMs?: number;
|
|
6
|
+
confirmDelayMs?: number;
|
|
7
|
+
});
|
|
8
|
+
submitBridge(params: CctpBridgeParams): Promise<CctpBridgeResult>;
|
|
9
|
+
waitForConfirmation(bridgeTxId: string, _attestationId?: string | null): Promise<CctpConfirmationResult>;
|
|
10
|
+
getAttestation(_txHash: string, _fromChain: string): Promise<null>;
|
|
11
|
+
}
|