@haven-fi/solauto-sdk 1.0.747 → 1.0.749

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.
@@ -20,5 +20,7 @@ export declare const CHORES_TX_NAME = "account chores";
20
20
  export declare const JITO_TIP_ACCOUNTS: string[];
21
21
  export declare const SOLAUTO_LUT = "8b7KefQDroVLGao71J5H3hFwABeyMCgCrLpXWssNFhk9";
22
22
  export declare const STANDARD_LUT_ACCOUNTS: string[];
23
+ export declare const PATCH_LUT = "CmPZfu3tkeoMutytxhVKT7Hemuwd5jM65VdLNGdBddxQ";
24
+ export declare const AUTHORITIES_REQUIRING_PATCH_LUT: string[];
23
25
  export {};
24
26
  //# sourceMappingURL=solautoConstants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"solautoConstants.d.ts","sourceRoot":"","sources":["../../src/constants/solautoConstants.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,SAAS,EACV,MAAM,iBAAiB,CAAC;AAQzB,eAAO,MAAM,oBAAoB,WAEhC,CAAC;AACF,eAAO,MAAM,oBAAoB,WAEhC,CAAC;AAIF,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,0BAA0B,OAAO,CAAC;AAE/C,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AAEzC,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAExC,UAAU,UAAU;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;CACd;AACD,eAAO,MAAM,MAAM,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAA;CAAO,CAAC;AAExD,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAE/C,eAAO,MAAM,iBAAiB,UAS7B,CAAC;AAEF,eAAO,MAAM,WAAW,iDAAiD,CAAC;AAC1E,eAAO,MAAM,qBAAqB,UAYR,CAAC"}
