// SPDX-License-Identifier: MIT pragma solidity ^0.8.13; import "../../contract-registry/IContractEntity.sol"; import "../Rentings.sol"; interface IRentingManager is IContractEntity { /** * @dev Thrown when the message sender doesn't match the renter address. */ error CallerIsNotRenter(); /** * @dev Thrown when the Rental Agreement with `rentalId` * is not registered among present or historical Rental Agreements, * meaning it has never existed. * @param rentalId The ID of Rental Agreement that never existed. */ error RentalAgreementNeverExisted(uint256 rentalId); /** * @dev Emitted when the warped asset(s) are rented. * @param rentalId Rental agreement ID. * @param renter The renter account address. * @param listingId The corresponding ID of the original asset(s) listing. * @param warpedAssets Rented warped asset(s). * @param startTime The rental agreement staring time. * @param endTime The rental agreement ending time. */ event AssetRented( uint256 indexed rentalId, address indexed renter, uint256 indexed listingId, Assets.Asset[] warpedAssets, uint32 startTime, uint32 endTime ); /** * @dev Returns token amount from specific collection rented by particular account. * @param warpedCollectionId Warped collection ID. * @param renter The renter account address. * @return Rented value. */ function collectionRentedValue(bytes32 warpedCollectionId, address renter) external view returns (uint256); /** * @dev Returns the rental status of a given warped asset. * @param warpedAssetId Warped asset ID. * @return The asset rental status. */ function assetRentalStatus(Assets.AssetId calldata warpedAssetId) external view returns (Rentings.RentalStatus); /** * @dev Evaluates renting params and returns rental fee breakdown. * @param rentingParams Renting parameters. * @return Rental fee breakdown. */ function estimateRent(Rentings.Params calldata rentingParams) external view returns (Rentings.RentalFees memory); /** * @dev Performs renting operation. * @param rentingParams Renting parameters. * @param maxPaymentAmount Maximal payment amount the renter is willing to pay. * @return New rental ID. */ function rent( Rentings.Params calldata rentingParams, bytes memory tokenQuote, bytes memory tokenQuoteSignature, uint256 maxPaymentAmount ) external returns (uint256); /** * @dev Returns the Rental Agreement details by the `rentalId`. * Performs a look up among both * present (contains active and inactive, but not yet deleted Rental Agreements) * and historical ones (inactive and deleted Rental Agreements only). * @param rentalId Rental agreement ID. * @return Rental agreement details. */ function rentalAgreementInfo(uint256 rentalId) external view returns (Rentings.Agreement memory); /** * @dev Returns the number of currently registered rental agreements for particular renter account. * @param renter Renter address. * @return Rental agreement count. */ function userRentalCount(address renter) external view returns (uint256); /** * @dev Returns the paginated list of currently registered rental agreements for particular renter account. * @param renter Renter address. * @param offset Starting index. * @param limit Max number of items. * @return Rental agreement IDs. * @return Rental agreements. */ function userRentalAgreements( address renter, uint256 offset, uint256 limit ) external view returns (uint256[] memory, Rentings.Agreement[] memory); }