@drift-labs/sdk 0.1.36-master.5 → 0.2.0-master.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 (197) hide show
  1. package/lib/accounts/bulkAccountLoader.d.ts +7 -6
  2. package/lib/accounts/bulkAccountLoader.js +83 -93
  3. package/lib/accounts/bulkUserSubscription.js +13 -57
  4. package/lib/accounts/fetch.d.ts +4 -0
  5. package/lib/accounts/fetch.js +18 -0
  6. package/lib/accounts/pollingClearingHouseAccountSubscriber.d.ts +34 -38
  7. package/lib/accounts/pollingClearingHouseAccountSubscriber.js +224 -224
  8. package/lib/accounts/pollingOracleSubscriber.d.ts +3 -3
  9. package/lib/accounts/pollingOracleSubscriber.js +37 -49
  10. package/lib/accounts/pollingTokenAccountSubscriber.d.ts +3 -3
  11. package/lib/accounts/pollingTokenAccountSubscriber.js +35 -50
  12. package/lib/accounts/pollingUserAccountSubscriber.d.ts +7 -13
  13. package/lib/accounts/pollingUserAccountSubscriber.js +71 -134
  14. package/lib/accounts/types.d.ts +34 -41
  15. package/lib/accounts/webSocketAccountSubscriber.d.ts +6 -4
  16. package/lib/accounts/webSocketAccountSubscriber.js +39 -35
  17. package/lib/accounts/webSocketClearingHouseAccountSubscriber.d.ts +33 -28
  18. package/lib/accounts/webSocketClearingHouseAccountSubscriber.js +153 -185
  19. package/lib/accounts/webSocketUserAccountSubscriber.d.ts +5 -11
  20. package/lib/accounts/webSocketUserAccountSubscriber.js +22 -67
  21. package/lib/addresses/marketAddresses.d.ts +4 -0
  22. package/lib/addresses/marketAddresses.js +15 -0
  23. package/lib/addresses/pda.d.ts +12 -0
  24. package/lib/addresses/pda.js +83 -0
  25. package/lib/admin.d.ts +8 -12
  26. package/lib/admin.js +366 -490
  27. package/lib/clearingHouse.d.ts +84 -103
  28. package/lib/clearingHouse.js +779 -810
  29. package/lib/clearingHouseConfig.d.ts +34 -0
  30. package/lib/clearingHouseConfig.js +2 -0
  31. package/lib/clearingHouseUser.d.ts +19 -18
  32. package/lib/clearingHouseUser.js +157 -115
  33. package/lib/clearingHouseUserConfig.d.ts +14 -0
  34. package/lib/clearingHouseUserConfig.js +2 -0
  35. package/lib/config.d.ts +12 -0
  36. package/lib/config.js +35 -4
  37. package/lib/constants/banks.d.ts +16 -0
  38. package/lib/constants/banks.js +34 -0
  39. package/lib/constants/markets.d.ts +8 -3
  40. package/lib/constants/markets.js +13 -206
  41. package/lib/constants/numericConstants.d.ts +16 -0
  42. package/lib/constants/numericConstants.js +22 -6
  43. package/lib/events/eventList.d.ts +22 -0
  44. package/lib/events/eventList.js +77 -0
  45. package/lib/events/eventSubscriber.d.ts +34 -0
  46. package/lib/events/eventSubscriber.js +126 -0
  47. package/lib/events/fetchLogs.d.ts +13 -0
  48. package/lib/events/fetchLogs.js +39 -0
  49. package/lib/events/pollingLogProvider.d.ts +15 -0
  50. package/lib/events/pollingLogProvider.js +53 -0
  51. package/lib/events/sort.d.ts +2 -0
  52. package/lib/events/sort.js +44 -0
  53. package/lib/events/txEventCache.d.ts +24 -0
  54. package/lib/events/txEventCache.js +71 -0
  55. package/lib/events/types.d.ts +49 -0
  56. package/lib/events/types.js +20 -0
  57. package/lib/events/webSocketLogProvider.d.ts +12 -0
  58. package/lib/events/webSocketLogProvider.js +30 -0
  59. package/lib/examples/makeTradeExample.js +26 -27
  60. package/lib/factory/bigNum.d.ts +112 -0
  61. package/lib/factory/bigNum.js +356 -0
  62. package/lib/factory/oracleClient.d.ts +1 -2
  63. package/lib/factory/oracleClient.js +6 -2
  64. package/lib/idl/clearing_house.json +1739 -2287
  65. package/lib/index.d.ts +13 -4
  66. package/lib/index.js +13 -4
  67. package/lib/math/amm.d.ts +19 -29
  68. package/lib/math/amm.js +129 -179
  69. package/lib/math/auction.d.ts +5 -0
  70. package/lib/math/auction.js +39 -0
  71. package/lib/math/bankBalance.d.ts +9 -0
  72. package/lib/math/bankBalance.js +75 -0
  73. package/lib/math/conversion.d.ts +0 -1
  74. package/lib/math/conversion.js +1 -5
  75. package/lib/math/funding.d.ts +6 -6
  76. package/lib/math/funding.js +158 -175
  77. package/lib/math/market.d.ts +6 -6
  78. package/lib/math/market.js +10 -9
  79. package/lib/math/oracles.d.ts +3 -0
  80. package/lib/math/oracles.js +26 -0
  81. package/lib/math/orders.d.ts +5 -0
  82. package/lib/math/orders.js +31 -1
  83. package/lib/math/position.d.ts +7 -4
  84. package/lib/math/position.js +27 -9
  85. package/lib/math/repeg.d.ts +22 -0
  86. package/lib/math/repeg.js +128 -0
  87. package/lib/math/trade.d.ts +13 -8
  88. package/lib/math/trade.js +85 -22
  89. package/lib/mockUSDCFaucet.js +87 -116
  90. package/lib/oracles/oracleClientCache.d.ts +8 -0
  91. package/lib/oracles/oracleClientCache.js +19 -0
  92. package/lib/oracles/pythClient.d.ts +3 -5
  93. package/lib/oracles/pythClient.js +12 -30
  94. package/lib/oracles/quoteAssetOracleClient.d.ts +9 -0
  95. package/lib/oracles/quoteAssetOracleClient.js +21 -0
  96. package/lib/oracles/switchboardClient.d.ts +3 -5
  97. package/lib/oracles/switchboardClient.js +29 -47
  98. package/lib/oracles/types.d.ts +7 -1
  99. package/lib/orders.d.ts +6 -6
  100. package/lib/orders.js +10 -9
  101. package/lib/slot/SlotSubscriber.d.ts +12 -0
  102. package/lib/slot/SlotSubscriber.js +23 -0
  103. package/lib/tx/retryTxSender.d.ts +2 -2
  104. package/lib/tx/retryTxSender.js +108 -123
  105. package/lib/tx/types.d.ts +5 -1
  106. package/lib/tx/utils.d.ts +1 -1
  107. package/lib/tx/utils.js +11 -2
  108. package/lib/types.d.ts +105 -98
  109. package/lib/types.js +13 -1
  110. package/lib/userName.d.ts +4 -0
  111. package/lib/userName.js +20 -0
  112. package/lib/util/computeUnits.js +10 -21
  113. package/lib/util/tps.js +11 -22
  114. package/lib/wallet.js +7 -20
  115. package/package.json +10 -3
  116. package/src/accounts/bulkAccountLoader.ts +26 -15
  117. package/src/accounts/bulkUserSubscription.ts +1 -45
  118. package/src/accounts/fetch.ts +33 -0
  119. package/src/accounts/pollingClearingHouseAccountSubscriber.ts +249 -214
  120. package/src/accounts/pollingOracleSubscriber.ts +16 -8
  121. package/src/accounts/pollingTokenAccountSubscriber.ts +11 -8
  122. package/src/accounts/pollingUserAccountSubscriber.ts +21 -86
  123. package/src/accounts/types.ts +41 -70
  124. package/src/accounts/webSocketAccountSubscriber.ts +33 -16
  125. package/src/accounts/webSocketClearingHouseAccountSubscriber.ts +190 -240
  126. package/src/accounts/webSocketUserAccountSubscriber.ts +11 -71
  127. package/src/addresses/marketAddresses.ts +18 -0
  128. package/src/addresses/pda.ts +118 -0
  129. package/src/admin.ts +209 -267
  130. package/src/clearingHouse.ts +921 -829
  131. package/src/clearingHouseConfig.ts +37 -0
  132. package/src/clearingHouseUser.ts +280 -127
  133. package/src/clearingHouseUserConfig.ts +18 -0
  134. package/src/config.ts +54 -1
  135. package/src/constants/banks.ts +43 -0
  136. package/src/constants/markets.ts +16 -207
  137. package/src/constants/numericConstants.ts +33 -5
  138. package/src/events/eventList.ts +94 -0
  139. package/src/events/eventSubscriber.ts +194 -0
  140. package/src/events/fetchLogs.ts +80 -0
  141. package/src/events/pollingLogProvider.ts +79 -0
  142. package/src/events/sort.ts +65 -0
  143. package/src/events/txEventCache.ts +74 -0
  144. package/src/events/types.ts +98 -0
  145. package/src/events/webSocketLogProvider.ts +38 -0
  146. package/src/examples/makeTradeExample.ts +20 -11
  147. package/src/factory/bigNum.ts +507 -0
  148. package/src/factory/oracleClient.ts +7 -4
  149. package/src/idl/clearing_house.json +1739 -2287
  150. package/src/index.ts +13 -4
  151. package/src/math/amm.ts +229 -245
  152. package/src/math/auction.ts +39 -0
  153. package/src/math/bankBalance.ts +112 -0
  154. package/src/math/conversion.ts +1 -11
  155. package/src/math/funding.ts +12 -9
  156. package/src/math/market.ts +37 -30
  157. package/src/math/oracles.ts +36 -0
  158. package/src/math/orders.ts +38 -0
  159. package/src/math/position.ts +48 -13
  160. package/src/math/repeg.ts +175 -0
  161. package/src/math/trade.ts +114 -36
  162. package/src/math/utils.js +27 -0
  163. package/src/math/utils.js.map +1 -0
  164. package/src/oracles/oracleClientCache.ts +20 -0
  165. package/src/oracles/pythClient.ts +5 -11
  166. package/src/oracles/quoteAssetOracleClient.ts +25 -0
  167. package/src/oracles/switchboardClient.ts +16 -24
  168. package/src/oracles/types.ts +8 -1
  169. package/src/orders.ts +35 -20
  170. package/src/slot/SlotSubscriber.ts +32 -0
  171. package/src/tx/retryTxSender.ts +6 -4
  172. package/src/tx/types.ts +6 -1
  173. package/src/tx/utils.ts +22 -3
  174. package/src/types.ts +108 -110
  175. package/src/userName.ts +20 -0
  176. package/src/util/computeUnits.js +17 -0
  177. package/src/util/computeUnits.js.map +1 -0
  178. package/tests/bn/test.ts +255 -0
  179. package/tsconfig.json +12 -12
  180. package/lib/addresses.d.ts +0 -9
  181. package/lib/addresses.js +0 -87
  182. package/lib/constants/accounts.d.ts +0 -15
  183. package/lib/constants/accounts.js +0 -18
  184. package/lib/factory/clearingHouse.d.ts +0 -35
  185. package/lib/factory/clearingHouse.js +0 -81
  186. package/lib/factory/clearingHouseUser.d.ts +0 -19
  187. package/lib/factory/clearingHouseUser.js +0 -34
  188. package/lib/math/insuranceFund.d.ts +0 -15
  189. package/lib/math/insuranceFund.js +0 -33
  190. package/lib/tx/defaultTxSender.d.ts +0 -8
  191. package/lib/tx/defaultTxSender.js +0 -12
  192. package/src/addresses.ts +0 -71
  193. package/src/constants/accounts.ts +0 -26
  194. package/src/factory/clearingHouse.ts +0 -173
  195. package/src/factory/clearingHouseUser.ts +0 -73
  196. package/src/math/insuranceFund.ts +0 -29
  197. package/src/tx/defaultTxSender.ts +0 -24
