// SPDX-License-Identifier: MIT // solhint-disable private-vars-leading-underscore pragma solidity ^0.8.13; import "../../../../../warper/mechanics/v1-controller/renting-hook/IRentingHookMechanics.sol"; import "../../../utils/TestPurposeInitializationContext.sol"; import "../../../../../warper/ERC721/ERC721Warper.sol"; contract SampleWarperWithRentalHookBasedMemory is IRentingHookMechanics, TestPurposeInitializationContext, ERC721Warper { mapping(uint256 => Rentings.Agreement) private _rentalAgreements; mapping(address => mapping(uint256 => uint256)) private _renterWarpedTokenIdToItsLastRentalAgreement; mapping(uint256 => Accounts.RentalEarnings) private _rentalEarnings; bool private _successState = true; constructor(address original, address metahub) testWarperInitializer { _Warper_init(original, metahub); } function setSuccessState(bool successState_) external { _successState = successState_; } function __onRent( uint256 rentalId_, Rentings.Agreement calldata rentalAgreement_, Accounts.RentalEarnings calldata rentalEarnings_ ) external override returns (bool success, string memory errorMessage) { _rentalAgreements[rentalId_] = rentalAgreement_; _rentalEarnings[rentalId_] = rentalEarnings_; for (uint256 i = 0; i < rentalAgreement_.warpedAssets.length; i++) { (, uint256 tokenId) = _decodeAssetId(rentalAgreement_.warpedAssets[i].id); _renterWarpedTokenIdToItsLastRentalAgreement[rentalAgreement_.renter][tokenId] = rentalId_; } success = _successState; errorMessage = "There was an error!"; } function getRentalAgreement(uint256 rentalId) external view returns (Rentings.Agreement memory) { return _rentalAgreements[rentalId]; } function getRentalEarnings(uint256 rentalId) external view returns (Accounts.RentalEarnings memory) { return _rentalEarnings[rentalId]; } function getRenterWarpedTokenIdLastRentalAgreement(address renter, uint256 tokenId) external view returns (uint256 rentalId) { return _renterWarpedTokenIdToItsLastRentalAgreement[renter][tokenId]; } function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IRentingHookMechanics).interfaceId || super.supportsInterface(interfaceId); } }