# OperableDeposit

[Git Source](https://github.com/Sperax/Demeter-Protocol/blob/cc93b9106874316d6dd016cdace652e2ca4ef8e1/contracts/features/OperableDeposit.sol)

**Inherits:** Farm

**Author:** Sperax Foundation.

This contract helps in creating farms with increase/decrease deposit functionality.

## Functions

### \_updateSubscriptionForIncrease

Update subscription data of a deposit for increase in liquidity.

```solidity
function _updateSubscriptionForIncrease(uint256 _depositId, uint256 _amount) internal;
```

**Parameters**

| Name         | Type      | Description                        |
| ------------ | --------- | ---------------------------------- |
| `_depositId` | `uint256` | Unique deposit id for the deposit. |
| `_amount`    | `uint256` | \_amount to be increased.          |

### \_updateSubscriptionForDecrease

Update subscription data of a deposit after decrease in liquidity.

```solidity
function _updateSubscriptionForDecrease(uint256 _depositId, uint256 _amount) internal;
```

**Parameters**

| Name         | Type      | Description                       |
| ------------ | --------- | --------------------------------- |
| `_depositId` | `uint256` | Unique deposit id for the deposit |
| `_amount`    | `uint256` | \_amount to be decreased.         |

### \_increaseDeposit

Common logic for increasing a deposit.

```solidity
function _increaseDeposit(uint256 _depositId, uint256 _amount) internal;
```

**Parameters**

| Name         | Type      | Description                       |
| ------------ | --------- | --------------------------------- |
| `_depositId` | `uint256` | Unique deposit id for the deposit |
| `_amount`    | `uint256` | \_amount to be decreased.         |

### \_decreaseDeposit

Common logic for decreasing a deposit.

```solidity
function _decreaseDeposit(uint256 _depositId, uint256 _amount) internal;
```

**Parameters**

| Name         | Type      | Description                       |
| ------------ | --------- | --------------------------------- |
| `_depositId` | `uint256` | Unique deposit id for the deposit |
| `_amount`    | `uint256` | \_amount to be decreased.         |

## Events

### DepositIncreased

```solidity
event DepositIncreased(uint256 indexed depositId, uint256 liquidity);
```

### DepositDecreased

```solidity
event DepositDecreased(uint256 indexed depositId, uint256 liquidity);
```

## Errors

### DecreaseDepositNotPermitted

```solidity
error DecreaseDepositNotPermitted();
```

### InsufficientLiquidity

```solidity
error InsufficientLiquidity();
```
