@drift-labs/sdk 0.2.0-master.2 → 0.2.0-master.20

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 (152) hide show
  1. package/lib/accounts/bulkUserStatsSubscription.d.ts +7 -0
  2. package/lib/accounts/bulkUserStatsSubscription.js +21 -0
  3. package/lib/accounts/bulkUserSubscription.js +0 -1
  4. package/lib/accounts/fetch.d.ts +2 -1
  5. package/lib/accounts/fetch.js +9 -1
  6. package/lib/accounts/pollingUserStatsAccountSubscriber.d.ts +27 -0
  7. package/lib/accounts/pollingUserStatsAccountSubscriber.js +113 -0
  8. package/lib/accounts/types.d.ts +14 -1
  9. package/lib/accounts/webSocketUserStatsAccountSubsriber.d.ts +20 -0
  10. package/lib/accounts/webSocketUserStatsAccountSubsriber.js +47 -0
  11. package/lib/addresses/pda.d.ts +1 -0
  12. package/lib/addresses/pda.js +8 -1
  13. package/lib/admin.d.ts +9 -5
  14. package/lib/admin.js +52 -11
  15. package/lib/clearingHouse.d.ts +52 -23
  16. package/lib/clearingHouse.js +727 -197
  17. package/lib/clearingHouseConfig.d.ts +1 -0
  18. package/lib/clearingHouseUser.d.ts +17 -17
  19. package/lib/clearingHouseUser.js +186 -101
  20. package/lib/clearingHouseUserStats.d.ts +18 -0
  21. package/lib/clearingHouseUserStats.js +49 -0
  22. package/lib/clearingHouseUserStatsConfig.d.ts +14 -0
  23. package/lib/clearingHouseUserStatsConfig.js +2 -0
  24. package/lib/config.js +1 -1
  25. package/lib/constants/banks.d.ts +2 -2
  26. package/lib/constants/banks.js +12 -4
  27. package/lib/constants/numericConstants.d.ts +5 -0
  28. package/lib/constants/numericConstants.js +8 -3
  29. package/lib/events/eventList.js +3 -0
  30. package/lib/events/types.d.ts +3 -1
  31. package/lib/events/types.js +2 -0
  32. package/lib/factory/bigNum.d.ts +1 -0
  33. package/lib/factory/bigNum.js +34 -10
  34. package/lib/idl/clearing_house.json +1609 -388
  35. package/lib/idl/{mock_usdc_faucet.json → token_faucet.json} +46 -23
  36. package/lib/index.d.ts +9 -3
  37. package/lib/index.js +13 -3
  38. package/lib/math/amm.d.ts +1 -0
  39. package/lib/math/amm.js +22 -38
  40. package/lib/math/auction.js +4 -1
  41. package/lib/math/bankBalance.d.ts +7 -1
  42. package/lib/math/bankBalance.js +77 -2
  43. package/lib/math/margin.d.ts +11 -0
  44. package/lib/math/margin.js +72 -0
  45. package/lib/math/market.d.ts +4 -1
  46. package/lib/math/market.js +35 -1
  47. package/lib/math/oracles.d.ts +3 -0
  48. package/lib/math/oracles.js +25 -5
  49. package/lib/math/orders.d.ts +5 -2
  50. package/lib/math/orders.js +53 -12
  51. package/lib/math/position.d.ts +8 -0
  52. package/lib/math/position.js +45 -12
  53. package/lib/math/trade.d.ts +1 -1
  54. package/lib/math/trade.js +7 -10
  55. package/lib/orderParams.d.ts +14 -5
  56. package/lib/orderParams.js +8 -96
  57. package/lib/slot/SlotSubscriber.d.ts +7 -0
  58. package/lib/slot/SlotSubscriber.js +3 -0
  59. package/lib/{mockUSDCFaucet.d.ts → tokenFaucet.d.ts} +8 -5
  60. package/lib/{mockUSDCFaucet.js → tokenFaucet.js} +63 -51
  61. package/lib/tx/retryTxSender.js +9 -2
  62. package/lib/tx/utils.js +1 -1
  63. package/lib/types.d.ts +233 -26
  64. package/lib/types.js +64 -1
  65. package/lib/util/computeUnits.js +1 -1
  66. package/lib/util/getTokenAddress.d.ts +2 -0
  67. package/lib/util/getTokenAddress.js +9 -0
  68. package/package.json +3 -3
  69. package/src/accounts/bulkUserStatsSubscription.ts +33 -0
  70. package/src/accounts/bulkUserSubscription.ts +0 -1
  71. package/src/accounts/fetch.ts +27 -2
  72. package/src/accounts/pollingUserStatsAccountSubscriber.ts +172 -0
  73. package/src/accounts/types.ts +18 -0
  74. package/src/accounts/webSocketUserStatsAccountSubsriber.ts +80 -0
  75. package/src/addresses/marketAddresses.js +26 -0
  76. package/src/addresses/pda.ts +13 -0
  77. package/src/admin.ts +82 -15
  78. package/src/assert/assert.js +9 -0
  79. package/src/clearingHouse.ts +1224 -319
  80. package/src/clearingHouseConfig.ts +1 -0
  81. package/src/clearingHouseUser.ts +311 -148
  82. package/src/clearingHouseUserStats.ts +75 -0
  83. package/src/clearingHouseUserStatsConfig.ts +18 -0
  84. package/src/config.ts +1 -1
  85. package/src/constants/banks.js +42 -0
  86. package/src/constants/banks.ts +14 -4
  87. package/src/constants/markets.js +42 -0
  88. package/src/constants/numericConstants.js +41 -0
  89. package/src/constants/numericConstants.ts +14 -2
  90. package/src/events/eventList.js +77 -0
  91. package/src/events/eventList.ts +3 -0
  92. package/src/events/eventSubscriber.js +139 -0
  93. package/src/events/fetchLogs.js +50 -0
  94. package/src/events/pollingLogProvider.js +64 -0
  95. package/src/events/sort.js +44 -0
  96. package/src/events/txEventCache.js +71 -0
  97. package/src/events/types.ts +6 -0
  98. package/src/events/webSocketLogProvider.js +41 -0
  99. package/src/examples/makeTradeExample.js +80 -0
  100. package/src/factory/bigNum.js +390 -0
  101. package/src/factory/bigNum.ts +42 -13
  102. package/src/factory/oracleClient.js +20 -0
  103. package/src/idl/clearing_house.json +1609 -388
  104. package/src/idl/{mock_usdc_faucet.json → token_faucet.json} +46 -23
  105. package/src/index.ts +9 -3
  106. package/src/math/amm.ts +54 -55
  107. package/src/math/auction.js +42 -0
  108. package/src/math/auction.ts +5 -1
  109. package/src/math/bankBalance.ts +148 -2
  110. package/src/math/conversion.js +11 -0
  111. package/src/math/funding.js +248 -0
  112. package/src/math/margin.ts +124 -0
  113. package/src/math/market.ts +66 -1
  114. package/src/math/oracles.js +26 -0
  115. package/src/math/oracles.ts +42 -5
  116. package/src/math/orders.ts +112 -13
  117. package/src/math/position.ts +64 -9
  118. package/src/math/repeg.js +128 -0
  119. package/src/math/state.js +15 -0
  120. package/src/math/trade.js +253 -0
  121. package/src/math/trade.ts +23 -25
  122. package/src/math/utils.js +0 -1
  123. package/src/oracles/oracleClientCache.js +19 -0
  124. package/src/oracles/pythClient.js +46 -0
  125. package/src/oracles/quoteAssetOracleClient.js +32 -0
  126. package/src/oracles/switchboardClient.js +69 -0
  127. package/src/oracles/types.js +2 -0
  128. package/src/orderParams.js +20 -0
  129. package/src/orderParams.ts +20 -141
  130. package/src/slot/SlotSubscriber.js +39 -0
  131. package/src/slot/SlotSubscriber.ts +11 -1
  132. package/src/token/index.js +38 -0
  133. package/src/tokenFaucet.js +189 -0
  134. package/src/{mockUSDCFaucet.ts → tokenFaucet.ts} +82 -70
  135. package/src/tx/retryTxSender.ts +11 -3
  136. package/src/tx/types.js +2 -0
  137. package/src/tx/utils.js +17 -0
  138. package/src/tx/utils.ts +1 -1
  139. package/src/types.ts +236 -27
  140. package/src/userName.js +20 -0
  141. package/src/util/computeUnits.js +21 -11
  142. package/src/util/computeUnits.ts +1 -1
  143. package/src/util/getTokenAddress.js +9 -0
  144. package/src/util/getTokenAddress.ts +18 -0
  145. package/src/util/promiseTimeout.js +14 -0
  146. package/src/util/tps.js +27 -0
  147. package/src/wallet.js +35 -0
  148. package/tests/bn/test.ts +10 -0
  149. package/lib/orders.d.ts +0 -8
  150. package/lib/orders.js +0 -142
  151. package/src/orders.ts +0 -251
  152. package/src/util/computeUnits.js.map +0 -1
@@ -141,6 +141,14 @@
141
141
  {
142
142
  "name": "maintenanceLiabilityWeight",
143
143
  "type": "u128"
144
+ },
145
+ {
146
+ "name": "imfFactor",
147
+ "type": "u128"
148
+ },
149
+ {
150
+ "name": "liquidationFee",
151
+ "type": "u128"
144
152
  }
145
153
  ]
146
154
  },
@@ -206,12 +214,12 @@
206
214
  "type": "u32"
207
215
  },
208
216
  {
209
- "name": "marginRatioPartial",
217
+ "name": "marginRatioMaintenance",
210
218
  "type": "u32"
211
219
  },
212
220
  {
213
- "name": "marginRatioMaintenance",
214
- "type": "u32"
221
+ "name": "liquidationFee",
222
+ "type": "u128"
215
223
  }
216
224
  ]
217
225
  },
@@ -228,6 +236,11 @@
228
236
  "isMut": true,
229
237
  "isSigner": false
230
238
  },
239
+ {
240
+ "name": "userStats",
241
+ "isMut": true,
242
+ "isSigner": false
243
+ },
231
244
  {
232
245
  "name": "authority",
233
246
  "isMut": false,
@@ -277,6 +290,11 @@
277
290
  "isMut": true,
278
291
  "isSigner": false
279
292
  },
293
+ {
294
+ "name": "userStats",
295
+ "isMut": true,
296
+ "isSigner": false
297
+ },
280
298
  {
281
299
  "name": "authority",
282
300
  "isMut": false,
@@ -331,6 +349,11 @@
331
349
  "isMut": true,
332
350
  "isSigner": false
333
351
  },
352
+ {
353
+ "name": "userStats",
354
+ "isMut": true,
355
+ "isSigner": false
356
+ },
334
357
  {
335
358
  "name": "authority",
336
359
  "isMut": false,
@@ -365,7 +388,28 @@
365
388
  "args": []
366
389
  },
