import type { CaipNetwork, ChainNamespace } from '@reown/appkit-common'; import type { Connector, WcWallet } from '../utils/TypeUtil.js'; import type { SendInputArguments } from './SendController.js'; import type { SwapInputArguments, SwapInputTarget } from './SwapController.js'; type TransactionAction = { /** * Function to be called when the transaction is complete. */ onSuccess?: () => void; /** * Function to be called when the transaction is cancelled. */ onCancel?: () => void; /** * Function to be called when the transaction is failed. */ onError?: () => void; }; export interface RouterControllerState { view: 'Account' | 'AccountSettings' | 'AllWallets' | 'ApproveTransaction' | 'BuyInProgress' | 'WalletCompatibleNetworks' | 'ChooseAccountName' | 'Connect' | 'Create' | 'ConnectingExternal' | 'ConnectingFarcaster' | 'ConnectingWalletConnect' | 'ConnectingWalletConnectBasic' | 'ConnectingSiwe' | 'ConnectingSocial' | 'ConnectSocials' | 'ConnectWallets' | 'DataCapture' | 'DataCaptureOtpConfirm' | 'Downloads' | 'EmailLogin' | 'EmailVerifyOtp' | 'EmailVerifyDevice' | 'GetWallet' | 'Networks' | 'OnRampFiatSelect' | 'OnRampProviders' | 'OnRampTokenSelect' | 'ProfileWallets' | 'RegisterAccountName' | 'RegisterAccountNameSuccess' | 'SwitchNetwork' | 'Transactions' | 'UnsupportedChain' | 'UpdateEmailWallet' | 'UpdateEmailPrimaryOtp' | 'UpdateEmailSecondaryOtp' | 'UpgradeEmailWallet' | 'WalletReceive' | 'WalletSend' | 'WalletSendPreview' | 'WalletSendSelectToken' | 'WalletSendConfirmed' | 'WhatIsANetwork' | 'WhatIsAWallet' | 'WhatIsABuy' | 'Swap' | 'SwapSelectToken' | 'SwapPreview' | 'ConnectingMultiChain' | 'SwitchActiveChain' | 'SmartSessionCreated' | 'SmartSessionList' | 'SIWXSignMessage' | 'Pay' | 'PayLoading' | 'PayQuote' | 'FundWallet' | 'PayWithExchange' | 'PayWithExchangeSelectAsset' | 'UsageExceeded' | 'SmartAccountSettings'; history: RouterControllerState['view'][]; data?: { connector?: Connector; wallet?: WcWallet; network?: CaipNetwork; email?: string; redirectView?: RouterControllerState['view']; newEmail?: string; target?: SwapInputTarget; swapUnsupportedChain?: boolean; connectors?: Connector[]; switchToChain?: ChainNamespace; navigateTo?: RouterControllerState['view']; navigateWithReplace?: boolean; swap?: SwapInputArguments; addWalletForNamespace?: ChainNamespace; send?: SendInputArguments; }; transactionStack: TransactionAction[]; } type StateKey = keyof RouterControllerState; export declare const RouterController: { state: RouterControllerState; subscribeKey(key: K, callback: (value: RouterControllerState[K]) => void): () => void; pushTransactionStack(action: TransactionAction): void; popTransactionStack(status: "success" | "error" | "cancel"): void; push(view: RouterControllerState["view"], data?: RouterControllerState["data"]): void; reset(view: RouterControllerState["view"], data?: RouterControllerState["data"]): void; replace(view: RouterControllerState["view"], data?: RouterControllerState["data"]): void; goBack(): void; goBackToIndex(historyIndex: number): void; goBackOrCloseModal(): void; }; export {};