use alloy_sol_types::sol;
sol! {
#[allow(missing_docs)]
#[allow(clippy::too_many_arguments)]
#[derive(Debug)]
#[sol(rpc)]
interface IEIP3009 {
function name() external view returns (string);
function version() external view returns (string);
function balanceOf(address account) external view returns (uint256);
function authorizationState(address authorizer, bytes32 nonce) external view returns (bool);
function transferWithAuthorization(
address from,
address to,
uint256 value,
uint256 validAfter,
uint256 validBefore,
bytes32 nonce,
bytes signature
) external;
function transferWithAuthorization(
address from,
address to,
uint256 value,
uint256 validAfter,
uint256 validBefore,
bytes32 nonce,
uint8 v,
bytes32 r,
bytes32 s
) external;
}
}
sol! {
#[allow(missing_docs)]
#[derive(Debug)]
#[sol(rpc)]
interface Validator6492 {
function isValidSig(address signer, bytes32 hash, bytes calldata signature) external returns (bool);
function isValidSigWithSideEffects(address signer, bytes32 hash, bytes calldata signature) external returns (bool);
error ERC1271Revert(bytes error);
error ERC6492DeployFailed(bytes error);
}
}
sol! {
#[derive(Debug)]
struct Sig6492 {
address factory;
bytes factoryCalldata;
bytes innerSig;
}
}
sol! {
#[allow(missing_docs)]
#[derive(Debug)]
#[sol(rpc)]
interface IX402Permit2Proxy {
struct TokenPermissions {
address token;
uint256 amount;
}
struct Permit {
TokenPermissions permitted;
uint256 nonce;
uint256 deadline;
}
struct Witness {
address to;
uint256 validAfter;
bytes extra;
}
function settle(
Permit permit,
address owner,
Witness witness,
bytes signature
) external;
}
}
sol! {
#[allow(missing_docs)]
#[derive(Debug)]
#[sol(rpc)]
interface IERC20 {
function balanceOf(address account) external view returns (uint256);
function allowance(address owner, address spender) external view returns (uint256);
}
}