import { getAddress, isAddress, type Address } from 'viem'; export function isRecord(value: unknown): value is Record { return typeof value === 'object' && value !== null; } export function coerceString(value: unknown): string | null { if (typeof value === 'string') { const trimmed = value.trim(); if (trimmed.length > 0) return trimmed; } return null; } export function getErrorMessage(error: unknown, fallback: string): string { if (error instanceof Error) { // viem's BaseError extends Error and exposes a terse shortMessage; prefer it. const short = coerceString((error as unknown as Record).shortMessage); if (short) return short; const msg = coerceString(error.message); if (msg) return msg; } if (isRecord(error)) { const short = coerceString(error.shortMessage); if (short) return short; const msg = coerceString(error.message); if (msg) return msg; } return fallback; } export function ensureAddress(value: string, label: string): Address { if (!value || !isAddress(value)) { throw new Error(`${label} is not a valid address`); } return getAddress(value); }