# VesperEarnDrip

## IVesperPoolV2

An interface.

### getPricePerShare

```solidity
function getPricePerShare() external view returns (uint256)
```

## VesperEarnDrip

This contract handles the "drip" of the yield asset in Vesper Earn pools. It inherits from PoolRewards.&#x20;

### DripRewardPaid

```solidity
event DripRewardPaid(address user, address rewardToken, uint256 reward)
```

### GrowTokenUpdated

```solidity
event GrowTokenUpdated(address oldGrowToken, address newGrowToken)
```

### growToken

```solidity
address growToken
```

### receive

```solidity
receive() external payable
```

### claimable

```solidity
function claimable(address _account) external view returns (address[] _rewardTokens, uint256[] _claimableAmounts)
```

Returns claimable reward amount.

*In case of growToken it will return the actual underlying value*

| Name               | Type       | Description                                                |
| ------------------ | ---------- | ---------------------------------------------------------- |
| \_rewardTokens     | address\[] | Array of tokens being rewarded                             |
| \_claimableAmounts | uint256\[] | Array of claimable for token on same index in rewardTokens |

### notifyRewardAmount

```solidity
function notifyRewardAmount(address _rewardToken, uint256 _rewardAmount, uint256 _rewardDuration) external
```

*Notify that reward is added. Also updates reward rate and reward earning period.*

### updateGrowToken

```solidity
function updateGrowToken(address _newGrowToken) external
```

Defines which rewardToken is a growToken

*growToken is used to check whether to call withdraw from Grow Pool or not*

### \_calculateRewardInDripToken

```solidity
function _calculateRewardInDripToken(address _rewardToken, uint256 _reward) private view returns (uint256)
```

The *rewardToken AKA growToken is a Vesper Grow Pool which can be V2 or V3 pool. V2 and V3 pools have different signatures to read price per share.*
