/** * MessageHash Value Object * * Hash of message to be signed. */ export class MessageHash { private readonly _hash: Buffer; private constructor(hash: Buffer) { this._hash = hash; } get bytes(): Buffer { return Buffer.from(this._hash); } static create(hash: Buffer): MessageHash { if (!hash || hash.length !== 32) { throw new Error('Message hash must be 32 bytes'); } return new MessageHash(hash); } static fromHex(hex: string): MessageHash { const cleanHex = hex.replace('0x', ''); if (cleanHex.length !== 64) { throw new Error('Message hash must be 32 bytes (64 hex characters)'); } return MessageHash.create(Buffer.from(cleanHex, 'hex')); } toHex(): string { return '0x' + this._hash.toString('hex'); } equals(other: MessageHash): boolean { return this._hash.equals(other._hash); } toString(): string { return this.toHex(); } }