// SPDX-License-Identifier: MIT pragma solidity >=0.7.6 <0.9; /** * Interface for the `AddressBinder` contract. */ interface IAddressBinder { /** * @notice Event emitted when c-chan and P-chain addresses are registered */ event AddressesRegistered( bytes publicKey, bytes20 pAddress, address cAddress ); /** * Register P-chain and C-chain addresses. * @param _publicKey Public key from which addresses to register are derived from. * @param _pAddress P-chain address to register. * @param _cAddress C-chain address to register. */ function registerAddresses( bytes calldata _publicKey, bytes20 _pAddress, address _cAddress ) external; /** * Register P-chain and C-chain addresses derived from given public key. * @param _publicKey Public key from which addresses to register are derived from. * @return _pAddress Registered P-chain address. * @return _cAddress Registered C-chain address. */ function registerPublicKey( bytes calldata _publicKey ) external returns (bytes20 _pAddress, address _cAddress); /** * @dev Queries the C-chain address for given P-chain address. * @param _pAddress The P-chain address for which corresponding C-chain address will be retrieved. * @return _cAddress The corresponding c-address. **/ function pAddressToCAddress( bytes20 _pAddress ) external view returns (address _cAddress); /** * @dev Queries the P-chain address for given C-chain address. * @param _cAddress The C-chain address for which corresponding P-chain address will be retrieved. * @return _pAddress The corresponding p-address. **/ function cAddressToPAddress( address _cAddress ) external view returns (bytes20 _pAddress); }