@drift-labs/sdk 0.2.0-temp.0 → 0.2.0-temp.1

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 (115) hide show
  1. package/lib/admin.d.ts +7 -5
  2. package/lib/admin.js +34 -11
  3. package/lib/clearingHouse.d.ts +23 -9
  4. package/lib/clearingHouse.js +335 -95
  5. package/lib/clearingHouseUser.d.ts +2 -2
  6. package/lib/clearingHouseUser.js +8 -17
  7. package/lib/config.js +1 -1
  8. package/lib/constants/banks.js +9 -2
  9. package/lib/constants/numericConstants.d.ts +1 -0
  10. package/lib/constants/numericConstants.js +2 -1
  11. package/lib/idl/clearing_house.json +689 -153
  12. package/lib/idl/{mock_usdc_faucet.json → token_faucet.json} +46 -23
  13. package/lib/index.d.ts +3 -2
  14. package/lib/index.js +7 -2
  15. package/lib/math/amm.js +7 -35
  16. package/lib/math/auction.js +4 -1
  17. package/lib/math/orders.d.ts +2 -2
  18. package/lib/math/orders.js +19 -2
  19. package/lib/math/position.js +3 -1
  20. package/lib/math/trade.d.ts +1 -1
  21. package/lib/math/trade.js +7 -10
  22. package/lib/orderParams.d.ts +14 -5
  23. package/lib/orderParams.js +8 -96
  24. package/lib/orders.js +1 -1
  25. package/lib/slot/SlotSubscriber.d.ts +7 -0
  26. package/lib/slot/SlotSubscriber.js +3 -0
  27. package/lib/{mockUSDCFaucet.d.ts → tokenFaucet.d.ts} +7 -5
  28. package/lib/{mockUSDCFaucet.js → tokenFaucet.js} +41 -40
  29. package/lib/tx/utils.js +1 -1
  30. package/lib/types.d.ts +132 -14
  31. package/lib/types.js +52 -1
  32. package/lib/util/computeUnits.js +1 -1
  33. package/package.json +3 -3
  34. package/src/accounts/bulkAccountLoader.js +197 -0
  35. package/src/accounts/bulkUserSubscription.js +33 -0
  36. package/src/accounts/pollingClearingHouseAccountSubscriber.js +311 -0
  37. package/src/accounts/pollingOracleSubscriber.js +93 -0
  38. package/src/accounts/pollingTokenAccountSubscriber.js +90 -0
  39. package/src/accounts/pollingUserAccountSubscriber.js +132 -0
  40. package/src/accounts/types.js +10 -0
  41. package/src/accounts/utils.js +7 -0
  42. package/src/accounts/webSocketAccountSubscriber.js +93 -0
  43. package/src/accounts/webSocketClearingHouseAccountSubscriber.js +233 -0
  44. package/src/accounts/webSocketUserAccountSubscriber.js +62 -0
  45. package/src/addresses/marketAddresses.js +26 -0
  46. package/src/admin.js +517 -0
  47. package/src/admin.ts +53 -14
  48. package/src/assert/assert.js +9 -0
  49. package/src/clearingHouse.ts +510 -131
  50. package/src/clearingHouseConfig.js +2 -0
  51. package/src/clearingHouseUser.ts +12 -23
  52. package/src/clearingHouseUserConfig.js +2 -0
  53. package/src/config.js +67 -0
  54. package/src/config.ts +1 -1
  55. package/src/constants/banks.js +42 -0
  56. package/src/constants/banks.ts +9 -2
  57. package/src/constants/markets.js +42 -0
  58. package/src/constants/numericConstants.js +41 -0
  59. package/src/constants/numericConstants.ts +1 -0
  60. package/src/events/eventList.js +77 -0
  61. package/src/events/eventSubscriber.js +139 -0
  62. package/src/events/fetchLogs.js +50 -0
  63. package/src/events/pollingLogProvider.js +64 -0
  64. package/src/events/sort.js +44 -0
  65. package/src/events/txEventCache.js +71 -0
  66. package/src/events/types.js +20 -0
  67. package/src/events/webSocketLogProvider.js +41 -0
  68. package/src/examples/makeTradeExample.js +80 -0
  69. package/src/factory/bigNum.js +390 -0
  70. package/src/factory/oracleClient.js +20 -0
  71. package/src/idl/clearing_house.json +689 -153
  72. package/src/idl/{mock_usdc_faucet.json → token_faucet.json} +46 -23
  73. package/src/index.js +69 -0
  74. package/src/index.ts +3 -2
  75. package/src/math/amm.js +369 -0
  76. package/src/math/amm.ts +19 -49
  77. package/src/math/auction.js +42 -0
  78. package/src/math/auction.ts +5 -1
  79. package/src/math/conversion.js +11 -0
  80. package/src/math/funding.js +248 -0
  81. package/src/math/oracles.js +26 -0
  82. package/src/math/orders.ts +17 -3
  83. package/src/math/position.ts +5 -1
  84. package/src/math/repeg.js +128 -0
  85. package/src/math/state.js +15 -0
  86. package/src/math/trade.js +253 -0
  87. package/src/math/trade.ts +23 -25
  88. package/src/math/utils.js +0 -1
  89. package/src/mockUSDCFaucet.js +280 -0
  90. package/src/oracles/oracleClientCache.js +19 -0
  91. package/src/oracles/pythClient.js +46 -0
  92. package/src/oracles/quoteAssetOracleClient.js +32 -0
  93. package/src/oracles/switchboardClient.js +69 -0
  94. package/src/oracles/types.js +2 -0
  95. package/src/orderParams.js +20 -0
  96. package/src/orderParams.ts +20 -141
  97. package/src/orders.ts +2 -1
  98. package/src/slot/SlotSubscriber.js +39 -0
  99. package/src/slot/SlotSubscriber.ts +11 -1
  100. package/src/token/index.js +38 -0
  101. package/src/tokenFaucet.js +189 -0
  102. package/src/{mockUSDCFaucet.ts → tokenFaucet.ts} +48 -59
  103. package/src/tx/types.js +2 -0
  104. package/src/tx/utils.js +17 -0
  105. package/src/tx/utils.ts +1 -1
  106. package/src/types.js +125 -0
  107. package/src/types.ts +128 -15
  108. package/src/userName.js +20 -0
  109. package/src/util/computeUnits.js +21 -11
  110. package/src/util/computeUnits.ts +1 -1
  111. package/src/util/getTokenAddress.js +9 -0
  112. package/src/util/promiseTimeout.js +14 -0
  113. package/src/util/tps.js +27 -0
  114. package/src/wallet.js +35 -0
  115. 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
  },
