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