@drift-labs/sdk 0.1.17 → 0.1.18-master.3
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 -1
- package/lib/accounts/defaultClearingHouseAccountSubscriber.d.ts +3 -3
- package/lib/accounts/defaultClearingHouseAccountSubscriber.d.ts.map +1 -1
- package/lib/accounts/defaultClearingHouseAccountSubscriber.js +2 -2
- package/lib/accounts/defaultUserAccountSubscriber.js +3 -3
- package/lib/accounts/types.d.ts +4 -4
- package/lib/accounts/types.d.ts.map +1 -1
- package/lib/admin.d.ts +1 -0
- package/lib/admin.d.ts.map +1 -1
- package/lib/admin.js +27 -5
- package/lib/clearingHouse.d.ts +2 -2
- package/lib/clearingHouse.d.ts.map +1 -1
- package/lib/clearingHouse.js +9 -9
- package/lib/clearingHouseUser.js +13 -13
- package/lib/examples/makeTradeExample.js +6 -6
- package/lib/idl/clearing_house.json +156 -9
- package/lib/math/amm.js +7 -7
- package/lib/math/conversion.js +1 -1
- package/lib/math/funding.d.ts.map +1 -1
- package/lib/math/funding.js +5 -2
- package/lib/math/market.js +1 -1
- package/lib/math/position.js +1 -1
- package/lib/math/trade.js +16 -16
- package/lib/pythClient.js +1 -1
- package/lib/types.d.ts +6 -3
- package/lib/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/accounts/defaultClearingHouseAccountSubscriber.ts +5 -5
- package/src/accounts/defaultUserAccountSubscriber.ts +2 -2
- package/src/accounts/types.ts +4 -4
- package/src/admin.ts +27 -2
- package/src/clearingHouse.ts +2 -2
- package/src/idl/clearing_house.json +156 -9
- package/src/math/funding.ts +5 -1
- package/src/types.ts +6 -3
package/README.md
CHANGED
|
@@ -84,7 +84,7 @@ convertToNumber(new BN(10500), new BN(1000)); // = 10.5
|
|
|
84
84
|
### Setting up an account and making a trade
|
|
85
85
|
|
|
86
86
|
```typescript
|
|
87
|
-
import { BN, Provider
|
|
87
|
+
import { BN, Provider } from '@project-serum/anchor';
|
|
88
88
|
import { Token, TOKEN_PROGRAM_ID } from '@solana/spl-token';
|
|
89
89
|
import { Connection, Keypair, PublicKey } from '@solana/web3.js';
|
|
90
90
|
import {
|
|
@@ -98,6 +98,7 @@ import {
|
|
|
98
98
|
calculateTradeSlippage,
|
|
99
99
|
MARK_PRICE_PRECISION,
|
|
100
100
|
QUOTE_PRECISION,
|
|
101
|
+
Wallet
|
|
101
102
|
} from '@drift-labs/sdk';
|
|
102
103
|
|
|
103
104
|
export const getTokenAddress = (
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { ClearingHouseAccountSubscriber, ClearingHouseAccountEvents, ClearingHouseAccountTypes } from './types';
|
|
3
3
|
import { AccountSubscriber } from './types';
|
|
4
|
-
import {
|
|
4
|
+
import { DepositHistoryAccount, ExtendedCurveHistoryAccount, FundingPaymentHistoryAccount, FundingRateHistoryAccount, LiquidationHistoryAccount, MarketsAccount, StateAccount, TradeHistoryAccount } from '../types';
|
|
5
5
|
import { Program } from '@project-serum/anchor';
|
|
6
6
|
import StrictEventEmitter from 'strict-event-emitter-types';
|
|
7
7
|
import { EventEmitter } from 'events';
|
|
@@ -15,7 +15,7 @@ export declare class DefaultClearingHouseAccountSubscriber implements ClearingHo
|
|
|
15
15
|
depositHistoryAccountSubscriber?: AccountSubscriber<DepositHistoryAccount>;
|
|
16
16
|
fundingPaymentHistoryAccountSubscriber?: AccountSubscriber<FundingPaymentHistoryAccount>;
|
|
17
17
|
fundingRateHistoryAccountSubscriber?: AccountSubscriber<FundingRateHistoryAccount>;
|
|
18
|
-
curveHistoryAccountSubscriber?: AccountSubscriber<
|
|
18
|
+
curveHistoryAccountSubscriber?: AccountSubscriber<ExtendedCurveHistoryAccount>;
|
|
19
19
|
liquidationHistoryAccountSubscriber?: AccountSubscriber<LiquidationHistoryAccount>;
|
|
20
20
|
optionalExtraSubscriptions: ClearingHouseAccountTypes[];
|
|
21
21
|
private isSubscribing;
|
|
@@ -33,7 +33,7 @@ export declare class DefaultClearingHouseAccountSubscriber implements ClearingHo
|
|
|
33
33
|
getDepositHistoryAccount(): DepositHistoryAccount;
|
|
34
34
|
getFundingPaymentHistoryAccount(): FundingPaymentHistoryAccount;
|
|
35
35
|
getFundingRateHistoryAccount(): FundingRateHistoryAccount;
|
|
36
|
-
getCurveHistoryAccount():
|
|
36
|
+
getCurveHistoryAccount(): ExtendedCurveHistoryAccount;
|
|
37
37
|
getLiquidationHistoryAccount(): LiquidationHistoryAccount;
|
|
38
38
|
}
|
|
39
39
|
//# sourceMappingURL=defaultClearingHouseAccountSubscriber.d.ts.map
|
|
@@ -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,
|
|
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,qBAAqB,EACrB,2BAA2B,EAC3B,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,2BAA2B,CAAC,CAAC;IAC/E,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,2BAA2B;IAMrD,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) => {
|
|
@@ -54,7 +54,7 @@ class DefaultClearingHouseAccountSubscriber {
|
|
|
54
54
|
new webSocketAccountSubscriber_1.WebSocketAccountSubscriber('fundingPaymentHistory', this.program, state.fundingPaymentHistory);
|
|
55
55
|
this.fundingRateHistoryAccountSubscriber = new webSocketAccountSubscriber_1.WebSocketAccountSubscriber('fundingRateHistory', this.program, state.fundingRateHistory);
|
|
56
56
|
this.liquidationHistoryAccountSubscriber = new webSocketAccountSubscriber_1.WebSocketAccountSubscriber('liquidationHistory', this.program, state.liquidationHistory);
|
|
57
|
-
this.curveHistoryAccountSubscriber = new webSocketAccountSubscriber_1.WebSocketAccountSubscriber('
|
|
57
|
+
this.curveHistoryAccountSubscriber = new webSocketAccountSubscriber_1.WebSocketAccountSubscriber('extendedCurveHistory', this.program, state.extendedCurveHistory);
|
|
58
58
|
const extraSusbcribersToUse = [];
|
|
59
59
|
if (optionalSubscriptions === null || optionalSubscriptions === void 0 ? void 0 : optionalSubscriptions.includes('tradeHistoryAccount'))
|
|
60
60
|
extraSusbcribersToUse.push({
|
|
@@ -26,7 +26,7 @@ class DefaultUserAccountSubscriber {
|
|
|
26
26
|
if (this.isSubscribed) {
|
|
27
27
|
return true;
|
|
28
28
|
}
|
|
29
|
-
const userPublicKey = yield addresses_1.getUserAccountPublicKey(this.program.programId, this.authority);
|
|
29
|
+
const userPublicKey = yield (0, addresses_1.getUserAccountPublicKey)(this.program.programId, this.authority);
|
|
30
30
|
this.userDataAccountSubscriber = new webSocketAccountSubscriber_1.WebSocketAccountSubscriber('user', this.program, userPublicKey);
|
|
31
31
|
yield this.userDataAccountSubscriber.subscribe((data) => {
|
|
32
32
|
this.eventEmitter.emit('userAccountData', data);
|
|
@@ -56,8 +56,8 @@ class DefaultUserAccountSubscriber {
|
|
|
56
56
|
if (!this.isSubscribed) {
|
|
57
57
|
return;
|
|
58
58
|
}
|
|
59
|
-
this.userDataAccountSubscriber.unsubscribe();
|
|
60
|
-
this.userPositionsAccountSubscriber.unsubscribe();
|
|
59
|
+
yield this.userDataAccountSubscriber.unsubscribe();
|
|
60
|
+
yield this.userPositionsAccountSubscriber.unsubscribe();
|
|
61
61
|
this.isSubscribed = false;
|
|
62
62
|
});
|
|
63
63
|
}
|
package/lib/accounts/types.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import {
|
|
2
|
+
import { DepositHistoryAccount, ExtendedCurveHistoryAccount, FundingPaymentHistoryAccount, FundingRateHistoryAccount, LiquidationHistoryAccount, MarketsAccount, StateAccount, TradeHistoryAccount, UserAccount, UserPositionsAccount } from '../types';
|
|
3
3
|
import StrictEventEmitter from 'strict-event-emitter-types';
|
|
4
4
|
import { EventEmitter } from 'events';
|
|
5
5
|
export interface AccountSubscriber<T> {
|
|
6
6
|
data?: T;
|
|
7
7
|
subscribe(onChange: (data: T) => void): Promise<void>;
|
|
8
8
|
fetch(): Promise<void>;
|
|
9
|
-
unsubscribe(): void
|
|
9
|
+
unsubscribe(): Promise<void>;
|
|
10
10
|
}
|
|
11
11
|
export declare class NotSubscribedError extends Error {
|
|
12
12
|
name: string;
|
|
@@ -19,7 +19,7 @@ export interface ClearingHouseAccountEvents {
|
|
|
19
19
|
tradeHistoryAccountUpdate: (payload: TradeHistoryAccount) => void;
|
|
20
20
|
liquidationHistoryAccountUpdate: (payload: LiquidationHistoryAccount) => void;
|
|
21
21
|
depositHistoryAccountUpdate: (payload: DepositHistoryAccount) => void;
|
|
22
|
-
curveHistoryAccountUpdate: (payload:
|
|
22
|
+
curveHistoryAccountUpdate: (payload: ExtendedCurveHistoryAccount) => void;
|
|
23
23
|
update: void;
|
|
24
24
|
}
|
|
25
25
|
export declare type ClearingHouseAccountTypes = 'tradeHistoryAccount' | 'depositHistoryAccount' | 'fundingPaymentHistoryAccount' | 'fundingRateHistoryAccount' | 'curveHistoryAccount' | 'liquidationHistoryAccount';
|
|
@@ -36,7 +36,7 @@ export interface ClearingHouseAccountSubscriber {
|
|
|
36
36
|
getDepositHistoryAccount(): DepositHistoryAccount;
|
|
37
37
|
getFundingPaymentHistoryAccount(): FundingPaymentHistoryAccount;
|
|
38
38
|
getFundingRateHistoryAccount(): FundingRateHistoryAccount;
|
|
39
|
-
getCurveHistoryAccount():
|
|
39
|
+
getCurveHistoryAccount(): ExtendedCurveHistoryAccount;
|
|
40
40
|
getLiquidationHistoryAccount(): LiquidationHistoryAccount;
|
|
41
41
|
}
|
|
42
42
|
export interface UserAccountEvents {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/accounts/types.ts"],"names":[],"mappings":";AAAA,OAAO,EACN,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/accounts/types.ts"],"names":[],"mappings":"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"}
|
package/lib/admin.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ export declare class Admin extends ClearingHouse {
|
|
|
9
9
|
initializeMarket(marketIndex: BN, priceOracle: PublicKey, baseAssetReserve: BN, quoteAssetReserve: BN, periodicity: BN, pegMultiplier?: BN): Promise<TransactionSignature>;
|
|
10
10
|
moveAmmPrice(baseAssetReserve: BN, quoteAssetReserve: BN, marketIndex: BN): Promise<TransactionSignature>;
|
|
11
11
|
updateK(sqrtK: BN, marketIndex: BN): Promise<TransactionSignature>;
|
|
12
|
+
updateCurveHistory(): Promise<TransactionSignature>;
|
|
12
13
|
moveAmmToPrice(marketIndex: BN, targetPrice: BN): Promise<TransactionSignature>;
|
|
13
14
|
repegAmmCurve(newPeg: BN, marketIndex: BN): Promise<TransactionSignature>;
|
|
14
15
|
withdrawFromInsuranceVault(amount: BN, recipient: PublicKey): Promise<TransactionSignature>;
|
package/lib/admin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../src/admin.ts"],"names":[],"mappings":";AAAA,OAAO,EACN,cAAc,EACd,UAAU,EACV,SAAS,EAET,oBAAoB,EACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAChF,OAAO,EAAE,EAAE,EAA0B,MAAM,uBAAuB,CAAC;AAInE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAQhD,qBAAa,KAAM,SAAQ,aAAa;WACzB,IAAI,CACjB,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,OAAO,EACf,sBAAsB,EAAE,SAAS,EACjC,IAAI,GAAE,cAA0C,GAC9C,KAAK;IAqBK,UAAU,CACtB,QAAQ,EAAE,SAAS,EACnB,mBAAmB,EAAE,OAAO,GAC1B,OAAO,CAAC,CAAC,oBAAoB,EAAE,oBAAoB,CAAC,CAAC;IA+H3C,gBAAgB,CAC5B,WAAW,EAAE,EAAE,EACf,WAAW,EAAE,SAAS,EACtB,gBAAgB,EAAE,EAAE,EACpB,iBAAiB,EAAE,EAAE,EACrB,WAAW,EAAE,EAAE,EACf,aAAa,GAAE,EAAkB,GAC/B,OAAO,CAAC,oBAAoB,CAAC;IAuBnB,YAAY,CACxB,gBAAgB,EAAE,EAAE,EACpB,iBAAiB,EAAE,EAAE,EACrB,WAAW,EAAE,EAAE,GACb,OAAO,CAAC,oBAAoB,CAAC;IAgBnB,OAAO,CACnB,KAAK,EAAE,EAAE,EACT,WAAW,EAAE,EAAE,GACb,OAAO,CAAC,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../src/admin.ts"],"names":[],"mappings":"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"}
|
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,
|
|
@@ -108,7 +108,7 @@ class Admin extends clearingHouse_1.ClearingHouse {
|
|
|
108
108
|
yield this.program.account.tradeHistory.createInstruction(tradeHistory),
|
|
109
109
|
yield this.program.account.liquidationHistory.createInstruction(liquidationHistory),
|
|
110
110
|
yield this.program.account.depositHistory.createInstruction(depositHistory),
|
|
111
|
-
yield this.program.account.
|
|
111
|
+
yield this.program.account.extendedCurveHistory.createInstruction(curveHistory),
|
|
112
112
|
],
|
|
113
113
|
});
|
|
114
114
|
const initializeHistoryTxSig = yield this.txSender.send(initializeHistoryTx, [
|
|
@@ -153,21 +153,43 @@ class Admin extends clearingHouse_1.ClearingHouse {
|
|
|
153
153
|
updateK(sqrtK, marketIndex) {
|
|
154
154
|
return __awaiter(this, void 0, void 0, function* () {
|
|
155
155
|
const state = this.getStateAccount();
|
|
156
|
+
const markets = this.getMarketsAccount();
|
|
157
|
+
const marketData = markets.markets[marketIndex.toNumber()];
|
|
158
|
+
const ammData = marketData.amm;
|
|
156
159
|
return yield this.program.rpc.updateK(sqrtK, marketIndex, {
|
|
157
160
|
accounts: {
|
|
158
161
|
state: yield this.getStatePublicKey(),
|
|
159
162
|
admin: this.wallet.publicKey,
|
|
160
163
|
markets: state.markets,
|
|
164
|
+
curveHistory: state.extendedCurveHistory,
|
|
165
|
+
oracle: ammData.oracle,
|
|
166
|
+
},
|
|
167
|
+
});
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
updateCurveHistory() {
|
|
171
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
172
|
+
const extendedCurveHistory = anchor.web3.Keypair.generate();
|
|
173
|
+
const state = this.getStateAccount();
|
|
174
|
+
return yield this.program.rpc.updateCurveHistory({
|
|
175
|
+
accounts: {
|
|
176
|
+
state: yield this.getStatePublicKey(),
|
|
177
|
+
admin: this.wallet.publicKey,
|
|
161
178
|
curveHistory: state.curveHistory,
|
|
179
|
+
extendedCurveHistory: extendedCurveHistory.publicKey,
|
|
162
180
|
},
|
|
181
|
+
instructions: [
|
|
182
|
+
yield this.program.account.extendedCurveHistory.createInstruction(extendedCurveHistory),
|
|
183
|
+
],
|
|
184
|
+
signers: [extendedCurveHistory],
|
|
163
185
|
});
|
|
164
186
|
});
|
|
165
187
|
}
|
|
166
188
|
moveAmmToPrice(marketIndex, targetPrice) {
|
|
167
189
|
return __awaiter(this, void 0, void 0, function* () {
|
|
168
190
|
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));
|
|
191
|
+
const [direction, tradeSize, _] = (0, trade_1.calculateTargetPriceTrade)(market, targetPrice);
|
|
192
|
+
const [newQuoteAssetAmount, newBaseAssetAmount] = (0, amm_1.calculateAmmReservesAfterSwap)(market.amm, 'quote', tradeSize, (0, amm_1.getSwapDirection)('quote', direction));
|
|
171
193
|
const state = this.getStateAccount();
|
|
172
194
|
return yield this.program.rpc.moveAmmPrice(newBaseAssetAmount, newQuoteAssetAmount, marketIndex, {
|
|
173
195
|
accounts: {
|
|
@@ -190,7 +212,7 @@ class Admin extends clearingHouse_1.ClearingHouse {
|
|
|
190
212
|
admin: this.wallet.publicKey,
|
|
191
213
|
oracle: ammData.oracle,
|
|
192
214
|
markets: state.markets,
|
|
193
|
-
curveHistory: state.
|
|
215
|
+
curveHistory: state.extendedCurveHistory,
|
|
194
216
|
},
|
|
195
217
|
});
|
|
196
218
|
});
|
package/lib/clearingHouse.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
/// <reference types="bn.js" />
|
|
3
3
|
import { BN, Program, Provider } from '@project-serum/anchor';
|
|
4
|
-
import { MarketsAccount, StateAccount,
|
|
4
|
+
import { MarketsAccount, StateAccount, DepositHistoryAccount, FundingPaymentHistoryAccount, FundingRateHistoryAccount, IWallet, LiquidationHistoryAccount, PositionDirection, TradeHistoryAccount, UserAccount, Market, ExtendedCurveHistoryAccount } from './types';
|
|
5
5
|
import { Connection, PublicKey, TransactionSignature, Keypair, ConfirmOptions, TransactionInstruction } from '@solana/web3.js';
|
|
6
6
|
import { MockUSDCFaucet } from './mockUSDCFaucet';
|
|
7
7
|
import { EventEmitter } from 'events';
|
|
@@ -56,7 +56,7 @@ export declare class ClearingHouse {
|
|
|
56
56
|
getTradeHistoryAccount(): TradeHistoryAccount;
|
|
57
57
|
getLiquidationHistoryAccount(): LiquidationHistoryAccount;
|
|
58
58
|
getDepositHistoryAccount(): DepositHistoryAccount;
|
|
59
|
-
getCurveHistoryAccount():
|
|
59
|
+
getCurveHistoryAccount(): ExtendedCurveHistoryAccount;
|
|
60
60
|
/**
|
|
61
61
|
* Update the wallet to use for clearing house transactions and linked user account
|
|
62
62
|
* @param newWallet
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"clearingHouse.d.ts","sourceRoot":"","sources":["../src/clearingHouse.ts"],"names":[],"mappings":"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"}
|
package/lib/clearingHouse.js
CHANGED
|
@@ -115,7 +115,7 @@ class ClearingHouse {
|
|
|
115
115
|
if (this.statePublicKey) {
|
|
116
116
|
return this.statePublicKey;
|
|
117
117
|
}
|
|
118
|
-
this.statePublicKey = yield addresses_1.getClearingHouseStateAccountPublicKey(this.program.programId);
|
|
118
|
+
this.statePublicKey = yield (0, addresses_1.getClearingHouseStateAccountPublicKey)(this.program.programId);
|
|
119
119
|
return this.statePublicKey;
|
|
120
120
|
});
|
|
121
121
|
}
|
|
@@ -174,7 +174,7 @@ class ClearingHouse {
|
|
|
174
174
|
}
|
|
175
175
|
getInitializeUserInstructions() {
|
|
176
176
|
return __awaiter(this, void 0, void 0, function* () {
|
|
177
|
-
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);
|
|
178
178
|
const remainingAccounts = [];
|
|
179
179
|
const optionalAccounts = {
|
|
180
180
|
whitelistToken: false,
|
|
@@ -213,7 +213,7 @@ class ClearingHouse {
|
|
|
213
213
|
if (this.userAccountPublicKey) {
|
|
214
214
|
return this.userAccountPublicKey;
|
|
215
215
|
}
|
|
216
|
-
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);
|
|
217
217
|
return this.userAccountPublicKey;
|
|
218
218
|
});
|
|
219
219
|
}
|
|
@@ -303,7 +303,7 @@ class ClearingHouse {
|
|
|
303
303
|
}
|
|
304
304
|
withdrawCollateral(amount, collateralAccountPublicKey) {
|
|
305
305
|
return __awaiter(this, void 0, void 0, function* () {
|
|
306
|
-
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);
|
|
307
307
|
});
|
|
308
308
|
}
|
|
309
309
|
getWithdrawCollateralIx(amount, collateralAccountPublicKey) {
|
|
@@ -332,7 +332,7 @@ class ClearingHouse {
|
|
|
332
332
|
}
|
|
333
333
|
openPosition(direction, amount, marketIndex, limitPrice, discountToken, referrer) {
|
|
334
334
|
return __awaiter(this, void 0, void 0, function* () {
|
|
335
|
-
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);
|
|
336
336
|
});
|
|
337
337
|
}
|
|
338
338
|
getOpenPositionIx(direction, amount, marketIndex, limitPrice, discountToken, referrer) {
|
|
@@ -390,7 +390,7 @@ class ClearingHouse {
|
|
|
390
390
|
*/
|
|
391
391
|
closePosition(marketIndex, discountToken, referrer) {
|
|
392
392
|
return __awaiter(this, void 0, void 0, function* () {
|
|
393
|
-
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);
|
|
394
394
|
});
|
|
395
395
|
}
|
|
396
396
|
getClosePositionIx(marketIndex, discountToken, referrer) {
|
|
@@ -438,7 +438,7 @@ class ClearingHouse {
|
|
|
438
438
|
}
|
|
439
439
|
liquidate(liquidateeUserAccountPublicKey) {
|
|
440
440
|
return __awaiter(this, void 0, void 0, function* () {
|
|
441
|
-
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);
|
|
442
442
|
});
|
|
443
443
|
}
|
|
444
444
|
getLiquidateIx(liquidateeUserAccountPublicKey) {
|
|
@@ -482,7 +482,7 @@ class ClearingHouse {
|
|
|
482
482
|
}
|
|
483
483
|
updateFundingRate(oracle, marketIndex) {
|
|
484
484
|
return __awaiter(this, void 0, void 0, function* () {
|
|
485
|
-
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);
|
|
486
486
|
});
|
|
487
487
|
}
|
|
488
488
|
getUpdateFundingRateIx(oracle, marketIndex) {
|
|
@@ -500,7 +500,7 @@ class ClearingHouse {
|
|
|
500
500
|
}
|
|
501
501
|
settleFundingPayment(userAccount, userPositionsAccount) {
|
|
502
502
|
return __awaiter(this, void 0, void 0, function* () {
|
|
503
|
-
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);
|
|
504
504
|
});
|
|
505
505
|
}
|
|
506
506
|
getSettleFundingPaymentIx(userAccount, userPositionsAccount) {
|
package/lib/clearingHouseUser.js
CHANGED
|
@@ -84,7 +84,7 @@ class ClearingHouseUser {
|
|
|
84
84
|
if (this.userAccountPublicKey) {
|
|
85
85
|
return this.userAccountPublicKey;
|
|
86
86
|
}
|
|
87
|
-
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);
|
|
88
88
|
return this.userAccountPublicKey;
|
|
89
89
|
});
|
|
90
90
|
}
|
|
@@ -122,7 +122,7 @@ class ClearingHouseUser {
|
|
|
122
122
|
.positions.filter((pos) => marketIndex ? pos.marketIndex === marketIndex : true)
|
|
123
123
|
.reduce((pnl, marketPosition) => {
|
|
124
124
|
const market = this.clearingHouse.getMarket(marketPosition.marketIndex);
|
|
125
|
-
return pnl.add(_1.calculatePositionPNL(market, marketPosition, withFunding));
|
|
125
|
+
return pnl.add((0, _1.calculatePositionPNL)(market, marketPosition, withFunding));
|
|
126
126
|
}, numericConstants_1.ZERO);
|
|
127
127
|
}
|
|
128
128
|
/**
|
|
@@ -134,7 +134,7 @@ class ClearingHouseUser {
|
|
|
134
134
|
.positions.filter((pos) => marketIndex ? pos.marketIndex === marketIndex : true)
|
|
135
135
|
.reduce((pnl, marketPosition) => {
|
|
136
136
|
const market = this.clearingHouse.getMarket(marketPosition.marketIndex);
|
|
137
|
-
return pnl.add(_1.calculatePositionFundingPNL(market, marketPosition));
|
|
137
|
+
return pnl.add((0, _1.calculatePositionFundingPNL)(market, marketPosition));
|
|
138
138
|
}, numericConstants_1.ZERO);
|
|
139
139
|
}
|
|
140
140
|
/**
|
|
@@ -152,7 +152,7 @@ class ClearingHouseUser {
|
|
|
152
152
|
getTotalPositionValue() {
|
|
153
153
|
return this.getUserPositionsAccount().positions.reduce((positionValue, marketPosition) => {
|
|
154
154
|
const market = this.clearingHouse.getMarket(marketPosition.marketIndex);
|
|
155
|
-
return positionValue.add(_1.calculateBaseAssetValue(market, marketPosition));
|
|
155
|
+
return positionValue.add((0, _1.calculateBaseAssetValue)(market, marketPosition));
|
|
156
156
|
}, numericConstants_1.ZERO);
|
|
157
157
|
}
|
|
158
158
|
/**
|
|
@@ -162,7 +162,7 @@ class ClearingHouseUser {
|
|
|
162
162
|
getPositionValue(marketIndex) {
|
|
163
163
|
const userPosition = this.getUserPosition(marketIndex) || this.getEmptyPosition(marketIndex);
|
|
164
164
|
const market = this.clearingHouse.getMarket(userPosition.marketIndex);
|
|
165
|
-
return _1.calculateBaseAssetValue(market, userPosition);
|
|
165
|
+
return (0, _1.calculateBaseAssetValue)(market, userPosition);
|
|
166
166
|
}
|
|
167
167
|
getPositionSide(currentPosition) {
|
|
168
168
|
if (currentPosition.baseAssetAmount.gt(numericConstants_1.ZERO)) {
|
|
@@ -181,10 +181,10 @@ class ClearingHouseUser {
|
|
|
181
181
|
*/
|
|
182
182
|
getPositionEstimatedExitPriceAndPnl(position, amountToClose) {
|
|
183
183
|
const market = this.clearingHouse.getMarket(position.marketIndex);
|
|
184
|
-
const entryPrice = position_1.calculateEntryPrice(position);
|
|
184
|
+
const entryPrice = (0, position_1.calculateEntryPrice)(position);
|
|
185
185
|
if (amountToClose) {
|
|
186
186
|
if (amountToClose.eq(numericConstants_1.ZERO)) {
|
|
187
|
-
return [_1.calculateMarkPrice(market), numericConstants_1.ZERO];
|
|
187
|
+
return [(0, _1.calculateMarkPrice)(market), numericConstants_1.ZERO];
|
|
188
188
|
}
|
|
189
189
|
position = {
|
|
190
190
|
baseAssetAmount: amountToClose,
|
|
@@ -193,7 +193,7 @@ class ClearingHouseUser {
|
|
|
193
193
|
quoteAssetAmount: position.quoteAssetAmount,
|
|
194
194
|
};
|
|
195
195
|
}
|
|
196
|
-
const baseAssetValue = _1.calculateBaseAssetValue(market, position);
|
|
196
|
+
const baseAssetValue = (0, _1.calculateBaseAssetValue)(market, position);
|
|
197
197
|
if (position.baseAssetAmount.eq(numericConstants_1.ZERO)) {
|
|
198
198
|
return [numericConstants_1.ZERO, numericConstants_1.ZERO];
|
|
199
199
|
}
|
|
@@ -300,7 +300,7 @@ class ClearingHouseUser {
|
|
|
300
300
|
|
|
301
301
|
for 10x long, BTC down $400:
|
|
302
302
|
3. (10k - 4k) / (100k - 4k) = 6k/96k => .0625 */
|
|
303
|
-
const currentPrice = _1.calculateMarkPrice(this.clearingHouse.getMarket(targetMarket.marketIndex));
|
|
303
|
+
const currentPrice = (0, _1.calculateMarkPrice)(this.clearingHouse.getMarket(targetMarket.marketIndex));
|
|
304
304
|
const totalCollateralUSDC = this.getTotalCollateral();
|
|
305
305
|
// calculate the total position value ignoring any value from the target market of the trade
|
|
306
306
|
const totalCurrentPositionValueIgnoringTargetUSDC = this.getTotalPositionValueExcludingMarket(targetMarket.marketIndex);
|
|
@@ -315,7 +315,7 @@ class ClearingHouseUser {
|
|
|
315
315
|
quoteAssetAmount: new bn_js_1.default(0),
|
|
316
316
|
};
|
|
317
317
|
const market = this.clearingHouse.getMarket(proposedMarketPosition.marketIndex);
|
|
318
|
-
const proposedMarketPositionValueUSDC = _1.calculateBaseAssetValue(market, proposedMarketPosition);
|
|
318
|
+
const proposedMarketPositionValueUSDC = (0, _1.calculateBaseAssetValue)(market, proposedMarketPosition);
|
|
319
319
|
// total position value after trade
|
|
320
320
|
const targetTotalPositionValueUSDC = totalCurrentPositionValueIgnoringTargetUSDC.add(proposedMarketPositionValueUSDC);
|
|
321
321
|
let totalFreeCollateralUSDC = this.getTotalCollateral().sub(this.getTotalPositionValue()
|
|
@@ -400,7 +400,7 @@ class ClearingHouseUser {
|
|
|
400
400
|
quoteAssetAmount: new bn_js_1.default(0),
|
|
401
401
|
};
|
|
402
402
|
const market = this.clearingHouse.getMarket(proposedMarketPosition.marketIndex);
|
|
403
|
-
const proposedMarketPositionValueUSDC = _1.calculateBaseAssetValue(market, proposedMarketPosition);
|
|
403
|
+
const proposedMarketPositionValueUSDC = (0, _1.calculateBaseAssetValue)(market, proposedMarketPosition);
|
|
404
404
|
// total position value after trade
|
|
405
405
|
const targetTotalPositionValueUSDC = totalCurrentPositionValueIgnoringTargetUSDC.add(proposedMarketPositionValueUSDC);
|
|
406
406
|
let totalFreeCollateralUSDC = tc.sub(totalCurrentPositionValueIgnoringTargetUSDC
|
|
@@ -428,13 +428,13 @@ class ClearingHouseUser {
|
|
|
428
428
|
}
|
|
429
429
|
let currentPrice;
|
|
430
430
|
if (positionBaseSizeChange.eq(numericConstants_1.ZERO)) {
|
|
431
|
-
currentPrice = _1.calculateMarkPrice(this.clearingHouse.getMarket(targetMarket.marketIndex));
|
|
431
|
+
currentPrice = (0, _1.calculateMarkPrice)(this.clearingHouse.getMarket(targetMarket.marketIndex));
|
|
432
432
|
}
|
|
433
433
|
else {
|
|
434
434
|
const direction = positionBaseSizeChange.gt(numericConstants_1.ZERO)
|
|
435
435
|
? _1.PositionDirection.LONG
|
|
436
436
|
: _1.PositionDirection.SHORT;
|
|
437
|
-
currentPrice = _1.calculateTradeSlippage(direction, positionBaseSizeChange.abs(), this.clearingHouse.getMarket(targetMarket.marketIndex), 'base')[3]; // newPrice after swap
|
|
437
|
+
currentPrice = (0, _1.calculateTradeSlippage)(direction, positionBaseSizeChange.abs(), this.clearingHouse.getMarket(targetMarket.marketIndex), 'base')[3]; // newPrice after swap
|
|
438
438
|
}
|
|
439
439
|
// if the position value after the trade is less than total collateral, there is no liq price
|
|
440
440
|
if (targetTotalPositionValueUSDC.lte(totalFreeCollateralUSDC) &&
|
|
@@ -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,18 +47,18 @@ 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
60
|
const longAmount = new anchor_1.BN(5000).mul(__2.QUOTE_PRECISION);
|
|
61
|
-
const slippage = __2.convertToNumber(__2.calculateTradeSlippage(__2.PositionDirection.LONG, longAmount, solMarketAccount)[0], __2.MARK_PRICE_PRECISION);
|
|
61
|
+
const slippage = (0, __2.convertToNumber)((0, __2.calculateTradeSlippage)(__2.PositionDirection.LONG, longAmount, solMarketAccount)[0], __2.MARK_PRICE_PRECISION);
|
|
62
62
|
console.log(`Slippage for a $5000 LONG on the SOL market would be $${slippage}`);
|
|
63
63
|
// Make a $5000 LONG trade
|
|
64
64
|
yield clearingHouse.openPosition(__2.PositionDirection.LONG, longAmount, solMarketInfo.marketIndex);
|