@drift-labs/sdk 0.1.10 → 0.1.14
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.
- package/lib/accounts/defaultClearingHouseAccountSubscriber.d.ts +1 -0
- package/lib/accounts/defaultClearingHouseAccountSubscriber.d.ts.map +1 -1
- package/lib/accounts/defaultClearingHouseAccountSubscriber.js +17 -0
- package/lib/accounts/defaultUserAccountSubscriber.d.ts +2 -0
- package/lib/accounts/defaultUserAccountSubscriber.d.ts.map +1 -1
- package/lib/accounts/defaultUserAccountSubscriber.js +16 -0
- package/lib/accounts/types.d.ts +3 -21
- package/lib/accounts/types.d.ts.map +1 -1
- package/lib/accounts/webSocketAccountSubscriber.d.ts +2 -0
- package/lib/accounts/webSocketAccountSubscriber.d.ts.map +1 -1
- package/lib/accounts/webSocketAccountSubscriber.js +13 -3
- package/lib/clearingHouse.d.ts +4 -0
- package/lib/clearingHouse.d.ts.map +1 -1
- package/lib/clearingHouse.js +8 -0
- package/lib/clearingHouseUser.d.ts +33 -5
- package/lib/clearingHouseUser.d.ts.map +1 -1
- package/lib/clearingHouseUser.js +224 -78
- package/lib/constants/markets.d.ts.map +1 -1
- package/lib/constants/markets.js +21 -0
- package/lib/constants/numericConstants.d.ts +1 -0
- package/lib/constants/numericConstants.d.ts.map +1 -1
- package/lib/constants/numericConstants.js +2 -1
- package/lib/examples/makeTradeExample.d.ts.map +1 -1
- package/lib/examples/makeTradeExample.js +14 -13
- package/lib/idl/clearing_house.json +94 -42
- package/lib/index.d.ts +3 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -1
- package/lib/math/amm.d.ts +26 -1
- package/lib/math/amm.d.ts.map +1 -1
- package/lib/math/amm.js +85 -10
- package/lib/math/funding.d.ts +6 -6
- package/lib/math/funding.d.ts.map +1 -1
- package/lib/math/funding.js +69 -25
- package/lib/math/insuranceFund.d.ts +15 -0
- package/lib/math/insuranceFund.d.ts.map +1 -0
- package/lib/math/insuranceFund.js +36 -0
- package/lib/math/position.d.ts +7 -1
- package/lib/math/position.d.ts.map +1 -1
- package/lib/math/position.js +32 -24
- package/lib/math/trade.d.ts +1 -1
- package/lib/math/trade.d.ts.map +1 -1
- package/lib/math/trade.js +9 -4
- package/lib/types.d.ts +0 -50
- package/lib/types.d.ts.map +1 -1
- package/lib/util/computeUnits.d.ts +3 -0
- package/lib/util/computeUnits.d.ts.map +1 -0
- package/lib/util/computeUnits.js +27 -0
- package/lib/wallet.d.ts +10 -0
- package/lib/wallet.d.ts.map +1 -0
- package/lib/wallet.js +35 -0
- package/package.json +3 -13
- package/src/accounts/defaultClearingHouseAccountSubscriber.ts +18 -0
- package/src/accounts/defaultUserAccountSubscriber.ts +18 -0
- package/src/accounts/types.ts +3 -28
- package/src/accounts/webSocketAccountSubscriber.ts +16 -6
- package/src/clearingHouse.ts +9 -3
- package/src/clearingHouseUser.ts +325 -107
- package/src/constants/markets.ts +21 -0
- package/src/constants/numericConstants.ts +2 -0
- package/src/examples/makeTradeExample.ts +2 -1
- package/src/idl/clearing_house.json +94 -42
- package/src/index.ts +3 -1
- package/src/math/amm.ts +120 -13
- package/src/math/funding.ts +109 -51
- package/src/math/insuranceFund.ts +29 -0
- package/src/math/position.ts +33 -26
- package/src/math/trade.ts +9 -5
- package/src/types.ts +0 -54
- package/src/util/computeUnits.ts +21 -0
- package/src/wallet.ts +22 -0
- package/.eslintrc.json +0 -36
- package/.prettierignore +0 -1
- package/.prettierrc.js +0 -9
- package/lib/accounts/defaultHistoryAccountSubscriber.d.ts +0 -29
- package/lib/accounts/defaultHistoryAccountSubscriber.d.ts.map +0 -1
- package/lib/accounts/defaultHistoryAccountSubscriber.js +0 -110
- package/src/accounts/defaultHistoryAccountSubscriber.ts +0 -179
package/lib/math/funding.js
CHANGED
|
@@ -20,7 +20,7 @@ const market_1 = require("./market");
|
|
|
20
20
|
* @param periodAdjustment
|
|
21
21
|
* @returns Estimated funding rate. : Precision //TODO-PRECISION
|
|
22
22
|
*/
|
|
23
|
-
function calculateAllEstimatedFundingRate(market,
|
|
23
|
+
function calculateAllEstimatedFundingRate(market, oraclePriceData, periodAdjustment = new anchor_1.BN(1)) {
|
|
24
24
|
return __awaiter(this, void 0, void 0, function* () {
|
|
25
25
|
// periodAdjustment
|
|
26
26
|
// 1: hourly
|
|
@@ -51,12 +51,33 @@ function calculateAllEstimatedFundingRate(market, pythClient, periodAdjustment =
|
|
|
51
51
|
const lastOraclePriceTwapTs = market.amm.lastOraclePriceTwapTs;
|
|
52
52
|
const timeSinceLastOracleTwapUpdate = now.sub(lastOraclePriceTwapTs);
|
|
53
53
|
const oracleTwapTimeSinceLastUpdate = anchor_1.BN.max(secondsInHour, secondsInHour.sub(timeSinceLastOracleTwapUpdate));
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
.
|
|
59
|
-
|
|
54
|
+
// verify pyth input is positive for live update
|
|
55
|
+
let oracleStablePriceNum = 0;
|
|
56
|
+
let oracleInputCount = 0;
|
|
57
|
+
if (oraclePriceData.price >= 0) {
|
|
58
|
+
oracleStablePriceNum += oraclePriceData.price;
|
|
59
|
+
oracleInputCount += 1;
|
|
60
|
+
}
|
|
61
|
+
if (oraclePriceData.previousPrice >= 0) {
|
|
62
|
+
oracleStablePriceNum += oraclePriceData.previousPrice;
|
|
63
|
+
oracleInputCount += 1;
|
|
64
|
+
}
|
|
65
|
+
oracleStablePriceNum = oracleStablePriceNum / oracleInputCount;
|
|
66
|
+
const oraclePriceStableWithMantissa = new anchor_1.BN(oracleStablePriceNum * numericConstants_1.MARK_PRICE_PRECISION.toNumber());
|
|
67
|
+
let oracleTwapWithMantissa = lastOracleTwapWithMantissa;
|
|
68
|
+
const oracleLiveVsTwap = oraclePriceStableWithMantissa
|
|
69
|
+
.sub(lastOracleTwapWithMantissa)
|
|
70
|
+
.abs()
|
|
71
|
+
.mul(numericConstants_1.MARK_PRICE_PRECISION)
|
|
72
|
+
.mul(new anchor_1.BN(100))
|
|
73
|
+
.div(lastOracleTwapWithMantissa);
|
|
74
|
+
// verify pyth live input is within 10% of last twap for live update
|
|
75
|
+
if (oracleLiveVsTwap.lte(numericConstants_1.MARK_PRICE_PRECISION.mul(new anchor_1.BN(10)))) {
|
|
76
|
+
oracleTwapWithMantissa = oracleTwapTimeSinceLastUpdate
|
|
77
|
+
.mul(lastOracleTwapWithMantissa)
|
|
78
|
+
.add(timeSinceLastMarkChange.mul(oraclePriceStableWithMantissa))
|
|
79
|
+
.div(timeSinceLastOracleTwapUpdate.add(oracleTwapTimeSinceLastUpdate));
|
|
80
|
+
}
|
|
60
81
|
const twapSpread = markTwapWithMantissa.sub(oracleTwapWithMantissa);
|
|
61
82
|
const twapSpreadPct = twapSpread
|
|
62
83
|
.mul(numericConstants_1.MARK_PRICE_PRECISION)
|
|
@@ -85,54 +106,77 @@ function calculateAllEstimatedFundingRate(market, pythClient, periodAdjustment =
|
|
|
85
106
|
largerSide = market.baseAssetAmountLong.abs();
|
|
86
107
|
smallerSide = market.baseAssetAmountShort.abs();
|
|
87
108
|
if (twapSpread.gt(new anchor_1.BN(0))) {
|
|
88
|
-
return [
|
|
109
|
+
return [
|
|
110
|
+
markTwapWithMantissa,
|
|
111
|
+
oracleTwapWithMantissa,
|
|
112
|
+
lowerboundEst,
|
|
113
|
+
interpEst,
|
|
114
|
+
interpEst,
|
|
115
|
+
];
|
|
89
116
|
}
|
|
90
117
|
}
|
|
91
118
|
else if (market.baseAssetAmountLong.lt(market.baseAssetAmountShort.abs())) {
|
|
92
119
|
largerSide = market.baseAssetAmountShort.abs();
|
|
93
120
|
smallerSide = market.baseAssetAmountLong.abs();
|
|
94
121
|
if (twapSpread.lt(new anchor_1.BN(0))) {
|
|
95
|
-
return [
|
|
122
|
+
return [
|
|
123
|
+
markTwapWithMantissa,
|
|
124
|
+
oracleTwapWithMantissa,
|
|
125
|
+
lowerboundEst,
|
|
126
|
+
interpEst,
|
|
127
|
+
interpEst,
|
|
128
|
+
];
|
|
96
129
|
}
|
|
97
130
|
}
|
|
98
131
|
else {
|
|
99
|
-
return [
|
|
132
|
+
return [
|
|
133
|
+
markTwapWithMantissa,
|
|
134
|
+
oracleTwapWithMantissa,
|
|
135
|
+
lowerboundEst,
|
|
136
|
+
interpEst,
|
|
137
|
+
interpEst,
|
|
138
|
+
];
|
|
100
139
|
}
|
|
101
140
|
if (largerSide.gt(numericConstants_1.ZERO)) {
|
|
102
|
-
|
|
141
|
+
// funding smaller flow
|
|
142
|
+
cappedAltEst = smallerSide.mul(twapSpread).div(hoursInDay);
|
|
103
143
|
const feePoolTopOff = feePoolSize
|
|
104
144
|
.mul(numericConstants_1.MARK_PRICE_PRECISION.div(numericConstants_1.QUOTE_PRECISION))
|
|
105
|
-
.mul(numericConstants_1.AMM_RESERVE_PRECISION)
|
|
106
|
-
|
|
107
|
-
cappedAltEst = cappedAltEst.add(feePoolTopOff);
|
|
145
|
+
.mul(numericConstants_1.AMM_RESERVE_PRECISION);
|
|
146
|
+
cappedAltEst = cappedAltEst.add(feePoolTopOff).div(largerSide);
|
|
108
147
|
cappedAltEst = cappedAltEst
|
|
109
148
|
.mul(numericConstants_1.MARK_PRICE_PRECISION)
|
|
110
149
|
.mul(new anchor_1.BN(100))
|
|
111
150
|
.div(oracleTwapWithMantissa)
|
|
112
|
-
.mul(periodAdjustment)
|
|
113
|
-
|
|
114
|
-
if (cappedAltEst.abs().gt(interpEst.abs())) {
|
|
151
|
+
.mul(periodAdjustment);
|
|
152
|
+
if (cappedAltEst.abs().gte(interpEst.abs())) {
|
|
115
153
|
cappedAltEst = interpEst;
|
|
116
154
|
}
|
|
117
155
|
}
|
|
118
156
|
else {
|
|
119
157
|
cappedAltEst = interpEst;
|
|
120
158
|
}
|
|
121
|
-
return [
|
|
159
|
+
return [
|
|
160
|
+
markTwapWithMantissa,
|
|
161
|
+
oracleTwapWithMantissa,
|
|
162
|
+
lowerboundEst,
|
|
163
|
+
cappedAltEst,
|
|
164
|
+
interpEst,
|
|
165
|
+
];
|
|
122
166
|
});
|
|
123
167
|
}
|
|
124
168
|
exports.calculateAllEstimatedFundingRate = calculateAllEstimatedFundingRate;
|
|
125
169
|
/**
|
|
126
170
|
*
|
|
127
171
|
* @param market
|
|
128
|
-
* @param
|
|
172
|
+
* @param oraclePriceData
|
|
129
173
|
* @param periodAdjustment
|
|
130
174
|
* @param estimationMethod
|
|
131
175
|
* @returns Estimated funding rate. : Precision //TODO-PRECISION
|
|
132
176
|
*/
|
|
133
|
-
function calculateEstimatedFundingRate(market,
|
|
177
|
+
function calculateEstimatedFundingRate(market, oraclePriceData, periodAdjustment = new anchor_1.BN(1), estimationMethod) {
|
|
134
178
|
return __awaiter(this, void 0, void 0, function* () {
|
|
135
|
-
const [_1, _2, lowerboundEst, cappedAltEst, interpEst] = yield calculateAllEstimatedFundingRate(market,
|
|
179
|
+
const [_1, _2, lowerboundEst, cappedAltEst, interpEst] = yield calculateAllEstimatedFundingRate(market, oraclePriceData, periodAdjustment);
|
|
136
180
|
if (estimationMethod == 'lowerbound') {
|
|
137
181
|
//assuming remaining funding period has no gap
|
|
138
182
|
return lowerboundEst;
|
|
@@ -154,9 +198,9 @@ exports.calculateEstimatedFundingRate = calculateEstimatedFundingRate;
|
|
|
154
198
|
* @param estimationMethod
|
|
155
199
|
* @returns Estimated funding rate. : Precision //TODO-PRECISION
|
|
156
200
|
*/
|
|
157
|
-
function calculateLongShortFundingRate(market,
|
|
201
|
+
function calculateLongShortFundingRate(market, oraclePriceData, periodAdjustment = new anchor_1.BN(1)) {
|
|
158
202
|
return __awaiter(this, void 0, void 0, function* () {
|
|
159
|
-
const [_1, _2, _, cappedAltEst, interpEst] = yield calculateAllEstimatedFundingRate(market,
|
|
203
|
+
const [_1, _2, _, cappedAltEst, interpEst] = yield calculateAllEstimatedFundingRate(market, oraclePriceData, periodAdjustment);
|
|
160
204
|
if (market.baseAssetAmountLong.gt(market.baseAssetAmountShort)) {
|
|
161
205
|
return [cappedAltEst, interpEst];
|
|
162
206
|
}
|
|
@@ -177,9 +221,9 @@ exports.calculateLongShortFundingRate = calculateLongShortFundingRate;
|
|
|
177
221
|
* @param estimationMethod
|
|
178
222
|
* @returns Estimated funding rate. : Precision //TODO-PRECISION
|
|
179
223
|
*/
|
|
180
|
-
function calculateLongShortFundingRateAndLiveTwaps(market,
|
|
224
|
+
function calculateLongShortFundingRateAndLiveTwaps(market, oraclePriceData, periodAdjustment = new anchor_1.BN(1)) {
|
|
181
225
|
return __awaiter(this, void 0, void 0, function* () {
|
|
182
|
-
const [markTwapLive, oracleTwapLive, _2, cappedAltEst, interpEst] = yield calculateAllEstimatedFundingRate(market,
|
|
226
|
+
const [markTwapLive, oracleTwapLive, _2, cappedAltEst, interpEst] = yield calculateAllEstimatedFundingRate(market, oraclePriceData, periodAdjustment);
|
|
183
227
|
if (market.baseAssetAmountLong.gt(market.baseAssetAmountShort.abs())) {
|
|
184
228
|
return [markTwapLive, oracleTwapLive, cappedAltEst, interpEst];
|
|
185
229
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { MarketsAccount, StateAccount } from '../types';
|
|
2
|
+
import BN from 'bn.js';
|
|
3
|
+
import { Connection } from '@solana/web3.js';
|
|
4
|
+
/**
|
|
5
|
+
* In the case of a levered loss, the exchange first pays out undistributed fees and then the insurance fund.
|
|
6
|
+
* Thus the de facto size of the insurance fund is the amount in the insurance vault plus the sum of each markets
|
|
7
|
+
* undistributed fees.
|
|
8
|
+
*
|
|
9
|
+
* @param connection
|
|
10
|
+
* @param state
|
|
11
|
+
* @param marketsAccount
|
|
12
|
+
* @returns Precision : QUOTE_ASSET_PRECISION
|
|
13
|
+
*/
|
|
14
|
+
export declare function calculateInsuranceFundSize(connection: Connection, state: StateAccount, marketsAccount: MarketsAccount): Promise<BN>;
|
|
15
|
+
//# sourceMappingURL=insuranceFund.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insuranceFund.d.ts","sourceRoot":"","sources":["../../src/math/insuranceFund.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EAAE,MAAM,OAAO,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;;;;;;;;GASG;AACH,wBAAsB,0BAA0B,CAC/C,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,YAAY,EACnB,cAAc,EAAE,cAAc,GAC5B,OAAO,CAAC,EAAE,CAAC,CAUb"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.calculateInsuranceFundSize = void 0;
|
|
16
|
+
const bn_js_1 = __importDefault(require("bn.js"));
|
|
17
|
+
/**
|
|
18
|
+
* In the case of a levered loss, the exchange first pays out undistributed fees and then the insurance fund.
|
|
19
|
+
* Thus the de facto size of the insurance fund is the amount in the insurance vault plus the sum of each markets
|
|
20
|
+
* undistributed fees.
|
|
21
|
+
*
|
|
22
|
+
* @param connection
|
|
23
|
+
* @param state
|
|
24
|
+
* @param marketsAccount
|
|
25
|
+
* @returns Precision : QUOTE_ASSET_PRECISION
|
|
26
|
+
*/
|
|
27
|
+
function calculateInsuranceFundSize(connection, state, marketsAccount) {
|
|
28
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
29
|
+
const insuranceVaultPublicKey = state.insuranceVault;
|
|
30
|
+
const insuranceVaultAmount = new bn_js_1.default((yield connection.getTokenAccountBalance(insuranceVaultPublicKey)).value.amount);
|
|
31
|
+
return marketsAccount.markets.reduce((insuranceVaultAmount, market) => {
|
|
32
|
+
return insuranceVaultAmount.add(market.amm.totalFee.div(new bn_js_1.default(2)));
|
|
33
|
+
}, insuranceVaultAmount);
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
exports.calculateInsuranceFundSize = calculateInsuranceFundSize;
|
package/lib/math/position.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Market, UserPosition } from '../types';
|
|
2
1
|
import BN from 'bn.js';
|
|
2
|
+
import { Market, UserPosition } from '../types';
|
|
3
3
|
/**
|
|
4
4
|
* calculateBaseAssetValue
|
|
5
5
|
* = market value of closing entire position
|
|
@@ -24,4 +24,10 @@ export declare function calculatePositionPNL(market: Market, marketPosition: Use
|
|
|
24
24
|
* @returns // TODO-PRECISION
|
|
25
25
|
*/
|
|
26
26
|
export declare function calculatePositionFundingPNL(market: Market, marketPosition: UserPosition): BN;
|
|
27
|
+
/**
|
|
28
|
+
*
|
|
29
|
+
* @param userPosition
|
|
30
|
+
* @returns Precision: MARK_PRICE_PRECISION (10^10)
|
|
31
|
+
*/
|
|
32
|
+
export declare function calculateEntryPrice(userPosition: UserPosition): BN;
|
|
27
33
|
//# sourceMappingURL=position.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"position.d.ts","sourceRoot":"","sources":["../../src/math/position.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"position.d.ts","sourceRoot":"","sources":["../../src/math/position.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,OAAO,CAAC;AAWvB,OAAO,EAAE,MAAM,EAAqB,YAAY,EAAE,MAAM,UAAU,CAAC;AAGnE;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACtC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,GACxB,EAAE,CA6BJ;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CACnC,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,YAAY,EAC5B,WAAW,UAAQ,GACjB,EAAE,CAwBJ;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAC1C,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,YAAY,GAC1B,EAAE,CAoBJ;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,YAAY,GAAG,EAAE,CAUlE"}
|
package/lib/math/position.js
CHANGED
|
@@ -3,12 +3,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.calculatePositionFundingPNL = exports.calculatePositionPNL = exports.calculateBaseAssetValue = void 0;
|
|
7
|
-
const types_1 = require("../types");
|
|
8
|
-
const numericConstants_1 = require("../constants/numericConstants");
|
|
6
|
+
exports.calculateEntryPrice = exports.calculatePositionFundingPNL = exports.calculatePositionPNL = exports.calculateBaseAssetValue = void 0;
|
|
9
7
|
const bn_js_1 = __importDefault(require("bn.js"));
|
|
8
|
+
const numericConstants_1 = require("../constants/numericConstants");
|
|
9
|
+
const types_1 = require("../types");
|
|
10
10
|
const amm_1 = require("./amm");
|
|
11
|
-
const numericConstants_2 = require("../constants/numericConstants");
|
|
12
11
|
/**
|
|
13
12
|
* calculateBaseAssetValue
|
|
14
13
|
* = market value of closing entire position
|
|
@@ -29,14 +28,12 @@ function calculateBaseAssetValue(market, userPosition) {
|
|
|
29
28
|
return market.amm.quoteAssetReserve
|
|
30
29
|
.sub(newQuoteAssetReserve)
|
|
31
30
|
.mul(market.amm.pegMultiplier)
|
|
32
|
-
.div(numericConstants_1.
|
|
33
|
-
.div(numericConstants_1.AMM_TO_QUOTE_PRECISION_RATIO);
|
|
31
|
+
.div(numericConstants_1.AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO);
|
|
34
32
|
case types_1.PositionDirection.LONG:
|
|
35
33
|
return newQuoteAssetReserve
|
|
36
34
|
.sub(market.amm.quoteAssetReserve)
|
|
37
35
|
.mul(market.amm.pegMultiplier)
|
|
38
|
-
.div(numericConstants_1.
|
|
39
|
-
.div(numericConstants_1.AMM_TO_QUOTE_PRECISION_RATIO);
|
|
36
|
+
.div(numericConstants_1.AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO);
|
|
40
37
|
}
|
|
41
38
|
}
|
|
42
39
|
exports.calculateBaseAssetValue = calculateBaseAssetValue;
|
|
@@ -52,24 +49,19 @@ function calculatePositionPNL(market, marketPosition, withFunding = false) {
|
|
|
52
49
|
if (marketPosition.baseAssetAmount.eq(numericConstants_1.ZERO)) {
|
|
53
50
|
return numericConstants_1.ZERO;
|
|
54
51
|
}
|
|
55
|
-
const directionToClose = marketPosition.baseAssetAmount.gt(numericConstants_1.ZERO)
|
|
56
|
-
? types_1.PositionDirection.SHORT
|
|
57
|
-
: types_1.PositionDirection.LONG;
|
|
58
52
|
const baseAssetValue = calculateBaseAssetValue(market, marketPosition);
|
|
59
|
-
let
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
pnlAssetAmount = marketPosition.quoteAssetAmount.sub(baseAssetValue);
|
|
66
|
-
break;
|
|
53
|
+
let pnl;
|
|
54
|
+
if (marketPosition.baseAssetAmount.gt(numericConstants_1.ZERO)) {
|
|
55
|
+
pnl = baseAssetValue.sub(marketPosition.quoteAssetAmount);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
pnl = marketPosition.quoteAssetAmount.sub(baseAssetValue).sub(numericConstants_1.ONE);
|
|
67
59
|
}
|
|
68
60
|
if (withFunding) {
|
|
69
|
-
const fundingRatePnL = calculatePositionFundingPNL(market, marketPosition).div(
|
|
70
|
-
|
|
61
|
+
const fundingRatePnL = calculatePositionFundingPNL(market, marketPosition).div(numericConstants_1.PRICE_TO_QUOTE_PRECISION);
|
|
62
|
+
pnl = pnl.add(fundingRatePnL);
|
|
71
63
|
}
|
|
72
|
-
return
|
|
64
|
+
return pnl;
|
|
73
65
|
}
|
|
74
66
|
exports.calculatePositionPNL = calculatePositionPNL;
|
|
75
67
|
/**
|
|
@@ -92,9 +84,25 @@ function calculatePositionFundingPNL(market, marketPosition) {
|
|
|
92
84
|
const perPositionFundingRate = ammCumulativeFundingRate
|
|
93
85
|
.sub(marketPosition.lastCumulativeFundingRate)
|
|
94
86
|
.mul(marketPosition.baseAssetAmount)
|
|
95
|
-
.div(
|
|
96
|
-
.div(
|
|
87
|
+
.div(numericConstants_1.AMM_RESERVE_PRECISION)
|
|
88
|
+
.div(numericConstants_1.FUNDING_PAYMENT_PRECISION)
|
|
97
89
|
.mul(new bn_js_1.default(-1));
|
|
98
90
|
return perPositionFundingRate;
|
|
99
91
|
}
|
|
100
92
|
exports.calculatePositionFundingPNL = calculatePositionFundingPNL;
|
|
93
|
+
/**
|
|
94
|
+
*
|
|
95
|
+
* @param userPosition
|
|
96
|
+
* @returns Precision: MARK_PRICE_PRECISION (10^10)
|
|
97
|
+
*/
|
|
98
|
+
function calculateEntryPrice(userPosition) {
|
|
99
|
+
if (userPosition.baseAssetAmount.eq(numericConstants_1.ZERO)) {
|
|
100
|
+
return numericConstants_1.ZERO;
|
|
101
|
+
}
|
|
102
|
+
return userPosition.quoteAssetAmount
|
|
103
|
+
.mul(numericConstants_1.MARK_PRICE_PRECISION)
|
|
104
|
+
.mul(numericConstants_1.AMM_TO_QUOTE_PRECISION_RATIO)
|
|
105
|
+
.div(userPosition.baseAssetAmount)
|
|
106
|
+
.abs();
|
|
107
|
+
}
|
|
108
|
+
exports.calculateEntryPrice = calculateEntryPrice;
|
package/lib/math/trade.d.ts
CHANGED
|
@@ -44,5 +44,5 @@ export declare function calculateTradeAcquiredAmounts(direction: PositionDirecti
|
|
|
44
44
|
* targetPrice => the target price TODO-PRECISION
|
|
45
45
|
* ]
|
|
46
46
|
*/
|
|
47
|
-
export declare function calculateTargetPriceTrade(market: Market, targetPrice: BN, pct?: BN): [PositionDirection, BN, BN, BN];
|
|
47
|
+
export declare function calculateTargetPriceTrade(market: Market, targetPrice: BN, pct?: BN, outputAssetType?: AssetType): [PositionDirection, BN, BN, BN];
|
|
48
48
|
//# sourceMappingURL=trade.d.ts.map
|
package/lib/math/trade.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trade.d.ts","sourceRoot":"","sources":["../../src/math/trade.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAC;AAS3C,OAAO,EAIN,SAAS,EACT,MAAM,OAAO,CAAC;AAKf,oBAAY,eAAe,GACxB,YAAY,GACZ,UAAU,GACV,YAAY,GACZ,oBAAoB,GACpB,QAAQ,GACR,QAAQ,GACR,kBAAkB,GAClB,qBAAqB,GACrB,yBAAyB,GACzB,0BAA0B,GAC1B,KAAK,CAAC;AAET;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CACrC,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,EAAE,EACV,MAAM,EAAE,MAAM,EACd,cAAc,GAAE,SAAmB,GACjC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CA0ClB;AAED;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAC5C,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,EAAE,EACV,MAAM,EAAE,MAAM,EACd,cAAc,GAAE,SAAmB,GACjC,CAAC,EAAE,EAAE,EAAE,CAAC,CAiBV;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,yBAAyB,CACxC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,EAAE,EACf,GAAG,GAAE,EAAW,
|
|
1
|
+
{"version":3,"file":"trade.d.ts","sourceRoot":"","sources":["../../src/math/trade.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,EAAE,EAAE,MAAM,uBAAuB,CAAC;AAS3C,OAAO,EAIN,SAAS,EACT,MAAM,OAAO,CAAC;AAKf,oBAAY,eAAe,GACxB,YAAY,GACZ,UAAU,GACV,YAAY,GACZ,oBAAoB,GACpB,QAAQ,GACR,QAAQ,GACR,kBAAkB,GAClB,qBAAqB,GACrB,yBAAyB,GACzB,0BAA0B,GAC1B,KAAK,CAAC;AAET;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CACrC,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,EAAE,EACV,MAAM,EAAE,MAAM,EACd,cAAc,GAAE,SAAmB,GACjC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CA0ClB;AAED;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAC5C,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,EAAE,EACV,MAAM,EAAE,MAAM,EACd,cAAc,GAAE,SAAmB,GACjC,CAAC,EAAE,EAAE,EAAE,CAAC,CAiBV;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,yBAAyB,CACxC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,EAAE,EACf,GAAG,GAAE,EAAW,EAChB,eAAe,GAAE,SAAmB,GAClC,CAAC,iBAAiB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAgHjC"}
|
package/lib/math/trade.js
CHANGED
|
@@ -85,7 +85,7 @@ exports.calculateTradeAcquiredAmounts = calculateTradeAcquiredAmounts;
|
|
|
85
85
|
* targetPrice => the target price TODO-PRECISION
|
|
86
86
|
* ]
|
|
87
87
|
*/
|
|
88
|
-
function calculateTargetPriceTrade(market, targetPrice, pct = MAXPCT) {
|
|
88
|
+
function calculateTargetPriceTrade(market, targetPrice, pct = MAXPCT, outputAssetType = 'quote') {
|
|
89
89
|
assert_1.assert(market.amm.baseAssetReserve.gt(numericConstants_1.ZERO));
|
|
90
90
|
assert_1.assert(targetPrice.gt(numericConstants_1.ZERO));
|
|
91
91
|
assert_1.assert(pct.lte(MAXPCT) && pct.gt(numericConstants_1.ZERO));
|
|
@@ -125,7 +125,7 @@ function calculateTargetPriceTrade(market, targetPrice, pct = MAXPCT) {
|
|
|
125
125
|
.mul(peg)
|
|
126
126
|
.div(numericConstants_1.PEG_PRECISION)
|
|
127
127
|
.div(numericConstants_1.AMM_TO_QUOTE_PRECISION_RATIO);
|
|
128
|
-
baseSize =
|
|
128
|
+
baseSize = baseAssetReserveAfter.sub(baseAssetReserveBefore);
|
|
129
129
|
}
|
|
130
130
|
else if (markPriceBefore.lt(targetPrice)) {
|
|
131
131
|
// underestimate y2
|
|
@@ -140,7 +140,7 @@ function calculateTargetPriceTrade(market, targetPrice, pct = MAXPCT) {
|
|
|
140
140
|
.mul(peg)
|
|
141
141
|
.div(numericConstants_1.PEG_PRECISION)
|
|
142
142
|
.div(numericConstants_1.AMM_TO_QUOTE_PRECISION_RATIO);
|
|
143
|
-
baseSize =
|
|
143
|
+
baseSize = baseAssetReserveBefore.sub(baseAssetReserveAfter);
|
|
144
144
|
}
|
|
145
145
|
else {
|
|
146
146
|
// no trade, market is at target
|
|
@@ -167,6 +167,11 @@ function calculateTargetPriceTrade(market, targetPrice, pct = MAXPCT) {
|
|
|
167
167
|
tp1.toString() +
|
|
168
168
|
'err: ' +
|
|
169
169
|
tp2.sub(tp1).abs().toString());
|
|
170
|
-
|
|
170
|
+
if (outputAssetType == 'quote') {
|
|
171
|
+
return [direction, tradeSize, entryPrice, targetPrice];
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
return [direction, baseSize, entryPrice, targetPrice];
|
|
175
|
+
}
|
|
171
176
|
}
|
|
172
177
|
exports.calculateTargetPriceTrade = calculateTargetPriceTrade;
|
package/lib/types.d.ts
CHANGED
|
@@ -236,56 +236,6 @@ export declare type UserAccount = {
|
|
|
236
236
|
positions: PublicKey;
|
|
237
237
|
totalFeePaid: BN;
|
|
238
238
|
};
|
|
239
|
-
export interface Trade {
|
|
240
|
-
price: number;
|
|
241
|
-
beforePrice: number;
|
|
242
|
-
afterPrice: number;
|
|
243
|
-
side: TradeSide;
|
|
244
|
-
size: number;
|
|
245
|
-
quoteSize: number;
|
|
246
|
-
ts: number;
|
|
247
|
-
fee: number;
|
|
248
|
-
marketIndex: number;
|
|
249
|
-
chainTs: number;
|
|
250
|
-
}
|
|
251
|
-
export declare type Liquidation = {
|
|
252
|
-
ts: number;
|
|
253
|
-
chainTs: number;
|
|
254
|
-
recordId: number;
|
|
255
|
-
userAuthority: PublicKey;
|
|
256
|
-
user: PublicKey;
|
|
257
|
-
partial: boolean;
|
|
258
|
-
baseAssetValue: number;
|
|
259
|
-
baseAssetValueClosed: number;
|
|
260
|
-
liquidationFee: number;
|
|
261
|
-
feeToLiquidator: number;
|
|
262
|
-
feeToInsuranceFund: number;
|
|
263
|
-
liquidator: PublicKey;
|
|
264
|
-
totalCollateral: number;
|
|
265
|
-
collateral: number;
|
|
266
|
-
unrealizedPnl: number;
|
|
267
|
-
marginRatio: number;
|
|
268
|
-
};
|
|
269
|
-
export declare type Candle = {
|
|
270
|
-
open: number;
|
|
271
|
-
close: number;
|
|
272
|
-
high: number;
|
|
273
|
-
low: number;
|
|
274
|
-
volume: number;
|
|
275
|
-
start: number;
|
|
276
|
-
end: number;
|
|
277
|
-
};
|
|
278
|
-
export interface FundingPayment {
|
|
279
|
-
userPublicKey: string;
|
|
280
|
-
serverTs: number;
|
|
281
|
-
marketIndex: number;
|
|
282
|
-
amount: string;
|
|
283
|
-
blockchainTs: number;
|
|
284
|
-
baseAssetAmount: string;
|
|
285
|
-
userLastCumulativeFunding: string;
|
|
286
|
-
userLastFundingRateTs: string;
|
|
287
|
-
rate: number;
|
|
288
|
-
}
|
|
289
239
|
export interface IWallet {
|
|
290
240
|
signTransaction(tx: Transaction): Promise<Transaction>;
|
|
291
241
|
signAllTransactions(txs: Transaction[]): Promise<Transaction[]>;
|
package/lib/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"computeUnits.d.ts","sourceRoot":"","sources":["../../src/util/computeUnits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAElE,wBAAsB,0BAA0B,CAC/C,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,MAAM,EACnB,UAAU,GAAE,QAAsB,GAChC,OAAO,CAAC,MAAM,EAAE,CAAC,CAanB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.findComputeUnitConsumption = void 0;
|
|
13
|
+
function findComputeUnitConsumption(programId, connection, txSignature, commitment = 'confirmed') {
|
|
14
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
15
|
+
const tx = yield connection.getTransaction(txSignature, { commitment });
|
|
16
|
+
const computeUnits = [];
|
|
17
|
+
const regex = new RegExp(`Program ${programId.toString()} consumed ([0-9]{0,6}) of 200000 compute units`);
|
|
18
|
+
tx.meta.logMessages.forEach((logMessage) => {
|
|
19
|
+
const match = logMessage.match(regex);
|
|
20
|
+
if (match && match[1]) {
|
|
21
|
+
computeUnits.push(match[1]);
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
return computeUnits;
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
exports.findComputeUnitConsumption = findComputeUnitConsumption;
|
package/lib/wallet.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Keypair, PublicKey, Transaction } from '@solana/web3.js';
|
|
2
|
+
import { IWallet } from './types';
|
|
3
|
+
export declare class Wallet implements IWallet {
|
|
4
|
+
readonly payer: Keypair;
|
|
5
|
+
constructor(payer: Keypair);
|
|
6
|
+
signTransaction(tx: Transaction): Promise<Transaction>;
|
|
7
|
+
signAllTransactions(txs: Transaction[]): Promise<Transaction[]>;
|
|
8
|
+
get publicKey(): PublicKey;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=wallet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,qBAAa,MAAO,YAAW,OAAO;IACzB,QAAQ,CAAC,KAAK,EAAE,OAAO;gBAAd,KAAK,EAAE,OAAO;IAE7B,eAAe,CAAC,EAAE,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAKtD,mBAAmB,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAOrE,IAAI,SAAS,IAAI,SAAS,CAEzB;CACD"}
|
package/lib/wallet.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.Wallet = void 0;
|
|
13
|
+
class Wallet {
|
|
14
|
+
constructor(payer) {
|
|
15
|
+
this.payer = payer;
|
|
16
|
+
}
|
|
17
|
+
signTransaction(tx) {
|
|
18
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
19
|
+
tx.partialSign(this.payer);
|
|
20
|
+
return tx;
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
signAllTransactions(txs) {
|
|
24
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
25
|
+
return txs.map((t) => {
|
|
26
|
+
t.partialSign(this.payer);
|
|
27
|
+
return t;
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
get publicKey() {
|
|
32
|
+
return this.payer.publicKey;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.Wallet = Wallet;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@drift-labs/sdk",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.14",
|
|
4
4
|
"main": "lib/index.js",
|
|
5
5
|
"types": "lib/index.d.ts",
|
|
6
6
|
"author": "crispheaney",
|
|
@@ -12,9 +12,7 @@
|
|
|
12
12
|
"scripts": {
|
|
13
13
|
"build": "yarn clean && tsc",
|
|
14
14
|
"clean": "rm -rf lib",
|
|
15
|
-
"patch-and-pub": "npm version patch --force && npm publish"
|
|
16
|
-
"prettify": "prettier --write './src/**/*.{ts,tsx}'",
|
|
17
|
-
"lint": "eslint . --ext ts --ext tsx --ext js --quiet"
|
|
15
|
+
"patch-and-pub": "npm version patch --force && npm publish"
|
|
18
16
|
},
|
|
19
17
|
"keywords": [
|
|
20
18
|
"drift-labs",
|
|
@@ -29,21 +27,13 @@
|
|
|
29
27
|
"access": "public"
|
|
30
28
|
},
|
|
31
29
|
"dependencies": {
|
|
32
|
-
"@project-serum/anchor": "
|
|
30
|
+
"@project-serum/anchor": "0.19.1-beta.1",
|
|
33
31
|
"@pythnetwork/client": "^2.4.0",
|
|
34
32
|
"@solana/spl-token": "^0.1.6",
|
|
35
33
|
"@solana/web3.js": "^1.22.0",
|
|
36
34
|
"@types/bn.js": "^5.1.0",
|
|
37
35
|
"strict-event-emitter-types": "^2.0.0"
|
|
38
36
|
},
|
|
39
|
-
"devDependencies": {
|
|
40
|
-
"@typescript-eslint/eslint-plugin": "^4.28.0",
|
|
41
|
-
"@typescript-eslint/parser": "^4.28.0",
|
|
42
|
-
"eslint": "^7.29.0",
|
|
43
|
-
"eslint-config-prettier": "^8.3.0",
|
|
44
|
-
"eslint-plugin-prettier": "^3.4.0",
|
|
45
|
-
"prettier": "^2.4.1"
|
|
46
|
-
},
|
|
47
37
|
"description": "SDK for Drift Protocol v1",
|
|
48
38
|
"engines": {
|
|
49
39
|
"node": ">=12"
|
|
@@ -194,6 +194,24 @@ export class DefaultClearingHouseAccountSubscriber
|
|
|
194
194
|
return true;
|
|
195
195
|
}
|
|
196
196
|
|
|
197
|
+
public async fetch(): Promise<void> {
|
|
198
|
+
if (!this.isSubscribed) {
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
const promises = this.optionalExtraSubscriptions
|
|
203
|
+
.map((optionalSubscription) => {
|
|
204
|
+
const subscriber = `${optionalSubscription}Subscriber`;
|
|
205
|
+
return this[subscriber].fetch();
|
|
206
|
+
})
|
|
207
|
+
.concat([
|
|
208
|
+
this.stateAccountSubscriber.fetch(),
|
|
209
|
+
this.marketsAccountSubscriber.fetch(),
|
|
210
|
+
]);
|
|
211
|
+
|
|
212
|
+
await Promise.all(promises);
|
|
213
|
+
}
|
|
214
|
+
|
|
197
215
|
public async unsubscribe(): Promise<void> {
|
|
198
216
|
if (!this.isSubscribed) {
|
|
199
217
|
return;
|