@quartz-labs/sdk 0.3.1 → 0.3.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/dist/config/constants.d.ts +1 -0
- package/dist/config/constants.d.ts.map +1 -1
- package/dist/config/constants.js +1 -0
- package/dist/config/constants.js.map +1 -1
- package/dist/config/tokens.d.ts.map +1 -1
- package/dist/config/tokens.js +11 -5
- package/dist/config/tokens.js.map +1 -1
- package/dist/types/interfaces/token.interface.d.ts +3 -1
- package/dist/types/interfaces/token.interface.d.ts.map +1 -1
- package/dist/user.d.ts +4 -4
- package/dist/user.d.ts.map +1 -1
- package/dist/user.js +29 -20
- package/dist/user.js.map +1 -1
- package/dist/utils/helpers.d.ts +6 -2
- package/dist/utils/helpers.d.ts.map +1 -1
- package/dist/utils/helpers.js +21 -0
- package/dist/utils/helpers.js.map +1 -1
- package/package.json +2 -2
|
@@ -5,4 +5,5 @@ export declare const QUARTZ_DRIFT_ACCOUNT: PublicKey;
|
|
|
5
5
|
export declare const DRIFT_PROGRAM_ID: PublicKey;
|
|
6
6
|
export declare const PYTH_ORACLE_PROGRAM_ID: PublicKey;
|
|
7
7
|
export declare const QUARTZ_HEALTH_BUFFER = 10;
|
|
8
|
+
export declare const WSOL_MINT: PublicKey;
|
|
8
9
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/config/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,eAAO,MAAM,iBAAiB,WAAgE,CAAC;AAC/F,eAAO,MAAM,oBAAoB,WAAgE,CAAC;AAClG,eAAO,MAAM,oBAAoB,WAAgE,CAAC;AAElG,eAAO,MAAM,gBAAgB,WAA+D,CAAC;AAC7F,eAAO,MAAM,sBAAsB,WAA+D,CAAC;AAEnG,eAAO,MAAM,oBAAoB,KAAK,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/config/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,eAAO,MAAM,iBAAiB,WAAgE,CAAC;AAC/F,eAAO,MAAM,oBAAoB,WAAgE,CAAC;AAClG,eAAO,MAAM,oBAAoB,WAAgE,CAAC;AAElG,eAAO,MAAM,gBAAgB,WAA+D,CAAC;AAC7F,eAAO,MAAM,sBAAsB,WAA+D,CAAC;AAEnG,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC,eAAO,MAAM,SAAS,WAA+D,CAAC"}
|
package/dist/config/constants.js
CHANGED
|
@@ -5,4 +5,5 @@ export const QUARTZ_DRIFT_ACCOUNT = new PublicKey("5XY5pQbBjwv8ByBxKPNE7Xyb9dVcd
|
|
|
5
5
|
export const DRIFT_PROGRAM_ID = new PublicKey("dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH");
|
|
6
6
|
export const PYTH_ORACLE_PROGRAM_ID = new PublicKey("pythWSnswVUd12oZpeFP8e9CVaEqJg25g1Vtc2biRsT");
|
|
7
7
|
export const QUARTZ_HEALTH_BUFFER = 10;
|
|
8
|
+
export const WSOL_MINT = new PublicKey("So11111111111111111111111111111111111111112");
|
|
8
9
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/config/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;AAC/F,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;AAClG,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;AAElG,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,SAAS,CAAC,6CAA6C,CAAC,CAAC;AAC7F,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,SAAS,CAAC,6CAA6C,CAAC,CAAC;AAEnG,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/config/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;AAC/F,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;AAClG,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;AAElG,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,SAAS,CAAC,6CAA6C,CAAC,CAAC;AAC7F,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,SAAS,CAAC,6CAA6C,CAAC,CAAC;AAEnG,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEvC,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,6CAA6C,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/config/tokens.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/config/tokens.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wCAAwC,CAAC;AAGpE,eAAO,MAAM,WAAW,4BAEd,CAAC;AACX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,KAAK,CAoC7C,CAAC"}
|
package/dist/config/tokens.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { PublicKey } from "@solana/web3.js";
|
|
2
|
+
import BN from "bn.js";
|
|
2
3
|
export const MarketIndex = [
|
|
3
4
|
1, 0, 5, 22, 28
|
|
4
5
|
];
|
|
@@ -7,31 +8,36 @@ export const TOKENS = {
|
|
|
7
8
|
name: "SOL",
|
|
8
9
|
mint: new PublicKey("So11111111111111111111111111111111111111112"),
|
|
9
10
|
pythPriceFeedId: "0xef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d",
|
|
10
|
-
decimalPrecision: 9,
|
|
11
|
+
decimalPrecision: new BN(9),
|
|
12
|
+
driftCollateralWeight: new BN(90),
|
|
11
13
|
},
|
|
12
14
|
0: {
|
|
13
15
|
name: "USDC",
|
|
14
16
|
mint: new PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),
|
|
15
17
|
pythPriceFeedId: "0xeaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",
|
|
16
|
-
decimalPrecision: 6,
|
|
18
|
+
decimalPrecision: new BN(6),
|
|
19
|
+
driftCollateralWeight: new BN(100),
|
|
17
20
|
},
|
|
18
21
|
5: {
|
|
19
22
|
name: "USDT",
|
|
20
23
|
mint: new PublicKey("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),
|
|
21
24
|
pythPriceFeedId: "0x2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b",
|
|
22
|
-
decimalPrecision: 6,
|
|
25
|
+
decimalPrecision: new BN(6),
|
|
26
|
+
driftCollateralWeight: new BN(95),
|
|
23
27
|
},
|
|
24
28
|
22: {
|
|
25
29
|
name: "PYUSD",
|
|
26
30
|
mint: new PublicKey("2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo"),
|
|
27
31
|
pythPriceFeedId: "0xc1da1b73d7f01e7ddd54b3766cf7fcd644395ad14f70aa706ec5384c59e76692",
|
|
28
|
-
decimalPrecision: 6,
|
|
32
|
+
decimalPrecision: new BN(6),
|
|
33
|
+
driftCollateralWeight: new BN(95),
|
|
29
34
|
},
|
|
30
35
|
28: {
|
|
31
36
|
name: "USDS",
|
|
32
37
|
mint: new PublicKey("USDSwr9ApdHk5bvJKMjzff41FfuX8bSxdKcR81vTwcA"),
|
|
33
38
|
pythPriceFeedId: "0x77f0971af11cc8bac224917275c1bf55f2319ed5c654a1ca955c82fa2d297ea1",
|
|
34
|
-
decimalPrecision: 6,
|
|
39
|
+
decimalPrecision: new BN(6),
|
|
40
|
+
driftCollateralWeight: new BN(95),
|
|
35
41
|
}
|
|
36
42
|
};
|
|
37
43
|
//# sourceMappingURL=tokens.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/config/tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/config/tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,MAAM,OAAO,CAAC;AAEvB,MAAM,CAAC,MAAM,WAAW,GAAG;IACvB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;CACT,CAAC;AAGX,MAAM,CAAC,MAAM,MAAM,GAA+B;IAC9C,CAAC,EAAE;QACC,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,IAAI,SAAS,CAAC,6CAA6C,CAAC;QAClE,eAAe,EAAE,oEAAoE;QACrF,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3B,qBAAqB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;KACpC;IACD,CAAC,EAAE;QACC,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,IAAI,SAAS,CAAC,8CAA8C,CAAC;QACnE,eAAe,EAAE,oEAAoE;QACrF,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3B,qBAAqB,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC;KACrC;IACD,CAAC,EAAE;QACC,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,IAAI,SAAS,CAAC,8CAA8C,CAAC;QACnE,eAAe,EAAE,oEAAoE;QACrF,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3B,qBAAqB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;KACpC;IACD,EAAE,EAAE;QACA,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,IAAI,SAAS,CAAC,8CAA8C,CAAC;QACnE,eAAe,EAAE,oEAAoE;QACrF,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3B,qBAAqB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;KACpC;IACD,EAAE,EAAE;QACA,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,IAAI,SAAS,CAAC,6CAA6C,CAAC;QAClE,eAAe,EAAE,oEAAoE;QACrF,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3B,qBAAqB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;KACpC;CACJ,CAAC"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import type { PublicKey } from "@solana/web3.js";
|
|
2
|
+
import type BN from "bn.js";
|
|
2
3
|
export interface Token {
|
|
3
4
|
name: string;
|
|
4
5
|
mint: PublicKey;
|
|
5
6
|
pythPriceFeedId: string;
|
|
6
|
-
decimalPrecision:
|
|
7
|
+
decimalPrecision: BN;
|
|
8
|
+
driftCollateralWeight: BN;
|
|
7
9
|
}
|
|
8
10
|
//# sourceMappingURL=token.interface.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.interface.d.ts","sourceRoot":"","sources":["../../../src/types/interfaces/token.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"token.interface.d.ts","sourceRoot":"","sources":["../../../src/types/interfaces/token.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,OAAO,CAAC;AAE5B,MAAM,WAAW,KAAK;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,EAAE,CAAC;IACrB,qBAAqB,EAAE,EAAE,CAAC;CAC7B"}
|
package/dist/user.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import type { Connection, AddressLookupTableAccount, TransactionInstruction } fr
|
|
|
3
3
|
import type { Quartz } from "./types/idl/quartz.js";
|
|
4
4
|
import type { Program } from "@coral-xyz/anchor";
|
|
5
5
|
import type { PublicKey } from "@solana/web3.js";
|
|
6
|
-
import type
|
|
6
|
+
import { type MarketIndex } from "./config/tokens.js";
|
|
7
7
|
export declare class QuartzUser {
|
|
8
8
|
readonly pubkey: PublicKey;
|
|
9
9
|
readonly vaultPubkey: PublicKey;
|
|
@@ -22,9 +22,9 @@ export declare class QuartzUser {
|
|
|
22
22
|
getTokenBalance(spotMarketIndex: number): Promise<number>;
|
|
23
23
|
getWithdrawalLimit(spotMarketIndex: number): Promise<number>;
|
|
24
24
|
makeCloseAccountIxs(): Promise<TransactionInstruction[]>;
|
|
25
|
-
makeDepositIx(amountBaseUnits: number,
|
|
26
|
-
makeWithdrawIx(amountBaseUnits: number,
|
|
27
|
-
makeCollateralRepayIxs(caller: PublicKey,
|
|
25
|
+
makeDepositIx(amountBaseUnits: number, marketIndex: MarketIndex, reduceOnly: boolean): Promise<TransactionInstruction>;
|
|
26
|
+
makeWithdrawIx(amountBaseUnits: number, marketIndex: MarketIndex, reduceOnly: boolean): Promise<TransactionInstruction>;
|
|
27
|
+
makeCollateralRepayIxs(caller: PublicKey, depositMarketIndex: MarketIndex, withdrawMarketIndex: MarketIndex, callerWithdrawSplStartBalance: number, jupiterExactOutRouteQuote: QuoteResponse): Promise<{
|
|
28
28
|
ixs: TransactionInstruction[];
|
|
29
29
|
lookupTables: AddressLookupTableAccount[];
|
|
30
30
|
}>;
|
package/dist/user.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../src/user.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,KAAK,EAAE,UAAU,EAAE,yBAAyB,EAAE,sBAAsB,EAAG,MAAM,iBAAiB,CAAC;AAEtG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAG,MAAM,iBAAiB,CAAC;AASlD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../src/user.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,KAAK,EAAE,UAAU,EAAE,yBAAyB,EAAE,sBAAsB,EAAG,MAAM,iBAAiB,CAAC;AAEtG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAG,MAAM,iBAAiB,CAAC;AASlD,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE9D,qBAAa,UAAU;IACnB,SAAgB,MAAM,EAAE,SAAS,CAAC;IAClC,SAAgB,WAAW,EAAE,SAAS,CAAC;IAEvC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,iBAAiB,CAA4B;IAErD,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,WAAW,CAAY;gBAG3B,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,EACxB,iBAAiB,EAAE,yBAAyB,EAC5C,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,WAAW;IAiBjC,OAAO,CAAC,qBAAqB;IAetB,SAAS,IAAI,MAAM;IAKnB,6BAA6B,CAChC,YAAY,EAAE,MAAM,EACpB,qBAAqB,EAAE,MAAM,GAC9B,MAAM;IA4BF,uBAAuB,IAAI,MAAM;IAIjC,+BAA+B,IAAI,MAAM;IAIzC,+BAA+B,IAAI,MAAM;IAInC,eAAe,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIzD,kBAAkB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAO5D,mBAAmB;IAwBnB,aAAa,CACtB,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,OAAO;IA+BV,cAAc,CACvB,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,OAAO;IAgCV,sBAAsB,CAC/B,MAAM,EAAE,SAAS,EACjB,kBAAkB,EAAE,WAAW,EAC/B,mBAAmB,EAAE,WAAW,EAChC,6BAA6B,EAAE,MAAM,EACrC,yBAAyB,EAAE,aAAa,GACzC,OAAO,CAAC;QACP,GAAG,EAAE,sBAAsB,EAAE,CAAA;QAC7B,YAAY,EAAE,yBAAyB,EAAE,CAAC;KAC7C,CAAC;CA+GL"}
|
package/dist/user.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { DriftUser } from "./types/classes/driftUser.class.js";
|
|
2
2
|
import { DRIFT_PROGRAM_ID, QUARTZ_HEALTH_BUFFER, } from "./config/constants.js";
|
|
3
|
-
import { getDriftSpotMarketVaultPublicKey, getDriftStatePublicKey, getPythOracle, getVaultPublicKey, getVaultSplPublicKey } from "./utils/helpers.js";
|
|
3
|
+
import { getDriftSpotMarketVaultPublicKey, getDriftStatePublicKey, getPythOracle, getTokenProgram, getVaultPublicKey, getVaultSplPublicKey } from "./utils/helpers.js";
|
|
4
4
|
import { getDriftSignerPublicKey } from "./utils/helpers.js";
|
|
5
|
-
import { getAssociatedTokenAddress,
|
|
5
|
+
import { getAssociatedTokenAddress, } from "@solana/spl-token";
|
|
6
6
|
import { SystemProgram, SYSVAR_INSTRUCTIONS_PUBKEY } from "@solana/web3.js";
|
|
7
7
|
import { ASSOCIATED_TOKEN_PROGRAM_ID } from "@solana/spl-token";
|
|
8
8
|
import { BN } from "bn.js";
|
|
9
9
|
import { getJupiterSwapIx } from "./utils/jupiter.js";
|
|
10
10
|
import { SwapMode } from "@jup-ag/api";
|
|
11
|
+
import { TOKENS } from "./config/tokens.js";
|
|
11
12
|
export class QuartzUser {
|
|
12
13
|
pubkey;
|
|
13
14
|
vaultPubkey;
|
|
@@ -39,13 +40,13 @@ export class QuartzUser {
|
|
|
39
40
|
getRepayAmountForTargetHealth(targetHealth, repayCollateralWeight) {
|
|
40
41
|
// New Quartz health after repayment is given as:
|
|
41
42
|
//
|
|
42
|
-
// loanValue -
|
|
43
|
-
// 1 -
|
|
44
|
-
// currentWeightedCollateral - (
|
|
45
|
-
// targetHealth =
|
|
46
|
-
//
|
|
43
|
+
// loanValue - repayValue
|
|
44
|
+
// 1 - ---------------------------------------------------------------- - quartzHealthBuffer
|
|
45
|
+
// currentWeightedCollateral - (repayValue * repayCollateralWeight)
|
|
46
|
+
// targetHealth = -----------------------------------------------------------------------------------------
|
|
47
|
+
// 1 - quartzHealthBuffer
|
|
47
48
|
//
|
|
48
|
-
// The following is an algebraicly simplified expression of the above formula, in terms of
|
|
49
|
+
// The following is an algebraicly simplified expression of the above formula, in terms of repayValue
|
|
49
50
|
if (targetHealth <= 0 || targetHealth >= 100)
|
|
50
51
|
throw Error("Target health must be between 0 and 100");
|
|
51
52
|
if (targetHealth <= this.getHealth())
|
|
@@ -93,8 +94,10 @@ export class QuartzUser {
|
|
|
93
94
|
.instruction();
|
|
94
95
|
return [ix_closeDriftAccount, ix_closeVault];
|
|
95
96
|
}
|
|
96
|
-
async makeDepositIx(amountBaseUnits,
|
|
97
|
-
const
|
|
97
|
+
async makeDepositIx(amountBaseUnits, marketIndex, reduceOnly) {
|
|
98
|
+
const mint = TOKENS[marketIndex].mint;
|
|
99
|
+
const tokenProgram = await getTokenProgram(this.connection, mint);
|
|
100
|
+
const ownerSpl = await getAssociatedTokenAddress(mint, this.pubkey, false, tokenProgram);
|
|
98
101
|
const ix = await this.program.methods
|
|
99
102
|
.deposit(new BN(amountBaseUnits), marketIndex, reduceOnly)
|
|
100
103
|
.accounts({
|
|
@@ -107,7 +110,7 @@ export class QuartzUser {
|
|
|
107
110
|
driftUserStats: this.driftUser.statsPubkey,
|
|
108
111
|
driftState: getDriftStatePublicKey(),
|
|
109
112
|
spotMarketVault: getDriftSpotMarketVaultPublicKey(marketIndex),
|
|
110
|
-
tokenProgram:
|
|
113
|
+
tokenProgram: tokenProgram,
|
|
111
114
|
associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,
|
|
112
115
|
driftProgram: DRIFT_PROGRAM_ID,
|
|
113
116
|
systemProgram: SystemProgram.programId
|
|
@@ -116,8 +119,10 @@ export class QuartzUser {
|
|
|
116
119
|
.instruction();
|
|
117
120
|
return ix;
|
|
118
121
|
}
|
|
119
|
-
async makeWithdrawIx(amountBaseUnits,
|
|
120
|
-
const
|
|
122
|
+
async makeWithdrawIx(amountBaseUnits, marketIndex, reduceOnly) {
|
|
123
|
+
const mint = TOKENS[marketIndex].mint;
|
|
124
|
+
const tokenProgram = await getTokenProgram(this.connection, mint);
|
|
125
|
+
const ownerSpl = await getAssociatedTokenAddress(mint, this.pubkey, false, tokenProgram);
|
|
121
126
|
const ix = await this.program.methods
|
|
122
127
|
.withdraw(new BN(amountBaseUnits), marketIndex, reduceOnly)
|
|
123
128
|
.accounts({
|
|
@@ -131,7 +136,7 @@ export class QuartzUser {
|
|
|
131
136
|
driftState: getDriftStatePublicKey(),
|
|
132
137
|
spotMarketVault: getDriftSpotMarketVaultPublicKey(marketIndex),
|
|
133
138
|
driftSigner: this.driftSigner,
|
|
134
|
-
tokenProgram:
|
|
139
|
+
tokenProgram: tokenProgram,
|
|
135
140
|
associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,
|
|
136
141
|
driftProgram: DRIFT_PROGRAM_ID,
|
|
137
142
|
systemProgram: SystemProgram.programId
|
|
@@ -140,15 +145,19 @@ export class QuartzUser {
|
|
|
140
145
|
.instruction();
|
|
141
146
|
return ix;
|
|
142
147
|
}
|
|
143
|
-
async makeCollateralRepayIxs(caller,
|
|
144
|
-
|
|
145
|
-
|
|
148
|
+
async makeCollateralRepayIxs(caller, depositMarketIndex, withdrawMarketIndex, callerWithdrawSplStartBalance, jupiterExactOutRouteQuote) {
|
|
149
|
+
const depositMint = TOKENS[depositMarketIndex].mint;
|
|
150
|
+
const withdrawMint = TOKENS[withdrawMarketIndex].mint;
|
|
146
151
|
if (jupiterExactOutRouteQuote.swapMode !== SwapMode.ExactOut)
|
|
147
152
|
throw Error("Jupiter quote must be ExactOutRoute");
|
|
148
153
|
if (jupiterExactOutRouteQuote.inputMint !== withdrawMint.toBase58())
|
|
149
154
|
throw Error("Jupiter quote inputMint does not match withdrawMint");
|
|
150
155
|
if (jupiterExactOutRouteQuote.outputMint !== depositMint.toBase58())
|
|
151
156
|
throw Error("Jupiter quote outputMint does not match depositMint");
|
|
157
|
+
const depositTokenProgram = await getTokenProgram(this.connection, depositMint);
|
|
158
|
+
const callerDepositSpl = await getAssociatedTokenAddress(depositMint, caller, false, depositTokenProgram);
|
|
159
|
+
const withdrawTokenProgram = await getTokenProgram(this.connection, withdrawMint);
|
|
160
|
+
const callerWithdrawSpl = await getAssociatedTokenAddress(withdrawMint, caller, false, withdrawTokenProgram);
|
|
152
161
|
const driftState = getDriftStatePublicKey();
|
|
153
162
|
const driftSpotMarketDeposit = getDriftSpotMarketVaultPublicKey(depositMarketIndex);
|
|
154
163
|
const driftSpotMarketWithdraw = getDriftSpotMarketVaultPublicKey(withdrawMarketIndex);
|
|
@@ -161,7 +170,7 @@ export class QuartzUser {
|
|
|
161
170
|
vault: this.vaultPubkey,
|
|
162
171
|
vaultWithdrawSpl: getVaultSplPublicKey(this.pubkey, withdrawMint),
|
|
163
172
|
owner: this.pubkey,
|
|
164
|
-
tokenProgram:
|
|
173
|
+
tokenProgram: withdrawTokenProgram,
|
|
165
174
|
associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,
|
|
166
175
|
systemProgram: SystemProgram.programId,
|
|
167
176
|
instructions: SYSVAR_INSTRUCTIONS_PUBKEY,
|
|
@@ -181,7 +190,7 @@ export class QuartzUser {
|
|
|
181
190
|
driftUserStats: this.driftUser.statsPubkey,
|
|
182
191
|
driftState: driftState,
|
|
183
192
|
spotMarketVault: driftSpotMarketDeposit,
|
|
184
|
-
tokenProgram:
|
|
193
|
+
tokenProgram: depositTokenProgram,
|
|
185
194
|
associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,
|
|
186
195
|
driftProgram: DRIFT_PROGRAM_ID,
|
|
187
196
|
systemProgram: SystemProgram.programId,
|
|
@@ -203,7 +212,7 @@ export class QuartzUser {
|
|
|
203
212
|
driftState: driftState,
|
|
204
213
|
spotMarketVault: driftSpotMarketWithdraw,
|
|
205
214
|
driftSigner: this.driftSigner,
|
|
206
|
-
tokenProgram:
|
|
215
|
+
tokenProgram: withdrawTokenProgram,
|
|
207
216
|
driftProgram: DRIFT_PROGRAM_ID,
|
|
208
217
|
systemProgram: SystemProgram.programId,
|
|
209
218
|
depositPriceUpdate: getPythOracle(depositMarketIndex),
|
package/dist/user.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.js","sourceRoot":"","sources":["../src/user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAG/D,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,GAAG,MAAM,uBAAuB,CAAC;AAIhF,OAAO,EAAE,gCAAgC,EAAE,sBAAsB,EAAE,aAAa,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"user.js","sourceRoot":"","sources":["../src/user.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/helpers.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { PublicKey } from "@solana/web3.js";
|
|
1
|
+
import { type Connection, PublicKey, type TransactionInstruction } from "@solana/web3.js";
|
|
2
2
|
import type { AccountMeta } from "../types/interfaces/accountMeta.interface.js";
|
|
3
3
|
import { type MarketIndex } from "../config/tokens.js";
|
|
4
4
|
export declare const getVaultPublicKey: (user: PublicKey) => PublicKey;
|
|
@@ -11,6 +11,10 @@ export declare const getDriftSpotMarketVaultPublicKey: (marketIndex: number) =>
|
|
|
11
11
|
export declare const getDriftSpotMarketPublicKey: (marketIndex: number) => PublicKey;
|
|
12
12
|
export declare const getPythPriceFeedAccount: (shardId: number, priceFeedId: string) => PublicKey;
|
|
13
13
|
export declare const getPythOracle: (marketIndex: MarketIndex) => PublicKey;
|
|
14
|
-
export declare const createPriorityFeeInstructions: (computeBudget: number) => Promise<
|
|
14
|
+
export declare const createPriorityFeeInstructions: (computeBudget: number) => Promise<TransactionInstruction[]>;
|
|
15
15
|
export declare const toRemainingAccount: (pubkey: PublicKey, isSigner: boolean, isWritable: boolean) => AccountMeta;
|
|
16
|
+
export declare const getTokenProgram: (connection: Connection, mint: PublicKey) => Promise<PublicKey>;
|
|
17
|
+
export declare function makeCreateAtaIxIfNeeded(connection: Connection, ata: PublicKey, authority: PublicKey, mint: PublicKey, tokenProgramId: PublicKey): Promise<TransactionInstruction[]>;
|
|
18
|
+
export declare function baseUnitToDecimal(baseUnits: number, marketIndex: MarketIndex): number;
|
|
19
|
+
export declare function decimalToBaseUnit(decimal: number, marketIndex: MarketIndex): number;
|
|
16
20
|
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,SAAS,EAAG,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,UAAU,EAAE,SAAS,EAAE,KAAK,sBAAsB,EAAG,MAAM,iBAAiB,CAAC;AAGjH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8CAA8C,CAAC;AAChF,OAAO,EAAE,KAAK,WAAW,EAAU,MAAM,qBAAqB,CAAC;AAG/D,eAAO,MAAM,iBAAiB,SAAU,SAAS,cAMhD,CAAA;AAED,eAAO,MAAM,oBAAoB,SAAU,SAAS,QAAQ,SAAS,cAOpE,CAAA;AAED,eAAO,MAAM,qBAAqB,aAAc,SAAS,cAUxD,CAAA;AAED,eAAO,MAAM,0BAA0B,aAAc,SAAS,cAM7D,CAAA;AAED,eAAO,MAAM,sBAAsB,iBAMlC,CAAA;AAED,eAAO,MAAM,uBAAuB,iBAMnC,CAAA;AAED,eAAO,MAAM,gCAAgC,gBAAiB,MAAM,cASnE,CAAA;AAED,eAAO,MAAM,2BAA2B,gBAAiB,MAAM,cAS9D,CAAA;AAED,eAAO,MAAM,uBAAuB,YAAa,MAAM,eAAe,MAAM,cAa3E,CAAA;AAED,eAAO,MAAM,aAAa,gBAAiB,WAAW,cAGrD,CAAA;AAED,eAAO,MAAM,6BAA6B,kBAAyB,MAAM,sCASxE,CAAA;AAED,eAAO,MAAM,kBAAkB,WAAY,SAAS,YAAY,OAAO,cAAc,OAAO,KAAG,WAM9F,CAAA;AAED,eAAO,MAAM,eAAe,eAAsB,UAAU,QAAQ,SAAS,uBAG5E,CAAA;AAED,wBAAsB,uBAAuB,CACzC,UAAU,EAAE,UAAU,EACtB,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,SAAS,EACf,cAAc,EAAE,SAAS,qCAgB5B;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,GAAG,MAAM,CAGrF;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,GAAG,MAAM,CAGnF"}
|
package/dist/utils/helpers.js
CHANGED
|
@@ -2,6 +2,7 @@ import { ComputeBudgetProgram, PublicKey, } from "@solana/web3.js";
|
|
|
2
2
|
import { QUARTZ_PROGRAM_ID, DRIFT_PROGRAM_ID, PYTH_ORACLE_PROGRAM_ID } from "../config/constants.js";
|
|
3
3
|
import { BN } from "bn.js";
|
|
4
4
|
import { TOKENS } from "../config/tokens.js";
|
|
5
|
+
import { createAssociatedTokenAccountInstruction, TOKEN_PROGRAM_ID } from "@solana/spl-token";
|
|
5
6
|
export const getVaultPublicKey = (user) => {
|
|
6
7
|
const [vaultPda] = PublicKey.findProgramAddressSync([Buffer.from("vault"), user.toBuffer()], QUARTZ_PROGRAM_ID);
|
|
7
8
|
return vaultPda;
|
|
@@ -80,4 +81,24 @@ export const toRemainingAccount = (pubkey, isSigner, isWritable) => {
|
|
|
80
81
|
isWritable: isWritable,
|
|
81
82
|
};
|
|
82
83
|
};
|
|
84
|
+
export const getTokenProgram = async (connection, mint) => {
|
|
85
|
+
const mintAccount = await connection.getAccountInfo(mint);
|
|
86
|
+
return mintAccount?.owner || TOKEN_PROGRAM_ID;
|
|
87
|
+
};
|
|
88
|
+
export async function makeCreateAtaIxIfNeeded(connection, ata, authority, mint, tokenProgramId) {
|
|
89
|
+
const oix_createAta = [];
|
|
90
|
+
const ataInfo = await connection.getAccountInfo(ata);
|
|
91
|
+
if (ataInfo === null) {
|
|
92
|
+
oix_createAta.push(createAssociatedTokenAccountInstruction(authority, ata, authority, mint, tokenProgramId));
|
|
93
|
+
}
|
|
94
|
+
return oix_createAta;
|
|
95
|
+
}
|
|
96
|
+
export function baseUnitToDecimal(baseUnits, marketIndex) {
|
|
97
|
+
const token = TOKENS[marketIndex];
|
|
98
|
+
return baseUnits / (10 ** token.decimalPrecision.toNumber());
|
|
99
|
+
}
|
|
100
|
+
export function decimalToBaseUnit(decimal, marketIndex) {
|
|
101
|
+
const token = TOKENS[marketIndex];
|
|
102
|
+
return Math.trunc(decimal * (10 ** token.decimalPrecision.toNumber()));
|
|
103
|
+
}
|
|
83
104
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quartz-labs/sdk",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.3",
|
|
4
4
|
"description": "SDK for interacting with the Quartz Protocol",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -64,4 +64,4 @@
|
|
|
64
64
|
"@solana/web3.js": "^1.98.0",
|
|
65
65
|
"rpc-websockets": "^9.0.4"
|
|
66
66
|
}
|
|
67
|
-
}
|
|
67
|
+
}
|