> For the complete documentation index, see [llms.txt](https://docs.dexe.network/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.dexe.network/contract-interfaces/gov-contracts/erc721/multipliers/iabstracterc721multiplier.md).

# IAbstractERC721Multiplier

## Interface Description

License: MIT

##

```solidity
interface IAbstractERC721Multiplier is IERC721EnumerableUpgradeable
```

This is the special NFT contract which behaves like a coupon that can be locked to receive certain extra rewards proportional to the rewards in the Governance pool contract

## Structs info

### NftInfo

```solidity
struct NftInfo {
	uint256 multiplier;
	uint64 duration;
	uint64 mintedAt;
}
```

This struct holds NFT Multiplier parameters

Parameters:

| Name       | Type    | Description                             |
| ---------- | ------- | --------------------------------------- |
| multiplier | uint256 | the basic rewards multiplier            |
| duration   | uint64  | the time for which an nft can be locked |
| mintedAt   | uint64  | the time nft was minter                 |

## Functions info

### lock (0xdd467064)

```solidity
function lock(uint256 tokenId) external
```

This function is used to lock an nft (enable corresponding basic rewards multiplier). Only one NFT for each address can be locked at the same time

Parameters:

| Name    | Type    | Description                    |
| ------- | ------- | ------------------------------ |
| tokenId | uint256 | the id of the nft to be locked |

### unlock (0xa69df4b5)

```solidity
function unlock() external
```

This function is used to unlock an nft (disable corresponding basic rewards multiplier)

### getExtraRewards (0x1429683b)

```solidity
function getExtraRewards(
    address whose,
    uint256 rewards
) external view returns (uint256)
```

This function is used to calculate extra rewards

Parameters:

| Name    | Type    | Description                                             |
| ------- | ------- | ------------------------------------------------------- |
| whose   | address | the address of the user who is to receive extra rewards |
| rewards | uint256 | basic rewards to be multiplied                          |

Return values:

| Name | Type    | Description   |
| ---- | ------- | ------------- |
| \[0] | uint256 | extra rewards |

### isLocked (0xf6aacfb1)

```solidity
function isLocked(uint256 tokenId) external view returns (bool)
```

This function is used to check whether the passed nft id is locked

Parameters:

| Name    | Type    | Description       |
| ------- | ------- | ----------------- |
| tokenId | uint256 | the id of the nft |

Return values:

| Name | Type | Description                                                        |
| ---- | ---- | ------------------------------------------------------------------ |
| \[0] | bool | false if nft has expired or hasn't yet been locked, otherwise true |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.dexe.network/contract-interfaces/gov-contracts/erc721/multipliers/iabstracterc721multiplier.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