367
390
  {
368
- "name": "placeOrder",
391
+ "name": "settleLp",
392
+ "accounts": [
393
+ {
394
+ "name": "state",
395
+ "isMut": false,
396
+ "isSigner": false
397
+ },
398
+ {
399
+ "name": "user",
400
+ "isMut": true,
401
+ "isSigner": false
402
+ }
403
+ ],
404
+ "args": [
405
+ {
406
+ "name": "marketIndex",
407
+ "type": "u64"
408
+ }
409
+ ]
410
+ },
411
+ {
412
+ "name": "removeLiquidity",
369
413
  "accounts": [
370
414
  {
371
415
  "name": "state",
@@ -381,11 +425,66 @@
381
425
  "name": "authority",
382
426
  "isMut": false,
383
427
  "isSigner": true
428
+ }
429
+ ],
430
+ "args": [
431
+ {
432
+ "name": "sharesToBurn",
433
+ "type": "u128"
384
434
  },
385
435
  {
386
- "name": "oracle",
436
+ "name": "marketIndex",
437
+ "type": "u64"
438
+ }
439
+ ]
440
+ },
441
+ {
442
+ "name": "addLiquidity",
443
+ "accounts": [
444
+ {
445
+ "name": "state",
446
+ "isMut": false,
447
+ "isSigner": false
448
+ },
449
+ {
450
+ "name": "user",
451
+ "isMut": true,
452
+ "isSigner": false
453
+ },
454
+ {
455
+ "name": "authority",
456
+ "isMut": false,
457
+ "isSigner": true
458
+ }
459
+ ],
460
+ "args": [
461
+ {
462
+ "name": "nShares",
463
+ "type": "u128"
464
+ },
465
+ {
466
+ "name": "marketIndex",
467
+ "type": "u64"
468
+ }
469
+ ]
470
+ },
471
+ {
472
+ "name": "placeOrder",
473
+ "accounts": [
474
+ {
475
+ "name": "state",
387
476
  "isMut": false,
388
477
  "isSigner": false
478
+ },
479
+ {
480
+ "name": "user",
481
+ "isMut": true,
482
+ "isSigner": false
483
+ },
484
+ {
485
+ "name": "authority",
486
+ "isMut": false,
487
+ "isSigner": true
389
488
  }
390
489
  ],
391
490
  "args": [
@@ -469,14 +568,19 @@
469
568
  "isMut": true,
470
569
  "isSigner": false
471
570
  },
571
+ {
572
+ "name": "fillerStats",
573
+ "isMut": true,
574
+ "isSigner": false
575
+ },
472
576
  {
473
577
  "name": "user",
474
578
  "isMut": true,
475
579
  "isSigner": false
476
580
  },
477
581
  {
478
- "name": "oracle",
479
- "isMut": false,
582
+ "name": "userStats",
583
+ "isMut": true,
480
584
  "isSigner": false
481
585
  }
482
586
  ],
@@ -509,14 +613,14 @@
509
613
  "isSigner": false
510
614
  },
511
615
  {
512
- "name": "authority",
513
- "isMut": false,
514
- "isSigner": true
616
+ "name": "userStats",
617
+ "isMut": true,
618
+ "isSigner": false
515
619
  },
516
620
  {
517
- "name": "oracle",
621
+ "name": "authority",
518
622
  "isMut": false,
519
- "isSigner": false
623
+ "isSigner": true
520
624
  }
521
625
  ],
522
626
  "args": [
@@ -547,20 +651,25 @@
547
651
  "isMut": true,
548
652
  "isSigner": false
549
653
  },
654
+ {
655
+ "name": "userStats",
656
+ "isMut": true,
657
+ "isSigner": false
658
+ },
550
659
  {
551
660
  "name": "taker",
552
- "isMut": false,
661
+ "isMut": true,
553
662
  "isSigner": false
554
663
  },
555
664
  {
556
- "name": "authority",
557
- "isMut": false,
558
- "isSigner": true
665
+ "name": "takerStats",
666
+ "isMut": true,
667
+ "isSigner": false
559
668
  },
560
669
  {
561
- "name": "oracle",
670
+ "name": "authority",
562
671
  "isMut": false,
563
- "isSigner": false
672
+ "isSigner": true
564
673
  }
565
674
  ],
566
675
  "args": [
@@ -660,7 +769,7 @@
660
769
  ]
661
770
  },
662
771
  {
663
- "name": "liquidate",
772
+ "name": "liquidatePerp",
664
773
  "accounts": [
665
774
  {
666
775
  "name": "state",
@@ -678,35 +787,34 @@
678
787
  "isSigner": false
679
788
  },
680
789
  {
681
- "name": "user",
790
+ "name": "liquidatorStats",
682
791
  "isMut": true,
683
792
  "isSigner": false
684
793
  },
685
794
  {
686
- "name": "bankVault",
795
+ "name": "user",
687
796
  "isMut": true,
688
797
  "isSigner": false
689
798
  },
690
799
  {
691
- "name": "bankVaultAuthority",
800
+ "name": "userStats",
692
801
  "isMut": true,
693
802
  "isSigner": false
694
- },
803
+ }
804
+ ],
805
+ "args": [
695
806
  {
696
- "name": "insuranceVault",
697
- "isMut": true,
698
- "isSigner": false
807
+ "name": "marketIndex",
808
+ "type": "u64"
699
809
  },
700
810
  {
701
- "name": "tokenProgram",
702
- "isMut": false,
703
- "isSigner": false
811
+ "name": "liquidatorMaxBaseAssetAmount",
812
+ "type": "u128"
704
813
  }
705
- ],
706
- "args": []
814
+ ]
707
815
  },
708
816
  {
709
- "name": "moveAmmPrice",
817
+ "name": "liquidateBorrow",
710
818
  "accounts": [
711
819
  {
712
820
  "name": "state",
@@ -714,29 +822,38 @@
714
822
  "isSigner": false
715
823
  },
716
824
  {
717
- "name": "admin",
825
+ "name": "authority",
718
826
  "isMut": false,
719
827
  "isSigner": true
720
828
  },
721
829
  {
722
- "name": "market",
830
+ "name": "liquidator",
831
+ "isMut": true,
832
+ "isSigner": false
833
+ },
834
+ {
835
+ "name": "user",
723
836
  "isMut": true,
724
837
  "isSigner": false
725
838
  }
726
839
  ],
727
840
  "args": [
728
841
  {
729
- "name": "baseAssetReserve",
730
- "type": "u128"
842
+ "name": "assetBankIndex",
843
+ "type": "u64"
731
844
  },
732
845
  {
733
- "name": "quoteAssetReserve",
846
+ "name": "liabilityBankIndex",
847
+ "type": "u64"
848
+ },
849
+ {
850
+ "name": "liquidatorMaxLiabilityTransfer",
734
851
  "type": "u128"
735
852
  }
736
853
  ]
737
854
  },
738
855
  {
739
- "name": "withdrawFees",
856
+ "name": "liquidateBorrowForPerpPnl",
740
857
  "accounts": [
741
858
  {
742
859
  "name": "state",
@@ -744,50 +861,38 @@
744
861
  "isSigner": false
745
862
  },
746
863
  {
747
- "name": "admin",
864
+ "name": "authority",
748
865
  "isMut": false,
749
866
  "isSigner": true
750
867
  },
751
868
  {
752
- "name": "bank",
753
- "isMut": false,
754
- "isSigner": false
755
- },
756
- {
757
- "name": "bankVault",
758
- "isMut": true,
759
- "isSigner": false
760
- },
761
- {
762
- "name": "bankVaultAuthority",
763
- "isMut": true,
764
- "isSigner": false
765
- },
766
- {
767
- "name": "market",
869
+ "name": "liquidator",
768
870
  "isMut": true,
769
871
  "isSigner": false
770
872
  },
771
873
  {
772
- "name": "recipient",
874
+ "name": "user",
773
875
  "isMut": true,
774
876
  "isSigner": false
775
- },
776
- {
777
- "name": "tokenProgram",
778
- "isMut": false,
779
- "isSigner": false
780
877
  }
781
878
  ],
782
879
  "args": [
783
880
  {
784
- "name": "amount",
881
+ "name": "perpMarketIndex",
882
+ "type": "u64"
883
+ },
884
+ {
885
+ "name": "liabilityBankIndex",
785
886
  "type": "u64"
887
+ },
888
+ {
889
+ "name": "liquidatorMaxLiabilityTransfer",
890
+ "type": "u128"
786
891
  }
787
892
  ]
788
893
  },
789
894
  {
790
- "name": "withdrawFromInsuranceVault",
895
+ "name": "liquidatePerpPnlForDeposit",
791
896
  "accounts": [
792
897
  {
793
898
  "name": "state",
@@ -795,86 +900,69 @@
795
900
  "isSigner": false
796
901
  },
797
902
  {
798
- "name": "admin",
903
+ "name": "authority",
799
904
  "isMut": false,
800
905
  "isSigner": true
801
906
  },
802
907
  {
803
- "name": "insuranceVault",
908
+ "name": "liquidator",
804
909
  "isMut": true,
805
910
  "isSigner": false
806
911
  },
807
912
  {
808
- "name": "insuranceVaultAuthority",
809
- "isMut": false,
810
- "isSigner": false
811
- },
812
- {
813
- "name": "recipient",
913
+ "name": "user",
814
914
  "isMut": true,
815
915
  "isSigner": false
816
- },
817
- {
818
- "name": "tokenProgram",
819
- "isMut": false,
820
- "isSigner": false
821
916
  }
822
917
  ],
823
918
  "args": [
824
919
  {
825
- "name": "amount",
920
+ "name": "perpMarketIndex",
921
+ "type": "u64"
922
+ },
923
+ {
924
+ "name": "assetBankIndex",
826
925
  "type": "u64"
926
+ },
927
+ {
928
+ "name": "liquidatorMaxPnlTransfer",
929
+ "type": "u128"
827
930
  }
828
931
  ]
829
932
  },
830
933
  {
831
- "name": "withdrawFromInsuranceVaultToMarket",
934
+ "name": "resolvePerpBankruptcy",
832
935
  "accounts": [
833
936
  {
834
937
  "name": "state",
835
- "isMut": true,
836
- "isSigner": false
837
- },
838
- {
839
- "name": "market",
840
- "isMut": true,
938
+ "isMut": false,
841
939
  "isSigner": false
842
940
  },
843
941
  {
844
- "name": "admin",
942
+ "name": "authority",
845
943
  "isMut": false,
846
944
  "isSigner": true
847
945
  },
848
946
  {
849
- "name": "insuranceVault",
947
+ "name": "liquidator",
850
948
  "isMut": true,
851
949
  "isSigner": false
852
950
  },
853
951
  {
854
- "name": "insuranceVaultAuthority",
855
- "isMut": false,
856
- "isSigner": false
857
- },
858
- {
859
- "name": "bankVault",
952
+ "name": "user",
860
953
  "isMut": true,
861
954
  "isSigner": false
862
- },
863
- {
864
- "name": "tokenProgram",
865
- "isMut": false,
866
- "isSigner": false
867
955
  }
868
956
  ],
869
957
  "args": [
870
958
  {
871
- "name": "amount",
959
+ "name": "marketIndex",
872
960
  "type": "u64"
873
961
  }
874
962
  ]
875
963
  },
