/* Crafted with love by Fueled on Bacon https://fueledonbacon.com */ //SPDX-License-Identifier: MIT pragma solidity ^0.8.17; interface IReservForwarder { event NewFactory(uint256 factoriesCount, address indexed factory); event DeprecateFactory(address indexed factory, bool indexed deprecate); event Deployment(address indexed venue, address indexed factory, address indexed deployed); event Removed(address indexed venue, address indexed factory, address indexed _event); error ForwarderFactoryAddressZero(); error ForwarderUnableToRetrieveFactryInterface(); error ForwarderNotSupportedInterface(); error ForwarderUnexistentFactory(); error ForwarderDeprecatedFactory(); error ForwarderUnknownVenue(); error ForwarderErrorDeploying(); error ForwarderErrorRemoving(); error ForwarderFactoryAlreadyAdded(); error ForwarderNotDeprecatedFactory(); function versionForwarder() external pure returns (string memory); /// @dev must be called by forwarder owner /// @param factory must implement IERC721FactoryWide Interface function addfactory(address factory) external; /// @dev must be called by forwarder owner function deprecateFactory(address factory, bool deprecate) external; function deploy( uint256 typeOf, string memory name, string memory symbol, bytes memory mainData ) external returns (address); function removeEvent(address _event, uint256 typeOf) external; function getFactoryAt(uint256 position) external view returns(address); function getFactoryPosition(address factory) external view returns(uint256); }