// SPDX-License-Identifier: MIT pragma solidity 0.8.24; interface IERC20Exact { function balanceOf(address account) external view returns (uint256); function decimals() external view returns (uint8); function transfer(address to, uint256 amount) external returns (bool); function transferFrom(address from, address to, uint256 amount) external returns (bool); function approve(address spender, uint256 amount) external returns (bool); } interface IAgenticPurchaseVerifier { struct Purchase { address buyer; uint256 chainId; address round; uint256 quantity; uint256 unitPrice; uint256 nonce; uint256 deadline; } function verify(Purchase calldata purchase, bytes calldata proof) external view returns (bool); } /// @dev Providers must authenticate their oracle and support asynchronous delivery. interface IRandomnessProvider { function requestRandomness() external returns (uint256 requestId); } interface IRandomnessReceiver { function receiveRandomness(uint256 requestId, uint256 word) external; }