@drift-labs/sdk 0.2.0-master.3 → 0.2.0-master.30

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 (208) hide show
  1. package/README.md +13 -13
  2. package/lib/accounts/bulkUserStatsSubscription.d.ts +7 -0
  3. package/lib/accounts/bulkUserStatsSubscription.js +21 -0
  4. package/lib/accounts/bulkUserSubscription.js +0 -1
  5. package/lib/accounts/fetch.d.ts +2 -1
  6. package/lib/accounts/fetch.js +9 -1
  7. package/lib/accounts/pollingClearingHouseAccountSubscriber.d.ts +16 -16
  8. package/lib/accounts/pollingClearingHouseAccountSubscriber.js +31 -28
  9. package/lib/accounts/pollingUserStatsAccountSubscriber.d.ts +27 -0
  10. package/lib/accounts/pollingUserStatsAccountSubscriber.js +113 -0
  11. package/lib/accounts/types.d.ts +22 -11
  12. package/lib/accounts/webSocketClearingHouseAccountSubscriber.d.ts +17 -17
  13. package/lib/accounts/webSocketClearingHouseAccountSubscriber.js +37 -35
  14. package/lib/accounts/webSocketUserStatsAccountSubsriber.d.ts +20 -0
  15. package/lib/accounts/webSocketUserStatsAccountSubsriber.js +47 -0
  16. package/lib/addresses/marketAddresses.d.ts +1 -3
  17. package/lib/addresses/pda.d.ts +10 -4
  18. package/lib/addresses/pda.js +51 -14
  19. package/lib/admin.d.ts +34 -22
  20. package/lib/admin.js +182 -73
  21. package/lib/clearingHouse.d.ts +120 -42
  22. package/lib/clearingHouse.js +1505 -254
  23. package/lib/clearingHouseConfig.d.ts +4 -4
  24. package/lib/clearingHouseUser.d.ts +50 -38
  25. package/lib/clearingHouseUser.js +410 -190
  26. package/lib/clearingHouseUserStats.d.ts +18 -0
  27. package/lib/clearingHouseUserStats.js +49 -0
  28. package/lib/clearingHouseUserStatsConfig.d.ts +14 -0
  29. package/lib/clearingHouseUserStatsConfig.js +2 -0
  30. package/lib/config.d.ts +7 -9
  31. package/lib/config.js +21 -21
  32. package/lib/constants/numericConstants.d.ts +18 -12
  33. package/lib/constants/numericConstants.js +28 -21
  34. package/lib/constants/perpMarkets.d.ts +18 -0
  35. package/lib/constants/{markets.js → perpMarkets.js} +7 -7
  36. package/lib/constants/spotMarkets.d.ts +19 -0
  37. package/lib/constants/spotMarkets.js +53 -0
  38. package/lib/dlob/DLOB.d.ts +73 -0
  39. package/lib/dlob/DLOB.js +553 -0
  40. package/lib/dlob/DLOBNode.d.ts +52 -0
  41. package/lib/dlob/DLOBNode.js +82 -0
  42. package/lib/dlob/NodeList.d.ts +26 -0
  43. package/lib/dlob/NodeList.js +138 -0
  44. package/lib/events/eventList.js +3 -0
  45. package/lib/events/eventSubscriber.d.ts +4 -2
  46. package/lib/events/eventSubscriber.js +16 -9
  47. package/lib/events/fetchLogs.d.ts +10 -1
  48. package/lib/events/fetchLogs.js +27 -7
  49. package/lib/events/pollingLogProvider.d.ts +2 -1
  50. package/lib/events/pollingLogProvider.js +6 -2
  51. package/lib/events/sort.js +8 -11
  52. package/lib/events/types.d.ts +7 -2
  53. package/lib/events/types.js +5 -0
  54. package/lib/examples/makeTradeExample.js +20 -8
  55. package/lib/factory/bigNum.d.ts +1 -0
  56. package/lib/factory/bigNum.js +34 -10
  57. package/lib/idl/clearing_house.json +4313 -1433
  58. package/lib/idl/{mock_usdc_faucet.json → token_faucet.json} +46 -23
  59. package/lib/index.d.ts +21 -6
  60. package/lib/index.js +25 -6
  61. package/lib/math/amm.d.ts +8 -5
  62. package/lib/math/amm.js +68 -46
  63. package/lib/math/auction.js +4 -1
  64. package/lib/math/conversion.js +1 -1
  65. package/lib/math/funding.d.ts +6 -6
  66. package/lib/math/funding.js +11 -10
  67. package/lib/math/insurance.d.ts +4 -0
  68. package/lib/math/insurance.js +27 -0
  69. package/lib/math/margin.d.ts +11 -0
  70. package/lib/math/margin.js +77 -0
  71. package/lib/math/market.d.ts +14 -9
  72. package/lib/math/market.js +69 -7
  73. package/lib/math/oracles.d.ts +4 -0
  74. package/lib/math/oracles.js +36 -8
  75. package/lib/math/orders.d.ts +6 -2
  76. package/lib/math/orders.js +78 -3
  77. package/lib/math/position.d.ts +21 -13
  78. package/lib/math/position.js +76 -36
  79. package/lib/math/repeg.js +14 -5
  80. package/lib/math/spotBalance.d.ts +22 -0
  81. package/lib/math/spotBalance.js +193 -0
  82. package/lib/math/spotMarket.d.ts +4 -0
  83. package/lib/math/spotMarket.js +8 -0
  84. package/lib/math/spotPosition.d.ts +6 -0
  85. package/lib/math/spotPosition.js +23 -0
  86. package/lib/math/trade.d.ts +10 -10
  87. package/lib/math/trade.js +22 -29
  88. package/lib/oracles/pythClient.js +1 -1
  89. package/lib/oracles/quoteAssetOracleClient.js +1 -1
  90. package/lib/oracles/switchboardClient.js +1 -1
  91. package/lib/orderParams.d.ts +14 -5
  92. package/lib/orderParams.js +12 -92
  93. package/lib/serum/serumSubscriber.d.ts +23 -0
  94. package/lib/serum/serumSubscriber.js +41 -0
  95. package/lib/serum/types.d.ts +11 -0
  96. package/lib/serum/types.js +2 -0
  97. package/lib/slot/SlotSubscriber.d.ts +7 -0
  98. package/lib/slot/SlotSubscriber.js +3 -0
  99. package/lib/{mockUSDCFaucet.d.ts → tokenFaucet.d.ts} +8 -5
  100. package/lib/{mockUSDCFaucet.js → tokenFaucet.js} +63 -51
  101. package/lib/tx/retryTxSender.d.ts +1 -1
  102. package/lib/tx/retryTxSender.js +13 -4
  103. package/lib/tx/types.d.ts +1 -1
  104. package/lib/tx/utils.js +1 -1
  105. package/lib/types.d.ts +474 -123
  106. package/lib/types.js +99 -5
  107. package/lib/userMap/userMap.d.ts +25 -0
  108. package/lib/userMap/userMap.js +73 -0
  109. package/lib/userMap/userStatsMap.d.ts +19 -0
  110. package/lib/userMap/userStatsMap.js +68 -0
  111. package/lib/util/computeUnits.js +1 -1
  112. package/lib/util/getTokenAddress.d.ts +2 -0
  113. package/lib/util/getTokenAddress.js +9 -0
  114. package/package.json +9 -5
  115. package/src/accounts/bulkUserStatsSubscription.ts +33 -0
  116. package/src/accounts/bulkUserSubscription.ts +0 -1
  117. package/src/accounts/fetch.ts +27 -2
  118. package/src/accounts/pollingClearingHouseAccountSubscriber.ts +46 -42
  119. package/src/accounts/pollingUserStatsAccountSubscriber.ts +172 -0
  120. package/src/accounts/types.ts +31 -11
  121. package/src/accounts/webSocketClearingHouseAccountSubscriber.ts +64 -59
  122. package/src/accounts/webSocketUserStatsAccountSubsriber.ts +80 -0
  123. package/src/addresses/marketAddresses.ts +1 -2
  124. package/src/addresses/pda.ts +88 -14
  125. package/src/admin.ts +333 -128
  126. package/src/assert/assert.js +9 -0
  127. package/src/clearingHouse.ts +2464 -458
  128. package/src/clearingHouseConfig.ts +4 -3
  129. package/src/clearingHouseUser.ts +747 -291
  130. package/src/clearingHouseUserStats.ts +75 -0
  131. package/src/clearingHouseUserStatsConfig.ts +18 -0
  132. package/src/config.ts +30 -31
  133. package/src/constants/numericConstants.ts +41 -25
  134. package/src/constants/{markets.ts → perpMarkets.ts} +10 -10
  135. package/src/constants/spotMarkets.ts +72 -0
  136. package/src/dlob/DLOB.ts +868 -0
  137. package/src/dlob/DLOBNode.ts +162 -0
  138. package/src/dlob/NodeList.ts +185 -0
  139. package/src/events/eventList.js +77 -0
  140. package/src/events/eventList.ts +3 -0
  141. package/src/events/eventSubscriber.ts +20 -12
  142. package/src/events/fetchLogs.ts +35 -8
  143. package/src/events/pollingLogProvider.ts +10 -2
  144. package/src/events/sort.ts +11 -15
  145. package/src/events/types.ts +16 -1
  146. package/src/examples/makeTradeExample.js +157 -0
  147. package/src/examples/makeTradeExample.ts +32 -14
  148. package/src/factory/bigNum.ts +42 -13
  149. package/src/idl/clearing_house.json +4313 -1433
  150. package/src/idl/{mock_usdc_faucet.json → token_faucet.json} +46 -23
  151. package/src/index.ts +21 -6
  152. package/src/math/amm.ts +136 -66
  153. package/src/math/auction.ts +5 -1
  154. package/src/math/conversion.ts +2 -2
  155. package/src/math/funding.ts +20 -18
  156. package/src/math/insurance.ts +35 -0
  157. package/src/math/margin.ts +127 -0
  158. package/src/math/market.ts +138 -12
  159. package/src/math/oracles.ts +63 -9
  160. package/src/math/orders.ts +138 -4
  161. package/src/math/position.ts +119 -58
  162. package/src/math/repeg.ts +16 -6
  163. package/src/math/spotBalance.ts +316 -0
  164. package/src/math/spotMarket.ts +9 -0
  165. package/src/math/spotPosition.ts +47 -0
  166. package/src/math/trade.ts +43 -49
  167. package/src/oracles/pythClient.ts +2 -2
  168. package/src/oracles/quoteAssetOracleClient.ts +2 -2
  169. package/src/oracles/switchboardClient.ts +2 -2
  170. package/src/orderParams.ts +24 -137
  171. package/src/serum/serumSubscriber.ts +80 -0
  172. package/src/serum/types.ts +13 -0
  173. package/src/slot/SlotSubscriber.ts +11 -1
  174. package/src/token/index.js +38 -0
  175. package/src/{mockUSDCFaucet.ts → tokenFaucet.ts} +82 -70
  176. package/src/tx/retryTxSender.ts +16 -5
  177. package/src/tx/types.js +2 -0
  178. package/src/tx/types.ts +2 -1
  179. package/src/tx/utils.js +17 -0
  180. package/src/tx/utils.ts +1 -1
  181. package/src/types.ts +477 -125
  182. package/src/userMap/userMap.ts +100 -0
  183. package/src/userMap/userStatsMap.ts +110 -0
  184. package/src/util/computeUnits.js +21 -11
  185. package/src/util/computeUnits.ts +1 -1
  186. package/src/util/getTokenAddress.js +9 -0
  187. package/src/util/getTokenAddress.ts +18 -0
  188. package/src/util/promiseTimeout.js +14 -0
  189. package/src/util/tps.js +27 -0
  190. package/tests/bn/test.ts +12 -3
  191. package/tests/dlob/helpers.ts +374 -0
  192. package/tests/dlob/test.ts +2865 -0
  193. package/lib/constants/banks.d.ts +0 -16
  194. package/lib/constants/banks.js +0 -34
  195. package/lib/constants/markets.d.ts +0 -19
  196. package/lib/math/bankBalance.d.ts +0 -9
  197. package/lib/math/bankBalance.js +0 -75
  198. package/lib/math/state.d.ts +0 -8
  199. package/lib/math/state.js +0 -15
  200. package/lib/orders.d.ts +0 -8
  201. package/lib/orders.js +0 -134
  202. package/src/constants/banks.ts +0 -43
  203. package/src/math/bankBalance.ts +0 -112
  204. package/src/math/state.ts +0 -14
  205. package/src/math/utils.js +0 -27
  206. package/src/math/utils.js.map +0 -1
  207. package/src/orders.ts +0 -244
  208. package/src/util/computeUnits.js.map +0 -1
