import { useContext } from 'react' import { ConnectionContext } from '../providers/ConnectionProvider' import type { UseSessionReturn } from '@meshconnect/uwc-types' /** * Hook for accessing the current wallet session state * @returns Session information including active address, network, and connection details * @throws Error if used outside of ConnectionProvider * @example * ```tsx * const { activeAddress, activeNetwork, availableNetworks } = useSession() * * if (activeAddress) { * console.log(`Connected: ${activeAddress}`) * console.log(`Network: ${activeNetwork?.name}`) * console.log(`Available networks: ${availableNetworks.length}`) * } * ``` */ export function useSession(): UseSessionReturn { const context = useContext(ConnectionContext) if (!context) { throw new Error('useSession must be used within a ConnectionProvider') } const { session } = context return { session, activeAddress: session.activeAddress, activeNetwork: session.activeNetwork, activeWalletCapabilities: session.activeWalletCapabilities, activeNetworkWalletCapabilities: session.activeNetworkWalletCapabilities, availableNetworks: session.availableNetworks, activeConnector: session.connectionMode, availableAddresses: session.availableAddresses, publicKey: session.publicKey } }