nado_sdk/nado_utils/bindings/
endpoint.rs1use alloy::sol;
2
3sol! {
4 #![sol(all_derives)]
5 #[sol(rpc)]
6 #[allow(missing_docs, clippy::too_many_arguments)]
7 contract Endpoint {
8 #[derive(serde::Serialize, serde::Deserialize)]
9 struct Order {
10 bytes32 sender;
11 #[serde(serialize_with = "crate::serialize_utils::serialize_i128", deserialize_with = "crate::serialize_utils::deserialize_i128")]
12 int128 price_x18;
13 #[serde(serialize_with = "crate::serialize_utils::serialize_i128", deserialize_with = "crate::serialize_utils::deserialize_i128")]
14 int128 amount;
15 uint64 expiration;
16 uint64 nonce;
17 #[serde(serialize_with = "crate::serialize_utils::serialize_u128", deserialize_with = "crate::serialize_utils::deserialize_u128")]
18 uint128 appendix;
19 }
20
21 #[derive(serde::Serialize, serde::Deserialize)]
22 struct SignedOrder {
23 Order order;
24 bytes signature;
25 }
26
27 #[derive(serde::Serialize, serde::Deserialize)]
28 struct MatchOrders {
29 uint32 product_id;
30 SignedOrder taker;
31 SignedOrder maker;
32 }
33
34 #[derive(serde::Serialize, serde::Deserialize)]
35 struct MatchOrdersWithAmount {
36 MatchOrders match_orders;
37 #[serde(serialize_with = "crate::serialize_utils::serialize_i128", deserialize_with = "crate::serialize_utils::deserialize_i128")]
38 int128 taker_amount_delta;
39 }
40
41 #[derive(serde::Serialize, serde::Deserialize)]
42 struct Times {
43 #[serde(serialize_with = "crate::serialize_utils::serialize_u128", deserialize_with = "crate::serialize_utils::deserialize_u128")]
44 uint128 perp_time;
45 #[serde(serialize_with = "crate::serialize_utils::serialize_u128", deserialize_with = "crate::serialize_utils::deserialize_u128")]
46 uint128 spot_time;
47 }
48
49 #[derive(serde::Serialize, serde::Deserialize)]
50 struct Cancellation {
51 bytes32 sender;
52 uint32[] product_ids;
53 bytes32[] digests;
54 uint64 nonce;
55 }
56
57 #[derive(serde::Serialize, serde::Deserialize)]
58 struct CancellationProducts {
59 bytes32 sender;
60 uint32[] product_ids;
61 uint64 nonce;
62 }
63
64 struct ChainlinkFullReport {
65 bytes32[3] report_context;
66 bytes report_blob;
67 bytes32[] raw_rs;
68 bytes32[] raw_ss;
69 bytes32 raw_vs;
70 }
71
72 struct ChainlinkReportBlob {
73 bytes32 feed_id;
74 uint32 valid_from_timestamp;
75 uint32 observations_timestamp;
76 uint192 native_fee;
77 uint192 link_fee;
78 uint64 expires_at;
79 int192 price;
80 }
81
82 #[derive(serde::Serialize, serde::Deserialize)]
83 struct SignedCancellation {
84 Cancellation cancellation;
85 bytes signature;
86 }
87
88 #[derive(serde::Serialize, serde::Deserialize)]
89 struct SignedCancellationProducts {
90 CancellationProducts cancellation_products;
91 bytes signature;
92 }
93
94 #[derive(serde::Serialize, serde::Deserialize)]
95 struct AddNlpPool {
96 address owner;
97 #[serde(serialize_with = "crate::serialize_utils::serialize_u128", deserialize_with = "crate::serialize_utils::deserialize_u128")]
98 uint128 balance_weight_x18;
99 }
100
101 #[derive(serde::Serialize, serde::Deserialize)]
102 struct AssertCode {
103 string[] contract_names;
104 bytes32[] code_hashes;
105 #[serde(serialize_with = "crate::bindings::serde_helpers::serialize_u256", deserialize_with = "crate::bindings::serde_helpers::deserialize_u256")]
106 uint256 spreads;
107 }
108
109 #[derive(serde::Serialize, serde::Deserialize)]
110 struct AssertProduct {
111 uint32 product_id;
112 bool is_spot;
113 uint32 quote_id;
114 #[serde(serialize_with = "crate::serialize_utils::serialize_i128", deserialize_with = "crate::serialize_utils::deserialize_i128")]
115 int128 size_increment;
116 #[serde(serialize_with = "crate::serialize_utils::serialize_i128", deserialize_with = "crate::serialize_utils::deserialize_i128")]
117 int128 min_size;
118 bytes32 others_hash;
119 }
120
121 #[derive(serde::Serialize, serde::Deserialize)]
122 struct BurnNlp {
123 bytes32 sender;
124 #[serde(serialize_with = "crate::serialize_utils::serialize_u128", deserialize_with = "crate::serialize_utils::deserialize_u128")]
125 uint128 nlp_amount;
126 uint64 nonce;
127 }
128
129 #[derive(serde::Serialize, serde::Deserialize)]
130 struct ClaimBuilderFee {
131 bytes32 sender;
132 uint32 builder_id;
133 }
134
135 #[derive(serde::Serialize, serde::Deserialize)]
136 struct CloseIsolatedSubaccount {
137 bytes32 subaccount;
138 }
139
140 #[derive(serde::Serialize, serde::Deserialize)]
141 struct CompactSignature {
142 bytes32 r;
143 bytes32 vs;
144 }
145
146 #[derive(serde::Serialize, serde::Deserialize)]
147 struct CreateIsolatedSubaccount {
148 Order order;
149 uint32 product_id;
150 bytes signature;
151 }
152
153 #[derive(serde::Serialize, serde::Deserialize)]
154 struct DeleteNlpPool {
155 uint64 pool_id;
156 }
157
158 #[derive(serde::Serialize, serde::Deserialize)]
159 struct ForceRebalanceNlpPool {
160 #[serde(serialize_with = "crate::serialize_utils::serialize_vec_i128", deserialize_with = "crate::serialize_utils::deserialize_vec_i128")]
161 int128[] nlp_pool_rebalance_x18;
162 }
163
164 #[derive(serde::Serialize, serde::Deserialize)]
165 struct NlpProfitShare {
166 uint64 pool_id;
167 bytes32 recipient;
168 #[serde(serialize_with = "crate::serialize_utils::serialize_u128", deserialize_with = "crate::serialize_utils::deserialize_u128")]
169 uint128 amount;
170 }
171
172 #[derive(serde::Serialize, serde::Deserialize)]
173 struct DelistProduct {
174 uint32 product_id;
175 #[serde(serialize_with = "crate::serialize_utils::serialize_i128", deserialize_with = "crate::serialize_utils::deserialize_i128")]
176 int128 price_x18;
177 bytes32[] subaccounts;
178 }
179
180 #[derive(serde::Serialize, serde::Deserialize)]
181 struct DepositCollateral {
182 bytes32 sender;
183 uint32 product_id;
184 #[serde(serialize_with = "crate::serialize_utils::serialize_u128", deserialize_with = "crate::serialize_utils::deserialize_u128")]
185 uint128 amount;
186 }
187
188 #[derive(serde::Serialize, serde::Deserialize)]
189 struct DepositInsurance {
190 #[serde(serialize_with = "crate::serialize_utils::serialize_u128", deserialize_with = "crate::serialize_utils::deserialize_u128")]
191 uint128 amount;
192 }
193
194 #[derive(serde::Serialize, serde::Deserialize)]
195 struct LinkSigner {
196 bytes32 sender;
197 bytes32 signer;
198 uint64 nonce;
199 }
200
201 #[derive(serde::Serialize, serde::Deserialize)]
202 struct LiquidateSubaccount {
203 bytes32 sender;
204 bytes32 liquidatee;
205 uint32 product_id;
206 bool is_encoded_spread;
207 #[serde(serialize_with = "crate::serialize_utils::serialize_i128", deserialize_with = "crate::serialize_utils::deserialize_i128")]
208 int128 amount;
209 uint64 nonce;
210 }
211
212 #[derive(serde::Serialize, serde::Deserialize)]
213 struct ManualAssert {
214 #[serde(serialize_with = "crate::serialize_utils::serialize_i128", deserialize_with = "crate::serialize_utils::deserialize_i128")]
215 int128 insurance;
216 bytes[] spot_states;
217 bytes[] perp_states;
218 }
219
220 #[derive(serde::Serialize, serde::Deserialize)]
221 struct MintNlp {
222 bytes32 sender;
223 #[serde(serialize_with = "crate::serialize_utils::serialize_u128", deserialize_with = "crate::serialize_utils::deserialize_u128")]
224 uint128 quote_amount;
225 uint64 nonce;
226 }
227
228 #[derive(serde::Serialize, serde::Deserialize)]
229 struct NlpPool {
230 uint64 pool_id;
231 bytes32 subaccount;
232 address owner;
233 #[serde(serialize_with = "crate::serialize_utils::serialize_u128", deserialize_with = "crate::serialize_utils::deserialize_u128")]
234 uint128 balance_weight_x18;
235 }
236
237 #[derive(serde::Serialize, serde::Deserialize)]
238 struct PerpTick {
239 #[serde(serialize_with = "crate::serialize_utils::serialize_u128", deserialize_with = "crate::serialize_utils::deserialize_u128")]
240 uint128 time;
241 #[serde(serialize_with = "crate::serialize_utils::serialize_vec_i128", deserialize_with = "crate::serialize_utils::deserialize_vec_i128")]
242 int128[] avg_price_diffs;
243 }
244
245 #[derive(serde::Serialize, serde::Deserialize)]
246 struct RebalanceXWithdraw {
247 uint32 product_id;
248 #[serde(serialize_with = "crate::serialize_utils::serialize_u128", deserialize_with = "crate::serialize_utils::deserialize_u128")]
249 uint128 amount;
250 address send_to;
251 }
252
253 struct Rebate {
254 bytes32[] subaccounts;
255 int128[] amounts;
256 }
257
258 #[derive(serde::Serialize, serde::Deserialize)]
259 struct SettlePnl {
260 bytes32[] subaccounts;
261 #[serde(serialize_with = "crate::bindings::serde_helpers::serialize_vec_u256_hex", deserialize_with = "crate::bindings::serde_helpers::deserialize_vec_u256_hex")]
262 uint256[] product_ids;
263 }
264
265 #[derive(serde::Serialize, serde::Deserialize)]
266 struct SignedBurnNlp {
267 BurnNlp tx;
268 bytes signature;
269 #[serde(serialize_with = "crate::serialize_utils::serialize_i128", deserialize_with = "crate::serialize_utils::deserialize_i128")]
270 int128 oracle_price_x18;
271 #[serde(serialize_with = "crate::serialize_utils::serialize_vec_i128", deserialize_with = "crate::serialize_utils::deserialize_vec_i128")]
272 int128[] nlp_pool_rebalance_x18;
273 }
274
275 #[derive(serde::Serialize, serde::Deserialize)]
276 struct SignedLinkSigner {
277 LinkSigner tx;
278 bytes signature;
279 }
280
281 #[derive(serde::Serialize, serde::Deserialize)]
282 struct SignedLiquidateSubaccount {
283 LiquidateSubaccount tx;
284 bytes signature;
285 }
286
287 #[derive(serde::Serialize, serde::Deserialize)]
288 struct SignedMintNlp {
289 MintNlp tx;
290 bytes signature;
291 #[serde(serialize_with = "crate::serialize_utils::serialize_i128", deserialize_with = "crate::serialize_utils::deserialize_i128")]
292 int128 oracle_price_x18;
293 #[serde(serialize_with = "crate::serialize_utils::serialize_vec_i128", deserialize_with = "crate::serialize_utils::deserialize_vec_i128")]
294 int128[] nlp_pool_rebalance_x18;
295 }
296
297 #[derive(serde::Serialize, serde::Deserialize)]
298 struct SignedTransferQuote {
299 TransferQuote tx;
300 bytes signature;
301 }
302
303 #[derive(serde::Serialize, serde::Deserialize)]
304 struct SignedWithdrawCollateral {
305 WithdrawCollateral tx;
306 bytes signature;
307 }
308
309 #[derive(serde::Serialize, serde::Deserialize)]
310 struct SignedWithdrawCollateralV2 {
311 WithdrawCollateralV2 tx;
312 CompactSignature signature;
313 #[serde(serialize_with = "crate::serialize_utils::serialize_i128", deserialize_with = "crate::serialize_utils::deserialize_i128")]
314 int128 fee_x18;
315 }
316
317 #[derive(serde::Serialize, serde::Deserialize)]
318 struct SlowModeConfig {
319 uint64 timeout;
320 uint64 tx_count;
321 uint64 tx_up_to;
322 }
323
324 #[derive(serde::Serialize, serde::Deserialize)]
325 struct SlowModeTx {
326 uint64 executable_at;
327 address sender;
328 bytes tx;
329 }
330
331 #[derive(serde::Serialize, serde::Deserialize)]
332 struct SpotTick {
333 #[serde(serialize_with = "crate::serialize_utils::serialize_u128", deserialize_with = "crate::serialize_utils::deserialize_u128")]
334 uint128 time;
335 }
336
337 #[derive(serde::Serialize, serde::Deserialize)]
338 struct TransferQuote {
339 bytes32 sender;
340 bytes32 recipient;
341 #[serde(serialize_with = "crate::serialize_utils::serialize_u128", deserialize_with = "crate::serialize_utils::deserialize_u128")]
342 uint128 amount;
343 uint64 nonce;
344 }
345
346 #[derive(serde::Serialize, serde::Deserialize)]
347 struct UpdateBuilder {
348 uint32 builder_id;
349 address owner;
350 uint32 default_fee_tier;
351 #[serde(serialize_with = "crate::serialize_utils::serialize_i128", deserialize_with = "crate::serialize_utils::deserialize_i128")]
352 int128 lowest_fee_rate;
353 #[serde(serialize_with = "crate::serialize_utils::serialize_i128", deserialize_with = "crate::serialize_utils::deserialize_i128")]
354 int128 highest_fee_rate;
355 }
356
357 #[derive(serde::Serialize, serde::Deserialize)]
358 struct UpdateFeeTier {
359 address user;
360 uint32 new_tier;
361 }
362
363 #[derive(serde::Serialize, serde::Deserialize)]
364 struct UpdateNlpPool {
365 uint64 pool_id;
366 address owner;
367 #[serde(serialize_with = "crate::serialize_utils::serialize_u128", deserialize_with = "crate::serialize_utils::deserialize_u128")]
368 uint128 balance_weight_x18;
369 }
370
371 #[derive(serde::Serialize, serde::Deserialize)]
372 struct UpdatePrice {
373 uint32 product_id;
374 #[serde(serialize_with = "crate::serialize_utils::serialize_i128", deserialize_with = "crate::serialize_utils::deserialize_i128")]
375 int128 price_x18;
376 }
377
378 #[derive(serde::Serialize, serde::Deserialize)]
379 struct UpdateTierFeeRates {
380 uint32 tier;
381 uint32 product_id;
382 #[serde(serialize_with = "crate::serialize_utils::serialize_i128", deserialize_with = "crate::serialize_utils::deserialize_i128")]
383 int128 maker_rate_x18;
384 #[serde(serialize_with = "crate::serialize_utils::serialize_i128", deserialize_with = "crate::serialize_utils::deserialize_i128")]
385 int128 taker_rate_x18;
386 }
387
388 #[derive(serde::Serialize, serde::Deserialize)]
389 struct WithdrawCollateral {
390 bytes32 sender;
391 uint32 product_id;
392 #[serde(serialize_with = "crate::serialize_utils::serialize_u128", deserialize_with = "crate::serialize_utils::deserialize_u128")]
393 uint128 amount;
394 uint64 nonce;
395 }
396
397 #[derive(serde::Serialize, serde::Deserialize)]
398 struct WithdrawCollateralV2 {
399 bytes32 sender;
400 uint32 product_id;
401 #[serde(serialize_with = "crate::serialize_utils::serialize_u128", deserialize_with = "crate::serialize_utils::deserialize_u128")]
402 uint128 amount;
403 uint64 nonce;
404 address send_to;
405 #[serde(serialize_with = "crate::serialize_utils::serialize_u128", deserialize_with = "crate::serialize_utils::deserialize_u128")]
406 uint128 appendix;
407 }
408
409 #[derive(serde::Serialize, serde::Deserialize)]
410 struct WithdrawInsurance {
411 #[serde(serialize_with = "crate::serialize_utils::serialize_u128", deserialize_with = "crate::serialize_utils::deserialize_u128")]
412 uint128 amount;
413 address send_to;
414 }
415
416 function addNlpPool(AddNlpPool p) external pure returns (AddNlpPool);
417 function assertCode(AssertCode p) external pure returns (AssertCode);
418 function assertProduct(AssertProduct p) external pure returns (AssertProduct);
419 function chainlinkFullReport(ChainlinkFullReport p) external pure returns (ChainlinkFullReport);
420 function chainlinkReportBlob(ChainlinkReportBlob p) external pure returns (ChainlinkReportBlob);
421 function checkSlowModeTxInner(address sender, bytes transaction) external pure returns (bytes32);
422 function checkSlowModeTxLinkSigner() external view returns (bytes32);
423 function claimBuilderFee(ClaimBuilderFee p) external pure returns (ClaimBuilderFee);
424 function clearinghouse() external view returns (address);
425 function closeIsolatedSubaccount(CloseIsolatedSubaccount p) external pure returns (CloseIsolatedSubaccount);
426 function createIsolatedSubaccount(CreateIsolatedSubaccount p) external pure returns (CreateIsolatedSubaccount);
427 function deleteNlpPool(DeleteNlpPool p) external pure returns (DeleteNlpPool);
428 function depositCollateral(bytes12 subaccount_name, uint32 product_id, uint128 amount) external;
429 function depositCollateralWithReferral(bytes32 subaccount, uint32 product_id, uint128 amount, string referral) external;
430 function executeSlowModeTransaction() external;
431 function getEndpointTx() external view returns (address);
432 function getHealthCheckFee() external pure returns (int128);
433 function getLinkedSigner(bytes32 subaccount) external view returns (address);
434 function getLiquidationFee() external pure returns (int128);
435 function getNlpPools() external view returns (NlpPool[]);
436 function getNonce(address sender) external view returns (uint64);
437 function getNumSubaccounts() external view returns (uint64);
438 function getOffchainExchange() external view returns (address);
439 function getPriceX18(uint32 product_id) external returns (int128 price_x18);
440 function getSequencer() external view returns (address);
441 function getSequencerFee(uint32 product_id) external view returns (int128);
442 function getSlots() external pure returns (uint256 n_submissions_slot);
443 function getSlowModeTx(uint64 idx) external view returns (SlowModeTx, uint64, uint64);
444 function getSubaccountById(uint64 subaccount_id) external view returns (bytes32);
445 function getSubaccountId(bytes32 subaccount) external view returns (uint64);
446 function getTakerSequencerFee() external pure returns (int128);
447 function getTime() external view returns (uint128);
448 function getTimes() external view returns (Times);
449 function incrementSubmissions() external returns (uint64);
450 function initialize(address _sanctions, address _sequencer, address _offchain_exchange, address _clearinghouse, address _verifier, address _endpoint_tx) external;
451 function liquidationStart(bytes transaction) external;
452 function manualAssert(ManualAssert p) external pure returns (ManualAssert);
453 function matchOrders(MatchOrders p) external pure returns (MatchOrders);
454 function matchOrdersWithAmount(MatchOrdersWithAmount p) external pure returns (MatchOrdersWithAmount);
455 function nSubmissions() external view returns (uint64);
456 function nlpPools(uint256) external view returns (uint64 pool_id, bytes32 subaccount, address owner, uint128 balance_weight_x18);
457 function owner() external view returns (address);
458 function perpTick(PerpTick p) external pure returns (PerpTick);
459 function processSlowModeTransaction(address sender, bytes transaction) external;
460 function processSlowModeTransactionImpl(address sender, bytes transaction) external;
461 function processTransactionImpl(bytes transaction) external;
462 function rebalanceXWithdraw(RebalanceXWithdraw p) external pure returns (RebalanceXWithdraw);
463 function rebate(Rebate p) external pure returns (Rebate);
464 function referralCodes(address) external view returns (string);
465 function renounceOwnership() external;
466 function resyncSlowModeTxs() external;
467 function setInitialPrice(uint32 product_id, int128 initial_price_x18) external;
468 function setPriceX18(uint32 product_id, int128 price_x18) external;
469 function setSlowModeConfig(SlowModeConfig slow_mode_config) external;
470 function setSlowModeTx(uint64 idx, SlowModeTx txn) external;
471 function settlePnl(SettlePnl p) external pure returns (SettlePnl);
472 function signedBurnNlp(SignedBurnNlp p) external pure returns (SignedBurnNlp);
473 function signedCancellation(SignedCancellation p) external pure returns (SignedCancellation);
474 function signedCancellationProducts(SignedCancellationProducts p) external pure returns (SignedCancellationProducts);
475 function signedLinkSigner(SignedLinkSigner p) external pure returns (SignedLinkSigner);
476 function signedLiquidateSubaccount(SignedLiquidateSubaccount p) external pure returns (SignedLiquidateSubaccount);
477 function signedMintNlp(SignedMintNlp p) external pure returns (SignedMintNlp);
478 function signedOrder(SignedOrder p) external pure returns (SignedOrder);
479 function signedTransferQuote(SignedTransferQuote p) external pure returns (SignedTransferQuote);
480 function signedWithdrawCollateral(SignedWithdrawCollateral p) external pure returns (SignedWithdrawCollateral);
481 function signedWithdrawCollateralV2(SignedWithdrawCollateralV2 p) external pure returns (SignedWithdrawCollateralV2);
482 function spotTick(SpotTick p) external pure returns (SpotTick);
483 function submitSlowModeTransaction(bytes transaction) external;
484 function submitSlowModeTransactionImpl(bytes transaction) external;
485 function submitTransactions(bytes[] transactions) external;
486 function submitTransactionsChecked(uint64 idx, bytes[] transactions, bytes32 e, bytes32 s, uint8 signer_bitmask) external;
487 function submitTransactionsCheckedWithGasLimit(uint64 idx, bytes[] transactions, uint256 gas_limit) external;
488 function transferOwnership(address new_owner) external;
489 function transferQuote(TransferQuote p) external pure returns (TransferQuote);
490 function unsignedBurnNlp(BurnNlp p) external pure returns (BurnNlp);
491 function unsignedDelistProduct(DelistProduct p) external pure returns (DelistProduct);
492 function unsignedDepositCollateral(DepositCollateral p) external pure returns (DepositCollateral);
493 function unsignedDepositInsurance(DepositInsurance p) external pure returns (DepositInsurance);
494 function unsignedLinkSigner(LinkSigner p) external pure returns (LinkSigner);
495 function unsignedLiquidateSubaccount(LiquidateSubaccount p) external pure returns (LiquidateSubaccount);
496 function unsignedMintNlp(MintNlp p) external pure returns (MintNlp);
497 function unsignedTransferQuote(TransferQuote p) external pure returns (TransferQuote);
498 function unsignedUpdateTierFeeRates(UpdateTierFeeRates p) external pure returns (UpdateTierFeeRates);
499 function unsignedWithdrawCollateral(WithdrawCollateral p) external pure returns (WithdrawCollateral);
500 function unsignedWithdrawInsurance(WithdrawInsurance p) external pure returns (WithdrawInsurance);
501 function updateBuilder(UpdateBuilder p) external pure returns (UpdateBuilder);
502 function updateFeeTier(UpdateFeeTier p) external pure returns (UpdateFeeTier);
503 function updateNlpPool(UpdateNlpPool p) external pure returns (UpdateNlpPool);
504 function updatePrice(UpdatePrice p) external pure returns (UpdatePrice);
505 function upgradeEndpointTx(address _endpoint_tx) external;
506 function forceRebalanceNlpPool(ForceRebalanceNlpPool p) external pure returns (ForceRebalanceNlpPool);
507 function nlpProfitShare(NlpProfitShare p) external pure returns (NlpProfitShare);
508 }
509}
510pub use Endpoint::*;