@drift-labs/sdk 0.2.0-master.25 → 0.2.0-master.26

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 (184) hide show
  1. package/lib/accounts/pollingClearingHouseAccountSubscriber.d.ts +13 -13
  2. package/lib/accounts/pollingClearingHouseAccountSubscriber.js +27 -27
  3. package/lib/accounts/types.d.ts +8 -9
  4. package/lib/accounts/webSocketClearingHouseAccountSubscriber.d.ts +14 -14
  5. package/lib/accounts/webSocketClearingHouseAccountSubscriber.js +35 -34
  6. package/lib/addresses/pda.d.ts +7 -6
  7. package/lib/addresses/pda.js +31 -27
  8. package/lib/admin.d.ts +9 -6
  9. package/lib/admin.js +83 -42
  10. package/lib/clearingHouse.d.ts +69 -42
  11. package/lib/clearingHouse.js +753 -277
  12. package/lib/clearingHouseConfig.d.ts +2 -2
  13. package/lib/clearingHouseUser.d.ts +16 -16
  14. package/lib/clearingHouseUser.js +139 -119
  15. package/lib/config.d.ts +7 -7
  16. package/lib/config.js +20 -20
  17. package/lib/constants/numericConstants.d.ts +12 -12
  18. package/lib/constants/numericConstants.js +13 -13
  19. package/lib/constants/{markets.d.ts → perpMarkets.d.ts} +5 -5
  20. package/{src/constants/markets.js → lib/constants/perpMarkets.js} +4 -4
  21. package/lib/constants/{banks.d.ts → spotMarkets.d.ts} +6 -6
  22. package/lib/constants/{banks.js → spotMarkets.js} +16 -16
  23. package/lib/events/types.d.ts +2 -1
  24. package/lib/events/types.js +1 -0
  25. package/lib/examples/makeTradeExample.js +7 -7
  26. package/lib/idl/clearing_house.json +1008 -279
  27. package/lib/index.d.ts +5 -3
  28. package/lib/index.js +5 -3
  29. package/lib/math/amm.d.ts +2 -2
  30. package/lib/math/amm.js +1 -1
  31. package/lib/math/funding.d.ts +6 -6
  32. package/lib/math/funding.js +2 -1
  33. package/lib/math/margin.d.ts +4 -4
  34. package/lib/math/margin.js +18 -11
  35. package/lib/math/market.d.ts +10 -9
  36. package/lib/math/market.js +29 -6
  37. package/lib/math/oracles.d.ts +2 -1
  38. package/lib/math/oracles.js +11 -1
  39. package/lib/math/orders.d.ts +5 -5
  40. package/lib/math/position.d.ts +13 -13
  41. package/lib/math/position.js +19 -19
  42. package/lib/math/spotBalance.d.ts +19 -0
  43. package/lib/math/spotBalance.js +176 -0
  44. package/lib/math/spotMarket.d.ts +4 -0
  45. package/lib/math/spotMarket.js +8 -0
  46. package/lib/math/spotPosition.d.ts +2 -0
  47. package/lib/math/spotPosition.js +8 -0
  48. package/lib/math/state.js +2 -2
  49. package/lib/math/trade.d.ts +4 -4
  50. package/lib/orderParams.d.ts +4 -4
  51. package/lib/orderParams.js +12 -4
  52. package/lib/serum/serumSubscriber.d.ts +23 -0
  53. package/lib/serum/serumSubscriber.js +41 -0
  54. package/lib/serum/types.d.ts +11 -0
  55. package/lib/serum/types.js +2 -0
  56. package/lib/tx/retryTxSender.d.ts +1 -1
  57. package/lib/tx/retryTxSender.js +4 -2
  58. package/lib/tx/types.d.ts +1 -1
  59. package/lib/types.d.ts +123 -33
  60. package/lib/types.js +31 -9
  61. package/my-script/.env +7 -0
  62. package/my-script/getUserStats.ts +106 -0
  63. package/my-script/multiConnections.ts +119 -0
  64. package/my-script/test-regex.ts +11 -0
  65. package/my-script/utils.ts +52 -0
  66. package/package.json +1 -1
  67. package/src/accounts/bulkAccountLoader.js +249 -0
  68. package/src/accounts/bulkUserStatsSubscription.js +75 -0
  69. package/src/accounts/bulkUserSubscription.js +75 -0
  70. package/src/accounts/fetch.js +92 -0
  71. package/src/accounts/pollingClearingHouseAccountSubscriber.js +465 -0
  72. package/src/accounts/pollingClearingHouseAccountSubscriber.ts +38 -38
  73. package/src/accounts/pollingOracleSubscriber.js +156 -0
  74. package/src/accounts/pollingTokenAccountSubscriber.js +141 -0
  75. package/src/accounts/pollingUserAccountSubscriber.js +208 -0
  76. package/src/accounts/pollingUserStatsAccountSubscriber.js +208 -0
  77. package/src/accounts/types.js +28 -0
  78. package/src/accounts/types.ts +11 -9
  79. package/src/accounts/utils.js +7 -0
  80. package/src/accounts/webSocketAccountSubscriber.js +138 -0
  81. package/src/accounts/webSocketClearingHouseAccountSubscriber.js +433 -0
  82. package/src/accounts/webSocketClearingHouseAccountSubscriber.ts +59 -52
  83. package/src/accounts/webSocketUserAccountSubscriber.js +113 -0
  84. package/src/accounts/webSocketUserStatsAccountSubsriber.js +113 -0
  85. package/src/addresses/pda.js +186 -0
  86. package/src/addresses/pda.ts +49 -44
  87. package/src/admin.js +1284 -0
  88. package/src/admin.ts +140 -47
  89. package/src/assert/assert.js +1 -1
  90. package/src/clearingHouse.js +3433 -0
  91. package/src/clearingHouse.ts +1083 -378
  92. package/src/clearingHouseConfig.js +2 -0
  93. package/src/clearingHouseConfig.ts +2 -2
  94. package/src/clearingHouseUser.js +874 -0
  95. package/src/clearingHouseUser.ts +232 -168
  96. package/src/clearingHouseUserConfig.js +2 -0
  97. package/src/clearingHouseUserStats.js +115 -0
  98. package/src/clearingHouseUserStatsConfig.js +2 -0
  99. package/src/config.js +80 -0
  100. package/src/config.ts +29 -29
  101. package/src/constants/numericConstants.js +18 -11
  102. package/src/constants/numericConstants.ts +17 -15
  103. package/{lib/constants/markets.js → src/constants/perpMarkets.js} +11 -11
  104. package/src/constants/{markets.ts → perpMarkets.ts} +5 -5
  105. package/src/constants/spotMarkets.js +51 -0
  106. package/src/constants/{banks.ts → spotMarkets.ts} +19 -19
  107. package/src/events/eventList.js +66 -23
  108. package/src/events/eventSubscriber.js +202 -0
  109. package/src/events/fetchLogs.js +117 -0
  110. package/src/events/pollingLogProvider.js +113 -0
  111. package/src/events/sort.js +41 -0
  112. package/src/events/txEventCache.js +22 -19
  113. package/src/events/types.js +25 -0
  114. package/src/events/types.ts +3 -0
  115. package/src/events/webSocketLogProvider.js +76 -0
  116. package/src/examples/makeTradeExample.ts +10 -8
  117. package/src/factory/bigNum.js +183 -180
  118. package/src/factory/oracleClient.js +9 -9
  119. package/src/idl/clearing_house.json +1008 -279
  120. package/src/index.js +75 -0
  121. package/src/index.ts +5 -3
  122. package/src/math/amm.js +422 -0
  123. package/src/math/amm.ts +6 -3
  124. package/src/math/auction.js +10 -10
  125. package/src/math/conversion.js +4 -3
  126. package/src/math/funding.js +223 -175
  127. package/src/math/funding.ts +7 -7
  128. package/src/math/insurance.js +27 -0
  129. package/src/math/margin.js +77 -0
  130. package/src/math/margin.ts +34 -23
  131. package/src/math/market.js +105 -0
  132. package/src/math/market.ts +71 -19
  133. package/src/math/oracles.js +40 -10
  134. package/src/math/oracles.ts +18 -1
  135. package/src/math/orders.js +153 -0
  136. package/src/math/orders.ts +5 -5
  137. package/src/math/position.js +172 -0
  138. package/src/math/position.ts +31 -31
  139. package/src/math/repeg.js +40 -40
  140. package/src/math/spotBalance.js +176 -0
  141. package/src/math/spotBalance.ts +290 -0
  142. package/src/math/spotMarket.js +8 -0
  143. package/src/math/spotMarket.ts +9 -0
  144. package/src/math/spotPosition.js +8 -0
  145. package/src/math/spotPosition.ts +6 -0
  146. package/src/math/state.ts +2 -2
  147. package/src/math/trade.js +81 -74
  148. package/src/math/trade.ts +4 -4
  149. package/src/math/utils.js +8 -7
  150. package/src/oracles/oracleClientCache.js +10 -9
  151. package/src/oracles/pythClient.js +52 -17
  152. package/src/oracles/quoteAssetOracleClient.js +44 -13
  153. package/src/oracles/switchboardClient.js +69 -37
  154. package/src/oracles/types.js +1 -1
  155. package/src/orderParams.js +14 -6
  156. package/src/orderParams.ts +16 -8
  157. package/src/serum/serumSubscriber.js +102 -0
  158. package/src/serum/serumSubscriber.ts +80 -0
  159. package/src/serum/types.js +2 -0
  160. package/src/serum/types.ts +13 -0
  161. package/src/slot/SlotSubscriber.js +67 -20
  162. package/src/token/index.js +4 -4
  163. package/src/tokenFaucet.js +288 -154
  164. package/src/tx/retryTxSender.js +280 -0
  165. package/src/tx/retryTxSender.ts +5 -2
  166. package/src/tx/types.js +1 -1
  167. package/src/tx/types.ts +2 -1
  168. package/src/tx/utils.js +7 -6
  169. package/src/types.js +216 -0
  170. package/src/types.ts +110 -33
  171. package/src/userName.js +5 -5
  172. package/src/util/computeUnits.js +46 -11
  173. package/src/util/promiseTimeout.js +5 -5
  174. package/src/util/tps.js +46 -12
  175. package/src/wallet.js +55 -18
  176. package/lib/math/bankBalance.d.ts +0 -15
  177. package/lib/math/bankBalance.js +0 -150
  178. package/src/addresses/marketAddresses.js +0 -26
  179. package/src/constants/banks.js +0 -42
  180. package/src/examples/makeTradeExample.js +0 -80
  181. package/src/math/bankBalance.ts +0 -258
  182. package/src/math/state.js +0 -15
  183. package/src/math/utils.js.map +0 -1
  184. package/src/util/getTokenAddress.js +0 -9
