@drift-labs/sdk 0.2.0-master.10 → 0.2.0-master.13

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 (82) hide show
  1. package/lib/admin.d.ts +3 -3
  2. package/lib/admin.js +6 -6
  3. package/lib/clearingHouse.d.ts +22 -6
  4. package/lib/clearingHouse.js +357 -74
  5. package/lib/clearingHouseUser.d.ts +12 -17
  6. package/lib/clearingHouseUser.js +97 -88
  7. package/lib/config.js +1 -1
  8. package/lib/constants/banks.d.ts +2 -2
  9. package/lib/constants/banks.js +5 -4
  10. package/lib/constants/numericConstants.d.ts +3 -0
  11. package/lib/constants/numericConstants.js +4 -1
  12. package/lib/events/eventList.js +3 -0
  13. package/lib/events/types.d.ts +2 -1
  14. package/lib/factory/bigNum.d.ts +1 -0
  15. package/lib/factory/bigNum.js +37 -11
  16. package/lib/idl/clearing_house.json +611 -146
  17. package/lib/idl/{mock_usdc_faucet.json → token_faucet.json} +46 -23
  18. package/lib/index.d.ts +2 -1
  19. package/lib/index.js +2 -1
  20. package/lib/math/amm.js +2 -2
  21. package/lib/math/bankBalance.d.ts +3 -1
  22. package/lib/math/bankBalance.js +54 -1
  23. package/lib/math/margin.d.ts +11 -0
  24. package/lib/math/margin.js +72 -0
  25. package/lib/math/market.d.ts +4 -1
  26. package/lib/math/market.js +35 -1
  27. package/lib/math/position.d.ts +8 -0
  28. package/lib/math/position.js +42 -12
  29. package/lib/orders.d.ts +1 -2
  30. package/lib/orders.js +2 -77
  31. package/lib/{mockUSDCFaucet.d.ts → tokenFaucet.d.ts} +8 -5
  32. package/lib/{mockUSDCFaucet.js → tokenFaucet.js} +63 -51
  33. package/lib/tx/retryTxSender.js +9 -2
  34. package/lib/types.d.ts +86 -16
  35. package/lib/types.js +18 -1
  36. package/lib/util/computeUnits.js +1 -1
  37. package/lib/util/getTokenAddress.d.ts +2 -0
  38. package/lib/util/getTokenAddress.js +9 -0
  39. package/package.json +1 -1
  40. package/src/admin.ts +7 -7
  41. package/src/clearingHouse.ts +636 -94
  42. package/src/clearingHouseConfig.js +2 -0
  43. package/src/clearingHouseUser.ts +219 -121
  44. package/src/clearingHouseUserConfig.js +2 -0
  45. package/src/config.ts +1 -1
  46. package/src/constants/banks.js +42 -0
  47. package/src/constants/banks.ts +7 -4
  48. package/src/constants/markets.js +42 -0
  49. package/src/constants/numericConstants.js +41 -0
  50. package/src/constants/numericConstants.ts +4 -0
  51. package/src/events/eventList.ts +3 -0
  52. package/src/events/types.ts +2 -0
  53. package/src/factory/bigNum.js +37 -11
  54. package/src/factory/bigNum.ts +43 -13
  55. package/src/idl/clearing_house.json +611 -146
  56. package/src/idl/{mock_usdc_faucet.json → token_faucet.json} +46 -23
  57. package/src/index.js +1 -1
  58. package/src/index.ts +2 -1
  59. package/src/math/amm.ts +8 -5
  60. package/src/math/bankBalance.ts +98 -1
  61. package/src/math/margin.ts +124 -0
  62. package/src/math/market.ts +66 -1
  63. package/src/math/position.ts +59 -9
  64. package/src/mockUSDCFaucet.js +276 -167
  65. package/src/orders.ts +4 -157
  66. package/src/tokenFaucet.js +189 -0
  67. package/src/{mockUSDCFaucet.ts → tokenFaucet.ts} +82 -70
  68. package/src/tx/retryTxSender.ts +11 -3
  69. package/src/types.js +12 -1
  70. package/src/types.ts +88 -16
  71. package/src/{accounts/fetch.js → util/computeUnits.js} +11 -13
  72. package/src/util/computeUnits.ts +1 -1
  73. package/src/util/getTokenAddress.js +9 -0
  74. package/src/util/getTokenAddress.ts +18 -0
  75. package/tests/bn/test.ts +2 -0
  76. package/src/addresses/pda.js +0 -104
  77. package/src/math/bankBalance.js +0 -75
  78. package/src/math/market.js +0 -57
  79. package/src/math/orders.js +0 -110
  80. package/src/math/position.js +0 -140
  81. package/src/orders.js +0 -134
  82. package/src/tx/retryTxSender.js +0 -188