@@ -534,7 +542,7 @@
534
542
  },
535
543
  {
536
544
  "name": "taker",
537
- "isMut": false,
545
+ "isMut": true,
538
546
  "isSigner": false
539
547
  },
540
548
  {
@@ -640,7 +648,7 @@
640
648
  ]
641
649
  },
642
650
  {
643
- "name": "liquidate",
651
+ "name": "liquidatePerp",
644
652
  "accounts": [
645
653
  {
646
654
  "name": "state",
@@ -661,29 +669,135 @@
661
669
  "name": "user",
662
670
  "isMut": true,
663
671
  "isSigner": false
672
+ }
673
+ ],
674
+ "args": [
675
+ {
676
+ "name": "marketIndex",
677
+ "type": "u64"
664
678
  },
665
679
  {
666
- "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",
667
700
  "isMut": true,
668
701
  "isSigner": false
669
702
  },
670
703
  {
671
- "name": "bankVaultAuthority",
704
+ "name": "user",
672
705
  "isMut": true,
673
706
  "isSigner": false
707
+ }
708
+ ],
709
+ "args": [
710
+ {
711
+ "name": "assetBankIndex",
712
+ "type": "u64"
674
713
  },
675
714
  {
676
- "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",
677
739
  "isMut": true,
678
740
  "isSigner": false
679
741
  },
680
742
  {
681
- "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",
682
768
  "isMut": false,
683
769
  "isSigner": false
770
+ },
771
+ {
772
+ "name": "authority",
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,
784
+ "isSigner": false
684
785
  }
685
786
  ],
686
- "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
+ ]
687
801
  },
688
802
  {
689
803
  "name": "moveAmmPrice",
@@ -716,7 +830,7 @@
716
830
  ]
717
831
  },
