import bs58 from 'bs58' /** * Encode a string message to base58 format (used for Solana message signing) */ export const base58Encode = (message: string) => { // Use TextEncoder for browser compatibility const encoder = new TextEncoder() const messageBytes = encoder.encode(message) return bs58.encode(messageBytes) } export const standardizeSignature = ( rawSignature: string | Uint8Array ): string => { // First ensure we have a string let signature = typeof rawSignature === 'string' ? rawSignature : bs58.encode(rawSignature) // If signature is longer than standard 88 chars, decode and re-encode if (signature.length > 88) { try { const bytes = bs58.decode(signature) const truncatedBytes = bytes.slice(0, 64) signature = bs58.encode(truncatedBytes) } catch { throw new Error('Failed to normalize signature') } } return signature }