use alloy_sol_types::sol;
sol! {
#[allow(missing_docs, reason = "sol! generated interface")]
#[derive(Debug)]
#[sol(rpc)]
interface IX402UptoPermit2Proxy {
struct TokenPermissions {
address token;
uint256 amount;
}
struct Permit {
TokenPermissions permitted;
uint256 nonce;
uint256 deadline;
}
struct Witness {
address to;
address facilitator;
uint256 validAfter;
}
struct EIP2612Permit {
uint256 value;
uint256 deadline;
bytes32 r;
bytes32 s;
uint8 v;
}
function settle(
Permit permit,
uint256 amount,
address owner,
Witness witness,
bytes signature
) external;
function settleWithPermit(
EIP2612Permit permit2612,
Permit permit,
uint256 amount,
address owner,
Witness witness,
bytes signature
) external;
function PERMIT2() external view returns (address);
error AmountExceedsPermitted();
error UnauthorizedFacilitator();
error PaymentTooEarly();
error Permit2612AmountMismatch();
error ReentrancyGuardReentrantCall();
error InvalidDestination();
error InvalidOwner();
error InvalidPermit2Address();
}
}