pub use IAddressRegistry::{
IAddressRegistryErrors as AddrRegistryError, IAddressRegistryEvents as AddrRegistryEvent,
};
use alloy_primitives::Address;
crate::sol! {
#[derive(Debug, PartialEq, Eq)]
#[sol(abi)]
interface IAddressRegistry {
function registerVirtualMaster(bytes32 salt) external returns (bytes4 masterId);
function getMaster(bytes4 masterId) external view returns (address);
function resolveRecipient(address to) external view returns (address effectiveRecipient);
function resolveVirtualAddress(address virtualAddr) external view returns (address master);
function isVirtualAddress(address addr) external pure returns (bool);
function decodeVirtualAddress(address addr) external pure returns (bool isVirtual, bytes4 masterId, bytes6 userTag);
event MasterRegistered(bytes4 indexed masterId, address indexed masterAddress);
error MasterIdCollision(address master);
error InvalidMasterAddress();
error ProofOfWorkFailed();
error VirtualAddressUnregistered();
}
}
impl AddrRegistryError {
pub const fn master_id_collision(master: Address) -> Self {
Self::MasterIdCollision(IAddressRegistry::MasterIdCollision { master })
}
pub const fn invalid_master_address() -> Self {
Self::InvalidMasterAddress(IAddressRegistry::InvalidMasterAddress {})
}
pub const fn proof_of_work_failed() -> Self {
Self::ProofOfWorkFailed(IAddressRegistry::ProofOfWorkFailed {})
}
pub const fn virtual_address_unregistered() -> Self {
Self::VirtualAddressUnregistered(IAddressRegistry::VirtualAddressUnregistered {})
}
}