// SPDX-License-Identifier: MIT pragma solidity ^0.8.13; import "../../../contract-registry/IContractEntity.sol"; import "../../../universe/universe-registry/IUniverseRegistry.sol"; import "../../../tax/tax-terms-registry/ITaxTermsRegistry.sol"; import "../../../warper/warper-manager/IWarperManager.sol"; interface IUniverseWizardV1 is IContractEntity { /** * @dev Does a setup of universe. * @param universeParams Universe registration params. * @return universeId Universe ID. */ function setupUniverse(IUniverseRegistry.UniverseParams calldata universeParams) external returns (uint256 universeId); /** * @dev Does a setup of universe. * Step 1. create universe; * Step 2. deploy warper from a preset (if no `existingWarperAddress` is provided); * Step 3. register deployed warper; * Step 4. define Warper Tax Terms; * @param universeParams Universe registration params. * @param universeWarperTaxTerms Tax terms for Warper in Universe. * @param existingWarperAddress Already deployed Warper address. * @param warperRegistrationParams Not fully filled (without universeId) Warper registration params. * @param warperPresetId Warper Preset ID. * @param warperInitData Bytes with Warper constructor params. * @return universeId Universe ID. * @return deployedWarperAddress Deployed Warper address (new or existing one). */ function setupUniverseAndWarper( IUniverseRegistry.UniverseParams calldata universeParams, ITaxTermsRegistry.TaxTerms calldata universeWarperTaxTerms, address existingWarperAddress, IWarperManager.WarperRegistrationParams memory warperRegistrationParams, bytes32 warperPresetId, bytes calldata warperInitData ) external returns (uint256 universeId, address deployedWarperAddress); }