feat: UniswapXFiller skeleton
This commit is contained in:
115
foundry/src/uniswap_x/IStructs.sol
Normal file
115
foundry/src/uniswap_x/IStructs.sol
Normal file
@@ -0,0 +1,115 @@
|
||||
// SPDX-License-Identifier: BUSL-1.1
|
||||
pragma solidity ^0.8.26;
|
||||
|
||||
/// @dev external struct including a generic encoded order and swapper signature
|
||||
/// The order bytes will be parsed and mapped to a ResolvedOrder in the concrete reactor contract
|
||||
|
||||
struct SignedOrder {
|
||||
bytes order;
|
||||
bytes sig;
|
||||
}
|
||||
|
||||
struct OrderInfo {
|
||||
// The address of the reactor that this order is targeting
|
||||
// Note that this must be included in every order so the swapper
|
||||
// signature commits to the specific reactor that they trust to fill their order properly
|
||||
address reactor;
|
||||
// The address of the user which created the order
|
||||
// Note that this must be included so that order hashes are unique by swapper
|
||||
address swapper;
|
||||
// The nonce of the order, allowing for signature replay protection and cancellation
|
||||
uint256 nonce;
|
||||
// The timestamp after which this order is no longer valid
|
||||
uint256 deadline;
|
||||
// Custom validation contract
|
||||
address additionalValidationContract;
|
||||
// Encoded validation params for additionalValidationContract
|
||||
bytes additionalValidationData;
|
||||
}
|
||||
|
||||
/// @dev tokens that need to be sent from the swapper in order to satisfy an order
|
||||
struct InputToken {
|
||||
address token;
|
||||
uint256 amount;
|
||||
// Needed for dutch decaying inputs
|
||||
uint256 maxAmount;
|
||||
}
|
||||
|
||||
/// @dev tokens that need to be received by the recipient in order to satisfy an order
|
||||
struct OutputToken {
|
||||
address token;
|
||||
uint256 amount;
|
||||
address recipient;
|
||||
}
|
||||
/// @dev generic concrete order that specifies exact tokens which need to be sent and received
|
||||
|
||||
struct ResolvedOrder {
|
||||
OrderInfo info;
|
||||
InputToken input;
|
||||
OutputToken[] outputs;
|
||||
bytes sig;
|
||||
bytes32 hash;
|
||||
}
|
||||
|
||||
struct DutchOutput {
|
||||
address token;
|
||||
uint256 startAmount;
|
||||
uint256 endAmount;
|
||||
address recipient;
|
||||
}
|
||||
|
||||
struct DutchInput {
|
||||
address token;
|
||||
uint256 startAmount;
|
||||
uint256 endAmount;
|
||||
}
|
||||
|
||||
struct ExclusiveDutchOrder {
|
||||
OrderInfo info;
|
||||
uint256 decayStartTime;
|
||||
uint256 decayEndTime;
|
||||
address exclusiveFiller;
|
||||
uint256 exclusivityOverrideBps;
|
||||
DutchInput input;
|
||||
DutchOutput[] outputs;
|
||||
}
|
||||
|
||||
struct DutchOrder {
|
||||
OrderInfo info;
|
||||
uint256 decayStartTime;
|
||||
uint256 decayEndTime;
|
||||
address exclusiveFiller;
|
||||
uint256 exclusivityOverrideBps;
|
||||
DutchInput input;
|
||||
DutchOutput[] outputs;
|
||||
}
|
||||
|
||||
struct CosignerData {
|
||||
// The time at which the DutchOutputs start decaying
|
||||
uint256 decayStartTime;
|
||||
// The time at which price becomes static
|
||||
uint256 decayEndTime;
|
||||
// The address who has exclusive rights to the order until decayStartTime
|
||||
address exclusiveFiller;
|
||||
// The amount in bps that a non-exclusive filler needs to improve the outputs by to be able to fill the order
|
||||
uint256 exclusivityOverrideBps;
|
||||
// The tokens that the swapper will provide when settling the order
|
||||
uint256 inputAmount;
|
||||
// The tokens that must be received to satisfy the order
|
||||
uint256[] outputAmounts;
|
||||
}
|
||||
|
||||
struct V2DutchOrder {
|
||||
// generic order information
|
||||
OrderInfo info;
|
||||
// The address which must cosign the full order
|
||||
address cosigner;
|
||||
// The tokens that the swapper will provide when settling the order
|
||||
DutchInput baseInput;
|
||||
// The tokens that must be received to satisfy the order
|
||||
DutchOutput[] baseOutputs;
|
||||
// signed over by the cosigner
|
||||
CosignerData cosignerData;
|
||||
// signature from the cosigner over (orderHash || cosignerData)
|
||||
bytes cosignature;
|
||||
}
|
||||
Reference in New Issue
Block a user