// SPDX-License-Identifier: MIT pragma solidity ^0.8.13; import "../../../../contract-registry/IContractEntity.sol"; import "../../../../listing/listing-configurator/v1-controller/presets/GeneralGuildPreset.sol"; interface IGeneralGuildWizardV1 is IContractEntity { /** * @dev reverts if given address is zero address. */ error ZeroAddress(); /** * @dev Thrown when the provided `account` doesn't match the Listing params' lister address. */ error CallerIsNotLister(); /** * @dev ListingTerms packed data struct. */ struct ListingTermsPack { string group; LTR.ListingTerms config; } /** * @dev Creates new listing and fill in listing terms on universe level. * Emits an {ListingCreated, UniverseListingTermsRegistered} events. * @param preset General Guild Preset based Listing Configurator. * @param assets Assets to be listed. * @param params Listing params. * @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. * @param terms Listing terms on universe level. * * Makes possible to run this {assets} only within this universe. */ function listWithTermsForUniverse( GeneralGuildPreset preset, Assets.Asset[] calldata assets, Listings.Params calldata params, uint32 maxLockPeriod, bool immediatePayout, uint256 universeId, ListingTermsPack[] calldata terms ) external; }