876
964
  {
877
- "name": "repegAmmCurve",
965
+ "name": "resolveBorrowBankruptcy",
878
966
  "accounts": [
879
967
  {
880
968
  "name": "state",
@@ -882,11 +970,215 @@
882
970
  "isSigner": false
883
971
  },
884
972
  {
885
- "name": "market",
886
- "isMut": true,
887
- "isSigner": false
888
- },
889
- {
973
+ "name": "authority",
974
+ "isMut": false,
975
+ "isSigner": true
976
+ },
977
+ {
978
+ "name": "liquidator",
979
+ "isMut": true,
980
+ "isSigner": false
981
+ },
982
+ {
983
+ "name": "user",
984
+ "isMut": true,
985
+ "isSigner": false
986
+ }
987
+ ],
988
+ "args": [
989
+ {
990
+ "name": "bankIndex",
991
+ "type": "u64"
992
+ }
993
+ ]
994
+ },
995
+ {
996
+ "name": "moveAmmPrice",
997
+ "accounts": [
998
+ {
999
+ "name": "state",
1000
+ "isMut": false,
1001
+ "isSigner": false
1002
+ },
1003
+ {
1004
+ "name": "admin",
1005
+ "isMut": false,
1006
+ "isSigner": true
1007
+ },
1008
+ {
1009
+ "name": "market",
1010
+ "isMut": true,
1011
+ "isSigner": false
1012
+ }
1013
+ ],
1014
+ "args": [
1015
+ {
1016
+ "name": "baseAssetReserve",
1017
+ "type": "u128"
1018
+ },
1019
+ {
1020
+ "name": "quoteAssetReserve",
1021
+ "type": "u128"
1022
+ }
1023
+ ]
1024
+ },
1025
+ {
1026
+ "name": "withdrawFromMarketToInsuranceVault",
1027
+ "accounts": [
1028
+ {
1029
+ "name": "state",
1030
+ "isMut": false,
1031
+ "isSigner": false
1032
+ },
1033
+ {
1034
+ "name": "admin",
1035
+ "isMut": false,
1036
+ "isSigner": true
1037
+ },
1038
+ {
1039
+ "name": "bank",
1040
+ "isMut": true,
1041
+ "isSigner": false
1042
+ },
1043
+ {
1044
+ "name": "bankVault",
1045
+ "isMut": true,
1046
+ "isSigner": false
1047
+ },
1048
+ {
1049
+ "name": "bankVaultAuthority",
1050
+ "isMut": true,
1051
+ "isSigner": false
1052
+ },
1053
+ {
1054
+ "name": "market",
1055
+ "isMut": true,
1056
+ "isSigner": false
1057
+ },
1058
+ {
1059
+ "name": "recipient",
1060
+ "isMut": true,
1061
+ "isSigner": false
1062
+ },
1063
+ {
1064
+ "name": "tokenProgram",
1065
+ "isMut": false,
1066
+ "isSigner": false
1067
+ }
1068
+ ],
1069
+ "args": [
1070
+ {
1071
+ "name": "amount",
1072
+ "type": "u64"
1073
+ }
1074
+ ]
1075
+ },
1076
+ {
1077
+ "name": "withdrawFromInsuranceVault",
1078
+ "accounts": [
1079
+ {
1080
+ "name": "state",
1081
+ "isMut": false,
1082
+ "isSigner": false
1083
+ },
1084
+ {
1085
+ "name": "admin",
1086
+ "isMut": false,
1087
+ "isSigner": true
1088
+ },
1089
+ {
1090
+ "name": "insuranceVault",
1091
+ "isMut": true,
1092
+ "isSigner": false
1093
+ },
1094
+ {
1095
+ "name": "insuranceVaultAuthority",
1096
+ "isMut": false,
1097
+ "isSigner": false
1098
+ },
1099
+ {
1100
+ "name": "recipient",
1101
+ "isMut": true,
1102
+ "isSigner": false
1103
+ },
1104
+ {
1105
+ "name": "tokenProgram",
1106
+ "isMut": false,
1107
+ "isSigner": false
1108
+ }
1109
+ ],
1110
+ "args": [
1111
+ {
1112
+ "name": "amount",
1113
+ "type": "u64"
1114
+ }
1115
+ ]
1116
+ },
1117
+ {
1118
+ "name": "withdrawFromInsuranceVaultToMarket",
1119
+ "accounts": [
1120
+ {
1121
+ "name": "state",
1122
+ "isMut": true,
1123
+ "isSigner": false
1124
+ },
1125
+ {
1126
+ "name": "market",
1127
+ "isMut": true,
1128
+ "isSigner": false
1129
+ },
1130
+ {
1131
+ "name": "admin",
1132
+ "isMut": false,
1133
+ "isSigner": true
1134
+ },
1135
+ {
1136
+ "name": "insuranceVault",
1137
+ "isMut": true,
1138
+ "isSigner": false
1139
+ },
1140
+ {
1141
+ "name": "insuranceVaultAuthority",
1142
+ "isMut": false,
1143
+ "isSigner": false
1144
+ },
1145
+ {
1146
+ "name": "bank",
1147
+ "isMut": true,
1148
+ "isSigner": false
1149
+ },
1150
+ {
1151
+ "name": "bankVault",
1152
+ "isMut": true,
1153
+ "isSigner": false
1154
+ },
1155
+ {
1156
+ "name": "tokenProgram",
1157
+ "isMut": false,
1158
+ "isSigner": false
1159
+ }
1160
+ ],
1161
+ "args": [
1162
+ {
1163
+ "name": "amount",
1164
+ "type": "u64"
1165
+ }
1166
+ ]
1167
+ },
1168
+ {
1169
+ "name": "repegAmmCurve",
1170
+ "accounts": [
1171
+ {
1172
+ "name": "state",
1173
+ "isMut": false,
1174
+ "isSigner": false
1175
+ },
1176
+ {
1177
+ "name": "market",
1178
+ "isMut": true,
1179
+ "isSigner": false
1180
+ },
1181
+ {
890
1182
  "name": "oracle",
891
1183
  "isMut": false,
892
1184
  "isSigner": false
@@ -953,16 +1245,210 @@
953
1245
  "isMut": false,
954
1246
  "isSigner": true
955
1247
  }
956
- ],
957
- "args": []
1248
+ ],
1249
+ "args": []
1250
+ },
1251
+ {
1252
+ "name": "initializeUser",
1253
+ "accounts": [
1254
+ {
1255
+ "name": "user",
1256
+ "isMut": true,
1257
+ "isSigner": false
1258
+ },
1259
+ {
1260
+ "name": "userStats",
1261
+ "isMut": true,
1262
+ "isSigner": false
1263
+ },
1264
+ {
1265
+ "name": "state",
1266
+ "isMut": false,
1267
+ "isSigner": false
1268
+ },
1269
+ {
1270
+ "name": "authority",
1271
+ "isMut": false,
1272
+ "isSigner": true
1273
+ },
1274
+ {
1275
+ "name": "payer",
1276
+ "isMut": true,
1277
+ "isSigner": true
1278
+ },
1279
+ {
1280
+ "name": "rent",
1281
+ "isMut": false,
1282
+ "isSigner": false
1283
+ },
1284
+ {
1285
+ "name": "systemProgram",
1286
+ "isMut": false,
1287
+ "isSigner": false
1288
+ }
1289
+ ],
1290
+ "args": [
1291
+ {
1292
+ "name": "userId",
1293
+ "type": "u8"
1294
+ },
1295
+ {
1296
+ "name": "name",
1297
+ "type": {
1298
+ "array": [
1299
+ "u8",
1300
+ 32
1301
+ ]
1302
+ }
1303
+ }
1304
+ ]
1305
+ },
1306
+ {
1307
+ "name": "initializeUserStats",
1308
+ "accounts": [
1309
+ {
1310
+ "name": "userStats",
1311
+ "isMut": true,
1312
+ "isSigner": false
1313
+ },
1314
+ {
1315
+ "name": "state",
1316
+ "isMut": false,
1317
+ "isSigner": false
1318
+ },
1319
+ {
1320
+ "name": "authority",
1321
+ "isMut": false,
1322
+ "isSigner": true
1323
+ },
1324
+ {
1325
+ "name": "payer",
1326
+ "isMut": true,
1327
+ "isSigner": true
1328
+ },
1329
+ {
1330
+ "name": "rent",
1331
+ "isMut": false,
1332
+ "isSigner": false
1333
+ },
1334
+ {
1335
+ "name": "systemProgram",
1336
+ "isMut": false,
1337
+ "isSigner": false
1338
+ }
1339
+ ],
1340
+ "args": []
1341
+ },
1342
+ {
1343
+ "name": "settleFundingPayment",
1344
+ "accounts": [
1345
+ {
1346
+ "name": "state",
1347
+ "isMut": false,
1348
+ "isSigner": false
1349
+ },
1350
+ {
1351
+ "name": "user",
1352
+ "isMut": true,
1353
+ "isSigner": false
1354
+ }
1355
+ ],
1356
+ "args": []
1357
+ },
1358
+ {
1359
+ "name": "updateFundingRate",
1360
+ "accounts": [
1361
+ {
1362
+ "name": "state",
1363
+ "isMut": false,
1364
+ "isSigner": false
1365
+ },
1366
+ {
1367
+ "name": "market",
1368
+ "isMut": true,
1369
+ "isSigner": false
1370
+ },
1371
+ {
1372
+ "name": "oracle",
1373
+ "isMut": false,
1374
+ "isSigner": false
1375
+ }
1376
+ ],
1377
+ "args": [
1378
+ {
1379
+ "name": "marketIndex",
1380
+ "type": "u64"
1381
+ }
1382
+ ]
1383
+ },
1384
+ {
1385
+ "name": "updateK",
1386
+ "accounts": [
1387
+ {
1388
+ "name": "admin",
1389
+ "isMut": false,
1390
+ "isSigner": true
1391
+ },
1392
+ {
1393
+ "name": "state",
1394
+ "isMut": false,
1395
+ "isSigner": false
1396
+ },
1397
+ {
1398
+ "name": "market",
1399
+ "isMut": true,
1400
+ "isSigner": false
1401
+ },
1402
+ {
1403
+ "name": "oracle",
1404
+ "isMut": false,
1405
+ "isSigner": false
1406
+ }
1407
+ ],
1408
+ "args": [
1409
+ {
1410
+ "name": "sqrtK",
1411
+ "type": "u128"
1412
+ }
1413
+ ]
1414
+ },
1415
+ {
1416
+ "name": "updateMarginRatio",
1417
+ "accounts": [
1418
+ {
1419
+ "name": "admin",
1420
+ "isMut": false,
1421
+ "isSigner": true
1422
+ },
1423
+ {
1424
+ "name": "state",
1425
+ "isMut": false,
1426
+ "isSigner": false
1427
+ },
1428
+ {
1429
+ "name": "market",
1430
+ "isMut": true,
1431
+ "isSigner": false
1432
+ }
1433
+ ],
1434
+ "args": [
1435
+ {
1436
+ "name": "marginRatioInitial",
1437
+ "type": "u32"
1438
+ },
1439
+ {
1440
+ "name": "marginRatioMaintenance",
1441
+ "type": "u32"
1442
+ }
1443
+ ]
958
1444
  },
959
1445
  {
960
- "name": "initializeUser",
1446
+ "name": "updatePerpLiquidationFee",
961
1447
  "accounts": [
962
1448
  {
963
- "name": "user",
964
- "isMut": true,
965
- "isSigner": false
1449
+ "name": "admin",
1450
+ "isMut": false,
1451
+ "isSigner": true
966
1452
  },
967
1453
  {
968
1454
  "name": "state",
@@ -970,61 +1456,78 @@
970
1456
  "isSigner": false
971
1457
  },
972
1458
  {
973
- "name": "authority",
974
- "isMut": false,
975
- "isSigner": true
976
- },
977
- {
978
- "name": "payer",
1459
+ "name": "market",
979
1460
  "isMut": true,
1461
+ "isSigner": false
1462
+ }
1463
+ ],
1464
+ "args": [
1465
+ {
1466
+ "name": "liquidationFee",
1467
+ "type": "u128"
1468
+ }
1469
+ ]
1470
+ },
1471
+ {
1472
+ "name": "updateBankLiquidationFee",
1473
+ "accounts": [
1474
+ {
1475
+ "name": "admin",
1476
+ "isMut": false,
980
1477
  "isSigner": true
981
1478
  },
982
1479
  {
983
- "name": "rent",
1480
+ "name": "state",
984
1481
  "isMut": false,
985
1482
  "isSigner": false
986
1483
  },
987
1484
  {
988
- "name": "systemProgram",
989
- "isMut": false,
1485
+ "name": "bank",
1486
+ "isMut": true,
990
1487
  "isSigner": false
991
1488
  }
992
1489
  ],
993
1490
  "args": [
994
1491
  {
995
- "name": "userId",
996
- "type": "u8"
997
- },
998
- {
999
- "name": "name",
1000
- "type": {
1001
- "array": [
1002
- "u8",
1003
- 32
1004
- ]
1005
- }
1492
+ "name": "liquidationFee",
1493
+ "type": "u128"
1006
1494
  }
1007
1495
  ]
1008
1496
  },
1009
1497
  {
1010
- "name": "settleFundingPayment",
1498
+ "name": "updateBankWithdrawGuardThreshold",
1011
1499
  "accounts": [
1500
+ {
1501
+ "name": "admin",
1502
+ "isMut": false,
1503
+ "isSigner": true
1504
+ },
1012
1505
  {
1013
1506
  "name": "state",
1014
1507
  "isMut": false,
1015
1508
  "isSigner": false
1016
1509
  },
1017
1510
  {
1018
- "name": "user",
1511
+ "name": "bank",
1019
1512
  "isMut": true,
1020
1513
  "isSigner": false
1021
1514
  }
1022
1515
  ],
1023
- "args": []
1516
+ "args": [
1517
+ {
1518
+ "name": "withdrawGuardThreshold",
1519
+ "type": "u128"
1520
+ }
1521
+ ]
1024
1522
  },
1025
1523
  {
1026
- "name": "updateFundingRate",
1524
+ "name": "updateMarketImfFactor",
1027
1525
  "accounts": [
1526
+ {
1527
+ "name": "admin",
1528
+ "isMut": false,
1529
+ "isSigner": true
1530
+ },
1028
1531
  {
1029
1532
  "name": "state",
1030
1533
  "isMut": false,
@@ -1034,22 +1537,17 @@
1034
1537
  "name": "market",
1035
1538
  "isMut": true,
1036
1539
  "isSigner": false
1037
- },
1038
- {
1039
- "name": "oracle",
1040
- "isMut": false,
1041
- "isSigner": false
1042
1540
  }
1043
1541
  ],
1044
1542
  "args": [
1045
1543
  {
1046
- "name": "marketIndex",
1047
- "type": "u64"
1544
+ "name": "imfFactor",
1545
+ "type": "u128"
1048
1546
  }
1049
1547
  ]
1050
1548
  },
