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

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 (124) hide show
  1. package/lib/accounts/pollingClearingHouseAccountSubscriber.d.ts +14 -13
  2. package/lib/accounts/pollingClearingHouseAccountSubscriber.js +30 -27
  3. package/lib/accounts/types.d.ts +9 -9
  4. package/lib/accounts/webSocketClearingHouseAccountSubscriber.d.ts +15 -14
  5. package/lib/accounts/webSocketClearingHouseAccountSubscriber.js +38 -34
  6. package/lib/addresses/pda.d.ts +7 -6
  7. package/lib/addresses/pda.js +31 -27
  8. package/lib/admin.d.ts +13 -7
  9. package/lib/admin.js +111 -44
  10. package/lib/clearingHouse.d.ts +71 -42
  11. package/lib/clearingHouse.js +767 -278
  12. package/lib/clearingHouseConfig.d.ts +2 -2
  13. package/lib/clearingHouseUser.d.ts +24 -22
  14. package/lib/clearingHouseUser.js +273 -177
  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/lib/constants/{markets.js → 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/dlob/DLOB.d.ts +73 -0
  24. package/lib/dlob/DLOB.js +557 -0
  25. package/lib/dlob/DLOBNode.d.ts +52 -0
  26. package/lib/dlob/DLOBNode.js +82 -0
  27. package/lib/dlob/NodeList.d.ts +26 -0
  28. package/lib/dlob/NodeList.js +138 -0
  29. package/lib/events/types.d.ts +2 -1
  30. package/lib/events/types.js +1 -0
  31. package/lib/examples/makeTradeExample.js +7 -7
  32. package/lib/idl/clearing_house.json +1152 -503
  33. package/lib/index.d.ts +10 -3
  34. package/lib/index.js +10 -3
  35. package/lib/math/amm.d.ts +2 -2
  36. package/lib/math/amm.js +1 -1
  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 +11 -10
  42. package/lib/math/market.js +30 -7
  43. package/lib/math/oracles.d.ts +2 -1
  44. package/lib/math/oracles.js +11 -1
  45. package/lib/math/orders.d.ts +6 -6
  46. package/lib/math/orders.js +31 -16
  47. package/lib/math/position.d.ts +13 -13
  48. package/lib/math/position.js +19 -19
  49. package/lib/math/spotBalance.d.ts +22 -0
  50. package/lib/math/spotBalance.js +193 -0
  51. package/lib/math/spotMarket.d.ts +4 -0
  52. package/lib/math/spotMarket.js +8 -0
  53. package/lib/math/spotPosition.d.ts +6 -0
  54. package/lib/math/spotPosition.js +23 -0
  55. package/lib/math/state.js +2 -2
  56. package/lib/math/trade.d.ts +4 -4
  57. package/lib/orderParams.d.ts +4 -4
  58. package/lib/orderParams.js +12 -4
  59. package/lib/serum/serumSubscriber.d.ts +23 -0
  60. package/lib/serum/serumSubscriber.js +41 -0
  61. package/lib/serum/types.d.ts +11 -0
  62. package/lib/serum/types.js +2 -0
  63. package/lib/tx/retryTxSender.d.ts +1 -1
  64. package/lib/tx/retryTxSender.js +4 -2
  65. package/lib/tx/types.d.ts +1 -1
  66. package/lib/types.d.ts +148 -57
  67. package/lib/types.js +39 -11
  68. package/lib/userMap/userMap.d.ts +25 -0
  69. package/lib/userMap/userMap.js +73 -0
  70. package/lib/userMap/userStatsMap.d.ts +19 -0
  71. package/lib/userMap/userStatsMap.js +68 -0
  72. package/package.json +6 -3
  73. package/src/accounts/pollingClearingHouseAccountSubscriber.ts +42 -38
  74. package/src/accounts/types.ts +12 -9
  75. package/src/accounts/webSocketClearingHouseAccountSubscriber.ts +65 -52
  76. package/src/addresses/pda.ts +49 -44
  77. package/src/admin.ts +190 -55
  78. package/src/clearingHouse.ts +1092 -365
  79. package/src/clearingHouseConfig.ts +2 -2
  80. package/src/clearingHouseUser.ts +518 -255
  81. package/src/config.ts +30 -30
  82. package/src/constants/numericConstants.ts +17 -15
  83. package/src/constants/{markets.ts → perpMarkets.ts} +5 -5
  84. package/src/constants/{banks.ts → spotMarkets.ts} +19 -19
  85. package/src/dlob/DLOB.ts +884 -0
  86. package/src/dlob/DLOBNode.ts +163 -0
  87. package/src/dlob/NodeList.ts +185 -0
  88. package/src/events/types.ts +3 -0
  89. package/src/examples/makeTradeExample.js +152 -75
  90. package/src/examples/makeTradeExample.ts +10 -8
  91. package/src/idl/clearing_house.json +1152 -503
  92. package/src/index.ts +10 -3
  93. package/src/math/amm.ts +6 -3
  94. package/src/math/funding.ts +7 -7
  95. package/src/math/margin.ts +34 -23
  96. package/src/math/market.ts +72 -20
  97. package/src/math/oracles.ts +18 -1
  98. package/src/math/orders.ts +33 -25
  99. package/src/math/position.ts +31 -31
  100. package/src/math/spotBalance.ts +316 -0
  101. package/src/math/spotMarket.ts +9 -0
  102. package/src/math/spotPosition.ts +47 -0
  103. package/src/math/state.ts +2 -2
  104. package/src/math/trade.ts +4 -4
  105. package/src/orderParams.ts +16 -8
  106. package/src/serum/serumSubscriber.ts +80 -0
  107. package/src/serum/types.ts +13 -0
  108. package/src/tx/retryTxSender.ts +5 -2
  109. package/src/tx/types.ts +2 -1
  110. package/src/types.ts +135 -56
  111. package/src/userMap/userMap.ts +100 -0
  112. package/src/userMap/userStatsMap.ts +110 -0
  113. package/tests/bn/test.ts +2 -3
  114. package/tests/dlob/helpers.ts +322 -0
  115. package/tests/dlob/test.ts +2865 -0
  116. package/lib/math/bankBalance.d.ts +0 -15
  117. package/lib/math/bankBalance.js +0 -150
  118. package/src/constants/numericConstants.js +0 -41
  119. package/src/math/bankBalance.ts +0 -258
  120. package/src/math/oracles.js +0 -26
  121. package/src/math/state.js +0 -15
  122. package/src/orderParams.js +0 -20
  123. package/src/slot/SlotSubscriber.js +0 -39
  124. package/src/tokenFaucet.js +0 -189
package/lib/config.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  /// <reference types="bn.js" />
2
- import { MarketConfig } from './constants/markets';
3
- import { BankConfig } from './constants/banks';
2
+ import { PerpMarketConfig } from './constants/perpMarkets';
3
+ import { SpotMarketConfig } from './constants/spotMarkets';
4
4
  import { BN } from '@project-serum/anchor';
5
5
  import { OracleInfo } from './oracles/types';
6
6
  declare type DriftConfig = {
@@ -8,8 +8,8 @@ declare type DriftConfig = {
8
8
  PYTH_ORACLE_MAPPING_ADDRESS: string;
9
9
  CLEARING_HOUSE_PROGRAM_ID: string;
10
10
  USDC_MINT_ADDRESS: string;
11
- MARKETS: MarketConfig[];
12
- BANKS: BankConfig[];
11
+ PERP_MARKETS: PerpMarketConfig[];
12
+ SPOT_MARKETS: SpotMarketConfig[];
13
13
  };
14
14
  export declare type DriftEnv = 'devnet' | 'mainnet-beta';
15
15
  export declare const configs: {
@@ -27,9 +27,9 @@ export declare const initialize: (props: {
27
27
  env: DriftEnv;
28
28
  overrideEnv?: Partial<DriftConfig>;
29
29
  }) => DriftConfig;
30
- export declare function getMarketsBanksAndOraclesForSubscription(env: DriftEnv): {
31
- marketIndexes: BN[];
32
- bankIndexes: BN[];
30
+ export declare function getMarketsAndOraclesForSubscription(env: DriftEnv): {
31
+ perpMarketIndexes: BN[];
32
+ spotMarketIndexes: BN[];
33
33
  oracleInfos: OracleInfo[];
34
34
  };
35
35
  export {};
package/lib/config.js CHANGED
@@ -1,24 +1,24 @@
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: '3v1iEjbSSLSSYyt1pmx4UB5rqJGurmz71RibXF7X6UF3',
10
+ CLEARING_HOUSE_PROGRAM_ID: 'CUowJP5Dea7pkc2mKrkX2RuZUrPXL3u419iBRXyZEWQz',
11
11
  USDC_MINT_ADDRESS: '8zGuJQqwhZafTah7Uc7Z4tXRnguqkn5KLFAP8oV6PHe2',
12
- MARKETS: markets_1.DevnetMarkets,
13
- BANKS: banks_1.DevnetBanks,
12
+ PERP_MARKETS: perpMarkets_1.DevnetPerpMarkets,
13
+ SPOT_MARKETS: spotMarkets_1.DevnetSpotMarkets,
14
14
  },
15
15
  'mainnet-beta': {
16
16
  ENV: 'mainnet-beta',
17
17
  PYTH_ORACLE_MAPPING_ADDRESS: 'AHtgzX45WTKfkPG53L6WYhGEXwQkN1BVknET3sVsLL8J',
18
18
  CLEARING_HOUSE_PROGRAM_ID: 'dammHkt7jmytvbS3nHTxQNEcP59aE57nxwV21YdqEDN',
19
19
  USDC_MINT_ADDRESS: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
20
- MARKETS: markets_1.MainnetMarkets,
21
- BANKS: banks_1.MainnetBanks,
20
+ PERP_MARKETS: perpMarkets_1.MainnetMarkets,
21
+ SPOT_MARKETS: spotMarkets_1.MainnetSpotMarkets,
22
22
  },
23
23
  };
24
24
  let currentConfig = exports.configs.devnet;
@@ -40,28 +40,28 @@ const initialize = (props) => {
40
40
  return currentConfig;
41
41
  };
42
42
  exports.initialize = initialize;
43
- function getMarketsBanksAndOraclesForSubscription(env) {
44
- const marketIndexes = [];
45
- const bankIndexes = [];
43
+ function getMarketsAndOraclesForSubscription(env) {
44
+ const perpMarketIndexes = [];
45
+ const spotMarketIndexes = [];
46
46
  const oracleInfos = new Map();
47
- for (const market of markets_1.Markets[env]) {
48
- marketIndexes.push(market.marketIndex);
47
+ for (const market of perpMarkets_1.PerpMarkets[env]) {
48
+ perpMarketIndexes.push(market.marketIndex);
49
49
  oracleInfos.set(market.oracle.toString(), {
50
50
  publicKey: market.oracle,
51
51
  source: market.oracleSource,
52
52
  });
53
53
  }
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,
54
+ for (const spotMarket of spotMarkets_1.SpotMarkets[env]) {
55
+ spotMarketIndexes.push(spotMarket.marketIndex);
56
+ oracleInfos.set(spotMarket.oracle.toString(), {
57
+ publicKey: spotMarket.oracle,
58
+ source: spotMarket.oracleSource,
59
59
  });
60
60
  }
61
61
  return {
62
- marketIndexes,
63
- bankIndexes,
62
+ perpMarketIndexes: perpMarketIndexes,
63
+ spotMarketIndexes: spotMarketIndexes,
64
64
  oracleInfos: Array.from(oracleInfos.values()),
65
65
  };
66
66
  }
67
- exports.getMarketsBanksAndOraclesForSubscription = getMarketsBanksAndOraclesForSubscription;
67
+ exports.getMarketsAndOraclesForSubscription = getMarketsAndOraclesForSubscription;
@@ -14,17 +14,17 @@ export declare const MARK_PRICE_PRECISION_EXP: BN;
14
14
  export declare const FUNDING_RATE_PRECISION_EXP: BN;
15
15
  export declare const PEG_PRECISION_EXP: BN;
16
16
  export declare const AMM_RESERVE_PRECISION_EXP: BN;
17
- export declare const BANK_INTEREST_PRECISION_EXP: BN;
18
- export declare const BANK_INTEREST_PRECISION: BN;
19
- export declare const BANK_CUMULATIVE_INTEREST_PRECISION_EXP: BN;
20
- export declare const BANK_CUMULATIVE_INTEREST_PRECISION: BN;
21
- export declare const BANK_UTILIZATION_PRECISION: BN;
22
- export declare const BANK_RATE_PRECISION: BN;
23
- export declare const BANK_WEIGHT_PRECISION: BN;
24
- export declare const BANK_BALANCE_PRECISION_EXP: BN;
25
- export declare const BANK_BALANCE_PRECISION: BN;
26
- export declare const BANK_IMF_PRECISION_EXP: BN;
27
- export declare const BANK_IMF_PRECISION: BN;
17
+ export declare const SPOT_MARKET_INTEREST_PRECISION_EXP: BN;
18
+ export declare const SPOT_MARKET_INTEREST_PRECISION: BN;
19
+ export declare const SPOT_MARKET_CUMULATIVE_INTEREST_PRECISION_EXP: BN;
20
+ export declare const SPOT_MARKET_CUMULATIVE_INTEREST_PRECISION: BN;
21
+ export declare const SPOT_MARKET_UTILIZATION_PRECISION: BN;
22
+ export declare const SPOT_MARKET_RATE_PRECISION: BN;
23
+ export declare const SPOT_MARKET_WEIGHT_PRECISION: BN;
24
+ export declare const SPOT_MARKET_BALANCE_PRECISION_EXP: BN;
25
+ export declare const SPOT_MARKET_BALANCE_PRECISION: BN;
26
+ export declare const SPOT_MARKET_IMF_PRECISION_EXP: BN;
27
+ export declare const SPOT_MARKET_IMF_PRECISION: BN;
28
28
  export declare const LIQUIDATION_FEE_PRECISION: BN;
29
29
  export declare const QUOTE_PRECISION: BN;
30
30
  export declare const MARK_PRICE_PRECISION: BN;
@@ -40,6 +40,6 @@ export declare const AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO: BN;
40
40
  export declare const MARGIN_PRECISION: BN;
41
41
  export declare const BID_ASK_SPREAD_PRECISION: BN;
42
42
  export declare const ONE_YEAR: BN;
43
- export declare const QUOTE_ASSET_BANK_INDEX: BN;
43
+ export declare const QUOTE_SPOT_MARKET_INDEX: BN;
44
44
  export declare const LAMPORTS_PRECISION: BN;
45
45
  export declare const LAMPORTS_EXP: BN;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LAMPORTS_EXP = exports.LAMPORTS_PRECISION = 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_IMF_PRECISION = exports.BANK_IMF_PRECISION_EXP = 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_CUMULATIVE_INTEREST_PRECISION_EXP = exports.BANK_INTEREST_PRECISION = exports.BANK_INTEREST_PRECISION_EXP = 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.LAMPORTS_EXP = exports.LAMPORTS_PRECISION = exports.QUOTE_SPOT_MARKET_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.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_RATE_PRECISION = exports.SPOT_MARKET_UTILIZATION_PRECISION = exports.SPOT_MARKET_CUMULATIVE_INTEREST_PRECISION = exports.SPOT_MARKET_CUMULATIVE_INTEREST_PRECISION_EXP = exports.SPOT_MARKET_INTEREST_PRECISION = exports.SPOT_MARKET_INTEREST_PRECISION_EXP = 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;
4
4
  const web3_js_1 = require("@solana/web3.js");
5
5
  const __1 = require("../");
6
6
  exports.ZERO = new __1.BN(0);
@@ -17,17 +17,17 @@ exports.MARK_PRICE_PRECISION_EXP = new __1.BN(10);
17
17
  exports.FUNDING_RATE_PRECISION_EXP = exports.MARK_PRICE_PRECISION_EXP.mul(exports.FUNDING_PAYMENT_PRECISION_EXP);
18
18
  exports.PEG_PRECISION_EXP = new __1.BN(3);
19
19
  exports.AMM_RESERVE_PRECISION_EXP = new __1.BN(13);
20
- exports.BANK_INTEREST_PRECISION_EXP = new __1.BN(6);
21
- exports.BANK_INTEREST_PRECISION = new __1.BN(10).pow(exports.BANK_INTEREST_PRECISION_EXP);
22
- exports.BANK_CUMULATIVE_INTEREST_PRECISION_EXP = new __1.BN(10);
23
- exports.BANK_CUMULATIVE_INTEREST_PRECISION = new __1.BN(10).pow(exports.BANK_CUMULATIVE_INTEREST_PRECISION_EXP);
24
- exports.BANK_UTILIZATION_PRECISION = new __1.BN(1000000);
25
- exports.BANK_RATE_PRECISION = new __1.BN(1000000);
26
- exports.BANK_WEIGHT_PRECISION = new __1.BN(100);
27
- exports.BANK_BALANCE_PRECISION_EXP = new __1.BN(6);
28
- exports.BANK_BALANCE_PRECISION = new __1.BN(10).pow(exports.BANK_BALANCE_PRECISION_EXP);
29
- exports.BANK_IMF_PRECISION_EXP = new __1.BN(6);
30
- exports.BANK_IMF_PRECISION = new __1.BN(10).pow(exports.BANK_IMF_PRECISION_EXP);
20
+ exports.SPOT_MARKET_INTEREST_PRECISION_EXP = new __1.BN(6);
21
+ exports.SPOT_MARKET_INTEREST_PRECISION = new __1.BN(10).pow(exports.SPOT_MARKET_INTEREST_PRECISION_EXP);
22
+ exports.SPOT_MARKET_CUMULATIVE_INTEREST_PRECISION_EXP = new __1.BN(10);
23
+ exports.SPOT_MARKET_CUMULATIVE_INTEREST_PRECISION = new __1.BN(10).pow(exports.SPOT_MARKET_CUMULATIVE_INTEREST_PRECISION_EXP);
24
+ exports.SPOT_MARKET_UTILIZATION_PRECISION = new __1.BN(1000000);
25
+ exports.SPOT_MARKET_RATE_PRECISION = new __1.BN(1000000);
26
+ exports.SPOT_MARKET_WEIGHT_PRECISION = new __1.BN(10000);
27
+ exports.SPOT_MARKET_BALANCE_PRECISION_EXP = new __1.BN(6);
28
+ exports.SPOT_MARKET_BALANCE_PRECISION = new __1.BN(10).pow(exports.SPOT_MARKET_BALANCE_PRECISION_EXP);
29
+ exports.SPOT_MARKET_IMF_PRECISION_EXP = new __1.BN(6);
30
+ exports.SPOT_MARKET_IMF_PRECISION = new __1.BN(10).pow(exports.SPOT_MARKET_IMF_PRECISION_EXP);
31
31
  exports.LIQUIDATION_FEE_PRECISION = new __1.BN(1000000);
32
32
  exports.QUOTE_PRECISION = new __1.BN(10).pow(exports.QUOTE_PRECISION_EXP);
33
33
  exports.MARK_PRICE_PRECISION = new __1.BN(10).pow(exports.MARK_PRICE_PRECISION_EXP);
@@ -43,6 +43,6 @@ exports.AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO = exports.AMM_RESERVE_PRECISION.m
43
43
  exports.MARGIN_PRECISION = exports.TEN_THOUSAND;
44
44
  exports.BID_ASK_SPREAD_PRECISION = new __1.BN(1000000);
45
45
  exports.ONE_YEAR = new __1.BN(31536000);
46
- exports.QUOTE_ASSET_BANK_INDEX = new __1.BN(0);
46
+ exports.QUOTE_SPOT_MARKET_INDEX = new __1.BN(0);
47
47
  exports.LAMPORTS_PRECISION = new __1.BN(web3_js_1.LAMPORTS_PER_SOL);
48
48
  exports.LAMPORTS_EXP = new __1.BN(Math.log10(web3_js_1.LAMPORTS_PER_SOL));
@@ -2,7 +2,7 @@
2
2
  import { BN, OracleSource } from '../';
3
3
  import { DriftEnv } from '../';
4
4
  import { PublicKey } from '@solana/web3.js';
5
- export declare type MarketConfig = {
5
+ export declare type PerpMarketConfig = {
6
6
  fullName?: string;
7
7
  category?: string[];
8
8
  symbol: string;
@@ -12,8 +12,8 @@ export declare type MarketConfig = {
12
12
  oracle: PublicKey;
13
13
  oracleSource: OracleSource;
14
14
  };
15
- export declare const DevnetMarkets: MarketConfig[];
16
- export declare const MainnetMarkets: MarketConfig[];
17
- export declare const Markets: {
18
- [key in DriftEnv]: MarketConfig[];
15
+ export declare const DevnetPerpMarkets: PerpMarketConfig[];
16
+ export declare const MainnetMarkets: PerpMarketConfig[];
17
+ export declare const PerpMarkets: {
18
+ [key in DriftEnv]: PerpMarketConfig[];
19
19
  };
@@ -1,9 +1,9 @@
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.MainnetMarkets = 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'],
@@ -36,7 +36,7 @@ exports.DevnetMarkets = [
36
36
  },
37
37
  ];
38
38
  exports.MainnetMarkets = [];
39
- exports.Markets = {
40
- devnet: exports.DevnetMarkets,
39
+ exports.PerpMarkets = {
40
+ devnet: exports.DevnetPerpMarkets,
41
41
  'mainnet-beta': [],
42
42
  };
@@ -1,9 +1,9 @@
1
1
  /// <reference types="bn.js" />
2
2
  import { PublicKey } from '@solana/web3.js';
3
3
  import { BN, DriftEnv, OracleSource } from '../';
4
- export declare type BankConfig = {
4
+ export declare type SpotMarketConfig = {
5
5
  symbol: string;
6
- bankIndex: BN;
6
+ marketIndex: BN;
7
7
  oracle: PublicKey;
8
8
  mint: PublicKey;
9
9
  oracleSource: OracleSource;
@@ -11,8 +11,8 @@ export declare type BankConfig = {
11
11
  precisionExp: BN;
12
12
  };
13
13
  export declare const WRAPPED_SOL_MINT: PublicKey;
14
- export declare const DevnetBanks: BankConfig[];
15
- export declare const MainnetBanks: BankConfig[];
16
- export declare const Banks: {
17
- [key in DriftEnv]: BankConfig[];
14
+ export declare const DevnetSpotMarkets: SpotMarketConfig[];
15
+ export declare const MainnetSpotMarkets: SpotMarketConfig[];
16
+ export declare const SpotMarkets: {
17
+ [key in DriftEnv]: SpotMarketConfig[];
18
18
  };
@@ -1,23 +1,23 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Banks = exports.MainnetBanks = exports.DevnetBanks = exports.WRAPPED_SOL_MINT = void 0;
3
+ exports.SpotMarkets = exports.MainnetSpotMarkets = exports.DevnetSpotMarkets = exports.WRAPPED_SOL_MINT = void 0;
4
4
  const web3_js_1 = require("@solana/web3.js");
5
5
  const __1 = require("../");
6
6
  const numericConstants_1 = require("./numericConstants");
7
7
  exports.WRAPPED_SOL_MINT = new web3_js_1.PublicKey('So11111111111111111111111111111111111111112');
8
- exports.DevnetBanks = [
8
+ exports.DevnetSpotMarkets = [
9
9
  {
10
10
  symbol: 'USDC',
11
- bankIndex: new __1.BN(0),
11
+ marketIndex: new __1.BN(0),
12
12
  oracle: web3_js_1.PublicKey.default,
13
13
  oracleSource: __1.OracleSource.QUOTE_ASSET,
14
14
  mint: new web3_js_1.PublicKey('8zGuJQqwhZafTah7Uc7Z4tXRnguqkn5KLFAP8oV6PHe2'),
15
- precision: numericConstants_1.BANK_BALANCE_PRECISION,
16
- precisionExp: numericConstants_1.BANK_BALANCE_PRECISION_EXP,
15
+ precision: numericConstants_1.SPOT_MARKET_BALANCE_PRECISION,
16
+ precisionExp: numericConstants_1.SPOT_MARKET_BALANCE_PRECISION_EXP,
17
17
  },
18
18
  {
19
19
  symbol: 'SOL',
20
- bankIndex: new __1.BN(1),
20
+ marketIndex: new __1.BN(1),
21
21
  oracle: new web3_js_1.PublicKey('J83w4HKfqxwcq3BEMMkPFSppX3gqekLyLJBexebFVkix'),
22
22
  oracleSource: __1.OracleSource.PYTH,
23
23
  mint: new web3_js_1.PublicKey(exports.WRAPPED_SOL_MINT),
@@ -26,26 +26,26 @@ exports.DevnetBanks = [
26
26
  },
27
27
  {
28
28
  symbol: 'BTC',
29
- bankIndex: new __1.BN(2),
29
+ marketIndex: new __1.BN(2),
30
30
  oracle: new web3_js_1.PublicKey('HovQMDrbAgAYPCmHVSrezcSmkMtXSSUsLDFANExrZh2J'),
31
31
  oracleSource: __1.OracleSource.PYTH,
32
32
  mint: new web3_js_1.PublicKey('3BZPwbcqB5kKScF3TEXxwNfx5ipV13kbRVDvfVp5c6fv'),
33
- precision: numericConstants_1.BANK_BALANCE_PRECISION,
34
- precisionExp: numericConstants_1.BANK_BALANCE_PRECISION_EXP,
33
+ precision: numericConstants_1.SPOT_MARKET_BALANCE_PRECISION,
34
+ precisionExp: numericConstants_1.SPOT_MARKET_BALANCE_PRECISION_EXP,
35
35
  },
36
36
  ];
37
- exports.MainnetBanks = [
37
+ exports.MainnetSpotMarkets = [
38
38
  {
39
39
  symbol: 'USDC',
40
- bankIndex: new __1.BN(0),
40
+ marketIndex: new __1.BN(0),
41
41
  oracle: web3_js_1.PublicKey.default,
42
42
  oracleSource: __1.OracleSource.QUOTE_ASSET,
43
43
  mint: new web3_js_1.PublicKey('EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'),
44
- precision: numericConstants_1.BANK_BALANCE_PRECISION,
45
- precisionExp: numericConstants_1.BANK_BALANCE_PRECISION_EXP,
44
+ precision: numericConstants_1.SPOT_MARKET_BALANCE_PRECISION,
45
+ precisionExp: numericConstants_1.SPOT_MARKET_BALANCE_PRECISION_EXP,
46
46
  },
47
47
  ];
48
- exports.Banks = {
49
- devnet: exports.DevnetBanks,
50
- 'mainnet-beta': exports.MainnetBanks,
48
+ exports.SpotMarkets = {
49
+ devnet: exports.DevnetSpotMarkets,
50
+ 'mainnet-beta': exports.MainnetSpotMarkets,
51
51
  };
@@ -0,0 +1,73 @@
1
+ /// <reference types="bn.js" />
2
+ import { NodeList } from './NodeList';
3
+ import { MarketType, BN, ClearingHouse, Order, SpotMarketAccount, PerpMarketAccount, OraclePriceData, SlotSubscriber, UserMap, MarketTypeStr } 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';
33
+ export declare class DLOB {
34
+ openOrders: Map<MarketTypeStr, Set<string>>;
35
+ orderLists: Map<MarketTypeStr, Map<number, MarketNodeLists>>;
36
+ marketIndexToAccount: Map<MarketTypeStr, Map<number, PerpMarketAccount | SpotMarketAccount>>;
37
+ silent: boolean;
38
+ initialized: boolean;
39
+ /**
40
+ *
41
+ * @param perpMarkets The perp markets to maintain a DLOB for
42
+ * @param spotMarkets The spot markets to maintain a DLOB for
43
+ * @param silent set to true to prevent logging on inserts and removals
44
+ */
45
+ constructor(perpMarkets: PerpMarketAccount[], spotMarkets: SpotMarketAccount[], silent?: boolean);
46
+ /**
47
+ * initializes a new DLOB instance
48
+ *
49
+ * @param clearingHouse The ClearingHouse instance to use for price data
50
+ * @returns a promise that resolves when the DLOB is initialized
51
+ */
52
+ init(clearingHouse: ClearingHouse, userMap?: UserMap): Promise<boolean>;
53
+ insertOrder(order: Order, userAccount: PublicKey, onInsert?: OrderBookCallback): void;
54
+ trigger(order: Order, userAccount: PublicKey, onTrigger?: OrderBookCallback): void;
55
+ getListForOrder(order: Order): NodeList<any>;
56
+ findNodesToFill(marketIndex: BN, vBid: BN | undefined, vAsk: BN | undefined, slot: number, marketType: MarketType, oraclePriceData: OraclePriceData): NodeToFill[];
57
+ findCrossingNodesToFill(marketIndex: BN, vBid: BN | undefined, vAsk: BN | undefined, slot: number, marketType: MarketType, oraclePriceData: OraclePriceData): NodeToFill[];
58
+ findMarketNodesToFill(marketIndex: BN, slot: number, marketType: MarketType): NodeToFill[];
59
+ findJitAuctionNodesToFill(marketIndex: BN, slot: number, marketType: MarketType): NodeToFill[];
60
+ getMarketBids(marketIndex: BN, marketType: MarketType): Generator<DLOBNode>;
61
+ getMarketAsks(marketIndex: BN, marketType: MarketType): Generator<DLOBNode>;
62
+ getAsks(marketIndex: BN, vAsk: BN | undefined, slot: number, marketType: MarketType, oraclePriceData: OraclePriceData): Generator<DLOBNode>;
63
+ getBids(marketIndex: BN, vBid: BN | undefined, slot: number, marketType: MarketType, oraclePriceData: OraclePriceData): Generator<DLOBNode>;
64
+ findCrossingOrders(askNode: DLOBNode, bidNode: DLOBNode, oraclePriceData: OraclePriceData, slot: number): {
65
+ crossingNodes?: NodeToFill;
66
+ exhaustedSide?: Side;
67
+ };
68
+ getBestAsk(marketIndex: BN, vAsk: BN | undefined, slot: number, marketType: MarketType, oraclePriceData: OraclePriceData): BN;
69
+ getBestBid(marketIndex: BN, vBid: BN | undefined, slot: number, marketType: MarketType, oraclePriceData: OraclePriceData): BN;
70
+ findNodesToTrigger(marketIndex: BN, slot: number, oraclePrice: BN, marketType: MarketType): NodeToTrigger[];
71
+ printTopOfOrderLists(sdkConfig: any, clearingHouse: ClearingHouse, slotSubscriber: SlotSubscriber, marketIndex: BN, marketType: MarketType): void;
72
+ }
73
+ export {};