25 lines
1.1 KiB
Solidity
25 lines
1.1 KiB
Solidity
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
pragma solidity ^0.8.24;
|
|
|
|
interface IUniversalRouter {
|
|
/// @notice Thrown when a required command has failed
|
|
error ExecutionFailed(uint256 commandIndex, bytes message);
|
|
|
|
/// @notice Thrown when attempting to send ETH directly to the contract
|
|
error ETHNotAccepted();
|
|
|
|
/// @notice Thrown when executing commands with an expired deadline
|
|
error TransactionDeadlinePassed();
|
|
|
|
/// @notice Thrown when attempting to execute commands and an incorrect number of inputs are provided
|
|
error LengthMismatch();
|
|
|
|
// @notice Thrown when an address that isn't WETH tries to send ETH to the router without calldata
|
|
error InvalidEthSender();
|
|
|
|
/// @notice Executes encoded commands along with provided inputs. Reverts if deadline has expired.
|
|
/// @param commands A set of concatenated commands, each 1 byte in length
|
|
/// @param inputs An array of byte strings containing abi encoded inputs for each command
|
|
/// @param deadline The deadline by which the transaction must be executed
|
|
function execute(bytes calldata commands, bytes[] calldata inputs, uint256 deadline) external payable;
|
|
} |