aftermath-ts-sdk 1.2.52 → 1.2.53

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/dist/general/types/configTypes.d.ts +1 -0
  2. package/dist/general/types/configTypes.d.ts.map +1 -1
  3. package/dist/general/utils/caller.d.ts +1 -1
  4. package/dist/general/utils/caller.d.ts.map +1 -1
  5. package/dist/general/utils/caller.js +13 -3
  6. package/dist/general/utils/casting.d.ts +2 -0
  7. package/dist/general/utils/casting.d.ts.map +1 -1
  8. package/dist/general/utils/casting.js +2 -0
  9. package/dist/packages/farms/farms.d.ts +13 -10
  10. package/dist/packages/farms/farms.d.ts.map +1 -1
  11. package/dist/packages/farms/farms.js +17 -43
  12. package/dist/packages/farms/farmsStakedPosition.js +1 -1
  13. package/dist/packages/farms/farmsStakingPool.d.ts +2 -0
  14. package/dist/packages/farms/farmsStakingPool.d.ts.map +1 -1
  15. package/dist/packages/farms/farmsStakingPool.js +21 -3
  16. package/dist/packages/farms/farmsTypes.d.ts +8 -0
  17. package/dist/packages/farms/farmsTypes.d.ts.map +1 -1
  18. package/dist/packages/farms/farmsTypes.js +29 -0
  19. package/dist/packages/oracle/api/oracleApi.d.ts +9 -1
  20. package/dist/packages/oracle/api/oracleApi.d.ts.map +1 -1
  21. package/dist/packages/oracle/api/oracleApi.js +41 -0
  22. package/dist/packages/oracle/api/oracleApiCasting.d.ts +6 -0
  23. package/dist/packages/oracle/api/oracleApiCasting.d.ts.map +1 -0
  24. package/dist/packages/oracle/api/oracleApiCasting.js +25 -0
  25. package/dist/packages/oracle/oracle.js +1 -1
  26. package/dist/packages/oracle/oracleCastingTypes.d.ts +11 -0
  27. package/dist/packages/oracle/oracleCastingTypes.d.ts.map +1 -0
  28. package/dist/packages/oracle/oracleCastingTypes.js +2 -0
  29. package/dist/packages/oracle/oracleTypes.d.ts +9 -1
  30. package/dist/packages/oracle/oracleTypes.d.ts.map +1 -1
  31. package/dist/packages/perpetuals/api/perpetualsApi.d.ts +34 -10
  32. package/dist/packages/perpetuals/api/perpetualsApi.d.ts.map +1 -1
  33. package/dist/packages/perpetuals/api/perpetualsApi.js +499 -100
  34. package/dist/packages/perpetuals/api/perpetualsApiCasting.d.ts +6 -2
  35. package/dist/packages/perpetuals/api/perpetualsApiCasting.d.ts.map +1 -1
  36. package/dist/packages/perpetuals/api/perpetualsApiCasting.js +89 -6
  37. package/dist/packages/perpetuals/perpetualsAccount.d.ts +43 -4
  38. package/dist/packages/perpetuals/perpetualsAccount.d.ts.map +1 -1
  39. package/dist/packages/perpetuals/perpetualsAccount.js +63 -15
  40. package/dist/packages/perpetuals/perpetualsCastingTypes.d.ts +52 -2
  41. package/dist/packages/perpetuals/perpetualsCastingTypes.d.ts.map +1 -1
  42. package/dist/packages/perpetuals/perpetualsMarket.d.ts +5 -7
  43. package/dist/packages/perpetuals/perpetualsMarket.d.ts.map +1 -1
  44. package/dist/packages/perpetuals/perpetualsMarket.js +12 -66
  45. package/dist/packages/perpetuals/perpetualsTypes.d.ts +117 -199
  46. package/dist/packages/perpetuals/perpetualsTypes.d.ts.map +1 -1
  47. package/dist/packages/perpetuals/perpetualsTypes.js +26 -43
  48. package/dist/packages/pools/api/poolsApiCasting.d.ts.map +1 -1
  49. package/dist/packages/pools/api/poolsApiCasting.js +0 -1
  50. package/dist/packages/pools/pool.d.ts +7 -22
  51. package/dist/packages/pools/pool.d.ts.map +1 -1
  52. package/dist/packages/pools/pool.js +16 -30
  53. package/dist/packages/pools/pools.d.ts +7 -1
  54. package/dist/packages/pools/pools.d.ts.map +1 -1
  55. package/dist/packages/pools/pools.js +17 -2
  56. package/dist/packages/router/api/routerApi.d.ts +2 -2
  57. package/dist/packages/router/api/routerApi.d.ts.map +1 -1
  58. package/dist/packages/router/api/routerApi.js +19 -11
  59. package/dist/packages/router/router.d.ts +1 -1
  60. package/dist/packages/router/router.d.ts.map +1 -1
  61. package/dist/packages/router/router.js +2 -2
  62. package/dist/packages/router/routerTypes.d.ts +3 -2
  63. package/dist/packages/router/routerTypes.d.ts.map +1 -1
  64. package/dist/packages/staking/staking.d.ts +4 -1
  65. package/dist/packages/staking/staking.d.ts.map +1 -1
  66. package/dist/packages/staking/staking.js +5 -0
  67. package/dist/packages/staking/stakingTypes.d.ts +5 -0
  68. package/dist/packages/staking/stakingTypes.d.ts.map +1 -1
  69. package/dist/types.d.ts +1 -0
  70. package/dist/types.d.ts.map +1 -1
  71. package/dist/types.js +1 -0
  72. package/package.json +1 -1
@@ -24,8 +24,6 @@ exports.PerpetualsApi = void 0;
24
24
  const transactions_1 = require("@mysten/sui/transactions");
25
25
  const utils_1 = require("../../../general/utils");
