-
Notifications
You must be signed in to change notification settings - Fork 604
/
Copy pathIFuturesMarket.sol
102 lines (62 loc) · 3.22 KB
/
IFuturesMarket.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
pragma solidity ^0.5.16;
import "./IFuturesMarketBaseTypes.sol";
interface IFuturesMarket {
/* ========== FUNCTION INTERFACE ========== */
/* ---------- Market Details ---------- */
function marketKey() external view returns (bytes32 key);
function baseAsset() external view returns (bytes32 key);
function marketSize() external view returns (uint128 size);
function marketSkew() external view returns (int128 skew);
function fundingLastRecomputed() external view returns (uint32 timestamp);
function fundingSequence(uint index) external view returns (int128 netFunding);
function positions(address account)
external
view
returns (
uint64 id,
uint64 fundingIndex,
uint128 margin,
uint128 lastPrice,
int128 size
);
function assetPrice() external view returns (uint price, bool invalid);
function marketSizes() external view returns (uint long, uint short);
function marketDebt() external view returns (uint debt, bool isInvalid);
function currentFundingRate() external view returns (int fundingRate);
function unrecordedFunding() external view returns (int funding, bool invalid);
function fundingSequenceLength() external view returns (uint length);
/* ---------- Position Details ---------- */
function notionalValue(address account) external view returns (int value, bool invalid);
function profitLoss(address account) external view returns (int pnl, bool invalid);
function accruedFunding(address account) external view returns (int funding, bool invalid);
function remainingMargin(address account) external view returns (uint marginRemaining, bool invalid);
function accessibleMargin(address account) external view returns (uint marginAccessible, bool invalid);
function liquidationPrice(address account) external view returns (uint price, bool invalid);
function liquidationFee(address account) external view returns (uint);
function canLiquidate(address account) external view returns (bool);
function orderFee(int sizeDelta) external view returns (uint fee, bool invalid);
function postTradeDetails(int sizeDelta, address sender)
external
view
returns (
uint margin,
int size,
uint price,
uint liqPrice,
uint fee,
IFuturesMarketBaseTypes.Status status
);
/* ---------- Market Operations ---------- */
function recomputeFunding() external returns (uint lastIndex);
function transferMargin(int marginDelta) external;
function withdrawAllMargin() external;
function modifyPosition(int sizeDelta) external;
function modifyPositionWithTracking(int sizeDelta, bytes32 trackingCode) external;
function submitNextPriceOrder(int sizeDelta) external;
function submitNextPriceOrderWithTracking(int sizeDelta, bytes32 trackingCode) external;
function cancelNextPriceOrder(address account) external;
function executeNextPriceOrder(address account) external;
function closePosition() external;
function closePositionWithTracking(bytes32 trackingCode) external;
function liquidatePosition(address account) external;
}