import { ethers } from 'ethers'; export interface RecenterAccessReader { recenterAccess(): Promise; } export async function readRecenterAccess(reader: RecenterAccessReader, zeroAddress: string): Promise { let raw: string; try { raw = await reader.recenterAccess(); } catch (error) { throw new Error(`Failed to read recenterAccess: ${(error as Error).message}`); } if (typeof raw !== 'string' || raw.length === 0) { return zeroAddress; } if (raw === zeroAddress) { return zeroAddress; } try { return ethers.getAddress(raw); } catch (error) { throw new Error(`Invalid recenterAccess address: ${(error as Error).message}`); } } export function hasRecenterAccess(recenterAddress: string, walletAddress: string, zeroAddress: string): boolean { if (recenterAddress === zeroAddress) { return true; } try { return ethers.getAddress(recenterAddress) === ethers.getAddress(walletAddress); } catch { return false; } }