# Deposit

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

  ```solidity
  function deposit(uint256 amount)
  ```

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

  ```solidity
   function makeDepositRequest(
          uint256 _amount
      )
  ```

  &#x20;After that `warmupPeriod` needs to pass in order for BE or user to call function `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;
