@drift-labs/sdk 0.2.0-temp.2 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (278) 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.d.ts +0 -1
  48. package/lib/events/eventList.js +0 -7
  49. package/lib/events/eventSubscriber.d.ts +5 -2
  50. package/lib/events/eventSubscriber.js +25 -11
  51. package/lib/events/fetchLogs.d.ts +13 -2
  52. package/lib/events/fetchLogs.js +45 -14
  53. package/lib/events/pollingLogProvider.d.ts +2 -1
  54. package/lib/events/pollingLogProvider.js +7 -3
  55. package/lib/events/sort.js +8 -11
  56. package/lib/events/txEventCache.d.ts +0 -2
  57. package/lib/events/txEventCache.js +0 -14
  58. package/lib/events/types.d.ts +11 -3
  59. package/lib/events/types.js +8 -0
  60. package/lib/events/webSocketLogProvider.js +1 -1
  61. package/lib/examples/makeTradeExample.js +30 -18
  62. package/lib/factory/bigNum.d.ts +8 -4
  63. package/lib/factory/bigNum.js +109 -19
  64. package/lib/idl/drift.json +8392 -0
  65. package/lib/index.d.ts +29 -12
  66. package/lib/index.js +29 -12
  67. package/lib/math/amm.d.ts +9 -6
  68. package/lib/math/amm.js +91 -38
  69. package/lib/math/conversion.js +1 -1
  70. package/lib/math/exchangeStatus.d.ts +4 -0
  71. package/lib/math/exchangeStatus.js +18 -0
  72. package/lib/math/funding.d.ts +6 -6
  73. package/lib/math/funding.js +23 -21
  74. package/lib/math/insurance.d.ts +4 -0
  75. package/lib/math/insurance.js +27 -0
  76. package/lib/math/margin.d.ts +11 -0
  77. package/lib/math/margin.js +82 -0
  78. package/lib/math/market.d.ts +14 -9
  79. package/lib/math/market.js +70 -10
  80. package/lib/math/oracles.d.ts +4 -0
  81. package/lib/math/oracles.js +36 -8
  82. package/lib/math/orders.d.ts +16 -6
  83. package/lib/math/orders.js +97 -17
  84. package/lib/math/position.d.ts +27 -13
  85. package/lib/math/position.js +91 -37
  86. package/lib/math/repeg.js +17 -8
  87. package/lib/math/spotBalance.d.ts +22 -0
  88. package/lib/math/spotBalance.js +192 -0
  89. package/lib/math/spotMarket.d.ts +4 -0
  90. package/lib/math/spotMarket.js +8 -0
  91. package/lib/math/spotPosition.d.ts +6 -0
  92. package/lib/math/spotPosition.js +23 -0
  93. package/lib/math/trade.d.ts +10 -10
  94. package/lib/math/trade.js +27 -31
  95. package/lib/oracles/pythClient.js +1 -1
  96. package/lib/oracles/quoteAssetOracleClient.js +1 -1
  97. package/lib/oracles/switchboardClient.js +1 -1
  98. package/lib/orderParams.d.ts +4 -4
  99. package/lib/orderParams.js +12 -4
  100. package/lib/serum/serumFulfillmentConfigMap.d.ts +10 -0
  101. package/lib/serum/serumFulfillmentConfigMap.js +17 -0
  102. package/lib/serum/serumSubscriber.d.ts +27 -0
  103. package/lib/serum/serumSubscriber.js +56 -0
  104. package/lib/serum/types.d.ts +11 -0
  105. package/{src/oracles → lib/serum}/types.js +0 -0
  106. package/lib/tokenFaucet.d.ts +1 -0
  107. package/lib/tokenFaucet.js +23 -12
  108. package/lib/tx/retryTxSender.d.ts +1 -1
  109. package/lib/tx/retryTxSender.js +13 -4
  110. package/lib/tx/types.d.ts +1 -1
  111. package/lib/types.d.ts +631 -222
  112. package/lib/types.js +137 -24
  113. package/lib/user.d.ts +228 -0
  114. package/lib/user.js +959 -0
  115. package/lib/userConfig.d.ts +14 -0
  116. package/lib/{clearingHouseUserConfig.js → userConfig.js} +0 -0
  117. package/lib/userMap/userMap.d.ts +41 -0
  118. package/lib/userMap/userMap.js +85 -0
  119. package/lib/userMap/userStatsMap.d.ts +19 -0
  120. package/lib/userMap/userStatsMap.js +68 -0
  121. package/lib/userName.d.ts +1 -0
  122. package/lib/userName.js +3 -2
  123. package/lib/userStats.d.ts +18 -0
  124. package/lib/userStats.js +49 -0
  125. package/lib/userStatsConfig.d.ts +14 -0
  126. package/{src/clearingHouseConfig.js → lib/userStatsConfig.js} +0 -0
  127. package/lib/util/getTokenAddress.d.ts +2 -0
  128. package/lib/util/getTokenAddress.js +9 -0
  129. package/package.json +12 -5
  130. package/src/accounts/bulkAccountLoader.ts +44 -34
  131. package/src/accounts/bulkUserStatsSubscription.ts +33 -0
  132. package/src/accounts/bulkUserSubscription.ts +2 -3
  133. package/src/accounts/fetch.ts +27 -2
  134. package/src/accounts/{pollingClearingHouseAccountSubscriber.ts → pollingDriftClientAccountSubscriber.ts} +65 -75
  135. package/src/accounts/{pollingOracleSubscriber.ts → pollingOracleAccountSubscriber.ts} +2 -2
  136. package/src/accounts/pollingUserAccountSubscriber.ts +5 -12
  137. package/src/accounts/pollingUserStatsAccountSubscriber.ts +166 -0
  138. package/src/accounts/types.ts +35 -15
  139. package/src/accounts/{webSocketClearingHouseAccountSubscriber.ts → webSocketDriftClientAccountSubscriber.ts} +78 -73
  140. package/src/accounts/webSocketUserStatsAccountSubsriber.ts +80 -0
  141. package/src/addresses/marketAddresses.ts +3 -4
  142. package/src/addresses/pda.ts +105 -33
  143. package/src/adminClient.ts +1207 -0
  144. package/src/config.ts +41 -34
  145. package/src/constants/numericConstants.ts +59 -26
  146. package/src/constants/{markets.ts → perpMarkets.ts} +22 -11
  147. package/src/constants/spotMarkets.ts +83 -0
  148. package/src/dlob/DLOB.ts +1120 -0
  149. package/src/dlob/DLOBNode.ts +155 -0
  150. package/src/dlob/NodeList.ts +195 -0
  151. package/src/driftClient.ts +3594 -0
  152. package/src/{clearingHouseConfig.ts → driftClientConfig.ts} +9 -8
  153. package/src/events/eventList.ts +1 -8
  154. package/src/events/eventSubscriber.ts +36 -14
  155. package/src/events/fetchLogs.ts +60 -15
  156. package/src/events/pollingLogProvider.ts +11 -3
  157. package/src/events/sort.ts +11 -15
  158. package/src/events/txEventCache.ts +0 -16
  159. package/src/events/types.ts +27 -2
  160. package/src/events/webSocketLogProvider.ts +1 -1
  161. package/src/examples/makeTradeExample.js +152 -75
  162. package/src/examples/makeTradeExample.ts +44 -28
  163. package/src/factory/bigNum.ts +150 -22
  164. package/src/idl/drift.json +8392 -0
  165. package/src/idl/pyth.json +98 -2
  166. package/src/index.ts +29 -12
  167. package/src/math/amm.ts +161 -48
  168. package/src/math/conversion.ts +2 -2
  169. package/src/math/exchangeStatus.ts +31 -0
  170. package/src/math/funding.ts +41 -31
  171. package/src/math/insurance.ts +35 -0
  172. package/src/math/margin.ts +133 -0
  173. package/src/math/market.ts +143 -14
  174. package/src/math/oracles.ts +63 -9
  175. package/src/math/orders.ts +168 -26
  176. package/src/math/position.ts +133 -59
  177. package/src/math/repeg.ts +19 -9
  178. package/src/math/spotBalance.ts +319 -0
  179. package/src/math/spotMarket.ts +9 -0
  180. package/src/math/spotPosition.ts +47 -0
  181. package/src/math/trade.ts +33 -37
  182. package/src/oracles/pythClient.ts +2 -2
  183. package/src/oracles/quoteAssetOracleClient.ts +2 -2
  184. package/src/oracles/switchboardClient.ts +2 -2
  185. package/src/orderParams.ts +16 -8
  186. package/src/serum/serumFulfillmentConfigMap.ts +26 -0
  187. package/src/serum/serumSubscriber.ts +99 -0
  188. package/src/serum/types.ts +13 -0
  189. package/src/tokenFaucet.ts +38 -15
  190. package/src/tx/retryTxSender.ts +16 -5
  191. package/src/tx/types.ts +2 -1
  192. package/src/types.ts +594 -195
  193. package/src/user.ts +1599 -0
  194. package/src/{clearingHouseUserConfig.ts → userConfig.ts} +5 -5
  195. package/src/userMap/userMap.ts +124 -0
  196. package/src/userMap/userStatsMap.ts +108 -0
  197. package/src/userName.ts +2 -1
  198. package/src/userStats.ts +75 -0
  199. package/src/userStatsConfig.ts +18 -0
  200. package/src/util/getTokenAddress.ts +18 -0
  201. package/tests/bn/test.ts +46 -11
  202. package/tests/dlob/helpers.ts +619 -0
  203. package/tests/dlob/test.ts +4586 -0
  204. package/lib/accounts/webSocketClearingHouseAccountSubscriber.d.ts +0 -49
  205. package/lib/admin.d.ts +0 -44
  206. package/lib/admin.js +0 -438
  207. package/lib/clearingHouse.d.ts +0 -146
  208. package/lib/clearingHouse.js +0 -1154
  209. package/lib/clearingHouseUser.d.ts +0 -187
  210. package/lib/clearingHouseUser.js +0 -634
  211. package/lib/clearingHouseUserConfig.d.ts +0 -14
  212. package/lib/constants/banks.d.ts +0 -16
  213. package/lib/constants/banks.js +0 -41
  214. package/lib/constants/markets.d.ts +0 -19
  215. package/lib/idl/clearing_house.json +0 -4464
  216. package/lib/math/bankBalance.d.ts +0 -9
  217. package/lib/math/bankBalance.js +0 -75
  218. package/lib/math/state.d.ts +0 -8
  219. package/lib/math/state.js +0 -15
  220. package/lib/orders.d.ts +0 -8
  221. package/lib/orders.js +0 -134
  222. package/src/accounts/bulkAccountLoader.js +0 -197
  223. package/src/accounts/bulkUserSubscription.js +0 -33
  224. package/src/accounts/pollingClearingHouseAccountSubscriber.js +0 -311
  225. package/src/accounts/pollingOracleSubscriber.js +0 -93
  226. package/src/accounts/pollingTokenAccountSubscriber.js +0 -90
  227. package/src/accounts/pollingUserAccountSubscriber.js +0 -132
  228. package/src/accounts/types.js +0 -10
  229. package/src/accounts/utils.js +0 -7
  230. package/src/accounts/webSocketAccountSubscriber.js +0 -93
  231. package/src/accounts/webSocketClearingHouseAccountSubscriber.js +0 -233
  232. package/src/accounts/webSocketUserAccountSubscriber.js +0 -62
  233. package/src/addresses/marketAddresses.js +0 -26
  234. package/src/admin.js +0 -517
  235. package/src/admin.ts +0 -730
  236. package/src/clearingHouse.ts +0 -1828
  237. package/src/clearingHouseUser.ts +0 -978
  238. package/src/clearingHouseUserConfig.js +0 -2
  239. package/src/config.js +0 -67
  240. package/src/constants/banks.js +0 -42
  241. package/src/constants/banks.ts +0 -50
  242. package/src/constants/markets.js +0 -42
  243. package/src/constants/numericConstants.js +0 -41
  244. package/src/events/eventSubscriber.js +0 -139
  245. package/src/events/fetchLogs.js +0 -50
  246. package/src/events/pollingLogProvider.js +0 -64
  247. package/src/events/sort.js +0 -44
  248. package/src/events/txEventCache.js +0 -71
  249. package/src/events/types.js +0 -20
  250. package/src/events/webSocketLogProvider.js +0 -41
  251. package/src/factory/bigNum.js +0 -390
  252. package/src/factory/oracleClient.js +0 -20
  253. package/src/idl/clearing_house.json +0 -4464
  254. package/src/index.js +0 -69
  255. package/src/math/amm.js +0 -369
  256. package/src/math/auction.js +0 -42
  257. package/src/math/bankBalance.ts +0 -112
  258. package/src/math/conversion.js +0 -11
  259. package/src/math/funding.js +0 -248
  260. package/src/math/oracles.js +0 -26
  261. package/src/math/repeg.js +0 -128
  262. package/src/math/state.js +0 -15
  263. package/src/math/state.ts +0 -14
  264. package/src/math/trade.js +0 -253
  265. package/src/math/utils.js +0 -26
  266. package/src/math/utils.js.map +0 -1
  267. package/src/mockUSDCFaucet.js +0 -280
  268. package/src/oracles/oracleClientCache.js +0 -19
  269. package/src/oracles/pythClient.js +0 -46
  270. package/src/oracles/quoteAssetOracleClient.js +0 -32
  271. package/src/oracles/switchboardClient.js +0 -69
  272. package/src/orderParams.js +0 -20
  273. package/src/orders.ts +0 -245
  274. package/src/slot/SlotSubscriber.js +0 -39
  275. package/src/tokenFaucet.js +0 -189
  276. package/src/types.js +0 -125
  277. package/src/userName.js +0 -20
  278. 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.QUOTE_PRECISION,
47
+ precisionExp: numericConstants_1.QUOTE_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 {};