# 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;
