> For the complete documentation index, see [llms.txt](https://docs.isle.finance/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.isle.finance/contract-documentation/receivable.md).

# Receivable

[Git Source](https://github.com/isle-labs/isle-contract/blob/main/contracts/Receivable.sol)

**Inherits:** [ReceivableStorage](/contract-documentation/receivablestorage.md), Initializable, ERC721Upgradeable, ERC721EnumerableUpgradeable, ERC721BurnableUpgradeable, UUPSUpgradeable, [IReceivable](/contract-documentation/interfaces/ireceivable.md)

## Functions

### \_authorizeUpgrade

```solidity
function _authorizeUpgrade(address newImplementation) internal override onlyGovernor;
```

### initialize

*Initializes the Receivable.*

```solidity
function initialize(address isleGlobal_) external override initializer;
```

**Parameters**

| Name          | Type      | Description                    |
| ------------- | --------- | ------------------------------ |
| `isleGlobal_` | `address` | The address of the isleGlobal. |

### createReceivable

Mint a new receivable.

*The event faceAmount is converted to decimal with 6 decimals.*

```solidity
function createReceivable(RCV.Create calldata params_) external override returns (uint256 tokenId_);
```

**Parameters**

| Name      | Type         | Description                                                            |
| --------- | ------------ | ---------------------------------------------------------------------- |
| `params_` | `RCV.Create` | The struct containing the information of the receivable to be created. |

**Returns**

| Name       | Type      | Description                             |
| ---------- | --------- | --------------------------------------- |
| `tokenId_` | `uint256` | The id of the newly created receivable. |

### getReceivableInfoById

*Get the information of a receivable.*

```solidity
function getReceivableInfoById(uint256 tokenId_) external view override returns (RCV.Info memory info_);
```

**Parameters**

| Name       | Type      | Description               |
| ---------- | --------- | ------------------------- |
| `tokenId_` | `uint256` | The id of the receivable. |

**Returns**

| Name    | Type       | Description                                              |
| ------- | ---------- | -------------------------------------------------------- |
| `info_` | `RCV.Info` | The struct containing the information of the receivable. |

### burnReceivable

*Burn a receivable.*

```solidity
function burnReceivable(uint256 tokenId_) external;
```

**Parameters**

| Name       | Type      | Description               |
| ---------- | --------- | ------------------------- |
| `tokenId_` | `uint256` | The id of the receivable. |

### governor

*Get governor from IsleGlobals.*

```solidity
function governor() public view returns (address governor_);
```

**Returns**

| Name        | Type      | Description                  |
| ----------- | --------- | ---------------------------- |
| `governor_` | `address` | The address of the governor. |

### \_beforeTokenTransfer

not support batch transfer

*Hook that is called before any token transfer.*

```solidity
function _beforeTokenTransfer(
    address from_,
    address to_,
    uint256 tokenId_,
    uint256 batchSize_
)
    internal
    override(ERC721Upgradeable, ERC721EnumerableUpgradeable);
```

### supportsInterface

*See {IERC165-supportsInterface}.*

```solidity
function supportsInterface(
    bytes4 interfaceId_
)
    public
    view
    override(ERC721Upgradeable, ERC721EnumerableUpgradeable)
    returns (bool);
```