1051
1549
  {
1052
- "name": "updateK",
1550
+ "name": "updateMarketUnrealizedAssetWeight",
1053
1551
  "accounts": [
1054
1552
  {
1055
1553
  "name": "admin",
@@ -1065,22 +1563,21 @@
1065
1563
  "name": "market",
1066
1564
  "isMut": true,
1067
1565
  "isSigner": false
1068
- },
1069
- {
1070
- "name": "oracle",
1071
- "isMut": false,
1072
- "isSigner": false
1073
1566
  }
1074
1567
  ],
1075
1568
  "args": [
1076
1569
  {
1077
- "name": "sqrtK",
1078
- "type": "u128"
1570
+ "name": "unrealizedInitialAssetWeight",
1571
+ "type": "u8"
1572
+ },
1573
+ {
1574
+ "name": "unrealizedMaintenanceAssetWeight",
1575
+ "type": "u8"
1079
1576
  }
1080
1577
  ]
1081
1578
  },
1082
1579
  {
1083
- "name": "updateMarginRatio",
1580
+ "name": "updateCurveUpdateIntensity",
1084
1581
  "accounts": [
1085
1582
  {
1086
1583
  "name": "admin",
@@ -1100,21 +1597,13 @@
1100
1597
  ],
1101
1598
  "args": [
1102
1599
  {
1103
- "name": "marginRatioInitial",
1104
- "type": "u32"
1105
- },
1106
- {
1107
- "name": "marginRatioPartial",
1108
- "type": "u32"
1109
- },
1110
- {
1111
- "name": "marginRatioMaintenance",
1112
- "type": "u32"
1600
+ "name": "curveUpdateIntensity",
1601
+ "type": "u8"
1113
1602
  }
1114
1603
  ]
1115
1604
  },
1116
1605
  {
1117
- "name": "updateCurveUpdateIntensity",
1606
+ "name": "updateLpCooldownTime",
1118
1607
  "accounts": [
1119
1608
  {
1120
1609
  "name": "admin",
@@ -1134,8 +1623,8 @@
1134
1623
  ],
1135
1624
  "args": [
1136
1625
  {
1137
- "name": "curveUpdateIntensity",
1138
- "type": "u8"
1626
+ "name": "lpCooldownTime",
1627
+ "type": "i64"
1139
1628
  }
1140
1629
  ]
1141
1630
  },
@@ -1461,6 +1950,58 @@
1461
1950
  }
1462
1951
  ]
1463
1952
  },
1953
+ {
1954
+ "name": "updateMarketMaxSlippageRatio",
1955
+ "accounts": [
1956
+ {
1957
+ "name": "admin",
1958
+ "isMut": false,
1959
+ "isSigner": true
1960
+ },
1961
+ {
1962
+ "name": "state",
1963
+ "isMut": false,
1964
+ "isSigner": false
1965
+ },
1966
+ {
1967
+ "name": "market",
1968
+ "isMut": true,
1969
+ "isSigner": false
1970
+ }
1971
+ ],
1972
+ "args": [
1973
+ {
1974
+ "name": "maxSlippageRatio",
1975
+ "type": "u16"
1976
+ }
1977
+ ]
1978
+ },
1979
+ {
1980
+ "name": "updateMaxBaseAssetAmountRatio",
1981
+ "accounts": [
1982
+ {
1983
+ "name": "admin",
1984
+ "isMut": false,
1985
+ "isSigner": true
1986
+ },
1987
+ {
1988
+ "name": "state",
1989
+ "isMut": false,
1990
+ "isSigner": false
1991
+ },
1992
+ {
1993
+ "name": "market",
1994
+ "isMut": true,
1995
+ "isSigner": false
1996
+ }
1997
+ ],
1998
+ "args": [
1999
+ {
2000
+ "name": "maxBaseAssetAmountRatio",
2001
+ "type": "u16"
2002
+ }
2003
+ ]
2004
+ },
1464
2005
  {
1465
2006
  "name": "updateAdmin",
1466
2007
  "accounts": [
@@ -1583,7 +2124,7 @@
1583
2124
  ]
1584
2125
  },
1585
2126
  {
1586
- "name": "updateOrderAuctionTime",
2127
+ "name": "updateAuctionDuration",
1587
2128
  "accounts": [
1588
2129
  {
1589
2130
  "name": "admin",
@@ -1598,7 +2139,11 @@
1598
2139
  ],
1599
2140
  "args": [
1600
2141
  {
1601
- "name": "orderAuctionTime",
2142
+ "name": "minAuctionDuration",
2143
+ "type": "u8"
2144
+ },
2145
+ {
2146
+ "name": "maxAuctionDuration",
1602
2147
  "type": "u8"
1603
2148
  }
1604
2149
  ]
@@ -1668,6 +2213,18 @@
1668
2213
  "name": "borrowBalance",
1669
2214
  "type": "u128"
1670
2215
  },
2216
+ {
2217
+ "name": "depositTokenTwap",
2218
+ "type": "u128"
2219
+ },
2220
+ {
2221
+ "name": "borrowTokenTwap",
2222
+ "type": "u128"
2223
+ },
2224
+ {
2225
+ "name": "utilizationTwap",
2226
+ "type": "u128"
2227
+ },
1671
2228
  {
1672
2229
  "name": "cumulativeDepositInterest",
1673
2230
  "type": "u128"
@@ -1677,7 +2234,11 @@
1677
2234
  "type": "u128"
1678
2235
  },
1679
2236
  {
1680
- "name": "lastUpdated",
2237
+ "name": "lastInterestTs",
2238
+ "type": "u64"
2239
+ },
2240
+ {
2241
+ "name": "lastTwapTs",
1681
2242
  "type": "u64"
1682
2243
  },
1683
2244
  {
@@ -1695,6 +2256,18 @@
1695
2256
  {
1696
2257
  "name": "maintenanceLiabilityWeight",
1697
2258
  "type": "u128"
2259
+ },
2260
+ {
2261
+ "name": "imfFactor",
2262
+ "type": "u128"
2263
+ },
2264
+ {
2265
+ "name": "liquidationFee",
2266
+ "type": "u128"
2267
+ },
2268
+ {
2269
+ "name": "withdrawGuardThreshold",
2270
+ "type": "u128"
1698
2271
  }
1699
2272
  ]
1700
2273
  }
@@ -1738,10 +2311,6 @@
1738
2311
  "name": "marginRatioInitial",
1739
2312
  "type": "u32"
1740
2313
  },
1741
- {
1742
- "name": "marginRatioPartial",
1743
- "type": "u32"
1744
- },
1745
2314
  {
1746
2315
  "name": "marginRatioMaintenance",
1747
2316
  "type": "u32"
@@ -1765,11 +2334,23 @@
1765
2334
  }
1766
2335
  },
1767
2336
  {
1768
- "name": "unsettledProfit",
2337
+ "name": "imfFactor",
2338
+ "type": "u128"
2339
+ },
2340
+ {
2341
+ "name": "unrealizedInitialAssetWeight",
2342
+ "type": "u8"
2343
+ },
2344
+ {
2345
+ "name": "unrealizedMaintenanceAssetWeight",
2346
+ "type": "u8"
2347
+ },
2348
+ {
2349
+ "name": "unrealizedImfFactor",
1769
2350
  "type": "u128"
1770
2351
  },
1771
2352
  {
1772
- "name": "unsettledLoss",
2353
+ "name": "liquidationFee",
1773
2354
  "type": "u128"
1774
2355
  },
1775
2356
  {
@@ -1905,7 +2486,15 @@
1905
2486
  "type": "u128"
1906
2487
  },
1907
2488
  {
1908
- "name": "orderAuctionDuration",
2489
+ "name": "minAuctionDuration",
2490
+ "type": "u8"
2491
+ },
2492
+ {
2493
+ "name": "maxAuctionDuration",
2494
+ "type": "u8"
2495
+ },
2496
+ {
2497
+ "name": "liquidationMarginBufferRatio",
1909
2498
  "type": "u8"
1910
2499
  },
1911
2500
  {
@@ -1952,6 +2541,72 @@
1952
2541
  ]
1953
2542
  }
1954
2543
  },
2544
+ {
2545
+ "name": "nextOrderId",
2546
+ "type": "u64"
2547
+ },
2548
+ {
2549
+ "name": "positions",
2550
+ "type": {
2551
+ "array": [
2552
+ {
2553
+ "defined": "MarketPosition"
2554
+ },
2555
+ 5
2556
+ ]
2557
+ }
2558
+ },
2559
+ {
2560
+ "name": "orders",
2561
+ "type": {
2562
+ "array": [
2563
+ {
2564
+ "defined": "Order"
2565
+ },
2566
+ 32
2567
+ ]
2568
+ }
2569
+ },
2570
+ {
2571
+ "name": "nextLiquidationId",
2572
+ "type": "u16"
2573
+ },
2574
+ {
2575
+ "name": "beingLiquidated",
2576
+ "type": "bool"
2577
+ },
2578
+ {
2579
+ "name": "bankrupt",
2580
+ "type": "bool"
2581
+ }
2582
+ ]
2583
+ }
2584
+ },
2585
+ {
2586
+ "name": "UserStats",
2587
+ "type": {
2588
+ "kind": "struct",
2589
+ "fields": [
2590
+ {
2591
+ "name": "authority",
2592
+ "type": "publicKey"
2593
+ },
2594
+ {
2595
+ "name": "numberOfUsers",
2596
+ "type": "u8"
2597
+ },
2598
+ {
2599
+ "name": "isReferrer",
2600
+ "type": "bool"
2601
+ },
2602
+ {
2603
+ "name": "referrer",
2604
+ "type": "publicKey"
2605
+ },
2606
+ {
2607
+ "name": "totalReferrerReward",
2608
+ "type": "u128"
2609
+ },
1955
2610
  {
1956
2611
  "name": "fees",
1957
2612
  "type": {
@@ -1959,30 +2614,28 @@
1959
2614
  }
1960
2615
  },
1961
2616
  {
1962
- "name": "nextOrderId",
2617
+ "name": "makerVolume30d",
1963
2618
  "type": "u64"
1964
2619
  },
1965
2620
  {
1966
- "name": "positions",
1967
- "type": {
1968
- "array": [
1969
- {
1970
- "defined": "MarketPosition"
1971
- },
1972
- 5
1973
- ]
1974
- }
2621
+ "name": "takerVolume30d",
2622
+ "type": "u64"
1975
2623
  },
1976
2624
  {
1977
- "name": "orders",
1978
- "type": {
1979
- "array": [
1980
- {
1981
- "defined": "Order"
1982
- },
1983
- 32
1984
- ]
1985
- }
2625
+ "name": "fillerVolume30d",
2626
+ "type": "u64"
2627
+ },
2628
+ {
2629
+ "name": "lastMakerVolume30dTs",
2630
+ "type": "i64"
2631
+ },
2632
+ {
2633
+ "name": "lastTakerVolume30dTs",
2634
+ "type": "i64"
2635
+ },
2636
+ {
2637
+ "name": "lastFillerVolume30dTs",
2638
+ "type": "i64"
1986
2639
  }
1987
2640
  ]
1988
2641
  }
@@ -2010,10 +2663,6 @@
2010
2663
  "name": "userOrderId",
2011
2664
  "type": "u8"
2012
2665
  },
2013
- {
2014
- "name": "quoteAssetAmount",
2015
- "type": "u128"
2016
- },
2017
2666
  {
2018
2667
  "name": "baseAssetAmount",
2019
2668
  "type": "u128"
@@ -2062,6 +2711,10 @@
2062
2711
  "name": "oraclePriceOffset",
2063
2712
  "type": "i128"
2064
2713
  },
2714
+ {
2715
+ "name": "auctionDuration",
2716
+ "type": "u8"
2717
+ },
2065
2718
  {
2066
2719
  "name": "padding0",
2067
2720
  "type": "bool"
@@ -2089,6 +2742,196 @@
2089
2742
  ]