package/lib/config.js CHANGED
@@ -1,18 +1,24 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.initialize = exports.getConfig = exports.configs = void 0;
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");
4
6
  exports.configs = {
5
7
  devnet: {
6
8
  ENV: 'devnet',
7
9
  PYTH_ORACLE_MAPPING_ADDRESS: 'BmA9Z6FjioHJPpjT39QazZyhDRUdZy2ezwx4GiDdE2u2',
8
- CLEARING_HOUSE_PROGRAM_ID: 'AsW7LnXB9UA1uec9wi9MctYTgTz7YH9snhxd16GsFaGX',
10
+ CLEARING_HOUSE_PROGRAM_ID: 'GCuH76fb1rXc7bjFXNcnNvWSekLgzpsnMbc1Ng4FsGSs',
9
11
  USDC_MINT_ADDRESS: '8zGuJQqwhZafTah7Uc7Z4tXRnguqkn5KLFAP8oV6PHe2',
12
+ MARKETS: markets_1.DevnetMarkets,
13
+ BANKS: banks_1.DevnetBanks,
10
14
  },
11
15
  'mainnet-beta': {
12
16
  ENV: 'mainnet-beta',
13
17
  PYTH_ORACLE_MAPPING_ADDRESS: 'AHtgzX45WTKfkPG53L6WYhGEXwQkN1BVknET3sVsLL8J',
14
18
  CLEARING_HOUSE_PROGRAM_ID: 'dammHkt7jmytvbS3nHTxQNEcP59aE57nxwV21YdqEDN',
15
19
  USDC_MINT_ADDRESS: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
20
+ MARKETS: markets_1.MainnetMarkets,
21
+ BANKS: banks_1.MainnetBanks,
16
22
  },
17
23
  };
