# JavaScript SDK

Welcome to the Renfter Protocol JavaScript SDK. To begin, we recommend looking at the examples below, for deeper reference see the **JavaScript SDK Github** repo.

### Installation

```
npm i @renfter/js-sdk
// or
yarn add @renfter/js-sdk
```

### Usage

First you have to import Renfter and pass the ethers Signer.

```javascript
import { Renfter } from "@renfter/js-sdk";

const renfter = new Renfter({
    signer,
    [originContractAddress]
});
```

### Offer for NFT for lending

```javascript
renfter.offerForRent({
    tokenId,
    [tokenContractAddress],
    rentingPrice,
    maxRentDuration,
    [whitelistedFunctionality[]]
});
```

### Rent NFT

```javascript
renfter.rent({
    tokenId,
    duration
});
```

### Get lender (original owner)

```javascript
renter.getLender({
    tokenId,
    [tokenContractAddress]
});
```

### Get lender (original owner) by wrapped token ID

```javascript
renter.getLender({
    tokenId,
    [tokenContractAddress]
});
```

### Get borrower

<pre class="language-javascript"><code class="lang-javascript">renter.getBorrower({
    tokenId,
    [tokenContractAddress]
<strong>});
</strong></code></pre>

### Get borrower by wrapped data

```javascript
renter.getBorrowerByWrappedData({
    wTokenId,
    [wContractAddress],
});
```

### Get original contract address

```javascript
renter.getOriginalContractAddress(wContractAddress);
```

### Get wrapped contract address

```javascript
renter.getWrappedContractAddress(contractAddress);
```

### Get original token data

```javascript
renter.getOriginalTokenData({
    tokenId,
    [wContractAddress]
});
```

### Get token whitelisted methods

```javascript
renter.getWhitelistedMethodForTokenId(tokenId);
```

### Check if method is whitelisted

```javascript
renter.checkMethodForTokenId({
    tokenId,
    functionSignature
});
```

### Set token whitelisted methods

```javascript
renter.setWhitelistedMethodForTokenId({
    tokenId,
    functonSignature[],
    whitelisted[]
});
```

### Execute token's functionality

```javascript
renter.executeCustomFunctionality({
    tokenId,
    functionSignature,
    {functionArguments}
});
```

### Get all tokens for address

```javascript
renter.getTokens(address);
```

### Get all tokens available for renting for address

```javascript
renter.getAvailableTokens(address);
```

### Get all rented tokens tokens for address

```javascript
renter.getRentedTokens(address);
```
