nado-sdk 1.0.0

Official Rust SDK for the Nado Protocol API
Documentation
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
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
use alloy::sol;

sol! {
    #![sol(all_derives)]
    #[sol(rpc)]
    #[allow(missing_docs, clippy::too_many_arguments)]
    contract Endpoint {
        #[derive(serde::Serialize, serde::Deserialize)]
        struct Order {
            bytes32 sender;
            #[serde(serialize_with = "crate::serialize_utils::serialize_i128", deserialize_with = "crate::serialize_utils::deserialize_i128")]
            int128 price_x18;
            #[serde(serialize_with = "crate::serialize_utils::serialize_i128", deserialize_with = "crate::serialize_utils::deserialize_i128")]
            int128 amount;
            uint64 expiration;
            uint64 nonce;
            #[serde(serialize_with = "crate::serialize_utils::serialize_u128", deserialize_with = "crate::serialize_utils::deserialize_u128")]
            uint128 appendix;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct SignedOrder {
            Order order;
            bytes signature;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct MatchOrders {
            uint32 product_id;
            SignedOrder taker;
            SignedOrder maker;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct MatchOrdersWithAmount {
            MatchOrders match_orders;
            #[serde(serialize_with = "crate::serialize_utils::serialize_i128", deserialize_with = "crate::serialize_utils::deserialize_i128")]
            int128 taker_amount_delta;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct Times {
            #[serde(serialize_with = "crate::serialize_utils::serialize_u128", deserialize_with = "crate::serialize_utils::deserialize_u128")]
            uint128 perp_time;
            #[serde(serialize_with = "crate::serialize_utils::serialize_u128", deserialize_with = "crate::serialize_utils::deserialize_u128")]
            uint128 spot_time;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct Cancellation {
            bytes32 sender;
            uint32[] product_ids;
            bytes32[] digests;
            uint64 nonce;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct CancellationProducts {
            bytes32 sender;
            uint32[] product_ids;
            uint64 nonce;
        }

        struct ChainlinkFullReport {
            bytes32[3] report_context;
            bytes report_blob;
            bytes32[] raw_rs;
            bytes32[] raw_ss;
            bytes32 raw_vs;
        }

        struct ChainlinkReportBlob {
            bytes32 feed_id;
            uint32 valid_from_timestamp;
            uint32 observations_timestamp;
            uint192 native_fee;
            uint192 link_fee;
            uint64 expires_at;
            int192 price;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct SignedCancellation {
            Cancellation cancellation;
            bytes signature;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct SignedCancellationProducts {
            CancellationProducts cancellation_products;
            bytes signature;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct AddNlpPool {
            address owner;
            #[serde(serialize_with = "crate::serialize_utils::serialize_u128", deserialize_with = "crate::serialize_utils::deserialize_u128")]
            uint128 balance_weight_x18;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct AssertCode {
            string[] contract_names;
            bytes32[] code_hashes;
            #[serde(serialize_with = "crate::bindings::serde_helpers::serialize_u256", deserialize_with = "crate::bindings::serde_helpers::deserialize_u256")]
            uint256 spreads;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct AssertProduct {
            uint32 product_id;
            bool is_spot;
            uint32 quote_id;
            #[serde(serialize_with = "crate::serialize_utils::serialize_i128", deserialize_with = "crate::serialize_utils::deserialize_i128")]
            int128 size_increment;
            #[serde(serialize_with = "crate::serialize_utils::serialize_i128", deserialize_with = "crate::serialize_utils::deserialize_i128")]
            int128 min_size;
            bytes32 others_hash;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct BurnNlp {
            bytes32 sender;
            #[serde(serialize_with = "crate::serialize_utils::serialize_u128", deserialize_with = "crate::serialize_utils::deserialize_u128")]
            uint128 nlp_amount;
            uint64 nonce;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct ClaimBuilderFee {
            bytes32 sender;
            uint32 builder_id;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct CloseIsolatedSubaccount {
            bytes32 subaccount;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct CompactSignature {
            bytes32 r;
            bytes32 vs;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct CreateIsolatedSubaccount {
            Order order;
            uint32 product_id;
            bytes signature;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct DeleteNlpPool {
            uint64 pool_id;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct ForceRebalanceNlpPool {
            #[serde(serialize_with = "crate::serialize_utils::serialize_vec_i128", deserialize_with = "crate::serialize_utils::deserialize_vec_i128")]
            int128[] nlp_pool_rebalance_x18;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct NlpProfitShare {
            uint64 pool_id;
            bytes32 recipient;
            #[serde(serialize_with = "crate::serialize_utils::serialize_u128", deserialize_with = "crate::serialize_utils::deserialize_u128")]
            uint128 amount;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct DelistProduct {
            uint32 product_id;
            #[serde(serialize_with = "crate::serialize_utils::serialize_i128", deserialize_with = "crate::serialize_utils::deserialize_i128")]
            int128 price_x18;
            bytes32[] subaccounts;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct DepositCollateral {
            bytes32 sender;
            uint32 product_id;
            #[serde(serialize_with = "crate::serialize_utils::serialize_u128", deserialize_with = "crate::serialize_utils::deserialize_u128")]
            uint128 amount;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct DepositInsurance {
            #[serde(serialize_with = "crate::serialize_utils::serialize_u128", deserialize_with = "crate::serialize_utils::deserialize_u128")]
            uint128 amount;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct LinkSigner {
            bytes32 sender;
            bytes32 signer;
            uint64 nonce;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct LiquidateSubaccount {
            bytes32 sender;
            bytes32 liquidatee;
            uint32 product_id;
            bool is_encoded_spread;
            #[serde(serialize_with = "crate::serialize_utils::serialize_i128", deserialize_with = "crate::serialize_utils::deserialize_i128")]
            int128 amount;
            uint64 nonce;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct ManualAssert {
            #[serde(serialize_with = "crate::serialize_utils::serialize_i128", deserialize_with = "crate::serialize_utils::deserialize_i128")]
            int128 insurance;
            bytes[] spot_states;
            bytes[] perp_states;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct MintNlp {
            bytes32 sender;
            #[serde(serialize_with = "crate::serialize_utils::serialize_u128", deserialize_with = "crate::serialize_utils::deserialize_u128")]
            uint128 quote_amount;
            uint64 nonce;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct NlpPool {
            uint64 pool_id;
            bytes32 subaccount;
            address owner;
            #[serde(serialize_with = "crate::serialize_utils::serialize_u128", deserialize_with = "crate::serialize_utils::deserialize_u128")]
            uint128 balance_weight_x18;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct PerpTick {
            #[serde(serialize_with = "crate::serialize_utils::serialize_u128", deserialize_with = "crate::serialize_utils::deserialize_u128")]
            uint128 time;
            #[serde(serialize_with = "crate::serialize_utils::serialize_vec_i128", deserialize_with = "crate::serialize_utils::deserialize_vec_i128")]
            int128[] avg_price_diffs;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct RebalanceXWithdraw {
            uint32 product_id;
            #[serde(serialize_with = "crate::serialize_utils::serialize_u128", deserialize_with = "crate::serialize_utils::deserialize_u128")]
            uint128 amount;
            address send_to;
        }

        struct Rebate {
            bytes32[] subaccounts;
            int128[] amounts;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct SettlePnl {
            bytes32[] subaccounts;
            #[serde(serialize_with = "crate::bindings::serde_helpers::serialize_vec_u256_hex", deserialize_with = "crate::bindings::serde_helpers::deserialize_vec_u256_hex")]
            uint256[] product_ids;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct SignedBurnNlp {
            BurnNlp tx;
            bytes signature;
            #[serde(serialize_with = "crate::serialize_utils::serialize_i128", deserialize_with = "crate::serialize_utils::deserialize_i128")]
            int128 oracle_price_x18;
            #[serde(serialize_with = "crate::serialize_utils::serialize_vec_i128", deserialize_with = "crate::serialize_utils::deserialize_vec_i128")]
            int128[] nlp_pool_rebalance_x18;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct SignedLinkSigner {
            LinkSigner tx;
            bytes signature;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct SignedLiquidateSubaccount {
            LiquidateSubaccount tx;
            bytes signature;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct SignedMintNlp {
            MintNlp tx;
            bytes signature;
            #[serde(serialize_with = "crate::serialize_utils::serialize_i128", deserialize_with = "crate::serialize_utils::deserialize_i128")]
            int128 oracle_price_x18;
            #[serde(serialize_with = "crate::serialize_utils::serialize_vec_i128", deserialize_with = "crate::serialize_utils::deserialize_vec_i128")]
            int128[] nlp_pool_rebalance_x18;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct SignedTransferQuote {
            TransferQuote tx;
            bytes signature;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct SignedWithdrawCollateral {
            WithdrawCollateral tx;
            bytes signature;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct SignedWithdrawCollateralV2 {
            WithdrawCollateralV2 tx;
            CompactSignature signature;
            #[serde(serialize_with = "crate::serialize_utils::serialize_i128", deserialize_with = "crate::serialize_utils::deserialize_i128")]
            int128 fee_x18;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct SlowModeConfig {
            uint64 timeout;
            uint64 tx_count;
            uint64 tx_up_to;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct SlowModeTx {
            uint64 executable_at;
            address sender;
            bytes tx;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct SpotTick {
            #[serde(serialize_with = "crate::serialize_utils::serialize_u128", deserialize_with = "crate::serialize_utils::deserialize_u128")]
            uint128 time;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct TransferQuote {
            bytes32 sender;
            bytes32 recipient;
            #[serde(serialize_with = "crate::serialize_utils::serialize_u128", deserialize_with = "crate::serialize_utils::deserialize_u128")]
            uint128 amount;
            uint64 nonce;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct UpdateBuilder {
            uint32 builder_id;
            address owner;
            uint32 default_fee_tier;
            #[serde(serialize_with = "crate::serialize_utils::serialize_i128", deserialize_with = "crate::serialize_utils::deserialize_i128")]
            int128 lowest_fee_rate;
            #[serde(serialize_with = "crate::serialize_utils::serialize_i128", deserialize_with = "crate::serialize_utils::deserialize_i128")]
            int128 highest_fee_rate;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct UpdateFeeTier {
            address user;
            uint32 new_tier;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct UpdateNlpPool {
            uint64 pool_id;
            address owner;
            #[serde(serialize_with = "crate::serialize_utils::serialize_u128", deserialize_with = "crate::serialize_utils::deserialize_u128")]
            uint128 balance_weight_x18;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct UpdatePrice {
            uint32 product_id;
            #[serde(serialize_with = "crate::serialize_utils::serialize_i128", deserialize_with = "crate::serialize_utils::deserialize_i128")]
            int128 price_x18;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct UpdateTierFeeRates {
            uint32 tier;
            uint32 product_id;
            #[serde(serialize_with = "crate::serialize_utils::serialize_i128", deserialize_with = "crate::serialize_utils::deserialize_i128")]
            int128 maker_rate_x18;
            #[serde(serialize_with = "crate::serialize_utils::serialize_i128", deserialize_with = "crate::serialize_utils::deserialize_i128")]
            int128 taker_rate_x18;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct WithdrawCollateral {
            bytes32 sender;
            uint32 product_id;
            #[serde(serialize_with = "crate::serialize_utils::serialize_u128", deserialize_with = "crate::serialize_utils::deserialize_u128")]
            uint128 amount;
            uint64 nonce;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct WithdrawCollateralV2 {
            bytes32 sender;
            uint32 product_id;
            #[serde(serialize_with = "crate::serialize_utils::serialize_u128", deserialize_with = "crate::serialize_utils::deserialize_u128")]
            uint128 amount;
            uint64 nonce;
            address send_to;
            #[serde(serialize_with = "crate::serialize_utils::serialize_u128", deserialize_with = "crate::serialize_utils::deserialize_u128")]
            uint128 appendix;
        }

        #[derive(serde::Serialize, serde::Deserialize)]
        struct WithdrawInsurance {
            #[serde(serialize_with = "crate::serialize_utils::serialize_u128", deserialize_with = "crate::serialize_utils::deserialize_u128")]
            uint128 amount;
            address send_to;
        }

        function addNlpPool(AddNlpPool p) external pure returns (AddNlpPool);
        function assertCode(AssertCode p) external pure returns (AssertCode);
        function assertProduct(AssertProduct p) external pure returns (AssertProduct);
        function chainlinkFullReport(ChainlinkFullReport p) external pure returns (ChainlinkFullReport);
        function chainlinkReportBlob(ChainlinkReportBlob p) external pure returns (ChainlinkReportBlob);
        function checkSlowModeTxInner(address sender, bytes transaction) external pure returns (bytes32);
        function checkSlowModeTxLinkSigner() external view returns (bytes32);
        function claimBuilderFee(ClaimBuilderFee p) external pure returns (ClaimBuilderFee);
        function clearinghouse() external view returns (address);
        function closeIsolatedSubaccount(CloseIsolatedSubaccount p) external pure returns (CloseIsolatedSubaccount);
        function createIsolatedSubaccount(CreateIsolatedSubaccount p) external pure returns (CreateIsolatedSubaccount);
        function deleteNlpPool(DeleteNlpPool p) external pure returns (DeleteNlpPool);
        function depositCollateral(bytes12 subaccount_name, uint32 product_id, uint128 amount) external;
        function depositCollateralWithReferral(bytes32 subaccount, uint32 product_id, uint128 amount, string referral) external;
        function executeSlowModeTransaction() external;
        function getEndpointTx() external view returns (address);
        function getHealthCheckFee() external pure returns (int128);
        function getLinkedSigner(bytes32 subaccount) external view returns (address);
        function getLiquidationFee() external pure returns (int128);
        function getNlpPools() external view returns (NlpPool[]);
        function getNonce(address sender) external view returns (uint64);
        function getNumSubaccounts() external view returns (uint64);
        function getOffchainExchange() external view returns (address);
        function getPriceX18(uint32 product_id) external returns (int128 price_x18);
        function getSequencer() external view returns (address);
        function getSequencerFee(uint32 product_id) external view returns (int128);
        function getSlots() external pure returns (uint256 n_submissions_slot);
        function getSlowModeTx(uint64 idx) external view returns (SlowModeTx, uint64, uint64);
        function getSubaccountById(uint64 subaccount_id) external view returns (bytes32);
        function getSubaccountId(bytes32 subaccount) external view returns (uint64);
        function getTakerSequencerFee() external pure returns (int128);
        function getTime() external view returns (uint128);
        function getTimes() external view returns (Times);
        function incrementSubmissions() external returns (uint64);
        function initialize(address _sanctions, address _sequencer, address _offchain_exchange, address _clearinghouse, address _verifier, address _endpoint_tx) external;
        function liquidationStart(bytes transaction) external;
        function manualAssert(ManualAssert p) external pure returns (ManualAssert);
        function matchOrders(MatchOrders p) external pure returns (MatchOrders);
        function matchOrdersWithAmount(MatchOrdersWithAmount p) external pure returns (MatchOrdersWithAmount);
        function nSubmissions() external view returns (uint64);
        function nlpPools(uint256) external view returns (uint64 pool_id, bytes32 subaccount, address owner, uint128 balance_weight_x18);
        function owner() external view returns (address);
        function perpTick(PerpTick p) external pure returns (PerpTick);
        function processSlowModeTransaction(address sender, bytes transaction) external;
        function processSlowModeTransactionImpl(address sender, bytes transaction) external;
        function processTransactionImpl(bytes transaction) external;
        function rebalanceXWithdraw(RebalanceXWithdraw p) external pure returns (RebalanceXWithdraw);
        function rebate(Rebate p) external pure returns (Rebate);
        function referralCodes(address) external view returns (string);
        function renounceOwnership() external;
        function resyncSlowModeTxs() external;
        function setInitialPrice(uint32 product_id, int128 initial_price_x18) external;
        function setPriceX18(uint32 product_id, int128 price_x18) external;
        function setSlowModeConfig(SlowModeConfig slow_mode_config) external;
        function setSlowModeTx(uint64 idx, SlowModeTx txn) external;
        function settlePnl(SettlePnl p) external pure returns (SettlePnl);
        function signedBurnNlp(SignedBurnNlp p) external pure returns (SignedBurnNlp);
        function signedCancellation(SignedCancellation p) external pure returns (SignedCancellation);
        function signedCancellationProducts(SignedCancellationProducts p) external pure returns (SignedCancellationProducts);
        function signedLinkSigner(SignedLinkSigner p) external pure returns (SignedLinkSigner);
        function signedLiquidateSubaccount(SignedLiquidateSubaccount p) external pure returns (SignedLiquidateSubaccount);
        function signedMintNlp(SignedMintNlp p) external pure returns (SignedMintNlp);
        function signedOrder(SignedOrder p) external pure returns (SignedOrder);
        function signedTransferQuote(SignedTransferQuote p) external pure returns (SignedTransferQuote);
        function signedWithdrawCollateral(SignedWithdrawCollateral p) external pure returns (SignedWithdrawCollateral);
        function signedWithdrawCollateralV2(SignedWithdrawCollateralV2 p) external pure returns (SignedWithdrawCollateralV2);
        function spotTick(SpotTick p) external pure returns (SpotTick);
        function submitSlowModeTransaction(bytes transaction) external;
        function submitSlowModeTransactionImpl(bytes transaction) external;
        function submitTransactions(bytes[] transactions) external;
        function submitTransactionsChecked(uint64 idx, bytes[] transactions, bytes32 e, bytes32 s, uint8 signer_bitmask) external;
        function submitTransactionsCheckedWithGasLimit(uint64 idx, bytes[] transactions, uint256 gas_limit) external;
        function transferOwnership(address new_owner) external;
        function transferQuote(TransferQuote p) external pure returns (TransferQuote);
        function unsignedBurnNlp(BurnNlp p) external pure returns (BurnNlp);
        function unsignedDelistProduct(DelistProduct p) external pure returns (DelistProduct);
        function unsignedDepositCollateral(DepositCollateral p) external pure returns (DepositCollateral);
        function unsignedDepositInsurance(DepositInsurance p) external pure returns (DepositInsurance);
        function unsignedLinkSigner(LinkSigner p) external pure returns (LinkSigner);
        function unsignedLiquidateSubaccount(LiquidateSubaccount p) external pure returns (LiquidateSubaccount);
        function unsignedMintNlp(MintNlp p) external pure returns (MintNlp);
        function unsignedTransferQuote(TransferQuote p) external pure returns (TransferQuote);
        function unsignedUpdateTierFeeRates(UpdateTierFeeRates p) external pure returns (UpdateTierFeeRates);
        function unsignedWithdrawCollateral(WithdrawCollateral p) external pure returns (WithdrawCollateral);
        function unsignedWithdrawInsurance(WithdrawInsurance p) external pure returns (WithdrawInsurance);
        function updateBuilder(UpdateBuilder p) external pure returns (UpdateBuilder);
        function updateFeeTier(UpdateFeeTier p) external pure returns (UpdateFeeTier);
        function updateNlpPool(UpdateNlpPool p) external pure returns (UpdateNlpPool);
        function updatePrice(UpdatePrice p) external pure returns (UpdatePrice);
        function upgradeEndpointTx(address _endpoint_tx) external;
        function forceRebalanceNlpPool(ForceRebalanceNlpPool p) external pure returns (ForceRebalanceNlpPool);
        function nlpProfitShare(NlpProfitShare p) external pure returns (NlpProfitShare);
    }
}
pub use Endpoint::*;