This repository has been archived by the owner on Sep 27, 2022. It is now read-only.
/
IMatchingMarketV1.sol
228 lines (185 loc) · 4.14 KB
/
IMatchingMarketV1.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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
pragma solidity 0.4.24;
pragma experimental "v0.5.0";
import { ISimpleMarketV1 } from "./ISimpleMarketV1.sol";
contract IMatchingMarketV1 is ISimpleMarketV1 {
// ============ Structs ================
struct sortInfo {
uint256 next; //points to id of next higher offer
uint256 prev; //points to id of previous lower offer
uint256 delb; //the blocknumber where this entry was marked for delete
}
// ============ Storage ================
uint64 public close_time;
bool public stopped;
bool public buyEnabled;
bool public matchingEnabled;
mapping(uint256 => sortInfo) public _rank;
mapping(address => mapping(address => uint)) public _best;
mapping(address => mapping(address => uint)) public _span;
mapping(address => uint) public _dust;
mapping(uint256 => uint) public _near;
mapping(bytes32 => bool) public _menu;
// ============ Functions ================
function make(
address pay_gem,
address buy_gem,
uint128 pay_amt,
uint128 buy_amt
)
public
returns (bytes32);
function take(
bytes32 id,
uint128 maxTakeAmount
)
public;
function kill(
bytes32 id
)
public;
function offer(
uint256 pay_amt,
address pay_gem,
uint256 buy_amt,
address buy_gem
)
public
returns (uint);
function offer(
uint256 pay_amt,
address pay_gem,
uint256 buy_amt,
address buy_gem,
uint256 pos
)
public
returns (uint);
function offer(
uint256 pay_amt,
address pay_gem,
uint256 buy_amt,
address buy_gem,
uint256 pos,
bool rounding
)
public
returns (uint);
function buy(
uint256 id,
uint256 amount
)
public
returns (bool);
function cancel(
uint256 id
)
public
returns (bool success);
function insert(
uint256 id,
uint256 pos
)
public
returns (bool);
function del_rank(
uint256 id
)
public
returns (bool);
function sellAllAmount(
address pay_gem,
uint256 pay_amt,
address buy_gem,
uint256 min_fill_amount
)
public
returns (uint256 fill_amt);
function buyAllAmount(
address buy_gem,
uint256 buy_amt,
address pay_gem,
uint256 max_fill_amount
)
public
returns (uint256 fill_amt);
// ============ Constant Functions ================
function isTokenPairWhitelisted(
address baseToken,
address quoteToken
)
public
view
returns (bool);
function getMinSell(
address pay_gem
)
public
view
returns (uint);
function getBestOffer(
address sell_gem,
address buy_gem
)
public
view
returns(uint);
function getWorseOffer(
uint256 id
)
public
view
returns(uint);
function getBetterOffer(
uint256 id
)
public
view
returns(uint);
function getOfferCount(
address sell_gem,
address buy_gem
)
public
view
returns(uint);
function getFirstUnsortedOffer()
public
view
returns(uint);
function getNextUnsortedOffer(
uint256 id
)
public
view
returns(uint);
function isOfferSorted(
uint256 id
)
public
view
returns(bool);
function getBuyAmount(
address buy_gem,
address pay_gem,
uint256 pay_amt
)
public
view
returns (uint256 fill_amt);
function getPayAmount(
address pay_gem,
address buy_gem,
uint256 buy_amt
)
public
view
returns (uint256 fill_amt);
function isClosed()
public
view
returns (bool closed);
function getTime()
public
view
returns (uint64);
}