@quartz-labs/sdk 0.3.6 → 0.3.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/README.md +30 -0
  2. package/dist/config/tokens.js +1 -1
  3. package/dist/index.browser.d.ts +1 -0
  4. package/dist/index.browser.d.ts.map +1 -1
  5. package/dist/index.browser.js +1 -0
  6. package/dist/index.browser.js.map +1 -1
  7. package/dist/types/idl/quartz.d.ts +1 -1
  8. package/dist/types/idl/quartz.js +1 -1
  9. package/dist/user.d.ts.map +1 -1
  10. package/dist/user.js +2 -6
  11. package/dist/user.js.map +1 -1
  12. package/package.json +1 -1
  13. package/dist/clientLight.d.ts +0 -20
  14. package/dist/clientLight.d.ts.map +0 -1
  15. package/dist/clientLight.js +0 -76
  16. package/dist/clientLight.js.map +0 -1
  17. package/dist/idl/quartz.json +0 -646
  18. package/dist/interfaces/remainingAccount.interface.d.ts +0 -6
  19. package/dist/interfaces/remainingAccount.interface.d.ts.map +0 -1
  20. package/dist/interfaces/remainingAccount.interface.js +0 -2
  21. package/dist/interfaces/remainingAccount.interface.js.map +0 -1
  22. package/dist/model/driftUser.d.ts +0 -35
  23. package/dist/model/driftUser.d.ts.map +0 -1
  24. package/dist/model/driftUser.js +0 -608
  25. package/dist/model/driftUser.js.map +0 -1
  26. package/dist/types/interfaces/remainingAccount.interface.d.ts +0 -6
  27. package/dist/types/interfaces/remainingAccount.interface.d.ts.map +0 -1
  28. package/dist/types/interfaces/remainingAccount.interface.js +0 -2
  29. package/dist/types/interfaces/remainingAccount.interface.js.map +0 -1
  30. package/dist/types/quartz.d.ts +0 -648
  31. package/dist/types/quartz.d.ts.map +0 -1
  32. package/dist/types/quartz.js +0 -647
  33. package/dist/types/quartz.js.map +0 -1
  34. package/dist/userLight.d.ts +0 -24
  35. package/dist/userLight.d.ts.map +0 -1
  36. package/dist/userLight.js +0 -209
  37. package/dist/userLight.js.map +0 -1
  38. package/dist/userLights.d.ts +0 -24
  39. package/dist/userLights.d.ts.map +0 -1
  40. package/dist/userLights.js +0 -212
  41. package/dist/userLights.js.map +0 -1
