UNPKG

@renft/sdk

Version:

**ReNFT** is a multi-chain highly gas-optimised NFT rental protocol and platform that can be whitelabel integrated into any project to enable collateral-free in-house renting, lending, and reward share (scholarship automation).

2,126 lines (2,109 loc) 138 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } var bignumber = require('@ethersproject/bignumber'); var address = require('@ethersproject/address'); var contracts = require('@ethersproject/contracts'); var isEqual = _interopDefault(require('react-fast-compare')); var utils = require('viem/utils'); (function (EVMNetworkType) { EVMNetworkType["ETHEREUM_MAINNET"] = "ETHEREUM_MAINNET"; EVMNetworkType["ETHEREUM_GOERLI_TESTNET"] = "ETHEREUM_GOERLI_TESTNET"; EVMNetworkType["POLYGON_MAINNET"] = "POLYGON_MAINNET"; EVMNetworkType["AVALANCHE_MAINNET"] = "AVALANCHE_MAINNET"; EVMNetworkType["AVALANCHE_FUJI_TESTNET"] = "AVALANCHE_FUJI_TESTNET"; })(exports.EVMNetworkType || (exports.EVMNetworkType = {})); (function (Chain) { Chain[Chain["ETHEREUM_MAINNET"] = 1] = "ETHEREUM_MAINNET"; Chain[Chain["ETHEREUM_GOERLI_TESTNET"] = 5] = "ETHEREUM_GOERLI_TESTNET"; Chain[Chain["POLYGON_MAINNET"] = 137] = "POLYGON_MAINNET"; Chain[Chain["AVALANCHE_MAINNET"] = 43114] = "AVALANCHE_MAINNET"; Chain[Chain["AVALANCHE_FUJI_TESTNET"] = 43113] = "AVALANCHE_FUJI_TESTNET"; })(exports.Chain || (exports.Chain = {})); (function (PaymentToken) { PaymentToken[PaymentToken["SENTINEL"] = 0] = "SENTINEL"; PaymentToken[PaymentToken["WETH"] = 1] = "WETH"; PaymentToken[PaymentToken["DAI"] = 2] = "DAI"; PaymentToken[PaymentToken["USDC"] = 3] = "USDC"; PaymentToken[PaymentToken["USDT"] = 4] = "USDT"; PaymentToken[PaymentToken["TUSD"] = 5] = "TUSD"; PaymentToken[PaymentToken["RENT"] = 6] = "RENT"; /* reserved for when RENT token is deployed */ PaymentToken[PaymentToken["ACS"] = 7] = "ACS"; PaymentToken[PaymentToken["WELT"] = 8] = "WELT"; PaymentToken[PaymentToken["KNIGHT"] = 9] = "KNIGHT"; PaymentToken[PaymentToken["TOSHI"] = 10] = "TOSHI"; })(exports.PaymentToken || (exports.PaymentToken = {})); (function (NFTStandard) { NFTStandard[NFTStandard["E721"] = 0] = "E721"; NFTStandard[NFTStandard["E1155"] = 1] = "E1155"; })(exports.NFTStandard || (exports.NFTStandard = {})); (function (RenftContractType) { RenftContractType["AZRAEL"] = "AZRAEL"; RenftContractType["SYLVESTER"] = "SYLVESTER"; RenftContractType["WHOOPI"] = "WHOOPI"; RenftContractType["RESOLVER"] = "RESOLVER"; })(exports.RenftContractType || (exports.RenftContractType = {})); (function (AzraelVersion) { AzraelVersion["V0"] = "V0"; })(exports.AzraelVersion || (exports.AzraelVersion = {})); (function (WhoopiVersion) { WhoopiVersion["V0"] = "V0"; })(exports.WhoopiVersion || (exports.WhoopiVersion = {})); (function (SylvesterVersion) { SylvesterVersion["V0"] = "V0"; SylvesterVersion["V1"] = "V1"; })(exports.SylvesterVersion || (exports.SylvesterVersion = {})); (function (ResolverVersion) { ResolverVersion["V0"] = "V0"; ResolverVersion["V1"] = "V1"; })(exports.ResolverVersion || (exports.ResolverVersion = {})); var _ETHEREUM_MAINNET_PAY, _ETHEREUM_GOERLI_TEST, _POLYGON_MAINNET_PAYM, _AVALANCHE_FUJI_TESTN, _AVALANCHE_MAINNET_PA, _NETWORK_RESOLVERS, _ALL_CHAINS, _ALL_NETWORKS; var NETWORK_ETHEREUM_MAINNET = { chainId: exports.Chain.ETHEREUM_MAINNET, type: exports.EVMNetworkType.ETHEREUM_MAINNET }; var NETWORK_ETHEREUM_GOERLI_TESTNET = { chainId: exports.Chain.ETHEREUM_GOERLI_TESTNET, type: exports.EVMNetworkType.ETHEREUM_GOERLI_TESTNET }; var NETWORK_POLYGON_MAINNET = { chainId: exports.Chain.POLYGON_MAINNET, type: exports.EVMNetworkType.POLYGON_MAINNET }; var NETWORK_AVALANCHE_FUJI_TESTNET = { chainId: exports.Chain.AVALANCHE_FUJI_TESTNET, type: exports.EVMNetworkType.AVALANCHE_FUJI_TESTNET }; var NETWORK_AVALANCHE_MAINNET = { chainId: exports.Chain.AVALANCHE_MAINNET, type: exports.EVMNetworkType.AVALANCHE_MAINNET }; // TODO: enforce this relationship with ContractTypes // * Note, this price does not apply to Whoopi var MAX_PRICE = 9999.9999; var NUM_BITS_IN_BYTE = 8; var MAX_DECIMAL_LENGTH = 4; // Resolver related var SENTINEL = { address: '', scale: 0 }; var ETHEREUM_WETH = { address: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', scale: 18 }; var ETHEREUM_DAI = { address: '0x6B175474E89094C44Da98b954EedeAC495271d0F', scale: 18 }; var ETHEREUM_USDC = { address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', scale: 6 }; var ETHEREUM_USDT = { address: '0xdAC17F958D2ee523a2206206994597C13D831ec7', scale: 6 }; var ETHEREUM_TUSD = { address: '0x0000000000085d4780B73119b644AE5ecd22b376', scale: 18 }; var ETHEREUM_TOSHI = { address: '0xF136D7b0B7AE5b86D21E7B78DFA95375a7360f19', scale: 18 }; var GOERLI_WETH = { address: '0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6', scale: 18 }; var GOERLI_DAI = { address: '0x9D233A907E065855D2A9c7d4B552ea27fB2E5a36', scale: 18 }; var POLYGON_WETH = { address: '0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', scale: 18 }; var POLYGON_DAI = { address: '0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063', scale: 18 }; var POLYGON_USDC = { address: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', scale: 6 }; var POLYGON_USDT = { address: '0xc2132D05D31c914a87C6611C10748AEb04B58e8F', scale: 6 }; var POLYGON_TUSD = { address: '0x2e1AD108fF1D8C782fcBbB89AAd783aC49586756', scale: 18 }; var POLYGON_WELT = { address: '0x23E8B6A3f6891254988B84Da3738D2bfe5E703b9', scale: 18 }; var POLYGON_KNIGHT = { address: '0x4455eF8B4B4A007a93DaA12DE63a47EEAC700D9D', scale: 18 }; var FUJI_WETH = { address: '0x40E71a970Ff1fbd21A53b4d2dbc102Be0E1d574f', scale: 18 }; var FUJI_DAI = { address: '0x40E71a970Ff1fbd21A53b4d2dbc102Be0E1d574f', scale: 18 }; var FUJI_USDC = { address: '0x43CDA502069B1dFa4f7C1a1625Bc6be47cD0bD88', scale: 6 }; var FUJI_USDT = { address: '0x051DE28a8B5836f678A13d19EE7F8c167b4Ca54D', scale: 6 }; var FUJI_TUSD = { address: '0x051DE28a8B5836f678A13d19EE7F8c167b4Ca54D', scale: 6 }; var FUJI_ACS = { address: '0x4a590276DA8E8d660f8ef638464c2D1DF40cEAbA', scale: 18 }; var AVALANCHE_WETH = { address: '0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB', scale: 18 }; var AVALANCHE_DAI = { address: '0xd586E7F844cEa2F87f50152665BCbc2C279D8d70', scale: 18 }; var AVALANCHE_USDC = { address: '0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664', scale: 6 }; var AVALANCHE_USDT = { address: '0xc7198437980c041c805A1EDcbA50c1Ce5db95118', scale: 6 }; var AVALANCHE_TUSD = { address: '0x1C20E891Bab6b1727d14Da358FAe2984Ed9B59EB', scale: 18 }; var AVALANCHE_ACS = { address: '0x18fC6360E83FE91404d47Ea4400A221dfbBACF06', scale: 18 }; var ETHEREUM_MAINNET_PAYMENT_TOKEN_RESOLVERS = (_ETHEREUM_MAINNET_PAY = {}, _ETHEREUM_MAINNET_PAY[exports.PaymentToken.SENTINEL] = SENTINEL, _ETHEREUM_MAINNET_PAY[exports.PaymentToken.WETH] = ETHEREUM_WETH, _ETHEREUM_MAINNET_PAY[exports.PaymentToken.DAI] = ETHEREUM_DAI, _ETHEREUM_MAINNET_PAY[exports.PaymentToken.USDC] = ETHEREUM_USDC, _ETHEREUM_MAINNET_PAY[exports.PaymentToken.USDT] = ETHEREUM_USDT, _ETHEREUM_MAINNET_PAY[exports.PaymentToken.TUSD] = ETHEREUM_TUSD, _ETHEREUM_MAINNET_PAY[exports.PaymentToken.RENT] = SENTINEL, _ETHEREUM_MAINNET_PAY[exports.PaymentToken.ACS] = SENTINEL, _ETHEREUM_MAINNET_PAY[exports.PaymentToken.WELT] = SENTINEL, _ETHEREUM_MAINNET_PAY[exports.PaymentToken.KNIGHT] = SENTINEL, _ETHEREUM_MAINNET_PAY[exports.PaymentToken.TOSHI] = ETHEREUM_TOSHI, _ETHEREUM_MAINNET_PAY); var ETHEREUM_GOERLI_TESTNET_PAYMENT_TOKEN_RESOLVERS = (_ETHEREUM_GOERLI_TEST = {}, _ETHEREUM_GOERLI_TEST[exports.PaymentToken.SENTINEL] = SENTINEL, _ETHEREUM_GOERLI_TEST[exports.PaymentToken.WETH] = GOERLI_WETH, _ETHEREUM_GOERLI_TEST[exports.PaymentToken.DAI] = GOERLI_DAI, _ETHEREUM_GOERLI_TEST[exports.PaymentToken.USDC] = SENTINEL, _ETHEREUM_GOERLI_TEST[exports.PaymentToken.USDT] = SENTINEL, _ETHEREUM_GOERLI_TEST[exports.PaymentToken.TUSD] = SENTINEL, _ETHEREUM_GOERLI_TEST[exports.PaymentToken.RENT] = SENTINEL, _ETHEREUM_GOERLI_TEST[exports.PaymentToken.ACS] = SENTINEL, _ETHEREUM_GOERLI_TEST[exports.PaymentToken.WELT] = SENTINEL, _ETHEREUM_GOERLI_TEST[exports.PaymentToken.KNIGHT] = SENTINEL, _ETHEREUM_GOERLI_TEST[exports.PaymentToken.TOSHI] = SENTINEL, _ETHEREUM_GOERLI_TEST); var POLYGON_MAINNET_PAYMENT_TOKEN_RESOLVERS = (_POLYGON_MAINNET_PAYM = {}, _POLYGON_MAINNET_PAYM[exports.PaymentToken.SENTINEL] = SENTINEL, _POLYGON_MAINNET_PAYM[exports.PaymentToken.WETH] = POLYGON_WETH, _POLYGON_MAINNET_PAYM[exports.PaymentToken.DAI] = POLYGON_DAI, _POLYGON_MAINNET_PAYM[exports.PaymentToken.USDC] = POLYGON_USDC, _POLYGON_MAINNET_PAYM[exports.PaymentToken.USDT] = POLYGON_USDT, _POLYGON_MAINNET_PAYM[exports.PaymentToken.TUSD] = POLYGON_TUSD, _POLYGON_MAINNET_PAYM[exports.PaymentToken.RENT] = SENTINEL, _POLYGON_MAINNET_PAYM[exports.PaymentToken.ACS] = SENTINEL, _POLYGON_MAINNET_PAYM[exports.PaymentToken.WELT] = POLYGON_WELT, _POLYGON_MAINNET_PAYM[exports.PaymentToken.KNIGHT] = POLYGON_KNIGHT, _POLYGON_MAINNET_PAYM[exports.PaymentToken.TOSHI] = SENTINEL, _POLYGON_MAINNET_PAYM); var AVALANCHE_FUJI_TESTNET_PAYMENT_TOKEN_RESOLVERS = (_AVALANCHE_FUJI_TESTN = {}, _AVALANCHE_FUJI_TESTN[exports.PaymentToken.SENTINEL] = SENTINEL, _AVALANCHE_FUJI_TESTN[exports.PaymentToken.WETH] = FUJI_WETH, _AVALANCHE_FUJI_TESTN[exports.PaymentToken.DAI] = FUJI_DAI, _AVALANCHE_FUJI_TESTN[exports.PaymentToken.USDC] = FUJI_USDC, _AVALANCHE_FUJI_TESTN[exports.PaymentToken.USDT] = FUJI_USDT, _AVALANCHE_FUJI_TESTN[exports.PaymentToken.TUSD] = FUJI_TUSD, _AVALANCHE_FUJI_TESTN[exports.PaymentToken.RENT] = SENTINEL, _AVALANCHE_FUJI_TESTN[exports.PaymentToken.ACS] = FUJI_ACS, _AVALANCHE_FUJI_TESTN[exports.PaymentToken.WELT] = SENTINEL, _AVALANCHE_FUJI_TESTN[exports.PaymentToken.KNIGHT] = SENTINEL, _AVALANCHE_FUJI_TESTN[exports.PaymentToken.TOSHI] = SENTINEL, _AVALANCHE_FUJI_TESTN); var AVALANCHE_MAINNET_PAYMENT_TOKEN_RESOLVERS = (_AVALANCHE_MAINNET_PA = {}, _AVALANCHE_MAINNET_PA[exports.PaymentToken.SENTINEL] = SENTINEL, _AVALANCHE_MAINNET_PA[exports.PaymentToken.WETH] = AVALANCHE_WETH, _AVALANCHE_MAINNET_PA[exports.PaymentToken.DAI] = AVALANCHE_DAI, _AVALANCHE_MAINNET_PA[exports.PaymentToken.USDC] = AVALANCHE_USDC, _AVALANCHE_MAINNET_PA[exports.PaymentToken.USDT] = AVALANCHE_USDT, _AVALANCHE_MAINNET_PA[exports.PaymentToken.TUSD] = AVALANCHE_TUSD, _AVALANCHE_MAINNET_PA[exports.PaymentToken.RENT] = SENTINEL, _AVALANCHE_MAINNET_PA[exports.PaymentToken.ACS] = AVALANCHE_ACS, _AVALANCHE_MAINNET_PA[exports.PaymentToken.WELT] = SENTINEL, _AVALANCHE_MAINNET_PA[exports.PaymentToken.KNIGHT] = SENTINEL, _AVALANCHE_MAINNET_PA[exports.PaymentToken.TOSHI] = SENTINEL, _AVALANCHE_MAINNET_PA); // TODO: need to associate these with the resolver contract instance somehow var NETWORK_RESOLVERS = (_NETWORK_RESOLVERS = {}, _NETWORK_RESOLVERS[exports.EVMNetworkType.ETHEREUM_MAINNET] = ETHEREUM_MAINNET_PAYMENT_TOKEN_RESOLVERS, _NETWORK_RESOLVERS[exports.EVMNetworkType.ETHEREUM_GOERLI_TESTNET] = ETHEREUM_GOERLI_TESTNET_PAYMENT_TOKEN_RESOLVERS, _NETWORK_RESOLVERS[exports.EVMNetworkType.POLYGON_MAINNET] = POLYGON_MAINNET_PAYMENT_TOKEN_RESOLVERS, _NETWORK_RESOLVERS[exports.EVMNetworkType.AVALANCHE_FUJI_TESTNET] = AVALANCHE_FUJI_TESTNET_PAYMENT_TOKEN_RESOLVERS, _NETWORK_RESOLVERS[exports.EVMNetworkType.AVALANCHE_MAINNET] = AVALANCHE_MAINNET_PAYMENT_TOKEN_RESOLVERS, _NETWORK_RESOLVERS); var ALL_CHAINS = (_ALL_CHAINS = {}, _ALL_CHAINS[exports.Chain.ETHEREUM_MAINNET] = NETWORK_ETHEREUM_MAINNET, _ALL_CHAINS[exports.Chain.ETHEREUM_GOERLI_TESTNET] = NETWORK_ETHEREUM_GOERLI_TESTNET, _ALL_CHAINS[exports.Chain.POLYGON_MAINNET] = NETWORK_POLYGON_MAINNET, _ALL_CHAINS[exports.Chain.AVALANCHE_FUJI_TESTNET] = NETWORK_AVALANCHE_FUJI_TESTNET, _ALL_CHAINS[exports.Chain.AVALANCHE_MAINNET] = NETWORK_AVALANCHE_MAINNET, _ALL_CHAINS); var ALL_NETWORKS = (_ALL_NETWORKS = {}, _ALL_NETWORKS[exports.EVMNetworkType.ETHEREUM_MAINNET] = NETWORK_ETHEREUM_MAINNET, _ALL_NETWORKS[exports.EVMNetworkType.ETHEREUM_GOERLI_TESTNET] = NETWORK_ETHEREUM_GOERLI_TESTNET, _ALL_NETWORKS[exports.EVMNetworkType.POLYGON_MAINNET] = NETWORK_POLYGON_MAINNET, _ALL_NETWORKS[exports.EVMNetworkType.AVALANCHE_FUJI_TESTNET] = NETWORK_AVALANCHE_FUJI_TESTNET, _ALL_NETWORKS[exports.EVMNetworkType.AVALANCHE_MAINNET] = NETWORK_AVALANCHE_MAINNET, _ALL_NETWORKS); var AzraelV0Abi = [{ inputs: [{ internalType: 'address', name: '_resolver', type: 'address' }, { internalType: 'address payable', name: '_beneficiary', type: 'address' }, { internalType: 'address', name: '_admin', type: 'address' }], stateMutability: 'nonpayable', type: 'constructor' }, { anonymous: false, inputs: [{ indexed: true, internalType: 'uint256', name: 'lendingId', type: 'uint256' }, { indexed: false, internalType: 'uint32', name: 'claimedAt', type: 'uint32' }], name: 'CollateralClaimed', type: 'event' }, { anonymous: false, inputs: [{ indexed: true, internalType: 'uint256', name: 'lendingId', type: 'uint256' }, { indexed: false, internalType: 'uint32', name: 'stoppedAt', type: 'uint32' }], name: 'LendingStopped', type: 'event' }, { anonymous: false, inputs: [{ indexed: true, internalType: 'address', name: 'nftAddress', type: 'address' }, { indexed: true, internalType: 'uint256', name: 'tokenId', type: 'uint256' }, { indexed: false, internalType: 'uint8', name: 'lentAmount', type: 'uint8' }, { indexed: false, internalType: 'uint256', name: 'lendingId', type: 'uint256' }, { indexed: true, internalType: 'address', name: 'lenderAddress', type: 'address' }, { indexed: false, internalType: 'uint8', name: 'maxRentDuration', type: 'uint8' }, { indexed: false, internalType: 'bytes4', name: 'dailyRentPrice', type: 'bytes4' }, { indexed: false, internalType: 'bytes4', name: 'nftPrice', type: 'bytes4' }, { indexed: false, internalType: 'bool', name: 'isERC721', type: 'bool' }, { indexed: false, internalType: 'enum IResolver.PaymentToken', name: 'paymentToken', type: 'uint8' }], name: 'Lent', type: 'event' }, { anonymous: false, inputs: [{ indexed: false, internalType: 'uint256', name: 'lendingId', type: 'uint256' }, { indexed: true, internalType: 'address', name: 'renterAddress', type: 'address' }, { indexed: false, internalType: 'uint8', name: 'rentDuration', type: 'uint8' }, { indexed: false, internalType: 'uint32', name: 'rentedAt', type: 'uint32' }], name: 'Rented', type: 'event' }, { anonymous: false, inputs: [{ indexed: true, internalType: 'uint256', name: 'lendingId', type: 'uint256' }, { indexed: false, internalType: 'uint32', name: 'returnedAt', type: 'uint32' }], name: 'Returned', type: 'event' }, { inputs: [{ internalType: 'address[]', name: '_nfts', type: 'address[]' }, { internalType: 'uint256[]', name: '_tokenIds', type: 'uint256[]' }, { internalType: 'uint256[]', name: '_lendingIds', type: 'uint256[]' }], name: 'claimCollateral', outputs: [], stateMutability: 'nonpayable', type: 'function' }, { inputs: [{ internalType: 'address[]', name: '_nfts', type: 'address[]' }, { internalType: 'uint256[]', name: '_tokenIds', type: 'uint256[]' }, { internalType: 'uint256[]', name: '_lendAmounts', type: 'uint256[]' }, { internalType: 'uint8[]', name: '_maxRentDurations', type: 'uint8[]' }, { internalType: 'bytes4[]', name: '_dailyRentPrices', type: 'bytes4[]' }, { internalType: 'bytes4[]', name: '_nftPrices', type: 'bytes4[]' }, { internalType: 'enum IResolver.PaymentToken[]', name: '_paymentTokens', type: 'uint8[]' }], name: 'lend', outputs: [], stateMutability: 'nonpayable', type: 'function' }, { inputs: [{ internalType: 'address', name: '', type: 'address' }, { internalType: 'address', name: '', type: 'address' }, { internalType: 'uint256[]', name: '', type: 'uint256[]' }, { internalType: 'uint256[]', name: '', type: 'uint256[]' }, { internalType: 'bytes', name: '', type: 'bytes' }], name: 'onERC1155BatchReceived', outputs: [{ internalType: 'bytes4', name: '', type: 'bytes4' }], stateMutability: 'nonpayable', type: 'function' }, { inputs: [{ internalType: 'address', name: '', type: 'address' }, { internalType: 'address', name: '', type: 'address' }, { internalType: 'uint256', name: '', type: 'uint256' }, { internalType: 'uint256', name: '', type: 'uint256' }, { internalType: 'bytes', name: '', type: 'bytes' }], name: 'onERC1155Received', outputs: [{ internalType: 'bytes4', name: '', type: 'bytes4' }], stateMutability: 'nonpayable', type: 'function' }, { inputs: [{ internalType: 'address', name: '', type: 'address' }, { internalType: 'address', name: '', type: 'address' }, { internalType: 'uint256', name: '', type: 'uint256' }, { internalType: 'bytes', name: '', type: 'bytes' }], name: 'onERC721Received', outputs: [{ internalType: 'bytes4', name: '', type: 'bytes4' }], stateMutability: 'nonpayable', type: 'function' }, { inputs: [{ internalType: 'address[]', name: '_nfts', type: 'address[]' }, { internalType: 'uint256[]', name: '_tokenIds', type: 'uint256[]' }, { internalType: 'uint256[]', name: '_lendingIds', type: 'uint256[]' }, { internalType: 'uint8[]', name: '_rentDurations', type: 'uint8[]' }], name: 'rent', outputs: [], stateMutability: 'nonpayable', type: 'function' }, { inputs: [], name: 'rentFee', outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], stateMutability: 'view', type: 'function' }, { inputs: [{ internalType: 'address[]', name: '_nfts', type: 'address[]' }, { internalType: 'uint256[]', name: '_tokenIds', type: 'uint256[]' }, { internalType: 'uint256[]', name: '_lendingIds', type: 'uint256[]' }], name: 'returnIt', outputs: [], stateMutability: 'nonpayable', type: 'function' }, { inputs: [{ internalType: 'address payable', name: '_newBeneficiary', type: 'address' }], name: 'setBeneficiary', outputs: [], stateMutability: 'nonpayable', type: 'function' }, { inputs: [{ internalType: 'bool', name: '_paused', type: 'bool' }], name: 'setPaused', outputs: [], stateMutability: 'nonpayable', type: 'function' }, { inputs: [{ internalType: 'uint256', name: '_rentFee', type: 'uint256' }], name: 'setRentFee', outputs: [], stateMutability: 'nonpayable', type: 'function' }, { inputs: [{ internalType: 'address[]', name: '_nfts', type: 'address[]' }, { internalType: 'uint256[]', name: '_tokenIds', type: 'uint256[]' }, { internalType: 'uint256[]', name: '_lendingIds', type: 'uint256[]' }], name: 'stopLending', outputs: [], stateMutability: 'nonpayable', type: 'function' }, { inputs: [{ internalType: 'bytes4', name: 'interfaceId', type: 'bytes4' }], name: 'supportsInterface', outputs: [{ internalType: 'bool', name: '', type: 'bool' }], stateMutability: 'view', type: 'function' }]; var DEPLOYMENT_AZRAEL_ETHEREUM_MAINNET_V0 = { abi: AzraelV0Abi, contractAddress: '0x94D8f036a0fbC216Bb532D33bDF6564157Af0cD7', contractType: exports.RenftContractType.AZRAEL, network: NETWORK_ETHEREUM_MAINNET, startBlock: 12875508, version: exports.AzraelVersion.V0 }; var ResolverV0Abi = [{ inputs: [{ internalType: 'address', name: '_admin', type: 'address' }], stateMutability: 'nonpayable', type: 'constructor' }, { inputs: [{ internalType: 'uint8', name: '_pt', type: 'uint8' }], name: 'getPaymentToken', outputs: [{ internalType: 'address', name: '', type: 'address' }], stateMutability: 'view', type: 'function' }, { inputs: [{ internalType: 'uint8', name: '_pt', type: 'uint8' }, { internalType: 'address', name: '_v', type: 'address' }], name: 'setPaymentToken', outputs: [], stateMutability: 'nonpayable', type: 'function' }]; var DEPLOYMENT_RESOLVER_ETHEREUM_MAINNET_V0 = { abi: ResolverV0Abi, contractAddress: '0x945E589A4715d1915e6FE14f08e4887Bc4019341', contractType: exports.RenftContractType.RESOLVER, network: NETWORK_ETHEREUM_MAINNET, startBlock: 12875506, version: exports.ResolverVersion.V0 }; // note that this resolver actually allows us to change already set // payment tokens. that is its only difference from the prod v0 resolver // this is useful if an integrating project wishes to change their erc20 var DEPLOYMENT_RESOLVER_ETHEREUM_GOERLI_TESTNET_V0 = { abi: ResolverV0Abi, contractAddress: '0xF8834327e7f3f5103954E477A32dC742A6518A9C', contractType: exports.RenftContractType.RESOLVER, network: NETWORK_ETHEREUM_GOERLI_TESTNET, startBlock: 8907116, version: exports.ResolverVersion.V0 }; var DEPLOYMENT_RESOLVER_POLYGON_MAINNET_V0 = { abi: ResolverV0Abi, contractAddress: '0x6884d88Ce56C5C93F46eE23684eBA8628c90B518', contractType: exports.RenftContractType.RESOLVER, network: NETWORK_POLYGON_MAINNET, startBlock: 28399112, version: exports.ResolverVersion.V0 }; var DEPLOYMENT_RESOLVER_AVALANCHE_FUJI_TESTNET_V0 = { abi: ResolverV0Abi, contractAddress: '0x23F7F8B03BAF01D5124255fE240E81BbBd3AEc0D', contractType: exports.RenftContractType.RESOLVER, network: NETWORK_AVALANCHE_FUJI_TESTNET, startBlock: 11500156, version: exports.ResolverVersion.V0 }; var DEPLOYMENT_RESOLVER_AVALANCHE_MAINNET_V0 = { abi: ResolverV0Abi, contractAddress: '0xEBFd584AAC21dfEFF02c3d4f308B0962610a028A', contractType: exports.RenftContractType.RESOLVER, network: NETWORK_AVALANCHE_MAINNET, startBlock: 19408332, version: exports.ResolverVersion.V0 }; var ResolverV1Abi = [{ inputs: [{ internalType: 'address', name: '_admin', type: 'address' }], stateMutability: 'nonpayable', type: 'constructor' }, { inputs: [{ internalType: 'uint8', name: '_pt', type: 'uint8' }], name: 'getPaymentToken', outputs: [{ internalType: 'address', name: '', type: 'address' }], stateMutability: 'view', type: 'function' }, { inputs: [{ internalType: 'uint8', name: '_pt', type: 'uint8' }, { internalType: 'address', name: '_v', type: 'address' }], name: 'setPaymentToken', outputs: [], stateMutability: 'nonpayable', type: 'function' }]; var DEPLOYMENT_RESOLVER_POLYGON_MAINNET_V1 = { abi: ResolverV1Abi, contractAddress: '0x3ddC85bB768A11B0125f4ee71CfeA54e54653366', contractType: exports.RenftContractType.RESOLVER, network: NETWORK_POLYGON_MAINNET, startBlock: 36825213, version: exports.ResolverVersion.V1 }; var SylvesterV0Abi = [{ inputs: [{ internalType: 'address', name: 'newResolver', type: 'address' }, { internalType: 'address payable', name: 'newBeneficiary', type: 'address' }, { internalType: 'address', name: 'newAdmin', type: 'address' }], stateMutability: 'nonpayable', type: 'constructor' }, { anonymous: false, inputs: [{ indexed: false, internalType: 'bool', name: 'is721', type: 'bool' }, { indexed: true, internalType: 'address', name: 'lenderAddress', type: 'address' }, { indexed: true, internalType: 'address', name: 'nftAddress', type: 'address' }, { indexed: true, internalType: 'uint256', name: 'tokenID', type: 'uint256' }, { indexed: false, internalType: 'uint256', name: 'lendingID', type: 'uint256' }, { indexed: false, internalType: 'uint8', name: 'maxRentDuration', type: 'uint8' }, { indexed: false, internalType: 'bytes4', name: 'dailyRentPrice', type: 'bytes4' }, { indexed: false, internalType: 'uint16', name: 'lendAmount', type: 'uint16' }, { indexed: false, internalType: 'enum IResolver.PaymentToken', name: 'paymentToken', type: 'uint8' }], name: 'Lend', type: 'event' }, { anonymous: false, inputs: [{ indexed: true, internalType: 'address', name: 'renterAddress', type: 'address' }, { indexed: true, internalType: 'uint256', name: 'lendingID', type: 'uint256' }, { indexed: true, internalType: 'uint256', name: 'rentingID', type: 'uint256' }, { indexed: false, internalType: 'uint16', name: 'rentAmount', type: 'uint16' }, { indexed: false, internalType: 'uint8', name: 'rentDuration', type: 'uint8' }, { indexed: false, internalType: 'uint32', name: 'rentedAt', type: 'uint32' }], name: 'Rent', type: 'event' }, { anonymous: false, inputs: [{ indexed: true, internalType: 'uint256', name: 'rentingID', type: 'uint256' }, { indexed: false, internalType: 'uint32', name: 'collectedAt', type: 'uint32' }], name: 'RentClaimed', type: 'event' }, { anonymous: false, inputs: [{ indexed: true, internalType: 'uint256', name: 'lendingID', type: 'uint256' }, { indexed: false, internalType: 'uint32', name: 'stoppedAt', type: 'uint32' }], name: 'StopLend', type: 'event' }, { anonymous: false, inputs: [{ indexed: true, internalType: 'uint256', name: 'rentingID', type: 'uint256' }, { indexed: false, internalType: 'uint32', name: 'stoppedAt', type: 'uint32' }], name: 'StopRent', type: 'event' }, { inputs: [{ internalType: 'enum IRegistry.NFTStandard[]', name: 'nftStandard', type: 'uint8[]' }, { internalType: 'address[]', name: 'nftAddress', type: 'address[]' }, { internalType: 'uint256[]', name: 'tokenID', type: 'uint256[]' }, { internalType: 'uint256[]', name: '_lendingID', type: 'uint256[]' }, { internalType: 'uint256[]', name: '_rentingID', type: 'uint256[]' }], name: 'claimRent', outputs: [], stateMutability: 'nonpayable', type: 'function' }, { inputs: [{ internalType: 'address', name: 'nftAddress', type: 'address' }, { internalType: 'uint256', name: 'tokenID', type: 'uint256' }, { internalType: 'uint256', name: '_lendingID', type: 'uint256' }], name: 'getLending', outputs: [{ internalType: 'uint8', name: '', type: 'uint8' }, { internalType: 'address', name: '', type: 'address' }, { internalType: 'uint8', name: '', type: 'uint8' }, { internalType: 'bytes4', name: '', type: 'bytes4' }, { internalType: 'uint16', name: '', type: 'uint16' }, { internalType: 'uint16', name: '', type: 'uint16' }, { internalType: 'uint8', name: '', type: 'uint8' }], stateMutability: 'view', type: 'function' }, { inputs: [{ internalType: 'address', name: 'nftAddress', type: 'address' }, { internalType: 'uint256', name: 'tokenID', type: 'uint256' }, { internalType: 'uint256', name: '_rentingID', type: 'uint256' }], name: 'getRenting', outputs: [{ internalType: 'address', name: '', type: 'address' }, { internalType: 'uint16', name: '', type: 'uint16' }, { internalType: 'uint8', name: '', type: 'uint8' }, { internalType: 'uint32', name: '', type: 'uint32' }], stateMutability: 'view', type: 'function' }, { inputs: [{ internalType: 'enum IRegistry.NFTStandard[]', name: 'nftStandard', type: 'uint8[]' }, { internalType: 'address[]', name: 'nftAddress', type: 'address[]' }, { internalType: 'uint256[]', name: 'tokenID', type: 'uint256[]' }, { internalType: 'uint256[]', name: 'lendAmount', type: 'uint256[]' }, { internalType: 'uint8[]', name: 'maxRentDuration', type: 'uint8[]' }, { internalType: 'bytes4[]', name: 'dailyRentPrice', type: 'bytes4[]' }, { internalType: 'enum IResolver.PaymentToken[]', name: 'paymentToken', type: 'uint8[]' }], name: 'lend', outputs: [], stateMutability: 'nonpayable', type: 'function' }, { inputs: [{ internalType: 'address', name: '', type: 'address' }, { internalType: 'address', name: '', type: 'address' }, { internalType: 'uint256[]', name: '', type: 'uint256[]' }, { internalType: 'uint256[]', name: '', type: 'uint256[]' }, { internalType: 'bytes', name: '', type: 'bytes' }], name: 'onERC1155BatchReceived', outputs: [{ internalType: 'bytes4', name: '', type: 'bytes4' }], stateMutability: 'nonpayable', type: 'function' }, { inputs: [{ internalType: 'address', name: '', type: 'address' }, { internalType: 'address', name: '', type: 'address' }, { internalType: 'uint256', name: '', type: 'uint256' }, { internalType: 'uint256', name: '', type: 'uint256' }, { internalType: 'bytes', name: '', type: 'bytes' }], name: 'onERC1155Received', outputs: [{ internalType: 'bytes4', name: '', type: 'bytes4' }], stateMutability: 'nonpayable', type: 'function' }, { inputs: [{ internalType: 'address', name: '', type: 'address' }, { internalType: 'address', name: '', type: 'address' }, { internalType: 'uint256', name: '', type: 'uint256' }, { internalType: 'bytes', name: '', type: 'bytes' }], name: 'onERC721Received', outputs: [{ internalType: 'bytes4', name: '', type: 'bytes4' }], stateMutability: 'nonpayable', type: 'function' }, { inputs: [], name: 'paused', outputs: [{ internalType: 'bool', name: '', type: 'bool' }], stateMutability: 'view', type: 'function' }, { inputs: [{ internalType: 'enum IRegistry.NFTStandard[]', name: 'nftStandard', type: 'uint8[]' }, { internalType: 'address[]', name: 'nftAddress', type: 'address[]' }, { internalType: 'uint256[]', name: 'tokenID', type: 'uint256[]' }, { internalType: 'uint256[]', name: '_lendingID', type: 'uint256[]' }, { internalType: 'uint8[]', name: 'rentDuration', type: 'uint8[]' }, { internalType: 'uint256[]', name: 'rentAmount', type: 'uint256[]' }], name: 'rent', outputs: [], stateMutability: 'payable', type: 'function' }, { inputs: [], name: 'rentFee', outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], stateMutability: 'view', type: 'function' }, { inputs: [{ internalType: 'address payable', name: 'newBeneficiary', type: 'address' }], name: 'setBeneficiary', outputs: [], stateMutability: 'nonpayable', type: 'function' }, { inputs: [{ internalType: 'bool', name: 'newPaused', type: 'bool' }], name: 'setPaused', outputs: [], stateMutability: 'nonpayable', type: 'function' }, { inputs: [{ internalType: 'uint256', name: 'newRentFee', type: 'uint256' }], name: 'setRentFee', outputs: [], stateMutability: 'nonpayable', type: 'function' }, { inputs: [{ internalType: 'enum IRegistry.NFTStandard[]', name: 'nftStandard', type: 'uint8[]' }, { internalType: 'address[]', name: 'nftAddress', type: 'address[]' }, { internalType: 'uint256[]', name: 'tokenID', type: 'uint256[]' }, { internalType: 'uint256[]', name: '_lendingID', type: 'uint256[]' }], name: 'stopLend', outputs: [], stateMutability: 'nonpayable', type: 'function' }, { inputs: [{ internalType: 'enum IRegistry.NFTStandard[]', name: 'nftStandard', type: 'uint8[]' }, { internalType: 'address[]', name: 'nftAddress', type: 'address[]' }, { internalType: 'uint256[]', name: 'tokenID', type: 'uint256[]' }, { internalType: 'uint256[]', name: '_lendingID', type: 'uint256[]' }, { internalType: 'uint256[]', name: '_rentingID', type: 'uint256[]' }], name: 'stopRent', outputs: [], stateMutability: 'nonpayable', type: 'function' }, { inputs: [{ internalType: 'bytes4', name: 'interfaceId', type: 'bytes4' }], name: 'supportsInterface', outputs: [{ internalType: 'bool', name: '', type: 'bool' }], stateMutability: 'view', type: 'function' }]; var DEPLOYMENT_SYLVESTER_ETHEREUM_MAINNET_V0 = { abi: SylvesterV0Abi, contractAddress: '0xa8D3F65b6E2922fED1430b77aC2b557e1fa8DA4a', contractType: exports.RenftContractType.SYLVESTER, network: NETWORK_ETHEREUM_MAINNET, startBlock: 13197348, version: exports.SylvesterVersion.V0 }; var DEPLOYMENT_SYLVESTER_ETHEREUM_GOERLI_TESTNET_V0 = { abi: SylvesterV0Abi, contractAddress: '0xEDe9A15388CCd972DffBD7C3F5504345703b63b2', contractType: exports.RenftContractType.SYLVESTER, network: NETWORK_ETHEREUM_GOERLI_TESTNET, startBlock: 8907139, version: exports.SylvesterVersion.V0 }; // TODO // @deprecated - Please use the v1 contract below. var DEPLOYMENT_SYLVESTER_POLYGON_MAINNET_V0 = { abi: SylvesterV0Abi, contractAddress: '0xfA06cFE34C85Ec6b6D29A6a99806cC68BA0018Fe', contractType: exports.RenftContractType.SYLVESTER, network: NETWORK_POLYGON_MAINNET, startBlock: 28399140, version: exports.SylvesterVersion.V0 }; var SylvesterV1Abi = [{ inputs: [{ internalType: 'address', name: 'newResolver', type: 'address' }, { internalType: 'address payable', name: 'newBeneficiary', type: 'address' }, { internalType: 'address', name: 'newAdmin', type: 'address' }], stateMutability: 'nonpayable', type: 'constructor' }, { anonymous: false, inputs: [{ indexed: false, internalType: 'bool', name: 'is721', type: 'bool' }, { indexed: true, internalType: 'address', name: 'lenderAddress', type: 'address' }, { indexed: true, internalType: 'address', name: 'nftAddress', type: 'address' }, { indexed: true, internalType: 'uint256', name: 'tokenID', type: 'uint256' }, { indexed: false, internalType: 'uint256', name: 'lendingID', type: 'uint256' }, { indexed: false, internalType: 'uint8', name: 'maxRentDuration', type: 'uint8' }, { indexed: false, internalType: 'bytes4', name: 'dailyRentPrice', type: 'bytes4' }, { indexed: false, internalType: 'uint16', name: 'lendAmount', type: 'uint16' }, { indexed: false, internalType: 'enum IResolver.PaymentToken', name: 'paymentToken', type: 'uint8' }, { indexed: false, internalType: 'bool', name: 'willAutoRenew', type: 'bool' }], name: 'Lend', type: 'event' }, { anonymous: false, inputs: [{ indexed: true, internalType: 'address', name: 'renterAddress', type: 'address' }, { indexed: true, internalType: 'uint256', name: 'lendingID', type: 'uint256' }, { indexed: true, internalType: 'uint256', name: 'rentingID', type: 'uint256' }, { indexed: false, internalType: 'uint16', name: 'rentAmount', type: 'uint16' }, { indexed: false, internalType: 'uint8', name: 'rentDuration', type: 'uint8' }, { indexed: false, internalType: 'uint32', name: 'rentedAt', type: 'uint32' }], name: 'Rent', type: 'event' }, { anonymous: false, inputs: [{ indexed: true, internalType: 'uint256', name: 'rentingID', type: 'uint256' }, { indexed: false, internalType: 'uint32', name: 'collectedAt', type: 'uint32' }], name: 'RentClaimed', type: 'event' }, { anonymous: false, inputs: [{ indexed: true, internalType: 'uint256', name: 'lendingID', type: 'uint256' }, { indexed: false, internalType: 'uint32', name: 'stoppedAt', type: 'uint32' }, { indexed: false, internalType: 'uint16', name: 'amount', type: 'uint16' }], name: 'StopLend', type: 'event' }, { anonymous: false, inputs: [{ indexed: true, internalType: 'uint256', name: 'rentingID', type: 'uint256' }, { indexed: false, internalType: 'uint32', name: 'stoppedAt', type: 'uint32' }], name: 'StopRent', type: 'event' }, { inputs: [{ internalType: 'enum IRegistry.NFTStandard[]', name: 'nftStandard', type: 'uint8[]' }, { internalType: 'address[]', name: 'nftAddress', type: 'address[]' }, { internalType: 'uint256[]', name: 'tokenID', type: 'uint256[]' }, { internalType: 'uint256[]', name: '_lendingID', type: 'uint256[]' }, { internalType: 'uint256[]', name: '_rentingID', type: 'uint256[]' }], name: 'claimRent', outputs: [], stateMutability: 'nonpayable', type: 'function' }, { inputs: [{ internalType: 'address', name: 'nftAddress', type: 'address' }, { internalType: 'uint256', name: 'tokenID', type: 'uint256' }, { internalType: 'uint256', name: '_lendingID', type: 'uint256' }], name: 'getLending', outputs: [{ internalType: 'uint8', name: '', type: 'uint8' }, { internalType: 'address', name: '', type: 'address' }, { internalType: 'uint8', name: '', type: 'uint8' }, { internalType: 'bytes4', name: '', type: 'bytes4' }, { internalType: 'uint16', name: '', type: 'uint16' }, { internalType: 'uint16', name: '', type: 'uint16' }, { internalType: 'uint8', name: '', type: 'uint8' }], stateMutability: 'view', type: 'function' }, { inputs: [{ internalType: 'address', name: 'nftAddress', type: 'address' }, { internalType: 'uint256', name: 'tokenID', type: 'uint256' }, { internalType: 'uint256', name: '_rentingID', type: 'uint256' }], name: 'getRenting', outputs: [{ internalType: 'address', name: '', type: 'address' }, { internalType: 'uint16', name: '', type: 'uint16' }, { internalType: 'uint8', name: '', type: 'uint8' }, { internalType: 'uint32', name: '', type: 'uint32' }], stateMutability: 'view', type: 'function' }, { inputs: [{ internalType: 'enum IRegistry.NFTStandard[]', name: 'nftStandard', type: 'uint8[]' }, { internalType: 'address[]', name: 'nftAddress', type: 'address[]' }, { internalType: 'uint256[]', name: 'tokenID', type: 'uint256[]' }, { internalType: 'uint256[]', name: 'lendAmount', type: 'uint256[]' }, { internalType: 'uint8[]', name: 'maxRentDuration', type: 'uint8[]' }, { internalType: 'bytes4[]', name: 'dailyRentPrice', type: 'bytes4[]' }, { internalType: 'enum IResolver.PaymentToken[]', name: 'paymentToken', type: 'uint8[]' }, { internalType: 'bool[]', name: 'willAutoRenew', type: 'bool[]' }], name: 'lend', outputs: [], stateMutability: 'nonpayable', type: 'function' }, { inputs: [{ internalType: 'address', name: '', type: 'address' }, { internalType: 'address', name: '', type: 'address' }, { internalType: 'uint256[]', name: '', type: 'uint256[]' }, { internalType: 'uint256[]', name: '', type: 'uint256[]' }, { internalType: 'bytes', name: '', type: 'bytes' }], name: 'onERC1155BatchReceived', outputs: [{ internalType: 'bytes4', name: '', type: 'bytes4' }], stateMutability: 'nonpayable', type: 'function' }, { inputs: [{ internalType: 'address', name: '', type: 'address' }, { internalType: 'address', name: '', type: 'address' }, { internalType: 'uint256', name: '', type: 'uint256' }, { internalType: 'uint256', name: '', type: 'uint256' }, { internalType: 'bytes', name: '', type: 'bytes' }], name: 'onERC1155Received', outputs: [{ internalType: 'bytes4', name: '', type: 'bytes4' }], stateMutability: 'nonpayable', type: 'function' }, { inputs: [{ internalType: 'address', name: '', type: 'address' }, { internalType: 'address', name: '', type: 'address' }, { internalType: 'uint256', name: '', type: 'uint256' }, { internalType: 'bytes', name: '', type: 'bytes' }], name: 'onERC721Received', outputs: [{ internalType: 'bytes4', name: '', type: 'bytes4' }], stateMutability: 'nonpayable', type: 'function' }, { inputs: [], name: 'paused', outputs: [{ internalType: 'bool', name: '', type: 'bool' }], stateMutability: 'view', type: 'function' }, { inputs: [{ internalType: 'enum IRegistry.NFTStandard[]', name: 'nftStandard', type: 'uint8[]' }, { internalType: 'address[]', name: 'nftAddress', type: 'address[]' }, { internalType: 'uint256[]', name: 'tokenID', type: 'uint256[]' }, { internalType: 'uint256[]', name: '_lendingID', type: 'uint256[]' }, { internalType: 'uint8[]', name: 'rentDuration', type: 'uint8[]' }, { internalType: 'uint256[]', name: 'rentAmount', type: 'uint256[]' }], name: 'rent', outputs: [], stateMutability: 'payable', type: 'function' }, { inputs: [], name: 'rentFee', outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], stateMutability: 'view', type: 'function' }, { inputs: [{ internalType: 'address payable', name: 'newBeneficiary', type: 'address' }], name: 'setBeneficiary', outputs: [], stateMutability: 'nonpayable', type: 'function' }, { inputs: [{ internalType: 'bool', name: 'newPaused', type: 'bool' }], name: 'setPaused', outputs: [], stateMutability: 'nonpayable', type: 'function' }, { inputs: [{ internalType: 'uint256', name: 'newRentFee', type: 'uint256' }], name: 'setRentFee', outputs: [], stateMutability: 'nonpayable', type: 'function' }, { inputs: [{ internalType: 'enum IRegistry.NFTStandard[]', name: 'nftStandard', type: 'uint8[]' }, { internalType: 'address[]', name: 'nftAddress', type: 'address[]' }, { internalType: 'uint256[]', name: 'tokenID', type: 'uint256[]' }, { internalType: 'uint256[]', name: '_lendingID', type: 'uint256[]' }], name: 'stopLend', outputs: [], stateMutability: 'nonpayable', type: 'function' }, { inputs: [{ internalType: 'enum IRegistry.NFTStandard[]', name: 'nftStandard', type: 'uint8[]' }, { internalType: 'address[]', name: 'nftAddress', type: 'address[]' }, { internalType: 'uint256[]', name: 'tokenID', type: 'uint256[]' }, { internalType: 'uint256[]', name: '_lendingID', type: 'uint256[]' }, { internalType: 'uint256[]', name: '_rentingID', type: 'uint256[]' }], name: 'stopRent', outputs: [], stateMutability: 'nonpayable', type: 'function' }, { inputs: [{ internalType: 'bytes4', name: 'interfaceId', type: 'bytes4' }], name: 'supportsInterface', outputs: [{ internalType: 'bool', name: '', type: 'bool' }], stateMutability: 'view', type: 'function' }]; var DEPLOYMENT_SYLVESTER_POLYGON_MAINNET_V1 = { abi: SylvesterV1Abi, contractAddress: '0x4e52B73Aa28b7FF84d88eA3A90C0668f46043450', contractType: exports.RenftContractType.SYLVESTER, network: NETWORK_POLYGON_MAINNET, startBlock: 36825974, version: exports.SylvesterVersion.V1 }; var WhoopiV0Abi = [{ inputs: [{ internalType: 'address', name: 'newResolver', type: 'address' }, { internalType: 'address', name: 'newAdmin', type: 'address' }], stateMutability: 'nonpayable', type: 'constructor' }, { inputs: [], name: 'InvalidPortionsSum', type: 'error' }, { inputs: [], name: 'InvalidProtocolFeeReceivers', type: 'error' }, { inputs: [], name: 'LendingEmpty', type: 'error' }, { inputs: [], name: 'LendingNotActive', type: 'error' }, { inputs: [], name: 'LendingNotEmpty', type: 'error' }, { inputs: [], name: 'NftTransferFailed', type: 'error' }, { inputs: [{ internalType: 'address', name: 'caller', type: 'address' }], name: 'NotAdmin', type: 'error' }, { inputs: [{ internalType: 'uint8', name: 'errorCode', type: 'uint8' }], name: 'NotLendable', type: 'error' }, { inputs: [{ internalType: 'uint8', name: 'errorCode', type: 'uint8' }], name: 'NotPayable', type: 'error' }, { inputs: [{ internalType: 'uint8', name: 'errorCode', type: 'uint8' }], name: 'NotRentable', type: 'error' }, { inputs: [], name: 'NotWhitelistedToRent', type: 'error' }, { inputs: [], name: 'Paused', type: 'error' }, { inputs: [{ internalType: 'uint8', name: 'rentDuration', type: 'uint8' }, { internalType: 'uint8', name: 'maxRentDuration', type: 'uint8' }], name: 'RentDurationExceedsMaxRentDuration', type: 'error' }, { inputs: [], name: 'RentingNotEmpty', type: 'error' }, { inputs: [], name: 'ReturningNotAllowed', type: 'error' }, { inputs: [{ internalType: 'address', name: 'lender', type: 'address' }, { internalType: 'address', name: 'msgSender', type: 'address' }], name: 'StopperNotLender', type: 'error' }, { anonymous: false, inputs: [{ indexed: true, internalType: 'address', name: 'nftAddress', type: 'address' }, { indexed: false, internalType: 'uint256', name: 'upfrontRentFee', type: 'uint256' }, { indexed: false, internalType: 'address payable[]', name: 'allowedRenters', type: 'address[]' }, { components: [{ internalType: 'address payable[]', name: 'beneficiaries', type: 'address[]' }, { internalType: 'uint8[]', name: 'portions', type: 'uint8[]' }], indexed: false, internalType: 'struct IReNFT.RevShare', name: 'revShares', type: 'tuple' }, { indexed: false, internalType: 'uint8', name: 'maxRentDuration', type: 'uint8' }, { indexed: false, internalType: 'enum IResolver.PaymentToken', name: 'paymentToken', type: 'uint8' }, { indexed: true, internalType: 'address', name: 'lenderAddress', type: 'address' }, { indexed: true, internalType: 'uint256', name: 'tokenId', type: 'uint256' }, { indexed: false, internalType: 'uint256', name: 'lendingId', type: 'uint256' }], name: 'Lend', type: 'event' }, { anonymous: false, inputs: [{ indexed: true, internalType: 'uint256', name: 'lendingId', type: 'uint256' }, { indexed: true, internalType: 'address', name: 'renterAddress', type: 'address' }, { indexed: false, internalType: 'uint8', name: 'rentDuration', type: 'uint8' }], name: 'Rent', type: 'event' }, { anonymous: false, inputs: [{ indexed: true, internalType: 'uint256', name: 'lendingId', type: 'uint256' }], name: 'StopLend', type: 'event' }, { anonymous: false, inputs: [{ indexed: true, internalType: 'uint256', name: 'lendingId', type: 'uint256' }], name: 'StopRent', type: 'event' }, { inputs: [], name: 'flipPaused', outputs: [], stateMutability: 'nonpayable', type: 'function' }, { inputs: [{ components: [{ internalType: 'contract INFTContract', name: 'nft', type: 'address' }, { internalType: 'uint256[]', name: 'tokenIds', type: 'uint256[]' }, { internalType: 'uint256[]', name: 'lendingIds', type: 'uint256[]' }], internalType: 'struct IReNFT.Nfts', name: 'nfts', type: 'tuple' }, { internalType: 'uint256[]', name: 'upfrontRentFee', type: 'uint256[]' }, { components: [{ internalType: 'address payable[]', name: 'allowedRenters', type: 'address[]' }], internalType: 'struct IReNFT.AllowedRenters[]', name: 'allowedRenters', type: 'tuple[]' }, { components: [{ internalType: 'address payable[]', name: 'beneficiaries', type: 'address[]' }, { internalType: 'uint8[]', name: 'portions', type: 'uint8[]' }], internalType: 'struct IReNFT.RevShare[]', name: 'revShares', type: 'tuple[]' }, { internalType: 'uint8[]', name: 'maxRentDurations', type: 'uint8[]' }, { internalType: 'enum IResolver.PaymentToken[]', name: 'paymentTokens', type: 'uint8[]' }], name: 'lend', outputs: [], stateMutability: 'nonpayable', type: 'function' }, { inputs: [{ internalType: 'bytes32', name: '', type: 'bytes32' }], name: 'lendingRentings', outputs: [{ components: [{ internalType: 'address payable[]', name: 'allowedRenters', type: 'address[]' }, { components: [{ internalType: 'address payable[]', name: 'beneficiaries', type: 'address[]' }, { internalType: 'uint8[]', name: 'portions', type: 'uint8[]' }], internalType: 'struct IReNFT.RevShare', name: 'revShares', type: 'tuple' }, { internalType: 'uint256', name: 'upfrontRentFee', type: 'uint256'