2090
2743
  }
2091
2744
  },
2745
+ {
2746
+ "name": "LiquidatePerpRecord",
2747
+ "type": {
2748
+ "kind": "struct",
2749
+ "fields": [
2750
+ {
2751
+ "name": "marketIndex",
2752
+ "type": "u64"
2753
+ },
2754
+ {
2755
+ "name": "orderIds",
2756
+ "type": {
2757
+ "vec": "u64"
2758
+ }
2759
+ },
2760
+ {
2761
+ "name": "canceledOrdersFee",
2762
+ "type": "u128"
2763
+ },
2764
+ {
2765
+ "name": "oraclePrice",
2766
+ "type": "i128"
2767
+ },
2768
+ {
2769
+ "name": "baseAssetAmount",
2770
+ "type": "i128"
2771
+ },
2772
+ {
2773
+ "name": "quoteAssetAmount",
2774
+ "type": "i128"
2775
+ },
2776
+ {
2777
+ "name": "userPnl",
2778
+ "type": "i128"
2779
+ },
2780
+ {
2781
+ "name": "liquidatorPnl",
2782
+ "type": "i128"
2783
+ },
2784
+ {
2785
+ "name": "fillRecordId",
2786
+ "type": "u64"
2787
+ },
2788
+ {
2789
+ "name": "userOrderId",
2790
+ "type": "u64"
2791
+ },
2792
+ {
2793
+ "name": "liquidatorOrderId",
2794
+ "type": "u64"
2795
+ }
2796
+ ]
2797
+ }
2798
+ },
2799
+ {
2800
+ "name": "LiquidateBorrowRecord",
2801
+ "type": {
2802
+ "kind": "struct",
2803
+ "fields": [
2804
+ {
2805
+ "name": "assetBankIndex",
2806
+ "type": "u64"
2807
+ },
2808
+ {
2809
+ "name": "assetPrice",
2810
+ "type": "i128"
2811
+ },
2812
+ {
2813
+ "name": "assetTransfer",
2814
+ "type": "u128"
2815
+ },
2816
+ {
2817
+ "name": "liabilityBankIndex",
2818
+ "type": "u64"
2819
+ },
2820
+ {
2821
+ "name": "liabilityPrice",
2822
+ "type": "i128"
2823
+ },
2824
+ {
2825
+ "name": "liabilityTransfer",
2826
+ "type": "u128"
2827
+ }
2828
+ ]
2829
+ }
2830
+ },
2831
+ {
2832
+ "name": "LiquidateBorrowForPerpPnlRecord",
2833
+ "type": {
2834
+ "kind": "struct",
2835
+ "fields": [
2836
+ {
2837
+ "name": "marketIndex",
2838
+ "type": "u64"
2839
+ },
2840
+ {
2841
+ "name": "marketOraclePrice",
2842
+ "type": "i128"
2843
+ },
2844
+ {
2845
+ "name": "pnlTransfer",
2846
+ "type": "u128"
2847
+ },
2848
+ {
2849
+ "name": "liabilityBankIndex",
2850
+ "type": "u64"
2851
+ },
2852
+ {
2853
+ "name": "liabilityPrice",
2854
+ "type": "i128"
2855
+ },
2856
+ {
2857
+ "name": "liabilityTransfer",
2858
+ "type": "u128"
2859
+ }
2860
+ ]
2861
+ }
2862
+ },
2863
+ {
2864
+ "name": "LiquidatePerpPnlForDepositRecord",
2865
+ "type": {
2866
+ "kind": "struct",
2867
+ "fields": [
2868
+ {
2869
+ "name": "marketIndex",
2870
+ "type": "u64"
2871
+ },
2872
+ {
2873
+ "name": "marketOraclePrice",
2874
+ "type": "i128"
2875
+ },
2876
+ {
2877
+ "name": "pnlTransfer",
2878
+ "type": "u128"
2879
+ },
2880
+ {
2881
+ "name": "assetBankIndex",
2882
+ "type": "u64"
2883
+ },
2884
+ {
2885
+ "name": "assetPrice",
2886
+ "type": "i128"
2887
+ },
2888
+ {
2889
+ "name": "assetTransfer",
2890
+ "type": "u128"
2891
+ }
2892
+ ]
2893
+ }
2894
+ },
2895
+ {
2896
+ "name": "PerpBankruptcyRecord",
2897
+ "type": {
2898
+ "kind": "struct",
2899
+ "fields": [
2900
+ {
2901
+ "name": "marketIndex",
2902
+ "type": "u64"
2903
+ },
2904
+ {
2905
+ "name": "pnl",
2906
+ "type": "i128"
2907
+ },
2908
+ {
2909
+ "name": "cumulativeFundingRateDelta",
2910
+ "type": "i128"
2911
+ }
2912
+ ]
2913
+ }
2914
+ },
2915
+ {
2916
+ "name": "BorrowBankruptcyRecord",
2917
+ "type": {
2918
+ "kind": "struct",
2919
+ "fields": [
2920
+ {
2921
+ "name": "bankIndex",
2922
+ "type": "u64"
2923
+ },
2924
+ {
2925
+ "name": "borrowAmount",
2926
+ "type": "u128"
2927
+ },
2928
+ {
2929
+ "name": "cumulativeDepositInterestDelta",
2930
+ "type": "u128"
2931
+ }
2932
+ ]
2933
+ }
2934
+ },
2092
2935
  {
2093
2936
  "name": "PoolBalance",
2094
2937
  "type": {
@@ -2136,6 +2979,10 @@
2136
2979
  "name": "lastOraclePriceTwap",
2137
2980
  "type": "i128"
2138
2981
  },
2982
+ {
2983
+ "name": "lastOraclePriceTwap5min",
2984
+ "type": "i128"
2985
+ },
2139
2986
  {
2140
2987
  "name": "lastOraclePriceTwapTs",
2141
2988
  "type": "i64"
@@ -2152,6 +2999,14 @@
2152
2999
  "name": "quoteAssetReserve",
2153
3000
  "type": "u128"
2154
3001
  },
3002
+ {
3003
+ "name": "minBaseAssetReserve",
3004
+ "type": "u128"
3005
+ },
3006
+ {
3007
+ "name": "maxBaseAssetReserve",
3008
+ "type": "u128"
3009
+ },
2155
3010
  {
2156
3011
  "name": "sqrtK",
2157
3012
  "type": "u128"
@@ -2170,16 +3025,50 @@
2170
3025
  },
2171
3026
  {
2172
3027
  "name": "quoteAssetAmountLong",
2173
- "type": "u128"
3028
+ "type": "i128"
2174
3029
  },
2175
3030
  {
2176
3031
  "name": "quoteAssetAmountShort",
3032
+ "type": "i128"
3033
+ },
3034
+ {
3035
+ "name": "quoteEntryAmountLong",
3036
+ "type": "i128"
3037
+ },
3038
+ {
3039
+ "name": "quoteEntryAmountShort",
3040
+ "type": "i128"
3041
+ },
3042
+ {
3043
+ "name": "netUnsettledLpBaseAssetAmount",
3044
+ "type": "i128"
3045
+ },
3046
+ {
3047
+ "name": "lpCooldownTime",
3048
+ "type": "i64"
3049
+ },
3050
+ {
3051
+ "name": "userLpShares",
2177
3052
  "type": "u128"
2178
3053
  },
3054
+ {
3055
+ "name": "marketPositionPerLp",
3056
+ "type": {
3057
+ "defined": "MarketPosition"
3058
+ }
3059
+ },
2179
3060
  {
2180
3061
  "name": "lastFundingRate",
2181
3062
  "type": "i128"
2182
3063
  },
3064
+ {
3065
+ "name": "lastFundingRateLong",
3066
+ "type": "i128"
3067
+ },
3068
+ {
3069
+ "name": "lastFundingRateShort",
3070
+ "type": "i128"
3071
+ },
2183
3072
  {
2184
3073
  "name": "lastFundingRateTs",
2185
3074
  "type": "i64"
@@ -2196,10 +3085,6 @@
2196
3085
  "name": "cumulativeFundingRateShort",
2197
3086
  "type": "i128"
2198
3087
  },
2199
- {
2200
- "name": "cumulativeFundingRateLp",
2201
- "type": "i128"
2202
- },
2203
3088
  {
2204
3089
  "name": "cumulativeRepegRebateLong",
2205
3090
  "type": "u128"
@@ -2216,6 +3101,10 @@
2216
3101
  "name": "lastMarkPriceTwap",
2217
3102
  "type": "u128"
2218
3103
  },
3104
+ {
3105
+ "name": "lastMarkPriceTwap5min",
3106
+ "type": "u128"
3107
+ },
2219
3108
  {
2220
3109
  "name": "lastMarkPriceTwapTs",
2221
3110
  "type": "i64"
@@ -2224,10 +3113,24 @@
2224
3113
  "name": "minimumQuoteAssetTradeSize",
2225
3114
  "type": "u128"
2226
3115
  },
3116
+ {
3117
+ "name": "maxBaseAssetAmountRatio",
3118
+ "type": "u16"
3119
+ },
3120
+ {
3121
+ "name": "maxSlippageRatio",
3122
+ "type": "u16"
3123
+ },
2227
3124
  {
2228
3125
  "name": "baseAssetAmountStepSize",
2229
3126
  "type": "u128"
2230
3127
  },
3128
+ {
3129
+ "name": "marketPosition",
3130
+ "type": {
3131
+ "defined": "MarketPosition"
3132
+ }
3133
+ },
2231
3134
  {
2232
3135
  "name": "baseSpread",
2233
3136
  "type": "u16"
@@ -2322,6 +3225,10 @@
2322
3225
  "name": "lastUpdateSlot",
2323
3226
  "type": "u64"
2324
3227
  },
3228
+ {
3229
+ "name": "lastOracleValid",
3230
+ "type": "bool"
3231
+ },
2325
3232
  {
2326
3233
  "name": "padding0",
2327
3234
  "type": "u16"
@@ -2439,6 +3346,10 @@
2439
3346
  "type": {
2440
3347
  "defined": "OrderFillerRewardStructure"
2441
3348
  }
3349
+ },
3350
+ {
3351
+ "name": "cancelOrderFee",
3352
+ "type": "u128"
2442
3353
  }
2443
3354
  ]
2444
3355
  }
@@ -2548,6 +3459,10 @@
2548
3459
  "name": "totalFeePaid",
2549
3460
  "type": "u64"
2550
3461
  },
3462
+ {
3463
+ "name": "totalLpFees",
3464
+ "type": "u128"
3465
+ },
2551
3466
  {
2552
3467
  "name": "totalFeeRebate",
2553
3468
  "type": "u64"
@@ -2556,10 +3471,6 @@
2556
3471
  "name": "totalTokenDiscount",
2557
3472
  "type": "u128"
2558
3473
  },
2559
- {
2560
- "name": "totalReferralReward",
2561
- "type": "u128"
2562
- },
2563
3474
  {
2564
3475
  "name": "totalRefereeDiscount",
2565
3476
  "type": "u128"
@@ -2604,11 +3515,11 @@
2604
3515
  },
2605
3516
  {
2606
3517
  "name": "quoteAssetAmount",
2607
- "type": "u128"
3518
+ "type": "i128"
2608
3519
  },
2609
3520
  {
2610
3521
  "name": "quoteEntryAmount",
2611
- "type": "u128"
3522
+ "type": "i128"
2612
3523
  },
2613
3524
  {
2614
3525
  "name": "lastCumulativeFundingRate",
@@ -2627,17 +3538,33 @@
2627
3538
  "type": "u128"
2628
3539
  },
2629
3540
  {
2630
- "name": "unsettledPnl",
3541
+ "name": "openBids",
2631
3542
  "type": "i128"
2632
3543
  },
2633
3544
  {
2634
- "name": "openBids",
3545
+ "name": "openAsks",
2635
3546
  "type": "i128"
2636
3547
  },
2637
3548
  {
2638
- "name": "openAsks",
3549
+ "name": "realizedPnl",
3550
+ "type": "i64"
3551
+ },
3552
+ {
3553
+ "name": "lpShares",
3554
+ "type": "u128"
3555
+ },
3556
+ {
3557
+ "name": "lastNetBaseAssetAmountPerLp",
3558
+ "type": "i128"
3559
+ },
3560
+ {
3561
+ "name": "lastNetQuoteAssetAmountPerLp",
2639
3562
  "type": "i128"
2640
3563
  },
