// SPDX-License-Identifier: MIT pragma solidity ^0.8.13; import "@openzeppelin/contracts/interfaces/IERC721.sol"; import "../../../contract-registry/IContractEntity.sol"; import "../../../listing/Listings.sol"; interface IListingWizardV1 is IContractEntity { /** * @dev Thrown when the provided `account` doesn't match the Listing params' lister address. */ error CallerIsNotLister(); // @dev Thrown, when the declared lister is different from the Delegated Listing signer. error DeclaredListerIsDifferentFromDelegatedListingSigner(address declaredLister, address delegatedLitingSigner); /** * @dev Creates new listing and fill in listing terms on universe level. * Emits an {ListingCreated, UniverseListingTermsRegistered} events. * @param assets Assets to be listed. * @param params Listing params. * @param terms Listing terms on universe level. * @param maxLockPeriod The maximum amount of time the original asset owner can wait before getting the asset back. * @param immediatePayout Indicates whether the rental fee must be transferred to the lister on every renting. * * If FALSE, the rental fees get accumulated until withdrawn manually. * @param universeId Universe ID. * * Makes possible to run this {assets} only within this universe. * @return listingId New listing ID. * @return listingTermsId New listing terms ID. */ function createListingWithTerms( Assets.Asset[] calldata assets, Listings.Params calldata params, IListingTermsRegistry.ListingTerms calldata terms, uint32 maxLockPeriod, bool immediatePayout, uint256 universeId ) external returns (uint256 listingId, uint256 listingTermsId); /** * @dev Does the same as `createListingWithTerms`, with only difference to allow * delegated listing for the purpose of gas-less TXs. * @param delegatedListingSignature Delegated Listing ECDSA signature ABI encoded (v,r,s)(uint8, bytes32, bytes32). */ function delegatedCreateListingWithTerms( Assets.Asset[] calldata assets, Listings.Params calldata params, IListingTermsRegistry.ListingTerms calldata terms, uint32 maxLockPeriod, bool immediatePayout, uint256 universeId, bytes calldata delegatedListingSignature ) external returns (uint256 listingId, uint256 listingTermsId); /** * @dev Get the current nonce of lister for delegated listing. * This 'nonce' should be included in the signature of DelegatedListing. * @param lister Address of the actual lister. */ function getDelegatedListingCurrentNonce(address lister) external view returns (uint256); // @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}. // solhint-disable-next-line func-name-mixedcase function DOMAIN_SEPARATOR() external view returns (bytes32); // @dev Getting the Chain ID function getChainId() external view returns (uint256); }