// SPDX-License-Identifier: MIT pragma solidity ^0.8.13; import "@openzeppelin/contracts/interfaces/IERC165.sol"; import "../../contract-registry/IContractEntity.sol"; import "../listing-terms-registry/IListingTermsRegistry.sol"; import "../../tax/tax-terms-registry/ITaxTermsRegistry.sol"; import "../../renting/Rentings.sol"; interface IListingController is IERC165, IContractEntity { /** * @dev Calculates rental fee based on listing terms, tax terms and renting params. * @param listingTermsParams Listing terms params. * @param listingTerms Listing terms. * @param rentingParams Renting params. * @return totalFee Rental fee (base tokens per second including taxes). * @return listerBaseFee Lister fee (base tokens per second without taxes). * @return universeBaseFee Universe fee. * @return protocolBaseFee Protocol fee. * @return universeTaxTerms Universe tax terms. * @return protocolTaxTerms Protocol tax terms. */ function calculateRentalFee( IListingTermsRegistry.Params calldata listingTermsParams, IListingTermsRegistry.ListingTerms calldata listingTerms, Rentings.Params calldata rentingParams ) external view returns ( uint256 totalFee, uint256 listerBaseFee, uint256 universeBaseFee, uint256 protocolBaseFee, ITaxTermsRegistry.TaxTerms memory universeTaxTerms, ITaxTermsRegistry.TaxTerms memory protocolTaxTerms ); /** * @dev Returns implemented strategy ID. * @return Listing strategy ID. */ function strategyId() external pure returns (bytes4); }