@@ -145,6 +145,10 @@
145
145
  {
146
146
  "name": "imfFactor",
147
147
  "type": "u128"
148
+ },
149
+ {
150
+ "name": "liquidationFee",
151
+ "type": "u128"
148
152
  }
149
153
  ]
150
154
  },
@@ -210,12 +214,12 @@
210
214
  "type": "u32"
211
215
  },
212
216
  {
213
- "name": "marginRatioPartial",
217
+ "name": "marginRatioMaintenance",
214
218
  "type": "u32"
215
219
  },
216
220
  {
217
- "name": "marginRatioMaintenance",
218
- "type": "u32"
221
+ "name": "liquidationFee",
222
+ "type": "u128"
219
223
  }
220
224
  ]
221
225
  },
@@ -644,7 +648,7 @@
644
648
  ]
645
649
  },
646
650
  {
647
- "name": "liquidate",
651
+ "name": "liquidatePerp",
648
652
  "accounts": [
649
653
  {
650
654
  "name": "state",
@@ -665,29 +669,135 @@
665
669
  "name": "user",
666
670
  "isMut": true,
667
671
  "isSigner": false
672
+ }
673
+ ],
674
+ "args": [
675
+ {
676
+ "name": "marketIndex",
677
+ "type": "u64"
668
678
  },
669
679
  {
670
- "name": "bankVault",
680
+ "name": "liquidatorMaxBaseAssetAmount",
681
+ "type": "u128"
682
+ }
683
+ ]
684
+ },
685
+ {
686
+ "name": "liquidateBorrow",
687
+ "accounts": [
688
+ {
689
+ "name": "state",
690
+ "isMut": false,
691
+ "isSigner": false
692
+ },
693
+ {
694
+ "name": "authority",
695
+ "isMut": false,
696
+ "isSigner": true
697
+ },
698
+ {
699
+ "name": "liquidator",
671
700
  "isMut": true,
672
701
  "isSigner": false
673
702
  },
674
703
  {
675
- "name": "bankVaultAuthority",
704
+ "name": "user",
676
705
  "isMut": true,
677
706
  "isSigner": false
707
+ }
708
+ ],
709
+ "args": [
710
+ {
711
+ "name": "assetBankIndex",
712
+ "type": "u64"
678
713
  },
679
714
  {
680
- "name": "insuranceVault",
715
+ "name": "liabilityBankIndex",
716
+ "type": "u64"
717
+ },
718
+ {
719
+ "name": "liquidatorMaxLiabilityTransfer",
720
+ "type": "u128"
721
+ }
722
+ ]
723
+ },
724
+ {
725
+ "name": "liquidateBorrowForPerpPnl",
726
+ "accounts": [
727
+ {
728
+ "name": "state",
729
+ "isMut": false,
730
+ "isSigner": false
731
+ },
732
+ {
733
+ "name": "authority",
734
+ "isMut": false,
735
+ "isSigner": true
736
+ },
737
+ {
738
+ "name": "liquidator",
681
739
  "isMut": true,
682
740
  "isSigner": false
683
741
  },
684
742
  {
685
- "name": "tokenProgram",
743
+ "name": "user",
744
+ "isMut": true,
745
+ "isSigner": false
746
+ }
747
+ ],
748
+ "args": [
749
+ {
750
+ "name": "perpMarketIndex",
751
+ "type": "u64"
752
+ },
753
+ {
754
+ "name": "liabilityBankIndex",
755
+ "type": "u64"
756
+ },
757
+ {
758
+ "name": "liquidatorMaxLiabilityTransfer",
759
+ "type": "u128"
760
+ }
761
+ ]
762
+ },
763
+ {
764
+ "name": "liquidatePerpPnlForDeposit",
765
+ "accounts": [
766
+ {
767
+ "name": "state",
768
+ "isMut": false,
769
+ "isSigner": false
770
+ },
771
+ {
772
+ "name": "authority",
686
773
  "isMut": false,
774
+ "isSigner": true
775
+ },
776
+ {
777
+ "name": "liquidator",
778
+ "isMut": true,
779
+ "isSigner": false
780
+ },
781
+ {
782
+ "name": "user",
783
+ "isMut": true,
687
784
  "isSigner": false
688
785
  }
689
786
  ],
690
- "args": []
787
+ "args": [
788
+ {
789
+ "name": "perpMarketIndex",
790
+ "type": "u64"
791
+ },
792
+ {
793
+ "name": "assetBankIndex",
794
+ "type": "u64"
795
+ },
796
+ {
797
+ "name": "liquidatorMaxPnlTransfer",
798
+ "type": "u128"
799
+ }
800
+ ]
691
801
  },