3564
+ {
3565
+ "name": "lastLpAddTime",
3566
+ "type": "i64"
3567
+ },
2641
3568
  {
2642
3569
  "name": "padding0",
2643
3570
  "type": "u128"
@@ -2708,10 +3635,6 @@
2708
3635
  "defined": "PositionDirection"
2709
3636
  }
2710
3637
  },
2711
- {
2712
- "name": "quoteAssetAmount",
2713
- "type": "u128"
2714
- },
2715
3638
  {
2716
3639
  "name": "baseAssetAmount",
2717
3640
  "type": "u128"
@@ -2746,12 +3669,6 @@
2746
3669
  "name": "immediateOrCancel",
2747
3670
  "type": "bool"
2748
3671
  },
2749
- {
2750
- "name": "discountTier",
2751
- "type": {
2752
- "defined": "OrderDiscountTier"
2753
- }
2754
- },
2755
3672
  {
2756
3673
  "name": "triggerPrice",
2757
3674
  "type": "u128"
@@ -2766,10 +3683,6 @@
2766
3683
  "name": "triggered",
2767
3684
  "type": "bool"
2768
3685
  },
2769
- {
2770
- "name": "referrer",
2771
- "type": "publicKey"
2772
- },
2773
3686
  {
2774
3687
  "name": "oraclePriceOffset",
2775
3688
  "type": "i128"
@@ -2827,15 +3740,40 @@
2827
3740
  }
2828
3741
  },
2829
3742
  {
2830
- "name": "MarginRequirementType",
3743
+ "name": "TwapPeriod",
2831
3744
  "type": {
2832
3745
  "kind": "enum",
2833
3746
  "variants": [
2834
3747
  {
2835
- "name": "Initial"
3748
+ "name": "FundingPeriod"
3749
+ },
3750
+ {
3751
+ "name": "FiveMin"
3752
+ }
3753
+ ]
3754
+ }
3755
+ },
3756
+ {
3757
+ "name": "LiquidationMultiplierType",
3758
+ "type": {
3759
+ "kind": "enum",
3760
+ "variants": [
3761
+ {
3762
+ "name": "Discount"
2836
3763
  },
2837
3764
  {
2838
- "name": "Partial"
3765
+ "name": "Premium"
3766
+ }
3767
+ ]
3768
+ }
3769
+ },
3770
+ {
3771
+ "name": "MarginRequirementType",
3772
+ "type": {
3773
+ "kind": "enum",
3774
+ "variants": [
3775
+ {
3776
+ "name": "Initial"
2839
3777
  },
2840
3778
  {
2841
3779
  "name": "Maintenance"
@@ -2844,18 +3782,24 @@
2844
3782
  }
2845
3783
  },
2846
3784
  {
2847
- "name": "LiquidationType",
3785
+ "name": "PositionUpdateType",
2848
3786
  "type": {
2849
3787
  "kind": "enum",
2850
3788
  "variants": [
2851
3789
  {
2852
- "name": "NONE"
3790
+ "name": "Open"
3791
+ },
3792
+ {
3793
+ "name": "Increase"
2853
3794
  },
2854
3795
  {
2855
- "name": "PARTIAL"
3796
+ "name": "Reduce"
2856
3797
  },
2857
3798
  {
2858
- "name": "FULL"
3799
+ "name": "Close"
3800
+ },
3801
+ {
3802
+ "name": "Flip"
2859
3803
  }
2860
3804
  ]
2861
3805
  }
@@ -2924,6 +3868,47 @@
2924
3868
  },
2925
3869
  {
2926
3870
  "name": "OraclePriceBreachedLimitPrice"
3871
+ },
3872
+ {
3873
+ "name": "MarketOrderFilledToLimitPrice"
3874
+ },
3875
+ {
3876
+ "name": "MarketOrderAuctionExpired"
3877
+ },
3878
+ {
3879
+ "name": "CanceledForLiquidation"
3880
+ },
3881
+ {
3882
+ "name": "OrderFilledWithAMM"
3883
+ },
3884
+ {
3885
+ "name": "OrderFilledWithMatch"
3886
+ }
3887
+ ]
3888
+ }
3889
+ },
3890
+ {
3891
+ "name": "LiquidationType",
3892
+ "type": {
3893
+ "kind": "enum",
3894
+ "variants": [
3895
+ {
3896
+ "name": "LiquidatePerp"
3897
+ },
3898
+ {
3899
+ "name": "LiquidateBorrow"
3900
+ },
3901
+ {
3902
+ "name": "LiquidateBorrowForPerpPnl"
3903
+ },
3904
+ {
3905
+ "name": "LiquidatePerpPnlForDeposit"
3906
+ },
3907
+ {
3908
+ "name": "PerpBankruptcy"
3909
+ },
3910
+ {
3911
+ "name": "BorrowBankruptcy"
2927
3912
  }
2928
3913
  ]
2929
3914
  }
@@ -2999,29 +3984,6 @@
2999
3984
  ]
3000
3985
  }
3001
3986
  },
3002
- {
3003
- "name": "OrderDiscountTier",
3004
- "type": {
3005
- "kind": "enum",
3006
- "variants": [
3007
- {
3008
- "name": "None"
3009
- },
3010
- {
3011
- "name": "First"
3012
- },
3013
- {
3014
- "name": "Second"
3015
- },
3016
- {
3017
- "name": "Third"
3018
- },
3019
- {
3020
- "name": "Fourth"
3021
- }
3022
- ]
3023
- }
3024
- },
3025
3987
  {
3026
3988
  "name": "OrderTriggerCondition",
3027
3989
  "type": {
@@ -3038,6 +4000,46 @@
3038
4000
  }
3039
4001
  ],
