@drift-labs/sdk 0.1.29 → 0.1.30-master.2

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 (85) hide show
  1. package/lib/accounts/bulkAccountLoader.d.ts +2 -1
  2. package/lib/accounts/bulkAccountLoader.js +44 -32
  3. package/lib/accounts/pollingClearingHouseAccountSubscriber.d.ts +15 -0
  4. package/lib/accounts/pollingClearingHouseAccountSubscriber.js +50 -23
  5. package/lib/clearingHouse.d.ts +0 -1
  6. package/lib/clearingHouse.js +0 -14
  7. package/lib/constants/accounts.d.ts +15 -0
  8. package/lib/constants/accounts.js +18 -0
  9. package/lib/factory/clearingHouse.d.ts +14 -4
  10. package/lib/factory/clearingHouse.js +23 -6
  11. package/lib/idl/clearing_house.json +2 -33
  12. package/lib/index.d.ts +0 -1
  13. package/lib/index.js +0 -1
  14. package/lib/math/amm.d.ts +20 -0
  15. package/lib/math/amm.js +151 -1
  16. package/lib/tx/retryTxSender.d.ts +5 -2
  17. package/lib/tx/retryTxSender.js +14 -1
  18. package/lib/util/promiseTimeout.d.ts +1 -0
  19. package/lib/util/promiseTimeout.js +14 -0
  20. package/package.json +1 -1
  21. package/src/accounts/bulkAccountLoader.ts +51 -40
  22. package/src/accounts/pollingClearingHouseAccountSubscriber.ts +73 -30
  23. package/src/clearingHouse.ts +0 -13
  24. package/src/constants/accounts.ts +26 -0
  25. package/src/factory/clearingHouse.ts +47 -7
  26. package/src/idl/clearing_house.json +2 -33
  27. package/src/index.ts +0 -1
  28. package/src/math/amm.ts +212 -1
  29. package/src/tx/retryTxSender.ts +19 -1
  30. package/src/util/promiseTimeout.ts +14 -0
  31. package/lib/math/repeg.d.ts +0 -32
  32. package/lib/math/repeg.js +0 -178
  33. package/src/accounts/pollingClearingHouseAccountSubscriber.js +0 -210
  34. package/src/accounts/pollingClearingHouseAccountSubscriber.js.map +0 -1
  35. package/src/accounts/pollingOracleSubscriber.js +0 -65
  36. package/src/accounts/pollingOracleSubscriber.js.map +0 -1
  37. package/src/accounts/pollingTokenAccountSubscriber.js +0 -65
  38. package/src/accounts/pollingTokenAccountSubscriber.js.map +0 -1
  39. package/src/accounts/utils.js +0 -8
  40. package/src/accounts/utils.js.map +0 -1
  41. package/src/accounts/webSocketAccountSubscriber.js +0 -64
  42. package/src/accounts/webSocketAccountSubscriber.js.map +0 -1
  43. package/src/accounts/webSocketClearingHouseAccountSubscriber.js +0 -212
  44. package/src/accounts/webSocketClearingHouseAccountSubscriber.js.map +0 -1
  45. package/src/assert/assert.js +0 -10
  46. package/src/assert/assert.js.map +0 -1
  47. package/src/constants/markets.js +0 -167
  48. package/src/constants/markets.js.map +0 -1
  49. package/src/constants/numericConstants.js +0 -22
  50. package/src/constants/numericConstants.js.map +0 -1
  51. package/src/math/conversion.js +0 -16
  52. package/src/math/conversion.js.map +0 -1
  53. package/src/math/funding.js +0 -223
  54. package/src/math/funding.js.map +0 -1
  55. package/src/math/insuranceFund.js +0 -23
  56. package/src/math/insuranceFund.js.map +0 -1
  57. package/src/math/market.js +0 -30
  58. package/src/math/market.js.map +0 -1
  59. package/src/math/orders.js +0 -73
  60. package/src/math/orders.js.map +0 -1
  61. package/src/math/position.js +0 -121
  62. package/src/math/position.js.map +0 -1
  63. package/src/math/repeg.ts +0 -253
  64. package/src/math/trade.js +0 -182
  65. package/src/math/trade.js.map +0 -1
  66. package/src/math/utils.js +0 -27
  67. package/src/math/utils.js.map +0 -1
  68. package/src/oracles/switchboardClient.js +0 -60
  69. package/src/oracles/switchboardClient.js.map +0 -1
  70. package/src/oracles/types.js +0 -3
  71. package/src/oracles/types.js.map +0 -1
  72. package/src/token/index.js +0 -39
  73. package/src/token/index.js.map +0 -1
  74. package/src/tx/defaultTxSender.js +0 -13
  75. package/src/tx/defaultTxSender.js.map +0 -1
  76. package/src/tx/retryTxSender.js +0 -137
  77. package/src/tx/retryTxSender.js.map +0 -1
  78. package/src/tx/types.js +0 -3
  79. package/src/tx/types.js.map +0 -1
  80. package/src/tx/utils.js +0 -9
  81. package/src/tx/utils.js.map +0 -1
  82. package/src/util/computeUnits.js +0 -17
  83. package/src/util/computeUnits.js.map +0 -1
  84. package/src/util/tps.js +0 -17
  85. package/src/util/tps.js.map +0 -1