692
802
  {
693
803
  "name": "moveAmmPrice",
@@ -1093,12 +1203,60 @@
1093
1203
  "type": "u32"
1094
1204
  },
1095
1205
  {
1096
- "name": "marginRatioPartial",
1206
+ "name": "marginRatioMaintenance",
1097
1207
  "type": "u32"
1208
+ }
1209
+ ]
1210
+ },
1211
+ {
1212
+ "name": "updatePerpLiquidationFee",
1213
+ "accounts": [
1214
+ {
1215
+ "name": "admin",
1216
+ "isMut": false,
1217
+ "isSigner": true
1098
1218
  },
1099
1219
  {
1100
- "name": "marginRatioMaintenance",
1101
- "type": "u32"
1220
+ "name": "state",
1221
+ "isMut": false,
1222
+ "isSigner": false
1223
+ },
1224
+ {
1225
+ "name": "market",
1226
+ "isMut": true,
1227
+ "isSigner": false
1228
+ }
1229
+ ],
1230
+ "args": [
1231
+ {
1232
+ "name": "liquidationFee",
1233
+ "type": "u128"
1234
+ }
1235
+ ]
1236
+ },
1237
+ {
1238
+ "name": "updateBankLiquidationFee",
1239
+ "accounts": [
1240
+ {
1241
+ "name": "admin",
1242
+ "isMut": false,
1243
+ "isSigner": true
1244
+ },
1245
+ {
1246
+ "name": "state",
1247
+ "isMut": false,
1248
+ "isSigner": false
1249
+ },
1250
+ {
1251
+ "name": "bank",
1252
+ "isMut": true,
1253
+ "isSigner": false
1254
+ }
1255
+ ],
1256
+ "args": [
1257
+ {
1258
+ "name": "liquidationFee",
1259
+ "type": "u128"
1102
1260
  }
1103
1261
  ]
1104
1262
  },
@@ -1800,6 +1958,10 @@
1800
1958
  {
1801
1959
  "name": "imfFactor",
1802
1960
  "type": "u128"
1961
+ },
1962
+ {
1963
+ "name": "liquidationFee",
1964
+ "type": "u128"
1803
1965
  }
1804
1966
  ]
1805
1967
  }
@@ -1843,10 +2005,6 @@
1843
2005
  "name": "marginRatioInitial",
1844
2006
  "type": "u32"
1845
2007
  },
1846
- {
1847
- "name": "marginRatioPartial",
1848
- "type": "u32"
1849
- },
1850
2008
  {
1851
2009
  "name": "marginRatioMaintenance",
1852
2010
  "type": "u32"
@@ -1869,14 +2027,6 @@
1869
2027
  "defined": "PoolBalance"
1870
2028
  }
1871
2029
  },
1872
- {
1873
- "name": "unsettledProfit",
1874
- "type": "u128"
1875
- },
1876
- {
1877
- "name": "unsettledLoss",
1878
- "type": "u128"
1879
- },
1880
2030
  {
1881
2031
  "name": "imfFactor",
1882
2032
  "type": "u128"
@@ -1893,6 +2043,10 @@
1893
2043
  "name": "unsettledImfFactor",
1894
2044
  "type": "u128"
1895
2045
  },
2046
+ {
2047
+ "name": "liquidationFee",
2048
+ "type": "u128"
2049
+ },
1896
2050
  {
1897
2051
  "name": "padding0",
1898
2052
  "type": "u32"
@@ -2033,6 +2187,10 @@
2033
2187
  "name": "maxAuctionDuration",
2034
2188
  "type": "u8"
2035
2189
  },
2190
+ {
2191
+ "name": "liquidationMarginBufferRatio",
2192
+ "type": "u8"
2193
+ },
2036
2194
  {
2037
2195
  "name": "padding0",
2038
2196
  "type": "u128"
@@ -2108,6 +2266,14 @@
2108
2266
  32
2109
2267
  ]
2110
2268
  }
2269
+ },
2270
+ {
2271
+ "name": "nextLiquidationId",
2272
+ "type": "u16"
2273
+ },
2274
+ {
2275
+ "name": "beingLiquidated",
2276
+ "type": "bool"
2111
2277
  }
2112
2278
  ]
2113
2279
  }
@@ -2215,91 +2381,249 @@
2215
2381
  }
2216
2382
  },