718
832
  {
719
- "name": "withdrawFees",
833
+ "name": "withdrawFromMarketToInsuranceVault",
720
834
  "accounts": [
721
835
  {
722
836
  "name": "state",
@@ -730,7 +844,7 @@
730
844
  },
731
845
  {
732
846
  "name": "bank",
733
- "isMut": false,
847
+ "isMut": true,
734
848
  "isSigner": false
735
849
  },
736
850
  {
@@ -835,6 +949,11 @@
835
949
  "isMut": false,
836
950
  "isSigner": false
837
951
  },
952
+ {
953
+ "name": "bank",
954
+ "isMut": true,
955
+ "isSigner": false
956
+ },
838
957
  {
839
958
  "name": "bankVault",
840
959
  "isMut": true,
@@ -1084,12 +1203,116 @@
1084
1203
  "type": "u32"
1085
1204
  },
1086
1205
  {
1087
- "name": "marginRatioPartial",
1206
+ "name": "marginRatioMaintenance",
1088
1207
  "type": "u32"
1208
+ }
1209
+ ]
1210
+ },
1211
+ {
1212
+ "name": "updatePerpLiquidationFee",
1213
+ "accounts": [
1214
+ {
1215
+ "name": "admin",
1216
+ "isMut": false,
1217
+ "isSigner": true
1089
1218
  },
1090
1219
  {
1091
- "name": "marginRatioMaintenance",
1092
- "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"
1260
+ }
1261
+ ]
1262
+ },
1263
+ {
1264
+ "name": "updateMarketImfFactor",
1265
+ "accounts": [
1266
+ {
1267
+ "name": "admin",
1268
+ "isMut": false,
1269
+ "isSigner": true
1270
+ },
1271
+ {
1272
+ "name": "state",
1273
+ "isMut": false,
1274
+ "isSigner": false
1275
+ },
1276
+ {
1277
+ "name": "market",
1278
+ "isMut": true,
1279
+ "isSigner": false
1280
+ }
1281
+ ],
1282
+ "args": [
1283
+ {
1284
+ "name": "imfFactor",
1285
+ "type": "u128"
1286
+ }
1287
+ ]
1288
+ },
1289
+ {
1290
+ "name": "updateMarketUnsettledAssetWeight",
1291
+ "accounts": [
1292
+ {
1293
+ "name": "admin",
1294
+ "isMut": false,
1295
+ "isSigner": true
1296
+ },
1297
+ {
1298
+ "name": "state",
1299
+ "isMut": false,
1300
+ "isSigner": false
1301
+ },
1302
+ {
1303
+ "name": "market",
1304
+ "isMut": true,
1305
+ "isSigner": false
1306
+ }
1307
+ ],
1308
+ "args": [
1309
+ {
1310
+ "name": "unsettledInitialAssetWeight",
1311
+ "type": "u8"
1312
+ },
1313
+ {
1314
+ "name": "unsettledMaintenanceAssetWeight",
1315
+ "type": "u8"
1093
1316
  }
1094
1317
  ]
1095
1318
  },
@@ -1441,6 +1664,58 @@
1441
1664
  }
1442
1665
  ]
1443
1666
  },
1667
+ {
1668
+ "name": "updateMarketMaxSlippageRatio",
1669
+ "accounts": [
1670
+ {
1671
+ "name": "admin",
1672
+ "isMut": false,
1673
+ "isSigner": true
1674
+ },
1675
+ {
1676
+ "name": "state",
1677
+ "isMut": false,
1678
+ "isSigner": false
1679
+ },
1680
+ {
1681
+ "name": "market",
1682
+ "isMut": true,
1683
+ "isSigner": false
1684
+ }
1685
+ ],
1686
+ "args": [
1687
+ {
1688
+ "name": "maxSlippageRatio",
1689
+ "type": "u16"
1690
+ }
1691
+ ]
1692
+ },
1693
+ {
1694
+ "name": "updateMaxBaseAssetAmountRatio",
1695
+ "accounts": [
1696
+ {
1697
+ "name": "admin",
1698
+ "isMut": false,
1699
+ "isSigner": true
1700
+ },
1701
+ {
1702
+ "name": "state",
1703
+ "isMut": false,
1704
+ "isSigner": false
1705
+ },
1706
+ {
1707
+ "name": "market",
1708
+ "isMut": true,
1709
+ "isSigner": false
1710
+ }
1711
+ ],
1712
+ "args": [
1713
+ {
1714
+ "name": "maxBaseAssetAmountRatio",
1715
+ "type": "u16"
1716
+ }
1717
+ ]
1718
+ },
1444
1719
  {
1445
1720
  "name": "updateAdmin",
1446
1721
  "accounts": [
@@ -1563,7 +1838,7 @@
1563
1838
  ]
1564
1839
  },
