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

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 (274) hide show
  1. package/README.md +27 -29
  2. package/lib/accounts/bulkAccountLoader.d.ts +2 -0
  3. package/lib/accounts/bulkAccountLoader.js +36 -29
  4. package/lib/accounts/bulkUserStatsSubscription.d.ts +7 -0
  5. package/lib/accounts/bulkUserStatsSubscription.js +21 -0
  6. package/lib/accounts/bulkUserSubscription.d.ts +2 -2
  7. package/lib/accounts/bulkUserSubscription.js +0 -1
  8. package/lib/accounts/fetch.d.ts +2 -1
  9. package/lib/accounts/fetch.js +9 -1
  10. package/lib/accounts/{pollingClearingHouseAccountSubscriber.d.ts → pollingDriftClientAccountSubscriber.d.ts} +20 -25
  11. package/lib/accounts/{pollingClearingHouseAccountSubscriber.js → pollingDriftClientAccountSubscriber.js} +45 -49
  12. package/lib/accounts/{pollingOracleSubscriber.d.ts → pollingOracleAccountSubscriber.d.ts} +2 -2
  13. package/lib/accounts/{pollingOracleSubscriber.js → pollingOracleAccountSubscriber.js} +3 -3
  14. package/lib/accounts/pollingUserAccountSubscriber.d.ts +1 -1
  15. package/lib/accounts/pollingUserAccountSubscriber.js +5 -11
  16. package/lib/accounts/pollingUserStatsAccountSubscriber.d.ts +27 -0
  17. package/lib/accounts/pollingUserStatsAccountSubscriber.js +107 -0
  18. package/lib/accounts/types.d.ts +26 -15
  19. package/lib/accounts/webSocketDriftClientAccountSubscriber.d.ts +49 -0
  20. package/lib/accounts/{webSocketClearingHouseAccountSubscriber.js → webSocketDriftClientAccountSubscriber.js} +47 -45
  21. package/lib/accounts/webSocketUserStatsAccountSubsriber.d.ts +20 -0
  22. package/lib/accounts/webSocketUserStatsAccountSubsriber.js +47 -0
  23. package/lib/addresses/marketAddresses.d.ts +1 -3
  24. package/lib/addresses/marketAddresses.js +1 -1
  25. package/lib/addresses/pda.d.ts +15 -9
  26. package/lib/addresses/pda.js +73 -35
  27. package/lib/adminClient.d.ts +65 -0
  28. package/lib/adminClient.js +637 -0
  29. package/lib/config.d.ts +10 -10
  30. package/lib/config.js +26 -22
  31. package/lib/constants/numericConstants.d.ts +29 -12
  32. package/lib/constants/numericConstants.js +40 -21
  33. package/lib/constants/perpMarkets.d.ts +18 -0
  34. package/lib/constants/{markets.js → perpMarkets.js} +20 -9
  35. package/lib/constants/spotMarkets.d.ts +19 -0
  36. package/lib/constants/spotMarkets.js +63 -0
  37. package/lib/dlob/DLOB.d.ts +82 -0
  38. package/lib/dlob/DLOB.js +694 -0
  39. package/lib/dlob/DLOBNode.d.ts +54 -0
  40. package/lib/dlob/DLOBNode.js +77 -0
  41. package/lib/dlob/NodeList.d.ts +27 -0
  42. package/lib/dlob/NodeList.js +144 -0
  43. package/lib/driftClient.d.ts +234 -0
  44. package/lib/driftClient.js +2108 -0
  45. package/lib/{clearingHouseConfig.d.ts → driftClientConfig.d.ts} +9 -9
  46. package/lib/{clearingHouseConfig.js → driftClientConfig.js} +0 -0
  47. package/lib/events/eventList.js +3 -0
  48. package/lib/events/eventSubscriber.d.ts +5 -2
  49. package/lib/events/eventSubscriber.js +25 -11
  50. package/lib/events/fetchLogs.d.ts +13 -2
  51. package/lib/events/fetchLogs.js +45 -14
  52. package/lib/events/pollingLogProvider.d.ts +2 -1
  53. package/lib/events/pollingLogProvider.js +7 -3
  54. package/lib/events/sort.js +8 -11
  55. package/lib/events/types.d.ts +11 -3
  56. package/lib/events/types.js +8 -0
  57. package/lib/events/webSocketLogProvider.js +1 -1
  58. package/lib/examples/makeTradeExample.js +30 -18
  59. package/lib/factory/bigNum.d.ts +8 -4
  60. package/lib/factory/bigNum.js +109 -19
  61. package/lib/idl/drift.json +8392 -0
  62. package/lib/index.d.ts +29 -12
  63. package/lib/index.js +29 -12
  64. package/lib/math/amm.d.ts +9 -6
  65. package/lib/math/amm.js +91 -38
  66. package/lib/math/conversion.js +1 -1
  67. package/lib/math/exchangeStatus.d.ts +4 -0
  68. package/lib/math/exchangeStatus.js +18 -0
  69. package/lib/math/funding.d.ts +6 -6
  70. package/lib/math/funding.js +23 -21
  71. package/lib/math/insurance.d.ts +4 -0
  72. package/lib/math/insurance.js +27 -0
  73. package/lib/math/margin.d.ts +11 -0
  74. package/lib/math/margin.js +82 -0
  75. package/lib/math/market.d.ts +14 -9
  76. package/lib/math/market.js +70 -10
  77. package/lib/math/oracles.d.ts +4 -0
  78. package/lib/math/oracles.js +36 -8
  79. package/lib/math/orders.d.ts +16 -6
  80. package/lib/math/orders.js +97 -17
  81. package/lib/math/position.d.ts +27 -13
  82. package/lib/math/position.js +91 -37
  83. package/lib/math/repeg.js +17 -8
  84. package/lib/math/spotBalance.d.ts +22 -0
  85. package/lib/math/spotBalance.js +192 -0
  86. package/lib/math/spotMarket.d.ts +4 -0
  87. package/lib/math/spotMarket.js +8 -0
  88. package/lib/math/spotPosition.d.ts +6 -0
  89. package/lib/math/spotPosition.js +23 -0
  90. package/lib/math/trade.d.ts +10 -10
  91. package/lib/math/trade.js +27 -31
  92. package/lib/oracles/pythClient.js +1 -1
  93. package/lib/oracles/quoteAssetOracleClient.js +1 -1
  94. package/lib/oracles/switchboardClient.js +1 -1
  95. package/lib/orderParams.d.ts +4 -4
  96. package/lib/orderParams.js +12 -4
  97. package/lib/serum/serumFulfillmentConfigMap.d.ts +10 -0
  98. package/lib/serum/serumFulfillmentConfigMap.js +17 -0
  99. package/lib/serum/serumSubscriber.d.ts +27 -0
  100. package/lib/serum/serumSubscriber.js +56 -0
  101. package/lib/serum/types.d.ts +11 -0
  102. package/{src/oracles → lib/serum}/types.js +0 -0
  103. package/lib/tokenFaucet.d.ts +1 -0
  104. package/lib/tokenFaucet.js +23 -12
  105. package/lib/tx/retryTxSender.d.ts +1 -1
  106. package/lib/tx/retryTxSender.js +13 -4
  107. package/lib/tx/types.d.ts +1 -1
  108. package/lib/types.d.ts +631 -222
  109. package/lib/types.js +137 -24
  110. package/lib/user.d.ts +228 -0
  111. package/lib/user.js +959 -0
  112. package/lib/userConfig.d.ts +14 -0
  113. package/lib/{clearingHouseUserConfig.js → userConfig.js} +0 -0
  114. package/lib/userMap/userMap.d.ts +41 -0
  115. package/lib/userMap/userMap.js +85 -0
  116. package/lib/userMap/userStatsMap.d.ts +19 -0
  117. package/lib/userMap/userStatsMap.js +68 -0
  118. package/lib/userName.d.ts +1 -0
  119. package/lib/userName.js +3 -2
  120. package/lib/userStats.d.ts +18 -0
  121. package/lib/userStats.js +49 -0
  122. package/lib/userStatsConfig.d.ts +14 -0
  123. package/{src/clearingHouseConfig.js → lib/userStatsConfig.js} +0 -0
  124. package/lib/util/getTokenAddress.d.ts +2 -0
  125. package/lib/util/getTokenAddress.js +9 -0
  126. package/package.json +12 -5
  127. package/src/accounts/bulkAccountLoader.ts +44 -34
  128. package/src/accounts/bulkUserStatsSubscription.ts +33 -0
  129. package/src/accounts/bulkUserSubscription.ts +2 -3
  130. package/src/accounts/fetch.ts +27 -2
  131. package/src/accounts/{pollingClearingHouseAccountSubscriber.ts → pollingDriftClientAccountSubscriber.ts} +65 -75
  132. package/src/accounts/{pollingOracleSubscriber.ts → pollingOracleAccountSubscriber.ts} +2 -2
  133. package/src/accounts/pollingUserAccountSubscriber.ts +5 -12
  134. package/src/accounts/pollingUserStatsAccountSubscriber.ts +166 -0
  135. package/src/accounts/types.ts +35 -15
  136. package/src/accounts/{webSocketClearingHouseAccountSubscriber.ts → webSocketDriftClientAccountSubscriber.ts} +78 -73
  137. package/src/accounts/webSocketUserStatsAccountSubsriber.ts +80 -0
  138. package/src/addresses/marketAddresses.ts +3 -4
  139. package/src/addresses/pda.ts +105 -33
  140. package/src/adminClient.ts +1207 -0
  141. package/src/config.ts +41 -34
  142. package/src/constants/numericConstants.ts +59 -26
  143. package/src/constants/{markets.ts → perpMarkets.ts} +22 -11
  144. package/src/constants/spotMarkets.ts +83 -0
  145. package/src/dlob/DLOB.ts +1120 -0
  146. package/src/dlob/DLOBNode.ts +155 -0
  147. package/src/dlob/NodeList.ts +195 -0
  148. package/src/driftClient.ts +3594 -0
  149. package/src/{clearingHouseConfig.ts → driftClientConfig.ts} +9 -8
  150. package/src/events/eventList.ts +3 -0
  151. package/src/events/eventSubscriber.ts +36 -14
  152. package/src/events/fetchLogs.ts +60 -15
  153. package/src/events/pollingLogProvider.ts +11 -3
  154. package/src/events/sort.ts +11 -15
  155. package/src/events/types.ts +27 -2
  156. package/src/events/webSocketLogProvider.ts +1 -1
  157. package/src/examples/makeTradeExample.js +152 -75
  158. package/src/examples/makeTradeExample.ts +44 -28
  159. package/src/factory/bigNum.ts +150 -22
  160. package/src/idl/drift.json +8392 -0
  161. package/src/idl/pyth.json +98 -2
  162. package/src/index.ts +29 -12
  163. package/src/math/amm.ts +161 -48
  164. package/src/math/conversion.ts +2 -2
  165. package/src/math/exchangeStatus.ts +31 -0
  166. package/src/math/funding.ts +41 -31
  167. package/src/math/insurance.ts +35 -0
  168. package/src/math/margin.ts +133 -0
  169. package/src/math/market.ts +143 -14
  170. package/src/math/oracles.ts +63 -9
  171. package/src/math/orders.ts +168 -26
  172. package/src/math/position.ts +133 -59
  173. package/src/math/repeg.ts +19 -9
  174. package/src/math/spotBalance.ts +319 -0
  175. package/src/math/spotMarket.ts +9 -0
  176. package/src/math/spotPosition.ts +47 -0
  177. package/src/math/trade.ts +33 -37
  178. package/src/oracles/pythClient.ts +2 -2
  179. package/src/oracles/quoteAssetOracleClient.ts +2 -2
  180. package/src/oracles/switchboardClient.ts +2 -2
  181. package/src/orderParams.ts +16 -8
  182. package/src/serum/serumFulfillmentConfigMap.ts +26 -0
  183. package/src/serum/serumSubscriber.ts +99 -0
  184. package/src/serum/types.ts +13 -0
  185. package/src/tokenFaucet.ts +38 -15
  186. package/src/tx/retryTxSender.ts +16 -5
  187. package/src/tx/types.ts +2 -1
  188. package/src/types.ts +594 -195
  189. package/src/user.ts +1599 -0
  190. package/src/{clearingHouseUserConfig.ts → userConfig.ts} +5 -5
  191. package/src/userMap/userMap.ts +124 -0
  192. package/src/userMap/userStatsMap.ts +108 -0
  193. package/src/userName.ts +2 -1
  194. package/src/userStats.ts +75 -0
  195. package/src/userStatsConfig.ts +18 -0
  196. package/src/util/getTokenAddress.ts +18 -0
  197. package/tests/bn/test.ts +46 -11
  198. package/tests/dlob/helpers.ts +619 -0
  199. package/tests/dlob/test.ts +4586 -0
  200. package/lib/accounts/webSocketClearingHouseAccountSubscriber.d.ts +0 -49
  201. package/lib/admin.d.ts +0 -44
  202. package/lib/admin.js +0 -438
  203. package/lib/clearingHouse.d.ts +0 -146
  204. package/lib/clearingHouse.js +0 -1154
  205. package/lib/clearingHouseUser.d.ts +0 -187
  206. package/lib/clearingHouseUser.js +0 -634
  207. package/lib/clearingHouseUserConfig.d.ts +0 -14
  208. package/lib/constants/banks.d.ts +0 -16
  209. package/lib/constants/banks.js +0 -41
  210. package/lib/constants/markets.d.ts +0 -19
  211. package/lib/idl/clearing_house.json +0 -4464
  212. package/lib/math/bankBalance.d.ts +0 -9
  213. package/lib/math/bankBalance.js +0 -75
  214. package/lib/math/state.d.ts +0 -8
  215. package/lib/math/state.js +0 -15
  216. package/lib/orders.d.ts +0 -8
  217. package/lib/orders.js +0 -134
  218. package/src/accounts/bulkAccountLoader.js +0 -197
  219. package/src/accounts/bulkUserSubscription.js +0 -33
  220. package/src/accounts/pollingClearingHouseAccountSubscriber.js +0 -311
  221. package/src/accounts/pollingOracleSubscriber.js +0 -93
  222. package/src/accounts/pollingTokenAccountSubscriber.js +0 -90
  223. package/src/accounts/pollingUserAccountSubscriber.js +0 -132
  224. package/src/accounts/types.js +0 -10
  225. package/src/accounts/utils.js +0 -7
  226. package/src/accounts/webSocketAccountSubscriber.js +0 -93
  227. package/src/accounts/webSocketClearingHouseAccountSubscriber.js +0 -233
  228. package/src/accounts/webSocketUserAccountSubscriber.js +0 -62
  229. package/src/addresses/marketAddresses.js +0 -26
  230. package/src/admin.js +0 -517
  231. package/src/admin.ts +0 -730
  232. package/src/clearingHouse.ts +0 -1828
  233. package/src/clearingHouseUser.ts +0 -978
  234. package/src/clearingHouseUserConfig.js +0 -2
  235. package/src/config.js +0 -67
  236. package/src/constants/banks.js +0 -42
  237. package/src/constants/banks.ts +0 -50
  238. package/src/constants/markets.js +0 -42
  239. package/src/constants/numericConstants.js +0 -41
  240. package/src/events/eventSubscriber.js +0 -139
  241. package/src/events/fetchLogs.js +0 -50
  242. package/src/events/pollingLogProvider.js +0 -64
  243. package/src/events/sort.js +0 -44
  244. package/src/events/txEventCache.js +0 -71
  245. package/src/events/types.js +0 -20
  246. package/src/events/webSocketLogProvider.js +0 -41
  247. package/src/factory/bigNum.js +0 -390
  248. package/src/factory/oracleClient.js +0 -20
  249. package/src/idl/clearing_house.json +0 -4464
  250. package/src/index.js +0 -69
  251. package/src/math/amm.js +0 -369
  252. package/src/math/auction.js +0 -42
  253. package/src/math/bankBalance.ts +0 -112
  254. package/src/math/conversion.js +0 -11
  255. package/src/math/funding.js +0 -248
  256. package/src/math/oracles.js +0 -26
  257. package/src/math/repeg.js +0 -128
  258. package/src/math/state.js +0 -15
  259. package/src/math/state.ts +0 -14
  260. package/src/math/trade.js +0 -253
  261. package/src/math/utils.js +0 -26
  262. package/src/math/utils.js.map +0 -1
  263. package/src/mockUSDCFaucet.js +0 -280
  264. package/src/oracles/oracleClientCache.js +0 -19
  265. package/src/oracles/pythClient.js +0 -46
  266. package/src/oracles/quoteAssetOracleClient.js +0 -32
  267. package/src/oracles/switchboardClient.js +0 -69
  268. package/src/orderParams.js +0 -20
  269. package/src/orders.ts +0 -245
  270. package/src/slot/SlotSubscriber.js +0 -39
  271. package/src/tokenFaucet.js +0 -189
  272. package/src/types.js +0 -125
  273. package/src/userName.js +0 -20
  274. package/src/wallet.js +0 -35