2217
2383
  {
2218
- "name": "PoolBalance",
2219
- "type": {
2220
- "kind": "struct",
2221
- "fields": [
2222
- {
2223
- "name": "balance",
2224
- "type": "u128"
2225
- }
2226
- ]
2227
- }
2228
- },
2229
- {
2230
- "name": "AMM",
2384
+ "name": "LiquidatePerpRecord",
2231
2385
  "type": {
2232
2386
  "kind": "struct",
2233
2387
  "fields": [
2234
2388
  {
2235
- "name": "oracle",
2236
- "type": "publicKey"
2389
+ "name": "marketIndex",
2390
+ "type": "u64"
2237
2391
  },
2238
2392
  {
2239
- "name": "oracleSource",
2393
+ "name": "orderIds",
2240
2394
  "type": {
2241
- "defined": "OracleSource"
2395
+ "vec": "u64"
2242
2396
  }
2243
2397
  },
2244
2398
  {
2245
- "name": "lastOraclePrice",
2246
- "type": "i128"
2247
- },
2248
- {
2249
- "name": "lastOracleConfPct",
2250
- "type": "u64"
2399
+ "name": "canceledOrdersFee",
2400
+ "type": "u128"
2251
2401
  },
2252
2402
  {
2253
- "name": "lastOracleDelay",
2254
- "type": "i64"
2403
+ "name": "oraclePrice",
2404
+ "type": "i128"
2255
2405
  },
2256
2406
  {
2257
- "name": "lastOracleNormalisedPrice",
2407
+ "name": "baseAssetAmount",
2258
2408
  "type": "i128"
2259
2409
  },
2260
2410
  {
2261
- "name": "lastOraclePriceTwap",
2411
+ "name": "quoteAssetAmount",
2262
2412
  "type": "i128"
2263
2413
  },
2264
2414
  {
2265
- "name": "lastOraclePriceTwapTs",
2266
- "type": "i64"
2415
+ "name": "userPnl",
2416
+ "type": "i128"
2267
2417
  },
2268
2418
  {
2269
- "name": "lastOracleMarkSpreadPct",
2419
+ "name": "liquidatorPnl",
2270
2420
  "type": "i128"
2271
2421
  },
2272
2422
  {
2273
- "name": "baseAssetReserve",
2274
- "type": "u128"
2423
+ "name": "fillRecordId",
2424
+ "type": "u64"
2275
2425
  },
2276
2426
  {
2277
- "name": "quoteAssetReserve",
2278
- "type": "u128"
2427
+ "name": "userOrderId",
2428
+ "type": "u64"
2279
2429
  },
2280
2430
  {
2281
- "name": "sqrtK",
2282
- "type": "u128"
2431
+ "name": "liquidatorOrderId",
2432
+ "type": "u64"
2433
+ }
2434
+ ]
2435
+ }
2436
+ },
2437
+ {
2438
+ "name": "LiquidateBorrowRecord",
2439
+ "type": {
2440
+ "kind": "struct",
2441
+ "fields": [
2442
+ {
2443
+ "name": "assetBankIndex",
2444
+ "type": "u64"
2283
2445
  },
2284
2446
  {
2285
- "name": "pegMultiplier",
2286
- "type": "u128"
2447
+ "name": "assetPrice",
2448
+ "type": "i128"
2287
2449
  },
2288
2450
  {
2289
- "name": "terminalQuoteAssetReserve",
2451
+ "name": "assetTransfer",
2290
2452
  "type": "u128"
2291
2453
  },
2292
2454
  {
2293
- "name": "netBaseAssetAmount",
2294
- "type": "i128"
2455
+ "name": "liabilityBankIndex",
2456
+ "type": "u64"
2295
2457
  },
2296
2458
  {
2297
- "name": "quoteAssetAmountLong",
2298
- "type": "u128"
2459
+ "name": "liabilityPrice",
2460
+ "type": "i128"
2299
2461
  },
2300
2462
  {
2301
- "name": "quoteAssetAmountShort",
2463
+ "name": "liabilityTransfer",
2302
2464
  "type": "u128"
2465
+ }
2466
+ ]
2467
+ }
2468
+ },
2469
+ {
2470
+ "name": "LiquidateBorrowForPerpPnlRecord",
2471
+ "type": {
2472
+ "kind": "struct",
2473
+ "fields": [
2474
+ {
2475
+ "name": "marketIndex",
2476
+ "type": "u64"
2477
+ },
2478
+ {
2479
+ "name": "marketOraclePrice",
2480
+ "type": "i128"
2481
+ },
2482
+ {
2483
+ "name": "pnlTransfer",
2484
+ "type": "u128"
2485
+ },
2486
+ {
2487
+ "name": "liabilityBankIndex",
2488
+ "type": "u64"
2489
+ },
2490
+ {
2491
+ "name": "liabilityPrice",
2492
+ "type": "i128"
2493
+ },
2494
+ {
2495
+ "name": "liabilityTransfer",
2496
+ "type": "u128"
2497
+ }
2498
+ ]
2499
+ }
2500
+ },
2501
+ {
2502
+ "name": "LiquidatePerpPnlForDepositRecord",
2503
+ "type": {
2504
+ "kind": "struct",
2505
+ "fields": [
2506
+ {
2507
+ "name": "marketIndex",
2508
+ "type": "u64"
2509
+ },
2510
+ {
2511
+ "name": "marketOraclePrice",
2512
+ "type": "i128"
2513
+ },
2514
+ {
2515
+ "name": "pnlTransfer",
2516
+ "type": "u128"
2517
+ },
2518
+ {
2519
+ "name": "assetBankIndex",
2520
+ "type": "u64"
2521
+ },
2522
+ {
2523
+ "name": "assetPrice",
2524
+ "type": "i128"
2525
+ },
2526
+ {
2527
+ "name": "assetTransfer",
2528
+ "type": "u128"
2529
+ }
2530
+ ]
2531
+ }
2532
+ },
2533
+ {
2534
+ "name": "PoolBalance",
2535
+ "type": {
2536
+ "kind": "struct",
2537
+ "fields": [
2538
+ {
2539
+ "name": "balance",
2540
+ "type": "u128"
2541
+ }
2542
+ ]
2543
+ }
2544
+ },
2545
+ {
2546
+ "name": "AMM",
2547
+ "type": {
2548
+ "kind": "struct",
2549
+ "fields": [
2550
+ {
2551
+ "name": "oracle",
2552
+ "type": "publicKey"
2553
+ },
2554
+ {
2555
+ "name": "oracleSource",
2556
+ "type": {
2557
+ "defined": "OracleSource"
2558
+ }
2559
+ },
2560
+ {
2561
+ "name": "lastOraclePrice",
2562
+ "type": "i128"
2563
+ },
2564
+ {
2565
+ "name": "lastOracleConfPct",
2566
+ "type": "u64"
2567
+ },
2568
+ {
2569
+ "name": "lastOracleDelay",
2570
+ "type": "i64"
2571
+ },
2572
+ {
2573
+ "name": "lastOracleNormalisedPrice",
2574
+ "type": "i128"
2575
+ },
2576
+ {
2577
+ "name": "lastOraclePriceTwap",
2578
+ "type": "i128"
2579
+ },
2580
+ {
2581
+ "name": "lastOraclePriceTwapTs",
2582
+ "type": "i64"
2583
+ },
2584
+ {
2585
+ "name": "lastOracleMarkSpreadPct",
2586
+ "type": "i128"
2587
+ },
2588
+ {
2589
+ "name": "baseAssetReserve",
2590
+ "type": "u128"
2591
+ },
2592
+ {
2593
+ "name": "quoteAssetReserve",
2594
+ "type": "u128"
2595
+ },
2596
+ {
2597
+ "name": "sqrtK",
2598
+ "type": "u128"
2599
+ },
2600
+ {
2601
+ "name": "pegMultiplier",
2602
+ "type": "u128"
2603
+ },
2604
+ {
2605
+ "name": "terminalQuoteAssetReserve",
2606
+ "type": "u128"
2607
+ },
2608
+ {
2609
+ "name": "netBaseAssetAmount",
2610
+ "type": "i128"
2611
+ },
2612
+ {
2613
+ "name": "quoteAssetAmountLong",
2614
+ "type": "i128"
2615
+ },
2616
+ {
2617
+ "name": "quoteAssetAmountShort",
2618
+ "type": "i128"
2619
+ },
2620
+ {
2621
+ "name": "quoteEntryAmountLong",
2622
+ "type": "i128"
2623
+ },
2624
+ {
2625
+ "name": "quoteEntryAmountShort",
2626
+ "type": "i128"
2303
2627
  },
2304
2628
  {
2305
2629
  "name": "lastFundingRate",
@@ -2572,6 +2896,10 @@
2572
2896
  "type": {
2573
2897
  "defined": "OrderFillerRewardStructure"
2574
2898
  }
2899
+ },
2900
+ {
2901
+ "name": "cancelOrderFee",
2902
+ "type": "u128"
2575
2903
  }
2576
2904
  ]
2577
2905
  }
@@ -2737,11 +3065,11 @@
2737
3065
  },