1565
1840
  {
1566
- "name": "updateOrderAuctionTime",
1841
+ "name": "updateAuctionDuration",
1567
1842
  "accounts": [
1568
1843
  {
1569
1844
  "name": "admin",
@@ -1578,7 +1853,11 @@
1578
1853
  ],
1579
1854
  "args": [
1580
1855
  {
1581
- "name": "orderAuctionTime",
1856
+ "name": "minAuctionDuration",
1857
+ "type": "u8"
1858
+ },
1859
+ {
1860
+ "name": "maxAuctionDuration",
1582
1861
  "type": "u8"
1583
1862
  }
1584
1863
  ]
@@ -1675,6 +1954,14 @@
1675
1954
  {
1676
1955
  "name": "maintenanceLiabilityWeight",
1677
1956
  "type": "u128"
1957
+ },
1958
+ {
1959
+ "name": "imfFactor",
1960
+ "type": "u128"
1961
+ },
1962
+ {
1963
+ "name": "liquidationFee",
1964
+ "type": "u128"
1678
1965
  }
1679
1966
  ]
1680
1967
  }
@@ -1718,10 +2005,6 @@
1718
2005
  "name": "marginRatioInitial",
1719
2006
  "type": "u32"
1720
2007
  },
1721
- {
1722
- "name": "marginRatioPartial",
1723
- "type": "u32"
1724
- },
1725
2008
  {
1726
2009
  "name": "marginRatioMaintenance",
1727
2010
  "type": "u32"
@@ -1752,6 +2035,26 @@
1752
2035
  "name": "unsettledLoss",
1753
2036
  "type": "u128"
1754
2037
  },
2038
+ {
2039
+ "name": "imfFactor",
2040
+ "type": "u128"
2041
+ },
2042
+ {
2043
+ "name": "unsettledInitialAssetWeight",
2044
+ "type": "u8"
2045
+ },
2046
+ {
2047
+ "name": "unsettledMaintenanceAssetWeight",
2048
+ "type": "u8"
2049
+ },
2050
+ {
2051
+ "name": "unsettledImfFactor",
2052
+ "type": "u128"
2053
+ },
2054
+ {
2055
+ "name": "liquidationFee",
2056
+ "type": "u128"
2057
+ },
1755
2058
  {
1756
2059
  "name": "padding0",
1757
2060
  "type": "u32"
@@ -1885,7 +2188,15 @@
1885
2188
  "type": "u128"
1886
2189
  },
1887
2190
  {
1888
- "name": "orderAuctionDuration",
2191
+ "name": "minAuctionDuration",
2192
+ "type": "u8"
2193
+ },
2194
+ {
2195
+ "name": "maxAuctionDuration",
2196
+ "type": "u8"
2197
+ },
2198
+ {
2199
+ "name": "liquidationMarginBufferRatio",
1889
2200
  "type": "u8"
1890
2201
  },
1891
2202
  {
@@ -1963,6 +2274,10 @@
1963
2274
  32
1964
2275
  ]
1965
2276
  }
2277
+ },
2278
+ {
2279
+ "name": "beingLiquidated",
2280
+ "type": "bool"
1966
2281
  }
1967
2282
  ]
1968
2283
  }
@@ -1991,80 +2306,230 @@
1991
2306
  "type": "u8"
1992
2307
  },