1
+ {"version":3,"file":"solautoConstants.d.ts","sourceRoot":"","sources":["../../src/constants/solautoConstants.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,SAAS,EACV,MAAM,iBAAiB,CAAC;AAQzB,eAAO,MAAM,oBAAoB,WAEhC,CAAC;AACF,eAAO,MAAM,oBAAoB,WAEhC,CAAC;AAIF,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,0BAA0B,OAAO,CAAC;AAE/C,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AAEzC,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAExC,UAAU,UAAU;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;CACd;AACD,eAAO,MAAM,MAAM,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAA;CAAO,CAAC;AAExD,eAAO,MAAM,cAAc,mBAAmB,CAAC;AAE/C,eAAO,MAAM,iBAAiB,UAS7B,CAAC;AAEF,eAAO,MAAM,WAAW,iDAAiD,CAAC;AAC1E,eAAO,MAAM,qBAAqB,UAYR,CAAC;AAG3B,eAAO,MAAM,SAAS,iDAAiD,CAAC;AACxE,eAAO,MAAM,+BAA+B,UAS3C,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.STANDARD_LUT_ACCOUNTS = exports.SOLAUTO_LUT = exports.JITO_TIP_ACCOUNTS = exports.CHORES_TX_NAME = exports.PRICES = exports.REFERRER_PERCENTAGE = exports.OFFSET_FROM_MAX_LTV = exports.MIN_USD_SUPPORTED_POSITION = exports.MIN_BOOST_GAP_BPS = exports.MIN_REPAY_GAP_BPS = exports.SOLAUTO_TEST_PROGRAM = exports.SOLAUTO_PROD_PROGRAM = void 0;
3
+ exports.AUTHORITIES_REQUIRING_PATCH_LUT = exports.PATCH_LUT = exports.STANDARD_LUT_ACCOUNTS = exports.SOLAUTO_LUT = exports.JITO_TIP_ACCOUNTS = exports.CHORES_TX_NAME = exports.PRICES = exports.REFERRER_PERCENTAGE = exports.OFFSET_FROM_MAX_LTV = exports.MIN_USD_SUPPORTED_POSITION = exports.MIN_BOOST_GAP_BPS = exports.MIN_REPAY_GAP_BPS = exports.SOLAUTO_TEST_PROGRAM = exports.SOLAUTO_PROD_PROGRAM = void 0;
4
4
  const web3_js_1 = require("@solana/web3.js");
5
5
  const spl_token_1 = require("@solana/spl-token");
6
6
  const generalConstants_1 = require("./generalConstants");
@@ -39,3 +39,15 @@ exports.STANDARD_LUT_ACCOUNTS = [
39
39
  web3_js_1.SYSVAR_INSTRUCTIONS_PUBKEY,
40
40
  jupiter_sdk_1.JUPITER_PROGRAM_ID,
41
41
  ].map((x) => x.toString());
42
+ // TODO: remove me
43
+ exports.PATCH_LUT = "CmPZfu3tkeoMutytxhVKT7Hemuwd5jM65VdLNGdBddxQ";
44
+ exports.AUTHORITIES_REQUIRING_PATCH_LUT = [
45
+ "5UqsR2PGzbP8pGPbXEeXx86Gjz2N2UFBAuFZUSVydAEe",
46
+ "F2uk8zsKMex8MztU7saFNq6tNbj4esWnKLJXyfo2egax",
47
+ "8Vo5ScTZ1qNTYhMEibq2fekRe5DotmdqpcD2nprmRzJg",
48
+ "HLDgPtVv2Yyzzze462P89igFnyLxaCM3f9hVFmCuAX97",
49
+ "48CDX2mhhj9iAZthMWJKHFV9wvii9cxzDdtQKuAVwqEu",
50
+ "BRgwGasCSz1zA4yqdcvurAGV7ZroAJ9bvDNvdYj7az4X",
51
+ "9PCRbk8Gvt2zqewLKbxaSyTxA2JMtdQGhMff8EdELXNq",
52
+ "C4cnE5kDRRnqfiLuWShvoGNDstq6yk91N2PWTxQ6Hmk2",
53
+ ];
@@ -1 +1 @@
1
- {"version":3,"file":"solautoClient.d.ts","sourceRoot":"","sources":["../../../src/services/solauto/solautoClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"solautoClient.d.ts","sourceRoot":"","sources":["../../../src/services/solauto/solautoClient.ts"],"names":[],"mappings":"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"}
@@ -93,6 +93,9 @@ class SolautoClient extends referralStateManager_1.ReferralStateManager {
93
93
  ...(this.authorityLutAddress
94
94
  ? [this.authorityLutAddress.toString()]
95
95
  : []),
96
+ ...(constants_1.AUTHORITIES_REQUIRING_PATCH_LUT.includes(this.pos.authority.toString())
97
+ ? [constants_1.PATCH_LUT]
98
+ : []),
96
99
  ];
97
100
  }
98
101
  lutAccountsToAdd() {
@@ -1 +1 @@
1
- {"version":3,"file":"clientTransactionsManager.d.ts","sourceRoot":"","sources":["../../../../src/services/transactions/manager/clientTransactionsManager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAM5D,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAI3C,qBAAa,yBAA0B,SAAQ,mBAAmB,CAAC,aAAa,CAAC;YACjE,SAAS;YAmBT,mBAAmB;YA4BnB,WAAW;IA4CZ,IAAI,CAAC,YAAY,EAAE,eAAe,EAAE;CAiClD"}
1
+ {"version":3,"file":"clientTransactionsManager.d.ts","sourceRoot":"","sources":["../../../../src/services/transactions/manager/clientTransactionsManager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAM5D,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAI3C,qBAAa,yBAA0B,SAAQ,mBAAmB,CAAC,aAAa,CAAC;YACjE,SAAS;YAmBT,mBAAmB;YA4BnB,WAAW;IA4CZ,IAAI,CAAC,YAAY,EAAE,eAAe,EAAE;CAkClD"}
@@ -53,7 +53,8 @@ class ClientTransactionsManager extends transactionsManager_1.TransactionsManage
53
53
  const items = [...transactions];
54
54
  const client = this.txHandler;
55
55
  const updateLut = await client.updateLookupTable();
56
- if (updateLut && (updateLut?.new || updateLut.accountsToAdd.length > 4)) {
56
+ const updateLutInSepTx = updateLut?.new || (updateLut?.accountsToAdd ?? []).length > 4;
57
+ if (updateLut && updateLutInSepTx) {
57
58
  await this.updateLut(updateLut.tx, updateLut.new);
58
59
  }
59
60
  this.lookupTables.defaultLuts = client.defaultLookupTables();
@@ -61,7 +62,7 @@ class ClientTransactionsManager extends transactionsManager_1.TransactionsManage
61
62
  for (const item of items) {
62
63
  await item.initialize();
63
64
  }
64
- await this.addChoreTxs(items, updateLut && !updateLut?.new ? updateLut.tx : undefined);
65
+ await this.addChoreTxs(items, updateLut && !updateLutInSepTx ? updateLut.tx : undefined);
65
66
  const result = await super.send(items).catch((e) => {
66
67
  client.resetLiveTxUpdates(false);
67
68
  throw e;
@@ -0,0 +1,93 @@
1
+ import {
2
+ fromWeb3JsPublicKey,
3
+ toWeb3JsPublicKey,
4
+ } from "@metaplex-foundation/umi-web3js-adapters";
5
+ import {
6
+ fetchAllReferralState,
7
+ getPositionExBulk,
8
+ getReferralState,
9
+ getSolanaRpcConnection,
10
+ getSolautoManagedPositions,
11
+ getTokenAccount,
12
+ LOCAL_IRONFORGE_API_URL,
13
+ PATCH_LUT,
14
+ SOLAUTO_PROD_PROGRAM,
15
+ } from "../src";
16
+ import { PublicKey } from "@solana/web3.js";
17
+ import { updateLookupTable } from "./shared";
18
+
19
+ let [conn, umi] = getSolanaRpcConnection(
20
+ LOCAL_IRONFORGE_API_URL,
21
+ SOLAUTO_PROD_PROGRAM
22
+ );
23
+
24
+ async function getMissingAccounts() {
25
+ const allMissingAccounts: string[] = [];
26
+ const allPositions = await getSolautoManagedPositions(umi);
27
+ const positions = await getPositionExBulk(
28
+ umi,
29
+ allPositions.map((x) => x.publicKey!)
30
+ );
31
+
32
+ const referralStates = positions.map((x) =>
33
+ getReferralState(
34
+ x.authority,
35
+ toWeb3JsPublicKey(umi.programs.get("solauto").publicKey)
36
+ )
37
+ );
38
+ const referralStatesData = await fetchAllReferralState(
39
+ umi,
40
+ referralStates.map((x) => fromWeb3JsPublicKey(x))
41
+ );
42
+
43
+ const users = Array.from(
44
+ new Set(positions.map((x) => x.authority.toString()))
45
+ );
46
+ for (const user of users) {
47
+ const authority = new PublicKey(user);
48
+ const referralState = referralStatesData.find((x) =>
49
+ toWeb3JsPublicKey(x.authority).equals(authority)
50
+ )!;
51
+ const lookupTable = referralState.lookupTable;
52
+
53
+ const existingUserLUTAccounts =
54
+ (
55
+ await conn.getAddressLookupTable(toWeb3JsPublicKey(lookupTable), {
56
+ commitment: "confirmed",
57
+ })
58
+ ).value?.state?.addresses ?? [];
59
+
60
+ const userPositions = positions.filter((x) =>
61
+ x.authority.equals(authority)
62
+ );
63
+
64
+ let requiredAccounts = userPositions.flatMap((x) => {
65
+ return [
66
+ getTokenAccount(authority, x.supplyMint),
67
+ getTokenAccount(authority, x.debtMint),
68
+ x.publicKey,
69
+ x.lpUserAccount!,
70
+ getTokenAccount(x.publicKey, x.supplyMint),
71
+ getTokenAccount(x.publicKey, x.debtMint),
72
+ ].map((x) => x.toString());
73
+ });
74
+ requiredAccounts = Array.from(new Set(requiredAccounts));
75
+
76
+ const missingAccounts = requiredAccounts.filter(
77
+ (x) =>
78
+ existingUserLUTAccounts.find((y) => y.toString() === x) === undefined
79
+ );
80
+
81
+ if (missingAccounts.length) {
82
+ console.log("\nMissing accounts for", referralState.publicKey.toString());
83
+ console.log(missingAccounts);
84
+ allMissingAccounts.push(...missingAccounts);
85
+ }
86
+ }
87
+
88
+ return allMissingAccounts;
89
+ }
90
+
91
+ getMissingAccounts().then(async (accs) => {
92
+ await updateLookupTable(accs, new PublicKey(PATCH_LUT));
93
+ });
package/local/shared.ts CHANGED
@@ -110,6 +110,7 @@ export async function updateLookupTable(
110
110
  lookupTableAddress = addr;
111
111
  console.log("Lookup Table Address:", lookupTableAddress.toString());
112
112
  await createAndSendV0Tx([createLutIx], keypair);
113
+ CACHE[lookupTableAddress.toString()] = [];
113
114
  }
114
115
 
115
116
  const existingAccounts = CACHE[lookupTableAddress.toString()];
@@ -1,14 +1,12 @@
1
1
  import { Keypair, PublicKey } from "@solana/web3.js";
2
2
  import { createSignerFromKeypair } from "@metaplex-foundation/umi";
3
- import { fromWeb3JsKeypair, fromWeb3JsPublicKey } from "@metaplex-foundation/umi-web3js-adapters";
3
+ import { fromWeb3JsKeypair } from "@metaplex-foundation/umi-web3js-adapters";
4
4
  import {
5
5
  ClientTransactionsManager,
6
6
  consoleLog,
7
- fetchReferralState,
8
7
  getBatches,
9
8
  getClient,
10
9
  getPositionExBulk,
11
- getReferralState,
12
10
  getSolanaRpcConnection,
13
11
  getSolautoManagedPositions,
14
12
  LendingPlatform,
@@ -28,7 +26,7 @@ const payForTransaction = false;
28
26
  const testProgram = false;
29
27
  const lpEnv: ProgramEnv = "Prod";
30
28
 
31
- let [conn, umi] = getSolanaRpcConnection(
29
+ let [, umi] = getSolanaRpcConnection(
32
30
  LOCAL_IRONFORGE_API_URL,
33
31
  testProgram ? SOLAUTO_TEST_PROGRAM : SOLAUTO_PROD_PROGRAM,
34
32
  lpEnv
@@ -40,39 +38,32 @@ const signer = createSignerFromKeypair(
40
38
  );
41
39
 
42
40
  export async function main() {
43
- // const client = getClient(LendingPlatform.Marginfi, {
44
- // signer,
45
- // showLogs: true,
46
- // rpcUrl: LOCAL_IRONFORGE_API_URL,
47
- // programId: testProgram ? SOLAUTO_TEST_PROGRAM : SOLAUTO_PROD_PROGRAM,
48
- // lpEnv,
49
- // });
50
-
51
- // await client.initializeExistingSolautoPosition({
52
- // positionId: 1,
53
- // authority: new PublicKey("Bk6mdg4mg9BD217vZwk8WDv7YJ66VyPPRhhQpaZsQPfL"),
54
- // // lpUserAccount: new PublicKey(
55
- // // "GEokw9jqbh6d1xUNA3qaeYFFetbSR5Y1nt7C3chwwgSz"
56
- // // ),
57
- // });
58
-
59
- // const transactionItems = [rebalance(client)];
60
-
61
- // const txManager = new ClientTransactionsManager({
62
- // txHandler: client,
63
- // txRunType: payForTransaction ? "normal" : "only-simulate",
64
- // priorityFeeSetting: PriorityFeeSetting.Default,
65
- // retryConfig: { totalRetries: 4 },
66
- // });
67
- // const statuses = await txManager.send(transactionItems);
68
- // consoleLog(statuses);
69
-
70
- const ref = getReferralState(new PublicKey("9PCRbk8Gvt2zqewLKbxaSyTxA2JMtdQGhMff8EdELXNq"), SOLAUTO_PROD_PROGRAM);
71
-
72
- const data = await fetchReferralState(umi, fromWeb3JsPublicKey(ref));
73
-
74
- const accounts = await conn.getAddressLookupTable(new PublicKey(data.lookupTable));
75
- console.log(accounts.value?.state?.addresses);
41
+ const client = getClient(LendingPlatform.Marginfi, {
42
+ signer,
43
+ showLogs: true,
44
+ rpcUrl: LOCAL_IRONFORGE_API_URL,
45
+ programId: testProgram ? SOLAUTO_TEST_PROGRAM : SOLAUTO_PROD_PROGRAM,
46
+ lpEnv,
47
+ });
48
+
49
+ await client.initializeExistingSolautoPosition({
50
+ positionId: 2,
51
+ authority: new PublicKey("EBhRj7jbF2EVE21i19JSuCX1BAbnZFYhoKW64HnaZ3kf"),
52
+ // lpUserAccount: new PublicKey(
53
+ // "GEokw9jqbh6d1xUNA3qaeYFFetbSR5Y1nt7C3chwwgSz"
54
+ // ),
55
+ });
56
+
57
+ const transactionItems = [rebalance(client)];
58
+
59
+ const txManager = new ClientTransactionsManager({
60
+ txHandler: client,
61
+ txRunType: payForTransaction ? "normal" : "only-simulate",
62
+ priorityFeeSetting: PriorityFeeSetting.Default,
63
+ retryConfig: { totalRetries: 2 },
64
+ });
65
+ const statuses = await txManager.send(transactionItems);
66
+ consoleLog(statuses);
76
67
  }
77
68
 
78
69
  async function refreshAll() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haven-fi/solauto-sdk",
3
- "version": "1.0.747",
3
+ "version": "1.0.749",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "description": "Typescript SDK for the Solauto program on the Solana blockchain",
@@ -65,3 +65,16 @@ export const STANDARD_LUT_ACCOUNTS = [
65
65
  SYSVAR_INSTRUCTIONS_PUBKEY,
66
66
  JUPITER_PROGRAM_ID,
67
67
  ].map((x) => x.toString());
68
+
69
+ // TODO: remove me
70
+ export const PATCH_LUT = "CmPZfu3tkeoMutytxhVKT7Hemuwd5jM65VdLNGdBddxQ";
71
+ export const AUTHORITIES_REQUIRING_PATCH_LUT = [
72
+ "5UqsR2PGzbP8pGPbXEeXx86Gjz2N2UFBAuFZUSVydAEe",
73
+ "F2uk8zsKMex8MztU7saFNq6tNbj4esWnKLJXyfo2egax",
74
+ "8Vo5ScTZ1qNTYhMEibq2fekRe5DotmdqpcD2nprmRzJg",
75
+ "HLDgPtVv2Yyzzze462P89igFnyLxaCM3f9hVFmCuAX97",
76
+ "48CDX2mhhj9iAZthMWJKHFV9wvii9cxzDdtQKuAVwqEu",
77
+ "BRgwGasCSz1zA4yqdcvurAGV7ZroAJ9bvDNvdYj7az4X",
78
+ "9PCRbk8Gvt2zqewLKbxaSyTxA2JMtdQGhMff8EdELXNq",
79
+ "C4cnE5kDRRnqfiLuWShvoGNDstq6yk91N2PWTxQ6Hmk2",
80
+ ];
@@ -29,7 +29,12 @@ import {
29
29
  splTokenTransferUmiIx,
30
30
  ContextUpdates,
31
31
  } from "../../utils";
32
- import { SOLAUTO_FEES_WALLET, SOLAUTO_LUT } from "../../constants";
32
+ import {
33
+ AUTHORITIES_REQUIRING_PATCH_LUT,
34
+ PATCH_LUT,
35
+ SOLAUTO_FEES_WALLET,
36
+ SOLAUTO_LUT,
37
+ } from "../../constants";
33
38
  import { ProgramEnv, RebalanceDetails } from "../../types";
34
39
  import {
35
40
  ReferralStateManager,
@@ -221,6 +226,11 @@ export abstract class SolautoClient extends ReferralStateManager {
221
226
  ...(this.authorityLutAddress
222
227
  ? [this.authorityLutAddress.toString()]
223
228
  : []),
229
+ ...(AUTHORITIES_REQUIRING_PATCH_LUT.includes(
230
+ this.pos.authority.toString()
231
+ )
232
+ ? [PATCH_LUT]
233
+ : []),
224
234
  ];
225
235
  }
226
236
 
@@ -111,7 +111,8 @@ export class ClientTransactionsManager extends TransactionsManager<SolautoClient
111
111
 
112
112
  const updateLut = await client.updateLookupTable();
113
113
 
114
- if (updateLut && (updateLut?.new || updateLut.accountsToAdd.length > 4)) {
114
+ const updateLutInSepTx = updateLut?.new || (updateLut?.accountsToAdd ?? []).length > 4;
115
+ if (updateLut && updateLutInSepTx) {
115
116
  await this.updateLut(updateLut.tx, updateLut.new);
116
117
  }
117
118
  this.lookupTables.defaultLuts = client.defaultLookupTables();
@@ -124,7 +125,7 @@ export class ClientTransactionsManager extends TransactionsManager<SolautoClient
124
125
 
125
126
  await this.addChoreTxs(
126
127
  items,
127
- updateLut && !updateLut?.new ? updateLut.tx : undefined
128
+ updateLut && !updateLutInSepTx ? updateLut.tx : undefined
128
129
  );
129
130
 
130
131
  const result = await super.send(items).catch((e) => {
@@ -19,7 +19,7 @@ import {
19
19
  getSolautoPositionAccountDataSerializer,
20
20
  getSolautoPositionSize,
21
21
  } from "../generated";
22
- import { ALL_SUPPORTED_TOKENS, SOLAUTO_PROD_PROGRAM } from "../constants";
22
+ import { SOLAUTO_PROD_PROGRAM } from "../constants";
23
23
  import { SolautoPositionDetails } from "../types";
24
24
  import {
25
25
  SolautoClient,