2738
3066
  {
2739
3067
  "name": "quoteAssetAmount",
2740
- "type": "u128"
3068
+ "type": "i128"
2741
3069
  },
2742
3070
  {
2743
3071
  "name": "quoteEntryAmount",
2744
- "type": "u128"
3072
+ "type": "i128"
2745
3073
  },
2746
3074
  {
2747
3075
  "name": "lastCumulativeFundingRate",
@@ -2759,10 +3087,6 @@
2759
3087
  "name": "openOrders",
2760
3088
  "type": "u128"
2761
3089
  },
2762
- {
2763
- "name": "unsettledPnl",
2764
- "type": "i128"
2765
- },
2766
3090
  {
2767
3091
  "name": "openBids",
2768
3092
  "type": "i128"
@@ -2956,35 +3280,52 @@
2956
3280
  }
2957
3281
  },
2958
3282
  {
2959
- "name": "MarginRequirementType",
3283
+ "name": "PositionUpdateType",
2960
3284
  "type": {
2961
3285
  "kind": "enum",
2962
3286
  "variants": [
2963
3287
  {
2964
- "name": "Initial"
3288
+ "name": "Open"
2965
3289
  },
2966
3290
  {
2967
- "name": "Partial"
3291
+ "name": "Increase"
2968
3292
  },
2969
3293
  {
2970
- "name": "Maintenance"
3294
+ "name": "Reduce"
3295
+ },
3296
+ {
3297
+ "name": "Close"
3298
+ },
3299
+ {
3300
+ "name": "Flip"
2971
3301
  }
2972
3302
  ]
2973
3303
  }
2974
3304
  },
