Expand description
Generated by the following Solidity interface…
library IAllowanceTransfer {
struct AllowanceTransferDetails {
address from;
address to;
uint160 amount;
address token;
}
struct PermitBatch {
PermitDetails[] details;
address spender;
uint256 sigDeadline;
}
struct PermitDetails {
address token;
uint160 amount;
uint48 expiration;
uint48 nonce;
}
struct PermitSingle {
PermitDetails details;
address spender;
uint256 sigDeadline;
}
struct TokenSpenderPair {
address token;
address spender;
}
}
library ISignatureTransfer {
struct PermitBatchTransferFrom {
TokenPermissions[] permitted;
uint256 nonce;
uint256 deadline;
}
struct PermitTransferFrom {
TokenPermissions permitted;
uint256 nonce;
uint256 deadline;
}
struct SignatureTransferDetails {
address to;
uint256 requestedAmount;
}
struct TokenPermissions {
address token;
uint256 amount;
}
}
interface Permit2 {
error AllowanceExpired(uint256 deadline);
error ExcessiveInvalidation();
error InsufficientAllowance(uint256 amount);
error InvalidAmount(uint256 maxAmount);
error InvalidContractSignature();
error InvalidNonce();
error InvalidSignature();
error InvalidSignatureLength();
error InvalidSigner();
error LengthMismatch();
error SignatureExpired(uint256 signatureDeadline);
event Approval(address indexed owner, address indexed token, address indexed spender, uint160 amount, uint48 expiration);
event Lockdown(address indexed owner, address token, address spender);
event NonceInvalidation(address indexed owner, address indexed token, address indexed spender, uint48 newNonce, uint48 oldNonce);
event Permit(address indexed owner, address indexed token, address indexed spender, uint160 amount, uint48 expiration, uint48 nonce);
event UnorderedNonceInvalidation(address indexed owner, uint256 word, uint256 mask);
function DOMAIN_SEPARATOR() external view returns (bytes32);
function allowance(address, address, address) external view returns (uint160 amount, uint48 expiration, uint48 nonce);
function approve(address token, address spender, uint160 amount, uint48 expiration) external;
function invalidateNonces(address token, address spender, uint48 newNonce) external;
function invalidateUnorderedNonces(uint256 wordPos, uint256 mask) external;
function lockdown(IAllowanceTransfer.TokenSpenderPair[] memory approvals) external;
function nonceBitmap(address, uint256) external view returns (uint256);
function permit(address owner, IAllowanceTransfer.PermitBatch memory permitBatch, bytes memory signature) external;
function permit(address owner, IAllowanceTransfer.PermitSingle memory permitSingle, bytes memory signature) external;
function permitTransferFrom(ISignatureTransfer.PermitTransferFrom memory permit, ISignatureTransfer.SignatureTransferDetails memory transferDetails, address owner, bytes memory signature) external;
function permitTransferFrom(ISignatureTransfer.PermitBatchTransferFrom memory permit, ISignatureTransfer.SignatureTransferDetails[] memory transferDetails, address owner, bytes memory signature) external;
function permitWitnessTransferFrom(ISignatureTransfer.PermitTransferFrom memory permit, ISignatureTransfer.SignatureTransferDetails memory transferDetails, address owner, bytes32 witness, string memory witnessTypeString, bytes memory signature) external;
function permitWitnessTransferFrom(ISignatureTransfer.PermitBatchTransferFrom memory permit, ISignatureTransfer.SignatureTransferDetails[] memory transferDetails, address owner, bytes32 witness, string memory witnessTypeString, bytes memory signature) external;
function transferFrom(IAllowanceTransfer.AllowanceTransferDetails[] memory transferDetails) external;
function transferFrom(address from, address to, uint160 amount, address token) external;
}…which was generated by the following JSON ABI:
[
{
"type": "function",
"name": "DOMAIN_SEPARATOR",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "allowance",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
},
{
"name": "",
"type": "address",
"internalType": "address"
},
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "amount",
"type": "uint160",
"internalType": "uint160"
},
{
"name": "expiration",
"type": "uint48",
"internalType": "uint48"
},
{
"name": "nonce",
"type": "uint48",
"internalType": "uint48"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "approve",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "spender",
"type": "address",
"internalType": "address"
},
{
"name": "amount",
"type": "uint160",
"internalType": "uint160"
},
{
"name": "expiration",
"type": "uint48",
"internalType": "uint48"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "invalidateNonces",
"inputs": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "spender",
"type": "address",
"internalType": "address"
},
{
"name": "newNonce",
"type": "uint48",
"internalType": "uint48"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "invalidateUnorderedNonces",
"inputs": [
{
"name": "wordPos",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "mask",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "lockdown",
"inputs": [
{
"name": "approvals",
"type": "tuple[]",
"internalType": "struct IAllowanceTransfer.TokenSpenderPair[]",
"components": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "spender",
"type": "address",
"internalType": "address"
}
]
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "nonceBitmap",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
},
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "permit",
"inputs": [
{
"name": "owner",
"type": "address",
"internalType": "address"
},
{
"name": "permitBatch",
"type": "tuple",
"internalType": "struct IAllowanceTransfer.PermitBatch",
"components": [
{
"name": "details",
"type": "tuple[]",
"internalType": "struct IAllowanceTransfer.PermitDetails[]",
"components": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "amount",
"type": "uint160",
"internalType": "uint160"
},
{
"name": "expiration",
"type": "uint48",
"internalType": "uint48"
},
{
"name": "nonce",
"type": "uint48",
"internalType": "uint48"
}
]
},
{
"name": "spender",
"type": "address",
"internalType": "address"
},
{
"name": "sigDeadline",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "signature",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "permit",
"inputs": [
{
"name": "owner",
"type": "address",
"internalType": "address"
},
{
"name": "permitSingle",
"type": "tuple",
"internalType": "struct IAllowanceTransfer.PermitSingle",
"components": [
{
"name": "details",
"type": "tuple",
"internalType": "struct IAllowanceTransfer.PermitDetails",
"components": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "amount",
"type": "uint160",
"internalType": "uint160"
},
{
"name": "expiration",
"type": "uint48",
"internalType": "uint48"
},
{
"name": "nonce",
"type": "uint48",
"internalType": "uint48"
}
]
},
{
"name": "spender",
"type": "address",
"internalType": "address"
},
{
"name": "sigDeadline",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "signature",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "permitTransferFrom",
"inputs": [
{
"name": "permit",
"type": "tuple",
"internalType": "struct ISignatureTransfer.PermitTransferFrom",
"components": [
{
"name": "permitted",
"type": "tuple",
"internalType": "struct ISignatureTransfer.TokenPermissions",
"components": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "nonce",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "deadline",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "transferDetails",
"type": "tuple",
"internalType": "struct ISignatureTransfer.SignatureTransferDetails",
"components": [
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "requestedAmount",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "owner",
"type": "address",
"internalType": "address"
},
{
"name": "signature",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "permitTransferFrom",
"inputs": [
{
"name": "permit",
"type": "tuple",
"internalType": "struct ISignatureTransfer.PermitBatchTransferFrom",
"components": [
{
"name": "permitted",
"type": "tuple[]",
"internalType": "struct ISignatureTransfer.TokenPermissions[]",
"components": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "nonce",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "deadline",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "transferDetails",
"type": "tuple[]",
"internalType": "struct ISignatureTransfer.SignatureTransferDetails[]",
"components": [
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "requestedAmount",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "owner",
"type": "address",
"internalType": "address"
},
{
"name": "signature",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "permitWitnessTransferFrom",
"inputs": [
{
"name": "permit",
"type": "tuple",
"internalType": "struct ISignatureTransfer.PermitTransferFrom",
"components": [
{
"name": "permitted",
"type": "tuple",
"internalType": "struct ISignatureTransfer.TokenPermissions",
"components": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "nonce",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "deadline",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "transferDetails",
"type": "tuple",
"internalType": "struct ISignatureTransfer.SignatureTransferDetails",
"components": [
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "requestedAmount",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "owner",
"type": "address",
"internalType": "address"
},
{
"name": "witness",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "witnessTypeString",
"type": "string",
"internalType": "string"
},
{
"name": "signature",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "permitWitnessTransferFrom",
"inputs": [
{
"name": "permit",
"type": "tuple",
"internalType": "struct ISignatureTransfer.PermitBatchTransferFrom",
"components": [
{
"name": "permitted",
"type": "tuple[]",
"internalType": "struct ISignatureTransfer.TokenPermissions[]",
"components": [
{
"name": "token",
"type": "address",
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "nonce",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "deadline",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "transferDetails",
"type": "tuple[]",
"internalType": "struct ISignatureTransfer.SignatureTransferDetails[]",
"components": [
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "requestedAmount",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "owner",
"type": "address",
"internalType": "address"
},
{
"name": "witness",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "witnessTypeString",
"type": "string",
"internalType": "string"
},
{
"name": "signature",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "transferFrom",
"inputs": [
{
"name": "transferDetails",
"type": "tuple[]",
"internalType": "struct IAllowanceTransfer.AllowanceTransferDetails[]",
"components": [
{
"name": "from",
"type": "address",
"internalType": "address"
},
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "amount",
"type": "uint160",
"internalType": "uint160"
},
{
"name": "token",
"type": "address",
"internalType": "address"
}
]
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "transferFrom",
"inputs": [
{
"name": "from",
"type": "address",
"internalType": "address"
},
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "amount",
"type": "uint160",
"internalType": "uint160"
},
{
"name": "token",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "event",
"name": "Approval",
"inputs": [
{
"name": "owner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "spender",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "amount",
"type": "uint160",
"indexed": false,
"internalType": "uint160"
},
{
"name": "expiration",
"type": "uint48",
"indexed": false,
"internalType": "uint48"
}
],
"anonymous": false
},
{
"type": "event",
"name": "Lockdown",
"inputs": [
{
"name": "owner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "token",
"type": "address",
"indexed": false,
"internalType": "address"
},
{
"name": "spender",
"type": "address",
"indexed": false,
"internalType": "address"
}
],
"anonymous": false
},
{
"type": "event",
"name": "NonceInvalidation",
"inputs": [
{
"name": "owner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "spender",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "newNonce",
"type": "uint48",
"indexed": false,
"internalType": "uint48"
},
{
"name": "oldNonce",
"type": "uint48",
"indexed": false,
"internalType": "uint48"
}
],
"anonymous": false
},
{
"type": "event",
"name": "Permit",
"inputs": [
{
"name": "owner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "token",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "spender",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "amount",
"type": "uint160",
"indexed": false,
"internalType": "uint160"
},
{
"name": "expiration",
"type": "uint48",
"indexed": false,
"internalType": "uint48"
},
{
"name": "nonce",
"type": "uint48",
"indexed": false,
"internalType": "uint48"
}
],
"anonymous": false
},
{
"type": "event",
"name": "UnorderedNonceInvalidation",
"inputs": [
{
"name": "owner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "word",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "mask",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"type": "error",
"name": "AllowanceExpired",
"inputs": [
{
"name": "deadline",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"type": "error",
"name": "ExcessiveInvalidation",
"inputs": []
},
{
"type": "error",
"name": "InsufficientAllowance",
"inputs": [
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"type": "error",
"name": "InvalidAmount",
"inputs": [
{
"name": "maxAmount",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"type": "error",
"name": "InvalidContractSignature",
"inputs": []
},
{
"type": "error",
"name": "InvalidNonce",
"inputs": []
},
{
"type": "error",
"name": "InvalidSignature",
"inputs": []
},
{
"type": "error",
"name": "InvalidSignatureLength",
"inputs": []
},
{
"type": "error",
"name": "InvalidSigner",
"inputs": []
},
{
"type": "error",
"name": "LengthMismatch",
"inputs": []
},
{
"type": "error",
"name": "SignatureExpired",
"inputs": [
{
"name": "signatureDeadline",
"type": "uint256",
"internalType": "uint256"
}
]
}
]Structs§
- Allowance
Expired - Custom error with signature
AllowanceExpired(uint256)and selector0xd81b2f2e. - Approval
- Event with signature
Approval(address,address,address,uint160,uint48)and selector0xda9fa7c1b00402c17d0161b249b1ab8bbec047c5a52207b9c112deffd817036b. - DOMAIN_
SEPARATOR Call - Function with signature
DOMAIN_SEPARATOR()and selector0x3644e515. - DOMAIN_
SEPARATOR Return - Container type for the return parameters of the
DOMAIN_SEPARATOR()function. - Excessive
Invalidation - Custom error with signature
ExcessiveInvalidation()and selector0x24d35a26. - Insufficient
Allowance - Custom error with signature
InsufficientAllowance(uint256)and selector0xf96fb071. - Invalid
Amount - Custom error with signature
InvalidAmount(uint256)and selector0x3728b83d. - Invalid
Contract Signature - Custom error with signature
InvalidContractSignature()and selector0xb0669cbc. - Invalid
Nonce - Custom error with signature
InvalidNonce()and selector0x756688fe. - Invalid
Signature - Custom error with signature
InvalidSignature()and selector0x8baa579f. - Invalid
Signature Length - Custom error with signature
InvalidSignatureLength()and selector0x4be6321b. - Invalid
Signer - Custom error with signature
InvalidSigner()and selector0x815e1d64. - Length
Mismatch - Custom error with signature
LengthMismatch()and selector0xff633a38. - Lockdown
- Event with signature
Lockdown(address,address,address)and selector0x89b1add15eff56b3dfe299ad94e01f2b52fbcb80ae1a3baea6ae8c04cb2b98a4. - Nonce
Invalidation - Event with signature
NonceInvalidation(address,address,address,uint48,uint48)and selector0x55eb90d810e1700b35a8e7e25395ff7f2b2259abd7415ca2284dfb1c246418f3. - Permit
- Event with signature
Permit(address,address,address,uint160,uint48,uint48)and selector0xc6a377bfc4eb120024a8ac08eef205be16b817020812c73223e81d1bdb9708ec. - Permit2
Instance - A
Permit2instance. - Signature
Expired - Custom error with signature
SignatureExpired(uint256)and selector0xcd21db4f. - Unordered
Nonce Invalidation - Event with signature
UnorderedNonceInvalidation(address,uint256,uint256)and selector0x3704902f963766a4e561bbaab6e6cdc1b1dd12f6e9e99648da8843b3f46b918d. - allowance
Call - Function with signature
allowance(address,address,address)and selector0x927da105. - allowance
Return - Container type for the return parameters of the
allowance(address,address,address)function. - approve
Call - Function with signature
approve(address,address,uint160,uint48)and selector0x87517c45. - approve
Return - Container type for the return parameters of the
approve(address,address,uint160,uint48)function. - invalidate
Nonces Call - Function with signature
invalidateNonces(address,address,uint48)and selector0x65d9723c. - invalidate
Nonces Return - Container type for the return parameters of the
invalidateNonces(address,address,uint48)function. - invalidate
Unordered Nonces Call - Function with signature
invalidateUnorderedNonces(uint256,uint256)and selector0x3ff9dcb1. - invalidate
Unordered Nonces Return - Container type for the return parameters of the
invalidateUnorderedNonces(uint256,uint256)function. - lockdown
Call - Function with signature
lockdown((address,address)[])and selector0xcc53287f. - lockdown
Return - Container type for the return parameters of the
lockdown((address,address)[])function. - nonce
Bitmap Call - Function with signature
nonceBitmap(address,uint256)and selector0x4fe02b44. - nonce
Bitmap Return - Container type for the return parameters of the
nonceBitmap(address,uint256)function. - permit
Transfer From_ 0Call - Function with signature
permitTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes)and selector0x30f28b7a. - permit
Transfer From_ 0Return - Container type for the return parameters of the
permitTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes)function. - permit
Transfer From_ 1Call - Function with signature
permitTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes)and selector0xedd9444b. - permit
Transfer From_ 1Return - Container type for the return parameters of the
permitTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes)function. - permit
Witness Transfer From_ 0Call - Function with signature
permitWitnessTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes32,string,bytes)and selector0x137c29fe. - permit
Witness Transfer From_ 0Return - Container type for the return parameters of the
permitWitnessTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes32,string,bytes)function. - permit
Witness Transfer From_ 1Call - Function with signature
permitWitnessTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes32,string,bytes)and selector0xfe8ec1a7. - permit
Witness Transfer From_ 1Return - Container type for the return parameters of the
permitWitnessTransferFrom(((address,uint256)[],uint256,uint256),(address,uint256)[],address,bytes32,string,bytes)function. - permit_
0Call - Function with signature
permit(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)and selector0x2a2d80d1. - permit_
0Return - Container type for the return parameters of the
permit(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)function. - permit_
1Call - Function with signature
permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)and selector0x2b67b570. - permit_
1Return - Container type for the return parameters of the
permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)function. - transfer
From_ 0Call - Function with signature
transferFrom((address,address,uint160,address)[])and selector0x0d58b1db. - transfer
From_ 0Return - Container type for the return parameters of the
transferFrom((address,address,uint160,address)[])function. - transfer
From_ 1Call - Function with signature
transferFrom(address,address,uint160,address)and selector0x36c78516. - transfer
From_ 1Return - Container type for the return parameters of the
transferFrom(address,address,uint160,address)function.
Enums§
- Permit2
Calls - Container for all the
Permit2function calls. - Permit2
Errors - Container for all the
Permit2custom errors. - Permit2
Events - Container for all the
Permit2events.
Statics§
- BYTECODE
- The creation / init bytecode of the contract.
- DEPLOYED_
BYTECODE - The runtime bytecode of the contract, as deployed on the network.
Functions§
- deploy
- Deploys this contract using the given
providerand constructor arguments, if any. - deploy_
builder - Creates a
RawCallBuilderfor deploying this contract using the givenproviderand constructor arguments, if any. - new
- Creates a new wrapper around an on-chain
Permit2contract instance.