package/lib/config.js CHANGED
@@ -1,24 +1,28 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getMarketsBanksAndOraclesForSubscription = exports.initialize = exports.getConfig = exports.configs = void 0;
4
- const markets_1 = require("./constants/markets");
5
- const banks_1 = require("./constants/banks");
3
+ exports.getMarketsAndOraclesForSubscription = exports.initialize = exports.getConfig = exports.configs = void 0;
4
+ const perpMarkets_1 = require("./constants/perpMarkets");
5
+ const spotMarkets_1 = require("./constants/spotMarkets");
6
6
  exports.configs = {
7
7
  devnet: {
8
8
  ENV: 'devnet',
9
9
  PYTH_ORACLE_MAPPING_ADDRESS: 'BmA9Z6FjioHJPpjT39QazZyhDRUdZy2ezwx4GiDdE2u2',
10
- CLEARING_HOUSE_PROGRAM_ID: '4oyTJnAQ9FqJj1y9mPytbWsLeeHmBzGYfuFqypwyQvuh',
10
+ DRIFT_PROGRAM_ID: 'dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH',
11
11
  USDC_MINT_ADDRESS: '8zGuJQqwhZafTah7Uc7Z4tXRnguqkn5KLFAP8oV6PHe2',
12
- MARKETS: markets_1.DevnetMarkets,
13
- BANKS: banks_1.DevnetBanks,
12
+ SERUM_V3: 'DESVgJVGajEgKGXhb6XmqDHGz3VjdgP7rEVESBgxmroY',
13
+ V2_ALPHA_TICKET_MINT_ADDRESS: 'DeEiGWfCMP9psnLGkxGrBBMEAW5Jv8bBGMN8DCtFRCyB',
14
+ PERP_MARKETS: perpMarkets_1.DevnetPerpMarkets,
15
+ SPOT_MARKETS: spotMarkets_1.DevnetSpotMarkets,
14
16
  },
15
17
  'mainnet-beta': {
16
18
  ENV: 'mainnet-beta',
17
19
  PYTH_ORACLE_MAPPING_ADDRESS: 'AHtgzX45WTKfkPG53L6WYhGEXwQkN1BVknET3sVsLL8J',
18
- CLEARING_HOUSE_PROGRAM_ID: 'dammHkt7jmytvbS3nHTxQNEcP59aE57nxwV21YdqEDN',
20
+ DRIFT_PROGRAM_ID: 'dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH',
19
21
  USDC_MINT_ADDRESS: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
20
- MARKETS: markets_1.MainnetMarkets,
21
- BANKS: banks_1.MainnetBanks,
22
+ SERUM_V3: '9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin',
23
+ V2_ALPHA_TICKET_MINT_ADDRESS: 'Cmvhycb6LQvvzaShGw4iDHRLzeSSryioAsU98DSSkMNa',
24
+ PERP_MARKETS: perpMarkets_1.MainnetPerpMarkets,
25
+ SPOT_MARKETS: spotMarkets_1.MainnetSpotMarkets,
22
26
  },
23
27
  };
