@drift-labs/sdk 0.1.13 → 0.1.17-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.
- package/README.md +2 -2
- package/lib/accounts/defaultClearingHouseAccountSubscriber.d.ts +1 -0
- package/lib/accounts/defaultClearingHouseAccountSubscriber.d.ts.map +1 -1
- package/lib/accounts/defaultClearingHouseAccountSubscriber.js +18 -1
- package/lib/accounts/defaultUserAccountSubscriber.d.ts +2 -0
- package/lib/accounts/defaultUserAccountSubscriber.d.ts.map +1 -1
- package/lib/accounts/defaultUserAccountSubscriber.js +17 -1
- package/lib/accounts/types.d.ts +3 -0
- 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/admin.js +3 -3
- package/lib/clearingHouse.d.ts +4 -0
- package/lib/clearingHouse.d.ts.map +1 -1
- package/lib/clearingHouse.js +17 -9
- package/lib/clearingHouseUser.d.ts +4 -0
- package/lib/clearingHouseUser.d.ts.map +1 -1
- package/lib/clearingHouseUser.js +33 -13
- package/lib/constants/markets.d.ts.map +1 -1
- package/lib/constants/markets.js +14 -0
- package/lib/examples/makeTradeExample.js +10 -11
- package/lib/index.d.ts +2 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -0
- package/lib/math/amm.d.ts.map +1 -1
- package/lib/math/amm.js +9 -8
- package/lib/math/conversion.js +1 -1
- package/lib/math/funding.d.ts +2 -4
- package/lib/math/funding.d.ts.map +1 -1
- package/lib/math/funding.js +5 -7
- package/lib/math/insuranceFund.d.ts +4 -3
- package/lib/math/insuranceFund.d.ts.map +1 -1
- package/lib/math/insuranceFund.js +1 -0
- package/lib/math/market.js +1 -1
- package/lib/math/position.d.ts.map +1 -1
- package/lib/math/position.js +1 -1
- package/lib/math/trade.js +16 -16
- package/lib/pythClient.js +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/util/tps.d.ts +3 -0
- package/lib/util/tps.d.ts.map +1 -0
- package/lib/util/tps.js +27 -0
- package/lib/wallet.d.ts +2 -2
- package/lib/wallet.d.ts.map +1 -1
- package/package.json +2 -12
- package/src/accounts/defaultClearingHouseAccountSubscriber.ts +18 -0
- package/src/accounts/defaultUserAccountSubscriber.ts +18 -0
- package/src/accounts/types.ts +3 -1
- package/src/accounts/webSocketAccountSubscriber.ts +16 -6
- package/src/clearingHouse.ts +7 -1
- package/src/clearingHouseUser.ts +29 -4
- package/src/constants/markets.ts +14 -0
- package/src/constants/numericConstants.ts +0 -1
- package/src/examples/makeTradeExample.ts +6 -12
- package/src/index.ts +2 -0
- package/src/math/amm.ts +2 -2
- package/src/math/funding.ts +7 -6
- package/src/math/insuranceFund.ts +16 -9
- package/src/math/position.ts +6 -5
- package/src/util/computeUnits.ts +21 -0
- package/src/util/tps.ts +27 -0
- package/src/wallet.ts +17 -17
- package/.eslintrc.json +0 -36
- package/.prettierignore +0 -1
- package/.prettierrc.js +0 -9
package/README.md
CHANGED
|
@@ -98,7 +98,7 @@ import {
|
|
|
98
98
|
calculateTradeSlippage,
|
|
99
99
|
MARK_PRICE_PRECISION,
|
|
100
100
|
QUOTE_PRECISION,
|
|
101
|
-
} from '@drift/sdk';
|
|
101
|
+
} from '@drift-labs/sdk';
|
|
102
102
|
|
|
103
103
|
export const getTokenAddress = (
|
|
104
104
|
mintAddress: string,
|
|
@@ -180,7 +180,7 @@ const main = async () => {
|
|
|
180
180
|
clearingHouse.getMarket(solMarketInfo.marketIndex)
|
|
181
181
|
);
|
|
182
182
|
|
|
183
|
-
const formattedPrice = convertToNumber(currentMarketPrice,
|
|
183
|
+
const formattedPrice = convertToNumber(currentMarketPrice, MARK_PRICE_PRECISION);
|
|
184
184
|
|
|
185
185
|
console.log(`Current Market Price is $${formattedPrice}`);
|
|
186
186
|
|
|
@@ -23,6 +23,7 @@ export declare class DefaultClearingHouseAccountSubscriber implements ClearingHo
|
|
|
23
23
|
private subscriptionPromiseResolver;
|
|
24
24
|
constructor(program: Program);
|
|
25
25
|
subscribe(optionalSubscriptions?: ClearingHouseAccountTypes[]): Promise<boolean>;
|
|
26
|
+
fetch(): Promise<void>;
|
|
26
27
|
unsubscribe(): Promise<void>;
|
|
27
28
|
assertIsSubscribed(): void;
|
|
28
29
|
assertOptionalIsSubscribed(optionalSubscription: ClearingHouseAccountTypes): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaultClearingHouseAccountSubscriber.d.ts","sourceRoot":"","sources":["../../src/accounts/defaultClearingHouseAccountSubscriber.ts"],"names":[],"mappings":";AAAA,OAAO,EACN,8BAA8B,EAC9B,0BAA0B,EAC1B,yBAAyB,EACzB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,iBAAiB,EAAsB,MAAM,SAAS,CAAC;AAChE,OAAO,EACN,mBAAmB,EACnB,qBAAqB,EACrB,4BAA4B,EAC5B,yBAAyB,EACzB,yBAAyB,EACzB,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,kBAAkB,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,qBAAa,qCACZ,YAAW,8BAA8B;IAEzC,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,kBAAkB,CAAC,YAAY,EAAE,0BAA0B,CAAC,CAAC;IAC3E,sBAAsB,CAAC,EAAE,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACzD,wBAAwB,CAAC,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAC7D,6BAA6B,CAAC,EAAE,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;IACvE,+BAA+B,CAAC,EAAE,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;IAC3E,sCAAsC,CAAC,EAAE,iBAAiB,CAAC,4BAA4B,CAAC,CAAC;IACzF,mCAAmC,CAAC,EAAE,iBAAiB,CAAC,yBAAyB,CAAC,CAAC;IACnF,6BAA6B,CAAC,EAAE,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;IACvE,mCAAmC,CAAC,EAAE,iBAAiB,CAAC,yBAAyB,CAAC,CAAC;IAEnF,0BAA0B,EAAE,yBAAyB,EAAE,CAAM;IAE7D,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,mBAAmB,CAAmB;IAC9C,OAAO,CAAC,2BAA2B,CAAyB;gBAEzC,OAAO,EAAE,OAAO;IAMtB,SAAS,CACrB,qBAAqB,CAAC,EAAE,yBAAyB,EAAE,GACjD,OAAO,CAAC,OAAO,CAAC;IAiJN,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAqCzC,kBAAkB,IAAI,IAAI;IAQ1B,0BAA0B,CACzB,oBAAoB,EAAE,yBAAyB,GAC7C,IAAI;IAcA,eAAe,IAAI,YAAY;IAK/B,iBAAiB,IAAI,cAAc;IAKnC,sBAAsB,IAAI,mBAAmB;IAM7C,wBAAwB,IAAI,qBAAqB;IAMjD,+BAA+B,IAAI,4BAA4B;IAM/D,4BAA4B,IAAI,yBAAyB;IAMzD,sBAAsB,IAAI,mBAAmB;IAM7C,4BAA4B,IAAI,yBAAyB;CAKhE"}
|
|
1
|
+
{"version":3,"file":"defaultClearingHouseAccountSubscriber.d.ts","sourceRoot":"","sources":["../../src/accounts/defaultClearingHouseAccountSubscriber.ts"],"names":[],"mappings":";AAAA,OAAO,EACN,8BAA8B,EAC9B,0BAA0B,EAC1B,yBAAyB,EACzB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,iBAAiB,EAAsB,MAAM,SAAS,CAAC;AAChE,OAAO,EACN,mBAAmB,EACnB,qBAAqB,EACrB,4BAA4B,EAC5B,yBAAyB,EACzB,yBAAyB,EACzB,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,kBAAkB,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,qBAAa,qCACZ,YAAW,8BAA8B;IAEzC,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,kBAAkB,CAAC,YAAY,EAAE,0BAA0B,CAAC,CAAC;IAC3E,sBAAsB,CAAC,EAAE,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACzD,wBAAwB,CAAC,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAC7D,6BAA6B,CAAC,EAAE,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;IACvE,+BAA+B,CAAC,EAAE,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;IAC3E,sCAAsC,CAAC,EAAE,iBAAiB,CAAC,4BAA4B,CAAC,CAAC;IACzF,mCAAmC,CAAC,EAAE,iBAAiB,CAAC,yBAAyB,CAAC,CAAC;IACnF,6BAA6B,CAAC,EAAE,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;IACvE,mCAAmC,CAAC,EAAE,iBAAiB,CAAC,yBAAyB,CAAC,CAAC;IAEnF,0BAA0B,EAAE,yBAAyB,EAAE,CAAM;IAE7D,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,mBAAmB,CAAmB;IAC9C,OAAO,CAAC,2BAA2B,CAAyB;gBAEzC,OAAO,EAAE,OAAO;IAMtB,SAAS,CACrB,qBAAqB,CAAC,EAAE,yBAAyB,EAAE,GACjD,OAAO,CAAC,OAAO,CAAC;IAiJN,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBtB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAqCzC,kBAAkB,IAAI,IAAI;IAQ1B,0BAA0B,CACzB,oBAAoB,EAAE,yBAAyB,GAC7C,IAAI;IAcA,eAAe,IAAI,YAAY;IAK/B,iBAAiB,IAAI,cAAc;IAKnC,sBAAsB,IAAI,mBAAmB;IAM7C,wBAAwB,IAAI,qBAAqB;IAMjD,+BAA+B,IAAI,4BAA4B;IAM/D,4BAA4B,IAAI,yBAAyB;IAMzD,sBAAsB,IAAI,mBAAmB;IAM7C,4BAA4B,IAAI,yBAAyB;CAKhE"}
|
|
@@ -34,7 +34,7 @@ class DefaultClearingHouseAccountSubscriber {
|
|
|
34
34
|
this.subscriptionPromise = new Promise((res) => {
|
|
35
35
|
this.subscriptionPromiseResolver = res;
|
|
36
36
|
});
|
|
37
|
-
const statePublicKey = yield addresses_1.getClearingHouseStateAccountPublicKey(this.program.programId);
|
|
37
|
+
const statePublicKey = yield (0, addresses_1.getClearingHouseStateAccountPublicKey)(this.program.programId);
|
|
38
38
|
// create and activate main state account subscription
|
|
39
39
|
this.stateAccountSubscriber = new webSocketAccountSubscriber_1.WebSocketAccountSubscriber('state', this.program, statePublicKey);
|
|
40
40
|
yield this.stateAccountSubscriber.subscribe((data) => {
|
|
@@ -100,6 +100,23 @@ class DefaultClearingHouseAccountSubscriber {
|
|
|
100
100
|
return true;
|
|
101
101
|
});
|
|
102
102
|
}
|
|
103
|
+
fetch() {
|
|
104
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
105
|
+
if (!this.isSubscribed) {
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
const promises = this.optionalExtraSubscriptions
|
|
109
|
+
.map((optionalSubscription) => {
|
|
110
|
+
const subscriber = `${optionalSubscription}Subscriber`;
|
|
111
|
+
return this[subscriber].fetch();
|
|
112
|
+
})
|
|
113
|
+
.concat([
|
|
114
|
+
this.stateAccountSubscriber.fetch(),
|
|
115
|
+
this.marketsAccountSubscriber.fetch(),
|
|
116
|
+
]);
|
|
117
|
+
yield Promise.all(promises);
|
|
118
|
+
});
|
|
119
|
+
}
|
|
103
120
|
unsubscribe() {
|
|
104
121
|
return __awaiter(this, void 0, void 0, function* () {
|
|
105
122
|
if (!this.isSubscribed) {
|
|
@@ -14,7 +14,9 @@ export declare class DefaultUserAccountSubscriber implements UserAccountSubscrib
|
|
|
14
14
|
userPositionsAccountSubscriber: AccountSubscriber<UserPositionsAccount>;
|
|
15
15
|
constructor(program: Program, authority: PublicKey);
|
|
16
16
|
subscribe(): Promise<boolean>;
|
|
17
|
+
fetch(): Promise<void>;
|
|
17
18
|
unsubscribe(): Promise<void>;
|
|
19
|
+
assertIsSubscribed(): void;
|
|
18
20
|
getUserAccount(): UserAccount;
|
|
19
21
|
getUserPositionsAccount(): UserPositionsAccount;
|
|
20
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaultUserAccountSubscriber.d.ts","sourceRoot":"","sources":["../../src/accounts/defaultUserAccountSubscriber.ts"],"names":[],"mappings":";AAAA,OAAO,EACN,iBAAiB,
|
|
1
|
+
{"version":3,"file":"defaultUserAccountSubscriber.d.ts","sourceRoot":"","sources":["../../src/accounts/defaultUserAccountSubscriber.ts"],"names":[],"mappings":";AAAA,OAAO,EACN,iBAAiB,EAEjB,iBAAiB,EACjB,qBAAqB,EACrB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,kBAAkB,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAE7D,qBAAa,4BAA6B,YAAW,qBAAqB;IACzE,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,kBAAkB,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;IAClE,SAAS,EAAE,SAAS,CAAC;IAErB,yBAAyB,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAC1D,8BAA8B,EAAE,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;gBAErD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS;IAOnD,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAsC7B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAOtB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAWlC,kBAAkB,IAAI,IAAI;IAQnB,cAAc,IAAI,WAAW;IAK7B,uBAAuB,IAAI,oBAAoB;CAItD"}
|
|
@@ -10,6 +10,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.DefaultUserAccountSubscriber = void 0;
|
|
13
|
+
const types_1 = require("./types");
|
|
13
14
|
const events_1 = require("events");
|
|
14
15
|
const addresses_1 = require("../addresses");
|
|
15
16
|
const webSocketAccountSubscriber_1 = require("./webSocketAccountSubscriber");
|
|
@@ -25,7 +26,7 @@ class DefaultUserAccountSubscriber {
|
|
|
25
26
|
if (this.isSubscribed) {
|
|
26
27
|
return true;
|
|
27
28
|
}
|
|
28
|
-
const userPublicKey = yield addresses_1.getUserAccountPublicKey(this.program.programId, this.authority);
|
|
29
|
+
const userPublicKey = yield (0, addresses_1.getUserAccountPublicKey)(this.program.programId, this.authority);
|
|
29
30
|
this.userDataAccountSubscriber = new webSocketAccountSubscriber_1.WebSocketAccountSubscriber('user', this.program, userPublicKey);
|
|
30
31
|
yield this.userDataAccountSubscriber.subscribe((data) => {
|
|
31
32
|
this.eventEmitter.emit('userAccountData', data);
|
|
@@ -42,6 +43,14 @@ class DefaultUserAccountSubscriber {
|
|
|
42
43
|
return true;
|
|
43
44
|
});
|
|
44
45
|
}
|
|
46
|
+
fetch() {
|
|
47
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
48
|
+
yield Promise.all([
|
|
49
|
+
this.userDataAccountSubscriber.fetch(),
|
|
50
|
+
this.userPositionsAccountSubscriber.fetch(),
|
|
51
|
+
]);
|
|
52
|
+
});
|
|
53
|
+
}
|
|
45
54
|
unsubscribe() {
|
|
46
55
|
return __awaiter(this, void 0, void 0, function* () {
|
|
47
56
|
if (!this.isSubscribed) {
|
|
@@ -52,10 +61,17 @@ class DefaultUserAccountSubscriber {
|
|
|
52
61
|
this.isSubscribed = false;
|
|
53
62
|
});
|
|
54
63
|
}
|
|
64
|
+
assertIsSubscribed() {
|
|
65
|
+
if (!this.isSubscribed) {
|
|
66
|
+
throw new types_1.NotSubscribedError('You must call `subscribe` before using this function');
|
|
67
|
+
}
|
|
68
|
+
}
|
|
55
69
|
getUserAccount() {
|
|
70
|
+
this.assertIsSubscribed();
|
|
56
71
|
return this.userDataAccountSubscriber.data;
|
|
57
72
|
}
|
|
58
73
|
getUserPositionsAccount() {
|
|
74
|
+
this.assertIsSubscribed();
|
|
59
75
|
return this.userPositionsAccountSubscriber.data;
|
|
60
76
|
}
|
|
61
77
|
}
|
package/lib/accounts/types.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ import { EventEmitter } from 'events';
|
|
|
5
5
|
export interface AccountSubscriber<T> {
|
|
6
6
|
data?: T;
|
|
7
7
|
subscribe(onChange: (data: T) => void): Promise<void>;
|
|
8
|
+
fetch(): Promise<void>;
|
|
8
9
|
unsubscribe(): void;
|
|
9
10
|
}
|
|
10
11
|
export declare class NotSubscribedError extends Error {
|
|
@@ -27,6 +28,7 @@ export interface ClearingHouseAccountSubscriber {
|
|
|
27
28
|
isSubscribed: boolean;
|
|
28
29
|
optionalExtraSubscriptions: ClearingHouseAccountTypes[];
|
|
29
30
|
subscribe(optionalSubscriptions?: ClearingHouseAccountTypes[]): Promise<boolean>;
|
|
31
|
+
fetch(): Promise<void>;
|
|
30
32
|
unsubscribe(): Promise<void>;
|
|
31
33
|
getStateAccount(): StateAccount;
|
|
32
34
|
getMarketsAccount(): MarketsAccount;
|
|
@@ -46,6 +48,7 @@ export interface UserAccountSubscriber {
|
|
|
46
48
|
eventEmitter: StrictEventEmitter<EventEmitter, UserAccountEvents>;
|
|
47
49
|
isSubscribed: boolean;
|
|
48
50
|
subscribe(): Promise<boolean>;
|
|
51
|
+
fetch(): Promise<void>;
|
|
49
52
|
unsubscribe(): Promise<void>;
|
|
50
53
|
getUserAccount(): UserAccount;
|
|
51
54
|
getUserPositionsAccount(): UserPositionsAccount;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/accounts/types.ts"],"names":[],"mappings":";AAAA,OAAO,EACN,mBAAmB,EACnB,qBAAqB,EACrB,4BAA4B,EAC5B,yBAAyB,EACzB,yBAAyB,EACzB,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,WAAW,EACX,oBAAoB,EACpB,MAAM,UAAU,CAAC;AAClB,OAAO,kBAAkB,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,MAAM,WAAW,iBAAiB,CAAC,CAAC;IACnC,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,WAAW,IAAI,IAAI,CAAC;CACpB;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAC5C,IAAI,SAAwB;CAC5B;AAED,MAAM,WAAW,0BAA0B;IAC1C,kBAAkB,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;IACpD,oBAAoB,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IACxD,kCAAkC,EAAE,CACnC,OAAO,EAAE,4BAA4B,KACjC,IAAI,CAAC;IACV,+BAA+B,EAAE,CAAC,OAAO,EAAE,yBAAyB,KAAK,IAAI,CAAC;IAC9E,yBAAyB,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAClE,+BAA+B,EAAE,CAAC,OAAO,EAAE,yBAAyB,KAAK,IAAI,CAAC;IAC9E,2BAA2B,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACtE,yBAAyB,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAClE,MAAM,EAAE,IAAI,CAAC;CACb;AAED,oBAAY,yBAAyB,GAClC,qBAAqB,GACrB,uBAAuB,GACvB,8BAA8B,GAC9B,2BAA2B,GAC3B,qBAAqB,GACrB,2BAA2B,CAAC;AAE/B,MAAM,WAAW,8BAA8B;IAC9C,YAAY,EAAE,kBAAkB,CAAC,YAAY,EAAE,0BAA0B,CAAC,CAAC;IAC3E,YAAY,EAAE,OAAO,CAAC;IAEtB,0BAA0B,EAAE,yBAAyB,EAAE,CAAC;IAExD,SAAS,CACR,qBAAqB,CAAC,EAAE,yBAAyB,EAAE,GACjD,OAAO,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/accounts/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,8 +6,10 @@ export declare class WebSocketAccountSubscriber<T> implements AccountSubscriber<
|
|
|
6
6
|
accountName: string;
|
|
7
7
|
program: Program;
|
|
8
8
|
accountPublicKey: PublicKey;
|
|
9
|
+
onChange: (data: T) => void;
|
|
9
10
|
constructor(accountName: string, program: Program, accountPublicKey: PublicKey);
|
|
10
11
|
subscribe(onChange: (data: T) => void): Promise<void>;
|
|
12
|
+
fetch(): Promise<void>;
|
|
11
13
|
unsubscribe(): Promise<void>;
|
|
12
14
|
}
|
|
13
15
|
//# sourceMappingURL=webSocketAccountSubscriber.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webSocketAccountSubscriber.d.ts","sourceRoot":"","sources":["../../src/accounts/webSocketAccountSubscriber.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,qBAAa,0BAA0B,CAAC,CAAC,CAAE,YAAW,iBAAiB,CAAC,CAAC,CAAC;IACzE,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,EAAE,SAAS,CAAC;gBAG3B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,OAAO,EAChB,gBAAgB,EAAE,SAAS;IAOtB,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"webSocketAccountSubscriber.d.ts","sourceRoot":"","sources":["../../src/accounts/webSocketAccountSubscriber.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,qBAAa,0BAA0B,CAAC,CAAC,CAAE,YAAW,iBAAiB,CAAC,CAAC,CAAC;IACzE,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,EAAE,SAAS,CAAC;IAC5B,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;gBAG3B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,OAAO,EAChB,gBAAgB,EAAE,SAAS;IAOtB,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAYrD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAY5B,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;CAK5B"}
|
|
@@ -18,16 +18,26 @@ class WebSocketAccountSubscriber {
|
|
|
18
18
|
}
|
|
19
19
|
subscribe(onChange) {
|
|
20
20
|
return __awaiter(this, void 0, void 0, function* () {
|
|
21
|
-
this.
|
|
22
|
-
|
|
21
|
+
this.onChange = onChange;
|
|
22
|
+
yield this.fetch();
|
|
23
23
|
this.program.account[this.accountName]
|
|
24
24
|
.subscribe(this.accountPublicKey, this.program.provider.opts.commitment)
|
|
25
25
|
.on('change', (data) => __awaiter(this, void 0, void 0, function* () {
|
|
26
26
|
this.data = data;
|
|
27
|
-
onChange(data);
|
|
27
|
+
this.onChange(data);
|
|
28
28
|
}));
|
|
29
29
|
});
|
|
30
30
|
}
|
|
31
|
+
fetch() {
|
|
32
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
33
|
+
const newData = (yield this.program.account[this.accountName].fetch(this.accountPublicKey));
|
|
34
|
+
// if data has changed trigger update
|
|
35
|
+
if (JSON.stringify(newData) !== JSON.stringify(this.data)) {
|
|
36
|
+
this.data = newData;
|
|
37
|
+
this.onChange(this.data);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
}
|
|
31
41
|
unsubscribe() {
|
|
32
42
|
return this.program.account[this.accountName].unsubscribe(this.accountPublicKey);
|
|
33
43
|
}
|
package/lib/admin.js
CHANGED
|
@@ -69,7 +69,7 @@ class Admin extends clearingHouse_1.ClearingHouse {
|
|
|
69
69
|
const tradeHistory = anchor.web3.Keypair.generate();
|
|
70
70
|
const liquidationHistory = anchor.web3.Keypair.generate();
|
|
71
71
|
const curveHistory = anchor.web3.Keypair.generate();
|
|
72
|
-
const [clearingHouseStatePublicKey, clearingHouseNonce] = yield addresses_1.getClearingHouseStateAccountPublicKeyAndNonce(this.program.programId);
|
|
72
|
+
const [clearingHouseStatePublicKey, clearingHouseNonce] = yield (0, addresses_1.getClearingHouseStateAccountPublicKeyAndNonce)(this.program.programId);
|
|
73
73
|
const initializeTx = yield this.program.transaction.initialize(clearingHouseNonce, collateralVaultNonce, insuranceVaultNonce, adminControlsPrices, {
|
|
74
74
|
accounts: {
|
|
75
75
|
admin: this.wallet.publicKey,
|
|
@@ -166,8 +166,8 @@ class Admin extends clearingHouse_1.ClearingHouse {
|
|
|
166
166
|
moveAmmToPrice(marketIndex, targetPrice) {
|
|
167
167
|
return __awaiter(this, void 0, void 0, function* () {
|
|
168
168
|
const market = this.getMarket(marketIndex);
|
|
169
|
-
const [direction, tradeSize, _] = trade_1.calculateTargetPriceTrade(market, targetPrice);
|
|
170
|
-
const [newQuoteAssetAmount, newBaseAssetAmount] = amm_1.calculateAmmReservesAfterSwap(market.amm, 'quote', tradeSize, amm_1.getSwapDirection('quote', direction));
|
|
169
|
+
const [direction, tradeSize, _] = (0, trade_1.calculateTargetPriceTrade)(market, targetPrice);
|
|
170
|
+
const [newQuoteAssetAmount, newBaseAssetAmount] = (0, amm_1.calculateAmmReservesAfterSwap)(market.amm, 'quote', tradeSize, (0, amm_1.getSwapDirection)('quote', direction));
|
|
171
171
|
const state = this.getStateAccount();
|
|
172
172
|
return yield this.program.rpc.moveAmmPrice(newBaseAssetAmount, newQuoteAssetAmount, marketIndex, {
|
|
173
173
|
accounts: {
|
package/lib/clearingHouse.d.ts
CHANGED
|
@@ -38,6 +38,10 @@ export declare class ClearingHouse {
|
|
|
38
38
|
* @returns Promise<boolean> : SubscriptionSuccess
|
|
39
39
|
*/
|
|
40
40
|
subscribeToAll(): Promise<boolean>;
|
|
41
|
+
/**
|
|
42
|
+
* Forces the accountSubscriber to fetch account updates from rpc
|
|
43
|
+
*/
|
|
44
|
+
fetchAccounts(): Promise<void>;
|
|
41
45
|
/**
|
|
42
46
|
* Unsubscribe from all currently subscribed state accounts
|
|
43
47
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clearingHouse.d.ts","sourceRoot":"","sources":["../src/clearingHouse.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,EAAE,EAAO,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAMnE,OAAO,EACN,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,qBAAqB,EACrB,4BAA4B,EAC5B,yBAAyB,EACzB,OAAO,EACP,yBAAyB,EACzB,iBAAiB,EACjB,mBAAmB,EACnB,WAAW,
|
|
1
|
+
{"version":3,"file":"clearingHouse.d.ts","sourceRoot":"","sources":["../src/clearingHouse.ts"],"names":[],"mappings":"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"}
|
package/lib/clearingHouse.js
CHANGED
|
@@ -93,6 +93,14 @@ class ClearingHouse {
|
|
|
93
93
|
]);
|
|
94
94
|
});
|
|
95
95
|
}
|
|
96
|
+
/**
|
|
97
|
+
* Forces the accountSubscriber to fetch account updates from rpc
|
|
98
|
+
*/
|
|
99
|
+
fetchAccounts() {
|
|
100
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
101
|
+
yield this.accountSubscriber.fetch();
|
|
102
|
+
});
|
|
103
|
+
}
|
|
96
104
|
/**
|
|
97
105
|
* Unsubscribe from all currently subscribed state accounts
|
|
98
106
|
*/
|
|
@@ -107,7 +115,7 @@ class ClearingHouse {
|
|
|
107
115
|
if (this.statePublicKey) {
|
|
108
116
|
return this.statePublicKey;
|
|
109
117
|
}
|
|
110
|
-
this.statePublicKey = yield addresses_1.getClearingHouseStateAccountPublicKey(this.program.programId);
|
|
118
|
+
this.statePublicKey = yield (0, addresses_1.getClearingHouseStateAccountPublicKey)(this.program.programId);
|
|
111
119
|
return this.statePublicKey;
|
|
112
120
|
});
|
|
113
121
|
}
|
|
@@ -166,7 +174,7 @@ class ClearingHouse {
|
|
|
166
174
|
}
|
|
167
175
|
getInitializeUserInstructions() {
|
|
168
176
|
return __awaiter(this, void 0, void 0, function* () {
|
|
169
|
-
const [userPublicKey, userAccountNonce] = yield addresses_1.getUserAccountPublicKeyAndNonce(this.program.programId, this.wallet.publicKey);
|
|
177
|
+
const [userPublicKey, userAccountNonce] = yield (0, addresses_1.getUserAccountPublicKeyAndNonce)(this.program.programId, this.wallet.publicKey);
|
|
170
178
|
const remainingAccounts = [];
|
|
171
179
|
const optionalAccounts = {
|
|
172
180
|
whitelistToken: false,
|
|
@@ -205,7 +213,7 @@ class ClearingHouse {
|
|
|
205
213
|
if (this.userAccountPublicKey) {
|
|
206
214
|
return this.userAccountPublicKey;
|
|
207
215
|
}
|
|
208
|
-
this.userAccountPublicKey = yield addresses_1.getUserAccountPublicKey(this.program.programId, this.wallet.publicKey);
|
|
216
|
+
this.userAccountPublicKey = yield (0, addresses_1.getUserAccountPublicKey)(this.program.programId, this.wallet.publicKey);
|
|
209
217
|
return this.userAccountPublicKey;
|
|
210
218
|
});
|
|
211
219
|
}
|
|
@@ -295,7 +303,7 @@ class ClearingHouse {
|
|
|
295
303
|
}
|
|
296
304
|
withdrawCollateral(amount, collateralAccountPublicKey) {
|
|
297
305
|
return __awaiter(this, void 0, void 0, function* () {
|
|
298
|
-
return this.txSender.send(utils_1.wrapInTx(yield this.getWithdrawCollateralIx(amount, collateralAccountPublicKey)), [], this.opts);
|
|
306
|
+
return this.txSender.send((0, utils_1.wrapInTx)(yield this.getWithdrawCollateralIx(amount, collateralAccountPublicKey)), [], this.opts);
|
|
299
307
|
});
|
|
300
308
|
}
|
|
301
309
|
getWithdrawCollateralIx(amount, collateralAccountPublicKey) {
|
|
@@ -324,7 +332,7 @@ class ClearingHouse {
|
|
|
324
332
|
}
|
|
325
333
|
openPosition(direction, amount, marketIndex, limitPrice, discountToken, referrer) {
|
|
326
334
|
return __awaiter(this, void 0, void 0, function* () {
|
|
327
|
-
return yield this.txSender.send(utils_1.wrapInTx(yield this.getOpenPositionIx(direction, amount, marketIndex, limitPrice, discountToken, referrer)), [], this.opts);
|
|
335
|
+
return yield this.txSender.send((0, utils_1.wrapInTx)(yield this.getOpenPositionIx(direction, amount, marketIndex, limitPrice, discountToken, referrer)), [], this.opts);
|
|
328
336
|
});
|
|
329
337
|
}
|
|
330
338
|
getOpenPositionIx(direction, amount, marketIndex, limitPrice, discountToken, referrer) {
|
|
@@ -382,7 +390,7 @@ class ClearingHouse {
|
|
|
382
390
|
*/
|
|
383
391
|
closePosition(marketIndex, discountToken, referrer) {
|
|
384
392
|
return __awaiter(this, void 0, void 0, function* () {
|
|
385
|
-
return yield this.txSender.send(utils_1.wrapInTx(yield this.getClosePositionIx(marketIndex, discountToken, referrer)), [], this.opts);
|
|
393
|
+
return yield this.txSender.send((0, utils_1.wrapInTx)(yield this.getClosePositionIx(marketIndex, discountToken, referrer)), [], this.opts);
|
|
386
394
|
});
|
|
387
395
|
}
|
|
388
396
|
getClosePositionIx(marketIndex, discountToken, referrer) {
|
|
@@ -430,7 +438,7 @@ class ClearingHouse {
|
|
|
430
438
|
}
|
|
431
439
|
liquidate(liquidateeUserAccountPublicKey) {
|
|
432
440
|
return __awaiter(this, void 0, void 0, function* () {
|
|
433
|
-
return this.txSender.send(utils_1.wrapInTx(yield this.getLiquidateIx(liquidateeUserAccountPublicKey)), [], this.opts);
|
|
441
|
+
return this.txSender.send((0, utils_1.wrapInTx)(yield this.getLiquidateIx(liquidateeUserAccountPublicKey)), [], this.opts);
|
|
434
442
|
});
|
|
435
443
|
}
|
|
436
444
|
getLiquidateIx(liquidateeUserAccountPublicKey) {
|
|
@@ -474,7 +482,7 @@ class ClearingHouse {
|
|
|
474
482
|
}
|
|
475
483
|
updateFundingRate(oracle, marketIndex) {
|
|
476
484
|
return __awaiter(this, void 0, void 0, function* () {
|
|
477
|
-
return this.txSender.send(utils_1.wrapInTx(yield this.getUpdateFundingRateIx(oracle, marketIndex)), [], this.opts);
|
|
485
|
+
return this.txSender.send((0, utils_1.wrapInTx)(yield this.getUpdateFundingRateIx(oracle, marketIndex)), [], this.opts);
|
|
478
486
|
});
|
|
479
487
|
}
|
|
480
488
|
getUpdateFundingRateIx(oracle, marketIndex) {
|
|
@@ -492,7 +500,7 @@ class ClearingHouse {
|
|
|
492
500
|
}
|
|
493
501
|
settleFundingPayment(userAccount, userPositionsAccount) {
|
|
494
502
|
return __awaiter(this, void 0, void 0, function* () {
|
|
495
|
-
return this.txSender.send(utils_1.wrapInTx(yield this.getSettleFundingPaymentIx(userAccount, userPositionsAccount)), [], this.opts);
|
|
503
|
+
return this.txSender.send((0, utils_1.wrapInTx)(yield this.getSettleFundingPaymentIx(userAccount, userPositionsAccount)), [], this.opts);
|
|
496
504
|
});
|
|
497
505
|
}
|
|
498
506
|
getSettleFundingPaymentIx(userAccount, userPositionsAccount) {
|
|
@@ -21,6 +21,10 @@ export declare class ClearingHouseUser {
|
|
|
21
21
|
* @returns SusbcriptionSuccess result
|
|
22
22
|
*/
|
|
23
23
|
subscribe(): Promise<boolean>;
|
|
24
|
+
/**
|
|
25
|
+
* Forces the accountSubscriber to fetch account updates from rpc
|
|
26
|
+
*/
|
|
27
|
+
fetchAccounts(): Promise<void>;
|
|
24
28
|
unsubscribe(): Promise<void>;
|
|
25
29
|
getUserAccount(): UserAccount;
|
|
26
30
|
getUserPositionsAccount(): UserPositionsAccount;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clearingHouseUser.d.ts","sourceRoot":"","sources":["../src/clearingHouseUser.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,MAAM,OAAO,CAAC;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,kBAAkB,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAc1E,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE5E,OAAO,EAKN,iBAAiB,
|
|
1
|
+
{"version":3,"file":"clearingHouseUser.d.ts","sourceRoot":"","sources":["../src/clearingHouseUser.ts"],"names":[],"mappings":"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"}
|
package/lib/clearingHouseUser.js
CHANGED
|
@@ -43,6 +43,14 @@ class ClearingHouseUser {
|
|
|
43
43
|
return this.isSubscribed;
|
|
44
44
|
});
|
|
45
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* Forces the accountSubscriber to fetch account updates from rpc
|
|
48
|
+
*/
|
|
49
|
+
fetchAccounts() {
|
|
50
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
51
|
+
yield this.accountSubscriber.fetch();
|
|
52
|
+
});
|
|
53
|
+
}
|
|
46
54
|
unsubscribe() {
|
|
47
55
|
return __awaiter(this, void 0, void 0, function* () {
|
|
48
56
|
yield this.accountSubscriber.unsubscribe();
|
|
@@ -76,7 +84,7 @@ class ClearingHouseUser {
|
|
|
76
84
|
if (this.userAccountPublicKey) {
|
|
77
85
|
return this.userAccountPublicKey;
|
|
78
86
|
}
|
|
79
|
-
this.userAccountPublicKey = yield addresses_1.getUserAccountPublicKey(this.clearingHouse.program.programId, this.authority);
|
|
87
|
+
this.userAccountPublicKey = yield (0, addresses_1.getUserAccountPublicKey)(this.clearingHouse.program.programId, this.authority);
|
|
80
88
|
return this.userAccountPublicKey;
|
|
81
89
|
});
|
|
82
90
|
}
|
|
@@ -114,7 +122,7 @@ class ClearingHouseUser {
|
|
|
114
122
|
.positions.filter((pos) => marketIndex ? pos.marketIndex === marketIndex : true)
|
|
115
123
|
.reduce((pnl, marketPosition) => {
|
|
116
124
|
const market = this.clearingHouse.getMarket(marketPosition.marketIndex);
|
|
117
|
-
return pnl.add(_1.calculatePositionPNL(market, marketPosition, withFunding));
|
|
125
|
+
return pnl.add((0, _1.calculatePositionPNL)(market, marketPosition, withFunding));
|
|
118
126
|
}, numericConstants_1.ZERO);
|
|
119
127
|
}
|
|
120
128
|
/**
|
|
@@ -126,7 +134,7 @@ class ClearingHouseUser {
|
|
|
126
134
|
.positions.filter((pos) => marketIndex ? pos.marketIndex === marketIndex : true)
|
|
127
135
|
.reduce((pnl, marketPosition) => {
|
|
128
136
|
const market = this.clearingHouse.getMarket(marketPosition.marketIndex);
|
|
129
|
-
return pnl.add(_1.calculatePositionFundingPNL(market, marketPosition));
|
|
137
|
+
return pnl.add((0, _1.calculatePositionFundingPNL)(market, marketPosition));
|
|
130
138
|
}, numericConstants_1.ZERO);
|
|
131
139
|
}
|
|
132
140
|
/**
|
|
@@ -144,7 +152,7 @@ class ClearingHouseUser {
|
|
|
144
152
|
getTotalPositionValue() {
|
|
145
153
|
return this.getUserPositionsAccount().positions.reduce((positionValue, marketPosition) => {
|
|
146
154
|
const market = this.clearingHouse.getMarket(marketPosition.marketIndex);
|
|
147
|
-
return positionValue.add(_1.calculateBaseAssetValue(market, marketPosition));
|
|
155
|
+
return positionValue.add((0, _1.calculateBaseAssetValue)(market, marketPosition));
|
|
148
156
|
}, numericConstants_1.ZERO);
|
|
149
157
|
}
|
|
150
158
|
/**
|
|
@@ -154,7 +162,7 @@ class ClearingHouseUser {
|
|
|
154
162
|
getPositionValue(marketIndex) {
|
|
155
163
|
const userPosition = this.getUserPosition(marketIndex) || this.getEmptyPosition(marketIndex);
|
|
156
164
|
const market = this.clearingHouse.getMarket(userPosition.marketIndex);
|
|
157
|
-
return _1.calculateBaseAssetValue(market, userPosition);
|
|
165
|
+
return (0, _1.calculateBaseAssetValue)(market, userPosition);
|
|
158
166
|
}
|
|
159
167
|
getPositionSide(currentPosition) {
|
|
160
168
|
if (currentPosition.baseAssetAmount.gt(numericConstants_1.ZERO)) {
|
|
@@ -173,10 +181,10 @@ class ClearingHouseUser {
|
|
|
173
181
|
*/
|
|
174
182
|
getPositionEstimatedExitPriceAndPnl(position, amountToClose) {
|
|
175
183
|
const market = this.clearingHouse.getMarket(position.marketIndex);
|
|
176
|
-
const entryPrice = position_1.calculateEntryPrice(position);
|
|
184
|
+
const entryPrice = (0, position_1.calculateEntryPrice)(position);
|
|
177
185
|
if (amountToClose) {
|
|
178
186
|
if (amountToClose.eq(numericConstants_1.ZERO)) {
|
|
179
|
-
return [_1.calculateMarkPrice(market), numericConstants_1.ZERO];
|
|
187
|
+
return [(0, _1.calculateMarkPrice)(market), numericConstants_1.ZERO];
|
|
180
188
|
}
|
|
181
189
|
position = {
|
|
182
190
|
baseAssetAmount: amountToClose,
|
|
@@ -185,7 +193,7 @@ class ClearingHouseUser {
|
|
|
185
193
|
quoteAssetAmount: position.quoteAssetAmount,
|
|
186
194
|
};
|
|
187
195
|
}
|
|
188
|
-
const baseAssetValue = _1.calculateBaseAssetValue(market, position);
|
|
196
|
+
const baseAssetValue = (0, _1.calculateBaseAssetValue)(market, position);
|
|
189
197
|
if (position.baseAssetAmount.eq(numericConstants_1.ZERO)) {
|
|
190
198
|
return [numericConstants_1.ZERO, numericConstants_1.ZERO];
|
|
191
199
|
}
|
|
@@ -292,7 +300,7 @@ class ClearingHouseUser {
|
|
|
292
300
|
|
|
293
301
|
for 10x long, BTC down $400:
|
|
294
302
|
3. (10k - 4k) / (100k - 4k) = 6k/96k => .0625 */
|
|
295
|
-
const currentPrice = _1.calculateMarkPrice(this.clearingHouse.getMarket(targetMarket.marketIndex));
|
|
303
|
+
const currentPrice = (0, _1.calculateMarkPrice)(this.clearingHouse.getMarket(targetMarket.marketIndex));
|
|
296
304
|
const totalCollateralUSDC = this.getTotalCollateral();
|
|
297
305
|
// calculate the total position value ignoring any value from the target market of the trade
|
|
298
306
|
const totalCurrentPositionValueIgnoringTargetUSDC = this.getTotalPositionValueExcludingMarket(targetMarket.marketIndex);
|
|
@@ -307,7 +315,7 @@ class ClearingHouseUser {
|
|
|
307
315
|
quoteAssetAmount: new bn_js_1.default(0),
|
|
308
316
|
};
|
|
309
317
|
const market = this.clearingHouse.getMarket(proposedMarketPosition.marketIndex);
|
|
310
|
-
const proposedMarketPositionValueUSDC = _1.calculateBaseAssetValue(market, proposedMarketPosition);
|
|
318
|
+
const proposedMarketPositionValueUSDC = (0, _1.calculateBaseAssetValue)(market, proposedMarketPosition);
|
|
311
319
|
// total position value after trade
|
|
312
320
|
const targetTotalPositionValueUSDC = totalCurrentPositionValueIgnoringTargetUSDC.add(proposedMarketPositionValueUSDC);
|
|
313
321
|
let totalFreeCollateralUSDC = this.getTotalCollateral().sub(this.getTotalPositionValue()
|
|
@@ -392,7 +400,7 @@ class ClearingHouseUser {
|
|
|
392
400
|
quoteAssetAmount: new bn_js_1.default(0),
|
|
393
401
|
};
|
|
394
402
|
const market = this.clearingHouse.getMarket(proposedMarketPosition.marketIndex);
|
|
395
|
-
const proposedMarketPositionValueUSDC = _1.calculateBaseAssetValue(market, proposedMarketPosition);
|
|
403
|
+
const proposedMarketPositionValueUSDC = (0, _1.calculateBaseAssetValue)(market, proposedMarketPosition);
|
|
396
404
|
// total position value after trade
|
|
397
405
|
const targetTotalPositionValueUSDC = totalCurrentPositionValueIgnoringTargetUSDC.add(proposedMarketPositionValueUSDC);
|
|
398
406
|
let totalFreeCollateralUSDC = tc.sub(totalCurrentPositionValueIgnoringTargetUSDC
|
|
@@ -404,7 +412,7 @@ class ClearingHouseUser {
|
|
|
404
412
|
.div(this.getMaxLeverage('Partial')));
|
|
405
413
|
}
|
|
406
414
|
let priceDelt;
|
|
407
|
-
if (
|
|
415
|
+
if (proposedBaseAssetAmount.lt(numericConstants_1.ZERO)) {
|
|
408
416
|
priceDelt = tc
|
|
409
417
|
.mul(thisLev)
|
|
410
418
|
.sub(tpv)
|
|
@@ -418,7 +426,16 @@ class ClearingHouseUser {
|
|
|
418
426
|
.mul(numericConstants_1.PRICE_TO_QUOTE_PRECISION)
|
|
419
427
|
.div(thisLev.sub(new bn_js_1.default(1)));
|
|
420
428
|
}
|
|
421
|
-
|
|
429
|
+
let currentPrice;
|
|
430
|
+
if (positionBaseSizeChange.eq(numericConstants_1.ZERO)) {
|
|
431
|
+
currentPrice = (0, _1.calculateMarkPrice)(this.clearingHouse.getMarket(targetMarket.marketIndex));
|
|
432
|
+
}
|
|
433
|
+
else {
|
|
434
|
+
const direction = positionBaseSizeChange.gt(numericConstants_1.ZERO)
|
|
435
|
+
? _1.PositionDirection.LONG
|
|
436
|
+
: _1.PositionDirection.SHORT;
|
|
437
|
+
currentPrice = (0, _1.calculateTradeSlippage)(direction, positionBaseSizeChange.abs(), this.clearingHouse.getMarket(targetMarket.marketIndex), 'base')[3]; // newPrice after swap
|
|
438
|
+
}
|
|
422
439
|
// if the position value after the trade is less than total collateral, there is no liq price
|
|
423
440
|
if (targetTotalPositionValueUSDC.lte(totalFreeCollateralUSDC) &&
|
|
424
441
|
proposedMarketPosition.baseAssetAmount.gt(numericConstants_1.ZERO)) {
|
|
@@ -429,6 +446,9 @@ class ClearingHouseUser {
|
|
|
429
446
|
const eatMargin2 = priceDelt
|
|
430
447
|
.mul(numericConstants_1.AMM_RESERVE_PRECISION)
|
|
431
448
|
.div(proposedBaseAssetAmount);
|
|
449
|
+
if (eatMargin2.gt(currentPrice)) {
|
|
450
|
+
return new bn_js_1.default(-1);
|
|
451
|
+
}
|
|
432
452
|
const liqPrice = currentPrice.sub(eatMargin2);
|
|
433
453
|
return liqPrice;
|
|
434
454
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markets.d.ts","sourceRoot":"","sources":["../../src/constants/markets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,OAAO,CAAC;AAEvB,aAAK,MAAM,GAAG;IACb,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,EAAE,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"markets.d.ts","sourceRoot":"","sources":["../../src/constants/markets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,OAAO,CAAC;AAEvB,aAAK,MAAM,GAAG;IACb,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,EAAE,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,MAAM,EAgE3B,CAAC"}
|
package/lib/constants/markets.js
CHANGED
|
@@ -55,4 +55,18 @@ exports.Markets = [
|
|
|
55
55
|
devnetPythOracle: 'FBirwuDFuRAu4iSGc7RGxN5koHB7EJM1wbCmyPuQoGur',
|
|
56
56
|
mainnetPythOracle: '7KVswB9vkCgeM3SHP7aGDijvdRAHK8P5wi9JXViCrtYh',
|
|
57
57
|
},
|
|
58
|
+
{
|
|
59
|
+
symbol: 'ATOM-PERP',
|
|
60
|
+
baseAssetSymbol: 'ATOM',
|
|
61
|
+
marketIndex: new bn_js_1.default(7),
|
|
62
|
+
devnetPythOracle: '7YAze8qFUMkBnyLVdKT4TFUUFui99EwS5gfRArMcrvFk',
|
|
63
|
+
mainnetPythOracle: 'CrCpTerNqtZvqLcKqz1k13oVeXV9WkMD2zA9hBKXrsbN',
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
symbol: 'DOT-PERP',
|
|
67
|
+
baseAssetSymbol: 'DOT',
|
|
68
|
+
marketIndex: new bn_js_1.default(8),
|
|
69
|
+
devnetPythOracle: '4dqq5VBpN4EwYb7wyywjjfknvMKu7m78j9mKZRXTj462',
|
|
70
|
+
mainnetPythOracle: 'EcV1X1gY2yb4KXxjVQtTHTbioum2gvmPnFk4zYAt7zne',
|
|
71
|
+
},
|
|
58
72
|
];
|
|
@@ -21,7 +21,7 @@ const getTokenAddress = (mintAddress, userPubKey) => {
|
|
|
21
21
|
exports.getTokenAddress = getTokenAddress;
|
|
22
22
|
const main = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
23
23
|
// Initialize Drift SDK
|
|
24
|
-
const sdkConfig = __2.initialize({ env: 'devnet' });
|
|
24
|
+
const sdkConfig = (0, __2.initialize)({ env: 'devnet' });
|
|
25
25
|
// Set up the Wallet and Provider
|
|
26
26
|
const privateKey = process.env.BOT_PRIVATE_KEY; // stored as an array string
|
|
27
27
|
const keypair = web3_js_1.Keypair.fromSecretKey(Uint8Array.from(JSON.parse(privateKey)));
|
|
@@ -35,7 +35,7 @@ const main = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
35
35
|
const lamportsBalance = yield connection.getBalance(wallet.publicKey);
|
|
36
36
|
console.log('SOL balance:', lamportsBalance / Math.pow(10, 9));
|
|
37
37
|
// Misc. other things to set up
|
|
38
|
-
const usdcTokenAddress = yield exports.getTokenAddress(sdkConfig.USDC_MINT_ADDRESS, wallet.publicKey.toString());
|
|
38
|
+
const usdcTokenAddress = yield (0, exports.getTokenAddress)(sdkConfig.USDC_MINT_ADDRESS, wallet.publicKey.toString());
|
|
39
39
|
// Set up the Drift Clearing House
|
|
40
40
|
const clearingHousePublicKey = new web3_js_1.PublicKey(sdkConfig.CLEARING_HOUSE_PROGRAM_ID);
|
|
41
41
|
const clearingHouse = __2.ClearingHouse.from(connection, provider.wallet, clearingHousePublicKey);
|
|
@@ -47,26 +47,25 @@ const main = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
47
47
|
if (!userAccountExists) {
|
|
48
48
|
//// Create a Clearing House account by Depositing some USDC ($10,000 in this case)
|
|
49
49
|
const depositAmount = new anchor_1.BN(10000).mul(__2.QUOTE_PRECISION);
|
|
50
|
-
yield clearingHouse.initializeUserAccountAndDepositCollateral(depositAmount, yield exports.getTokenAddress(usdcTokenAddress.toString(), wallet.publicKey.toString()));
|
|
50
|
+
yield clearingHouse.initializeUserAccountAndDepositCollateral(depositAmount, yield (0, exports.getTokenAddress)(usdcTokenAddress.toString(), wallet.publicKey.toString()));
|
|
51
51
|
}
|
|
52
52
|
yield user.subscribe();
|
|
53
53
|
// Get current price
|
|
54
54
|
const solMarketInfo = __2.Markets.find((market) => market.baseAssetSymbol === 'SOL');
|
|
55
|
-
const currentMarketPrice = __2.calculateMarkPrice(clearingHouse.getMarket(solMarketInfo.marketIndex));
|
|
56
|
-
const formattedPrice = __2.convertToNumber(currentMarketPrice, __2.QUOTE_PRECISION);
|
|
55
|
+
const currentMarketPrice = (0, __2.calculateMarkPrice)(clearingHouse.getMarket(solMarketInfo.marketIndex));
|
|
56
|
+
const formattedPrice = (0, __2.convertToNumber)(currentMarketPrice, __2.QUOTE_PRECISION);
|
|
57
57
|
console.log(`Current Market Price is $${formattedPrice}`);
|
|
58
58
|
// Estimate the slippage for a $5000 LONG trade
|
|
59
59
|
const solMarketAccount = clearingHouse.getMarket(solMarketInfo.marketIndex);
|
|
60
|
-
const
|
|
60
|
+
const longAmount = new anchor_1.BN(5000).mul(__2.QUOTE_PRECISION);
|
|
61
|
+
const slippage = (0, __2.convertToNumber)((0, __2.calculateTradeSlippage)(__2.PositionDirection.LONG, longAmount, solMarketAccount)[0], __2.MARK_PRICE_PRECISION);
|
|
61
62
|
console.log(`Slippage for a $5000 LONG on the SOL market would be $${slippage}`);
|
|
62
63
|
// Make a $5000 LONG trade
|
|
63
|
-
yield clearingHouse.openPosition(__2.PositionDirection.LONG,
|
|
64
|
+
yield clearingHouse.openPosition(__2.PositionDirection.LONG, longAmount, solMarketInfo.marketIndex);
|
|
64
65
|
console.log(`LONGED $5000 SOL`);
|
|
65
|
-
// Make a $5000 LONG trade
|
|
66
|
-
yield clearingHouse.openPosition(__2.PositionDirection.LONG, new anchor_1.BN(5000).mul(__2.QUOTE_PRECISION), solMarketInfo.marketIndex);
|
|
67
|
-
console.log(`LONGED $5000 worth of SOL`);
|
|
68
66
|
// Reduce the position by $2000
|
|
69
|
-
|
|
67
|
+
const reduceAmount = new anchor_1.BN(2000).mul(__2.QUOTE_PRECISION);
|
|
68
|
+
yield clearingHouse.openPosition(__2.PositionDirection.SHORT, reduceAmount, solMarketInfo.marketIndex);
|
|
70
69
|
// Close the rest of the position
|
|
71
70
|
yield clearingHouse.closePosition(solMarketInfo.marketIndex);
|
|
72
71
|
});
|
package/lib/index.d.ts
CHANGED
|
@@ -21,5 +21,7 @@ export * from './types';
|
|
|
21
21
|
export * from './math/utils';
|
|
22
22
|
export * from './config';
|
|
23
23
|
export * from './constants/numericConstants';
|
|
24
|
+
export * from './util/computeUnits';
|
|
25
|
+
export * from './util/tps';
|
|
24
26
|
export { BN };
|
|
25
27
|
//# sourceMappingURL=index.d.ts.map
|