1993
2308
  {
1994
- "name": "quoteAssetAmount",
1995
- "type": "u128"
2309
+ "name": "baseAssetAmount",
2310
+ "type": "u128"
2311
+ },
2312
+ {
2313
+ "name": "price",
2314
+ "type": "u128"
2315
+ },
2316
+ {
2317
+ "name": "marketIndex",
2318
+ "type": "u64"
2319
+ },
2320
+ {
2321
+ "name": "reduceOnly",
2322
+ "type": "bool"
2323
+ },
2324
+ {
2325
+ "name": "postOnly",
2326
+ "type": "bool"
2327
+ },
2328
+ {
2329
+ "name": "immediateOrCancel",
2330
+ "type": "bool"
2331
+ },
2332
+ {
2333
+ "name": "triggerPrice",
2334
+ "type": "u128"
2335
+ },
2336
+ {
2337
+ "name": "triggerCondition",
2338
+ "type": {
2339
+ "defined": "OrderTriggerCondition"
2340
+ }
2341
+ },
2342
+ {
2343
+ "name": "optionalAccounts",
2344
+ "type": {
2345
+ "defined": "OrderParamsOptionalAccounts"
2346
+ }
2347
+ },
2348
+ {
2349
+ "name": "positionLimit",
2350
+ "type": "u128"
2351
+ },
2352
+ {
2353
+ "name": "oraclePriceOffset",
2354
+ "type": "i128"
2355
+ },
2356
+ {
2357
+ "name": "auctionDuration",
2358
+ "type": "u8"
2359
+ },
2360
+ {
2361
+ "name": "padding0",
2362
+ "type": "bool"
2363
+ },
2364
+ {
2365
+ "name": "padding1",
2366
+ "type": "bool"
2367
+ }
2368
+ ]
2369
+ }
2370
+ },
2371
+ {
2372
+ "name": "OrderParamsOptionalAccounts",
2373
+ "type": {
2374
+ "kind": "struct",
2375
+ "fields": [
2376
+ {
2377
+ "name": "discountToken",
2378
+ "type": "bool"
2379
+ },
2380
+ {
2381
+ "name": "referrer",
2382
+ "type": "bool"
2383
+ }
2384
+ ]
2385
+ }
2386
+ },
2387
+ {
2388
+ "name": "LiquidatePerpRecord",
2389
+ "type": {
2390
+ "kind": "struct",
2391
+ "fields": [
2392
+ {
2393
+ "name": "marketIndex",
2394
+ "type": "u64"
2395
+ },
2396
+ {
2397
+ "name": "orderIds",
2398
+ "type": {
2399
+ "vec": "u64"
2400
+ }
2401
+ },
2402
+ {
2403
+ "name": "canceledOrdersFee",
2404
+ "type": "u128"
2405
+ },
2406
+ {
2407
+ "name": "oraclePrice",
2408
+ "type": "i128"
2409
+ },
2410
+ {
2411
+ "name": "baseAssetAmount",
2412
+ "type": "i128"
2413
+ },
2414
+ {
2415
+ "name": "quoteAssetAmount",
2416
+ "type": "u128"
2417
+ },
2418
+ {
2419
+ "name": "userPnl",
2420
+ "type": "i128"
2421
+ },
2422
+ {
2423
+ "name": "liquidatorPnl",
2424
+ "type": "i128"
2425
+ },
2426
+ {
2427
+ "name": "fillRecordId",
2428
+ "type": "u64"
2429
+ },
2430
+ {
2431
+ "name": "userOrderId",
2432
+ "type": "u64"
2433
+ },
2434
+ {
2435
+ "name": "liquidatorOrderId",
2436
+ "type": "u64"
2437
+ }
2438
+ ]
2439
+ }
2440
+ },
2441
+ {
2442
+ "name": "LiquidateBorrowRecord",
2443
+ "type": {
2444
+ "kind": "struct",
2445
+ "fields": [
2446
+ {
2447
+ "name": "assetBankIndex",
2448
+ "type": "u64"
1996
2449
  },
1997
2450
  {
1998
- "name": "baseAssetAmount",
1999
- "type": "u128"
2451
+ "name": "assetPrice",
2452
+ "type": "i128"
2000
2453
  },
2001
2454
  {
2002
- "name": "price",
2455
+ "name": "assetTransfer",
2003
2456
  "type": "u128"
2004
2457
  },
2005
2458
  {
2006
- "name": "marketIndex",
2459
+ "name": "liabilityBankIndex",
2007
2460
  "type": "u64"
2008
2461
  },
2009
2462
  {
2010
- "name": "reduceOnly",
2011
- "type": "bool"
2012
- },
2013
- {
2014
- "name": "postOnly",
2015
- "type": "bool"
2016
- },
2017
- {
2018
- "name": "immediateOrCancel",
2019
- "type": "bool"
2463
+ "name": "liabilityPrice",
2464
+ "type": "i128"
2020
2465
  },
2021
2466
  {
2022
- "name": "triggerPrice",
2467
+ "name": "liabilityTransfer",
2023
2468
  "type": "u128"
2024
- },
2469
+ }
2470
+ ]
2471
+ }
2472
+ },
2473
+ {
2474
+ "name": "LiquidateBorrowForPerpPnlRecord",
2475
+ "type": {
2476
+ "kind": "struct",
2477
+ "fields": [
2025
2478
  {
2026
- "name": "triggerCondition",
2027
- "type": {
2028
- "defined": "OrderTriggerCondition"
2029
- }
2479
+ "name": "marketIndex",
2480
+ "type": "u64"
2030
2481
  },
2031
2482
  {
2032
- "name": "optionalAccounts",
2033
- "type": {
2034
- "defined": "OrderParamsOptionalAccounts"
2035
- }
2483
+ "name": "marketOraclePrice",
2484
+ "type": "i128"
2036
2485
  },
2037
2486
  {
2038
- "name": "positionLimit",
2487
+ "name": "pnlTransfer",
2039
2488
  "type": "u128"
2040
2489
  },
2041
2490
  {
2042
- "name": "oraclePriceOffset",
2043
- "type": "i128"
2491
+ "name": "liabilityBankIndex",
2492
+ "type": "u64"
2044
2493
  },
2045
2494
  {
2046
- "name": "padding0",
2047
- "type": "bool"
2495
+ "name": "liabilityPrice",
2496
+ "type": "i128"
2048
2497
  },
2049
2498
  {
2050
- "name": "padding1",
2051
- "type": "bool"
2499
+ "name": "liabilityTransfer",
2500
+ "type": "u128"
2052
2501
  }
2053
2502
  ]
2054
2503
  }
2055
2504
  },
