// SPDX-License-Identifier: MIT // solhint-disable private-vars-leading-underscore pragma solidity ^0.8.13; import "../../../../../warper/IWarperPreset.sol"; import "../../../../../warper/ERC721/ERC721Warper.sol"; contract ERC721WarperPresetMock is IWarperPreset, ERC721Warper { /** * @dev Original asset address slot. */ bytes32 private constant _ORIGINAL_SLOT = bytes32(uint256(keccak256("iq.warper.original")) - 1); function __initialize(bytes calldata config) external warperInitializer { (address original, address metahub) = abi.decode(config, (address, address)); _Warper_init(original, metahub); } function switchOriginalAssetCollection(address newOriginal) external { StorageSlot.getAddressSlot(_ORIGINAL_SLOT).value = newOriginal; } function supportsInterface(bytes4 interfaceId) public view override(ERC721Warper, IERC165) returns (bool) { return interfaceId == type(IWarperPreset).interfaceId || super.supportsInterface(interfaceId); } }