interface IPoolStake {
  /// @notice Stake `_amount` of `_token`, send lockToken to `_receiver`
  /// @param _amount Amount to stake
  /// @param _receiver Account receiving the lockTokens
  /// @param _token Token used
  /// @return Amount of lockTokens representing deposited `_amount`
  function stake(
    uint256 _amount,
    address _receiver,
    IERC20 _token
  ) external returns (uint256);
}
function stake(
  uint256 _amount,
  address _receiver,
  IERC20 _token
) external returns (uint256);

/// @notice Stake `_amount` of `_token`, send lockToken to `_receiver`
/// @param _amount Amount to stake
/// @param _receiver Account receiving the lockTokens
/// @param _token Token used
/// @return Amount of lockTokens representing deposited `_amount`