@wakeuplabs/p2p-rental-contract
TypeScript icon, indicating that this package has built-in type declarations

1.0.3 • Public • Published

@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();

Readme

Keywords

none

Package Sidebar

Install

npm i @wakeuplabs/p2p-rental-contract

Weekly Downloads

4

Version

1.0.3

License

ISC

Unpacked Size

289 kB

Total Files

39

Last publish

Collaborators

  • chescalante
  • wakeup-personal-account