2975
3305
  {
2976
- "name": "LiquidationType",
3306
+ "name": "LiquidationMultiplierType",
2977
3307
  "type": {
2978
3308
  "kind": "enum",
2979
3309
  "variants": [
2980
3310
  {
2981
- "name": "NONE"
3311
+ "name": "Discount"
2982
3312
  },
2983
3313
  {
2984
- "name": "PARTIAL"
3314
+ "name": "Premium"
3315
+ }
3316
+ ]
3317
+ }
3318
+ },
3319
+ {
3320
+ "name": "MarginRequirementType",
3321
+ "type": {
3322
+ "kind": "enum",
3323
+ "variants": [
3324
+ {
3325
+ "name": "Initial"
2985
3326
  },
2986
3327
  {
2987
- "name": "FULL"
3328
+ "name": "Maintenance"
2988
3329
  }
2989
3330
  ]
2990
3331
  }
@@ -3059,6 +3400,35 @@
3059
3400
  },
3060
3401
  {
3061
3402
  "name": "MarketOrderAuctionExpired"
3403
+ },
3404
+ {
3405
+ "name": "CanceledForLiquidation"
3406
+ },
3407
+ {
3408
+ "name": "OrderFilledWithAMM"
3409
+ },
3410
+ {
3411
+ "name": "OrderFilledWithMatch"
3412
+ }
3413
+ ]
3414
+ }
3415
+ },
3416
+ {
3417
+ "name": "LiquidationType",
3418
+ "type": {
3419
+ "kind": "enum",
3420
+ "variants": [
3421
+ {
3422
+ "name": "LiquidatePerp"
3423
+ },
3424
+ {
3425
+ "name": "LiquidateBorrow"
3426
+ },
3427
+ {
3428
+ "name": "LiquidateBorrowForPerpPnl"
3429
+ },
3430
+ {
3431
+ "name": "LiquidatePerpPnlForDeposit"
3062
3432
  }
3063
3433
  ]
3064
3434
  }
@@ -3435,7 +3805,7 @@
3435
3805
  ]
3436
3806
  },