@@ -14,8 +14,8 @@ export declare type ClearingHouseConfig = {
14
14
  txSenderConfig?: TxSenderConfig;
15
15
  userIds?: number[];
16
16
  activeUserId?: number;
17
- marketIndexes?: BN[];
18
- bankIndexes?: BN[];
17
+ perpMarketIndexes?: BN[];
18
+ spotMarketIndexes?: BN[];
19
19
  oracleInfos?: OracleInfo[];
20
20
  env?: DriftEnv;
21
21
  userStats?: boolean;
@@ -4,7 +4,7 @@ import { PublicKey } from '@solana/web3.js';
4
4
  import { EventEmitter } from 'events';
5
5
  import StrictEventEmitter from 'strict-event-emitter-types';
6
6
  import { ClearingHouse } from './clearingHouse';
7
- import { MarginCategory, Order, UserAccount, UserPosition } from './types';
7
+ import { MarginCategory, Order, UserAccount, PerpPosition } from './types';
8
8
  import { UserAccountSubscriber, UserAccountEvents, DataAndSlot } from './accounts/types';
9
9
  import { PositionDirection, BN } from '.';
10
10
  import { OraclePriceData } from './oracles/types';
@@ -35,9 +35,9 @@ export declare class ClearingHouseUser {
35
35
  * @param marketIndex
36
36
  * @returns userPosition
37
37
  */
38
- getUserPosition(marketIndex: BN): UserPosition | undefined;
39
- getEmptyPosition(marketIndex: BN): UserPosition;
40
- getClonedPosition(position: UserPosition): UserPosition;
38
+ getUserPosition(marketIndex: BN): PerpPosition | undefined;
39
+ getEmptyPosition(marketIndex: BN): PerpPosition;
40
+ getClonedPosition(position: PerpPosition): PerpPosition;
41
41
  /**
42
42
  * @param orderId
43
43
  * @returns Order
@@ -56,7 +56,7 @@ export declare class ClearingHouseUser {
56
56
  * @returns : the dust base asset amount (ie, < stepsize)
57
57
  * @returns : pnl from settle
58
58
  */
59
- getSettledLPPosition(marketIndex: BN): [UserPosition, BN, BN];
59
+ getSettledLPPosition(marketIndex: BN): [PerpPosition, BN, BN];
60
60
  /**
61
61
  * calculates Buying Power = FC * MAX_LEVERAGE
62
62
  * @returns : Precision QUOTE_PRECISION
@@ -70,7 +70,7 @@ export declare class ClearingHouseUser {
70
70
  /**
71
71
  * @returns The margin requirement of a certain type (Initial or Maintenance) in USDC. : QUOTE_PRECISION
72
72
  */
73
- getMarginRequirement(type: MarginCategory): BN;
73
+ getMarginRequirement(type: MarginCategory, liquidationBuffer?: BN): BN;
74
74
  /**
75
75
  * @returns The initial margin requirement in USDC. : QUOTE_PRECISION
76
76
  */
@@ -78,7 +78,7 @@ export declare class ClearingHouseUser {
78
78
  /**
79
79
  * @returns The maintenance margin requirement in USDC. : QUOTE_PRECISION
80
80
  */
81
- getMaintenanceMarginRequirement(): BN;
81
+ getMaintenanceMarginRequirement(liquidationBuffer?: BN): BN;
82
82
  /**
83
83
  * calculates unrealized position price pnl
84
84
  * @returns : Precision QUOTE_PRECISION
@@ -89,9 +89,9 @@ export declare class ClearingHouseUser {
89
89
  * @returns : Precision QUOTE_PRECISION
90
90
  */
91
91
  getUnrealizedFundingPNL(marketIndex?: BN): BN;
92
- getBankLiabilityValue(bankIndex?: BN, withWeightMarginCategory?: MarginCategory): BN;
93
- getBankAssetValue(bankIndex?: BN, withWeightMarginCategory?: MarginCategory): BN;
94
- getNetBankValue(withWeightMarginCategory?: MarginCategory): BN;
92
+ getSpotMarketLiabilityValue(marketIndex?: BN, withWeightMarginCategory?: MarginCategory, liquidationBuffer?: BN): BN;
93
+ getSpotMarketAssetValue(marketIndex?: BN, withWeightMarginCategory?: MarginCategory): BN;
94
+ getNetSpotMarketValue(withWeightMarginCategory?: MarginCategory): BN;
95
95
  /**
96
96
  * calculates TotalCollateral: collateral + unrealized pnl
97
97
  * @returns : Precision QUOTE_PRECISION
@@ -107,12 +107,12 @@ export declare class ClearingHouseUser {
107
107
  * @returns : Precision QUOTE_PRECISION
108
108
  */
109
109
  getPositionValue(marketIndex: BN, oraclePriceData: OraclePriceData): BN;
110
- getPositionSide(currentPosition: Pick<UserPosition, 'baseAssetAmount'>): PositionDirection | undefined;
110
+ getPositionSide(currentPosition: Pick<PerpPosition, 'baseAssetAmount'>): PositionDirection | undefined;
111
111
  /**
112
112
  * calculates average exit price (optionally for closing up to 100% of position)
113
113
  * @returns : Precision MARK_PRICE_PRECISION
114
114
  */
115
- getPositionEstimatedExitPriceAndPnl(position: UserPosition, amountToClose?: BN, useAMMClose?: boolean): [BN, BN];
115
+ getPositionEstimatedExitPriceAndPnl(position: PerpPosition, amountToClose?: BN, useAMMClose?: boolean): [BN, BN];
116
116
  /**
117
117
  * calculates current user leverage across all positions
118
118
  * @returns : Precision TEN_THOUSAND
@@ -129,7 +129,7 @@ export declare class ClearingHouseUser {
129
129
  * @returns : Precision TEN_THOUSAND
130
130
  */
131
131
  getMarginRatio(): BN;
132
- canBeLiquidated(): [boolean, BN];
132
+ canBeLiquidated(): boolean;
133
133
  /**
134
134
  * Checks if any user position cumulative funding differs from respective market cumulative funding
135
135
  * @returns
@@ -137,12 +137,12 @@ export declare class ClearingHouseUser {
137
137
  needsToSettleFundingPayment(): boolean;
138
138
  /**
139
139
  * Calculate the liquidation price of a position, with optional parameter to calculate the liquidation price after a trade
140
- * @param marketPosition
140
+ * @param PerpPosition
141
141
  * @param positionBaseSizeChange // change in position size to calculate liquidation price for : Precision 10^13
142
142
  * @param partial
143
143
  * @returns Precision : MARK_PRICE_PRECISION
144
144
  */
145
- liquidationPrice(marketPosition: Pick<UserPosition, 'marketIndex'>, positionBaseSizeChange?: BN): BN;
145
+ liquidationPrice(perpPosition: Pick<PerpPosition, 'marketIndex'>, positionBaseSizeChange?: BN): BN;
146
146
  /**
147
147
  * Calculates the estimated liquidation price for a position after closing a quote amount of the position.
148
148
  * @param positionMarketIndex
@@ -193,5 +193,5 @@ export declare class ClearingHouseUser {
193
193
  */
194
194
  private getTotalPositionValueExcludingMarket;
195
195
  private getOracleDataForMarket;
196
- private getOracleDataForBank;
196
+ private getOracleDataForSpotMarket;
197
197
  }