2056
2505
  {
2057
- "name": "OrderParamsOptionalAccounts",
2506
+ "name": "LiquidatePerpPnlForDepositRecord",
2058
2507
  "type": {
2059
2508
  "kind": "struct",
2060
2509
  "fields": [
2061
2510
  {
2062
- "name": "discountToken",
2063
- "type": "bool"
2511
+ "name": "marketIndex",
2512
+ "type": "u64"
2064
2513
  },
2065
2514
  {
2066
- "name": "referrer",
2067
- "type": "bool"
2515
+ "name": "marketOraclePrice",
2516
+ "type": "i128"
2517
+ },
2518
+ {
2519
+ "name": "pnlTransfer",
2520
+ "type": "u128"
2521
+ },
2522
+ {
2523
+ "name": "assetBankIndex",
2524
+ "type": "u64"
2525
+ },
2526
+ {
2527
+ "name": "assetPrice",
2528
+ "type": "i128"
2529
+ },
2530
+ {
2531
+ "name": "assetTransfer",
2532
+ "type": "u128"
2068
2533
  }
2069
2534
  ]
2070
2535
  }
@@ -2204,6 +2669,14 @@
2204
2669
  "name": "minimumQuoteAssetTradeSize",
2205
2670
  "type": "u128"
2206
2671
  },
2672
+ {
2673
+ "name": "maxBaseAssetAmountRatio",
2674
+ "type": "u16"
2675
+ },
2676
+ {
2677
+ "name": "maxSlippageRatio",
2678
+ "type": "u16"
2679
+ },
2207
2680
  {
2208
2681
  "name": "baseAssetAmountStepSize",
2209
2682
  "type": "u128"
@@ -2419,6 +2892,10 @@
2419
2892
  "type": {
2420
2893
  "defined": "OrderFillerRewardStructure"
2421
2894
  }
2895
+ },
2896
+ {
2897
+ "name": "cancelOrderFee",
2898
+ "type": "u128"
2422
2899
  }
2423
2900
  ]
2424
2901
  }
@@ -2688,10 +3165,6 @@
2688
3165
  "defined": "PositionDirection"
2689
3166
  }
2690
3167
  },
2691
- {
2692
- "name": "quoteAssetAmount",
2693
- "type": "u128"
2694
- },
2695
3168
  {
2696
3169
  "name": "baseAssetAmount",
2697
3170
  "type": "u128"
@@ -2807,35 +3280,29 @@
2807
3280
  }
2808
3281
  },
2809
3282
  {
2810
- "name": "MarginRequirementType",
3283
+ "name": "LiquidationMultiplierType",
2811
3284
  "type": {
2812
3285
  "kind": "enum",
2813
3286
  "variants": [
2814
3287
  {
2815
- "name": "Initial"
2816
- },
2817
- {
2818
- "name": "Partial"
3288
+ "name": "Discount"
2819
3289
  },
2820
3290
  {
2821
- "name": "Maintenance"
3291
+ "name": "Premium"
2822
3292
  }
2823
3293
  ]
2824
3294
  }
2825
3295
  },
