pragma solidity ^0.5.16; interface IFuturesMarketBaseTypes { /* ========== TYPES ========== */ enum Status { Ok, InvalidPrice, PriceOutOfBounds, CanLiquidate, CannotLiquidate, MaxMarketSizeExceeded, MaxLeverageExceeded, InsufficientMargin, NotPermitted, NilOrder, NoPositionOpen, PriceTooVolatile } // If margin/size are positive, the position is long; if negative then it is short. struct Position { uint64 id; uint64 lastFundingIndex; uint128 margin; uint128 lastPrice; int128 size; } // next-price order storage struct NextPriceOrder { int128 sizeDelta; // difference in position to pass to modifyPosition uint128 targetRoundId; // price oracle roundId using which price this order needs to exucted uint128 commitDeposit; // the commitDeposit paid upon submitting that needs to be refunded if order succeeds uint128 keeperDeposit; // the keeperDeposit paid upon submitting that needs to be paid / refunded on tx confirmation bytes32 trackingCode; // tracking code to emit on execution for volume source fee sharing } }