---
# System prepended metadata

title: Programming Assignment

---

# Programming Assignment

  

Aim: To design and implement a Liquidity Mining module

  

## Design Constraints

- LPs may obtain liquidity token for providing liquidity in a DEX pool
- Rewards should be vested linearly
- There should be a cool-off period where the staking rewards itself are vested linearly, i.e. the liquidity token maybe redeem after the stake duration but the rewards associacted with it cannot be removed immediately. The amount of rewards which can be redeemed should also be vested linearly
- There should be a mechanism to prevent redeeming rewards if the admin wants so

 ## Implementation Constraints
  - The project may use any smart contract framework, preferably using hardhat
  - Should be able to run/test the system programmatically on a mainnet fork locally where uniswap's LP tokens are used for staking by impersonating a wallet or any other means
- The staked tokens maybe wrapped as ERC20
  

Create a public repo/private repo(and add @vhawk19, @Mathepreneur as collaborator) for the same