@quartz-labs/sdk 0.2.1 → 0.3.1
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 +9 -1
- package/dist/client.d.ts +8 -3
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +44 -12
- package/dist/client.js.map +1 -1
- package/dist/clientLight.d.ts +3 -2
- package/dist/clientLight.d.ts.map +1 -1
- package/dist/clientLight.js +13 -7
- package/dist/clientLight.js.map +1 -1
- package/dist/config/constants.d.ts +1 -9
- package/dist/config/constants.d.ts.map +1 -1
- package/dist/config/constants.js +1 -9
- package/dist/config/constants.js.map +1 -1
- package/dist/config/tokens.d.ts +5 -0
- package/dist/config/tokens.d.ts.map +1 -0
- package/dist/config/tokens.js +37 -0
- package/dist/config/tokens.js.map +1 -0
- package/dist/index.browser.d.ts +3 -5
- package/dist/index.browser.d.ts.map +1 -1
- package/dist/index.browser.js +3 -2
- package/dist/index.browser.js.map +1 -1
- package/dist/index.d.ts +2 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -5
- package/dist/index.js.map +1 -1
- package/dist/services/driftClientService.d.ts.map +1 -1
- package/dist/services/driftClientService.js +6 -5
- package/dist/services/driftClientService.js.map +1 -1
- package/dist/types/classes/driftUser.class.d.ts +5 -3
- package/dist/types/classes/driftUser.class.d.ts.map +1 -1
- package/dist/types/classes/driftUser.class.js +23 -12
- package/dist/types/classes/driftUser.class.js.map +1 -1
- package/dist/types/classes/dummyWallet.class.d.ts +4 -4
- package/dist/types/classes/dummyWallet.class.d.ts.map +1 -1
- package/dist/types/classes/dummyWallet.class.js +8 -7
- package/dist/types/classes/dummyWallet.class.js.map +1 -1
- package/dist/types/idl/quartz.d.ts +13 -8
- package/dist/types/idl/quartz.d.ts.map +1 -1
- package/dist/types/idl/quartz.js +13 -8
- package/dist/types/idl/quartz.js.map +1 -1
- package/dist/types/interfaces/accountMeta.interface.d.ts +7 -0
- package/dist/types/interfaces/accountMeta.interface.d.ts.map +1 -0
- package/dist/types/interfaces/accountMeta.interface.js +2 -0
- package/dist/types/interfaces/accountMeta.interface.js.map +1 -0
- package/dist/types/interfaces/token.interface.d.ts +8 -0
- package/dist/types/interfaces/token.interface.d.ts.map +1 -0
- package/dist/types/interfaces/token.interface.js +2 -0
- package/dist/types/interfaces/token.interface.js.map +1 -0
- package/dist/user.d.ts +18 -6
- package/dist/user.d.ts.map +1 -1
- package/dist/user.js +184 -8
- package/dist/user.js.map +1 -1
- package/dist/utils/helpers.d.ts +5 -5
- package/dist/utils/helpers.d.ts.map +1 -1
- package/dist/utils/helpers.js +18 -6
- package/dist/utils/helpers.js.map +1 -1
- package/dist/utils/jupiter.js.map +1 -1
- package/package.json +9 -10
package/README.md
CHANGED
|
@@ -18,11 +18,19 @@ There is currently an issue with dependancy resolutions, so add the following to
|
|
|
18
18
|
|
|
19
19
|
```json
|
|
20
20
|
"resolutions": {
|
|
21
|
-
"rpc-websockets": "^9.0.
|
|
21
|
+
"rpc-websockets": "^9.0.4",
|
|
22
22
|
"@solana/web3.js": "^1.95.8"
|
|
23
23
|
}
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
+
If you want to use this SDK in a front-end, note that some Node modules don't work in the browser. Because of this, you'll normally want to import the SDK in your client side code like this:
|
|
27
|
+
|
|
28
|
+
```javascript
|
|
29
|
+
import * from "@quartz-labs/sdk/browser";
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Server-side code can still be imported without the /browser path at the end, but you may need to set up your config so your web app doesn't try to bundle the problematic Node modules with the and client side code.
|
|
33
|
+
|
|
26
34
|
## Links
|
|
27
35
|
|
|
28
36
|
Website and waitlist: [quartzpay.io](https://quartzpay.io/)
|
package/dist/client.d.ts
CHANGED
|
@@ -3,16 +3,21 @@ import { type Quartz } from "./types/idl/quartz.js";
|
|
|
3
3
|
import { Program } from "@coral-xyz/anchor";
|
|
4
4
|
import type { PublicKey, Connection, AddressLookupTableAccount, MessageCompiledInstruction } from "@solana/web3.js";
|
|
5
5
|
import { QuartzUser } from "./user.js";
|
|
6
|
-
import {
|
|
7
|
-
export declare class QuartzClient
|
|
6
|
+
import type { TransactionInstruction } from "@solana/web3.js";
|
|
7
|
+
export declare class QuartzClient {
|
|
8
|
+
private connection;
|
|
9
|
+
private program;
|
|
10
|
+
private quartzLookupTable;
|
|
8
11
|
private driftClient;
|
|
9
|
-
constructor(connection: Connection, program: Program<Quartz>, quartzAddressTable: AddressLookupTableAccount, driftClient: DriftClient
|
|
12
|
+
constructor(connection: Connection, program: Program<Quartz>, quartzAddressTable: AddressLookupTableAccount, driftClient: DriftClient);
|
|
10
13
|
static fetchClient(connection: Connection): Promise<QuartzClient>;
|
|
14
|
+
getAllQuartzAccountOwnerPubkeys(): Promise<PublicKey[]>;
|
|
11
15
|
getQuartzAccount(owner: PublicKey): Promise<QuartzUser>;
|
|
12
16
|
getMultipleQuartzAccounts(owners: PublicKey[]): Promise<(QuartzUser | null)[]>;
|
|
13
17
|
getDepositRate(spotMarketIndex: number): Promise<import("bn.js")>;
|
|
14
18
|
getBorrowRate(spotMarketIndex: number): Promise<import("bn.js")>;
|
|
15
19
|
private getSpotMarketAccount;
|
|
16
20
|
listenForInstruction(instructionName: string, onInstruction: (instruction: MessageCompiledInstruction, accountKeys: PublicKey[]) => void): Promise<void>;
|
|
21
|
+
makeInitQuartzUserIxs(owner: PublicKey): Promise<TransactionInstruction[]>;
|
|
17
22
|
}
|
|
18
23
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGnD,OAAO,EAAO,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAyC,OAAO,EAAe,MAAM,mBAAmB,CAAC;AAChG,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,yBAAyB,EAAE,0BAA0B,EAAS,MAAM,iBAAiB,CAAC;AAC3H,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAKvC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGnD,OAAO,EAAO,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAyC,OAAO,EAAe,MAAM,mBAAmB,CAAC;AAChG,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,yBAAyB,EAAE,0BAA0B,EAAS,MAAM,iBAAiB,CAAC;AAC3H,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAKvC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAE9D,qBAAa,YAAY;IACrB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,iBAAiB,CAA4B;IACrD,OAAO,CAAC,WAAW,CAAc;gBAG7B,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,EACxB,kBAAkB,EAAE,yBAAyB,EAC7C,WAAW,EAAE,WAAW;WAQR,WAAW,CAC3B,UAAU,EAAE,UAAU;IAoBb,+BAA+B,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAMvD,gBAAgB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC;IAqBvD,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC;IAmC9E,cAAc,CAAC,eAAe,EAAE,MAAM;IAMtC,aAAa,CAAC,eAAe,EAAE,MAAM;YAMpC,oBAAoB;IAMrB,oBAAoB,CAC7B,eAAe,EAAE,MAAM,EACvB,aAAa,EAAE,CAAC,WAAW,EAAE,0BAA0B,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,IAAI;IAgCjF,qBAAqB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC;CA2B1F"}
|
package/dist/client.js
CHANGED
|
@@ -1,21 +1,25 @@
|
|
|
1
|
-
import { calculateBorrowRate, calculateDepositRate, fetchUserAccountsUsingKeys as fetchDriftAccountsUsingKeys } from "@drift-labs/sdk";
|
|
1
|
+
import { calculateBorrowRate, calculateDepositRate, DRIFT_PROGRAM_ID, fetchUserAccountsUsingKeys as fetchDriftAccountsUsingKeys } from "@drift-labs/sdk";
|
|
2
2
|
import { QUARTZ_ADDRESS_TABLE, QUARTZ_PROGRAM_ID } from "./config/constants.js";
|
|
3
3
|
import { IDL } from "./types/idl/quartz.js";
|
|
4
4
|
import { AnchorProvider, BorshInstructionCoder, Program, setProvider } from "@coral-xyz/anchor";
|
|
5
5
|
import { QuartzUser } from "./user.js";
|
|
6
|
-
import { getDriftUserPublicKey, getVaultPublicKey } from "./utils/helpers.js";
|
|
6
|
+
import { getDriftStatePublicKey, getDriftUserPublicKey, getDriftUserStatsPublicKey, getVaultPublicKey } from "./utils/helpers.js";
|
|
7
7
|
import { DriftClientService } from "./services/driftClientService.js";
|
|
8
|
-
import {
|
|
8
|
+
import { SystemProgram, SYSVAR_RENT_PUBKEY, } from "@solana/web3.js";
|
|
9
9
|
import { DummyWallet } from "./types/classes/dummyWallet.class.js";
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
export class QuartzClient {
|
|
11
|
+
connection;
|
|
12
|
+
program;
|
|
13
|
+
quartzLookupTable;
|
|
12
14
|
driftClient;
|
|
13
|
-
constructor(connection, program, quartzAddressTable, driftClient
|
|
14
|
-
|
|
15
|
+
constructor(connection, program, quartzAddressTable, driftClient) {
|
|
16
|
+
this.connection = connection;
|
|
17
|
+
this.program = program;
|
|
18
|
+
this.quartzLookupTable = quartzAddressTable;
|
|
15
19
|
this.driftClient = driftClient;
|
|
16
20
|
}
|
|
17
21
|
static async fetchClient(connection) {
|
|
18
|
-
const wallet = new DummyWallet(
|
|
22
|
+
const wallet = new DummyWallet();
|
|
19
23
|
const provider = new AnchorProvider(connection, wallet, { commitment: "confirmed" });
|
|
20
24
|
setProvider(provider);
|
|
21
25
|
const program = new Program(IDL, QUARTZ_PROGRAM_ID, provider);
|
|
@@ -23,8 +27,10 @@ export class QuartzClient extends QuartzClientLight {
|
|
|
23
27
|
if (!quartzLookupTable)
|
|
24
28
|
throw Error("Address Lookup Table account not found");
|
|
25
29
|
const driftClient = await DriftClientService.getDriftClient(connection);
|
|
26
|
-
|
|
27
|
-
|
|
30
|
+
return new QuartzClient(connection, program, quartzLookupTable, driftClient);
|
|
31
|
+
}
|
|
32
|
+
async getAllQuartzAccountOwnerPubkeys() {
|
|
33
|
+
return (await this.program.account.vault.all()).map((vault) => vault.account.owner);
|
|
28
34
|
}
|
|
29
35
|
async getQuartzAccount(owner) {
|
|
30
36
|
const vault = getVaultPublicKey(owner);
|
|
@@ -32,7 +38,7 @@ export class QuartzClient extends QuartzClientLight {
|
|
|
32
38
|
const [driftUserAccount] = await fetchDriftAccountsUsingKeys(this.connection, this.driftClient.program, [getDriftUserPublicKey(vault)]);
|
|
33
39
|
if (!driftUserAccount)
|
|
34
40
|
throw Error("Drift user not found");
|
|
35
|
-
return new QuartzUser(owner, this.connection, this.program, this.quartzLookupTable, this.
|
|
41
|
+
return new QuartzUser(owner, this.connection, this.program, this.quartzLookupTable, this.driftClient, driftUserAccount);
|
|
36
42
|
}
|
|
37
43
|
async getMultipleQuartzAccounts(owners) {
|
|
38
44
|
if (owners.length === 0)
|
|
@@ -54,7 +60,7 @@ export class QuartzClient extends QuartzClientLight {
|
|
|
54
60
|
return null;
|
|
55
61
|
if (owners[index] === undefined)
|
|
56
62
|
throw Error("Missing pubkey in owners array");
|
|
57
|
-
return new QuartzUser(owners[index], this.connection, this.program, this.quartzLookupTable, this.
|
|
63
|
+
return new QuartzUser(owners[index], this.connection, this.program, this.quartzLookupTable, this.driftClient, driftUser);
|
|
58
64
|
});
|
|
59
65
|
}
|
|
60
66
|
async getDepositRate(spotMarketIndex) {
|
|
@@ -97,5 +103,31 @@ export class QuartzClient extends QuartzClientLight {
|
|
|
97
103
|
}
|
|
98
104
|
}, "confirmed");
|
|
99
105
|
}
|
|
106
|
+
// --- Instructions ---
|
|
107
|
+
async makeInitQuartzUserIxs(owner) {
|
|
108
|
+
const vault = getVaultPublicKey(owner);
|
|
109
|
+
const ix_initUser = await this.program.methods
|
|
110
|
+
.initUser()
|
|
111
|
+
.accounts({
|
|
112
|
+
vault: vault,
|
|
113
|
+
owner: owner,
|
|
114
|
+
systemProgram: SystemProgram.programId,
|
|
115
|
+
})
|
|
116
|
+
.instruction();
|
|
117
|
+
const ix_initVaultDriftAccount = await this.program.methods
|
|
118
|
+
.initDriftAccount()
|
|
119
|
+
.accounts({
|
|
120
|
+
vault: vault,
|
|
121
|
+
owner: owner,
|
|
122
|
+
driftUser: getDriftUserPublicKey(vault),
|
|
123
|
+
driftUserStats: getDriftUserStatsPublicKey(vault),
|
|
124
|
+
driftState: getDriftStatePublicKey(),
|
|
125
|
+
driftProgram: DRIFT_PROGRAM_ID,
|
|
126
|
+
rent: SYSVAR_RENT_PUBKEY,
|
|
127
|
+
systemProgram: SystemProgram.programId,
|
|
128
|
+
})
|
|
129
|
+
.instruction();
|
|
130
|
+
return [ix_initUser, ix_initVaultDriftAccount];
|
|
131
|
+
}
|
|
100
132
|
}
|
|
101
133
|
//# sourceMappingURL=client.js.map
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,0BAA0B,IAAI,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/clientLight.d.ts
CHANGED
|
@@ -3,7 +3,8 @@ import type { Connection, TransactionInstruction } from "@solana/web3.js";
|
|
|
3
3
|
import { type Quartz } from "./types/idl/quartz.js";
|
|
4
4
|
import type { AddressLookupTableAccount } from "@solana/web3.js";
|
|
5
5
|
import type { PublicKey } from "@solana/web3.js";
|
|
6
|
-
import { QuartzUserLight } from "./
|
|
6
|
+
import { QuartzUserLight } from "./userLights.js";
|
|
7
|
+
import { DummyWallet } from "./types/classes/dummyWallet.class.js";
|
|
7
8
|
export declare class QuartzClientLight {
|
|
8
9
|
protected connection: Connection;
|
|
9
10
|
protected program: Program<Quartz>;
|
|
@@ -11,7 +12,7 @@ export declare class QuartzClientLight {
|
|
|
11
12
|
protected oracles: Map<string, PublicKey>;
|
|
12
13
|
constructor(connection: Connection, program: Program<Quartz>, quartzAddressTable: AddressLookupTableAccount, oracles: Map<string, PublicKey>);
|
|
13
14
|
static fetchClientLight(connection: Connection): Promise<QuartzClientLight>;
|
|
14
|
-
protected static fetchOracles(): Promise<Map<string, PublicKey>>;
|
|
15
|
+
protected static fetchOracles(connection: Connection, wallet: DummyWallet): Promise<Map<string, PublicKey>>;
|
|
15
16
|
makeInitQuartzUserIxs(owner: PublicKey): Promise<TransactionInstruction[]>;
|
|
16
17
|
getAllQuartzAccountOwnerPubkeys(): Promise<PublicKey[]>;
|
|
17
18
|
getQuartzAccountLight(pubkey: PublicKey): QuartzUserLight;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clientLight.d.ts","sourceRoot":"","sources":["../src/clientLight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,OAAO,EAAe,MAAM,mBAAmB,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAO,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"clientLight.d.ts","sourceRoot":"","sources":["../src/clientLight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,OAAO,EAAe,MAAM,mBAAmB,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAO,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAOjD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAInE,qBAAa,iBAAiB;IAC1B,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;gBAGtC,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,EACxB,kBAAkB,EAAE,yBAAyB,EAC7C,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC;WAQf,gBAAgB,CAChC,UAAU,EAAE,UAAU;qBAqBH,YAAY,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW;IAWlE,qBAAqB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC;IA4B1E,+BAA+B,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAM7D,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,eAAe;CASnE"}
|
package/dist/clientLight.js
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import { AnchorProvider, Program, setProvider } from "@coral-xyz/anchor";
|
|
2
2
|
import { IDL } from "./types/idl/quartz.js";
|
|
3
|
-
import { getDriftUserPublicKey, getVaultPublicKey
|
|
3
|
+
import { getDriftUserPublicKey, getVaultPublicKey } from "./utils/helpers.js";
|
|
4
|
+
import { getDriftUserStatsPublicKey } from "./utils/helpers.js";
|
|
4
5
|
import { Keypair, SystemProgram } from "@solana/web3.js";
|
|
5
6
|
import { SYSVAR_RENT_PUBKEY } from "@solana/web3.js";
|
|
6
|
-
import {
|
|
7
|
+
import { DRIFT_PROGRAM_ID } from "@drift-labs/sdk";
|
|
8
|
+
import { getDriftStatePublicKey } from "./utils/helpers.js";
|
|
9
|
+
import { QuartzUserLight } from "./userLights.js";
|
|
10
|
+
import { QUARTZ_ADDRESS_TABLE } from "./config/constants.js";
|
|
7
11
|
import { DummyWallet } from "./types/classes/dummyWallet.class.js";
|
|
8
|
-
import { QUARTZ_PROGRAM_ID
|
|
12
|
+
import { QUARTZ_PROGRAM_ID } from "./config/constants.js";
|
|
13
|
+
import { PythSolanaReceiver } from "@pythnetwork/pyth-solana-receiver";
|
|
9
14
|
export class QuartzClientLight {
|
|
10
15
|
connection;
|
|
11
16
|
program;
|
|
@@ -25,13 +30,14 @@ export class QuartzClientLight {
|
|
|
25
30
|
const quartzLookupTable = await connection.getAddressLookupTable(QUARTZ_ADDRESS_TABLE).then((res) => res.value);
|
|
26
31
|
if (!quartzLookupTable)
|
|
27
32
|
throw Error("Address Lookup Table account not found");
|
|
28
|
-
const oracles = await QuartzClientLight.fetchOracles();
|
|
33
|
+
const oracles = await QuartzClientLight.fetchOracles(connection, wallet);
|
|
29
34
|
return new QuartzClientLight(connection, program, quartzLookupTable, oracles);
|
|
30
35
|
}
|
|
31
|
-
static async fetchOracles() {
|
|
36
|
+
static async fetchOracles(connection, wallet) {
|
|
37
|
+
const pythSolanaReceiver = new PythSolanaReceiver({ connection, wallet });
|
|
32
38
|
const oracles = new Map([
|
|
33
|
-
["SOL/USD",
|
|
34
|
-
["USDC/USD",
|
|
39
|
+
["SOL/USD", pythSolanaReceiver.getPriceFeedAccountAddress(0, "0xef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d")],
|
|
40
|
+
["USDC/USD", pythSolanaReceiver.getPriceFeedAccountAddress(0, "0xeaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a")]
|
|
35
41
|
]);
|
|
36
42
|
return oracles;
|
|
37
43
|
}
|
package/dist/clientLight.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clientLight.js","sourceRoot":"","sources":["../src/clientLight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEzE,OAAO,EAAE,GAAG,EAAe,MAAM,uBAAuB,CAAC;AAGzD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"clientLight.js","sourceRoot":"","sources":["../src/clientLight.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,8 @@
|
|
|
1
1
|
import { PublicKey } from "@solana/web3.js";
|
|
2
2
|
export declare const QUARTZ_PROGRAM_ID: PublicKey;
|
|
3
3
|
export declare const QUARTZ_ADDRESS_TABLE: PublicKey;
|
|
4
|
+
export declare const QUARTZ_DRIFT_ACCOUNT: PublicKey;
|
|
4
5
|
export declare const DRIFT_PROGRAM_ID: PublicKey;
|
|
5
6
|
export declare const PYTH_ORACLE_PROGRAM_ID: PublicKey;
|
|
6
7
|
export declare const QUARTZ_HEALTH_BUFFER = 10;
|
|
7
|
-
export declare const USDC_MINT: PublicKey;
|
|
8
|
-
export declare const WSOL_MINT: PublicKey;
|
|
9
|
-
export declare const DRIFT_MARKET_INDEX_USDC = 0;
|
|
10
|
-
export declare const DRIFT_MARKET_INDEX_SOL = 1;
|
|
11
|
-
export declare const SUPPORTED_DRIFT_MARKETS: readonly [0, 1];
|
|
12
|
-
export declare const DRIFT_ORACLE_1: PublicKey;
|
|
13
|
-
export declare const DRIFT_ORACLE_2: PublicKey;
|
|
14
|
-
export declare const DRIFT_SPOT_MARKET_SOL: PublicKey;
|
|
15
|
-
export declare const DRIFT_SPOT_MARKET_USDC: PublicKey;
|
|
16
8
|
//# 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;
|
|
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"}
|
package/dist/config/constants.js
CHANGED
|
@@ -1,16 +1,8 @@
|
|
|
1
1
|
import { PublicKey } from "@solana/web3.js";
|
|
2
2
|
export const QUARTZ_PROGRAM_ID = new PublicKey("6JjHXLheGSNvvexgzMthEcgjkcirDrGduc3HAKB2P1v2");
|
|
3
3
|
export const QUARTZ_ADDRESS_TABLE = new PublicKey("96BmeKKVGX3LKYSKo3FCEom1YpNY11kCnGscKq6ouxLx");
|
|
4
|
+
export const QUARTZ_DRIFT_ACCOUNT = new PublicKey("5XY5pQbBjwv8ByBxKPNE7Xyb9dVcdFgd51xcxKDJjGWE");
|
|
4
5
|
export const DRIFT_PROGRAM_ID = new PublicKey("dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH");
|
|
5
6
|
export const PYTH_ORACLE_PROGRAM_ID = new PublicKey("pythWSnswVUd12oZpeFP8e9CVaEqJg25g1Vtc2biRsT");
|
|
6
7
|
export const QUARTZ_HEALTH_BUFFER = 10;
|
|
7
|
-
export const USDC_MINT = new PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v");
|
|
8
|
-
export const WSOL_MINT = new PublicKey("So11111111111111111111111111111111111111112");
|
|
9
|
-
export const DRIFT_MARKET_INDEX_USDC = 0;
|
|
10
|
-
export const DRIFT_MARKET_INDEX_SOL = 1;
|
|
11
|
-
export const SUPPORTED_DRIFT_MARKETS = [DRIFT_MARKET_INDEX_USDC, DRIFT_MARKET_INDEX_SOL];
|
|
12
|
-
export const DRIFT_ORACLE_1 = new PublicKey("En8hkHLkRe9d9DraYmBTrus518BvmVH448YcvmrFM6Ce");
|
|
13
|
-
export const DRIFT_ORACLE_2 = new PublicKey("BAtFj4kQttZRVep3UZS2aZRDixkGYgWsbqTBVDbnSsPF");
|
|
14
|
-
export const DRIFT_SPOT_MARKET_SOL = new PublicKey("3x85u7SWkmmr7YQGYhtjARgxwegTLJgkSLRprfXod6rh");
|
|
15
|
-
export const DRIFT_SPOT_MARKET_USDC = new PublicKey("6gMq3mRCKf8aP3ttTyYhuijVZ2LGi14oDsBbkgubfLB3");
|
|
16
8
|
//# 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;
|
|
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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Token } from "../types/interfaces/token.interface.js";
|
|
2
|
+
export declare const MarketIndex: readonly [1, 0, 5, 22, 28];
|
|
3
|
+
export type MarketIndex = (typeof MarketIndex)[number];
|
|
4
|
+
export declare const TOKENS: Record<MarketIndex, Token>;
|
|
5
|
+
//# sourceMappingURL=tokens.d.ts.map
|
|
@@ -0,0 +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;AAEpE,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,CA+B7C,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { PublicKey } from "@solana/web3.js";
|
|
2
|
+
export const MarketIndex = [
|
|
3
|
+
1, 0, 5, 22, 28
|
|
4
|
+
];
|
|
5
|
+
export const TOKENS = {
|
|
6
|
+
1: {
|
|
7
|
+
name: "SOL",
|
|
8
|
+
mint: new PublicKey("So11111111111111111111111111111111111111112"),
|
|
9
|
+
pythPriceFeedId: "0xef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d",
|
|
10
|
+
decimalPrecision: 9,
|
|
11
|
+
},
|
|
12
|
+
0: {
|
|
13
|
+
name: "USDC",
|
|
14
|
+
mint: new PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),
|
|
15
|
+
pythPriceFeedId: "0xeaa020c61cc479712813461ce153894a96a6c00b21ed0cfc2798d1f9a9e9c94a",
|
|
16
|
+
decimalPrecision: 6,
|
|
17
|
+
},
|
|
18
|
+
5: {
|
|
19
|
+
name: "USDT",
|
|
20
|
+
mint: new PublicKey("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),
|
|
21
|
+
pythPriceFeedId: "0x2b89b9dc8fdf9f34709a5b106b472f0f39bb6ca9ce04b0fd7f2e971688e2e53b",
|
|
22
|
+
decimalPrecision: 6,
|
|
23
|
+
},
|
|
24
|
+
22: {
|
|
25
|
+
name: "PYUSD",
|
|
26
|
+
mint: new PublicKey("2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo"),
|
|
27
|
+
pythPriceFeedId: "0xc1da1b73d7f01e7ddd54b3766cf7fcd644395ad14f70aa706ec5384c59e76692",
|
|
28
|
+
decimalPrecision: 6,
|
|
29
|
+
},
|
|
30
|
+
28: {
|
|
31
|
+
name: "USDS",
|
|
32
|
+
mint: new PublicKey("USDSwr9ApdHk5bvJKMjzff41FfuX8bSxdKcR81vTwcA"),
|
|
33
|
+
pythPriceFeedId: "0x77f0971af11cc8bac224917275c1bf55f2319ed5c654a1ca955c82fa2d297ea1",
|
|
34
|
+
decimalPrecision: 6,
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=tokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/config/tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,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,CAAC;KACtB;IACD,CAAC,EAAE;QACC,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,IAAI,SAAS,CAAC,8CAA8C,CAAC;QACnE,eAAe,EAAE,oEAAoE;QACrF,gBAAgB,EAAE,CAAC;KACtB;IACD,CAAC,EAAE;QACC,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,IAAI,SAAS,CAAC,8CAA8C,CAAC;QACnE,eAAe,EAAE,oEAAoE;QACrF,gBAAgB,EAAE,CAAC;KACtB;IACD,EAAE,EAAE;QACA,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,IAAI,SAAS,CAAC,8CAA8C,CAAC;QACnE,eAAe,EAAE,oEAAoE;QACrF,gBAAgB,EAAE,CAAC;KACtB;IACD,EAAE,EAAE;QACA,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,IAAI,SAAS,CAAC,6CAA6C,CAAC;QAClE,eAAe,EAAE,oEAAoE;QACrF,gBAAgB,EAAE,CAAC;KACtB;CACJ,CAAC"}
|
package/dist/index.browser.d.ts
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
export {
|
|
3
|
-
export { QuartzUserLight } from "./userLight.js";
|
|
1
|
+
import BN from "bn.js";
|
|
2
|
+
export { BN };
|
|
4
3
|
export * from "./config/constants.js";
|
|
4
|
+
export * from "./config/tokens.js";
|
|
5
5
|
export * from "./utils/helpers.js";
|
|
6
|
-
import type { Wallet } from "@coral-xyz/anchor/dist/cjs/provider.js";
|
|
7
|
-
export type { Wallet };
|
|
8
6
|
//# sourceMappingURL=index.browser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.browser.d.ts","sourceRoot":"","sources":["../src/index.browser.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.browser.d.ts","sourceRoot":"","sources":["../src/index.browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,OAAO,CAAC;AACvB,OAAO,EAAE,EAAE,EAAE,CAAC;AACd,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC"}
|
package/dist/index.browser.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
export {
|
|
1
|
+
import BN from "bn.js";
|
|
2
|
+
export { BN };
|
|
3
3
|
export * from "./config/constants.js";
|
|
4
|
+
export * from "./config/tokens.js";
|
|
4
5
|
export * from "./utils/helpers.js";
|
|
5
6
|
//# sourceMappingURL=index.browser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.browser.js","sourceRoot":"","sources":["../src/index.browser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.browser.js","sourceRoot":"","sources":["../src/index.browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,OAAO,CAAC;AACvB,OAAO,EAAE,EAAE,EAAE,CAAC;AACd,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
export
|
|
1
|
+
export * from "./index.browser.js";
|
|
2
|
+
export { DummyWallet } from "./types/classes/dummyWallet.class.js";
|
|
2
3
|
export { QuartzClient } from "./client.js";
|
|
3
4
|
export { QuartzUser } from "./user.js";
|
|
4
|
-
export { QuartzClientLight } from "./clientLight.js";
|
|
5
|
-
export { QuartzUserLight } from "./userLight.js";
|
|
6
|
-
export * from "./config/constants.js";
|
|
7
|
-
export * from "./utils/helpers.js";
|
|
8
|
-
export { Wallet } from "@coral-xyz/anchor";
|
|
9
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AAEnC,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
|
+
export * from "./index.browser.js";
|
|
2
|
+
export { DummyWallet } from "./types/classes/dummyWallet.class.js";
|
|
1
3
|
export { QuartzClient } from "./client.js";
|
|
2
4
|
export { QuartzUser } from "./user.js";
|
|
3
|
-
export { QuartzClientLight } from "./clientLight.js";
|
|
4
|
-
export { QuartzUserLight } from "./userLight.js";
|
|
5
|
-
export * from "./config/constants.js";
|
|
6
|
-
export * from "./utils/helpers.js";
|
|
7
|
-
export { Wallet } from "@coral-xyz/anchor";
|
|
8
5
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AAEnC,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"driftClientService.d.ts","sourceRoot":"","sources":["../../src/services/driftClientService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"driftClientService.d.ts","sourceRoot":"","sources":["../../src/services/driftClientService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAKlD,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAqB;IAC5C,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,sBAAsB,CAAmB;gBAG7C,UAAU,EAAE,UAAU;WAmBN,cAAc,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;CAOnF"}
|
|
@@ -1,19 +1,20 @@
|
|
|
1
|
-
import { DriftClient
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { DriftClient } from "@drift-labs/sdk";
|
|
2
|
+
import { MarketIndex } from "../config/tokens.js";
|
|
3
|
+
import { DummyWallet } from "../types/classes/dummyWallet.class.js";
|
|
4
|
+
import { QUARTZ_DRIFT_ACCOUNT } from "../config/constants.js";
|
|
4
5
|
export class DriftClientService {
|
|
5
6
|
static instance;
|
|
6
7
|
driftClient;
|
|
7
8
|
driftClientInitPromise;
|
|
8
9
|
constructor(connection) {
|
|
9
|
-
const wallet = new
|
|
10
|
+
const wallet = new DummyWallet(QUARTZ_DRIFT_ACCOUNT);
|
|
10
11
|
this.driftClient = new DriftClient({
|
|
11
12
|
connection: connection,
|
|
12
13
|
wallet: wallet,
|
|
13
14
|
env: 'mainnet-beta',
|
|
14
15
|
userStats: false,
|
|
15
16
|
perpMarketIndexes: [],
|
|
16
|
-
spotMarketIndexes: [...
|
|
17
|
+
spotMarketIndexes: [...MarketIndex],
|
|
17
18
|
accountSubscription: {
|
|
18
19
|
type: 'websocket',
|
|
19
20
|
commitment: "confirmed"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"driftClientService.js","sourceRoot":"","sources":["../../src/services/driftClientService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"driftClientService.js","sourceRoot":"","sources":["../../src/services/driftClientService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,MAAM,OAAO,kBAAkB;IACnB,MAAM,CAAC,QAAQ,CAAqB;IACpC,WAAW,CAAc;IACzB,sBAAsB,CAAmB;IAEjD,YACI,UAAsB;QAEtB,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,oBAAoB,CAAC,CAAC;QAErD,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC;YAC/B,UAAU,EAAE,UAAU;YACtB,MAAM,EAAE,MAAM;YACd,GAAG,EAAE,cAAc;YACnB,SAAS,EAAE,KAAK;YAChB,iBAAiB,EAAE,EAAE;YACrB,iBAAiB,EAAE,CAAC,GAAG,WAAW,CAAC;YACnC,mBAAmB,EAAE;gBACjB,IAAI,EAAE,WAAW;gBACjB,UAAU,EAAE,WAAW;aAC1B;SACJ,CAAC,CAAC;QACH,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;IAC/D,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,UAAsB;QACrD,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;YAC/B,kBAAkB,CAAC,QAAQ,GAAG,IAAI,kBAAkB,CAAC,UAAU,CAAC,CAAC;QACrE,CAAC;QACD,MAAM,kBAAkB,CAAC,QAAQ,CAAC,sBAAsB,CAAC;QACzD,OAAO,kBAAkB,CAAC,QAAQ,CAAC,WAAW,CAAC;IACnD,CAAC;CACJ"}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { BN, type DriftClient, type MarginCategory, type UserAccount } from "@drift-labs/sdk";
|
|
2
|
-
import type {
|
|
2
|
+
import type { PublicKey } from "@solana/web3.js";
|
|
3
|
+
import type { AccountMeta } from "../interfaces/accountMeta.interface.js";
|
|
4
|
+
import type { MarketIndex } from "../../config/tokens.js";
|
|
3
5
|
export declare class DriftUser {
|
|
4
6
|
private authority;
|
|
5
|
-
private connection;
|
|
6
7
|
private driftClient;
|
|
7
8
|
private userAccount;
|
|
8
9
|
pubkey: PublicKey;
|
|
9
10
|
statsPubkey: PublicKey;
|
|
10
|
-
constructor(authority: PublicKey,
|
|
11
|
+
constructor(authority: PublicKey, driftClient: DriftClient, userAccount: UserAccount);
|
|
11
12
|
getDriftUserAccount(): UserAccount;
|
|
13
|
+
getRemainingAccounts(marketIndex: MarketIndex): AccountMeta[];
|
|
12
14
|
getHealth(): number;
|
|
13
15
|
getTokenAmount(marketIndex: number): BN;
|
|
14
16
|
getWithdrawalLimit(marketIndex: number, reduceOnly?: boolean, adjustForAutoRepayLimit?: boolean): BN;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"driftUser.class.d.ts","sourceRoot":"","sources":["../../../src/types/classes/driftUser.class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoD,EAAE,EAAiT,KAAK,WAAW,EAA0J,KAAK,cAAc,EAAsL,KAAK,WAAW,EAA0D,MAAM,iBAAiB,CAAC;AACn0B,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"driftUser.class.d.ts","sourceRoot":"","sources":["../../../src/types/classes/driftUser.class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoD,EAAE,EAAiT,KAAK,WAAW,EAA0J,KAAK,cAAc,EAAsL,KAAK,WAAW,EAA0D,MAAM,iBAAiB,CAAC;AACn0B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,qBAAa,SAAS;IAClB,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,WAAW,CAAc;IAEjC,OAAO,CAAC,WAAW,CAA0B;IACzC,MAAM,EAAE,SAAS,CAAC;IAClB,WAAW,EAAE,SAAS,CAAC;gBAGvB,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,WAAW,EAC9B,WAAW,EAAE,WAAW;IAUlB,mBAAmB,IAAI,WAAW;IAKlC,oBAAoB,CAAC,WAAW,EAAE,WAAW,GAAG,WAAW,EAAE;IAe1D,SAAS,IAAI,MAAM;IAyBnB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,EAAE;IAuB1C,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,uBAAuB,UAAQ,GAAG,EAAE;IA2EzG,OAAO,CAAC,iBAAiB;IAiBzB,OAAO,CAAC,uBAAuB;IA2D5B,OAAO,CAAC,iBAAiB;IASlB,uBAAuB,CAChC,cAAc,CAAC,EAAE,cAAc,EAC/B,MAAM,UAAQ,EACd,iBAAiB,UAAO,GACtB,EAAE;IAWF,OAAO,CAAC,uBAAuB;IAkB/B,OAAO,CAAC,mCAAmC;IA+L3C,OAAO,CAAC,qBAAqB;IA8C7B,OAAO,CAAC,iBAAiB;IAyCzB,OAAO,CAAC,gBAAgB;IAiFxB,OAAO,CAAC,sBAAsB;IAW9B,OAAO,CAAC,2BAA2B;IAsMnC,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,gBAAgB;IAoBxB,OAAO,CAAC,iBAAiB;IAKlB,+BAA+B,IAAI,EAAE;IAc5C,OAAO,CAAC,oBAAoB;IAsB5B,OAAO,CAAC,6BAA6B;IAqBrC,OAAO,CAAC,sCAAsC;IAqH9C,OAAO,CAAC,2BAA2B;CAkBtC"}
|
|
@@ -3,14 +3,12 @@ import { getDriftUserPublicKey, getDriftUserStatsPublicKey } from "../../utils/h
|
|
|
3
3
|
import { QUARTZ_HEALTH_BUFFER } from "../../config/constants.js";
|
|
4
4
|
export class DriftUser {
|
|
5
5
|
authority;
|
|
6
|
-
connection;
|
|
7
6
|
driftClient;
|
|
8
7
|
userAccount;
|
|
9
8
|
pubkey;
|
|
10
9
|
statsPubkey;
|
|
11
|
-
constructor(authority,
|
|
10
|
+
constructor(authority, driftClient, userAccount) {
|
|
12
11
|
this.authority = authority;
|
|
13
|
-
this.connection = connection;
|
|
14
12
|
this.driftClient = driftClient;
|
|
15
13
|
this.pubkey = getDriftUserPublicKey(this.authority);
|
|
16
14
|
this.statsPubkey = getDriftUserStatsPublicKey(this.authority);
|
|
@@ -21,6 +19,19 @@ export class DriftUser {
|
|
|
21
19
|
throw new Error("DriftUser not initialized");
|
|
22
20
|
return this.userAccount;
|
|
23
21
|
}
|
|
22
|
+
getRemainingAccounts(marketIndex) {
|
|
23
|
+
const remainingAccounts = this.driftClient.getRemainingAccounts({
|
|
24
|
+
userAccounts: [this.getDriftUserAccount()],
|
|
25
|
+
useMarketLastSlotCache: true,
|
|
26
|
+
writableSpotMarketIndexes: [marketIndex],
|
|
27
|
+
readableSpotMarketIndexes: [QUOTE_SPOT_MARKET_INDEX]
|
|
28
|
+
});
|
|
29
|
+
const spotMarketAccount = this.driftClient.getSpotMarketAccount(marketIndex);
|
|
30
|
+
if (!spotMarketAccount)
|
|
31
|
+
throw new Error("Spot market not found");
|
|
32
|
+
this.driftClient.addTokenMintToRemainingAccounts(spotMarketAccount, remainingAccounts);
|
|
33
|
+
return remainingAccounts;
|
|
34
|
+
}
|
|
24
35
|
getHealth() {
|
|
25
36
|
if (this.isBeingLiquidated())
|
|
26
37
|
return 0;
|
|
@@ -53,7 +64,7 @@ export class DriftUser {
|
|
|
53
64
|
throw new Error("Spot market not found");
|
|
54
65
|
// eslint-disable-next-line prefer-const
|
|
55
66
|
let { borrowLimit, withdrawLimit } = calculateWithdrawLimit(spotMarket, nowTs);
|
|
56
|
-
const freeCollateral = this.getFreeCollateral("Initial");
|
|
67
|
+
const freeCollateral = this.getFreeCollateral("Initial", adjustForAutoRepayLimit);
|
|
57
68
|
const initialMarginRequirement = this.getMarginRequirement('Initial', undefined, false, true);
|
|
58
69
|
const oracleData = this.driftClient.getOracleDataForSpotMarket(marketIndex);
|
|
59
70
|
const precisionIncrease = TEN.pow(new BN(spotMarket.decimals - 6));
|
|
@@ -79,22 +90,22 @@ export class DriftUser {
|
|
|
79
90
|
const freeCollatAfterWithdraw = userDepositAmount.gt(ZERO)
|
|
80
91
|
? freeCollateral.sub(weightedAssetValue)
|
|
81
92
|
: freeCollateral;
|
|
82
|
-
const borrowLimitScale = adjustForAutoRepayLimit
|
|
83
|
-
? new BN(100 - QUARTZ_HEALTH_BUFFER)
|
|
84
|
-
: new BN(100);
|
|
85
93
|
const maxLiabilityAllowed = freeCollatAfterWithdraw
|
|
86
94
|
.mul(MARGIN_PRECISION)
|
|
87
95
|
.div(new BN(spotMarket.initialLiabilityWeight))
|
|
88
96
|
.mul(PRICE_PRECISION)
|
|
89
97
|
.div(oracleData.price)
|
|
90
|
-
.mul(precisionIncrease)
|
|
91
|
-
.mul(borrowLimitScale)
|
|
92
|
-
.div(new BN(100));
|
|
98
|
+
.mul(precisionIncrease);
|
|
93
99
|
const maxBorrowValue = BN.min(maxWithdrawValue.add(maxLiabilityAllowed), borrowLimit.abs());
|
|
94
100
|
return BN.max(maxBorrowValue, ZERO);
|
|
95
101
|
}
|
|
96
|
-
getFreeCollateral(marginCategory = 'Initial') {
|
|
97
|
-
const
|
|
102
|
+
getFreeCollateral(marginCategory = 'Initial', adjustForAutoRepayLimit = false) {
|
|
103
|
+
const borrowLimitScale = adjustForAutoRepayLimit
|
|
104
|
+
? new BN(100 - QUARTZ_HEALTH_BUFFER)
|
|
105
|
+
: new BN(100);
|
|
106
|
+
const totalCollateral = this.getTotalCollateralValue(marginCategory, true)
|
|
107
|
+
.mul(borrowLimitScale)
|
|
108
|
+
.div(new BN(100));
|
|
98
109
|
const marginRequirement = marginCategory === 'Initial'
|
|
99
110
|
? this.getMarginRequirement('Initial', undefined, false, true)
|
|
100
111
|
: this.getMaintenanceMarginRequirement();
|