Skip to content

Instantly share code, notes, and snippets.

@owenThurm
Created May 30, 2023 15:14
Show Gist options
  • Save owenThurm/0c31c2baaace67e5be39c64412546678 to your computer and use it in GitHub Desktop.
Save owenThurm/0c31c2baaace67e5be39c64412546678 to your computer and use it in GitHub Desktop.
Decode CreateOrderParams
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
import "@openzeppelin/contracts/security/ReentrancyGuard.sol";
import "../src/exchange/DepositHandler.sol";
import "../src/exchange/WithdrawalHandler.sol";
import "../src/exchange/OrderHandler.sol";
import "../src/utils/PayableMulticall.sol";
import "../src/utils/AccountUtils.sol";
import "forge-std/console.sol";
struct CreateOrderParams {
CreateOrderParamsAddresses addresses;
CreateOrderParamsNumbers numbers;
Order.OrderType orderType;
Order.DecreasePositionSwapType decreasePositionSwapType;
bool isLong;
bool shouldUnwrapNativeToken;
bytes32 referralCode;
}
struct CreateOrderParamsAddresses {
address receiver;
address callbackContract;
address uiFeeReceiver;
address market;
address initialCollateralToken;
address[] swapPath;
}
struct CreateOrderParamsNumbers {
uint256 sizeDeltaUsd;
uint256 initialCollateralDeltaAmount;
uint256 triggerPrice;
uint256 acceptablePrice;
uint256 executionFee;
uint256 callbackGasLimit;
uint256 minOutputAmount;
}
contract EncodingTest {
address[] testAddresses;
function testEncode() public {
bytes memory encodedBytes = hex"000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000b1a02fac5914898f0c800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cdc1e5f9d480000000000000000000000000000000000000000000000000001c6bf526340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cb085d52bff5a0e380b3be7906ae76369d8babe300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b7c34340b8805ec5a767050658cfa389c49304ca0000000000000000000000001d308089a2d1ced3f1ce36b1fcaf815b07217be300000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000";
CreateOrderParams memory params = abi.decode(encodedBytes, (CreateOrderParams));
console.log("receiver: ", params.addresses.receiver);
console.log("callbackContract: ", params.addresses.callbackContract);
console.log("uiFeeReceiver: ", params.addresses.uiFeeReceiver);
console.log("market: ", params.addresses.market);
console.log("initialCollateralToken", params.addresses.initialCollateralToken);
console.log("swapPath length: ", params.addresses.swapPath.length);
console.log("sizeDeltaUsd: ", params.numbers.sizeDeltaUsd);
console.log("initialCollateralDeltaAmount: ", params.numbers.initialCollateralDeltaAmount);
console.log("triggerPrice: ", params.numbers.triggerPrice);
console.log("acceptablePrice: ", params.numbers.acceptablePrice);
console.log("executionFee: ", params.numbers.executionFee);
console.log("callbackGasLimit: ", params.numbers.callbackGasLimit);
console.log("minOutputAmount: ", params.numbers.minOutputAmount);
console.log("orderType: ", uint(params.orderType));
console.log("decreasePositionSwapType: ", uint(params.decreasePositionSwapType));
console.log("isLong: ", params.isLong);
console.log("shouldUnwrapNativeToken: ", params.shouldUnwrapNativeToken);
console.log("referralCode: ");
console.logBytes32(params.referralCode);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment