// SPDX-License-Identifier: MIT pragma solidity ^0.8.13; import "../../../acl/delegated/IDelegatedAccessControlEnumerable.sol"; import "../../../contract-registry/IContractEntity.sol"; import "../IListingConfiguratorController.sol"; interface IListingConfiguratorRegistry is IDelegatedAccessControlEnumerable, IContractEntity { error InvalidZeroAddress(); error CannotGrantRoleForUnregisteredController(address delegate); error InvalidListingConfiguratorController(address controller); /** * @dev Thrown when lister specifies listing configurator which is not registered in * {IListingConfiguratorRegistry} */ error ListingConfiguratorNotRegistered(address listingConfigurator); event ListingConfiguratorControllerChanged(address indexed previousController, address indexed newController); /** * IListingConfiguratorRegistryConfigurator. * The listing configurator must be deployed and configured prior to registration, * since it becomes available for renting immediately. * @param listingConfigurator Listing configurator address. */ function registerListingConfigurator(address listingConfigurator, address admin) external; function setController(address controller) external; function getController(address listingConfigurator) external view returns (IListingConfiguratorController); }