@luno-kit/react 0.0.8 → 0.0.9

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.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/constants.ts","../src/hooks/useIsInitialized.ts","../src/store/createLunoStore.ts","../src/context/LunoContext.ts","../src/context/LunoProvider.tsx","../src/hooks/useLuno.ts","../src/hooks/useAccount.ts","../src/hooks/useAccounts.ts","../src/hooks/useActiveConnector.ts","../src/hooks/useApi.ts","../src/hooks/useSubscription.ts","../src/hooks/useBalance.ts","../src/hooks/useBlockNumber.ts","../src/hooks/useChain.ts","../src/hooks/useChains.ts","../src/hooks/useConfig.ts","../src/hooks/useLunoMutation.ts","../src/hooks/useConnect.ts","../src/hooks/useConnectors.ts","../src/hooks/useDisconnect.ts","../src/hooks/useEstimatePaymentInfo.ts","../src/hooks/useGenesisHash.ts","../src/hooks/useSigner.ts","../src/hooks/usePapiSigner.ts","../src/hooks/useRuntimeVersion.ts","../src/hooks/useSendTransaction.ts","../src/hooks/useSendTransactionHash.ts","../src/hooks/useSignMessage.ts","../src/hooks/useSs58Format.ts","../src/hooks/useStatus.ts","../src/hooks/useSwitchChain.ts"],"names":["PERSIST_KEY","useIsInitialized","isInitialized","useRef","activeConnectorUnsubscribeFunctions","cleanupActiveConnectorListeners","unsub","e","useLunoStore","create","set","get","newConfig","storedChainId","normalizedStoredChainId","initialChainId","c","initialChain","apiInstance","isReady","accountOrPublicKey","accounts","config","targetPublicKey","nextAccount","acc","accountInfo","connectorId","targetChainId","connector","previouslyActiveConnector","handleAccountsChanged","newAccounts","selectedAccount","storedAccountJson","storedAccount","restoredAccount","isSameAddress","handleDisconnect","chainIdToUse","accountsFromWallet","currentStoreChainId","chainIdToSet","newChain","err","activeConnector","status","newChainId","currentChainId","currentApi","account","newApi","createApi","LunoContext","React","LunoProvider","configFromProps","children","_setConfig","_setApi","_setIsApiReady","_setApiError","setAccount","configInStore","connect","currentChain","isApiReady","apiError","disconnect","switchChain","markAsInitialized","clearApiState","useCallback","useEffect","chainConfig","transportConfig","api","sleep","lastConnectorId","lastChainId","error","apiSs58","contextValue","useMemo","jsx","useLuno","context","useContext","useAccount","formattedAccount","newAddress","convertAddress","useAccounts","useActiveConnector","useApi","defaultTransform","data","useSubscription","userQueryKey","factory","params","options","setError","useState","queryClient","useQueryClient","enabled","transform","defaultValue","unsubscribeRef","resolvedParams","queryKey","factoryFn","boundFn","callback","result","transformedData","isLoading","useQuery","DEFAULT_TOKEN_DECIMALS","transformBalance","results","chainProperties","locks","free","reserved","frozen","total","transferable","formatBalance","lock","useBalance","address","useBlockNumber","blockNumberBn","useChain","useChains","useConfig","useLunoMutation","mutationFn","hookLevelOptions","tanstackMutationHookOptions","mutation","useMutation","variables","callTimeOptions","useConnect","hookLevelConfig","mutationResult","useConnectors","useDisconnect","useEstimatePaymentInfo","setData","setIsLoading","estimate","extrinsic","senderAddress","sender","decimals","paymentInfo","useGenesisHash","useSigner","signer","setSigner","usePapiSigner","papiSigner","setPapiSigner","createPapiSigner","useRuntimeVersion","useSendTransaction","txStatus","setTxStatus","detailedTxStatus","setDetailedTxStatus","txError","setTxError","sendTransactionFn","resolve","reject","unsubscribe","dispatchError","events","dispatchInfo","txHash","txIndex","resolveAndUnsubscribe","receipt","rejectAndUnsubscribe","getReadableDispatchError","useSendTransactionHash","useSignMessage","validAccount","signatureString","DEFAULT_SS58_FORMAT","useSs58Format","configuredSs58Fallback","ss58","format","isNumber","useStatus","useSwitchChain","storeSwitchChain"],"mappings":"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","file":"index.js","sourcesContent":["export const PERSIST_KEY = {\n LAST_CONNECTOR_ID: 'lastConnectorId',\n LAST_CHAIN_ID: 'lastChainId',\n LAST_SELECTED_ACCOUNT_INFO: 'lastSelectedAccountInfo',\n} as const;\n","import { useRef } from 'react';\n\nexport const useIsInitialized = () => {\n const isInitialized = useRef(false);\n return {\n isInitialized: isInitialized.current,\n markAsInitialized: () => {\n isInitialized.current = true;\n },\n };\n};\n","import { isSameAddress } from '@luno-kit/core/utils';\nimport { create } from 'zustand';\nimport { PERSIST_KEY } from '../constants';\nimport type { Account, LunoState } from '../types';\nimport { ConnectionStatus } from '../types';\nimport { createApi } from '../utils';\n\ninterface StoredAccountInfo {\n publicKey?: string;\n address: string;\n name?: string;\n source?: string;\n}\n\nlet activeConnectorUnsubscribeFunctions: (() => void)[] = [];\n\nconst cleanupActiveConnectorListeners = () => {\n activeConnectorUnsubscribeFunctions.forEach((unsub) => {\n try {\n unsub();\n } catch (e) {\n console.warn('[LunoStore] Error during listener cleanup:', e);\n }\n });\n activeConnectorUnsubscribeFunctions = [];\n};\n\nexport const useLunoStore = create<LunoState>((set, get) => ({\n config: undefined,\n status: ConnectionStatus.Disconnected,\n activeConnector: undefined,\n accounts: [],\n account: undefined,\n currentChainId: undefined,\n currentChain: undefined,\n currentApi: undefined,\n isApiReady: false,\n apiError: null,\n\n _setConfig: async (newConfig) => {\n cleanupActiveConnectorListeners();\n\n let storedChainId: string | null = null;\n try {\n storedChainId = await newConfig.storage.getItem(PERSIST_KEY.LAST_CHAIN_ID);\n } catch (e) {\n console.warn('[LunoStore] Failed to read stored chain ID from storage:', e);\n }\n\n const normalizedStoredChainId = storedChainId?.toLowerCase();\n\n const initialChainId =\n normalizedStoredChainId &&\n newConfig.chains.some((c) => c.genesisHash.toLowerCase() === normalizedStoredChainId)\n ? normalizedStoredChainId\n : newConfig.chains[0]?.genesisHash;\n\n const initialChain = initialChainId\n ? newConfig.chains.find((c) => c.genesisHash.toLowerCase() === initialChainId)\n : undefined;\n\n set({\n config: newConfig,\n status: ConnectionStatus.Disconnected,\n activeConnector: undefined,\n accounts: [],\n currentChainId: initialChainId,\n currentChain: initialChain,\n });\n },\n\n _setApi: (apiInstance) => {\n set({ currentApi: apiInstance });\n },\n\n _setIsApiReady: (isReady) => {\n set({ isApiReady: isReady });\n },\n\n setAccount: async (accountOrPublicKey) => {\n if (!accountOrPublicKey) return;\n\n const { accounts, config } = get();\n\n const targetPublicKey =\n typeof accountOrPublicKey === 'string'\n ? accountOrPublicKey.toLowerCase()\n : accountOrPublicKey.publicKey?.toLowerCase();\n\n const nextAccount = accounts.find((acc) => acc.publicKey?.toLowerCase() === targetPublicKey);\n\n if (!nextAccount) {\n throw new Error(\n '[LunoStore] setAccount: The provided account or address is not in the current accounts list. Ignored.'\n );\n }\n\n set({ account: nextAccount });\n\n if (config) {\n try {\n const accountInfo: StoredAccountInfo = {\n publicKey: nextAccount.publicKey,\n address: nextAccount.address,\n name: nextAccount.name,\n source: nextAccount.meta?.source,\n };\n await config.storage.setItem(\n PERSIST_KEY.LAST_SELECTED_ACCOUNT_INFO,\n JSON.stringify(accountInfo)\n );\n console.log(`[LunoStore] Persisted selected account: ${nextAccount.address}`);\n } catch (e) {\n console.error('[LunoStore] Failed to persist selected account:', e);\n }\n }\n },\n\n connect: async (connectorId, targetChainId) => {\n const config = get().config;\n if (!config) {\n set({ status: ConnectionStatus.Disconnected });\n\n throw new Error('[LunoStore] LunoConfig has not been initialized. Cannot connect.');\n }\n\n const connector = config.connectors.find((c) => c.id === connectorId);\n if (!connector) {\n set({ status: ConnectionStatus.Disconnected });\n\n throw new Error(`[LunoStore] Connector with ID \"${connectorId}\" not found in LunoConfig.`);\n }\n\n set({ status: ConnectionStatus.Connecting });\n\n const previouslyActiveConnector = get().activeConnector;\n if (previouslyActiveConnector && previouslyActiveConnector.id !== connector.id) {\n console.log(\n `[LunoStore] Switching connector. Cleaning up listeners for old connector: ${previouslyActiveConnector.id}`\n );\n cleanupActiveConnectorListeners();\n } else if (previouslyActiveConnector && previouslyActiveConnector.id === connector.id) {\n console.log(\n `[LunoStore] Attempting to reconnect with the same connector: ${connector.id}. Cleaning up existing listeners.`\n );\n cleanupActiveConnectorListeners();\n }\n\n try {\n const handleAccountsChanged = async (newAccounts: Account[]) => {\n console.log(`[LunoStore] accountsChanged event from ${connector.name}:`, newAccounts);\n if (newAccounts.length === 0) {\n await get().disconnect();\n return;\n }\n\n newAccounts.forEach((acc) => {\n if (!acc.publicKey) {\n console.warn(\n `[LunoStore] Account ${acc.address} (from ${connector.name}) is missing publicKey.`\n );\n }\n });\n\n let selectedAccount = newAccounts[0];\n\n try {\n const storedAccountJson = await config.storage.getItem(\n PERSIST_KEY.LAST_SELECTED_ACCOUNT_INFO\n );\n if (storedAccountJson) {\n const storedAccount: StoredAccountInfo = JSON.parse(storedAccountJson);\n\n const restoredAccount = newAccounts.find(\n (acc) =>\n (storedAccount.publicKey &&\n acc.publicKey?.toLowerCase() === storedAccount.publicKey.toLowerCase()) ||\n isSameAddress(acc.address, storedAccount.address)\n );\n\n if (restoredAccount) {\n selectedAccount = restoredAccount;\n }\n }\n } catch (e) {\n console.warn('[LunoStore] Failed to restore account during accountsChanged:', e);\n }\n\n set({ accounts: newAccounts, account: selectedAccount });\n };\n\n const handleDisconnect = () => {\n console.log(`[LunoStore] disconnect event from ${connector.name}`);\n if (get().activeConnector?.id === connector.id) {\n cleanupActiveConnectorListeners();\n try {\n config.storage.removeItem(PERSIST_KEY.LAST_CONNECTOR_ID);\n config.storage.removeItem(PERSIST_KEY.LAST_CHAIN_ID);\n console.log(\n '[LunoStore] Removed persisted connection info from storage due to disconnect event.'\n );\n } catch (e) {\n console.error('[LunoStore] Failed to remove connection info from storage:', e);\n }\n\n set({\n status: ConnectionStatus.Disconnected,\n activeConnector: undefined,\n accounts: [],\n });\n } else {\n console.warn(\n `[LunoStore] Received disconnect event from an inactive connector ${connector.name}. Ignored.`\n );\n }\n };\n\n connector.on('accountsChanged', handleAccountsChanged);\n activeConnectorUnsubscribeFunctions.push(() =>\n connector.off('accountsChanged', handleAccountsChanged)\n );\n\n connector.on('disconnect', handleDisconnect);\n activeConnectorUnsubscribeFunctions.push(() => connector.off('disconnect', handleDisconnect));\n\n const chainIdToUse = targetChainId || get().currentChainId || config.chains[0]?.genesisHash;\n\n const accountsFromWallet = await connector.connect(\n config.appName,\n config.chains,\n chainIdToUse\n );\n\n if (!accountsFromWallet || accountsFromWallet?.length === 0) {\n throw new Error(`[LunoStore] No accounts found from wallet`);\n }\n\n let selectedAccount = accountsFromWallet[0];\n\n try {\n const storedAccountJson = await config.storage.getItem(\n PERSIST_KEY.LAST_SELECTED_ACCOUNT_INFO\n );\n if (storedAccountJson) {\n const storedAccount: StoredAccountInfo = JSON.parse(storedAccountJson);\n\n const restoredAccount = accountsFromWallet.find(\n (acc) =>\n (storedAccount.publicKey &&\n acc.publicKey?.toLowerCase() === storedAccount.publicKey.toLowerCase()) ||\n isSameAddress(acc.address, storedAccount.address)\n );\n\n if (restoredAccount) {\n selectedAccount = restoredAccount;\n console.log(\n `[LunoStore] Restored previously selected account: ${selectedAccount.address}`\n );\n } else {\n console.log(\n '[LunoStore] Previously selected account not found in current accounts list, using first account'\n );\n }\n }\n } catch (e) {\n console.warn('[LunoStore] Failed to restore selected account from storage:', e);\n }\n\n set({\n activeConnector: connector,\n accounts: accountsFromWallet,\n status: ConnectionStatus.Connected,\n account: selectedAccount,\n });\n\n try {\n config.storage.setItem(PERSIST_KEY.LAST_CONNECTOR_ID, connector.id);\n console.log(`[LunoStore] Persisted connectorId: ${connector.id}`);\n } catch (e) {\n console.error('[LunoStore] Failed to persist connectorId to storage:', e);\n }\n\n const currentStoreChainId = get().currentChainId;\n const chainIdToSet = targetChainId || currentStoreChainId || config.chains[0]?.genesisHash;\n\n if (chainIdToSet) {\n const newChain = config.chains.find((c) => c.genesisHash === chainIdToSet);\n if (newChain) {\n if (chainIdToSet !== currentStoreChainId || !get().currentApi) {\n set({\n currentChainId: chainIdToSet,\n currentChain: newChain,\n currentApi: undefined,\n });\n }\n try {\n config.storage.setItem(PERSIST_KEY.LAST_CHAIN_ID, chainIdToSet);\n console.log(`[LunoStore] Persisted chainId: ${chainIdToSet}`);\n } catch (e) {\n console.error('[LunoStore] Failed to persist chainId to storage:', e);\n }\n } else {\n console.warn(\n `[LunoStore] After connection, target chain ID \"${chainIdToSet}\" was not found in config. Current chain state might not have changed. Not persisting chainId.`\n );\n }\n }\n // else {\n // console.warn(\n // `[LunoStore] Could not determine target chain ID after connection. Please check config.`\n // );\n // }\n } catch (err: any) {\n cleanupActiveConnectorListeners();\n set({\n status: ConnectionStatus.Disconnected,\n activeConnector: undefined,\n accounts: [],\n });\n\n throw new Error(\n `[LunoStore] Error connecting with ${connector.name}: ${err?.message || err}`\n );\n }\n },\n\n disconnect: async () => {\n const { activeConnector, status, config } = get();\n\n if (\n !activeConnector ||\n status === ConnectionStatus.Disconnecting ||\n status === ConnectionStatus.Disconnected\n ) {\n console.log(\n '[LunoStore] No active connector or already disconnected/disconnecting. Disconnect action aborted.'\n );\n return;\n }\n\n set({ status: ConnectionStatus.Disconnecting });\n try {\n await activeConnector.disconnect();\n\n if (config) {\n try {\n console.log(\n '[LunoStore] Attempting to remove persisted connection info due to user disconnect action...'\n );\n await config.storage.removeItem(PERSIST_KEY.LAST_CONNECTOR_ID);\n await config.storage.removeItem(PERSIST_KEY.LAST_CHAIN_ID);\n await config.storage.removeItem(PERSIST_KEY.LAST_SELECTED_ACCOUNT_INFO);\n console.log('[LunoStore] Removed persisted connection info from storage.');\n } catch (e) {\n console.error(\n '[LunoStore] Failed to remove connection info from storage during disconnect action:',\n e\n );\n }\n }\n\n cleanupActiveConnectorListeners();\n\n set({\n status: ConnectionStatus.Disconnected,\n activeConnector: undefined,\n accounts: [],\n account: undefined,\n });\n if (get().status !== ConnectionStatus.Disconnected) {\n console.warn(\n \"[LunoStore] disconnect method called, but status is not yet 'disconnected' (event handler might be delayed or did not fire). Check connector events.\"\n );\n }\n } catch (err: any) {\n set({ status: ConnectionStatus.Connected });\n throw new Error(\n `[LunoStore] Error disconnecting from ${activeConnector.name}: ${err?.message || err}`\n );\n }\n },\n\n switchChain: async (newChainId: string) => {\n const { config, currentChainId, currentApi, activeConnector, account, accounts } = get();\n\n if (!config) {\n throw new Error('[LunoStore] LunoConfig has not been initialized. Cannot switch chain.');\n }\n if (newChainId === currentChainId) {\n console.log(`[LunoStore] Already on chain ${newChainId}. No switch needed.`);\n return;\n }\n\n const newChain = config.chains.find((c) => c.genesisHash === newChainId);\n if (!newChain) {\n throw new Error(`[LunoStore] Chain with ID \"${newChainId}\" not found in LunoConfig.`);\n }\n\n try {\n try {\n if (currentApi && currentApi.status === 'connected') {\n await currentApi.disconnect();\n }\n } catch (e) {\n console.warn('[LunoStore] Failed to disconnect from previous chain:', e);\n }\n\n console.log(`[LunoStore] Attempting to switch chain to ${newChain.name} (ID: ${newChainId})`);\n set({\n currentChainId: newChainId,\n currentChain: newChain,\n currentApi: undefined,\n isApiReady: false,\n apiError: null,\n });\n\n const newApi = await createApi({ config, chainId: newChainId });\n\n set({\n currentApi: newApi,\n isApiReady: true,\n });\n\n await config.storage.setItem(PERSIST_KEY.LAST_CHAIN_ID, newChainId);\n } catch (e: any) {\n set({\n apiError: e,\n isApiReady: false,\n });\n }\n },\n _setApiError: (err) => {\n set({ apiError: err });\n },\n}));\n","import type { Account, Chain, Config, Connector, HexString } from '@luno-kit/core/types';\nimport type { LegacyClient } from 'dedot';\nimport React from 'react';\nimport type { ConnectionStatus } from '../types';\n\nexport interface LunoContextState {\n config?: Config;\n status: ConnectionStatus;\n activeConnector?: Connector;\n accounts: Account[];\n account?: Account;\n setAccount: (accountOrPublicKey?: Account | HexString) => void;\n currentChainId?: string;\n currentChain?: Chain;\n currentApi?: LegacyClient;\n isApiReady: boolean;\n apiError: Error | null;\n\n connect: (connectorId: string, targetChainId?: string) => Promise<void>;\n disconnect: () => Promise<void>;\n switchChain: (newChainId: string) => Promise<void>;\n}\n\nexport const LunoContext = React.createContext<LunoContextState | undefined>(\n {} as LunoContextState\n);\n","import type React from 'react';\nimport { type ReactNode, useCallback, useEffect, useMemo } from 'react';\nimport { PERSIST_KEY } from '../constants';\nimport { useIsInitialized } from '../hooks/useIsInitialized';\nimport { useLunoStore } from '../store';\nimport type { Chain, Config, Transport } from '../types';\nimport { createApi, sleep } from '../utils';\nimport { LunoContext, type LunoContextState } from './LunoContext';\n\ninterface LunoProviderProps {\n config: Config;\n children: ReactNode;\n}\n\nexport const LunoProvider: React.FC<LunoProviderProps> = ({\n config: configFromProps,\n children,\n}: LunoProviderProps) => {\n const {\n _setConfig,\n _setApi,\n _setIsApiReady,\n _setApiError,\n setAccount,\n currentChainId,\n config: configInStore,\n currentApi,\n connect,\n status,\n activeConnector,\n accounts,\n account,\n currentChain,\n isApiReady,\n apiError,\n disconnect,\n switchChain,\n } = useLunoStore();\n const { markAsInitialized, isInitialized } = useIsInitialized();\n\n const clearApiState = useCallback(() => {\n _setApi(undefined);\n _setIsApiReady(false);\n }, [_setApi, _setIsApiReady]);\n\n useEffect(() => {\n if (configFromProps) {\n console.log('[LunoProvider] Setting config to store:', configFromProps);\n _setConfig(configFromProps);\n }\n }, [configFromProps]);\n\n useEffect(() => {\n if (isInitialized) return;\n if (!configFromProps || !currentChainId) {\n if (currentApi && currentApi.status === 'connected') {\n currentApi.disconnect().catch(console.error);\n }\n clearApiState();\n return;\n }\n\n const chainConfig: Chain | undefined = configFromProps.chains.find(\n (c: Chain) => c.genesisHash === currentChainId\n );\n const transportConfig: Transport | undefined = configFromProps.transports[currentChainId];\n\n if (!chainConfig || !transportConfig) {\n if (currentApi && currentApi.status === 'connected') {\n currentApi.disconnect().catch(console.error);\n }\n clearApiState();\n return;\n }\n\n if (currentApi && currentApi.status === 'connected') {\n console.log(\n '[LunoProvider]: Disconnecting API from previous render cycle:',\n currentApi.runtimeVersion.specName\n );\n currentApi\n .disconnect()\n .catch((e) => console.error('[LunoProvider] Error disconnecting previous API:', e));\n }\n\n clearApiState();\n\n createApi({ config: configFromProps, chainId: currentChainId })\n .then((api) => {\n _setApi(api);\n _setIsApiReady(true);\n })\n .catch((e) => {\n clearApiState();\n _setApiError(e);\n })\n .finally(() => markAsInitialized());\n }, [configFromProps, currentChainId]);\n\n useEffect(() => {\n const performAutoConnect = async () => {\n await sleep(500);\n if (!configFromProps.autoConnect) {\n console.log('[LunoProvider]: AutoConnect disabled or config not set.');\n return;\n }\n\n if (!configFromProps.storage) {\n console.warn('[LunoProvider]: AutoConnect Storage not available, cannot auto-connect.');\n return;\n }\n\n try {\n const lastConnectorId = await configFromProps.storage.getItem(\n PERSIST_KEY.LAST_CONNECTOR_ID\n );\n const lastChainId = await configFromProps.storage.getItem(PERSIST_KEY.LAST_CHAIN_ID);\n\n if (lastConnectorId) {\n console.log(\n `[LunoProvider]: AutoConnect Found persisted session: Connector ID \"${lastConnectorId}\", Chain ID \"${lastChainId}\"`\n );\n await connect(lastConnectorId, lastChainId || undefined);\n } else {\n console.log('[LunoProvider]: AutoConnect No persisted session found or missing data.');\n }\n } catch (error) {\n console.error('[LunoProvider]: AutoConnect Error during auto-connect process:', error);\n }\n };\n\n if (configFromProps) {\n performAutoConnect();\n }\n }, [configFromProps]);\n\n useEffect(() => {\n if (\n isApiReady &&\n currentApi &&\n currentChain &&\n currentChain.ss58Format !== undefined &&\n currentChain.ss58Format !== null\n ) {\n try {\n const apiSs58 = currentApi.consts.system.ss58Prefix;\n\n if (apiSs58 !== null && apiSs58 !== undefined && apiSs58 !== currentChain.ss58Format) {\n console.error(\n `[LunoProvider]: SS58 Format Mismatch for chain \"${currentChain.name}\" (genesisHash: ${currentChain.genesisHash}):\\n` +\n ` - Configured SS58Format: ${currentChain.ss58Format}\\n` +\n ` - Node Runtime SS58Format: ${apiSs58}\\n` +\n `Please verify your Luno configuration for this chain to ensure correct address display and interaction.`\n );\n } else if (apiSs58 === null || apiSs58 === undefined) {\n console.warn(\n `[LunoProvider]: Could not determine SS58 format from the API for chain \"${currentChain.name}\". ` +\n `Cannot validate configured SS58Format (${currentChain.ss58Format}). The application will use the configured value.`\n );\n }\n } catch (e) {\n console.error(\n `[LunoProvider]: Error retrieving SS58 format from API for chain \"${currentChain.name}\" while attempting validation:`,\n e\n );\n }\n }\n }, [isApiReady, currentApi, currentChain]);\n\n const contextValue = useMemo<LunoContextState>(\n () => ({\n config: configInStore,\n status,\n activeConnector,\n accounts,\n account,\n setAccount,\n currentChainId,\n currentChain,\n currentApi,\n isApiReady,\n connect,\n disconnect,\n switchChain,\n apiError,\n }),\n [\n configInStore,\n status,\n activeConnector,\n accounts,\n account,\n currentChainId,\n currentChain,\n currentApi,\n isApiReady,\n apiError,\n connect,\n disconnect,\n switchChain,\n setAccount,\n ]\n );\n\n return <LunoContext.Provider value={contextValue}>{children}</LunoContext.Provider>;\n};\n","import React, { useContext } from 'react';\nimport { LunoContext, type LunoContextState } from '../context/LunoContext';\n\nexport const useLuno = (): LunoContextState => {\n const context = useContext(LunoContext);\n if (context === undefined) {\n throw new Error('useLuno must be used within a LunoProvider');\n }\n return context as LunoContextState;\n};\n","import { convertAddress } from '@luno-kit/core/utils';\nimport { useMemo } from 'react';\nimport type { Account } from '../types';\nimport { useLuno } from './useLuno';\n\nexport interface UseAccountResult {\n account?: Account;\n address?: string;\n}\n\nexport const useAccount = (): UseAccountResult => {\n const { account, currentChain } = useLuno();\n\n const formattedAccount = useMemo(() => {\n if (!account) return;\n if (!currentChain || currentChain?.ss58Format === undefined) return account;\n\n try {\n const newAddress = convertAddress(account.address, currentChain.ss58Format);\n return {\n ...account,\n address: newAddress,\n };\n } catch (error) {\n console.error(\n `[useAccount]: Failed to re-format address for account ${account.address}:`,\n error\n );\n return { ...account };\n }\n }, [account, currentChain, currentChain?.ss58Format]);\n\n return {\n account: formattedAccount,\n address: formattedAccount?.address,\n };\n};\n","import type { HexString } from '@luno-kit/core/types';\nimport { convertAddress } from '@luno-kit/core/utils';\nimport { useMemo } from 'react';\nimport type { Account } from '../types';\nimport { useLuno } from './useLuno';\n\nexport interface UseAccountsResult {\n accounts: Account[];\n selectAccount: (accountOrPublicKey?: Account | HexString) => void;\n}\n\nexport const useAccounts = (): UseAccountsResult => {\n const { accounts, setAccount, currentChain } = useLuno();\n\n const formattedAccounts = useMemo(() => {\n if (!currentChain || currentChain?.ss58Format === undefined) return accounts ?? [];\n return (accounts || []).map((acc) => {\n try {\n const newAddress = convertAddress(acc.address, currentChain.ss58Format);\n return {\n ...acc,\n address: newAddress,\n };\n } catch (error) {\n console.error(\n `[useAccounts]: Failed to re-format address for account ${acc.address}:`,\n error\n );\n return { ...acc };\n }\n });\n }, [accounts, currentChain, currentChain?.ss58Format]);\n\n return { accounts: formattedAccounts, selectAccount: setAccount };\n};\n","import type { Connector } from '../types';\nimport { useLuno } from './useLuno';\n\nexport const useActiveConnector = (): Connector | undefined => {\n const { activeConnector } = useLuno();\n return activeConnector;\n};\n","import type { LegacyClient } from 'dedot';\nimport { useLuno } from './useLuno';\n\nexport interface UseApiResult {\n api?: LegacyClient;\n isApiReady: boolean;\n apiError: Error | null;\n}\n\nexport const useApi = (): UseApiResult => {\n const { currentApi, isApiReady, apiError } = useLuno();\n\n return {\n api: currentApi,\n isApiReady,\n apiError,\n };\n};\n","import { useQuery, useQueryClient } from '@tanstack/react-query';\nimport type { LegacyClient } from 'dedot';\nimport type { Callback, GenericStorageQuery, Unsub } from 'dedot/types';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { useLuno } from './useLuno';\n\ntype SubscriptionFn<TArgs extends any[], TData> = (\n ...params: [...TArgs, Callback<TData>]\n) => Promise<() => Promise<void>>;\n\nexport interface UseSubscriptionOptions<TData, TTransformed = TData> {\n enabled?: boolean;\n transform?: (data: TData) => TTransformed;\n defaultValue?: TTransformed;\n}\n\ntype ApiBoundSubscriptionFactory<TArgs extends any[], TData> = (\n api: LegacyClient\n) => SubscriptionFn<TArgs, TData>;\n\nexport interface QueryMultiItem {\n fn: GenericStorageQuery;\n args: any[];\n}\n\nexport interface UseSubscriptionProps<TArgs extends any[], TData, TTransformed = TData> {\n queryKey: string | number;\n factory: ApiBoundSubscriptionFactory<TArgs, TData> | ((api: LegacyClient) => any);\n params: TArgs | ((api: LegacyClient) => QueryMultiItem[]);\n options?: UseSubscriptionOptions<TData, TTransformed>;\n}\n\nexport interface UseSubscriptionResult<TTransformed> {\n data?: TTransformed;\n error?: Error;\n isLoading: boolean;\n}\n\nconst defaultTransform = <T>(data: T): T => data;\n\nexport const useSubscription = <TArgs extends any[], TData, TTransformed = TData>({\n queryKey: userQueryKey,\n factory,\n params,\n options = {},\n}: UseSubscriptionProps<TArgs, TData, TTransformed>): UseSubscriptionResult<TTransformed> => {\n const [error, setError] = useState<Error | undefined>(undefined);\n const { currentApi, isApiReady } = useLuno();\n const queryClient = useQueryClient();\n const {\n enabled = true,\n transform = defaultTransform as (data: TData) => TTransformed,\n defaultValue,\n } = options;\n const unsubscribeRef = useRef<(() => Promise<void>) | null>(null);\n\n const resolvedParams = useMemo(() => {\n if (!params || !currentApi || !isApiReady) return undefined;\n return typeof params === 'function' ? [params(currentApi)] : params;\n }, [params, currentApi, isApiReady]);\n\n const queryKey = useMemo(\n () => [userQueryKey, resolvedParams, currentApi?.genesisHash],\n [userQueryKey, resolvedParams, currentApi?.genesisHash]\n );\n\n useEffect(() => {\n if (unsubscribeRef.current) {\n unsubscribeRef.current();\n unsubscribeRef.current = null;\n }\n\n if (!enabled || !factory || !currentApi || !resolvedParams || !isApiReady) {\n return;\n }\n\n try {\n const factoryFn = factory(currentApi);\n const boundFn = typeof factoryFn === 'function' ? factoryFn.bind(currentApi) : factoryFn;\n\n const callback: Callback<TData> = (result: TData) => {\n try {\n const transformedData = transform(result);\n queryClient.setQueryData(queryKey, transformedData);\n setError(undefined);\n } catch (err) {\n setError(new Error(`[useSubscription]: ${err}`));\n }\n };\n\n boundFn(...resolvedParams, callback)\n .then((unsub: Unsub) => {\n unsubscribeRef.current = unsub;\n })\n .catch((err: Error) => {\n setError(new Error(`[useSubscription]: ${err}`));\n });\n } catch (err) {\n setError(new Error(`[useSubscription]: ${err}`));\n }\n\n return () => {\n if (unsubscribeRef.current) {\n unsubscribeRef.current();\n unsubscribeRef.current = null;\n setError(undefined);\n }\n };\n }, [JSON.stringify(queryKey), enabled, queryClient]);\n\n const { data, isLoading } = useQuery({\n queryKey,\n queryFn: () => {\n return Promise.resolve(defaultValue);\n },\n enabled: false,\n initialData: defaultValue,\n });\n\n return {\n data: data as TTransformed | undefined,\n error: error as Error | undefined,\n isLoading: !!(enabled && isApiReady && !data),\n };\n};\n","import { formatBalance } from '@luno-kit/core/utils';\nimport type { LegacyClient } from 'dedot';\nimport type { AccountBalance } from '../types';\nimport { useLuno } from './useLuno';\nimport {\n type QueryMultiItem,\n type UseSubscriptionResult,\n useSubscription,\n} from './useSubscription';\n\ninterface AccountData {\n data: {\n free: bigint | string | number;\n reserved: bigint | string | number;\n frozen: bigint | string | number;\n };\n}\n\ninterface BalanceLock {\n id: string | number;\n amount: bigint | string | number;\n reasons?: string | number;\n}\n\nexport interface ChainProperties {\n ss58Format?: number;\n tokenDecimals?: number;\n tokenSymbol?: string;\n}\n\nconst DEFAULT_TOKEN_DECIMALS = 10;\n\nconst transformBalance = (results: any[], chainProperties: ChainProperties) => {\n const accountInfo: AccountData = results[0];\n const locks: BalanceLock[] = results[1];\n\n const free = accountInfo.data.free;\n const reserved = accountInfo.data.reserved;\n const frozen = accountInfo.data.frozen;\n const total = BigInt(free) + BigInt(reserved);\n\n const transferable = free > frozen ? BigInt(free) - BigInt(frozen) : 0n;\n\n return {\n free,\n total,\n reserved,\n transferable,\n formattedTransferable: formatBalance(transferable, chainProperties.tokenDecimals),\n formattedTotal: formatBalance(total, chainProperties.tokenDecimals),\n locks: locks.map((lock) => ({\n id: lock.id,\n amount: lock.amount,\n reason: lock.reasons,\n lockHuman: formatBalance(lock.amount, chainProperties.tokenDecimals),\n })),\n } as AccountBalance;\n};\n\nexport interface UseBalanceProps {\n address?: string;\n}\n\nexport type UseBalanceResult = UseSubscriptionResult<AccountBalance>;\n\nexport const useBalance = ({ address }: UseBalanceProps): UseBalanceResult => {\n const { currentApi, isApiReady, currentChain } = useLuno();\n\n return useSubscription<QueryMultiItem[], [AccountData, BalanceLock[]], AccountBalance>({\n queryKey: '/native-balance',\n factory: (api: LegacyClient) => api.queryMulti,\n params: (api: LegacyClient) => [\n { fn: api.query.system.account, args: [address] },\n { fn: api.query.balances.locks, args: [address] },\n ],\n options: {\n enabled: !!currentApi && isApiReady && !!address,\n transform: (results) => {\n const chainProperties: ChainProperties = {\n tokenDecimals: currentChain?.nativeCurrency?.decimals ?? DEFAULT_TOKEN_DECIMALS,\n tokenSymbol: currentChain?.nativeCurrency?.symbol,\n ss58Format: currentChain?.ss58Format,\n };\n return transformBalance(results, chainProperties);\n },\n },\n });\n};\n","import type { BlockNumber } from 'dedot/codecs';\nimport { useLuno } from './useLuno';\nimport { type UseSubscriptionResult, useSubscription } from './useSubscription';\n\nexport type UseBlockNumberResult = UseSubscriptionResult<number>;\n\nexport const useBlockNumber = (): UseBlockNumberResult => {\n const { currentApi, isApiReady } = useLuno();\n\n const transform = (blockNumberBn: BlockNumber): BlockNumber => {\n return blockNumberBn;\n };\n\n return useSubscription<[], BlockNumber, BlockNumber>({\n queryKey: '/block-number',\n factory: (api) => api.query.system.number,\n params: [],\n options: {\n enabled: !!currentApi && isApiReady,\n transform: transform,\n },\n });\n};\n","import type { Chain } from '../types';\nimport { useLuno } from './useLuno';\n\nexport interface UseChainResult {\n chain?: Chain;\n chainId?: string;\n}\n\nexport const useChain = (): UseChainResult => {\n const { currentChain, currentChainId } = useLuno();\n return {\n chain: currentChain,\n chainId: currentChainId,\n };\n};\n","import type { Chain } from '../types';\nimport { useLuno } from './useLuno';\n\nexport const useChains = (): Chain[] => {\n const { config } = useLuno();\n return config?.chains ? [...config.chains] : [];\n};\n","import type { Config } from '../types';\nimport { useLuno } from './useLuno';\n\nexport const useConfig = (): Config | undefined => {\n const { config } = useLuno();\n return config;\n};\n","import {\n type MutateOptions as ReactQueryMutateOptions,\n type UseMutationOptions,\n useMutation,\n} from '@tanstack/react-query';\n\nexport type LunoMutationOptions<\n TData = unknown,\n TError = Error,\n TVariables = void,\n TContext = unknown,\n> = Partial<\n Pick<\n ReactQueryMutateOptions<TData, TError, TVariables, TContext>,\n 'onSuccess' | 'onError' | 'onSettled'\n >\n>;\n\nexport interface LunoMutationResult<\n TData = unknown,\n TError = Error,\n TVariables = void,\n TContext = unknown,\n> {\n mutate: (\n variables: TVariables,\n options?: LunoMutationOptions<TData, TError, TVariables, TContext>\n ) => void;\n\n mutateAsync: (\n variables: TVariables,\n options?: LunoMutationOptions<TData, TError, TVariables, TContext>\n ) => Promise<TData>;\n\n data: TData | undefined;\n error: TError | null;\n isError: boolean;\n isIdle: boolean;\n isPending: boolean;\n isSuccess: boolean;\n status: 'idle' | 'pending' | 'error' | 'success';\n reset: () => void;\n variables: TVariables | undefined;\n}\n\nexport function useLunoMutation<\n TData = unknown,\n TError = Error,\n TVariables = void,\n TContext = unknown,\n>(\n mutationFn: (variables: TVariables) => Promise<TData>,\n hookLevelOptions?: LunoMutationOptions<TData, TError, TVariables, TContext>\n): LunoMutationResult<TData, TError, TVariables, TContext> {\n const tanstackMutationHookOptions: Pick<\n UseMutationOptions<TData, TError, TVariables, TContext>,\n 'onSuccess' | 'onError' | 'onSettled'\n > = {};\n\n if (hookLevelOptions?.onSuccess) {\n tanstackMutationHookOptions.onSuccess = hookLevelOptions.onSuccess;\n }\n if (hookLevelOptions?.onError) {\n tanstackMutationHookOptions.onError = hookLevelOptions.onError;\n }\n if (hookLevelOptions?.onSettled) {\n tanstackMutationHookOptions.onSettled = hookLevelOptions.onSettled;\n }\n\n const mutation = useMutation<TData, TError, TVariables, TContext>({\n mutationFn,\n retry: false,\n throwOnError: false,\n ...tanstackMutationHookOptions,\n });\n\n return {\n mutate: (\n variables: TVariables,\n callTimeOptions?: LunoMutationOptions<TData, TError, TVariables, TContext>\n ) => {\n mutation.mutate(\n variables,\n callTimeOptions as ReactQueryMutateOptions<TData, TError, TVariables, TContext>\n );\n },\n mutateAsync: (\n variables: TVariables,\n callTimeOptions?: LunoMutationOptions<TData, TError, TVariables, TContext>\n ) => {\n return mutation.mutateAsync(\n variables,\n callTimeOptions as ReactQueryMutateOptions<TData, TError, TVariables, TContext>\n );\n },\n data: mutation.data,\n error: mutation.error,\n isError: mutation.isError,\n isIdle: mutation.isIdle,\n isPending: mutation.isPending,\n isSuccess: mutation.isSuccess,\n reset: mutation.reset,\n status: mutation.status,\n variables: mutation.variables,\n };\n}\n","import type { ConnectionStatus, Connector } from '../types';\nimport { sleep } from '../utils';\nimport { useLuno } from './useLuno';\nimport { type LunoMutationOptions, useLunoMutation } from './useLunoMutation';\n\nexport interface ConnectVariables {\n connectorId: string;\n targetChainId?: string;\n}\n\nexport type UseConnectOptions = LunoMutationOptions<void, Error, ConnectVariables, unknown>;\n\nexport interface UseConnectResult {\n connect: (variables: ConnectVariables, options?: UseConnectOptions) => void;\n connectAsync: (variables: ConnectVariables, options?: UseConnectOptions) => Promise<void>;\n connectors: Connector[];\n activeConnector?: Connector;\n status: ConnectionStatus;\n data: void | undefined;\n error: Error | null;\n isError: boolean;\n isIdle: boolean;\n isPending: boolean;\n isSuccess: boolean;\n reset: () => void;\n variables: ConnectVariables | undefined;\n}\n\nexport const useConnect = (hookLevelConfig?: UseConnectOptions): UseConnectResult => {\n const { connect, config, activeConnector, status } = useLuno();\n\n const connectFn = async (variables: ConnectVariables): Promise<void> => {\n await connect(variables.connectorId, variables.targetChainId);\n await sleep();\n };\n\n const mutationResult = useLunoMutation<void, Error, ConnectVariables, unknown>(\n connectFn,\n hookLevelConfig\n );\n\n return {\n connect: mutationResult.mutate,\n connectAsync: mutationResult.mutateAsync,\n connectors: config?.connectors ? [...config.connectors] : [],\n activeConnector,\n status,\n data: mutationResult.data,\n error: mutationResult.error,\n isError: mutationResult.isError,\n isIdle: mutationResult.isIdle,\n isPending: mutationResult.isPending,\n isSuccess: mutationResult.isSuccess,\n reset: mutationResult.reset,\n variables: mutationResult.variables,\n };\n};\n","import type { Connector } from '../types';\nimport { useLuno } from './useLuno';\n\nexport const useConnectors = (): Connector[] => {\n const { config } = useLuno();\n return config?.connectors ? [...config.connectors] : [];\n};\n","import type { ConnectionStatus } from '../types';\nimport { useLuno } from './useLuno';\nimport { type LunoMutationOptions, useLunoMutation } from './useLunoMutation';\n\nexport type UseDisconnectOptions = LunoMutationOptions<void, Error, void, unknown>;\n\nexport interface UseDisconnectResult {\n disconnect: (options?: UseDisconnectOptions) => void;\n disconnectAsync: (options?: UseDisconnectOptions) => Promise<void>;\n status: ConnectionStatus;\n data: void | undefined;\n error: Error | null;\n isError: boolean;\n isIdle: boolean;\n isPending: boolean;\n isSuccess: boolean;\n reset: () => void;\n variables: void | undefined;\n}\n\nexport const useDisconnect = (hookLevelConfig?: UseDisconnectOptions): UseDisconnectResult => {\n const { disconnect, status } = useLuno();\n\n const disconnectFn = async (): Promise<void> => {\n await disconnect();\n };\n\n const mutationResult = useLunoMutation<void, Error, void, unknown>(disconnectFn, hookLevelConfig);\n\n return {\n disconnect: (options?: UseDisconnectOptions) => mutationResult.mutate(undefined, options),\n disconnectAsync: (options?: UseDisconnectOptions) =>\n mutationResult.mutateAsync(undefined, options),\n status,\n data: mutationResult.data,\n error: mutationResult.error,\n isError: mutationResult.isError,\n isIdle: mutationResult.isIdle,\n isPending: mutationResult.isPending,\n isSuccess: mutationResult.isSuccess,\n reset: mutationResult.reset,\n variables: mutationResult.variables,\n };\n};\n","import { useCallback, useState } from 'react';\nimport type { ISubmittableExtrinsic, TxPaymentInfo } from 'dedot/types';\nimport { useLuno } from './useLuno';\nimport { formatBalance } from '@luno-kit/core/utils';\n\ninterface PaymentInfo extends TxPaymentInfo {\n partialFeeFormatted: string;\n}\n\nexport function useEstimatePaymentInfo() {\n const { account, currentChain } = useLuno();\n const [data, setData] = useState<PaymentInfo | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const estimate = useCallback(\n async (\n extrinsic: ISubmittableExtrinsic,\n senderAddress?: string\n ): Promise<PaymentInfo | undefined> => {\n const sender = senderAddress || account?.address;\n if (!extrinsic || !sender || !currentChain) return;\n\n setIsLoading(true);\n setError(null);\n\n try {\n const result = await extrinsic.paymentInfo(sender);\n\n const decimals = currentChain.nativeCurrency.decimals;\n\n const paymentInfo = {\n ...result,\n partialFeeFormatted: formatBalance(result.partialFee, decimals),\n };\n\n setData(paymentInfo);\n return paymentInfo;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to estimate payment info');\n setError(error);\n } finally {\n setIsLoading(false);\n }\n },\n [account?.address, currentChain]\n );\n\n return {\n data,\n isLoading,\n error,\n estimate,\n };\n}\n","import type { HexString } from '@luno-kit/core/types';\nimport { useQuery } from '@tanstack/react-query';\nimport { useLuno } from './useLuno';\n\nexport interface UseGenesisHashResult {\n data?: HexString;\n error: Error | null;\n isLoading: boolean;\n}\n\nexport const useGenesisHash = (): UseGenesisHashResult => {\n const { currentApi, currentChainId, isApiReady } = useLuno();\n\n const { data, isLoading, error } = useQuery({\n queryKey: ['/genesis-hash', currentChainId],\n queryFn: async () => {\n return await currentApi!.rpc.chain_getBlockHash(0);\n },\n enabled: !!currentApi && isApiReady && !!currentChainId,\n staleTime: Infinity,\n gcTime: Infinity,\n retry: false,\n });\n\n return { data, isLoading, error };\n};\n","import { useEffect, useState } from 'react';\nimport type { Signer } from '../types';\nimport { useAccount } from './useAccount';\nimport { useLuno } from './useLuno';\n\nexport interface UseSignerResult {\n data?: Signer;\n isLoading: boolean;\n}\n\nexport const useSigner = (): UseSignerResult => {\n const { activeConnector } = useLuno();\n const { account } = useAccount();\n\n const [signer, setSigner] = useState<Signer | undefined>(undefined);\n const [isLoading, setIsLoading] = useState<boolean>(false);\n\n useEffect(() => {\n if (!activeConnector || !account?.address) {\n setSigner(undefined);\n setIsLoading(false);\n return;\n }\n\n setIsLoading(true);\n\n activeConnector\n .getSigner()\n .then((signer) => setSigner(signer))\n .catch(() => setSigner(undefined))\n .finally(() => setIsLoading(false));\n }, [activeConnector, account?.address]);\n\n return { data: signer, isLoading };\n};\n","import type { PapiSigner } from '@luno-kit/core/types';\nimport { createPapiSigner } from '@luno-kit/core/utils';\nimport { useEffect, useState } from 'react';\nimport { useAccount } from './useAccount';\nimport { useSigner } from './useSigner';\n\nexport interface UsePapiSignerResult {\n data?: PapiSigner;\n isLoading: boolean;\n}\n\nexport function usePapiSigner(): UsePapiSignerResult {\n const { data: signer } = useSigner();\n const { address } = useAccount();\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [papiSigner, setPapiSigner] = useState<PapiSigner | undefined>(undefined);\n\n useEffect(() => {\n if (!signer || !address) {\n setPapiSigner(undefined);\n setIsLoading(false);\n return;\n }\n\n setIsLoading(true);\n\n createPapiSigner(address, signer)\n .then((papiSigner: PapiSigner | undefined) => setPapiSigner(papiSigner))\n .catch(() => setPapiSigner(undefined))\n .finally(() => setIsLoading(false));\n }, [signer, address]);\n\n return { data: papiSigner, isLoading };\n}\n","import { type UseQueryResult, useQuery } from '@tanstack/react-query';\nimport type { SubstrateRuntimeVersion } from 'dedot';\nimport { useLuno } from './useLuno';\n\nexport type UseRuntimeVersionResult = UseQueryResult<SubstrateRuntimeVersion, Error>;\n\nexport const useRuntimeVersion = (): UseRuntimeVersionResult => {\n const { currentApi, isApiReady, currentChainId } = useLuno();\n\n return useQuery<\n SubstrateRuntimeVersion,\n Error,\n SubstrateRuntimeVersion,\n readonly (undefined | string)[]\n >({\n queryKey: ['luno', 'runtimeVersion', currentChainId] as const,\n queryFn: async () => {\n return await currentApi!.getRuntimeVersion();\n },\n enabled: !!currentApi && isApiReady && !!currentChainId,\n });\n};\n","import type { HexString } from '@luno-kit/core/types';\nimport type { DispatchError, DispatchInfo } from 'dedot/codecs';\nimport type {\n IEventRecord as EventRecord,\n ISubmittableExtrinsic,\n ISubmittableResult,\n} from 'dedot/types';\nimport { useCallback, useState } from 'react';\nimport type { TxStatus } from '../types';\nimport { getReadableDispatchError } from '../utils';\nimport { useAccount } from './useAccount';\nimport { useLuno } from './useLuno';\nimport { type LunoMutationOptions, useLunoMutation } from './useLunoMutation';\n\nexport type DetailedTxStatus =\n | 'idle'\n | 'broadcasting'\n | 'inBlock'\n | 'finalized'\n | 'invalid'\n | 'dropped';\n\nexport interface TransactionReceipt {\n transactionHash: HexString;\n blockHash: HexString;\n blockNumber?: number;\n readonly events: EventRecord[];\n status: 'failed' | 'success';\n dispatchError?: DispatchError;\n errorMessage?: string;\n dispatchInfo?: DispatchInfo;\n}\n\nexport interface SendTransactionVariables {\n extrinsic: ISubmittableExtrinsic;\n}\n\nexport type UseSendTransactionOptions = LunoMutationOptions<\n TransactionReceipt,\n Error,\n SendTransactionVariables,\n unknown\n>;\n\nexport interface UseSendTransactionResult {\n sendTransaction: (\n variables: SendTransactionVariables,\n options?: UseSendTransactionOptions\n ) => void;\n sendTransactionAsync: (\n variables: SendTransactionVariables,\n options?: UseSendTransactionOptions\n ) => Promise<TransactionReceipt>;\n data: TransactionReceipt | undefined;\n error: Error | null;\n isError: boolean;\n isIdle: boolean;\n isPending: boolean;\n isSuccess: boolean;\n status: 'idle' | 'pending' | 'error' | 'success';\n reset: () => void;\n variables: SendTransactionVariables | undefined;\n txStatus: TxStatus;\n detailedStatus: DetailedTxStatus;\n}\n\nexport function useSendTransaction(\n hookLevelConfig?: UseSendTransactionOptions\n): UseSendTransactionResult {\n const { activeConnector, currentApi, isApiReady } = useLuno();\n const { account } = useAccount();\n\n const [txStatus, setTxStatus] = useState<TxStatus>('idle');\n const [detailedTxStatus, setDetailedTxStatus] = useState<DetailedTxStatus>('idle');\n const [txError, setTxError] = useState<Error | null>(null);\n\n const sendTransactionFn = useCallback(\n async (variables: SendTransactionVariables): Promise<TransactionReceipt> => {\n if (!currentApi || !isApiReady) {\n throw new Error('[useSendTransaction]: Polkadot API is not ready.');\n }\n if (!activeConnector) {\n throw new Error('[useSendTransaction]: No active connector found.');\n }\n if (!account || !account.address || !account.meta?.source) {\n throw new Error(\n '[useSendTransaction]: No active account, address, or account metadata (source) found.'\n );\n }\n if (!variables.extrinsic) {\n throw new Error('[useSendTransaction]: No extrinsic provided to send.');\n }\n\n const signer = await activeConnector.getSigner();\n if (!signer) {\n throw new Error('[useSendTransaction]: Could not retrieve signer from the injector.');\n }\n\n setTxStatus('signing');\n setDetailedTxStatus('idle');\n\n return new Promise<TransactionReceipt>((resolve, reject) => {\n let unsubscribe: (() => void) | undefined;\n\n variables.extrinsic\n .signAndSend(\n account.address,\n { signer },\n ({\n status,\n dispatchError,\n events,\n dispatchInfo,\n txHash,\n txIndex,\n }: ISubmittableResult) => {\n const resolveAndUnsubscribe = (receipt: TransactionReceipt) => {\n if (unsubscribe) unsubscribe();\n resolve(receipt);\n };\n\n const rejectAndUnsubscribe = (error: Error) => {\n if (unsubscribe) unsubscribe();\n setTxError(error);\n reject(error);\n };\n\n switch (status.type) {\n case 'Broadcasting':\n setDetailedTxStatus('broadcasting');\n break;\n case 'BestChainBlockIncluded':\n setDetailedTxStatus('inBlock');\n break;\n case 'Finalized':\n setTxStatus('success');\n setDetailedTxStatus('finalized');\n if (dispatchError) {\n resolveAndUnsubscribe({\n transactionHash: txHash,\n blockHash: status.value?.blockHash,\n blockNumber: status.value?.blockNumber,\n events,\n status: 'failed',\n dispatchError,\n errorMessage: getReadableDispatchError(currentApi, dispatchError),\n dispatchInfo,\n });\n } else {\n resolveAndUnsubscribe({\n transactionHash: txHash,\n blockHash: status.value?.blockHash,\n blockNumber: status.value?.blockNumber,\n events,\n status: 'success',\n dispatchError: undefined,\n errorMessage: undefined,\n dispatchInfo,\n });\n }\n break;\n case 'Invalid':\n setTxStatus('failed');\n setDetailedTxStatus('invalid');\n rejectAndUnsubscribe(new Error(`Transaction invalid: ${txHash}`));\n break;\n case 'Drop':\n setTxStatus('failed');\n setDetailedTxStatus('dropped');\n rejectAndUnsubscribe(new Error(`Transaction dropped: ${txHash}`));\n break;\n }\n }\n )\n .then((unsub: () => void) => {\n unsubscribe = unsub;\n })\n .catch((error) => {\n setTxStatus('failed');\n console.error(\n '[useSendTransaction]: Error in signAndSend promise:',\n error?.message || error\n );\n setTxError(error as Error);\n reject(error);\n });\n });\n },\n [currentApi, isApiReady, activeConnector, account, setTxStatus, setDetailedTxStatus]\n );\n\n const mutationResult = useLunoMutation<\n TransactionReceipt,\n Error,\n SendTransactionVariables,\n unknown\n >(sendTransactionFn, hookLevelConfig);\n\n return {\n sendTransaction: mutationResult.mutate,\n sendTransactionAsync: mutationResult.mutateAsync,\n data: mutationResult.data,\n error: txError || mutationResult.error,\n isError: Boolean(txError) || mutationResult.isError,\n isIdle: mutationResult.isIdle,\n isPending: mutationResult.isPending,\n isSuccess: mutationResult.isSuccess,\n reset: mutationResult.reset,\n status: mutationResult.status,\n variables: mutationResult.variables,\n txStatus: txStatus,\n detailedStatus: detailedTxStatus,\n };\n}\n","import type { HexString } from '@luno-kit/core/types';\nimport type { ISubmittableExtrinsic } from 'dedot/types';\nimport { useCallback, useState } from 'react';\nimport { useLuno } from './useLuno';\nimport { type LunoMutationOptions, useLunoMutation } from './useLunoMutation';\n\nexport interface SendTransactionHashVariables {\n extrinsic: ISubmittableExtrinsic;\n}\n\nexport type UseSendTransactionHashOptions = LunoMutationOptions<\n HexString,\n Error,\n SendTransactionHashVariables,\n unknown\n>;\n\nexport interface UseSendTransactionHashResult {\n sendTransaction: (\n variables: SendTransactionHashVariables,\n options?: UseSendTransactionHashOptions\n ) => void;\n sendTransactionAsync: (\n variables: SendTransactionHashVariables,\n options?: UseSendTransactionHashOptions\n ) => Promise<HexString>;\n data: HexString | undefined;\n error: Error | null;\n isError: boolean;\n isIdle: boolean;\n isPending: boolean;\n isSuccess: boolean;\n status: 'idle' | 'pending' | 'error' | 'success';\n reset: () => void;\n variables: SendTransactionHashVariables | undefined;\n}\n\nexport function useSendTransactionHash(\n hookLevelConfig?: UseSendTransactionHashOptions\n): UseSendTransactionHashResult {\n const { account, activeConnector, currentApi, isApiReady } = useLuno();\n const [txError, setTxError] = useState<Error | null>(null);\n\n const sendTransactionFn = useCallback(\n async (variables: SendTransactionHashVariables): Promise<HexString> => {\n if (!currentApi || !isApiReady) {\n throw new Error('[useSendTransactionHash]: Polkadot API is not ready.');\n }\n if (!activeConnector) {\n throw new Error('[useSendTransactionHash]: No active connector found.');\n }\n if (!account || !account.address || !account.meta?.source) {\n throw new Error(\n '[useSendTransactionHash]: No active account, address, or account metadata (source) found.'\n );\n }\n if (!variables.extrinsic) {\n throw new Error('[useSendTransactionHash]: No extrinsic provided to send.');\n }\n\n const signer = await activeConnector.getSigner();\n if (!signer) {\n throw new Error('[useSendTransactionHash]: Could not retrieve signer from the injector.');\n }\n\n try {\n const txHash = await variables.extrinsic\n .signAndSend(account.address, { signer: signer })\n .catch((e) => {\n throw e;\n });\n return txHash as HexString;\n } catch (error) {\n setTxError(error as Error);\n throw error;\n }\n },\n [currentApi, isApiReady, activeConnector, account]\n );\n\n const mutationResult = useLunoMutation<HexString, Error, SendTransactionHashVariables, unknown>(\n sendTransactionFn,\n hookLevelConfig\n );\n\n return {\n sendTransaction: mutationResult.mutate,\n sendTransactionAsync: mutationResult.mutateAsync,\n data: mutationResult.data,\n error: txError || mutationResult.error,\n isError: Boolean(txError) || mutationResult.isError,\n isIdle: mutationResult.isIdle,\n isPending: mutationResult.isPending,\n isSuccess: mutationResult.isSuccess,\n reset: mutationResult.reset,\n status: mutationResult.status,\n variables: mutationResult.variables,\n };\n}\n","import { isSameAddress } from '@luno-kit/core/utils';\nimport { useLuno } from './useLuno';\nimport { type LunoMutationOptions, useLunoMutation } from './useLunoMutation';\n\nexport interface SignMessageVariables {\n message: string;\n}\n\nexport interface SignMessageData {\n signature: string;\n rawMessage: string;\n addressUsed: string;\n}\n\nexport type UseSignMessageOptions = LunoMutationOptions<\n SignMessageData,\n Error,\n SignMessageVariables,\n unknown\n>;\n\nexport interface UseSignMessageResult {\n signMessage: (variables: SignMessageVariables, options?: UseSignMessageOptions) => void;\n signMessageAsync: (\n variables: SignMessageVariables,\n options?: UseSignMessageOptions\n ) => Promise<SignMessageData>;\n data: SignMessageData | undefined;\n error: Error | null;\n isError: boolean;\n isIdle: boolean;\n isPending: boolean;\n isSuccess: boolean;\n status: 'idle' | 'pending' | 'error' | 'success';\n reset: () => void;\n variables: SignMessageVariables | undefined;\n}\n\nexport function useSignMessage(hookLevelConfig?: UseSignMessageOptions): UseSignMessageResult {\n const { activeConnector, account, accounts } = useLuno();\n\n const mutationFn = async (variables: SignMessageVariables): Promise<SignMessageData> => {\n if (!activeConnector) {\n throw new Error('[useSignMessage]: No active connector found to sign the message.');\n }\n if (!account || !account.address || !account.meta?.source) {\n throw new Error('[useSignMessage]: No address provided for signing.');\n }\n\n if (!accounts.some((acc) => acc.address === account.address)) {\n throw new Error(\n `[useSignMessage]: Address ${account.address} is not managed by ${activeConnector.id}.`\n );\n }\n\n if (!variables.message) {\n throw new Error('[useSignMessage]: No message provided for signing.');\n }\n\n const validAccount = accounts.find((acc) => isSameAddress(acc.address, account.address));\n\n if (!validAccount) {\n throw new Error('[useSignMessage]: Invalid account address.');\n }\n\n const signatureString = await activeConnector.signMessage(\n variables.message,\n validAccount.address\n );\n\n if (!signatureString) {\n throw new Error(\n '[useSignMessage]: Signature was not obtained. The user may have cancelled the request or the connector failed.'\n );\n }\n return {\n signature: signatureString,\n rawMessage: variables.message,\n addressUsed: account.address,\n };\n };\n\n const mutationResult = useLunoMutation<SignMessageData, Error, SignMessageVariables, unknown>(\n mutationFn,\n hookLevelConfig\n );\n\n return {\n signMessage: mutationResult.mutate,\n signMessageAsync: mutationResult.mutateAsync,\n data: mutationResult.data,\n error: mutationResult.error,\n isError: mutationResult.isError,\n isIdle: mutationResult.isIdle,\n isPending: mutationResult.isPending,\n isSuccess: mutationResult.isSuccess,\n reset: mutationResult.reset,\n status: mutationResult.status,\n variables: mutationResult.variables,\n };\n}\n","import { isNumber } from 'dedot/utils';\nimport { useMemo } from 'react';\nimport { useLuno } from './useLuno';\n\nconst DEFAULT_SS58_FORMAT = 42;\n\nexport interface UseSs58FormatResult {\n data?: number;\n isLoading: boolean;\n}\n\nexport const useSs58Format = (): UseSs58FormatResult => {\n const { currentApi, isApiReady, currentChain } = useLuno();\n\n const configuredSs58Fallback =\n currentChain?.ss58Format !== undefined ? currentChain.ss58Format : DEFAULT_SS58_FORMAT;\n\n return useMemo(() => {\n if (currentApi && isApiReady) {\n let ss58: number | undefined;\n try {\n const format = currentApi.consts.system.ss58Prefix;\n\n ss58 = isNumber(format) ? format : DEFAULT_SS58_FORMAT;\n } catch (e) {\n console.error('[useSs58Format] Error fetching chainSS58:', e);\n ss58 = configuredSs58Fallback;\n }\n return { data: ss58, isLoading: false };\n } else {\n return { data: undefined, isLoading: true };\n }\n }, [currentApi, isApiReady, configuredSs58Fallback]);\n};\n","import type { ConnectionStatus } from '../types';\nimport { useLuno } from './useLuno';\n\nexport const useStatus = (): ConnectionStatus => {\n const { status } = useLuno();\n return status;\n};\n","import type { Chain } from '../types';\nimport { useLuno } from './useLuno';\nimport { type LunoMutationOptions, useLunoMutation } from './useLunoMutation';\n\nexport interface SwitchChainVariables {\n chainId: string;\n}\n\nexport type UseSwitchChainOptions = LunoMutationOptions<void, Error, SwitchChainVariables, unknown>;\n\nexport interface UseSwitchChainResult {\n switchChain: (variables: SwitchChainVariables, options?: UseSwitchChainOptions) => void;\n switchChainAsync: (\n variables: SwitchChainVariables,\n options?: UseSwitchChainOptions\n ) => Promise<void>;\n chains: Chain[];\n currentChain?: Chain;\n currentChainId?: string;\n data: void | undefined;\n error: Error | null;\n isError: boolean;\n isIdle: boolean;\n isPending: boolean;\n isSuccess: boolean;\n reset: () => void;\n variables: SwitchChainVariables | undefined;\n}\n\nexport const useSwitchChain = (hookLevelConfig?: UseSwitchChainOptions): UseSwitchChainResult => {\n const { switchChain: storeSwitchChain, config, currentChain, currentChainId } = useLuno();\n\n const switchChainFn = async (variables: SwitchChainVariables): Promise<void> => {\n await storeSwitchChain(variables.chainId);\n };\n\n const mutationResult = useLunoMutation<void, Error, SwitchChainVariables, unknown>(\n switchChainFn,\n hookLevelConfig\n );\n\n return {\n switchChain: mutationResult.mutate,\n switchChainAsync: mutationResult.mutateAsync,\n chains: config?.chains ? [...config.chains] : [],\n currentChain,\n currentChainId,\n data: mutationResult.data,\n error: mutationResult.error,\n isError: mutationResult.isError,\n isIdle: mutationResult.isIdle,\n isPending: mutationResult.isPending,\n isSuccess: mutationResult.isSuccess,\n reset: mutationResult.reset,\n variables: mutationResult.variables,\n };\n};\n"]}
1
+ {"version":3,"sources":["../src/constants.ts","../src/hooks/useIsInitialized.ts","../src/store/createLunoStore.ts","../src/context/LunoContext.ts","../src/context/LunoProvider.tsx","../src/hooks/useLuno.ts","../src/hooks/useAccount.ts","../src/hooks/useAccounts.ts","../src/hooks/useActiveConnector.ts","../src/hooks/useApi.ts","../src/hooks/useSubscription.ts","../src/hooks/useBalance.ts","../src/hooks/useBlockNumber.ts","../src/hooks/useChain.ts","../src/hooks/useChains.ts","../src/hooks/useConfig.ts","../src/hooks/useLunoMutation.ts","../src/hooks/useConnect.ts","../src/hooks/useConnectors.ts","../src/hooks/useDisconnect.ts","../src/hooks/useEstimatePaymentInfo.ts","../src/hooks/useGenesisHash.ts","../src/hooks/useSigner.ts","../src/hooks/usePapiSigner.ts","../src/hooks/useRuntimeVersion.ts","../src/hooks/useSendTransaction.ts","../src/hooks/useSendTransactionHash.ts","../src/hooks/useSignMessage.ts","../src/hooks/useSs58Format.ts","../src/hooks/useStatus.ts","../src/hooks/useSwitchChain.ts"],"names":["PERSIST_KEY","useIsInitialized","isInitialized","useRef","activeConnectorUnsubscribeFunctions","cleanupActiveConnectorListeners","unsub","e","useLunoStore","create","set","get","newConfig","storedChainId","normalizedStoredChainId","initialChainId","c","initialChain","apiInstance","isReady","accountOrPublicKey","accounts","config","targetPublicKey","nextAccount","acc","accountInfo","connectorId","targetChainId","connector","previouslyActiveConnector","chainIdToUse","accountsFromWallet","selectedAccount","lastStoredAccountJson","recentStoredAccountJson","storedAccountJson","storedAccount","restoredAccount","isSameAddress","storedAccountInfo","currentStoreChainId","chainIdToSet","newChain","err","activeConnector","status","newChainId","currentChainId","currentApi","account","newApi","createApi","LunoContext","React","LunoProvider","configFromProps","children","_setConfig","_setApi","_setIsApiReady","_setApiError","setAccount","configInStore","connect","currentChain","isApiReady","apiError","disconnect","switchChain","markAsInitialized","clearApiState","useCallback","useEffect","chainConfig","transportConfig","api","sleep","lastConnectorId","lastChainId","error","apiSs58","contextValue","useMemo","jsx","useLuno","context","useContext","useAccount","formattedAccount","newAddress","convertAddress","useAccounts","useActiveConnector","useApi","defaultTransform","data","useSubscription","userQueryKey","factory","params","options","setError","useState","queryClient","useQueryClient","enabled","transform","defaultValue","unsubscribeRef","resolvedParams","queryKey","factoryFn","boundFn","callback","result","transformedData","isLoading","useQuery","DEFAULT_TOKEN_DECIMALS","transformBalance","results","chainProperties","locks","free","reserved","frozen","total","transferable","formatBalance","lock","useBalance","address","useBlockNumber","blockNumberBn","useChain","useChains","useConfig","useLunoMutation","mutationFn","hookLevelOptions","tanstackMutationHookOptions","mutation","useMutation","variables","callTimeOptions","useConnect","hookLevelConfig","mutationResult","useConnectors","useDisconnect","useEstimatePaymentInfo","setData","setIsLoading","estimate","extrinsic","senderAddress","sender","decimals","paymentInfo","useGenesisHash","useSigner","signer","setSigner","usePapiSigner","papiSigner","setPapiSigner","createPapiSigner","useRuntimeVersion","useSendTransaction","txStatus","setTxStatus","detailedTxStatus","setDetailedTxStatus","txError","setTxError","sendTransactionFn","resolve","reject","unsubscribe","dispatchError","events","dispatchInfo","txHash","resolveAndUnsubscribe","receipt","rejectAndUnsubscribe","getReadableDispatchError","useSendTransactionHash","useSignMessage","validAccount","signatureString","DEFAULT_SS58_FORMAT","useSs58Format","configuredSs58Fallback","ss58","format","isNumber","useStatus","useSwitchChain","storeSwitchChain"],"mappings":"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","file":"index.js","sourcesContent":["export const PERSIST_KEY = {\n LAST_CONNECTOR_ID: 'lastConnectorId',\n LAST_CHAIN_ID: 'lastChainId',\n LAST_SELECTED_ACCOUNT_INFO: 'lastSelectedAccountInfo',\n RECENT_SELECTED_ACCOUNT_INFO: 'recentSelectedAccountInfo',\n RECENT_CONNECTOR_ID: 'recentConnectorId',\n} as const;\n","import { useRef } from 'react';\n\nexport const useIsInitialized = () => {\n const isInitialized = useRef(false);\n return {\n isInitialized: isInitialized.current,\n markAsInitialized: () => {\n isInitialized.current = true;\n },\n };\n};\n","import { isSameAddress } from '@luno-kit/core/utils';\nimport { create } from 'zustand';\nimport { PERSIST_KEY } from '../constants';\nimport type { Chain, LunoState } from '../types';\nimport { ConnectionStatus } from '../types';\nimport { createApi } from '../utils';\n\ninterface StoredAccountInfo {\n publicKey?: string;\n address: string;\n name?: string;\n source?: string;\n}\n\nlet activeConnectorUnsubscribeFunctions: (() => void)[] = [];\n\nconst cleanupActiveConnectorListeners = () => {\n activeConnectorUnsubscribeFunctions.forEach((unsub) => {\n try {\n unsub();\n } catch (e) {\n console.warn('[LunoStore] Error during listener cleanup:', e);\n }\n });\n activeConnectorUnsubscribeFunctions = [];\n};\n\nexport const useLunoStore = create<LunoState>((set, get) => ({\n config: undefined,\n status: ConnectionStatus.Disconnected,\n activeConnector: undefined,\n accounts: [],\n account: undefined,\n currentChainId: undefined,\n currentChain: undefined,\n currentApi: undefined,\n isApiReady: false,\n apiError: null,\n\n _setConfig: async (newConfig) => {\n cleanupActiveConnectorListeners();\n\n let storedChainId: string | null = null;\n try {\n storedChainId = await newConfig.storage.getItem(PERSIST_KEY.LAST_CHAIN_ID);\n } catch (e) {\n console.warn('[LunoStore] Failed to read stored chain ID from storage:', e);\n }\n\n const normalizedStoredChainId = storedChainId?.toLowerCase();\n\n const initialChainId =\n normalizedStoredChainId &&\n newConfig.chains.some((c) => c.genesisHash.toLowerCase() === normalizedStoredChainId)\n ? normalizedStoredChainId\n : newConfig.chains[0]?.genesisHash;\n\n const initialChain = initialChainId\n ? newConfig.chains.find((c) => c.genesisHash.toLowerCase() === initialChainId)\n : undefined;\n\n set({\n config: newConfig,\n status: ConnectionStatus.Disconnected,\n activeConnector: undefined,\n accounts: [],\n currentChainId: initialChainId,\n currentChain: initialChain,\n });\n },\n\n _setApi: (apiInstance) => {\n set({ currentApi: apiInstance });\n },\n\n _setIsApiReady: (isReady) => {\n set({ isApiReady: isReady });\n },\n\n setAccount: async (accountOrPublicKey) => {\n if (!accountOrPublicKey) return;\n\n const { accounts, config } = get();\n\n const targetPublicKey =\n typeof accountOrPublicKey === 'string'\n ? accountOrPublicKey.toLowerCase()\n : accountOrPublicKey.publicKey?.toLowerCase();\n\n const nextAccount = accounts.find((acc) => acc.publicKey?.toLowerCase() === targetPublicKey);\n\n if (!nextAccount) {\n throw new Error(\n '[LunoStore] setAccount: The provided account or address is not in the current accounts list. Ignored.'\n );\n }\n\n set({ account: nextAccount });\n\n if (config) {\n try {\n const accountInfo: StoredAccountInfo = {\n publicKey: nextAccount.publicKey,\n address: nextAccount.address,\n name: nextAccount.name,\n source: nextAccount.meta?.source,\n };\n await config.storage.setItem(\n PERSIST_KEY.LAST_SELECTED_ACCOUNT_INFO,\n JSON.stringify(accountInfo)\n );\n await config.storage.setItem(\n PERSIST_KEY.RECENT_SELECTED_ACCOUNT_INFO,\n JSON.stringify(accountInfo)\n );\n console.log(`[LunoStore] Persisted selected account: ${nextAccount.address}`);\n } catch (e) {\n console.error('[LunoStore] Failed to persist selected account:', e);\n }\n }\n },\n\n connect: async (connectorId, targetChainId) => {\n const config = get().config;\n if (!config) {\n set({ status: ConnectionStatus.Disconnected });\n\n throw new Error('[LunoStore] LunoConfig has not been initialized. Cannot connect.');\n }\n\n const connector = config.connectors.find((c) => c.id === connectorId);\n if (!connector) {\n set({ status: ConnectionStatus.Disconnected });\n\n throw new Error(`[LunoStore] Connector with ID \"${connectorId}\" not found in LunoConfig.`);\n }\n\n set({ status: ConnectionStatus.Connecting });\n\n const previouslyActiveConnector = get().activeConnector;\n if (previouslyActiveConnector && previouslyActiveConnector.id !== connector.id) {\n console.log(\n `[LunoStore] Switching connector. Cleaning up listeners for old connector: ${previouslyActiveConnector.id}`\n );\n cleanupActiveConnectorListeners();\n } else if (previouslyActiveConnector && previouslyActiveConnector.id === connector.id) {\n console.log(\n `[LunoStore] Attempting to reconnect with the same connector: ${connector.id}. Cleaning up existing listeners.`\n );\n cleanupActiveConnectorListeners();\n }\n\n try {\n const chainIdToUse = targetChainId || get().currentChainId || config.chains[0]?.genesisHash;\n\n const accountsFromWallet = await connector.connect(\n config.appName,\n config.chains as Chain[],\n chainIdToUse\n );\n\n if (!accountsFromWallet || accountsFromWallet?.length === 0) {\n throw new Error(`[LunoStore] No accounts found from wallet`);\n }\n\n let selectedAccount = accountsFromWallet[0];\n\n try {\n const lastStoredAccountJson = await config.storage.getItem(\n PERSIST_KEY.LAST_SELECTED_ACCOUNT_INFO\n );\n const recentStoredAccountJson = await config.storage.getItem(\n PERSIST_KEY.RECENT_SELECTED_ACCOUNT_INFO\n );\n\n const storedAccountJson = lastStoredAccountJson || recentStoredAccountJson;\n if (storedAccountJson) {\n const storedAccount: StoredAccountInfo = JSON.parse(storedAccountJson);\n\n const restoredAccount = accountsFromWallet.find((acc) =>\n isSameAddress(acc.address, storedAccount.address)\n );\n\n if (restoredAccount) {\n selectedAccount = restoredAccount;\n console.log(\n `[LunoStore] Restored previously selected account: ${selectedAccount.address}`\n );\n } else {\n console.log(\n '[LunoStore] Previously selected account not found in current accounts list, using first account'\n );\n }\n }\n } catch (e) {\n console.warn('[LunoStore] Failed to restore selected account from storage:', e);\n }\n\n set({\n activeConnector: connector,\n accounts: accountsFromWallet,\n status: ConnectionStatus.Connected,\n account: selectedAccount,\n });\n\n const storedAccountInfo: StoredAccountInfo = {\n publicKey: selectedAccount.publicKey,\n address: selectedAccount.address,\n name: selectedAccount.name,\n source: selectedAccount.meta?.source,\n };\n\n try {\n config.storage.setItem(PERSIST_KEY.LAST_CONNECTOR_ID, connector.id);\n config.storage.setItem(PERSIST_KEY.RECENT_CONNECTOR_ID, connector.id);\n config.storage.setItem(\n PERSIST_KEY.LAST_SELECTED_ACCOUNT_INFO,\n JSON.stringify(storedAccountInfo)\n );\n config.storage.setItem(\n PERSIST_KEY.RECENT_SELECTED_ACCOUNT_INFO,\n JSON.stringify(storedAccountInfo)\n );\n console.log(`[LunoStore] Persisted connectorId: ${connector.id}`);\n } catch (e) {\n console.error('[LunoStore] Failed to persist connectorId to storage:', e);\n }\n\n const currentStoreChainId = get().currentChainId;\n const chainIdToSet = targetChainId || currentStoreChainId || config.chains[0]?.genesisHash;\n\n if (chainIdToSet) {\n const newChain = config.chains.find((c) => c.genesisHash === chainIdToSet);\n if (newChain) {\n if (chainIdToSet !== currentStoreChainId || !get().currentApi) {\n set({\n currentChainId: chainIdToSet,\n currentChain: newChain,\n currentApi: undefined,\n });\n }\n try {\n config.storage.setItem(PERSIST_KEY.LAST_CHAIN_ID, chainIdToSet);\n console.log(`[LunoStore] Persisted chainId: ${chainIdToSet}`);\n } catch (e) {\n console.error('[LunoStore] Failed to persist chainId to storage:', e);\n }\n } else {\n console.warn(\n `[LunoStore] After connection, target chain ID \"${chainIdToSet}\" was not found in config. Current chain state might not have changed. Not persisting chainId.`\n );\n }\n }\n // else {\n // console.warn(\n // `[LunoStore] Could not determine target chain ID after connection. Please check config.`\n // );\n // }\n } catch (err: any) {\n cleanupActiveConnectorListeners();\n set({\n status: ConnectionStatus.Disconnected,\n activeConnector: undefined,\n accounts: [],\n });\n\n throw new Error(\n `[LunoStore] Error connecting with ${connector.name}: ${err?.message || err}`\n );\n }\n },\n\n disconnect: async () => {\n const { activeConnector, status, config } = get();\n\n if (\n !activeConnector ||\n status === ConnectionStatus.Disconnecting ||\n status === ConnectionStatus.Disconnected\n ) {\n console.log(\n '[LunoStore] No active connector or already disconnected/disconnecting. Disconnect action aborted.'\n );\n return;\n }\n\n set({ status: ConnectionStatus.Disconnecting });\n try {\n await activeConnector.disconnect();\n\n if (config) {\n try {\n console.log(\n '[LunoStore] Attempting to remove persisted connection info due to user disconnect action...'\n );\n await config.storage.removeItem(PERSIST_KEY.LAST_CONNECTOR_ID);\n await config.storage.removeItem(PERSIST_KEY.LAST_CHAIN_ID);\n await config.storage.removeItem(PERSIST_KEY.LAST_SELECTED_ACCOUNT_INFO);\n console.log('[LunoStore] Removed persisted connection info from storage.');\n } catch (e) {\n console.error(\n '[LunoStore] Failed to remove connection info from storage during disconnect action:',\n e\n );\n }\n }\n\n cleanupActiveConnectorListeners();\n\n set({\n status: ConnectionStatus.Disconnected,\n activeConnector: undefined,\n accounts: [],\n account: undefined,\n });\n if (get().status !== ConnectionStatus.Disconnected) {\n console.warn(\n \"[LunoStore] disconnect method called, but status is not yet 'disconnected' (event handler might be delayed or did not fire). Check connector events.\"\n );\n }\n } catch (err: any) {\n set({ status: ConnectionStatus.Connected });\n throw new Error(\n `[LunoStore] Error disconnecting from ${activeConnector.name}: ${err?.message || err}`\n );\n }\n },\n\n switchChain: async (newChainId: string) => {\n const { config, currentChainId, currentApi, activeConnector, account, accounts } = get();\n\n if (!config) {\n throw new Error('[LunoStore] LunoConfig has not been initialized. Cannot switch chain.');\n }\n if (newChainId === currentChainId) {\n console.log(`[LunoStore] Already on chain ${newChainId}. No switch needed.`);\n return;\n }\n\n const newChain = config.chains.find((c) => c.genesisHash === newChainId);\n if (!newChain) {\n throw new Error(`[LunoStore] Chain with ID \"${newChainId}\" not found in LunoConfig.`);\n }\n\n try {\n try {\n if (currentApi && currentApi.status === 'connected') {\n await currentApi.disconnect();\n }\n } catch (e) {\n console.warn('[LunoStore] Failed to disconnect from previous chain:', e);\n }\n\n console.log(`[LunoStore] Attempting to switch chain to ${newChain.name} (ID: ${newChainId})`);\n set({\n currentChainId: newChainId,\n currentChain: newChain,\n currentApi: undefined,\n isApiReady: false,\n apiError: null,\n });\n\n const newApi = await createApi({ config, chainId: newChainId });\n\n set({\n currentApi: newApi,\n isApiReady: true,\n });\n\n await config.storage.setItem(PERSIST_KEY.LAST_CHAIN_ID, newChainId);\n } catch (e: any) {\n set({\n apiError: e,\n isApiReady: false,\n });\n }\n },\n _setApiError: (err) => {\n set({ apiError: err });\n },\n}));\n","import type { Account, Chain, Config, Connector, HexString } from '@luno-kit/core/types';\nimport type { LegacyClient } from 'dedot';\nimport React from 'react';\nimport type { ConnectionStatus } from '../types';\n\nexport interface LunoContextState {\n config?: Config;\n status: ConnectionStatus;\n activeConnector?: Connector;\n accounts: Account[];\n account?: Account;\n setAccount: (accountOrPublicKey?: Account | HexString) => void;\n currentChainId?: string;\n currentChain?: Chain;\n currentApi?: LegacyClient;\n isApiReady: boolean;\n apiError: Error | null;\n\n connect: (connectorId: string, targetChainId?: string) => Promise<void>;\n disconnect: () => Promise<void>;\n switchChain: (newChainId: string) => Promise<void>;\n}\n\nexport const LunoContext = React.createContext<LunoContextState | undefined>(\n {} as LunoContextState\n);\n","import type React from 'react';\nimport { type ReactNode, useCallback, useEffect, useMemo } from 'react';\nimport { PERSIST_KEY } from '../constants';\nimport { useIsInitialized } from '../hooks/useIsInitialized';\nimport { useLunoStore } from '../store';\nimport type { Chain, Config, Transport } from '../types';\nimport { createApi, sleep } from '../utils';\nimport { LunoContext, type LunoContextState } from './LunoContext';\n\ninterface LunoProviderProps {\n config: Config;\n children: ReactNode;\n}\n\nexport const LunoProvider: React.FC<LunoProviderProps> = ({\n config: configFromProps,\n children,\n}: LunoProviderProps) => {\n const {\n _setConfig,\n _setApi,\n _setIsApiReady,\n _setApiError,\n setAccount,\n currentChainId,\n config: configInStore,\n currentApi,\n connect,\n status,\n activeConnector,\n accounts,\n account,\n currentChain,\n isApiReady,\n apiError,\n disconnect,\n switchChain,\n } = useLunoStore();\n const { markAsInitialized, isInitialized } = useIsInitialized();\n\n const clearApiState = useCallback(() => {\n _setApi(undefined);\n _setIsApiReady(false);\n }, [_setApi, _setIsApiReady]);\n\n useEffect(() => {\n if (configFromProps) {\n console.log('[LunoProvider] Setting config to store:', configFromProps);\n _setConfig(configFromProps);\n }\n }, [configFromProps]);\n\n useEffect(() => {\n if (isInitialized) return;\n if (!configFromProps || !currentChainId) {\n if (currentApi && currentApi.status === 'connected') {\n currentApi.disconnect().catch(console.error);\n }\n clearApiState();\n return;\n }\n\n const chainConfig: Chain | undefined = configFromProps.chains.find(\n (c: Chain) => c.genesisHash === currentChainId\n );\n const transportConfig: Transport | undefined = configFromProps.transports[currentChainId];\n\n if (!chainConfig || !transportConfig) {\n if (currentApi && currentApi.status === 'connected') {\n currentApi.disconnect().catch(console.error);\n }\n clearApiState();\n return;\n }\n\n if (currentApi && currentApi.status === 'connected') {\n console.log(\n '[LunoProvider]: Disconnecting API from previous render cycle:',\n currentApi.runtimeVersion.specName\n );\n currentApi\n .disconnect()\n .catch((e) => console.error('[LunoProvider] Error disconnecting previous API:', e));\n }\n\n clearApiState();\n\n createApi({ config: configFromProps, chainId: currentChainId })\n .then((api) => {\n _setApi(api);\n _setIsApiReady(true);\n })\n .catch((e) => {\n clearApiState();\n _setApiError(e);\n })\n .finally(() => markAsInitialized());\n }, [configFromProps, currentChainId]);\n\n useEffect(() => {\n const performAutoConnect = async () => {\n await sleep(500);\n if (!configFromProps.autoConnect) {\n console.log('[LunoProvider]: AutoConnect disabled or config not set.');\n return;\n }\n\n if (!configFromProps.storage) {\n console.warn('[LunoProvider]: AutoConnect Storage not available, cannot auto-connect.');\n return;\n }\n\n try {\n const lastConnectorId = await configFromProps.storage.getItem(\n PERSIST_KEY.LAST_CONNECTOR_ID\n );\n const lastChainId = await configFromProps.storage.getItem(PERSIST_KEY.LAST_CHAIN_ID);\n\n if (lastConnectorId) {\n console.log(\n `[LunoProvider]: AutoConnect Found persisted session: Connector ID \"${lastConnectorId}\", Chain ID \"${lastChainId}\"`\n );\n await connect(lastConnectorId, lastChainId || undefined);\n } else {\n console.log('[LunoProvider]: AutoConnect No persisted session found or missing data.');\n }\n } catch (error) {\n console.error('[LunoProvider]: AutoConnect Error during auto-connect process:', error);\n }\n };\n\n if (configFromProps) {\n performAutoConnect();\n }\n }, [configFromProps]);\n\n useEffect(() => {\n if (\n isApiReady &&\n currentApi &&\n currentChain &&\n currentChain.ss58Format !== undefined &&\n currentChain.ss58Format !== null\n ) {\n try {\n const apiSs58 = currentApi.consts.system.ss58Prefix;\n\n if (apiSs58 !== null && apiSs58 !== undefined && apiSs58 !== currentChain.ss58Format) {\n console.error(\n `[LunoProvider]: SS58 Format Mismatch for chain \"${currentChain.name}\" (genesisHash: ${currentChain.genesisHash}):\\n` +\n ` - Configured SS58Format: ${currentChain.ss58Format}\\n` +\n ` - Node Runtime SS58Format: ${apiSs58}\\n` +\n `Please verify your Luno configuration for this chain to ensure correct address display and interaction.`\n );\n } else if (apiSs58 === null || apiSs58 === undefined) {\n console.warn(\n `[LunoProvider]: Could not determine SS58 format from the API for chain \"${currentChain.name}\". ` +\n `Cannot validate configured SS58Format (${currentChain.ss58Format}). The application will use the configured value.`\n );\n }\n } catch (e) {\n console.error(\n `[LunoProvider]: Error retrieving SS58 format from API for chain \"${currentChain.name}\" while attempting validation:`,\n e\n );\n }\n }\n }, [isApiReady, currentApi, currentChain]);\n\n const contextValue = useMemo<LunoContextState>(\n () => ({\n config: configInStore,\n status,\n activeConnector,\n accounts,\n account,\n setAccount,\n currentChainId,\n currentChain,\n currentApi,\n isApiReady,\n connect,\n disconnect,\n switchChain,\n apiError,\n }),\n [\n configInStore,\n status,\n activeConnector,\n accounts,\n account,\n currentChainId,\n currentChain,\n currentApi,\n isApiReady,\n apiError,\n connect,\n disconnect,\n switchChain,\n setAccount,\n ]\n );\n\n return <LunoContext.Provider value={contextValue}>{children}</LunoContext.Provider>;\n};\n","import { useContext } from 'react';\nimport { LunoContext, type LunoContextState } from '../context/LunoContext';\n\nexport const useLuno = (): LunoContextState => {\n const context = useContext(LunoContext);\n if (context === undefined) {\n throw new Error('useLuno must be used within a LunoProvider');\n }\n return context as LunoContextState;\n};\n","import { convertAddress } from '@luno-kit/core/utils';\nimport { useMemo } from 'react';\nimport type { Account } from '../types';\nimport { useLuno } from './useLuno';\n\nexport interface UseAccountResult {\n account?: Account;\n address?: string;\n}\n\nexport const useAccount = (): UseAccountResult => {\n const { account, currentChain } = useLuno();\n\n const formattedAccount = useMemo(() => {\n if (!account) return;\n if (!currentChain || currentChain?.ss58Format === undefined) return account;\n\n try {\n const newAddress = convertAddress(account.address, currentChain.ss58Format);\n return {\n ...account,\n address: newAddress,\n };\n } catch (error) {\n console.error(\n `[useAccount]: Failed to re-format address for account ${account.address}:`,\n error\n );\n return { ...account };\n }\n }, [account, currentChain, currentChain?.ss58Format]);\n\n return {\n account: formattedAccount,\n address: formattedAccount?.address,\n };\n};\n","import type { HexString } from '@luno-kit/core/types';\nimport { convertAddress } from '@luno-kit/core/utils';\nimport { useMemo } from 'react';\nimport type { Account } from '../types';\nimport { useLuno } from './useLuno';\n\nexport interface UseAccountsResult {\n accounts: Account[];\n selectAccount: (accountOrPublicKey?: Account | HexString) => void;\n}\n\nexport const useAccounts = (): UseAccountsResult => {\n const { accounts, setAccount, currentChain } = useLuno();\n\n const formattedAccounts = useMemo(() => {\n if (!currentChain || currentChain?.ss58Format === undefined) return accounts ?? [];\n return (accounts || []).map((acc) => {\n try {\n const newAddress = convertAddress(acc.address, currentChain.ss58Format);\n return {\n ...acc,\n address: newAddress,\n };\n } catch (error) {\n console.error(\n `[useAccounts]: Failed to re-format address for account ${acc.address}:`,\n error\n );\n return { ...acc };\n }\n });\n }, [accounts, currentChain, currentChain?.ss58Format]);\n\n return { accounts: formattedAccounts, selectAccount: setAccount };\n};\n","import type { Connector } from '../types';\nimport { useLuno } from './useLuno';\n\nexport const useActiveConnector = (): Connector | undefined => {\n const { activeConnector } = useLuno();\n return activeConnector;\n};\n","import type { LegacyClient } from 'dedot';\nimport { useLuno } from './useLuno';\n\nexport interface UseApiResult {\n api?: LegacyClient;\n isApiReady: boolean;\n apiError: Error | null;\n}\n\nexport const useApi = (): UseApiResult => {\n const { currentApi, isApiReady, apiError } = useLuno();\n\n return {\n api: currentApi,\n isApiReady,\n apiError,\n };\n};\n","import { useQuery, useQueryClient } from '@tanstack/react-query';\nimport type { LegacyClient } from 'dedot';\nimport type { Callback, GenericStorageQuery, Unsub } from 'dedot/types';\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport { useLuno } from './useLuno';\n\ntype SubscriptionFn<TArgs extends any[], TData> = (\n ...params: [...TArgs, Callback<TData>]\n) => Promise<() => Promise<void>>;\n\nexport interface UseSubscriptionOptions<TData, TTransformed = TData> {\n enabled?: boolean;\n transform?: (data: TData) => TTransformed;\n defaultValue?: TTransformed;\n}\n\ntype ApiBoundSubscriptionFactory<TArgs extends any[], TData> = (\n api: LegacyClient\n) => SubscriptionFn<TArgs, TData>;\n\nexport interface QueryMultiItem {\n fn: GenericStorageQuery;\n args: any[];\n}\n\nexport interface UseSubscriptionProps<TArgs extends any[], TData, TTransformed = TData> {\n queryKey: string | number;\n factory: ApiBoundSubscriptionFactory<TArgs, TData> | ((api: LegacyClient) => any);\n params: TArgs | ((api: LegacyClient) => QueryMultiItem[]);\n options?: UseSubscriptionOptions<TData, TTransformed>;\n}\n\nexport interface UseSubscriptionResult<TTransformed> {\n data?: TTransformed;\n error?: Error;\n isLoading: boolean;\n}\n\nconst defaultTransform = <T>(data: T): T => data;\n\nexport const useSubscription = <TArgs extends any[], TData, TTransformed = TData>({\n queryKey: userQueryKey,\n factory,\n params,\n options = {},\n}: UseSubscriptionProps<TArgs, TData, TTransformed>): UseSubscriptionResult<TTransformed> => {\n const [error, setError] = useState<Error | undefined>(undefined);\n const { currentApi, isApiReady } = useLuno();\n const queryClient = useQueryClient();\n const {\n enabled = true,\n transform = defaultTransform as (data: TData) => TTransformed,\n defaultValue,\n } = options;\n const unsubscribeRef = useRef<(() => Promise<void>) | null>(null);\n\n const resolvedParams = useMemo(() => {\n if (!params || !currentApi || !isApiReady) return undefined;\n return typeof params === 'function' ? [params(currentApi)] : params;\n }, [params, currentApi, isApiReady]);\n\n const queryKey = useMemo(\n () => [userQueryKey, resolvedParams, currentApi?.genesisHash],\n [userQueryKey, resolvedParams, currentApi?.genesisHash]\n );\n\n useEffect(() => {\n if (unsubscribeRef.current) {\n unsubscribeRef.current();\n unsubscribeRef.current = null;\n }\n\n if (!enabled || !factory || !currentApi || !resolvedParams || !isApiReady) {\n return;\n }\n\n try {\n const factoryFn = factory(currentApi);\n const boundFn = typeof factoryFn === 'function' ? factoryFn.bind(currentApi) : factoryFn;\n\n const callback: Callback<TData> = (result: TData) => {\n try {\n const transformedData = transform(result);\n queryClient.setQueryData(queryKey, transformedData);\n setError(undefined);\n } catch (err) {\n setError(new Error(`[useSubscription]: ${err}`));\n }\n };\n\n boundFn(...resolvedParams, callback)\n .then((unsub: Unsub) => {\n unsubscribeRef.current = unsub;\n })\n .catch((err: Error) => {\n setError(new Error(`[useSubscription]: ${err}`));\n });\n } catch (err) {\n setError(new Error(`[useSubscription]: ${err}`));\n }\n\n return () => {\n if (unsubscribeRef.current) {\n unsubscribeRef.current();\n unsubscribeRef.current = null;\n setError(undefined);\n }\n };\n }, [JSON.stringify(queryKey), enabled, queryClient]);\n\n const { data, isLoading } = useQuery({\n queryKey,\n queryFn: () => {\n return Promise.resolve(defaultValue);\n },\n enabled: false,\n initialData: defaultValue,\n });\n\n return {\n data: data as TTransformed | undefined,\n error: error as Error | undefined,\n isLoading: !!(enabled && isApiReady && !data),\n };\n};\n","import { formatBalance } from '@luno-kit/core/utils';\nimport type { LegacyClient } from 'dedot';\nimport type { AccountBalance } from '../types';\nimport { useLuno } from './useLuno';\nimport {\n type QueryMultiItem,\n type UseSubscriptionResult,\n useSubscription,\n} from './useSubscription';\n\ninterface AccountData {\n data: {\n free: bigint | string | number;\n reserved: bigint | string | number;\n frozen: bigint | string | number;\n };\n}\n\ninterface BalanceLock {\n id: string | number;\n amount: bigint | string | number;\n reasons?: string | number;\n}\n\nexport interface ChainProperties {\n ss58Format?: number;\n tokenDecimals?: number;\n tokenSymbol?: string;\n}\n\nconst DEFAULT_TOKEN_DECIMALS = 10;\n\nconst transformBalance = (results: any[], chainProperties: ChainProperties) => {\n const accountInfo: AccountData = results[0];\n const locks: BalanceLock[] = results[1];\n\n const free = accountInfo.data.free;\n const reserved = accountInfo.data.reserved;\n const frozen = accountInfo.data.frozen;\n const total = BigInt(free) + BigInt(reserved);\n\n const transferable = free > frozen ? BigInt(free) - BigInt(frozen) : 0n;\n\n return {\n free,\n total,\n reserved,\n transferable,\n formattedTransferable: formatBalance(transferable, chainProperties.tokenDecimals),\n formattedTotal: formatBalance(total, chainProperties.tokenDecimals),\n locks: locks.map((lock) => ({\n id: lock.id,\n amount: lock.amount,\n reason: lock.reasons,\n lockHuman: formatBalance(lock.amount, chainProperties.tokenDecimals),\n })),\n } as AccountBalance;\n};\n\nexport interface UseBalanceProps {\n address?: string;\n}\n\nexport type UseBalanceResult = UseSubscriptionResult<AccountBalance>;\n\nexport const useBalance = ({ address }: UseBalanceProps): UseBalanceResult => {\n const { currentApi, isApiReady, currentChain } = useLuno();\n\n return useSubscription<QueryMultiItem[], [AccountData, BalanceLock[]], AccountBalance>({\n queryKey: '/native-balance',\n factory: (api: LegacyClient) => api.queryMulti,\n params: (api: LegacyClient) => [\n { fn: api.query.system.account, args: [address] },\n { fn: api.query.balances.locks, args: [address] },\n ],\n options: {\n enabled: !!currentApi && isApiReady && !!address,\n transform: (results) => {\n const chainProperties: ChainProperties = {\n tokenDecimals: currentChain?.nativeCurrency?.decimals ?? DEFAULT_TOKEN_DECIMALS,\n tokenSymbol: currentChain?.nativeCurrency?.symbol,\n ss58Format: currentChain?.ss58Format,\n };\n return transformBalance(results, chainProperties);\n },\n },\n });\n};\n","import type { BlockNumber } from 'dedot/codecs';\nimport { useLuno } from './useLuno';\nimport { type UseSubscriptionResult, useSubscription } from './useSubscription';\n\nexport type UseBlockNumberResult = UseSubscriptionResult<number>;\n\nexport const useBlockNumber = (): UseBlockNumberResult => {\n const { currentApi, isApiReady } = useLuno();\n\n const transform = (blockNumberBn: BlockNumber): BlockNumber => {\n return blockNumberBn;\n };\n\n return useSubscription<[], BlockNumber, BlockNumber>({\n queryKey: '/block-number',\n factory: (api) => api.query.system.number,\n params: [],\n options: {\n enabled: !!currentApi && isApiReady,\n transform: transform,\n },\n });\n};\n","import type { Chain } from '../types';\nimport { useLuno } from './useLuno';\n\nexport interface UseChainResult {\n chain?: Chain;\n chainId?: string;\n}\n\nexport const useChain = (): UseChainResult => {\n const { currentChain, currentChainId } = useLuno();\n return {\n chain: currentChain,\n chainId: currentChainId,\n };\n};\n","import type { Chain } from '../types';\nimport { useLuno } from './useLuno';\n\nexport const useChains = (): Chain[] => {\n const { config } = useLuno();\n return config?.chains ? [...config.chains] : [];\n};\n","import type { Config } from '../types';\nimport { useLuno } from './useLuno';\n\nexport const useConfig = (): Config | undefined => {\n const { config } = useLuno();\n return config;\n};\n","import {\n type MutateOptions as ReactQueryMutateOptions,\n type UseMutationOptions,\n useMutation,\n} from '@tanstack/react-query';\n\nexport type LunoMutationOptions<\n TData = unknown,\n TError = Error,\n TVariables = void,\n TContext = unknown,\n> = Partial<\n Pick<\n ReactQueryMutateOptions<TData, TError, TVariables, TContext>,\n 'onSuccess' | 'onError' | 'onSettled'\n >\n>;\n\nexport interface LunoMutationResult<\n TData = unknown,\n TError = Error,\n TVariables = void,\n TContext = unknown,\n> {\n mutate: (\n variables: TVariables,\n options?: LunoMutationOptions<TData, TError, TVariables, TContext>\n ) => void;\n\n mutateAsync: (\n variables: TVariables,\n options?: LunoMutationOptions<TData, TError, TVariables, TContext>\n ) => Promise<TData>;\n\n data: TData | undefined;\n error: TError | null;\n isError: boolean;\n isIdle: boolean;\n isPending: boolean;\n isSuccess: boolean;\n status: 'idle' | 'pending' | 'error' | 'success';\n reset: () => void;\n variables: TVariables | undefined;\n}\n\nexport function useLunoMutation<\n TData = unknown,\n TError = Error,\n TVariables = void,\n TContext = unknown,\n>(\n mutationFn: (variables: TVariables) => Promise<TData>,\n hookLevelOptions?: LunoMutationOptions<TData, TError, TVariables, TContext>\n): LunoMutationResult<TData, TError, TVariables, TContext> {\n const tanstackMutationHookOptions: Pick<\n UseMutationOptions<TData, TError, TVariables, TContext>,\n 'onSuccess' | 'onError' | 'onSettled'\n > = {};\n\n if (hookLevelOptions?.onSuccess) {\n tanstackMutationHookOptions.onSuccess = hookLevelOptions.onSuccess;\n }\n if (hookLevelOptions?.onError) {\n tanstackMutationHookOptions.onError = hookLevelOptions.onError;\n }\n if (hookLevelOptions?.onSettled) {\n tanstackMutationHookOptions.onSettled = hookLevelOptions.onSettled;\n }\n\n const mutation = useMutation<TData, TError, TVariables, TContext>({\n mutationFn,\n retry: false,\n throwOnError: false,\n ...tanstackMutationHookOptions,\n });\n\n return {\n mutate: (\n variables: TVariables,\n callTimeOptions?: LunoMutationOptions<TData, TError, TVariables, TContext>\n ) => {\n mutation.mutate(\n variables,\n callTimeOptions as ReactQueryMutateOptions<TData, TError, TVariables, TContext>\n );\n },\n mutateAsync: (\n variables: TVariables,\n callTimeOptions?: LunoMutationOptions<TData, TError, TVariables, TContext>\n ) => {\n return mutation.mutateAsync(\n variables,\n callTimeOptions as ReactQueryMutateOptions<TData, TError, TVariables, TContext>\n );\n },\n data: mutation.data,\n error: mutation.error,\n isError: mutation.isError,\n isIdle: mutation.isIdle,\n isPending: mutation.isPending,\n isSuccess: mutation.isSuccess,\n reset: mutation.reset,\n status: mutation.status,\n variables: mutation.variables,\n };\n}\n","import type { ConnectionStatus, Connector } from '../types';\nimport { sleep } from '../utils';\nimport { useLuno } from './useLuno';\nimport { type LunoMutationOptions, useLunoMutation } from './useLunoMutation';\n\nexport interface ConnectVariables {\n connectorId: string;\n targetChainId?: string;\n}\n\nexport type UseConnectOptions = LunoMutationOptions<void, Error, ConnectVariables, unknown>;\n\nexport interface UseConnectResult {\n connect: (variables: ConnectVariables, options?: UseConnectOptions) => void;\n connectAsync: (variables: ConnectVariables, options?: UseConnectOptions) => Promise<void>;\n connectors: Connector[];\n activeConnector?: Connector;\n status: ConnectionStatus;\n data: undefined;\n error: Error | null;\n isError: boolean;\n isIdle: boolean;\n isPending: boolean;\n isSuccess: boolean;\n reset: () => void;\n variables: ConnectVariables | undefined;\n}\n\nexport const useConnect = (hookLevelConfig?: UseConnectOptions): UseConnectResult => {\n const { connect, config, activeConnector, status } = useLuno();\n\n const connectFn = async (variables: ConnectVariables): Promise<void> => {\n await connect(variables.connectorId, variables.targetChainId);\n await sleep();\n };\n\n const mutationResult = useLunoMutation<void, Error, ConnectVariables, unknown>(\n connectFn,\n hookLevelConfig\n );\n\n return {\n connect: mutationResult.mutate,\n connectAsync: mutationResult.mutateAsync,\n connectors: config?.connectors ? [...config.connectors] : [],\n activeConnector,\n status,\n data: mutationResult.data as undefined,\n error: mutationResult.error,\n isError: mutationResult.isError,\n isIdle: mutationResult.isIdle,\n isPending: mutationResult.isPending,\n isSuccess: mutationResult.isSuccess,\n reset: mutationResult.reset,\n variables: mutationResult.variables,\n };\n};\n","import type { Connector } from '../types';\nimport { useLuno } from './useLuno';\n\nexport const useConnectors = (): Connector[] => {\n const { config } = useLuno();\n return config?.connectors ? [...config.connectors] : [];\n};\n","import type { ConnectionStatus } from '../types';\nimport { useLuno } from './useLuno';\nimport { type LunoMutationOptions, useLunoMutation } from './useLunoMutation';\n\nexport type UseDisconnectOptions = LunoMutationOptions<void, Error, void, unknown>;\n\nexport interface UseDisconnectResult {\n disconnect: (options?: UseDisconnectOptions) => void;\n disconnectAsync: (options?: UseDisconnectOptions) => Promise<void>;\n status: ConnectionStatus;\n data: undefined;\n error: Error | null;\n isError: boolean;\n isIdle: boolean;\n isPending: boolean;\n isSuccess: boolean;\n reset: () => void;\n}\n\nexport const useDisconnect = (hookLevelConfig?: UseDisconnectOptions): UseDisconnectResult => {\n const { disconnect, status } = useLuno();\n\n const disconnectFn = async (): Promise<void> => {\n await disconnect();\n };\n\n const mutationResult = useLunoMutation<void, Error, void, unknown>(disconnectFn, hookLevelConfig);\n\n return {\n disconnect: (options?: UseDisconnectOptions) => mutationResult.mutate(undefined, options),\n disconnectAsync: (options?: UseDisconnectOptions) =>\n mutationResult.mutateAsync(undefined, options),\n status,\n data: mutationResult.data as undefined,\n error: mutationResult.error,\n isError: mutationResult.isError,\n isIdle: mutationResult.isIdle,\n isPending: mutationResult.isPending,\n isSuccess: mutationResult.isSuccess,\n reset: mutationResult.reset,\n };\n};\n","import { formatBalance } from '@luno-kit/core/utils';\nimport type { ISubmittableExtrinsic, TxPaymentInfo } from 'dedot/types';\nimport { useCallback, useState } from 'react';\nimport { useLuno } from './useLuno';\n\ninterface PaymentInfo extends TxPaymentInfo {\n partialFeeFormatted: string;\n}\n\nexport function useEstimatePaymentInfo() {\n const { account, currentChain } = useLuno();\n const [data, setData] = useState<PaymentInfo | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const estimate = useCallback(\n async (\n extrinsic: ISubmittableExtrinsic,\n senderAddress?: string\n ): Promise<PaymentInfo | undefined> => {\n const sender = senderAddress || account?.address;\n if (!extrinsic || !sender || !currentChain) return;\n\n setIsLoading(true);\n setError(null);\n\n try {\n const result = await extrinsic.paymentInfo(sender);\n\n const decimals = currentChain.nativeCurrency.decimals;\n\n const paymentInfo = {\n ...result,\n partialFeeFormatted: formatBalance(result.partialFee, decimals),\n };\n\n setData(paymentInfo);\n return paymentInfo;\n } catch (err) {\n const error = err instanceof Error ? err : new Error('Failed to estimate payment info');\n setError(error);\n } finally {\n setIsLoading(false);\n }\n },\n [account?.address, currentChain]\n );\n\n return {\n data,\n isLoading,\n error,\n estimate,\n };\n}\n","import type { HexString } from '@luno-kit/core/types';\nimport { useQuery } from '@tanstack/react-query';\nimport { useLuno } from './useLuno';\n\nexport interface UseGenesisHashResult {\n data?: HexString;\n error: Error | null;\n isLoading: boolean;\n}\n\nexport const useGenesisHash = (): UseGenesisHashResult => {\n const { currentApi, currentChainId, isApiReady } = useLuno();\n\n const { data, isLoading, error } = useQuery({\n queryKey: ['/genesis-hash', currentChainId],\n queryFn: async () => {\n return await currentApi!.rpc.chain_getBlockHash(0);\n },\n enabled: !!currentApi && isApiReady && !!currentChainId,\n staleTime: Infinity,\n gcTime: Infinity,\n retry: false,\n });\n\n return { data, isLoading, error };\n};\n","import { useEffect, useState } from 'react';\nimport type { Signer } from '../types';\nimport { useAccount } from './useAccount';\nimport { useLuno } from './useLuno';\n\nexport interface UseSignerResult {\n data?: Signer;\n isLoading: boolean;\n}\n\nexport const useSigner = (): UseSignerResult => {\n const { activeConnector } = useLuno();\n const { account } = useAccount();\n\n const [signer, setSigner] = useState<Signer | undefined>(undefined);\n const [isLoading, setIsLoading] = useState<boolean>(false);\n\n useEffect(() => {\n if (!activeConnector || !account?.address) {\n setSigner(undefined);\n setIsLoading(false);\n return;\n }\n\n setIsLoading(true);\n\n activeConnector\n .getSigner()\n .then((signer) => setSigner(signer))\n .catch(() => setSigner(undefined))\n .finally(() => setIsLoading(false));\n }, [activeConnector, account?.address]);\n\n return { data: signer, isLoading };\n};\n","import type { PapiSigner } from '@luno-kit/core/types';\nimport { createPapiSigner } from '@luno-kit/core/utils';\nimport { useEffect, useState } from 'react';\nimport { useAccount } from './useAccount';\nimport { useSigner } from './useSigner';\n\nexport interface UsePapiSignerResult {\n data?: PapiSigner;\n isLoading: boolean;\n}\n\nexport function usePapiSigner(): UsePapiSignerResult {\n const { data: signer } = useSigner();\n const { address } = useAccount();\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [papiSigner, setPapiSigner] = useState<PapiSigner | undefined>(undefined);\n\n useEffect(() => {\n if (!signer || !address) {\n setPapiSigner(undefined);\n setIsLoading(false);\n return;\n }\n\n setIsLoading(true);\n\n createPapiSigner(address, signer)\n .then((papiSigner: PapiSigner | undefined) => setPapiSigner(papiSigner))\n .catch(() => setPapiSigner(undefined))\n .finally(() => setIsLoading(false));\n }, [signer, address]);\n\n return { data: papiSigner, isLoading };\n}\n","import { type UseQueryResult, useQuery } from '@tanstack/react-query';\nimport type { SubstrateRuntimeVersion } from 'dedot';\nimport { useLuno } from './useLuno';\n\nexport type UseRuntimeVersionResult = UseQueryResult<SubstrateRuntimeVersion, Error>;\n\nexport const useRuntimeVersion = (): UseRuntimeVersionResult => {\n const { currentApi, isApiReady, currentChainId } = useLuno();\n\n return useQuery<\n SubstrateRuntimeVersion,\n Error,\n SubstrateRuntimeVersion,\n readonly (undefined | string)[]\n >({\n queryKey: ['luno', 'runtimeVersion', currentChainId] as const,\n queryFn: async () => {\n return await currentApi!.getRuntimeVersion();\n },\n enabled: !!currentApi && isApiReady && !!currentChainId,\n });\n};\n","import type { HexString } from '@luno-kit/core/types';\nimport type { DispatchError, DispatchInfo } from 'dedot/codecs';\nimport type {\n IEventRecord as EventRecord,\n ISubmittableExtrinsic,\n ISubmittableResult,\n} from 'dedot/types';\nimport { useCallback, useState } from 'react';\nimport type { TxStatus } from '../types';\nimport { getReadableDispatchError } from '../utils';\nimport { useAccount } from './useAccount';\nimport { useLuno } from './useLuno';\nimport { type LunoMutationOptions, useLunoMutation } from './useLunoMutation';\n\nexport type DetailedTxStatus =\n | 'idle'\n | 'broadcasting'\n | 'inBlock'\n | 'finalized'\n | 'invalid'\n | 'dropped';\n\nexport interface TransactionReceipt {\n transactionHash: HexString;\n blockHash: HexString;\n blockNumber?: number;\n readonly events: EventRecord[];\n status: 'failed' | 'success';\n dispatchError?: DispatchError;\n errorMessage?: string;\n dispatchInfo?: DispatchInfo;\n}\n\nexport interface SendTransactionVariables {\n extrinsic: ISubmittableExtrinsic;\n}\n\nexport type UseSendTransactionOptions = LunoMutationOptions<\n TransactionReceipt,\n Error,\n SendTransactionVariables,\n unknown\n>;\n\nexport interface UseSendTransactionResult {\n sendTransaction: (\n variables: SendTransactionVariables,\n options?: UseSendTransactionOptions\n ) => void;\n sendTransactionAsync: (\n variables: SendTransactionVariables,\n options?: UseSendTransactionOptions\n ) => Promise<TransactionReceipt>;\n data: TransactionReceipt | undefined;\n error: Error | null;\n isError: boolean;\n isIdle: boolean;\n isPending: boolean;\n isSuccess: boolean;\n status: 'idle' | 'pending' | 'error' | 'success';\n reset: () => void;\n variables: SendTransactionVariables | undefined;\n txStatus: TxStatus;\n detailedStatus: DetailedTxStatus;\n}\n\nexport function useSendTransaction(\n hookLevelConfig?: UseSendTransactionOptions\n): UseSendTransactionResult {\n const { activeConnector, currentApi, isApiReady } = useLuno();\n const { account } = useAccount();\n\n const [txStatus, setTxStatus] = useState<TxStatus>('idle');\n const [detailedTxStatus, setDetailedTxStatus] = useState<DetailedTxStatus>('idle');\n const [txError, setTxError] = useState<Error | null>(null);\n\n const sendTransactionFn = useCallback(\n async (variables: SendTransactionVariables): Promise<TransactionReceipt> => {\n if (!currentApi || !isApiReady) {\n throw new Error('[useSendTransaction]: Polkadot API is not ready.');\n }\n if (!activeConnector) {\n throw new Error('[useSendTransaction]: No active connector found.');\n }\n if (!account || !account.address || !account.meta?.source) {\n throw new Error(\n '[useSendTransaction]: No active account, address, or account metadata (source) found.'\n );\n }\n if (!variables.extrinsic) {\n throw new Error('[useSendTransaction]: No extrinsic provided to send.');\n }\n\n const signer = await activeConnector.getSigner();\n if (!signer) {\n throw new Error('[useSendTransaction]: Could not retrieve signer from the injector.');\n }\n\n setTxStatus('signing');\n setDetailedTxStatus('idle');\n\n return new Promise<TransactionReceipt>((resolve, reject) => {\n let unsubscribe: (() => void) | undefined;\n\n variables.extrinsic\n .signAndSend(\n account.address,\n { signer },\n ({ status, dispatchError, events, dispatchInfo, txHash }: ISubmittableResult) => {\n const resolveAndUnsubscribe = (receipt: TransactionReceipt) => {\n if (unsubscribe) unsubscribe();\n resolve(receipt);\n };\n\n const rejectAndUnsubscribe = (error: Error) => {\n if (unsubscribe) unsubscribe();\n setTxError(error);\n reject(error);\n };\n\n switch (status.type) {\n case 'Broadcasting':\n setDetailedTxStatus('broadcasting');\n break;\n case 'BestChainBlockIncluded':\n setDetailedTxStatus('inBlock');\n break;\n case 'Finalized':\n setTxStatus('success');\n setDetailedTxStatus('finalized');\n if (dispatchError) {\n resolveAndUnsubscribe({\n transactionHash: txHash,\n blockHash: status.value?.blockHash,\n blockNumber: status.value?.blockNumber,\n events,\n status: 'failed',\n dispatchError,\n errorMessage: getReadableDispatchError(currentApi, dispatchError),\n dispatchInfo,\n });\n } else {\n resolveAndUnsubscribe({\n transactionHash: txHash,\n blockHash: status.value?.blockHash,\n blockNumber: status.value?.blockNumber,\n events,\n status: 'success',\n dispatchError: undefined,\n errorMessage: undefined,\n dispatchInfo,\n });\n }\n break;\n case 'Invalid':\n setTxStatus('failed');\n setDetailedTxStatus('invalid');\n rejectAndUnsubscribe(new Error(`Transaction invalid: ${txHash}`));\n break;\n case 'Drop':\n setTxStatus('failed');\n setDetailedTxStatus('dropped');\n rejectAndUnsubscribe(new Error(`Transaction dropped: ${txHash}`));\n break;\n }\n }\n )\n .then((unsub: () => void) => {\n unsubscribe = unsub;\n })\n .catch((error) => {\n setTxStatus('failed');\n console.error(\n '[useSendTransaction]: Error in signAndSend promise:',\n error?.message || error\n );\n setTxError(error as Error);\n reject(error);\n });\n });\n },\n [currentApi, isApiReady, activeConnector, account, setTxStatus, setDetailedTxStatus]\n );\n\n const mutationResult = useLunoMutation<\n TransactionReceipt,\n Error,\n SendTransactionVariables,\n unknown\n >(sendTransactionFn, hookLevelConfig);\n\n return {\n sendTransaction: mutationResult.mutate,\n sendTransactionAsync: mutationResult.mutateAsync,\n data: mutationResult.data,\n error: txError || mutationResult.error,\n isError: Boolean(txError) || mutationResult.isError,\n isIdle: mutationResult.isIdle,\n isPending: mutationResult.isPending,\n isSuccess: mutationResult.isSuccess,\n reset: mutationResult.reset,\n status: mutationResult.status,\n variables: mutationResult.variables,\n txStatus: txStatus,\n detailedStatus: detailedTxStatus,\n };\n}\n","import type { HexString } from '@luno-kit/core/types';\nimport type { ISubmittableExtrinsic } from 'dedot/types';\nimport { useCallback, useState } from 'react';\nimport { useLuno } from './useLuno';\nimport { type LunoMutationOptions, useLunoMutation } from './useLunoMutation';\n\nexport interface SendTransactionHashVariables {\n extrinsic: ISubmittableExtrinsic;\n}\n\nexport type UseSendTransactionHashOptions = LunoMutationOptions<\n HexString,\n Error,\n SendTransactionHashVariables,\n unknown\n>;\n\nexport interface UseSendTransactionHashResult {\n sendTransaction: (\n variables: SendTransactionHashVariables,\n options?: UseSendTransactionHashOptions\n ) => void;\n sendTransactionAsync: (\n variables: SendTransactionHashVariables,\n options?: UseSendTransactionHashOptions\n ) => Promise<HexString>;\n data: HexString | undefined;\n error: Error | null;\n isError: boolean;\n isIdle: boolean;\n isPending: boolean;\n isSuccess: boolean;\n status: 'idle' | 'pending' | 'error' | 'success';\n reset: () => void;\n variables: SendTransactionHashVariables | undefined;\n}\n\nexport function useSendTransactionHash(\n hookLevelConfig?: UseSendTransactionHashOptions\n): UseSendTransactionHashResult {\n const { account, activeConnector, currentApi, isApiReady } = useLuno();\n const [txError, setTxError] = useState<Error | null>(null);\n\n const sendTransactionFn = useCallback(\n async (variables: SendTransactionHashVariables): Promise<HexString> => {\n if (!currentApi || !isApiReady) {\n throw new Error('[useSendTransactionHash]: Polkadot API is not ready.');\n }\n if (!activeConnector) {\n throw new Error('[useSendTransactionHash]: No active connector found.');\n }\n if (!account || !account.address || !account.meta?.source) {\n throw new Error(\n '[useSendTransactionHash]: No active account, address, or account metadata (source) found.'\n );\n }\n if (!variables.extrinsic) {\n throw new Error('[useSendTransactionHash]: No extrinsic provided to send.');\n }\n\n const signer = await activeConnector.getSigner();\n if (!signer) {\n throw new Error('[useSendTransactionHash]: Could not retrieve signer from the injector.');\n }\n\n try {\n const txHash = await variables.extrinsic\n .signAndSend(account.address, { signer: signer })\n .catch((e) => {\n throw e;\n });\n return txHash as HexString;\n } catch (error) {\n setTxError(error as Error);\n throw error;\n }\n },\n [currentApi, isApiReady, activeConnector, account]\n );\n\n const mutationResult = useLunoMutation<HexString, Error, SendTransactionHashVariables, unknown>(\n sendTransactionFn,\n hookLevelConfig\n );\n\n return {\n sendTransaction: mutationResult.mutate,\n sendTransactionAsync: mutationResult.mutateAsync,\n data: mutationResult.data,\n error: txError || mutationResult.error,\n isError: Boolean(txError) || mutationResult.isError,\n isIdle: mutationResult.isIdle,\n isPending: mutationResult.isPending,\n isSuccess: mutationResult.isSuccess,\n reset: mutationResult.reset,\n status: mutationResult.status,\n variables: mutationResult.variables,\n };\n}\n","import { isSameAddress } from '@luno-kit/core/utils';\nimport { useLuno } from './useLuno';\nimport { type LunoMutationOptions, useLunoMutation } from './useLunoMutation';\n\nexport interface SignMessageVariables {\n message: string;\n}\n\nexport interface SignMessageData {\n signature: string;\n rawMessage: string;\n addressUsed: string;\n}\n\nexport type UseSignMessageOptions = LunoMutationOptions<\n SignMessageData,\n Error,\n SignMessageVariables,\n unknown\n>;\n\nexport interface UseSignMessageResult {\n signMessage: (variables: SignMessageVariables, options?: UseSignMessageOptions) => void;\n signMessageAsync: (\n variables: SignMessageVariables,\n options?: UseSignMessageOptions\n ) => Promise<SignMessageData>;\n data: SignMessageData | undefined;\n error: Error | null;\n isError: boolean;\n isIdle: boolean;\n isPending: boolean;\n isSuccess: boolean;\n status: 'idle' | 'pending' | 'error' | 'success';\n reset: () => void;\n variables: SignMessageVariables | undefined;\n}\n\nexport function useSignMessage(hookLevelConfig?: UseSignMessageOptions): UseSignMessageResult {\n const { activeConnector, account, accounts } = useLuno();\n\n const mutationFn = async (variables: SignMessageVariables): Promise<SignMessageData> => {\n if (!activeConnector) {\n throw new Error('[useSignMessage]: No active connector found to sign the message.');\n }\n if (!account || !account.address || !account.meta?.source) {\n throw new Error('[useSignMessage]: No address provided for signing.');\n }\n\n if (!accounts.some((acc) => acc.address === account.address)) {\n throw new Error(\n `[useSignMessage]: Address ${account.address} is not managed by ${activeConnector.id}.`\n );\n }\n\n if (!variables.message) {\n throw new Error('[useSignMessage]: No message provided for signing.');\n }\n\n const validAccount = accounts.find((acc) => isSameAddress(acc.address, account.address));\n\n if (!validAccount) {\n throw new Error('[useSignMessage]: Invalid account address.');\n }\n\n const signatureString = await activeConnector.signMessage(\n variables.message,\n validAccount.address\n );\n\n if (!signatureString) {\n throw new Error(\n '[useSignMessage]: Signature was not obtained. The user may have cancelled the request or the connector failed.'\n );\n }\n return {\n signature: signatureString,\n rawMessage: variables.message,\n addressUsed: account.address,\n };\n };\n\n const mutationResult = useLunoMutation<SignMessageData, Error, SignMessageVariables, unknown>(\n mutationFn,\n hookLevelConfig\n );\n\n return {\n signMessage: mutationResult.mutate,\n signMessageAsync: mutationResult.mutateAsync,\n data: mutationResult.data,\n error: mutationResult.error,\n isError: mutationResult.isError,\n isIdle: mutationResult.isIdle,\n isPending: mutationResult.isPending,\n isSuccess: mutationResult.isSuccess,\n reset: mutationResult.reset,\n status: mutationResult.status,\n variables: mutationResult.variables,\n };\n}\n","import { isNumber } from 'dedot/utils';\nimport { useMemo } from 'react';\nimport { useLuno } from './useLuno';\n\nconst DEFAULT_SS58_FORMAT = 42;\n\nexport interface UseSs58FormatResult {\n data?: number;\n isLoading: boolean;\n}\n\nexport const useSs58Format = (): UseSs58FormatResult => {\n const { currentApi, isApiReady, currentChain } = useLuno();\n\n const configuredSs58Fallback =\n currentChain?.ss58Format !== undefined ? currentChain.ss58Format : DEFAULT_SS58_FORMAT;\n\n return useMemo(() => {\n if (currentApi && isApiReady) {\n let ss58: number | undefined;\n try {\n const format = currentApi.consts.system.ss58Prefix;\n\n ss58 = isNumber(format) ? format : DEFAULT_SS58_FORMAT;\n } catch (e) {\n console.error('[useSs58Format] Error fetching chainSS58:', e);\n ss58 = configuredSs58Fallback;\n }\n return { data: ss58, isLoading: false };\n } else {\n return { data: undefined, isLoading: true };\n }\n }, [currentApi, isApiReady, configuredSs58Fallback]);\n};\n","import type { ConnectionStatus } from '../types';\nimport { useLuno } from './useLuno';\n\nexport const useStatus = (): ConnectionStatus => {\n const { status } = useLuno();\n return status;\n};\n","import type { Chain } from '../types';\nimport { useLuno } from './useLuno';\nimport { type LunoMutationOptions, useLunoMutation } from './useLunoMutation';\n\nexport interface SwitchChainVariables {\n chainId: string;\n}\n\nexport type UseSwitchChainOptions = LunoMutationOptions<void, Error, SwitchChainVariables, unknown>;\n\nexport interface UseSwitchChainResult {\n switchChain: (variables: SwitchChainVariables, options?: UseSwitchChainOptions) => void;\n switchChainAsync: (\n variables: SwitchChainVariables,\n options?: UseSwitchChainOptions\n ) => Promise<void>;\n chains: Chain[];\n currentChain?: Chain;\n currentChainId?: string;\n data: undefined;\n error: Error | null;\n isError: boolean;\n isIdle: boolean;\n isPending: boolean;\n isSuccess: boolean;\n reset: () => void;\n variables: SwitchChainVariables | undefined;\n}\n\nexport const useSwitchChain = (hookLevelConfig?: UseSwitchChainOptions): UseSwitchChainResult => {\n const { switchChain: storeSwitchChain, config, currentChain, currentChainId } = useLuno();\n\n const switchChainFn = async (variables: SwitchChainVariables): Promise<void> => {\n await storeSwitchChain(variables.chainId);\n };\n\n const mutationResult = useLunoMutation<void, Error, SwitchChainVariables, unknown>(\n switchChainFn,\n hookLevelConfig\n );\n\n return {\n switchChain: mutationResult.mutate,\n switchChainAsync: mutationResult.mutateAsync,\n chains: config?.chains ? [...config.chains] : [],\n currentChain,\n currentChainId,\n data: mutationResult.data as undefined,\n error: mutationResult.error,\n isError: mutationResult.isError,\n isIdle: mutationResult.isIdle,\n isPending: mutationResult.isPending,\n isSuccess: mutationResult.isSuccess,\n reset: mutationResult.reset,\n variables: mutationResult.variables,\n };\n};\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@luno-kit/react",
3
3
  "description": "React Hooks and Provider for Luno, enabling easy Polkadot wallet interactions in React applications.",
4
- "version": "0.0.8",
4
+ "version": "0.0.9",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "module": "dist/index.js",
@@ -51,7 +51,7 @@
51
51
  "@dedot/chaintypes": "0.152.0",
52
52
  "dedot": "0.16.0",
53
53
  "zustand": "5.0.4",
54
- "@luno-kit/core": "0.0.8"
54
+ "@luno-kit/core": "0.0.9"
55
55
  },
56
56
  "devDependencies": {
57
57
  "@tanstack/react-query": "5.81.5",