@naculus/connect-appkit-vue 0.2.6 → 0.2.7
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/index.cjs +379 -452
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +58 -4
- package/dist/index.d.ts +58 -4
- package/dist/index.js +408 -477
- package/dist/index.js.map +1 -1
- package/package.json +6 -6
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/wc-generated/proxies.ts","../src/useAccounts.ts","../src/useNotification.ts","../src/useSimulateTransfer.ts","../src/useTransactionSimulation.ts","../src/useERC20Transfer.ts","../src/erc20.ts","../src/useERC20Approve.ts","../src/useERC20TransferSimulation.ts","../src/useAccount.ts","../src/useSession.ts","../src/useConnect.ts","../src/useDisconnect.ts","../src/useSwitchChain.ts","../src/useSignMessage.ts","../src/useSendTransaction.ts","../src/useSolanaTransaction.ts","../src/useSignInWithX.ts","../src/useSignInWithEthereum.ts","../src/useExecuteCalls.ts","../src/useDelegationPolicy.ts","../src/internal/action-guard.ts","../src/useSessionKeys.ts","../src/useSmartAccount.ts","../src/useSendUserOperation.ts","../src/useUserOpStatus.ts","../src/useSendCalls.ts","../src/useEmbeddedWallet.ts","../src/useSIWxLogin.ts","../src/useSIWxSession.ts","../src/useSiwxAuthSession.ts","../src/useBalance.ts","../src/useRouteQuote.ts","../src/useCompareCosts.ts","../src/useExecuteRoute.ts","../src/useTokenList.ts","../src/useTokenSearch.ts","../src/useValidateDestination.ts","../src/useTokenBalance.ts","../src/useDelegation.ts","../src/name-lookup.ts","../src/useResolveName.ts","../src/useLookupAddress.ts","../src/useSolanaAccount.ts","../src/useChain.ts","../src/usePassphraseGate.ts","../src/useSolanaBalance.ts","../src/useLastTx.ts","../src/useTxHistory.ts","../src/useTxMonitor.ts","../src/useCapabilities.ts","../src/useSolanaRoles.ts"],"sourcesContent":["export {\n AppkitAccordion,\n AppkitAccountButton,\n AppkitAlertDialog,\n AppkitAvatar,\n AppkitBadge,\n AppkitButton,\n AppkitCard,\n AppkitCardContent,\n AppkitCardDescription,\n AppkitCardFooter,\n AppkitCardHeader,\n AppkitCardTitle,\n AppkitCheckbox,\n AppkitCollapsible,\n AppkitConnectButton,\n AppkitDialog,\n AppkitDropdownMenu,\n AppkitInput,\n AppkitPopover,\n AppkitProgress,\n AppkitScrollArea,\n AppkitSelect,\n AppkitSeparator,\n AppkitSkeleton,\n AppkitSwitch,\n AppkitTabs,\n AppkitToggleGroup,\n AppkitTooltip,\n} from \"./wc-generated/proxies\"\n\n// ── Composables ───────────────────────────────────────────────────\nexport { useAccounts } from \"./useAccounts\";\nexport { useNotification } from \"./useNotification\";\nexport { useSimulateTransfer } from \"./useSimulateTransfer\";\nexport type {\n UseSimulateTransferOptions,\n UseSimulateTransferReturn,\n} from \"./useSimulateTransfer\";\nexport { useTransactionSimulation } from \"./useTransactionSimulation\";\nexport type {\n UseTransactionSimulationOptions,\n UseTransactionSimulationReturn,\n} from \"./useTransactionSimulation\";\nexport { useERC20Transfer } from \"./useERC20Transfer\";\nexport type {\n UseERC20TransferOptions,\n UseERC20TransferReturn,\n} from \"./useERC20Transfer\";\nexport { useERC20Approve } from \"./useERC20Approve\";\nexport type {\n UseERC20ApproveOptions,\n UseERC20ApproveReturn,\n} from \"./useERC20Approve\";\nexport { useERC20TransferSimulation } from \"./useERC20TransferSimulation\";\nexport type {\n UseERC20TransferSimulationOptions,\n UseERC20TransferSimulationReturn,\n} from \"./useERC20TransferSimulation\";\nexport type { ERC20Reader, ERC20Sender, ERC20Transaction } from \"./erc20\";\nexport type {\n UseNotificationOptions,\n UseNotificationReturn,\n} from \"./useNotification\";\nexport { useAccount } from \"./useAccount\";\nexport type { UseAccountReturn } from \"./useAccount\";\nexport { useSession } from \"./useSession\";\nexport type { UseSessionReturn } from \"./useSession\";\nexport { useConnect } from \"./useConnect\";\nexport type { UseConnectReturn } from \"./useConnect\";\nexport { useDisconnect } from \"./useDisconnect\";\nexport type { UseDisconnectReturn } from \"./useDisconnect\";\nexport { useSwitchChain } from \"./useSwitchChain\";\nexport type { UseSwitchChainReturn } from \"./useSwitchChain\";\nexport { useSignMessage } from \"./useSignMessage\";\nexport type {\n SignMessageAction,\n UseSignMessageReturn,\n} from \"./useSignMessage\";\nexport { useSendTransaction } from \"./useSendTransaction\";\nexport type {\n EvmTransaction,\n SendTransactionAction,\n SendTransactionStatus,\n UseSendTransactionReturn,\n} from \"./useSendTransaction\";\nexport { useSolanaTransaction } from \"./useSolanaTransaction\";\nexport type {\n GetSolanaTransactionStatusAction,\n SendSolanaTransactionAction,\n SignSolanaTransactionAction,\n SolanaTransaction,\n UseSolanaTransactionOptions,\n UseSolanaTransactionReturn,\n} from \"./useSolanaTransaction\";\nexport type {\n SiwxResult,\n SiwxSessionLike,\n SiwxSignInAction,\n SiwxSignInOptions,\n} from \"./siwx\";\nexport { useSignInWithX } from \"./useSignInWithX\";\nexport type { UseSignInWithXReturn } from \"./useSignInWithX\";\nexport { useSignInWithEthereum } from \"./useSignInWithEthereum\";\nexport type {\n UseSignInWithEthereumOptions,\n UseSignInWithEthereumReturn,\n} from \"./useSignInWithEthereum\";\nexport type {\n ExecuteCallsAction,\n ExecutionPreview,\n ExecutionRoute,\n GetCallsStatusAction,\n PaymasterService,\n PreviewExecutionAction,\n SendCallsAction,\n SendCallsOptions,\n ShowCallsStatusAction,\n} from \"./eip5792\";\nexport { useExecuteCalls } from \"./useExecuteCalls\";\nexport type {\n UseExecuteCallsOptions,\n UseExecuteCallsReturn,\n} from \"./useExecuteCalls\";\nexport { useDelegationPolicy } from \"./useDelegationPolicy\";\nexport type {\n UseDelegationPolicyOptions,\n UseDelegationPolicyReturn,\n} from \"./useDelegationPolicy\";\nexport { useSmartAccount } from \"./useSmartAccount\";\nexport type {\n DeployTransactionSender,\n UseSmartAccountOptions,\n UseSmartAccountReturn,\n} from \"./useSmartAccount\";\nexport { useSendUserOperation } from \"./useSendUserOperation\";\nexport type {\n UseSendUserOperationOptions,\n UseSendUserOperationReturn,\n UserOpSigner,\n} from \"./useSendUserOperation\";\nexport { useUserOpStatus } from \"./useUserOpStatus\";\nexport type {\n UseUserOpStatusOptions,\n UseUserOpStatusReturn,\n UserOpStatus,\n} from \"./useUserOpStatus\";\nexport {\n useCreateSessionKey,\n useRevokeSession,\n useSendWithSession,\n useSessionKeys,\n} from \"./useSessionKeys\";\nexport type {\n SessionKeyComposableOptions,\n UseCreateSessionKeyReturn,\n UseRevokeSessionReturn,\n UseSendWithSessionReturn,\n UseSessionKeysReturn,\n} from \"./useSessionKeys\";\nexport { useSendCalls } from \"./useSendCalls\";\nexport type {\n SendCallsStatus,\n UseSendCallsOptions,\n UseSendCallsReturn,\n} from \"./useSendCalls\";\nexport { useEmbeddedWallet } from \"./useEmbeddedWallet\";\nexport type {\n EmbeddedWalletAccountView,\n EmbeddedWalletView,\n UseEmbeddedWalletOptions,\n UseEmbeddedWalletReturn,\n} from \"./useEmbeddedWallet\";\nexport { useSIWxLogin } from \"./useSIWxLogin\";\nexport type { UseSIWxLoginReturn } from \"./useSIWxLogin\";\nexport { useSIWxSession } from \"./useSIWxSession\";\nexport type {\n UseSIWxSessionOptions,\n UseSIWxSessionReturn,\n} from \"./useSIWxSession\";\nexport { useSiwxAuthSession } from \"./useSiwxAuthSession\";\nexport type {\n UseSiwxAuthSessionOptions,\n UseSiwxAuthSessionReturn,\n} from \"./useSiwxAuthSession\";\nexport { useBalance } from \"./useBalance\";\nexport type {\n NativeBalanceReader,\n UseBalanceOptions,\n UseBalanceReturn,\n} from \"./useBalance\";\nexport { useRouteQuote } from \"./useRouteQuote\";\nexport type { UseRouteQuoteOptions, UseRouteQuoteReturn } from \"./useRouteQuote\";\nexport { useCompareCosts } from \"./useCompareCosts\";\nexport type { UseCompareCostsReturn } from \"./useCompareCosts\";\nexport { useExecuteRoute } from \"./useExecuteRoute\";\nexport type { UseExecuteRouteReturn } from \"./useExecuteRoute\";\nexport { useTokenList } from \"./useTokenList\";\nexport type { UseTokenListOptions, UseTokenListReturn } from \"./useTokenList\";\nexport { useTokenSearch } from \"./useTokenSearch\";\nexport type {\n UseTokenSearchOptions,\n UseTokenSearchReturn,\n} from \"./useTokenSearch\";\nexport { useValidateDestination } from \"./useValidateDestination\";\nexport type { UseValidateDestinationReturn } from \"./useValidateDestination\";\nexport { useTokenBalance } from \"./useTokenBalance\";\nexport type {\n TokenBalanceReader,\n TokenBalanceResult,\n TokenInfo,\n UseTokenBalanceOptions,\n UseTokenBalanceReturn,\n} from \"./useTokenBalance\";\nexport { useDelegation } from \"./useDelegation\";\nexport type { DelegationCodeReader, UseDelegationReturn } from \"./useDelegation\";\nexport { useResolveName } from \"./useResolveName\";\nexport type { UseResolveNameReturn } from \"./useResolveName\";\nexport { useLookupAddress } from \"./useLookupAddress\";\nexport type { UseLookupAddressReturn } from \"./useLookupAddress\";\nexport { useSolanaAccount } from \"./useSolanaAccount\";\nexport type { UseSolanaAccountReturn } from \"./useSolanaAccount\";\nexport { useChain } from \"./useChain\";\nexport type { UseChainReturn } from \"./useChain\";\nexport type { AccountEntry, UseAccountsReturn } from \"./useAccounts\";\nexport { usePassphraseGate } from \"./usePassphraseGate\";\nexport { useSolanaBalance } from \"./useSolanaBalance\";\nexport { useLastTx } from \"./useLastTx\";\nexport type { UseLastTxReturn } from \"./useLastTx\";\nexport { useTxHistory } from \"./useTxHistory\";\nexport type { UseTxHistoryReturn } from \"./useTxHistory\";\nexport { useTxMonitor } from \"./useTxMonitor\";\nexport type {\n TxMonitorLike,\n TxStatus,\n TxStatusEntry,\n UseTxMonitorReturn,\n} from \"./useTxMonitor\";\nexport type { UseSolanaBalanceReturn as UseSolanaBalanceVueReturn } from \"./useSolanaBalance\";\nexport type { UsePassphraseGateReturn } from \"./usePassphraseGate\";\nexport { useCapabilities, type AtomicSupport, type CapabilityClient, type ChainCapabilities, type UseCapabilitiesReturn } from \"./useCapabilities\";\nexport {\n useSolanaRoles,\n type SolanaIdentity,\n type SolanaPayer,\n type SolanaRoles,\n type SolanaRolesAbsence,\n type SolanaRolesSource,\n type SolanaSigner,\n type SolanaWalletFeatures,\n type UseSolanaRolesReturn,\n} from \"./useSolanaRoles\";\n","/* eslint-disable */\n/* tslint:disable */\n/* auto-generated vue proxies */\nimport { defineContainer, type StencilVueComponent } from '@stencil/vue-output-target/runtime';\n\nimport type { JSX } from '@naculus/connect-appkit-wc';\n\n\n\n\n\nexport const AppkitAccordion: StencilVueComponent<JSX.AppkitAccordion> = /*@__PURE__*/ defineContainer<JSX.AppkitAccordion>('appkit-accordion', undefined, [\n 'label',\n 'open',\n 'disabled',\n 'appkitToggle'\n], [\n 'appkitToggle'\n]);\n\n\nexport const AppkitAccountButton: StencilVueComponent<JSX.AppkitAccountButton> = /*@__PURE__*/ defineContainer<JSX.AppkitAccountButton>('appkit-account-button', undefined, [\n 'address',\n 'balance',\n 'balanceSymbol',\n 'showAddress',\n 'showBalance',\n 'disabled'\n]);\n\n\nexport const AppkitAlertDialog: StencilVueComponent<JSX.AppkitAlertDialog> = /*@__PURE__*/ defineContainer<JSX.AppkitAlertDialog>('appkit-alert-dialog', undefined, [\n 'open',\n 'heading',\n 'description',\n 'appkitClose',\n 'appkitOpenChange'\n], [\n 'appkitClose',\n 'appkitOpenChange'\n]);\n\n\nexport const AppkitAvatar: StencilVueComponent<JSX.AppkitAvatar> = /*@__PURE__*/ defineContainer<JSX.AppkitAvatar>('appkit-avatar', undefined, [\n 'size',\n 'src',\n 'alt',\n 'fallback'\n]);\n\n\nexport const AppkitBadge: StencilVueComponent<JSX.AppkitBadge> = /*@__PURE__*/ defineContainer<JSX.AppkitBadge>('appkit-badge', undefined, [\n 'variant'\n]);\n\n\nexport const AppkitButton: StencilVueComponent<JSX.AppkitButton> = /*@__PURE__*/ defineContainer<JSX.AppkitButton>('appkit-button', undefined, [\n 'variant',\n 'size',\n 'disabled',\n 'type',\n 'locale',\n 'ariaLabel',\n 'eventName'\n]);\n\n\nexport const AppkitCard: StencilVueComponent<JSX.AppkitCard> = /*@__PURE__*/ defineContainer<JSX.AppkitCard>('appkit-card', undefined);\n\n\nexport const AppkitCardContent: StencilVueComponent<JSX.AppkitCardContent> = /*@__PURE__*/ defineContainer<JSX.AppkitCardContent>('appkit-card-content', undefined);\n\n\nexport const AppkitCardDescription: StencilVueComponent<JSX.AppkitCardDescription> = /*@__PURE__*/ defineContainer<JSX.AppkitCardDescription>('appkit-card-description', undefined);\n\n\nexport const AppkitCardFooter: StencilVueComponent<JSX.AppkitCardFooter> = /*@__PURE__*/ defineContainer<JSX.AppkitCardFooter>('appkit-card-footer', undefined);\n\n\nexport const AppkitCardHeader: StencilVueComponent<JSX.AppkitCardHeader> = /*@__PURE__*/ defineContainer<JSX.AppkitCardHeader>('appkit-card-header', undefined);\n\n\nexport const AppkitCardTitle: StencilVueComponent<JSX.AppkitCardTitle> = /*@__PURE__*/ defineContainer<JSX.AppkitCardTitle>('appkit-card-title', undefined);\n\n\nexport const AppkitCheckbox: StencilVueComponent<JSX.AppkitCheckbox> = /*@__PURE__*/ defineContainer<JSX.AppkitCheckbox>('appkit-checkbox', undefined, [\n 'checked',\n 'disabled',\n 'label',\n 'name',\n 'value',\n 'appkitChange'\n], [\n 'appkitChange'\n]);\n\n\nexport const AppkitCollapsible: StencilVueComponent<JSX.AppkitCollapsible> = /*@__PURE__*/ defineContainer<JSX.AppkitCollapsible>('appkit-collapsible', undefined, [\n 'open',\n 'appkitToggle'\n], [\n 'appkitToggle'\n]);\n\n\nexport const AppkitConnectButton: StencilVueComponent<JSX.AppkitConnectButton> = /*@__PURE__*/ defineContainer<JSX.AppkitConnectButton>('appkit-connect-button', undefined, [\n 'connected',\n 'connecting',\n 'address',\n 'balance',\n 'balanceSymbol',\n 'isBalanceLoading',\n 'tokenBalancesJson',\n 'explorerUrl',\n 'explorerLabel',\n 'isMobile',\n 'mobileWalletName',\n 'walletsJson',\n 'qrUri',\n 'qrLoading',\n 'qrError',\n 'appkitConnect',\n 'appkitDisconnect',\n 'appkitStartPairing',\n 'appkitRetry',\n 'appkitCancelPairing',\n 'appkitMobileDeepLink',\n 'appkitCopyAddress'\n], [\n 'appkitConnect',\n 'appkitDisconnect',\n 'appkitStartPairing',\n 'appkitRetry',\n 'appkitCancelPairing',\n 'appkitMobileDeepLink',\n 'appkitCopyAddress'\n]);\n\n\nexport const AppkitDialog: StencilVueComponent<JSX.AppkitDialog> = /*@__PURE__*/ defineContainer<JSX.AppkitDialog>('appkit-dialog', undefined, [\n 'open',\n 'heading',\n 'appkitClose',\n 'appkitOpenChange'\n], [\n 'appkitClose',\n 'appkitOpenChange'\n]);\n\n\nexport const AppkitDropdownMenu: StencilVueComponent<JSX.AppkitDropdownMenu> = /*@__PURE__*/ defineContainer<JSX.AppkitDropdownMenu>('appkit-dropdown-menu', undefined, [\n 'itemsJson',\n 'appkitSelect'\n], [\n 'appkitSelect'\n]);\n\n\nexport const AppkitInput: StencilVueComponent<JSX.AppkitInput> = /*@__PURE__*/ defineContainer<JSX.AppkitInput>('appkit-input', undefined, [\n 'type',\n 'placeholder',\n 'value',\n 'disabled',\n 'invalid',\n 'name',\n 'autocomplete',\n 'maxLength',\n 'appkitChange'\n], [\n 'appkitChange'\n]);\n\n\nexport const AppkitPopover: StencilVueComponent<JSX.AppkitPopover> = /*@__PURE__*/ defineContainer<JSX.AppkitPopover>('appkit-popover', undefined, [\n 'open',\n 'placement',\n 'appkitOpenChange'\n], [\n 'appkitOpenChange'\n]);\n\n\nexport const AppkitProgress: StencilVueComponent<JSX.AppkitProgress> = /*@__PURE__*/ defineContainer<JSX.AppkitProgress>('appkit-progress', undefined, [\n 'value',\n 'max',\n 'label'\n]);\n\n\nexport const AppkitScrollArea: StencilVueComponent<JSX.AppkitScrollArea> = /*@__PURE__*/ defineContainer<JSX.AppkitScrollArea>('appkit-scroll-area', undefined);\n\n\nexport const AppkitSelect: StencilVueComponent<JSX.AppkitSelect> = /*@__PURE__*/ defineContainer<JSX.AppkitSelect>('appkit-select', undefined, [\n 'optionsJson',\n 'value',\n 'placeholder',\n 'disabled',\n 'appkitChange'\n], [\n 'appkitChange'\n]);\n\n\nexport const AppkitSeparator: StencilVueComponent<JSX.AppkitSeparator> = /*@__PURE__*/ defineContainer<JSX.AppkitSeparator>('appkit-separator', undefined, [\n 'orientation',\n 'decorative'\n]);\n\n\nexport const AppkitSkeleton: StencilVueComponent<JSX.AppkitSkeleton> = /*@__PURE__*/ defineContainer<JSX.AppkitSkeleton>('appkit-skeleton', undefined);\n\n\nexport const AppkitSwitch: StencilVueComponent<JSX.AppkitSwitch> = /*@__PURE__*/ defineContainer<JSX.AppkitSwitch>('appkit-switch', undefined, [\n 'checked',\n 'disabled',\n 'label',\n 'appkitChange'\n], [\n 'appkitChange'\n]);\n\n\nexport const AppkitTabs: StencilVueComponent<JSX.AppkitTabs> = /*@__PURE__*/ defineContainer<JSX.AppkitTabs>('appkit-tabs', undefined, [\n 'tabsJson',\n 'selected',\n 'appkitTabChange'\n], [\n 'appkitTabChange'\n]);\n\n\nexport const AppkitToggleGroup: StencilVueComponent<JSX.AppkitToggleGroup> = /*@__PURE__*/ defineContainer<JSX.AppkitToggleGroup>('appkit-toggle-group', undefined, [\n 'itemsJson',\n 'selected',\n 'multiple',\n 'appkitChange'\n], [\n 'appkitChange'\n]);\n\n\nexport const AppkitTooltip: StencilVueComponent<JSX.AppkitTooltip> = /*@__PURE__*/ defineContainer<JSX.AppkitTooltip>('appkit-tooltip', undefined, [\n 'content',\n 'placement'\n]);\n\n\n","import { isEvmAddress, parseCaip10 } from \"@naculus/connect-core\";\nimport { computed, toValue } from \"vue\";\nimport type { ComputedRef, MaybeRefOrGetter } from \"vue\";\n\nexport interface AccountEntry {\n /** As the session reports it: CAIP-10 for most wallets, bare hex for some. */\n address: string;\n /** The namespace, when the entry was CAIP-10. Null for a bare address. */\n namespace: string | null;\n isEVM: boolean;\n}\n\nexport interface UseAccountsReturn {\n accounts: ComputedRef<AccountEntry[]>;\n evmAccount: ComputedRef<string | null>;\n solanaAccount: ComputedRef<string | null>;\n}\n\n/**\n * Split a session's account list by what each entry actually is.\n *\n * The same reading as the React `useAccount`, because it is the same reading:\n * `parseCaip10` and `isEvmAddress` come from `@naculus/connect-core` and hold\n * every rule about which strings mean what. What differs between the two\n * bindings is `computed` versus `useMemo`, and nothing else.\n */\nexport function useAccounts(\n accounts: MaybeRefOrGetter<string[] | null | undefined>,\n): UseAccountsReturn {\n const parsed = computed<AccountEntry[]>(() =>\n (toValue(accounts) ?? []).map((address) => {\n const caip10 = parseCaip10(address);\n if (caip10) {\n return {\n address,\n namespace: caip10.namespace,\n isEVM:\n caip10.namespace === \"eip155\" && isEvmAddress(caip10.address),\n };\n }\n // A bare 0x-40-hex value is unambiguously EVM. A bare base58 string is\n // not unambiguously anything, so nothing is claimed about it.\n return { address, namespace: null, isEVM: isEvmAddress(address) };\n }),\n );\n\n return {\n accounts: parsed,\n evmAccount: computed(\n () => parsed.value.find((a) => a.isEVM)?.address ?? null,\n ),\n solanaAccount: computed(\n () => parsed.value.find((a) => a.namespace === \"solana\")?.address ?? null,\n ),\n };\n}\n","import {\n addInAppNotification,\n channelsUpdate,\n clearOneInAppNotification,\n createNotificationSettingsStorage,\n DEFAULT_NOTIFICATION_SETTINGS,\n loadNotificationSettings,\n mutedChainSettings,\n saveNotificationSettings,\n updateNotificationSettings,\n type NotificationSettingsStorage,\n} from \"@naculus/connect-appkit-core\";\nimport {\n InAppChannel,\n type NotificationItem,\n type NotificationSettings,\n} from \"@naculus/connect-core\";\nimport type { ComputedRef, MaybeRef, ShallowRef } from \"vue\";\nimport { computed, onScopeDispose, shallowRef, unref } from \"vue\";\n\nexport interface UseNotificationOptions {\n channel?: MaybeRef<InAppChannel>;\n storage?: MaybeRef<NotificationSettingsStorage>;\n}\n\nexport interface UseNotificationReturn {\n notifications: ShallowRef<NotificationItem[]>;\n unreadCount: ComputedRef<number>;\n settings: ShallowRef<NotificationSettings>;\n addNotification: (item: Omit<NotificationItem, \"id\" | \"timestamp\">) => void;\n clear: () => void;\n clearOne: (id: string) => void;\n markAsRead: (id: string) => void;\n markAllAsRead: () => void;\n updateSettings: (update: Partial<NotificationSettings>) => void;\n setChannels: (channels: string[]) => void;\n muteChain: (chainId: string) => void;\n unmuteChain: (chainId: string) => void;\n}\n\n/** Vue state shell over the shared in-app notification actions. */\nexport function useNotification(\n options: UseNotificationOptions = {},\n): UseNotificationReturn {\n const channel = unref(options.channel) ?? new InAppChannel();\n const storage = unref(options.storage) ?? createNotificationSettingsStorage();\n const notifications = shallowRef<NotificationItem[]>(channel.getHistory());\n const settings = shallowRef<NotificationSettings>(\n DEFAULT_NOTIFICATION_SETTINGS,\n );\n const unreadCount = computed(\n () => notifications.value.filter((item) => !item.read).length,\n );\n let disposed = false;\n\n void loadNotificationSettings(storage).then((saved) => {\n if (!disposed && saved) settings.value = saved;\n });\n channel.onNotification = (item) => {\n if (!disposed) notifications.value = [...notifications.value, item];\n };\n void channel.restore().then(() => {\n if (!disposed) notifications.value = channel.getHistory();\n });\n onScopeDispose(() => {\n disposed = true;\n channel.onNotification = undefined;\n });\n\n const updateSettings = (update: Partial<NotificationSettings>): void => {\n settings.value = updateNotificationSettings(settings.value, update);\n saveNotificationSettings(storage, settings.value);\n };\n\n return {\n notifications,\n unreadCount,\n settings,\n addNotification: (item) => addInAppNotification(channel, item),\n clear: () => {\n channel.clear();\n notifications.value = [];\n },\n clearOne: (id) => {\n void clearOneInAppNotification(channel, id).then(() => {\n if (!disposed) notifications.value = channel.getHistory();\n });\n },\n markAsRead: (id) => {\n channel.markAsRead(id);\n notifications.value = notifications.value.map((item) =>\n item.id === id ? { ...item, read: true } : item,\n );\n },\n markAllAsRead: () => {\n channel.markAllAsRead();\n notifications.value = notifications.value.map((item) => ({\n ...item,\n read: true,\n }));\n },\n updateSettings,\n setChannels: (channels) => updateSettings(channelsUpdate(channels)),\n muteChain: (chainId) =>\n updateSettings(mutedChainSettings(settings.value, chainId, true)),\n unmuteChain: (chainId) =>\n updateSettings(mutedChainSettings(settings.value, chainId, false)),\n };\n}\n","import { resolveSimulationEndpoint } from \"@naculus/connect-appkit-core\";\nimport {\n SimulationManager,\n type SimulationResult,\n} from \"@naculus/connect-core\";\nimport type { MaybeRef, ShallowRef } from \"vue\";\nimport { onScopeDispose, shallowRef, unref } from \"vue\";\n\nexport interface UseSimulateTransferOptions {\n rpcUrl?: MaybeRef<string | undefined>;\n chainId?: MaybeRef<number | undefined>;\n}\n\nexport interface UseSimulateTransferReturn {\n result: ShallowRef<SimulationResult | null>;\n loading: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n simulate: (\n tokenAddress: `0x${string}`,\n from: `0x${string}`,\n to: `0x${string}`,\n amount: string,\n options?: { chainId?: number; rpcUrl?: string; decimals?: number },\n ) => Promise<SimulationResult>;\n reset: () => void;\n}\n\n/** Vue state shell around the canonical connect-core ERC-20 simulator. */\nexport function useSimulateTransfer(\n options: UseSimulateTransferOptions = {},\n): UseSimulateTransferReturn {\n const result = shallowRef<SimulationResult | null>(null);\n const loading = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let manager: SimulationManager | undefined;\n let generation = 0;\n let disposed = false;\n\n const simulate: UseSimulateTransferReturn[\"simulate\"] = async (\n tokenAddress,\n from,\n to,\n amount,\n callOptions,\n ) => {\n const own = ++generation;\n loading.value = true;\n error.value = null;\n try {\n const fallbackRpcUrl = unref(options.rpcUrl);\n const endpoint = resolveSimulationEndpoint(\n callOptions?.chainId,\n unref(options.chainId),\n callOptions?.rpcUrl,\n fallbackRpcUrl,\n );\n manager ??= new SimulationManager({\n enabled: true,\n rpcUrl: fallbackRpcUrl,\n autoSimulate: false,\n });\n const value = await manager.simulateERC20Transfer(\n tokenAddress,\n from,\n to,\n amount,\n endpoint.chainId,\n callOptions?.decimals,\n endpoint.rpcUrl,\n );\n if (!disposed && own === generation) result.value = value;\n return value;\n } catch (cause) {\n const normalized =\n cause instanceof Error ? cause : new Error(String(cause));\n if (!disposed && own === generation) error.value = normalized;\n throw normalized;\n } finally {\n if (!disposed && own === generation) loading.value = false;\n }\n };\n\n const reset = (): void => {\n generation++;\n result.value = null;\n error.value = null;\n loading.value = false;\n };\n\n onScopeDispose(() => {\n disposed = true;\n generation++;\n });\n\n return { result, loading, error, simulate, reset };\n}\n","import {\n type SimulationCallClient,\n type SimulationTransaction,\n simulateTransactionPreview,\n type WalletChain,\n} from \"@naculus/connect-appkit-core\";\nimport type { SimulationResult } from \"@naculus/connect-core\";\nimport type { MaybeRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { onScopeDispose, shallowRef, toValue, unref, watch } from \"vue\";\n\nexport interface UseTransactionSimulationOptions {\n chainId?: MaybeRef<number | undefined>;\n currentChain?: MaybeRef<WalletChain | null | undefined>;\n publicClient?: MaybeRef<SimulationCallClient | null | undefined>;\n evmAccount?: MaybeRef<string | null | undefined>;\n}\n\nexport interface UseTransactionSimulationReturn {\n result: ShallowRef<SimulationResult | undefined>;\n isSimulating: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n simulate: () => Promise<SimulationResult>;\n reset: () => void;\n}\n\n/** Basic eth_call preview; caller supplies chain/account/client context. */\nexport function useTransactionSimulation(\n tx: MaybeRefOrGetter<SimulationTransaction | undefined>,\n options: UseTransactionSimulationOptions = {},\n): UseTransactionSimulationReturn {\n const result = shallowRef<SimulationResult | undefined>(undefined);\n const isSimulating = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let timer: ReturnType<typeof setTimeout> | undefined;\n let generation = 0;\n let disposed = false;\n\n const simulate = async (): Promise<SimulationResult> => {\n const own = ++generation;\n const transaction = toValue(tx);\n if (transaction) {\n isSimulating.value = true;\n error.value = null;\n }\n try {\n const value = await simulateTransactionPreview(transaction, {\n chainId: unref(options.chainId),\n currentChain: unref(options.currentChain),\n publicClient: unref(options.publicClient),\n evmAccount: unref(options.evmAccount),\n });\n if (!disposed && own === generation) result.value = value;\n return value;\n } catch (cause) {\n const normalized =\n cause instanceof Error ? cause : new Error(\"Simulation failed\");\n if (!disposed && own === generation) error.value = normalized;\n throw normalized;\n } finally {\n if (transaction && !disposed && own === generation)\n isSimulating.value = false;\n }\n };\n\n watch(\n [\n () => toValue(tx),\n () => unref(options.chainId),\n () => unref(options.currentChain),\n () => unref(options.publicClient),\n () => unref(options.evmAccount),\n ],\n ([transaction]) => {\n generation++;\n if (timer) clearTimeout(timer);\n if (!transaction) return;\n timer = setTimeout(() => {\n timer = undefined;\n void simulate().catch(() => {\n // Error is captured in state.\n });\n }, 300);\n },\n { immediate: true },\n );\n\n const reset = (): void => {\n generation++;\n result.value = undefined;\n error.value = null;\n isSimulating.value = false;\n };\n onScopeDispose(() => {\n disposed = true;\n generation++;\n if (timer) clearTimeout(timer);\n });\n\n return { result, isSimulating, error, simulate, reset };\n}\n","import {\n createDecimalsCache,\n encodeErc20Transfer,\n readDecimals,\n writeDecimals,\n} from \"@naculus/connect-appkit-core\";\nimport {\n ERC20_MIN_ABI,\n parseUnits,\n type TokenConfig,\n WalletError,\n} from \"@naculus/connect-core\";\nimport type { MaybeRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { onScopeDispose, shallowRef, toValue, unref, watch } from \"vue\";\nimport type { ERC20Reader, ERC20Sender } from \"./erc20\";\nimport { assertErc20Context } from \"./erc20\";\n\nexport interface UseERC20TransferOptions {\n token: MaybeRefOrGetter<TokenConfig>;\n account: MaybeRefOrGetter<string | null | undefined>;\n chainId: MaybeRefOrGetter<number | undefined>;\n connected: MaybeRefOrGetter<boolean>;\n publicClient: MaybeRefOrGetter<ERC20Reader | null | undefined>;\n sendTransaction: MaybeRef<ERC20Sender>;\n}\n\nexport interface UseERC20TransferReturn {\n sendTransfer: (to: `0x${string}`, amount: string) => Promise<`0x${string}`>;\n isSending: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n}\n\n/** Vue state shell for an ERC-20 transfer through a caller-owned send action. */\nexport function useERC20Transfer(\n options: UseERC20TransferOptions,\n): UseERC20TransferReturn {\n const initialToken = toValue(options.token);\n const decimals = createDecimalsCache(initialToken, initialToken.decimals);\n const isSending = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let generation = 0;\n let disposed = false;\n\n watch(\n [\n () => toValue(options.token).address,\n () => toValue(options.token).chainId,\n () => toValue(options.token).decimals,\n () => toValue(options.account),\n () => toValue(options.chainId),\n () => toValue(options.connected),\n () => toValue(options.publicClient),\n () => unref(options.sendTransaction),\n ],\n () => {\n generation++;\n isSending.value = false;\n error.value = null;\n },\n { flush: \"sync\" },\n );\n\n const sendTransfer: UseERC20TransferReturn[\"sendTransfer\"] = async (\n to,\n amount,\n ) => {\n const own = ++generation;\n const token = toValue(options.token);\n const reader = toValue(options.publicClient);\n const stillCurrent = (): boolean => !disposed && own === generation;\n error.value = null;\n isSending.value = true;\n try {\n assertErc20Context(\n token,\n toValue(options.chainId),\n toValue(options.account),\n toValue(options.connected),\n );\n if (!reader) {\n throw new WalletError(\n \"wallet_unavailable\",\n \"No public client available\",\n );\n }\n let precision = readDecimals(decimals, token, token.decimals);\n if (precision === undefined) {\n precision = Number(\n await reader.readContract({\n address: token.address,\n abi: ERC20_MIN_ABI,\n functionName: \"decimals\",\n }),\n );\n if (!stillCurrent()) {\n throw new WalletError(\n \"session_inactive\",\n \"Wallet or token context changed. Retry the transfer.\",\n );\n }\n writeDecimals(decimals, token, precision);\n }\n const data = encodeErc20Transfer(to, parseUnits(amount, precision));\n return await unref(options.sendTransaction)({\n to: token.address,\n data,\n value: \"0\",\n });\n } catch (cause) {\n const normalized =\n cause instanceof Error ? cause : new Error(\"Transfer failed\");\n if (stillCurrent()) error.value = normalized;\n throw normalized;\n } finally {\n if (stillCurrent()) isSending.value = false;\n }\n };\n\n onScopeDispose(() => {\n disposed = true;\n generation++;\n });\n return { sendTransfer, isSending, error };\n}\n","import {\n bareEvmAddress,\n tokenChainMismatch,\n} from \"@naculus/connect-appkit-core\";\nimport type { TokenConfig } from \"@naculus/connect-core\";\nimport { type ERC20_MIN_ABI, WalletError } from \"@naculus/connect-core\";\n\nexport interface ERC20Reader {\n readContract(args: {\n address: `0x${string}`;\n abi: typeof ERC20_MIN_ABI;\n functionName: \"decimals\" | \"allowance\";\n args?: readonly [`0x${string}`, `0x${string}`];\n }): Promise<unknown>;\n}\n\nexport interface ERC20Transaction {\n to: `0x${string}`;\n data: `0x${string}`;\n value: \"0\";\n}\n\nexport type ERC20Sender = (\n transaction: ERC20Transaction,\n) => Promise<`0x${string}`>;\n\nexport function assertErc20Context(\n token: TokenConfig,\n chainId: number | undefined,\n account: string | null | undefined,\n connected: boolean,\n): `0x${string}` {\n if (!connected || !account) {\n throw new WalletError(\"wallet_unavailable\", \"No connected account\");\n }\n const mismatch = tokenChainMismatch(token, chainId);\n if (mismatch) throw mismatch;\n const bare = bareEvmAddress(account);\n if (!bare) {\n throw new WalletError(\"wallet_unavailable\", \"No valid EVM account\");\n }\n return bare;\n}\n","import {\n createDecimalsCache,\n encodeErc20Approve,\n readDecimals,\n writeDecimals,\n} from \"@naculus/connect-appkit-core\";\nimport {\n ERC20_MIN_ABI,\n formatUnits,\n parseUnits,\n type TokenConfig,\n WalletError,\n} from \"@naculus/connect-core\";\nimport type { ComputedRef, MaybeRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport {\n computed,\n onScopeDispose,\n shallowRef,\n toValue,\n unref,\n watch,\n} from \"vue\";\nimport type { ERC20Reader, ERC20Sender } from \"./erc20\";\nimport { assertErc20Context } from \"./erc20\";\n\nconst MAX_UINT256 = (1n << 256n) - 1n;\n\nexport interface UseERC20ApproveOptions {\n token: MaybeRefOrGetter<TokenConfig>;\n spender: MaybeRefOrGetter<`0x${string}`>;\n account: MaybeRefOrGetter<string | null | undefined>;\n chainId: MaybeRefOrGetter<number | undefined>;\n connected: MaybeRefOrGetter<boolean>;\n publicClient: MaybeRefOrGetter<ERC20Reader | null | undefined>;\n sendTransaction: MaybeRef<ERC20Sender>;\n}\n\nexport interface UseERC20ApproveReturn {\n approve: (amount: string) => Promise<`0x${string}`>;\n approveMax: () => Promise<`0x${string}`>;\n allowanceRaw: ShallowRef<bigint | null>;\n allowance: ComputedRef<string | null>;\n hasAllowance: (required: string) => Promise<boolean>;\n isApproving: ShallowRef<boolean>;\n isFetchingAllowance: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n refetchAllowance: () => Promise<bigint | null>;\n}\n\n/** Vue state shell for ERC-20 approvals through caller-owned read/send actions. */\nexport function useERC20Approve(\n options: UseERC20ApproveOptions,\n): UseERC20ApproveReturn {\n const initialToken = toValue(options.token);\n const decimals = createDecimalsCache(initialToken, initialToken.decimals);\n const allowanceRaw = shallowRef<bigint | null>(null);\n const isApproving = shallowRef(false);\n const isFetchingAllowance = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let generation = 0;\n let allowanceGeneration = 0;\n let disposed = false;\n\n watch(\n [\n () => toValue(options.token).address,\n () => toValue(options.token).chainId,\n () => toValue(options.token).decimals,\n () => toValue(options.spender),\n () => toValue(options.account),\n () => toValue(options.chainId),\n () => toValue(options.connected),\n () => toValue(options.publicClient),\n () => unref(options.sendTransaction),\n ],\n () => {\n generation++;\n allowanceGeneration++;\n allowanceRaw.value = null;\n isApproving.value = false;\n isFetchingAllowance.value = false;\n error.value = null;\n },\n { flush: \"sync\" },\n );\n\n const context = () => {\n const token = toValue(options.token);\n const account = assertErc20Context(\n token,\n toValue(options.chainId),\n toValue(options.account),\n toValue(options.connected),\n );\n const reader = toValue(options.publicClient);\n if (!reader)\n throw new WalletError(\"wallet_unavailable\", \"No public client\");\n return { token, account, reader, spender: toValue(options.spender) };\n };\n\n const readPrecision = async (): Promise<number> => {\n const { token, reader } = context();\n let precision = readDecimals(decimals, token, token.decimals);\n if (precision === undefined) {\n precision = Number(\n await reader.readContract({\n address: token.address,\n abi: ERC20_MIN_ABI,\n functionName: \"decimals\",\n }),\n );\n writeDecimals(decimals, token, precision);\n }\n return precision;\n };\n\n const refetchAllowance = async (): Promise<bigint | null> => {\n const own = ++allowanceGeneration;\n allowanceRaw.value = null;\n error.value = null;\n isFetchingAllowance.value = true;\n try {\n const { token, account, reader, spender } = context();\n const raw = BigInt(\n (await reader.readContract({\n address: token.address,\n abi: ERC20_MIN_ABI,\n functionName: \"allowance\",\n args: [account, spender],\n })) as bigint | string | number,\n );\n if (disposed || own !== allowanceGeneration) return null;\n allowanceRaw.value = raw;\n return raw;\n } catch (cause) {\n if (!disposed && own === allowanceGeneration) {\n error.value =\n cause instanceof Error\n ? cause\n : new Error(\"Failed to fetch allowance\");\n }\n return null;\n } finally {\n if (!disposed && own === allowanceGeneration)\n isFetchingAllowance.value = false;\n }\n };\n\n const doApprove = async (rawAmount: bigint): Promise<`0x${string}`> => {\n const own = ++generation;\n error.value = null;\n isApproving.value = true;\n try {\n const { token, spender } = context();\n const hash = await unref(options.sendTransaction)({\n to: token.address,\n data: encodeErc20Approve(spender, rawAmount),\n value: \"0\",\n });\n if (!disposed && own === generation) void refetchAllowance();\n return hash;\n } catch (cause) {\n const normalized =\n cause instanceof Error ? cause : new Error(\"Approve failed\");\n if (!disposed && own === generation) error.value = normalized;\n throw normalized;\n } finally {\n if (!disposed && own === generation) isApproving.value = false;\n }\n };\n\n const approve = async (amount: string): Promise<`0x${string}`> => {\n const contextGeneration = generation;\n let rawAmount: bigint;\n try {\n const precision = await readPrecision();\n if (contextGeneration !== generation || disposed) {\n throw new WalletError(\n \"session_inactive\",\n \"Wallet or token context changed. Retry the approval.\",\n );\n }\n rawAmount = parseUnits(amount, precision);\n } catch (cause) {\n const normalized =\n cause instanceof Error ? cause : new Error(\"Approve failed\");\n if (!disposed && contextGeneration === generation)\n error.value = normalized;\n throw normalized;\n }\n return doApprove(rawAmount);\n };\n const approveMax = (): Promise<`0x${string}`> => doApprove(MAX_UINT256);\n const hasAllowance = async (required: string): Promise<boolean> => {\n const raw = allowanceRaw.value ?? (await refetchAllowance());\n if (raw === null) return false;\n return raw >= parseUnits(required, await readPrecision());\n };\n\n const allowance = computed(() => {\n if (allowanceRaw.value === null) return null;\n const token = toValue(options.token);\n const precision = readDecimals(decimals, token, token.decimals);\n return precision === undefined\n ? null\n : formatUnits(allowanceRaw.value, precision);\n });\n\n onScopeDispose(() => {\n disposed = true;\n generation++;\n allowanceGeneration++;\n });\n return {\n approve,\n approveMax,\n allowanceRaw,\n allowance,\n hasAllowance,\n isApproving,\n isFetchingAllowance,\n error,\n refetchAllowance,\n };\n}\n","import type {\n SimulationCallClient,\n WalletChain,\n} from \"@naculus/connect-appkit-core\";\nimport { chainNumber, encodeErc20Transfer } from \"@naculus/connect-appkit-core\";\nimport type { SimulationResult } from \"@naculus/connect-core\";\nimport { parseUnits, type TokenConfig } from \"@naculus/connect-core\";\nimport type { ComputedRef, MaybeRef, MaybeRefOrGetter } from \"vue\";\nimport { computed, toValue } from \"vue\";\nimport {\n type UseTransactionSimulationReturn,\n useTransactionSimulation,\n} from \"./useTransactionSimulation\";\n\nexport interface UseERC20TransferSimulationOptions {\n token: MaybeRefOrGetter<TokenConfig>;\n to: MaybeRefOrGetter<`0x${string}`>;\n amount: MaybeRefOrGetter<string>;\n connected: MaybeRefOrGetter<boolean>;\n evmAccount: MaybeRef<string | null | undefined>;\n currentChain?: MaybeRef<WalletChain | null | undefined>;\n publicClient?: MaybeRef<SimulationCallClient | null | undefined>;\n}\n\nexport interface UseERC20TransferSimulationReturn\n extends Omit<\n UseTransactionSimulationReturn,\n \"result\" | \"isSimulating\" | \"error\" | \"simulate\"\n > {\n result: ComputedRef<SimulationResult | undefined>;\n isSimulating: ComputedRef<boolean>;\n error: ComputedRef<Error | null>;\n reSimulate: () => Promise<SimulationResult>;\n}\n\n/** Vue shell that previews exactly the calldata accepted by the transfer hook. */\nexport function useERC20TransferSimulation(\n options: UseERC20TransferSimulationOptions,\n): UseERC20TransferSimulationReturn {\n const transaction = computed(() => {\n const token = toValue(options.token);\n if (!toValue(options.connected) || !toValue(options.evmAccount))\n return undefined;\n try {\n if (token.decimals === undefined) return undefined;\n return {\n to: token.address,\n data: encodeErc20Transfer(\n toValue(options.to),\n parseUnits(toValue(options.amount), token.decimals),\n ),\n value: \"0\" as const,\n };\n } catch {\n return undefined;\n }\n });\n const chainId = computed(() => {\n const token = toValue(options.token);\n if (token.chainId !== undefined) return token.chainId;\n const currentChain = toValue(options.currentChain);\n return currentChain ? (chainNumber(currentChain) ?? undefined) : undefined;\n });\n const simulation = useTransactionSimulation(transaction, {\n chainId,\n currentChain: options.currentChain,\n publicClient: options.publicClient,\n evmAccount: options.evmAccount,\n });\n return {\n result: computed(() =>\n transaction.value ? simulation.result.value : undefined,\n ),\n isSimulating: computed(\n () => !!transaction.value && simulation.isSimulating.value,\n ),\n error: computed(() => (transaction.value ? simulation.error.value : null)),\n reSimulate: simulation.simulate,\n reset: simulation.reset,\n };\n}\n","import { computed, toValue } from \"vue\";\nimport type { ComputedRef, MaybeRefOrGetter } from \"vue\";\nimport { useAccounts, type AccountEntry } from \"./useAccounts\";\n\nexport interface UseAccountReturn {\n accounts: ComputedRef<AccountEntry[] | null>;\n evmAccount: ComputedRef<string | null>;\n primaryAccount: ComputedRef<string | null>;\n isConnected: ComputedRef<boolean>;\n count: ComputedRef<number>;\n}\n\n/** React useAccount's connected-state view of the shared account parser. */\nexport function useAccount(\n accounts: MaybeRefOrGetter<string[] | null | undefined>,\n connected: MaybeRefOrGetter<boolean>,\n): UseAccountReturn {\n const parsed = useAccounts(accounts);\n const isConnected = computed(() => toValue(connected));\n const accountList = computed(() => toValue(accounts) ?? []);\n\n return {\n accounts: computed(() =>\n isConnected.value && accountList.value.length > 0\n ? parsed.accounts.value\n : null,\n ),\n evmAccount: computed(() =>\n isConnected.value ? parsed.evmAccount.value : null,\n ),\n primaryAccount: computed(() => accountList.value[0] ?? null),\n isConnected,\n count: computed(() => accountList.value.length),\n };\n}\n","import type {\n ActiveSessionBundle,\n ChainSession,\n SessionManager,\n} from \"@naculus/connect-core\";\nimport type { ComputedRef, MaybeRefOrGetter } from \"vue\";\nimport { computed, shallowRef, toValue, watch } from \"vue\";\n\nexport interface UseSessionReturn {\n session: ComputedRef<ActiveSessionBundle[\"walletSession\"] | null>;\n chainSessions: ComputedRef<ChainSession[]>;\n activeChainId: ComputedRef<string | null>;\n isConnected: ComputedRef<boolean>;\n connectorId: ComputedRef<string | null>;\n}\n\ninterface SessionSnapshot {\n session: ActiveSessionBundle[\"walletSession\"] | null;\n chainSessions: ChainSession[];\n activeChainId: string | null;\n connectorId: string | null;\n}\n\nfunction readSession(\n manager: SessionManager | null | undefined,\n): SessionSnapshot {\n const bundle = manager?.getActiveBundle();\n if (!bundle) {\n return {\n session: null,\n chainSessions: [],\n activeChainId: null,\n connectorId: null,\n };\n }\n return {\n session: bundle.walletSession,\n chainSessions: Array.from(bundle.chainSessions.values()),\n activeChainId: bundle.activeChainId,\n connectorId: bundle.walletSession.walletType,\n };\n}\n\n/** Reactively expose a caller-owned SessionManager's active bundle. */\nexport function useSession(\n manager: MaybeRefOrGetter<SessionManager | null | undefined>,\n): UseSessionReturn {\n const snapshot = shallowRef<SessionSnapshot>(readSession(toValue(manager)));\n\n watch(\n () => toValue(manager),\n (current, _previous, onCleanup) => {\n const update = (): void => {\n snapshot.value = readSession(current);\n };\n update();\n if (!current) return;\n current.on(\"sessionConnected\", update);\n current.on(\"sessionDisconnected\", update);\n current.on(\"chainChanged\", update);\n onCleanup(() => {\n current.off(\"sessionConnected\", update);\n current.off(\"sessionDisconnected\", update);\n current.off(\"chainChanged\", update);\n });\n },\n { immediate: true },\n );\n\n return {\n session: computed(() => snapshot.value.session),\n chainSessions: computed(() => snapshot.value.chainSessions),\n activeChainId: computed(() => snapshot.value.activeChainId),\n isConnected: computed(() => snapshot.value.session !== null),\n connectorId: computed(() => snapshot.value.connectorId),\n };\n}\n","import { WalletError } from \"@naculus/connect-core\";\nimport type { ComputedRef, MaybeRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { computed, onScopeDispose, shallowRef, toValue, unref } from \"vue\";\n\nexport interface UseConnectReturn {\n connect: () => Promise<void>;\n isConnecting: ComputedRef<boolean>;\n error: ShallowRef<Error | null>;\n}\n\n/** Connection state around a caller-owned action; never connects on mount. */\nexport function useConnect(\n action: MaybeRef<() => Promise<void>>,\n status: MaybeRefOrGetter<string>,\n): UseConnectReturn {\n const isLoading = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let disposed = false;\n let inFlight: Promise<void> | null = null;\n\n const connect = (): Promise<void> => {\n if (inFlight) return inFlight;\n const invoke = unref(action);\n isLoading.value = true;\n error.value = null;\n const pending = Promise.resolve()\n .then(() => invoke())\n .catch((cause: unknown) => {\n if (disposed) return;\n const message =\n cause instanceof Error ? cause.message : \"Connection failed\";\n error.value = cause instanceof WalletError ? cause : new Error(message);\n })\n .finally(() => {\n if (inFlight === pending) inFlight = null;\n if (!disposed) isLoading.value = false;\n });\n inFlight = pending;\n return pending;\n };\n\n onScopeDispose(() => {\n disposed = true;\n });\n return {\n connect,\n isConnecting: computed(\n () => isLoading.value || toValue(status) === \"connecting\",\n ),\n error,\n };\n}\n","import type { MaybeRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { onScopeDispose, shallowRef, toValue, unref } from \"vue\";\n\nexport interface UseDisconnectReturn {\n disconnect: () => Promise<void>;\n isDisconnecting: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n cleanup: () => void;\n}\n\n/** Disconnect through a caller-owned action, preserving React's no-op when already disconnected. */\nexport function useDisconnect(\n action: MaybeRef<() => Promise<void>>,\n status: MaybeRefOrGetter<string>,\n): UseDisconnectReturn {\n const isDisconnecting = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let disposed = false;\n let inFlight: Promise<void> | null = null;\n\n const disconnect = (): Promise<void> => {\n if (inFlight) return inFlight;\n if (toValue(status) === \"disconnected\") return Promise.resolve();\n const invoke = unref(action);\n isDisconnecting.value = true;\n error.value = null;\n const pending = Promise.resolve()\n .then(() => invoke())\n .catch((cause: unknown) => {\n if (!disposed) {\n error.value =\n cause instanceof Error ? cause : new Error(\"Disconnect failed\");\n }\n })\n .finally(() => {\n if (inFlight === pending) inFlight = null;\n if (!disposed) isDisconnecting.value = false;\n });\n inFlight = pending;\n return pending;\n };\n\n const cleanup = (): void => {\n disposed = true;\n };\n onScopeDispose(cleanup);\n return { disconnect, isDisconnecting, error, cleanup };\n}\n","import { toChainSwitchError } from \"@naculus/connect-appkit-core\";\nimport type { WalletError } from \"@naculus/connect-core\";\nimport type { ComputedRef, MaybeRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { computed, onScopeDispose, shallowRef, toValue, unref } from \"vue\";\n\nexport interface UseSwitchChainReturn {\n switchChain: (chainId: string) => Promise<void>;\n isSwitching: ShallowRef<boolean>;\n currentChainId: ComputedRef<string | null>;\n error: ShallowRef<WalletError | null>;\n clearError: () => void;\n}\n\n/** Vue counterpart of React useSwitchChain around a caller-owned action. */\nexport function useSwitchChain(\n action: MaybeRef<(chainId: string) => Promise<void>>,\n chainId: MaybeRefOrGetter<string | null | undefined>,\n): UseSwitchChainReturn {\n const isSwitching = shallowRef(false);\n const error = shallowRef<WalletError | null>(null);\n let generation = 0;\n let active = 0;\n let disposed = false;\n\n const switchChain = async (targetChainId: string): Promise<void> => {\n const invoke = unref(action);\n const mine = ++generation;\n active++;\n isSwitching.value = true;\n error.value = null;\n try {\n await invoke(targetChainId);\n } catch (cause) {\n const walletError = toChainSwitchError(cause);\n if (!disposed && mine === generation) error.value = walletError;\n throw walletError;\n } finally {\n active--;\n if (!disposed) isSwitching.value = active > 0;\n }\n };\n\n onScopeDispose(() => {\n disposed = true;\n generation++;\n });\n return {\n switchChain,\n isSwitching,\n currentChainId: computed(() => toValue(chainId) ?? null),\n error,\n clearError: () => {\n error.value = null;\n },\n };\n}\n","import type { MaybeRef, ShallowRef } from \"vue\";\nimport { onScopeDispose, shallowRef, unref } from \"vue\";\n\nexport type SignMessageAction = (message: string) => Promise<string>;\n\nexport interface UseSignMessageReturn {\n signMessage: SignMessageAction;\n isSigning: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n reset: () => void;\n}\n\n/** Reactive state around a caller-owned message-signing action. */\nexport function useSignMessage(\n action: MaybeRef<SignMessageAction>,\n): UseSignMessageReturn {\n const isSigning = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let active = 0;\n let generation = 0;\n let disposed = false;\n\n const signMessage: SignMessageAction = async (message) => {\n const invoke = unref(action);\n const own = ++generation;\n active++;\n isSigning.value = true;\n error.value = null;\n try {\n return await invoke(message);\n } catch (cause) {\n const normalized =\n cause instanceof Error ? cause : new Error(\"Signing failed\");\n if (!disposed && own === generation) error.value = normalized;\n throw normalized;\n } finally {\n active--;\n if (!disposed) isSigning.value = active > 0;\n }\n };\n\n const reset = (): void => {\n generation++;\n error.value = null;\n };\n onScopeDispose(() => {\n disposed = true;\n generation++;\n });\n return { signMessage, isSigning, error, reset };\n}\n","import type { ComputedRef, MaybeRef, ShallowRef } from \"vue\";\nimport { computed, onScopeDispose, shallowRef, unref } from \"vue\";\n\nexport interface EvmTransaction {\n to: string;\n from?: string;\n value?: string;\n data?: string;\n gas?: string;\n gasPrice?: string;\n nonce?: string;\n chainId?: number;\n}\n\nexport type SendTransactionAction = (\n transaction: EvmTransaction,\n) => Promise<string>;\n\nexport type SendTransactionStatus =\n | \"idle\"\n | \"awaiting_approval\"\n | \"submitted\"\n | \"failed\";\n\nexport interface UseSendTransactionReturn {\n sendTransaction: SendTransactionAction;\n status: ShallowRef<SendTransactionStatus>;\n error: ShallowRef<Error | null>;\n reset: () => void;\n isSending: ComputedRef<boolean>;\n}\n\n/** Reactive state around a caller-owned EVM transaction action. */\nexport function useSendTransaction(\n action: MaybeRef<SendTransactionAction>,\n): UseSendTransactionReturn {\n const status = shallowRef<SendTransactionStatus>(\"idle\");\n const error = shallowRef<Error | null>(null);\n let generation = 0;\n let disposed = false;\n\n const sendTransaction: SendTransactionAction = async (transaction) => {\n const invoke = unref(action);\n const own = ++generation;\n status.value = \"awaiting_approval\";\n error.value = null;\n try {\n const hash = await invoke(transaction);\n if (!disposed && own === generation) status.value = \"submitted\";\n return hash;\n } catch (cause) {\n const normalized =\n cause instanceof Error ? cause : new Error(\"Transaction failed\");\n if (!disposed && own === generation) {\n status.value = \"failed\";\n error.value = normalized;\n }\n throw normalized;\n }\n };\n\n const reset = (): void => {\n generation++;\n status.value = \"idle\";\n error.value = null;\n };\n onScopeDispose(() => {\n disposed = true;\n generation++;\n });\n return {\n sendTransaction,\n status,\n error,\n reset,\n isSending: computed(() => status.value === \"awaiting_approval\"),\n };\n}\n","import type { SolanaConfirmationStatus } from \"@naculus/connect-core\";\nimport type { MaybeRef, ShallowRef } from \"vue\";\nimport { onScopeDispose, shallowRef, unref } from \"vue\";\n\nexport type SolanaTransaction = Uint8Array | string;\nexport type SignSolanaTransactionAction = (\n transaction: SolanaTransaction,\n) => Promise<Uint8Array>;\nexport type SendSolanaTransactionAction = (\n transaction: SolanaTransaction,\n) => Promise<string>;\nexport type GetSolanaTransactionStatusAction = (\n signature: string,\n) => Promise<{ status: SolanaConfirmationStatus; error: string | null }>;\n\nexport interface UseSolanaTransactionOptions {\n signTransaction: MaybeRef<SignSolanaTransactionAction>;\n sendTransaction: MaybeRef<SendSolanaTransactionAction>;\n getStatus: MaybeRef<GetSolanaTransactionStatusAction>;\n}\n\nexport interface UseSolanaTransactionReturn {\n signTransaction: SignSolanaTransactionAction;\n sendTransaction: SendSolanaTransactionAction;\n getStatus: GetSolanaTransactionStatusAction;\n isSigning: ShallowRef<boolean>;\n isSending: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n reset: () => void;\n}\n\n/** Reactive state around caller-owned Solana sign, send, and status actions. */\nexport function useSolanaTransaction(\n options: UseSolanaTransactionOptions,\n): UseSolanaTransactionReturn {\n const isSigning = shallowRef(false);\n const isSending = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let signing = 0;\n let sending = 0;\n let generation = 0;\n let disposed = false;\n\n const signTransaction: SignSolanaTransactionAction = async (transaction) => {\n const invoke = unref(options.signTransaction);\n const own = ++generation;\n signing++;\n isSigning.value = true;\n error.value = null;\n try {\n return await invoke(transaction);\n } catch (cause) {\n const normalized =\n cause instanceof Error ? cause : new Error(\"Signing failed\");\n if (!disposed && own === generation) error.value = normalized;\n throw normalized;\n } finally {\n signing--;\n if (!disposed) isSigning.value = signing > 0;\n }\n };\n\n const sendTransaction: SendSolanaTransactionAction = async (transaction) => {\n const invoke = unref(options.sendTransaction);\n const own = ++generation;\n sending++;\n isSending.value = true;\n error.value = null;\n try {\n return await invoke(transaction);\n } catch (cause) {\n const normalized =\n cause instanceof Error ? cause : new Error(\"Send failed\");\n if (!disposed && own === generation) error.value = normalized;\n throw normalized;\n } finally {\n sending--;\n if (!disposed) isSending.value = sending > 0;\n }\n };\n\n const getStatus: GetSolanaTransactionStatusAction = (signature) =>\n unref(options.getStatus)(signature);\n const reset = (): void => {\n generation++;\n error.value = null;\n };\n onScopeDispose(() => {\n disposed = true;\n generation++;\n });\n return {\n signTransaction,\n sendTransaction,\n getStatus,\n isSigning,\n isSending,\n error,\n reset,\n };\n}\n","import type { MaybeRef, ShallowRef } from \"vue\";\nimport { onScopeDispose, shallowRef, unref } from \"vue\";\nimport type { SiwxResult, SiwxSignInAction } from \"./siwx\";\n\nexport interface UseSignInWithXReturn {\n signIn: SiwxSignInAction;\n isSigningIn: ShallowRef<boolean>;\n result: ShallowRef<SiwxResult | null>;\n error: ShallowRef<Error | null>;\n clearError: () => void;\n reset: () => void;\n}\n\n/** Reactive state around a caller-owned SIWX sign-in action. */\nexport function useSignInWithX(\n action: MaybeRef<SiwxSignInAction>,\n): UseSignInWithXReturn {\n const isSigningIn = shallowRef(false);\n const result = shallowRef<SiwxResult | null>(null);\n const error = shallowRef<Error | null>(null);\n let generation = 0;\n let active = 0;\n let disposed = false;\n\n const signIn: SiwxSignInAction = async (options) => {\n const invoke = unref(action);\n const own = ++generation;\n active++;\n isSigningIn.value = true;\n error.value = null;\n try {\n const next = await invoke(options);\n if (!disposed && own === generation) result.value = next;\n return next;\n } catch (cause) {\n const normalized =\n cause instanceof Error ? cause : new Error(\"SIWX sign-in failed\");\n if (!disposed && own === generation) error.value = normalized;\n throw normalized;\n } finally {\n active--;\n if (!disposed) isSigningIn.value = active > 0;\n }\n };\n const clearError = (): void => {\n error.value = null;\n };\n const reset = (): void => {\n generation++;\n result.value = null;\n error.value = null;\n };\n onScopeDispose(() => {\n disposed = true;\n generation++;\n });\n return { signIn, isSigningIn, result, error, clearError, reset };\n}\n","import type { MaybeRef } from \"vue\";\nimport type { SiwxSignInAction, SiwxSignInOptions } from \"./siwx\";\nimport { type UseSignInWithXReturn, useSignInWithX } from \"./useSignInWithX\";\n\nexport type UseSignInWithEthereumOptions = SiwxSignInOptions;\n\nexport interface UseSignInWithEthereumReturn extends UseSignInWithXReturn {}\n\n/** Ethereum-named view of the caller-owned SIWX sign-in shell. */\nexport function useSignInWithEthereum(\n action: MaybeRef<SiwxSignInAction>,\n): UseSignInWithEthereumReturn {\n return useSignInWithX(action);\n}\n","import type { ComputedRef, MaybeRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { computed, onScopeDispose, shallowRef, toValue, unref } from \"vue\";\nimport type {\n ExecuteCallsAction,\n ExecutionRoute,\n PreviewExecutionAction,\n} from \"./eip5792\";\n\nexport interface UseExecuteCallsOptions {\n preview: MaybeRef<PreviewExecutionAction>;\n execute: MaybeRef<ExecuteCallsAction>;\n lastRoute: MaybeRefOrGetter<ExecutionRoute | null>;\n reset: MaybeRef<() => void>;\n}\n\nexport interface UseExecuteCallsReturn {\n preview: PreviewExecutionAction;\n execute: ExecuteCallsAction;\n isExecuting: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n lastRoute: ComputedRef<ExecutionRoute | null>;\n reset: () => void;\n}\n\n/** Reactive state around a caller-owned EIP-5792 execution planner/action. */\nexport function useExecuteCalls(\n options: UseExecuteCallsOptions,\n): UseExecuteCallsReturn {\n const isExecuting = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let generation = 0;\n let active = 0;\n let disposed = false;\n\n const preview: PreviewExecutionAction = (callCount, atomicity) =>\n unref(options.preview)(callCount, atomicity);\n\n const execute: ExecuteCallsAction = async (calls, atomicity) => {\n const invoke = unref(options.execute);\n const own = ++generation;\n active++;\n isExecuting.value = true;\n error.value = null;\n try {\n return await invoke(calls, atomicity);\n } catch (cause) {\n const normalized =\n cause instanceof Error ? cause : new Error(\"Execution failed\");\n if (!disposed && own === generation) error.value = normalized;\n throw normalized;\n } finally {\n active--;\n if (!disposed) isExecuting.value = active > 0;\n }\n };\n\n const reset = (): void => {\n generation++;\n error.value = null;\n unref(options.reset)();\n };\n\n onScopeDispose(() => {\n disposed = true;\n generation++;\n });\n\n return {\n preview,\n execute,\n isExecuting,\n error,\n lastRoute: computed(() => toValue(options.lastRoute)),\n reset,\n };\n}\n","import {\n bareEvmAddress,\n createDelegationPolicyFlow,\n type DelegationPolicyPreview,\n getSharedSessionKeyManager,\n isVerifiablePolicy,\n type PolicyExecutionAdapter,\n type PolicyExecutionPreview,\n type PolicyExecutionSubmission,\n type PolicySignatureVerifier,\n} from \"@naculus/connect-appkit-core\";\nimport type {\n AtomicityRequirement,\n SessionKeyInfo,\n SessionKeyManager,\n SessionKeyManagerConfig,\n SessionKeyScope,\n SessionKeyTransaction,\n} from \"@naculus/connect-core\";\nimport type { ComputedRef, MaybeRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport {\n computed,\n onScopeDispose,\n shallowRef,\n toValue,\n unref,\n watch,\n} from \"vue\";\nimport { useActionGuard } from \"./internal/action-guard\";\nimport { useSessionKeys } from \"./useSessionKeys\";\n\nexport type {\n DelegationPolicyPreview,\n PolicyExecutionAdapter,\n PolicyExecutionSubmission,\n};\n\nexport interface UseDelegationPolicyOptions {\n /** Connected EOA (plain or CAIP-10). */\n account: MaybeRefOrGetter<string | null | undefined>;\n /** Whether a wallet session is connected (gates the policy list). */\n connected: MaybeRefOrGetter<boolean>;\n /** Main-wallet EIP-191 signer for the policy message. */\n signMessage: MaybeRef<(message: string) => Promise<string>>;\n /** Recovers an EIP-191 signer and compares; e.g. viem's recoverMessageAddress. */\n verifySignature: MaybeRef<PolicySignatureVerifier>;\n /** Execution planner (from useExecuteCalls-style preview) for readiness. */\n previewExecution: MaybeRef<\n (\n callCount: number,\n atomicity: AtomicityRequirement,\n ) => PolicyExecutionPreview\n >;\n /** Current on-chain EIP-7702 delegation of the account (from useDelegation). */\n delegation: MaybeRefOrGetter<{\n delegated: boolean | null;\n delegate: `0x${string}` | null;\n }>;\n managerConfig?: SessionKeyManagerConfig;\n /** Reuse a caller-owned manager instead of the shared one. */\n manager?: SessionKeyManager;\n origin?: string;\n sponsorship?: AtomicityRequirement;\n adapter?: PolicyExecutionAdapter;\n}\n\nexport interface UseDelegationPolicyReturn {\n policies: ShallowRef<SessionKeyInfo[]>;\n /** Active policies whose stored signature currently verifies. */\n activePolicies: ComputedRef<SessionKeyInfo[]>;\n storageAvailable: boolean;\n loading: ComputedRef<boolean>;\n isBusy: ShallowRef<boolean>;\n error: ComputedRef<Error | null>;\n createPolicy: (scope: Partial<SessionKeyScope>) => Promise<SessionKeyInfo>;\n revokePolicy: (policyId: string) => Promise<void>;\n previewPolicyExecution: (\n policyId: string,\n tx: SessionKeyTransaction,\n callCount?: number,\n atomicity?: AtomicityRequirement,\n ) => Promise<DelegationPolicyPreview>;\n signPolicyDigest: (\n policyId: string,\n digest: `0x${string}`,\n tx: SessionKeyTransaction,\n ) => Promise<`0x${string}`>;\n executePolicy: (\n policyId: string,\n tx: SessionKeyTransaction,\n ) => Promise<PolicyExecutionSubmission>;\n refresh: () => Promise<void>;\n clearError: () => void;\n}\n\n/**\n * Signed off-chain delegation policies in Vue. The whole flow is\n * appkit-core's createDelegationPolicyFlow, shared with React; this file\n * supplies reactivity and the caller-owned signer, verifier, planner and\n * delegation state that React gets from its provider.\n */\nexport function useDelegationPolicy(\n options: UseDelegationPolicyOptions,\n): UseDelegationPolicyReturn {\n const manager =\n options.manager ?? getSharedSessionKeyManager(options.managerConfig);\n const sessionKeys = useSessionKeys(options.connected, options.managerConfig, {\n manager,\n });\n const guard = useActionGuard();\n const verifiedIds = shallowRef<Set<string>>(new Set());\n const isVerifying = shallowRef(false);\n const verifyError = shallowRef<Error | null>(null);\n let verifyGeneration = 0;\n let disposed = false;\n\n const origin =\n options.origin ??\n (typeof window !== \"undefined\" ? window.location.origin : \"unknown\");\n\n const flow = createDelegationPolicyFlow({\n manager,\n origin,\n signer: () => bareEvmAddress(toValue(options.account)),\n signMessage: (message) => unref(options.signMessage)(message),\n verifySignature: (input) => unref(options.verifySignature)(input),\n previewExecution: (callCount, atomicity) =>\n unref(options.previewExecution)(callCount, atomicity),\n sponsorship: options.sponsorship,\n adapter: options.adapter,\n delegation: () => toValue(options.delegation),\n encryptionKeyConfigured: Boolean(options.managerConfig?.encryptionKey),\n storageAvailable: () => sessionKeys.storageAvailable,\n refresh: sessionKeys.refresh,\n });\n\n // Re-verify stored signatures whenever the list changes; a verification\n // for a previous list must not mark the current one.\n watch(\n () => sessionKeys.sessions.value,\n (sessions) => {\n const own = ++verifyGeneration;\n const candidates = sessions.filter(isVerifiablePolicy);\n if (candidates.length === 0) {\n verifiedIds.value = new Set();\n isVerifying.value = false;\n return;\n }\n isVerifying.value = true;\n void Promise.all(\n candidates.map(\n async (policy) =>\n [policy.id, await flow.verifyStoredPolicy(policy)] as const,\n ),\n )\n .then((results) => {\n if (disposed || own !== verifyGeneration) return;\n verifiedIds.value = new Set(\n results.filter(([, ok]) => ok).map(([id]) => id),\n );\n })\n .catch((cause) => {\n if (disposed || own !== verifyGeneration) return;\n verifiedIds.value = new Set();\n verifyError.value =\n cause instanceof Error\n ? cause\n : new Error(\"Policy verification failed\");\n })\n .finally(() => {\n if (!disposed && own === verifyGeneration) isVerifying.value = false;\n });\n },\n { immediate: true },\n );\n\n onScopeDispose(() => {\n disposed = true;\n verifyGeneration++;\n });\n\n return {\n policies: sessionKeys.sessions,\n activePolicies: computed(() =>\n sessionKeys.activeSessions.value.filter((p) =>\n verifiedIds.value.has(p.id),\n ),\n ),\n storageAvailable: sessionKeys.storageAvailable,\n loading: computed(() => sessionKeys.loading.value || isVerifying.value),\n isBusy: guard.busy,\n error: computed(\n () => guard.error.value ?? verifyError.value ?? sessionKeys.error.value,\n ),\n createPolicy: (scope) =>\n guard.run(() => flow.createPolicy(scope), \"Policy creation failed\"),\n revokePolicy: (policyId) =>\n guard.run(() => flow.revokePolicy(policyId), \"Policy revocation failed\"),\n previewPolicyExecution: flow.previewPolicyExecution,\n signPolicyDigest: flow.signPolicyDigest,\n executePolicy: (policyId, tx) =>\n guard.run(\n () => flow.executePolicy(policyId, tx),\n \"Policy execution failed\",\n ),\n refresh: sessionKeys.refresh,\n clearError: () => {\n guard.reset();\n verifyError.value = null;\n sessionKeys.clearError();\n },\n };\n}\n","import type { ShallowRef } from \"vue\";\nimport { onScopeDispose, shallowRef } from \"vue\";\n\nexport interface ActionGuard {\n /** True while at least one guarded call is in flight. */\n busy: ShallowRef<boolean>;\n /** The most recent failure of the newest call; older failures are dropped. */\n error: ShallowRef<Error | null>;\n /**\n * Run `action`. Concurrency-counted busy flag; only the newest call may\n * publish an error; the error is rethrown so callers still see it.\n */\n run<T>(action: () => Promise<T>, fallbackMessage: string): Promise<T>;\n /** Forget the current error and stop any in-flight call from publishing. */\n reset(): void;\n}\n\n/**\n * The invocation guard every action-style composable needs, in one place.\n * Created inside a component scope; disposal is handled automatically.\n */\nexport function useActionGuard(): ActionGuard {\n const busy = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let active = 0;\n let generation = 0;\n let disposed = false;\n\n const run = async <T>(\n action: () => Promise<T>,\n fallbackMessage: string,\n ): Promise<T> => {\n const own = ++generation;\n active++;\n busy.value = true;\n error.value = null;\n try {\n return await action();\n } catch (cause) {\n const normalized =\n cause instanceof Error ? cause : new Error(fallbackMessage);\n if (!disposed && own === generation) error.value = normalized;\n throw normalized;\n } finally {\n active--;\n if (!disposed) busy.value = active > 0;\n }\n };\n\n const reset = (): void => {\n generation++;\n error.value = null;\n };\n\n onScopeDispose(() => {\n disposed = true;\n generation++;\n });\n\n return { busy, error, run, reset };\n}\n","import { getSharedSessionKeyManager } from \"@naculus/connect-appkit-core\";\nimport type {\n ScopeCheckResult,\n SessionKeyInfo,\n SessionKeyManager,\n SessionKeyManagerConfig,\n SessionKeyScope,\n SessionKeyTransaction,\n} from \"@naculus/connect-core\";\nimport type { ComputedRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { computed, onScopeDispose, shallowRef, toValue, watch } from \"vue\";\nimport { useActionGuard } from \"./internal/action-guard\";\n\n/**\n * Vue counterparts of the React session-key hooks. The SessionKeyManager —\n * key generation, encryption at rest, scope enforcement, fail-closed signing\n * — is connect-core's; the shared instance and its config guard are\n * appkit-core's. These composables only add reactivity. Private key material\n * never reaches them: signWithSession returns a signature, not a key.\n */\n\nexport interface SessionKeyComposableOptions {\n /** Reuse a caller-owned manager instead of the shared process-wide one. */\n manager?: SessionKeyManager;\n}\n\nfunction resolveManager(\n config: SessionKeyManagerConfig | undefined,\n options: SessionKeyComposableOptions,\n): SessionKeyManager {\n return options.manager ?? getSharedSessionKeyManager(config);\n}\n\n// ─── useSessionKeys ──────────────────────────────────────────────────\n\nexport interface UseSessionKeysReturn {\n sessions: ShallowRef<SessionKeyInfo[]>;\n activeSessions: ComputedRef<SessionKeyInfo[]>;\n loading: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n refresh: () => Promise<void>;\n clearError: () => void;\n storageAvailable: boolean;\n}\n\n/**\n * Lists session keys while a wallet session is connected; an empty list\n * otherwise, as in React. `connected` is the caller's session state.\n */\nexport function useSessionKeys(\n connected: MaybeRefOrGetter<boolean>,\n config?: SessionKeyManagerConfig,\n options: SessionKeyComposableOptions = {},\n): UseSessionKeysReturn {\n const manager = resolveManager(config, options);\n const sessions = shallowRef<SessionKeyInfo[]>([]);\n const loading = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let generation = 0;\n let disposed = false;\n\n const refresh = async (): Promise<void> => {\n const own = ++generation;\n if (!toValue(connected)) {\n sessions.value = [];\n return;\n }\n loading.value = true;\n error.value = null;\n try {\n const keys = await manager.listSessions();\n if (!disposed && own === generation) sessions.value = keys;\n } catch (cause) {\n if (!disposed && own === generation) {\n error.value =\n cause instanceof Error\n ? cause\n : new Error(\"Failed to load session keys\");\n }\n } finally {\n if (!disposed && own === generation) loading.value = false;\n }\n };\n\n watch(\n () => toValue(connected),\n () => {\n void refresh();\n },\n { immediate: true },\n );\n onScopeDispose(() => {\n disposed = true;\n generation++;\n });\n\n return {\n sessions,\n activeSessions: computed(() =>\n sessions.value.filter((s) => s.status === \"active\"),\n ),\n loading,\n error,\n refresh,\n clearError: () => {\n error.value = null;\n },\n storageAvailable: manager.isStorageAvailable(),\n };\n}\n\n// ─── useCreateSessionKey ─────────────────────────────────────────────\n\nexport interface UseCreateSessionKeyReturn {\n createSessionKey: (\n scope?: Partial<SessionKeyScope>,\n signerAddress?: `0x${string}`,\n ) => Promise<SessionKeyInfo>;\n lastCreated: ShallowRef<SessionKeyInfo | null>;\n isCreating: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n clearError: () => void;\n}\n\nexport function useCreateSessionKey(\n config?: SessionKeyManagerConfig,\n options: SessionKeyComposableOptions = {},\n): UseCreateSessionKeyReturn {\n const manager = resolveManager(config, options);\n const guard = useActionGuard();\n const lastCreated = shallowRef<SessionKeyInfo | null>(null);\n return {\n createSessionKey: (scope, signerAddress) =>\n guard.run(async () => {\n const info = await manager.createSessionKey(scope, signerAddress);\n lastCreated.value = info;\n return info;\n }, \"Failed to create session key\"),\n lastCreated,\n isCreating: guard.busy,\n error: guard.error,\n clearError: guard.reset,\n };\n}\n\n// ─── useRevokeSession ────────────────────────────────────────────────\n\nexport interface UseRevokeSessionReturn {\n revokeSession: (sessionId: string) => Promise<void>;\n isRevoking: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n clearError: () => void;\n}\n\n/** Revocation is device-local: a bundle already handed out cannot be recalled. */\nexport function useRevokeSession(\n config?: SessionKeyManagerConfig,\n options: SessionKeyComposableOptions = {},\n): UseRevokeSessionReturn {\n const manager = resolveManager(config, options);\n const guard = useActionGuard();\n return {\n revokeSession: (sessionId) =>\n guard.run(\n () => manager.revokeSession(sessionId),\n \"Failed to revoke session key\",\n ),\n isRevoking: guard.busy,\n error: guard.error,\n clearError: guard.reset,\n };\n}\n\n// ─── useSendWithSession ──────────────────────────────────────────────\n\nexport interface UseSendWithSessionReturn {\n signWithSession: (\n sessionId: string,\n messageHash: `0x${string}`,\n tx: SessionKeyTransaction,\n ) => Promise<`0x${string}`>;\n checkScope: (\n sessionId: string,\n tx: SessionKeyTransaction,\n ) => Promise<ScopeCheckResult>;\n isBusy: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n clearError: () => void;\n}\n\nexport function useSendWithSession(\n config?: SessionKeyManagerConfig,\n options: SessionKeyComposableOptions = {},\n): UseSendWithSessionReturn {\n const manager = resolveManager(config, options);\n const guard = useActionGuard();\n return {\n signWithSession: (sessionId, messageHash, tx) =>\n guard.run(\n () => manager.signWithSessionKey(sessionId, messageHash, tx),\n \"Failed to sign with session key\",\n ),\n checkScope: (sessionId, tx) =>\n guard.run(\n () => manager.checkSessionScope(sessionId, tx),\n \"Failed to check session scope\",\n ),\n isBusy: guard.busy,\n error: guard.error,\n clearError: guard.reset,\n };\n}\n","import {\n bareEvmAddress,\n buildSmartAccountConfig,\n resolveEvmChainId,\n type SmartAccountType,\n} from \"@naculus/connect-appkit-core\";\nimport type {\n Address,\n SmartAccountConfig,\n SmartAccountInfo,\n SmartAccountManager,\n} from \"@naculus/connect-core\";\nimport { WalletError } from \"@naculus/connect-core\";\nimport type { ComputedRef, MaybeRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport {\n computed,\n onScopeDispose,\n shallowRef,\n toValue,\n unref,\n watch,\n} from \"vue\";\nimport { useActionGuard } from \"./internal/action-guard\";\n\n/** What deployWallet needs from the caller: something that sends an EVM transaction. */\nexport type DeployTransactionSender = (transaction: {\n to: Address;\n data: `0x${string}`;\n value: string;\n chainId: string;\n}) => Promise<Address>;\n\nexport interface UseSmartAccountOptions {\n /** Connected EOA (plain or CAIP-10); becomes the smart-account owner. */\n account: MaybeRefOrGetter<string | null | undefined>;\n /** Connected chain (CAIP-2), if any. */\n connectedChainId: MaybeRefOrGetter<string | null | undefined>;\n rpcUrl: MaybeRefOrGetter<string | undefined>;\n bundlerUrl?: MaybeRefOrGetter<string | undefined>;\n chainId?: MaybeRefOrGetter<string | undefined>;\n entryPoint?: Address;\n accountType?: SmartAccountType;\n salt?: bigint;\n /** Required for deployWallet; the connected wallet's sendTransaction. */\n sendTransaction?: MaybeRef<DeployTransactionSender | null | undefined>;\n /** Reuse a caller-owned manager instead of constructing one. */\n manager?: MaybeRefOrGetter<SmartAccountManager | null | undefined>;\n}\n\nexport interface UseSmartAccountReturn {\n address: ShallowRef<Address | null>;\n isDeployed: ShallowRef<boolean>;\n accountInfo: ShallowRef<SmartAccountInfo | null>;\n isLoading: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n /** Null until rpcUrl, chain and owner are all known. */\n config: ComputedRef<SmartAccountConfig | null>;\n createWallet: () => Promise<SmartAccountInfo | null>;\n deployWallet: () => Promise<Address | null>;\n getAddress: () => Promise<Address | null>;\n}\n\n/**\n * Counterfactual smart-account address, deployment state and deployment,\n * mirroring the React hook. Address derivation, factory calldata and the\n * refusal to broadcast from the manager are connect-core's; chain and\n * config decisions are appkit-core's. Deployment is sent through the\n * caller's own transaction sender, never by this composable.\n */\nexport function useSmartAccount(\n options: UseSmartAccountOptions,\n): UseSmartAccountReturn {\n const address = shallowRef<Address | null>(null);\n const isDeployed = shallowRef(false);\n const accountInfo = shallowRef<SmartAccountInfo | null>(null);\n const guard = useActionGuard();\n const managerRef = shallowRef<SmartAccountManager | null>(null);\n let generation = 0;\n let inFlight = false;\n let disposed = false;\n\n const chainId = computed(() =>\n resolveEvmChainId(\n toValue(options.chainId),\n toValue(options.connectedChainId),\n ),\n );\n\n // Build (or adopt) the manager when its inputs change; a stale async\n // import result must not overwrite a newer manager.\n watch(\n [\n () => toValue(options.manager),\n () => toValue(options.rpcUrl),\n () => toValue(options.bundlerUrl),\n () => chainId.value,\n ],\n ([supplied, rpcUrl, bundlerUrl, chain]) => {\n const own = ++generation;\n managerRef.value = null;\n if (supplied) {\n managerRef.value = supplied;\n return;\n }\n if (!rpcUrl || !chain) return;\n import(\"@naculus/connect-core\")\n .then(({ SmartAccountManager }) => {\n if (disposed || own !== generation) return;\n managerRef.value = new SmartAccountManager({\n rpcUrl,\n chainId: chain,\n bundlerClient: { url: bundlerUrl ?? \"\" },\n });\n })\n .catch((cause) => {\n if (disposed || own !== generation) return;\n guard.error.value =\n cause instanceof Error\n ? cause\n : new Error(\"Failed to load account-abstraction module\");\n });\n },\n { immediate: true },\n );\n\n const config = computed<SmartAccountConfig | null>(() => {\n const owner = bareEvmAddress(toValue(options.account));\n const chain = chainId.value;\n if (!owner || !chain || !managerRef.value) return null;\n return buildSmartAccountConfig(owner, chain, {\n accountType: options.accountType,\n entryPoint: options.entryPoint,\n salt: options.salt,\n });\n });\n\n const apply = (info: SmartAccountInfo): void => {\n address.value = info.address;\n isDeployed.value = info.isDeployed;\n accountInfo.value = info;\n };\n\n /**\n * One account operation at a time. State is written only through `commit`,\n * which is a no-op once the config, manager or scope that started the\n * operation has been replaced — so a slow result for a previous account or\n * chain cannot overwrite the current one, not even briefly.\n */\n const operate = async <T>(\n action: (\n manager: SmartAccountManager,\n cfg: SmartAccountConfig,\n commit: (write: () => void) => void,\n ) => Promise<T>,\n fallback: string,\n ): Promise<T | null> => {\n const cfg = config.value;\n const manager = managerRef.value;\n if (!cfg || !manager) {\n guard.error.value = new Error(\"Smart account not configured\");\n return null;\n }\n if (inFlight) {\n guard.error.value = new Error(\n \"Smart account operation already in progress\",\n );\n return null;\n }\n inFlight = true;\n const own = generation;\n const current = () => !disposed && own === generation;\n const commit = (write: () => void): void => {\n if (current()) write();\n };\n try {\n return await guard.run(async () => {\n const result = await action(manager, cfg, commit);\n return current() ? result : null;\n }, fallback);\n } catch {\n return null;\n } finally {\n inFlight = false;\n }\n };\n\n const createWallet = () =>\n operate(async (manager, cfg, commit) => {\n const info = await manager.createAccount(cfg);\n commit(() => apply(info));\n return info;\n }, \"Failed to create smart account\");\n\n const deployWallet = () =>\n operate(async (manager, cfg, commit) => {\n const send = unref(options.sendTransaction);\n if (!send) {\n throw new WalletError(\n \"wallet_unavailable\",\n \"deployWallet needs the connected wallet's sendTransaction\",\n );\n }\n const before = await manager.createAccount(cfg);\n if (before.isDeployed) {\n commit(() => apply(before));\n return before.address;\n }\n // Manager builds the factory call; the caller's wallet broadcasts it.\n const deployTx = await manager.getDeployCallData(cfg);\n const hash = await send({\n to: deployTx.to,\n data: deployTx.data,\n value: deployTx.value.toString(),\n chainId: cfg.chainId,\n });\n const after = await manager.createAccount(cfg);\n commit(() => apply(after));\n return hash;\n }, \"Failed to deploy smart account\");\n\n const getAddress = () =>\n operate(async (manager, cfg, commit) => {\n const addr = await manager.getAccountAddress(cfg);\n commit(() => {\n address.value = addr;\n });\n return addr;\n }, \"Failed to get smart account address\");\n\n onScopeDispose(() => {\n disposed = true;\n generation++;\n });\n\n return {\n address,\n isDeployed,\n accountInfo,\n isLoading: guard.busy,\n error: guard.error,\n config,\n createWallet,\n deployWallet,\n getAddress,\n };\n}\n","import {\n bareEvmAddress,\n buildSmartAccountConfig,\n resolveUserOpChain,\n type SmartAccountType,\n} from \"@naculus/connect-appkit-core\";\nimport type {\n Address,\n Call,\n Hex,\n SendUserOpOptions,\n UserOperationReceipt,\n UserOperationResponse,\n} from \"@naculus/connect-core\";\nimport { WalletError } from \"@naculus/connect-core\";\nimport type { MaybeRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { onScopeDispose, shallowRef, toValue, unref } from \"vue\";\n\n/** Signs the 32-byte UserOperation hash. Raw or EIP-191, per signerMode. */\nexport type UserOpSigner = (hash: Hex) => Promise<Hex> | Hex;\n\nexport interface UseSendUserOperationOptions {\n account: MaybeRefOrGetter<string | null | undefined>;\n connectedChainId: MaybeRefOrGetter<string | null | undefined>;\n rpcUrl: MaybeRefOrGetter<string | undefined>;\n bundlerUrl: MaybeRefOrGetter<string | undefined>;\n chainId?: MaybeRefOrGetter<string | undefined>;\n entryPoint?: Address;\n accountType?: SmartAccountType;\n salt?: bigint;\n /** Override the connected account as the smart-account owner. */\n owner?: MaybeRefOrGetter<Address | undefined>;\n /**\n * Required. Vue has no wallet provider to fall back to, so the caller\n * supplies the signer for the UserOperation hash. Its output is validated\n * by the manager, not trusted.\n */\n signer: MaybeRef<UserOpSigner>;\n signerMode?: \"raw\" | \"eip191\";\n}\n\nexport interface UseSendUserOperationReturn {\n sendUserOp: (\n calls: Call[],\n opts?: SendUserOpOptions,\n ) => Promise<UserOperationResponse | null>;\n userOpHash: ShallowRef<Hex | null>;\n receipt: ShallowRef<UserOperationReceipt | null>;\n isPending: ShallowRef<boolean>;\n isEstimating: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n reset: () => void;\n}\n\n/**\n * Build, sign and submit one UserOperation, mirroring the React hook.\n * Preconditions fail closed before anything is signed: configured URLs,\n * at least one call, a resolvable chain that matches the connected one, an\n * owner address. Only one operation may be in flight; a result for a\n * superseded request is dropped.\n */\nexport function useSendUserOperation(\n options: UseSendUserOperationOptions,\n): UseSendUserOperationReturn {\n const userOpHash = shallowRef<Hex | null>(null);\n const receipt = shallowRef<UserOperationReceipt | null>(null);\n const isPending = shallowRef(false);\n const isEstimating = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let requestId = 0;\n let inFlight = false;\n let disposed = false;\n\n const fail = (cause: Error): null => {\n error.value = cause;\n return null;\n };\n\n const sendUserOp = async (\n calls: Call[],\n opts?: SendUserOpOptions,\n ): Promise<UserOperationResponse | null> => {\n const rpcUrl = toValue(options.rpcUrl);\n const bundlerUrl = toValue(options.bundlerUrl);\n if (!rpcUrl) return fail(new Error(\"RPC URL not configured\"));\n if (!bundlerUrl) return fail(new Error(\"Bundler URL not configured\"));\n if (!calls.length) return fail(new Error(\"At least one call is required\"));\n if (inFlight) {\n return fail(new Error(\"A UserOperation is already in progress\"));\n }\n const owner = bareEvmAddress(\n toValue(options.owner) ?? toValue(options.account),\n );\n if (!owner) {\n return fail(\n new WalletError(\"wallet_unavailable\", \"No EVM account found\"),\n );\n }\n let targetChainId: string;\n try {\n targetChainId = resolveUserOpChain(\n toValue(options.chainId),\n toValue(options.connectedChainId),\n );\n } catch (chainError) {\n return fail(chainError as Error);\n }\n const signer = unref(options.signer);\n\n const own = ++requestId;\n inFlight = true;\n isPending.value = true;\n isEstimating.value = true;\n error.value = null;\n userOpHash.value = null;\n receipt.value = null;\n try {\n const { SmartAccountManager } = await import(\"@naculus/connect-core\");\n const manager = new SmartAccountManager({\n rpcUrl,\n bundlerClient: { url: bundlerUrl },\n chainId: targetChainId,\n signer,\n signerMode: options.signerMode ?? \"eip191\",\n });\n const config = buildSmartAccountConfig(owner, targetChainId, {\n accountType: options.accountType,\n entryPoint: options.entryPoint,\n salt: options.salt,\n });\n const response = await manager.sendUserOperation(config, calls, opts);\n if (disposed || own !== requestId) return null;\n isEstimating.value = false;\n userOpHash.value = response.userOpHash;\n void manager\n .getUserOperationReceipt(response.userOpHash)\n .then((next) => {\n if (!disposed && own === requestId) receipt.value = next;\n })\n .catch(() => undefined);\n return response;\n } catch (cause) {\n if (disposed || own !== requestId) return null;\n return fail(\n cause instanceof Error\n ? cause\n : new Error(\"Failed to send UserOperation\"),\n );\n } finally {\n inFlight = false;\n if (!disposed && own === requestId) {\n isPending.value = false;\n isEstimating.value = false;\n }\n }\n };\n\n /**\n * Clears published state and drops the in-flight operation's future\n * writes. Deliberately does not unlock single-flight: the operation may\n * still be signing or broadcasting, and a second sendUserOp meanwhile\n * would be a second on-chain side effect.\n */\n const reset = (): void => {\n requestId++;\n userOpHash.value = null;\n receipt.value = null;\n isPending.value = false;\n isEstimating.value = false;\n error.value = null;\n };\n\n onScopeDispose(() => {\n disposed = true;\n requestId++;\n });\n\n return {\n sendUserOp,\n userOpHash,\n receipt,\n isPending,\n isEstimating,\n error,\n reset,\n };\n}\n","import {\n fetchUserOperationReceipt,\n InvalidUserOperationReceiptError,\n} from \"@naculus/connect-appkit-core\";\nimport type { Hex, UserOperationReceipt } from \"@naculus/connect-core\";\nimport type { MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { onScopeDispose, shallowRef, toValue } from \"vue\";\n\nexport type UserOpStatus =\n | \"idle\"\n | \"pending\"\n | \"confirmed\"\n | \"failed\"\n | \"not_found\";\n\nexport interface UseUserOpStatusOptions {\n bundlerUrl: MaybeRefOrGetter<string | undefined>;\n /** Poll interval in ms (default 2000). */\n pollInterval?: number;\n /** Attempts before giving up as not_found (default 30). */\n maxRetries?: number;\n}\n\nexport interface UseUserOpStatusReturn {\n status: ShallowRef<UserOpStatus>;\n receipt: ShallowRef<UserOperationReceipt | null>;\n userOpHash: ShallowRef<Hex | null>;\n error: ShallowRef<Error | null>;\n isPolling: ShallowRef<boolean>;\n elapsedMs: ShallowRef<number>;\n attempts: ShallowRef<number>;\n start: (hash: Hex) => void;\n stop: () => void;\n reset: () => void;\n}\n\n/**\n * Poll a bundler for a UserOperation receipt, mirroring the React hook.\n * Receipt validation is appkit-core's: a malformed receipt ends polling as\n * not_found rather than being retried or banked; transport errors retry up\n * to maxRetries. A start() or dispose aborts the in-flight request.\n */\nexport function useUserOpStatus(\n options: UseUserOpStatusOptions,\n): UseUserOpStatusReturn {\n const status = shallowRef<UserOpStatus>(\"idle\");\n const receipt = shallowRef<UserOperationReceipt | null>(null);\n const userOpHash = shallowRef<Hex | null>(null);\n const error = shallowRef<Error | null>(null);\n const isPolling = shallowRef(false);\n const elapsedMs = shallowRef(0);\n const attempts = shallowRef(0);\n const pollInterval = options.pollInterval ?? 2000;\n const maxRetries = options.maxRetries ?? 30;\n\n let generation = 0;\n let startedAt = 0;\n let ticker: ReturnType<typeof setInterval> | null = null;\n let timer: ReturnType<typeof setTimeout> | null = null;\n let controller: AbortController | null = null;\n\n const clearTimers = (): void => {\n if (ticker) clearInterval(ticker);\n if (timer) clearTimeout(timer);\n ticker = null;\n timer = null;\n };\n\n const finish = (next: UserOpStatus, cause: Error | null): void => {\n status.value = next;\n error.value = cause;\n isPolling.value = false;\n clearTimers();\n };\n\n const poll = async (hash: Hex, own: number): Promise<void> => {\n const bundlerUrl = toValue(options.bundlerUrl);\n if (!bundlerUrl || own !== generation) return;\n const attempt = ++attempts.value;\n const abort = new AbortController();\n controller = abort;\n try {\n const next = await fetchUserOperationReceipt(\n bundlerUrl,\n hash,\n abort.signal,\n );\n if (own !== generation) return;\n if (next) {\n receipt.value = next;\n finish(next.success ? \"confirmed\" : \"failed\", null);\n return;\n }\n status.value = \"pending\";\n if (attempt <= maxRetries) {\n timer = setTimeout(() => void poll(hash, own), pollInterval);\n } else {\n finish(\n \"not_found\",\n new Error(\"UserOperation not included after maximum retries\"),\n );\n }\n } catch (cause) {\n if (own !== generation || abort.signal.aborted) return;\n const next =\n cause instanceof Error\n ? cause\n : new Error(\"Unknown bundler response failure\");\n if (next instanceof InvalidUserOperationReceiptError) {\n finish(\"not_found\", next);\n return;\n }\n if (attempt <= maxRetries) {\n timer = setTimeout(() => void poll(hash, own), pollInterval);\n } else {\n finish(\n \"not_found\",\n new Error(\n `UserOperation status unavailable after ${attempt} attempt${attempt === 1 ? \"\" : \"s\"}: ${next.message}`,\n ),\n );\n }\n } finally {\n if (controller === abort) controller = null;\n }\n };\n\n const start = (hash: Hex): void => {\n const own = ++generation;\n controller?.abort();\n controller = null;\n clearTimers();\n userOpHash.value = hash;\n receipt.value = null;\n error.value = null;\n attempts.value = 0;\n elapsedMs.value = 0;\n if (!toValue(options.bundlerUrl)) {\n finish(\"not_found\", new Error(\"Bundler URL not configured\"));\n return;\n }\n status.value = \"pending\";\n isPolling.value = true;\n startedAt = Date.now();\n ticker = setInterval(() => {\n elapsedMs.value = Date.now() - startedAt;\n }, 1000);\n void poll(hash, own);\n };\n\n const stop = (): void => {\n generation++;\n controller?.abort();\n controller = null;\n clearTimers();\n isPolling.value = false;\n };\n\n const reset = (): void => {\n stop();\n status.value = \"idle\";\n receipt.value = null;\n userOpHash.value = null;\n error.value = null;\n attempts.value = 0;\n elapsedMs.value = 0;\n };\n\n onScopeDispose(stop);\n\n return {\n status,\n receipt,\n userOpHash,\n error,\n isPolling,\n elapsedMs,\n attempts,\n start,\n stop,\n reset,\n };\n}\n","import type { ComputedRef, MaybeRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { computed, onScopeDispose, shallowRef, toValue, unref } from \"vue\";\nimport type {\n CallsStatus,\n ExecutionStrategy,\n GetCallsStatusAction,\n SendCallsAction,\n SendCallsOptions,\n ShowCallsStatusAction,\n} from \"./eip5792\";\n\nexport type SendCallsStatus =\n | \"idle\"\n | \"awaiting_approval\"\n | \"submitted\"\n | \"failed\";\n\nexport interface UseSendCallsOptions {\n sendCalls: MaybeRef<SendCallsAction>;\n getCallsStatus: MaybeRef<GetCallsStatusAction>;\n showCallsStatus: MaybeRef<ShowCallsStatusAction>;\n execution?: MaybeRefOrGetter<ExecutionStrategy | null>;\n}\n\nexport interface UseSendCallsReturn {\n sendCalls: SendCallsAction;\n getCallsStatus: GetCallsStatusAction;\n showCallsStatus: ShowCallsStatusAction;\n status: ShallowRef<SendCallsStatus>;\n error: ShallowRef<Error | null>;\n batchHash: ShallowRef<string | null>;\n callsStatus: ShallowRef<CallsStatus | null>;\n execution: ComputedRef<ExecutionStrategy | null>;\n isSending: ComputedRef<boolean>;\n reset: () => void;\n}\n\n/** Reactive state around caller-owned EIP-5792 actions and execution policy. */\nexport function useSendCalls(options: UseSendCallsOptions): UseSendCallsReturn {\n const status = shallowRef<SendCallsStatus>(\"idle\");\n const error = shallowRef<Error | null>(null);\n const batchHash = shallowRef<string | null>(null);\n const callsStatus = shallowRef<CallsStatus | null>(null);\n let sendGeneration = 0;\n let statusGeneration = 0;\n let disposed = false;\n\n const sendCalls: SendCallsAction = async (calls, input) => {\n const invoke = unref(options.sendCalls);\n const own = ++sendGeneration;\n status.value = \"awaiting_approval\";\n error.value = null;\n batchHash.value = null;\n try {\n const hash = await invoke(calls, input);\n if (!disposed && own === sendGeneration) {\n status.value = \"submitted\";\n batchHash.value = hash;\n }\n return hash;\n } catch (cause) {\n const normalized =\n cause instanceof Error ? cause : new Error(\"sendCalls failed\");\n if (!disposed && own === sendGeneration) {\n status.value = \"failed\";\n error.value = normalized;\n }\n throw normalized;\n }\n };\n\n const getCallsStatus: GetCallsStatusAction = async (hash) => {\n const invoke = unref(options.getCallsStatus);\n const own = ++statusGeneration;\n const result = await invoke(hash);\n if (!disposed && own === statusGeneration) callsStatus.value = result;\n return result;\n };\n\n const showCallsStatus: ShowCallsStatusAction = (hash) =>\n unref(options.showCallsStatus)(hash);\n\n const reset = (): void => {\n sendGeneration++;\n statusGeneration++;\n status.value = \"idle\";\n error.value = null;\n batchHash.value = null;\n callsStatus.value = null;\n };\n\n onScopeDispose(() => {\n disposed = true;\n sendGeneration++;\n statusGeneration++;\n });\n\n return {\n sendCalls,\n getCallsStatus,\n showCallsStatus,\n status,\n error,\n batchHash,\n callsStatus,\n execution: computed(() => toValue(options.execution) ?? null),\n isSending: computed(() => status.value === \"awaiting_approval\"),\n reset,\n };\n}\n","import type { ComputedRef, MaybeRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { computed, onScopeDispose, shallowRef, toValue, unref } from \"vue\";\n\nexport interface EmbeddedWalletAccountView {\n namespace: string;\n address: string;\n derivationPath?: string;\n}\n\nexport interface EmbeddedWalletView {\n accounts: EmbeddedWalletAccountView[];\n activeNamespace: string;\n createdAt: number;\n chainId?: string;\n version?: 2;\n recoveryAvailable: boolean;\n readonly address?: string;\n}\n\nexport interface UseEmbeddedWalletOptions<TWalletData, TSecurityReport> {\n wallet: MaybeRefOrGetter<EmbeddedWalletView | null>;\n backupPending: MaybeRefOrGetter<boolean>;\n storageSecurityLevel: MaybeRefOrGetter<number>;\n securityReport: MaybeRefOrGetter<TSecurityReport | null>;\n connectEmbedded: MaybeRef<() => Promise<void>>;\n restoreWallet: MaybeRef<() => Promise<boolean>>;\n generateWallet: MaybeRef<() => Promise<TWalletData | null>>;\n importFromMnemonic: MaybeRef<\n (mnemonic: string) => Promise<TWalletData | null>\n >;\n importFromPrivateKey: MaybeRef<\n (privateKey: string) => Promise<TWalletData | null>\n >;\n wipe: MaybeRef<() => Promise<void>>;\n setActiveNamespace: MaybeRef<(namespace: string) => void>;\n backfillAccounts: MaybeRef<() => Promise<EmbeddedWalletAccountView[]>>;\n getSeedPhrase: MaybeRef<() => string | null>;\n getPrivateKey: MaybeRef<() => string | null>;\n confirmBackup: MaybeRef<() => void>;\n}\n\nexport interface UseEmbeddedWalletReturn<TWalletData, TSecurityReport> {\n wallet: ComputedRef<EmbeddedWalletView | null>;\n hasWallet: ComputedRef<boolean>;\n address: ComputedRef<string | null>;\n accounts: ComputedRef<EmbeddedWalletAccountView[]>;\n activeNamespace: ComputedRef<string | null>;\n backupPending: ComputedRef<boolean>;\n storageSecurityLevel: ComputedRef<number>;\n securityReport: ComputedRef<TSecurityReport | null>;\n connectEmbedded: () => Promise<void>;\n restoreWallet: () => Promise<boolean>;\n generateWallet: () => Promise<TWalletData | null>;\n importFromMnemonic: (mnemonic: string) => Promise<TWalletData | null>;\n importFromPrivateKey: (privateKey: string) => Promise<TWalletData | null>;\n wipe: () => Promise<void>;\n setActiveNamespace: (namespace: string) => void;\n backfillAccounts: () => Promise<EmbeddedWalletAccountView[]>;\n getSeedPhrase: () => string | null;\n getPrivateKey: () => string | null;\n confirmBackup: () => void;\n isBusy: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n clearError: () => void;\n}\n\n/** Reactive view over caller-owned embedded-wallet state and actions. */\nexport function useEmbeddedWallet<\n TWalletData = unknown,\n TSecurityReport = unknown,\n>(\n options: UseEmbeddedWalletOptions<TWalletData, TSecurityReport>,\n): UseEmbeddedWalletReturn<TWalletData, TSecurityReport> {\n const isBusy = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let active = 0;\n let generation = 0;\n let disposed = false;\n const run = async <T>(action: () => Promise<T>): Promise<T> => {\n const own = ++generation;\n active++;\n isBusy.value = true;\n error.value = null;\n try {\n return await action();\n } catch (cause) {\n const normalized =\n cause instanceof Error\n ? cause\n : new Error(\"Embedded wallet action failed\");\n if (!disposed && own === generation) error.value = normalized;\n throw normalized;\n } finally {\n active--;\n if (!disposed) isBusy.value = active > 0;\n }\n };\n const wallet = computed(() => toValue(options.wallet));\n onScopeDispose(() => {\n disposed = true;\n generation++;\n });\n return {\n wallet,\n hasWallet: computed(() => wallet.value !== null),\n address: computed(() => wallet.value?.address ?? null),\n accounts: computed(() => wallet.value?.accounts ?? []),\n activeNamespace: computed(() => wallet.value?.activeNamespace ?? null),\n backupPending: computed(() => toValue(options.backupPending)),\n storageSecurityLevel: computed(() => toValue(options.storageSecurityLevel)),\n securityReport: computed(() => toValue(options.securityReport)),\n connectEmbedded: () => run(() => unref(options.connectEmbedded)()),\n restoreWallet: () => run(() => unref(options.restoreWallet)()),\n generateWallet: () => run(() => unref(options.generateWallet)()),\n importFromMnemonic: (value) =>\n run(() => unref(options.importFromMnemonic)(value)),\n importFromPrivateKey: (value) =>\n run(() => unref(options.importFromPrivateKey)(value)),\n wipe: () => run(() => unref(options.wipe)()),\n setActiveNamespace: (value) => unref(options.setActiveNamespace)(value),\n backfillAccounts: () => run(() => unref(options.backfillAccounts)()),\n getSeedPhrase: () => unref(options.getSeedPhrase)(),\n getPrivateKey: () => unref(options.getPrivateKey)(),\n confirmBackup: () => unref(options.confirmBackup)(),\n isBusy,\n error,\n clearError: () => {\n error.value = null;\n },\n };\n}\n","import type { MaybeRef, ShallowRef } from \"vue\";\nimport type { SiwxSignInAction } from \"./siwx\";\nimport { useSignInWithX } from \"./useSignInWithX\";\n\nexport interface UseSIWxLoginReturn {\n signIn: SiwxSignInAction;\n isSigningIn: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n clearError: () => void;\n}\n\n/** Login-shaped view of the shared caller-owned SIWX sign-in shell. */\nexport function useSIWxLogin(\n action: MaybeRef<SiwxSignInAction>,\n): UseSIWxLoginReturn {\n const state = useSignInWithX(action);\n return {\n signIn: state.signIn,\n isSigningIn: state.isSigningIn,\n error: state.error,\n clearError: state.clearError,\n };\n}\n","import type { ComputedRef, MaybeRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { computed, onScopeDispose, shallowRef, toValue, unref } from \"vue\";\nimport type { SiwxSessionLike, SiwxSignInOptions } from \"./siwx\";\n\nexport interface UseSIWxSessionOptions {\n session: MaybeRefOrGetter<SiwxSessionLike | null>;\n isRestoring: MaybeRefOrGetter<boolean>;\n isExpired: MaybeRefOrGetter<boolean>;\n timeUntilExpiry: MaybeRefOrGetter<number | null>;\n signIn: MaybeRef<(options?: SiwxSignInOptions) => Promise<SiwxSessionLike>>;\n signOut: MaybeRef<() => Promise<void>>;\n refresh: MaybeRef<() => Promise<SiwxSessionLike>>;\n}\n\nexport interface UseSIWxSessionReturn {\n session: ComputedRef<SiwxSessionLike | null>;\n isAuthenticated: ComputedRef<boolean>;\n isRestoring: ComputedRef<boolean>;\n isSigningIn: ShallowRef<boolean>;\n isExpired: ComputedRef<boolean>;\n timeUntilExpiry: ComputedRef<number | null>;\n signIn: (options?: SiwxSignInOptions) => Promise<SiwxSessionLike>;\n signOut: () => Promise<void>;\n refresh: () => Promise<SiwxSessionLike>;\n error: ShallowRef<Error | null>;\n clearError: () => void;\n}\n\n/** Reactive view over caller-owned SIWX session lifecycle and policy state. */\nexport function useSIWxSession(\n options: UseSIWxSessionOptions,\n): UseSIWxSessionReturn {\n const isSigningIn = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let generation = 0;\n let active = 0;\n let disposed = false;\n\n const run = async <T>(\n action: () => Promise<T>,\n message: string,\n ): Promise<T> => {\n const own = ++generation;\n active++;\n isSigningIn.value = true;\n error.value = null;\n try {\n return await action();\n } catch (cause) {\n const normalized = cause instanceof Error ? cause : new Error(message);\n if (!disposed && own === generation) error.value = normalized;\n throw normalized;\n } finally {\n active--;\n if (!disposed) isSigningIn.value = active > 0;\n }\n };\n\n onScopeDispose(() => {\n disposed = true;\n generation++;\n });\n return {\n session: computed(() => toValue(options.session)),\n isAuthenticated: computed(\n () => toValue(options.session) !== null && !toValue(options.isExpired),\n ),\n isRestoring: computed(() => toValue(options.isRestoring)),\n isSigningIn,\n isExpired: computed(() => toValue(options.isExpired)),\n timeUntilExpiry: computed(() => toValue(options.timeUntilExpiry)),\n signIn: (input) =>\n run(() => unref(options.signIn)(input), \"SIWX sign-in failed\"),\n signOut: async () => {\n await unref(options.signOut)();\n error.value = null;\n },\n refresh: () =>\n run(() => unref(options.refresh)(), \"Session refresh failed\"),\n error,\n clearError: () => {\n error.value = null;\n },\n };\n}\n","import type { ComputedRef, MaybeRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { computed, onScopeDispose, shallowRef, toValue, unref } from \"vue\";\nimport type { SiwxResult, SiwxSignInAction } from \"./siwx\";\n\nexport interface UseSiwxAuthSessionOptions {\n result: MaybeRefOrGetter<SiwxResult | null>;\n isRestoring: MaybeRefOrGetter<boolean>;\n signIn: MaybeRef<SiwxSignInAction>;\n signOut: MaybeRef<() => Promise<void>>;\n}\n\nexport interface UseSiwxAuthSessionReturn {\n isSignedIn: ComputedRef<boolean>;\n isRestoring: ComputedRef<boolean>;\n siwxResult: ComputedRef<SiwxResult | null>;\n isSigningIn: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n signIn: SiwxSignInAction;\n signOut: () => Promise<void>;\n clearError: () => void;\n}\n\n/** Reactive auth view over caller-owned, already-validated SIWX persistence. */\nexport function useSiwxAuthSession(\n options: UseSiwxAuthSessionOptions,\n): UseSiwxAuthSessionReturn {\n const isSigningIn = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let generation = 0;\n let disposed = false;\n const signIn: SiwxSignInAction = async (input) => {\n const own = ++generation;\n isSigningIn.value = true;\n error.value = null;\n try {\n return await unref(options.signIn)(input);\n } catch (cause) {\n const normalized =\n cause instanceof Error ? cause : new Error(\"SIWX sign-in failed\");\n if (!disposed && own === generation) error.value = normalized;\n throw normalized;\n } finally {\n if (!disposed && own === generation) isSigningIn.value = false;\n }\n };\n const signOut = async (): Promise<void> => {\n generation++;\n await unref(options.signOut)();\n if (!disposed) {\n isSigningIn.value = false;\n error.value = null;\n }\n };\n onScopeDispose(() => {\n disposed = true;\n generation++;\n });\n const siwxResult = computed(() => toValue(options.result));\n return {\n isSignedIn: computed(() => siwxResult.value !== null),\n isRestoring: computed(() => toValue(options.isRestoring)),\n siwxResult,\n isSigningIn,\n error,\n signIn,\n signOut,\n clearError: () => {\n error.value = null;\n },\n };\n}\n","import { bareEvmAddress } from \"@naculus/connect-appkit-core\";\nimport { formatUnits } from \"@naculus/connect-core\";\nimport type { ComputedRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { computed, onScopeDispose, shallowRef, toValue, watch } from \"vue\";\n\n/** Minimal read-only contract; a viem PublicClient satisfies it. */\nexport interface NativeBalanceReader {\n getBalance(args: { address: `0x${string}` }): Promise<bigint>;\n}\n\nexport interface UseBalanceOptions {\n /** Native currency decimals. Default 18. */\n decimals?: MaybeRefOrGetter<number | null | undefined>;\n /**\n * Native currency symbol, or null when it is not known. Null rather than\n * \"ETH\": a wrong unit beside the number is worse than no unit.\n */\n symbol?: MaybeRefOrGetter<string | null | undefined>;\n /** Auto-refresh interval in milliseconds. Default: no auto-refresh. */\n refreshInterval?: MaybeRefOrGetter<number | null | undefined>;\n}\n\nexport interface UseBalanceReturn {\n /** Raw balance in wei as a decimal string, or null when unread. */\n balance: ShallowRef<string | null>;\n /** Human-readable balance in the native unit, or null when unread. */\n formatted: ComputedRef<string | null>;\n symbol: ComputedRef<string | null>;\n isFetching: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n refetch: () => Promise<void>;\n}\n\n/**\n * Native balance of an EVM account through a caller-owned reader.\n *\n * Vue has no AppKit provider, so the client is explicit. Unlike the React\n * hook this does not fetch a USD price: that is an outward HTTP call the\n * caller did not hand us, and it belongs beside the reader they did.\n */\nexport function useBalance(\n account: MaybeRefOrGetter<string | null | undefined>,\n client: MaybeRefOrGetter<NativeBalanceReader | null | undefined>,\n options: UseBalanceOptions = {},\n): UseBalanceReturn {\n const balance = shallowRef<string | null>(null);\n const isFetching = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let generation = 0;\n let disposed = false;\n let timer: ReturnType<typeof setInterval> | null = null;\n\n const refetch = async (): Promise<void> => {\n const reader = toValue(client);\n const address = bareEvmAddress(toValue(account));\n const own = ++generation;\n if (!reader || !address) {\n balance.value = null;\n error.value = null;\n isFetching.value = false;\n return;\n }\n isFetching.value = true;\n error.value = null;\n try {\n const next = await reader.getBalance({ address });\n if (disposed || own !== generation) return;\n balance.value = next.toString();\n } catch (cause) {\n if (disposed || own !== generation) return;\n // Cleared rather than left stale: a balance shown next to an error\n // reads as the current balance, and it is not.\n balance.value = null;\n error.value =\n cause instanceof Error ? cause : new Error(\"Balance read failed\");\n } finally {\n if (!disposed && own === generation) isFetching.value = false;\n }\n };\n\n const stopTimer = (): void => {\n if (timer) clearInterval(timer);\n timer = null;\n };\n\n watch(\n [\n () => toValue(account),\n () => toValue(client),\n () => toValue(options.refreshInterval) ?? 0,\n ],\n ([, , interval]) => {\n stopTimer();\n void refetch();\n if (interval > 0) timer = setInterval(() => void refetch(), interval);\n },\n { immediate: true },\n );\n\n onScopeDispose(() => {\n disposed = true;\n generation++;\n stopTimer();\n });\n\n return {\n balance,\n formatted: computed(() =>\n balance.value === null\n ? null\n : formatUnits(BigInt(balance.value), toValue(options.decimals) ?? 18),\n ),\n symbol: computed(() => toValue(options.symbol) ?? null),\n isFetching,\n error,\n refetch,\n };\n}\n","import {\n type GetRouteQuotes,\n isQuotableInput,\n type RouteQuote,\n type RouteQuoteInput,\n} from \"@naculus/connect-appkit-core\";\nimport type { MaybeRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { onScopeDispose, shallowRef, toValue, unref, watch } from \"vue\";\n\nexport interface UseRouteQuoteOptions {\n /** Debounce before auto-fetching after an input change (default 300 ms). */\n debounceMs?: number;\n}\n\nexport interface UseRouteQuoteReturn {\n quotes: ShallowRef<RouteQuote[]>;\n loading: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n refresh: () => Promise<void>;\n clear: () => void;\n}\n\n/**\n * Debounced cross-chain route quotes through a caller-supplied quote\n * function, mirroring the React hook. Which inputs are quotable is decided\n * in appkit-core; this file debounces and drops late results.\n */\nexport function useRouteQuote(\n input: MaybeRefOrGetter<RouteQuoteInput>,\n getQuotes?: MaybeRef<GetRouteQuotes | null | undefined>,\n options: UseRouteQuoteOptions = {},\n): UseRouteQuoteReturn {\n const quotes = shallowRef<RouteQuote[]>([]);\n const loading = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let generation = 0;\n let disposed = false;\n let timer: ReturnType<typeof setTimeout> | null = null;\n\n const clearTimer = (): void => {\n if (timer) clearTimeout(timer);\n timer = null;\n };\n\n const fetchQuotes = async (): Promise<void> => {\n const current = toValue(input);\n const fn = unref(getQuotes);\n const own = ++generation;\n if (!isQuotableInput(current)) {\n quotes.value = [];\n return;\n }\n if (!fn) return;\n loading.value = true;\n error.value = null;\n try {\n const result = await fn(\n current.fromChain,\n current.toChain,\n current.fromToken,\n current.amount,\n current.options,\n current.toToken,\n );\n if (disposed || own !== generation) return;\n quotes.value = result;\n } catch (cause) {\n if (disposed || own !== generation) return;\n error.value = cause instanceof Error ? cause : new Error(String(cause));\n quotes.value = [];\n } finally {\n if (!disposed && own === generation) loading.value = false;\n }\n };\n\n watch(\n [\n () => toValue(input).fromChain,\n () => toValue(input).toChain,\n () => toValue(input).fromToken,\n () => toValue(input).toToken,\n () => toValue(input).amount,\n () => unref(getQuotes),\n ],\n ([fromChain, toChain, fromToken, , amount]) => {\n clearTimer();\n if (!fromChain || !toChain || !fromToken || !amount) {\n quotes.value = [];\n return;\n }\n timer = setTimeout(() => {\n timer = null;\n void fetchQuotes();\n }, options.debounceMs ?? 300);\n },\n { immediate: true },\n );\n\n onScopeDispose(() => {\n disposed = true;\n generation++;\n clearTimer();\n });\n\n return {\n quotes,\n loading,\n error,\n refresh: fetchQuotes,\n clear: () => {\n clearTimer();\n generation++;\n quotes.value = [];\n error.value = null;\n loading.value = false;\n },\n };\n}\n","import {\n type CompareCosts,\n type CompareCostsInput,\n type CostComparison,\n compareCostsKey,\n} from \"@naculus/connect-appkit-core\";\nimport type { MaybeRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { onScopeDispose, shallowRef, toValue, unref, watch } from \"vue\";\n\nexport interface UseCompareCostsReturn {\n comparisons: ShallowRef<CostComparison[]>;\n loading: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n refresh: () => Promise<void>;\n}\n\n/**\n * Compare an operation's cost across chains through a caller-supplied\n * function, mirroring the React hook. Re-fetches when the input's *value*\n * changes (appkit-core's `compareCostsKey`), not when a new array or object\n * with the same content is passed; only the newest request may write.\n */\nexport function useCompareCosts(\n input: MaybeRefOrGetter<CompareCostsInput>,\n compareCosts?: MaybeRef<CompareCosts | null | undefined>,\n): UseCompareCostsReturn {\n const comparisons = shallowRef<CostComparison[]>([]);\n const loading = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let generation = 0;\n let disposed = false;\n\n const fetchComparisons = async (): Promise<void> => {\n const { operation, chains, options } = toValue(input);\n const fn = unref(compareCosts);\n const own = ++generation;\n if (!chains || chains.length === 0) {\n comparisons.value = [];\n return;\n }\n if (!fn) return;\n loading.value = true;\n error.value = null;\n try {\n const result = await fn(operation, chains, options);\n if (disposed || own !== generation) return;\n comparisons.value = result;\n } catch (cause) {\n if (disposed || own !== generation) return;\n error.value = cause instanceof Error ? cause : new Error(String(cause));\n comparisons.value = [];\n } finally {\n if (!disposed && own === generation) loading.value = false;\n }\n };\n\n watch(\n [() => compareCostsKey(toValue(input)), () => unref(compareCosts)],\n () => {\n void fetchComparisons();\n },\n { immediate: true },\n );\n\n onScopeDispose(() => {\n disposed = true;\n generation++;\n });\n\n return { comparisons, loading, error, refresh: fetchComparisons };\n}\n","import {\n type ExecutableQuote,\n type ExecuteRoute,\n type ExecuteRouteError,\n type ExecuteRouteOptions,\n type ExecuteRouteResult,\n toExecuteRouteError,\n validateRouteRecipient,\n} from \"@naculus/connect-appkit-core\";\nimport type { MaybeRef, ShallowRef } from \"vue\";\nimport { onScopeDispose, shallowRef, unref } from \"vue\";\n\nexport interface UseExecuteRouteReturn {\n execute: (\n quote: ExecutableQuote,\n recipient: string,\n options?: ExecuteRouteOptions,\n ) => Promise<ExecuteRouteResult | null>;\n executing: ShallowRef<boolean>;\n result: ShallowRef<ExecuteRouteResult | null>;\n error: ShallowRef<ExecuteRouteError | null>;\n reset: () => void;\n}\n\n/**\n * Execute a quoted route once through a caller-supplied executor, mirroring\n * the React hook. The recipient check and error shape are appkit-core's. A\n * second call while one is in flight is refused, and `reset()` deliberately\n * does not unlock that guard: the first request is still out there.\n */\nexport function useExecuteRoute(\n executeRoute?: MaybeRef<ExecuteRoute | null | undefined>,\n): UseExecuteRouteReturn {\n const executing = shallowRef(false);\n const result = shallowRef<ExecuteRouteResult | null>(null);\n const error = shallowRef<ExecuteRouteError | null>(null);\n let inFlight = false;\n let disposed = false;\n\n const execute = async (\n quote: ExecutableQuote,\n recipient: string,\n options?: ExecuteRouteOptions,\n ): Promise<ExecuteRouteResult | null> => {\n const fn = unref(executeRoute);\n if (!fn) {\n error.value = {\n code: \"no_executor\",\n message: \"No executeRoute function provided\",\n };\n result.value = null;\n return null;\n }\n const recipientError = validateRouteRecipient(quote, recipient);\n if (recipientError) {\n error.value = recipientError;\n result.value = null;\n return null;\n }\n if (inFlight) {\n error.value = {\n code: \"execution_in_progress\",\n message: \"A route execution is already in progress\",\n };\n return null;\n }\n inFlight = true;\n executing.value = true;\n error.value = null;\n result.value = null;\n try {\n const execResult = await fn(quote, recipient, options);\n if (!disposed) result.value = execResult;\n return execResult;\n } catch (cause) {\n if (!disposed) error.value = toExecuteRouteError(cause);\n return null;\n } finally {\n inFlight = false;\n if (!disposed) executing.value = false;\n }\n };\n\n onScopeDispose(() => {\n disposed = true;\n });\n\n return {\n execute,\n executing,\n result,\n error,\n reset: () => {\n result.value = null;\n error.value = null;\n executing.value = false;\n },\n };\n}\n","import { eip155ChainIdToNumber } from \"@naculus/connect-appkit-core\";\nimport {\n TokenListManager,\n type TokenListEntry,\n type TokenListManagerConfig,\n type TokenListSource,\n} from \"@naculus/connect-core\";\nimport type { MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { onScopeDispose, shallowRef, toValue, watch } from \"vue\";\n\nexport interface UseTokenListOptions {\n /** Load on creation (default: true). */\n autoLoad?: boolean;\n /** Custom sources; the manager's defaults otherwise. */\n sources?: TokenListSource[];\n /** Reuse a caller-owned manager instead of creating one. */\n manager?: TokenListManager;\n}\n\nexport interface UseTokenListReturn {\n /** Tokens for the given chain, or all chains when none is given. */\n tokens: ShallowRef<TokenListEntry[]>;\n isLoading: ShallowRef<boolean>;\n /** True once a load has completed at least once. */\n isLoaded: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n /** Force a refresh from all sources. */\n refetch: () => Promise<void>;\n}\n\n/**\n * Token list for a chain, mirroring the React hook. The list logic, caching\n * and chain filtering are `TokenListManager`'s; this file is Vue plumbing.\n * The chain id is CAIP-2; a non-EVM chain yields the unfiltered list rather\n * than a bogus numeric filter.\n */\nexport function useTokenList(\n chainId?: MaybeRefOrGetter<string | null | undefined>,\n options: UseTokenListOptions = {},\n): UseTokenListReturn {\n const config: Partial<TokenListManagerConfig> = {};\n if (options.sources) config.sources = options.sources;\n const manager = options.manager ?? new TokenListManager(config);\n\n const tokens = shallowRef<TokenListEntry[]>([]);\n const isLoading = shallowRef(options.autoLoad !== false);\n const isLoaded = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let generation = 0;\n let disposed = false;\n\n const select = (): TokenListEntry[] => {\n const id = toValue(chainId);\n const numeric = id ? eip155ChainIdToNumber(id) : undefined;\n return manager.getTokens(\n numeric !== undefined ? { chainId: numeric } : undefined,\n );\n };\n\n const run = async (op: () => Promise<unknown>): Promise<void> => {\n const own = ++generation;\n isLoading.value = true;\n error.value = null;\n try {\n await op();\n if (disposed || own !== generation) return;\n tokens.value = select();\n isLoaded.value = true;\n } catch (cause) {\n if (disposed || own !== generation) return;\n error.value = cause instanceof Error ? cause : new Error(String(cause));\n } finally {\n if (!disposed && own === generation) isLoading.value = false;\n }\n };\n\n watch(\n () => toValue(chainId),\n () => {\n if (options.autoLoad !== false) void run(() => manager.load());\n },\n { immediate: true },\n );\n\n onScopeDispose(() => {\n disposed = true;\n generation++;\n });\n\n return {\n tokens,\n isLoading,\n isLoaded,\n error,\n refetch: () => run(() => manager.refresh()),\n };\n}\n","import { eip155ChainIdToNumber } from \"@naculus/connect-appkit-core\";\nimport {\n TokenListManager,\n type TokenSearchResult,\n} from \"@naculus/connect-core\";\nimport type { MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { onScopeDispose, shallowRef, toValue, watch } from \"vue\";\n\nconst DEBOUNCE_MS = 300;\nconst EMPTY: TokenSearchResult = { exact: [], fuzzy: [], hasMore: false };\n\nexport interface UseTokenSearchOptions {\n /** Reuse a caller-owned manager; otherwise one shared instance per page. */\n manager?: TokenListManager;\n /** Debounce in ms (default 300). */\n debounceMs?: number;\n /** Max results per bucket (default 20). */\n limit?: number;\n}\n\nexport interface UseTokenSearchReturn {\n results: ShallowRef<TokenSearchResult>;\n /** True from the first keystroke until the debounced search has run. */\n isSearching: ShallowRef<boolean>;\n}\n\n// One manager per page, as in React: the first search kicks off the default\n// list load in the background and later searches reuse it.\nlet sharedManager: TokenListManager | null = null;\nfunction getSharedManager(): TokenListManager {\n if (!sharedManager) {\n sharedManager = new TokenListManager();\n sharedManager.load().catch(() => {});\n }\n return sharedManager;\n}\n\n/**\n * Debounced token search by symbol, name or address, mirroring the React\n * hook. Matching lives in `TokenListManager.search`; this file only debounces\n * and keeps a late timer from writing after the query moved on.\n */\nexport function useTokenSearch(\n query: MaybeRefOrGetter<string | null | undefined>,\n chainId?: MaybeRefOrGetter<string | null | undefined>,\n options: UseTokenSearchOptions = {},\n): UseTokenSearchReturn {\n const results = shallowRef<TokenSearchResult>(EMPTY);\n const isSearching = shallowRef(false);\n let timer: ReturnType<typeof setTimeout> | null = null;\n\n const clear = (): void => {\n if (timer) clearTimeout(timer);\n timer = null;\n };\n\n watch(\n [() => (toValue(query) ?? \"\").trim(), () => toValue(chainId)],\n ([q, id]) => {\n clear();\n if (!q) {\n results.value = EMPTY;\n isSearching.value = false;\n return;\n }\n isSearching.value = true;\n timer = setTimeout(() => {\n timer = null;\n const manager = options.manager ?? getSharedManager();\n const numeric = id ? eip155ChainIdToNumber(id) : undefined;\n results.value = manager.search(q, {\n chainId: numeric,\n limit: options.limit ?? 20,\n });\n isSearching.value = false;\n }, options.debounceMs ?? DEBOUNCE_MS);\n },\n { immediate: true },\n );\n\n onScopeDispose(clear);\n\n return { results, isSearching };\n}\n","import {\n type DestinationValidation,\n validateDestination,\n} from \"@naculus/connect-appkit-core\";\nimport type { ComputedRef, MaybeRefOrGetter } from \"vue\";\nimport { computed, toValue } from \"vue\";\n\nexport interface UseValidateDestinationReturn {\n validation: ComputedRef<DestinationValidation>;\n}\n\n/**\n * Syntactic destination checks, shared with the React hook through\n * `@naculus/connect-appkit-core`. Returns a machine-readable `issue`; the\n * Vue package carries no locale table, so the caller maps it to a string.\n * `level: \"ok\"` means nothing wrong was found — not that it is safe.\n */\nexport function useValidateDestination(\n address: MaybeRefOrGetter<string | null | undefined>,\n): UseValidateDestinationReturn {\n return {\n validation: computed(() => validateDestination(toValue(address) ?? \"\")),\n };\n}\n","import { bareEvmAddress } from \"@naculus/connect-appkit-core\";\nimport { ERC20_MIN_ABI, formatUnits } from \"@naculus/connect-core\";\nimport type { MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { onScopeDispose, shallowRef, toValue, watch } from \"vue\";\n\nexport interface TokenInfo {\n /** ERC-20 token contract address */\n address: `0x${string}`;\n symbol: string;\n decimals: number;\n name?: string;\n}\n\n/** Minimal read-only contract; a viem PublicClient satisfies it. */\nexport interface TokenBalanceReader {\n readContract(args: {\n address: `0x${string}`;\n abi: typeof ERC20_MIN_ABI;\n functionName: \"balanceOf\";\n args: readonly [`0x${string}`];\n }): Promise<unknown>;\n}\n\nexport interface TokenBalanceResult extends TokenInfo {\n /** Raw balance in the smallest unit as a decimal string, or null if unread. */\n balance: string | null;\n /** Human-readable balance, or null if unread. */\n formatted: string | null;\n}\n\nexport interface UseTokenBalanceOptions {\n /** Auto-refresh interval in milliseconds. Default: no auto-refresh. */\n refreshInterval?: MaybeRefOrGetter<number | null | undefined>;\n}\n\nexport interface UseTokenBalanceReturn {\n tokenBalances: ShallowRef<TokenBalanceResult[]>;\n isFetching: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n refetch: () => Promise<void>;\n getTokenBalance: (\n tokenAddress: `0x${string}`,\n ) => TokenBalanceResult | undefined;\n}\n\nfunction tokensKey(tokens: readonly TokenInfo[]): string {\n return tokens\n .map((t) => `${t.address.toLowerCase()}|${t.decimals}|${t.symbol}`)\n .join(\",\");\n}\n\n/**\n * ERC-20 balances of an EVM account through a caller-owned reader.\n *\n * Mirrors the React hook: one token failing to read leaves that entry with a\n * null balance and does not fail the others. A late response for a previous\n * account, reader or token list is dropped.\n */\nexport function useTokenBalance(\n account: MaybeRefOrGetter<string | null | undefined>,\n client: MaybeRefOrGetter<TokenBalanceReader | null | undefined>,\n tokens: MaybeRefOrGetter<readonly TokenInfo[] | null | undefined>,\n options: UseTokenBalanceOptions = {},\n): UseTokenBalanceReturn {\n const tokenBalances = shallowRef<TokenBalanceResult[]>([]);\n const isFetching = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let generation = 0;\n let disposed = false;\n let timer: ReturnType<typeof setInterval> | null = null;\n\n const refetch = async (): Promise<void> => {\n const reader = toValue(client);\n const address = bareEvmAddress(toValue(account));\n const list = toValue(tokens) ?? [];\n const own = ++generation;\n if (!reader || !address || list.length === 0) {\n tokenBalances.value = [];\n error.value = null;\n isFetching.value = false;\n return;\n }\n isFetching.value = true;\n error.value = null;\n try {\n const results = await Promise.all(\n list.map(async (token): Promise<TokenBalanceResult> => {\n try {\n const raw = await reader.readContract({\n address: token.address,\n abi: ERC20_MIN_ABI,\n functionName: \"balanceOf\",\n args: [address],\n });\n const value = BigInt(raw as bigint | string | number);\n return {\n ...token,\n balance: value.toString(),\n formatted: formatUnits(value, token.decimals),\n };\n } catch {\n return { ...token, balance: null, formatted: null };\n }\n }),\n );\n if (disposed || own !== generation) return;\n tokenBalances.value = results;\n } catch (cause) {\n if (disposed || own !== generation) return;\n tokenBalances.value = [];\n error.value =\n cause instanceof Error\n ? cause\n : new Error(\"Failed to fetch token balances\");\n } finally {\n if (!disposed && own === generation) isFetching.value = false;\n }\n };\n\n const stopTimer = (): void => {\n if (timer) clearInterval(timer);\n timer = null;\n };\n\n // Multi-source form: Vue compares each source by value, so a new token\n // array with the same content does not trigger a re-read.\n watch(\n [\n () => toValue(account),\n () => toValue(client),\n () => tokensKey(toValue(tokens) ?? []),\n () => toValue(options.refreshInterval) ?? 0,\n ],\n ([, , , interval]) => {\n stopTimer();\n void refetch();\n if (interval > 0) timer = setInterval(() => void refetch(), interval);\n },\n { immediate: true },\n );\n\n onScopeDispose(() => {\n disposed = true;\n generation++;\n stopTimer();\n });\n\n return {\n tokenBalances,\n isFetching,\n error,\n refetch,\n getTokenBalance: (tokenAddress) =>\n tokenBalances.value.find(\n (t) => t.address.toLowerCase() === tokenAddress.toLowerCase(),\n ),\n };\n}\n","import { bareEvmAddress } from \"@naculus/connect-appkit-core\";\nimport {\n type DelegationStatus,\n readDelegation,\n UNKNOWN_DELEGATION,\n} from \"@naculus/connect-core\";\nimport type { ComputedRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { computed, onScopeDispose, shallowRef, toValue, watch } from \"vue\";\n\n/** Minimal read-only contract; a viem PublicClient can supply getCode. */\nexport interface DelegationCodeReader {\n getCode(args: { address: `0x${string}` }): Promise<`0x${string}` | undefined>;\n}\n\nexport interface UseDelegationReturn {\n delegated: ComputedRef<boolean | null>;\n delegate: ComputedRef<`0x${string}` | null>;\n isFetching: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n refetch: () => Promise<void>;\n}\n\n/** Read current EIP-7702 delegation without treating an unread account as undelegated. */\nexport function useDelegation(\n account: MaybeRefOrGetter<string | null | undefined>,\n client: MaybeRefOrGetter<DelegationCodeReader | null | undefined>,\n chainId?: MaybeRefOrGetter<string | null | undefined>,\n): UseDelegationReturn {\n const status = shallowRef<DelegationStatus>(UNKNOWN_DELEGATION);\n const isFetching = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let generation = 0;\n let disposed = false;\n\n const refetch = async (): Promise<void> => {\n const mine = ++generation;\n const reader = toValue(client);\n const address = bareEvmAddress(toValue(account));\n status.value = UNKNOWN_DELEGATION;\n error.value = null;\n if (!reader || !address) {\n isFetching.value = false;\n return;\n }\n isFetching.value = true;\n try {\n const code = await reader.getCode({ address });\n if (!disposed && mine === generation) {\n status.value = readDelegation(code ?? \"0x\");\n }\n } catch (cause) {\n if (!disposed && mine === generation) {\n status.value = UNKNOWN_DELEGATION;\n error.value =\n cause instanceof Error ? cause : new Error(\"Code read failed\");\n }\n } finally {\n if (!disposed && mine === generation) isFetching.value = false;\n }\n };\n\n watch(\n [() => toValue(account), () => toValue(client), () => toValue(chainId)],\n () => {\n void refetch();\n },\n { immediate: true, flush: \"sync\" },\n );\n onScopeDispose(() => {\n disposed = true;\n generation++;\n });\n\n return {\n delegated: computed(() => status.value.delegated),\n delegate: computed(() => status.value.delegate),\n isFetching,\n error,\n refetch,\n };\n}\n","import { getResolver } from \"@naculus/connect-appkit-core\";\nimport type { NameResolver, NameResolverConfig } from \"@naculus/connect-core\";\nimport type { ComputedRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { computed, onScopeDispose, shallowRef, toValue, watch } from \"vue\";\n\nexport interface NameLookupReturn<T> {\n data: ShallowRef<T | null>;\n isLoading: ComputedRef<boolean>;\n error: ShallowRef<Error | null>;\n refetch: () => void;\n}\n\ninterface NameLookupOptions<T> {\n input: MaybeRefOrGetter<string>;\n skip?: MaybeRefOrGetter<boolean | undefined>;\n resolverConfig?: MaybeRefOrGetter<NameResolverConfig | undefined>;\n scope?: MaybeRefOrGetter<string | undefined>;\n query: (\n resolver: NameResolver,\n input: string,\n scope?: string,\n ) => Promise<T | null>;\n}\n\n/** Shared race-safe lifecycle for forward and reverse name lookups. */\nexport function useNameLookup<T>(\n options: NameLookupOptions<T>,\n): NameLookupReturn<T> {\n const data = shallowRef<T | null>(null) as ShallowRef<T | null>;\n const loading = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let generation = 0;\n let disposed = false;\n\n const run = (): void => {\n const input = toValue(options.input).trim();\n const skip = toValue(options.skip) ?? false;\n const scope = toValue(options.scope);\n const config = toValue(options.resolverConfig);\n const mine = ++generation;\n if (!input || skip) {\n data.value = null;\n loading.value = false;\n error.value = null;\n return;\n }\n\n // Never show the previous name/address beside a new input while it loads.\n data.value = null;\n loading.value = true;\n error.value = null;\n Promise.resolve()\n .then(() => options.query(getResolver(config), input, scope))\n .then((result) => {\n if (disposed || mine !== generation) return;\n data.value = result;\n loading.value = false;\n })\n .catch((cause: unknown) => {\n if (disposed || mine !== generation) return;\n data.value = null;\n error.value = cause instanceof Error ? cause : new Error(String(cause));\n loading.value = false;\n });\n };\n\n watch(\n () =>\n [\n toValue(options.input),\n toValue(options.skip),\n toValue(options.scope),\n toValue(options.resolverConfig),\n ] as const,\n run,\n { immediate: true, flush: \"sync\", deep: true },\n );\n onScopeDispose(() => {\n disposed = true;\n generation++;\n });\n\n return {\n data,\n isLoading: computed(() => loading.value),\n error,\n refetch: run,\n };\n}\n","import type { AddressResult, NameResolverConfig } from \"@naculus/connect-core\";\nimport type { MaybeRefOrGetter } from \"vue\";\nimport { type NameLookupReturn, useNameLookup } from \"./name-lookup\";\n\nexport type UseResolveNameReturn = NameLookupReturn<AddressResult>;\n\n/** Resolve a reactive ENS or SNS name to an address. */\nexport function useResolveName(\n name: MaybeRefOrGetter<string>,\n options?: {\n skip?: MaybeRefOrGetter<boolean | undefined>;\n resolverConfig?: MaybeRefOrGetter<NameResolverConfig | undefined>;\n },\n): UseResolveNameReturn {\n return useNameLookup({\n input: name,\n skip: options?.skip,\n resolverConfig: options?.resolverConfig,\n query: (resolver, input) => resolver.resolveName(input),\n });\n}\n","import type { NameResolverConfig, NameResult } from \"@naculus/connect-core\";\nimport type { MaybeRefOrGetter } from \"vue\";\nimport { type NameLookupReturn, useNameLookup } from \"./name-lookup\";\n\nexport type UseLookupAddressReturn = NameLookupReturn<NameResult>;\n\n/** Reverse-resolve a reactive address, optionally scoped to a CAIP-2 chain. */\nexport function useLookupAddress(\n address: MaybeRefOrGetter<string>,\n options?: {\n chainId?: MaybeRefOrGetter<string | undefined>;\n skip?: MaybeRefOrGetter<boolean | undefined>;\n resolverConfig?: MaybeRefOrGetter<NameResolverConfig | undefined>;\n },\n): UseLookupAddressReturn {\n return useNameLookup({\n input: address,\n scope: options?.chainId,\n skip: options?.skip,\n resolverConfig: options?.resolverConfig,\n query: (resolver, input, scope) => resolver.lookupAddress(input, scope),\n });\n}\n","import { computed, toValue } from \"vue\";\nimport type { ComputedRef, MaybeRefOrGetter } from \"vue\";\n\nexport interface UseSolanaAccountReturn {\n address: ComputedRef<string | null>;\n caip10: ComputedRef<string | null>;\n chainId: ComputedRef<string | null>;\n isConnected: ComputedRef<boolean>;\n}\n\n/** Read the connected Solana CAIP-10 account from any wallet. */\nexport function useSolanaAccount(\n accounts: MaybeRefOrGetter<string[] | null | undefined>,\n connected: MaybeRefOrGetter<boolean>,\n): UseSolanaAccountReturn {\n const isConnected = computed(() => toValue(connected));\n const caip10 = computed(() =>\n isConnected.value\n ? ((toValue(accounts) ?? []).find((account) =>\n account.startsWith(\"solana:\"),\n ) ?? null)\n : null,\n );\n const parts = computed(() => caip10.value?.split(\":\") ?? []);\n return {\n address: computed(() =>\n parts.value.length >= 3 ? (parts.value.at(-1) ?? null) : null,\n ),\n caip10,\n chainId: computed(() =>\n parts.value.length >= 3 ? parts.value.slice(0, -1).join(\":\") : null,\n ),\n isConnected,\n };\n}\n","import {\n chainNamespace,\n chainNumber,\n chainsForNamespace,\n describeChain,\n resolveChain,\n type ChainInfo,\n type WalletChain,\n} from \"@naculus/connect-appkit-core\";\nimport { computed, toValue } from \"vue\";\nimport type { ComputedRef, MaybeRefOrGetter } from \"vue\";\n\nexport interface UseChainReturn {\n /** The configured chain matching the connected CAIP-2 id, or null. */\n currentChain: ComputedRef<WalletChain | null>;\n /** A description of the connected chain, for any namespace. */\n chainInfo: ComputedRef<ChainInfo | null>;\n /** Only the chains the connected wallet could actually switch to. */\n availableChains: ComputedRef<WalletChain[]>;\n /** The EIP-155 number, or null when the connected chain has none. */\n currentChainNumber: ComputedRef<number | null>;\n namespace: ComputedRef<string | null>;\n}\n\n/**\n * The connected chain, and the chains it is possible to switch to.\n *\n * Identical in substance to the React `useChain`, because it is the same five\n * functions from `@naculus/connect-appkit-core`. This file contains no\n * decision at all — which is the point: `availableChains` filtering to the\n * connected namespace, `chainInfo` describing non-EVM chains, and\n * `currentChainNumber` refusing to invent a number for Solana are all\n * properties of the shared core, so both bindings get them or neither does.\n *\n * Takes its chain list and connected id as arguments; Vue has no equivalent of\n * the React provider here.\n */\nexport function useChain(\n chains: MaybeRefOrGetter<WalletChain[] | null | undefined>,\n chainId: MaybeRefOrGetter<string | null | undefined>,\n): UseChainReturn {\n const list = computed(() => toValue(chains) ?? []);\n const id = computed(() => toValue(chainId) ?? null);\n\n const currentChain = computed(() => resolveChain(list.value, id.value));\n\n return {\n currentChain,\n chainInfo: computed(() => describeChain(list.value, id.value)),\n availableChains: computed(() => chainsForNamespace(list.value, id.value)),\n currentChainNumber: computed(() =>\n currentChain.value ? chainNumber(currentChain.value) : null,\n ),\n namespace: computed(() =>\n currentChain.value ? chainNamespace(currentChain.value) : null,\n ),\n };\n}\n","import type { PassphraseGate, PassphraseRequest } from \"@naculus/connect-core\";\nimport { onScopeDispose, readonly, shallowRef } from \"vue\";\n\nexport interface UsePassphraseGateReturn {\n /** The open request, or null when nothing is being asked. */\n request: Readonly<ReturnType<typeof shallowRef<PassphraseRequest | null>>>;\n /** Answer the open request. */\n submit: (passphrase: string) => void;\n /** Abandon it, failing the load or save that asked. */\n cancel: (reason?: string) => void;\n /** Drop the held passphrase, so the next operation asks again. */\n forget: (reason?: string) => void;\n}\n\n/**\n * Bind a `PassphraseGate` into Vue reactivity.\n *\n * The gate itself lives in `@naculus/connect-core` rather than in either\n * framework package, because the thing it bridges — an encrypted storage\n * adapter asking for a passphrase from inside code that has never heard of a\n * component — is the same problem in React and in Vue. One implementation,\n * two thin bindings.\n *\n * ```ts\n * const gate = new PassphraseGate()\n * const wallet = new PocketWallet({ encryptionPassphrase: gate.request })\n * const { request, submit, cancel } = usePassphraseGate(gate)\n * ```\n *\n * `shallowRef`, not `ref`: the request is a small immutable snapshot the gate\n * replaces wholesale, and deep reactivity over it would proxy an object that\n * never mutates in place.\n */\nexport function usePassphraseGate(\n gate: PassphraseGate,\n): UsePassphraseGateReturn {\n const request = shallowRef<PassphraseRequest | null>(gate.getSnapshot());\n const unsubscribe = gate.subscribe(() => {\n request.value = gate.getSnapshot();\n });\n // Without this the gate keeps a reference to a listener belonging to a\n // component that is gone, and every later prompt writes into a dead ref.\n onScopeDispose(unsubscribe);\n\n return {\n request: readonly(request) as UsePassphraseGateReturn[\"request\"],\n submit: (passphrase: string) => gate.submit(passphrase),\n cancel: (reason?: string) => gate.cancel(reason),\n forget: (reason?: string) => gate.forget(reason),\n };\n}\n","import {\n getSolanaBalance,\n type SolanaBalance,\n} from \"@naculus/connect-core\";\nimport { onScopeDispose, ref, shallowRef, toValue, watchEffect } from \"vue\";\nimport type { MaybeRefOrGetter } from \"vue\";\n\nexport interface UseSolanaBalanceReturn {\n balance: ReturnType<typeof shallowRef<SolanaBalance | null>>;\n isFetching: ReturnType<typeof ref<boolean>>;\n error: ReturnType<typeof shallowRef<Error | null>>;\n refetch: () => Promise<void>;\n}\n\n/**\n * The SOL balance of an address.\n *\n * The whole of this file is Vue plumbing. Every decision that took thought —\n * exact lamport arithmetic, distinguishing an unfunded account from an emptied\n * one, refusing to invent a zero — is in `@naculus/connect-core`, shared with\n * the React hook. That is what makes \"author in React, ship to Vue\" true for\n * the logic: what does not translate is only the reactivity.\n *\n * Takes its address and endpoint as arguments because Vue has no equivalent of\n * the React provider here. Refs and getters both work.\n */\nexport function useSolanaBalance(\n address: MaybeRefOrGetter<string | null | undefined>,\n rpcUrl: MaybeRefOrGetter<string | null | undefined>,\n): UseSolanaBalanceReturn {\n const balance = shallowRef<SolanaBalance | null>(null);\n const isFetching = ref(false);\n const error = shallowRef<Error | null>(null);\n // Guards against a slow response for a previous address overwriting the\n // balance of the one now on screen.\n let generation = 0;\n let disposed = false;\n\n const refetch = async () => {\n const addr = toValue(address);\n const url = toValue(rpcUrl);\n if (!addr || !url) {\n balance.value = null;\n return;\n }\n const own = ++generation;\n isFetching.value = true;\n error.value = null;\n try {\n const next = await getSolanaBalance(url, addr);\n if (disposed || own !== generation) return;\n balance.value = next;\n } catch (err) {\n if (disposed || own !== generation) return;\n // Cleared rather than left stale: a balance shown next to an error\n // reads as the current balance, and it is not.\n balance.value = null;\n error.value =\n err instanceof Error ? err : new Error(\"Balance read failed\");\n } finally {\n if (!disposed && own === generation) isFetching.value = false;\n }\n };\n\n watchEffect(() => {\n // Touch both so the effect re-runs when either changes.\n toValue(address);\n toValue(rpcUrl);\n void refetch();\n });\n\n onScopeDispose(() => {\n disposed = true;\n });\n\n return { balance, isFetching, error, refetch };\n}\n","import { shallowRef, toValue, watch } from \"vue\";\nimport type { MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport type { TxMonitorLike, TxStatusEntry } from \"./useTxMonitor\";\n\nexport interface UseLastTxReturn {\n lastTx: ShallowRef<TxStatusEntry | null>;\n lastConfirmedTx: ShallowRef<TxStatusEntry | null>;\n lastFailedTx: ShallowRef<TxStatusEntry | null>;\n clear: () => void;\n}\n\n/** Track the latest confirmed or failed transaction from a caller-owned monitor. */\nexport function useLastTx(\n monitor: MaybeRefOrGetter<TxMonitorLike | null | undefined>,\n): UseLastTxReturn {\n const lastTx = shallowRef<TxStatusEntry | null>(null);\n const lastConfirmedTx = shallowRef<TxStatusEntry | null>(null);\n const lastFailedTx = shallowRef<TxStatusEntry | null>(null);\n\n watch(\n () => toValue(monitor),\n (activeMonitor, _previous, onCleanup) => {\n if (!activeMonitor) return;\n const recordLatest = (entry: TxStatusEntry): void => {\n if (!lastTx.value || entry.createdAt >= lastTx.value.createdAt) {\n lastTx.value = entry;\n }\n };\n const onConfirmed = (entry: TxStatusEntry): void => {\n lastConfirmedTx.value = entry;\n recordLatest(entry);\n };\n const onFailed = (entry: TxStatusEntry): void => {\n lastFailedTx.value = entry;\n recordLatest(entry);\n };\n activeMonitor.on(\"confirmed\", onConfirmed);\n activeMonitor.on(\"failed\", onFailed);\n onCleanup(() => {\n activeMonitor.off(\"confirmed\", onConfirmed);\n activeMonitor.off(\"failed\", onFailed);\n });\n },\n { immediate: true },\n );\n\n return {\n lastTx,\n lastConfirmedTx,\n lastFailedTx,\n clear: () => {\n lastTx.value = null;\n lastConfirmedTx.value = null;\n lastFailedTx.value = null;\n },\n };\n}\n","import { computed, shallowRef, toValue, watch } from \"vue\";\nimport type { ComputedRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport type { TxMonitorLike, TxStatusEntry } from \"./useTxMonitor\";\n\nexport interface UseTxHistoryReturn {\n entries: ShallowRef<TxStatusEntry[]>;\n isLoading: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n refresh: () => Promise<void>;\n summary: ComputedRef<{ pending: number; confirmed: number; failed: number }>;\n}\n\n/** Query and keep a caller-owned monitor's transaction history current. */\nexport function useTxHistory(\n address: MaybeRefOrGetter<string | null | undefined>,\n chainId: MaybeRefOrGetter<number | null | undefined>,\n monitor: MaybeRefOrGetter<TxMonitorLike | null | undefined>,\n): UseTxHistoryReturn {\n const entries = shallowRef<TxStatusEntry[]>([]);\n const isLoading = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let generation = 0;\n\n const refresh = async (): Promise<void> => {\n const mine = ++generation;\n const activeMonitor = toValue(monitor);\n if (!activeMonitor) {\n entries.value = [];\n isLoading.value = false;\n error.value = null;\n return;\n }\n isLoading.value = true;\n error.value = null;\n try {\n const result = await activeMonitor.getTxHistory(\n toValue(address) ?? undefined,\n toValue(chainId) ?? undefined,\n );\n if (mine === generation) entries.value = result;\n } catch (err) {\n if (mine !== generation) return;\n error.value =\n err instanceof Error\n ? err\n : new Error(\"Failed to load transaction history\");\n } finally {\n if (mine === generation) isLoading.value = false;\n }\n };\n\n watch(\n [() => toValue(monitor), () => toValue(address), () => toValue(chainId)],\n ([activeMonitor], _previous, onCleanup) => {\n if (!activeMonitor) {\n void refresh();\n return;\n }\n const onStatusChange = (): void => {\n void refresh();\n };\n activeMonitor.on(\"statusChange\", onStatusChange);\n onCleanup(() => activeMonitor.off(\"statusChange\", onStatusChange));\n void refresh();\n },\n { immediate: true },\n );\n\n return {\n entries,\n isLoading,\n error,\n refresh,\n summary: computed(() => ({\n pending: entries.value.filter((item) => item.status === \"pending\").length,\n confirmed: entries.value.filter((item) => item.status === \"confirmed\")\n .length,\n failed: entries.value.filter((item) => item.status === \"failed\").length,\n })),\n };\n}\n","import { computed, shallowRef, toValue, watch } from \"vue\";\nimport type { ComputedRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\n\nexport type TxStatus = \"pending\" | \"mined\" | \"confirmed\" | \"failed\" | \"unknown\";\n\nexport interface TxStatusEntry {\n hash: string;\n chainId: number;\n from: string;\n to: string;\n value: string;\n data?: string;\n nonce?: number;\n status: TxStatus;\n blockNumber?: number;\n blockHash?: string;\n gasUsed?: string;\n effectiveGasPrice?: string;\n createdAt: number;\n confirmedAt?: number;\n updatedAt: number;\n error?: string;\n label?: string;\n memo?: string;\n replacementCount?: number;\n}\n\n/** Structural contract accepted by the transaction-monitor composables. */\nexport interface TxMonitorLike {\n watchTx(\n hash: string,\n chainId: number,\n options?: Record<string, unknown>,\n ): Promise<TxStatusEntry>;\n stopWatching(hash: string, chainId?: number): void;\n getTxStatus(hash: string, chainId?: number): TxStatusEntry | null;\n getTxHistory(address?: string, chainId?: number): Promise<TxStatusEntry[]>;\n refreshTx(hash: string, chainId?: number): Promise<void>;\n on(event: \"statusChange\", listener: (entry: TxStatusEntry) => void): this;\n on(event: \"confirmed\", listener: (entry: TxStatusEntry) => void): this;\n on(event: \"failed\", listener: (entry: TxStatusEntry) => void): this;\n off(event: string, listener: Function): this;\n}\n\nexport interface UseTxMonitorReturn {\n entry: ShallowRef<TxStatusEntry | null>;\n status: ComputedRef<TxStatus | \"idle\">;\n isLoading: ShallowRef<boolean>;\n isWatching: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n refresh: () => Promise<void>;\n stopWatching: () => void;\n}\n\n/**\n * Reactively monitor one transaction using a caller-owned TxMonitor.\n *\n * Vue has no AppKit monitor provider, so the monitor is explicit. The hook\n * listens only while its source values are current; a late promise from a\n * previous hash, chain, or monitor cannot overwrite the active result.\n */\nexport function useTxMonitor(\n hash: MaybeRefOrGetter<string | null | undefined>,\n chainId: MaybeRefOrGetter<number | null | undefined>,\n monitor: MaybeRefOrGetter<TxMonitorLike | null | undefined>,\n): UseTxMonitorReturn {\n const entry = shallowRef<TxStatusEntry | null>(null);\n const isLoading = shallowRef(false);\n const isWatching = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let generation = 0;\n\n const refresh = async (): Promise<void> => {\n const activeMonitor = toValue(monitor);\n const activeHash = toValue(hash);\n const activeChainId = toValue(chainId);\n if (!activeMonitor || !activeHash) return;\n\n isLoading.value = true;\n error.value = null;\n try {\n await activeMonitor.refreshTx(activeHash, activeChainId ?? undefined);\n const current = activeMonitor.getTxStatus(\n activeHash,\n activeChainId ?? undefined,\n );\n if (current) entry.value = current;\n } catch (err) {\n error.value =\n err instanceof Error ? err : new Error(\"Failed to refresh transaction\");\n } finally {\n isLoading.value = false;\n }\n };\n\n const stopWatching = (): void => {\n const activeMonitor = toValue(monitor);\n const activeHash = toValue(hash);\n const activeChainId = toValue(chainId);\n if (!activeMonitor || !activeHash) return;\n activeMonitor.stopWatching(activeHash, activeChainId ?? undefined);\n isWatching.value = false;\n };\n\n watch(\n [() => toValue(monitor), () => toValue(hash), () => toValue(chainId)],\n ([activeMonitor, activeHash, activeChainId], _previous, onCleanup) => {\n const mine = ++generation;\n if (!activeMonitor || !activeHash || !activeChainId) {\n entry.value = null;\n isLoading.value = false;\n isWatching.value = false;\n error.value = null;\n return;\n }\n\n let cancelled = false;\n const onStatusChange = (updated: TxStatusEntry): void => {\n if (\n !cancelled &&\n updated.hash === activeHash &&\n updated.chainId === activeChainId\n ) {\n entry.value = { ...updated };\n }\n };\n activeMonitor.on(\"statusChange\", onStatusChange);\n onCleanup(() => {\n cancelled = true;\n activeMonitor.off(\"statusChange\", onStatusChange);\n });\n\n isWatching.value = true;\n isLoading.value = true;\n error.value = null;\n const current = activeMonitor.getTxStatus(activeHash, activeChainId);\n if (current) entry.value = current;\n\n activeMonitor\n .watchTx(activeHash, activeChainId, {})\n .then((initial) => {\n if (cancelled || mine !== generation) return;\n entry.value = initial;\n isLoading.value = false;\n })\n .catch((err) => {\n if (cancelled || mine !== generation) return;\n error.value =\n err instanceof Error\n ? err\n : new Error(\"Failed to watch transaction\");\n isLoading.value = false;\n });\n },\n { immediate: true },\n );\n\n return {\n entry,\n status: computed(() => entry.value?.status ?? \"idle\"),\n isLoading,\n isWatching,\n error,\n refresh,\n stopWatching,\n };\n}\n","import {\n atomicSupportFor,\n type AtomicSupport,\n type ChainCapabilities,\n normalizeCapabilities,\n selectChainCapabilities,\n} from \"@naculus/connect-appkit-core\";\nimport { computed, shallowRef, toValue, watchEffect } from \"vue\";\nimport type { ComputedRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\n\nexport type { AtomicSupport, ChainCapabilities };\n\n/** The part of a connector this needs. Anything with these two is enough. */\nexport interface CapabilityClient {\n getCapabilities?: (session: unknown) => Promise<Record<string, unknown>>;\n}\n\nexport interface UseCapabilitiesReturn {\n /** Per-chain, keyed by CAIP-2. Null until a query has actually returned. */\n capabilities: ShallowRef<Record<string, ChainCapabilities> | null>;\n /** The connected chain's entry, for the common case. */\n current: ComputedRef<ChainCapabilities | null>;\n /** Atomic support on the connected chain. `\"unknown\"` until told otherwise. */\n atomic: ComputedRef<AtomicSupport>;\n isFetching: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n refetch: () => Promise<void>;\n}\n\n/**\n * What the connected wallet says it can do — EIP-5792\n * `wallet_getCapabilities`.\n *\n * The query a dApp makes *before* choosing how to execute: ask whether the\n * wallet batches atomically, then send one batch or a sequence, rather than\n * sending a batch and learning the answer from a rejection.\n *\n * Identical in substance to the React hook, because every decision in it —\n * normalising the raw answer, the CAIP-2/hex lookup, and `\"unknown\"` meaning\n * \"not told\" rather than \"no\" — is in `@naculus/connect-appkit-core` and\n * neither binding gets to disagree about it.\n *\n * Takes its client, session and chain as arguments. Vue has no equivalent of\n * the React provider here, which is the same shape `useChain` uses.\n */\nexport function useCapabilities(\n client: MaybeRefOrGetter<CapabilityClient | null | undefined>,\n session: MaybeRefOrGetter<unknown>,\n chainId: MaybeRefOrGetter<string | null | undefined>,\n): UseCapabilitiesReturn {\n const capabilities = shallowRef<Record<string, ChainCapabilities> | null>(\n null,\n );\n const isFetching = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n // Guards a slow answer for a previous session overwriting a newer one.\n let generation = 0;\n\n const refetch = async () => {\n const mine = ++generation;\n const activeClient = toValue(client);\n const activeSession = toValue(session);\n if (!activeClient?.getCapabilities || !activeSession) {\n capabilities.value = null;\n isFetching.value = false;\n error.value = null;\n return;\n }\n isFetching.value = true;\n error.value = null;\n try {\n const raw = await activeClient.getCapabilities(activeSession);\n if (mine !== generation) return;\n capabilities.value = normalizeCapabilities(raw);\n } catch (err) {\n if (mine !== generation) return;\n // Cleared rather than left stale. A capability map from a previous\n // wallet is a worse answer than no answer.\n capabilities.value = null;\n error.value =\n err instanceof Error ? err : new Error(\"Capability query failed\");\n } finally {\n if (mine === generation) isFetching.value = false;\n }\n };\n\n // Re-queries when the client or session changes, the way the React effect\n // does. `chainId` is deliberately not a trigger: it selects from an answer\n // already held rather than needing a new one.\n watchEffect(() => {\n void toValue(client);\n void toValue(session);\n void refetch();\n });\n\n return {\n capabilities,\n current: computed(() =>\n selectChainCapabilities(capabilities.value, toValue(chainId)),\n ),\n atomic: computed(() =>\n atomicSupportFor(capabilities.value, toValue(chainId)),\n ),\n isFetching,\n error,\n refetch,\n };\n}\n","import {\n readSolanaRoles,\n type SolanaIdentity,\n type SolanaPayer,\n type SolanaRoles,\n type SolanaRolesAbsence,\n type SolanaRolesSource,\n type SolanaSigner,\n type SolanaWalletFeatures,\n} from \"@naculus/connect-appkit-core\";\nimport type { ComputedRef, MaybeRefOrGetter } from \"vue\";\nimport { computed, toValue } from \"vue\";\n\nexport type {\n SolanaIdentity,\n SolanaPayer,\n SolanaRoles,\n SolanaRolesAbsence,\n SolanaRolesSource,\n SolanaSigner,\n SolanaWalletFeatures,\n};\n\nexport interface UseSolanaRolesReturn {\n /** The roles the connected account can fill, or null with a reason. */\n roles: ComputedRef<SolanaRoles | null>;\n /** Why `roles` is null. Null when it is not. */\n absence: ComputedRef<SolanaRolesAbsence | null>;\n /** Which account this is. Never null while `roles` is present. */\n identity: ComputedRef<SolanaIdentity | null>;\n /**\n * Signs without submitting. Null when the wallet declared it cannot *and*\n * null when nothing is known; check `absence` to tell those apart.\n */\n signer: ComputedRef<SolanaSigner | null>;\n /** Signs and broadcasts itself. Null under the same two conditions. */\n payer: ComputedRef<SolanaPayer | null>;\n}\n\n/**\n * Which roles the connected Solana account can actually fill.\n *\n * Identical in substance to the React hook: every judgement — that a null\n * `signer` from the connector is an answer while a missing `getRoles` is\n * not, that an EVM session is never asked — is in\n * `@naculus/connect-appkit-core`, and neither binding gets to disagree.\n *\n * Takes the connector and session as arguments, the shape `useCapabilities`\n * uses, because Vue has no provider here. Pass the session as a ref so an\n * account switch that replaces it is noticed; the connector reads the live\n * address either way, so a caller holding a stale snapshot still gets the\n * account the wallet moved to.\n */\nexport function useSolanaRoles(\n connector: MaybeRefOrGetter<SolanaRolesSource | null | undefined>,\n session: MaybeRefOrGetter<{ walletType?: string } | null | undefined>,\n): UseSolanaRolesReturn {\n const state = computed(() =>\n readSolanaRoles(toValue(connector), toValue(session)),\n );\n\n return {\n roles: computed(() => state.value.roles),\n absence: computed(() => state.value.absence),\n identity: computed(() => state.value.roles?.identity ?? null),\n signer: computed(() => state.value.roles?.signer ?? null),\n payer: computed(() => state.value.roles?.payer ?? null),\n };\n}\n"],"mappings":"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","names":["import_connect_core","import_vue","import_connect_appkit_core","import_connect_core","import_vue","import_connect_appkit_core","import_vue","import_connect_appkit_core","import_connect_core","import_vue","import_connect_appkit_core","import_connect_core","import_connect_appkit_core","import_connect_core","import_vue","import_connect_appkit_core","import_connect_core","import_vue","import_vue","import_vue","import_connect_core","import_vue","import_vue","import_connect_appkit_core","import_vue","import_vue","import_vue","import_vue","import_vue","import_vue","import_connect_appkit_core","import_vue","import_vue","import_connect_appkit_core","import_vue","import_connect_appkit_core","import_connect_core","import_vue","import_connect_appkit_core","import_connect_core","import_vue","import_connect_appkit_core","import_vue","import_vue","import_vue","import_vue","import_vue","import_connect_appkit_core","import_connect_core","import_vue","import_connect_appkit_core","import_vue","import_connect_appkit_core","import_vue","import_connect_appkit_core","import_vue","import_connect_appkit_core","import_connect_core","import_vue","import_connect_appkit_core","import_connect_core","import_vue","import_connect_appkit_core","import_vue","import_connect_appkit_core","import_connect_core","import_vue","import_connect_appkit_core","import_connect_core","import_vue","import_connect_appkit_core","import_vue","import_vue","import_connect_appkit_core","import_vue","import_vue","import_connect_core","import_vue","import_vue","import_vue","import_vue","import_connect_appkit_core","import_vue","import_connect_appkit_core","import_vue"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/wc-generated/proxies.ts","../src/useAccounts.ts","../src/useNotification.ts","../src/useSimulateTransfer.ts","../src/useTransactionSimulation.ts","../src/useERC20Transfer.ts","../src/erc20.ts","../src/useERC20Approve.ts","../src/useERC20TransferSimulation.ts","../src/useAccount.ts","../src/useSession.ts","../src/useConnect.ts","../src/internal/action-guard.ts","../src/useDisconnect.ts","../src/useSwitchChain.ts","../src/useSignMessage.ts","../src/useSendTransaction.ts","../src/useSolanaTransaction.ts","../src/useSignInWithX.ts","../src/useSignInWithEthereum.ts","../src/useExecuteCalls.ts","../src/useDelegationPolicy.ts","../src/useSessionKeys.ts","../src/useSmartAccount.ts","../src/useSendUserOperation.ts","../src/useUserOpStatus.ts","../src/useSendCalls.ts","../src/useEmbeddedWallet.ts","../src/useSIWxLogin.ts","../src/useSIWxSession.ts","../src/useSiwxAuthSession.ts","../src/useBalance.ts","../src/useRouteQuote.ts","../src/useCompareCosts.ts","../src/useExecuteRoute.ts","../src/useTokenList.ts","../src/useTokenSearch.ts","../src/useValidateDestination.ts","../src/useTokenBalance.ts","../src/useDelegate.ts","../src/useDelegation.ts","../src/name-lookup.ts","../src/useResolveName.ts","../src/useLookupAddress.ts","../src/useSolanaAccount.ts","../src/useChain.ts","../src/usePassphraseGate.ts","../src/useSolanaBalance.ts","../src/useLastTx.ts","../src/useTxHistory.ts","../src/useTxMonitor.ts","../src/useCapabilities.ts","../src/useSolanaRoles.ts"],"sourcesContent":["export {\n AppkitAccordion,\n AppkitAccountButton,\n AppkitAlertDialog,\n AppkitAvatar,\n AppkitBadge,\n AppkitButton,\n AppkitCard,\n AppkitCardContent,\n AppkitCardDescription,\n AppkitCardFooter,\n AppkitCardHeader,\n AppkitCardTitle,\n AppkitCheckbox,\n AppkitCollapsible,\n AppkitConnectButton,\n AppkitDialog,\n AppkitDropdownMenu,\n AppkitInput,\n AppkitPopover,\n AppkitProgress,\n AppkitScrollArea,\n AppkitSelect,\n AppkitSeparator,\n AppkitSkeleton,\n AppkitSwitch,\n AppkitTabs,\n AppkitToggleGroup,\n AppkitTooltip,\n} from \"./wc-generated/proxies\"\n\n// ── Composables ───────────────────────────────────────────────────\nexport { useAccounts } from \"./useAccounts\";\nexport { useNotification } from \"./useNotification\";\nexport { useSimulateTransfer } from \"./useSimulateTransfer\";\nexport type {\n UseSimulateTransferOptions,\n UseSimulateTransferReturn,\n} from \"./useSimulateTransfer\";\nexport { useTransactionSimulation } from \"./useTransactionSimulation\";\nexport type {\n UseTransactionSimulationOptions,\n UseTransactionSimulationReturn,\n} from \"./useTransactionSimulation\";\nexport { useERC20Transfer } from \"./useERC20Transfer\";\nexport type {\n UseERC20TransferOptions,\n UseERC20TransferReturn,\n} from \"./useERC20Transfer\";\nexport { useERC20Approve } from \"./useERC20Approve\";\nexport type {\n UseERC20ApproveOptions,\n UseERC20ApproveReturn,\n} from \"./useERC20Approve\";\nexport { useERC20TransferSimulation } from \"./useERC20TransferSimulation\";\nexport type {\n UseERC20TransferSimulationOptions,\n UseERC20TransferSimulationReturn,\n} from \"./useERC20TransferSimulation\";\nexport type { ERC20Reader, ERC20Sender, ERC20Transaction } from \"./erc20\";\nexport type {\n UseNotificationOptions,\n UseNotificationReturn,\n} from \"./useNotification\";\nexport { useAccount } from \"./useAccount\";\nexport type { UseAccountReturn } from \"./useAccount\";\nexport { useSession } from \"./useSession\";\nexport type { UseSessionReturn } from \"./useSession\";\nexport { useConnect } from \"./useConnect\";\nexport type { UseConnectReturn } from \"./useConnect\";\nexport { useDisconnect } from \"./useDisconnect\";\nexport type { UseDisconnectReturn } from \"./useDisconnect\";\nexport { useSwitchChain } from \"./useSwitchChain\";\nexport type { UseSwitchChainReturn } from \"./useSwitchChain\";\nexport { useSignMessage } from \"./useSignMessage\";\nexport type {\n SignMessageAction,\n UseSignMessageReturn,\n} from \"./useSignMessage\";\nexport { useSendTransaction } from \"./useSendTransaction\";\nexport type {\n EvmTransaction,\n SendTransactionAction,\n SendTransactionStatus,\n UseSendTransactionReturn,\n} from \"./useSendTransaction\";\nexport { useSolanaTransaction } from \"./useSolanaTransaction\";\nexport type {\n GetSolanaTransactionStatusAction,\n SendSolanaTransactionAction,\n SignSolanaTransactionAction,\n SolanaTransaction,\n UseSolanaTransactionOptions,\n UseSolanaTransactionReturn,\n} from \"./useSolanaTransaction\";\nexport type {\n SiwxResult,\n SiwxSessionLike,\n SiwxSignInAction,\n SiwxSignInOptions,\n} from \"./siwx\";\nexport { useSignInWithX } from \"./useSignInWithX\";\nexport type { UseSignInWithXReturn } from \"./useSignInWithX\";\nexport { useSignInWithEthereum } from \"./useSignInWithEthereum\";\nexport type {\n UseSignInWithEthereumOptions,\n UseSignInWithEthereumReturn,\n} from \"./useSignInWithEthereum\";\nexport type {\n ExecuteCallsAction,\n ExecutionPreview,\n ExecutionRoute,\n GetCallsStatusAction,\n PaymasterService,\n PreviewExecutionAction,\n SendCallsAction,\n SendCallsOptions,\n ShowCallsStatusAction,\n} from \"./eip5792\";\nexport { useExecuteCalls } from \"./useExecuteCalls\";\nexport type {\n UseExecuteCallsOptions,\n UseExecuteCallsReturn,\n} from \"./useExecuteCalls\";\nexport { useDelegationPolicy } from \"./useDelegationPolicy\";\nexport type {\n UseDelegationPolicyOptions,\n UseDelegationPolicyReturn,\n} from \"./useDelegationPolicy\";\nexport { useSmartAccount } from \"./useSmartAccount\";\nexport type {\n DeployTransactionSender,\n UseSmartAccountOptions,\n UseSmartAccountReturn,\n} from \"./useSmartAccount\";\nexport { useSendUserOperation } from \"./useSendUserOperation\";\nexport type {\n UseSendUserOperationOptions,\n UseSendUserOperationReturn,\n UserOpSigner,\n} from \"./useSendUserOperation\";\nexport { useUserOpStatus } from \"./useUserOpStatus\";\nexport type {\n UseUserOpStatusOptions,\n UseUserOpStatusReturn,\n UserOpStatus,\n} from \"./useUserOpStatus\";\nexport {\n useCreateSessionKey,\n useRevokeSession,\n useSendWithSession,\n useSessionKeys,\n} from \"./useSessionKeys\";\nexport type {\n SessionKeyComposableOptions,\n UseCreateSessionKeyReturn,\n UseRevokeSessionReturn,\n UseSendWithSessionReturn,\n UseSessionKeysReturn,\n} from \"./useSessionKeys\";\nexport { useSendCalls } from \"./useSendCalls\";\nexport type {\n SendCallsStatus,\n UseSendCallsOptions,\n UseSendCallsReturn,\n} from \"./useSendCalls\";\nexport { useEmbeddedWallet } from \"./useEmbeddedWallet\";\nexport type {\n EmbeddedWalletAccountView,\n EmbeddedWalletView,\n UseEmbeddedWalletOptions,\n UseEmbeddedWalletReturn,\n} from \"./useEmbeddedWallet\";\nexport { useSIWxLogin } from \"./useSIWxLogin\";\nexport type { UseSIWxLoginReturn } from \"./useSIWxLogin\";\nexport { useSIWxSession } from \"./useSIWxSession\";\nexport type {\n UseSIWxSessionOptions,\n UseSIWxSessionReturn,\n} from \"./useSIWxSession\";\nexport { useSiwxAuthSession } from \"./useSiwxAuthSession\";\nexport type {\n UseSiwxAuthSessionOptions,\n UseSiwxAuthSessionReturn,\n} from \"./useSiwxAuthSession\";\nexport { useBalance } from \"./useBalance\";\nexport type {\n NativeBalanceReader,\n UseBalanceOptions,\n UseBalanceReturn,\n} from \"./useBalance\";\nexport { useRouteQuote } from \"./useRouteQuote\";\nexport type { UseRouteQuoteOptions, UseRouteQuoteReturn } from \"./useRouteQuote\";\nexport { useCompareCosts } from \"./useCompareCosts\";\nexport type { UseCompareCostsReturn } from \"./useCompareCosts\";\nexport { useExecuteRoute } from \"./useExecuteRoute\";\nexport type { UseExecuteRouteReturn } from \"./useExecuteRoute\";\nexport { useTokenList } from \"./useTokenList\";\nexport type { UseTokenListOptions, UseTokenListReturn } from \"./useTokenList\";\nexport { useTokenSearch } from \"./useTokenSearch\";\nexport type {\n UseTokenSearchOptions,\n UseTokenSearchReturn,\n} from \"./useTokenSearch\";\nexport { useValidateDestination } from \"./useValidateDestination\";\nexport type { UseValidateDestinationReturn } from \"./useValidateDestination\";\nexport { useTokenBalance } from \"./useTokenBalance\";\nexport type {\n TokenBalanceReader,\n TokenBalanceResult,\n TokenInfo,\n UseTokenBalanceOptions,\n UseTokenBalanceReturn,\n} from \"./useTokenBalance\";\nexport { useDelegate } from \"./useDelegate\";\nexport type {\n DelegationNonceReader,\n UseDelegateOptions,\n UseDelegateReturn,\n} from \"./useDelegate\";\nexport { useDelegation } from \"./useDelegation\";\nexport type { DelegationCodeReader, UseDelegationReturn } from \"./useDelegation\";\nexport { useResolveName } from \"./useResolveName\";\nexport type { UseResolveNameReturn } from \"./useResolveName\";\nexport { useLookupAddress } from \"./useLookupAddress\";\nexport type { UseLookupAddressReturn } from \"./useLookupAddress\";\nexport { useSolanaAccount } from \"./useSolanaAccount\";\nexport type { UseSolanaAccountReturn } from \"./useSolanaAccount\";\nexport { useChain } from \"./useChain\";\nexport type { UseChainReturn } from \"./useChain\";\nexport type { AccountEntry, UseAccountsReturn } from \"./useAccounts\";\nexport { usePassphraseGate } from \"./usePassphraseGate\";\nexport { useSolanaBalance } from \"./useSolanaBalance\";\nexport { useLastTx } from \"./useLastTx\";\nexport type { UseLastTxReturn } from \"./useLastTx\";\nexport { useTxHistory } from \"./useTxHistory\";\nexport type { UseTxHistoryReturn } from \"./useTxHistory\";\nexport { useTxMonitor } from \"./useTxMonitor\";\nexport type {\n TxMonitorLike,\n TxStatus,\n TxStatusEntry,\n UseTxMonitorReturn,\n} from \"./useTxMonitor\";\nexport type { UseSolanaBalanceReturn as UseSolanaBalanceVueReturn } from \"./useSolanaBalance\";\nexport type { UsePassphraseGateReturn } from \"./usePassphraseGate\";\nexport { useCapabilities, type AtomicSupport, type CapabilityClient, type ChainCapabilities, type UseCapabilitiesReturn } from \"./useCapabilities\";\nexport {\n useSolanaRoles,\n type SolanaIdentity,\n type SolanaPayer,\n type SolanaRoles,\n type SolanaRolesAbsence,\n type SolanaRolesSource,\n type SolanaSigner,\n type SolanaWalletFeatures,\n type UseSolanaRolesReturn,\n} from \"./useSolanaRoles\";\n","/* eslint-disable */\n/* tslint:disable */\n/* auto-generated vue proxies */\nimport { defineContainer, type StencilVueComponent } from '@stencil/vue-output-target/runtime';\n\nimport type { JSX } from '@naculus/connect-appkit-wc';\n\n\n\n\n\nexport const AppkitAccordion: StencilVueComponent<JSX.AppkitAccordion> = /*@__PURE__*/ defineContainer<JSX.AppkitAccordion>('appkit-accordion', undefined, [\n 'label',\n 'open',\n 'disabled',\n 'appkitToggle'\n], [\n 'appkitToggle'\n]);\n\n\nexport const AppkitAccountButton: StencilVueComponent<JSX.AppkitAccountButton> = /*@__PURE__*/ defineContainer<JSX.AppkitAccountButton>('appkit-account-button', undefined, [\n 'address',\n 'balance',\n 'balanceSymbol',\n 'showAddress',\n 'showBalance',\n 'disabled'\n]);\n\n\nexport const AppkitAlertDialog: StencilVueComponent<JSX.AppkitAlertDialog> = /*@__PURE__*/ defineContainer<JSX.AppkitAlertDialog>('appkit-alert-dialog', undefined, [\n 'open',\n 'heading',\n 'description',\n 'appkitClose',\n 'appkitOpenChange'\n], [\n 'appkitClose',\n 'appkitOpenChange'\n]);\n\n\nexport const AppkitAvatar: StencilVueComponent<JSX.AppkitAvatar> = /*@__PURE__*/ defineContainer<JSX.AppkitAvatar>('appkit-avatar', undefined, [\n 'size',\n 'src',\n 'alt',\n 'fallback'\n]);\n\n\nexport const AppkitBadge: StencilVueComponent<JSX.AppkitBadge> = /*@__PURE__*/ defineContainer<JSX.AppkitBadge>('appkit-badge', undefined, [\n 'variant'\n]);\n\n\nexport const AppkitButton: StencilVueComponent<JSX.AppkitButton> = /*@__PURE__*/ defineContainer<JSX.AppkitButton>('appkit-button', undefined, [\n 'variant',\n 'size',\n 'disabled',\n 'type',\n 'locale',\n 'ariaLabel',\n 'eventName'\n]);\n\n\nexport const AppkitCard: StencilVueComponent<JSX.AppkitCard> = /*@__PURE__*/ defineContainer<JSX.AppkitCard>('appkit-card', undefined);\n\n\nexport const AppkitCardContent: StencilVueComponent<JSX.AppkitCardContent> = /*@__PURE__*/ defineContainer<JSX.AppkitCardContent>('appkit-card-content', undefined);\n\n\nexport const AppkitCardDescription: StencilVueComponent<JSX.AppkitCardDescription> = /*@__PURE__*/ defineContainer<JSX.AppkitCardDescription>('appkit-card-description', undefined);\n\n\nexport const AppkitCardFooter: StencilVueComponent<JSX.AppkitCardFooter> = /*@__PURE__*/ defineContainer<JSX.AppkitCardFooter>('appkit-card-footer', undefined);\n\n\nexport const AppkitCardHeader: StencilVueComponent<JSX.AppkitCardHeader> = /*@__PURE__*/ defineContainer<JSX.AppkitCardHeader>('appkit-card-header', undefined);\n\n\nexport const AppkitCardTitle: StencilVueComponent<JSX.AppkitCardTitle> = /*@__PURE__*/ defineContainer<JSX.AppkitCardTitle>('appkit-card-title', undefined);\n\n\nexport const AppkitCheckbox: StencilVueComponent<JSX.AppkitCheckbox> = /*@__PURE__*/ defineContainer<JSX.AppkitCheckbox>('appkit-checkbox', undefined, [\n 'checked',\n 'disabled',\n 'label',\n 'name',\n 'value',\n 'appkitChange'\n], [\n 'appkitChange'\n]);\n\n\nexport const AppkitCollapsible: StencilVueComponent<JSX.AppkitCollapsible> = /*@__PURE__*/ defineContainer<JSX.AppkitCollapsible>('appkit-collapsible', undefined, [\n 'open',\n 'appkitToggle'\n], [\n 'appkitToggle'\n]);\n\n\nexport const AppkitConnectButton: StencilVueComponent<JSX.AppkitConnectButton> = /*@__PURE__*/ defineContainer<JSX.AppkitConnectButton>('appkit-connect-button', undefined, [\n 'connected',\n 'connecting',\n 'address',\n 'balance',\n 'balanceSymbol',\n 'isBalanceLoading',\n 'tokenBalancesJson',\n 'explorerUrl',\n 'explorerLabel',\n 'isMobile',\n 'mobileWalletName',\n 'walletsJson',\n 'qrUri',\n 'qrLoading',\n 'qrError',\n 'appkitConnect',\n 'appkitDisconnect',\n 'appkitStartPairing',\n 'appkitRetry',\n 'appkitCancelPairing',\n 'appkitMobileDeepLink',\n 'appkitCopyAddress'\n], [\n 'appkitConnect',\n 'appkitDisconnect',\n 'appkitStartPairing',\n 'appkitRetry',\n 'appkitCancelPairing',\n 'appkitMobileDeepLink',\n 'appkitCopyAddress'\n]);\n\n\nexport const AppkitDialog: StencilVueComponent<JSX.AppkitDialog> = /*@__PURE__*/ defineContainer<JSX.AppkitDialog>('appkit-dialog', undefined, [\n 'open',\n 'heading',\n 'appkitClose',\n 'appkitOpenChange'\n], [\n 'appkitClose',\n 'appkitOpenChange'\n]);\n\n\nexport const AppkitDropdownMenu: StencilVueComponent<JSX.AppkitDropdownMenu> = /*@__PURE__*/ defineContainer<JSX.AppkitDropdownMenu>('appkit-dropdown-menu', undefined, [\n 'itemsJson',\n 'appkitSelect'\n], [\n 'appkitSelect'\n]);\n\n\nexport const AppkitInput: StencilVueComponent<JSX.AppkitInput> = /*@__PURE__*/ defineContainer<JSX.AppkitInput>('appkit-input', undefined, [\n 'type',\n 'placeholder',\n 'value',\n 'disabled',\n 'invalid',\n 'name',\n 'autocomplete',\n 'maxLength',\n 'appkitChange'\n], [\n 'appkitChange'\n]);\n\n\nexport const AppkitPopover: StencilVueComponent<JSX.AppkitPopover> = /*@__PURE__*/ defineContainer<JSX.AppkitPopover>('appkit-popover', undefined, [\n 'open',\n 'placement',\n 'appkitOpenChange'\n], [\n 'appkitOpenChange'\n]);\n\n\nexport const AppkitProgress: StencilVueComponent<JSX.AppkitProgress> = /*@__PURE__*/ defineContainer<JSX.AppkitProgress>('appkit-progress', undefined, [\n 'value',\n 'max',\n 'label'\n]);\n\n\nexport const AppkitScrollArea: StencilVueComponent<JSX.AppkitScrollArea> = /*@__PURE__*/ defineContainer<JSX.AppkitScrollArea>('appkit-scroll-area', undefined);\n\n\nexport const AppkitSelect: StencilVueComponent<JSX.AppkitSelect> = /*@__PURE__*/ defineContainer<JSX.AppkitSelect>('appkit-select', undefined, [\n 'optionsJson',\n 'value',\n 'placeholder',\n 'disabled',\n 'appkitChange'\n], [\n 'appkitChange'\n]);\n\n\nexport const AppkitSeparator: StencilVueComponent<JSX.AppkitSeparator> = /*@__PURE__*/ defineContainer<JSX.AppkitSeparator>('appkit-separator', undefined, [\n 'orientation',\n 'decorative'\n]);\n\n\nexport const AppkitSkeleton: StencilVueComponent<JSX.AppkitSkeleton> = /*@__PURE__*/ defineContainer<JSX.AppkitSkeleton>('appkit-skeleton', undefined);\n\n\nexport const AppkitSwitch: StencilVueComponent<JSX.AppkitSwitch> = /*@__PURE__*/ defineContainer<JSX.AppkitSwitch>('appkit-switch', undefined, [\n 'checked',\n 'disabled',\n 'label',\n 'appkitChange'\n], [\n 'appkitChange'\n]);\n\n\nexport const AppkitTabs: StencilVueComponent<JSX.AppkitTabs> = /*@__PURE__*/ defineContainer<JSX.AppkitTabs>('appkit-tabs', undefined, [\n 'tabsJson',\n 'selected',\n 'appkitTabChange'\n], [\n 'appkitTabChange'\n]);\n\n\nexport const AppkitToggleGroup: StencilVueComponent<JSX.AppkitToggleGroup> = /*@__PURE__*/ defineContainer<JSX.AppkitToggleGroup>('appkit-toggle-group', undefined, [\n 'itemsJson',\n 'selected',\n 'multiple',\n 'appkitChange'\n], [\n 'appkitChange'\n]);\n\n\nexport const AppkitTooltip: StencilVueComponent<JSX.AppkitTooltip> = /*@__PURE__*/ defineContainer<JSX.AppkitTooltip>('appkit-tooltip', undefined, [\n 'content',\n 'placement'\n]);\n\n\n","import { isEvmAddress, parseCaip10 } from \"@naculus/connect-core\";\nimport { computed, toValue } from \"vue\";\nimport type { ComputedRef, MaybeRefOrGetter } from \"vue\";\n\nexport interface AccountEntry {\n /** As the session reports it: CAIP-10 for most wallets, bare hex for some. */\n address: string;\n /** The namespace, when the entry was CAIP-10. Null for a bare address. */\n namespace: string | null;\n isEVM: boolean;\n}\n\nexport interface UseAccountsReturn {\n accounts: ComputedRef<AccountEntry[]>;\n evmAccount: ComputedRef<string | null>;\n solanaAccount: ComputedRef<string | null>;\n}\n\n/**\n * Split a session's account list by what each entry actually is.\n *\n * The same reading as the React `useAccount`, because it is the same reading:\n * `parseCaip10` and `isEvmAddress` come from `@naculus/connect-core` and hold\n * every rule about which strings mean what. What differs between the two\n * bindings is `computed` versus `useMemo`, and nothing else.\n */\nexport function useAccounts(\n accounts: MaybeRefOrGetter<string[] | null | undefined>,\n): UseAccountsReturn {\n const parsed = computed<AccountEntry[]>(() =>\n (toValue(accounts) ?? []).map((address) => {\n const caip10 = parseCaip10(address);\n if (caip10) {\n return {\n address,\n namespace: caip10.namespace,\n isEVM:\n caip10.namespace === \"eip155\" && isEvmAddress(caip10.address),\n };\n }\n // A bare 0x-40-hex value is unambiguously EVM. A bare base58 string is\n // not unambiguously anything, so nothing is claimed about it.\n return { address, namespace: null, isEVM: isEvmAddress(address) };\n }),\n );\n\n return {\n accounts: parsed,\n evmAccount: computed(\n () => parsed.value.find((a) => a.isEVM)?.address ?? null,\n ),\n solanaAccount: computed(\n () => parsed.value.find((a) => a.namespace === \"solana\")?.address ?? null,\n ),\n };\n}\n","import {\n addInAppNotification,\n channelsUpdate,\n clearOneInAppNotification,\n createNotificationSettingsStorage,\n DEFAULT_NOTIFICATION_SETTINGS,\n loadNotificationSettings,\n mutedChainSettings,\n saveNotificationSettings,\n updateNotificationSettings,\n type NotificationSettingsStorage,\n} from \"@naculus/connect-appkit-core\";\nimport {\n InAppChannel,\n type NotificationItem,\n type NotificationSettings,\n} from \"@naculus/connect-core\";\nimport type { ComputedRef, MaybeRef, ShallowRef } from \"vue\";\nimport { computed, onScopeDispose, shallowRef, unref } from \"vue\";\n\nexport interface UseNotificationOptions {\n channel?: MaybeRef<InAppChannel>;\n storage?: MaybeRef<NotificationSettingsStorage>;\n}\n\nexport interface UseNotificationReturn {\n notifications: ShallowRef<NotificationItem[]>;\n unreadCount: ComputedRef<number>;\n settings: ShallowRef<NotificationSettings>;\n addNotification: (item: Omit<NotificationItem, \"id\" | \"timestamp\">) => void;\n clear: () => void;\n clearOne: (id: string) => void;\n markAsRead: (id: string) => void;\n markAllAsRead: () => void;\n updateSettings: (update: Partial<NotificationSettings>) => void;\n setChannels: (channels: string[]) => void;\n muteChain: (chainId: string) => void;\n unmuteChain: (chainId: string) => void;\n}\n\n/** Vue state shell over the shared in-app notification actions. */\nexport function useNotification(\n options: UseNotificationOptions = {},\n): UseNotificationReturn {\n const channel = unref(options.channel) ?? new InAppChannel();\n const storage = unref(options.storage) ?? createNotificationSettingsStorage();\n const notifications = shallowRef<NotificationItem[]>(channel.getHistory());\n const settings = shallowRef<NotificationSettings>(\n DEFAULT_NOTIFICATION_SETTINGS,\n );\n const unreadCount = computed(\n () => notifications.value.filter((item) => !item.read).length,\n );\n let disposed = false;\n\n void loadNotificationSettings(storage).then((saved) => {\n if (!disposed && saved) settings.value = saved;\n });\n channel.onNotification = (item) => {\n if (!disposed) notifications.value = [...notifications.value, item];\n };\n void channel.restore().then(() => {\n if (!disposed) notifications.value = channel.getHistory();\n });\n onScopeDispose(() => {\n disposed = true;\n channel.onNotification = undefined;\n });\n\n const updateSettings = (update: Partial<NotificationSettings>): void => {\n settings.value = updateNotificationSettings(settings.value, update);\n saveNotificationSettings(storage, settings.value);\n };\n\n return {\n notifications,\n unreadCount,\n settings,\n addNotification: (item) => addInAppNotification(channel, item),\n clear: () => {\n channel.clear();\n notifications.value = [];\n },\n clearOne: (id) => {\n void clearOneInAppNotification(channel, id).then(() => {\n if (!disposed) notifications.value = channel.getHistory();\n });\n },\n markAsRead: (id) => {\n channel.markAsRead(id);\n notifications.value = notifications.value.map((item) =>\n item.id === id ? { ...item, read: true } : item,\n );\n },\n markAllAsRead: () => {\n channel.markAllAsRead();\n notifications.value = notifications.value.map((item) => ({\n ...item,\n read: true,\n }));\n },\n updateSettings,\n setChannels: (channels) => updateSettings(channelsUpdate(channels)),\n muteChain: (chainId) =>\n updateSettings(mutedChainSettings(settings.value, chainId, true)),\n unmuteChain: (chainId) =>\n updateSettings(mutedChainSettings(settings.value, chainId, false)),\n };\n}\n","import { resolveSimulationEndpoint } from \"@naculus/connect-appkit-core\";\nimport {\n SimulationManager,\n type SimulationResult,\n} from \"@naculus/connect-core\";\nimport type { MaybeRef, ShallowRef } from \"vue\";\nimport { onScopeDispose, shallowRef, unref } from \"vue\";\n\nexport interface UseSimulateTransferOptions {\n rpcUrl?: MaybeRef<string | undefined>;\n chainId?: MaybeRef<number | undefined>;\n}\n\nexport interface UseSimulateTransferReturn {\n result: ShallowRef<SimulationResult | null>;\n loading: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n simulate: (\n tokenAddress: `0x${string}`,\n from: `0x${string}`,\n to: `0x${string}`,\n amount: string,\n options?: { chainId?: number; rpcUrl?: string; decimals?: number },\n ) => Promise<SimulationResult>;\n reset: () => void;\n}\n\n/** Vue state shell around the canonical connect-core ERC-20 simulator. */\nexport function useSimulateTransfer(\n options: UseSimulateTransferOptions = {},\n): UseSimulateTransferReturn {\n const result = shallowRef<SimulationResult | null>(null);\n const loading = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let manager: SimulationManager | undefined;\n let generation = 0;\n let disposed = false;\n\n const simulate: UseSimulateTransferReturn[\"simulate\"] = async (\n tokenAddress,\n from,\n to,\n amount,\n callOptions,\n ) => {\n const own = ++generation;\n loading.value = true;\n error.value = null;\n try {\n const fallbackRpcUrl = unref(options.rpcUrl);\n const endpoint = resolveSimulationEndpoint(\n callOptions?.chainId,\n unref(options.chainId),\n callOptions?.rpcUrl,\n fallbackRpcUrl,\n );\n manager ??= new SimulationManager({\n enabled: true,\n rpcUrl: fallbackRpcUrl,\n autoSimulate: false,\n });\n const value = await manager.simulateERC20Transfer(\n tokenAddress,\n from,\n to,\n amount,\n endpoint.chainId,\n callOptions?.decimals,\n endpoint.rpcUrl,\n );\n if (!disposed && own === generation) result.value = value;\n return value;\n } catch (cause) {\n const normalized =\n cause instanceof Error ? cause : new Error(String(cause));\n if (!disposed && own === generation) error.value = normalized;\n throw normalized;\n } finally {\n if (!disposed && own === generation) loading.value = false;\n }\n };\n\n const reset = (): void => {\n generation++;\n result.value = null;\n error.value = null;\n loading.value = false;\n };\n\n onScopeDispose(() => {\n disposed = true;\n generation++;\n });\n\n return { result, loading, error, simulate, reset };\n}\n","import {\n type SimulationCallClient,\n type SimulationTransaction,\n simulateTransactionPreview,\n type WalletChain,\n} from \"@naculus/connect-appkit-core\";\nimport type { SimulationResult } from \"@naculus/connect-core\";\nimport type { MaybeRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { onScopeDispose, shallowRef, toValue, unref, watch } from \"vue\";\n\nexport interface UseTransactionSimulationOptions {\n chainId?: MaybeRef<number | undefined>;\n currentChain?: MaybeRef<WalletChain | null | undefined>;\n publicClient?: MaybeRef<SimulationCallClient | null | undefined>;\n evmAccount?: MaybeRef<string | null | undefined>;\n}\n\nexport interface UseTransactionSimulationReturn {\n result: ShallowRef<SimulationResult | undefined>;\n isSimulating: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n simulate: () => Promise<SimulationResult>;\n reset: () => void;\n}\n\n/** Basic eth_call preview; caller supplies chain/account/client context. */\nexport function useTransactionSimulation(\n tx: MaybeRefOrGetter<SimulationTransaction | undefined>,\n options: UseTransactionSimulationOptions = {},\n): UseTransactionSimulationReturn {\n const result = shallowRef<SimulationResult | undefined>(undefined);\n const isSimulating = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let timer: ReturnType<typeof setTimeout> | undefined;\n let generation = 0;\n let disposed = false;\n\n const simulate = async (): Promise<SimulationResult> => {\n const own = ++generation;\n const transaction = toValue(tx);\n if (transaction) {\n isSimulating.value = true;\n error.value = null;\n }\n try {\n const value = await simulateTransactionPreview(transaction, {\n chainId: unref(options.chainId),\n currentChain: unref(options.currentChain),\n publicClient: unref(options.publicClient),\n evmAccount: unref(options.evmAccount),\n });\n if (!disposed && own === generation) result.value = value;\n return value;\n } catch (cause) {\n const normalized =\n cause instanceof Error ? cause : new Error(\"Simulation failed\");\n if (!disposed && own === generation) error.value = normalized;\n throw normalized;\n } finally {\n if (transaction && !disposed && own === generation)\n isSimulating.value = false;\n }\n };\n\n watch(\n [\n () => toValue(tx),\n () => unref(options.chainId),\n () => unref(options.currentChain),\n () => unref(options.publicClient),\n () => unref(options.evmAccount),\n ],\n ([transaction]) => {\n generation++;\n if (timer) clearTimeout(timer);\n if (!transaction) return;\n timer = setTimeout(() => {\n timer = undefined;\n void simulate().catch(() => {\n // Error is captured in state.\n });\n }, 300);\n },\n { immediate: true },\n );\n\n const reset = (): void => {\n generation++;\n result.value = undefined;\n error.value = null;\n isSimulating.value = false;\n };\n onScopeDispose(() => {\n disposed = true;\n generation++;\n if (timer) clearTimeout(timer);\n });\n\n return { result, isSimulating, error, simulate, reset };\n}\n","import {\n createDecimalsCache,\n encodeErc20Transfer,\n readDecimals,\n writeDecimals,\n} from \"@naculus/connect-appkit-core\";\nimport {\n ERC20_MIN_ABI,\n parseUnits,\n type TokenConfig,\n WalletError,\n} from \"@naculus/connect-core\";\nimport type { MaybeRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { onScopeDispose, shallowRef, toValue, unref, watch } from \"vue\";\nimport type { ERC20Reader, ERC20Sender } from \"./erc20\";\nimport { assertErc20Context } from \"./erc20\";\n\nexport interface UseERC20TransferOptions {\n token: MaybeRefOrGetter<TokenConfig>;\n account: MaybeRefOrGetter<string | null | undefined>;\n chainId: MaybeRefOrGetter<number | undefined>;\n connected: MaybeRefOrGetter<boolean>;\n publicClient: MaybeRefOrGetter<ERC20Reader | null | undefined>;\n sendTransaction: MaybeRef<ERC20Sender>;\n}\n\nexport interface UseERC20TransferReturn {\n sendTransfer: (to: `0x${string}`, amount: string) => Promise<`0x${string}`>;\n isSending: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n}\n\n/** Vue state shell for an ERC-20 transfer through a caller-owned send action. */\nexport function useERC20Transfer(\n options: UseERC20TransferOptions,\n): UseERC20TransferReturn {\n const initialToken = toValue(options.token);\n const decimals = createDecimalsCache(initialToken, initialToken.decimals);\n const isSending = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let generation = 0;\n let disposed = false;\n\n watch(\n [\n () => toValue(options.token).address,\n () => toValue(options.token).chainId,\n () => toValue(options.token).decimals,\n () => toValue(options.account),\n () => toValue(options.chainId),\n () => toValue(options.connected),\n () => toValue(options.publicClient),\n () => unref(options.sendTransaction),\n ],\n () => {\n generation++;\n isSending.value = false;\n error.value = null;\n },\n { flush: \"sync\" },\n );\n\n const sendTransfer: UseERC20TransferReturn[\"sendTransfer\"] = async (\n to,\n amount,\n ) => {\n const own = ++generation;\n const token = toValue(options.token);\n const reader = toValue(options.publicClient);\n const stillCurrent = (): boolean => !disposed && own === generation;\n error.value = null;\n isSending.value = true;\n try {\n assertErc20Context(\n token,\n toValue(options.chainId),\n toValue(options.account),\n toValue(options.connected),\n );\n if (!reader) {\n throw new WalletError(\n \"wallet_unavailable\",\n \"No public client available\",\n );\n }\n let precision = readDecimals(decimals, token, token.decimals);\n if (precision === undefined) {\n precision = Number(\n await reader.readContract({\n address: token.address,\n abi: ERC20_MIN_ABI,\n functionName: \"decimals\",\n }),\n );\n if (!stillCurrent()) {\n throw new WalletError(\n \"session_inactive\",\n \"Wallet or token context changed. Retry the transfer.\",\n );\n }\n writeDecimals(decimals, token, precision);\n }\n const data = encodeErc20Transfer(to, parseUnits(amount, precision));\n return await unref(options.sendTransaction)({\n to: token.address,\n data,\n value: \"0\",\n });\n } catch (cause) {\n const normalized =\n cause instanceof Error ? cause : new Error(\"Transfer failed\");\n if (stillCurrent()) error.value = normalized;\n throw normalized;\n } finally {\n if (stillCurrent()) isSending.value = false;\n }\n };\n\n onScopeDispose(() => {\n disposed = true;\n generation++;\n });\n return { sendTransfer, isSending, error };\n}\n","import {\n bareEvmAddress,\n tokenChainMismatch,\n} from \"@naculus/connect-appkit-core\";\nimport type { TokenConfig } from \"@naculus/connect-core\";\nimport { type ERC20_MIN_ABI, WalletError } from \"@naculus/connect-core\";\n\nexport interface ERC20Reader {\n readContract(args: {\n address: `0x${string}`;\n abi: typeof ERC20_MIN_ABI;\n functionName: \"decimals\" | \"allowance\";\n args?: readonly [`0x${string}`, `0x${string}`];\n }): Promise<unknown>;\n}\n\nexport interface ERC20Transaction {\n to: `0x${string}`;\n data: `0x${string}`;\n value: \"0\";\n}\n\nexport type ERC20Sender = (\n transaction: ERC20Transaction,\n) => Promise<`0x${string}`>;\n\nexport function assertErc20Context(\n token: TokenConfig,\n chainId: number | undefined,\n account: string | null | undefined,\n connected: boolean,\n): `0x${string}` {\n if (!connected || !account) {\n throw new WalletError(\"wallet_unavailable\", \"No connected account\");\n }\n const mismatch = tokenChainMismatch(token, chainId);\n if (mismatch) throw mismatch;\n const bare = bareEvmAddress(account);\n if (!bare) {\n throw new WalletError(\"wallet_unavailable\", \"No valid EVM account\");\n }\n return bare;\n}\n","import {\n createDecimalsCache,\n encodeErc20Approve,\n readDecimals,\n writeDecimals,\n} from \"@naculus/connect-appkit-core\";\nimport {\n ERC20_MIN_ABI,\n formatUnits,\n parseUnits,\n type TokenConfig,\n WalletError,\n} from \"@naculus/connect-core\";\nimport type { ComputedRef, MaybeRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport {\n computed,\n onScopeDispose,\n shallowRef,\n toValue,\n unref,\n watch,\n} from \"vue\";\nimport type { ERC20Reader, ERC20Sender } from \"./erc20\";\nimport { assertErc20Context } from \"./erc20\";\n\nconst MAX_UINT256 = (1n << 256n) - 1n;\n\nexport interface UseERC20ApproveOptions {\n token: MaybeRefOrGetter<TokenConfig>;\n spender: MaybeRefOrGetter<`0x${string}`>;\n account: MaybeRefOrGetter<string | null | undefined>;\n chainId: MaybeRefOrGetter<number | undefined>;\n connected: MaybeRefOrGetter<boolean>;\n publicClient: MaybeRefOrGetter<ERC20Reader | null | undefined>;\n sendTransaction: MaybeRef<ERC20Sender>;\n}\n\nexport interface UseERC20ApproveReturn {\n approve: (amount: string) => Promise<`0x${string}`>;\n approveMax: () => Promise<`0x${string}`>;\n allowanceRaw: ShallowRef<bigint | null>;\n allowance: ComputedRef<string | null>;\n hasAllowance: (required: string) => Promise<boolean>;\n isApproving: ShallowRef<boolean>;\n isFetchingAllowance: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n refetchAllowance: () => Promise<bigint | null>;\n}\n\n/** Vue state shell for ERC-20 approvals through caller-owned read/send actions. */\nexport function useERC20Approve(\n options: UseERC20ApproveOptions,\n): UseERC20ApproveReturn {\n const initialToken = toValue(options.token);\n const decimals = createDecimalsCache(initialToken, initialToken.decimals);\n const allowanceRaw = shallowRef<bigint | null>(null);\n const isApproving = shallowRef(false);\n const isFetchingAllowance = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let generation = 0;\n let allowanceGeneration = 0;\n let disposed = false;\n\n watch(\n [\n () => toValue(options.token).address,\n () => toValue(options.token).chainId,\n () => toValue(options.token).decimals,\n () => toValue(options.spender),\n () => toValue(options.account),\n () => toValue(options.chainId),\n () => toValue(options.connected),\n () => toValue(options.publicClient),\n () => unref(options.sendTransaction),\n ],\n () => {\n generation++;\n allowanceGeneration++;\n allowanceRaw.value = null;\n isApproving.value = false;\n isFetchingAllowance.value = false;\n error.value = null;\n },\n { flush: \"sync\" },\n );\n\n const context = () => {\n const token = toValue(options.token);\n const account = assertErc20Context(\n token,\n toValue(options.chainId),\n toValue(options.account),\n toValue(options.connected),\n );\n const reader = toValue(options.publicClient);\n if (!reader)\n throw new WalletError(\"wallet_unavailable\", \"No public client\");\n return { token, account, reader, spender: toValue(options.spender) };\n };\n\n const readPrecision = async (): Promise<number> => {\n const { token, reader } = context();\n let precision = readDecimals(decimals, token, token.decimals);\n if (precision === undefined) {\n precision = Number(\n await reader.readContract({\n address: token.address,\n abi: ERC20_MIN_ABI,\n functionName: \"decimals\",\n }),\n );\n writeDecimals(decimals, token, precision);\n }\n return precision;\n };\n\n const refetchAllowance = async (): Promise<bigint | null> => {\n const own = ++allowanceGeneration;\n allowanceRaw.value = null;\n error.value = null;\n isFetchingAllowance.value = true;\n try {\n const { token, account, reader, spender } = context();\n const raw = BigInt(\n (await reader.readContract({\n address: token.address,\n abi: ERC20_MIN_ABI,\n functionName: \"allowance\",\n args: [account, spender],\n })) as bigint | string | number,\n );\n if (disposed || own !== allowanceGeneration) return null;\n allowanceRaw.value = raw;\n return raw;\n } catch (cause) {\n if (!disposed && own === allowanceGeneration) {\n error.value =\n cause instanceof Error\n ? cause\n : new Error(\"Failed to fetch allowance\");\n }\n return null;\n } finally {\n if (!disposed && own === allowanceGeneration)\n isFetchingAllowance.value = false;\n }\n };\n\n const doApprove = async (rawAmount: bigint): Promise<`0x${string}`> => {\n const own = ++generation;\n error.value = null;\n isApproving.value = true;\n try {\n const { token, spender } = context();\n const hash = await unref(options.sendTransaction)({\n to: token.address,\n data: encodeErc20Approve(spender, rawAmount),\n value: \"0\",\n });\n if (!disposed && own === generation) void refetchAllowance();\n return hash;\n } catch (cause) {\n const normalized =\n cause instanceof Error ? cause : new Error(\"Approve failed\");\n if (!disposed && own === generation) error.value = normalized;\n throw normalized;\n } finally {\n if (!disposed && own === generation) isApproving.value = false;\n }\n };\n\n const approve = async (amount: string): Promise<`0x${string}`> => {\n const contextGeneration = generation;\n let rawAmount: bigint;\n try {\n const precision = await readPrecision();\n if (contextGeneration !== generation || disposed) {\n throw new WalletError(\n \"session_inactive\",\n \"Wallet or token context changed. Retry the approval.\",\n );\n }\n rawAmount = parseUnits(amount, precision);\n } catch (cause) {\n const normalized =\n cause instanceof Error ? cause : new Error(\"Approve failed\");\n if (!disposed && contextGeneration === generation)\n error.value = normalized;\n throw normalized;\n }\n return doApprove(rawAmount);\n };\n const approveMax = (): Promise<`0x${string}`> => doApprove(MAX_UINT256);\n const hasAllowance = async (required: string): Promise<boolean> => {\n const raw = allowanceRaw.value ?? (await refetchAllowance());\n if (raw === null) return false;\n return raw >= parseUnits(required, await readPrecision());\n };\n\n const allowance = computed(() => {\n if (allowanceRaw.value === null) return null;\n const token = toValue(options.token);\n const precision = readDecimals(decimals, token, token.decimals);\n return precision === undefined\n ? null\n : formatUnits(allowanceRaw.value, precision);\n });\n\n onScopeDispose(() => {\n disposed = true;\n generation++;\n allowanceGeneration++;\n });\n return {\n approve,\n approveMax,\n allowanceRaw,\n allowance,\n hasAllowance,\n isApproving,\n isFetchingAllowance,\n error,\n refetchAllowance,\n };\n}\n","import type {\n SimulationCallClient,\n WalletChain,\n} from \"@naculus/connect-appkit-core\";\nimport { chainNumber, encodeErc20Transfer } from \"@naculus/connect-appkit-core\";\nimport type { SimulationResult } from \"@naculus/connect-core\";\nimport { parseUnits, type TokenConfig } from \"@naculus/connect-core\";\nimport type { ComputedRef, MaybeRef, MaybeRefOrGetter } from \"vue\";\nimport { computed, toValue } from \"vue\";\nimport {\n type UseTransactionSimulationReturn,\n useTransactionSimulation,\n} from \"./useTransactionSimulation\";\n\nexport interface UseERC20TransferSimulationOptions {\n token: MaybeRefOrGetter<TokenConfig>;\n to: MaybeRefOrGetter<`0x${string}`>;\n amount: MaybeRefOrGetter<string>;\n connected: MaybeRefOrGetter<boolean>;\n evmAccount: MaybeRef<string | null | undefined>;\n currentChain?: MaybeRef<WalletChain | null | undefined>;\n publicClient?: MaybeRef<SimulationCallClient | null | undefined>;\n}\n\nexport interface UseERC20TransferSimulationReturn\n extends Omit<\n UseTransactionSimulationReturn,\n \"result\" | \"isSimulating\" | \"error\" | \"simulate\"\n > {\n result: ComputedRef<SimulationResult | undefined>;\n isSimulating: ComputedRef<boolean>;\n error: ComputedRef<Error | null>;\n reSimulate: () => Promise<SimulationResult>;\n}\n\n/** Vue shell that previews exactly the calldata accepted by the transfer hook. */\nexport function useERC20TransferSimulation(\n options: UseERC20TransferSimulationOptions,\n): UseERC20TransferSimulationReturn {\n const transaction = computed(() => {\n const token = toValue(options.token);\n if (!toValue(options.connected) || !toValue(options.evmAccount))\n return undefined;\n try {\n if (token.decimals === undefined) return undefined;\n return {\n to: token.address,\n data: encodeErc20Transfer(\n toValue(options.to),\n parseUnits(toValue(options.amount), token.decimals),\n ),\n value: \"0\" as const,\n };\n } catch {\n return undefined;\n }\n });\n const chainId = computed(() => {\n const token = toValue(options.token);\n if (token.chainId !== undefined) return token.chainId;\n const currentChain = toValue(options.currentChain);\n return currentChain ? (chainNumber(currentChain) ?? undefined) : undefined;\n });\n const simulation = useTransactionSimulation(transaction, {\n chainId,\n currentChain: options.currentChain,\n publicClient: options.publicClient,\n evmAccount: options.evmAccount,\n });\n return {\n result: computed(() =>\n transaction.value ? simulation.result.value : undefined,\n ),\n isSimulating: computed(\n () => !!transaction.value && simulation.isSimulating.value,\n ),\n error: computed(() => (transaction.value ? simulation.error.value : null)),\n reSimulate: simulation.simulate,\n reset: simulation.reset,\n };\n}\n","import { computed, toValue } from \"vue\";\nimport type { ComputedRef, MaybeRefOrGetter } from \"vue\";\nimport { useAccounts, type AccountEntry } from \"./useAccounts\";\n\nexport interface UseAccountReturn {\n accounts: ComputedRef<AccountEntry[] | null>;\n evmAccount: ComputedRef<string | null>;\n primaryAccount: ComputedRef<string | null>;\n isConnected: ComputedRef<boolean>;\n count: ComputedRef<number>;\n}\n\n/** React useAccount's connected-state view of the shared account parser. */\nexport function useAccount(\n accounts: MaybeRefOrGetter<string[] | null | undefined>,\n connected: MaybeRefOrGetter<boolean>,\n): UseAccountReturn {\n const parsed = useAccounts(accounts);\n const isConnected = computed(() => toValue(connected));\n const accountList = computed(() => toValue(accounts) ?? []);\n\n return {\n accounts: computed(() =>\n isConnected.value && accountList.value.length > 0\n ? parsed.accounts.value\n : null,\n ),\n evmAccount: computed(() =>\n isConnected.value ? parsed.evmAccount.value : null,\n ),\n primaryAccount: computed(() => accountList.value[0] ?? null),\n isConnected,\n count: computed(() => accountList.value.length),\n };\n}\n","import type {\n ActiveSessionBundle,\n ChainSession,\n SessionManager,\n} from \"@naculus/connect-core\";\nimport type { ComputedRef, MaybeRefOrGetter } from \"vue\";\nimport { computed, shallowRef, toValue, watch } from \"vue\";\n\nexport interface UseSessionReturn {\n session: ComputedRef<ActiveSessionBundle[\"walletSession\"] | null>;\n chainSessions: ComputedRef<ChainSession[]>;\n activeChainId: ComputedRef<string | null>;\n isConnected: ComputedRef<boolean>;\n connectorId: ComputedRef<string | null>;\n}\n\ninterface SessionSnapshot {\n session: ActiveSessionBundle[\"walletSession\"] | null;\n chainSessions: ChainSession[];\n activeChainId: string | null;\n connectorId: string | null;\n}\n\nfunction readSession(\n manager: SessionManager | null | undefined,\n): SessionSnapshot {\n const bundle = manager?.getActiveBundle();\n if (!bundle) {\n return {\n session: null,\n chainSessions: [],\n activeChainId: null,\n connectorId: null,\n };\n }\n return {\n session: bundle.walletSession,\n chainSessions: Array.from(bundle.chainSessions.values()),\n activeChainId: bundle.activeChainId,\n connectorId: bundle.walletSession.walletType,\n };\n}\n\n/** Reactively expose a caller-owned SessionManager's active bundle. */\nexport function useSession(\n manager: MaybeRefOrGetter<SessionManager | null | undefined>,\n): UseSessionReturn {\n const snapshot = shallowRef<SessionSnapshot>(readSession(toValue(manager)));\n\n watch(\n () => toValue(manager),\n (current, _previous, onCleanup) => {\n const update = (): void => {\n snapshot.value = readSession(current);\n };\n update();\n if (!current) return;\n current.on(\"sessionConnected\", update);\n current.on(\"sessionDisconnected\", update);\n current.on(\"chainChanged\", update);\n // CAIP-25 lifecycle (connect-core >= 0.2.6): the wallet narrowed or\n // ended the session without the app asking.\n current.on(\"sessionScopeChanged\", update);\n current.on(\"sessionRevoked\", update);\n onCleanup(() => {\n current.off(\"sessionConnected\", update);\n current.off(\"sessionDisconnected\", update);\n current.off(\"chainChanged\", update);\n current.off(\"sessionScopeChanged\", update);\n current.off(\"sessionRevoked\", update);\n });\n },\n { immediate: true },\n );\n\n return {\n session: computed(() => snapshot.value.session),\n chainSessions: computed(() => snapshot.value.chainSessions),\n activeChainId: computed(() => snapshot.value.activeChainId),\n isConnected: computed(() => snapshot.value.session !== null),\n connectorId: computed(() => snapshot.value.connectorId),\n };\n}\n","import { WalletError } from \"@naculus/connect-core\";\nimport type { ComputedRef, MaybeRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { computed, toValue, unref } from \"vue\";\nimport { useActionGuard } from \"./internal/action-guard\";\n\nexport interface UseConnectReturn {\n connect: () => Promise<void>;\n isConnecting: ComputedRef<boolean>;\n error: ShallowRef<Error | null>;\n}\n\n/** Connection state around a caller-owned action; never connects on mount. */\nexport function useConnect(\n action: MaybeRef<() => Promise<void>>,\n status: MaybeRefOrGetter<string>,\n): UseConnectReturn {\n const guard = useActionGuard();\n let inFlight: Promise<void> | null = null;\n\n const connect = (): Promise<void> => {\n if (inFlight) return inFlight;\n const invoke = unref(action);\n const pending = guard\n .run(\n () => Promise.resolve().then(() => invoke()),\n \"Connection failed\",\n (cause) => {\n const message =\n cause instanceof Error ? cause.message : \"Connection failed\";\n return cause instanceof WalletError ? cause : new Error(message);\n },\n )\n .catch(() => {})\n .finally(() => {\n if (inFlight === pending) inFlight = null;\n });\n inFlight = pending;\n return pending;\n };\n\n return {\n connect,\n isConnecting: computed(\n () => guard.busy.value || toValue(status) === \"connecting\",\n ),\n error: guard.error,\n };\n}\n","import type { ShallowRef } from \"vue\";\nimport { onScopeDispose, shallowRef } from \"vue\";\n\nexport interface ActionGuard {\n /** True while at least one guarded call is in flight. */\n busy: ShallowRef<boolean>;\n /** The most recent failure of the newest call; older failures are dropped. */\n error: ShallowRef<Error | null>;\n /**\n * Run `action`. Concurrency-counted busy flag; only the newest call may\n * publish an error; the error is rethrown so callers still see it. The\n * action receives `commit(write)`, which runs `write` only while this call\n * is still the newest and the guard is not disposed — for result state\n * (a status, a hash) that must not be written by a superseded call.\n */\n run<T>(\n action: (commit: (write: () => void) => void) => Promise<T>,\n fallbackMessage: string,\n normalizeError?: (cause: unknown) => Error,\n ): Promise<T>;\n /** Clear the visible error without invalidating an in-flight call. */\n clearError(): void;\n /** Forget the current error and stop any in-flight call from publishing. */\n reset(): void;\n /** Permanently stop this guard from publishing state. */\n dispose(): void;\n}\n\n/**\n * The invocation guard every action-style composable needs, in one place.\n * Created inside a component scope; disposal is handled automatically.\n */\nexport function useActionGuard(): ActionGuard {\n const busy = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let active = 0;\n let generation = 0;\n let disposed = false;\n\n const run = async <T>(\n action: (commit: (write: () => void) => void) => Promise<T>,\n fallbackMessage: string,\n normalizeError?: (cause: unknown) => Error,\n ): Promise<T> => {\n const own = ++generation;\n const commit = (write: () => void): void => {\n if (!disposed && own === generation) write();\n };\n active++;\n busy.value = true;\n error.value = null;\n try {\n return await action(commit);\n } catch (cause) {\n const normalized = normalizeError\n ? normalizeError(cause)\n : cause instanceof Error\n ? cause\n : new Error(fallbackMessage);\n if (!disposed && own === generation) error.value = normalized;\n throw normalized;\n } finally {\n active--;\n if (!disposed) busy.value = active > 0;\n }\n };\n\n const reset = (): void => {\n generation++;\n error.value = null;\n };\n const clearError = (): void => {\n error.value = null;\n };\n\n const dispose = (): void => {\n disposed = true;\n generation++;\n };\n\n onScopeDispose(dispose);\n\n return { busy, error, run, clearError, reset, dispose };\n}\n","import type { MaybeRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { toValue, unref } from \"vue\";\nimport { useActionGuard } from \"./internal/action-guard\";\n\nexport interface UseDisconnectReturn {\n disconnect: () => Promise<void>;\n isDisconnecting: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n cleanup: () => void;\n}\n\n/** Disconnect through a caller-owned action, preserving React's no-op when already disconnected. */\nexport function useDisconnect(\n action: MaybeRef<() => Promise<void>>,\n status: MaybeRefOrGetter<string>,\n): UseDisconnectReturn {\n const guard = useActionGuard();\n let inFlight: Promise<void> | null = null;\n\n const disconnect = (): Promise<void> => {\n if (inFlight) return inFlight;\n if (toValue(status) === \"disconnected\") return Promise.resolve();\n const invoke = unref(action);\n const pending = guard\n .run(() => Promise.resolve().then(() => invoke()), \"Disconnect failed\")\n .catch(() => {})\n .finally(() => {\n if (inFlight === pending) inFlight = null;\n });\n inFlight = pending;\n return pending;\n };\n\n const cleanup = (): void => {\n guard.dispose();\n };\n return {\n disconnect,\n isDisconnecting: guard.busy,\n error: guard.error,\n cleanup,\n };\n}\n","import { toChainSwitchError } from \"@naculus/connect-appkit-core\";\nimport type { WalletError } from \"@naculus/connect-core\";\nimport type { ComputedRef, MaybeRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { computed, toValue, unref } from \"vue\";\nimport { useActionGuard } from \"./internal/action-guard\";\n\nexport interface UseSwitchChainReturn {\n switchChain: (chainId: string) => Promise<void>;\n isSwitching: ShallowRef<boolean>;\n currentChainId: ComputedRef<string | null>;\n error: ShallowRef<WalletError | null>;\n clearError: () => void;\n}\n\n/** Vue counterpart of React useSwitchChain around a caller-owned action. */\nexport function useSwitchChain(\n action: MaybeRef<(chainId: string) => Promise<void>>,\n chainId: MaybeRefOrGetter<string | null | undefined>,\n): UseSwitchChainReturn {\n const guard = useActionGuard();\n\n const switchChain = (targetChainId: string): Promise<void> => {\n const invoke = unref(action);\n return guard.run(async () => {\n try {\n await invoke(targetChainId);\n } catch (cause) {\n throw toChainSwitchError(cause);\n }\n }, \"Failed to switch chain\");\n };\n\n return {\n switchChain,\n isSwitching: guard.busy,\n currentChainId: computed(() => toValue(chainId) ?? null),\n error: guard.error as ShallowRef<WalletError | null>,\n clearError: guard.clearError,\n };\n}\n","import type { MaybeRef, ShallowRef } from \"vue\";\nimport { unref } from \"vue\";\nimport { useActionGuard } from \"./internal/action-guard\";\n\nexport type SignMessageAction = (message: string) => Promise<string>;\n\nexport interface UseSignMessageReturn {\n signMessage: SignMessageAction;\n isSigning: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n reset: () => void;\n}\n\n/** Reactive state around a caller-owned message-signing action. */\nexport function useSignMessage(\n action: MaybeRef<SignMessageAction>,\n): UseSignMessageReturn {\n const guard = useActionGuard();\n\n const signMessage: SignMessageAction = (message) => {\n const invoke = unref(action);\n return guard.run(() => invoke(message), \"Signing failed\");\n };\n\n return {\n signMessage,\n isSigning: guard.busy,\n error: guard.error,\n reset: guard.reset,\n };\n}\n","import type { ComputedRef, MaybeRef, ShallowRef } from \"vue\";\nimport { computed, shallowRef, unref } from \"vue\";\nimport { useActionGuard } from \"./internal/action-guard\";\n\nexport interface EvmTransaction {\n to: string;\n from?: string;\n value?: string;\n data?: string;\n gas?: string;\n gasPrice?: string;\n nonce?: string;\n chainId?: number;\n}\n\nexport type SendTransactionAction = (\n transaction: EvmTransaction,\n) => Promise<string>;\n\nexport type SendTransactionStatus =\n | \"idle\"\n | \"awaiting_approval\"\n | \"submitted\"\n | \"failed\";\n\nexport interface UseSendTransactionReturn {\n sendTransaction: SendTransactionAction;\n status: ShallowRef<SendTransactionStatus>;\n error: ShallowRef<Error | null>;\n reset: () => void;\n isSending: ComputedRef<boolean>;\n}\n\n/** Reactive state around a caller-owned EVM transaction action. */\nexport function useSendTransaction(\n action: MaybeRef<SendTransactionAction>,\n): UseSendTransactionReturn {\n const guard = useActionGuard();\n const status = shallowRef<SendTransactionStatus>(\"idle\");\n\n const sendTransaction: SendTransactionAction = (transaction) => {\n const invoke = unref(action);\n status.value = \"awaiting_approval\";\n return guard\n .run(async (commit) => {\n const hash = await invoke(transaction);\n commit(() => {\n status.value = \"submitted\";\n });\n return hash;\n }, \"Transaction failed\")\n .catch((cause: unknown) => {\n // The guard already published the error if this call is current;\n // status follows the same rule.\n if (guard.error.value === cause) status.value = \"failed\";\n throw cause;\n });\n };\n\n const reset = (): void => {\n guard.reset();\n status.value = \"idle\";\n };\n\n return {\n sendTransaction,\n status,\n error: guard.error,\n reset,\n isSending: computed(() => status.value === \"awaiting_approval\"),\n };\n}\n","import type { SolanaConfirmationStatus } from \"@naculus/connect-core\";\nimport type { MaybeRef, ShallowRef } from \"vue\";\nimport { shallowRef, unref } from \"vue\";\nimport { useActionGuard } from \"./internal/action-guard\";\n\nexport type SolanaTransaction = Uint8Array | string;\nexport type SignSolanaTransactionAction = (\n transaction: SolanaTransaction,\n) => Promise<Uint8Array>;\nexport type SendSolanaTransactionAction = (\n transaction: SolanaTransaction,\n) => Promise<string>;\nexport type GetSolanaTransactionStatusAction = (\n signature: string,\n) => Promise<{ status: SolanaConfirmationStatus; error: string | null }>;\n\nexport interface UseSolanaTransactionOptions {\n signTransaction: MaybeRef<SignSolanaTransactionAction>;\n sendTransaction: MaybeRef<SendSolanaTransactionAction>;\n getStatus: MaybeRef<GetSolanaTransactionStatusAction>;\n}\n\nexport interface UseSolanaTransactionReturn {\n signTransaction: SignSolanaTransactionAction;\n sendTransaction: SendSolanaTransactionAction;\n getStatus: GetSolanaTransactionStatusAction;\n isSigning: ShallowRef<boolean>;\n isSending: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n reset: () => void;\n}\n\n/** Reactive state around caller-owned Solana sign, send, and status actions. */\nexport function useSolanaTransaction(\n options: UseSolanaTransactionOptions,\n): UseSolanaTransactionReturn {\n // One guard so sign and send share the \"newest failure wins\" error, with\n // per-channel busy flags derived from their own in-flight counts.\n const guard = useActionGuard();\n const isSigning = shallowRef(false);\n const isSending = shallowRef(false);\n let signing = 0;\n let sending = 0;\n\n const signTransaction: SignSolanaTransactionAction = (transaction) => {\n const invoke = unref(options.signTransaction);\n signing++;\n isSigning.value = true;\n return guard\n .run(() => invoke(transaction), \"Signing failed\")\n .finally(() => {\n signing--;\n isSigning.value = signing > 0;\n });\n };\n\n const sendTransaction: SendSolanaTransactionAction = (transaction) => {\n const invoke = unref(options.sendTransaction);\n sending++;\n isSending.value = true;\n return guard\n .run(() => invoke(transaction), \"Send failed\")\n .finally(() => {\n sending--;\n isSending.value = sending > 0;\n });\n };\n\n const getStatus: GetSolanaTransactionStatusAction = (signature) =>\n unref(options.getStatus)(signature);\n\n return {\n signTransaction,\n sendTransaction,\n getStatus,\n isSigning,\n isSending,\n error: guard.error,\n reset: guard.reset,\n };\n}\n","import type { MaybeRef, ShallowRef } from \"vue\";\nimport { onScopeDispose, shallowRef, unref } from \"vue\";\nimport type { SiwxResult, SiwxSignInAction } from \"./siwx\";\n\nexport interface UseSignInWithXReturn {\n signIn: SiwxSignInAction;\n isSigningIn: ShallowRef<boolean>;\n result: ShallowRef<SiwxResult | null>;\n error: ShallowRef<Error | null>;\n clearError: () => void;\n reset: () => void;\n}\n\n/** Reactive state around a caller-owned SIWX sign-in action. */\nexport function useSignInWithX(\n action: MaybeRef<SiwxSignInAction>,\n): UseSignInWithXReturn {\n const isSigningIn = shallowRef(false);\n const result = shallowRef<SiwxResult | null>(null);\n const error = shallowRef<Error | null>(null);\n let generation = 0;\n let active = 0;\n let disposed = false;\n\n const signIn: SiwxSignInAction = async (options) => {\n const invoke = unref(action);\n const own = ++generation;\n active++;\n isSigningIn.value = true;\n error.value = null;\n try {\n const next = await invoke(options);\n if (!disposed && own === generation) result.value = next;\n return next;\n } catch (cause) {\n const normalized =\n cause instanceof Error ? cause : new Error(\"SIWX sign-in failed\");\n if (!disposed && own === generation) error.value = normalized;\n throw normalized;\n } finally {\n active--;\n if (!disposed) isSigningIn.value = active > 0;\n }\n };\n const clearError = (): void => {\n error.value = null;\n };\n const reset = (): void => {\n generation++;\n result.value = null;\n error.value = null;\n };\n onScopeDispose(() => {\n disposed = true;\n generation++;\n });\n return { signIn, isSigningIn, result, error, clearError, reset };\n}\n","import type { MaybeRef } from \"vue\";\nimport type { SiwxSignInAction, SiwxSignInOptions } from \"./siwx\";\nimport { type UseSignInWithXReturn, useSignInWithX } from \"./useSignInWithX\";\n\nexport type UseSignInWithEthereumOptions = SiwxSignInOptions;\n\nexport interface UseSignInWithEthereumReturn extends UseSignInWithXReturn {}\n\n/** Ethereum-named view of the caller-owned SIWX sign-in shell. */\nexport function useSignInWithEthereum(\n action: MaybeRef<SiwxSignInAction>,\n): UseSignInWithEthereumReturn {\n return useSignInWithX(action);\n}\n","import type { ComputedRef, MaybeRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { computed, toValue, unref } from \"vue\";\nimport type {\n ExecuteCallsAction,\n ExecutionRoute,\n PreviewExecutionAction,\n} from \"./eip5792\";\nimport { useActionGuard } from \"./internal/action-guard\";\n\nexport interface UseExecuteCallsOptions {\n preview: MaybeRef<PreviewExecutionAction>;\n execute: MaybeRef<ExecuteCallsAction>;\n lastRoute: MaybeRefOrGetter<ExecutionRoute | null>;\n reset: MaybeRef<() => void>;\n}\n\nexport interface UseExecuteCallsReturn {\n preview: PreviewExecutionAction;\n execute: ExecuteCallsAction;\n isExecuting: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n lastRoute: ComputedRef<ExecutionRoute | null>;\n reset: () => void;\n}\n\n/** Reactive state around a caller-owned EIP-5792 execution planner/action. */\nexport function useExecuteCalls(\n options: UseExecuteCallsOptions,\n): UseExecuteCallsReturn {\n const guard = useActionGuard();\n\n const preview: PreviewExecutionAction = (callCount, atomicity) =>\n unref(options.preview)(callCount, atomicity);\n\n const execute: ExecuteCallsAction = (calls, atomicity) => {\n const invoke = unref(options.execute);\n return guard.run(() => invoke(calls, atomicity), \"Execution failed\");\n };\n\n const reset = (): void => {\n guard.reset();\n unref(options.reset)();\n };\n\n return {\n preview,\n execute,\n isExecuting: guard.busy,\n error: guard.error,\n lastRoute: computed(() => toValue(options.lastRoute)),\n reset,\n };\n}\n","import {\n bareEvmAddress,\n createDelegationPolicyFlow,\n type DelegationPolicyPreview,\n getSharedSessionKeyManager,\n isVerifiablePolicy,\n type PolicyExecutionAdapter,\n type PolicyExecutionPreview,\n type PolicyExecutionSubmission,\n type PolicySignatureVerifier,\n} from \"@naculus/connect-appkit-core\";\nimport type {\n AtomicityRequirement,\n SessionKeyInfo,\n SessionKeyManager,\n SessionKeyManagerConfig,\n SessionKeyScope,\n SessionKeyTransaction,\n} from \"@naculus/connect-core\";\nimport type { ComputedRef, MaybeRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport {\n computed,\n onScopeDispose,\n shallowRef,\n toValue,\n unref,\n watch,\n} from \"vue\";\nimport { useActionGuard } from \"./internal/action-guard\";\nimport { useSessionKeys } from \"./useSessionKeys\";\n\nexport type {\n DelegationPolicyPreview,\n PolicyExecutionAdapter,\n PolicyExecutionSubmission,\n};\n\nexport interface UseDelegationPolicyOptions {\n /** Connected EOA (plain or CAIP-10). */\n account: MaybeRefOrGetter<string | null | undefined>;\n /** Whether a wallet session is connected (gates the policy list). */\n connected: MaybeRefOrGetter<boolean>;\n /** Main-wallet EIP-191 signer for the policy message. */\n signMessage: MaybeRef<(message: string) => Promise<string>>;\n /** Recovers an EIP-191 signer and compares; e.g. viem's recoverMessageAddress. */\n verifySignature: MaybeRef<PolicySignatureVerifier>;\n /** Execution planner (from useExecuteCalls-style preview) for readiness. */\n previewExecution: MaybeRef<\n (\n callCount: number,\n atomicity: AtomicityRequirement,\n ) => PolicyExecutionPreview\n >;\n /** Current on-chain EIP-7702 delegation of the account (from useDelegation). */\n delegation: MaybeRefOrGetter<{\n delegated: boolean | null;\n delegate: `0x${string}` | null;\n }>;\n managerConfig?: SessionKeyManagerConfig;\n /** Reuse a caller-owned manager instead of the shared one. */\n manager?: SessionKeyManager;\n origin?: string;\n sponsorship?: AtomicityRequirement;\n adapter?: PolicyExecutionAdapter;\n}\n\nexport interface UseDelegationPolicyReturn {\n policies: ShallowRef<SessionKeyInfo[]>;\n /** Active policies whose stored signature currently verifies. */\n activePolicies: ComputedRef<SessionKeyInfo[]>;\n storageAvailable: boolean;\n loading: ComputedRef<boolean>;\n isBusy: ShallowRef<boolean>;\n error: ComputedRef<Error | null>;\n createPolicy: (scope: Partial<SessionKeyScope>) => Promise<SessionKeyInfo>;\n revokePolicy: (policyId: string) => Promise<void>;\n previewPolicyExecution: (\n policyId: string,\n tx: SessionKeyTransaction,\n callCount?: number,\n atomicity?: AtomicityRequirement,\n ) => Promise<DelegationPolicyPreview>;\n signPolicyDigest: (\n policyId: string,\n digest: `0x${string}`,\n tx: SessionKeyTransaction,\n ) => Promise<`0x${string}`>;\n executePolicy: (\n policyId: string,\n tx: SessionKeyTransaction,\n ) => Promise<PolicyExecutionSubmission>;\n refresh: () => Promise<void>;\n clearError: () => void;\n}\n\n/**\n * Signed off-chain delegation policies in Vue. The whole flow is\n * appkit-core's createDelegationPolicyFlow, shared with React; this file\n * supplies reactivity and the caller-owned signer, verifier, planner and\n * delegation state that React gets from its provider.\n */\nexport function useDelegationPolicy(\n options: UseDelegationPolicyOptions,\n): UseDelegationPolicyReturn {\n const manager =\n options.manager ?? getSharedSessionKeyManager(options.managerConfig);\n const sessionKeys = useSessionKeys(options.connected, options.managerConfig, {\n manager,\n });\n const guard = useActionGuard();\n const verifiedIds = shallowRef<Set<string>>(new Set());\n const isVerifying = shallowRef(false);\n const verifyError = shallowRef<Error | null>(null);\n let verifyGeneration = 0;\n let disposed = false;\n\n const origin =\n options.origin ??\n (typeof window !== \"undefined\" ? window.location.origin : \"unknown\");\n\n const flow = createDelegationPolicyFlow({\n manager,\n origin,\n signer: () => bareEvmAddress(toValue(options.account)),\n signMessage: (message) => unref(options.signMessage)(message),\n verifySignature: (input) => unref(options.verifySignature)(input),\n previewExecution: (callCount, atomicity) =>\n unref(options.previewExecution)(callCount, atomicity),\n sponsorship: options.sponsorship,\n adapter: options.adapter,\n delegation: () => toValue(options.delegation),\n encryptionKeyConfigured: Boolean(options.managerConfig?.encryptionKey),\n storageAvailable: () => sessionKeys.storageAvailable,\n refresh: sessionKeys.refresh,\n });\n\n // Re-verify stored signatures whenever the list changes; a verification\n // for a previous list must not mark the current one.\n watch(\n () => sessionKeys.sessions.value,\n (sessions) => {\n const own = ++verifyGeneration;\n const candidates = sessions.filter(isVerifiablePolicy);\n if (candidates.length === 0) {\n verifiedIds.value = new Set();\n isVerifying.value = false;\n return;\n }\n isVerifying.value = true;\n void Promise.all(\n candidates.map(\n async (policy) =>\n [policy.id, await flow.verifyStoredPolicy(policy)] as const,\n ),\n )\n .then((results) => {\n if (disposed || own !== verifyGeneration) return;\n verifiedIds.value = new Set(\n results.filter(([, ok]) => ok).map(([id]) => id),\n );\n })\n .catch((cause) => {\n if (disposed || own !== verifyGeneration) return;\n verifiedIds.value = new Set();\n verifyError.value =\n cause instanceof Error\n ? cause\n : new Error(\"Policy verification failed\");\n })\n .finally(() => {\n if (!disposed && own === verifyGeneration) isVerifying.value = false;\n });\n },\n { immediate: true },\n );\n\n onScopeDispose(() => {\n disposed = true;\n verifyGeneration++;\n });\n\n return {\n policies: sessionKeys.sessions,\n activePolicies: computed(() =>\n sessionKeys.activeSessions.value.filter((p) =>\n verifiedIds.value.has(p.id),\n ),\n ),\n storageAvailable: sessionKeys.storageAvailable,\n loading: computed(() => sessionKeys.loading.value || isVerifying.value),\n isBusy: guard.busy,\n error: computed(\n () => guard.error.value ?? verifyError.value ?? sessionKeys.error.value,\n ),\n createPolicy: (scope) =>\n guard.run(() => flow.createPolicy(scope), \"Policy creation failed\"),\n revokePolicy: (policyId) =>\n guard.run(() => flow.revokePolicy(policyId), \"Policy revocation failed\"),\n previewPolicyExecution: flow.previewPolicyExecution,\n signPolicyDigest: flow.signPolicyDigest,\n executePolicy: (policyId, tx) =>\n guard.run(\n () => flow.executePolicy(policyId, tx),\n \"Policy execution failed\",\n ),\n refresh: sessionKeys.refresh,\n clearError: () => {\n guard.reset();\n verifyError.value = null;\n sessionKeys.clearError();\n },\n };\n}\n","import { getSharedSessionKeyManager } from \"@naculus/connect-appkit-core\";\nimport type {\n ScopeCheckResult,\n SessionKeyInfo,\n SessionKeyManager,\n SessionKeyManagerConfig,\n SessionKeyScope,\n SessionKeyTransaction,\n} from \"@naculus/connect-core\";\nimport type { ComputedRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { computed, onScopeDispose, shallowRef, toValue, watch } from \"vue\";\nimport { useActionGuard } from \"./internal/action-guard\";\n\n/**\n * Vue counterparts of the React session-key hooks. The SessionKeyManager —\n * key generation, encryption at rest, scope enforcement, fail-closed signing\n * — is connect-core's; the shared instance and its config guard are\n * appkit-core's. These composables only add reactivity. Private key material\n * never reaches them: signWithSession returns a signature, not a key.\n */\n\nexport interface SessionKeyComposableOptions {\n /** Reuse a caller-owned manager instead of the shared process-wide one. */\n manager?: SessionKeyManager;\n}\n\nfunction resolveManager(\n config: SessionKeyManagerConfig | undefined,\n options: SessionKeyComposableOptions,\n): SessionKeyManager {\n return options.manager ?? getSharedSessionKeyManager(config);\n}\n\n// ─── useSessionKeys ──────────────────────────────────────────────────\n\nexport interface UseSessionKeysReturn {\n sessions: ShallowRef<SessionKeyInfo[]>;\n activeSessions: ComputedRef<SessionKeyInfo[]>;\n loading: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n refresh: () => Promise<void>;\n clearError: () => void;\n storageAvailable: boolean;\n}\n\n/**\n * Lists session keys while a wallet session is connected; an empty list\n * otherwise, as in React. `connected` is the caller's session state.\n */\nexport function useSessionKeys(\n connected: MaybeRefOrGetter<boolean>,\n config?: SessionKeyManagerConfig,\n options: SessionKeyComposableOptions = {},\n): UseSessionKeysReturn {\n const manager = resolveManager(config, options);\n const sessions = shallowRef<SessionKeyInfo[]>([]);\n const loading = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let generation = 0;\n let disposed = false;\n\n const refresh = async (): Promise<void> => {\n const own = ++generation;\n if (!toValue(connected)) {\n sessions.value = [];\n return;\n }\n loading.value = true;\n error.value = null;\n try {\n const keys = await manager.listSessions();\n if (!disposed && own === generation) sessions.value = keys;\n } catch (cause) {\n if (!disposed && own === generation) {\n error.value =\n cause instanceof Error\n ? cause\n : new Error(\"Failed to load session keys\");\n }\n } finally {\n if (!disposed && own === generation) loading.value = false;\n }\n };\n\n watch(\n () => toValue(connected),\n () => {\n void refresh();\n },\n { immediate: true },\n );\n onScopeDispose(() => {\n disposed = true;\n generation++;\n });\n\n return {\n sessions,\n activeSessions: computed(() =>\n sessions.value.filter((s) => s.status === \"active\"),\n ),\n loading,\n error,\n refresh,\n clearError: () => {\n error.value = null;\n },\n storageAvailable: manager.isStorageAvailable(),\n };\n}\n\n// ─── useCreateSessionKey ─────────────────────────────────────────────\n\nexport interface UseCreateSessionKeyReturn {\n createSessionKey: (\n scope?: Partial<SessionKeyScope>,\n signerAddress?: `0x${string}`,\n ) => Promise<SessionKeyInfo>;\n lastCreated: ShallowRef<SessionKeyInfo | null>;\n isCreating: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n clearError: () => void;\n}\n\nexport function useCreateSessionKey(\n config?: SessionKeyManagerConfig,\n options: SessionKeyComposableOptions = {},\n): UseCreateSessionKeyReturn {\n const manager = resolveManager(config, options);\n const guard = useActionGuard();\n const lastCreated = shallowRef<SessionKeyInfo | null>(null);\n return {\n createSessionKey: (scope, signerAddress) =>\n guard.run(async () => {\n const info = await manager.createSessionKey(scope, signerAddress);\n lastCreated.value = info;\n return info;\n }, \"Failed to create session key\"),\n lastCreated,\n isCreating: guard.busy,\n error: guard.error,\n clearError: guard.reset,\n };\n}\n\n// ─── useRevokeSession ────────────────────────────────────────────────\n\nexport interface UseRevokeSessionReturn {\n revokeSession: (sessionId: string) => Promise<void>;\n isRevoking: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n clearError: () => void;\n}\n\n/** Revocation is device-local: a bundle already handed out cannot be recalled. */\nexport function useRevokeSession(\n config?: SessionKeyManagerConfig,\n options: SessionKeyComposableOptions = {},\n): UseRevokeSessionReturn {\n const manager = resolveManager(config, options);\n const guard = useActionGuard();\n return {\n revokeSession: (sessionId) =>\n guard.run(\n () => manager.revokeSession(sessionId),\n \"Failed to revoke session key\",\n ),\n isRevoking: guard.busy,\n error: guard.error,\n clearError: guard.reset,\n };\n}\n\n// ─── useSendWithSession ──────────────────────────────────────────────\n\nexport interface UseSendWithSessionReturn {\n signWithSession: (\n sessionId: string,\n messageHash: `0x${string}`,\n tx: SessionKeyTransaction,\n ) => Promise<`0x${string}`>;\n checkScope: (\n sessionId: string,\n tx: SessionKeyTransaction,\n ) => Promise<ScopeCheckResult>;\n isBusy: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n clearError: () => void;\n}\n\nexport function useSendWithSession(\n config?: SessionKeyManagerConfig,\n options: SessionKeyComposableOptions = {},\n): UseSendWithSessionReturn {\n const manager = resolveManager(config, options);\n const guard = useActionGuard();\n return {\n signWithSession: (sessionId, messageHash, tx) =>\n guard.run(\n () => manager.signWithSessionKey(sessionId, messageHash, tx),\n \"Failed to sign with session key\",\n ),\n checkScope: (sessionId, tx) =>\n guard.run(\n () => manager.checkSessionScope(sessionId, tx),\n \"Failed to check session scope\",\n ),\n isBusy: guard.busy,\n error: guard.error,\n clearError: guard.reset,\n };\n}\n","import {\n bareEvmAddress,\n buildSmartAccountConfig,\n resolveEvmChainId,\n type SmartAccountType,\n} from \"@naculus/connect-appkit-core\";\nimport type {\n Address,\n SmartAccountConfig,\n SmartAccountInfo,\n SmartAccountManager,\n} from \"@naculus/connect-core\";\nimport { WalletError } from \"@naculus/connect-core\";\nimport type { ComputedRef, MaybeRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport {\n computed,\n onScopeDispose,\n shallowRef,\n toValue,\n unref,\n watch,\n} from \"vue\";\nimport { useActionGuard } from \"./internal/action-guard\";\n\n/** What deployWallet needs from the caller: something that sends an EVM transaction. */\nexport type DeployTransactionSender = (transaction: {\n to: Address;\n data: `0x${string}`;\n value: string;\n chainId: string;\n}) => Promise<Address>;\n\nexport interface UseSmartAccountOptions {\n /** Connected EOA (plain or CAIP-10); becomes the smart-account owner. */\n account: MaybeRefOrGetter<string | null | undefined>;\n /** Connected chain (CAIP-2), if any. */\n connectedChainId: MaybeRefOrGetter<string | null | undefined>;\n rpcUrl: MaybeRefOrGetter<string | undefined>;\n bundlerUrl?: MaybeRefOrGetter<string | undefined>;\n chainId?: MaybeRefOrGetter<string | undefined>;\n entryPoint?: Address;\n accountType?: SmartAccountType;\n salt?: bigint;\n /** Required for deployWallet; the connected wallet's sendTransaction. */\n sendTransaction?: MaybeRef<DeployTransactionSender | null | undefined>;\n /** Reuse a caller-owned manager instead of constructing one. */\n manager?: MaybeRefOrGetter<SmartAccountManager | null | undefined>;\n}\n\nexport interface UseSmartAccountReturn {\n address: ShallowRef<Address | null>;\n isDeployed: ShallowRef<boolean>;\n accountInfo: ShallowRef<SmartAccountInfo | null>;\n isLoading: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n /** Null until rpcUrl, chain and owner are all known. */\n config: ComputedRef<SmartAccountConfig | null>;\n createWallet: () => Promise<SmartAccountInfo | null>;\n deployWallet: () => Promise<Address | null>;\n getAddress: () => Promise<Address | null>;\n}\n\n/**\n * Counterfactual smart-account address, deployment state and deployment,\n * mirroring the React hook. Address derivation, factory calldata and the\n * refusal to broadcast from the manager are connect-core's; chain and\n * config decisions are appkit-core's. Deployment is sent through the\n * caller's own transaction sender, never by this composable.\n */\nexport function useSmartAccount(\n options: UseSmartAccountOptions,\n): UseSmartAccountReturn {\n const address = shallowRef<Address | null>(null);\n const isDeployed = shallowRef(false);\n const accountInfo = shallowRef<SmartAccountInfo | null>(null);\n const guard = useActionGuard();\n const managerRef = shallowRef<SmartAccountManager | null>(null);\n let generation = 0;\n let inFlight = false;\n let disposed = false;\n\n const chainId = computed(() =>\n resolveEvmChainId(\n toValue(options.chainId),\n toValue(options.connectedChainId),\n ),\n );\n\n // Build (or adopt) the manager when its inputs change; a stale async\n // import result must not overwrite a newer manager.\n watch(\n [\n () => toValue(options.manager),\n () => toValue(options.rpcUrl),\n () => toValue(options.bundlerUrl),\n () => chainId.value,\n ],\n ([supplied, rpcUrl, bundlerUrl, chain]) => {\n const own = ++generation;\n managerRef.value = null;\n if (supplied) {\n managerRef.value = supplied;\n return;\n }\n if (!rpcUrl || !chain) return;\n import(\"@naculus/connect-core\")\n .then(({ SmartAccountManager }) => {\n if (disposed || own !== generation) return;\n managerRef.value = new SmartAccountManager({\n rpcUrl,\n chainId: chain,\n bundlerClient: { url: bundlerUrl ?? \"\" },\n });\n })\n .catch((cause) => {\n if (disposed || own !== generation) return;\n guard.error.value =\n cause instanceof Error\n ? cause\n : new Error(\"Failed to load account-abstraction module\");\n });\n },\n { immediate: true },\n );\n\n const config = computed<SmartAccountConfig | null>(() => {\n const owner = bareEvmAddress(toValue(options.account));\n const chain = chainId.value;\n if (!owner || !chain || !managerRef.value) return null;\n return buildSmartAccountConfig(owner, chain, {\n accountType: options.accountType,\n entryPoint: options.entryPoint,\n salt: options.salt,\n });\n });\n\n const apply = (info: SmartAccountInfo): void => {\n address.value = info.address;\n isDeployed.value = info.isDeployed;\n accountInfo.value = info;\n };\n\n /**\n * One account operation at a time. State is written only through `commit`,\n * which is a no-op once the config, manager or scope that started the\n * operation has been replaced — so a slow result for a previous account or\n * chain cannot overwrite the current one, not even briefly.\n */\n const operate = async <T>(\n action: (\n manager: SmartAccountManager,\n cfg: SmartAccountConfig,\n commit: (write: () => void) => void,\n ) => Promise<T>,\n fallback: string,\n ): Promise<T | null> => {\n const cfg = config.value;\n const manager = managerRef.value;\n if (!cfg || !manager) {\n guard.error.value = new Error(\"Smart account not configured\");\n return null;\n }\n if (inFlight) {\n guard.error.value = new Error(\n \"Smart account operation already in progress\",\n );\n return null;\n }\n inFlight = true;\n const own = generation;\n const current = () => !disposed && own === generation;\n const commit = (write: () => void): void => {\n if (current()) write();\n };\n try {\n return await guard.run(async () => {\n const result = await action(manager, cfg, commit);\n return current() ? result : null;\n }, fallback);\n } catch {\n return null;\n } finally {\n inFlight = false;\n }\n };\n\n const createWallet = () =>\n operate(async (manager, cfg, commit) => {\n const info = await manager.createAccount(cfg);\n commit(() => apply(info));\n return info;\n }, \"Failed to create smart account\");\n\n const deployWallet = () =>\n operate(async (manager, cfg, commit) => {\n const send = unref(options.sendTransaction);\n if (!send) {\n throw new WalletError(\n \"wallet_unavailable\",\n \"deployWallet needs the connected wallet's sendTransaction\",\n );\n }\n const before = await manager.createAccount(cfg);\n if (before.isDeployed) {\n commit(() => apply(before));\n return before.address;\n }\n // Manager builds the factory call; the caller's wallet broadcasts it.\n const deployTx = await manager.getDeployCallData(cfg);\n const hash = await send({\n to: deployTx.to,\n data: deployTx.data,\n value: deployTx.value.toString(),\n chainId: cfg.chainId,\n });\n const after = await manager.createAccount(cfg);\n commit(() => apply(after));\n return hash;\n }, \"Failed to deploy smart account\");\n\n const getAddress = () =>\n operate(async (manager, cfg, commit) => {\n const addr = await manager.getAccountAddress(cfg);\n commit(() => {\n address.value = addr;\n });\n return addr;\n }, \"Failed to get smart account address\");\n\n onScopeDispose(() => {\n disposed = true;\n generation++;\n });\n\n return {\n address,\n isDeployed,\n accountInfo,\n isLoading: guard.busy,\n error: guard.error,\n config,\n createWallet,\n deployWallet,\n getAddress,\n };\n}\n","import {\n bareEvmAddress,\n buildSmartAccountConfig,\n resolveUserOpChain,\n type SmartAccountType,\n} from \"@naculus/connect-appkit-core\";\nimport type {\n Address,\n Call,\n Hex,\n SendUserOpOptions,\n UserOperationReceipt,\n UserOperationResponse,\n} from \"@naculus/connect-core\";\nimport { WalletError } from \"@naculus/connect-core\";\nimport type { MaybeRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { onScopeDispose, shallowRef, toValue, unref } from \"vue\";\n\n/** Signs the 32-byte UserOperation hash. Raw or EIP-191, per signerMode. */\nexport type UserOpSigner = (hash: Hex) => Promise<Hex> | Hex;\n\nexport interface UseSendUserOperationOptions {\n account: MaybeRefOrGetter<string | null | undefined>;\n connectedChainId: MaybeRefOrGetter<string | null | undefined>;\n rpcUrl: MaybeRefOrGetter<string | undefined>;\n bundlerUrl: MaybeRefOrGetter<string | undefined>;\n chainId?: MaybeRefOrGetter<string | undefined>;\n entryPoint?: Address;\n accountType?: SmartAccountType;\n salt?: bigint;\n /** Override the connected account as the smart-account owner. */\n owner?: MaybeRefOrGetter<Address | undefined>;\n /**\n * Required. Vue has no wallet provider to fall back to, so the caller\n * supplies the signer for the UserOperation hash. Its output is validated\n * by the manager, not trusted.\n */\n signer: MaybeRef<UserOpSigner>;\n signerMode?: \"raw\" | \"eip191\";\n}\n\nexport interface UseSendUserOperationReturn {\n sendUserOp: (\n calls: Call[],\n opts?: SendUserOpOptions,\n ) => Promise<UserOperationResponse | null>;\n userOpHash: ShallowRef<Hex | null>;\n receipt: ShallowRef<UserOperationReceipt | null>;\n isPending: ShallowRef<boolean>;\n isEstimating: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n reset: () => void;\n}\n\n/**\n * Build, sign and submit one UserOperation, mirroring the React hook.\n * Preconditions fail closed before anything is signed: configured URLs,\n * at least one call, a resolvable chain that matches the connected one, an\n * owner address. Only one operation may be in flight; a result for a\n * superseded request is dropped.\n */\nexport function useSendUserOperation(\n options: UseSendUserOperationOptions,\n): UseSendUserOperationReturn {\n const userOpHash = shallowRef<Hex | null>(null);\n const receipt = shallowRef<UserOperationReceipt | null>(null);\n const isPending = shallowRef(false);\n const isEstimating = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let requestId = 0;\n let inFlight = false;\n let disposed = false;\n\n const fail = (cause: Error): null => {\n error.value = cause;\n return null;\n };\n\n const sendUserOp = async (\n calls: Call[],\n opts?: SendUserOpOptions,\n ): Promise<UserOperationResponse | null> => {\n const rpcUrl = toValue(options.rpcUrl);\n const bundlerUrl = toValue(options.bundlerUrl);\n if (!rpcUrl) return fail(new Error(\"RPC URL not configured\"));\n if (!bundlerUrl) return fail(new Error(\"Bundler URL not configured\"));\n if (!calls.length) return fail(new Error(\"At least one call is required\"));\n if (inFlight) {\n return fail(new Error(\"A UserOperation is already in progress\"));\n }\n const owner = bareEvmAddress(\n toValue(options.owner) ?? toValue(options.account),\n );\n if (!owner) {\n return fail(\n new WalletError(\"wallet_unavailable\", \"No EVM account found\"),\n );\n }\n let targetChainId: string;\n try {\n targetChainId = resolveUserOpChain(\n toValue(options.chainId),\n toValue(options.connectedChainId),\n );\n } catch (chainError) {\n return fail(chainError as Error);\n }\n const signer = unref(options.signer);\n\n const own = ++requestId;\n inFlight = true;\n isPending.value = true;\n isEstimating.value = true;\n error.value = null;\n userOpHash.value = null;\n receipt.value = null;\n try {\n const { SmartAccountManager } = await import(\"@naculus/connect-core\");\n const manager = new SmartAccountManager({\n rpcUrl,\n bundlerClient: { url: bundlerUrl },\n chainId: targetChainId,\n signer,\n signerMode: options.signerMode ?? \"eip191\",\n });\n const config = buildSmartAccountConfig(owner, targetChainId, {\n accountType: options.accountType,\n entryPoint: options.entryPoint,\n salt: options.salt,\n });\n const response = await manager.sendUserOperation(config, calls, opts);\n if (disposed || own !== requestId) return null;\n isEstimating.value = false;\n userOpHash.value = response.userOpHash;\n void manager\n .getUserOperationReceipt(response.userOpHash)\n .then((next) => {\n if (!disposed && own === requestId) receipt.value = next;\n })\n .catch(() => undefined);\n return response;\n } catch (cause) {\n if (disposed || own !== requestId) return null;\n return fail(\n cause instanceof Error\n ? cause\n : new Error(\"Failed to send UserOperation\"),\n );\n } finally {\n inFlight = false;\n if (!disposed && own === requestId) {\n isPending.value = false;\n isEstimating.value = false;\n }\n }\n };\n\n /**\n * Clears published state and drops the in-flight operation's future\n * writes. Deliberately does not unlock single-flight: the operation may\n * still be signing or broadcasting, and a second sendUserOp meanwhile\n * would be a second on-chain side effect.\n */\n const reset = (): void => {\n requestId++;\n userOpHash.value = null;\n receipt.value = null;\n isPending.value = false;\n isEstimating.value = false;\n error.value = null;\n };\n\n onScopeDispose(() => {\n disposed = true;\n requestId++;\n });\n\n return {\n sendUserOp,\n userOpHash,\n receipt,\n isPending,\n isEstimating,\n error,\n reset,\n };\n}\n","import {\n fetchUserOperationReceipt,\n InvalidUserOperationReceiptError,\n} from \"@naculus/connect-appkit-core\";\nimport type { Hex, UserOperationReceipt } from \"@naculus/connect-core\";\nimport type { MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { onScopeDispose, shallowRef, toValue } from \"vue\";\n\nexport type UserOpStatus =\n | \"idle\"\n | \"pending\"\n | \"confirmed\"\n | \"failed\"\n | \"not_found\";\n\nexport interface UseUserOpStatusOptions {\n bundlerUrl: MaybeRefOrGetter<string | undefined>;\n /** Poll interval in ms (default 2000). */\n pollInterval?: number;\n /** Attempts before giving up as not_found (default 30). */\n maxRetries?: number;\n}\n\nexport interface UseUserOpStatusReturn {\n status: ShallowRef<UserOpStatus>;\n receipt: ShallowRef<UserOperationReceipt | null>;\n userOpHash: ShallowRef<Hex | null>;\n error: ShallowRef<Error | null>;\n isPolling: ShallowRef<boolean>;\n elapsedMs: ShallowRef<number>;\n attempts: ShallowRef<number>;\n start: (hash: Hex) => void;\n stop: () => void;\n reset: () => void;\n}\n\n/**\n * Poll a bundler for a UserOperation receipt, mirroring the React hook.\n * Receipt validation is appkit-core's: a malformed receipt ends polling as\n * not_found rather than being retried or banked; transport errors retry up\n * to maxRetries. A start() or dispose aborts the in-flight request.\n */\nexport function useUserOpStatus(\n options: UseUserOpStatusOptions,\n): UseUserOpStatusReturn {\n const status = shallowRef<UserOpStatus>(\"idle\");\n const receipt = shallowRef<UserOperationReceipt | null>(null);\n const userOpHash = shallowRef<Hex | null>(null);\n const error = shallowRef<Error | null>(null);\n const isPolling = shallowRef(false);\n const elapsedMs = shallowRef(0);\n const attempts = shallowRef(0);\n const pollInterval = options.pollInterval ?? 2000;\n const maxRetries = options.maxRetries ?? 30;\n\n let generation = 0;\n let startedAt = 0;\n let ticker: ReturnType<typeof setInterval> | null = null;\n let timer: ReturnType<typeof setTimeout> | null = null;\n let controller: AbortController | null = null;\n\n const clearTimers = (): void => {\n if (ticker) clearInterval(ticker);\n if (timer) clearTimeout(timer);\n ticker = null;\n timer = null;\n };\n\n const finish = (next: UserOpStatus, cause: Error | null): void => {\n status.value = next;\n error.value = cause;\n isPolling.value = false;\n clearTimers();\n };\n\n const poll = async (hash: Hex, own: number): Promise<void> => {\n const bundlerUrl = toValue(options.bundlerUrl);\n if (!bundlerUrl || own !== generation) return;\n const attempt = ++attempts.value;\n const abort = new AbortController();\n controller = abort;\n try {\n const next = await fetchUserOperationReceipt(\n bundlerUrl,\n hash,\n abort.signal,\n );\n if (own !== generation) return;\n if (next) {\n receipt.value = next;\n finish(next.success ? \"confirmed\" : \"failed\", null);\n return;\n }\n status.value = \"pending\";\n if (attempt <= maxRetries) {\n timer = setTimeout(() => void poll(hash, own), pollInterval);\n } else {\n finish(\n \"not_found\",\n new Error(\"UserOperation not included after maximum retries\"),\n );\n }\n } catch (cause) {\n if (own !== generation || abort.signal.aborted) return;\n const next =\n cause instanceof Error\n ? cause\n : new Error(\"Unknown bundler response failure\");\n if (next instanceof InvalidUserOperationReceiptError) {\n finish(\"not_found\", next);\n return;\n }\n if (attempt <= maxRetries) {\n timer = setTimeout(() => void poll(hash, own), pollInterval);\n } else {\n finish(\n \"not_found\",\n new Error(\n `UserOperation status unavailable after ${attempt} attempt${attempt === 1 ? \"\" : \"s\"}: ${next.message}`,\n ),\n );\n }\n } finally {\n if (controller === abort) controller = null;\n }\n };\n\n const start = (hash: Hex): void => {\n const own = ++generation;\n controller?.abort();\n controller = null;\n clearTimers();\n userOpHash.value = hash;\n receipt.value = null;\n error.value = null;\n attempts.value = 0;\n elapsedMs.value = 0;\n if (!toValue(options.bundlerUrl)) {\n finish(\"not_found\", new Error(\"Bundler URL not configured\"));\n return;\n }\n status.value = \"pending\";\n isPolling.value = true;\n startedAt = Date.now();\n ticker = setInterval(() => {\n elapsedMs.value = Date.now() - startedAt;\n }, 1000);\n void poll(hash, own);\n };\n\n const stop = (): void => {\n generation++;\n controller?.abort();\n controller = null;\n clearTimers();\n isPolling.value = false;\n };\n\n const reset = (): void => {\n stop();\n status.value = \"idle\";\n receipt.value = null;\n userOpHash.value = null;\n error.value = null;\n attempts.value = 0;\n elapsedMs.value = 0;\n };\n\n onScopeDispose(stop);\n\n return {\n status,\n receipt,\n userOpHash,\n error,\n isPolling,\n elapsedMs,\n attempts,\n start,\n stop,\n reset,\n };\n}\n","import type { ComputedRef, MaybeRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { computed, onScopeDispose, shallowRef, toValue, unref } from \"vue\";\nimport type {\n CallsStatus,\n ExecutionStrategy,\n GetCallsStatusAction,\n SendCallsAction,\n SendCallsOptions,\n ShowCallsStatusAction,\n} from \"./eip5792\";\n\nexport type SendCallsStatus =\n | \"idle\"\n | \"awaiting_approval\"\n | \"submitted\"\n | \"failed\";\n\nexport interface UseSendCallsOptions {\n sendCalls: MaybeRef<SendCallsAction>;\n getCallsStatus: MaybeRef<GetCallsStatusAction>;\n showCallsStatus: MaybeRef<ShowCallsStatusAction>;\n execution?: MaybeRefOrGetter<ExecutionStrategy | null>;\n}\n\nexport interface UseSendCallsReturn {\n sendCalls: SendCallsAction;\n getCallsStatus: GetCallsStatusAction;\n showCallsStatus: ShowCallsStatusAction;\n status: ShallowRef<SendCallsStatus>;\n error: ShallowRef<Error | null>;\n batchHash: ShallowRef<string | null>;\n callsStatus: ShallowRef<CallsStatus | null>;\n execution: ComputedRef<ExecutionStrategy | null>;\n isSending: ComputedRef<boolean>;\n reset: () => void;\n}\n\n/**\n * Reactive state around caller-owned EIP-5792 actions and execution policy.\n * This deliberately keeps two publication generations instead of using the\n * shared action guard: sending and status reads are independent channels, and\n * a late completion in either channel must not suppress or overwrite the\n * newest completion in the other.\n */\nexport function useSendCalls(options: UseSendCallsOptions): UseSendCallsReturn {\n const status = shallowRef<SendCallsStatus>(\"idle\");\n const error = shallowRef<Error | null>(null);\n const batchHash = shallowRef<string | null>(null);\n const callsStatus = shallowRef<CallsStatus | null>(null);\n let sendGeneration = 0;\n let statusGeneration = 0;\n let disposed = false;\n\n const sendCalls: SendCallsAction = async (calls, input) => {\n const invoke = unref(options.sendCalls);\n const own = ++sendGeneration;\n status.value = \"awaiting_approval\";\n error.value = null;\n batchHash.value = null;\n try {\n const hash = await invoke(calls, input);\n if (!disposed && own === sendGeneration) {\n status.value = \"submitted\";\n batchHash.value = hash;\n }\n return hash;\n } catch (cause) {\n const normalized =\n cause instanceof Error ? cause : new Error(\"sendCalls failed\");\n if (!disposed && own === sendGeneration) {\n status.value = \"failed\";\n error.value = normalized;\n }\n throw normalized;\n }\n };\n\n const getCallsStatus: GetCallsStatusAction = async (hash) => {\n const invoke = unref(options.getCallsStatus);\n const own = ++statusGeneration;\n const result = await invoke(hash);\n if (!disposed && own === statusGeneration) callsStatus.value = result;\n return result;\n };\n\n const showCallsStatus: ShowCallsStatusAction = (hash) =>\n unref(options.showCallsStatus)(hash);\n\n const reset = (): void => {\n sendGeneration++;\n statusGeneration++;\n status.value = \"idle\";\n error.value = null;\n batchHash.value = null;\n callsStatus.value = null;\n };\n\n onScopeDispose(() => {\n disposed = true;\n sendGeneration++;\n statusGeneration++;\n });\n\n return {\n sendCalls,\n getCallsStatus,\n showCallsStatus,\n status,\n error,\n batchHash,\n callsStatus,\n execution: computed(() => toValue(options.execution) ?? null),\n isSending: computed(() => status.value === \"awaiting_approval\"),\n reset,\n };\n}\n","import type { ComputedRef, MaybeRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { computed, toValue, unref } from \"vue\";\nimport { useActionGuard } from \"./internal/action-guard\";\n\nexport interface EmbeddedWalletAccountView {\n namespace: string;\n address: string;\n derivationPath?: string;\n}\n\nexport interface EmbeddedWalletView {\n accounts: EmbeddedWalletAccountView[];\n activeNamespace: string;\n createdAt: number;\n chainId?: string;\n version?: 2;\n recoveryAvailable: boolean;\n readonly address?: string;\n}\n\nexport interface UseEmbeddedWalletOptions<TWalletData, TSecurityReport> {\n wallet: MaybeRefOrGetter<EmbeddedWalletView | null>;\n backupPending: MaybeRefOrGetter<boolean>;\n storageSecurityLevel: MaybeRefOrGetter<number>;\n securityReport: MaybeRefOrGetter<TSecurityReport | null>;\n connectEmbedded: MaybeRef<() => Promise<void>>;\n restoreWallet: MaybeRef<() => Promise<boolean>>;\n generateWallet: MaybeRef<() => Promise<TWalletData | null>>;\n importFromMnemonic: MaybeRef<\n (mnemonic: string) => Promise<TWalletData | null>\n >;\n importFromPrivateKey: MaybeRef<\n (privateKey: string) => Promise<TWalletData | null>\n >;\n wipe: MaybeRef<() => Promise<void>>;\n setActiveNamespace: MaybeRef<(namespace: string) => void>;\n backfillAccounts: MaybeRef<() => Promise<EmbeddedWalletAccountView[]>>;\n getSeedPhrase: MaybeRef<() => string | null>;\n getPrivateKey: MaybeRef<() => string | null>;\n confirmBackup: MaybeRef<() => void>;\n}\n\nexport interface UseEmbeddedWalletReturn<TWalletData, TSecurityReport> {\n wallet: ComputedRef<EmbeddedWalletView | null>;\n hasWallet: ComputedRef<boolean>;\n address: ComputedRef<string | null>;\n accounts: ComputedRef<EmbeddedWalletAccountView[]>;\n activeNamespace: ComputedRef<string | null>;\n backupPending: ComputedRef<boolean>;\n storageSecurityLevel: ComputedRef<number>;\n securityReport: ComputedRef<TSecurityReport | null>;\n connectEmbedded: () => Promise<void>;\n restoreWallet: () => Promise<boolean>;\n generateWallet: () => Promise<TWalletData | null>;\n importFromMnemonic: (mnemonic: string) => Promise<TWalletData | null>;\n importFromPrivateKey: (privateKey: string) => Promise<TWalletData | null>;\n wipe: () => Promise<void>;\n setActiveNamespace: (namespace: string) => void;\n backfillAccounts: () => Promise<EmbeddedWalletAccountView[]>;\n getSeedPhrase: () => string | null;\n getPrivateKey: () => string | null;\n confirmBackup: () => void;\n isBusy: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n clearError: () => void;\n}\n\n/** Reactive view over caller-owned embedded-wallet state and actions. */\nexport function useEmbeddedWallet<\n TWalletData = unknown,\n TSecurityReport = unknown,\n>(\n options: UseEmbeddedWalletOptions<TWalletData, TSecurityReport>,\n): UseEmbeddedWalletReturn<TWalletData, TSecurityReport> {\n const guard = useActionGuard();\n const run = <T>(action: () => Promise<T>): Promise<T> =>\n guard.run(action, \"Embedded wallet action failed\");\n const wallet = computed(() => toValue(options.wallet));\n return {\n wallet,\n hasWallet: computed(() => wallet.value !== null),\n address: computed(() => wallet.value?.address ?? null),\n accounts: computed(() => wallet.value?.accounts ?? []),\n activeNamespace: computed(() => wallet.value?.activeNamespace ?? null),\n backupPending: computed(() => toValue(options.backupPending)),\n storageSecurityLevel: computed(() => toValue(options.storageSecurityLevel)),\n securityReport: computed(() => toValue(options.securityReport)),\n connectEmbedded: () => run(() => unref(options.connectEmbedded)()),\n restoreWallet: () => run(() => unref(options.restoreWallet)()),\n generateWallet: () => run(() => unref(options.generateWallet)()),\n importFromMnemonic: (value) =>\n run(() => unref(options.importFromMnemonic)(value)),\n importFromPrivateKey: (value) =>\n run(() => unref(options.importFromPrivateKey)(value)),\n wipe: () => run(() => unref(options.wipe)()),\n setActiveNamespace: (value) => unref(options.setActiveNamespace)(value),\n backfillAccounts: () => run(() => unref(options.backfillAccounts)()),\n getSeedPhrase: () => unref(options.getSeedPhrase)(),\n getPrivateKey: () => unref(options.getPrivateKey)(),\n confirmBackup: () => unref(options.confirmBackup)(),\n isBusy: guard.busy,\n error: guard.error,\n clearError: guard.clearError,\n };\n}\n","import type { MaybeRef, ShallowRef } from \"vue\";\nimport type { SiwxSignInAction } from \"./siwx\";\nimport { useSignInWithX } from \"./useSignInWithX\";\n\nexport interface UseSIWxLoginReturn {\n signIn: SiwxSignInAction;\n isSigningIn: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n clearError: () => void;\n}\n\n/** Login-shaped view of the shared caller-owned SIWX sign-in shell. */\nexport function useSIWxLogin(\n action: MaybeRef<SiwxSignInAction>,\n): UseSIWxLoginReturn {\n const state = useSignInWithX(action);\n return {\n signIn: state.signIn,\n isSigningIn: state.isSigningIn,\n error: state.error,\n clearError: state.clearError,\n };\n}\n","import type { ComputedRef, MaybeRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { computed, toValue, unref } from \"vue\";\nimport { useActionGuard } from \"./internal/action-guard\";\nimport type { SiwxSessionLike, SiwxSignInOptions } from \"./siwx\";\n\nexport interface UseSIWxSessionOptions {\n session: MaybeRefOrGetter<SiwxSessionLike | null>;\n isRestoring: MaybeRefOrGetter<boolean>;\n isExpired: MaybeRefOrGetter<boolean>;\n timeUntilExpiry: MaybeRefOrGetter<number | null>;\n signIn: MaybeRef<(options?: SiwxSignInOptions) => Promise<SiwxSessionLike>>;\n signOut: MaybeRef<() => Promise<void>>;\n refresh: MaybeRef<() => Promise<SiwxSessionLike>>;\n}\n\nexport interface UseSIWxSessionReturn {\n session: ComputedRef<SiwxSessionLike | null>;\n isAuthenticated: ComputedRef<boolean>;\n isRestoring: ComputedRef<boolean>;\n isSigningIn: ShallowRef<boolean>;\n isExpired: ComputedRef<boolean>;\n timeUntilExpiry: ComputedRef<number | null>;\n signIn: (options?: SiwxSignInOptions) => Promise<SiwxSessionLike>;\n signOut: () => Promise<void>;\n refresh: () => Promise<SiwxSessionLike>;\n error: ShallowRef<Error | null>;\n clearError: () => void;\n}\n\n/** Reactive view over caller-owned SIWX session lifecycle and policy state. */\nexport function useSIWxSession(\n options: UseSIWxSessionOptions,\n): UseSIWxSessionReturn {\n const guard = useActionGuard();\n return {\n session: computed(() => toValue(options.session)),\n isAuthenticated: computed(\n () => toValue(options.session) !== null && !toValue(options.isExpired),\n ),\n isRestoring: computed(() => toValue(options.isRestoring)),\n isSigningIn: guard.busy,\n isExpired: computed(() => toValue(options.isExpired)),\n timeUntilExpiry: computed(() => toValue(options.timeUntilExpiry)),\n signIn: (input) =>\n guard.run(() => unref(options.signIn)(input), \"SIWX sign-in failed\"),\n signOut: async () => {\n await unref(options.signOut)();\n guard.clearError();\n },\n refresh: () =>\n guard.run(() => unref(options.refresh)(), \"Session refresh failed\"),\n error: guard.error,\n clearError: guard.clearError,\n };\n}\n","import type { ComputedRef, MaybeRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { computed, toValue, unref } from \"vue\";\nimport { useActionGuard } from \"./internal/action-guard\";\nimport type { SiwxResult, SiwxSignInAction } from \"./siwx\";\n\nexport interface UseSiwxAuthSessionOptions {\n result: MaybeRefOrGetter<SiwxResult | null>;\n isRestoring: MaybeRefOrGetter<boolean>;\n signIn: MaybeRef<SiwxSignInAction>;\n signOut: MaybeRef<() => Promise<void>>;\n}\n\nexport interface UseSiwxAuthSessionReturn {\n isSignedIn: ComputedRef<boolean>;\n isRestoring: ComputedRef<boolean>;\n siwxResult: ComputedRef<SiwxResult | null>;\n isSigningIn: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n signIn: SiwxSignInAction;\n signOut: () => Promise<void>;\n clearError: () => void;\n}\n\n/** Reactive auth view over caller-owned, already-validated SIWX persistence. */\nexport function useSiwxAuthSession(\n options: UseSiwxAuthSessionOptions,\n): UseSiwxAuthSessionReturn {\n const guard = useActionGuard();\n\n const signIn: SiwxSignInAction = (input) =>\n guard.run(() => unref(options.signIn)(input), \"SIWX sign-in failed\");\n\n // Signing out supersedes any sign-in still in flight: its later completion\n // or failure must not republish.\n const signOut = async (): Promise<void> => {\n guard.reset();\n await unref(options.signOut)();\n guard.clearError();\n };\n\n const siwxResult = computed(() => toValue(options.result));\n return {\n isSignedIn: computed(() => siwxResult.value !== null),\n isRestoring: computed(() => toValue(options.isRestoring)),\n siwxResult,\n isSigningIn: guard.busy,\n error: guard.error,\n signIn,\n signOut,\n clearError: guard.clearError,\n };\n}\n","import { bareEvmAddress } from \"@naculus/connect-appkit-core\";\nimport { formatUnits } from \"@naculus/connect-core\";\nimport type { ComputedRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { computed, onScopeDispose, shallowRef, toValue, watch } from \"vue\";\n\n/** Minimal read-only contract; a viem PublicClient satisfies it. */\nexport interface NativeBalanceReader {\n getBalance(args: { address: `0x${string}` }): Promise<bigint>;\n}\n\nexport interface UseBalanceOptions {\n /** Native currency decimals. Default 18. */\n decimals?: MaybeRefOrGetter<number | null | undefined>;\n /**\n * Native currency symbol, or null when it is not known. Null rather than\n * \"ETH\": a wrong unit beside the number is worse than no unit.\n */\n symbol?: MaybeRefOrGetter<string | null | undefined>;\n /** Auto-refresh interval in milliseconds. Default: no auto-refresh. */\n refreshInterval?: MaybeRefOrGetter<number | null | undefined>;\n}\n\nexport interface UseBalanceReturn {\n /** Raw balance in wei as a decimal string, or null when unread. */\n balance: ShallowRef<string | null>;\n /** Human-readable balance in the native unit, or null when unread. */\n formatted: ComputedRef<string | null>;\n symbol: ComputedRef<string | null>;\n isFetching: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n refetch: () => Promise<void>;\n}\n\n/**\n * Native balance of an EVM account through a caller-owned reader.\n *\n * Vue has no AppKit provider, so the client is explicit. Unlike the React\n * hook this does not fetch a USD price: that is an outward HTTP call the\n * caller did not hand us, and it belongs beside the reader they did.\n */\nexport function useBalance(\n account: MaybeRefOrGetter<string | null | undefined>,\n client: MaybeRefOrGetter<NativeBalanceReader | null | undefined>,\n options: UseBalanceOptions = {},\n): UseBalanceReturn {\n const balance = shallowRef<string | null>(null);\n const isFetching = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let generation = 0;\n let disposed = false;\n let timer: ReturnType<typeof setInterval> | null = null;\n\n const refetch = async (): Promise<void> => {\n const reader = toValue(client);\n const address = bareEvmAddress(toValue(account));\n const own = ++generation;\n if (!reader || !address) {\n balance.value = null;\n error.value = null;\n isFetching.value = false;\n return;\n }\n isFetching.value = true;\n error.value = null;\n try {\n const next = await reader.getBalance({ address });\n if (disposed || own !== generation) return;\n balance.value = next.toString();\n } catch (cause) {\n if (disposed || own !== generation) return;\n // Cleared rather than left stale: a balance shown next to an error\n // reads as the current balance, and it is not.\n balance.value = null;\n error.value =\n cause instanceof Error ? cause : new Error(\"Balance read failed\");\n } finally {\n if (!disposed && own === generation) isFetching.value = false;\n }\n };\n\n const stopTimer = (): void => {\n if (timer) clearInterval(timer);\n timer = null;\n };\n\n watch(\n [\n () => toValue(account),\n () => toValue(client),\n () => toValue(options.refreshInterval) ?? 0,\n ],\n ([, , interval]) => {\n stopTimer();\n void refetch();\n if (interval > 0) timer = setInterval(() => void refetch(), interval);\n },\n { immediate: true },\n );\n\n onScopeDispose(() => {\n disposed = true;\n generation++;\n stopTimer();\n });\n\n return {\n balance,\n formatted: computed(() =>\n balance.value === null\n ? null\n : formatUnits(BigInt(balance.value), toValue(options.decimals) ?? 18),\n ),\n symbol: computed(() => toValue(options.symbol) ?? null),\n isFetching,\n error,\n refetch,\n };\n}\n","import {\n type GetRouteQuotes,\n isQuotableInput,\n type RouteQuote,\n type RouteQuoteInput,\n} from \"@naculus/connect-appkit-core\";\nimport type { MaybeRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { onScopeDispose, shallowRef, toValue, unref, watch } from \"vue\";\n\nexport interface UseRouteQuoteOptions {\n /** Debounce before auto-fetching after an input change (default 300 ms). */\n debounceMs?: number;\n}\n\nexport interface UseRouteQuoteReturn {\n quotes: ShallowRef<RouteQuote[]>;\n loading: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n refresh: () => Promise<void>;\n clear: () => void;\n}\n\n/**\n * Debounced cross-chain route quotes through a caller-supplied quote\n * function, mirroring the React hook. Which inputs are quotable is decided\n * in appkit-core; this file debounces and drops late results.\n */\nexport function useRouteQuote(\n input: MaybeRefOrGetter<RouteQuoteInput>,\n getQuotes?: MaybeRef<GetRouteQuotes | null | undefined>,\n options: UseRouteQuoteOptions = {},\n): UseRouteQuoteReturn {\n const quotes = shallowRef<RouteQuote[]>([]);\n const loading = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let generation = 0;\n let disposed = false;\n let timer: ReturnType<typeof setTimeout> | null = null;\n\n const clearTimer = (): void => {\n if (timer) clearTimeout(timer);\n timer = null;\n };\n\n const fetchQuotes = async (): Promise<void> => {\n const current = toValue(input);\n const fn = unref(getQuotes);\n const own = ++generation;\n if (!isQuotableInput(current)) {\n quotes.value = [];\n return;\n }\n if (!fn) return;\n loading.value = true;\n error.value = null;\n try {\n const result = await fn(\n current.fromChain,\n current.toChain,\n current.fromToken,\n current.amount,\n current.options,\n current.toToken,\n );\n if (disposed || own !== generation) return;\n quotes.value = result;\n } catch (cause) {\n if (disposed || own !== generation) return;\n error.value = cause instanceof Error ? cause : new Error(String(cause));\n quotes.value = [];\n } finally {\n if (!disposed && own === generation) loading.value = false;\n }\n };\n\n watch(\n [\n () => toValue(input).fromChain,\n () => toValue(input).toChain,\n () => toValue(input).fromToken,\n () => toValue(input).toToken,\n () => toValue(input).amount,\n () => unref(getQuotes),\n ],\n ([fromChain, toChain, fromToken, , amount]) => {\n clearTimer();\n if (!fromChain || !toChain || !fromToken || !amount) {\n quotes.value = [];\n return;\n }\n timer = setTimeout(() => {\n timer = null;\n void fetchQuotes();\n }, options.debounceMs ?? 300);\n },\n { immediate: true },\n );\n\n onScopeDispose(() => {\n disposed = true;\n generation++;\n clearTimer();\n });\n\n return {\n quotes,\n loading,\n error,\n refresh: fetchQuotes,\n clear: () => {\n clearTimer();\n generation++;\n quotes.value = [];\n error.value = null;\n loading.value = false;\n },\n };\n}\n","import {\n type CompareCosts,\n type CompareCostsInput,\n type CostComparison,\n compareCostsKey,\n} from \"@naculus/connect-appkit-core\";\nimport type { MaybeRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { onScopeDispose, shallowRef, toValue, unref, watch } from \"vue\";\n\nexport interface UseCompareCostsReturn {\n comparisons: ShallowRef<CostComparison[]>;\n loading: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n refresh: () => Promise<void>;\n}\n\n/**\n * Compare an operation's cost across chains through a caller-supplied\n * function, mirroring the React hook. Re-fetches when the input's *value*\n * changes (appkit-core's `compareCostsKey`), not when a new array or object\n * with the same content is passed; only the newest request may write.\n */\nexport function useCompareCosts(\n input: MaybeRefOrGetter<CompareCostsInput>,\n compareCosts?: MaybeRef<CompareCosts | null | undefined>,\n): UseCompareCostsReturn {\n const comparisons = shallowRef<CostComparison[]>([]);\n const loading = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let generation = 0;\n let disposed = false;\n\n const fetchComparisons = async (): Promise<void> => {\n const { operation, chains, options } = toValue(input);\n const fn = unref(compareCosts);\n const own = ++generation;\n if (!chains || chains.length === 0) {\n comparisons.value = [];\n return;\n }\n if (!fn) return;\n loading.value = true;\n error.value = null;\n try {\n const result = await fn(operation, chains, options);\n if (disposed || own !== generation) return;\n comparisons.value = result;\n } catch (cause) {\n if (disposed || own !== generation) return;\n error.value = cause instanceof Error ? cause : new Error(String(cause));\n comparisons.value = [];\n } finally {\n if (!disposed && own === generation) loading.value = false;\n }\n };\n\n watch(\n [() => compareCostsKey(toValue(input)), () => unref(compareCosts)],\n () => {\n void fetchComparisons();\n },\n { immediate: true },\n );\n\n onScopeDispose(() => {\n disposed = true;\n generation++;\n });\n\n return { comparisons, loading, error, refresh: fetchComparisons };\n}\n","import {\n type ExecutableQuote,\n type ExecuteRoute,\n type ExecuteRouteError,\n type ExecuteRouteOptions,\n type ExecuteRouteResult,\n toExecuteRouteError,\n validateRouteRecipient,\n} from \"@naculus/connect-appkit-core\";\nimport type { MaybeRef, ShallowRef } from \"vue\";\nimport { onScopeDispose, shallowRef, unref } from \"vue\";\n\nexport interface UseExecuteRouteReturn {\n execute: (\n quote: ExecutableQuote,\n recipient: string,\n options?: ExecuteRouteOptions,\n ) => Promise<ExecuteRouteResult | null>;\n executing: ShallowRef<boolean>;\n result: ShallowRef<ExecuteRouteResult | null>;\n error: ShallowRef<ExecuteRouteError | null>;\n reset: () => void;\n}\n\n/**\n * Execute a quoted route once through a caller-supplied executor, mirroring\n * the React hook. The recipient check and error shape are appkit-core's. A\n * second call while one is in flight is refused, and `reset()` deliberately\n * does not unlock that guard: the first request is still out there. This is a\n * side-effect single-flight contract, not the shared action guard's\n * latest-error publication contract, so it intentionally remains local.\n */\nexport function useExecuteRoute(\n executeRoute?: MaybeRef<ExecuteRoute | null | undefined>,\n): UseExecuteRouteReturn {\n const executing = shallowRef(false);\n const result = shallowRef<ExecuteRouteResult | null>(null);\n const error = shallowRef<ExecuteRouteError | null>(null);\n let inFlight = false;\n let disposed = false;\n\n const execute = async (\n quote: ExecutableQuote,\n recipient: string,\n options?: ExecuteRouteOptions,\n ): Promise<ExecuteRouteResult | null> => {\n const fn = unref(executeRoute);\n if (!fn) {\n error.value = {\n code: \"no_executor\",\n message: \"No executeRoute function provided\",\n };\n result.value = null;\n return null;\n }\n const recipientError = validateRouteRecipient(quote, recipient);\n if (recipientError) {\n error.value = recipientError;\n result.value = null;\n return null;\n }\n if (inFlight) {\n error.value = {\n code: \"execution_in_progress\",\n message: \"A route execution is already in progress\",\n };\n return null;\n }\n inFlight = true;\n executing.value = true;\n error.value = null;\n result.value = null;\n try {\n const execResult = await fn(quote, recipient, options);\n if (!disposed) result.value = execResult;\n return execResult;\n } catch (cause) {\n if (!disposed) error.value = toExecuteRouteError(cause);\n return null;\n } finally {\n inFlight = false;\n if (!disposed) executing.value = false;\n }\n };\n\n onScopeDispose(() => {\n disposed = true;\n });\n\n return {\n execute,\n executing,\n result,\n error,\n reset: () => {\n result.value = null;\n error.value = null;\n executing.value = false;\n },\n };\n}\n","import { eip155ChainIdToNumber } from \"@naculus/connect-appkit-core\";\nimport {\n TokenListManager,\n type TokenListEntry,\n type TokenListManagerConfig,\n type TokenListSource,\n} from \"@naculus/connect-core\";\nimport type { MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { onScopeDispose, shallowRef, toValue, watch } from \"vue\";\n\nexport interface UseTokenListOptions {\n /** Load on creation (default: true). */\n autoLoad?: boolean;\n /** Custom sources; the manager's defaults otherwise. */\n sources?: TokenListSource[];\n /** Reuse a caller-owned manager instead of creating one. */\n manager?: TokenListManager;\n}\n\nexport interface UseTokenListReturn {\n /** Tokens for the given chain, or all chains when none is given. */\n tokens: ShallowRef<TokenListEntry[]>;\n isLoading: ShallowRef<boolean>;\n /** True once a load has completed at least once. */\n isLoaded: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n /** Force a refresh from all sources. */\n refetch: () => Promise<void>;\n}\n\n/**\n * Token list for a chain, mirroring the React hook. The list logic, caching\n * and chain filtering are `TokenListManager`'s; this file is Vue plumbing.\n * The chain id is CAIP-2; a non-EVM chain yields the unfiltered list rather\n * than a bogus numeric filter.\n */\nexport function useTokenList(\n chainId?: MaybeRefOrGetter<string | null | undefined>,\n options: UseTokenListOptions = {},\n): UseTokenListReturn {\n const config: Partial<TokenListManagerConfig> = {};\n if (options.sources) config.sources = options.sources;\n const manager = options.manager ?? new TokenListManager(config);\n\n const tokens = shallowRef<TokenListEntry[]>([]);\n const isLoading = shallowRef(options.autoLoad !== false);\n const isLoaded = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let generation = 0;\n let disposed = false;\n\n const select = (): TokenListEntry[] => {\n const id = toValue(chainId);\n const numeric = id ? eip155ChainIdToNumber(id) : undefined;\n return manager.getTokens(\n numeric !== undefined ? { chainId: numeric } : undefined,\n );\n };\n\n const run = async (op: () => Promise<unknown>): Promise<void> => {\n const own = ++generation;\n isLoading.value = true;\n error.value = null;\n try {\n await op();\n if (disposed || own !== generation) return;\n tokens.value = select();\n isLoaded.value = true;\n } catch (cause) {\n if (disposed || own !== generation) return;\n error.value = cause instanceof Error ? cause : new Error(String(cause));\n } finally {\n if (!disposed && own === generation) isLoading.value = false;\n }\n };\n\n watch(\n () => toValue(chainId),\n () => {\n if (options.autoLoad !== false) void run(() => manager.load());\n },\n { immediate: true },\n );\n\n onScopeDispose(() => {\n disposed = true;\n generation++;\n });\n\n return {\n tokens,\n isLoading,\n isLoaded,\n error,\n refetch: () => run(() => manager.refresh()),\n };\n}\n","import { eip155ChainIdToNumber } from \"@naculus/connect-appkit-core\";\nimport {\n TokenListManager,\n type TokenSearchResult,\n} from \"@naculus/connect-core\";\nimport type { MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { onScopeDispose, shallowRef, toValue, watch } from \"vue\";\n\nconst DEBOUNCE_MS = 300;\nconst EMPTY: TokenSearchResult = { exact: [], fuzzy: [], hasMore: false };\n\nexport interface UseTokenSearchOptions {\n /** Reuse a caller-owned manager; otherwise one shared instance per page. */\n manager?: TokenListManager;\n /** Debounce in ms (default 300). */\n debounceMs?: number;\n /** Max results per bucket (default 20). */\n limit?: number;\n}\n\nexport interface UseTokenSearchReturn {\n results: ShallowRef<TokenSearchResult>;\n /** True from the first keystroke until the debounced search has run. */\n isSearching: ShallowRef<boolean>;\n}\n\n// One manager per page, as in React: the first search kicks off the default\n// list load in the background and later searches reuse it.\nlet sharedManager: TokenListManager | null = null;\nfunction getSharedManager(): TokenListManager {\n if (!sharedManager) {\n sharedManager = new TokenListManager();\n sharedManager.load().catch(() => {});\n }\n return sharedManager;\n}\n\n/**\n * Debounced token search by symbol, name or address, mirroring the React\n * hook. Matching lives in `TokenListManager.search`; this file only debounces\n * and keeps a late timer from writing after the query moved on.\n */\nexport function useTokenSearch(\n query: MaybeRefOrGetter<string | null | undefined>,\n chainId?: MaybeRefOrGetter<string | null | undefined>,\n options: UseTokenSearchOptions = {},\n): UseTokenSearchReturn {\n const results = shallowRef<TokenSearchResult>(EMPTY);\n const isSearching = shallowRef(false);\n let timer: ReturnType<typeof setTimeout> | null = null;\n\n const clear = (): void => {\n if (timer) clearTimeout(timer);\n timer = null;\n };\n\n watch(\n [() => (toValue(query) ?? \"\").trim(), () => toValue(chainId)],\n ([q, id]) => {\n clear();\n if (!q) {\n results.value = EMPTY;\n isSearching.value = false;\n return;\n }\n isSearching.value = true;\n timer = setTimeout(() => {\n timer = null;\n const manager = options.manager ?? getSharedManager();\n const numeric = id ? eip155ChainIdToNumber(id) : undefined;\n results.value = manager.search(q, {\n chainId: numeric,\n limit: options.limit ?? 20,\n });\n isSearching.value = false;\n }, options.debounceMs ?? DEBOUNCE_MS);\n },\n { immediate: true },\n );\n\n onScopeDispose(clear);\n\n return { results, isSearching };\n}\n","import {\n type DestinationValidation,\n validateDestination,\n} from \"@naculus/connect-appkit-core\";\nimport type { ComputedRef, MaybeRefOrGetter } from \"vue\";\nimport { computed, toValue } from \"vue\";\n\nexport interface UseValidateDestinationReturn {\n validation: ComputedRef<DestinationValidation>;\n}\n\n/**\n * Syntactic destination checks, shared with the React hook through\n * `@naculus/connect-appkit-core`. Returns a machine-readable `issue`; the\n * Vue package carries no locale table, so the caller maps it to a string.\n * `level: \"ok\"` means nothing wrong was found — not that it is safe.\n */\nexport function useValidateDestination(\n address: MaybeRefOrGetter<string | null | undefined>,\n): UseValidateDestinationReturn {\n return {\n validation: computed(() => validateDestination(toValue(address) ?? \"\")),\n };\n}\n","import { bareEvmAddress } from \"@naculus/connect-appkit-core\";\nimport { ERC20_MIN_ABI, formatUnits } from \"@naculus/connect-core\";\nimport type { MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { onScopeDispose, shallowRef, toValue, watch } from \"vue\";\n\nexport interface TokenInfo {\n /** ERC-20 token contract address */\n address: `0x${string}`;\n symbol: string;\n decimals: number;\n name?: string;\n}\n\n/** Minimal read-only contract; a viem PublicClient satisfies it. */\nexport interface TokenBalanceReader {\n readContract(args: {\n address: `0x${string}`;\n abi: typeof ERC20_MIN_ABI;\n functionName: \"balanceOf\";\n args: readonly [`0x${string}`];\n }): Promise<unknown>;\n}\n\nexport interface TokenBalanceResult extends TokenInfo {\n /** Raw balance in the smallest unit as a decimal string, or null if unread. */\n balance: string | null;\n /** Human-readable balance, or null if unread. */\n formatted: string | null;\n}\n\nexport interface UseTokenBalanceOptions {\n /** Auto-refresh interval in milliseconds. Default: no auto-refresh. */\n refreshInterval?: MaybeRefOrGetter<number | null | undefined>;\n}\n\nexport interface UseTokenBalanceReturn {\n tokenBalances: ShallowRef<TokenBalanceResult[]>;\n isFetching: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n refetch: () => Promise<void>;\n getTokenBalance: (\n tokenAddress: `0x${string}`,\n ) => TokenBalanceResult | undefined;\n}\n\nfunction tokensKey(tokens: readonly TokenInfo[]): string {\n return tokens\n .map((t) => `${t.address.toLowerCase()}|${t.decimals}|${t.symbol}`)\n .join(\",\");\n}\n\n/**\n * ERC-20 balances of an EVM account through a caller-owned reader.\n *\n * Mirrors the React hook: one token failing to read leaves that entry with a\n * null balance and does not fail the others. A late response for a previous\n * account, reader or token list is dropped.\n */\nexport function useTokenBalance(\n account: MaybeRefOrGetter<string | null | undefined>,\n client: MaybeRefOrGetter<TokenBalanceReader | null | undefined>,\n tokens: MaybeRefOrGetter<readonly TokenInfo[] | null | undefined>,\n options: UseTokenBalanceOptions = {},\n): UseTokenBalanceReturn {\n const tokenBalances = shallowRef<TokenBalanceResult[]>([]);\n const isFetching = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let generation = 0;\n let disposed = false;\n let timer: ReturnType<typeof setInterval> | null = null;\n\n const refetch = async (): Promise<void> => {\n const reader = toValue(client);\n const address = bareEvmAddress(toValue(account));\n const list = toValue(tokens) ?? [];\n const own = ++generation;\n if (!reader || !address || list.length === 0) {\n tokenBalances.value = [];\n error.value = null;\n isFetching.value = false;\n return;\n }\n isFetching.value = true;\n error.value = null;\n try {\n const results = await Promise.all(\n list.map(async (token): Promise<TokenBalanceResult> => {\n try {\n const raw = await reader.readContract({\n address: token.address,\n abi: ERC20_MIN_ABI,\n functionName: \"balanceOf\",\n args: [address],\n });\n const value = BigInt(raw as bigint | string | number);\n return {\n ...token,\n balance: value.toString(),\n formatted: formatUnits(value, token.decimals),\n };\n } catch {\n return { ...token, balance: null, formatted: null };\n }\n }),\n );\n if (disposed || own !== generation) return;\n tokenBalances.value = results;\n } catch (cause) {\n if (disposed || own !== generation) return;\n tokenBalances.value = [];\n error.value =\n cause instanceof Error\n ? cause\n : new Error(\"Failed to fetch token balances\");\n } finally {\n if (!disposed && own === generation) isFetching.value = false;\n }\n };\n\n const stopTimer = (): void => {\n if (timer) clearInterval(timer);\n timer = null;\n };\n\n // Multi-source form: Vue compares each source by value, so a new token\n // array with the same content does not trigger a re-read.\n watch(\n [\n () => toValue(account),\n () => toValue(client),\n () => tokensKey(toValue(tokens) ?? []),\n () => toValue(options.refreshInterval) ?? 0,\n ],\n ([, , , interval]) => {\n stopTimer();\n void refetch();\n if (interval > 0) timer = setInterval(() => void refetch(), interval);\n },\n { immediate: true },\n );\n\n onScopeDispose(() => {\n disposed = true;\n generation++;\n stopTimer();\n });\n\n return {\n tokenBalances,\n isFetching,\n error,\n refetch,\n getTokenBalance: (tokenAddress) =>\n tokenBalances.value.find(\n (t) => t.address.toLowerCase() === tokenAddress.toLowerCase(),\n ),\n };\n}\n","import { bareEvmAddress } from \"@naculus/connect-appkit-core\";\nimport {\n delegateAccount,\n eip155Reference,\n REVOKE_DELEGATE,\n type SentDelegation,\n type UniversalConnector,\n type UniversalWalletSession,\n WalletError,\n} from \"@naculus/connect-core\";\nimport type { MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { onScopeDispose, shallowRef, toValue, watch } from \"vue\";\n\n/** Minimal read contract; a viem PublicClient for the chain satisfies it. */\nexport interface DelegationNonceReader {\n /** The chain this client reads; must match `chainId`. */\n chain?: { id: number };\n getTransactionCount(args: {\n address: `0x${string}`;\n blockTag: \"pending\";\n }): Promise<unknown>;\n}\n\nexport interface UseDelegateOptions {\n /**\n * Pass the embedded connector, and only while its session is the one in\n * `session`. Browser and WalletConnect connectors have no\n * `sendDelegation` and are refused; the embedded connector itself refuses\n * a session it did not create.\n */\n connector: MaybeRefOrGetter<\n Pick<UniversalConnector, \"sendDelegation\"> | null | undefined\n >;\n session: MaybeRefOrGetter<UniversalWalletSession | null | undefined>;\n account: MaybeRefOrGetter<string | null | undefined>;\n chainId: MaybeRefOrGetter<string | null | undefined>;\n client: MaybeRefOrGetter<DelegationNonceReader | null | undefined>;\n /**\n * Implementations this app trusts to run with full control of the\n * account. Nothing is allowed unless listed; revoking always is.\n */\n allowlist: MaybeRefOrGetter<readonly string[]>;\n}\n\nexport interface UseDelegateReturn {\n delegate: (delegate: `0x${string}`) => Promise<SentDelegation | null>;\n revoke: () => Promise<SentDelegation | null>;\n result: ShallowRef<SentDelegation | null>;\n isPending: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n reset: () => void;\n}\n\n/**\n * EIP-7702 owner path, mirroring the React hook: delegate or revoke the\n * connected account with a type-4 transaction it sends itself. Core's\n * `delegateAccount` applies the allowlist and computes the nonces; a\n * connector without `sendDelegation` fails with `method_unsupported` before\n * anything is read. One operation in flight; a superseded result is dropped.\n */\nexport function useDelegate(options: UseDelegateOptions): UseDelegateReturn {\n const result = shallowRef<SentDelegation | null>(null);\n const isPending = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let requestId = 0;\n let inFlight = false;\n let disposed = false;\n\n const fail = (cause: Error): null => {\n error.value = cause;\n return null;\n };\n\n const run = async (\n target: `0x${string}`,\n allowlist: readonly string[],\n ): Promise<SentDelegation | null> => {\n if (inFlight) return fail(new Error(\"A delegation is already in progress\"));\n const session = toValue(options.session);\n const account = bareEvmAddress(toValue(options.account));\n const chainId = toValue(options.chainId);\n if (!session || !account || !chainId) {\n return fail(\n new WalletError(\"wallet_unavailable\", \"No connected EVM account\"),\n );\n }\n // The nonce must come from the chain the wallet will send on.\n const reader = toValue(options.client);\n if (!reader || reader.chain?.id !== eip155Reference(chainId)) {\n return fail(\n new WalletError(\n \"chain_mismatch\",\n `No RPC client for ${chainId}; refusing to read the nonce elsewhere.`,\n ),\n );\n }\n const connector = toValue(options.connector) ?? {};\n\n const own = ++requestId;\n inFlight = true;\n isPending.value = true;\n error.value = null;\n result.value = null;\n try {\n const sent = await delegateAccount({\n connector,\n session,\n account,\n chainId,\n delegate: target,\n allowlist,\n getTransactionCount: (address, blockTag) =>\n reader.getTransactionCount({ address, blockTag }),\n });\n if (disposed || own !== requestId) return null;\n result.value = sent;\n return sent;\n } catch (cause) {\n if (disposed || own !== requestId) return null;\n return fail(\n cause instanceof Error ? cause : new Error(\"Failed to send delegation\"),\n );\n } finally {\n inFlight = false;\n if (!disposed && own === requestId) isPending.value = false;\n }\n };\n\n /**\n * Clears published state and drops the in-flight result. Does not unlock\n * single-flight: the transaction may still be signing or broadcasting.\n */\n const reset = (): void => {\n requestId++;\n result.value = null;\n isPending.value = false;\n error.value = null;\n };\n\n // A new wallet context invalidates what is on screen.\n watch(\n [\n () => toValue(options.session),\n () => toValue(options.account),\n () => toValue(options.chainId),\n ],\n reset,\n { flush: \"sync\" },\n );\n onScopeDispose(() => {\n disposed = true;\n requestId++;\n });\n\n return {\n delegate: (target) => run(target, toValue(options.allowlist)),\n revoke: () => run(REVOKE_DELEGATE, []),\n result,\n isPending,\n error,\n reset,\n };\n}\n","import { bareEvmAddress } from \"@naculus/connect-appkit-core\";\nimport {\n type DelegationStatus,\n readDelegation,\n UNKNOWN_DELEGATION,\n} from \"@naculus/connect-core\";\nimport type { ComputedRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { computed, onScopeDispose, shallowRef, toValue, watch } from \"vue\";\n\n/** Minimal read-only contract; a viem PublicClient can supply getCode. */\nexport interface DelegationCodeReader {\n getCode(args: { address: `0x${string}` }): Promise<`0x${string}` | undefined>;\n}\n\nexport interface UseDelegationReturn {\n delegated: ComputedRef<boolean | null>;\n delegate: ComputedRef<`0x${string}` | null>;\n isFetching: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n refetch: () => Promise<void>;\n}\n\n/** Read current EIP-7702 delegation without treating an unread account as undelegated. */\nexport function useDelegation(\n account: MaybeRefOrGetter<string | null | undefined>,\n client: MaybeRefOrGetter<DelegationCodeReader | null | undefined>,\n chainId?: MaybeRefOrGetter<string | null | undefined>,\n): UseDelegationReturn {\n const status = shallowRef<DelegationStatus>(UNKNOWN_DELEGATION);\n const isFetching = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let generation = 0;\n let disposed = false;\n\n const refetch = async (): Promise<void> => {\n const mine = ++generation;\n const reader = toValue(client);\n const address = bareEvmAddress(toValue(account));\n status.value = UNKNOWN_DELEGATION;\n error.value = null;\n if (!reader || !address) {\n isFetching.value = false;\n return;\n }\n isFetching.value = true;\n try {\n const code = await reader.getCode({ address });\n if (!disposed && mine === generation) {\n status.value = readDelegation(code ?? \"0x\");\n }\n } catch (cause) {\n if (!disposed && mine === generation) {\n status.value = UNKNOWN_DELEGATION;\n error.value =\n cause instanceof Error ? cause : new Error(\"Code read failed\");\n }\n } finally {\n if (!disposed && mine === generation) isFetching.value = false;\n }\n };\n\n watch(\n [() => toValue(account), () => toValue(client), () => toValue(chainId)],\n () => {\n void refetch();\n },\n { immediate: true, flush: \"sync\" },\n );\n onScopeDispose(() => {\n disposed = true;\n generation++;\n });\n\n return {\n delegated: computed(() => status.value.delegated),\n delegate: computed(() => status.value.delegate),\n isFetching,\n error,\n refetch,\n };\n}\n","import { getResolver } from \"@naculus/connect-appkit-core\";\nimport type { NameResolver, NameResolverConfig } from \"@naculus/connect-core\";\nimport type { ComputedRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport { computed, onScopeDispose, shallowRef, toValue, watch } from \"vue\";\n\nexport interface NameLookupReturn<T> {\n data: ShallowRef<T | null>;\n isLoading: ComputedRef<boolean>;\n error: ShallowRef<Error | null>;\n refetch: () => void;\n}\n\ninterface NameLookupOptions<T> {\n input: MaybeRefOrGetter<string>;\n skip?: MaybeRefOrGetter<boolean | undefined>;\n resolverConfig?: MaybeRefOrGetter<NameResolverConfig | undefined>;\n scope?: MaybeRefOrGetter<string | undefined>;\n query: (\n resolver: NameResolver,\n input: string,\n scope?: string,\n ) => Promise<T | null>;\n}\n\n/** Shared race-safe lifecycle for forward and reverse name lookups. */\nexport function useNameLookup<T>(\n options: NameLookupOptions<T>,\n): NameLookupReturn<T> {\n const data = shallowRef<T | null>(null) as ShallowRef<T | null>;\n const loading = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let generation = 0;\n let disposed = false;\n\n const run = (): void => {\n const input = toValue(options.input).trim();\n const skip = toValue(options.skip) ?? false;\n const scope = toValue(options.scope);\n const config = toValue(options.resolverConfig);\n const mine = ++generation;\n if (!input || skip) {\n data.value = null;\n loading.value = false;\n error.value = null;\n return;\n }\n\n // Never show the previous name/address beside a new input while it loads.\n data.value = null;\n loading.value = true;\n error.value = null;\n Promise.resolve()\n .then(() => options.query(getResolver(config), input, scope))\n .then((result) => {\n if (disposed || mine !== generation) return;\n data.value = result;\n loading.value = false;\n })\n .catch((cause: unknown) => {\n if (disposed || mine !== generation) return;\n data.value = null;\n error.value = cause instanceof Error ? cause : new Error(String(cause));\n loading.value = false;\n });\n };\n\n watch(\n () =>\n [\n toValue(options.input),\n toValue(options.skip),\n toValue(options.scope),\n toValue(options.resolverConfig),\n ] as const,\n run,\n { immediate: true, flush: \"sync\", deep: true },\n );\n onScopeDispose(() => {\n disposed = true;\n generation++;\n });\n\n return {\n data,\n isLoading: computed(() => loading.value),\n error,\n refetch: run,\n };\n}\n","import type { AddressResult, NameResolverConfig } from \"@naculus/connect-core\";\nimport type { MaybeRefOrGetter } from \"vue\";\nimport { type NameLookupReturn, useNameLookup } from \"./name-lookup\";\n\nexport type UseResolveNameReturn = NameLookupReturn<AddressResult>;\n\n/** Resolve a reactive ENS or SNS name to an address. */\nexport function useResolveName(\n name: MaybeRefOrGetter<string>,\n options?: {\n skip?: MaybeRefOrGetter<boolean | undefined>;\n resolverConfig?: MaybeRefOrGetter<NameResolverConfig | undefined>;\n },\n): UseResolveNameReturn {\n return useNameLookup({\n input: name,\n skip: options?.skip,\n resolverConfig: options?.resolverConfig,\n query: (resolver, input) => resolver.resolveName(input),\n });\n}\n","import type { NameResolverConfig, NameResult } from \"@naculus/connect-core\";\nimport type { MaybeRefOrGetter } from \"vue\";\nimport { type NameLookupReturn, useNameLookup } from \"./name-lookup\";\n\nexport type UseLookupAddressReturn = NameLookupReturn<NameResult>;\n\n/** Reverse-resolve a reactive address, optionally scoped to a CAIP-2 chain. */\nexport function useLookupAddress(\n address: MaybeRefOrGetter<string>,\n options?: {\n chainId?: MaybeRefOrGetter<string | undefined>;\n skip?: MaybeRefOrGetter<boolean | undefined>;\n resolverConfig?: MaybeRefOrGetter<NameResolverConfig | undefined>;\n },\n): UseLookupAddressReturn {\n return useNameLookup({\n input: address,\n scope: options?.chainId,\n skip: options?.skip,\n resolverConfig: options?.resolverConfig,\n query: (resolver, input, scope) => resolver.lookupAddress(input, scope),\n });\n}\n","import { computed, toValue } from \"vue\";\nimport type { ComputedRef, MaybeRefOrGetter } from \"vue\";\n\nexport interface UseSolanaAccountReturn {\n address: ComputedRef<string | null>;\n caip10: ComputedRef<string | null>;\n chainId: ComputedRef<string | null>;\n isConnected: ComputedRef<boolean>;\n}\n\n/** Read the connected Solana CAIP-10 account from any wallet. */\nexport function useSolanaAccount(\n accounts: MaybeRefOrGetter<string[] | null | undefined>,\n connected: MaybeRefOrGetter<boolean>,\n): UseSolanaAccountReturn {\n const isConnected = computed(() => toValue(connected));\n const caip10 = computed(() =>\n isConnected.value\n ? ((toValue(accounts) ?? []).find((account) =>\n account.startsWith(\"solana:\"),\n ) ?? null)\n : null,\n );\n const parts = computed(() => caip10.value?.split(\":\") ?? []);\n return {\n address: computed(() =>\n parts.value.length >= 3 ? (parts.value.at(-1) ?? null) : null,\n ),\n caip10,\n chainId: computed(() =>\n parts.value.length >= 3 ? parts.value.slice(0, -1).join(\":\") : null,\n ),\n isConnected,\n };\n}\n","import {\n chainNamespace,\n chainNumber,\n chainsForNamespace,\n describeChain,\n resolveChain,\n type ChainInfo,\n type WalletChain,\n} from \"@naculus/connect-appkit-core\";\nimport { computed, toValue } from \"vue\";\nimport type { ComputedRef, MaybeRefOrGetter } from \"vue\";\n\nexport interface UseChainReturn {\n /** The configured chain matching the connected CAIP-2 id, or null. */\n currentChain: ComputedRef<WalletChain | null>;\n /** A description of the connected chain, for any namespace. */\n chainInfo: ComputedRef<ChainInfo | null>;\n /** Only the chains the connected wallet could actually switch to. */\n availableChains: ComputedRef<WalletChain[]>;\n /** The EIP-155 number, or null when the connected chain has none. */\n currentChainNumber: ComputedRef<number | null>;\n namespace: ComputedRef<string | null>;\n}\n\n/**\n * The connected chain, and the chains it is possible to switch to.\n *\n * Identical in substance to the React `useChain`, because it is the same five\n * functions from `@naculus/connect-appkit-core`. This file contains no\n * decision at all — which is the point: `availableChains` filtering to the\n * connected namespace, `chainInfo` describing non-EVM chains, and\n * `currentChainNumber` refusing to invent a number for Solana are all\n * properties of the shared core, so both bindings get them or neither does.\n *\n * Takes its chain list and connected id as arguments; Vue has no equivalent of\n * the React provider here.\n */\nexport function useChain(\n chains: MaybeRefOrGetter<WalletChain[] | null | undefined>,\n chainId: MaybeRefOrGetter<string | null | undefined>,\n): UseChainReturn {\n const list = computed(() => toValue(chains) ?? []);\n const id = computed(() => toValue(chainId) ?? null);\n\n const currentChain = computed(() => resolveChain(list.value, id.value));\n\n return {\n currentChain,\n chainInfo: computed(() => describeChain(list.value, id.value)),\n availableChains: computed(() => chainsForNamespace(list.value, id.value)),\n currentChainNumber: computed(() =>\n currentChain.value ? chainNumber(currentChain.value) : null,\n ),\n namespace: computed(() =>\n currentChain.value ? chainNamespace(currentChain.value) : null,\n ),\n };\n}\n","import type { PassphraseGate, PassphraseRequest } from \"@naculus/connect-core\";\nimport { onScopeDispose, readonly, shallowRef } from \"vue\";\n\nexport interface UsePassphraseGateReturn {\n /** The open request, or null when nothing is being asked. */\n request: Readonly<ReturnType<typeof shallowRef<PassphraseRequest | null>>>;\n /** Answer the open request. */\n submit: (passphrase: string) => void;\n /** Abandon it, failing the load or save that asked. */\n cancel: (reason?: string) => void;\n /** Drop the held passphrase, so the next operation asks again. */\n forget: (reason?: string) => void;\n}\n\n/**\n * Bind a `PassphraseGate` into Vue reactivity.\n *\n * The gate itself lives in `@naculus/connect-core` rather than in either\n * framework package, because the thing it bridges — an encrypted storage\n * adapter asking for a passphrase from inside code that has never heard of a\n * component — is the same problem in React and in Vue. One implementation,\n * two thin bindings.\n *\n * ```ts\n * const gate = new PassphraseGate()\n * const wallet = new PocketWallet({ encryptionPassphrase: gate.request })\n * const { request, submit, cancel } = usePassphraseGate(gate)\n * ```\n *\n * `shallowRef`, not `ref`: the request is a small immutable snapshot the gate\n * replaces wholesale, and deep reactivity over it would proxy an object that\n * never mutates in place.\n */\nexport function usePassphraseGate(\n gate: PassphraseGate,\n): UsePassphraseGateReturn {\n const request = shallowRef<PassphraseRequest | null>(gate.getSnapshot());\n const unsubscribe = gate.subscribe(() => {\n request.value = gate.getSnapshot();\n });\n // Without this the gate keeps a reference to a listener belonging to a\n // component that is gone, and every later prompt writes into a dead ref.\n onScopeDispose(unsubscribe);\n\n return {\n request: readonly(request) as UsePassphraseGateReturn[\"request\"],\n submit: (passphrase: string) => gate.submit(passphrase),\n cancel: (reason?: string) => gate.cancel(reason),\n forget: (reason?: string) => gate.forget(reason),\n };\n}\n","import {\n getSolanaBalance,\n type SolanaBalance,\n} from \"@naculus/connect-core\";\nimport { onScopeDispose, ref, shallowRef, toValue, watchEffect } from \"vue\";\nimport type { MaybeRefOrGetter } from \"vue\";\n\nexport interface UseSolanaBalanceReturn {\n balance: ReturnType<typeof shallowRef<SolanaBalance | null>>;\n isFetching: ReturnType<typeof ref<boolean>>;\n error: ReturnType<typeof shallowRef<Error | null>>;\n refetch: () => Promise<void>;\n}\n\n/**\n * The SOL balance of an address.\n *\n * The whole of this file is Vue plumbing. Every decision that took thought —\n * exact lamport arithmetic, distinguishing an unfunded account from an emptied\n * one, refusing to invent a zero — is in `@naculus/connect-core`, shared with\n * the React hook. That is what makes \"author in React, ship to Vue\" true for\n * the logic: what does not translate is only the reactivity.\n *\n * Takes its address and endpoint as arguments because Vue has no equivalent of\n * the React provider here. Refs and getters both work.\n */\nexport function useSolanaBalance(\n address: MaybeRefOrGetter<string | null | undefined>,\n rpcUrl: MaybeRefOrGetter<string | null | undefined>,\n): UseSolanaBalanceReturn {\n const balance = shallowRef<SolanaBalance | null>(null);\n const isFetching = ref(false);\n const error = shallowRef<Error | null>(null);\n // Guards against a slow response for a previous address overwriting the\n // balance of the one now on screen.\n let generation = 0;\n let disposed = false;\n\n const refetch = async () => {\n const addr = toValue(address);\n const url = toValue(rpcUrl);\n if (!addr || !url) {\n balance.value = null;\n return;\n }\n const own = ++generation;\n isFetching.value = true;\n error.value = null;\n try {\n const next = await getSolanaBalance(url, addr);\n if (disposed || own !== generation) return;\n balance.value = next;\n } catch (err) {\n if (disposed || own !== generation) return;\n // Cleared rather than left stale: a balance shown next to an error\n // reads as the current balance, and it is not.\n balance.value = null;\n error.value =\n err instanceof Error ? err : new Error(\"Balance read failed\");\n } finally {\n if (!disposed && own === generation) isFetching.value = false;\n }\n };\n\n watchEffect(() => {\n // Touch both so the effect re-runs when either changes.\n toValue(address);\n toValue(rpcUrl);\n void refetch();\n });\n\n onScopeDispose(() => {\n disposed = true;\n });\n\n return { balance, isFetching, error, refetch };\n}\n","import { shallowRef, toValue, watch } from \"vue\";\nimport type { MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport type { TxMonitorLike, TxStatusEntry } from \"./useTxMonitor\";\n\nexport interface UseLastTxReturn {\n lastTx: ShallowRef<TxStatusEntry | null>;\n lastConfirmedTx: ShallowRef<TxStatusEntry | null>;\n lastFailedTx: ShallowRef<TxStatusEntry | null>;\n clear: () => void;\n}\n\n/** Track the latest confirmed or failed transaction from a caller-owned monitor. */\nexport function useLastTx(\n monitor: MaybeRefOrGetter<TxMonitorLike | null | undefined>,\n): UseLastTxReturn {\n const lastTx = shallowRef<TxStatusEntry | null>(null);\n const lastConfirmedTx = shallowRef<TxStatusEntry | null>(null);\n const lastFailedTx = shallowRef<TxStatusEntry | null>(null);\n\n watch(\n () => toValue(monitor),\n (activeMonitor, _previous, onCleanup) => {\n if (!activeMonitor) return;\n const recordLatest = (entry: TxStatusEntry): void => {\n if (!lastTx.value || entry.createdAt >= lastTx.value.createdAt) {\n lastTx.value = entry;\n }\n };\n const onConfirmed = (entry: TxStatusEntry): void => {\n lastConfirmedTx.value = entry;\n recordLatest(entry);\n };\n const onFailed = (entry: TxStatusEntry): void => {\n lastFailedTx.value = entry;\n recordLatest(entry);\n };\n activeMonitor.on(\"confirmed\", onConfirmed);\n activeMonitor.on(\"failed\", onFailed);\n onCleanup(() => {\n activeMonitor.off(\"confirmed\", onConfirmed);\n activeMonitor.off(\"failed\", onFailed);\n });\n },\n { immediate: true },\n );\n\n return {\n lastTx,\n lastConfirmedTx,\n lastFailedTx,\n clear: () => {\n lastTx.value = null;\n lastConfirmedTx.value = null;\n lastFailedTx.value = null;\n },\n };\n}\n","import { computed, shallowRef, toValue, watch } from \"vue\";\nimport type { ComputedRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\nimport type { TxMonitorLike, TxStatusEntry } from \"./useTxMonitor\";\n\nexport interface UseTxHistoryReturn {\n entries: ShallowRef<TxStatusEntry[]>;\n isLoading: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n refresh: () => Promise<void>;\n summary: ComputedRef<{ pending: number; confirmed: number; failed: number }>;\n}\n\n/** Query and keep a caller-owned monitor's transaction history current. */\nexport function useTxHistory(\n address: MaybeRefOrGetter<string | null | undefined>,\n chainId: MaybeRefOrGetter<number | null | undefined>,\n monitor: MaybeRefOrGetter<TxMonitorLike | null | undefined>,\n): UseTxHistoryReturn {\n const entries = shallowRef<TxStatusEntry[]>([]);\n const isLoading = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let generation = 0;\n\n const refresh = async (): Promise<void> => {\n const mine = ++generation;\n const activeMonitor = toValue(monitor);\n if (!activeMonitor) {\n entries.value = [];\n isLoading.value = false;\n error.value = null;\n return;\n }\n isLoading.value = true;\n error.value = null;\n try {\n const result = await activeMonitor.getTxHistory(\n toValue(address) ?? undefined,\n toValue(chainId) ?? undefined,\n );\n if (mine === generation) entries.value = result;\n } catch (err) {\n if (mine !== generation) return;\n error.value =\n err instanceof Error\n ? err\n : new Error(\"Failed to load transaction history\");\n } finally {\n if (mine === generation) isLoading.value = false;\n }\n };\n\n watch(\n [() => toValue(monitor), () => toValue(address), () => toValue(chainId)],\n ([activeMonitor], _previous, onCleanup) => {\n if (!activeMonitor) {\n void refresh();\n return;\n }\n const onStatusChange = (): void => {\n void refresh();\n };\n activeMonitor.on(\"statusChange\", onStatusChange);\n onCleanup(() => activeMonitor.off(\"statusChange\", onStatusChange));\n void refresh();\n },\n { immediate: true },\n );\n\n return {\n entries,\n isLoading,\n error,\n refresh,\n summary: computed(() => ({\n pending: entries.value.filter((item) => item.status === \"pending\").length,\n confirmed: entries.value.filter((item) => item.status === \"confirmed\")\n .length,\n failed: entries.value.filter((item) => item.status === \"failed\").length,\n })),\n };\n}\n","import { computed, shallowRef, toValue, watch } from \"vue\";\nimport type { ComputedRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\n\nexport type TxStatus = \"pending\" | \"mined\" | \"confirmed\" | \"failed\" | \"unknown\";\n\nexport interface TxStatusEntry {\n hash: string;\n chainId: number;\n from: string;\n to: string;\n value: string;\n data?: string;\n nonce?: number;\n status: TxStatus;\n blockNumber?: number;\n blockHash?: string;\n gasUsed?: string;\n effectiveGasPrice?: string;\n createdAt: number;\n confirmedAt?: number;\n updatedAt: number;\n error?: string;\n label?: string;\n memo?: string;\n replacementCount?: number;\n}\n\n/** Structural contract accepted by the transaction-monitor composables. */\nexport interface TxMonitorLike {\n watchTx(\n hash: string,\n chainId: number,\n options?: Record<string, unknown>,\n ): Promise<TxStatusEntry>;\n stopWatching(hash: string, chainId?: number): void;\n getTxStatus(hash: string, chainId?: number): TxStatusEntry | null;\n getTxHistory(address?: string, chainId?: number): Promise<TxStatusEntry[]>;\n refreshTx(hash: string, chainId?: number): Promise<void>;\n on(event: \"statusChange\", listener: (entry: TxStatusEntry) => void): this;\n on(event: \"confirmed\", listener: (entry: TxStatusEntry) => void): this;\n on(event: \"failed\", listener: (entry: TxStatusEntry) => void): this;\n off(event: string, listener: Function): this;\n}\n\nexport interface UseTxMonitorReturn {\n entry: ShallowRef<TxStatusEntry | null>;\n status: ComputedRef<TxStatus | \"idle\">;\n isLoading: ShallowRef<boolean>;\n isWatching: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n refresh: () => Promise<void>;\n stopWatching: () => void;\n}\n\n/**\n * Reactively monitor one transaction using a caller-owned TxMonitor.\n *\n * Vue has no AppKit monitor provider, so the monitor is explicit. The hook\n * listens only while its source values are current; a late promise from a\n * previous hash, chain, or monitor cannot overwrite the active result.\n */\nexport function useTxMonitor(\n hash: MaybeRefOrGetter<string | null | undefined>,\n chainId: MaybeRefOrGetter<number | null | undefined>,\n monitor: MaybeRefOrGetter<TxMonitorLike | null | undefined>,\n): UseTxMonitorReturn {\n const entry = shallowRef<TxStatusEntry | null>(null);\n const isLoading = shallowRef(false);\n const isWatching = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n let generation = 0;\n\n const refresh = async (): Promise<void> => {\n const activeMonitor = toValue(monitor);\n const activeHash = toValue(hash);\n const activeChainId = toValue(chainId);\n if (!activeMonitor || !activeHash) return;\n\n isLoading.value = true;\n error.value = null;\n try {\n await activeMonitor.refreshTx(activeHash, activeChainId ?? undefined);\n const current = activeMonitor.getTxStatus(\n activeHash,\n activeChainId ?? undefined,\n );\n if (current) entry.value = current;\n } catch (err) {\n error.value =\n err instanceof Error ? err : new Error(\"Failed to refresh transaction\");\n } finally {\n isLoading.value = false;\n }\n };\n\n const stopWatching = (): void => {\n const activeMonitor = toValue(monitor);\n const activeHash = toValue(hash);\n const activeChainId = toValue(chainId);\n if (!activeMonitor || !activeHash) return;\n activeMonitor.stopWatching(activeHash, activeChainId ?? undefined);\n isWatching.value = false;\n };\n\n watch(\n [() => toValue(monitor), () => toValue(hash), () => toValue(chainId)],\n ([activeMonitor, activeHash, activeChainId], _previous, onCleanup) => {\n const mine = ++generation;\n if (!activeMonitor || !activeHash || !activeChainId) {\n entry.value = null;\n isLoading.value = false;\n isWatching.value = false;\n error.value = null;\n return;\n }\n\n let cancelled = false;\n const onStatusChange = (updated: TxStatusEntry): void => {\n if (\n !cancelled &&\n updated.hash === activeHash &&\n updated.chainId === activeChainId\n ) {\n entry.value = { ...updated };\n }\n };\n activeMonitor.on(\"statusChange\", onStatusChange);\n onCleanup(() => {\n cancelled = true;\n activeMonitor.off(\"statusChange\", onStatusChange);\n });\n\n isWatching.value = true;\n isLoading.value = true;\n error.value = null;\n const current = activeMonitor.getTxStatus(activeHash, activeChainId);\n if (current) entry.value = current;\n\n activeMonitor\n .watchTx(activeHash, activeChainId, {})\n .then((initial) => {\n if (cancelled || mine !== generation) return;\n entry.value = initial;\n isLoading.value = false;\n })\n .catch((err) => {\n if (cancelled || mine !== generation) return;\n error.value =\n err instanceof Error\n ? err\n : new Error(\"Failed to watch transaction\");\n isLoading.value = false;\n });\n },\n { immediate: true },\n );\n\n return {\n entry,\n status: computed(() => entry.value?.status ?? \"idle\"),\n isLoading,\n isWatching,\n error,\n refresh,\n stopWatching,\n };\n}\n","import {\n atomicSupportFor,\n type AtomicSupport,\n type ChainCapabilities,\n normalizeCapabilities,\n selectChainCapabilities,\n} from \"@naculus/connect-appkit-core\";\nimport { computed, shallowRef, toValue, watchEffect } from \"vue\";\nimport type { ComputedRef, MaybeRefOrGetter, ShallowRef } from \"vue\";\n\nexport type { AtomicSupport, ChainCapabilities };\n\n/** The part of a connector this needs. Anything with these two is enough. */\nexport interface CapabilityClient {\n getCapabilities?: (session: unknown) => Promise<Record<string, unknown>>;\n}\n\nexport interface UseCapabilitiesReturn {\n /** Per-chain, keyed by CAIP-2. Null until a query has actually returned. */\n capabilities: ShallowRef<Record<string, ChainCapabilities> | null>;\n /** The connected chain's entry, for the common case. */\n current: ComputedRef<ChainCapabilities | null>;\n /** Atomic support on the connected chain. `\"unknown\"` until told otherwise. */\n atomic: ComputedRef<AtomicSupport>;\n isFetching: ShallowRef<boolean>;\n error: ShallowRef<Error | null>;\n refetch: () => Promise<void>;\n}\n\n/**\n * What the connected wallet says it can do — EIP-5792\n * `wallet_getCapabilities`.\n *\n * The query a dApp makes *before* choosing how to execute: ask whether the\n * wallet batches atomically, then send one batch or a sequence, rather than\n * sending a batch and learning the answer from a rejection.\n *\n * Identical in substance to the React hook, because every decision in it —\n * normalising the raw answer, the CAIP-2/hex lookup, and `\"unknown\"` meaning\n * \"not told\" rather than \"no\" — is in `@naculus/connect-appkit-core` and\n * neither binding gets to disagree about it.\n *\n * Takes its client, session and chain as arguments. Vue has no equivalent of\n * the React provider here, which is the same shape `useChain` uses.\n */\nexport function useCapabilities(\n client: MaybeRefOrGetter<CapabilityClient | null | undefined>,\n session: MaybeRefOrGetter<unknown>,\n chainId: MaybeRefOrGetter<string | null | undefined>,\n): UseCapabilitiesReturn {\n const capabilities = shallowRef<Record<string, ChainCapabilities> | null>(\n null,\n );\n const isFetching = shallowRef(false);\n const error = shallowRef<Error | null>(null);\n // Guards a slow answer for a previous session overwriting a newer one.\n let generation = 0;\n\n const refetch = async () => {\n const mine = ++generation;\n const activeClient = toValue(client);\n const activeSession = toValue(session);\n if (!activeClient?.getCapabilities || !activeSession) {\n capabilities.value = null;\n isFetching.value = false;\n error.value = null;\n return;\n }\n isFetching.value = true;\n error.value = null;\n try {\n const raw = await activeClient.getCapabilities(activeSession);\n if (mine !== generation) return;\n capabilities.value = normalizeCapabilities(raw);\n } catch (err) {\n if (mine !== generation) return;\n // Cleared rather than left stale. A capability map from a previous\n // wallet is a worse answer than no answer.\n capabilities.value = null;\n error.value =\n err instanceof Error ? err : new Error(\"Capability query failed\");\n } finally {\n if (mine === generation) isFetching.value = false;\n }\n };\n\n // Re-queries when the client or session changes, the way the React effect\n // does. `chainId` is deliberately not a trigger: it selects from an answer\n // already held rather than needing a new one.\n watchEffect(() => {\n void toValue(client);\n void toValue(session);\n void refetch();\n });\n\n return {\n capabilities,\n current: computed(() =>\n selectChainCapabilities(capabilities.value, toValue(chainId)),\n ),\n atomic: computed(() =>\n atomicSupportFor(capabilities.value, toValue(chainId)),\n ),\n isFetching,\n error,\n refetch,\n };\n}\n","import {\n readSolanaRoles,\n type SolanaIdentity,\n type SolanaPayer,\n type SolanaRoles,\n type SolanaRolesAbsence,\n type SolanaRolesSource,\n type SolanaSigner,\n type SolanaWalletFeatures,\n} from \"@naculus/connect-appkit-core\";\nimport type { ComputedRef, MaybeRefOrGetter } from \"vue\";\nimport { computed, toValue } from \"vue\";\n\nexport type {\n SolanaIdentity,\n SolanaPayer,\n SolanaRoles,\n SolanaRolesAbsence,\n SolanaRolesSource,\n SolanaSigner,\n SolanaWalletFeatures,\n};\n\nexport interface UseSolanaRolesReturn {\n /** The roles the connected account can fill, or null with a reason. */\n roles: ComputedRef<SolanaRoles | null>;\n /** Why `roles` is null. Null when it is not. */\n absence: ComputedRef<SolanaRolesAbsence | null>;\n /** Which account this is. Never null while `roles` is present. */\n identity: ComputedRef<SolanaIdentity | null>;\n /**\n * Signs without submitting. Null when the wallet declared it cannot *and*\n * null when nothing is known; check `absence` to tell those apart.\n */\n signer: ComputedRef<SolanaSigner | null>;\n /** Signs and broadcasts itself. Null under the same two conditions. */\n payer: ComputedRef<SolanaPayer | null>;\n}\n\n/**\n * Which roles the connected Solana account can actually fill.\n *\n * Identical in substance to the React hook: every judgement — that a null\n * `signer` from the connector is an answer while a missing `getRoles` is\n * not, that an EVM session is never asked — is in\n * `@naculus/connect-appkit-core`, and neither binding gets to disagree.\n *\n * Takes the connector and session as arguments, the shape `useCapabilities`\n * uses, because Vue has no provider here. Pass the session as a ref so an\n * account switch that replaces it is noticed; the connector reads the live\n * address either way, so a caller holding a stale snapshot still gets the\n * account the wallet moved to.\n */\nexport function useSolanaRoles(\n connector: MaybeRefOrGetter<SolanaRolesSource | null | undefined>,\n session: MaybeRefOrGetter<{ walletType?: string } | null | undefined>,\n): UseSolanaRolesReturn {\n const state = computed(() =>\n readSolanaRoles(toValue(connector), toValue(session)),\n );\n\n return {\n roles: computed(() => state.value.roles),\n absence: computed(() => state.value.absence),\n identity: computed(() => state.value.roles?.identity ?? null),\n signer: computed(() => state.value.roles?.signer ?? null),\n payer: computed(() => state.value.roles?.payer ?? null),\n };\n}\n"],"mappings":"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","names":["import_connect_core","import_vue","import_connect_appkit_core","import_connect_core","import_vue","import_connect_appkit_core","import_vue","import_connect_appkit_core","import_connect_core","import_vue","import_connect_appkit_core","import_connect_core","import_connect_appkit_core","import_connect_core","import_vue","import_connect_appkit_core","import_connect_core","import_vue","import_vue","import_vue","import_connect_core","import_vue","import_vue","import_vue","import_connect_appkit_core","import_vue","import_vue","import_vue","import_vue","import_vue","import_vue","import_connect_appkit_core","import_vue","import_connect_appkit_core","import_vue","import_connect_appkit_core","import_connect_core","import_vue","import_connect_appkit_core","import_connect_core","import_vue","import_connect_appkit_core","import_vue","import_vue","import_vue","import_vue","import_vue","import_connect_appkit_core","import_connect_core","import_vue","import_connect_appkit_core","import_vue","import_connect_appkit_core","import_vue","import_connect_appkit_core","import_vue","import_connect_appkit_core","import_connect_core","import_vue","import_connect_appkit_core","import_connect_core","import_vue","import_connect_appkit_core","import_vue","import_connect_appkit_core","import_connect_core","import_vue","import_connect_appkit_core","import_connect_core","import_vue","import_connect_appkit_core","import_connect_core","import_vue","import_connect_appkit_core","import_vue","import_vue","import_connect_appkit_core","import_vue","import_vue","import_connect_core","import_vue","import_vue","import_vue","import_vue","import_connect_appkit_core","import_vue","import_connect_appkit_core","import_vue"]}
|