function requestWithdrawal(uint256 denominatedCollateralAmount)
noPendingWithdrawal(msg.sender)
OptimisticDepositBoxData storage depositBoxData = depositBoxes[msg.sender];
require(denominatedCollateralAmount > 0, "Invalid collateral amount");
// Update the position data for the user.
depositBoxData.withdrawalRequestAmount = denominatedCollateralAmount;
depositBoxData.withdrawalRequestTimestamp = getCurrentTime();
emit RequestWithdrawal(msg.sender, denominatedCollateralAmount, depositBoxData.withdrawalRequestTimestamp);
// A price request is sent for the current timestamp.
_requestOraclePrice(depositBoxData.withdrawalRequestTimestamp);
// Requests a price for `priceIdentifier` at `requestedTime` from the Optimistic Oracle.
function _requestOraclePrice(uint256 requestedTime) internal {
OptimisticOracleInterface oracle = _getOptimisticOracle();
// For other use cases, you may need ancillary data or a reward. Here, they are both zero.
oracle.requestPrice(priceIdentifier, requestedTime, "", IERC20(collateralCurrency), 0);