---
# System prepended metadata

title: Staking contract flow

---

Staking contract flow
===


**Rinkeby**
Staking contract Address: 0xA88d28d4Fc2D3bDa66043e749f4a393eE2F48922
EXNT contract: 0x91B50bB650060Ac32eD45f9C8D48FA74eDfbccB1
EXNG contract: 0xbb94cc12d55760ae6c6a134e625a664d7fdedd11
> **Note**: Current deployments time period is in "minutes" for testing purpose


### Interactions with Staking contract

- Check the plans, that are avilable in Staking contract.
```json=
struct Plan{
            uint period;
            uint256 id;
            uint256 planEXNTAmount;
            uint256 planEXNGAmount;
    }
```
   - **getPlans**: Method provide list of existed plans.
   - To choose plan select the **id** of plan while staking.
 
> **Note**: Before deposit the `amount`. Approve the `amount` in EXNT contract to Staking contract using `approve` method in EXNT contract.
> Method: approve in EXNT.
    >> Args: `spender` , `amount`
    >> spender: Staking contract address
    >> amount: amount he wish to stake

- Deposit funds : `deposit`
    - Args : `amount` , `id`
        - amount : deposit amount
        - id : plan id
    
- Get Deposits : `getDeposits`
    - Args: `depositor addresss`
    - Return list of deposits associated to depositor.

- Claim Reward: `claimReward`
    - Args: `index` of deposit

