# Deposit

* There is two way to make a deposit on contracts, depends if warmup is enabled or not
*   If `warmupPeriod == 0` contract admin needs to make a deposit through function called `ISDK(farmAddress).deposit()`

    ```solidity
    function deposit(address _user, uint256 amount)
    ```

    &#x20;After that stake is remembered and user starts earning immediately
*   If `warmupPeriod > 0` contract admin needs to make deposit through function called `ISDK(farmAddress).makeDepositRequest`

    ```solidity
    function makeDepositRequest(
       address _user,
       uint256 amount
    )
    ```

    &#x20;After that `warmupPeriod` needs to pass in order for BE or contract admin to call function `ISDK(farmAddress).finaliseDeposit`&#x20;

    ```solidity
    function finaliseDeposit(
        address _user,    
        uint256 stakeId
    )
    ```

    once that function is executed user can start earning rewards and his stakes i acknowledged&#x20;
