@haven-fi/solauto-sdk 1.0.81 → 1.0.83
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/index.d.ts +1 -0
- package/dist/clients/index.d.ts.map +1 -1
- package/dist/clients/index.js +1 -0
- package/dist/clients/referralStateManager.d.ts +22 -0
- package/dist/clients/referralStateManager.d.ts.map +1 -0
- package/dist/clients/referralStateManager.js +63 -0
- package/dist/clients/solautoClient.d.ts +5 -8
- package/dist/clients/solautoClient.d.ts.map +1 -1
- package/dist/clients/solautoClient.js +18 -48
- package/dist/clients/solautoMarginfiClient.d.ts +1 -0
- package/dist/clients/solautoMarginfiClient.d.ts.map +1 -1
- package/dist/clients/solautoMarginfiClient.js +5 -2
- package/dist/transactions/transactionUtils.d.ts.map +1 -1
- package/dist/transactions/transactionUtils.js +4 -4
- package/dist/transactions/transactionsManager.d.ts.map +1 -1
- package/dist/transactions/transactionsManager.js +1 -5
- package/dist/utils/accountUtils.d.ts +2 -2
- package/dist/utils/accountUtils.d.ts.map +1 -1
- package/dist/utils/accountUtils.js +4 -4
- package/dist/utils/solauto/generalUtils.js +1 -1
- package/package.json +1 -1
- package/src/clients/index.ts +2 -1
- package/src/clients/referralStateManager.ts +88 -0
- package/src/clients/solautoClient.ts +28 -78
- package/src/clients/solautoMarginfiClient.ts +6 -5
- package/src/transactions/transactionUtils.ts +35 -35
- package/src/transactions/transactionsManager.ts +2 -8
- package/src/utils/accountUtils.ts +4 -4
- package/src/utils/solauto/generalUtils.ts +1 -1
package/dist/clients/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/clients/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/clients/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC"}
|
package/dist/clients/index.js
CHANGED
|
@@ -16,3 +16,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./solautoMarginfiClient"), exports);
|
|
18
18
|
__exportStar(require("./solautoClient"), exports);
|
|
19
|
+
__exportStar(require("./referralStateManager"), exports);
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { PublicKey } from "@solana/web3.js";
|
|
2
|
+
import { Signer, TransactionBuilder, Umi } from "@metaplex-foundation/umi";
|
|
3
|
+
import { WalletAdapter } from "@metaplex-foundation/umi-signer-wallet-adapters";
|
|
4
|
+
import { ReferralState } from "../generated";
|
|
5
|
+
interface ReferralStateManagerArgs {
|
|
6
|
+
referralAuthority?: PublicKey;
|
|
7
|
+
signer?: Signer;
|
|
8
|
+
wallet?: WalletAdapter;
|
|
9
|
+
}
|
|
10
|
+
export declare class ReferralStateManager {
|
|
11
|
+
umi: Umi;
|
|
12
|
+
signer: Signer;
|
|
13
|
+
referralAuthority: PublicKey;
|
|
14
|
+
referralState: PublicKey;
|
|
15
|
+
referralStateData: ReferralState | null;
|
|
16
|
+
constructor(heliusApiKey: string);
|
|
17
|
+
initialize(args: ReferralStateManagerArgs): Promise<void>;
|
|
18
|
+
updateReferralStatesIx(destFeesMint?: PublicKey, referredBy?: PublicKey, lookupTable?: PublicKey): TransactionBuilder;
|
|
19
|
+
claimReferralFeesIx(destFeesMint?: PublicKey): TransactionBuilder;
|
|
20
|
+
}
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=referralStateManager.d.ts.map
|
|
@@ -0,0 +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,EAAa,MAAM,EAAkB,kBAAkB,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAEtG,OAAO,EAAE,aAAa,EAAyB,MAAM,iDAAiD,CAAC;AACvG,OAAO,EAA2C,aAAa,EAAgD,MAAM,cAAc,CAAC;AAGpI,UAAU,wBAAwB;IAC9B,iBAAiB,CAAC,EAAE,SAAS,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,aAAa,CAAC;CAC1B;AAED,qBAAa,oBAAoB;IACtB,GAAG,EAAG,GAAG,CAAC;IACV,MAAM,EAAG,MAAM,CAAC;IAEhB,iBAAiB,EAAG,SAAS,CAAC;IAC9B,aAAa,EAAG,SAAS,CAAC;IAC1B,iBAAiB,EAAG,aAAa,GAAG,IAAI,CAAC;gBAEpC,YAAY,EAAE,MAAM;IAS1B,UAAU,CAAC,IAAI,EAAE,wBAAwB;IAe/C,sBAAsB,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,SAAS,GAAG,kBAAkB;IAiBrH,mBAAmB,CAAC,YAAY,CAAC,EAAE,SAAS,GAAG,kBAAkB;CAwBpE"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ReferralStateManager = void 0;
|
|
4
|
+
const spl_token_1 = require("@solana/spl-token");
|
|
5
|
+
const umi_1 = require("@metaplex-foundation/umi");
|
|
6
|
+
const umi_web3js_adapters_1 = require("@metaplex-foundation/umi-web3js-adapters");
|
|
7
|
+
const umi_signer_wallet_adapters_1 = require("@metaplex-foundation/umi-signer-wallet-adapters");
|
|
8
|
+
const generated_1 = require("../generated");
|
|
9
|
+
const utils_1 = require("../utils");
|
|
10
|
+
class ReferralStateManager {
|
|
11
|
+
constructor(heliusApiKey) {
|
|
12
|
+
const [_, umi] = (0, utils_1.getSolanaRpcConnection)(heliusApiKey);
|
|
13
|
+
this.umi = umi.use({
|
|
14
|
+
install(umi) {
|
|
15
|
+
umi.programs.add((0, generated_1.createSolautoProgram)(), false);
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
async initialize(args) {
|
|
20
|
+
if (!args.signer && !args.wallet) {
|
|
21
|
+
throw new Error("Signer or wallet must be provided");
|
|
22
|
+
}
|
|
23
|
+
this.umi = this.umi.use(args.signer
|
|
24
|
+
? (0, umi_1.signerIdentity)(args.signer)
|
|
25
|
+
: (0, umi_signer_wallet_adapters_1.walletAdapterIdentity)(args.wallet, true));
|
|
26
|
+
this.signer = this.umi.identity;
|
|
27
|
+
this.referralState = (0, utils_1.getReferralState)(args.referralAuthority ?? (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey));
|
|
28
|
+
this.referralStateData = await (0, generated_1.safeFetchReferralState)(this.umi, (0, umi_1.publicKey)(this.referralState));
|
|
29
|
+
}
|
|
30
|
+
updateReferralStatesIx(destFeesMint, referredBy, lookupTable) {
|
|
31
|
+
return (0, generated_1.updateReferralStates)(this.umi, {
|
|
32
|
+
signer: this.signer,
|
|
33
|
+
signerReferralState: (0, umi_1.publicKey)(this.referralState),
|
|
34
|
+
referralFeesDestMint: destFeesMint ? (0, umi_1.publicKey)(destFeesMint) : null,
|
|
35
|
+
referredByState: referredBy
|
|
36
|
+
? (0, umi_1.publicKey)((0, utils_1.getReferralState)(referredBy))
|
|
37
|
+
: undefined,
|
|
38
|
+
referredByAuthority: referredBy
|
|
39
|
+
? (0, umi_1.publicKey)(referredBy)
|
|
40
|
+
: undefined,
|
|
41
|
+
addressLookupTable: lookupTable
|
|
42
|
+
? (0, umi_1.publicKey)(lookupTable)
|
|
43
|
+
: null,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
claimReferralFeesIx(destFeesMint) {
|
|
47
|
+
const referralFeesDestMint = destFeesMint ?? (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.referralStateData.destFeesMint);
|
|
48
|
+
const referralDestTa = (0, utils_1.getTokenAccount)(this.referralState, referralFeesDestMint);
|
|
49
|
+
const feesDestinationTa = referralFeesDestMint !== spl_token_1.NATIVE_MINT
|
|
50
|
+
? (0, umi_1.publicKey)((0, utils_1.getTokenAccount)((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey), referralFeesDestMint))
|
|
51
|
+
: undefined;
|
|
52
|
+
return (0, generated_1.claimReferralFees)(this.umi, {
|
|
53
|
+
signer: this.signer,
|
|
54
|
+
signerWsolTa: (0, umi_1.publicKey)((0, utils_1.getTokenAccount)((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey), spl_token_1.NATIVE_MINT)),
|
|
55
|
+
referralAuthority: (0, umi_1.publicKey)(this.referralAuthority),
|
|
56
|
+
referralState: (0, umi_1.publicKey)(this.referralState),
|
|
57
|
+
referralFeesDestTa: (0, umi_1.publicKey)(referralDestTa),
|
|
58
|
+
referralFeesDestMint: (0, umi_1.publicKey)(referralFeesDestMint),
|
|
59
|
+
feesDestinationTa,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
exports.ReferralStateManager = ReferralStateManager;
|
|
@@ -2,10 +2,11 @@ import "rpc-websockets/dist/lib/client";
|
|
|
2
2
|
import { Connection, PublicKey } from "@solana/web3.js";
|
|
3
3
|
import { Signer, TransactionBuilder, Umi } from "@metaplex-foundation/umi";
|
|
4
4
|
import { WalletAdapter } from "@metaplex-foundation/umi-signer-wallet-adapters";
|
|
5
|
-
import { DCASettings, DCASettingsInpArgs, LendingPlatform, PositionState,
|
|
5
|
+
import { DCASettings, DCASettingsInpArgs, LendingPlatform, PositionState, SolautoActionArgs, SolautoPosition, SolautoRebalanceTypeArgs, SolautoSettingsParameters, SolautoSettingsParametersInpArgs, UpdatePositionDataArgs } from "../generated";
|
|
6
6
|
import { JupSwapDetails } from "../utils/jupiterUtils";
|
|
7
7
|
import { FlashLoanDetails } from "../utils/solauto/rebalanceUtils";
|
|
8
8
|
import { LivePositionUpdates } from "../utils/solauto/generalUtils";
|
|
9
|
+
import { ReferralStateManager } from "./referralStateManager";
|
|
9
10
|
export interface SolautoClientArgs {
|
|
10
11
|
authority?: PublicKey;
|
|
11
12
|
positionId: number;
|
|
@@ -13,11 +14,11 @@ export interface SolautoClientArgs {
|
|
|
13
14
|
wallet?: WalletAdapter;
|
|
14
15
|
supplyMint?: PublicKey;
|
|
15
16
|
debtMint?: PublicKey;
|
|
16
|
-
referralFeesDestMint?: PublicKey;
|
|
17
17
|
referredByAuthority?: PublicKey;
|
|
18
18
|
}
|
|
19
19
|
export declare abstract class SolautoClient {
|
|
20
20
|
localTest?: boolean | undefined;
|
|
21
|
+
private heliusApiKey;
|
|
21
22
|
umi: Umi;
|
|
22
23
|
connection: Connection;
|
|
23
24
|
lendingPlatform: LendingPlatform;
|
|
@@ -34,10 +35,7 @@ export declare abstract class SolautoClient {
|
|
|
34
35
|
debtMint: PublicKey;
|
|
35
36
|
positionDebtTa: PublicKey;
|
|
36
37
|
signerDebtTa: PublicKey;
|
|
37
|
-
|
|
38
|
-
authorityReferralStateData: ReferralState | null;
|
|
39
|
-
authorityReferralFeesDestMint: PublicKey;
|
|
40
|
-
authorityReferralDestTa: PublicKey;
|
|
38
|
+
referralStateManager: ReferralStateManager;
|
|
41
39
|
referredByState?: PublicKey;
|
|
42
40
|
referredByAuthority?: PublicKey;
|
|
43
41
|
referredBySupplyTa?: PublicKey;
|
|
@@ -50,6 +48,7 @@ export declare abstract class SolautoClient {
|
|
|
50
48
|
initialize(args: SolautoClientArgs, lendingPlatform: LendingPlatform): Promise<void>;
|
|
51
49
|
log(...args: any[]): void;
|
|
52
50
|
resetLivePositionUpdates(): Promise<void>;
|
|
51
|
+
abstract protocolAccount(): PublicKey;
|
|
53
52
|
defaultLookupTables(): string[];
|
|
54
53
|
lutAccountsToAdd(): PublicKey[];
|
|
55
54
|
fetchExistingAuthorityLutAccounts(): Promise<PublicKey[]>;
|
|
@@ -59,8 +58,6 @@ export declare abstract class SolautoClient {
|
|
|
59
58
|
} | undefined>;
|
|
60
59
|
solautoPositionSettings(): SolautoSettingsParameters | undefined;
|
|
61
60
|
solautoPositionActiveDca(): DCASettings | undefined;
|
|
62
|
-
updateReferralStatesIx(): TransactionBuilder;
|
|
63
|
-
claimReferralFeesIx(): TransactionBuilder;
|
|
64
61
|
openPosition(settingParams?: SolautoSettingsParametersInpArgs, dca?: DCASettingsInpArgs): TransactionBuilder;
|
|
65
62
|
updatePositionIx(args: UpdatePositionDataArgs): TransactionBuilder;
|
|
66
63
|
closePositionIx(): TransactionBuilder;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solautoClient.d.ts","sourceRoot":"","sources":["../../src/clients/solautoClient.ts"],"names":[],"mappings":"AAAA,OAAO,gCAAgC,CAAC;AACxC,OAAO,EAEL,UAAU,EACV,SAAS,EACV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,MAAM,EACN,kBAAkB,EAClB,GAAG,
|
|
1
|
+
{"version":3,"file":"solautoClient.d.ts","sourceRoot":"","sources":["../../src/clients/solautoClient.ts"],"names":[],"mappings":"AAAA,OAAO,gCAAgC,CAAC;AACxC,OAAO,EAEL,UAAU,EACV,SAAS,EACV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,MAAM,EACN,kBAAkB,EAClB,GAAG,EAOJ,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,aAAa,EAEd,MAAM,iDAAiD,CAAC;AACzD,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,wBAAwB,EACxB,yBAAyB,EACzB,gCAAgC,EAChC,sBAAsB,EAMvB,MAAM,cAAc,CAAC;AAStB,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAMvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAMnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,aAAa,CAAC;IAEvB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB,mBAAmB,CAAC,EAAE,SAAS,CAAC;CACjC;AAED,8BAAsB,aAAa;IAuCxB,SAAS,CAAC,EAAE,OAAO;IAtC5B,OAAO,CAAC,YAAY,CAAU;IACvB,GAAG,EAAG,GAAG,CAAC;IACV,UAAU,EAAG,UAAU,CAAC;IACxB,eAAe,EAAG,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,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,oBAAoB,EAAG,oBAAoB,CAAC;IAE5C,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B,mBAAmB,CAAC,EAAE,SAAS,CAAC;IAChC,kBAAkB,CAAC,EAAE,SAAS,CAAC;IAE/B,iBAAiB,EAAG,SAAS,CAAC;IAC9B,mBAAmB,EAAG,SAAS,CAAC;IAEhC,mBAAmB,CAAC,EAAE,SAAS,CAAC;IAChC,mBAAmB,EAAG,SAAS,EAAE,CAAC;IAElC,mBAAmB,EAAE,mBAAmB,CAA6B;gBAG1E,YAAY,EAAE,MAAM,EACb,SAAS,CAAC,EAAE,OAAO,YAAA;IAYtB,UAAU,CAAC,IAAI,EAAE,iBAAiB,EAAE,eAAe,EAAE,eAAe;IA2G1E,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAMnB,wBAAwB;IAoB9B,QAAQ,CAAC,eAAe,IAAI,SAAS;IAErC,mBAAmB,IAAI,MAAM,EAAE;IAI/B,gBAAgB,IAAI,SAAS,EAAE;IAiBzB,iCAAiC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAUzD,iBAAiB,IAAI,OAAO,CAChC;QAAE,WAAW,EAAE,kBAAkB,CAAC;QAAC,iBAAiB,EAAE,OAAO,CAAA;KAAE,GAAG,SAAS,CAC5E;IA2DD,uBAAuB,IAAI,yBAAyB,GAAG,SAAS;IAOhE,wBAAwB,IAAI,WAAW,GAAG,SAAS;IAOnD,YAAY,CACV,aAAa,CAAC,EAAE,gCAAgC,EAChD,GAAG,CAAC,EAAE,kBAAkB,GACvB,kBAAkB;IAuBrB,gBAAgB,CAAC,IAAI,EAAE,sBAAsB,GAAG,kBAAkB;IA2DlE,eAAe,IAAI,kBAAkB;IAWrC,WAAW,IAAI,kBAAkB;IA4BjC,QAAQ,CAAC,OAAO,IAAI,kBAAkB;IAEtC,mBAAmB,CAAC,IAAI,EAAE,iBAAiB,GAAG,kBAAkB;IAuFhE,QAAQ,CAAC,WAAW,CAClB,gBAAgB,EAAE,gBAAgB,EAClC,uBAAuB,EAAE,SAAS,GACjC,kBAAkB;IAErB,QAAQ,CAAC,UAAU,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,kBAAkB;IAE3E,QAAQ,CAAC,SAAS,CAChB,aAAa,EAAE,GAAG,GAAG,GAAG,EACxB,WAAW,EAAE,cAAc,EAC3B,aAAa,EAAE,wBAAwB,EACvC,SAAS,CAAC,EAAE,gBAAgB,EAC5B,2BAA2B,CAAC,EAAE,MAAM,EACpC,WAAW,CAAC,EAAE,MAAM,GACnB,kBAAkB;IAEf,qBAAqB,IAAI,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;CAYlE"}
|
|
@@ -10,15 +10,16 @@ const generated_1 = require("../generated");
|
|
|
10
10
|
const accountUtils_1 = require("../utils/accountUtils");
|
|
11
11
|
const generalAccounts_1 = require("../constants/generalAccounts");
|
|
12
12
|
const solanaUtils_1 = require("../utils/solanaUtils");
|
|
13
|
-
const spl_token_1 = require("@solana/spl-token");
|
|
14
13
|
const solautoConstants_1 = require("../constants/solautoConstants");
|
|
15
14
|
const generalUtils_1 = require("../utils/generalUtils");
|
|
16
15
|
const generalUtils_2 = require("../utils/solauto/generalUtils");
|
|
16
|
+
const referralStateManager_1 = require("./referralStateManager");
|
|
17
17
|
class SolautoClient {
|
|
18
18
|
constructor(heliusApiKey, localTest) {
|
|
19
19
|
this.localTest = localTest;
|
|
20
20
|
this.livePositionUpdates = new generalUtils_2.LivePositionUpdates();
|
|
21
|
-
|
|
21
|
+
this.heliusApiKey = heliusApiKey;
|
|
22
|
+
const [connection, umi] = (0, solanaUtils_1.getSolanaRpcConnection)(this.heliusApiKey);
|
|
22
23
|
this.connection = connection;
|
|
23
24
|
this.umi = umi.use({
|
|
24
25
|
install(umi) {
|
|
@@ -38,7 +39,7 @@ class SolautoClient {
|
|
|
38
39
|
this.positionId = args.positionId;
|
|
39
40
|
this.selfManaged = this.positionId === 0;
|
|
40
41
|
this.lendingPlatform = lendingPlatform;
|
|
41
|
-
this.solautoPosition =
|
|
42
|
+
this.solautoPosition = (0, accountUtils_1.getSolautoPositionAccount)(this.authority, this.positionId);
|
|
42
43
|
this.solautoPositionData = await (0, generated_1.safeFetchSolautoPosition)(this.umi, (0, umi_1.publicKey)(this.solautoPosition));
|
|
43
44
|
this.solautoPositionState = this.solautoPositionData?.state;
|
|
44
45
|
this.supplyMint =
|
|
@@ -51,16 +52,15 @@ class SolautoClient {
|
|
|
51
52
|
(0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.solautoPositionData.position.debtMint);
|
|
52
53
|
this.positionDebtTa = (0, accountUtils_1.getTokenAccount)(this.solautoPosition, this.debtMint);
|
|
53
54
|
this.signerDebtTa = (0, accountUtils_1.getTokenAccount)((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey), this.debtMint);
|
|
54
|
-
this.
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
:
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
this.authorityReferralStateData.referredByState !==
|
|
55
|
+
this.referralStateManager = new referralStateManager_1.ReferralStateManager(this.heliusApiKey);
|
|
56
|
+
await this.referralStateManager.initialize({
|
|
57
|
+
referralAuthority: this.authority,
|
|
58
|
+
signer: args.signer,
|
|
59
|
+
wallet: args.wallet
|
|
60
|
+
});
|
|
61
|
+
const authorityReferralStateData = this.referralStateManager.referralStateData;
|
|
62
|
+
const hasReferredBy = authorityReferralStateData &&
|
|
63
|
+
authorityReferralStateData.referredByState !==
|
|
64
64
|
(0, umi_1.publicKey)(web3_js_1.PublicKey.default);
|
|
65
65
|
const referredByAuthority = !hasReferredBy &&
|
|
66
66
|
args.referredByAuthority &&
|
|
@@ -68,9 +68,9 @@ class SolautoClient {
|
|
|
68
68
|
? args.referredByAuthority
|
|
69
69
|
: undefined;
|
|
70
70
|
this.referredByState = hasReferredBy
|
|
71
|
-
? (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(
|
|
71
|
+
? (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(authorityReferralStateData.referredByState)
|
|
72
72
|
: referredByAuthority
|
|
73
|
-
?
|
|
73
|
+
? (0, accountUtils_1.getReferralState)(referredByAuthority)
|
|
74
74
|
: undefined;
|
|
75
75
|
this.referredByAuthority = referredByAuthority;
|
|
76
76
|
if (this.referredByState !== undefined) {
|
|
@@ -78,8 +78,8 @@ class SolautoClient {
|
|
|
78
78
|
}
|
|
79
79
|
this.solautoFeesWallet = generalAccounts_1.SOLAUTO_FEES_WALLET;
|
|
80
80
|
this.solautoFeesSupplyTa = (0, accountUtils_1.getTokenAccount)(this.solautoFeesWallet, this.supplyMint);
|
|
81
|
-
this.authorityLutAddress =
|
|
82
|
-
? (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(
|
|
81
|
+
this.authorityLutAddress = authorityReferralStateData?.lookupTable
|
|
82
|
+
? (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(authorityReferralStateData?.lookupTable)
|
|
83
83
|
: undefined;
|
|
84
84
|
this.upToDateLutAccounts = (0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey).equals(this.authority)
|
|
85
85
|
? await this.fetchExistingAuthorityLutAccounts()
|
|
@@ -128,7 +128,7 @@ class SolautoClient {
|
|
|
128
128
|
this.solautoPosition,
|
|
129
129
|
this.positionSupplyTa,
|
|
130
130
|
this.positionDebtTa,
|
|
131
|
-
this.
|
|
131
|
+
this.referralStateManager.referralState,
|
|
132
132
|
...(this.referredBySupplyTa ? [this.referredBySupplyTa] : []),
|
|
133
133
|
];
|
|
134
134
|
}
|
|
@@ -186,36 +186,6 @@ class SolautoClient {
|
|
|
186
186
|
return (this.livePositionUpdates.activeDca ??
|
|
187
187
|
this.solautoPositionData?.position.dca);
|
|
188
188
|
}
|
|
189
|
-
updateReferralStatesIx() {
|
|
190
|
-
return (0, generated_1.updateReferralStates)(this.umi, {
|
|
191
|
-
signer: this.signer,
|
|
192
|
-
signerReferralState: (0, umi_1.publicKey)(this.authorityReferralState),
|
|
193
|
-
referralFeesDestMint: (0, umi_1.publicKey)(this.authorityReferralFeesDestMint),
|
|
194
|
-
referredByState: this.referredByState
|
|
195
|
-
? (0, umi_1.publicKey)(this.referredByState)
|
|
196
|
-
: undefined,
|
|
197
|
-
referredByAuthority: this.referredByAuthority
|
|
198
|
-
? (0, umi_1.publicKey)(this.referredByAuthority)
|
|
199
|
-
: undefined,
|
|
200
|
-
addressLookupTable: this.authorityLutAddress
|
|
201
|
-
? (0, umi_1.some)((0, umi_1.publicKey)(this.authorityLutAddress))
|
|
202
|
-
: null,
|
|
203
|
-
});
|
|
204
|
-
}
|
|
205
|
-
claimReferralFeesIx() {
|
|
206
|
-
const feesDestinationTa = this.authorityReferralFeesDestMint !== spl_token_1.NATIVE_MINT
|
|
207
|
-
? (0, umi_1.publicKey)((0, accountUtils_1.getTokenAccount)((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey), this.authorityReferralFeesDestMint))
|
|
208
|
-
: undefined;
|
|
209
|
-
return (0, generated_1.claimReferralFees)(this.umi, {
|
|
210
|
-
signer: this.signer,
|
|
211
|
-
signerWsolTa: (0, umi_1.publicKey)((0, accountUtils_1.getTokenAccount)((0, umi_web3js_adapters_1.toWeb3JsPublicKey)(this.signer.publicKey), spl_token_1.NATIVE_MINT)),
|
|
212
|
-
referralAuthority: (0, umi_1.publicKey)(this.authorityReferralStateData.authority),
|
|
213
|
-
referralState: (0, umi_1.publicKey)(this.authorityReferralState),
|
|
214
|
-
referralFeesDestTa: (0, umi_1.publicKey)(this.authorityReferralDestTa),
|
|
215
|
-
referralFeesDestMint: (0, umi_1.publicKey)(this.authorityReferralFeesDestMint),
|
|
216
|
-
feesDestinationTa,
|
|
217
|
-
});
|
|
218
|
-
}
|
|
219
189
|
openPosition(settingParams, dca) {
|
|
220
190
|
if (dca && dca.debtToAddBaseUnit > 0) {
|
|
221
191
|
this.livePositionUpdates.new({
|
|
@@ -27,6 +27,7 @@ export declare class SolautoMarginfiClient extends SolautoClient {
|
|
|
27
27
|
intermediaryMarginfiAccount?: MarginfiAccount;
|
|
28
28
|
initialize(args: SolautoMarginfiClientArgs): Promise<void>;
|
|
29
29
|
setIntermediaryMarginfiDetails(): Promise<void>;
|
|
30
|
+
protocolAccount(): PublicKey;
|
|
30
31
|
defaultLookupTables(): string[];
|
|
31
32
|
lutAccountsToAdd(): PublicKey[];
|
|
32
33
|
marginfiAccountInitialize(): TransactionBuilder;
|
|
@@ -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,EACb,iBAAiB,EACjB,wBAAwB,EACxB,gCAAgC,EAKjC,MAAM,cAAc,CAAC;AAGtB,OAAO,
|
|
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,EACb,iBAAiB,EACjB,wBAAwB,EACxB,gCAAgC,EAKjC,MAAM,cAAc,CAAC;AAGtB,OAAO,EAEL,eAAe,EAUhB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAWnE,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;IAkE1C,8BAA8B;IA0CpC,eAAe,IAAI,SAAS;IAI5B,mBAAmB,IAAI,MAAM,EAAE;IAI/B,gBAAgB,IAAI,SAAS,EAAE;IAU/B,yBAAyB,IAAI,kBAAkB;IAS/C,YAAY,CACV,aAAa,CAAC,EAAE,gCAAgC,EAChD,GAAG,CAAC,EAAE,kBAAkB,GACvB,kBAAkB;IAMrB,OAAO,CAAC,sBAAsB;IA8C9B,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,WAAW,EAAE,cAAc,EAC3B,aAAa,EAAE,wBAAwB,EACvC,SAAS,CAAC,EAAE,gBAAgB,EAC5B,2BAA2B,CAAC,EAAE,MAAM,EACpC,WAAW,CAAC,EAAE,MAAM,GACnB,kBAAkB;IA2DrB,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;CAiBlE"}
|
|
@@ -82,6 +82,9 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
|
|
|
82
82
|
this.intermediaryMarginfiAccount =
|
|
83
83
|
emptyMarginfiAccounts.length > 0 ? emptyMarginfiAccounts[0] : undefined;
|
|
84
84
|
}
|
|
85
|
+
protocolAccount() {
|
|
86
|
+
return this.marginfiAccountPk;
|
|
87
|
+
}
|
|
85
88
|
defaultLookupTables() {
|
|
86
89
|
return [marginfiAccounts_1.MARGINFI_ACCOUNTS_LOOKUP_TABLE, ...super.defaultLookupTables()];
|
|
87
90
|
}
|
|
@@ -118,7 +121,7 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
|
|
|
118
121
|
solautoManager: (0, umi_1.publicKey)(constants_1.SOLAUTO_MANAGER),
|
|
119
122
|
solautoFeesWallet: (0, umi_1.publicKey)(this.solautoFeesWallet),
|
|
120
123
|
solautoFeesSupplyTa: (0, umi_1.publicKey)(this.solautoFeesSupplyTa),
|
|
121
|
-
signerReferralState: (0, umi_1.publicKey)(this.
|
|
124
|
+
signerReferralState: (0, umi_1.publicKey)(this.referralStateManager.referralState),
|
|
122
125
|
referredByState: this.referredByState
|
|
123
126
|
? (0, umi_1.publicKey)(this.referredByState)
|
|
124
127
|
: undefined,
|
|
@@ -281,7 +284,7 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
|
|
|
281
284
|
marginfiProgram: (0, umi_1.publicKey)(marginfi_sdk_1.MARGINFI_PROGRAM_ID),
|
|
282
285
|
ixsSysvar: (0, umi_1.publicKey)(web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY),
|
|
283
286
|
solautoFeesSupplyTa: rebalanceStep === "B" ? (0, umi_1.publicKey)(this.solautoFeesSupplyTa) : undefined,
|
|
284
|
-
authorityReferralState: (0, umi_1.publicKey)(this.
|
|
287
|
+
authorityReferralState: (0, umi_1.publicKey)(this.referralStateManager.referralState),
|
|
285
288
|
referredBySupplyTa: this.referredBySupplyTa
|
|
286
289
|
? (0, umi_1.publicKey)(this.referredBySupplyTa)
|
|
287
290
|
: undefined,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactionUtils.d.ts","sourceRoot":"","sources":["../../src/transactions/transactionUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,kBAAkB,EAClB,GAAG,EAGJ,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAGL,OAAO,IAAI,eAAe,EAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,aAAa,EASd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAuMzD,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,EACtB,sBAAsB,EAAE,MAAM,EAAE,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CA8G7B;AAkLD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,GACrB,OAAO,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CA4BnD;AAED,wBAAsB,gCAAgC,CACpD,MAAM,EAAE,aAAa,EACrB,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CACN;
|
|
1
|
+
{"version":3,"file":"transactionUtils.d.ts","sourceRoot":"","sources":["../../src/transactions/transactionUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,kBAAkB,EAClB,GAAG,EAGJ,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAGL,OAAO,IAAI,eAAe,EAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,aAAa,EASd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAuMzD,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,EACtB,sBAAsB,EAAE,MAAM,EAAE,GAC/B,OAAO,CAAC,kBAAkB,CAAC,CA8G7B;AAkLD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,EACrB,EAAE,EAAE,kBAAkB,GACrB,OAAO,CAAC,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC,CA4BnD;AAED,wBAAsB,gCAAgC,CACpD,MAAM,EAAE,aAAa,EACrB,2BAA2B,CAAC,EAAE,MAAM,EACpC,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CACN;IACA,EAAE,EAAE,kBAAkB,CAAC;IACvB,oBAAoB,EAAE,MAAM,EAAE,CAAC;CAChC,GACC,SAAS,CACZ,CA2HA;AAED,wBAAsB,gCAAgC,CACpD,GAAG,EAAE,GAAG,EACR,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,eAAe,GAC5B,OAAO,CAAC,CAAC,kBAAkB,EAAE,MAAM,EAAE,CAAC,CAAC,CA8BzC"}
|
|
@@ -47,14 +47,14 @@ function getWSolUsage(client, solautoActions, initiatingDcaIn, cancellingDcaIn)
|
|
|
47
47
|
}
|
|
48
48
|
async function transactionChoresBefore(client, accountsGettingCreated, solautoActions, initiatingDcaIn) {
|
|
49
49
|
let chores = (0, umi_1.transactionBuilder)();
|
|
50
|
-
if (client.
|
|
50
|
+
if (client.referralStateManager.referralState === null ||
|
|
51
51
|
(client.referredByState !== undefined &&
|
|
52
|
-
client.
|
|
52
|
+
client.referralStateManager.referralStateData.referredByState ===
|
|
53
53
|
(0, umi_1.publicKey)(web3_js_1.PublicKey.default)) ||
|
|
54
54
|
(client.authorityLutAddress !== undefined &&
|
|
55
|
-
client.
|
|
55
|
+
client.referralStateManager.referralStateData.lookupTable ==
|
|
56
56
|
(0, umi_1.publicKey)(web3_js_1.PublicKey.default))) {
|
|
57
|
-
chores = chores.add(client.updateReferralStatesIx());
|
|
57
|
+
chores = chores.add(client.referralStateManager.updateReferralStatesIx(undefined, client.referredByAuthority, client.authorityLutAddress));
|
|
58
58
|
}
|
|
59
59
|
if (client.selfManaged) {
|
|
60
60
|
if (client.solautoPositionData === null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactionsManager.d.ts","sourceRoot":"","sources":["../../src/transactions/transactionsManager.ts"],"names":[],"mappings":"AACA,OAAO,EACL,uBAAuB,
|
|
1
|
+
{"version":3,"file":"transactionsManager.d.ts","sourceRoot":"","sources":["../../src/transactions/transactionsManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -141,11 +141,7 @@ class TransactionsManager {
|
|
|
141
141
|
}
|
|
142
142
|
const transaction = item.tx.setAddressLookupTables(await this.lookupTables.getLutInputs(item.lookupTableAddresses));
|
|
143
143
|
if (!transaction.fitsInOneTransaction(this.client.umi)) {
|
|
144
|
-
|
|
145
|
-
// throw new Error(
|
|
146
|
-
// `Transaction exceeds max transaction size (${transaction.getTransactionSize(this.client.umi)})`
|
|
147
|
-
// );
|
|
148
|
-
transactionSets.push(new TransactionSet(this.client, this.lookupTables, [item]));
|
|
144
|
+
throw new Error(`Transaction exceeds max transaction size (${transaction.getTransactionSize(this.client.umi)})`);
|
|
149
145
|
}
|
|
150
146
|
else {
|
|
151
147
|
let newSet = new TransactionSet(this.client, this.lookupTables, [item]);
|
|
@@ -3,7 +3,7 @@ export declare function bufferFromU8(num: number): Buffer;
|
|
|
3
3
|
export declare function bufferFromU64(num: bigint): Buffer;
|
|
4
4
|
export declare function getTokenAccount(wallet: PublicKey, tokenMint: PublicKey): PublicKey;
|
|
5
5
|
export declare function getTokenAccounts(wallet: PublicKey, tokenMints: PublicKey[]): PublicKey[];
|
|
6
|
-
export declare function getSolautoPositionAccount(signer: PublicKey, positionId: number):
|
|
7
|
-
export declare function getReferralState(authority: PublicKey):
|
|
6
|
+
export declare function getSolautoPositionAccount(signer: PublicKey, positionId: number): PublicKey;
|
|
7
|
+
export declare function getReferralState(authority: PublicKey): PublicKey;
|
|
8
8
|
export declare function getMarginfiAccountPDA(solautoPositionAccount: PublicKey, marginfiAccountSeedIdx: bigint): Promise<PublicKey>;
|
|
9
9
|
//# 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;AAI5C,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,
|
|
1
|
+
{"version":3,"file":"accountUtils.d.ts","sourceRoot":"","sources":["../../src/utils/accountUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,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,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,MAAM,aAQnB;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,SAAS,aAUpD;AAED,wBAAsB,qBAAqB,CACzC,sBAAsB,EAAE,SAAS,EACjC,sBAAsB,EAAE,MAAM,sBAa/B"}
|
|
@@ -26,14 +26,14 @@ function getTokenAccount(wallet, tokenMint) {
|
|
|
26
26
|
function getTokenAccounts(wallet, tokenMints) {
|
|
27
27
|
return tokenMints.map(x => getTokenAccount(wallet, x));
|
|
28
28
|
}
|
|
29
|
-
|
|
30
|
-
const [positionAccount, _] =
|
|
29
|
+
function getSolautoPositionAccount(signer, positionId) {
|
|
30
|
+
const [positionAccount, _] = web3_js_1.PublicKey.findProgramAddressSync([bufferFromU8(positionId), signer.toBuffer()], new web3_js_1.PublicKey(generated_1.SOLAUTO_PROGRAM_ID));
|
|
31
31
|
return positionAccount;
|
|
32
32
|
}
|
|
33
|
-
|
|
33
|
+
function getReferralState(authority) {
|
|
34
34
|
const str = "referral_state";
|
|
35
35
|
const strBuffer = Buffer.from(str, "utf-8");
|
|
36
|
-
const [ReferralState, _] =
|
|
36
|
+
const [ReferralState, _] = web3_js_1.PublicKey.findProgramAddressSync([strBuffer, authority.toBuffer()], new web3_js_1.PublicKey(generated_1.SOLAUTO_PROGRAM_ID));
|
|
37
37
|
return ReferralState;
|
|
38
38
|
}
|
|
39
39
|
async function getMarginfiAccountPDA(solautoPositionAccount, marginfiAccountSeedIdx) {
|
|
@@ -165,7 +165,7 @@ async function getReferralsByUser(umi, user) {
|
|
|
165
165
|
// padding: [u8; 7],
|
|
166
166
|
// authority: Pubkey,
|
|
167
167
|
// referred_by_state: Pubkey,
|
|
168
|
-
const userReferralState =
|
|
168
|
+
const userReferralState = (0, accountUtils_1.getReferralState)(user);
|
|
169
169
|
const accounts = await umi.rpc.getProgramAccounts(generated_1.SOLAUTO_PROGRAM_ID, {
|
|
170
170
|
commitment: "finalized",
|
|
171
171
|
dataSlice: {
|
package/package.json
CHANGED
package/src/clients/index.ts
CHANGED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { PublicKey } from "@solana/web3.js";
|
|
2
|
+
import { NATIVE_MINT } from "@solana/spl-token";
|
|
3
|
+
import { publicKey, Signer, signerIdentity, TransactionBuilder, Umi } from "@metaplex-foundation/umi";
|
|
4
|
+
import { toWeb3JsPublicKey } from "@metaplex-foundation/umi-web3js-adapters";
|
|
5
|
+
import { WalletAdapter, walletAdapterIdentity } from "@metaplex-foundation/umi-signer-wallet-adapters";
|
|
6
|
+
import { claimReferralFees, createSolautoProgram, ReferralState, safeFetchReferralState, updateReferralStates } from "../generated";
|
|
7
|
+
import { getReferralState, getSolanaRpcConnection, getTokenAccount } from "../utils";
|
|
8
|
+
|
|
9
|
+
interface ReferralStateManagerArgs {
|
|
10
|
+
referralAuthority?: PublicKey;
|
|
11
|
+
signer?: Signer;
|
|
12
|
+
wallet?: WalletAdapter;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export class ReferralStateManager {
|
|
16
|
+
public umi!: Umi;
|
|
17
|
+
public signer!: Signer;
|
|
18
|
+
|
|
19
|
+
public referralAuthority!: PublicKey;
|
|
20
|
+
public referralState!: PublicKey;
|
|
21
|
+
public referralStateData!: ReferralState | null;
|
|
22
|
+
|
|
23
|
+
constructor(heliusApiKey: string) {
|
|
24
|
+
const [_, umi] = getSolanaRpcConnection(heliusApiKey);
|
|
25
|
+
this.umi = umi.use({
|
|
26
|
+
install(umi) {
|
|
27
|
+
umi.programs.add(createSolautoProgram(), false);
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
async initialize(args: ReferralStateManagerArgs) {
|
|
33
|
+
if (!args.signer && !args.wallet) {
|
|
34
|
+
throw new Error("Signer or wallet must be provided");
|
|
35
|
+
}
|
|
36
|
+
this.umi = this.umi.use(
|
|
37
|
+
args.signer
|
|
38
|
+
? signerIdentity(args.signer)
|
|
39
|
+
: walletAdapterIdentity(args.wallet!, true)
|
|
40
|
+
);
|
|
41
|
+
|
|
42
|
+
this.signer = this.umi.identity;
|
|
43
|
+
this.referralState = getReferralState(args.referralAuthority ?? toWeb3JsPublicKey(this.signer.publicKey));
|
|
44
|
+
this.referralStateData = await safeFetchReferralState(this.umi, publicKey(this.referralState));
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
updateReferralStatesIx(destFeesMint?: PublicKey, referredBy?: PublicKey, lookupTable?: PublicKey): TransactionBuilder {
|
|
48
|
+
return updateReferralStates(this.umi, {
|
|
49
|
+
signer: this.signer,
|
|
50
|
+
signerReferralState: publicKey(this.referralState),
|
|
51
|
+
referralFeesDestMint: destFeesMint ? publicKey(destFeesMint) : null,
|
|
52
|
+
referredByState: referredBy
|
|
53
|
+
? publicKey(getReferralState(referredBy))
|
|
54
|
+
: undefined,
|
|
55
|
+
referredByAuthority: referredBy
|
|
56
|
+
? publicKey(referredBy)
|
|
57
|
+
: undefined,
|
|
58
|
+
addressLookupTable: lookupTable
|
|
59
|
+
? publicKey(lookupTable)
|
|
60
|
+
: null,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
claimReferralFeesIx(destFeesMint?: PublicKey): TransactionBuilder {
|
|
65
|
+
const referralFeesDestMint = destFeesMint ?? toWeb3JsPublicKey(this.referralStateData!.destFeesMint);
|
|
66
|
+
const referralDestTa = getTokenAccount(this.referralState, referralFeesDestMint);
|
|
67
|
+
const feesDestinationTa =
|
|
68
|
+
referralFeesDestMint !== NATIVE_MINT
|
|
69
|
+
? publicKey(
|
|
70
|
+
getTokenAccount(
|
|
71
|
+
toWeb3JsPublicKey(this.signer.publicKey),
|
|
72
|
+
referralFeesDestMint
|
|
73
|
+
)
|
|
74
|
+
)
|
|
75
|
+
: undefined;
|
|
76
|
+
|
|
77
|
+
return claimReferralFees(this.umi, {
|
|
78
|
+
signer: this.signer,
|
|
79
|
+
signerWsolTa: publicKey(getTokenAccount(toWeb3JsPublicKey(this.signer.publicKey), NATIVE_MINT)),
|
|
80
|
+
referralAuthority: publicKey(this.referralAuthority),
|
|
81
|
+
referralState: publicKey(this.referralState),
|
|
82
|
+
referralFeesDestTa: publicKey(referralDestTa),
|
|
83
|
+
referralFeesDestMint: publicKey(referralFeesDestMint),
|
|
84
|
+
feesDestinationTa,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
}
|
|
@@ -14,7 +14,6 @@ import {
|
|
|
14
14
|
isSome,
|
|
15
15
|
transactionBuilder,
|
|
16
16
|
signerIdentity,
|
|
17
|
-
some,
|
|
18
17
|
} from "@metaplex-foundation/umi";
|
|
19
18
|
import { toWeb3JsPublicKey } from "@metaplex-foundation/umi-web3js-adapters";
|
|
20
19
|
import {
|
|
@@ -26,7 +25,6 @@ import {
|
|
|
26
25
|
DCASettingsInpArgs,
|
|
27
26
|
LendingPlatform,
|
|
28
27
|
PositionState,
|
|
29
|
-
ReferralState,
|
|
30
28
|
SolautoActionArgs,
|
|
31
29
|
SolautoPosition,
|
|
32
30
|
SolautoRebalanceTypeArgs,
|
|
@@ -34,13 +32,10 @@ import {
|
|
|
34
32
|
SolautoSettingsParametersInpArgs,
|
|
35
33
|
UpdatePositionDataArgs,
|
|
36
34
|
cancelDCA,
|
|
37
|
-
claimReferralFees,
|
|
38
35
|
closePosition,
|
|
39
36
|
createSolautoProgram,
|
|
40
|
-
safeFetchReferralState,
|
|
41
37
|
safeFetchSolautoPosition,
|
|
42
38
|
updatePosition,
|
|
43
|
-
updateReferralStates,
|
|
44
39
|
} from "../generated";
|
|
45
40
|
import {
|
|
46
41
|
getReferralState,
|
|
@@ -57,13 +52,13 @@ import {
|
|
|
57
52
|
splTokenTransferUmiIx,
|
|
58
53
|
} from "../utils/solanaUtils";
|
|
59
54
|
import { FlashLoanDetails } from "../utils/solauto/rebalanceUtils";
|
|
60
|
-
import { NATIVE_MINT } from "@solana/spl-token";
|
|
61
55
|
import {
|
|
62
56
|
MIN_POSITION_STATE_FRESHNESS_SECS,
|
|
63
57
|
SOLAUTO_LUT,
|
|
64
58
|
} from "../constants/solautoConstants";
|
|
65
59
|
import { currentUnixSeconds } from "../utils/generalUtils";
|
|
66
60
|
import { LivePositionUpdates } from "../utils/solauto/generalUtils";
|
|
61
|
+
import { ReferralStateManager } from "./referralStateManager";
|
|
67
62
|
|
|
68
63
|
export interface SolautoClientArgs {
|
|
69
64
|
authority?: PublicKey;
|
|
@@ -74,11 +69,11 @@ export interface SolautoClientArgs {
|
|
|
74
69
|
supplyMint?: PublicKey;
|
|
75
70
|
debtMint?: PublicKey;
|
|
76
71
|
|
|
77
|
-
referralFeesDestMint?: PublicKey;
|
|
78
72
|
referredByAuthority?: PublicKey;
|
|
79
73
|
}
|
|
80
74
|
|
|
81
75
|
export abstract class SolautoClient {
|
|
76
|
+
private heliusApiKey!: string;
|
|
82
77
|
public umi!: Umi;
|
|
83
78
|
public connection!: Connection;
|
|
84
79
|
public lendingPlatform!: LendingPlatform;
|
|
@@ -100,10 +95,7 @@ export abstract class SolautoClient {
|
|
|
100
95
|
public positionDebtTa!: PublicKey;
|
|
101
96
|
public signerDebtTa!: PublicKey;
|
|
102
97
|
|
|
103
|
-
public
|
|
104
|
-
public authorityReferralStateData!: ReferralState | null;
|
|
105
|
-
public authorityReferralFeesDestMint!: PublicKey;
|
|
106
|
-
public authorityReferralDestTa!: PublicKey;
|
|
98
|
+
public referralStateManager!: ReferralStateManager;
|
|
107
99
|
|
|
108
100
|
public referredByState?: PublicKey;
|
|
109
101
|
public referredByAuthority?: PublicKey;
|
|
@@ -121,7 +113,8 @@ export abstract class SolautoClient {
|
|
|
121
113
|
heliusApiKey: string,
|
|
122
114
|
public localTest?: boolean
|
|
123
115
|
) {
|
|
124
|
-
|
|
116
|
+
this.heliusApiKey = heliusApiKey;
|
|
117
|
+
const [connection, umi] = getSolanaRpcConnection(this.heliusApiKey);
|
|
125
118
|
this.connection = connection;
|
|
126
119
|
this.umi = umi.use({
|
|
127
120
|
install(umi) {
|
|
@@ -146,7 +139,7 @@ export abstract class SolautoClient {
|
|
|
146
139
|
this.positionId = args.positionId;
|
|
147
140
|
this.selfManaged = this.positionId === 0;
|
|
148
141
|
this.lendingPlatform = lendingPlatform;
|
|
149
|
-
this.solautoPosition =
|
|
142
|
+
this.solautoPosition = getSolautoPositionAccount(
|
|
150
143
|
this.authority,
|
|
151
144
|
this.positionId
|
|
152
145
|
);
|
|
@@ -177,35 +170,28 @@ export abstract class SolautoClient {
|
|
|
177
170
|
this.debtMint
|
|
178
171
|
);
|
|
179
172
|
|
|
180
|
-
this.
|
|
181
|
-
this.
|
|
182
|
-
this.
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
? args.referralFeesDestMint
|
|
187
|
-
: this.authorityReferralStateData?.destFeesMint
|
|
188
|
-
? toWeb3JsPublicKey(this.authorityReferralStateData?.destFeesMint)
|
|
189
|
-
: NATIVE_MINT;
|
|
190
|
-
this.authorityReferralDestTa = getTokenAccount(
|
|
191
|
-
this.authorityReferralState,
|
|
192
|
-
this.authorityReferralFeesDestMint
|
|
193
|
-
);
|
|
173
|
+
this.referralStateManager = new ReferralStateManager(this.heliusApiKey)
|
|
174
|
+
await this.referralStateManager.initialize({
|
|
175
|
+
referralAuthority: this.authority,
|
|
176
|
+
signer: args.signer,
|
|
177
|
+
wallet: args.wallet
|
|
178
|
+
});
|
|
194
179
|
|
|
180
|
+
const authorityReferralStateData = this.referralStateManager.referralStateData;
|
|
195
181
|
const hasReferredBy =
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
182
|
+
authorityReferralStateData &&
|
|
183
|
+
authorityReferralStateData.referredByState !==
|
|
184
|
+
publicKey(PublicKey.default);
|
|
199
185
|
const referredByAuthority =
|
|
200
186
|
!hasReferredBy &&
|
|
201
|
-
|
|
202
|
-
|
|
187
|
+
args.referredByAuthority &&
|
|
188
|
+
!args.referredByAuthority.equals(toWeb3JsPublicKey(this.signer.publicKey))
|
|
203
189
|
? args.referredByAuthority
|
|
204
190
|
: undefined;
|
|
205
191
|
this.referredByState = hasReferredBy
|
|
206
|
-
? toWeb3JsPublicKey(
|
|
192
|
+
? toWeb3JsPublicKey(authorityReferralStateData!.referredByState)
|
|
207
193
|
: referredByAuthority
|
|
208
|
-
?
|
|
194
|
+
? getReferralState(referredByAuthority!)
|
|
209
195
|
: undefined;
|
|
210
196
|
this.referredByAuthority = referredByAuthority;
|
|
211
197
|
if (this.referredByState !== undefined) {
|
|
@@ -221,8 +207,8 @@ export abstract class SolautoClient {
|
|
|
221
207
|
this.supplyMint
|
|
222
208
|
);
|
|
223
209
|
|
|
224
|
-
this.authorityLutAddress =
|
|
225
|
-
? toWeb3JsPublicKey(
|
|
210
|
+
this.authorityLutAddress = authorityReferralStateData?.lookupTable
|
|
211
|
+
? toWeb3JsPublicKey(authorityReferralStateData?.lookupTable)
|
|
226
212
|
: undefined;
|
|
227
213
|
this.upToDateLutAccounts = toWeb3JsPublicKey(this.signer.publicKey).equals(
|
|
228
214
|
this.authority
|
|
@@ -270,6 +256,8 @@ export abstract class SolautoClient {
|
|
|
270
256
|
this.livePositionUpdates.reset();
|
|
271
257
|
}
|
|
272
258
|
|
|
259
|
+
abstract protocolAccount(): PublicKey;
|
|
260
|
+
|
|
273
261
|
defaultLookupTables(): string[] {
|
|
274
262
|
return [SOLAUTO_LUT];
|
|
275
263
|
}
|
|
@@ -286,7 +274,7 @@ export abstract class SolautoClient {
|
|
|
286
274
|
this.solautoPosition,
|
|
287
275
|
this.positionSupplyTa,
|
|
288
276
|
this.positionDebtTa,
|
|
289
|
-
this.
|
|
277
|
+
this.referralStateManager.referralState,
|
|
290
278
|
...(this.referredBySupplyTa ? [this.referredBySupplyTa] : []),
|
|
291
279
|
];
|
|
292
280
|
}
|
|
@@ -353,7 +341,7 @@ export abstract class SolautoClient {
|
|
|
353
341
|
const addingReferredBy =
|
|
354
342
|
accountsToAdd.length === 1 &&
|
|
355
343
|
accountsToAdd[0].toString().toLowerCase() ===
|
|
356
|
-
|
|
344
|
+
this.referredBySupplyTa?.toString().toLowerCase();
|
|
357
345
|
|
|
358
346
|
if (tx.getInstructions().length > 0) {
|
|
359
347
|
this.log("Updating authority lookup table...");
|
|
@@ -376,44 +364,6 @@ export abstract class SolautoClient {
|
|
|
376
364
|
);
|
|
377
365
|
}
|
|
378
366
|
|
|
379
|
-
updateReferralStatesIx(): TransactionBuilder {
|
|
380
|
-
return updateReferralStates(this.umi, {
|
|
381
|
-
signer: this.signer,
|
|
382
|
-
signerReferralState: publicKey(this.authorityReferralState),
|
|
383
|
-
referralFeesDestMint: publicKey(this.authorityReferralFeesDestMint),
|
|
384
|
-
referredByState: this.referredByState
|
|
385
|
-
? publicKey(this.referredByState)
|
|
386
|
-
: undefined,
|
|
387
|
-
referredByAuthority: this.referredByAuthority
|
|
388
|
-
? publicKey(this.referredByAuthority)
|
|
389
|
-
: undefined,
|
|
390
|
-
addressLookupTable: this.authorityLutAddress
|
|
391
|
-
? some(publicKey(this.authorityLutAddress))
|
|
392
|
-
: null,
|
|
393
|
-
});
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
claimReferralFeesIx(): TransactionBuilder {
|
|
397
|
-
const feesDestinationTa =
|
|
398
|
-
this.authorityReferralFeesDestMint !== NATIVE_MINT
|
|
399
|
-
? publicKey(
|
|
400
|
-
getTokenAccount(
|
|
401
|
-
toWeb3JsPublicKey(this.signer.publicKey),
|
|
402
|
-
this.authorityReferralFeesDestMint
|
|
403
|
-
)
|
|
404
|
-
)
|
|
405
|
-
: undefined;
|
|
406
|
-
return claimReferralFees(this.umi, {
|
|
407
|
-
signer: this.signer,
|
|
408
|
-
signerWsolTa: publicKey(getTokenAccount(toWeb3JsPublicKey(this.signer.publicKey), NATIVE_MINT)),
|
|
409
|
-
referralAuthority: publicKey(this.authorityReferralStateData!.authority),
|
|
410
|
-
referralState: publicKey(this.authorityReferralState),
|
|
411
|
-
referralFeesDestTa: publicKey(this.authorityReferralDestTa),
|
|
412
|
-
referralFeesDestMint: publicKey(this.authorityReferralFeesDestMint),
|
|
413
|
-
feesDestinationTa,
|
|
414
|
-
});
|
|
415
|
-
}
|
|
416
|
-
|
|
417
367
|
openPosition(
|
|
418
368
|
settingParams?: SolautoSettingsParametersInpArgs,
|
|
419
369
|
dca?: DCASettingsInpArgs
|
|
@@ -575,7 +525,7 @@ export abstract class SolautoClient {
|
|
|
575
525
|
BigInt(
|
|
576
526
|
Math.round(
|
|
577
527
|
Number(this.solautoPositionState!.debt.amountUsed.baseUnit) *
|
|
578
|
-
|
|
528
|
+
1.01
|
|
579
529
|
)
|
|
580
530
|
)
|
|
581
531
|
)
|
|
@@ -647,7 +597,7 @@ export abstract class SolautoClient {
|
|
|
647
597
|
if (
|
|
648
598
|
Boolean(this.solautoPositionState) &&
|
|
649
599
|
Number(this.solautoPositionState!.lastUpdated) >
|
|
650
|
-
|
|
600
|
+
currentUnixSeconds() - MIN_POSITION_STATE_FRESHNESS_SECS &&
|
|
651
601
|
!this.livePositionUpdates.hasUpdates()
|
|
652
602
|
) {
|
|
653
603
|
return this.solautoPositionState;
|
|
@@ -34,7 +34,6 @@ import {
|
|
|
34
34
|
import { getMarginfiAccountPDA, getTokenAccount } from "../utils/accountUtils";
|
|
35
35
|
import { generateRandomU64 } from "../utils/generalUtils";
|
|
36
36
|
import {
|
|
37
|
-
Bank,
|
|
38
37
|
MARGINFI_PROGRAM_ID,
|
|
39
38
|
MarginfiAccount,
|
|
40
39
|
lendingAccountBorrow,
|
|
@@ -44,9 +43,7 @@ import {
|
|
|
44
43
|
lendingAccountStartFlashloan,
|
|
45
44
|
lendingAccountWithdraw,
|
|
46
45
|
marginfiAccountInitialize,
|
|
47
|
-
safeFetchAllBank,
|
|
48
46
|
safeFetchAllMarginfiAccount,
|
|
49
|
-
safeFetchBank,
|
|
50
47
|
safeFetchMarginfiAccount,
|
|
51
48
|
} from "../marginfi-sdk";
|
|
52
49
|
import { JupSwapDetails } from "../utils/jupiterUtils";
|
|
@@ -196,6 +193,10 @@ export class SolautoMarginfiClient extends SolautoClient {
|
|
|
196
193
|
emptyMarginfiAccounts.length > 0 ? emptyMarginfiAccounts[0] : undefined;
|
|
197
194
|
}
|
|
198
195
|
|
|
196
|
+
protocolAccount(): PublicKey {
|
|
197
|
+
return this.marginfiAccountPk;
|
|
198
|
+
}
|
|
199
|
+
|
|
199
200
|
defaultLookupTables(): string[] {
|
|
200
201
|
return [MARGINFI_ACCOUNTS_LOOKUP_TABLE, ...super.defaultLookupTables()];
|
|
201
202
|
}
|
|
@@ -243,7 +244,7 @@ export class SolautoMarginfiClient extends SolautoClient {
|
|
|
243
244
|
solautoManager: publicKey(SOLAUTO_MANAGER),
|
|
244
245
|
solautoFeesWallet: publicKey(this.solautoFeesWallet),
|
|
245
246
|
solautoFeesSupplyTa: publicKey(this.solautoFeesSupplyTa),
|
|
246
|
-
signerReferralState: publicKey(this.
|
|
247
|
+
signerReferralState: publicKey(this.referralStateManager.referralState),
|
|
247
248
|
referredByState: this.referredByState
|
|
248
249
|
? publicKey(this.referredByState)
|
|
249
250
|
: undefined,
|
|
@@ -448,7 +449,7 @@ export class SolautoMarginfiClient extends SolautoClient {
|
|
|
448
449
|
ixsSysvar: publicKey(SYSVAR_INSTRUCTIONS_PUBKEY),
|
|
449
450
|
solautoFeesSupplyTa:
|
|
450
451
|
rebalanceStep === "B" ? publicKey(this.solautoFeesSupplyTa) : undefined,
|
|
451
|
-
authorityReferralState: publicKey(this.
|
|
452
|
+
authorityReferralState: publicKey(this.referralStateManager.referralState),
|
|
452
453
|
referredBySupplyTa: this.referredBySupplyTa
|
|
453
454
|
? publicKey(this.referredBySupplyTa)
|
|
454
455
|
: undefined,
|
|
@@ -109,15 +109,15 @@ async function transactionChoresBefore(
|
|
|
109
109
|
let chores = transactionBuilder();
|
|
110
110
|
|
|
111
111
|
if (
|
|
112
|
-
client.
|
|
112
|
+
client.referralStateManager.referralState === null ||
|
|
113
113
|
(client.referredByState !== undefined &&
|
|
114
|
-
client.
|
|
115
|
-
|
|
114
|
+
client.referralStateManager.referralStateData!.referredByState ===
|
|
115
|
+
publicKey(PublicKey.default)) ||
|
|
116
116
|
(client.authorityLutAddress !== undefined &&
|
|
117
|
-
client.
|
|
118
|
-
|
|
117
|
+
client.referralStateManager.referralStateData!.lookupTable ==
|
|
118
|
+
publicKey(PublicKey.default))
|
|
119
119
|
) {
|
|
120
|
-
chores = chores.add(client.updateReferralStatesIx());
|
|
120
|
+
chores = chores.add(client.referralStateManager.updateReferralStatesIx(undefined, client.referredByAuthority, client.authorityLutAddress));
|
|
121
121
|
}
|
|
122
122
|
|
|
123
123
|
if (client.selfManaged) {
|
|
@@ -379,7 +379,7 @@ function getRebalanceInstructions(tx: TransactionBuilder): Instruction[] {
|
|
|
379
379
|
if (data.discriminator === discriminator) {
|
|
380
380
|
return true;
|
|
381
381
|
}
|
|
382
|
-
} catch {}
|
|
382
|
+
} catch { }
|
|
383
383
|
return false;
|
|
384
384
|
}
|
|
385
385
|
});
|
|
@@ -400,7 +400,7 @@ function getSolautoActions(tx: TransactionBuilder): SolautoAction[] {
|
|
|
400
400
|
if (data.discriminator === discriminator) {
|
|
401
401
|
solautoActions?.push(data.solautoAction);
|
|
402
402
|
}
|
|
403
|
-
} catch {}
|
|
403
|
+
} catch { }
|
|
404
404
|
}
|
|
405
405
|
|
|
406
406
|
if (x.programId === MARGINFI_PROGRAM_ID) {
|
|
@@ -423,7 +423,7 @@ function getSolautoActions(tx: TransactionBuilder): SolautoAction[] {
|
|
|
423
423
|
fields: [data.amount],
|
|
424
424
|
});
|
|
425
425
|
}
|
|
426
|
-
} catch {}
|
|
426
|
+
} catch { }
|
|
427
427
|
|
|
428
428
|
try {
|
|
429
429
|
const serializer = getLendingAccountBorrowInstructionDataSerializer();
|
|
@@ -444,7 +444,7 @@ function getSolautoActions(tx: TransactionBuilder): SolautoAction[] {
|
|
|
444
444
|
fields: [data.amount],
|
|
445
445
|
});
|
|
446
446
|
}
|
|
447
|
-
} catch {}
|
|
447
|
+
} catch { }
|
|
448
448
|
|
|
449
449
|
try {
|
|
450
450
|
const serializer = getLendingAccountWithdrawInstructionDataSerializer();
|
|
@@ -466,16 +466,16 @@ function getSolautoActions(tx: TransactionBuilder): SolautoAction[] {
|
|
|
466
466
|
fields: [
|
|
467
467
|
data.withdrawAll
|
|
468
468
|
? {
|
|
469
|
-
|
|
470
|
-
|
|
469
|
+
__kind: "All",
|
|
470
|
+
}
|
|
471
471
|
: {
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
472
|
+
__kind: "Some",
|
|
473
|
+
fields: [data.amount],
|
|
474
|
+
},
|
|
475
475
|
],
|
|
476
476
|
});
|
|
477
477
|
}
|
|
478
|
-
} catch {}
|
|
478
|
+
} catch { }
|
|
479
479
|
|
|
480
480
|
try {
|
|
481
481
|
const serializer = getLendingAccountRepayInstructionDataSerializer();
|
|
@@ -497,16 +497,16 @@ function getSolautoActions(tx: TransactionBuilder): SolautoAction[] {
|
|
|
497
497
|
fields: [
|
|
498
498
|
data.repayAll
|
|
499
499
|
? {
|
|
500
|
-
|
|
501
|
-
|
|
500
|
+
__kind: "All",
|
|
501
|
+
}
|
|
502
502
|
: {
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
503
|
+
__kind: "Some",
|
|
504
|
+
fields: [data.amount],
|
|
505
|
+
},
|
|
506
506
|
],
|
|
507
507
|
});
|
|
508
508
|
}
|
|
509
|
-
} catch {}
|
|
509
|
+
} catch { }
|
|
510
510
|
}
|
|
511
511
|
|
|
512
512
|
// TODO support other platforms
|
|
@@ -554,9 +554,9 @@ export async function buildSolautoRebalanceTransaction(
|
|
|
554
554
|
attemptNum?: number
|
|
555
555
|
): Promise<
|
|
556
556
|
| {
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
557
|
+
tx: TransactionBuilder;
|
|
558
|
+
lookupTableAddresses: string[];
|
|
559
|
+
}
|
|
560
560
|
| undefined
|
|
561
561
|
> {
|
|
562
562
|
client.solautoPositionState = await client.getFreshPositionState();
|
|
@@ -566,9 +566,9 @@ export async function buildSolautoRebalanceTransaction(
|
|
|
566
566
|
!eligibleForRebalance(
|
|
567
567
|
client.solautoPositionState!,
|
|
568
568
|
client.livePositionUpdates.settings ??
|
|
569
|
-
|
|
569
|
+
client.solautoPositionData?.position.settingParams!,
|
|
570
570
|
client.livePositionUpdates.activeDca ??
|
|
571
|
-
|
|
571
|
+
client.solautoPositionData?.position.dca!,
|
|
572
572
|
currentUnixSeconds()
|
|
573
573
|
))
|
|
574
574
|
) {
|
|
@@ -624,14 +624,14 @@ export async function buildSolautoRebalanceTransaction(
|
|
|
624
624
|
),
|
|
625
625
|
...(addFirstRebalance
|
|
626
626
|
? [
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
627
|
+
client.rebalance(
|
|
628
|
+
"A",
|
|
629
|
+
swapDetails,
|
|
630
|
+
rebalanceType,
|
|
631
|
+
flashLoan,
|
|
632
|
+
targetLiqUtilizationRateBps
|
|
633
|
+
),
|
|
634
|
+
]
|
|
635
635
|
: []),
|
|
636
636
|
swapIx,
|
|
637
637
|
client.rebalance(
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import bs58 from "bs58";
|
|
2
2
|
import {
|
|
3
3
|
AddressLookupTableInput,
|
|
4
|
-
Instruction,
|
|
5
4
|
transactionBuilder,
|
|
6
5
|
TransactionBuilder,
|
|
7
6
|
} from "@metaplex-foundation/umi";
|
|
@@ -15,7 +14,6 @@ import {
|
|
|
15
14
|
retryWithExponentialBackoff,
|
|
16
15
|
} from "../utils/generalUtils";
|
|
17
16
|
import { getTransactionChores } from "./transactionUtils";
|
|
18
|
-
import { toWeb3JsPublicKey } from "@metaplex-foundation/umi-web3js-adapters";
|
|
19
17
|
import { PriorityFeeSetting } from "../types";
|
|
20
18
|
// import { sendJitoBundledTransactions } from "../utils/jitoUtils";
|
|
21
19
|
|
|
@@ -213,12 +211,8 @@ export class TransactionsManager {
|
|
|
213
211
|
await this.lookupTables.getLutInputs(item.lookupTableAddresses)
|
|
214
212
|
);
|
|
215
213
|
if (!transaction.fitsInOneTransaction(this.client.umi)) {
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
// `Transaction exceeds max transaction size (${transaction.getTransactionSize(this.client.umi)})`
|
|
219
|
-
// );
|
|
220
|
-
transactionSets.push(
|
|
221
|
-
new TransactionSet(this.client, this.lookupTables, [item])
|
|
214
|
+
throw new Error(
|
|
215
|
+
`Transaction exceeds max transaction size (${transaction.getTransactionSize(this.client.umi)})`
|
|
222
216
|
);
|
|
223
217
|
} else {
|
|
224
218
|
let newSet = new TransactionSet(this.client, this.lookupTables, [item]);
|
|
@@ -26,11 +26,11 @@ export function getTokenAccounts(wallet: PublicKey, tokenMints: PublicKey[]): Pu
|
|
|
26
26
|
return tokenMints.map(x => getTokenAccount(wallet, x));
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
export
|
|
29
|
+
export function getSolautoPositionAccount(
|
|
30
30
|
signer: PublicKey,
|
|
31
31
|
positionId: number
|
|
32
32
|
) {
|
|
33
|
-
const [positionAccount, _] =
|
|
33
|
+
const [positionAccount, _] = PublicKey.findProgramAddressSync(
|
|
34
34
|
[bufferFromU8(positionId), signer.toBuffer()],
|
|
35
35
|
new PublicKey(SOLAUTO_PROGRAM_ID)
|
|
36
36
|
);
|
|
@@ -38,11 +38,11 @@ export async function getSolautoPositionAccount(
|
|
|
38
38
|
return positionAccount;
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
export
|
|
41
|
+
export function getReferralState(authority: PublicKey) {
|
|
42
42
|
const str = "referral_state";
|
|
43
43
|
const strBuffer = Buffer.from(str, "utf-8");
|
|
44
44
|
|
|
45
|
-
const [ReferralState, _] =
|
|
45
|
+
const [ReferralState, _] = PublicKey.findProgramAddressSync(
|
|
46
46
|
[strBuffer, authority.toBuffer()],
|
|
47
47
|
new PublicKey(SOLAUTO_PROGRAM_ID)
|
|
48
48
|
);
|
|
@@ -250,7 +250,7 @@ export async function getReferralsByUser(
|
|
|
250
250
|
// authority: Pubkey,
|
|
251
251
|
// referred_by_state: Pubkey,
|
|
252
252
|
|
|
253
|
-
const userReferralState =
|
|
253
|
+
const userReferralState = getReferralState(user);
|
|
254
254
|
const accounts = await umi.rpc.getProgramAccounts(SOLAUTO_PROGRAM_ID, {
|
|
255
255
|
commitment: "finalized",
|
|
256
256
|
dataSlice: {
|