@wakeuplabs/p2p-rental-contract
v1.0.3
Published
Smart contract to rent delegable tokens.
Downloads
11
Keywords
Readme
@wakeuplabs/p2p-rental-contract
Smart contract to rent delegable tokens.
How to use it
Install the package
npm i @wakeuplabs/p2p-rental-contract
Polygon Testnet WakeUp rental contract
const wakeUpRentalAddr = "0xe2Bb06eE2F90ECAaaAa6aA0F5c7BCC8c8066fd7a";
Initial set up
import { ethers } from 'ethers';
import { WakeUp__factory } from '@wakeuplabs/p2p-rental-contract';
const signer = (new ethers.providers.Web3Provider(window.ethereum as any)).getSigner();
const wakeUpContract = WakeUp__factory.connect(wakeUpRentalAddr!, signer);
List an NFT for rent
// you must approve to WakeUp's contract to be able to lend the NFT
const approveTx = await nftContractAsLender.approve(
wakeUpRentalAddr,
tokenId
);
await approveTx.wait();
// rent price for 1 second.
const rentPriceSecond = 10;
// maximum seconds to rent, eg. 24 * 60 * 60 sec = 1 day
const maximumSecondsToRent = 24 * 60 * 60;
const lendTx = await wakeUpContract.lend(tokenAddr, tokenId, rentPriceSecond, maximumSecondsToRent);
await lendTx.wait();
Get all the listed NFTs
const list = await wakeUpContract.list();
// [
// {
// index: 0;
// tokenAddr: "0x...";
// tokenId: 999;
// owner: "0x...";
// rentPriceSecond: 10;
// maximumSecondsToRent: 86400;
// status: 0; // listed
// ...
// },
// ...
// ]
Rent an NFT
// maximum seconds to rent, eg. 1 * 60 * 60 sec = 1 hour
const secondsToRent = 1 * 60 * 60;
// marketplace list index
const index = 0;
const rentTx = await wakeUpContract.rent(index, secondsToRent, { value: secondsToRent * rentPriceSecond });
await rentTx.wait();
Claim rent reward
// marketplace list index
const index = 0;
const rewardTx = await wakeUpContract.claimRentReward(index);
await rewardTx.wait();
Stop renting an NFT
// marketplace list index
const index = 0;
const cancelTx = await wakeUpContract.cancelLend(index);
await cancelTx.wait();