# IPool

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

**Inherits:** IERC4626

## Functions

### configurator

Returns the address of the pool configurator.

```solidity
function configurator() external view returns (address configurator_);
```

**Returns**

| Name            | Type      | Description                           |
| --------------- | --------- | ------------------------------------- |
| `configurator_` | `address` | The address of the pool configurator. |

### depositWithPermit

Deposits assets into the pool with the permit signature.

```solidity
function depositWithPermit(
    uint256 assets,
    address receiver,
    uint256 deadline,
    uint8 v,
    bytes32 r,
    bytes32 s
)
    external
    returns (uint256 shares_);
```

**Parameters**

| Name       | Type      | Description                           |
| ---------- | --------- | ------------------------------------- |
| `assets`   | `uint256` | The amount of assets to deposit.      |
| `receiver` | `address` | The address of the receiver.          |
| `deadline` | `uint256` | The deadline of the permit signature. |
| `v`        | `uint8`   | The v of the permit signature.        |
| `r`        | `bytes32` | The r of the permit signature.        |
| `s`        | `bytes32` | The s of the permit signature.        |

**Returns**

| Name      | Type      | Description                                |
| --------- | --------- | ------------------------------------------ |
| `shares_` | `uint256` | The corresponding amount of shares minted. |

### mintWithPermit

Mints shares from the pool with the permit signature.

```solidity
function mintWithPermit(
    uint256 shares,
    address receiver,
    uint256 maxAssets,
    uint256 deadline,
    uint8 v,
    bytes32 r,
    bytes32 s
)
    external
    returns (uint256 assets_);
```

**Parameters**

| Name        | Type      | Description                              |
| ----------- | --------- | ---------------------------------------- |
| `shares`    | `uint256` | The amount of shares to mint.            |
| `receiver`  | `address` | The address of the receiver.             |
| `maxAssets` | `uint256` | The maximum amount of assets to deposit. |
| `deadline`  | `uint256` | The deadline of the permit signature.    |
| `v`         | `uint8`   | The v of the permit signature.           |
| `r`         | `bytes32` | The r of the permit signature.           |
| `s`         | `bytes32` | The s of the permit signature.           |

**Returns**

| Name      | Type      | Description                                   |
| --------- | --------- | --------------------------------------------- |
| `assets_` | `uint256` | The corresponding amount of assets deposited. |

### removeShares

Remove shares from the pool.

```solidity
function removeShares(uint256 shares_, address owner_) external returns (uint256 sharesReturned_);
```

**Parameters**

| Name      | Type      | Description                     |
| --------- | --------- | ------------------------------- |
| `shares_` | `uint256` | The amount of shares to remove. |
| `owner_`  | `address` | The owner of the shares.        |

**Returns**

| Name              | Type      | Description                    |
| ----------------- | --------- | ------------------------------ |
| `sharesReturned_` | `uint256` | The amount of shares returned. |

### requestRedeem

Request the redemption of shares from the pool.

```solidity
function requestRedeem(uint256 shares_, address owner_) external;
```

**Parameters**

| Name      | Type      | Description                     |
| --------- | --------- | ------------------------------- |
| `shares_` | `uint256` | The amount of shares to redeem. |
| `owner_`  | `address` | The owner of the shares.        |

### balanceOfAssets

Returns of the balance of the account.

```solidity
function balanceOfAssets(address account_) external view returns (uint256 assets_);
```

**Parameters**

| Name       | Type      | Description                 |
| ---------- | --------- | --------------------------- |
| `account_` | `address` | The address of the account. |

**Returns**

| Name      | Type      | Description           |
| --------- | --------- | --------------------- |
| `assets_` | `uint256` | The amount of assets. |

### convertToExitAssets

Returns the amount of assets that can be withdrawn for the amount of shares.

```solidity
function convertToExitAssets(uint256 shares_) external view returns (uint256 assets_);
```

**Parameters**

| Name      | Type      | Description           |
| --------- | --------- | --------------------- |
| `shares_` | `uint256` | The amount of shares. |

**Returns**

| Name      | Type      | Description           |
| --------- | --------- | --------------------- |
| `assets_` | `uint256` | The amount of assets. |

### convertToExitShares

Returns the amount of shares that will be burned to withdraw the amount of assets.

```solidity
function convertToExitShares(uint256 assets_) external view returns (uint256 shares_);
```

**Parameters**

| Name      | Type      | Description                       |
| --------- | --------- | --------------------------------- |
| `assets_` | `uint256` | The amount of assets to withdraw. |

**Returns**

| Name      | Type      | Description           |
| --------- | --------- | --------------------- |
| `shares_` | `uint256` | The amount of shares. |

### unrealizedLosses

Returns the unrealized losses of the pool.

```solidity
function unrealizedLosses() external view returns (uint256 unrealizedLosses_);
```

**Returns**

| Name                | Type      | Description            |
| ------------------- | --------- | ---------------------- |
| `unrealizedLosses_` | `uint256` | The unrealized losses. |


---

# Agent Instructions: 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:

```
GET https://docs.isle.finance/contract-documentation/interfaces/ipool.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
