# Vault

The vault is used for sending tokens for a swap, depositing tokens for providing liquidity, and transferring tokens to users during liquidity withdrawals.\
There is one vault for each Jetton mint.

***

## Interface

### `get_vault_data`

Returns vault data.

**Arguments**

_None_

**Returns**

| Data Type | Description                   |
| --------- | ----------------------------- |
| `int`     | Is initialized                |
| `slice`   | Jetton mint address           |
| `slice`   | Admin address                 |
| `slice`   | Vault's Jetton wallet address |

***

## Messages

### Jetton Transfer Notification

```plaintext
Opcode: 0x7362d09c
```

**Body Format**

| Data Type | Description     |
| --------- | --------------- |
| `Uint32`  | Opcode          |
| `Uint64`  | Query ID        |
| `Coins`   | Transfer amount |
| `Address` | User address    |
| `Cell`    | Forward payload |

***

### Pay To

```plaintext
Opcode: 0x9bbf5a17
```

**Body Format**

| Data Type     | Description                       |
| ------------- | --------------------------------- |
| `Uint32`      | Opcode                            |
| `Uint64`      | Query ID                          |
| `Address`     | Recipient address                 |
| `Uint32`      | Exit code                         |
| `Coins`       | Amount                            |
| `Address`     | Other vault address               |
| `Uint1`       | Is from pool                      |
| `Uint32`      | Tick size                         |
| `Uint8`       | LP fee                            |
| `Uint8`       | Protocol fee                      |
| `Uint8`       | Referral fee                      |
| `Maybe Int32` | Pool min tick (if sent from pool) |
| `Maybe Coins` | Forward amount                    |
| `Maybe ^Cell` | Forward payload                   |
