# PreciousProject
## MagicRewards token flow for prMagicStaking and PreciousStaking
MAGIC - MAGIC token
prMAGIC - locked MAGIC token (similar to cvxCRV)
PreciousToken - our own token(similar to cvx)
prMagicRewardPool - prMagic token staking
preciousRewardPool -preciousStaking token staking
1. User Staked/Mint prMagic token :-
```mermaid
graph TD;
U[User] -->|MAGIC| D[1. Deposits to MagicDepositor]
D --> |MAGIC| L[2. Locks on AtlasMine]
L --> M[3. Mints prMAGIC]
M -->|prMAGIC| S{Stake}
S --> |Y| S1[4. Stakes to prMagicRewardPool]
S1 --> U
S --> |No| U
```
2. User Staked precious token :-
```mermaid
graph TD;
U[User] -->|PreciousToken| S[1. Stakes to preciousRewardPool]
```
3. User Staked prMAgic token :-
```mermaid
graph TD;
U[User] -->|prMagicToken| S[1. Stakes to prMagicRewardPool]
```
4. Reward Token Flow for both StakingContract :-
for an example if we think protocl yield about 500 magic token.
Protocol will send 200 magic token to prMagicRewardPool, 400 to preciousRewardPool and other purpose is 100 magic token
```mermaid
graph TD;
U[User] -->|MagicDepositor Contract| E
E[1. EarMark reward] --> |Call to queueNewRewards of both rewardPool with respective percentage | R[2. Reward Added to both pool i.e prMagicRewardPool and preciousRewardPool]
R --> S[3. User will claim rewards from respective rewardPool ]
S --> C[4. Before Claiming Reward , claimed magic will deposit to magicDepositor]
C --> RS[5. Same 1st process will restart i.e User Staked/Mint prMagic token ]
```