24
28
  let currentConfig = exports.configs.devnet;
@@ -40,28 +44,28 @@ const initialize = (props) => {
40
44
  return currentConfig;
41
45
  };
42
46
  exports.initialize = initialize;
43
- function getMarketsBanksAndOraclesForSubscription(env) {
44
- const marketIndexes = [];
45
- const bankIndexes = [];
47
+ function getMarketsAndOraclesForSubscription(env) {
48
+ const perpMarketIndexes = [];
49
+ const spotMarketIndexes = [];
46
50
  const oracleInfos = new Map();
47
- for (const market of markets_1.Markets[env]) {
48
- marketIndexes.push(market.marketIndex);
51
+ for (const market of perpMarkets_1.PerpMarkets[env]) {
52
+ perpMarketIndexes.push(market.marketIndex);
49
53
  oracleInfos.set(market.oracle.toString(), {
50
54
  publicKey: market.oracle,
51
55
  source: market.oracleSource,
52
56
  });
53
57
  }
54
- for (const bank of banks_1.Banks[env]) {
55
- bankIndexes.push(bank.bankIndex);
56
- oracleInfos.set(bank.oracle.toString(), {
57
- publicKey: bank.oracle,
58
- source: bank.oracleSource,
58
+ for (const spotMarket of spotMarkets_1.SpotMarkets[env]) {
59
+ spotMarketIndexes.push(spotMarket.marketIndex);
60
+ oracleInfos.set(spotMarket.oracle.toString(), {
61
+ publicKey: spotMarket.oracle,
62
+ source: spotMarket.oracleSource,
59
63
  });
60
64
  }
61
65
  return {
62
- marketIndexes,
63
- bankIndexes,
66
+ perpMarketIndexes: perpMarketIndexes,
67
+ spotMarketIndexes: spotMarketIndexes,
64
68
  oracleInfos: Array.from(oracleInfos.values()),
65
69
  };
66
70
  }
67
- exports.getMarketsBanksAndOraclesForSubscription = getMarketsBanksAndOraclesForSubscription;
71
+ exports.getMarketsAndOraclesForSubscription = getMarketsAndOraclesForSubscription;
@@ -3,28 +3,43 @@ import { BN } from '../';
3
3
  export declare const ZERO: BN;
4
4
  export declare const ONE: BN;
5
5
  export declare const TWO: BN;
6
+ export declare const THREE: BN;
7
+ export declare const FOUR: BN;
8
+ export declare const FIVE: BN;
9
+ export declare const SIX: BN;
10
+ export declare const SEVEN: BN;
11
+ export declare const EIGHT: BN;
12
+ export declare const NINE: BN;
6
13
  export declare const TEN: BN;
7
14
  export declare const TEN_THOUSAND: BN;
8
15
  export declare const BN_MAX: BN;
9
16
  export declare const TEN_MILLION: BN;
10
17
  export declare const MAX_LEVERAGE: BN;
18
+ export declare const PERCENTAGE_PRECISION_EXP: BN;
19
+ export declare const PERCENTAGE_PRECISION: BN;
20
+ export declare const CONCENTRATION_PRECISION: BN;
11
21
  export declare const QUOTE_PRECISION_EXP: BN;
12
- export declare const FUNDING_PAYMENT_PRECISION_EXP: BN;
13
- export declare const MARK_PRICE_PRECISION_EXP: BN;
22
+ export declare const FUNDING_RATE_BUFFER_PRECISION_EXP: BN;
23
+ export declare const PRICE_PRECISION_EXP: BN;
14
24
  export declare const FUNDING_RATE_PRECISION_EXP: BN;
15
25
  export declare const PEG_PRECISION_EXP: BN;
16
26
  export declare const AMM_RESERVE_PRECISION_EXP: BN;
17
- export declare const BANK_INTEREST_PRECISION: BN;
18
- export declare const BANK_CUMULATIVE_INTEREST_PRECISION: BN;
19
- export declare const BANK_UTILIZATION_PRECISION: BN;
20
- export declare const BANK_RATE_PRECISION: BN;
21
- export declare const BANK_WEIGHT_PRECISION: BN;
22
- export declare const BANK_BALANCE_PRECISION_EXP: BN;
23
- export declare const BANK_BALANCE_PRECISION: BN;
27
+ export declare const SPOT_MARKET_RATE_PRECISION_EXP: BN;
28
+ export declare const SPOT_MARKET_RATE_PRECISION: BN;
29
+ export declare const SPOT_MARKET_CUMULATIVE_INTEREST_PRECISION_EXP: BN;
30
+ export declare const SPOT_MARKET_CUMULATIVE_INTEREST_PRECISION: BN;
31
+ export declare const SPOT_MARKET_UTILIZATION_PRECISION_EXP: BN;
32
+ export declare const SPOT_MARKET_UTILIZATION_PRECISION: BN;
33
+ export declare const SPOT_MARKET_WEIGHT_PRECISION: BN;
34
+ export declare const SPOT_MARKET_BALANCE_PRECISION_EXP: BN;
35
+ export declare const SPOT_MARKET_BALANCE_PRECISION: BN;
36
+ export declare const SPOT_MARKET_IMF_PRECISION_EXP: BN;
37
+ export declare const SPOT_MARKET_IMF_PRECISION: BN;
24
38
  export declare const LIQUIDATION_FEE_PRECISION: BN;
25
39
  export declare const QUOTE_PRECISION: BN;
26
- export declare const MARK_PRICE_PRECISION: BN;
27
- export declare const FUNDING_PAYMENT_PRECISION: BN;
40
+ export declare const PRICE_PRECISION: BN;
41
+ export declare const FUNDING_RATE_PRECISION: BN;
42
+ export declare const FUNDING_RATE_BUFFER_PRECISION: BN;
28
43
  export declare const PEG_PRECISION: BN;
29
44
  export declare const AMM_RESERVE_PRECISION: BN;
30
45
  export declare const BASE_PRECISION: BN;
@@ -36,4 +51,6 @@ export declare const AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO: BN;
36
51
  export declare const MARGIN_PRECISION: BN;
37
52
  export declare const BID_ASK_SPREAD_PRECISION: BN;
38
53
  export declare const ONE_YEAR: BN;
39
- export declare const QUOTE_ASSET_BANK_INDEX: BN;
54
+ export declare const QUOTE_SPOT_MARKET_INDEX = 0;
55
+ export declare const LAMPORTS_PRECISION: BN;
56
+ export declare const LAMPORTS_EXP: BN;
@@ -1,41 +1,60 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.QUOTE_ASSET_BANK_INDEX = exports.ONE_YEAR = exports.BID_ASK_SPREAD_PRECISION = exports.MARGIN_PRECISION = exports.AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO = exports.PRICE_TO_QUOTE_PRECISION = exports.PRICE_DIV_PEG = exports.AMM_TO_QUOTE_PRECISION_RATIO = exports.BASE_PRECISION_EXP = exports.BASE_PRECISION = exports.AMM_RESERVE_PRECISION = exports.PEG_PRECISION = exports.FUNDING_PAYMENT_PRECISION = exports.MARK_PRICE_PRECISION = exports.QUOTE_PRECISION = exports.LIQUIDATION_FEE_PRECISION = exports.BANK_BALANCE_PRECISION = exports.BANK_BALANCE_PRECISION_EXP = exports.BANK_WEIGHT_PRECISION = exports.BANK_RATE_PRECISION = exports.BANK_UTILIZATION_PRECISION = exports.BANK_CUMULATIVE_INTEREST_PRECISION = exports.BANK_INTEREST_PRECISION = exports.AMM_RESERVE_PRECISION_EXP = exports.PEG_PRECISION_EXP = exports.FUNDING_RATE_PRECISION_EXP = exports.MARK_PRICE_PRECISION_EXP = exports.FUNDING_PAYMENT_PRECISION_EXP = exports.QUOTE_PRECISION_EXP = exports.MAX_LEVERAGE = exports.TEN_MILLION = exports.BN_MAX = exports.TEN_THOUSAND = exports.TEN = exports.TWO = exports.ONE = exports.ZERO = void 0;
3
+ exports.BID_ASK_SPREAD_PRECISION = exports.MARGIN_PRECISION = exports.AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO = exports.PRICE_TO_QUOTE_PRECISION = exports.PRICE_DIV_PEG = exports.AMM_TO_QUOTE_PRECISION_RATIO = exports.BASE_PRECISION_EXP = exports.BASE_PRECISION = exports.AMM_RESERVE_PRECISION = exports.PEG_PRECISION = exports.FUNDING_RATE_BUFFER_PRECISION = exports.FUNDING_RATE_PRECISION = exports.PRICE_PRECISION = exports.QUOTE_PRECISION = exports.LIQUIDATION_FEE_PRECISION = exports.SPOT_MARKET_IMF_PRECISION = exports.SPOT_MARKET_IMF_PRECISION_EXP = exports.SPOT_MARKET_BALANCE_PRECISION = exports.SPOT_MARKET_BALANCE_PRECISION_EXP = exports.SPOT_MARKET_WEIGHT_PRECISION = exports.SPOT_MARKET_UTILIZATION_PRECISION = exports.SPOT_MARKET_UTILIZATION_PRECISION_EXP = exports.SPOT_MARKET_CUMULATIVE_INTEREST_PRECISION = exports.SPOT_MARKET_CUMULATIVE_INTEREST_PRECISION_EXP = exports.SPOT_MARKET_RATE_PRECISION = exports.SPOT_MARKET_RATE_PRECISION_EXP = exports.AMM_RESERVE_PRECISION_EXP = exports.PEG_PRECISION_EXP = exports.FUNDING_RATE_PRECISION_EXP = exports.PRICE_PRECISION_EXP = exports.FUNDING_RATE_BUFFER_PRECISION_EXP = exports.QUOTE_PRECISION_EXP = exports.CONCENTRATION_PRECISION = exports.PERCENTAGE_PRECISION = exports.PERCENTAGE_PRECISION_EXP = exports.MAX_LEVERAGE = exports.TEN_MILLION = exports.BN_MAX = exports.TEN_THOUSAND = exports.TEN = exports.NINE = exports.EIGHT = exports.SEVEN = exports.SIX = exports.FIVE = exports.FOUR = exports.THREE = exports.TWO = exports.ONE = exports.ZERO = void 0;
4
+ exports.LAMPORTS_EXP = exports.LAMPORTS_PRECISION = exports.QUOTE_SPOT_MARKET_INDEX = exports.ONE_YEAR = void 0;
5
+ const web3_js_1 = require("@solana/web3.js");
4
6
  const __1 = require("../");
5
7
  exports.ZERO = new __1.BN(0);
6
8
  exports.ONE = new __1.BN(1);
7
9
  exports.TWO = new __1.BN(2);
10
+ exports.THREE = new __1.BN(3);
11
+ exports.FOUR = new __1.BN(4);
12
+ exports.FIVE = new __1.BN(5);
13
+ exports.SIX = new __1.BN(6);
14
+ exports.SEVEN = new __1.BN(7);
15
+ exports.EIGHT = new __1.BN(8);
16
+ exports.NINE = new __1.BN(9);
8
17
  exports.TEN = new __1.BN(10);
9
18
  exports.TEN_THOUSAND = new __1.BN(10000);
10
19
  exports.BN_MAX = new __1.BN(Number.MAX_SAFE_INTEGER);
11
20
  exports.TEN_MILLION = exports.TEN_THOUSAND.mul(exports.TEN_THOUSAND);
12
21
  exports.MAX_LEVERAGE = new __1.BN(5);
22
+ exports.PERCENTAGE_PRECISION_EXP = new __1.BN(6);
23
+ exports.PERCENTAGE_PRECISION = new __1.BN(10).pow(exports.PERCENTAGE_PRECISION_EXP);
24
+ exports.CONCENTRATION_PRECISION = exports.PERCENTAGE_PRECISION;
13
25
  exports.QUOTE_PRECISION_EXP = new __1.BN(6);
14
- exports.FUNDING_PAYMENT_PRECISION_EXP = new __1.BN(4);
15
- exports.MARK_PRICE_PRECISION_EXP = new __1.BN(10);
16
- exports.FUNDING_RATE_PRECISION_EXP = exports.MARK_PRICE_PRECISION_EXP.mul(exports.FUNDING_PAYMENT_PRECISION_EXP);
17
- exports.PEG_PRECISION_EXP = new __1.BN(3);
18
- exports.AMM_RESERVE_PRECISION_EXP = new __1.BN(13);
19
- exports.BANK_INTEREST_PRECISION = new __1.BN(1000000);
20
- exports.BANK_CUMULATIVE_INTEREST_PRECISION = new __1.BN(10000000000);
21
- exports.BANK_UTILIZATION_PRECISION = new __1.BN(1000000);
22
- exports.BANK_RATE_PRECISION = new __1.BN(1000000);
23
- exports.BANK_WEIGHT_PRECISION = new __1.BN(100);
24
- exports.BANK_BALANCE_PRECISION_EXP = new __1.BN(6);
25
- exports.BANK_BALANCE_PRECISION = new __1.BN(10).pow(exports.BANK_BALANCE_PRECISION_EXP);
26
+ exports.FUNDING_RATE_BUFFER_PRECISION_EXP = new __1.BN(3);
27
+ exports.PRICE_PRECISION_EXP = new __1.BN(6);
28
+ exports.FUNDING_RATE_PRECISION_EXP = exports.PRICE_PRECISION_EXP.add(exports.FUNDING_RATE_BUFFER_PRECISION_EXP);
29
+ exports.PEG_PRECISION_EXP = new __1.BN(6);
30
+ exports.AMM_RESERVE_PRECISION_EXP = new __1.BN(9);
31
+ exports.SPOT_MARKET_RATE_PRECISION_EXP = new __1.BN(6);
32
+ exports.SPOT_MARKET_RATE_PRECISION = new __1.BN(10).pow(exports.SPOT_MARKET_RATE_PRECISION_EXP);
33
+ exports.SPOT_MARKET_CUMULATIVE_INTEREST_PRECISION_EXP = new __1.BN(10);
34
+ exports.SPOT_MARKET_CUMULATIVE_INTEREST_PRECISION = new __1.BN(10).pow(exports.SPOT_MARKET_CUMULATIVE_INTEREST_PRECISION_EXP);
35
+ exports.SPOT_MARKET_UTILIZATION_PRECISION_EXP = new __1.BN(6);
36
+ exports.SPOT_MARKET_UTILIZATION_PRECISION = new __1.BN(10).pow(exports.SPOT_MARKET_UTILIZATION_PRECISION_EXP);
37
+ exports.SPOT_MARKET_WEIGHT_PRECISION = new __1.BN(10000);
38
+ exports.SPOT_MARKET_BALANCE_PRECISION_EXP = new __1.BN(9);
39
+ exports.SPOT_MARKET_BALANCE_PRECISION = new __1.BN(10).pow(exports.SPOT_MARKET_BALANCE_PRECISION_EXP);
40
+ exports.SPOT_MARKET_IMF_PRECISION_EXP = new __1.BN(6);
41
+ exports.SPOT_MARKET_IMF_PRECISION = new __1.BN(10).pow(exports.SPOT_MARKET_IMF_PRECISION_EXP);
26
42
  exports.LIQUIDATION_FEE_PRECISION = new __1.BN(1000000);
27
43
  exports.QUOTE_PRECISION = new __1.BN(10).pow(exports.QUOTE_PRECISION_EXP);
28
- exports.MARK_PRICE_PRECISION = new __1.BN(10).pow(exports.MARK_PRICE_PRECISION_EXP);
29
- exports.FUNDING_PAYMENT_PRECISION = new __1.BN(10).pow(exports.FUNDING_PAYMENT_PRECISION_EXP);
44
+ exports.PRICE_PRECISION = new __1.BN(10).pow(exports.PRICE_PRECISION_EXP);
45
+ exports.FUNDING_RATE_PRECISION = new __1.BN(10).pow(exports.FUNDING_RATE_PRECISION_EXP);
46
+ exports.FUNDING_RATE_BUFFER_PRECISION = new __1.BN(10).pow(exports.FUNDING_RATE_BUFFER_PRECISION_EXP);
30
47
  exports.PEG_PRECISION = new __1.BN(10).pow(exports.PEG_PRECISION_EXP);
31
48
  exports.AMM_RESERVE_PRECISION = new __1.BN(10).pow(exports.AMM_RESERVE_PRECISION_EXP);
32
49
  exports.BASE_PRECISION = exports.AMM_RESERVE_PRECISION;
33
50
  exports.BASE_PRECISION_EXP = exports.AMM_RESERVE_PRECISION_EXP;
34
- exports.AMM_TO_QUOTE_PRECISION_RATIO = exports.AMM_RESERVE_PRECISION.div(exports.QUOTE_PRECISION); // 10^7
35
- exports.PRICE_DIV_PEG = exports.MARK_PRICE_PRECISION.div(exports.PEG_PRECISION); //10^7
36
- exports.PRICE_TO_QUOTE_PRECISION = exports.MARK_PRICE_PRECISION.div(exports.QUOTE_PRECISION);
37
- exports.AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO = exports.AMM_RESERVE_PRECISION.mul(exports.PEG_PRECISION).div(exports.QUOTE_PRECISION); // 10^10
51
+ exports.AMM_TO_QUOTE_PRECISION_RATIO = exports.AMM_RESERVE_PRECISION.div(exports.QUOTE_PRECISION); // 10^3
52
+ exports.PRICE_DIV_PEG = exports.PRICE_PRECISION.div(exports.PEG_PRECISION); //10^1
53
+ exports.PRICE_TO_QUOTE_PRECISION = exports.PRICE_PRECISION.div(exports.QUOTE_PRECISION); // 10^1
54
+ exports.AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO = exports.AMM_RESERVE_PRECISION.mul(exports.PEG_PRECISION).div(exports.QUOTE_PRECISION); // 10^9
38
55
  exports.MARGIN_PRECISION = exports.TEN_THOUSAND;
39
- exports.BID_ASK_SPREAD_PRECISION = new __1.BN(1000000);
56
+ exports.BID_ASK_SPREAD_PRECISION = new __1.BN(1000000); // 10^6
40
57
  exports.ONE_YEAR = new __1.BN(31536000);
41
- exports.QUOTE_ASSET_BANK_INDEX = new __1.BN(0);
58
+ exports.QUOTE_SPOT_MARKET_INDEX = 0;
59
+ exports.LAMPORTS_PRECISION = new __1.BN(web3_js_1.LAMPORTS_PER_SOL);
60
+ exports.LAMPORTS_EXP = new __1.BN(Math.log10(web3_js_1.LAMPORTS_PER_SOL));
@@ -0,0 +1,18 @@
1
+ import { OracleSource } from '../';
2
+ import { DriftEnv } from '../';
3
+ import { PublicKey } from '@solana/web3.js';
4
+ export declare type PerpMarketConfig = {
5
+ fullName?: string;
6
+ category?: string[];
7
+ symbol: string;
8
+ baseAssetSymbol: string;
9
+ marketIndex: number;
10
+ launchTs: number;
11
+ oracle: PublicKey;
12
+ oracleSource: OracleSource;
13
+ };
14
+ export declare const DevnetPerpMarkets: PerpMarketConfig[];
15
+ export declare const MainnetPerpMarkets: PerpMarketConfig[];
16
+ export declare const PerpMarkets: {
17
+ [key in DriftEnv]: PerpMarketConfig[];
18
+ };
@@ -1,15 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Markets = exports.MainnetMarkets = exports.DevnetMarkets = void 0;
3
+ exports.PerpMarkets = exports.MainnetPerpMarkets = exports.DevnetPerpMarkets = void 0;
4
4
  const __1 = require("../");
5
5
  const web3_js_1 = require("@solana/web3.js");
6
- exports.DevnetMarkets = [
6
+ exports.DevnetPerpMarkets = [
7
7
  {
8
8
  fullName: 'Solana',
9
9
  category: ['L1', 'Infra'],
10
10
  symbol: 'SOL-PERP',
11
11
  baseAssetSymbol: 'SOL',
12
- marketIndex: new __1.BN(0),
12
+ marketIndex: 0,
13
13
  oracle: new web3_js_1.PublicKey('J83w4HKfqxwcq3BEMMkPFSppX3gqekLyLJBexebFVkix'),
14
14
  launchTs: 1655751353000,
15
15
  oracleSource: __1.OracleSource.PYTH,
@@ -19,7 +19,7 @@ exports.DevnetMarkets = [
19
19
  category: ['L1', 'Payment'],
20
20
  symbol: 'BTC-PERP',
21
21
  baseAssetSymbol: 'BTC',
22
- marketIndex: new __1.BN(1),
22
+ marketIndex: 1,
23
23
  oracle: new web3_js_1.PublicKey('HovQMDrbAgAYPCmHVSrezcSmkMtXSSUsLDFANExrZh2J'),
24
24
  launchTs: 1655751353000,
25
25
  oracleSource: __1.OracleSource.PYTH,
@@ -29,14 +29,25 @@ exports.DevnetMarkets = [
29
29
  category: ['L1', 'Infra'],
30
30
  symbol: 'ETH-PERP',
31
31
  baseAssetSymbol: 'ETH',
32
- marketIndex: new __1.BN(2),
32
+ marketIndex: 2,
33
33
  oracle: new web3_js_1.PublicKey('EdVCmQ9FSPcVe5YySXDPCRmc8aDQLKJ9xvYBMZPie1Vw'),
34
34
  launchTs: 1637691133472,
35
35
  oracleSource: __1.OracleSource.PYTH,
36
36
  },
37
37
  ];
38
- exports.MainnetMarkets = [];
39
- exports.Markets = {
40
- devnet: exports.DevnetMarkets,
41
- 'mainnet-beta': [],
38
+ exports.MainnetPerpMarkets = [
39
+ {
40
+ fullName: 'Solana',
41
+ category: ['L1', 'Infra'],
42
+ symbol: 'SOL-PERP',
43
+ baseAssetSymbol: 'SOL',
44
+ marketIndex: 0,
45
+ oracle: new web3_js_1.PublicKey('H6ARHf6YXhGYeQfUzQNGk6rDNnLBQKrenN712K4AQJEG'),
46
+ launchTs: 1667560505000,
47
+ oracleSource: __1.OracleSource.PYTH,
48
+ },
49
+ ];
50
+ exports.PerpMarkets = {
51
+ devnet: exports.DevnetPerpMarkets,
52
+ 'mainnet-beta': exports.MainnetPerpMarkets,
42
53
  };
@@ -0,0 +1,19 @@
1
+ /// <reference types="bn.js" />
2
+ import { PublicKey } from '@solana/web3.js';
3
+ import { BN, DriftEnv, OracleSource } from '../';
4
+ export declare type SpotMarketConfig = {
5
+ symbol: string;
6
+ marketIndex: number;
7
+ oracle: PublicKey;
8
+ mint: PublicKey;
9
+ oracleSource: OracleSource;
10
+ precision: BN;
11
+ precisionExp: BN;
12
+ serumMarket?: PublicKey;
13
+ };
14
+ export declare const WRAPPED_SOL_MINT: PublicKey;
15
+ export declare const DevnetSpotMarkets: SpotMarketConfig[];
16
+ export declare const MainnetSpotMarkets: SpotMarketConfig[];
17
+ export declare const SpotMarkets: {
18
+ [key in DriftEnv]: SpotMarketConfig[];
19
+ };
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SpotMarkets = exports.MainnetSpotMarkets = exports.DevnetSpotMarkets = exports.WRAPPED_SOL_MINT = void 0;
4
+ const web3_js_1 = require("@solana/web3.js");
5
+ const __1 = require("../");
6
+ const numericConstants_1 = require("./numericConstants");
7
+ exports.WRAPPED_SOL_MINT = new web3_js_1.PublicKey('So11111111111111111111111111111111111111112');
8
+ exports.DevnetSpotMarkets = [
9
+ {
10
+ symbol: 'USDC',
11
+ marketIndex: 0,
12
+ oracle: web3_js_1.PublicKey.default,
13
+ oracleSource: __1.OracleSource.QUOTE_ASSET,
14
+ mint: new web3_js_1.PublicKey('8zGuJQqwhZafTah7Uc7Z4tXRnguqkn5KLFAP8oV6PHe2'),
15
+ precision: new __1.BN(10).pow(numericConstants_1.SIX),
16
+ precisionExp: numericConstants_1.SIX,
17
+ },
18
+ {
19
+ symbol: 'SOL',
20
+ marketIndex: 1,
21
+ oracle: new web3_js_1.PublicKey('J83w4HKfqxwcq3BEMMkPFSppX3gqekLyLJBexebFVkix'),
22
+ oracleSource: __1.OracleSource.PYTH,
23
+ mint: new web3_js_1.PublicKey(exports.WRAPPED_SOL_MINT),
24
+ precision: numericConstants_1.LAMPORTS_PRECISION,
25
+ precisionExp: numericConstants_1.LAMPORTS_EXP,
26
+ serumMarket: new web3_js_1.PublicKey('8N37SsnTu8RYxtjrV9SStjkkwVhmU8aCWhLvwduAPEKW'),
27
+ },
28
+ {
29
+ symbol: 'BTC',
30
+ marketIndex: 2,
31
+ oracle: new web3_js_1.PublicKey('HovQMDrbAgAYPCmHVSrezcSmkMtXSSUsLDFANExrZh2J'),
32
+ oracleSource: __1.OracleSource.PYTH,
33
+ mint: new web3_js_1.PublicKey('3BZPwbcqB5kKScF3TEXxwNfx5ipV13kbRVDvfVp5c6fv'),
34
+ precision: new __1.BN(10).pow(numericConstants_1.SIX),
35
+ precisionExp: numericConstants_1.SIX,
36
+ serumMarket: new web3_js_1.PublicKey('AGsmbVu3MS9u68GEYABWosQQCZwmLcBHu4pWEuBYH7Za'),
37
+ },
38
+ ];
39
+ exports.MainnetSpotMarkets = [
40
+ {
41
+ symbol: 'USDC',
42
+ marketIndex: 0,
43
+ oracle: web3_js_1.PublicKey.default,
44
+ oracleSource: __1.OracleSource.QUOTE_ASSET,
45
+ mint: new web3_js_1.PublicKey('EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'),
46
+ precision: numericConstants_1.SPOT_MARKET_BALANCE_PRECISION,
47
+ precisionExp: numericConstants_1.SPOT_MARKET_BALANCE_PRECISION_EXP,
48
+ },
49
+ {
50
+ symbol: 'SOL',
51
+ marketIndex: 1,
52
+ oracle: new web3_js_1.PublicKey('H6ARHf6YXhGYeQfUzQNGk6rDNnLBQKrenN712K4AQJEG'),
53
+ oracleSource: __1.OracleSource.PYTH,
54
+ mint: new web3_js_1.PublicKey(exports.WRAPPED_SOL_MINT),
55
+ precision: numericConstants_1.LAMPORTS_PRECISION,
56
+ precisionExp: numericConstants_1.LAMPORTS_EXP,
57
+ serumMarket: new web3_js_1.PublicKey('9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusDBzvT'),
58
+ },
59
+ ];
60
+ exports.SpotMarkets = {
61
+ devnet: exports.DevnetSpotMarkets,
62
+ 'mainnet-beta': exports.MainnetSpotMarkets,
63
+ };
@@ -0,0 +1,82 @@
1
+ /// <reference types="bn.js" />
2
+ import { NodeList } from './NodeList';
3
+ import { MarketType, BN, DriftClient, Order, SpotMarketAccount, PerpMarketAccount, OraclePriceData, SlotSubscriber, UserMapInterface, MarketTypeStr, StateAccount } from '..';
4
+ import { PublicKey } from '@solana/web3.js';
5
+ import { DLOBNode, TriggerOrderNode } from '..';
6
+ export declare type MarketNodeLists = {
7
+ limit: {
8
+ ask: NodeList<'limit'>;
9
+ bid: NodeList<'limit'>;
10
+ };
11
+ floatingLimit: {
12
+ ask: NodeList<'floatingLimit'>;
13
+ bid: NodeList<'floatingLimit'>;
14
+ };
15
+ market: {
16
+ ask: NodeList<'market'>;
17
+ bid: NodeList<'market'>;
18
+ };
19
+ trigger: {
20
+ above: NodeList<'trigger'>;
21
+ below: NodeList<'trigger'>;
22
+ };
23
+ };
24
+ declare type OrderBookCallback = () => void;
25
+ export declare type NodeToFill = {
26
+ node: DLOBNode;
27
+ makerNode?: DLOBNode;
28
+ };
29
+ export declare type NodeToTrigger = {
30
+ node: TriggerOrderNode;
31
+ };
32
+ declare type Side = 'ask' | 'bid' | 'both' | 'nocross';
33
+ export declare class DLOB {
34
+ openOrders: Map<MarketTypeStr, Set<string>>;
35
+ orderLists: Map<MarketTypeStr, Map<number, MarketNodeLists>>;
36
+ stateAccount: StateAccount;
37
+ marketIndexToAccount: Map<MarketTypeStr, Map<number, PerpMarketAccount | SpotMarketAccount>>;
38
+ userMap: UserMapInterface;
39
+ silent: boolean;
40
+ initialized: boolean;
41
+ /**
42
+ *
43
+ * @param perpMarkets The perp markets to maintain a DLOB for
44
+ * @param spotMarkets The spot markets to maintain a DLOB for
45
+ * @param userMap map of all users
46
+ * @param silent set to true to prevent logging on inserts and removals
47
+ */
48
+ constructor(perpMarkets: PerpMarketAccount[], spotMarkets: SpotMarketAccount[], stateAccount: StateAccount, userMap: UserMapInterface, silent?: boolean);
49
+ clear(): void;
50
+ /**
51
+ * initializes a new DLOB instance
52
+ *
53
+ * @returns a promise that resolves when the DLOB is initialized
54
+ */
55
+ init(): Promise<boolean>;
56
+ insertOrder(order: Order, userAccount: PublicKey, onInsert?: OrderBookCallback): void;
57
+ trigger(order: Order, userAccount: PublicKey, onTrigger?: OrderBookCallback): void;
58
+ getListForOrder(order: Order): NodeList<any> | undefined;
59
+ findNodesToFill(marketIndex: number, fallbackBid: BN | undefined, fallbackAsk: BN | undefined, slot: number, ts: number, marketType: MarketType, oraclePriceData: OraclePriceData): NodeToFill[];
60
+ findCrossingNodesToFill(marketIndex: number, slot: number, marketType: MarketType, oraclePriceData: OraclePriceData): NodeToFill[];
61
+ findFallbackCrossingNodesToFill(marketIndex: number, fallbackBid: BN, fallbackAsk: BN, slot: number, marketType: MarketType, oraclePriceData: OraclePriceData): NodeToFill[];
62
+ findExpiredNodesToFill(marketIndex: number, ts: number, marketType: MarketType): NodeToFill[];
63
+ findJitAuctionNodesToFill(marketIndex: number, slot: number, marketType: MarketType): NodeToFill[];
64
+ getMarketBids(marketIndex: number, marketType: MarketType): Generator<DLOBNode>;
65
+ getMarketAsks(marketIndex: number, marketType: MarketType): Generator<DLOBNode>;
66
+ getAsks(marketIndex: number, fallbackAsk: BN | undefined, slot: number, marketType: MarketType, oraclePriceData: OraclePriceData): Generator<DLOBNode>;
67
+ getBids(marketIndex: number, fallbackBid: BN | undefined, slot: number, marketType: MarketType, oraclePriceData: OraclePriceData): Generator<DLOBNode>;
68
+ findCrossingOrders(askNode: DLOBNode, bidNode: DLOBNode, oraclePriceData: OraclePriceData, slot: number): {
69
+ crossingNodes: NodeToFill[];
70
+ exhaustedSide: Side;
71
+ };
72
+ determineMakerAndTaker(askNode: DLOBNode, bidNode: DLOBNode): {
73
+ takerNode: DLOBNode;
74
+ makerNode: DLOBNode;
75
+ makerSide: Side;
76
+ };
77
+ getBestAsk(marketIndex: number, fallbackAsk: BN | undefined, slot: number, marketType: MarketType, oraclePriceData: OraclePriceData): BN;
78
+ getBestBid(marketIndex: number, fallbackBid: BN | undefined, slot: number, marketType: MarketType, oraclePriceData: OraclePriceData): BN;
79
+ findNodesToTrigger(marketIndex: number, slot: number, oraclePrice: BN, marketType: MarketType): NodeToTrigger[];
80
+ printTopOfOrderLists(sdkConfig: any, driftClient: DriftClient, slotSubscriber: SlotSubscriber, marketIndex: number, marketType: MarketType): void;
81
+ }
82
+ export {};