Skip to main content

nado_sdk/nado_utils/bindings/
endpoint.rs

1use 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::*;