3437
3807
  {
3438
- "name": "LiquidationRecord",
3808
+ "name": "OrderRecord",
3439
3809
  "fields": [
3440
3810
  {
3441
3811
  "name": "ts",
@@ -3443,74 +3813,112 @@
3443
3813
  "index": false
3444
3814
  },
3445
3815
  {
3446
- "name": "userAuthority",
3816
+ "name": "slot",
3817
+ "type": "u64",
3818
+ "index": false
3819
+ },
3820
+ {
3821
+ "name": "taker",
3447
3822
  "type": "publicKey",
3448
3823
  "index": false
3449
3824
  },
3450
3825
  {
3451
- "name": "user",
3826
+ "name": "maker",
3452
3827
  "type": "publicKey",
3453
3828
  "index": false
3454
3829
  },
3455
3830
  {
3456
- "name": "partial",
3457
- "type": "bool",
3831
+ "name": "takerOrder",
3832
+ "type": {
3833
+ "defined": "Order"
3834
+ },
3458
3835
  "index": false
3459
3836
  },
3460
3837
  {
3461
- "name": "baseAssetValue",
3462
- "type": "u128",
3838
+ "name": "makerOrder",
3839
+ "type": {
3840
+ "defined": "Order"
3841
+ },
3463
3842
  "index": false
3464
3843
  },
3465
3844
  {
3466
- "name": "baseAssetValueClosed",
3467
- "type": "u128",
3845
+ "name": "makerPnl",
3846
+ "type": "i128",
3468
3847
  "index": false
3469
3848
  },
3470
3849
  {
3471
- "name": "liquidationFee",
3472
- "type": "u128",
3850
+ "name": "takerPnl",
3851
+ "type": "i128",
3852
+ "index": false
3853
+ },
3854
+ {
3855
+ "name": "action",
3856
+ "type": {
3857
+ "defined": "OrderAction"
3858
+ },
3473
3859
  "index": false
3474
3860
  },
3475
3861
  {
3476
- "name": "feeToLiquidator",
3862
+ "name": "actionExplanation",
3863
+ "type": {
3864
+ "defined": "OrderActionExplanation"
3865
+ },
3866
+ "index": false
3867
+ },
3868
+ {
3869
+ "name": "filler",
3870
+ "type": "publicKey",
3871
+ "index": false
3872
+ },
3873
+ {
3874
+ "name": "fillRecordId",
3477
3875
  "type": "u64",
3478
3876
  "index": false
3479
3877
  },
3480
3878
  {
3481
- "name": "feeToInsuranceFund",
3879
+ "name": "marketIndex",
3482
3880
  "type": "u64",
3483
3881
  "index": false
3484
3882
  },
3485
3883
  {
3486
- "name": "liquidator",
3487
- "type": "publicKey",
3884
+ "name": "baseAssetAmountFilled",
3885
+ "type": "u128",
3488
3886
  "index": false
3489
3887
  },
3490
3888
  {
3491
- "name": "totalCollateral",
3889
+ "name": "quoteAssetAmountFilled",
3492
3890
  "type": "u128",
3493
3891
  "index": false
3494
3892
  },
3495
3893
  {
3496
- "name": "collateral",
3894
+ "name": "makerRebate",
3497
3895
  "type": "u128",
3498
3896
  "index": false
3499
3897
  },
3500
3898
  {
3501
- "name": "unrealizedPnl",
3502
- "type": "i128",
3899
+ "name": "takerFee",
3900
+ "type": "u128",
3901
+ "index": false
3902
+ },
3903
+ {
3904
+ "name": "fillerReward",
3905
+ "type": "u128",
3503
3906
  "index": false
3504
3907
  },
3505
3908
  {
3506
- "name": "marginRatio",
3909
+ "name": "quoteAssetAmountSurplus",
3507
3910
  "type": "u128",
3508
3911
  "index": false
3912
+ },
3913
+ {
3914
+ "name": "oraclePrice",
3915
+ "type": "i128",
3916
+ "index": false
3509
3917
  }
3510
3918
  ]
3511
3919
  },