18
24
  let currentConfig = exports.configs.devnet;
@@ -29,8 +35,33 @@ const initialize = (props) => {
29
35
  var _a, _b;
30
36
  //@ts-ignore
31
37
  if (props.env === 'master')
32
- return Object.assign(Object.assign({}, exports.configs['devnet']), ((_a = props.overrideEnv) !== null && _a !== void 0 ? _a : {}));
33
- currentConfig = Object.assign(Object.assign({}, exports.configs[props.env]), ((_b = props.overrideEnv) !== null && _b !== void 0 ? _b : {}));
38
+ return { ...exports.configs['devnet'], ...((_a = props.overrideEnv) !== null && _a !== void 0 ? _a : {}) };
39
+ currentConfig = { ...exports.configs[props.env], ...((_b = props.overrideEnv) !== null && _b !== void 0 ? _b : {}) };
34
40
  return currentConfig;
35
41
  };
36
42
  exports.initialize = initialize;
43
+ function getMarketsBanksAndOraclesForSubscription(env) {
44
+ const marketIndexes = [];
45
+ const bankIndexes = [];
46
+ const oracleInfos = new Map();
47
+ for (const market of markets_1.Markets[env]) {
48
+ marketIndexes.push(market.marketIndex);
49
+ oracleInfos.set(market.oracle.toString(), {
50
+ publicKey: market.oracle,
51
+ source: market.oracleSource,
52
+ });
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,
59
+ });
60
+ }
61
+ return {
62
+ marketIndexes,
63
+ bankIndexes,
64
+ oracleInfos: Array.from(oracleInfos.values()),
65
+ };
66
+ }
67
+ exports.getMarketsBanksAndOraclesForSubscription = getMarketsBanksAndOraclesForSubscription;
@@ -0,0 +1,16 @@
1
+ /// <reference types="bn.js" />
2
+ import { BN, OracleSource } from '../';
3
+ import { DriftEnv } from '../';
4
+ import { PublicKey } from '@solana/web3.js';
5
+ export declare type BankConfig = {
6
+ symbol: string;
7
+ bankIndex: BN;
8
+ oracle: PublicKey;
9
+ mint: PublicKey;
10
+ oracleSource: OracleSource;
11
+ };
12
+ export declare const DevnetBanks: BankConfig[];
13
+ export declare const MainnetBanks: BankConfig[];
14
+ export declare const Banks: {
15
+ [key in DriftEnv]: BankConfig[];
16
+ };
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Banks = exports.MainnetBanks = exports.DevnetBanks = void 0;
4
+ const __1 = require("../");
5
+ const web3_js_1 = require("@solana/web3.js");
6
+ exports.DevnetBanks = [
7
+ {
8
+ symbol: 'USDC',
9
+ bankIndex: new __1.BN(0),
10
+ oracle: web3_js_1.PublicKey.default,
11
+ oracleSource: __1.OracleSource.QUOTE_ASSET,
12
+ mint: new web3_js_1.PublicKey('8zGuJQqwhZafTah7Uc7Z4tXRnguqkn5KLFAP8oV6PHe2'),
13
+ },
14
+ {
15
+ symbol: 'BTC',
16
+ bankIndex: new __1.BN(1),
17
+ oracle: new web3_js_1.PublicKey('HovQMDrbAgAYPCmHVSrezcSmkMtXSSUsLDFANExrZh2J'),
18
+ oracleSource: __1.OracleSource.PYTH,
19
+ mint: new web3_js_1.PublicKey('Gh9ZwEmdLJ8DscKNTkTqPbNwLNNBjuSzaG9Vp2KGtKJr'),
20
+ },
21
+ ];
22
+ exports.MainnetBanks = [
23
+ {
24
+ symbol: 'USDC',
25
+ bankIndex: new __1.BN(0),
26
+ oracle: web3_js_1.PublicKey.default,
27
+ oracleSource: __1.OracleSource.QUOTE_ASSET,
28
+ mint: new web3_js_1.PublicKey('EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'),
29
+ },
30
+ ];
31
+ exports.Banks = {
32
+ devnet: exports.DevnetBanks,
33
+ 'mainnet-beta': exports.MainnetBanks,
34
+ };
@@ -1,14 +1,19 @@
1
1
  /// <reference types="bn.js" />