package/lib/admin.js CHANGED
@@ -29,6 +29,7 @@ const types_1 = require("./types");
29
29
  const anchor_1 = require("@project-serum/anchor");
30
30
  const anchor = __importStar(require("@project-serum/anchor"));
31
31
  const pda_1 = require("./addresses/pda");
32
+ const utils_1 = require("./math/utils");
32
33
  const spl_token_1 = require("@solana/spl-token");
33
34
  const clearingHouse_1 = require("./clearingHouse");
34
35
  const numericConstants_1 = require("./constants/numericConstants");
@@ -40,17 +41,14 @@ class Admin extends clearingHouse_1.ClearingHouse {
40
41
  if (stateAccountRPCResponse.value !== null) {
41
42
  throw new Error('Clearing house already initialized');
42
43
  }
43
- const [insuranceVaultPublicKey] = await web3_js_1.PublicKey.findProgramAddress([Buffer.from(anchor.utils.bytes.utf8.encode('insurance_vault'))], this.program.programId);
44
- const [insuranceVaultAuthority] = await web3_js_1.PublicKey.findProgramAddress([insuranceVaultPublicKey.toBuffer()], this.program.programId);
45
44
  const [clearingHouseStatePublicKey] = await (0, pda_1.getClearingHouseStateAccountPublicKeyAndNonce)(this.program.programId);
46
45
  const initializeTx = await this.program.transaction.initialize(adminControlsPrices, {
47
46
  accounts: {
48
47
  admin: this.wallet.publicKey,
49
48
  state: clearingHouseStatePublicKey,
50
49
  quoteAssetMint: usdcMint,
51
- insuranceVault: insuranceVaultPublicKey,
52
- insuranceVaultAuthority: insuranceVaultAuthority,
53
50
  rent: web3_js_1.SYSVAR_RENT_PUBKEY,
51
+ clearingHouseSigner: this.getSignerPublicKey(),
54
52
  systemProgram: anchor.web3.SystemProgram.programId,
55
53
  tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
56
54
  },
@@ -58,19 +56,20 @@ class Admin extends clearingHouse_1.ClearingHouse {
58
56
  const { txSig: initializeTxSig } = await this.txSender.send(initializeTx, [], this.opts);
59
57
  return [initializeTxSig];
60
58
  }
61
- async initializeBank(mint, optimalUtilization, optimalRate, maxRate, oracle, oracleSource, initialAssetWeight, maintenanceAssetWeight, initialLiabilityWeight, maintenanceLiabilityWeight) {
62
- const bankIndex = this.getStateAccount().numberOfBanks;
63
- const bank = await (0, pda_1.getBankPublicKey)(this.program.programId, bankIndex);
64
- const bankVault = await (0, pda_1.getBankVaultPublicKey)(this.program.programId, bankIndex);
65
- const bankVaultAuthority = await (0, pda_1.getBankVaultAuthorityPublicKey)(this.program.programId, bankIndex);
66
- const initializeTx = await this.program.transaction.initializeBank(optimalUtilization, optimalRate, maxRate, oracleSource, initialAssetWeight, maintenanceAssetWeight, initialLiabilityWeight, maintenanceLiabilityWeight, {
59
+ async initializeSpotMarket(mint, optimalUtilization, optimalRate, maxRate, oracle, oracleSource, initialAssetWeight, maintenanceAssetWeight, initialLiabilityWeight, maintenanceLiabilityWeight, imfFactor = new anchor_1.BN(0), liquidationFee = numericConstants_1.ZERO) {
60
+ const spotMarketIndex = this.getStateAccount().numberOfSpotMarkets;
61
+ const spotMarket = await (0, pda_1.getSpotMarketPublicKey)(this.program.programId, spotMarketIndex);
62
+ const spotMarketVault = await (0, pda_1.getSpotMarketVaultPublicKey)(this.program.programId, spotMarketIndex);
63
+ const insuranceFundVault = await (0, pda_1.getInsuranceFundVaultPublicKey)(this.program.programId, spotMarketIndex);
64
+ const initializeTx = await this.program.transaction.initializeSpotMarket(optimalUtilization, optimalRate, maxRate, oracleSource, initialAssetWeight, maintenanceAssetWeight, initialLiabilityWeight, maintenanceLiabilityWeight, imfFactor, liquidationFee, {
67
65
  accounts: {
68
66
  admin: this.wallet.publicKey,
69
67
  state: await this.getStatePublicKey(),
70
- bank,
71
- bankVault,
72
- bankVaultAuthority,
73
- bankMint: mint,
68
+ spotMarket,
69
+ spotMarketVault,
70
+ insuranceFundVault,
71
+ clearingHouseSigner: this.getSignerPublicKey(),
72
+ spotMarketMint: mint,
74
73
  oracle,
75
74
  rent: web3_js_1.SYSVAR_RENT_PUBKEY,
76
75
  systemProgram: anchor.web3.SystemProgram.programId,
@@ -78,16 +77,35 @@ class Admin extends clearingHouse_1.ClearingHouse {
78
77
  },
79
78
  });
80
79
  const { txSig } = await this.txSender.send(initializeTx, [], this.opts);
81
- await this.accountSubscriber.addBank(bankIndex);
80
+ await this.accountSubscriber.addSpotMarket(spotMarketIndex);
82
81
  await this.accountSubscriber.addOracle({
83
82
  source: oracleSource,
84
83
  publicKey: oracle,
85
84
  });
86
85
  return txSig;
87
86
  }
88
- async initializeMarket(priceOracle, baseAssetReserve, quoteAssetReserve, periodicity, pegMultiplier = numericConstants_1.PEG_PRECISION, oracleSource = types_1.OracleSource.PYTH, marginRatioInitial = 2000, marginRatioPartial = 625, marginRatioMaintenance = 500) {
87
+ async initializeSerumFulfillmentConfig(marketIndex, serumMarket, serumProgram) {
88
+ const serumOpenOrders = (0, pda_1.getSerumOpenOrdersPublicKey)(this.program.programId, serumMarket);
89
+ const serumFulfillmentConfig = (0, pda_1.getSerumFulfillmentConfigPublicKey)(this.program.programId, serumMarket);
90
+ return await this.program.rpc.initializeSerumFulfillmentConfig(marketIndex, {
91
+ accounts: {
92
+ admin: this.wallet.publicKey,
93
+ state: await this.getStatePublicKey(),
94
+ baseSpotMarket: this.getSpotMarketAccount(marketIndex).pubkey,
95
+ quoteSpotMarket: this.getQuoteSpotMarketAccount().pubkey,
96
+ clearingHouseSigner: this.getSignerPublicKey(),
97
+ serumProgram,
98
+ serumMarket,
99
+ serumOpenOrders,
100
+ rent: web3_js_1.SYSVAR_RENT_PUBKEY,
101
+ systemProgram: anchor.web3.SystemProgram.programId,
102
+ serumFulfillmentConfig,
103
+ },
104
+ });
105
+ }
106
+ async initializeMarket(priceOracle, baseAssetReserve, quoteAssetReserve, periodicity, pegMultiplier = numericConstants_1.PEG_PRECISION, oracleSource = types_1.OracleSource.PYTH, marginRatioInitial = 2000, marginRatioMaintenance = 500, liquidationFee = numericConstants_1.ZERO) {
89
107
  const marketPublicKey = await (0, pda_1.getMarketPublicKey)(this.program.programId, this.getStateAccount().numberOfMarkets);
90
- const initializeMarketTx = await this.program.transaction.initializeMarket(baseAssetReserve, quoteAssetReserve, periodicity, pegMultiplier, oracleSource, marginRatioInitial, marginRatioPartial, marginRatioMaintenance, {
108
+ const initializeMarketTx = await this.program.transaction.initializeMarket(baseAssetReserve, quoteAssetReserve, periodicity, pegMultiplier, oracleSource, marginRatioInitial, marginRatioMaintenance, liquidationFee, {
91
109
  accounts: {
92
110
  state: await this.getStatePublicKey(),
93
111
  admin: this.wallet.publicKey,
@@ -98,20 +116,23 @@ class Admin extends clearingHouse_1.ClearingHouse {
98
116
  },
99
117
  });
100
118
  const { txSig } = await this.txSender.send(initializeMarketTx, [], this.opts);
101
- await this.accountSubscriber.addMarket(this.getStateAccount().numberOfMarkets);
119
+ await this.accountSubscriber.addPerpMarket(this.getStateAccount().numberOfMarkets);
102
120
  await this.accountSubscriber.addOracle({
103
121
  source: oracleSource,
104
122
  publicKey: priceOracle,
105
123
  });
106
124
  return txSig;
107
125
  }
108
- async moveAmmPrice(baseAssetReserve, quoteAssetReserve, marketIndex) {
126
+ async moveAmmPrice(marketIndex, baseAssetReserve, quoteAssetReserve, sqrtK) {
109
127
  const marketPublicKey = await (0, pda_1.getMarketPublicKey)(this.program.programId, marketIndex);
110
- return await this.program.rpc.moveAmmPrice(baseAssetReserve, quoteAssetReserve, {
128
+ if (sqrtK == undefined) {
129
+ sqrtK = (0, utils_1.squareRootBN)(baseAssetReserve.mul(quoteAssetReserve));
130
+ }
131
+ return await this.program.rpc.moveAmmPrice(baseAssetReserve, quoteAssetReserve, sqrtK, {
111
132
  accounts: {
112
133
  state: await this.getStatePublicKey(),
113
134
  admin: this.wallet.publicKey,
114
- market: marketPublicKey,
135
+ perpMarket: marketPublicKey,
115
136
  },
116
137
  });
117
138
  }
@@ -121,27 +142,36 @@ class Admin extends clearingHouse_1.ClearingHouse {
121
142
  state: await this.getStatePublicKey(),
122
143
  admin: this.wallet.publicKey,
123
144
  market: await (0, pda_1.getMarketPublicKey)(this.program.programId, marketIndex),
124
- oracle: this.getMarketAccount(marketIndex).amm.oracle,
145
+ oracle: this.getPerpMarketAccount(marketIndex).amm.oracle,
146
+ },
147
+ });
148
+ }
149
+ async updateConcentrationScale(marketIndex, concentrationScale) {
150
+ return await this.program.rpc.updateConcentrationCoef(concentrationScale, {
151
+ accounts: {
152
+ state: await this.getStatePublicKey(),
153
+ admin: this.wallet.publicKey,
154
+ market: await (0, pda_1.getMarketPublicKey)(this.program.programId, marketIndex),
125
155
  },
126
156
  });
127
157
  }
128
- async moveAmmToPrice(marketIndex, targetPrice) {
129
- const market = this.getMarketAccount(marketIndex);
158
+ async moveAmmToPrice(perpMarketIndex, targetPrice) {
159
+ const market = this.getPerpMarketAccount(perpMarketIndex);
130
160
  const [direction, tradeSize, _] = (0, trade_1.calculateTargetPriceTrade)(market, targetPrice, new anchor_1.BN(1000), 'quote', undefined //todo
131
161
  );
132
162
  const [newQuoteAssetAmount, newBaseAssetAmount] = (0, amm_1.calculateAmmReservesAfterSwap)(market.amm, 'quote', tradeSize, (0, amm_1.getSwapDirection)('quote', direction));
133
- const marketPublicKey = await (0, pda_1.getMarketPublicKey)(this.program.programId, marketIndex);
134
- return await this.program.rpc.moveAmmPrice(newBaseAssetAmount, newQuoteAssetAmount, {
163
+ const marketPublicKey = await (0, pda_1.getMarketPublicKey)(this.program.programId, perpMarketIndex);
164
+ return await this.program.rpc.moveAmmPrice(newBaseAssetAmount, newQuoteAssetAmount, market.amm.sqrtK, {
135
165
  accounts: {
136
166
  state: await this.getStatePublicKey(),
137
167
  admin: this.wallet.publicKey,
138
- market: marketPublicKey,
168
+ perpMarket: marketPublicKey,
139
169
  },
140
170
  });
141
171
  }
142
172
  async repegAmmCurve(newPeg, marketIndex) {
143
173
  const marketPublicKey = await (0, pda_1.getMarketPublicKey)(this.program.programId, marketIndex);
144
- const ammData = this.getMarketAccount(marketIndex).amm;
174
+ const ammData = this.getPerpMarketAccount(marketIndex).amm;
145
175
  return await this.program.rpc.repegAmmCurve(newPeg, {
146
176
  accounts: {
147
177
  state: await this.getStatePublicKey(),
@@ -152,7 +182,7 @@ class Admin extends clearingHouse_1.ClearingHouse {
152
182
  });
153
183
  }
154
184
  async updateAmmOracleTwap(marketIndex) {
155
- const ammData = this.getMarketAccount(marketIndex).amm;
185
+ const ammData = this.getPerpMarketAccount(marketIndex).amm;
156
186
  const marketPublicKey = await (0, pda_1.getMarketPublicKey)(this.program.programId, marketIndex);
157
187
  return await this.program.rpc.updateAmmOracleTwap({
158
188
  accounts: {
@@ -164,7 +194,7 @@ class Admin extends clearingHouse_1.ClearingHouse {
164
194
  });
165
195
  }
166
196
  async resetAmmOracleTwap(marketIndex) {
167
- const ammData = this.getMarketAccount(marketIndex).amm;
197
+ const ammData = this.getPerpMarketAccount(marketIndex).amm;
168
198
  const marketPublicKey = await (0, pda_1.getMarketPublicKey)(this.program.programId, marketIndex);
169
199
  return await this.program.rpc.resetAmmOracleTwap({
170
200
  accounts: {
@@ -175,45 +205,17 @@ class Admin extends clearingHouse_1.ClearingHouse {
175
205
  },
176
206
  });
177
207
  }
178
- async withdrawFromInsuranceVault(amount, recipient) {
179
- const state = await this.getStateAccount();
180
- return await this.program.rpc.withdrawFromInsuranceVault(amount, {
181
- accounts: {
182
- admin: this.wallet.publicKey,
183
- state: await this.getStatePublicKey(),
184
- insuranceVault: state.insuranceVault,
185
- insuranceVaultAuthority: state.insuranceVaultAuthority,
186
- recipient: recipient,
187
- tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
188
- },
189
- });
190
- }
191
- async withdrawFees(marketIndex, amount, recipient) {
192
- const marketPublicKey = await (0, pda_1.getMarketPublicKey)(this.program.programId, marketIndex);
193
- const bank = this.getQuoteAssetBankAccount();
194
- return await this.program.rpc.withdrawFees(amount, {
195
- accounts: {
196
- admin: this.wallet.publicKey,
197
- state: await this.getStatePublicKey(),
198
- market: marketPublicKey,
199
- bank: bank.pubkey,
200
- bankVault: bank.vault,
201
- bankVaultAuthority: bank.vaultAuthority,
202
- recipient: recipient,
203
- tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
204
- },
205
- });
206
- }
207
- async withdrawFromInsuranceVaultToMarket(marketIndex, amount) {
208
- const state = await this.getStateAccount();
209
- return await this.program.rpc.withdrawFromInsuranceVaultToMarket(amount, {
208
+ async depositIntoMarketFeePool(marketIndex, amount, sourceVault) {
209
+ const spotMarket = this.getQuoteSpotMarketAccount();
210
+ return await this.program.rpc.depositIntoMarketFeePool(amount, {
210
211
  accounts: {
211
212
  admin: this.wallet.publicKey,
212
213
  state: await this.getStatePublicKey(),
213
214
  market: await (0, pda_1.getMarketPublicKey)(this.program.programId, marketIndex),
214
- insuranceVault: state.insuranceVault,
215
- insuranceVaultAuthority: state.insuranceVaultAuthority,
216
- bankVault: this.getQuoteAssetBankAccount().vault,
215
+ sourceVault,
216
+ clearingHouseSigner: this.getSignerPublicKey(),
217
+ quoteSpotMarket: spotMarket.pubkey,
218
+ spotMarketVault: spotMarket.vault,
217
219
  tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
218
220
  },
219
221
  });
@@ -237,8 +239,8 @@ class Admin extends clearingHouse_1.ClearingHouse {
237
239
  },
238
240
  });
239
241
  }
240
- async updateMarginRatio(marketIndex, marginRatioInitial, marginRatioPartial, marginRatioMaintenance) {
241
- return await this.program.rpc.updateMarginRatio(marginRatioInitial, marginRatioPartial, marginRatioMaintenance, {
242
+ async updateMarginRatio(marketIndex, marginRatioInitial, marginRatioMaintenance) {
243
+ return await this.program.rpc.updateMarginRatio(marginRatioInitial, marginRatioMaintenance, {
242
244
  accounts: {
243
245
  admin: this.wallet.publicKey,
244
246
  state: await this.getStatePublicKey(),
@@ -255,6 +257,15 @@ class Admin extends clearingHouse_1.ClearingHouse {
255
257
  },
256
258
  });
257
259
  }
260
+ async updateAmmJitIntensity(marketIndex, ammJitIntensity) {
261
+ return await this.program.rpc.updateAmmJitIntensity(ammJitIntensity, {
262
+ accounts: {
263
+ admin: this.wallet.publicKey,
264
+ state: await this.getStatePublicKey(),
265
+ market: await (0, pda_1.getMarketPublicKey)(this.program.programId, marketIndex),
266
+ },
267
+ });
268
+ }
258
269
  async updateMarketMaxSpread(marketIndex, maxSpread) {
259
270
  return await this.program.rpc.updateMarketMaxSpread(maxSpread, {
260
271
  accounts: {
@@ -304,16 +315,16 @@ class Admin extends clearingHouse_1.ClearingHouse {
304
315
  },
305
316
  });
306
317
  }
307
- async updateOrderFillerRewardStructure(orderFillerRewardStructure) {
308
- return await this.program.rpc.updateOrderFillerRewardStructure(orderFillerRewardStructure, {
318
+ async updatePerpFeeStructure(feeStructure) {
319
+ return await this.program.rpc.updatePerpFeeStructure(feeStructure, {
309
320
  accounts: {
310
321
  admin: this.wallet.publicKey,
311
322
  state: await this.getStatePublicKey(),
312
323
  },
313
324
  });
314
325
  }
315
- async updateFee(fees) {
316
- return await this.program.rpc.updateFee(fees, {
326
+ async updateSpotFeeStructure(feeStructure) {
327
+ return await this.program.rpc.updateSpotFeeStructure(feeStructure, {
317
328
  accounts: {
318
329
  admin: this.wallet.publicKey,
319
330
  state: await this.getStatePublicKey(),
@@ -328,6 +339,51 @@ class Admin extends clearingHouse_1.ClearingHouse {
328
339
  },
329
340
  });
330
341
  }
342
+ async updateWithdrawGuardThreshold(marketIndex, withdrawGuardThreshold) {
343
+ return await this.program.rpc.updateWithdrawGuardThreshold(withdrawGuardThreshold, {
344
+ accounts: {
345
+ admin: this.wallet.publicKey,
346
+ state: await this.getStatePublicKey(),
347
+ spotMarket: await (0, pda_1.getSpotMarketPublicKey)(this.program.programId, marketIndex),
348
+ },
349
+ });
350
+ }
351
+ async updateSpotMarketIfFactor(marketIndex, userIfFactor, totalIfFactor) {
352
+ return await this.program.rpc.updateSpotMarketIfFactor(marketIndex, userIfFactor, totalIfFactor, {
353
+ accounts: {
354
+ admin: this.wallet.publicKey,
355
+ state: await this.getStatePublicKey(),
356
+ spotMarket: await (0, pda_1.getSpotMarketPublicKey)(this.program.programId, marketIndex),
357
+ },
358
+ });
359
+ }
360
+ async updateSpotMarketRevenueSettlePeriod(marketIndex, revenueSettlePeriod) {
361
+ return await this.program.rpc.updateSpotMarketRevenueSettlePeriod(revenueSettlePeriod, {
362
+ accounts: {
363
+ admin: this.wallet.publicKey,
364
+ state: await this.getStatePublicKey(),
365
+ spotMarket: await (0, pda_1.getSpotMarketPublicKey)(this.program.programId, marketIndex),
366
+ },
367
+ });
368
+ }
369
+ async updateInsuranceWithdrawEscrowPeriod(marketIndex, insuranceWithdrawEscrowPeriod) {
370
+ return await this.program.rpc.updateInsuranceWithdrawEscrowPeriod(insuranceWithdrawEscrowPeriod, {
371
+ accounts: {
372
+ admin: this.wallet.publicKey,
373
+ state: await this.getStatePublicKey(),
374
+ spotMarket: await (0, pda_1.getSpotMarketPublicKey)(this.program.programId, marketIndex),
375
+ },
376
+ });
377
+ }
378
+ async updateLpCooldownTime(marketIndex, cooldownTime) {
379
+ return await this.program.rpc.updateLpCooldownTime(cooldownTime, {
380
+ accounts: {
381
+ admin: this.wallet.publicKey,
382
+ state: await this.getStatePublicKey(),
383
+ market: await (0, pda_1.getMarketPublicKey)(this.program.programId, marketIndex),
384
+ },
385
+ });
386
+ }
331
387
  async updateMarketOracle(marketIndex, oracle, oracleSource) {
332
388
  return await this.program.rpc.updateMarketOracle(oracle, oracleSource, {
333
389
  accounts: {
@@ -355,6 +411,15 @@ class Admin extends clearingHouse_1.ClearingHouse {
355
411
  },
356
412
  });
357
413
  }
414
+ async updateMarketExpiry(perpMarketIndex, expiryTs) {
415
+ return await this.program.rpc.updateMarketExpiry(expiryTs, {
416
+ accounts: {
417
+ admin: this.wallet.publicKey,
418
+ state: await this.getStatePublicKey(),
419
+ perpMarket: await (0, pda_1.getMarketPublicKey)(this.program.programId, perpMarketIndex),
420
+ },
421
+ });
422
+ }
358
423
  async updateWhitelistMint(whitelistMint) {
359
424
  return await this.program.rpc.updateWhitelistMint(whitelistMint, {
360
425
  accounts: {
@@ -403,11 +468,55 @@ class Admin extends clearingHouse_1.ClearingHouse {
403
468
  },
404
469
  });
405
470
  }
406
- async updateOrderAuctionTime(time) {
407
- return await this.program.rpc.updateOrderAuctionTime(typeof time === 'number' ? time : time.toNumber, {
471
+ async updatePerpAuctionDuration(minDuration) {
472
+ return await this.program.rpc.updatePerpAuctionDuration(typeof minDuration === 'number' ? minDuration : minDuration.toNumber(), {
473
+ accounts: {
474
+ admin: this.wallet.publicKey,
475
+ state: await this.getStatePublicKey(),
476
+ },
477
+ });
478
+ }
479
+ async updateSpotAuctionDuration(defaultAuctionDuration) {
480
+ return await this.program.rpc.updateSpotAuctionDuration(defaultAuctionDuration, {
481
+ accounts: {
482
+ admin: this.wallet.publicKey,
483
+ state: await this.getStatePublicKey(),
484
+ },
485
+ });
486
+ }
487
+ async updateMaxBaseAssetAmountRatio(marketIndex, maxBaseAssetAmountRatio) {
488
+ return await this.program.rpc.updateMaxBaseAssetAmountRatio(maxBaseAssetAmountRatio, {
489
+ accounts: {
490
+ admin: this.wallet.publicKey,
491
+ state: await this.getStatePublicKey(),
492
+ market: this.getPerpMarketAccount(marketIndex).pubkey,
493
+ },
494
+ });
495
+ }
496
+ async updateMaxSlippageRatio(marketIndex, maxSlippageRatio) {
497
+ return await this.program.rpc.updateMaxSlippageRatio(maxSlippageRatio, {
498
+ accounts: {
499
+ admin: this.wallet.publicKey,
500
+ state: await this.getStatePublicKey(),
501
+ market: this.getPerpMarketAccount(marketIndex).pubkey,
502
+ },
503
+ });
504
+ }
505
+ async updateMarketMaxImbalances(marketIndex, unrealizedMaxImbalance, maxRevenueWithdrawPerPeriod, quoteMaxInsurance) {
506
+ return await this.program.rpc.updateMarketMaxImbalances(unrealizedMaxImbalance, maxRevenueWithdrawPerPeriod, quoteMaxInsurance, {
507
+ accounts: {
508
+ admin: this.wallet.publicKey,
509
+ state: await this.getStatePublicKey(),
510
+ market: await (0, pda_1.getMarketPublicKey)(this.program.programId, marketIndex),
511
+ },
512
+ });
513
+ }
514
+ async updateSerumVault(srmVault) {
515
+ return await this.program.rpc.updateSerumVault({
408
516
  accounts: {
409
517
  admin: this.wallet.publicKey,
410
518
  state: await this.getStatePublicKey(),
519
+ srmVault: srmVault,
411
520
  },
412
521
  });
413
522
  }