3512
3920
  {
3513
- "name": "OrderRecord",
3921
+ "name": "LiquidationRecord",
3514
3922
  "fields": [
3515
3923
  {
3516
3924
  "name": "ts",
@@ -3518,66 +3926,73 @@
3518
3926
  "index": false
3519
3927
  },
3520
3928
  {
3521
- "name": "slot",
3522
- "type": "u64",
3929
+ "name": "liquidationType",
3930
+ "type": {
3931
+ "defined": "LiquidationType"
3932
+ },
3523
3933
  "index": false
3524
3934
  },
3525
3935
  {
3526
- "name": "taker",
3936
+ "name": "user",
3527
3937
  "type": "publicKey",
3528
3938
  "index": false
3529
3939
  },
3530
3940
  {
3531
- "name": "maker",
3941
+ "name": "liquidator",
3532
3942
  "type": "publicKey",
3533
3943
  "index": false
3534
3944
  },
3535
3945
  {
3536
- "name": "takerOrder",
3537
- "type": {
3538
- "defined": "Order"
3539
- },
3946
+ "name": "marginRequirement",
3947
+ "type": "u128",
3540
3948
  "index": false
3541
3949
  },
3542
3950
  {
3543
- "name": "makerOrder",
3544
- "type": {
3545
- "defined": "Order"
3546
- },
3951
+ "name": "totalCollateral",
3952
+ "type": "i128",
3547
3953
  "index": false
3548
3954
  },
3549
3955
  {
3550
- "name": "makerUnsettledPnl",
3551
- "type": "i128",
3956
+ "name": "liquidationId",
3957
+ "type": "u16",
3552
3958
  "index": false
3553
3959
  },
3554
3960
  {
3555
- "name": "takerUnsettledPnl",
3556
- "type": "i128",
3961
+ "name": "liquidatePerp",
3962
+ "type": {
3963
+ "defined": "LiquidatePerpRecord"
3964
+ },
3557
3965
  "index": false
3558
3966
  },
3559
3967
  {
3560
- "name": "action",
3968
+ "name": "liquidateBorrow",
3561
3969
  "type": {
3562
- "defined": "OrderAction"
3970
+ "defined": "LiquidateBorrowRecord"
3563
3971
  },
3564
3972
  "index": false
3565
3973
  },
3566
3974
  {
3567
- "name": "actionExplanation",
3975
+ "name": "liquidateBorrowForPerpPnl",
3568
3976
  "type": {
3569
- "defined": "OrderActionExplanation"
3977
+ "defined": "LiquidateBorrowForPerpPnlRecord"
3570
3978
  },
3571
3979
  "index": false
3572
3980
  },
3573
3981
  {
3574
- "name": "filler",
3575
- "type": "publicKey",
3982
+ "name": "liquidatePerpPnlForDeposit",
3983
+ "type": {
3984
+ "defined": "LiquidatePerpPnlForDepositRecord"
3985
+ },
3576
3986
  "index": false
3577
- },
3987
+ }
3988
+ ]
3989
+ },
3990
+ {
3991
+ "name": "SettlePnlRecord",
3992
+ "fields": [
3578
3993
  {
3579
- "name": "fillRecordId",
3580
- "type": "u64",
3994
+ "name": "ts",
3995
+ "type": "i64",
3581
3996
  "index": false
3582
3997
  },
3583
3998
  {
@@ -3586,33 +4001,23 @@
3586
4001
  "index": false
3587
4002
  },
3588
4003
  {
3589
- "name": "baseAssetAmountFilled",
3590
- "type": "u128",
3591
- "index": false
3592
- },
3593
- {
3594
- "name": "quoteAssetAmountFilled",
3595
- "type": "u128",
3596
- "index": false
3597
- },
3598
- {
3599
- "name": "makerRebate",
3600
- "type": "u128",
4004
+ "name": "pnl",
4005
+ "type": "i128",
3601
4006
  "index": false
3602
4007
  },
3603
4008
  {
3604
- "name": "takerFee",
3605
- "type": "u128",
4009
+ "name": "baseAssetAmount",
4010
+ "type": "i128",
3606
4011
  "index": false
3607
4012
  },
3608
4013
  {
3609
- "name": "fillerReward",
3610
- "type": "u128",
4014
+ "name": "quoteAssetAmountAfter",
4015
+ "type": "i128",
3611
4016
  "index": false
3612
4017
  },
3613
4018
  {
3614
- "name": "quoteAssetAmountSurplus",
3615
- "type": "u128",
4019
+ "name": "quoteEntryAmount",
4020
+ "type": "i128",
3616
4021
  "index": false
3617
4022
  },
3618
4023
  {
@@ -4076,6 +4481,66 @@
4076
4481
  },
4077
4482
  {
4078
4483
  "code": 6090,
4484
+ "name": "PositionAlreadyBeingLiquidated",
4485
+ "msg": "PositionAlreadyBeingLiquidated"
4486
+ },
4487
+ {
4488
+ "code": 6091,
4489
+ "name": "PositionDoesntHaveOpenPositionOrOrders",
4490
+ "msg": "PositionDoesntHaveOpenPositionOrOrders"
4491
+ },
4492
+ {
4493
+ "code": 6092,
4494
+ "name": "AllOrdersAreAlreadyLiquidations",
4495
+ "msg": "AllOrdersAreAlreadyLiquidations"
4496
+ },
4497
+ {
4498
+ "code": 6093,
4499
+ "name": "CantCancelLiquidationOrder",
4500
+ "msg": "CantCancelLiquidationOrder"
4501
+ },
4502
+ {
4503
+ "code": 6094,
4504
+ "name": "UserIsBeingLiquidated",
4505
+ "msg": "UserIsBeingLiquidated"
4506
+ },
4507
+ {
4508
+ "code": 6095,
4509
+ "name": "LiquidationsOngoing",
4510
+ "msg": "LiquidationsOngoing"
4511
+ },
4512
+ {
4513
+ "code": 6096,
4514
+ "name": "WrongBankBalanceType",
4515
+ "msg": "WrongBankBalanceType"
4516
+ },
4517
+ {
4518
+ "code": 6097,
4519
+ "name": "UserCantLiquidateThemself",
4520
+ "msg": "UserCantLiquidateThemself"
4521
+ },
4522
+ {
4523
+ "code": 6098,
4524
+ "name": "InvalidPerpPositionToLiquidate",
4525
+ "msg": "InvalidPerpPositionToLiquidate"
4526
+ },
4527
+ {
4528
+ "code": 6099,
4529
+ "name": "InvalidBaseAssetAmountForLiquidatePerp",
4530
+ "msg": "InvalidBaseAssetAmountForLiquidatePerp"
4531
+ },
4532
+ {
4533
+ "code": 6100,
4534
+ "name": "InvalidPositionLastFundingRate",
4535
+ "msg": "InvalidPositionLastFundingRate"
4536
+ },
4537
+ {
4538
+ "code": 6101,
4539
+ "name": "InvalidPositionDelta",
4540
+ "msg": "InvalidPositionDelta"
4541
+ },
4542
+ {
4543
+ "code": 6102,
4079
4544
  "name": "DefaultError",
4080
4545
  "msg": "DefaultError"
4081
4546
  }