12345678910111213141516171819202122232425 |
- // SPDX-License-Identifier: MIT
- // OpenZeppelin Contracts v4.4.1 (utils/escrow/ConditionalEscrow.sol)
- pragma solidity ^0.8.0;
- import "./Escrow.sol";
- /**
- * @title ConditionalEscrow
- * @dev Base abstract escrow to only allow withdrawal if a condition is met.
- * @dev Intended usage: See {Escrow}. Same usage guidelines apply here.
- */
- abstract contract ConditionalEscrow is Escrow {
- /**
- * @dev Returns whether an address is allowed to withdraw their funds. To be
- * implemented by derived contracts.
- * @param payee The destination address of the funds.
- */
- function withdrawalAllowed(address payee) public view virtual returns (bool);
- function withdraw(address payable payee) public virtual override {
- require(withdrawalAllowed(payee), "ConditionalEscrow: payee is not allowed to withdraw");
- super.withdraw(payee);
- }
- }
|