3040
4002
  "events": [
4003
+ {
4004
+ "name": "NewUserRecord",
4005
+ "fields": [
4006
+ {
4007
+ "name": "ts",
4008
+ "type": "i64",
4009
+ "index": false
4010
+ },
4011
+ {
4012
+ "name": "userAuthority",
4013
+ "type": "publicKey",
4014
+ "index": false
4015
+ },
4016
+ {
4017
+ "name": "user",
4018
+ "type": "publicKey",
4019
+ "index": false
4020
+ },
4021
+ {
4022
+ "name": "userId",
4023
+ "type": "u8",
4024
+ "index": false
4025
+ },
4026
+ {
4027
+ "name": "name",
4028
+ "type": {
4029
+ "array": [
4030
+ "u8",
4031
+ 32
4032
+ ]
4033
+ },
4034
+ "index": false
4035
+ },
4036
+ {
4037
+ "name": "referrer",
4038
+ "type": "publicKey",
4039
+ "index": false
4040
+ }
4041
+ ]
4042
+ },
3041
4043
  {
3042
4044
  "name": "DepositRecord",
3043
4045
  "fields": [
@@ -3078,6 +4080,11 @@
3078
4080
  "type": "i128",
3079
4081
  "index": false
3080
4082
  },
4083
+ {
4084
+ "name": "referrer",
4085
+ "type": "publicKey",
4086
+ "index": false
4087
+ },
3081
4088
  {
3082
4089
  "name": "from",
3083
4090
  "type": {
@@ -3300,7 +4307,7 @@
3300
4307
  ]
3301
4308
  },
3302
4309
  {
3303
- "name": "LiquidationRecord",
4310
+ "name": "OrderRecord",
3304
4311
  "fields": [
3305
4312
  {
3306
4313
  "name": "ts",
@@ -3308,141 +4315,225 @@
3308
4315
  "index": false
3309
4316
  },
3310
4317
  {
3311
- "name": "userAuthority",
4318
+ "name": "slot",
4319
+ "type": "u64",
4320
+ "index": false
4321
+ },
4322
+ {
4323
+ "name": "taker",
3312
4324
  "type": "publicKey",
3313
4325
  "index": false
3314
4326
  },
3315
4327
  {
3316
- "name": "user",
4328
+ "name": "maker",
3317
4329
  "type": "publicKey",
3318
4330
  "index": false
3319
4331
  },
3320
4332
  {
3321
- "name": "partial",
3322
- "type": "bool",
4333
+ "name": "takerOrder",
4334
+ "type": {
4335
+ "defined": "Order"
4336
+ },
4337
+ "index": false
4338
+ },
4339
+ {
4340
+ "name": "makerOrder",
4341
+ "type": {
4342
+ "defined": "Order"
4343
+ },
4344
+ "index": false
4345
+ },
4346
+ {
4347
+ "name": "makerPnl",
4348
+ "type": "i128",
4349
+ "index": false
4350
+ },
4351
+ {
4352
+ "name": "takerPnl",
4353
+ "type": "i128",
4354
+ "index": false
4355
+ },
4356
+ {
4357
+ "name": "action",
4358
+ "type": {
4359
+ "defined": "OrderAction"
4360
+ },
4361
+ "index": false
4362
+ },
4363
+ {
4364
+ "name": "actionExplanation",
4365
+ "type": {
4366
+ "defined": "OrderActionExplanation"
4367
+ },
4368
+ "index": false
4369
+ },
4370
+ {
4371
+ "name": "filler",
4372
+ "type": "publicKey",
4373
+ "index": false
4374
+ },
4375
+ {
4376
+ "name": "fillRecordId",
4377
+ "type": "u64",
4378
+ "index": false
4379
+ },
4380
+ {
4381
+ "name": "marketIndex",
4382
+ "type": "u64",
3323
4383
  "index": false
3324
4384
  },
3325
4385
  {
3326
- "name": "baseAssetValue",
4386
+ "name": "baseAssetAmountFilled",
3327
4387
  "type": "u128",
3328
4388
  "index": false
3329
4389
  },
3330
4390
  {
3331
- "name": "baseAssetValueClosed",
4391
+ "name": "quoteAssetAmountFilled",
3332
4392
  "type": "u128",
3333
4393
  "index": false
3334
4394
  },
3335
4395
  {
3336
- "name": "liquidationFee",
4396
+ "name": "makerRebate",
3337
4397
  "type": "u128",
3338
4398
  "index": false
3339
4399
  },
3340
4400
  {
3341
- "name": "feeToLiquidator",
3342
- "type": "u64",
4401
+ "name": "takerFee",
4402
+ "type": "u128",
3343
4403
  "index": false
3344
4404
  },
3345
4405
  {
3346
- "name": "feeToInsuranceFund",
3347
- "type": "u64",
4406
+ "name": "fillerReward",
4407
+ "type": "u128",
3348
4408
  "index": false
3349
4409
  },
3350
4410
  {
3351
- "name": "liquidator",
4411
+ "name": "referrer",
3352
4412
  "type": "publicKey",
3353
4413
  "index": false
3354
4414
  },
3355
4415
  {
3356
- "name": "totalCollateral",
4416
+ "name": "referrerReward",
4417
+ "type": "u128",
4418
+ "index": false
4419
+ },
4420
+ {
4421
+ "name": "refereeDiscount",
3357
4422
  "type": "u128",
3358
4423
  "index": false
3359
4424
  },
3360
4425
  {
3361
- "name": "collateral",
4426
+ "name": "quoteAssetAmountSurplus",
3362
4427
  "type": "u128",
3363
4428
  "index": false
3364
4429
  },
3365
4430
  {
3366
- "name": "unrealizedPnl",
4431
+ "name": "oraclePrice",
3367
4432
  "type": "i128",
3368
4433
  "index": false
4434
+ }
4435
+ ]
4436
+ },
4437
+ {
4438
+ "name": "LiquidationRecord",
4439
+ "fields": [
4440
+ {
4441
+ "name": "ts",
4442
+ "type": "i64",
4443
+ "index": false
4444
+ },
4445
+ {
4446
+ "name": "liquidationType",
4447
+ "type": {
4448
+ "defined": "LiquidationType"
4449
+ },
4450
+ "index": false
4451
+ },
4452
+ {
4453
+ "name": "user",
4454
+ "type": "publicKey",
4455
+ "index": false
4456
+ },
4457
+ {
4458
+ "name": "liquidator",
4459
+ "type": "publicKey",
4460
+ "index": false
3369
4461
  },
3370
4462
  {
3371
- "name": "marginRatio",
4463
+ "name": "marginRequirement",
3372
4464
  "type": "u128",
3373
4465
  "index": false
3374
- }
3375
- ]
3376
- },
3377
- {
3378
- "name": "OrderRecord",
3379
- "fields": [
3380
- {
3381
- "name": "ts",
3382
- "type": "i64",
3383
- "index": false
3384
4466
  },
3385
4467
  {
3386
- "name": "slot",
3387
- "type": "u64",
4468
+ "name": "totalCollateral",
4469
+ "type": "i128",
3388
4470
  "index": false
3389
4471
  },
3390
4472
  {
3391
- "name": "taker",
3392
- "type": "publicKey",
4473
+ "name": "liquidationId",
4474
+ "type": "u16",
3393
4475
  "index": false
3394
4476
  },
3395
4477
  {
3396
- "name": "maker",
3397
- "type": "publicKey",
4478
+ "name": "bankrupt",
4479
+ "type": "bool",
3398
4480
  "index": false
3399
4481
  },
3400
4482
  {
3401
- "name": "takerOrder",
4483
+ "name": "liquidatePerp",
3402
4484
  "type": {
3403
- "defined": "Order"
4485
+ "defined": "LiquidatePerpRecord"
3404
4486
  },
3405
4487
  "index": false
3406
4488
  },
3407
4489
  {
3408
- "name": "makerOrder",
4490
+ "name": "liquidateBorrow",
3409
4491
  "type": {
3410
- "defined": "Order"
4492
+ "defined": "LiquidateBorrowRecord"
3411
4493
  },
3412
4494
  "index": false
3413
4495
  },
3414
4496
  {
3415
- "name": "makerUnsettledPnl",
3416
- "type": "i128",
4497
+ "name": "liquidateBorrowForPerpPnl",
4498
+ "type": {
4499
+ "defined": "LiquidateBorrowForPerpPnlRecord"
4500
+ },
3417
4501
  "index": false
3418
4502
  },
3419
4503
  {
3420
- "name": "takerUnsettledPnl",
3421
- "type": "i128",
4504
+ "name": "liquidatePerpPnlForDeposit",
4505
+ "type": {
4506
+ "defined": "LiquidatePerpPnlForDepositRecord"
4507
+ },
3422
4508
  "index": false
3423
4509
  },
3424
4510
  {
3425
- "name": "action",
4511
+ "name": "perpBankruptcy",
3426
4512
  "type": {
3427
- "defined": "OrderAction"
4513
+ "defined": "PerpBankruptcyRecord"
3428
4514
  },
3429
4515
  "index": false
3430
4516
  },
3431
4517
  {
3432
- "name": "actionExplanation",
4518
+ "name": "borrowBankruptcy",
3433
4519
  "type": {
3434
- "defined": "OrderActionExplanation"
4520
+ "defined": "BorrowBankruptcyRecord"
3435
4521
  },
3436
4522
  "index": false
3437
- },
4523
+ }
4524
+ ]
4525
+ },
4526
+ {
4527
+ "name": "SettlePnlRecord",
4528
+ "fields": [
3438
4529
  {
3439
- "name": "filler",
3440
- "type": "publicKey",
4530
+ "name": "ts",
4531
+ "type": "i64",
3441
4532
  "index": false
3442
4533
  },
3443
4534
  {
3444
- "name": "fillRecordId",
3445
- "type": "u64",
4535
+ "name": "user",
4536
+ "type": "publicKey",
3446
4537
  "index": false
3447
4538
  },
3448
4539
  {
@@ -3451,37 +4542,27 @@
3451
4542
  "index": false
3452
4543
  },
3453
4544
  {
3454
- "name": "baseAssetAmountFilled",
3455
- "type": "u128",
3456
- "index": false
3457
- },
3458
- {
3459
- "name": "quoteAssetAmountFilled",
3460
- "type": "u128",
3461
- "index": false
3462
- },
3463
- {
3464
- "name": "makerRebate",
3465
- "type": "u128",
4545
+ "name": "pnl",
4546
+ "type": "i128",
3466
4547
  "index": false
3467
4548
  },
3468
4549
  {
3469
- "name": "takerFee",
3470
- "type": "u128",
4550
+ "name": "baseAssetAmount",
4551
+ "type": "i128",
3471
4552
  "index": false
3472
4553
  },
3473
4554
  {
3474
- "name": "fillerReward",
3475
- "type": "u128",
4555
+ "name": "quoteAssetAmountAfter",
4556
+ "type": "i128",
3476
4557
  "index": false
3477
4558
  },
3478
4559
  {
3479
- "name": "quoteAssetAmountSurplus",
3480
- "type": "u128",
4560
+ "name": "quoteEntryAmount",
4561
+ "type": "i128",
3481
4562
  "index": false
3482
4563
  },
3483
4564
  {
3484
- "name": "oraclePrice",
4565
+ "name": "settlePrice",
3485
4566
  "type": "i128",
3486
4567
  "index": false
3487
4568
  }
@@ -3636,313 +4717,453 @@
3636
4717
  },
3637
4718
  {
3638
4719
  "code": 6029,
3639
- "name": "InvalidReferrer",
3640
- "msg": "Invalid referrer"
4720
+ "name": "ReferrerNotFound",
4721
+ "msg": "Referrer not found"
3641
4722
  },
3642
4723
  {
3643
4724
  "code": 6030,
3644
- "name": "ReferrerNotFound",
3645
- "msg": "Referrer not found"
4725
+ "name": "ReferrerStatsNotFound",
4726
+ "msg": "ReferrerNotFound"
3646
4727
  },
3647
4728
  {
3648
4729
  "code": 6031,
4730
+ "name": "ReferrerMustBeWritable",
4731
+ "msg": "ReferrerMustBeWritable"
4732
+ },
4733
+ {
4734
+ "code": 6032,
4735
+ "name": "ReferrerStatsMustBeWritable",
4736
+ "msg": "ReferrerMustBeWritable"
4737
+ },
4738
+ {
4739
+ "code": 6033,
4740
+ "name": "ReferrerAndReferrerStatsAuthorityUnequal",
4741
+ "msg": "ReferrerAndReferrerStatsAuthorityUnequal"
4742
+ },
4743
+ {
4744
+ "code": 6034,
4745
+ "name": "InvalidReferrer",
4746
+ "msg": "InvalidReferrer"
4747
+ },
4748
+ {
4749
+ "code": 6035,
3649
4750
  "name": "InvalidOracle",
3650
4751
  "msg": "InvalidOracle"
3651
4752
  },
3652
4753
  {
3653
- "code": 6032,
4754
+ "code": 6036,
3654
4755
  "name": "OracleNotFound",
3655
4756
  "msg": "OracleNotFound"
3656
4757
  },
3657
4758
  {
3658
- "code": 6033,
4759
+ "code": 6037,
3659
4760
  "name": "LiquidationsBlockedByOracle",
3660
4761
  "msg": "Liquidations Blocked By Oracle"
3661
4762
  },
3662
4763
  {
3663
- "code": 6034,
4764
+ "code": 6038,
3664
4765
  "name": "UserMaxDeposit",
3665
4766
  "msg": "Can not deposit more than max deposit"
3666
4767
  },
3667
4768
  {
3668
- "code": 6035,
4769
+ "code": 6039,
3669
4770
  "name": "CantDeleteUserWithCollateral",
3670
4771
  "msg": "Can not delete user that still has collateral"
3671
4772
  },
3672
4773
  {
3673
- "code": 6036,
4774
+ "code": 6040,
3674
4775
  "name": "InvalidFundingProfitability",
3675
4776
  "msg": "AMM funding out of bounds pnl"
3676
4777
  },
3677
4778
  {
3678
- "code": 6037,
4779
+ "code": 6041,
3679
4780
  "name": "CastingFailure",
3680
4781
  "msg": "Casting Failure"
3681
4782
  },
3682
4783
  {
3683
- "code": 6038,
4784
+ "code": 6042,
3684
4785
  "name": "InvalidOrder",
3685
4786
  "msg": "Invalid Order"
3686
4787
  },
3687
4788
  {
3688
- "code": 6039,
4789
+ "code": 6043,
3689
4790
  "name": "UserHasNoOrder",
3690
4791
  "msg": "User has no order"
3691
4792
  },
3692
4793
  {
3693
- "code": 6040,
4794
+ "code": 6044,
3694
4795
  "name": "OrderAmountTooSmall",
3695
4796
  "msg": "Order Amount Too Small"
3696
4797
  },
3697
4798
  {
3698
- "code": 6041,
4799
+ "code": 6045,
3699
4800
  "name": "MaxNumberOfOrders",
3700
4801
  "msg": "Max number of orders taken"
3701
4802
  },
3702
4803
  {
3703
- "code": 6042,
4804
+ "code": 6046,
3704
4805
  "name": "OrderDoesNotExist",
3705
4806
  "msg": "Order does not exist"
3706
4807
  },
3707
4808
  {
3708
- "code": 6043,
4809
+ "code": 6047,
3709
4810
  "name": "OrderNotOpen",
3710
4811
  "msg": "Order not open"
3711
4812
  },
3712
4813
  {
3713
- "code": 6044,
3714
- "name": "CouldNotFillOrder",
3715
- "msg": "CouldNotFillOrder"
4814
+ "code": 6048,
4815
+ "name": "FillOrderDidNotUpdateState",
4816
+ "msg": "FillOrderDidNotUpdateState"
3716
4817
  },
3717
4818
  {
3718
- "code": 6045,
4819
+ "code": 6049,
3719
4820
  "name": "ReduceOnlyOrderIncreasedRisk",
3720
4821
  "msg": "Reduce only order increased risk"
3721
4822
  },
3722
4823
  {
3723
- "code": 6046,
4824
+ "code": 6050,
3724
4825
  "name": "UnableToLoadAccountLoader",
3725
4826
  "msg": "Unable to load AccountLoader"
3726
4827
  },
3727
4828
  {
3728
- "code": 6047,
4829
+ "code": 6051,
3729
4830
  "name": "TradeSizeTooLarge",
3730
4831
  "msg": "Trade Size Too Large"
3731
4832
  },
3732
4833
  {
3733
- "code": 6048,
4834
+ "code": 6052,
3734
4835
  "name": "UserCantReferThemselves",
3735
4836
  "msg": "User cant refer themselves"
3736
4837
  },
3737
4838
  {
3738
- "code": 6049,
4839
+ "code": 6053,
3739
4840
  "name": "DidNotReceiveExpectedReferrer",
3740
4841
  "msg": "Did not receive expected referrer"
3741
4842
  },
3742
4843
  {
3743
- "code": 6050,
4844
+ "code": 6054,
3744
4845
  "name": "CouldNotDeserializeReferrer",
3745
4846
  "msg": "Could not deserialize referrer"
3746
4847
  },
3747
4848
  {
3748
- "code": 6051,
4849
+ "code": 6055,
4850
+ "name": "CouldNotDeserializeReferrerStats",
4851
+ "msg": "Could not deserialize referrer stats"
4852
+ },
4853
+ {
4854
+ "code": 6056,
3749
4855
  "name": "UserOrderIdAlreadyInUse",
3750
4856
  "msg": "User Order Id Already In Use"
3751
4857
  },
3752
4858
  {
3753
- "code": 6052,
4859
+ "code": 6057,
3754
4860
  "name": "NoPositionsLiquidatable",
3755
4861
  "msg": "No positions liquidatable"
3756
4862
  },
3757
4863
  {
3758
- "code": 6053,
4864
+ "code": 6058,
3759
4865
  "name": "InvalidMarginRatio",
3760
4866
  "msg": "Invalid Margin Ratio"
3761
4867
  },
3762
4868
  {
3763
- "code": 6054,
4869
+ "code": 6059,
3764
4870
  "name": "CantCancelPostOnlyOrder",
3765
4871
  "msg": "Cant Cancel Post Only Order"
3766
4872
  },
3767
4873
  {
3768
- "code": 6055,
4874
+ "code": 6060,
3769
4875
  "name": "InvalidOracleOffset",
3770
4876
  "msg": "InvalidOracleOffset"
3771
4877
  },
3772
4878
  {
3773
- "code": 6056,
4879
+ "code": 6061,
3774
4880
  "name": "CantExpireOrders",
3775
4881
  "msg": "CantExpireOrders"
3776
4882
  },
3777
4883
  {
3778
- "code": 6057,
4884
+ "code": 6062,
3779
4885
  "name": "CouldNotLoadMarketData",
3780
4886
  "msg": "CouldNotLoadMarketData"
3781
4887
  },
3782
4888
  {
3783
- "code": 6058,
4889
+ "code": 6063,
3784
4890
  "name": "MarketNotFound",
3785
4891
  "msg": "MarketNotFound"
3786
4892
  },
3787
4893
  {
3788
- "code": 6059,
4894
+ "code": 6064,
3789
4895
  "name": "InvalidMarketAccount",
3790
4896
  "msg": "InvalidMarketAccount"
3791
4897
  },
3792
4898
  {
3793
- "code": 6060,
4899
+ "code": 6065,
3794
4900
  "name": "UnableToLoadMarketAccount",
3795
4901
  "msg": "UnableToLoadMarketAccount"
3796
4902
  },
3797
4903
  {
3798
- "code": 6061,
4904
+ "code": 6066,
3799
4905
  "name": "MarketWrongMutability",
3800
4906
  "msg": "MarketWrongMutability"
3801
4907
  },
3802
4908
  {
3803
- "code": 6062,
4909
+ "code": 6067,
3804
4910
  "name": "UnableToCastUnixTime",
3805
4911
  "msg": "UnableToCastUnixTime"
3806
4912
  },
3807
4913
  {
3808
- "code": 6063,
4914
+ "code": 6068,
3809
4915
  "name": "CouldNotFindBankBalance",
3810
4916
  "msg": "CouldNotFindBankBalance"
3811
4917
  },
3812
4918
  {
3813
- "code": 6064,
4919
+ "code": 6069,
3814
4920
  "name": "NoUserBankBalanceAvailable",
3815
4921
  "msg": "NoUserBankBalanceAvailable"
3816
4922
  },
3817
4923
  {
3818
- "code": 6065,
4924
+ "code": 6070,
3819
4925
  "name": "InvalidBankInitialization",
3820
4926
  "msg": "InvalidBankInitialization"
3821
4927
  },
3822
4928
  {
3823
- "code": 6066,
4929
+ "code": 6071,
3824
4930
  "name": "CouldNotLoadBankData",
3825
4931
  "msg": "CouldNotLoadBankData"
3826
4932
  },
3827
4933
  {
3828
- "code": 6067,
4934
+ "code": 6072,
3829
4935
  "name": "BankNotFound",
3830
4936
  "msg": "BankNotFound"
3831
4937
  },
3832
4938
  {
3833
- "code": 6068,
4939
+ "code": 6073,
3834
4940
  "name": "InvalidBankAccount",
3835
4941
  "msg": "InvalidBankAccount"
3836
4942
  },
3837
4943
  {
3838
- "code": 6069,
4944
+ "code": 6074,
3839
4945
  "name": "UnableToLoadBankAccount",
3840
4946
  "msg": "UnableToLoadBankAccount"
3841
4947
  },
3842
4948
  {
3843
- "code": 6070,
4949
+ "code": 6075,
3844
4950
  "name": "BankWrongMutability",
3845
4951
  "msg": "BankWrongMutability"
3846
4952
  },
3847
4953
  {
3848
- "code": 6071,
4954
+ "code": 6076,
3849
4955
  "name": "BankInterestNotUpToDate",
3850
4956
  "msg": "BankInterestNotUpToDate"
3851
4957
  },
3852
4958
  {
3853
- "code": 6072,
4959
+ "code": 6077,
3854
4960
  "name": "BankInsufficientDeposits",
3855
4961
  "msg": "BankInsufficientDeposits"
3856
4962
  },
3857
4963
  {
3858
- "code": 6073,
4964
+ "code": 6078,
3859
4965
  "name": "UserMustSettleTheirOwnPositiveUnsettledPNL",
3860
4966
  "msg": "UserMustSettleTheirOwnPositiveUnsettledPNL"
3861
4967
  },
3862
4968
  {
3863
- "code": 6074,
4969
+ "code": 6079,
3864
4970
  "name": "CantUpdatePoolBalanceType",
3865
4971
  "msg": "CantUpdatePoolBalanceType"
3866
4972
  },
3867
4973
  {
3868
- "code": 6075,
4974
+ "code": 6080,
3869
4975
  "name": "InsufficientCollateralForSettlingPNL",
3870
4976
  "msg": "InsufficientCollateralForSettlingPNL"
3871
4977
  },
3872
4978
  {
3873
- "code": 6076,
4979
+ "code": 6081,
3874
4980
  "name": "AMMNotUpdatedInSameSlot",
3875
4981
  "msg": "AMMNotUpdatedInSameSlot"
3876
4982
  },
3877
4983
  {
3878
- "code": 6077,
4984
+ "code": 6082,
3879
4985
  "name": "AuctionNotComplete",
3880
4986
  "msg": "AuctionNotComplete"
3881
4987
  },
3882
4988
  {
3883
- "code": 6078,
4989
+ "code": 6083,
3884
4990
  "name": "MakerNotFound",
3885
4991
  "msg": "MakerNotFound"
3886
4992
  },
3887
4993
  {
3888
- "code": 6079,
4994
+ "code": 6084,
4995
+ "name": "MakerStatsNotFound",
4996
+ "msg": "MakerNotFound"
4997
+ },
4998
+ {
4999
+ "code": 6085,
3889
5000
  "name": "MakerMustBeWritable",
3890
5001
  "msg": "MakerMustBeWritable"
3891
5002
  },
3892
5003
  {
3893
- "code": 6080,
5004
+ "code": 6086,
5005
+ "name": "MakerStatsMustBeWritable",
5006
+ "msg": "MakerMustBeWritable"
5007
+ },
5008
+ {
5009
+ "code": 6087,
3894
5010
  "name": "MakerOrderNotFound",
3895
5011
  "msg": "MakerOrderNotFound"
3896
5012
  },
3897
5013
  {
3898
- "code": 6081,
5014
+ "code": 6088,
3899
5015
  "name": "CouldNotDeserializeMaker",
3900
5016
  "msg": "CouldNotDeserializeMaker"
3901
5017
  },
3902
5018
  {
3903
- "code": 6082,
5019
+ "code": 6089,
5020
+ "name": "CouldNotDeserializeMakerStats",
5021
+ "msg": "CouldNotDeserializeMaker"
5022
+ },
5023
+ {
5024
+ "code": 6090,
3904
5025
  "name": "AuctionPriceDoesNotSatisfyMaker",
3905
5026
  "msg": "AuctionPriceDoesNotSatisfyMaker"
3906
5027
  },
3907
5028
  {
3908
- "code": 6083,
5029
+ "code": 6091,
3909
5030
  "name": "MakerCantFulfillOwnOrder",
3910
5031
  "msg": "MakerCantFulfillOwnOrder"
3911
5032
  },
3912
5033
  {
3913
- "code": 6084,
5034
+ "code": 6092,
3914
5035
  "name": "MakerOrderMustBePostOnly",
3915
5036
  "msg": "MakerOrderMustBePostOnly"
3916
5037
  },
3917
5038
  {
3918
- "code": 6085,
5039
+ "code": 6093,
3919
5040
  "name": "CantMatchTwoPostOnlys",
3920
5041
  "msg": "CantMatchTwoPostOnlys"
3921
5042
  },
3922
5043
  {
3923
- "code": 6086,
5044
+ "code": 6094,
3924
5045
  "name": "OrderBreachesOraclePriceLimits",
3925
5046
  "msg": "OrderBreachesOraclePriceLimits"
3926
5047
  },
3927
5048
  {
3928
- "code": 6087,
5049
+ "code": 6095,
3929
5050
  "name": "OrderMustBeTriggeredFirst",
3930
5051
  "msg": "OrderMustBeTriggeredFirst"
3931
5052
  },
3932
5053
  {
3933
- "code": 6088,
5054
+ "code": 6096,
3934
5055
  "name": "OrderNotTriggerable",
3935
5056
  "msg": "OrderNotTriggerable"
3936
5057
  },
3937
5058
  {
3938
- "code": 6089,
5059
+ "code": 6097,
3939
5060
  "name": "OrderDidNotSatisfyTriggerCondition",
3940
5061
  "msg": "OrderDidNotSatisfyTriggerCondition"
3941
5062
  },
3942
5063
  {
3943
- "code": 6090,
5064
+ "code": 6098,
5065
+ "name": "PositionAlreadyBeingLiquidated",
5066
+ "msg": "PositionAlreadyBeingLiquidated"
5067
+ },
5068
+ {
5069
+ "code": 6099,
5070
+ "name": "PositionDoesntHaveOpenPositionOrOrders",
5071
+ "msg": "PositionDoesntHaveOpenPositionOrOrders"
5072
+ },
5073
+ {
5074
+ "code": 6100,
5075
+ "name": "AllOrdersAreAlreadyLiquidations",
5076
+ "msg": "AllOrdersAreAlreadyLiquidations"
5077
+ },
5078
+ {
5079
+ "code": 6101,
5080
+ "name": "CantCancelLiquidationOrder",
5081
+ "msg": "CantCancelLiquidationOrder"
5082
+ },
5083
+ {
5084
+ "code": 6102,
5085
+ "name": "UserIsBeingLiquidated",
5086
+ "msg": "UserIsBeingLiquidated"
5087
+ },
5088
+ {
5089
+ "code": 6103,
5090
+ "name": "LiquidationsOngoing",
5091
+ "msg": "LiquidationsOngoing"
5092
+ },
5093
+ {
5094
+ "code": 6104,
5095
+ "name": "WrongBankBalanceType",
5096
+ "msg": "WrongBankBalanceType"
5097
+ },
5098
+ {
5099
+ "code": 6105,
5100
+ "name": "UserCantLiquidateThemself",
5101
+ "msg": "UserCantLiquidateThemself"
5102
+ },
5103
+ {
5104
+ "code": 6106,
5105
+ "name": "InvalidPerpPositionToLiquidate",
5106
+ "msg": "InvalidPerpPositionToLiquidate"
5107
+ },
5108
+ {
5109
+ "code": 6107,
5110
+ "name": "InvalidBaseAssetAmountForLiquidatePerp",
5111
+ "msg": "InvalidBaseAssetAmountForLiquidatePerp"
5112
+ },
5113
+ {
5114
+ "code": 6108,
5115
+ "name": "InvalidPositionLastFundingRate",
5116
+ "msg": "InvalidPositionLastFundingRate"
5117
+ },
5118
+ {
5119
+ "code": 6109,
5120
+ "name": "InvalidPositionDelta",
5121
+ "msg": "InvalidPositionDelta"
5122
+ },
5123
+ {
5124
+ "code": 6110,
5125
+ "name": "UserBankrupt",
5126
+ "msg": "UserBankrupt"
5127
+ },
5128
+ {
5129
+ "code": 6111,
5130
+ "name": "UserNotBankrupt",
5131
+ "msg": "UserNotBankrupt"
5132
+ },
5133
+ {
5134
+ "code": 6112,
5135
+ "name": "UserHasInvalidBorrow",
5136
+ "msg": "UserHasInvalidBorrow"
5137
+ },
5138
+ {
5139
+ "code": 6113,
5140
+ "name": "BankDailyWithdrawLimit",
5141
+ "msg": "BankDailyWithdrawLimit"
5142
+ },
5143
+ {
5144
+ "code": 6114,
3944
5145
  "name": "DefaultError",
3945
5146
  "msg": "DefaultError"
5147
+ },
5148
+ {
5149
+ "code": 6115,
5150
+ "name": "InsufficientLPTokens",
5151
+ "msg": "Insufficient LP tokens"
5152
+ },
5153
+ {
5154
+ "code": 6116,
5155
+ "name": "CantLPWithMarketPosition",
5156
+ "msg": "Cant LP with a market position"
5157
+ },
5158
+ {
5159
+ "code": 6117,
5160
+ "name": "UnableToBurnLPTokens",
5161
+ "msg": "Unable to burn LP tokens"
5162
+ },
5163
+ {
5164
+ "code": 6118,
5165
+ "name": "TryingToRemoveLiquidityTooFast",
5166
+ "msg": "Trying to remove liqudity too fast after adding it"
3946
5167
  }
3947
5168
  ]
3948
5169
  }