dexorder
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
pragma solidity >=0.7.5;
|
||||
|
||||
/// @title Self Permit
|
||||
/// @notice Functionality to call permit on any EIP-2612-compliant token for use in the route
|
||||
interface ISelfPermit {
|
||||
/// @notice Permits this contract to spend a given token from `msg.sender`
|
||||
/// @dev The `owner` is always msg.sender and the `spender` is always address(this).
|
||||
/// @param token The address of the token spent
|
||||
/// @param value The amount that can be spent of token
|
||||
/// @param deadline A timestamp, the current blocktime must be less than or equal to this timestamp
|
||||
/// @param v Must produce valid secp256k1 signature from the holder along with `r` and `s`
|
||||
/// @param r Must produce valid secp256k1 signature from the holder along with `v` and `s`
|
||||
/// @param s Must produce valid secp256k1 signature from the holder along with `r` and `v`
|
||||
function selfPermit(
|
||||
address token,
|
||||
uint256 value,
|
||||
uint256 deadline,
|
||||
uint8 v,
|
||||
bytes32 r,
|
||||
bytes32 s
|
||||
) external payable;
|
||||
|
||||
/// @notice Permits this contract to spend a given token from `msg.sender`
|
||||
/// @dev The `owner` is always msg.sender and the `spender` is always address(this).
|
||||
/// Can be used instead of #selfPermit to prevent calls from failing due to a frontrun of a call to #selfPermit
|
||||
/// @param token The address of the token spent
|
||||
/// @param value The amount that can be spent of token
|
||||
/// @param deadline A timestamp, the current blocktime must be less than or equal to this timestamp
|
||||
/// @param v Must produce valid secp256k1 signature from the holder along with `r` and `s`
|
||||
/// @param r Must produce valid secp256k1 signature from the holder along with `v` and `s`
|
||||
/// @param s Must produce valid secp256k1 signature from the holder along with `r` and `v`
|
||||
function selfPermitIfNecessary(
|
||||
address token,
|
||||
uint256 value,
|
||||
uint256 deadline,
|
||||
uint8 v,
|
||||
bytes32 r,
|
||||
bytes32 s
|
||||
) external payable;
|
||||
|
||||
/// @notice Permits this contract to spend the sender's tokens for permit signatures that have the `allowed` parameter
|
||||
/// @dev The `owner` is always msg.sender and the `spender` is always address(this)
|
||||
/// @param token The address of the token spent
|
||||
/// @param nonce The current nonce of the owner
|
||||
/// @param expiry The timestamp at which the permit is no longer valid
|
||||
/// @param v Must produce valid secp256k1 signature from the holder along with `r` and `s`
|
||||
/// @param r Must produce valid secp256k1 signature from the holder along with `v` and `s`
|
||||
/// @param s Must produce valid secp256k1 signature from the holder along with `r` and `v`
|
||||
function selfPermitAllowed(
|
||||
address token,
|
||||
uint256 nonce,
|
||||
uint256 expiry,
|
||||
uint8 v,
|
||||
bytes32 r,
|
||||
bytes32 s
|
||||
) external payable;
|
||||
|
||||
/// @notice Permits this contract to spend the sender's tokens for permit signatures that have the `allowed` parameter
|
||||
/// @dev The `owner` is always msg.sender and the `spender` is always address(this)
|
||||
/// Can be used instead of #selfPermitAllowed to prevent calls from failing due to a frontrun of a call to #selfPermitAllowed.
|
||||
/// @param token The address of the token spent
|
||||
/// @param nonce The current nonce of the owner
|
||||
/// @param expiry The timestamp at which the permit is no longer valid
|
||||
/// @param v Must produce valid secp256k1 signature from the holder along with `r` and `s`
|
||||
/// @param r Must produce valid secp256k1 signature from the holder along with `v` and `s`
|
||||
/// @param s Must produce valid secp256k1 signature from the holder along with `r` and `v`
|
||||
function selfPermitAllowedIfNecessary(
|
||||
address token,
|
||||
uint256 nonce,
|
||||
uint256 expiry,
|
||||
uint8 v,
|
||||
bytes32 r,
|
||||
bytes32 s
|
||||
) external payable;
|
||||
}
|
||||
Reference in New Issue
Block a user