import { getAddress } from 'viem' import { ZERO_ADDRESS } from './constants.ts' type FormatAddressOptions = { /** @default 'short' */ style?: 'short' | 'full' | undefined } /** * Formats an EVM wallet address as a string. * * @param address - The address to format. * @param options - Formatting options. * @returns The formatted address string. */ export function formatAddress(address: string, options: FormatAddressOptions = {}): string { const { style = 'short' } = options if (!address) address = ZERO_ADDRESS try { address = address.startsWith('0x') ? getAddress(address) : address } catch {} switch (style) { case 'short': const lengthOnEachSide = 6 if (address.length <= lengthOnEachSide * 2 + 1) return address return `${address.slice(0, lengthOnEachSide)}–${address.slice(-lengthOnEachSide)}` case 'full': return address } }