# Interactions

#### deposit

Deposits `spaToken` into the vault in exchange for shares.

```solidity
function deposit(uint256 assets, address receiver) public override returns (uint256 shares);
```

#### Parameters

| Name       | Type      | Description                           |
| ---------- | --------- | ------------------------------------- |
| `assets`   | `uint256` | Amount of `spaToken` to deposit.      |
| `receiver` | `address` | Address to receive the minted shares. |

#### Returns

| Name     | Type      | Description              |
| -------- | --------- | ------------------------ |
| `shares` | `uint256` | Amount of shares minted. |

#### mint

Mints shares for a given amount of assets deposited.

```solidity
function mint(uint256 shares, address receiver) public override returns (uint256 assets);

```

#### Parameters

| Name       | Type      | Description                    |
| ---------- | --------- | ------------------------------ |
| `shares`   | `uint256` | Amount of shares to mint.      |
| `receiver` | `address` | Address to receive the shares. |

#### Returns

| Name     | Type      | Description                     |
| -------- | --------- | ------------------------------- |
| `assets` | `uint256` | Amount of `spaToken` deposited. |

#### withdraw

Withdraws `spaToken` from the vault in exchange for burning shares.

```solidity
function withdraw(uint256 assets, address receiver, address owner) public override returns (uint256 shares);

```

#### Parameters

| Name       | Type      | Description                                  |
| ---------- | --------- | -------------------------------------------- |
| `assets`   | `uint256` | Amount of `spaToken` to withdraw.            |
| `receiver` | `address` | Address to receive the withdrawn `spaToken`. |
| `owner`    | `address` | Address whose shares will be burned.         |

#### Returns

| Name     | Type      | Description                              |
| -------- | --------- | ---------------------------------------- |
| `shares` | `uint256` | Shares burned to fulfill the withdrawal. |

#### redeem

Redeems shares for `spaToken`.

```solidity
function redeem(uint256 shares, address receiver, address owner) public override returns (uint256 assets);

```

#### Parameters

| Name       | Type      | Description                                  |
| ---------- | --------- | -------------------------------------------- |
| `shares`   | `uint256` | Amount of shares to redeem.                  |
| `receiver` | `address` | Address to receive the withdrawn `spaToken`. |
| `owner`    | `address` | Address whose shares will be burned.         |

#### Returns

| Name     | Type      | Description                    |
| -------- | --------- | ------------------------------ |
| `assets` | `uint256` | Amount of `spaToken` received. |