@@ -0,0 +1,14 @@
1
+ export function promiseTimeout<T>(
2
+ promise: Promise<T>,
3
+ timeoutMs: number
4
+ ): Promise<T | null> {
5
+ let timeoutId: ReturnType<typeof setTimeout>;
6
+ const timeoutPromise: Promise<null> = new Promise((resolve) => {
7
+ timeoutId = setTimeout(() => resolve(null), timeoutMs);
8
+ });
9
+
10
+ return Promise.race([promise, timeoutPromise]).then((result: T | null) => {
11
+ clearTimeout(timeoutId);
12
+ return result;
13
+ });
14
+ }
@@ -1,32 +0,0 @@
1
- /// <reference types="bn.js" />
2
- import { BN } from '@project-serum/anchor';
3
- import { Market } from '../types';
4
- /**
5
- * Helper function calculating adjust k cost
6
- * @param market
7
- * @param marketIndex
8
- * @param numerator
9
- * @param denomenator
10
- * @returns cost : Precision QUOTE_ASSET_PRECISION
11
- */
12
- export declare function calculateAdjustKCost(market: Market, marketIndex: BN, numerator: BN, denomenator: BN): BN;
13
- /**
14
- * Helper function calculating adjust pegMultiplier (repeg) cost
15
- *
16
- * @param market
17
- * @param marketIndex
18
- * @param newPeg
19
- * @returns cost : Precision QUOTE_ASSET_PRECISION
20
- */
21
- export declare function calculateRepegCost(market: Market, marketIndex: BN, newPeg: BN): BN;
22
- /**
23
- * Helper function calculating adjust pegMultiplier (repeg) cost
24
- *
25
- * @param market
26
- * @param marketIndex
27
- * @param newPeg
28
- * @returns cost : Precision QUOTE_ASSET_PRECISION
29
- */
30
- export declare function calculateReserveRebalanceCost(market: Market, marketIndex: BN): BN;
31
- export declare function calculateBudgetedK(market: Market, cost: BN): [BN, BN];
32
- export declare function calculateBudgetedPeg(market: Market, cost: BN): BN;
package/lib/math/repeg.js DELETED
@@ -1,178 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.calculateBudgetedPeg = exports.calculateBudgetedK = exports.calculateReserveRebalanceCost = exports.calculateRepegCost = exports.calculateAdjustKCost = void 0;
4
- const anchor_1 = require("@project-serum/anchor");
5
- const numericConstants_1 = require("../constants/numericConstants");
6
- const position_1 = require("./position");
7
- const amm_1 = require("./amm");
8
- const __1 = require("..");
9
- /**
10
- * Helper function calculating adjust k cost
11
- * @param market
12
- * @param marketIndex
13
- * @param numerator
14
- * @param denomenator
15
- * @returns cost : Precision QUOTE_ASSET_PRECISION
16
- */
17
- function calculateAdjustKCost(market, marketIndex, numerator, denomenator) {
18
- const netUserPosition = {
19
- baseAssetAmount: market.baseAssetAmount,
20
- lastCumulativeFundingRate: market.amm.cumulativeFundingRate,
21
- marketIndex: new anchor_1.BN(marketIndex),
22
- quoteAssetAmount: numericConstants_1.ZERO,
23
- openOrders: numericConstants_1.ZERO,
24
- };
25
- const currentValue = (0, position_1.calculateBaseAssetValue)(market, netUserPosition);
26
- const marketNewK = Object.assign({}, market);
27
- marketNewK.amm = Object.assign({}, market.amm);
28
- marketNewK.amm.baseAssetReserve = market.amm.baseAssetReserve
29
- .mul(numerator)
30
- .div(denomenator);
31
- marketNewK.amm.quoteAssetReserve = market.amm.quoteAssetReserve
32
- .mul(numerator)
33
- .div(denomenator);
34
- marketNewK.amm.sqrtK = market.amm.sqrtK.mul(numerator).div(denomenator);
35
- netUserPosition.quoteAssetAmount = currentValue;
36
- const cost = (0, __1.calculatePositionPNL)(marketNewK, netUserPosition);
37
- return cost;
38
- }
39
- exports.calculateAdjustKCost = calculateAdjustKCost;
40
- /**
41
- * Helper function calculating adjust pegMultiplier (repeg) cost
42
- *
43
- * @param market
44
- * @param marketIndex
45
- * @param newPeg
46
- * @returns cost : Precision QUOTE_ASSET_PRECISION
47
- */
48
- function calculateRepegCost(market, marketIndex, newPeg) {
49
- const netUserPosition = {
50
- baseAssetAmount: market.baseAssetAmount,
51
- lastCumulativeFundingRate: market.amm.cumulativeFundingRate,
52
- marketIndex: new anchor_1.BN(marketIndex),
53
- quoteAssetAmount: new anchor_1.BN(0),
54
- openOrders: numericConstants_1.ZERO,
55
- };
56
- const currentValue = (0, position_1.calculateBaseAssetValue)(market, netUserPosition);
57
- netUserPosition.quoteAssetAmount = currentValue;
58
- const prevMarketPrice = (0, __1.calculateMarkPrice)(market);
59
- const marketNewPeg = Object.assign({}, market);
60
- marketNewPeg.amm = Object.assign({}, market.amm);
61
- // const marketNewPeg = JSON.parse(JSON.stringify(market));
62
- marketNewPeg.amm.pegMultiplier = newPeg;
63
- console.log('Price moves from', (0, __1.convertToNumber)(prevMarketPrice), 'to', (0, __1.convertToNumber)((0, __1.calculateMarkPrice)(marketNewPeg)));
64
- const cost = (0, __1.calculatePositionPNL)(marketNewPeg, netUserPosition);
65
- return cost;
66
- }
67
- exports.calculateRepegCost = calculateRepegCost;
68
- /**
69
- * Helper function calculating adjust pegMultiplier (repeg) cost
70
- *
71
- * @param market
72
- * @param marketIndex
73
- * @param newPeg
74
- * @returns cost : Precision QUOTE_ASSET_PRECISION
75
- */
76
- function calculateReserveRebalanceCost(market, marketIndex) {
77
- const netUserPosition = {
78
- baseAssetAmount: market.baseAssetAmount,
79
- lastCumulativeFundingRate: market.amm.cumulativeFundingRate,
80
- marketIndex: new anchor_1.BN(marketIndex),
81
- quoteAssetAmount: new anchor_1.BN(0),
82
- openOrders: numericConstants_1.ZERO,
83
- };
84
- const currentValue = (0, position_1.calculateBaseAssetValue)(market, netUserPosition);
85
- netUserPosition.quoteAssetAmount = currentValue;
86
- const prevMarketPrice = (0, __1.calculateMarkPrice)(market);
87
- const marketNewPeg = Object.assign({}, market);
88
- marketNewPeg.amm = Object.assign({}, market.amm);
89
- // const marketNewPeg = JSON.parse(JSON.stringify(market));
90
- const newPeg = (0, amm_1.calculateTerminalPrice)(market)
91
- .mul(numericConstants_1.PEG_PRECISION)
92
- .div(numericConstants_1.MARK_PRICE_PRECISION);
93
- // const newPeg = prevMarketPrice.mul(PEG_PRECISION).div(MARK_PRICE_PRECISION);
94
- const newBaseReserve = market.amm.baseAssetReserve.add(market.baseAssetAmount);
95
- const newQuoteReserve = market.amm.sqrtK
96
- .mul(market.amm.sqrtK)
97
- .div(newBaseReserve);
98
- console.log('current reserves on close, quote:', (0, __1.convertToNumber)(newQuoteReserve, numericConstants_1.AMM_RESERVE_PRECISION), 'base:', (0, __1.convertToNumber)(newBaseReserve, numericConstants_1.AMM_RESERVE_PRECISION));
99
- let newSqrtK;
100
- if (newPeg.lt(market.amm.pegMultiplier)) {
101
- newSqrtK = newBaseReserve;
102
- }
103
- else {
104
- newSqrtK = newQuoteReserve;
105
- }
106
- marketNewPeg.amm.baseAssetReserve = newSqrtK.sub(market.baseAssetAmount); // newSqrtK.sub(market.baseAssetAmount);
107
- marketNewPeg.amm.quoteAssetReserve = newSqrtK
108
- .mul(newSqrtK)
109
- .div(marketNewPeg.amm.baseAssetReserve);
110
- marketNewPeg.amm.sqrtK = newSqrtK;
111
- marketNewPeg.amm.pegMultiplier = newPeg;
112
- console.log('Price moves from', (0, __1.convertToNumber)(prevMarketPrice), 'to', (0, __1.convertToNumber)((0, __1.calculateMarkPrice)(marketNewPeg)));
113
- const cost = (0, __1.calculatePositionPNL)(marketNewPeg, netUserPosition);
114
- return cost;
115
- }
116
- exports.calculateReserveRebalanceCost = calculateReserveRebalanceCost;
117
- function calculateBudgetedK(market, cost) {
118
- // wolframalpha.com
119
- // (1/(x+d) - p/(x*p+d))*y*d*Q = C solve for p
120
- // p = (d(y*d*Q - C(x+d))) / (C*x(x+d) + y*y*d*Q)
121
- // todo: assumes k = x * y
122
- // otherwise use: (y(1-p) + (kp^2/(x*p+d)) - k/(x+d)) * Q = C solve for p
123
- // const k = market.amm.sqrtK.mul(market.amm.sqrtK);
124
- const x = market.amm.baseAssetReserve;
125
- const y = market.amm.quoteAssetReserve;
126
- const d = market.baseAssetAmount;
127
- const Q = market.amm.pegMultiplier;
128
- const C = cost.mul(new anchor_1.BN(-1));
129
- const numer1 = y.mul(d).mul(Q).div(numericConstants_1.AMM_RESERVE_PRECISION).div(numericConstants_1.PEG_PRECISION);
130
- const numer2 = C.mul(x.add(d)).div(numericConstants_1.QUOTE_PRECISION);
131
- const denom1 = C.mul(x)
132
- .mul(x.add(d))
133
- .div(numericConstants_1.AMM_RESERVE_PRECISION)
134
- .div(numericConstants_1.QUOTE_PRECISION);
135
- const denom2 = y
136
- .mul(d)
137
- .mul(d)
138
- .mul(Q)
139
- .div(numericConstants_1.AMM_RESERVE_PRECISION)
140
- .div(numericConstants_1.AMM_RESERVE_PRECISION)
141
- .div(numericConstants_1.PEG_PRECISION);
142
- const numerator = d
143
- .mul(numer1.add(numer2))
144
- .div(numericConstants_1.AMM_RESERVE_PRECISION)
145
- .div(numericConstants_1.AMM_RESERVE_PRECISION)
146
- .div(numericConstants_1.AMM_TO_QUOTE_PRECISION_RATIO);
147
- const denominator = denom1
148
- .add(denom2)
149
- .div(numericConstants_1.AMM_RESERVE_PRECISION)
150
- .div(numericConstants_1.AMM_TO_QUOTE_PRECISION_RATIO);
151
- console.log(numerator, denominator);
152
- // const p = (numerator).div(denominator);
153
- // const formulaCost = (numer21.sub(numer20).sub(numer1)).mul(market.amm.pegMultiplier).div(AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO)
154
- // console.log(convertToNumber(formulaCost, QUOTE_PRECISION))
155
- return [numerator, denominator];
156
- }
157
- exports.calculateBudgetedK = calculateBudgetedK;
158
- function calculateBudgetedPeg(market, cost) {
159
- // wolframalpha.com
160
- // (1/(x+d) - p/(x*p+d))*y*d*Q = C solve for p
161
- // p = (d(y*d*Q - C(x+d))) / (C*x(x+d) + y*y*d*Q)
162
- // todo: assumes k = x * y
163
- // otherwise use: (y(1-p) + (kp^2/(x*p+d)) - k/(x+d)) * Q = C solve for p
164
- const k = market.amm.sqrtK.mul(market.amm.sqrtK);
165
- const x = market.amm.baseAssetReserve;
166
- const y = market.amm.quoteAssetReserve;
167
- const d = market.baseAssetAmount;
168
- const Q = market.amm.pegMultiplier;
169
- const C = cost.mul(new anchor_1.BN(-1));
170
- const deltaQuoteAssetReserves = y.sub(k.div(x.add(d)));
171
- const deltaPegMultiplier = C.mul(numericConstants_1.MARK_PRICE_PRECISION).div(deltaQuoteAssetReserves.div(numericConstants_1.AMM_TO_QUOTE_PRECISION_RATIO));
172
- // .mul(PEG_PRECISION)
173
- // .div(QUOTE_PRECISION);
174
- console.log(Q.toNumber(), 'change by', deltaPegMultiplier.toNumber() / numericConstants_1.MARK_PRICE_PRECISION.toNumber());
175
- const newPeg = Q.sub(deltaPegMultiplier.mul(numericConstants_1.PEG_PRECISION).div(numericConstants_1.MARK_PRICE_PRECISION));
176
- return newPeg;
177
- }
178
- exports.calculateBudgetedPeg = calculateBudgetedPeg;
@@ -1,210 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PollingClearingHouseAccountSubscriber = void 0;
4
- const types_1 = require("./types");
5
- const events_1 = require("events");
6
- const addresses_1 = require("../addresses");
7
- const utils_1 = require("./utils");
8
- class PollingClearingHouseAccountSubscriber {
9
- constructor(program, accountLoader) {
10
- this.accountsToPoll = new Map();
11
- this.optionalExtraSubscriptions = [];
12
- this.type = 'polling';
13
- this.isSubscribing = false;
14
- this.isSubscribed = false;
15
- this.program = program;
16
- this.eventEmitter = new events_1.EventEmitter();
17
- this.accountLoader = accountLoader;
18
- }
19
- async subscribe(optionalSubscriptions) {
20
- if (this.isSubscribed) {
21
- return true;
22
- }
23
- if (this.isSubscribing) {
24
- return await this.subscriptionPromise;
25
- }
26
- this.optionalExtraSubscriptions = optionalSubscriptions;
27
- this.isSubscribing = true;
28
- this.subscriptionPromise = new Promise((res) => {
29
- this.subscriptionPromiseResolver = res;
30
- });
31
- await this.updateAccountsToPoll();
32
- await this.addToAccountLoader();
33
- await this.fetch();
34
- this.eventEmitter.emit('update');
35
- this.isSubscribing = false;
36
- this.isSubscribed = true;
37
- this.subscriptionPromiseResolver(true);
38
- return true;
39
- }
40
- async updateAccountsToPoll() {
41
- var _a, _b, _c, _d, _e, _f, _g;
42
- if (this.accountsToPoll.size > 0) {
43
- return;
44
- }
45
- const statePublicKey = await (0, addresses_1.getClearingHouseStateAccountPublicKey)(this.program.programId);
46
- const state = (await this.program.account.state.fetch(statePublicKey));
47
- this.accountsToPoll.set(statePublicKey.toString(), {
48
- key: 'state',
49
- publicKey: statePublicKey,
50
- eventType: 'stateAccountUpdate',
51
- });
52
- this.accountsToPoll.set(state.markets.toString(), {
53
- key: 'markets',
54
- publicKey: state.markets,
55
- eventType: 'marketsAccountUpdate',
56
- });
57
- this.accountsToPoll.set(state.orderState.toString(), {
58
- key: 'orderState',
59
- publicKey: state.orderState,
60
- eventType: 'orderStateAccountUpdate',
61
- });
62
- if ((_a = this.optionalExtraSubscriptions) === null || _a === void 0 ? void 0 : _a.includes('tradeHistoryAccount')) {
63
- this.accountsToPoll.set(state.tradeHistory.toString(), {
64
- key: 'tradeHistory',
65
- publicKey: state.tradeHistory,
66
- eventType: 'tradeHistoryAccountUpdate',
67
- });
68
- }
69
- if ((_b = this.optionalExtraSubscriptions) === null || _b === void 0 ? void 0 : _b.includes('depositHistoryAccount')) {
70
- this.accountsToPoll.set(state.depositHistory.toString(), {
71
- key: 'depositHistory',
72
- publicKey: state.depositHistory,
73
- eventType: 'depositHistoryAccountUpdate',
74
- });
75
- }
76
- if ((_c = this.optionalExtraSubscriptions) === null || _c === void 0 ? void 0 : _c.includes('fundingPaymentHistoryAccount')) {
77
- this.accountsToPoll.set(state.fundingPaymentHistory.toString(), {
78
- key: 'fundingPaymentHistory',
79
- publicKey: state.fundingPaymentHistory,
80
- eventType: 'fundingPaymentHistoryAccountUpdate',
81
- });
82
- }
83
- if ((_d = this.optionalExtraSubscriptions) === null || _d === void 0 ? void 0 : _d.includes('fundingRateHistoryAccount')) {
84
- this.accountsToPoll.set(state.fundingRateHistory.toString(), {
85
- key: 'fundingRateHistory',
86
- publicKey: state.fundingRateHistory,
87
- eventType: 'fundingRateHistoryAccountUpdate',
88
- });
89
- }
90
- if ((_e = this.optionalExtraSubscriptions) === null || _e === void 0 ? void 0 : _e.includes('curveHistoryAccount')) {
91
- this.accountsToPoll.set(state.extendedCurveHistory.toString(), {
92
- key: 'extendedCurveHistory',
93
- publicKey: state.extendedCurveHistory,
94
- eventType: 'curveHistoryAccountUpdate',
95
- });
96
- }
97
- if ((_f = this.optionalExtraSubscriptions) === null || _f === void 0 ? void 0 : _f.includes('liquidationHistoryAccount')) {
98
- this.accountsToPoll.set(state.liquidationHistory.toString(), {
99
- key: 'liquidationHistory',
100
- publicKey: state.liquidationHistory,
101
- eventType: 'liquidationHistoryAccountUpdate',
102
- });
103
- }
104
- if ((_g = this.optionalExtraSubscriptions) === null || _g === void 0 ? void 0 : _g.includes('orderHistoryAccount')) {
105
- const orderState = (await this.program.account.orderState.fetch(state.orderState));
106
- this.accountsToPoll.set(orderState.orderHistory.toString(), {
107
- key: 'orderHistory',
108
- publicKey: orderState.orderHistory,
109
- eventType: 'orderHistoryAccountUpdate',
110
- });
111
- }
112
- }
113
- async addToAccountLoader() {
114
- for (const [_, accountToPoll] of this.accountsToPoll) {
115
- accountToPoll.callbackId = this.accountLoader.addAccount(accountToPoll.publicKey, (buffer) => {
116
- const account = this.program.account[accountToPoll.key].coder.accounts.decode((0, utils_1.capitalize)(accountToPoll.key), buffer);
117
- this[accountToPoll.key] = account;
118
- // @ts-ignore
119
- this.eventEmitter.emit(accountToPoll.eventType, account);
120
- this.eventEmitter.emit('update');
121
- });
122
- }
123
- this.errorCallbackId = this.accountLoader.addErrorCallbacks((error) => {
124
- this.eventEmitter.emit('error', error);
125
- });
126
- }
127
- async fetch() {
128
- await this.accountLoader.load();
129
- for (const [_, accountToPoll] of this.accountsToPoll) {
130
- const buffer = this.accountLoader.getAccountData(accountToPoll.publicKey);
131
- if (buffer) {
132
- this[accountToPoll.key] = this.program.account[accountToPoll.key].coder.accounts.decode((0, utils_1.capitalize)(accountToPoll.key), buffer);
133
- }
134
- }
135
- }
136
- async unsubscribe() {
137
- if (!this.isSubscribed) {
138
- return;
139
- }
140
- for (const [_, accountToPoll] of this.accountsToPoll) {
141
- this.accountLoader.removeAccount(accountToPoll.publicKey, accountToPoll.callbackId);
142
- }
143
- this.accountLoader.removeErrorCallbacks(this.errorCallbackId);
144
- this.errorCallbackId = undefined;
145
- this.accountsToPoll.clear();
146
- this.isSubscribed = false;
147
- }
148
- assertIsSubscribed() {
149
- if (!this.isSubscribed) {
150
- throw new types_1.NotSubscribedError('You must call `subscribe` before using this function');
151
- }
152
- }
153
- assertOptionalIsSubscribed(optionalSubscription) {
154
- if (!this.isSubscribed) {
155
- throw new types_1.NotSubscribedError('You must call `subscribe` before using this function');
156
- }
157
- if (!this.optionalExtraSubscriptions.includes(optionalSubscription)) {
158
- throw new types_1.NotSubscribedError(`You need to subscribe to the optional Clearing House account "${optionalSubscription}" to use this method`);
159
- }
160
- }
161
- getStateAccount() {
162
- this.assertIsSubscribed();
163
- return this.state;
164
- }
165
- getMarketsAccount() {
166
- this.assertIsSubscribed();
167
- return this.markets;
168
- }
169
- getOrderStateAccount() {
170
- this.assertIsSubscribed();
171
- return this.orderState;
172
- }
173
- getTradeHistoryAccount() {
174
- this.assertIsSubscribed();
175
- this.assertOptionalIsSubscribed('tradeHistoryAccount');
176
- return this.tradeHistory;
177
- }
178
- getDepositHistoryAccount() {
179
- this.assertIsSubscribed();
180
- this.assertOptionalIsSubscribed('depositHistoryAccount');
181
- return this.depositHistory;
182
- }
183
- getFundingPaymentHistoryAccount() {
184
- this.assertIsSubscribed();
185
- this.assertOptionalIsSubscribed('fundingPaymentHistoryAccount');
186
- return this.fundingPaymentHistory;
187
- }
188
- getFundingRateHistoryAccount() {
189
- this.assertIsSubscribed();
190
- this.assertOptionalIsSubscribed('fundingRateHistoryAccount');
191
- return this.fundingRateHistory;
192
- }
193
- getCurveHistoryAccount() {
194
- this.assertIsSubscribed();
195
- this.assertOptionalIsSubscribed('curveHistoryAccount');
196
- return this.extendedCurveHistory;
197
- }
198
- getLiquidationHistoryAccount() {
199
- this.assertIsSubscribed();
200
- this.assertOptionalIsSubscribed('liquidationHistoryAccount');
201
- return this.liquidationHistory;
202
- }
203
- getOrderHistoryAccount() {
204
- this.assertIsSubscribed();
205
- this.assertOptionalIsSubscribed('orderHistoryAccount');
206
- return this.orderHistory;
207
- }
208
- }
209
- exports.PollingClearingHouseAccountSubscriber = PollingClearingHouseAccountSubscriber;
210
- //# sourceMappingURL=pollingClearingHouseAccountSubscriber.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pollingClearingHouseAccountSubscriber.js","sourceRoot":"","sources":["pollingClearingHouseAccountSubscriber.ts"],"names":[],"mappings":"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"}
@@ -1,65 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PollingOracleSubscriber = void 0;
4
- const types_1 = require("./types");
5
- const events_1 = require("events");
6
- class PollingOracleSubscriber {
7
- constructor(publicKey, oracleClient, accountLoader) {
8
- this.isSubscribed = false;
9
- this.publicKey = publicKey;
10
- this.oracleClient = oracleClient;
11
- this.accountLoader = accountLoader;
12
- this.eventEmitter = new events_1.EventEmitter();
13
- }
14
- async subscribe() {
15
- if (this.isSubscribed) {
16
- return true;
17
- }
18
- this.addToAccountLoader();
19
- await this.fetch();
20
- this.eventEmitter.emit('update');
21
- this.isSubscribed = true;
22
- return true;
23
- }
24
- addToAccountLoader() {
25
- if (this.callbackId) {
26
- return;
27
- }
28
- this.callbackId = this.accountLoader.addAccount(this.publicKey, async (buffer) => {
29
- const oraclePriceData = await this.oracleClient.getOraclePriceDataFromBuffer(buffer);
30
- this.oraclePriceData = oraclePriceData;
31
- // @ts-ignore
32
- this.eventEmitter.emit('oracleUpdate', oraclePriceData);
33
- this.eventEmitter.emit('update');
34
- });
35
- this.errorCallbackId = this.accountLoader.addErrorCallbacks((error) => {
36
- this.eventEmitter.emit('error', error);
37
- });
38
- }
39
- async fetch() {
40
- await this.accountLoader.load();
41
- const buffer = this.accountLoader.getAccountData(this.publicKey);
42
- this.oraclePriceData = await this.oracleClient.getOraclePriceDataFromBuffer(buffer);
43
- }
44
- async unsubscribe() {
45
- if (!this.isSubscribed) {
46
- return;
47
- }
48
- this.accountLoader.removeAccount(this.publicKey, this.callbackId);
49
- this.callbackId = undefined;
50
- this.accountLoader.removeErrorCallbacks(this.errorCallbackId);
51
- this.errorCallbackId = undefined;
52
- this.isSubscribed = false;
53
- }
54
- assertIsSubscribed() {
55
- if (!this.isSubscribed) {
56
- throw new types_1.NotSubscribedError('You must call `subscribe` before using this function');
57
- }
58
- }
59
- getOraclePriceData() {
60
- this.assertIsSubscribed();
61
- return this.oraclePriceData;
62
- }
63
- }
64
- exports.PollingOracleSubscriber = PollingOracleSubscriber;
65
- //# sourceMappingURL=pollingOracleSubscriber.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pollingOracleSubscriber.js","sourceRoot":"","sources":["pollingOracleSubscriber.ts"],"names":[],"mappings":";;;AAAA,mCAA6E;AAG7E,mCAAsC;AAKtC,MAAa,uBAAuB;IAanC,YACC,SAAoB,EACpB,YAA0B,EAC1B,aAAgC;QAEhC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,IAAI,qBAAY,EAAE,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,SAAS;QACd,IAAI,IAAI,CAAC,YAAY,EAAE;YACtB,OAAO,IAAI,CAAC;SACZ;QAED,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEjC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,kBAAkB;QACjB,IAAI,IAAI,CAAC,UAAU,EAAE;YACpB,OAAO;SACP;QAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAC9C,IAAI,CAAC,SAAS,EACd,KAAK,EAAE,MAAM,EAAE,EAAE;YAChB,MAAM,eAAe,GACpB,MAAM,IAAI,CAAC,YAAY,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC;YAC9D,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;YACvC,aAAa;YACb,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;YACxD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC,CACD,CAAC;QAEF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACrE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK;QACV,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjE,IAAI,CAAC,eAAe,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,4BAA4B,CAC1E,MAAM,CACN,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW;QAChB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACvB,OAAO;SACP;QAED,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAClE,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAE5B,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC9D,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QAEjC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED,kBAAkB;QACjB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACvB,MAAM,IAAI,0BAAkB,CAC3B,sDAAsD,CACtD,CAAC;SACF;IACF,CAAC;IAEM,kBAAkB;QACxB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC,eAAe,CAAC;IAC7B,CAAC;CACD;AA9FD,0DA8FC"}
@@ -1,65 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PollingTokenAccountSubscriber = void 0;
4
- const types_1 = require("./types");
5
- const events_1 = require("events");
6
- const token_1 = require("../token");
7
- class PollingTokenAccountSubscriber {
8
- constructor(publicKey, accountLoader) {
9
- this.isSubscribed = false;
10
- this.publicKey = publicKey;
11
- this.accountLoader = accountLoader;
12
- this.eventEmitter = new events_1.EventEmitter();
13
- }
14
- async subscribe() {
15
- if (this.isSubscribed) {
16
- return true;
17
- }
18
- this.addToAccountLoader();
19
- await this.fetch();
20
- this.eventEmitter.emit('update');
21
- this.isSubscribed = true;
22
- return true;
23
- }
24
- addToAccountLoader() {
25
- if (this.callbackId) {
26
- return;
27
- }
28
- this.callbackId = this.accountLoader.addAccount(this.publicKey, (buffer) => {
29
- const tokenAccount = (0, token_1.parseTokenAccount)(buffer);
30
- this.tokenAccount = tokenAccount;
31
- // @ts-ignore
32
- this.eventEmitter.emit('tokenAccountUpdate', tokenAccount);
33
- this.eventEmitter.emit('update');
34
- });
35
- this.errorCallbackId = this.accountLoader.addErrorCallbacks((error) => {
36
- this.eventEmitter.emit('error', error);
37
- });
38
- }
39
- async fetch() {
40
- await this.accountLoader.load();
41
- const buffer = this.accountLoader.getAccountData(this.publicKey);
42
- this.tokenAccount = (0, token_1.parseTokenAccount)(buffer);
43
- }
44
- async unsubscribe() {
45
- if (!this.isSubscribed) {
46
- return;
47
- }
48
- this.accountLoader.removeAccount(this.publicKey, this.callbackId);
49
- this.callbackId = undefined;
50
- this.accountLoader.removeErrorCallbacks(this.errorCallbackId);
51
- this.errorCallbackId = undefined;
52
- this.isSubscribed = false;
53
- }
54
- assertIsSubscribed() {
55
- if (!this.isSubscribed) {
56
- throw new types_1.NotSubscribedError('You must call `subscribe` before using this function');
57
- }
58
- }
59
- getTokenAccount() {
60
- this.assertIsSubscribed();
61
- return this.tokenAccount;
62
- }
63
- }
64
- exports.PollingTokenAccountSubscriber = PollingTokenAccountSubscriber;
65
- //# sourceMappingURL=pollingTokenAccountSubscriber.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pollingTokenAccountSubscriber.js","sourceRoot":"","sources":["pollingTokenAccountSubscriber.ts"],"names":[],"mappings":";;;AAAA,mCAIiB;AAGjB,mCAAsC;AAItC,oCAA6C;AAE7C,MAAa,6BAA6B;IAYzC,YAAmB,SAAoB,EAAE,aAAgC;QACxE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,IAAI,qBAAY,EAAE,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,SAAS;QACd,IAAI,IAAI,CAAC,YAAY,EAAE;YACtB,OAAO,IAAI,CAAC;SACZ;QAED,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEjC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,OAAO,IAAI,CAAC;IACb,CAAC;IAED,kBAAkB;QACjB,IAAI,IAAI,CAAC,UAAU,EAAE;YACpB,OAAO;SACP;QAED,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAC9C,IAAI,CAAC,SAAS,EACd,CAAC,MAAM,EAAE,EAAE;YACV,MAAM,YAAY,GAAG,IAAA,yBAAiB,EAAC,MAAM,CAAC,CAAC;YAC/C,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;YACjC,aAAa;YACb,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAC;YAC3D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC,CACD,CAAC;QAEF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;YACrE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK;QACV,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjE,IAAI,CAAC,YAAY,GAAG,IAAA,yBAAiB,EAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,WAAW;QAChB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACvB,OAAO;SACP;QAED,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAClE,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAE5B,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC9D,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QAEjC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED,kBAAkB;QACjB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACvB,MAAM,IAAI,0BAAkB,CAC3B,sDAAsD,CACtD,CAAC;SACF;IACF,CAAC;IAEM,eAAe;QACrB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC,YAAY,CAAC;IAC1B,CAAC;CACD;AArFD,sEAqFC"}
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.capitalize = void 0;
4
- function capitalize(value) {
5
- return value[0].toUpperCase() + value.slice(1);
6
- }
7
- exports.capitalize = capitalize;
8
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["utils.ts"],"names":[],"mappings":";;;AAAA,SAAgB,UAAU,CAAC,KAAa;IACvC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC;AAFD,gCAEC"}