// SPDX-License-Identifier: Apache-2.0 pragma solidity 0.8.18; import "../commons/ModuleNonce.sol"; import "../commons/submodules/nonce/SubModuleNonce.sol"; contract RequireUtils { /** * @notice Validates that a given expiration hasn't expired * @dev Used as an optional transaction on a Sequence batch, to create expirable transactions. * * @param _expiration Expiration to check */ function requireNonExpired(uint256 _expiration) external view { require(block.timestamp < _expiration, "RequireUtils#requireNonExpired: EXPIRED"); } /** * @notice Validates that a given wallet has reached a given nonce * @dev Used as an optional transaction on a Sequence batch, to define transaction execution order * * @param _wallet Sequence wallet * @param _nonce Required nonce */ function requireMinNonce(address _wallet, uint256 _nonce) external view { (uint256 space, uint256 nonce) = SubModuleNonce.decodeNonce(_nonce); uint256 currentNonce = ModuleNonce(_wallet).readNonce(space); require(currentNonce >= nonce, "RequireUtils#requireMinNonce: NONCE_BELOW_REQUIRED"); } }