// SPDX-License-Identifier: Apache-2.0 pragma solidity 0.8.2; interface IRegistry { event LogContractRegistered( bytes32 release, bytes32 contractName, address contractAddress, bool isNew ); event LogContractDeregistered(bytes32 release, bytes32 contractName); event LogReleasePrepared(bytes32 release); function registerInRelease( bytes32 _release, bytes32 _contractName, address _contractAddress ) external; function register(bytes32 _contractName, address _contractAddress) external; function deregisterInRelease(bytes32 _release, bytes32 _contractName) external; function deregister(bytes32 _contractName) external; function prepareRelease(bytes32 _newRelease) external; function getContractInRelease(bytes32 _release, bytes32 _contractName) external view returns (address _contractAddress); function getContract(bytes32 _contractName) external view returns (address _contractAddress); function getRelease() external view returns (bytes32 _release); function ensureSender(address sender, bytes32 _contractName) external view returns(bool _senderMatches); function contracts() external view returns (uint256 _numberOfContracts); function contractName(uint256 idx) external view returns (bytes32 _contractName); }