2826
3296
  {
2827
- "name": "LiquidationType",
3297
+ "name": "MarginRequirementType",
2828
3298
  "type": {
2829
3299
  "kind": "enum",
2830
3300
  "variants": [
2831
3301
  {
2832
- "name": "NONE"
2833
- },
2834
- {
2835
- "name": "PARTIAL"
3302
+ "name": "Initial"
2836
3303
  },
2837
3304
  {
2838
- "name": "FULL"
3305
+ "name": "Maintenance"
2839
3306
  }
2840
3307
  ]
2841
3308
  }
@@ -2904,6 +3371,35 @@
2904
3371
  },
2905
3372
  {
2906
3373
  "name": "OraclePriceBreachedLimitPrice"
3374
+ },
3375
+ {
3376
+ "name": "MarketOrderFilledToLimitPrice"
3377
+ },
3378
+ {
3379
+ "name": "MarketOrderAuctionExpired"
3380
+ },
3381
+ {
3382
+ "name": "CanceledForLiquidation"
3383
+ }
3384
+ ]
3385
+ }
3386
+ },
3387
+ {
3388
+ "name": "LiquidationType",
3389
+ "type": {
3390
+ "kind": "enum",
3391
+ "variants": [
3392
+ {
3393
+ "name": "LiquidatePerp"
3394
+ },
3395
+ {
3396
+ "name": "LiquidateBorrow"
3397
+ },
3398
+ {
3399
+ "name": "LiquidateBorrowForPerpPnl"
3400
+ },
3401
+ {
3402
+ "name": "LiquidatePerpPnlForDeposit"
2907
3403
  }
2908
3404
  ]
2909
3405
  }
@@ -3279,81 +3775,6 @@
3279
3775
  }
3280
3776
  ]
3281
3777
  },
3282
- {
3283
- "name": "LiquidationRecord",
3284
- "fields": [
3285
- {
3286
- "name": "ts",
3287
- "type": "i64",
3288
- "index": false
3289
- },
3290
- {
3291
- "name": "userAuthority",
3292
- "type": "publicKey",
3293
- "index": false
3294
- },
3295
- {
3296
- "name": "user",
3297
- "type": "publicKey",
3298
- "index": false
3299
- },
3300
- {
3301
- "name": "partial",
3302
- "type": "bool",
3303
- "index": false
3304
- },
3305
- {
3306
- "name": "baseAssetValue",
3307
- "type": "u128",
3308
- "index": false
3309
- },
3310
- {
3311
- "name": "baseAssetValueClosed",
3312
- "type": "u128",
3313
- "index": false
3314
- },
3315
- {
3316
- "name": "liquidationFee",
3317
- "type": "u128",
3318
- "index": false
3319
- },
3320
- {
3321
- "name": "feeToLiquidator",
3322
- "type": "u64",
3323
- "index": false
3324
- },
3325
- {
3326
- "name": "feeToInsuranceFund",
3327
- "type": "u64",
3328
- "index": false
3329
- },
3330
- {
3331
- "name": "liquidator",
3332
- "type": "publicKey",
3333
- "index": false
3334
- },
3335
- {
3336
- "name": "totalCollateral",
3337
- "type": "u128",
3338
- "index": false
3339
- },
3340
- {
3341
- "name": "collateral",
3342
- "type": "u128",
3343
- "index": false
3344
- },
3345
- {
3346
- "name": "unrealizedPnl",
3347
- "type": "i128",
3348
- "index": false
3349
- },
3350
- {
3351
- "name": "marginRatio",
3352
- "type": "u128",
3353
- "index": false
3354
- }
3355
- ]
3356
- },
3357
3778
  {
3358
3779
  "name": "OrderRecord",
3359
3780
  "fields": [
@@ -3466,6 +3887,71 @@
3466
3887
  "index": false
3467
3888
  }
3468
3889
  ]
