/** * useResolvedIdentity Hook * * Resolve ENS names and avatars using viem. * Uses discriminated union for type-safe status handling. */ import { ChainTypeEnum } from '@openfort/openfort-js'; /** * Resolved identity state - discriminated union */ type ResolvedIdentity = { status: 'idle'; } | { status: 'loading'; } | { status: 'error'; error: Error; } | { status: 'success'; name: string | null; avatar: string | null; }; interface UseResolvedIdentityOptions { /** Address to resolve (empty string if not available yet) */ address: string; /** Chain type for resolution */ chainType?: ChainTypeEnum; /** ENS chain ID. Only chainId 1 (mainnet) supports ENS. Default 0 = do not resolve. */ ensChainId?: number; /** Enable/disable the query (for conditional fetching without breaking React rules) */ enabled?: boolean; } /** * Hook for resolving addresses to ENS names and avatars. * * Uses viem for ENS resolution. Supports Solana name services in the future. * * @example Basic usage * ```tsx * function Profile({ address }: { address: string }) { * const identity = useResolvedIdentity({ address }); * * switch (identity.status) { * case 'idle': * return null; * case 'loading': * return

Resolving...

; * case 'error': * return

Error: {identity.error.message}

; * case 'success': * return ( *
* {identity.avatar && Avatar} *

{identity.name ?? address}

*
* ); * } * } * ``` * * @example With enabled option * ```tsx * const identity = useResolvedIdentity({ * address: wallet.status === 'connected' ? wallet.address : '', * enabled: wallet.status === 'connected', * }); * ``` */ export declare function useResolvedIdentity(options: UseResolvedIdentityOptions): ResolvedIdentity; export {};