26
26
  const sui_1 = require("../../sui");
27
- const perpetualsTypes_1 = require("../perpetualsTypes");
28
- const perpetuals_1 = require("../perpetuals");
29
27
  const eventsApiHelpers_1 = require("../../../general/apiHelpers/eventsApiHelpers");
30
28
  const transactionsApiHelpers_1 = require("../../../general/apiHelpers/transactionsApiHelpers");
31
29
  const bcs_1 = require("@mysten/sui/bcs");
@@ -58,7 +56,7 @@ class PerpetualsApi {
58
56
  this.allocateCollateralTx = (inputs) => {
59
57
  const { tx, collateralCoinType, accountCapId, marketId, amount } = inputs;
60
58
  return tx.moveCall({
61
- target: utils_1.Helpers.transactions.createTxTarget(this.addresses.perpetuals.packages.perpetuals, PerpetualsApi.constants.moduleNames.interface, "allocate_collateral"),
59
+ target: utils_1.Helpers.transactions.createTxTarget(inputs.packageId, PerpetualsApi.constants.moduleNames.interface, "allocate_collateral"),
62
60
  typeArguments: [collateralCoinType],
63
61
  arguments: [
64
62
  tx.sharedObjectRef({
@@ -76,7 +74,7 @@ class PerpetualsApi {
76
74
  this.deallocateCollateralTx = (inputs) => {
77
75
  const { tx, collateralCoinType, accountCapId, marketId, amount } = inputs;
78
76
  return tx.moveCall({
79
- target: utils_1.Helpers.transactions.createTxTarget(this.addresses.perpetuals.packages.perpetuals, PerpetualsApi.constants.moduleNames.interface, "deallocate_collateral"),
77
+ target: utils_1.Helpers.transactions.createTxTarget(inputs.packageId, PerpetualsApi.constants.moduleNames.interface, "deallocate_collateral"),
80
78
  typeArguments: [collateralCoinType],
81
79
  arguments: [
82
80
  tx.sharedObjectRef({
@@ -95,7 +93,7 @@ class PerpetualsApi {
95
93
  this.createMarketPositionTx = (inputs) => {
96
94
  const { tx, collateralCoinType, accountCapId, marketId } = inputs;
97
95
  return tx.moveCall({
98
- target: utils_1.Helpers.transactions.createTxTarget(this.addresses.perpetuals.packages.perpetuals, PerpetualsApi.constants.moduleNames.interface, "create_market_position"),
96
+ target: utils_1.Helpers.transactions.createTxTarget(inputs.packageId, PerpetualsApi.constants.moduleNames.interface, "create_market_position"),
99
97
  typeArguments: [collateralCoinType],
100
98
  arguments: [
101
99
  tx.sharedObjectRef({
@@ -112,7 +110,7 @@ class PerpetualsApi {
112
110
  this.shareClearingHouseTx = (inputs) => {
113
111
  const { tx, collateralCoinType, marketId } = inputs;
114
112
  return tx.moveCall({
115
- target: utils_1.Helpers.transactions.createTxTarget(this.addresses.perpetuals.packages.perpetuals, PerpetualsApi.constants.moduleNames.interface, "share_clearing_house"),
113
+ target: utils_1.Helpers.transactions.createTxTarget(inputs.packageId, PerpetualsApi.constants.moduleNames.interface, "share_clearing_house"),
116
114
  typeArguments: [collateralCoinType],
117
115
  arguments: [
118
116
  typeof marketId === "string" ? tx.object(marketId) : marketId,
@@ -122,7 +120,7 @@ class PerpetualsApi {
122
120
  this.startSessionTx = (inputs) => {
123
121
  const { tx, collateralCoinType, accountCapId, marketId } = inputs;
124
122
  return tx.moveCall({
125
- target: utils_1.Helpers.transactions.createTxTarget(this.addresses.perpetuals.packages.perpetuals, PerpetualsApi.constants.moduleNames.interface, "start_session"),
123
+ target: utils_1.Helpers.transactions.createTxTarget(inputs.packageId, PerpetualsApi.constants.moduleNames.interface, "start_session"),
126
124
  typeArguments: [collateralCoinType],
127
125
  arguments: [
128
126
  tx.sharedObjectRef({
@@ -142,7 +140,7 @@ class PerpetualsApi {
142
140
  this.endSessionTx = (inputs) => {
143
141
  const { tx, collateralCoinType, sessionPotatoId } = inputs;
144
142
  return tx.moveCall({
145
- target: utils_1.Helpers.transactions.createTxTarget(this.addresses.perpetuals.packages.perpetuals, PerpetualsApi.constants.moduleNames.interface, "end_session"),
143
+ target: utils_1.Helpers.transactions.createTxTarget(inputs.packageId, PerpetualsApi.constants.moduleNames.interface, "end_session"),
146
144
  typeArguments: [collateralCoinType],
147
145
  arguments: [
148
146
  typeof sessionPotatoId === "string"
@@ -154,7 +152,7 @@ class PerpetualsApi {
154
152
  this.placeMarketOrderTx = (inputs) => {
155
153
  const { tx, collateralCoinType, sessionPotatoId, side, size } = inputs;
156
154
  return tx.moveCall({
157
- target: utils_1.Helpers.transactions.createTxTarget(this.addresses.perpetuals.packages.perpetuals, PerpetualsApi.constants.moduleNames.interface, "place_market_order"),
155
+ target: utils_1.Helpers.transactions.createTxTarget(inputs.packageId, PerpetualsApi.constants.moduleNames.interface, "place_market_order"),
158
156
  typeArguments: [collateralCoinType],
159
157
  arguments: [
160
158
  typeof sessionPotatoId === "string"
@@ -168,7 +166,7 @@ class PerpetualsApi {
168
166
  this.placeLimitOrderTx = (inputs) => {
169
167
  const { tx, collateralCoinType, sessionPotatoId, side, size, price, orderType, } = inputs;
170
168
  return tx.moveCall({
171
- target: utils_1.Helpers.transactions.createTxTarget(this.addresses.perpetuals.packages.perpetuals, PerpetualsApi.constants.moduleNames.interface, "place_limit_order"),
169
+ target: utils_1.Helpers.transactions.createTxTarget(inputs.packageId, PerpetualsApi.constants.moduleNames.interface, "place_limit_order"),
172
170
  typeArguments: [collateralCoinType],
173
171
  arguments: [
174
172
  typeof sessionPotatoId === "string"
@@ -184,7 +182,7 @@ class PerpetualsApi {
184
182
  this.cancelOrdersTx = (inputs) => {
185
183
  const { tx, collateralCoinType, accountCapId, marketId, orderIds } = inputs;
186
184
  return tx.moveCall({
187
- target: utils_1.Helpers.transactions.createTxTarget(this.addresses.perpetuals.packages.perpetuals, PerpetualsApi.constants.moduleNames.interface, "cancel_orders"),
185
+ target: utils_1.Helpers.transactions.createTxTarget(inputs.packageId, PerpetualsApi.constants.moduleNames.interface, "cancel_orders"),
188
186
  typeArguments: [collateralCoinType],
189
187
  arguments: [
190
188
  tx.sharedObjectRef({
@@ -197,6 +195,23 @@ class PerpetualsApi {
197
195
  ],
198
196
  });
199
197
  };
198
+ this.reduceOrdersTx = (inputs) => {
199
+ const { tx, packageId, collateralCoinType, accountCapId, marketId, orderIds, sizesToSubtract, } = inputs;
200
+ return tx.moveCall({
201
+ target: utils_1.Helpers.transactions.createTxTarget(packageId, PerpetualsApi.constants.moduleNames.interface, "reduce_orders"),
202
+ typeArguments: [collateralCoinType],
203
+ arguments: [
204
+ tx.sharedObjectRef({
205
+ objectId: marketId,
206
+ initialSharedVersion: inputs.marketInitialSharedVersion,
207
+ mutable: true,
208
+ }),
209
+ tx.object(accountCapId),
210
+ tx.pure(bcs_1.bcs.vector(bcs_1.bcs.u128()).serialize(orderIds)),
211
+ tx.pure(bcs_1.bcs.vector(bcs_1.bcs.u64()).serialize(sizesToSubtract)),
212
+ ],
213
+ });
214
+ };
200
215
  this.withdrawCollateralTx = (inputs) => {
201
216
  const { tx, collateralCoinType, accountCapId, amount } = inputs;
202
217
  return tx.moveCall({
@@ -250,7 +265,7 @@ class PerpetualsApi {
250
265
  // const { tx, collateralCoinType, sessionPotatoId } = inputs;
251
266
  // return tx.moveCall({
252
267
  // target: Helpers.transactions.createTxTarget(
253
- // this.addresses.perpetuals.packages.perpetuals,
268
+ // inputs.packageId,
254
269
  // PerpetualsApi.constants.moduleNames.clearingHouse,
255
270
  // "get_hot_potato_fields"
256
271
  // ),
@@ -311,7 +326,7 @@ class PerpetualsApi {
311
326
  this.getPositionTx = (inputs) => {
312
327
  const { tx, marketId, collateralCoinType } = inputs;
313
328
  return tx.moveCall({
314
- target: utils_1.Helpers.transactions.createTxTarget(this.addresses.perpetuals.packages.perpetuals, PerpetualsApi.constants.moduleNames.clearingHouse, "get_position"),
329
+ target: utils_1.Helpers.transactions.createTxTarget(inputs.packageId, PerpetualsApi.constants.moduleNames.clearingHouse, "get_position"),
315
330
  typeArguments: [collateralCoinType],
316
331
  arguments: [
317
332
  tx.sharedObjectRef({
@@ -326,7 +341,7 @@ class PerpetualsApi {
326
341
  this.getOrderbookTx = (inputs) => {
327
342
  const { tx, collateralCoinType } = inputs;
328
343
  return tx.moveCall({
329
- target: utils_1.Helpers.transactions.createTxTarget(this.addresses.perpetuals.packages.perpetuals, PerpetualsApi.constants.moduleNames.clearingHouse, "get_orderbook"),
344
+ target: utils_1.Helpers.transactions.createTxTarget(inputs.packageId, PerpetualsApi.constants.moduleNames.clearingHouse, "get_orderbook"),
330
345
  typeArguments: [collateralCoinType],
331
346
  arguments: [tx.object(inputs.marketId)],
332
347
  });
@@ -334,7 +349,7 @@ class PerpetualsApi {
334
349
  this.getBookPriceTx = (inputs) => {
335
350
  const { tx, marketId, collateralCoinType } = inputs;
336
351
  return tx.moveCall({
337
- target: utils_1.Helpers.transactions.createTxTarget(this.addresses.perpetuals.packages.perpetuals, PerpetualsApi.constants.moduleNames.clearingHouse, "get_book_price"),
352
+ target: utils_1.Helpers.transactions.createTxTarget(inputs.packageId, PerpetualsApi.constants.moduleNames.clearingHouse, "get_book_price"),
338
353
  typeArguments: [collateralCoinType],
339
354
  arguments: [
340
355
  tx.object(marketId),
@@ -349,7 +364,7 @@ class PerpetualsApi {
349
364
  this.getBestPriceTx = (inputs) => {
350
365
  const { tx, marketId, collateralCoinType } = inputs;
351
366
  return tx.moveCall({
352
- target: utils_1.Helpers.transactions.createTxTarget(this.addresses.perpetuals.packages.perpetuals, PerpetualsApi.constants.moduleNames.clearingHouse, "get_best_price"),
367
+ target: utils_1.Helpers.transactions.createTxTarget(inputs.packageId, PerpetualsApi.constants.moduleNames.clearingHouse, "get_best_price"),
353
368
  typeArguments: [collateralCoinType],
354
369
  arguments: [
355
370
  tx.sharedObjectRef({
@@ -364,7 +379,7 @@ class PerpetualsApi {
364
379
  this.inspectOrdersTx = (inputs) => {
365
380
  const { tx, orderbookId } = inputs;
366
381
  return tx.moveCall({
367
- target: utils_1.Helpers.transactions.createTxTarget(this.addresses.perpetuals.packages.perpetuals, PerpetualsApi.constants.moduleNames.orderbook, "inspect_orders"),
382
+ target: utils_1.Helpers.transactions.createTxTarget(inputs.packageId, PerpetualsApi.constants.moduleNames.orderbook, "inspect_orders"),
368
383
  typeArguments: [],
369
384
  arguments: [
370
385
  typeof orderbookId === "string"
@@ -379,7 +394,7 @@ class PerpetualsApi {
379
394
  this.getOrderSizeTx = (inputs) => {
380
395
  const { tx, orderbookId } = inputs;
381
396
  return tx.moveCall({
382
- target: utils_1.Helpers.transactions.createTxTarget(this.addresses.perpetuals.packages.perpetuals, PerpetualsApi.constants.moduleNames.orderbook, "get_order_size"),
397
+ target: utils_1.Helpers.transactions.createTxTarget(inputs.packageId, PerpetualsApi.constants.moduleNames.orderbook, "get_order_size"),
383
398
  typeArguments: [],
384
399
  arguments: [
385
400
  typeof orderbookId === "string"
@@ -407,13 +422,14 @@ class PerpetualsApi {
407
422
  return tx;
408
423
  });
409
424
  this.buildCancelOrderTx = (inputs) => {
410
- const { orderId, marketId, marketInitialSharedVersion, collateral, basePriceFeedId, collateralPriceFeedId } = inputs, otherInputs = __rest(inputs, ["orderId", "marketId", "marketInitialSharedVersion", "collateral", "basePriceFeedId", "collateralPriceFeedId"]);
425
+ const { packageId, orderId, marketId, marketInitialSharedVersion, collateralChange, basePriceFeedId, collateralPriceFeedId } = inputs, otherInputs = __rest(inputs, ["packageId", "orderId", "marketId", "marketInitialSharedVersion", "collateralChange", "basePriceFeedId", "collateralPriceFeedId"]);
411
426
  return this.buildCancelOrdersTx(Object.assign(Object.assign({}, otherInputs), { orderDatas: [
412
427
  {
428
+ packageId,
413
429
  orderId,
414
430
  marketId,
415
431
  marketInitialSharedVersion,
416
- collateral,
432
+ collateralChange,
417
433
  basePriceFeedId,
418
434
  collateralPriceFeedId,
419
435
  },
@@ -435,25 +451,44 @@ class PerpetualsApi {
435
451
  if (orders.length <= 0)
436
452
  continue;
437
453
  const marketInitialSharedVersion = orders[0].marketInitialSharedVersion;
454
+ const packageId = orders[0].packageId;
438
455
  this.cancelOrdersTx({
439
456
  tx,
440
457
  collateralCoinType,
441
458
  accountCapId,
442
459
  marketId,
443
460
  marketInitialSharedVersion,
461
+ packageId,
444
462
  orderIds: orders.map((order) => order.orderId),
445
463
  });
446
- // TODO: handle deallocating too much ?
447
- this.deallocateCollateralTx({
448
- tx,
449
- accountCapId,
450
- collateralCoinType,
451
- marketId,
452
- marketInitialSharedVersion,
453
- amount: utils_1.Helpers.sumBigInt(orders.map((order) => order.collateral)),
454
- basePriceFeedId: orders[0].basePriceFeedId,
455
- collateralPriceFeedId: orders[0].collateralPriceFeedId,
456
- });
464
+ const netCollateralChange = utils_1.Helpers.sumBigInt(orders.map((order) => order.collateralChange));
465
+ if (netCollateralChange < BigInt(0)) {
466
+ this.deallocateCollateralTx({
467
+ tx,
468
+ accountCapId,
469
+ collateralCoinType,
470
+ marketId,
471
+ marketInitialSharedVersion,
472
+ packageId,
473
+ amount: utils_1.Helpers.absBigInt(netCollateralChange),
474
+ basePriceFeedId: orders[0].basePriceFeedId,
475
+ collateralPriceFeedId: orders[0].collateralPriceFeedId,
476
+ });
477
+ }
478
+ else if (netCollateralChange > BigInt(0)) {
479
+ this.allocateCollateralTx({
480
+ tx,
481
+ accountCapId,
482
+ collateralCoinType,
483
+ marketId,
484
+ marketInitialSharedVersion,
485
+ packageId,
486
+ amount: netCollateralChange,
487
+ });
488
+ }
489
+ else {
490
+ // no collateral change
491
+ }
457
492
  }
458
493
  return tx;
459
494
  };
@@ -499,17 +534,441 @@ class PerpetualsApi {
499
534
  });
500
535
  return tx;
501
536
  };
502
- // TODO: add to sdk
503
537
  this.buildAllocateCollateralTx = transactionsApiHelpers_1.TransactionsApiHelpers.createBuildTxFunc(this.allocateCollateralTx);
504
- // TODO: add to sdk
505
538
  this.buildDeallocateCollateralTx = transactionsApiHelpers_1.TransactionsApiHelpers.createBuildTxFunc(this.deallocateCollateralTx);
539
+ this.buildReduceOrdersTx = (inputs) => {
540
+ const { walletAddress, collateralChange, accountCapId, collateralCoinType, marketId, marketInitialSharedVersion, packageId, basePriceFeedId, collateralPriceFeedId, orderIds, sizesToSubtract, } = inputs;
541
+ const tx = new transactions_1.Transaction();
542
+ tx.setSender(walletAddress);
543
+ this.reduceOrdersTx({
544
+ tx,
545
+ packageId,
546
+ collateralCoinType,
547
+ accountCapId,
548
+ marketId,
549
+ marketInitialSharedVersion,
550
+ orderIds,
551
+ sizesToSubtract,
552
+ });
553
+ if (collateralChange < BigInt(0)) {
554
+ this.deallocateCollateralTx({
555
+ tx,
556
+ accountCapId,
557
+ collateralCoinType,
558
+ marketId,
559
+ marketInitialSharedVersion,
560
+ packageId,
561
+ basePriceFeedId,
562
+ collateralPriceFeedId,
563
+ amount: utils_1.Helpers.absBigInt(collateralChange),
564
+ });
565
+ }
566
+ else if (collateralChange > BigInt(0)) {
567
+ this.allocateCollateralTx({
568
+ tx,
569
+ accountCapId,
570
+ collateralCoinType,
571
+ marketId,
572
+ marketInitialSharedVersion,
573
+ packageId,
574
+ amount: collateralChange,
575
+ });
576
+ }
577
+ else {
578
+ // no collateral change
579
+ }
580
+ return tx;
581
+ };
506
582
  // =========================================================================
507
583
  // Helpers
508
584
  // =========================================================================
509
585
  this.getAccountCapType = (inputs) => {
510
- return `${this.addresses.perpetuals.packages.perpetuals}::${PerpetualsApi.constants.moduleNames.account}::Account<${inputs.collateralCoinType}>`;
586
+ return `${this.addresses.perpetuals.packages.events}::${PerpetualsApi.constants.moduleNames.account}::Account<${inputs.collateralCoinType}>`;
511
587
  };
512
588
  // =========================================================================
589
+ // Private Helpers
590
+ // =========================================================================
591
+ // private fetchOrdersSizes = async (inputs: {
592
+ // orderIds: PerpetualsOrderId[];
593
+ // collateralCoinType: ObjectId;
594
+ // marketId: PerpetualsMarketId;
595
+ // }): Promise<bigint[]> => {
596
+ // const { orderIds, marketId, collateralCoinType } = inputs;
597
+ // if (orderIds.length <= 0) return [];
598
+ // const tx = new Transaction();
599
+ // const orderbookId = this.getOrderbookTx({
600
+ // tx,
601
+ // collateralCoinType,
602
+ // marketId,
603
+ // });
604
+ // for (const orderId of orderIds) {
605
+ // this.getOrderSizeTx({
606
+ // tx,
607
+ // orderId,
608
+ // orderbookId,
609
+ // });
610
+ // }
611
+ // const { allBytes } =
612
+ // await this.Provider.Inspections().fetchAllBytesFromTx({
613
+ // tx,
614
+ // });
615
+ // const sizes = allBytes
616
+ // .slice(1)
617
+ // .map((bytes) => Casting.bigIntFromBytes(bytes[0]));
618
+ // return sizes;
619
+ // };
620
+ // private fetchOrderbookOrders = async (inputs: {
621
+ // collateralCoinType: ObjectId;
622
+ // marketId: PerpetualsMarketId;
623
+ // side: PerpetualsOrderSide;
624
+ // fromPrice: PerpetualsOrderPrice;
625
+ // toPrice: PerpetualsOrderPrice;
626
+ // }): Promise<PerpetualsOrderInfo[]> => {
627
+ // const { collateralCoinType, marketId, side, fromPrice, toPrice } =
628
+ // inputs;
629
+ // const tx = new Transaction();
630
+ // const orderbookId = this.getOrderbookTx({
631
+ // tx,
632
+ // collateralCoinType,
633
+ // marketId,
634
+ // });
635
+ // this.inspectOrdersTx({ tx, orderbookId, side, fromPrice, toPrice });
636
+ // const bytes =
637
+ // await this.Provider.Inspections().fetchFirstBytesFromTxOutput({
638
+ // tx,
639
+ // });
640
+ // const orderInfos: any[] = bcs
641
+ // .vector(perpetualsRegistry.OrderInfo)
642
+ // .parse(new Uint8Array(bytes));
643
+ // return orderInfos.map((orderInfo) =>
644
+ // Casting.perpetuals.orderInfoFromRaw(orderInfo)
645
+ // );
646
+ // };
647
+ // public fetchExecutionPrice = async (
648
+ // inputs: ApiPerpetualsExecutionPriceBody & {
649
+ // collateralCoinType: CoinType;
650
+ // marketId: PerpetualsMarketId;
651
+ // }
652
+ // ): Promise<ApiPerpetualsExecutionPriceResponse> => {
653
+ // const {
654
+ // // collateral,
655
+ // collateralCoinType,
656
+ // marketId,
657
+ // side,
658
+ // size,
659
+ // price,
660
+ // lotSize,
661
+ // basePriceFeedId,
662
+ // collateralPriceFeedId,
663
+ // } = inputs;
664
+ // // TODO: change this
665
+ // const collateral = BigInt(1000000000000000);
666
+ // // const accountCapId = perpetualsBcsRegistry
667
+ // // .ser(`Account<${collateralCoinType}>`, {
668
+ // // id: {
669
+ // // id: {
670
+ // // bytes: "0x0000000000000000000000000000000000000000000000000000000000000321",
671
+ // // },
672
+ // // },
673
+ // // accountId: 0,
674
+ // // collateral,
675
+ // // })
676
+ // // .toBytes();
677
+ // const depositCoinBytes = perpetualsRegistry.Coin.serialize({
678
+ // id: "0x0000000000000000000000000000000000000000000000000000000000000123",
679
+ // balance: {
680
+ // value: BigInt(1000000000000000),
681
+ // },
682
+ // }).toBytes();
683
+ // const walletAddress = InspectionsApiHelpers.constants.devInspectSigner;
684
+ // const tx = new Transaction();
685
+ // tx.setSender(walletAddress);
686
+ // const accountCapId = this.createAccountTx({
687
+ // ...inputs,
688
+ // tx,
689
+ // });
690
+ // this.depositCollateralTx({
691
+ // tx,
692
+ // collateralCoinType,
693
+ // accountCapId,
694
+ // coinBytes: depositCoinBytes,
695
+ // });
696
+ // const { sessionPotatoId } = this.createTxAndStartSession({
697
+ // tx,
698
+ // accountCapId,
699
+ // collateralCoinType,
700
+ // marketId,
701
+ // walletAddress,
702
+ // basePriceFeedId,
703
+ // collateralPriceFeedId,
704
+ // collateralChange: collateral,
705
+ // hasPosition: false,
706
+ // });
707
+ // this.placeLimitOrderTx({
708
+ // tx,
709
+ // side,
710
+ // size,
711
+ // collateralCoinType,
712
+ // sessionPotatoId,
713
+ // orderType: PerpetualsOrderType.Standard,
714
+ // price:
715
+ // price ??
716
+ // (side === PerpetualsOrderSide.Bid
717
+ // ? BigInt("0x7FFFFFFFFFFFFFFF") // 2^63 - 1
718
+ // : BigInt(1)),
719
+ // });
720
+ // this.getHotPotatoFieldsTx({
721
+ // tx,
722
+ // collateralCoinType,
723
+ // sessionPotatoId,
724
+ // });
725
+ // this.endSessionAndTransferAccount({
726
+ // ...inputs,
727
+ // tx,
728
+ // sessionPotatoId,
729
+ // walletAddress,
730
+ // collateralChange: BigInt(0),
731
+ // });
732
+ // const { events } =
733
+ // await this.Provider.Inspections().fetchAllBytesFromTx({
734
+ // tx,
735
+ // });
736
+ // const filledTakerEvent = EventsApiHelpers.findCastEventOrUndefined({
737
+ // events,
738
+ // eventType: this.eventTypes.filledTakerOrder,
739
+ // castFunction: Casting.perpetuals.filledTakerOrderEventFromOnChain,
740
+ // });
741
+ // const sizeNum = lotSize * Math.abs(Number(size));
742
+ // if (!filledTakerEvent) {
743
+ // return {
744
+ // executionPrice: 0,
745
+ // sizeFilled: 0,
746
+ // sizePosted: sizeNum,
747
+ // fills: [],
748
+ // };
749
+ // }
750
+ // const filledOrderEvents =
751
+ // Aftermath.helpers.events.findCastEventsOrUndefined({
752
+ // events,
753
+ // eventType: this.eventTypes.filledTakerOrder,
754
+ // castFunction:
755
+ // Casting.perpetuals.filledTakerOrderEventFromOnChain,
756
+ // });
757
+ // const fills: PerpetualsFilledOrderData[] = filledOrderEvents.map(
758
+ // (event) => {
759
+ // const size = Math.abs(
760
+ // Casting.IFixed.numberFromIFixed(event.baseAssetDelta)
761
+ // );
762
+ // const sizeUsd = Math.abs(
763
+ // Casting.IFixed.numberFromIFixed(event.quoteAssetDelta)
764
+ // );
765
+ // const price = sizeUsd / size;
766
+ // return {
767
+ // size,
768
+ // price,
769
+ // };
770
+ // }
771
+ // );
772
+ // const executionPrice = Perpetuals.calcEntryPrice(filledTakerEvent);
773
+ // const sizeFilled = Math.abs(
774
+ // Casting.IFixed.numberFromIFixed(filledTakerEvent.baseAssetDelta)
775
+ // );
776
+ // const sizePosted = sizeNum - sizeFilled;
777
+ // return {
778
+ // executionPrice,
779
+ // sizeFilled,
780
+ // sizePosted,
781
+ // fills,
782
+ // };
783
+ // // const { fillReceipts, postReceipt } =
784
+ // // await this.fetchMarketOrderReceipts(inputs);
785
+ // // const sizePosted = postReceipt !== undefined ? postReceipt.size : 0;
786
+ // // if (fillReceipts.length <= 0)
787
+ // // return price !== undefined
788
+ // // ? // simulating limit order
789
+ // // {
790
+ // // executionPrice: Perpetuals.orderPriceToPrice({
791
+ // // orderPrice: price,
792
+ // // lotSize,
793
+ // // tickSize,
794
+ // // }),
795
+ // // sizeFilled: 0,
796
+ // // sizePosted: Number(sizePosted),
797
+ // // }
798
+ // // : // simulating market order
799
+ // // {
800
+ // // executionPrice: 0,
801
+ // // sizeFilled: 0,
802
+ // // sizePosted: 0,
803
+ // // };
804
+ // // const sizeFilled = Helpers.sumBigInt(
805
+ // // fillReceipts.map((receipt) => receipt.size)
806
+ // // );
807
+ // // const executionPrice = fillReceipts.reduce((acc, receipt) => {
808
+ // // const orderPrice = PerpetualsOrderUtils.price(
809
+ // // receipt.orderId,
810
+ // // inputs.side === PerpetualsOrderSide.Ask
811
+ // // ? PerpetualsOrderSide.Bid
812
+ // // : PerpetualsOrderSide.Ask
813
+ // // );
814
+ // // const orderPriceNum = Perpetuals.orderPriceToPrice({
815
+ // // orderPrice,
816
+ // // lotSize,
817
+ // // tickSize,
818
+ // // });
819
+ // // return (
820
+ // // acc +
821
+ // // orderPriceNum * (Number(receipt.size) / Number(sizeFilled))
822
+ // // );
823
+ // // }, 0);
824
+ // // return {
825
+ // // executionPrice,
826
+ // // sizeFilled: Number(sizeFilled),
827
+ // // sizePosted: Number(sizePosted),
828
+ // // };
829
+ // };
830
+ // private createTxAndStartSession = (inputs: {
831
+ // tx?: Transaction;
832
+ // collateralCoinType: CoinType;
833
+ // accountCapId: ObjectId | TransactionArgument;
834
+ // marketId: PerpetualsMarketId;
835
+ // marketInitialSharedVersion: ObjectVersion;
836
+ // basePriceFeedId: ObjectId;
837
+ // collateralPriceFeedId: ObjectId;
838
+ // walletAddress: SuiAddress;
839
+ // collateralChange: Balance;
840
+ // hasPosition: boolean;
841
+ // }) => {
842
+ // const { collateralChange, walletAddress, hasPosition } = inputs;
843
+ // const { tx: inputsTx, ...nonTxInputs } = inputs;
844
+ // const tx = inputsTx ?? new Transaction();
845
+ // tx.setSender(walletAddress);
846
+ // if (!hasPosition) {
847
+ // this.createMarketPositionTx({
848
+ // ...nonTxInputs,
849
+ // tx,
850
+ // });
851
+ // }
852
+ // if (collateralChange > BigInt(0)) {
853
+ // this.allocateCollateralTx({
854
+ // ...nonTxInputs,
855
+ // tx,
856
+ // amount: collateralChange,
857
+ // });
858
+ // }
859
+ // const sessionPotatoId = this.startSessionTx({
860
+ // ...nonTxInputs,
861
+ // tx,
862
+ // });
863
+ // return { tx, sessionPotatoId };
864
+ // };
865
+ // private endSessionAndShareMarket = (inputs: {
866
+ // tx: Transaction;
867
+ // collateralCoinType: CoinType;
868
+ // sessionPotatoId: ObjectId | TransactionArgument;
869
+ // }) => {
870
+ // const marketId = this.endSessionTx(inputs);
871
+ // this.shareClearingHouseTx({
872
+ // ...inputs,
873
+ // marketId,
874
+ // });
875
+ // };
876
+ // =========================================================================
877
+ // Public Static Helpers
878
+ // =========================================================================
879
+ // public static bucketOrders = (inputs: {
880
+ // orders: PerpetualsOrderInfo[];
881
+ // side: PerpetualsOrderSide;
882
+ // lotSize: number;
883
+ // tickSize: number;
884
+ // priceBucketSize: number;
885
+ // initialBucketedOrders?: OrderbookDataPoint[];
886
+ // }): OrderbookDataPoint[] => {
887
+ // const {
888
+ // orders,
889
+ // side,
890
+ // lotSize,
891
+ // tickSize,
892
+ // priceBucketSize,
893
+ // initialBucketedOrders,
894
+ // } = inputs;
895
+ // let dataPoints: OrderbookDataPoint[] = initialBucketedOrders ?? [];
896
+ // const roundPrice = (price: number, bucketSize: number): number => {
897
+ // return Math.round(price / bucketSize) * bucketSize;
898
+ // };
899
+ // const comparePrices = (
900
+ // price1: number,
901
+ // price2: number,
902
+ // bucketSize: number
903
+ // ): boolean => {
904
+ // return Math.abs(price1 - price2) < bucketSize;
905
+ // };
906
+ // orders.forEach((order) => {
907
+ // const actualPrice = Perpetuals.orderPriceToPrice({
908
+ // lotSize,
909
+ // tickSize: Math.abs(tickSize),
910
+ // orderPrice: order.price,
911
+ // });
912
+ // const roundedPrice = roundPrice(actualPrice, priceBucketSize);
913
+ // const size =
914
+ // lotSize *
915
+ // Math.abs(Number(order.size)) *
916
+ // (tickSize < 0 ? -1 : 1);
917
+ // const sizeUsd = size * actualPrice;
918
+ // const placementIndex = dataPoints.findIndex(
919
+ // (dataPoint: OrderbookDataPoint) =>
920
+ // comparePrices(
921
+ // roundedPrice,
922
+ // dataPoint.price,
923
+ // priceBucketSize
924
+ // )
925
+ // );
926
+ // if (placementIndex < 0) {
927
+ // if (size > 0) {
928
+ // const newDataPoint: OrderbookDataPoint = {
929
+ // size,
930
+ // sizeUsd,
931
+ // totalSize: size,
932
+ // totalSizeUsd: sizeUsd,
933
+ // price: roundedPrice,
934
+ // };
935
+ // const insertIndex = dataPoints.findIndex((dataPoint) =>
936
+ // side === PerpetualsOrderSide.Ask
937
+ // ? roundedPrice < dataPoint.price
938
+ // : roundedPrice > dataPoint.price
939
+ // );
940
+ // if (insertIndex < 0) {
941
+ // dataPoints.push(newDataPoint);
942
+ // } else {
943
+ // dataPoints.splice(insertIndex, 0, newDataPoint);
944
+ // }
945
+ // }
946
+ // } else {
947
+ // dataPoints[placementIndex].size += size;
948
+ // dataPoints[placementIndex].sizeUsd += sizeUsd;
949
+ // dataPoints[placementIndex].totalSize += size;
950
+ // dataPoints[placementIndex].totalSizeUsd += sizeUsd;
951
+ // }
952
+ // });
953
+ // dataPoints = dataPoints.filter((data) => data.size >= lotSize);
954
+ // for (let index = 0; index < dataPoints.length; index++) {
955
+ // if (index > 0) {
956
+ // dataPoints[index].totalSize =
957
+ // dataPoints[index - 1].totalSize + dataPoints[index].size;
958
+ // dataPoints[index].totalSizeUsd =
959
+ // dataPoints[index - 1].totalSizeUsd +
960
+ // dataPoints[index].sizeUsd;
961
+ // } else {
962
+ // dataPoints[index].totalSize = dataPoints[index].size;
963
+ // dataPoints[index].totalSizeUsd = dataPoints[index].sizeUsd;
964
+ // }
965
+ // }
966
+ // if (side === PerpetualsOrderSide.Ask) {
967
+ // dataPoints.reverse();
968
+ // }
969
+ // return dataPoints;
970
+ // };
971
+ // =========================================================================
513
972
  // Event Types
514
973
  // =========================================================================
515
974
  this.eventType = (eventName) => eventsApiHelpers_1.EventsApiHelpers.createEventType(this.addresses.perpetuals.packages.events, PerpetualsApi.constants.moduleNames.events, eventName);
@@ -530,6 +989,7 @@ class PerpetualsApi {
530
989
  deallocatedCollateral: this.eventType("DeallocatedCollateral"),
531
990
  // Liquidation
532
991
  liquidated: this.eventType("LiquidatedPosition"),
992
+ filledTakerOrderLiquidator: this.eventType("FilledTakerOrderLiquidator"),
533
993
  // Account
534
994
  createdAccount: this.eventType("CreatedAccount"),
535
995
  // Order
@@ -537,11 +997,16 @@ class PerpetualsApi {
537
997
  postedOrder: this.eventType("PostedOrder"),
538
998
  filledMakerOrder: this.eventType("FilledMakerOrder"),
539
999
  filledTakerOrder: this.eventType("FilledTakerOrder"),
1000
+ reducedOrder: this.eventType("ReducedOrder"),
540
1001
  // Order Receipts
541
1002
  postedOrderReceipt: this.eventType("OrderbookPostReceipt"),
542
1003
  // Twap
543
1004
  updatedPremiumTwap: this.eventType("UpdatedPremiumTwap"),
544
1005
  updatedSpreadTwap: this.eventType("UpdatedSpreadTwap"),
1006
+ // Funding
1007
+ updatedFunding: this.eventType("UpdatedFunding"),
1008
+ // Version
1009
+ updatedMarketVersion: this.eventType("UpdatedClearingHouseVersion"),
545
1010
  };
546
1011
  this.moveErrors = {
547
1012
  [this.addresses.perpetuals.packages.perpetuals]: {
@@ -642,69 +1107,3 @@ PerpetualsApi.constants = {
642
1107
  account: "account",
643
1108
  },
644
1109
  };
645
- // =========================================================================
646
- // Public Static Helpers
647
- // =========================================================================
648
- PerpetualsApi.bucketOrders = (inputs) => {
649
- const { orders, side, lotSize, tickSize, priceBucketSize, initialBucketedOrders, } = inputs;
650
- let dataPoints = initialBucketedOrders !== null && initialBucketedOrders !== void 0 ? initialBucketedOrders : [];
651
- const roundPrice = (price, bucketSize) => {
652
- return Math.round(price / bucketSize) * bucketSize;
653
- };
654
- const comparePrices = (price1, price2, bucketSize) => {
655
- return Math.abs(price1 - price2) < bucketSize / 2;
656
- };
657
- orders.forEach((order) => {
658
- const actualPrice = perpetuals_1.Perpetuals.orderPriceToPrice({
659
- lotSize,
660
- tickSize: Math.abs(tickSize),
661
- orderPrice: order.price,
662
- });
663
- const roundedPrice = roundPrice(actualPrice, priceBucketSize);
664
- const size = lotSize * Number(order.size) * (tickSize < 0 ? -1 : 1);
665
- const sizeUsd = size * actualPrice;
666
- const placementIndex = dataPoints.findIndex((dataPoint) => comparePrices(roundedPrice, dataPoint.price, priceBucketSize));
667
- if (placementIndex < 0) {
668
- const newDataPoint = {
669
- size,
670
- sizeUsd,
671
- totalSize: size,
672
- totalSizeUsd: sizeUsd,
673
- price: roundedPrice,
674
- };
675
- const insertIndex = dataPoints.findIndex((dataPoint) => side === perpetualsTypes_1.PerpetualsOrderSide.Ask
676
- ? roundedPrice <= dataPoint.price
677
- : roundedPrice >= dataPoint.price);
678
- if (insertIndex < 0) {
679
- dataPoints.push(newDataPoint);
680
- }
681
- else {
682
- dataPoints.splice(insertIndex, 0, newDataPoint);
683
- }
684
- }
685
- else {
686
- dataPoints[placementIndex].size += size;
687
- dataPoints[placementIndex].sizeUsd += sizeUsd;
688
- dataPoints[placementIndex].totalSize += size;
689
- dataPoints[placementIndex].totalSizeUsd += sizeUsd;
690
- }
691
- });
692
- dataPoints = dataPoints.filter((data) => data.size > 0 && data.sizeUsd > 0);
693
- for (let index = 0; index < dataPoints.length; index++) {
694
- if (index > 0) {
695
- dataPoints[index].totalSize =
696
- dataPoints[index - 1].totalSize + dataPoints[index].size;
697
- dataPoints[index].totalSizeUsd =
698
- dataPoints[index - 1].totalSizeUsd +
699
- dataPoints[index].sizeUsd;
700
- }
701
- else {
702
- dataPoints[index].totalSize = dataPoints[index].size;
703
- dataPoints[index].totalSizeUsd = dataPoints[index].sizeUsd;
704
- }
705
- }
706
- if (side === perpetualsTypes_1.PerpetualsOrderSide.Ask) {
707
- dataPoints.reverse();
708
- }
709
- return dataPoints;
710
- };