3890
+ },
3891
+ {
3892
+ "name": "LiquidationRecord",
3893
+ "fields": [
3894
+ {
3895
+ "name": "ts",
3896
+ "type": "i64",
3897
+ "index": false
3898
+ },
3899
+ {
3900
+ "name": "liquidationType",
3901
+ "type": {
3902
+ "defined": "LiquidationType"
3903
+ },
3904
+ "index": false
3905
+ },
3906
+ {
3907
+ "name": "user",
3908
+ "type": "publicKey",
3909
+ "index": false
3910
+ },
3911
+ {
3912
+ "name": "liquidator",
3913
+ "type": "publicKey",
3914
+ "index": false
3915
+ },
3916
+ {
3917
+ "name": "marginRequirement",
3918
+ "type": "u128",
3919
+ "index": false
3920
+ },
3921
+ {
3922
+ "name": "totalCollateral",
3923
+ "type": "i128",
3924
+ "index": false
3925
+ },
3926
+ {
3927
+ "name": "liquidatePerp",
3928
+ "type": {
3929
+ "defined": "LiquidatePerpRecord"
3930
+ },
3931
+ "index": false
3932
+ },
3933
+ {
3934
+ "name": "liquidateBorrow",
3935
+ "type": {
3936
+ "defined": "LiquidateBorrowRecord"
3937
+ },
3938
+ "index": false
3939
+ },
3940
+ {
3941
+ "name": "liquidateBorrowForPerpPnl",
3942
+ "type": {
3943
+ "defined": "LiquidateBorrowForPerpPnlRecord"
3944
+ },
3945
+ "index": false
3946
+ },
3947
+ {
3948
+ "name": "liquidatePerpPnlForDeposit",
3949
+ "type": {
3950
+ "defined": "LiquidatePerpPnlForDepositRecord"
3951
+ },
3952
+ "index": false
3953
+ }
3954
+ ]
3469
3955
  }
3470
3956
  ],
3471
3957
  "errors": [
@@ -3691,8 +4177,8 @@
3691
4177
  },
3692
4178
  {
3693
4179
  "code": 6044,
3694
- "name": "CouldNotFillOrder",
3695
- "msg": "CouldNotFillOrder"
4180
+ "name": "FillOrderDidNotUpdateState",
4181
+ "msg": "FillOrderDidNotUpdateState"
3696
4182
  },
3697
4183
  {
3698
4184
  "code": 6045,
@@ -3921,6 +4407,56 @@
3921
4407
  },
3922
4408
  {
3923
4409
  "code": 6090,
4410
+ "name": "PositionAlreadyBeingLiquidated",
4411
+ "msg": "PositionAlreadyBeingLiquidated"
4412
+ },
4413
+ {
4414
+ "code": 6091,
4415
+ "name": "PositionDoesntHaveOpenPositionOrOrders",
4416
+ "msg": "PositionDoesntHaveOpenPositionOrOrders"
4417
+ },
4418
+ {
4419
+ "code": 6092,
4420
+ "name": "AllOrdersAreAlreadyLiquidations",
4421
+ "msg": "AllOrdersAreAlreadyLiquidations"
4422
+ },
4423
+ {
4424
+ "code": 6093,
4425
+ "name": "CantCancelLiquidationOrder",
4426
+ "msg": "CantCancelLiquidationOrder"
4427
+ },
4428
+ {
4429
+ "code": 6094,
4430
+ "name": "UserIsBeingLiquidated",
4431
+ "msg": "UserIsBeingLiquidated"
4432
+ },
4433
+ {
4434
+ "code": 6095,
4435
+ "name": "LiquidationsOngoing",
4436
+ "msg": "LiquidationsOngoing"
4437
+ },
4438
+ {
4439
+ "code": 6096,
4440
+ "name": "WrongBankBalanceType",
4441
+ "msg": "WrongBankBalanceType"
4442
+ },
4443
+ {
4444
+ "code": 6097,
4445
+ "name": "UserCantLiquidateThemself",
4446
+ "msg": "UserCantLiquidateThemself"
4447
+ },
4448
+ {
4449
+ "code": 6098,
4450
+ "name": "InvalidPerpPositionToLiquidate",
4451
+ "msg": "InvalidPerpPositionToLiquidate"
4452
+ },
4453
+ {
4454
+ "code": 6099,
4455
+ "name": "InvalidBaseAssetAmountForLiquidatePerp",
4456
+ "msg": "InvalidBaseAssetAmountForLiquidatePerp"
4457
+ },
4458
+ {
4459
+ "code": 6100,
3924
4460
  "name": "DefaultError",
3925
4461
  "msg": "DefaultError"
3926
4462
  }