@haven-fi/solauto-sdk 1.0.80 → 1.0.82
Sign up to get free protection for your applications and to get access to all the features.
- 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 +4 -8
- package/dist/clients/solautoClient.d.ts.map +1 -1
- package/dist/clients/solautoClient.js +18 -46
- package/dist/clients/solautoMarginfiClient.d.ts.map +1 -1
- package/dist/clients/solautoMarginfiClient.js +2 -2
- package/dist/generated/instructions/claimReferralFees.d.ts +2 -0
- package/dist/generated/instructions/claimReferralFees.d.ts.map +1 -1
- package/dist/generated/instructions/claimReferralFees.js +17 -7
- 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.d.ts +1 -0
- package/dist/utils/solauto/generalUtils.d.ts.map +1 -1
- package/dist/utils/solauto/generalUtils.js +11 -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 +26 -75
- package/src/clients/solautoMarginfiClient.ts +2 -4
- package/src/generated/instructions/claimReferralFees.ts +19 -7
- 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 +13 -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;
|
@@ -59,8 +57,6 @@ export declare abstract class SolautoClient {
|
|
59
57
|
} | undefined>;
|
60
58
|
solautoPositionSettings(): SolautoSettingsParameters | undefined;
|
61
59
|
solautoPositionActiveDca(): DCASettings | undefined;
|
62
|
-
updateReferralStatesIx(): TransactionBuilder;
|
63
|
-
claimReferralFeesIx(): TransactionBuilder;
|
64
60
|
openPosition(settingParams?: SolautoSettingsParametersInpArgs, dca?: DCASettingsInpArgs): TransactionBuilder;
|
65
61
|
updatePositionIx(args: UpdatePositionDataArgs): TransactionBuilder;
|
66
62
|
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":"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"}
|
@@ -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,34 +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
|
-
referralState: (0, umi_1.publicKey)(this.authorityReferralState),
|
212
|
-
referralFeesDestTa: (0, umi_1.publicKey)(this.authorityReferralDestTa),
|
213
|
-
referralFeesDestMint: (0, umi_1.publicKey)(this.authorityReferralFeesDestMint),
|
214
|
-
feesDestinationTa,
|
215
|
-
});
|
216
|
-
}
|
217
189
|
openPosition(settingParams, dca) {
|
218
190
|
if (dca && dca.debtToAddBaseUnit > 0) {
|
219
191
|
this.livePositionUpdates.new({
|
@@ -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,EAGL,eAAe,
|
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,EAGL,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,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"}
|
@@ -118,7 +118,7 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
|
|
118
118
|
solautoManager: (0, umi_1.publicKey)(constants_1.SOLAUTO_MANAGER),
|
119
119
|
solautoFeesWallet: (0, umi_1.publicKey)(this.solautoFeesWallet),
|
120
120
|
solautoFeesSupplyTa: (0, umi_1.publicKey)(this.solautoFeesSupplyTa),
|
121
|
-
signerReferralState: (0, umi_1.publicKey)(this.
|
121
|
+
signerReferralState: (0, umi_1.publicKey)(this.referralStateManager.referralState),
|
122
122
|
referredByState: this.referredByState
|
123
123
|
? (0, umi_1.publicKey)(this.referredByState)
|
124
124
|
: undefined,
|
@@ -281,7 +281,7 @@ class SolautoMarginfiClient extends solautoClient_1.SolautoClient {
|
|
281
281
|
marginfiProgram: (0, umi_1.publicKey)(marginfi_sdk_1.MARGINFI_PROGRAM_ID),
|
282
282
|
ixsSysvar: (0, umi_1.publicKey)(web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY),
|
283
283
|
solautoFeesSupplyTa: rebalanceStep === "B" ? (0, umi_1.publicKey)(this.solautoFeesSupplyTa) : undefined,
|
284
|
-
authorityReferralState: (0, umi_1.publicKey)(this.
|
284
|
+
authorityReferralState: (0, umi_1.publicKey)(this.referralStateManager.referralState),
|
285
285
|
referredBySupplyTa: this.referredBySupplyTa
|
286
286
|
? (0, umi_1.publicKey)(this.referredBySupplyTa)
|
287
287
|
: undefined,
|
@@ -9,12 +9,14 @@ import { Context, Pda, PublicKey, Signer, TransactionBuilder } from '@metaplex-f
|
|
9
9
|
import { Serializer } from '@metaplex-foundation/umi/serializers';
|
10
10
|
export type ClaimReferralFeesInstructionAccounts = {
|
11
11
|
signer: Signer;
|
12
|
+
signerWsolTa?: PublicKey | Pda;
|
12
13
|
systemProgram?: PublicKey | Pda;
|
13
14
|
tokenProgram?: PublicKey | Pda;
|
14
15
|
rent?: PublicKey | Pda;
|
15
16
|
referralState: PublicKey | Pda;
|
16
17
|
referralFeesDestTa: PublicKey | Pda;
|
17
18
|
referralFeesDestMint: PublicKey | Pda;
|
19
|
+
referralAuthority?: PublicKey | Pda;
|
18
20
|
feesDestinationTa?: PublicKey | Pda;
|
19
21
|
};
|
20
22
|
export type ClaimReferralFeesInstructionData = {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"claimReferralFees.d.ts","sourceRoot":"","sources":["../../../src/generated/instructions/claimReferralFees.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,OAAO,EACP,GAAG,EACH,SAAS,EACT,MAAM,EACN,kBAAkB,EAGnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,UAAU,EAIX,MAAM,sCAAsC,CAAC;AAQ9C,MAAM,MAAM,oCAAoC,GAAG;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IAChC,YAAY,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IAC/B,IAAI,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IACvB,aAAa,EAAE,SAAS,GAAG,GAAG,CAAC;IAC/B,kBAAkB,EAAE,SAAS,GAAG,GAAG,CAAC;IACpC,oBAAoB,EAAE,SAAS,GAAG,GAAG,CAAC;IACtC,iBAAiB,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;CACrC,CAAC;AAGF,MAAM,MAAM,gCAAgC,GAAG;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzE,MAAM,MAAM,oCAAoC,GAAG,EAAE,CAAC;AAEtD,wBAAgB,6CAA6C,IAAI,UAAU,CACzE,oCAAoC,EACpC,gCAAgC,CACjC,CAcA;AAGD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,EAClC,KAAK,EAAE,oCAAoC,GAC1C,kBAAkB,
|
1
|
+
{"version":3,"file":"claimReferralFees.d.ts","sourceRoot":"","sources":["../../../src/generated/instructions/claimReferralFees.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,OAAO,EACP,GAAG,EACH,SAAS,EACT,MAAM,EACN,kBAAkB,EAGnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,UAAU,EAIX,MAAM,sCAAsC,CAAC;AAQ9C,MAAM,MAAM,oCAAoC,GAAG;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IAC/B,aAAa,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IAChC,YAAY,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IAC/B,IAAI,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IACvB,aAAa,EAAE,SAAS,GAAG,GAAG,CAAC;IAC/B,kBAAkB,EAAE,SAAS,GAAG,GAAG,CAAC;IACpC,oBAAoB,EAAE,SAAS,GAAG,GAAG,CAAC;IACtC,iBAAiB,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;IACpC,iBAAiB,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;CACrC,CAAC;AAGF,MAAM,MAAM,gCAAgC,GAAG;IAAE,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzE,MAAM,MAAM,oCAAoC,GAAG,EAAE,CAAC;AAEtD,wBAAgB,6CAA6C,IAAI,UAAU,CACzE,oCAAoC,EACpC,gCAAgC,CACjC,CAcA;AAGD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,EAClC,KAAK,EAAE,oCAAoC,GAC1C,kBAAkB,CAmGpB"}
|
@@ -28,34 +28,44 @@ function claimReferralFees(context, input) {
|
|
28
28
|
isWritable: false,
|
29
29
|
value: input.signer ?? null,
|
30
30
|
},
|
31
|
-
|
31
|
+
signerWsolTa: {
|
32
32
|
index: 1,
|
33
|
+
isWritable: true,
|
34
|
+
value: input.signerWsolTa ?? null,
|
35
|
+
},
|
36
|
+
systemProgram: {
|
37
|
+
index: 2,
|
33
38
|
isWritable: false,
|
34
39
|
value: input.systemProgram ?? null,
|
35
40
|
},
|
36
41
|
tokenProgram: {
|
37
|
-
index:
|
42
|
+
index: 3,
|
38
43
|
isWritable: false,
|
39
44
|
value: input.tokenProgram ?? null,
|
40
45
|
},
|
41
|
-
rent: { index:
|
46
|
+
rent: { index: 4, isWritable: false, value: input.rent ?? null },
|
42
47
|
referralState: {
|
43
|
-
index:
|
48
|
+
index: 5,
|
44
49
|
isWritable: false,
|
45
50
|
value: input.referralState ?? null,
|
46
51
|
},
|
47
52
|
referralFeesDestTa: {
|
48
|
-
index:
|
53
|
+
index: 6,
|
49
54
|
isWritable: true,
|
50
55
|
value: input.referralFeesDestTa ?? null,
|
51
56
|
},
|
52
57
|
referralFeesDestMint: {
|
53
|
-
index:
|
58
|
+
index: 7,
|
54
59
|
isWritable: false,
|
55
60
|
value: input.referralFeesDestMint ?? null,
|
56
61
|
},
|
62
|
+
referralAuthority: {
|
63
|
+
index: 8,
|
64
|
+
isWritable: true,
|
65
|
+
value: input.referralAuthority ?? null,
|
66
|
+
},
|
57
67
|
feesDestinationTa: {
|
58
|
-
index:
|
68
|
+
index: 9,
|
59
69
|
isWritable: true,
|
60
70
|
value: input.feesDestinationTa ?? null,
|
61
71
|
},
|
@@ -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) {
|
@@ -2,6 +2,7 @@ import { PublicKey } from "@solana/web3.js";
|
|
2
2
|
import { Umi } from "@metaplex-foundation/umi";
|
3
3
|
import { AutomationSettings, DCASettings, DCASettingsInpArgs, PositionState, SolautoSettingsParameters, SolautoSettingsParametersInpArgs } from "../../generated";
|
4
4
|
import { RebalanceAction, SolautoPositionDetails } from "../../types/solauto";
|
5
|
+
export declare function findMintByTicker(ticker: string): PublicKey;
|
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,EAA+B,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,kBAAkB,EAElB,aAAa,EAEb,yBAAyB,EACzB,gCAAgC,EAIjC,MAAM,iBAAiB,CAAC;AAezB,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;
|
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.findMintByTicker = findMintByTicker;
|
4
5
|
exports.nextAutomationPeriodTimestamp = nextAutomationPeriodTimestamp;
|
5
6
|
exports.eligibleForNextAutomationPeriod = eligibleForNextAutomationPeriod;
|
6
7
|
exports.getUpdatedValueFromAutomation = getUpdatedValueFromAutomation;
|
@@ -23,6 +24,15 @@ 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 findMintByTicker(ticker) {
|
28
|
+
for (const key in constants_1.TOKEN_INFO) {
|
29
|
+
const account = constants_1.TOKEN_INFO[key];
|
30
|
+
if (account.ticker.toString().toLowerCase() === ticker.toString().toLowerCase()) {
|
31
|
+
return new web3_js_1.PublicKey(key);
|
32
|
+
}
|
33
|
+
}
|
34
|
+
throw new Error(`Token mint not found by the ticker: ${ticker}`);
|
35
|
+
}
|
26
36
|
function newPeriodsPassed(automation, currentUnixTimestamp) {
|
27
37
|
return Math.min(automation.targetPeriods, automation.periodsPassed +
|
28
38
|
Math.floor((currentUnixTimestamp - Number(automation.unixStartDate)) /
|
@@ -155,7 +165,7 @@ async function getReferralsByUser(umi, user) {
|
|
155
165
|
// padding: [u8; 7],
|
156
166
|
// authority: Pubkey,
|
157
167
|
// referred_by_state: Pubkey,
|
158
|
-
const userReferralState =
|
168
|
+
const userReferralState = (0, accountUtils_1.getReferralState)(user);
|
159
169
|
const accounts = await umi.rpc.getProgramAccounts(generated_1.SOLAUTO_PROGRAM_ID, {
|
160
170
|
commitment: "finalized",
|
161
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,
|
@@ -64,6 +59,7 @@ import {
|
|
64
59
|
} from "../constants/solautoConstants";
|
65
60
|
import { currentUnixSeconds } from "../utils/generalUtils";
|
66
61
|
import { LivePositionUpdates } from "../utils/solauto/generalUtils";
|
62
|
+
import { ReferralStateManager } from "./referralStateManager";
|
67
63
|
|
68
64
|
export interface SolautoClientArgs {
|
69
65
|
authority?: PublicKey;
|
@@ -74,11 +70,11 @@ export interface SolautoClientArgs {
|
|
74
70
|
supplyMint?: PublicKey;
|
75
71
|
debtMint?: PublicKey;
|
76
72
|
|
77
|
-
referralFeesDestMint?: PublicKey;
|
78
73
|
referredByAuthority?: PublicKey;
|
79
74
|
}
|
80
75
|
|
81
76
|
export abstract class SolautoClient {
|
77
|
+
private heliusApiKey!: string;
|
82
78
|
public umi!: Umi;
|
83
79
|
public connection!: Connection;
|
84
80
|
public lendingPlatform!: LendingPlatform;
|
@@ -100,10 +96,7 @@ export abstract class SolautoClient {
|
|
100
96
|
public positionDebtTa!: PublicKey;
|
101
97
|
public signerDebtTa!: PublicKey;
|
102
98
|
|
103
|
-
public
|
104
|
-
public authorityReferralStateData!: ReferralState | null;
|
105
|
-
public authorityReferralFeesDestMint!: PublicKey;
|
106
|
-
public authorityReferralDestTa!: PublicKey;
|
99
|
+
public referralStateManager!: ReferralStateManager;
|
107
100
|
|
108
101
|
public referredByState?: PublicKey;
|
109
102
|
public referredByAuthority?: PublicKey;
|
@@ -121,7 +114,8 @@ export abstract class SolautoClient {
|
|
121
114
|
heliusApiKey: string,
|
122
115
|
public localTest?: boolean
|
123
116
|
) {
|
124
|
-
|
117
|
+
this.heliusApiKey = heliusApiKey;
|
118
|
+
const [connection, umi] = getSolanaRpcConnection(this.heliusApiKey);
|
125
119
|
this.connection = connection;
|
126
120
|
this.umi = umi.use({
|
127
121
|
install(umi) {
|
@@ -146,7 +140,7 @@ export abstract class SolautoClient {
|
|
146
140
|
this.positionId = args.positionId;
|
147
141
|
this.selfManaged = this.positionId === 0;
|
148
142
|
this.lendingPlatform = lendingPlatform;
|
149
|
-
this.solautoPosition =
|
143
|
+
this.solautoPosition = getSolautoPositionAccount(
|
150
144
|
this.authority,
|
151
145
|
this.positionId
|
152
146
|
);
|
@@ -177,35 +171,28 @@ export abstract class SolautoClient {
|
|
177
171
|
this.debtMint
|
178
172
|
);
|
179
173
|
|
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
|
-
);
|
174
|
+
this.referralStateManager = new ReferralStateManager(this.heliusApiKey)
|
175
|
+
await this.referralStateManager.initialize({
|
176
|
+
referralAuthority: this.authority,
|
177
|
+
signer: args.signer,
|
178
|
+
wallet: args.wallet
|
179
|
+
});
|
194
180
|
|
181
|
+
const authorityReferralStateData = this.referralStateManager.referralStateData;
|
195
182
|
const hasReferredBy =
|
196
|
-
|
197
|
-
|
198
|
-
|
183
|
+
authorityReferralStateData &&
|
184
|
+
authorityReferralStateData.referredByState !==
|
185
|
+
publicKey(PublicKey.default);
|
199
186
|
const referredByAuthority =
|
200
187
|
!hasReferredBy &&
|
201
|
-
|
202
|
-
|
188
|
+
args.referredByAuthority &&
|
189
|
+
!args.referredByAuthority.equals(toWeb3JsPublicKey(this.signer.publicKey))
|
203
190
|
? args.referredByAuthority
|
204
191
|
: undefined;
|
205
192
|
this.referredByState = hasReferredBy
|
206
|
-
? toWeb3JsPublicKey(
|
193
|
+
? toWeb3JsPublicKey(authorityReferralStateData!.referredByState)
|
207
194
|
: referredByAuthority
|
208
|
-
?
|
195
|
+
? getReferralState(referredByAuthority!)
|
209
196
|
: undefined;
|
210
197
|
this.referredByAuthority = referredByAuthority;
|
211
198
|
if (this.referredByState !== undefined) {
|
@@ -221,8 +208,8 @@ export abstract class SolautoClient {
|
|
221
208
|
this.supplyMint
|
222
209
|
);
|
223
210
|
|
224
|
-
this.authorityLutAddress =
|
225
|
-
? toWeb3JsPublicKey(
|
211
|
+
this.authorityLutAddress = authorityReferralStateData?.lookupTable
|
212
|
+
? toWeb3JsPublicKey(authorityReferralStateData?.lookupTable)
|
226
213
|
: undefined;
|
227
214
|
this.upToDateLutAccounts = toWeb3JsPublicKey(this.signer.publicKey).equals(
|
228
215
|
this.authority
|
@@ -286,7 +273,7 @@ export abstract class SolautoClient {
|
|
286
273
|
this.solautoPosition,
|
287
274
|
this.positionSupplyTa,
|
288
275
|
this.positionDebtTa,
|
289
|
-
this.
|
276
|
+
this.referralStateManager.referralState,
|
290
277
|
...(this.referredBySupplyTa ? [this.referredBySupplyTa] : []),
|
291
278
|
];
|
292
279
|
}
|
@@ -353,7 +340,7 @@ export abstract class SolautoClient {
|
|
353
340
|
const addingReferredBy =
|
354
341
|
accountsToAdd.length === 1 &&
|
355
342
|
accountsToAdd[0].toString().toLowerCase() ===
|
356
|
-
|
343
|
+
this.referredBySupplyTa?.toString().toLowerCase();
|
357
344
|
|
358
345
|
if (tx.getInstructions().length > 0) {
|
359
346
|
this.log("Updating authority lookup table...");
|
@@ -376,42 +363,6 @@ export abstract class SolautoClient {
|
|
376
363
|
);
|
377
364
|
}
|
378
365
|
|
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
|
-
referralState: publicKey(this.authorityReferralState),
|
409
|
-
referralFeesDestTa: publicKey(this.authorityReferralDestTa),
|
410
|
-
referralFeesDestMint: publicKey(this.authorityReferralFeesDestMint),
|
411
|
-
feesDestinationTa,
|
412
|
-
});
|
413
|
-
}
|
414
|
-
|
415
366
|
openPosition(
|
416
367
|
settingParams?: SolautoSettingsParametersInpArgs,
|
417
368
|
dca?: DCASettingsInpArgs
|
@@ -573,7 +524,7 @@ export abstract class SolautoClient {
|
|
573
524
|
BigInt(
|
574
525
|
Math.round(
|
575
526
|
Number(this.solautoPositionState!.debt.amountUsed.baseUnit) *
|
576
|
-
|
527
|
+
1.01
|
577
528
|
)
|
578
529
|
)
|
579
530
|
)
|
@@ -645,7 +596,7 @@ export abstract class SolautoClient {
|
|
645
596
|
if (
|
646
597
|
Boolean(this.solautoPositionState) &&
|
647
598
|
Number(this.solautoPositionState!.lastUpdated) >
|
648
|
-
|
599
|
+
currentUnixSeconds() - MIN_POSITION_STATE_FRESHNESS_SECS &&
|
649
600
|
!this.livePositionUpdates.hasUpdates()
|
650
601
|
) {
|
651
602
|
return this.solautoPositionState;
|
@@ -44,9 +44,7 @@ import {
|
|
44
44
|
lendingAccountStartFlashloan,
|
45
45
|
lendingAccountWithdraw,
|
46
46
|
marginfiAccountInitialize,
|
47
|
-
safeFetchAllBank,
|
48
47
|
safeFetchAllMarginfiAccount,
|
49
|
-
safeFetchBank,
|
50
48
|
safeFetchMarginfiAccount,
|
51
49
|
} from "../marginfi-sdk";
|
52
50
|
import { JupSwapDetails } from "../utils/jupiterUtils";
|
@@ -243,7 +241,7 @@ export class SolautoMarginfiClient extends SolautoClient {
|
|
243
241
|
solautoManager: publicKey(SOLAUTO_MANAGER),
|
244
242
|
solautoFeesWallet: publicKey(this.solautoFeesWallet),
|
245
243
|
solautoFeesSupplyTa: publicKey(this.solautoFeesSupplyTa),
|
246
|
-
signerReferralState: publicKey(this.
|
244
|
+
signerReferralState: publicKey(this.referralStateManager.referralState),
|
247
245
|
referredByState: this.referredByState
|
248
246
|
? publicKey(this.referredByState)
|
249
247
|
: undefined,
|
@@ -448,7 +446,7 @@ export class SolautoMarginfiClient extends SolautoClient {
|
|
448
446
|
ixsSysvar: publicKey(SYSVAR_INSTRUCTIONS_PUBKEY),
|
449
447
|
solautoFeesSupplyTa:
|
450
448
|
rebalanceStep === "B" ? publicKey(this.solautoFeesSupplyTa) : undefined,
|
451
|
-
authorityReferralState: publicKey(this.
|
449
|
+
authorityReferralState: publicKey(this.referralStateManager.referralState),
|
452
450
|
referredBySupplyTa: this.referredBySupplyTa
|
453
451
|
? publicKey(this.referredBySupplyTa)
|
454
452
|
: undefined,
|
@@ -30,12 +30,14 @@ import {
|
|
30
30
|
// Accounts.
|
31
31
|
export type ClaimReferralFeesInstructionAccounts = {
|
32
32
|
signer: Signer;
|
33
|
+
signerWsolTa?: PublicKey | Pda;
|
33
34
|
systemProgram?: PublicKey | Pda;
|
34
35
|
tokenProgram?: PublicKey | Pda;
|
35
36
|
rent?: PublicKey | Pda;
|
36
37
|
referralState: PublicKey | Pda;
|
37
38
|
referralFeesDestTa: PublicKey | Pda;
|
38
39
|
referralFeesDestMint: PublicKey | Pda;
|
40
|
+
referralAuthority?: PublicKey | Pda;
|
39
41
|
feesDestinationTa?: PublicKey | Pda;
|
40
42
|
};
|
41
43
|
|
@@ -81,34 +83,44 @@ export function claimReferralFees(
|
|
81
83
|
isWritable: false as boolean,
|
82
84
|
value: input.signer ?? null,
|
83
85
|
},
|
84
|
-
|
86
|
+
signerWsolTa: {
|
85
87
|
index: 1,
|
88
|
+
isWritable: true as boolean,
|
89
|
+
value: input.signerWsolTa ?? null,
|
90
|
+
},
|
91
|
+
systemProgram: {
|
92
|
+
index: 2,
|
86
93
|
isWritable: false as boolean,
|
87
94
|
value: input.systemProgram ?? null,
|
88
95
|
},
|
89
96
|
tokenProgram: {
|
90
|
-
index:
|
97
|
+
index: 3,
|
91
98
|
isWritable: false as boolean,
|
92
99
|
value: input.tokenProgram ?? null,
|
93
100
|
},
|
94
|
-
rent: { index:
|
101
|
+
rent: { index: 4, isWritable: false as boolean, value: input.rent ?? null },
|
95
102
|
referralState: {
|
96
|
-
index:
|
103
|
+
index: 5,
|
97
104
|
isWritable: false as boolean,
|
98
105
|
value: input.referralState ?? null,
|
99
106
|
},
|
100
107
|
referralFeesDestTa: {
|
101
|
-
index:
|
108
|
+
index: 6,
|
102
109
|
isWritable: true as boolean,
|
103
110
|
value: input.referralFeesDestTa ?? null,
|
104
111
|
},
|
105
112
|
referralFeesDestMint: {
|
106
|
-
index:
|
113
|
+
index: 7,
|
107
114
|
isWritable: false as boolean,
|
108
115
|
value: input.referralFeesDestMint ?? null,
|
109
116
|
},
|
117
|
+
referralAuthority: {
|
118
|
+
index: 8,
|
119
|
+
isWritable: true as boolean,
|
120
|
+
value: input.referralAuthority ?? null,
|
121
|
+
},
|
110
122
|
feesDestinationTa: {
|
111
|
-
index:
|
123
|
+
index: 9,
|
112
124
|
isWritable: true as boolean,
|
113
125
|
value: input.feesDestinationTa ?? null,
|
114
126
|
},
|
@@ -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
|
);
|
@@ -29,6 +29,18 @@ import {
|
|
29
29
|
import { getAllMarginfiAccountsByAuthority } from "../marginfiUtils";
|
30
30
|
import { RebalanceAction, SolautoPositionDetails } from "../../types/solauto";
|
31
31
|
|
32
|
+
export function findMintByTicker(ticker: string): PublicKey {
|
33
|
+
for (const key in TOKEN_INFO) {
|
34
|
+
const account = TOKEN_INFO[key];
|
35
|
+
if (
|
36
|
+
account.ticker.toString().toLowerCase() === ticker.toString().toLowerCase()
|
37
|
+
) {
|
38
|
+
return new PublicKey(key);
|
39
|
+
}
|
40
|
+
}
|
41
|
+
throw new Error(`Token mint not found by the ticker: ${ticker}`);
|
42
|
+
}
|
43
|
+
|
32
44
|
function newPeriodsPassed(
|
33
45
|
automation: AutomationSettings,
|
34
46
|
currentUnixTimestamp: number
|
@@ -238,7 +250,7 @@ export async function getReferralsByUser(
|
|
238
250
|
// authority: Pubkey,
|
239
251
|
// referred_by_state: Pubkey,
|
240
252
|
|
241
|
-
const userReferralState =
|
253
|
+
const userReferralState = getReferralState(user);
|
242
254
|
const accounts = await umi.rpc.getProgramAccounts(SOLAUTO_PROGRAM_ID, {
|
243
255
|
commitment: "finalized",
|
244
256
|
dataSlice: {
|