@haven-fi/solauto-sdk 1.0.325 → 1.0.326

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.
@@ -1 +1 @@
1
- {"version":3,"file":"jitoUtils.d.ts","sourceRoot":"","sources":["../../src/utils/jitoUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAwB,MAAM,iBAAiB,CAAC;AAGlE,OAAO,EACL,MAAM,EACN,kBAAkB,EAClB,GAAG,EAEJ,MAAM,0BAA0B,CAAC;AAQlC,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAK9C,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,SAAS,CAAC,CAa9D;AA8GD,wBAAsB,2BAA2B,CAC/C,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,kBAAkB,EAAE,EACzB,YAAY,CAAC,EAAE,OAAO,EACtB,kBAAkB,GAAE,kBAA2C,GAC9D,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CA8C/B"}
1
+ {"version":3,"file":"jitoUtils.d.ts","sourceRoot":"","sources":["../../src/utils/jitoUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAwB,MAAM,iBAAiB,CAAC;AAGlE,OAAO,EACL,MAAM,EACN,kBAAkB,EAClB,GAAG,EAEJ,MAAM,0BAA0B,CAAC;AAQlC,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAK9C,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,SAAS,CAAC,CAa9D;AAuHD,wBAAsB,2BAA2B,CAC/C,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,kBAAkB,EAAE,EACzB,YAAY,CAAC,EAAE,OAAO,EACtB,kBAAkB,GAAE,kBAA2C,GAC9D,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CA8C/B"}
@@ -85,12 +85,22 @@ async function pollBundleStatus(bundleId, interval = 1000, timeout = 40000) {
85
85
  return [];
86
86
  }
87
87
  async function sendJitoBundle(transactions) {
88
- const resp = await axios_1.default.post(`${solautoConstants_1.JITO_BLOCK_ENGINE}/api/v1/bundles`, {
89
- jsonrpc: "2.0",
90
- id: 1,
91
- method: "sendBundle",
92
- params: [transactions],
93
- });
88
+ let resp;
89
+ try {
90
+ resp = await axios_1.default.post(`${solautoConstants_1.JITO_BLOCK_ENGINE}/api/v1/bundles`, {
91
+ jsonrpc: "2.0",
92
+ id: 1,
93
+ method: "sendBundle",
94
+ params: [transactions],
95
+ });
96
+ }
97
+ catch (e) {
98
+ if (e.response) {
99
+ console.error("Jito send bundle error:", e.response.data);
100
+ console.error("Jito send bundle error:", e.response.data.error);
101
+ throw e;
102
+ }
103
+ }
94
104
  const bundleId = resp.data.result;
95
105
  (0, generalUtils_1.consoleLog)("Bundle ID:", bundleId);
96
106
  return bundleId ? await pollBundleStatus(bundleId) : [];
@@ -1,5 +1,9 @@
1
1
  import { PublicKey } from "@solana/web3.js";
2
- import { ALL_SUPPORTED_TOKENS, SOLAUTO_FEES_WALLET } from "../src/constants";
2
+ import {
3
+ ALL_SUPPORTED_TOKENS,
4
+ SOLAUTO_FEES_WALLET,
5
+ SOLAUTO_MANAGER,
6
+ } from "../src/constants";
3
7
  import {
4
8
  buildHeliusApiUrl,
5
9
  createAssociatedTokenAccountUmiIx,
@@ -16,12 +20,12 @@ import {
16
20
  transactionBuilder,
17
21
  } from "@metaplex-foundation/umi";
18
22
 
19
- async function create() {
23
+ async function createTokenAccounts(wallet: PublicKey) {
20
24
  let [connection, umi] = getSolanaRpcConnection(
21
25
  buildHeliusApiUrl(process.env.HELIUS_API_KEY!)
22
26
  );
23
27
 
24
- const secretKey = getSecretKey("solauto-auth");
28
+ const secretKey = getSecretKey();
25
29
  const signerKeypair = umi.eddsa.createKeypairFromSecretKey(secretKey);
26
30
  const signer = createSignerFromKeypair(umi, signerKeypair);
27
31
 
@@ -29,7 +33,7 @@ async function create() {
29
33
 
30
34
  const tokenAccounts = await umi.rpc.getAccounts(
31
35
  ALL_SUPPORTED_TOKENS.map((x) =>
32
- publicKey(getTokenAccount(SOLAUTO_FEES_WALLET, new PublicKey(x)))
36
+ publicKey(getTokenAccount(wallet, new PublicKey(x)))
33
37
  )
34
38
  );
35
39
 
@@ -37,7 +41,7 @@ async function create() {
37
41
  if (!accounts[0].exists) {
38
42
  const tx = createAssociatedTokenAccountUmiIx(
39
43
  signer,
40
- SOLAUTO_FEES_WALLET,
44
+ wallet,
41
45
  new PublicKey(accounts[1])
42
46
  );
43
47
  await sendSingleOptimizedTransaction(
@@ -49,4 +53,4 @@ async function create() {
49
53
  }
50
54
  }
51
55
 
52
- create();
56
+ createTokenAccounts(SOLAUTO_FEES_WALLET);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haven-fi/solauto-sdk",
3
- "version": "1.0.325",
3
+ "version": "1.0.326",
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",
@@ -14,7 +14,7 @@
14
14
  "update-lut:solauto": "npx ts-node local/updateSolautoLUT.ts",
15
15
  "update-lut:marginfi": "npx ts-node local/updateMarginfiLUT.ts",
16
16
  "create-ism-accounts": "npx ts-node local/createISMAccounts.ts",
17
- "create-fee-accounts": "npx ts-node local/createFeeAccounts.ts"
17
+ "create-token-accounts": "npx ts-node local/createTokenAccounts.ts"
18
18
  },
19
19
  "dependencies": {
20
20
  "@coral-xyz/anchor": "^0.30.1",
@@ -127,15 +127,24 @@ async function pollBundleStatus(
127
127
  }
128
128
 
129
129
  async function sendJitoBundle(transactions: string[]): Promise<string[]> {
130
- const resp = await axios.post<{ result: string }>(
131
- `${JITO_BLOCK_ENGINE}/api/v1/bundles`,
132
- {
133
- jsonrpc: "2.0",
134
- id: 1,
135
- method: "sendBundle",
136
- params: [transactions],
130
+ let resp: any;
131
+ try {
132
+ resp = await axios.post<{ result: string }>(
133
+ `${JITO_BLOCK_ENGINE}/api/v1/bundles`,
134
+ {
135
+ jsonrpc: "2.0",
136
+ id: 1,
137
+ method: "sendBundle",
138
+ params: [transactions],
139
+ }
140
+ );
141
+ } catch (e: any) {
142
+ if (e.response) {
143
+ console.error("Jito send bundle error:", e.response.data);
144
+ console.error("Jito send bundle error:", e.response.data.error);
145
+ throw e;
137
146
  }
138
- );
147
+ }
139
148
 
140
149
  const bundleId = resp.data.result;
141
150
  consoleLog("Bundle ID:", bundleId);
@@ -9,42 +9,69 @@ import {
9
9
  } from "../../src/utils/solanaUtils";
10
10
  import { publicKey } from "@metaplex-foundation/umi";
11
11
  import { assert } from "chai";
12
- import { getAllMarginfiAccountsByAuthority, getTokenAccount } from "../../src/utils";
13
- import { SOLAUTO_FEES_WALLET, SOLAUTO_MANAGER } from "../../src/constants";
12
+ import {
13
+ getAllMarginfiAccountsByAuthority,
14
+ getTokenAccount,
15
+ } from "../../src/utils";
16
+ import {
17
+ MARGINFI_ACCOUNTS,
18
+ SOLAUTO_FEES_WALLET,
19
+ SOLAUTO_MANAGER,
20
+ } from "../../src/constants";
14
21
  import { PublicKey } from "@solana/web3.js";
15
22
  import { safeFetchAllMarginfiAccount } from "../../src/marginfi-sdk";
23
+ import { toWeb3JsPublicKey } from "@metaplex-foundation/umi-web3js-adapters";
16
24
 
17
- describe("Assert Solauto fee token accounts are created", async () => {
18
- it("all Solauto fee token accounts created", async () => {
19
- let [_, umi] = getSolanaRpcConnection(
20
- buildHeliusApiUrl(process.env.HELIUS_API_KEY!)
21
- );
25
+ async function hasTokenAccounts(wallet: PublicKey) {
26
+ let [_, umi] = getSolanaRpcConnection(
27
+ buildHeliusApiUrl(process.env.HELIUS_API_KEY!)
28
+ );
22
29
 
23
- const tokenAccounts = await umi.rpc.getAccounts(
24
- ALL_SUPPORTED_TOKENS.map((x) =>
25
- publicKey(getTokenAccount(SOLAUTO_FEES_WALLET, new PublicKey(x)))
26
- )
27
- );
28
- for (let i = 0; i < tokenAccounts.length; i++) {
29
- console.log(tokenAccounts[i].publicKey.toString());
30
- if (!tokenAccounts[i].exists) {
31
- console.log(
32
- "Missing Solauto fees TA for ",
33
- TOKEN_INFO[ALL_SUPPORTED_TOKENS[i].toString()].ticker
34
- );
35
- }
30
+ const tokenAccounts = await umi.rpc.getAccounts(
31
+ ALL_SUPPORTED_TOKENS.map((x) =>
32
+ publicKey(getTokenAccount(wallet, new PublicKey(x)))
33
+ )
34
+ );
35
+ for (let i = 0; i < tokenAccounts.length; i++) {
36
+ console.log(tokenAccounts[i].publicKey.toString());
37
+ if (!tokenAccounts[i].exists) {
38
+ console.log(
39
+ `Missing ${wallet.toString()} TA for `,
40
+ TOKEN_INFO[ALL_SUPPORTED_TOKENS[i].toString()].ticker
41
+ );
36
42
  }
37
- assert(tokenAccounts.filter((x) => !x.exists).length === 0);
43
+ }
44
+ assert(tokenAccounts.filter((x) => !x.exists).length === 0);
45
+ }
46
+
47
+ describe("Assert Solauto fee token accounts are created", async () => {
48
+ it("all Solauto fee token accounts created", async () => {
49
+ await hasTokenAccounts(SOLAUTO_FEES_WALLET);
38
50
  });
39
51
 
40
52
  it("ISM accounts for every supported Marginfi group", async () => {
41
- let [conn, umi] = getSolanaRpcConnection(
53
+ let [_, umi] = getSolanaRpcConnection(
42
54
  buildHeliusApiUrl(process.env.HELIUS_API_KEY!)
43
55
  );
44
56
 
45
- const ism = await getAllMarginfiAccountsByAuthority(umi, SOLAUTO_MANAGER, undefined, false);
46
-
47
- const ismData = safeFetchAllMarginfiAccount(umi, ism.map(x => publicKey(x.marginfiAccount)));
57
+ const ismAccounts = await getAllMarginfiAccountsByAuthority(
58
+ umi,
59
+ SOLAUTO_MANAGER,
60
+ undefined,
61
+ false
62
+ );
63
+ const ismData = await safeFetchAllMarginfiAccount(
64
+ umi,
65
+ ismAccounts.map((x) => publicKey(x.marginfiAccount))
66
+ );
67
+ const supportedMarginfiGroups = Object.keys(MARGINFI_ACCOUNTS).map(
68
+ (x) => new PublicKey(x)
69
+ );
70
+ const missingIsmAccounts = supportedMarginfiGroups.filter(
71
+ (group) => !ismData.find((x) => group.equals(toWeb3JsPublicKey(x.group)))
72
+ );
48
73
 
74
+ console.log("Missing ISM accounts", missingIsmAccounts);
75
+ assert(missingIsmAccounts.length === 0);
49
76
  });
50
77
  });