2
2
  import { BN, OracleSource } from '../';
3
+ import { DriftEnv } from '../';
4
+ import { PublicKey } from '@solana/web3.js';
3
5
  export declare type MarketConfig = {
4
6
  fullName?: string;
5
7
  category?: string[];
6
8
  symbol: string;
7
9
  baseAssetSymbol: string;
8
10
  marketIndex: BN;
9
- devnetPublicKey: string;
10
- mainnetPublicKey: string;
11
11
  launchTs: number;
12
+ oracle: PublicKey;
12
13
  oracleSource: OracleSource;
13
14
  };
14
- export declare const Markets: MarketConfig[];
15
+ export declare const DevnetMarkets: MarketConfig[];
16
+ export declare const MainnetMarkets: MarketConfig[];
17
+ export declare const Markets: {
18
+ [key in DriftEnv]: MarketConfig[];
19
+ };
@@ -1,17 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Markets = void 0;
3
+ exports.Markets = exports.MainnetMarkets = exports.DevnetMarkets = void 0;
4
4
  const __1 = require("../");
5
- exports.Markets = [
5
+ const web3_js_1 = require("@solana/web3.js");
6
+ exports.DevnetMarkets = [
6
7
  {
7
8
  fullName: 'Solana',
8
9
  category: ['L1', 'Infra'],
9
10
  symbol: 'SOL-PERP',
10
11
  baseAssetSymbol: 'SOL',
11
12
  marketIndex: new __1.BN(0),
12
- devnetPublicKey: 'J83w4HKfqxwcq3BEMMkPFSppX3gqekLyLJBexebFVkix',
13
- mainnetPublicKey: 'H6ARHf6YXhGYeQfUzQNGk6rDNnLBQKrenN712K4AQJEG',
14
- launchTs: 1635209696886,
13
+ oracle: new web3_js_1.PublicKey('J83w4HKfqxwcq3BEMMkPFSppX3gqekLyLJBexebFVkix'),
14
+ launchTs: 1655751353000,
15
15
  oracleSource: __1.OracleSource.PYTH,
16
16
  },
17
17
  {
@@ -20,9 +20,8 @@ exports.Markets = [
20
20
  symbol: 'BTC-PERP',
21
21
  baseAssetSymbol: 'BTC',
22
22
  marketIndex: new __1.BN(1),
23
- devnetPublicKey: 'HovQMDrbAgAYPCmHVSrezcSmkMtXSSUsLDFANExrZh2J',
24
- mainnetPublicKey: 'GVXRSBjFk6e6J3NbVPXohDJetcTjaeeuykUpbQF8UoMU',
25
- launchTs: 1637691088868,
23
+ oracle: new web3_js_1.PublicKey('HovQMDrbAgAYPCmHVSrezcSmkMtXSSUsLDFANExrZh2J'),
24
+ launchTs: 1655751353000,
26
25
  oracleSource: __1.OracleSource.PYTH,
27
26
  },
28
27
  {
@@ -31,205 +30,13 @@ exports.Markets = [
31
30
  symbol: 'ETH-PERP',
32
31
  baseAssetSymbol: 'ETH',
33
32
  marketIndex: new __1.BN(2),
34
- devnetPublicKey: 'EdVCmQ9FSPcVe5YySXDPCRmc8aDQLKJ9xvYBMZPie1Vw',
35
- mainnetPublicKey: 'JBu1AL4obBcCMqKBBxhpWCNUt136ijcuMZLFvTP7iWdB',
33
+ oracle: new web3_js_1.PublicKey('EdVCmQ9FSPcVe5YySXDPCRmc8aDQLKJ9xvYBMZPie1Vw'),
36
34
  launchTs: 1637691133472,
37
35
  oracleSource: __1.OracleSource.PYTH,
38
36
  },
39
- {
40
- fullName: 'Terra',
41
- category: ['L1', 'Infra'],
42
- symbol: 'LUNA-PERP',
43
- baseAssetSymbol: 'LUNA',
44
- marketIndex: new __1.BN(3),
45
- devnetPublicKey: '8PugCXTAHLM9kfLSQWe2njE5pzAgUdpPk3Nx5zSm7BD3',
46
- mainnetPublicKey: '5bmWuR1dgP4avtGYMNKLuxumZTVKGgoN2BCMXWDNL9nY',
47
- launchTs: 1638821738525,
48
- oracleSource: __1.OracleSource.PYTH,
49
- },
50
- {
51
- symbol: 'AVAX-PERP',
52
- category: ['L1', 'Infra'],
53
- baseAssetSymbol: 'AVAX',
54
- marketIndex: new __1.BN(4),
55
- devnetPublicKey: 'FVb5h1VmHPfVb1RfqZckchq18GxRv4iKt8T4eVTQAqdz',
56
- mainnetPublicKey: 'Ax9ujW5B9oqcv59N8m6f1BpTBq2rGeGaBcpKjC5UYsXU',
57
- launchTs: 1639092501080,
58
- oracleSource: __1.OracleSource.PYTH,
59
- },
60
- {
61
- fullName: 'Binance Coin',
62
- symbol: 'BNB-PERP',
63
- category: ['L1', 'Exchange'],
64
- baseAssetSymbol: 'BNB',
65
- marketIndex: new __1.BN(5),
66
- devnetPublicKey: 'GwzBgrXb4PG59zjce24SF2b9JXbLEjJJTBkmytuEZj1b',
67
- mainnetPublicKey: '4CkQJBxhU8EZ2UjhigbtdaPbpTe6mqf811fipYBFbSYN',
68
- launchTs: 1639523193012,
69
- oracleSource: __1.OracleSource.PYTH,
70
- },
71
- {
72
- fullName: 'Polygon',
73
- category: ['L1', 'Infra'],
74
- symbol: 'MATIC-PERP',
75
- baseAssetSymbol: 'MATIC',
76
- marketIndex: new __1.BN(6),
77
- devnetPublicKey: 'FBirwuDFuRAu4iSGc7RGxN5koHB7EJM1wbCmyPuQoGur',
78
- mainnetPublicKey: '7KVswB9vkCgeM3SHP7aGDijvdRAHK8P5wi9JXViCrtYh',
79
- launchTs: 1641488603564,
80
- oracleSource: __1.OracleSource.PYTH,
81
- },
82
- {
83
- fullName: 'Cosmos',
84
- category: ['L1', 'Infra'],
85
- symbol: 'ATOM-PERP',
86
- baseAssetSymbol: 'ATOM',
87
- marketIndex: new __1.BN(7),
88
- devnetPublicKey: '7YAze8qFUMkBnyLVdKT4TFUUFui99EwS5gfRArMcrvFk',
89
- mainnetPublicKey: 'CrCpTerNqtZvqLcKqz1k13oVeXV9WkMD2zA9hBKXrsbN',
90
- launchTs: 1641920238195,
91
- oracleSource: __1.OracleSource.PYTH,
92
- },
93
- {
94
- fullName: 'Polkadot',
95
- symbol: 'DOT-PERP',
96
- baseAssetSymbol: 'DOT',
97
- marketIndex: new __1.BN(8),
98
- devnetPublicKey: '4dqq5VBpN4EwYb7wyywjjfknvMKu7m78j9mKZRXTj462',
99
- mainnetPublicKey: 'EcV1X1gY2yb4KXxjVQtTHTbioum2gvmPnFk4zYAt7zne',
100
- launchTs: 1642629253786,
101
- oracleSource: __1.OracleSource.PYTH,
102
- },
103
- {
104
- fullName: 'Cardano',
105
- category: ['L1', 'Infra'],
106
- symbol: 'ADA-PERP',
107
- baseAssetSymbol: 'ADA',
108
- marketIndex: new __1.BN(9),
109
- devnetPublicKey: '8oGTURNmSQkrBS1AQ5NjB2p8qY34UVmMA9ojrw8vnHus',
110
- mainnetPublicKey: '3pyn4svBbxJ9Wnn3RVeafyLWfzie6yC5eTig2S62v9SC',
111
- launchTs: 1643084413000,
112
- oracleSource: __1.OracleSource.PYTH,
113
- },
114
- {
115
- fullName: 'Algorand',
116
- category: ['L1', 'Infra'],
117
- symbol: 'ALGO-PERP',
118
- baseAssetSymbol: 'ALGO',
119
- marketIndex: new __1.BN(10),
120
- devnetPublicKey: 'c1A946dY5NHuVda77C8XXtXytyR3wK1SCP3eA9VRfC3',
121
- mainnetPublicKey: 'HqFyq1wh1xKvL7KDqqT7NJeSPdAqsDqnmBisUC2XdXAX',
122
- launchTs: 1643686767000,
123
- oracleSource: __1.OracleSource.PYTH,
124
- },
125
- {
126
- fullName: 'FTX Coin',
127
- category: ['L1', 'Exchange'],
128
- symbol: 'FTT-PERP',
129
- baseAssetSymbol: 'FTT',
130
- marketIndex: new __1.BN(11),
131
- devnetPublicKey: '6vivTRs5ZPeeXbjo7dfburfaYDWoXjBtdtuYgQRuGfu',
132
- mainnetPublicKey: '8JPJJkmDScpcNmBRKGZuPuG2GYAveQgP3t5gFuMymwvF',
133
- launchTs: 1644382122000,
134
- oracleSource: __1.OracleSource.PYTH,
135
- },
136
- {
137
- fullName: 'Litecoin',
138
- category: ['L1', 'Payments'],
139
- symbol: 'LTC-PERP',
140
- baseAssetSymbol: 'LTC',
141
- marketIndex: new __1.BN(12),
142
- devnetPublicKey: 'BLArYBCUYhdWiY8PCUTpvFE21iaJq85dvxLk9bYMobcU',
143
- mainnetPublicKey: '8RMnV1eD55iqUFJLMguPkYBkq8DCtx81XcmAja93LvRR',
144
- launchTs: 1645027429000,
145
- oracleSource: __1.OracleSource.PYTH,
146
- },
147
- {
148
- fullName: 'Ripple',
149
- category: ['L1', 'Payments'],
150
- symbol: 'XRP-PERP',
151
- baseAssetSymbol: 'XRP',
152
- marketIndex: new __1.BN(13),
153
- devnetPublicKey: 'WMW5xc3HypXwTnPesyUT49uLsyHwNURsWAEk39onKuk',
154
- mainnetPublicKey: 'WMW5xc3HypXwTnPesyUT49uLsyHwNURsWAEk39onKuk',
155
- launchTs: 1647543166000,
156
- oracleSource: __1.OracleSource.SWITCHBOARD,
157
- },
158
- {
159
- fullName: 'ApeCoin',
160
- category: ['NFT'],
161
- symbol: 'APE-PERP',
162
- baseAssetSymbol: 'APE',
163
- marketIndex: new __1.BN(14),
164
- devnetPublicKey: 'AwH6kBrJbkL9JTeqRd7Q59EdWh6UjPtoqoA5M4x4K2fA',
165
- mainnetPublicKey: '74zeQpprjNtEghGiC3VEPsR9y4kR2GTd4Rq9YVk9tnjz',
166
- launchTs: 1648475932000,
167
- oracleSource: __1.OracleSource.SWITCHBOARD,
168
- },
169
- {
170
- fullName: 'DogeCoin',
171
- category: ['Meme', 'NFT'],
172
- symbol: 'DOGE-PERP',
173
- baseAssetSymbol: 'DOGE',
174
- marketIndex: new __1.BN(15),
175
- devnetPublicKey: '4L6YhY8VvUgmqG5MvJkUJATtzB2rFqdrJwQCmFLv4Jzy',
176
- mainnetPublicKey: 'FsSM3s38PX9K7Dn6eGzuE29S2Dsk1Sss1baytTQdCaQj',
177
- launchTs: 1648607439000,
178
- oracleSource: __1.OracleSource.PYTH,
179
- },
180
- {
181
- fullName: 'Near',
182
- category: ['L1', 'Infra'],
183
- symbol: 'NEAR-PERP',
184
- baseAssetSymbol: 'NEAR',
185
- marketIndex: new __1.BN(16),
186
- devnetPublicKey: '3gnSbT7bhoTdGkFVZc1dW1PvjreWzpUNUD5ppXwv1N59',
187
- mainnetPublicKey: 'ECSFWQ1bnnpqPVvoy9237t2wddZAaHisW88mYxuEHKWf',
188
- launchTs: 1649105516000,
189
- oracleSource: __1.OracleSource.PYTH,
190
- },
191
- {
192
- fullName: 'Serum',
193
- category: ['Solana', 'Exchange'],
194
- symbol: 'SRM-PERP',
195
- baseAssetSymbol: 'SRM',
196
- marketIndex: new __1.BN(17),
197
- devnetPublicKey: '992moaMQKs32GKZ9dxi8keyM2bUmbrwBZpK4p2K6X5Vs',
198
- mainnetPublicKey: '3NBReDRTLKMQEKiLD5tGcx4kXbTf88b7f2xLS9UuGjym',
199
- launchTs: 1649877367000,
200
- oracleSource: __1.OracleSource.PYTH,
201
- },
202
- {
203
- fullName: 'StepN',
204
- category: ['Solana', 'Shoe'],
205
- symbol: 'GMT-PERP',
206
- baseAssetSymbol: 'GMT',
207
- marketIndex: new __1.BN(18),
208
- devnetPublicKey: '7GBoA2oGXMTepYjFgrdHyYVGcPs4FWskUF7S1dGzQsY9',
209
- mainnetPublicKey: '81kbdwDfTNsg4d5D1BxE9FHEdxEMk8xCJUj5ujjWQyvd',
210
- launchTs: 1650507526000,
211
- oracleSource: __1.OracleSource.SWITCHBOARD,
212
- },
213
- {
214
- fullName: 'Curve DAO Token',
215
- category: ['Exchange'],
216
- symbol: 'CRV-PERP',
217
- baseAssetSymbol: 'CRV',
218
- marketIndex: new __1.BN(19),
219
- devnetPublicKey: 'AuEiE5XG5kD1NFoKgEPrWuN9CdT44A3K7yGDuiUPvh9S',
220
- mainnetPublicKey: '61NzdQ9y6KhMhWxyJ8kXEe25NxdixVL1YUnGYLDMaUxH',
221
- launchTs: 1651017354000,
222
- oracleSource: __1.OracleSource.SWITCHBOARD,
223
- },
224
- {
225
- fullName: 'Fantom',
226
- category: ['L1', 'Infra'],
227
- symbol: 'FTM-PERP',
228
- baseAssetSymbol: 'FTM',
229
- marketIndex: new __1.BN(20),
230
- devnetPublicKey: 'BTwrLU4so1oJMViWA3BTzh8YmFwiLZ6CL4U3JryG7Q5S',
231
- mainnetPublicKey: '7Dn52EY5EGE8Nvvw98KVMGPWTiTGn3PF4y24TVLyXdT9',
232
- launchTs: 1651559653000,
233
- oracleSource: __1.OracleSource.PYTH,
234
- },
235
37
  ];
38
+ exports.MainnetMarkets = [];
39
+ exports.Markets = {
40
+ devnet: exports.DevnetMarkets,
41
+ 'mainnet-beta': [],
42
+ };
@@ -8,14 +8,30 @@ export declare const TEN_THOUSAND: BN;
8
8
  export declare const BN_MAX: BN;
9
9
  export declare const TEN_MILLION: BN;
10
10
  export declare const MAX_LEVERAGE: BN;
11
+ 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;
14
+ export declare const FUNDING_RATE_PRECISION_EXP: BN;
15
+ export declare const PEG_PRECISION_EXP: BN;
16
+ 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;
11
24
  export declare const QUOTE_PRECISION: BN;
12
25
  export declare const MARK_PRICE_PRECISION: BN;
13
26
  export declare const FUNDING_PAYMENT_PRECISION: BN;
14
27
  export declare const PEG_PRECISION: BN;
15
28
  export declare const AMM_RESERVE_PRECISION: BN;
16
29
  export declare const BASE_PRECISION: BN;
30
+ export declare const BASE_PRECISION_EXP: BN;
17
31
  export declare const AMM_TO_QUOTE_PRECISION_RATIO: BN;
18
32
  export declare const PRICE_TO_QUOTE_PRECISION: BN;
19
33
  export declare const AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO: BN;
20
34
  export declare const MARGIN_PRECISION: BN;
21
35
  export declare const BID_ASK_SPREAD_PRECISION: BN;
36
+ export declare const ONE_YEAR: BN;
37
+ export declare const QUOTE_ASSET_BANK_INDEX: BN;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BID_ASK_SPREAD_PRECISION = exports.MARGIN_PRECISION = exports.AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO = exports.PRICE_TO_QUOTE_PRECISION = exports.AMM_TO_QUOTE_PRECISION_RATIO = exports.BASE_PRECISION = exports.AMM_RESERVE_PRECISION = exports.PEG_PRECISION = exports.FUNDING_PAYMENT_PRECISION = exports.MARK_PRICE_PRECISION = exports.QUOTE_PRECISION = exports.MAX_LEVERAGE = exports.TEN_MILLION = exports.BN_MAX = exports.TEN_THOUSAND = exports.TEN = exports.TWO = exports.ONE = exports.ZERO = void 0;
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.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.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;
4
4
  const __1 = require("../");
5
5
  exports.ZERO = new __1.BN(0);
6
6
  exports.ONE = new __1.BN(1);
@@ -10,14 +10,30 @@ exports.TEN_THOUSAND = new __1.BN(10000);
10
10
  exports.BN_MAX = new __1.BN(Number.MAX_SAFE_INTEGER);
11
11
  exports.TEN_MILLION = exports.TEN_THOUSAND.mul(exports.TEN_THOUSAND);
12
12
  exports.MAX_LEVERAGE = new __1.BN(5);
13
- exports.QUOTE_PRECISION = new __1.BN(Math.pow(10, 6));
14
- exports.MARK_PRICE_PRECISION = new __1.BN(Math.pow(10, 10));
15
- exports.FUNDING_PAYMENT_PRECISION = new __1.BN(10000);
16
- exports.PEG_PRECISION = new __1.BN(1000);
17
- exports.AMM_RESERVE_PRECISION = new __1.BN(Math.pow(10, 13));
13
+ 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.QUOTE_PRECISION = new __1.BN(10).pow(exports.QUOTE_PRECISION_EXP);
27
+ exports.MARK_PRICE_PRECISION = new __1.BN(10).pow(exports.MARK_PRICE_PRECISION_EXP);
28
+ exports.FUNDING_PAYMENT_PRECISION = new __1.BN(10).pow(exports.FUNDING_PAYMENT_PRECISION_EXP);
29
+ exports.PEG_PRECISION = new __1.BN(10).pow(exports.PEG_PRECISION_EXP);
30
+ exports.AMM_RESERVE_PRECISION = new __1.BN(10).pow(exports.AMM_RESERVE_PRECISION_EXP);
18
31
  exports.BASE_PRECISION = exports.AMM_RESERVE_PRECISION;
32
+ exports.BASE_PRECISION_EXP = exports.AMM_RESERVE_PRECISION_EXP;
19
33
  exports.AMM_TO_QUOTE_PRECISION_RATIO = exports.AMM_RESERVE_PRECISION.div(exports.QUOTE_PRECISION); // 10^7
20
34
  exports.PRICE_TO_QUOTE_PRECISION = exports.MARK_PRICE_PRECISION.div(exports.QUOTE_PRECISION);
21
35
  exports.AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO = exports.AMM_RESERVE_PRECISION.mul(exports.PEG_PRECISION).div(exports.QUOTE_PRECISION); // 10^10
22
36
  exports.MARGIN_PRECISION = exports.TEN_THOUSAND;
23
37
  exports.BID_ASK_SPREAD_PRECISION = new __1.BN(1000000);
38
+ exports.ONE_YEAR = new __1.BN(31536000);
39
+ exports.QUOTE_ASSET_BANK_INDEX = new __1.BN(0);
@@ -0,0 +1,22 @@
1
+ import { EventType, EventMap, EventSubscriptionOrderDirection, SortFn } from './types';
2
+ declare class Node<Type extends EventType, Event extends EventMap[Type]> {
3
+ event: Event;
4
+ next?: Node<Type, Event>;
5
+ prev?: Node<Type, Event>;
6
+ constructor(event: Event, next?: Node<Type, Event>, prev?: Node<Type, Event>);
7
+ }
8
+ export declare class EventList<Type extends EventType> {
9
+ eventType: Type;
10
+ maxSize: number;
11
+ private sortFn;
12
+ private orderDirection;
13
+ size: number;
14
+ head?: Node<Type, EventMap[Type]>;
15
+ tail?: Node<Type, EventMap[Type]>;
16
+ constructor(eventType: Type, maxSize: number, sortFn: SortFn, orderDirection: EventSubscriptionOrderDirection);
17
+ insert(event: EventMap[Type]): void;
18
+ detach(): void;
19
+ toArray(): EventMap[Type][];
20
+ [Symbol.iterator](): Generator<EventMap[Type], void, unknown>;
21
+ }
22
+ export {};
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EventList = void 0;
4
+ class Node {
5
+ constructor(event, next, prev) {
6
+ this.event = event;
7
+ this.next = next;
8
+ this.prev = prev;
9
+ }
10
+ }
11
+ class EventList {
12
+ constructor(eventType, maxSize, sortFn, orderDirection) {
13
+ this.eventType = eventType;
14
+ this.maxSize = maxSize;
15
+ this.sortFn = sortFn;
16
+ this.orderDirection = orderDirection;
17
+ this.size = 0;
18
+ }
19
+ insert(event) {
20
+ this.size++;
21
+ const newNode = new Node(event);
22
+ if (this.head === undefined) {
23
+ this.head = this.tail = newNode;
24
+ return;
25
+ }
26
+ if (this.sortFn(this.head.event, newNode.event) ===
27
+ (this.orderDirection === 'asc' ? 'less than' : 'greater than')) {
28
+ this.head.prev = newNode;
29
+ newNode.next = this.head;
30
+ this.head = newNode;
31
+ }
32
+ else {
33
+ let currentNode = this.head;
34
+ while (currentNode.next !== undefined &&
35
+ this.sortFn(currentNode.next.event, newNode.event) !==
36
+ (this.orderDirection === 'asc' ? 'less than' : 'greater than')) {
37
+ currentNode = currentNode.next;
38
+ }
39
+ newNode.next = currentNode.next;
40
+ if (currentNode.next !== undefined) {
41
+ newNode.next.prev = newNode;
42
+ }
43
+ currentNode.next = newNode;
44
+ newNode.prev = currentNode;
45
+ }
46
+ if (this.size > this.maxSize) {
47
+ this.detach();
48
+ }
49
+ }
50
+ detach() {
51
+ const node = this.tail;
52
+ if (node.prev !== undefined) {
53
+ node.prev.next = node.next;
54
+ }
55
+ else {
56
+ this.head = node.next;
57
+ }
58
+ if (node.next !== undefined) {
59
+ node.next.prev = node.prev;
60
+ }
61
+ else {
62
+ this.tail = node.prev;
63
+ }
64
+ this.size--;
65
+ }
66
+ toArray() {
67
+ return Array.from(this);
68
+ }
69
+ *[Symbol.iterator]() {
70
+ let node = this.head;
71
+ while (node) {
72
+ yield node.event;
73
+ node = node.next;
74
+ }
75
+ }
76
+ }
77
+ exports.EventList = EventList;
@@ -0,0 +1,34 @@
1
+ /// <reference types="node" />
2
+ import { Connection, TransactionSignature } from '@solana/web3.js';
3
+ import { Program } from '@project-serum/anchor';
4
+ import { EventSubscriptionOptions, EventType, WrappedEvents, EventMap, EventSubscriberEvents } from './types';
5
+ import { EventList } from './eventList';
6
+ import { EventEmitter } from 'events';
7
+ import StrictEventEmitter from 'strict-event-emitter-types';
8
+ export declare class EventSubscriber {
9
+ private connection;
10
+ private program;
11
+ private options;
12
+ private eventListMap;
13
+ private txEventCache;
14
+ private awaitTxPromises;
15
+ private awaitTxResolver;
16
+ private logProvider;
17
+ eventEmitter: StrictEventEmitter<EventEmitter, EventSubscriberEvents>;
18
+ constructor(connection: Connection, program: Program, options?: EventSubscriptionOptions);
19
+ subscribe(): boolean;
20
+ private handleTxLogs;
21
+ private fetchPreviousTx;
22
+ unsubscribe(): Promise<boolean>;
23
+ private parseEventsFromLogs;
24
+ awaitTx(txSig: TransactionSignature): Promise<void>;
25
+ getEventList<Type extends keyof EventMap>(eventType: Type): EventList<Type>;
26
+ /**
27
+ * This requires the EventList be cast to an array, which requires reallocation of memory.
28
+ * Would bias to using getEventList over getEvents
29
+ *
30
+ * @param eventType
31
+ */
32
+ getEventsArray<Type extends EventType>(eventType: Type): EventMap[Type][];
33
+ getEventsByTx(txSig: TransactionSignature): WrappedEvents | undefined;
34
+ }