package/dist/userLight.js DELETED
@@ -1,209 +0,0 @@
1
- import { getDriftSignerPublicKey, getDriftSpotMarketPublicKey, getDriftStatePublicKey, getDriftUserPublicKey, getDriftUserStatsPublicKey, getVaultPublicKey, getVaultSplPublicKey, toRemainingAccount } from "./utils/helpers.js";
2
- import { DRIFT_ORACLE_1, DRIFT_ORACLE_2, DRIFT_SPOT_MARKET_SOL, DRIFT_SPOT_MARKET_USDC, DRIFT_PROGRAM_ID } from "./config/constants.js";
3
- import { getAssociatedTokenAddress, ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID } from "@solana/spl-token";
4
- import { SystemProgram, SYSVAR_INSTRUCTIONS_PUBKEY } from "@solana/web3.js";
5
- import { SwapMode } from "@jup-ag/api";
6
- import { getJupiterSwapIx } from "./utils/jupiter.js";
7
- import { BN } from "bn.js";
8
- export class QuartzUserLight {
9
- pubkey;
10
- vaultPubkey;
11
- connection;
12
- program;
13
- quartzLookupTable;
14
- oracles;
15
- driftSigner;
16
- driftUserPubkey;
17
- driftUserStatsPubkey;
18
- constructor(pubkey, connection, program, quartzLookupTable, oracles) {
19
- this.pubkey = pubkey;
20
- this.connection = connection;
21
- this.program = program;
22
- this.quartzLookupTable = quartzLookupTable;
23
- this.oracles = oracles;
24
- this.driftSigner = getDriftSignerPublicKey();
25
- this.vaultPubkey = getVaultPublicKey(pubkey);
26
- this.driftUserPubkey = getDriftUserPublicKey(this.vaultPubkey);
27
- this.driftUserStatsPubkey = getDriftUserStatsPublicKey(this.vaultPubkey);
28
- }
29
- async makeCloseAccountIxs() {
30
- const ix_closeDriftAccount = await this.program.methods
31
- .closeDriftAccount()
32
- .accounts({
33
- vault: this.vaultPubkey,
34
- owner: this.pubkey,
35
- driftUser: this.driftUserPubkey,
36
- driftUserStats: this.driftUserStatsPubkey,
37
- driftState: getDriftStatePublicKey(),
38
- driftProgram: DRIFT_PROGRAM_ID
39
- })
40
- .instruction();
41
- const ix_closeVault = await this.program.methods
42
- .closeUser()
43
- .accounts({
44
- vault: this.vaultPubkey,
45
- owner: this.pubkey
46
- })
47
- .instruction();
48
- return [ix_closeDriftAccount, ix_closeVault];
49
- }
50
- async makeDepositIx(amountBaseUnits, mint, marketIndex, reduceOnly) {
51
- const ownerSpl = await getAssociatedTokenAddress(mint, this.pubkey);
52
- const ix = await this.program.methods
53
- .deposit(new BN(amountBaseUnits), marketIndex, reduceOnly)
54
- .accounts({
55
- vault: this.vaultPubkey,
56
- vaultSpl: getVaultSplPublicKey(this.pubkey, mint),
57
- owner: this.pubkey,
58
- ownerSpl: ownerSpl,
59
- splMint: mint,
60
- driftUser: this.driftUserPubkey,
61
- driftUserStats: this.driftUserStatsPubkey,
62
- driftState: getDriftStatePublicKey(),
63
- spotMarketVault: getDriftSpotMarketPublicKey(marketIndex),
64
- tokenProgram: TOKEN_PROGRAM_ID,
65
- associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,
66
- driftProgram: DRIFT_PROGRAM_ID,
67
- systemProgram: SystemProgram.programId
68
- })
69
- .remainingAccounts([
70
- toRemainingAccount(DRIFT_ORACLE_1, false, false),
71
- toRemainingAccount(DRIFT_ORACLE_2, false, false),
72
- toRemainingAccount(DRIFT_SPOT_MARKET_SOL, false, true),
73
- toRemainingAccount(DRIFT_SPOT_MARKET_USDC, false, true),
74
- ])
75
- .instruction();
76
- return ix;
77
- }
78
- async makeWithdrawIx(amountBaseUnits, mint, marketIndex, reduceOnly) {
79
- const ownerSpl = await getAssociatedTokenAddress(mint, this.pubkey);
80
- const ix = await this.program.methods
81
- .withdraw(new BN(amountBaseUnits), marketIndex, reduceOnly)
82
- .accounts({
83
- vault: this.vaultPubkey,
84
- vaultSpl: getVaultSplPublicKey(this.pubkey, mint),
85
- owner: this.pubkey,
86
- ownerSpl: ownerSpl,
87
- splMint: mint,
88
- driftUser: this.driftUserPubkey,
89
- driftUserStats: this.driftUserStatsPubkey,
90
- driftState: getDriftStatePublicKey(),
91
- spotMarketVault: getDriftSpotMarketPublicKey(marketIndex),
92
- driftSigner: this.driftSigner,
93
- tokenProgram: TOKEN_PROGRAM_ID,
94
- associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,
95
- driftProgram: DRIFT_PROGRAM_ID,
96
- systemProgram: SystemProgram.programId
97
- })
98
- .remainingAccounts([
99
- toRemainingAccount(DRIFT_ORACLE_1, false, false),
100
- toRemainingAccount(DRIFT_ORACLE_2, false, false),
101
- toRemainingAccount(DRIFT_SPOT_MARKET_SOL, false, true),
102
- toRemainingAccount(DRIFT_SPOT_MARKET_USDC, false, true),
103
- ])
104
- .instruction();
105
- return ix;
106
- }
107
- async makeCollateralRepayIxs(caller, callerDepositSpl, depositMint, depositMarketIndex, callerWithdrawSpl, withdrawMint, withdrawMarketIndex, callerWithdrawSplStartBalance, jupiterExactOutRouteQuote) {
108
- if (jupiterExactOutRouteQuote.swapMode !== SwapMode.ExactOut)
109
- throw Error("Jupiter quote must be ExactOutRoute");
110
- if (jupiterExactOutRouteQuote.swapMode !== SwapMode.ExactOut)
111
- throw Error("Jupiter quote must be ExactOutRoute");
112
- if (jupiterExactOutRouteQuote.inputMint !== withdrawMint.toBase58())
113
- throw Error("Jupiter quote inputMint does not match withdrawMint");
114
- if (jupiterExactOutRouteQuote.outputMint !== depositMint.toBase58())
115
- throw Error("Jupiter quote outputMint does not match depositMint");
116
- const driftState = getDriftStatePublicKey();
117
- const driftSpotMarketDeposit = getDriftSpotMarketPublicKey(depositMarketIndex);
118
- const driftSpotMarketWithdraw = getDriftSpotMarketPublicKey(withdrawMarketIndex);
119
- const collateralRepayStartPromise = this.program.methods
120
- .collateralRepayStart(new BN(callerWithdrawSplStartBalance))
121
- .accounts({
122
- caller: caller,
123
- callerWithdrawSpl: callerWithdrawSpl,
124
- withdrawMint: withdrawMint,
125
- vault: this.vaultPubkey,
126
- vaultWithdrawSpl: getVaultSplPublicKey(this.pubkey, withdrawMint),
127
- owner: this.pubkey,
128
- tokenProgram: TOKEN_PROGRAM_ID,
129
- associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,
130
- systemProgram: SystemProgram.programId,
131
- instructions: SYSVAR_INSTRUCTIONS_PUBKEY,
132
- })
133
- .instruction();
134
- const jupiterSwapPromise = getJupiterSwapIx(caller, this.connection, jupiterExactOutRouteQuote);
135
- const collateralRepayDepositPromise = this.program.methods
136
- .collateralRepayDeposit(depositMarketIndex)
137
- .accounts({
138
- vault: this.vaultPubkey,
139
- vaultSpl: getVaultSplPublicKey(this.pubkey, depositMint),
140
- owner: this.pubkey,
141
- caller: caller,
142
- callerSpl: callerDepositSpl,
143
- splMint: depositMint,
144
- driftUser: this.driftUserPubkey,
145
- driftUserStats: this.driftUserStatsPubkey,
146
- driftState: driftState,
147
- spotMarketVault: driftSpotMarketDeposit,
148
- tokenProgram: TOKEN_PROGRAM_ID,
149
- associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,
150
- driftProgram: DRIFT_PROGRAM_ID,
151
- systemProgram: SystemProgram.programId,
152
- instructions: SYSVAR_INSTRUCTIONS_PUBKEY,
153
- })
154
- .remainingAccounts([
155
- toRemainingAccount(DRIFT_ORACLE_1, false, false),
156
- toRemainingAccount(DRIFT_ORACLE_2, false, false),
157
- toRemainingAccount(DRIFT_SPOT_MARKET_SOL, false, true),
158
- toRemainingAccount(DRIFT_SPOT_MARKET_USDC, false, true),
159
- ])
160
- .instruction();
161
- const collateralRepayWithdrawPromise = this.program.methods
162
- .collateralRepayWithdraw(withdrawMarketIndex)
163
- .accounts({
164
- vault: this.vaultPubkey,
165
- vaultSpl: getVaultSplPublicKey(this.pubkey, withdrawMint),
166
- owner: this.pubkey,
167
- caller: caller,
168
- callerSpl: callerWithdrawSpl,
169
- splMint: withdrawMint,
170
- driftUser: this.driftUserPubkey,
171
- driftUserStats: this.driftUserStatsPubkey,
172
- driftState: driftState,
173
- spotMarketVault: driftSpotMarketWithdraw,
174
- driftSigner: this.driftSigner,
175
- tokenProgram: TOKEN_PROGRAM_ID,
176
- driftProgram: DRIFT_PROGRAM_ID,
177
- systemProgram: SystemProgram.programId,
178
- depositPriceUpdate: this.oracles.get("USDC/USD"),
179
- withdrawPriceUpdate: this.oracles.get("SOL/USD"),
180
- instructions: SYSVAR_INSTRUCTIONS_PUBKEY,
181
- })
182
- .remainingAccounts([
183
- toRemainingAccount(DRIFT_ORACLE_1, false, false),
184
- toRemainingAccount(DRIFT_ORACLE_2, false, false),
185
- toRemainingAccount(DRIFT_SPOT_MARKET_SOL, false, true),
186
- toRemainingAccount(DRIFT_SPOT_MARKET_USDC, false, true),
187
- ])
188
- .instruction();
189
- const [ix_collateralRepayStart, { ix_jupiterSwap, jupiterLookupTables }, ix_collateralRepayDeposit, ix_collateralRepayWithdraw] = await Promise.all([
190
- collateralRepayStartPromise,
191
- jupiterSwapPromise,
192
- collateralRepayDepositPromise,
193
- collateralRepayWithdrawPromise
194
- ]);
195
- return {
196
- ixs: [
197
- ix_collateralRepayStart,
198
- ix_jupiterSwap,
199
- ix_collateralRepayDeposit,
200
- ix_collateralRepayWithdraw
201
- ],
202
- lookupTables: [
203
- this.quartzLookupTable,
204
- ...jupiterLookupTables
205
- ],
206
- };
207
- }
208
- }
209
- //# sourceMappingURL=userLight.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"userLight.js","sourceRoot":"","sources":["../src/userLight.ts"],"names":[],"mappings":"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"}
@@ -1,24 +0,0 @@
1
- import type { AddressLookupTableAccount, Connection, PublicKey, TransactionInstruction } from "@solana/web3.js";
2
- import { type QuoteResponse } from "@drift-labs/sdk";
3
- import type { Quartz } from "./types/idl/quartz.js";
4
- import type { Program } from "@coral-xyz/anchor";
5
- export declare class QuartzUserLight {
6
- readonly pubkey: PublicKey;
7
- readonly vaultPubkey: PublicKey;
8
- protected connection: Connection;
9
- protected program: Program<Quartz>;
10
- protected quartzLookupTable: AddressLookupTableAccount;
11
- protected oracles: Map<string, PublicKey>;
12
- protected driftSigner: PublicKey;
13
- private driftUserPubkey;
14
- private driftUserStatsPubkey;
15
- constructor(pubkey: PublicKey, connection: Connection, program: Program<Quartz>, quartzLookupTable: AddressLookupTableAccount, oracles: Map<string, PublicKey>);
16
- makeCloseAccountIxs(): Promise<TransactionInstruction[]>;
17
- makeDepositIx(amountBaseUnits: number, mint: PublicKey, marketIndex: number, reduceOnly: boolean): Promise<TransactionInstruction>;
18
- makeWithdrawIx(amountBaseUnits: number, mint: PublicKey, marketIndex: number, reduceOnly: boolean): Promise<TransactionInstruction>;
19
- makeCollateralRepayIxs(caller: PublicKey, callerDepositSpl: PublicKey, depositMint: PublicKey, depositMarketIndex: number, callerWithdrawSpl: PublicKey, withdrawMint: PublicKey, withdrawMarketIndex: number, callerWithdrawSplStartBalance: number, jupiterExactOutRouteQuote: QuoteResponse): Promise<{
20
- ixs: TransactionInstruction[];
21
- lookupTables: AddressLookupTableAccount[];
22
- }>;
23
- }
24
- //# sourceMappingURL=userLights.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"userLights.d.ts","sourceRoot":"","sources":["../src/userLights.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,UAAU,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAEhH,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAUjD,qBAAa,eAAe;IACxB,SAAgB,MAAM,EAAE,SAAS,CAAC;IAClC,SAAgB,WAAW,EAAE,SAAS,CAAC;IAEvC,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC;IACjC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACnC,SAAS,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;IACvD,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC1C,SAAS,CAAC,WAAW,EAAE,SAAS,CAAC;IAEjC,OAAO,CAAC,eAAe,CAAY;IACnC,OAAO,CAAC,oBAAoB,CAAY;gBAGpC,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,EACxB,iBAAiB,EAAE,yBAAyB,EAC5C,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC;IActB,mBAAmB;IAwBnB,aAAa,CACtB,eAAe,EAAE,MAAM,EACvB,IAAI,EAAE,SAAS,EACf,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,OAAO;IAgCV,cAAc,CACvB,eAAe,EAAE,MAAM,EACvB,IAAI,EAAE,SAAS,EACf,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,OAAO;IAiCV,sBAAsB,CAC/B,MAAM,EAAE,SAAS,EACjB,gBAAgB,EAAE,SAAS,EAC3B,WAAW,EAAE,SAAS,EACtB,kBAAkB,EAAE,MAAM,EAC1B,iBAAiB,EAAE,SAAS,EAC5B,YAAY,EAAE,SAAS,EACvB,mBAAmB,EAAE,MAAM,EAC3B,6BAA6B,EAAE,MAAM,EACrC,yBAAyB,EAAE,aAAa,GACzC,OAAO,CAAC;QACP,GAAG,EAAE,sBAAsB,EAAE,CAAA;QAC7B,YAAY,EAAE,yBAAyB,EAAE,CAAC;KAC7C,CAAC;CA8GL"}
@@ -1,212 +0,0 @@
1
- import { getDriftSignerPublicKey, getDriftSpotMarketPublicKey, getDriftStatePublicKey, getDriftUserPublicKey, getDriftUserStatsPublicKey, getVaultPublicKey, getVaultSplPublicKey, toRemainingAccount } from "./utils/helpers.js";
2
- import { BN, DRIFT_PROGRAM_ID } from "@drift-labs/sdk";
3
- import { ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID } from "@solana/spl-token";
4
- import { DRIFT_ORACLE_2, DRIFT_SPOT_MARKET_SOL, DRIFT_SPOT_MARKET_USDC } from "./config/constants.js";
5
- import { getAssociatedTokenAddress } from "@solana/spl-token";
6
- import { ASSOCIATED_PROGRAM_ID } from "@coral-xyz/anchor/dist/cjs/utils/token.js";
7
- import { SystemProgram, SYSVAR_INSTRUCTIONS_PUBKEY } from "@solana/web3.js";
8
- import { DRIFT_ORACLE_1 } from "./config/constants.js";
9
- import { SwapMode } from "@jup-ag/api";
10
- import { getJupiterSwapIx } from "./utils/jupiter.js";
11
- export class QuartzUserLight {
12
- pubkey;
13
- vaultPubkey;
14
- connection;
15
- program;
16
- quartzLookupTable;
17
- oracles;
18
- driftSigner;
19
- driftUserPubkey;
20
- driftUserStatsPubkey;
21
- constructor(pubkey, connection, program, quartzLookupTable, oracles) {
22
- this.pubkey = pubkey;
23
- this.connection = connection;
24
- this.program = program;
25
- this.quartzLookupTable = quartzLookupTable;
26
- this.oracles = oracles;
27
- this.driftSigner = getDriftSignerPublicKey();
28
- this.vaultPubkey = getVaultPublicKey(pubkey);
29
- this.driftUserPubkey = getDriftUserPublicKey(this.vaultPubkey);
30
- this.driftUserStatsPubkey = getDriftUserStatsPublicKey(this.vaultPubkey);
31
- }
32
- async makeCloseAccountIxs() {
33
- const ix_closeDriftAccount = await this.program.methods
34
- .closeDriftAccount()
35
- .accounts({
36
- vault: this.vaultPubkey,
37
- owner: this.pubkey,
38
- driftUser: this.driftUserPubkey,
39
- driftUserStats: this.driftUserStatsPubkey,
40
- driftState: getDriftStatePublicKey(),
41
- driftProgram: DRIFT_PROGRAM_ID
42
- })
43
- .instruction();
44
- const ix_closeVault = await this.program.methods
45
- .closeUser()
46
- .accounts({
47
- vault: this.vaultPubkey,
48
- owner: this.pubkey
49
- })
50
- .instruction();
51
- return [ix_closeDriftAccount, ix_closeVault];
52
- }
53
- async makeDepositIx(amountBaseUnits, mint, marketIndex, reduceOnly) {
54
- const ownerSpl = await getAssociatedTokenAddress(mint, this.pubkey);
55
- const ix = await this.program.methods
56
- .deposit(new BN(amountBaseUnits), marketIndex, reduceOnly)
57
- .accounts({
58
- vault: this.vaultPubkey,
59
- vaultSpl: getVaultSplPublicKey(this.pubkey, mint),
60
- owner: this.pubkey,
61
- ownerSpl: ownerSpl,
62
- splMint: mint,
63
- driftUser: this.driftUserPubkey,
64
- driftUserStats: this.driftUserStatsPubkey,
65
- driftState: getDriftStatePublicKey(),
66
- spotMarketVault: getDriftSpotMarketPublicKey(marketIndex),
67
- tokenProgram: TOKEN_PROGRAM_ID,
68
- associatedTokenProgram: ASSOCIATED_PROGRAM_ID,
69
- driftProgram: DRIFT_PROGRAM_ID,
70
- systemProgram: SystemProgram.programId
71
- })
72
- .remainingAccounts([
73
- toRemainingAccount(DRIFT_ORACLE_1, false, false),
74
- toRemainingAccount(DRIFT_ORACLE_2, false, false),
75
- toRemainingAccount(DRIFT_SPOT_MARKET_SOL, false, true),
76
- toRemainingAccount(DRIFT_SPOT_MARKET_USDC, false, true),
77
- ])
78
- .instruction();
79
- return ix;
80
- }
81
- async makeWithdrawIx(amountBaseUnits, mint, marketIndex, reduceOnly) {
82
- const ownerSpl = await getAssociatedTokenAddress(mint, this.pubkey);
83
- const ix = await this.program.methods
84
- .withdraw(new BN(amountBaseUnits), marketIndex, reduceOnly)
85
- .accounts({
86
- vault: this.vaultPubkey,
87
- vaultSpl: getVaultSplPublicKey(this.pubkey, mint),
88
- owner: this.pubkey,
89
- ownerSpl: ownerSpl,
90
- splMint: mint,
91
- driftUser: this.driftUserPubkey,
92
- driftUserStats: this.driftUserStatsPubkey,
93
- driftState: getDriftStatePublicKey(),
94
- spotMarketVault: getDriftSpotMarketPublicKey(marketIndex),
95
- driftSigner: this.driftSigner,
96
- tokenProgram: TOKEN_PROGRAM_ID,
97
- associatedTokenProgram: ASSOCIATED_PROGRAM_ID,
98
- driftProgram: DRIFT_PROGRAM_ID,
99
- systemProgram: SystemProgram.programId
100
- })
101
- .remainingAccounts([
102
- toRemainingAccount(DRIFT_ORACLE_1, false, false),
103
- toRemainingAccount(DRIFT_ORACLE_2, false, false),
104
- toRemainingAccount(DRIFT_SPOT_MARKET_SOL, false, true),
105
- toRemainingAccount(DRIFT_SPOT_MARKET_USDC, false, true),
106
- ])
107
- .instruction();
108
- return ix;
109
- }
110
- async makeCollateralRepayIxs(caller, callerDepositSpl, depositMint, depositMarketIndex, callerWithdrawSpl, withdrawMint, withdrawMarketIndex, callerWithdrawSplStartBalance, jupiterExactOutRouteQuote) {
111
- if (jupiterExactOutRouteQuote.swapMode !== SwapMode.ExactOut)
112
- throw Error("Jupiter quote must be ExactOutRoute");
113
- if (jupiterExactOutRouteQuote.swapMode !== SwapMode.ExactOut)
114
- throw Error("Jupiter quote must be ExactOutRoute");
115
- if (jupiterExactOutRouteQuote.inputMint !== withdrawMint.toBase58())
116
- throw Error("Jupiter quote inputMint does not match withdrawMint");
117
- if (jupiterExactOutRouteQuote.outputMint !== depositMint.toBase58())
118
- throw Error("Jupiter quote outputMint does not match depositMint");
119
- const driftState = getDriftStatePublicKey();
120
- const driftSpotMarketDeposit = getDriftSpotMarketPublicKey(depositMarketIndex);
121
- const driftSpotMarketWithdraw = getDriftSpotMarketPublicKey(withdrawMarketIndex);
122
- const collateralRepayStartPromise = this.program.methods
123
- .collateralRepayStart(new BN(callerWithdrawSplStartBalance))
124
- .accounts({
125
- caller: caller,
126
- callerWithdrawSpl: callerWithdrawSpl,
127
- withdrawMint: withdrawMint,
128
- vault: this.vaultPubkey,
129
- vaultWithdrawSpl: getVaultSplPublicKey(this.pubkey, withdrawMint),
130
- owner: this.pubkey,
131
- tokenProgram: TOKEN_PROGRAM_ID,
132
- associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,
133
- systemProgram: SystemProgram.programId,
134
- instructions: SYSVAR_INSTRUCTIONS_PUBKEY,
135
- })
136
- .instruction();
137
- const jupiterSwapPromise = getJupiterSwapIx(caller, this.connection, jupiterExactOutRouteQuote);
138
- const collateralRepayDepositPromise = this.program.methods
139
- .collateralRepayDeposit(depositMarketIndex)
140
- .accounts({
141
- vault: this.vaultPubkey,
142
- vaultSpl: getVaultSplPublicKey(this.pubkey, depositMint),
143
- owner: this.pubkey,
144
- caller: caller,
145
- callerSpl: callerDepositSpl,
146
- splMint: depositMint,
147
- driftUser: this.driftUserPubkey,
148
- driftUserStats: this.driftUserStatsPubkey,
149
- driftState: driftState,
150
- spotMarketVault: driftSpotMarketDeposit,
151
- tokenProgram: TOKEN_PROGRAM_ID,
152
- associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,
153
- driftProgram: DRIFT_PROGRAM_ID,
154
- systemProgram: SystemProgram.programId,
155
- instructions: SYSVAR_INSTRUCTIONS_PUBKEY,
156
- })
157
- .remainingAccounts([
158
- toRemainingAccount(DRIFT_ORACLE_1, false, false),
159
- toRemainingAccount(DRIFT_ORACLE_2, false, false),
160
- toRemainingAccount(DRIFT_SPOT_MARKET_SOL, false, true),
161
- toRemainingAccount(DRIFT_SPOT_MARKET_USDC, false, true),
162
- ])
163
- .instruction();
164
- const collateralRepayWithdrawPromise = this.program.methods
165
- .collateralRepayWithdraw(withdrawMarketIndex)
166
- .accounts({
167
- vault: this.vaultPubkey,
168
- vaultSpl: getVaultSplPublicKey(this.pubkey, withdrawMint),
169
- owner: this.pubkey,
170
- caller: caller,
171
- callerSpl: callerWithdrawSpl,
172
- splMint: withdrawMint,
173
- driftUser: this.driftUserPubkey,
174
- driftUserStats: this.driftUserStatsPubkey,
175
- driftState: driftState,
176
- spotMarketVault: driftSpotMarketWithdraw,
177
- driftSigner: this.driftSigner,
178
- tokenProgram: TOKEN_PROGRAM_ID,
179
- driftProgram: DRIFT_PROGRAM_ID,
180
- systemProgram: SystemProgram.programId,
181
- depositPriceUpdate: this.oracles.get("USDC/USD"),
182
- withdrawPriceUpdate: this.oracles.get("SOL/USD"),
183
- instructions: SYSVAR_INSTRUCTIONS_PUBKEY,
184
- })
185
- .remainingAccounts([
186
- toRemainingAccount(DRIFT_ORACLE_1, false, false),
187
- toRemainingAccount(DRIFT_ORACLE_2, false, false),
188
- toRemainingAccount(DRIFT_SPOT_MARKET_SOL, false, true),
189
- toRemainingAccount(DRIFT_SPOT_MARKET_USDC, false, true),
190
- ])
191
- .instruction();
192
- const [ix_collateralRepayStart, { ix_jupiterSwap, jupiterLookupTables }, ix_collateralRepayDeposit, ix_collateralRepayWithdraw] = await Promise.all([
193
- collateralRepayStartPromise,
194
- jupiterSwapPromise,
195
- collateralRepayDepositPromise,
196
- collateralRepayWithdrawPromise
197
- ]);
198
- return {
199
- ixs: [
200
- ix_collateralRepayStart,
201
- ix_jupiterSwap,
202
- ix_collateralRepayDeposit,
203
- ix_collateralRepayWithdraw
204
- ],
205
- lookupTables: [
206
- this.quartzLookupTable,
207
- ...jupiterLookupTables
208
- ],
209
- };
210
- }
211
- }
212
- //# sourceMappingURL=userLights.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"userLights.js","sourceRoot":"","sources":["../src/userLights.ts"],"names":[],"mappings":"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"}