@haven-fi/solauto-sdk 1.0.228 → 1.0.230
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/clients/referralStateManager.d.ts +0 -2
- package/dist/clients/referralStateManager.d.ts.map +1 -1
- package/dist/clients/referralStateManager.js +2 -11
- package/dist/clients/solautoClient.d.ts.map +1 -1
- package/dist/clients/solautoClient.js +1 -1
- package/dist/clients/solautoMarginfiClient.d.ts.map +1 -1
- package/dist/clients/solautoMarginfiClient.js +1 -1
- package/dist/clients/txHandler.d.ts +4 -3
- package/dist/clients/txHandler.d.ts.map +1 -1
- package/dist/clients/txHandler.js +4 -2
- package/dist/constants/solautoConstants.d.ts +3 -0
- package/dist/constants/solautoConstants.d.ts.map +1 -1
- package/dist/constants/solautoConstants.js +18 -16
- package/dist/transactions/transactionUtils.d.ts +2 -2
- package/dist/transactions/transactionUtils.d.ts.map +1 -1
- package/dist/transactions/transactionUtils.js +8 -8
- package/dist/transactions/transactionsManager.js +1 -1
- package/dist/utils/accountUtils.d.ts +3 -3
- package/dist/utils/accountUtils.d.ts.map +1 -1
- package/dist/utils/accountUtils.js +6 -7
- package/dist/utils/solanaUtils.d.ts +1 -1
- package/dist/utils/solanaUtils.d.ts.map +1 -1
- package/dist/utils/solanaUtils.js +8 -2
- package/dist/utils/solauto/generalUtils.d.ts +2 -1
- package/dist/utils/solauto/generalUtils.d.ts.map +1 -1
- package/dist/utils/solauto/generalUtils.js +21 -4
- package/package.json +1 -1
- package/src/clients/referralStateManager.ts +3 -15
- package/src/clients/solautoClient.ts +2 -1
- package/src/clients/solautoMarginfiClient.ts +2 -2
- package/src/clients/txHandler.ts +10 -7
- package/src/constants/solautoConstants.ts +24 -18
- package/src/transactions/transactionUtils.ts +9 -13
- package/src/transactions/transactionsManager.ts +1 -1
- package/src/utils/accountUtils.ts +8 -7
- package/src/utils/solanaUtils.ts +9 -2
- package/src/utils/solauto/generalUtils.ts +24 -6
- package/tests/transactions/solautoMarginfi.ts +7 -6
@@ -11,7 +11,6 @@ export interface ReferralStateManagerArgs {
|
|
11
11
|
referredByAuthority?: PublicKey;
|
12
12
|
}
|
13
13
|
export declare class ReferralStateManager extends TxHandler {
|
14
|
-
localTest?: boolean | undefined;
|
15
14
|
umi: Umi;
|
16
15
|
signer: Signer;
|
17
16
|
referralState: PublicKey;
|
@@ -19,7 +18,6 @@ export declare class ReferralStateManager extends TxHandler {
|
|
19
18
|
authority: PublicKey;
|
20
19
|
referredBy?: PublicKey;
|
21
20
|
referredByState?: PublicKey;
|
22
|
-
constructor(rpcUrl: string, localTest?: boolean | undefined);
|
23
21
|
initialize(args: ReferralStateManagerArgs): Promise<void>;
|
24
22
|
defaultLookupTables(): string[];
|
25
23
|
setReferredBy(referredBy?: PublicKey): void;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"referralStateManager.d.ts","sourceRoot":"","sources":["../../src/clients/referralStateManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAEL,MAAM,EAEN,kBAAkB,EAClB,GAAG,EACJ,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,aAAa,EAEd,MAAM,iDAAiD,CAAC;AACzD,OAAO,
|
1
|
+
{"version":3,"file":"referralStateManager.d.ts","sourceRoot":"","sources":["../../src/clients/referralStateManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAEL,MAAM,EAEN,kBAAkB,EAClB,GAAG,EACJ,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,aAAa,EAEd,MAAM,iDAAiD,CAAC;AACzD,OAAO,EAEL,aAAa,EAGd,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,MAAM,WAAW,wBAAwB;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,mBAAmB,CAAC,EAAE,SAAS,CAAC;CACjC;AAED,qBAAa,oBAAqB,SAAQ,SAAS;IAC1C,GAAG,EAAG,GAAG,CAAC;IACV,MAAM,EAAG,MAAM,CAAC;IAEhB,aAAa,EAAG,SAAS,CAAC;IAC1B,iBAAiB,EAAG,aAAa,GAAG,IAAI,CAAC;IACzC,SAAS,EAAG,SAAS,CAAC;IAEtB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,eAAe,CAAC,EAAE,SAAS,CAAC;IAE7B,UAAU,CAAC,IAAI,EAAE,wBAAwB;IA6B/C,mBAAmB,IAAI,MAAM,EAAE;IAS/B,aAAa,CAAC,UAAU,CAAC,EAAE,SAAS;IAmBpC,sBAAsB,CACpB,YAAY,CAAC,EAAE,SAAS,EACxB,WAAW,CAAC,EAAE,SAAS,GACtB,kBAAkB;IAerB,mBAAmB,IAAI,kBAAkB;IA+BnC,kBAAkB,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAC3D"}
|
@@ -11,15 +11,6 @@ const utils_1 = require("../utils");
|
|
11
11
|
const txHandler_1 = require("./txHandler");
|
12
12
|
const constants_1 = require("../constants");
|
13
13
|
class ReferralStateManager extends txHandler_1.TxHandler {
|
14
|
-
constructor(rpcUrl, localTest) {
|
15
|
-
super(rpcUrl, localTest);
|
16
|
-
this.localTest = localTest;
|
17
|
-
this.umi = this.umi.use({
|
18
|
-
install(umi) {
|
19
|
-
umi.programs.add((0, generated_1.createSolautoProgram)(), false);
|
20
|
-
},
|
21
|
-
});
|
22
|
-
}
|
23
14
|
async initialize(args) {
|
24
15
|
if (!args.signer && !args.wallet) {
|
25
16
|
throw new Error("Signer or wallet must be provided");
|
@@ -30,7 +21,7 @@ class ReferralStateManager extends txHandler_1.TxHandler {
|
|
30
21
|
this.signer = this.umi.identity;
|
31
22
|
this.referralState = args.referralState
|
32
23
|
? args.referralState
|
33
|
-
: (0, utils_1.getReferralState)(args.authority ?? (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey));
|
24
|
+
: (0, utils_1.getReferralState)(args.authority ?? (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey), this.programId);
|
34
25
|
this.referralStateData = await (0, generated_1.safeFetchReferralState)(this.umi, (0, umi_1.publicKey)(this.referralState), { commitment: "confirmed" });
|
35
26
|
this.authority = this.referralStateData
|
36
27
|
? (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.referralStateData.authority)
|
@@ -53,7 +44,7 @@ class ReferralStateManager extends txHandler_1.TxHandler {
|
|
53
44
|
: undefined;
|
54
45
|
this.referredBy = finalReferredBy;
|
55
46
|
this.referredByState = finalReferredBy
|
56
|
-
? (0, utils_1.getReferralState)(finalReferredBy)
|
47
|
+
? (0, utils_1.getReferralState)(finalReferredBy, this.programId)
|
57
48
|
: this.referralStateData
|
58
49
|
? (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.referralStateData.referredByState)
|
59
50
|
: undefined;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"solautoClient.d.ts","sourceRoot":"","sources":["../../src/clients/solautoClient.ts"],"names":[],"mappings":"AAAA,OAAO,gCAAgC,CAAC;AACxC,OAAO,EAA6B,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EACL,MAAM,EACN,kBAAkB,EAMnB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,wBAAwB,EACxB,yBAAyB,EACzB,gCAAgC,EAEhC,sBAAsB,EAKvB,MAAM,cAAc,CAAC;AAUtB,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAMpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,WAAW,iBAAkB,SAAQ,wBAAwB;IACjE,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,8BAAsB,aAAc,SAAQ,oBAAoB;IACvD,eAAe,CAAC,EAAE,eAAe,CAAC;IAElC,SAAS,EAAG,SAAS,CAAC;IACtB,MAAM,EAAG,MAAM,CAAC;IAEhB,UAAU,EAAG,MAAM,CAAC;IACpB,WAAW,EAAG,OAAO,CAAC;IACtB,eAAe,EAAG,SAAS,CAAC;IAC5B,mBAAmB,EAAG,eAAe,GAAG,IAAI,CAAC;IAC7C,oBAAoB,EAAG,aAAa,GAAG,SAAS,CAAC;IAEjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,UAAU,EAAG,SAAS,CAAC;IACvB,gBAAgB,EAAG,SAAS,CAAC;IAC7B,cAAc,EAAG,SAAS,CAAC;IAE3B,QAAQ,EAAG,SAAS,CAAC;IACrB,cAAc,EAAG,SAAS,CAAC;IAC3B,YAAY,EAAG,SAAS,CAAC;IAEzB,mBAAmB,EAAG,SAAS,CAAC;IAChC,iBAAiB,EAAG,SAAS,CAAC;IAE9B,mBAAmB,CAAC,EAAE,SAAS,CAAC;IAEhC,mBAAmB,EAAE,mBAAmB,CAA6B;IAEtE,UAAU,CAAC,IAAI,EAAE,iBAAiB;
|
1
|
+
{"version":3,"file":"solautoClient.d.ts","sourceRoot":"","sources":["../../src/clients/solautoClient.ts"],"names":[],"mappings":"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"}
|
@@ -22,7 +22,7 @@ class SolautoClient extends referralStateManager_1.ReferralStateManager {
|
|
22
22
|
await super.initialize(args);
|
23
23
|
this.positionId = args.positionId ?? 0;
|
24
24
|
this.selfManaged = this.positionId === 0;
|
25
|
-
this.solautoPosition = (0, accountUtils_1.getSolautoPositionAccount)(this.authority, this.positionId);
|
25
|
+
this.solautoPosition = (0, accountUtils_1.getSolautoPositionAccount)(this.authority, this.positionId, this.programId);
|
26
26
|
this.solautoPositionData = !args.new
|
27
27
|
? await (0, generated_1.safeFetchSolautoPosition)(this.umi, (0, umi_1.publicKey)(this.solautoPosition), { commitment: "confirmed" })
|
28
28
|
: null;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"solautoMarginfiClient.d.ts","sourceRoot":"","sources":["../../src/clients/solautoMarginfiClient.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,MAAM,EACN,kBAAkB,EAMnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAM1D,OAAO,EACL,kBAAkB,EAElB,aAAa,EAGb,iBAAiB,EACjB,wBAAwB,EACxB,gCAAgC,EAKjC,MAAM,cAAc,CAAC;AAOtB,OAAO,EAEL,eAAe,EAUhB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,gBAAgB,EAChB,eAAe,EAChB,MAAM,iCAAiC,CAAC;AAQzC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
1
|
+
{"version":3,"file":"solautoMarginfiClient.d.ts","sourceRoot":"","sources":["../../src/clients/solautoMarginfiClient.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,MAAM,EACN,kBAAkB,EAMnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAM1D,OAAO,EACL,kBAAkB,EAElB,aAAa,EAGb,iBAAiB,EACjB,wBAAwB,EACxB,gCAAgC,EAKjC,MAAM,cAAc,CAAC;AAOtB,OAAO,EAEL,eAAe,EAUhB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,gBAAgB,EAChB,eAAe,EAChB,MAAM,iCAAiC,CAAC;AAQzC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,WAAW,yBAA0B,SAAQ,iBAAiB;IAClE,eAAe,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IACrC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,aAAa,CAAC,EAAE,SAAS,CAAC;CAC3B;AAED,qBAAa,qBAAsB,SAAQ,aAAa;IACtD,OAAO,CAAC,WAAW,CAAkB;IAE9B,eAAe,EAAG,SAAS,CAAC;IAE5B,sBAAsB,EAAE,MAAM,CAAa;IAC3C,eAAe,EAAG,SAAS,GAAG,MAAM,CAAC;IACrC,iBAAiB,EAAG,SAAS,CAAC;IAC9B,aAAa,EAAG,SAAS,CAAC;IAE1B,sBAAsB,EAAG,qBAAqB,CAAC;IAC/C,oBAAoB,EAAG,qBAAqB,CAAC;IAE7C,iBAAiB,EAAG,SAAS,CAAC;IAC9B,eAAe,EAAG,SAAS,CAAC;IAG5B,iCAAiC,CAAC,EAAE,MAAM,CAAC;IAC3C,6BAA6B,EAAG,SAAS,CAAC;IAC1C,2BAA2B,CAAC,EAAE,eAAe,CAAC;IAE/C,UAAU,CAAC,IAAI,EAAE,yBAAyB;IAgE1C,8BAA8B;IA0CpC,eAAe,IAAI,SAAS;IAI5B,mBAAmB,IAAI,MAAM,EAAE;IAI/B,gBAAgB,IAAI,SAAS,EAAE;IAUzB,wBAAwB,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IA0BvE,yBAAyB,IAAI,kBAAkB;IAS/C,YAAY,CACV,aAAa,CAAC,EAAE,gCAAgC,EAChD,GAAG,CAAC,EAAE,kBAAkB,GACvB,kBAAkB;IAMrB,OAAO,CAAC,sBAAsB;IA6C9B,OAAO,IAAI,kBAAkB;IAc7B,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,GAAG,kBAAkB;IAUhE,OAAO,CAAC,6BAA6B;IAmErC,OAAO,CAAC,oCAAoC;IA0D5C,SAAS,CACP,aAAa,EAAE,GAAG,GAAG,GAAG,EACxB,QAAQ,EAAE,aAAa,EACvB,aAAa,EAAE,wBAAwB,EACvC,eAAe,EAAE,eAAe,EAChC,SAAS,CAAC,EAAE,gBAAgB,EAC5B,2BAA2B,CAAC,EAAE,MAAM,GACnC,kBAAkB;IAgFrB,WAAW,CACT,gBAAgB,EAAE,gBAAgB,EAClC,uBAAuB,EAAE,SAAS,GACjC,kBAAkB;IA2BrB,UAAU,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,kBAAkB;IAoFlE,iCAAiC,IAAI,kBAAkB;IASjD,qBAAqB,IAAI,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;CA6ClE"}
|
@@ -30,7 +30,7 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
|
|
30
30
|
this.marginfiAccountSeedIdx = (0, generalUtils_1.generateRandomU64)();
|
31
31
|
this.marginfiAccount = this.solautoPositionData
|
32
32
|
? (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.solautoPositionData.position.protocolAccount)
|
33
|
-
: (0, accountUtils_1.getMarginfiAccountPDA)(this.solautoPosition, this.marginfiAccountSeedIdx);
|
33
|
+
: (0, accountUtils_1.getMarginfiAccountPDA)(this.solautoPosition, this.marginfiAccountSeedIdx, this.programId);
|
34
34
|
}
|
35
35
|
this.marginfiAccountPk =
|
36
36
|
"publicKey" in this.marginfiAccount
|
@@ -1,10 +1,11 @@
|
|
1
1
|
import { Umi } from "@metaplex-foundation/umi";
|
2
|
-
import { Connection } from "@solana/web3.js";
|
2
|
+
import { Connection, PublicKey } from "@solana/web3.js";
|
3
3
|
export declare abstract class TxHandler {
|
4
4
|
rpcUrl: string;
|
5
|
-
|
5
|
+
programId: PublicKey;
|
6
6
|
connection: Connection;
|
7
|
-
|
7
|
+
umi: Umi;
|
8
|
+
constructor(rpcUrl: string, localTest?: boolean, programId?: PublicKey);
|
8
9
|
log(...args: any[]): void;
|
9
10
|
abstract defaultLookupTables(): string[];
|
10
11
|
abstract resetLiveTxUpdates(success?: boolean): Promise<void>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"txHandler.d.ts","sourceRoot":"","sources":["../../src/clients/txHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAC/C,OAAO,EAAE,UAAU,
|
1
|
+
{"version":3,"file":"txHandler.d.ts","sourceRoot":"","sources":["../../src/clients/txHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAOxD,8BAAsB,SAAS;IAKpB,MAAM,EAAE,MAAM;IAEd,SAAS,EAAE,SAAS;IANtB,UAAU,EAAG,UAAU,CAAC;IACxB,GAAG,EAAG,GAAG,CAAC;gBAGR,MAAM,EAAE,MAAM,EACrB,SAAS,CAAC,EAAE,OAAO,EACZ,SAAS,GAAE,SAAgC;IAWpD,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAIzB,QAAQ,CAAC,mBAAmB,IAAI,MAAM,EAAE;IAExC,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAC9D"}
|
@@ -2,10 +2,12 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.TxHandler = void 0;
|
4
4
|
const utils_1 = require("../utils");
|
5
|
+
const constants_1 = require("../constants");
|
5
6
|
class TxHandler {
|
6
|
-
constructor(rpcUrl, localTest) {
|
7
|
+
constructor(rpcUrl, localTest, programId = constants_1.SOLAUTO_PROD_PROGRAM) {
|
7
8
|
this.rpcUrl = rpcUrl;
|
8
|
-
|
9
|
+
this.programId = programId;
|
10
|
+
const [connection, umi] = (0, utils_1.getSolanaRpcConnection)(this.rpcUrl, this.programId);
|
9
11
|
this.connection = connection;
|
10
12
|
this.umi = umi;
|
11
13
|
if (!globalThis.LOCAL_TEST && localTest) {
|
@@ -1,3 +1,6 @@
|
|
1
|
+
import { PublicKey } from "@solana/web3.js";
|
2
|
+
export declare const SOLAUTO_PROD_PROGRAM: PublicKey;
|
3
|
+
export declare const SOLAUTO_TEST_PROGRAM: PublicKey;
|
1
4
|
export declare const BASIS_POINTS = 10000;
|
2
5
|
export declare const MIN_POSITION_STATE_FRESHNESS_SECS = 5;
|
3
6
|
export declare const MIN_REPAY_GAP_BPS = 50;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"solautoConstants.d.ts","sourceRoot":"","sources":["../../src/constants/solautoConstants.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"solautoConstants.d.ts","sourceRoot":"","sources":["../../src/constants/solautoConstants.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,SAAS,EACV,MAAM,iBAAiB,CAAC;AASzB,eAAO,MAAM,oBAAoB,WAEhC,CAAC;AACF,eAAO,MAAM,oBAAoB,WAEhC,CAAC;AAIF,eAAO,MAAM,YAAY,QAAQ,CAAC;AAElC,eAAO,MAAM,iCAAiC,IAAI,CAAC;AACnD,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC,eAAO,MAAM,MAAM,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAO,CAAC;AAE7E,eAAO,MAAM,WAAW,iDAAiD,CAAC;AAC1E,eAAO,MAAM,qBAAqB,UAYR,CAAC"}
|
@@ -1,33 +1,35 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.STANDARD_LUT_ACCOUNTS = exports.SOLAUTO_LUT = exports.PRICES = exports.MIN_BOOST_GAP_BPS = exports.MIN_REPAY_GAP_BPS = exports.MIN_POSITION_STATE_FRESHNESS_SECS = exports.BASIS_POINTS = void 0;
|
3
|
+
exports.STANDARD_LUT_ACCOUNTS = exports.SOLAUTO_LUT = exports.PRICES = exports.MIN_BOOST_GAP_BPS = exports.MIN_REPAY_GAP_BPS = exports.MIN_POSITION_STATE_FRESHNESS_SECS = exports.BASIS_POINTS = exports.SOLAUTO_TEST_PROGRAM = exports.SOLAUTO_PROD_PROGRAM = void 0;
|
4
4
|
const web3_js_1 = require("@solana/web3.js");
|
5
5
|
const spl_token_1 = require("@solana/spl-token");
|
6
6
|
// import { JitoRpcConnection } from "jito-ts";
|
7
|
-
const generated_1 = require("../generated");
|
8
7
|
const generalAccounts_1 = require("./generalAccounts");
|
9
8
|
const jupiter_sdk_1 = require("../jupiter-sdk");
|
9
|
+
exports.SOLAUTO_PROD_PROGRAM = new web3_js_1.PublicKey("AutoyKBRaHSBHy9RsmXCZMy6nNFAg5FYijrvZyQcNLV");
|
10
|
+
exports.SOLAUTO_TEST_PROGRAM = new web3_js_1.PublicKey("TesTjfQ6TbXv96Tv6fqr95XTZ1LYPxtkafmShN9PjBp");
|
10
11
|
globalThis.LOCAL_TEST = false;
|
11
12
|
exports.BASIS_POINTS = 10000;
|
12
13
|
exports.MIN_POSITION_STATE_FRESHNESS_SECS = 5;
|
13
14
|
exports.MIN_REPAY_GAP_BPS = 50;
|
14
15
|
exports.MIN_BOOST_GAP_BPS = 50;
|
16
|
+
exports.PRICES = {};
|
17
|
+
exports.SOLAUTO_LUT = "9D4xwZwDf46n9ft5gQxZzq3rBbdRXsXojKQLZbBdskPY";
|
18
|
+
exports.STANDARD_LUT_ACCOUNTS = [
|
19
|
+
web3_js_1.PublicKey.default,
|
20
|
+
exports.SOLAUTO_PROD_PROGRAM,
|
21
|
+
exports.SOLAUTO_TEST_PROGRAM,
|
22
|
+
generalAccounts_1.SOLAUTO_MANAGER,
|
23
|
+
web3_js_1.SystemProgram.programId,
|
24
|
+
spl_token_1.TOKEN_PROGRAM_ID,
|
25
|
+
spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID,
|
26
|
+
web3_js_1.SYSVAR_CLOCK_PUBKEY,
|
27
|
+
web3_js_1.SYSVAR_RENT_PUBKEY,
|
28
|
+
web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY,
|
29
|
+
jupiter_sdk_1.JUPITER_PROGRAM_ID,
|
30
|
+
].map((x) => x.toString());
|
15
31
|
// export const JITO_BLOCK_ENGINE = "ny.mainnet.block-engine.jito.wtf";
|
16
32
|
// export const JITO_CONNECTION = new JitoRpcConnection(
|
17
33
|
// `https://${JITO_BLOCK_ENGINE}`,
|
18
34
|
// "finalized"
|
19
35
|
// );
|
20
|
-
exports.PRICES = {};
|
21
|
-
exports.SOLAUTO_LUT = "9D4xwZwDf46n9ft5gQxZzq3rBbdRXsXojKQLZbBdskPY";
|
22
|
-
exports.STANDARD_LUT_ACCOUNTS = [
|
23
|
-
web3_js_1.PublicKey.default.toString(),
|
24
|
-
generated_1.SOLAUTO_PROGRAM_ID,
|
25
|
-
generalAccounts_1.SOLAUTO_MANAGER.toString(),
|
26
|
-
web3_js_1.SystemProgram.programId.toString(),
|
27
|
-
spl_token_1.TOKEN_PROGRAM_ID.toString(),
|
28
|
-
spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID.toString(),
|
29
|
-
web3_js_1.SYSVAR_CLOCK_PUBKEY.toString(),
|
30
|
-
web3_js_1.SYSVAR_RENT_PUBKEY.toString(),
|
31
|
-
web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY.toString(),
|
32
|
-
jupiter_sdk_1.JUPITER_PROGRAM_ID
|
33
|
-
];
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { TransactionBuilder } from "@metaplex-foundation/umi";
|
1
|
+
import { TransactionBuilder, Umi } from "@metaplex-foundation/umi";
|
2
2
|
import { PublicKey } from "@solana/web3.js";
|
3
3
|
import { SolautoClient } from "../clients/solautoClient";
|
4
4
|
import { ReferralStateManager } from "../clients";
|
@@ -8,7 +8,7 @@ export declare function getTransactionChores(client: SolautoClient, tx: Transact
|
|
8
8
|
export declare function requiresRefreshBeforeRebalance(client: SolautoClient): Promise<boolean>;
|
9
9
|
export declare function buildSolautoRebalanceTransaction(client: SolautoClient, targetLiqUtilizationRateBps?: number, attemptNum?: number): Promise<TransactionItemInputs | undefined>;
|
10
10
|
export declare function convertReferralFeesToDestination(referralManager: ReferralStateManager, tokenAccount: PublicKey, destinationMint: PublicKey): Promise<TransactionItemInputs | undefined>;
|
11
|
-
export declare function getErrorInfo(tx: TransactionBuilder, error: any): {
|
11
|
+
export declare function getErrorInfo(umi: Umi, tx: TransactionBuilder, error: any): {
|
12
12
|
errorName: string | undefined;
|
13
13
|
errorInfo: undefined;
|
14
14
|
canBeIgnored: boolean;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"transactionUtils.d.ts","sourceRoot":"","sources":["../../src/transactions/transactionUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,kBAAkB,
|
1
|
+
{"version":3,"file":"transactionUtils.d.ts","sourceRoot":"","sources":["../../src/transactions/transactionUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,kBAAkB,EAClB,GAAG,EAGJ,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,SAAS,EAA8B,MAAM,iBAAiB,CAAC;AAmBxE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAwCzD,OAAO,EAAE,oBAAoB,EAAa,MAAM,YAAY,CAAC;AAO7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAqLjD,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,EACtB,sBAAsB,EAAE,MAAM,EAAE,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CAkH7B;AAkLD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,GACrB,OAAO,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CA0BnD;AAED,wBAAsB,8BAA8B,CAAC,MAAM,EAAE,aAAa,oBA2CzE;AAED,wBAAsB,gCAAgC,CACpD,MAAM,EAAE,aAAa,EACrB,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAsH5C;AAED,wBAAsB,gCAAgC,CACpD,eAAe,EAAE,oBAAoB,EACrC,YAAY,EAAE,SAAS,EACvB,eAAe,EAAE,SAAS,GACzB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAsC5C;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,GAAG;;;;EAwCxE"}
|
@@ -119,7 +119,7 @@ async function transactionChoresBefore(client, accountsGettingCreated, solautoAc
|
|
119
119
|
return chores;
|
120
120
|
}
|
121
121
|
async function rebalanceChoresBefore(client, tx, accountsGettingCreated) {
|
122
|
-
const rebalanceInstructions = getRebalanceInstructions(tx);
|
122
|
+
const rebalanceInstructions = getRebalanceInstructions(client.umi, tx);
|
123
123
|
if (rebalanceInstructions.length === 0) {
|
124
124
|
return (0, umi_1.transactionBuilder)();
|
125
125
|
}
|
@@ -184,9 +184,9 @@ function transactionChoresAfter(client, solautoActions, cancellingDcaIn) {
|
|
184
184
|
}
|
185
185
|
return chores;
|
186
186
|
}
|
187
|
-
function getRebalanceInstructions(tx) {
|
187
|
+
function getRebalanceInstructions(umi, tx) {
|
188
188
|
return tx.getInstructions().filter((x) => {
|
189
|
-
if (x.programId ===
|
189
|
+
if (x.programId.toString() === umi.programs.get("solauto").publicKey.toString()) {
|
190
190
|
try {
|
191
191
|
const serializer = (0, generated_1.getMarginfiRebalanceInstructionDataSerializer)();
|
192
192
|
const discriminator = serializer.serialize({
|
@@ -204,10 +204,10 @@ function getRebalanceInstructions(tx) {
|
|
204
204
|
}
|
205
205
|
});
|
206
206
|
}
|
207
|
-
function getSolautoActions(tx) {
|
207
|
+
function getSolautoActions(umi, tx) {
|
208
208
|
let solautoActions = [];
|
209
209
|
tx.getInstructions().forEach((x) => {
|
210
|
-
if (x.programId ===
|
210
|
+
if (x.programId.toString() === umi.programs.get("solauto").publicKey.toString()) {
|
211
211
|
try {
|
212
212
|
const serializer = (0, generated_1.getMarginfiProtocolInteractionInstructionDataSerializer)();
|
213
213
|
const discriminator = serializer.serialize({
|
@@ -318,7 +318,7 @@ async function getTransactionChores(client, tx) {
|
|
318
318
|
let choresBefore = (0, umi_1.transactionBuilder)();
|
319
319
|
let choresAfter = (0, umi_1.transactionBuilder)();
|
320
320
|
const accountsGettingCreated = [];
|
321
|
-
const solautoActions = getSolautoActions(tx);
|
321
|
+
const solautoActions = getSolautoActions(client.umi, tx);
|
322
322
|
choresBefore = choresBefore.add([
|
323
323
|
await transactionChoresBefore(client, accountsGettingCreated, solautoActions, client.livePositionUpdates.dcaInBalance),
|
324
324
|
await rebalanceChoresBefore(client, tx, accountsGettingCreated),
|
@@ -429,7 +429,7 @@ async function convertReferralFeesToDestination(referralManager, tokenAccount, d
|
|
429
429
|
.add(swapIx);
|
430
430
|
return { tx, lookupTableAddresses };
|
431
431
|
}
|
432
|
-
function getErrorInfo(tx, error) {
|
432
|
+
function getErrorInfo(umi, tx, error) {
|
433
433
|
let canBeIgnored = false;
|
434
434
|
let errorName = undefined;
|
435
435
|
let errorInfo = undefined;
|
@@ -439,7 +439,7 @@ function getErrorInfo(tx, error) {
|
|
439
439
|
const err = error["InstructionError"];
|
440
440
|
const errIx = tx.getInstructions()[Math.max(0, err[0] - 2)];
|
441
441
|
const errCode = err[1]["Custom"];
|
442
|
-
if (errIx.programId ===
|
442
|
+
if (errIx.programId.toString() === umi.programs.get("solauto").publicKey.toString()) {
|
443
443
|
programError = (0, generated_1.getSolautoErrorFromCode)(errCode, (0, generated_1.createSolautoProgram)());
|
444
444
|
if (programError?.name ===
|
445
445
|
new generated_1.InvalidRebalanceConditionError((0, generated_1.createSolautoProgram)()).name) {
|
@@ -334,7 +334,7 @@ class TransactionsManager {
|
|
334
334
|
this.updateStatus(txName, TransactionStatus.Successful, attemptNum, txSig ? bs58_1.default.encode(txSig) : undefined);
|
335
335
|
}
|
336
336
|
catch (e) {
|
337
|
-
const errorDetails = (0, transactionUtils_1.getErrorInfo)(tx, e);
|
337
|
+
const errorDetails = (0, transactionUtils_1.getErrorInfo)(this.txHandler.umi, tx, e);
|
338
338
|
this.updateStatus(txName, errorDetails.canBeIgnored
|
339
339
|
? TransactionStatus.Skipped
|
340
340
|
: TransactionStatus.Failed, attemptNum, undefined, undefined, errorDetails.errorInfo ?? errorDetails.errorName ?? "Unknown error");
|
@@ -5,7 +5,7 @@ export declare function bufferFromU64(num: bigint): Buffer;
|
|
5
5
|
export declare function getTokenAccount(wallet: PublicKey, tokenMint: PublicKey): PublicKey;
|
6
6
|
export declare function getTokenAccounts(wallet: PublicKey, tokenMints: PublicKey[]): PublicKey[];
|
7
7
|
export declare function getTokenAccountData(umi: Umi, tokenAccount: PublicKey): Promise<import("@solana/spl-token").RawAccount | undefined>;
|
8
|
-
export declare function getSolautoPositionAccount(signer: PublicKey, positionId: number): PublicKey;
|
9
|
-
export declare function getReferralState(authority: PublicKey): PublicKey;
|
10
|
-
export declare function getMarginfiAccountPDA(solautoPositionAccount: PublicKey, marginfiAccountSeedIdx: bigint): PublicKey;
|
8
|
+
export declare function getSolautoPositionAccount(signer: PublicKey, positionId: number, programId: PublicKey): PublicKey;
|
9
|
+
export declare function getReferralState(authority: PublicKey, programId: PublicKey): PublicKey;
|
10
|
+
export declare function getMarginfiAccountPDA(solautoPositionAccount: PublicKey, marginfiAccountSeedIdx: bigint, programId: PublicKey): PublicKey;
|
11
11
|
//# sourceMappingURL=accountUtils.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"accountUtils.d.ts","sourceRoot":"","sources":["../../src/utils/accountUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
1
|
+
{"version":3,"file":"accountUtils.d.ts","sourceRoot":"","sources":["../../src/utils/accountUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAa,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAE1D,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIhD;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIjD;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,GAAG,SAAS,CAMlF;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAExF;AAED,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,EAAE,SAAS,+DAO1E;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,SAAS,aAQrB;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,aAU1E;AAED,wBAAgB,qBAAqB,CACnC,sBAAsB,EAAE,SAAS,EACjC,sBAAsB,EAAE,MAAM,EAC9B,SAAS,EAAE,SAAS,aAarB"}
|
@@ -10,7 +10,6 @@ exports.getReferralState = getReferralState;
|
|
10
10
|
exports.getMarginfiAccountPDA = getMarginfiAccountPDA;
|
11
11
|
const web3_js_1 = require("@solana/web3.js");
|
12
12
|
const spl_token_1 = require("@solana/spl-token");
|
13
|
-
const generated_1 = require("../generated");
|
14
13
|
const umi_1 = require("@metaplex-foundation/umi");
|
15
14
|
function bufferFromU8(num) {
|
16
15
|
const buffer = Buffer.alloc(1);
|
@@ -37,21 +36,21 @@ async function getTokenAccountData(umi, tokenAccount) {
|
|
37
36
|
return undefined;
|
38
37
|
}
|
39
38
|
}
|
40
|
-
function getSolautoPositionAccount(signer, positionId) {
|
41
|
-
const [positionAccount, _] = web3_js_1.PublicKey.findProgramAddressSync([bufferFromU8(positionId), signer.toBuffer()],
|
39
|
+
function getSolautoPositionAccount(signer, positionId, programId) {
|
40
|
+
const [positionAccount, _] = web3_js_1.PublicKey.findProgramAddressSync([bufferFromU8(positionId), signer.toBuffer()], programId);
|
42
41
|
return positionAccount;
|
43
42
|
}
|
44
|
-
function getReferralState(authority) {
|
43
|
+
function getReferralState(authority, programId) {
|
45
44
|
const str = "referral_state";
|
46
45
|
const strBuffer = Buffer.from(str, "utf-8");
|
47
|
-
const [ReferralState, _] = web3_js_1.PublicKey.findProgramAddressSync([strBuffer, authority.toBuffer()],
|
46
|
+
const [ReferralState, _] = web3_js_1.PublicKey.findProgramAddressSync([strBuffer, authority.toBuffer()], programId);
|
48
47
|
return ReferralState;
|
49
48
|
}
|
50
|
-
function getMarginfiAccountPDA(solautoPositionAccount, marginfiAccountSeedIdx) {
|
49
|
+
function getMarginfiAccountPDA(solautoPositionAccount, marginfiAccountSeedIdx, programId) {
|
51
50
|
const seeds = [
|
52
51
|
solautoPositionAccount.toBuffer(),
|
53
52
|
bufferFromU64(marginfiAccountSeedIdx),
|
54
53
|
];
|
55
|
-
const [marginfiAccount, _] = web3_js_1.PublicKey.findProgramAddressSync(seeds,
|
54
|
+
const [marginfiAccount, _] = web3_js_1.PublicKey.findProgramAddressSync(seeds, programId);
|
56
55
|
return marginfiAccount;
|
57
56
|
}
|
@@ -3,7 +3,7 @@ import { Connection, PublicKey, TransactionInstruction } from "@solana/web3.js";
|
|
3
3
|
import { PriorityFeeSetting, TransactionRunType } from "../types";
|
4
4
|
export declare function buildHeliusApiUrl(heliusApiKey: string): string;
|
5
5
|
export declare function buildIronforgeApiUrl(ironforgeApiKey: string): string;
|
6
|
-
export declare function getSolanaRpcConnection(rpcUrl: string): [Connection, Umi];
|
6
|
+
export declare function getSolanaRpcConnection(rpcUrl: string, programId?: PublicKey): [Connection, Umi];
|
7
7
|
export declare function getWrappedInstruction(signer: Signer, ix: TransactionInstruction): WrappedInstruction;
|
8
8
|
export declare function setComputeUnitLimitUmiIx(signer: Signer, maxComputeUnits: number): WrappedInstruction;
|
9
9
|
export declare function setComputeUnitPriceUmiIx(signer: Signer, lamports: number): WrappedInstruction;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"solanaUtils.d.ts","sourceRoot":"","sources":["../../src/utils/solanaUtils.ts"],"names":[],"mappings":"AACA,OAAO,EACL,uBAAuB,EACvB,MAAM,EACN,kBAAkB,EAClB,GAAG,EACH,kBAAkB,EAGnB,MAAM,0BAA0B,CAAC;AAOlC,OAAO,EAGL,UAAU,EACV,SAAS,EAIT,sBAAsB,EAEvB,MAAM,iBAAiB,CAAC;AAYzB,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;
|
1
|
+
{"version":3,"file":"solanaUtils.d.ts","sourceRoot":"","sources":["../../src/utils/solanaUtils.ts"],"names":[],"mappings":"AACA,OAAO,EACL,uBAAuB,EACvB,MAAM,EACN,kBAAkB,EAClB,GAAG,EACH,kBAAkB,EAGnB,MAAM,0BAA0B,CAAC;AAOlC,OAAO,EAGL,UAAU,EACV,SAAS,EAIT,sBAAsB,EAEvB,MAAM,iBAAiB,CAAC;AAYzB,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAIlE,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,UAErD;AAED,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,MAAM,UAE3D;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,SAAS,GAAE,SAAgC,GAC1C,CAAC,UAAU,EAAE,GAAG,CAAC,CAQnB;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,sBAAsB,GACzB,kBAAkB,CAMpB;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,GACtB,kBAAkB,CAOpB;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,kBAAkB,CAOpB;AAED,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,SAAS,GACd,kBAAkB,CAUpB;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,SAAS,EACtB,QAAQ,EAAE,MAAM,GACf,kBAAkB,CASpB;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,SAAS,EACvB,SAAS,EAAE,SAAS,GACnB,kBAAkB,CAKpB;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,GACb,kBAAkB,CAKpB;AAED,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,GAAG,EACR,oBAAoB,EAAE,MAAM,EAAE,GAC7B,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAkBpC;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,kBAAkB,EACtB,gBAAgB,EAAE,MAAM,EACxB,gBAAgB,CAAC,EAAE,MAAM,sBA4D1B;AAmBD,wBAAsB,2BAA2B,CAC/C,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,kBAAkB,EACtB,eAAe,EAAE,kBAAkB,GAClC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAsB7B;AAED,wBAAsB,8BAA8B,CAClD,GAAG,EAAE,GAAG,EACR,UAAU,EAAE,UAAU,EACtB,EAAE,EAAE,kBAAkB,EACtB,MAAM,CAAC,EAAE,kBAAkB,EAC3B,UAAU,CAAC,EAAE,MAAM,EACnB,eAAe,GAAE,kBAA+C,EAChE,cAAc,CAAC,EAAE,MAAM,IAAI,GAC1B,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAmEjC"}
|
@@ -27,15 +27,21 @@ const accountUtils_1 = require("./accountUtils");
|
|
27
27
|
const generalUtils_1 = require("./generalUtils");
|
28
28
|
const marginfi_sdk_1 = require("../marginfi-sdk");
|
29
29
|
const types_1 = require("../types");
|
30
|
+
const solauto_1 = require("./solauto");
|
31
|
+
const constants_1 = require("../constants");
|
30
32
|
function buildHeliusApiUrl(heliusApiKey) {
|
31
33
|
return `https://mainnet.helius-rpc.com/?api-key=${heliusApiKey}`;
|
32
34
|
}
|
33
35
|
function buildIronforgeApiUrl(ironforgeApiKey) {
|
34
36
|
return `https://rpc.ironforge.network/mainnet?apiKey=${ironforgeApiKey}`;
|
35
37
|
}
|
36
|
-
function getSolanaRpcConnection(rpcUrl) {
|
38
|
+
function getSolanaRpcConnection(rpcUrl, programId = constants_1.SOLAUTO_PROD_PROGRAM) {
|
37
39
|
const connection = new web3_js_1.Connection(rpcUrl, "confirmed");
|
38
|
-
const umi = (0, umi_bundle_defaults_1.createUmi)(connection)
|
40
|
+
const umi = (0, umi_bundle_defaults_1.createUmi)(connection).use({
|
41
|
+
install(umi) {
|
42
|
+
umi.programs.add((0, solauto_1.createDynamicSolautoProgram)(programId), false);
|
43
|
+
},
|
44
|
+
});
|
39
45
|
return [connection, umi];
|
40
46
|
}
|
41
47
|
function getWrappedInstruction(signer, ix) {
|
@@ -1,7 +1,8 @@
|
|
1
1
|
import { PublicKey } from "@solana/web3.js";
|
2
|
-
import { Umi } from "@metaplex-foundation/umi";
|
2
|
+
import { Program, Umi } from "@metaplex-foundation/umi";
|
3
3
|
import { AutomationSettings, DCASettings, DCASettingsInpArgs, PositionState, PositionType, SolautoSettingsParameters, SolautoSettingsParametersInpArgs, TokenType } from "../../generated";
|
4
4
|
import { RebalanceAction, SolautoPositionDetails } from "../../types/solauto";
|
5
|
+
export declare function createDynamicSolautoProgram(programId: PublicKey): Program;
|
5
6
|
export declare function nextAutomationPeriodTimestamp(automation: AutomationSettings): number;
|
6
7
|
export declare function eligibleForNextAutomationPeriod(automation: AutomationSettings, currentUnixTime: number): boolean;
|
7
8
|
export declare function getUpdatedValueFromAutomation(currValue: number, targetValue: number, automation: AutomationSettings, currentUnixTimestamp: number): number;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"generalUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/solauto/generalUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,
|
1
|
+
{"version":3,"file":"generalUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/solauto/generalUtils.ts"],"names":[],"mappings":"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"}
|
@@ -1,6 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.LivePositionUpdates = void 0;
|
4
|
+
exports.createDynamicSolautoProgram = createDynamicSolautoProgram;
|
4
5
|
exports.nextAutomationPeriodTimestamp = nextAutomationPeriodTimestamp;
|
5
6
|
exports.eligibleForNextAutomationPeriod = eligibleForNextAutomationPeriod;
|
6
7
|
exports.getUpdatedValueFromAutomation = getUpdatedValueFromAutomation;
|
@@ -23,6 +24,21 @@ const accountUtils_1 = require("../accountUtils");
|
|
23
24
|
const umi_web3js_adapters_1 = require("@metaplex-foundation/umi-web3js-adapters");
|
24
25
|
const constants_1 = require("../../constants");
|
25
26
|
const marginfiUtils_1 = require("../marginfiUtils");
|
27
|
+
function createDynamicSolautoProgram(programId) {
|
28
|
+
return {
|
29
|
+
name: 'solauto',
|
30
|
+
publicKey: (0, umi_1.publicKey)(programId),
|
31
|
+
getErrorFromCode(code, cause) {
|
32
|
+
return (0, generated_1.getSolautoErrorFromCode)(code, this, cause);
|
33
|
+
},
|
34
|
+
getErrorFromName(name, cause) {
|
35
|
+
return (0, generated_1.getSolautoErrorFromName)(name, this, cause);
|
36
|
+
},
|
37
|
+
isOnCluster() {
|
38
|
+
return true;
|
39
|
+
},
|
40
|
+
};
|
41
|
+
}
|
26
42
|
function newPeriodsPassed(automation, currentUnixTimestamp) {
|
27
43
|
return Math.min(automation.targetPeriods, automation.periodsPassed +
|
28
44
|
Math.floor((currentUnixTimestamp - Number(automation.unixStartDate)) /
|
@@ -99,7 +115,7 @@ async function getSolautoManagedPositions(umi, authority, positionTypeFilter) {
|
|
99
115
|
// protocol account: pubkey
|
100
116
|
// supply mint: pubkey
|
101
117
|
// debt mint: pubkey
|
102
|
-
const accounts = await umi.rpc.getProgramAccounts(
|
118
|
+
const accounts = await umi.rpc.getProgramAccounts(umi.programs.get("solauto").publicKey, {
|
103
119
|
commitment: "confirmed",
|
104
120
|
dataSlice: {
|
105
121
|
offset: 0,
|
@@ -153,7 +169,7 @@ async function getSolautoManagedPositions(umi, authority, positionTypeFilter) {
|
|
153
169
|
});
|
154
170
|
}
|
155
171
|
async function getAllReferralStates(umi) {
|
156
|
-
const accounts = await umi.rpc.getProgramAccounts(
|
172
|
+
const accounts = await umi.rpc.getProgramAccounts(umi.programs.get("solauto").publicKey, {
|
157
173
|
commitment: "confirmed",
|
158
174
|
dataSlice: {
|
159
175
|
offset: 0,
|
@@ -172,8 +188,9 @@ async function getReferralsByUser(umi, user) {
|
|
172
188
|
// padding: [u8; 7],
|
173
189
|
// authority: Pubkey,
|
174
190
|
// referred_by_state: Pubkey,
|
175
|
-
const
|
176
|
-
const
|
191
|
+
const programId = umi.programs.get("solauto").publicKey;
|
192
|
+
const userReferralState = (0, accountUtils_1.getReferralState)(user, (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(programId));
|
193
|
+
const accounts = await umi.rpc.getProgramAccounts(programId, {
|
177
194
|
commitment: "confirmed",
|
178
195
|
dataSlice: {
|
179
196
|
offset: 0,
|
package/package.json
CHANGED
@@ -14,7 +14,6 @@ import {
|
|
14
14
|
} from "@metaplex-foundation/umi-signer-wallet-adapters";
|
15
15
|
import {
|
16
16
|
claimReferralFees,
|
17
|
-
createSolautoProgram,
|
18
17
|
ReferralState,
|
19
18
|
safeFetchReferralState,
|
20
19
|
updateReferralStates,
|
@@ -42,18 +41,6 @@ export class ReferralStateManager extends TxHandler {
|
|
42
41
|
public referredBy?: PublicKey;
|
43
42
|
public referredByState?: PublicKey;
|
44
43
|
|
45
|
-
constructor(
|
46
|
-
rpcUrl: string,
|
47
|
-
public localTest?: boolean
|
48
|
-
) {
|
49
|
-
super(rpcUrl, localTest);
|
50
|
-
this.umi = this.umi.use({
|
51
|
-
install(umi) {
|
52
|
-
umi.programs.add(createSolautoProgram(), false);
|
53
|
-
},
|
54
|
-
});
|
55
|
-
}
|
56
|
-
|
57
44
|
async initialize(args: ReferralStateManagerArgs) {
|
58
45
|
if (!args.signer && !args.wallet) {
|
59
46
|
throw new Error("Signer or wallet must be provided");
|
@@ -68,7 +55,8 @@ export class ReferralStateManager extends TxHandler {
|
|
68
55
|
this.referralState = args.referralState
|
69
56
|
? args.referralState
|
70
57
|
: getReferralState(
|
71
|
-
args.authority ?? toWeb3JsPublicKey(this.signer.publicKey)
|
58
|
+
args.authority ?? toWeb3JsPublicKey(this.signer.publicKey),
|
59
|
+
this.programId
|
72
60
|
);
|
73
61
|
this.referralStateData = await safeFetchReferralState(
|
74
62
|
this.umi,
|
@@ -104,7 +92,7 @@ export class ReferralStateManager extends TxHandler {
|
|
104
92
|
|
105
93
|
this.referredBy = finalReferredBy;
|
106
94
|
this.referredByState = finalReferredBy
|
107
|
-
? getReferralState(finalReferredBy)
|
95
|
+
? getReferralState(finalReferredBy, this.programId)
|
108
96
|
: this.referralStateData
|
109
97
|
? toWeb3JsPublicKey(this.referralStateData.referredByState)
|
110
98
|
: undefined;
|
@@ -93,7 +93,8 @@ export abstract class SolautoClient extends ReferralStateManager {
|
|
93
93
|
this.selfManaged = this.positionId === 0;
|
94
94
|
this.solautoPosition = getSolautoPositionAccount(
|
95
95
|
this.authority,
|
96
|
-
this.positionId
|
96
|
+
this.positionId,
|
97
|
+
this.programId
|
97
98
|
);
|
98
99
|
this.solautoPositionData = !args.new
|
99
100
|
? await safeFetchSolautoPosition(
|
@@ -64,7 +64,6 @@ import {
|
|
64
64
|
} from "../utils/marginfiUtils";
|
65
65
|
import { bytesToI80F48, fromBaseUnit, toBps } from "../utils/numberUtils";
|
66
66
|
import { QuoteResponse } from "@jup-ag/api";
|
67
|
-
import { SOLAUTO_FEES_WALLET } from "../constants";
|
68
67
|
|
69
68
|
export interface SolautoMarginfiClientArgs extends SolautoClientArgs {
|
70
69
|
marginfiAccount?: PublicKey | Signer;
|
@@ -108,7 +107,8 @@ export class SolautoMarginfiClient extends SolautoClient {
|
|
108
107
|
? toWeb3JsPublicKey(this.solautoPositionData.position.protocolAccount)
|
109
108
|
: getMarginfiAccountPDA(
|
110
109
|
this.solautoPosition,
|
111
|
-
this.marginfiAccountSeedIdx
|
110
|
+
this.marginfiAccountSeedIdx,
|
111
|
+
this.programId
|
112
112
|
);
|
113
113
|
}
|
114
114
|
this.marginfiAccountPk =
|
package/src/clients/txHandler.ts
CHANGED
@@ -1,18 +1,21 @@
|
|
1
1
|
import { Umi } from "@metaplex-foundation/umi";
|
2
2
|
import { Connection, PublicKey } from "@solana/web3.js";
|
3
|
-
import {
|
3
|
+
import {
|
4
|
+
consoleLog,
|
5
|
+
getSolanaRpcConnection,
|
6
|
+
} from "../utils";
|
7
|
+
import { SOLAUTO_PROD_PROGRAM } from "../constants";
|
4
8
|
|
5
9
|
export abstract class TxHandler {
|
6
|
-
public rpcUrl!: string;
|
7
|
-
public umi!: Umi;
|
8
10
|
public connection!: Connection;
|
11
|
+
public umi!: Umi;
|
9
12
|
|
10
13
|
constructor(
|
11
|
-
rpcUrl: string,
|
12
|
-
localTest?: boolean
|
14
|
+
public rpcUrl: string,
|
15
|
+
localTest?: boolean,
|
16
|
+
public programId: PublicKey = SOLAUTO_PROD_PROGRAM
|
13
17
|
) {
|
14
|
-
this.rpcUrl
|
15
|
-
const [connection, umi] = getSolanaRpcConnection(this.rpcUrl);
|
18
|
+
const [connection, umi] = getSolanaRpcConnection(this.rpcUrl, this.programId);
|
16
19
|
this.connection = connection;
|
17
20
|
this.umi = umi;
|
18
21
|
|
@@ -10,10 +10,16 @@ import {
|
|
10
10
|
TOKEN_PROGRAM_ID,
|
11
11
|
} from "@solana/spl-token";
|
12
12
|
// import { JitoRpcConnection } from "jito-ts";
|
13
|
-
import { SOLAUTO_PROGRAM_ID } from "../generated";
|
14
13
|
import { SOLAUTO_MANAGER } from "./generalAccounts";
|
15
14
|
import { JUPITER_PROGRAM_ID } from "../jupiter-sdk";
|
16
15
|
|
16
|
+
export const SOLAUTO_PROD_PROGRAM = new PublicKey(
|
17
|
+
"AutoyKBRaHSBHy9RsmXCZMy6nNFAg5FYijrvZyQcNLV"
|
18
|
+
);
|
19
|
+
export const SOLAUTO_TEST_PROGRAM = new PublicKey(
|
20
|
+
"TesTjfQ6TbXv96Tv6fqr95XTZ1LYPxtkafmShN9PjBp"
|
21
|
+
);
|
22
|
+
|
17
23
|
(globalThis as any).LOCAL_TEST = false;
|
18
24
|
|
19
25
|
export const BASIS_POINTS = 10000;
|
@@ -22,25 +28,25 @@ export const MIN_POSITION_STATE_FRESHNESS_SECS = 5;
|
|
22
28
|
export const MIN_REPAY_GAP_BPS = 50;
|
23
29
|
export const MIN_BOOST_GAP_BPS = 50;
|
24
30
|
|
31
|
+
export const PRICES: { [key: string]: { price: number; time: number } } = {};
|
32
|
+
|
33
|
+
export const SOLAUTO_LUT = "9D4xwZwDf46n9ft5gQxZzq3rBbdRXsXojKQLZbBdskPY";
|
34
|
+
export const STANDARD_LUT_ACCOUNTS = [
|
35
|
+
PublicKey.default,
|
36
|
+
SOLAUTO_PROD_PROGRAM,
|
37
|
+
SOLAUTO_TEST_PROGRAM,
|
38
|
+
SOLAUTO_MANAGER,
|
39
|
+
SystemProgram.programId,
|
40
|
+
TOKEN_PROGRAM_ID,
|
41
|
+
ASSOCIATED_TOKEN_PROGRAM_ID,
|
42
|
+
SYSVAR_CLOCK_PUBKEY,
|
43
|
+
SYSVAR_RENT_PUBKEY,
|
44
|
+
SYSVAR_INSTRUCTIONS_PUBKEY,
|
45
|
+
JUPITER_PROGRAM_ID,
|
46
|
+
].map((x) => x.toString());
|
47
|
+
|
25
48
|
// export const JITO_BLOCK_ENGINE = "ny.mainnet.block-engine.jito.wtf";
|
26
49
|
// export const JITO_CONNECTION = new JitoRpcConnection(
|
27
50
|
// `https://${JITO_BLOCK_ENGINE}`,
|
28
51
|
// "finalized"
|
29
52
|
// );
|
30
|
-
|
31
|
-
export const PRICES: { [key: string]: { price: number; time: number; } } = {};
|
32
|
-
|
33
|
-
export const SOLAUTO_LUT = "9D4xwZwDf46n9ft5gQxZzq3rBbdRXsXojKQLZbBdskPY";
|
34
|
-
|
35
|
-
export const STANDARD_LUT_ACCOUNTS = [
|
36
|
-
PublicKey.default.toString(),
|
37
|
-
SOLAUTO_PROGRAM_ID,
|
38
|
-
SOLAUTO_MANAGER.toString(),
|
39
|
-
SystemProgram.programId.toString(),
|
40
|
-
TOKEN_PROGRAM_ID.toString(),
|
41
|
-
ASSOCIATED_TOKEN_PROGRAM_ID.toString(),
|
42
|
-
SYSVAR_CLOCK_PUBKEY.toString(),
|
43
|
-
SYSVAR_RENT_PUBKEY.toString(),
|
44
|
-
SYSVAR_INSTRUCTIONS_PUBKEY.toString(),
|
45
|
-
JUPITER_PROGRAM_ID
|
46
|
-
];
|
@@ -11,13 +11,10 @@ import { PublicKey, SYSVAR_INSTRUCTIONS_PUBKEY } from "@solana/web3.js";
|
|
11
11
|
import {
|
12
12
|
ACCOUNT_SIZE as TOKEN_ACCOUNT_SIZE,
|
13
13
|
NATIVE_MINT,
|
14
|
-
RawAccount,
|
15
14
|
} from "@solana/spl-token";
|
16
15
|
import {
|
17
16
|
InvalidRebalanceConditionError,
|
18
17
|
LendingPlatform,
|
19
|
-
ReferralState,
|
20
|
-
SOLAUTO_PROGRAM_ID,
|
21
18
|
SolautoAction,
|
22
19
|
SolautoRebalanceType,
|
23
20
|
TokenType,
|
@@ -27,7 +24,6 @@ import {
|
|
27
24
|
getMarginfiRebalanceInstructionDataSerializer,
|
28
25
|
getSolautoErrorFromCode,
|
29
26
|
isSolautoAction,
|
30
|
-
safeFetchReferralState,
|
31
27
|
solautoAction,
|
32
28
|
} from "../generated";
|
33
29
|
import { SolautoClient } from "../clients/solautoClient";
|
@@ -76,7 +72,7 @@ import {
|
|
76
72
|
getJupiterErrorFromName,
|
77
73
|
JUPITER_PROGRAM_ID,
|
78
74
|
} from "../jupiter-sdk";
|
79
|
-
import { PRICES
|
75
|
+
import { PRICES } from "../constants";
|
80
76
|
import { TransactionItemInputs } from "../types";
|
81
77
|
|
82
78
|
interface wSolTokenUsage {
|
@@ -263,7 +259,7 @@ export async function rebalanceChoresBefore(
|
|
263
259
|
tx: TransactionBuilder,
|
264
260
|
accountsGettingCreated: string[]
|
265
261
|
): Promise<TransactionBuilder> {
|
266
|
-
const rebalanceInstructions = getRebalanceInstructions(tx);
|
262
|
+
const rebalanceInstructions = getRebalanceInstructions(client.umi, tx);
|
267
263
|
if (rebalanceInstructions.length === 0) {
|
268
264
|
return transactionBuilder();
|
269
265
|
}
|
@@ -404,9 +400,9 @@ function transactionChoresAfter(
|
|
404
400
|
return chores;
|
405
401
|
}
|
406
402
|
|
407
|
-
function getRebalanceInstructions(tx: TransactionBuilder): Instruction[] {
|
403
|
+
function getRebalanceInstructions(umi: Umi, tx: TransactionBuilder): Instruction[] {
|
408
404
|
return tx.getInstructions().filter((x) => {
|
409
|
-
if (x.programId ===
|
405
|
+
if (x.programId.toString() === umi.programs.get("solauto").publicKey.toString()) {
|
410
406
|
try {
|
411
407
|
const serializer = getMarginfiRebalanceInstructionDataSerializer();
|
412
408
|
const discriminator = serializer.serialize({
|
@@ -424,11 +420,11 @@ function getRebalanceInstructions(tx: TransactionBuilder): Instruction[] {
|
|
424
420
|
});
|
425
421
|
}
|
426
422
|
|
427
|
-
function getSolautoActions(tx: TransactionBuilder): SolautoAction[] {
|
423
|
+
function getSolautoActions(umi: Umi, tx: TransactionBuilder): SolautoAction[] {
|
428
424
|
let solautoActions: SolautoAction[] = [];
|
429
425
|
|
430
426
|
tx.getInstructions().forEach((x) => {
|
431
|
-
if (x.programId ===
|
427
|
+
if (x.programId.toString() === umi.programs.get("solauto").publicKey.toString()) {
|
432
428
|
try {
|
433
429
|
const serializer =
|
434
430
|
getMarginfiProtocolInteractionInstructionDataSerializer();
|
@@ -562,7 +558,7 @@ export async function getTransactionChores(
|
|
562
558
|
let choresAfter = transactionBuilder();
|
563
559
|
const accountsGettingCreated: string[] = [];
|
564
560
|
|
565
|
-
const solautoActions = getSolautoActions(tx);
|
561
|
+
const solautoActions = getSolautoActions(client.umi, tx);
|
566
562
|
|
567
563
|
choresBefore = choresBefore.add([
|
568
564
|
await transactionChoresBefore(
|
@@ -798,7 +794,7 @@ export async function convertReferralFeesToDestination(
|
|
798
794
|
return { tx, lookupTableAddresses };
|
799
795
|
}
|
800
796
|
|
801
|
-
export function getErrorInfo(tx: TransactionBuilder, error: any) {
|
797
|
+
export function getErrorInfo(umi: Umi, tx: TransactionBuilder, error: any) {
|
802
798
|
let canBeIgnored = false;
|
803
799
|
let errorName: string | undefined = undefined;
|
804
800
|
let errorInfo: string | undefined = undefined;
|
@@ -811,7 +807,7 @@ export function getErrorInfo(tx: TransactionBuilder, error: any) {
|
|
811
807
|
const errIx = tx.getInstructions()[Math.max(0, err[0] - 2)];
|
812
808
|
const errCode = err[1]["Custom"];
|
813
809
|
|
814
|
-
if (errIx.programId ===
|
810
|
+
if (errIx.programId.toString() === umi.programs.get("solauto").publicKey.toString()) {
|
815
811
|
programError = getSolautoErrorFromCode(errCode, createSolautoProgram());
|
816
812
|
if (
|
817
813
|
programError?.name ===
|
@@ -526,7 +526,7 @@ export class TransactionsManager {
|
|
526
526
|
txSig ? bs58.encode(txSig) : undefined
|
527
527
|
);
|
528
528
|
} catch (e: any) {
|
529
|
-
const errorDetails = getErrorInfo(tx, e);
|
529
|
+
const errorDetails = getErrorInfo(this.txHandler.umi, tx, e);
|
530
530
|
|
531
531
|
this.updateStatus(
|
532
532
|
txName,
|
@@ -1,6 +1,5 @@
|
|
1
1
|
import { PublicKey } from "@solana/web3.js";
|
2
2
|
import { AccountLayout as SplTokenAccountLayout, getAssociatedTokenAddressSync } from "@solana/spl-token";
|
3
|
-
import { SOLAUTO_PROGRAM_ID } from "../generated";
|
4
3
|
import { publicKey, Umi } from "@metaplex-foundation/umi";
|
5
4
|
|
6
5
|
export function bufferFromU8(num: number): Buffer {
|
@@ -38,23 +37,24 @@ export async function getTokenAccountData(umi: Umi, tokenAccount: PublicKey) {
|
|
38
37
|
|
39
38
|
export function getSolautoPositionAccount(
|
40
39
|
signer: PublicKey,
|
41
|
-
positionId: number
|
40
|
+
positionId: number,
|
41
|
+
programId: PublicKey
|
42
42
|
) {
|
43
43
|
const [positionAccount, _] = PublicKey.findProgramAddressSync(
|
44
44
|
[bufferFromU8(positionId), signer.toBuffer()],
|
45
|
-
|
45
|
+
programId
|
46
46
|
);
|
47
47
|
|
48
48
|
return positionAccount;
|
49
49
|
}
|
50
50
|
|
51
|
-
export function getReferralState(authority: PublicKey) {
|
51
|
+
export function getReferralState(authority: PublicKey, programId: PublicKey) {
|
52
52
|
const str = "referral_state";
|
53
53
|
const strBuffer = Buffer.from(str, "utf-8");
|
54
54
|
|
55
55
|
const [ReferralState, _] = PublicKey.findProgramAddressSync(
|
56
56
|
[strBuffer, authority.toBuffer()],
|
57
|
-
|
57
|
+
programId
|
58
58
|
);
|
59
59
|
|
60
60
|
return ReferralState;
|
@@ -62,7 +62,8 @@ export function getReferralState(authority: PublicKey) {
|
|
62
62
|
|
63
63
|
export function getMarginfiAccountPDA(
|
64
64
|
solautoPositionAccount: PublicKey,
|
65
|
-
marginfiAccountSeedIdx: bigint
|
65
|
+
marginfiAccountSeedIdx: bigint,
|
66
|
+
programId: PublicKey
|
66
67
|
) {
|
67
68
|
const seeds = [
|
68
69
|
solautoPositionAccount.toBuffer(),
|
@@ -71,7 +72,7 @@ export function getMarginfiAccountPDA(
|
|
71
72
|
|
72
73
|
const [marginfiAccount, _] = PublicKey.findProgramAddressSync(
|
73
74
|
seeds,
|
74
|
-
|
75
|
+
programId
|
75
76
|
);
|
76
77
|
|
77
78
|
return marginfiAccount;
|
package/src/utils/solanaUtils.ts
CHANGED
@@ -37,6 +37,8 @@ import {
|
|
37
37
|
getLendingAccountStartFlashloanInstructionDataSerializer,
|
38
38
|
} from "../marginfi-sdk";
|
39
39
|
import { PriorityFeeSetting, TransactionRunType } from "../types";
|
40
|
+
import { createDynamicSolautoProgram } from "./solauto";
|
41
|
+
import { SOLAUTO_PROD_PROGRAM } from "../constants";
|
40
42
|
|
41
43
|
export function buildHeliusApiUrl(heliusApiKey: string) {
|
42
44
|
return `https://mainnet.helius-rpc.com/?api-key=${heliusApiKey}`;
|
@@ -47,10 +49,15 @@ export function buildIronforgeApiUrl(ironforgeApiKey: string) {
|
|
47
49
|
}
|
48
50
|
|
49
51
|
export function getSolanaRpcConnection(
|
50
|
-
rpcUrl: string
|
52
|
+
rpcUrl: string,
|
53
|
+
programId: PublicKey = SOLAUTO_PROD_PROGRAM,
|
51
54
|
): [Connection, Umi] {
|
52
55
|
const connection = new Connection(rpcUrl, "confirmed");
|
53
|
-
const umi = createUmi(connection)
|
56
|
+
const umi = createUmi(connection).use({
|
57
|
+
install(umi) {
|
58
|
+
umi.programs.add(createDynamicSolautoProgram(programId), false);
|
59
|
+
},
|
60
|
+
});
|
54
61
|
return [connection, umi];
|
55
62
|
}
|
56
63
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { PublicKey } from "@solana/web3.js";
|
2
|
-
import { isOption, isSome, publicKey, Umi } from "@metaplex-foundation/umi";
|
2
|
+
import { isOption, isSome, Program, publicKey, Umi } from "@metaplex-foundation/umi";
|
3
3
|
import {
|
4
4
|
AutomationSettings,
|
5
5
|
DCASettings,
|
@@ -7,11 +7,12 @@ import {
|
|
7
7
|
LendingPlatform,
|
8
8
|
PositionState,
|
9
9
|
PositionType,
|
10
|
-
SOLAUTO_PROGRAM_ID,
|
11
10
|
SolautoSettingsParameters,
|
12
11
|
SolautoSettingsParametersInpArgs,
|
13
12
|
TokenType,
|
14
13
|
getReferralStateSize,
|
14
|
+
getSolautoErrorFromCode,
|
15
|
+
getSolautoErrorFromName,
|
15
16
|
getSolautoPositionAccountDataSerializer,
|
16
17
|
getSolautoPositionSize,
|
17
18
|
} from "../../generated";
|
@@ -31,6 +32,22 @@ import {
|
|
31
32
|
import { getAllMarginfiAccountsByAuthority } from "../marginfiUtils";
|
32
33
|
import { RebalanceAction, SolautoPositionDetails } from "../../types/solauto";
|
33
34
|
|
35
|
+
export function createDynamicSolautoProgram(programId: PublicKey): Program {
|
36
|
+
return {
|
37
|
+
name: 'solauto',
|
38
|
+
publicKey: publicKey(programId),
|
39
|
+
getErrorFromCode(code: number, cause?: Error) {
|
40
|
+
return getSolautoErrorFromCode(code, this, cause);
|
41
|
+
},
|
42
|
+
getErrorFromName(name: string, cause?: Error) {
|
43
|
+
return getSolautoErrorFromName(name, this, cause);
|
44
|
+
},
|
45
|
+
isOnCluster() {
|
46
|
+
return true;
|
47
|
+
},
|
48
|
+
};
|
49
|
+
}
|
50
|
+
|
34
51
|
function newPeriodsPassed(
|
35
52
|
automation: AutomationSettings,
|
36
53
|
currentUnixTimestamp: number
|
@@ -176,7 +193,7 @@ export async function getSolautoManagedPositions(
|
|
176
193
|
// supply mint: pubkey
|
177
194
|
// debt mint: pubkey
|
178
195
|
|
179
|
-
const accounts = await umi.rpc.getProgramAccounts(
|
196
|
+
const accounts = await umi.rpc.getProgramAccounts(umi.programs.get("solauto").publicKey, {
|
180
197
|
commitment: "confirmed",
|
181
198
|
dataSlice: {
|
182
199
|
offset: 0,
|
@@ -234,7 +251,7 @@ export async function getSolautoManagedPositions(
|
|
234
251
|
}
|
235
252
|
|
236
253
|
export async function getAllReferralStates(umi: Umi): Promise<PublicKey[]> {
|
237
|
-
const accounts = await umi.rpc.getProgramAccounts(
|
254
|
+
const accounts = await umi.rpc.getProgramAccounts(umi.programs.get("solauto").publicKey, {
|
238
255
|
commitment: "confirmed",
|
239
256
|
dataSlice: {
|
240
257
|
offset: 0,
|
@@ -259,8 +276,9 @@ export async function getReferralsByUser(
|
|
259
276
|
// authority: Pubkey,
|
260
277
|
// referred_by_state: Pubkey,
|
261
278
|
|
262
|
-
const
|
263
|
-
const
|
279
|
+
const programId = umi.programs.get("solauto").publicKey;
|
280
|
+
const userReferralState = getReferralState(user, toWeb3JsPublicKey(programId));
|
281
|
+
const accounts = await umi.rpc.getProgramAccounts(programId, {
|
264
282
|
commitment: "confirmed",
|
265
283
|
dataSlice: {
|
266
284
|
offset: 0,
|
@@ -20,22 +20,23 @@ import {
|
|
20
20
|
TransactionsManager,
|
21
21
|
} from "../../src/transactions/transactionsManager";
|
22
22
|
import { PublicKey } from "@solana/web3.js";
|
23
|
-
import { USDC } from "../../src/constants";
|
23
|
+
import { SOLAUTO_TEST_PROGRAM, USDC } from "../../src/constants";
|
24
24
|
import { buildHeliusApiUrl } from "../../src/utils";
|
25
25
|
import { PriorityFeeSetting } from "../../src/types";
|
26
26
|
|
27
27
|
describe("Solauto Marginfi tests", async () => {
|
28
|
-
|
29
|
-
const signer = setupTest("solauto-manager");
|
28
|
+
const signer = setupTest();
|
29
|
+
// const signer = setupTest("solauto-manager");
|
30
30
|
|
31
|
-
const payForTransactions =
|
31
|
+
const payForTransactions = false;
|
32
32
|
const useJitoBundle = false;
|
33
33
|
const positionId = 1;
|
34
34
|
|
35
35
|
it("open - deposit - borrow - rebalance to 0 - withdraw - close", async () => {
|
36
36
|
const client = new SolautoMarginfiClient(
|
37
37
|
buildHeliusApiUrl(process.env.HELIUS_API_KEY!),
|
38
|
-
true
|
38
|
+
true,
|
39
|
+
SOLAUTO_TEST_PROGRAM
|
39
40
|
);
|
40
41
|
|
41
42
|
const supply = NATIVE_MINT;
|
@@ -128,7 +129,7 @@ describe("Solauto Marginfi tests", async () => {
|
|
128
129
|
transactionItems.push(
|
129
130
|
new TransactionItem(
|
130
131
|
async (attemptNum) =>
|
131
|
-
await buildSolautoRebalanceTransaction(client,
|
132
|
+
await buildSolautoRebalanceTransaction(client, 7000, attemptNum),
|
132
133
|
"rebalance"
|
133
134
|
)
|
134
135
|
);
|