pub struct Permit2AllowancePayload {
pub data: Eip712Message,
pub payload_id: String,
pub type_: Permit2AllowancePayloadType,
}Expand description
A Permit2 PermitSingle (AllowanceTransfer) typed-data payload. It grants the spender a reusable allowance through the canonical Permit2 contract, so it can back repeated charges rather than a single transfer. The payer must pass data to eth_signTypedData_v4 and return the resulting signature. A one-time ERC-20 approval of the Permit2 contract (an erc20_approval payload) is required first if the wallet has not yet approved Permit2 for this asset.
JSON schema
{
"title": "Permit2 Allowance Payload",
"description": "A Permit2 `PermitSingle` (AllowanceTransfer) typed-data payload. It grants the spender a reusable allowance through the canonical Permit2 contract, so it can back repeated charges rather than a single transfer. The payer must pass `data` to `eth_signTypedData_v4` and return the resulting signature. A one-time ERC-20 approval of the Permit2 contract (an `erc20_approval` payload) is required first if the wallet has not yet approved Permit2 for this asset.",
"examples": [
{
"data": {
"domain": {
"chainId": 8453,
"name": "Permit2",
"verifyingContract": "0x000000000022D473030F116dDEE9F6B43aC78BA3"
},
"message": {
"details": {
"amount": "1461501637330902918203684832716283019655932542975",
"expiration": "1798761600",
"nonce": "0",
"token": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
},
"sigDeadline": "1798761600",
"spender": "0x9Fb909eA400c2b8D99Be292DADf07e63B814527c"
},
"primaryType": "PermitSingle",
"types": {
"EIP712Domain": [
{
"name": "name",
"type": "string"
},
{
"name": "chainId",
"type": "uint256"
},
{
"name": "verifyingContract",
"type": "address"
}
],
"PermitDetails": [
{
"name": "token",
"type": "address"
},
{
"name": "amount",
"type": "uint160"
},
{
"name": "expiration",
"type": "uint48"
},
{
"name": "nonce",
"type": "uint48"
}
],
"PermitSingle": [
{
"name": "details",
"type": "PermitDetails"
},
{
"name": "spender",
"type": "address"
},
{
"name": "sigDeadline",
"type": "uint256"
}
]
}
},
"payloadId": "payload_cg4059d2-b068-6ih9-dha1-eee44f157336",
"type": "permit2"
}
],
"type": "object",
"required": [
"data",
"payloadId",
"type"
],
"properties": {
"data": {
"description": "EIP-712 typed data for a Permit2 `PermitSingle`. Pass to `eth_signTypedData_v4`.",
"examples": [
{
"domain": {
"chainId": 8453,
"name": "Permit2",
"verifyingContract": "0x000000000022D473030F116dDEE9F6B43aC78BA3"
},
"message": {
"details": {
"amount": "1461501637330902918203684832716283019655932542975",
"expiration": "1798761600",
"nonce": "0",
"token": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
},
"sigDeadline": "1798761600",
"spender": "0x9Fb909eA400c2b8D99Be292DADf07e63B814527c"
},
"primaryType": "PermitSingle",
"types": {
"EIP712Domain": [
{
"name": "name",
"type": "string"
},
{
"name": "chainId",
"type": "uint256"
},
{
"name": "verifyingContract",
"type": "address"
}
],
"PermitDetails": [
{
"name": "token",
"type": "address"
},
{
"name": "amount",
"type": "uint160"
},
{
"name": "expiration",
"type": "uint48"
},
{
"name": "nonce",
"type": "uint48"
}
],
"PermitSingle": [
{
"name": "details",
"type": "PermitDetails"
},
{
"name": "spender",
"type": "address"
},
{
"name": "sigDeadline",
"type": "uint256"
}
]
}
}
],
"allOf": [
{
"$ref": "#/components/schemas/EIP712Message"
}
]
},
"payloadId": {
"description": "The unique identifier of the payload.",
"examples": [
"payload_cg4059d2-b068-6ih9-dha1-eee44f157336"
],
"type": "string"
},
"type": {
"description": "The payload type.",
"examples": [
"permit2"
],
"type": "string",
"enum": [
"permit2"
]
}
}
}Fields§
§data: Eip712MessageEIP-712 typed data for a Permit2 PermitSingle. Pass to eth_signTypedData_v4.
payload_id: StringThe unique identifier of the payload.
type_: Permit2AllowancePayloadTypeThe payload type.
Implementations§
Source§impl Permit2AllowancePayload
impl Permit2AllowancePayload
pub fn builder() -> Permit2AllowancePayload
Trait Implementations§
Source§impl Clone for Permit2AllowancePayload
impl Clone for Permit2AllowancePayload
Source§impl Debug for Permit2AllowancePayload
impl Debug for Permit2AllowancePayload
Source§impl<'de> Deserialize<'de> for Permit2AllowancePayload
impl<'de> Deserialize<'de> for Permit2AllowancePayload
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl From<&Permit2AllowancePayload> for Permit2AllowancePayload
impl From<&Permit2AllowancePayload> for Permit2AllowancePayload
Source§fn from(value: &Permit2AllowancePayload) -> Self
fn from(value: &Permit2AllowancePayload) -> Self
Converts to this type from the input type.
Source§impl From<Permit2AllowancePayload> for ApprovalPayload
impl From<Permit2AllowancePayload> for ApprovalPayload
Source§fn from(value: Permit2AllowancePayload) -> Self
fn from(value: Permit2AllowancePayload) -> Self
Converts to this type from the input type.
Source§impl From<Permit2AllowancePayload> for RevocationPayload
impl From<Permit2AllowancePayload> for RevocationPayload
Source§fn from(value: Permit2AllowancePayload) -> Self
fn from(value: Permit2AllowancePayload) -> Self
Converts to this type from the input type.
Source§impl From<Permit2AllowancePayload> for Permit2AllowancePayload
impl From<Permit2AllowancePayload> for Permit2AllowancePayload
Source§fn from(value: Permit2AllowancePayload) -> Self
fn from(value: Permit2AllowancePayload) -> Self
Converts to this type from the input type.
Source§impl Serialize for Permit2AllowancePayload
impl Serialize for Permit2AllowancePayload
Source§impl TryFrom<Permit2AllowancePayload> for Permit2AllowancePayload
impl TryFrom<Permit2AllowancePayload> for Permit2AllowancePayload
Source§type Error = ConversionError
type Error = ConversionError
The type returned in the event of a conversion error.
Source§fn try_from(value: Permit2AllowancePayload) -> Result<Self, ConversionError>
fn try_from(value: Permit2AllowancePayload) -> Result<Self, ConversionError>
Performs the conversion.
Auto Trait Implementations§
impl Freeze for Permit2AllowancePayload
impl RefUnwindSafe for Permit2AllowancePayload
impl Send for Permit2AllowancePayload
impl Sync for Permit2AllowancePayload
impl Unpin for Permit2AllowancePayload
impl UnsafeUnpin for Permit2AllowancePayload
impl UnwindSafe for Permit2AllowancePayload
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more