@haven-fi/solauto-sdk 1.0.582 → 1.0.583

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.
Files changed (260) hide show
  1. package/dist/constants/solautoConstants.d.ts +1 -0
  2. package/dist/constants/solautoConstants.d.ts.map +1 -1
  3. package/dist/constants/solautoConstants.js +4 -10
  4. package/dist/generated/accounts/solautoPosition.js +2 -2
  5. package/dist/generated/errors/solauto.d.ts +14 -2
  6. package/dist/generated/errors/solauto.d.ts.map +1 -1
  7. package/dist/generated/errors/solauto.js +27 -5
  8. package/dist/generated/instructions/claimReferralFees.d.ts +1 -1
  9. package/dist/generated/instructions/claimReferralFees.d.ts.map +1 -1
  10. package/dist/generated/instructions/closePosition.d.ts +1 -1
  11. package/dist/generated/instructions/closePosition.d.ts.map +1 -1
  12. package/dist/generated/instructions/closePosition.js +2 -2
  13. package/dist/generated/instructions/marginfiOpenPosition.d.ts +1 -3
  14. package/dist/generated/instructions/marginfiOpenPosition.d.ts.map +1 -1
  15. package/dist/generated/instructions/marginfiOpenPosition.js +0 -1
  16. package/dist/generated/instructions/marginfiRebalance.d.ts +7 -3
  17. package/dist/generated/instructions/marginfiRebalance.d.ts.map +1 -1
  18. package/dist/generated/instructions/marginfiRebalance.js +3 -1
  19. package/dist/generated/types/index.d.ts +7 -1
  20. package/dist/generated/types/index.d.ts.map +1 -1
  21. package/dist/generated/types/index.js +7 -1
  22. package/dist/generated/types/positionData.d.ts +2 -2
  23. package/dist/generated/types/positionData.d.ts.map +1 -1
  24. package/dist/generated/types/positionData.js +1 -1
  25. package/dist/generated/types/positionState.d.ts +7 -7
  26. package/dist/generated/types/positionState.d.ts.map +1 -1
  27. package/dist/generated/types/positionState.js +3 -3
  28. package/dist/generated/types/{positionTokenUsage.d.ts → positionTokenState.d.ts} +6 -8
  29. package/dist/generated/types/positionTokenState.d.ts.map +1 -0
  30. package/dist/generated/types/{positionTokenUsage.js → positionTokenState.js} +6 -7
  31. package/dist/generated/types/rebalanceData.d.ts +7 -13
  32. package/dist/generated/types/rebalanceData.d.ts.map +1 -1
  33. package/dist/generated/types/rebalanceData.js +3 -6
  34. package/dist/generated/types/rebalanceDirection.d.ts +3 -2
  35. package/dist/generated/types/rebalanceDirection.d.ts.map +1 -1
  36. package/dist/generated/types/rebalanceDirection.js +3 -2
  37. package/dist/generated/types/rebalanceInstructionData.d.ts +27 -0
  38. package/dist/generated/types/rebalanceInstructionData.d.ts.map +1 -0
  39. package/dist/generated/types/rebalanceInstructionData.js +22 -0
  40. package/dist/generated/types/rebalanceStateValues.d.ts +27 -0
  41. package/dist/generated/types/rebalanceStateValues.d.ts.map +1 -0
  42. package/dist/generated/types/rebalanceStateValues.js +22 -0
  43. package/dist/generated/types/rebalanceStep.d.ts +15 -0
  44. package/dist/generated/types/rebalanceStep.d.ts.map +1 -0
  45. package/dist/generated/types/rebalanceStep.js +22 -0
  46. package/dist/generated/types/solautoRebalanceType.d.ts +4 -5
  47. package/dist/generated/types/solautoRebalanceType.d.ts.map +1 -1
  48. package/dist/generated/types/solautoRebalanceType.js +4 -5
  49. package/dist/generated/types/solautoSettingsParameters.d.ts +2 -15
  50. package/dist/generated/types/solautoSettingsParameters.d.ts.map +1 -1
  51. package/dist/generated/types/solautoSettingsParameters.js +1 -5
  52. package/dist/generated/types/solautoSettingsParametersInp.d.ts +1 -12
  53. package/dist/generated/types/solautoSettingsParametersInp.d.ts.map +1 -1
  54. package/dist/generated/types/solautoSettingsParametersInp.js +0 -3
  55. package/dist/generated/types/swapType.d.ts +15 -0
  56. package/dist/generated/types/swapType.d.ts.map +1 -0
  57. package/dist/generated/types/swapType.js +22 -0
  58. package/dist/generated/types/tokenBalanceChange.d.ts +21 -0
  59. package/dist/generated/types/tokenBalanceChange.d.ts.map +1 -0
  60. package/dist/generated/types/tokenBalanceChange.js +19 -0
  61. package/dist/generated/types/tokenBalanceChangeType.d.ts +18 -0
  62. package/dist/generated/types/tokenBalanceChangeType.d.ts.map +1 -0
  63. package/dist/generated/types/tokenBalanceChangeType.js +25 -0
  64. package/dist/generated/types/updatePositionData.d.ts +2 -2
  65. package/dist/generated/types/updatePositionData.d.ts.map +1 -1
  66. package/dist/generated/types/updatePositionData.js +1 -1
  67. package/dist/index.d.ts +8 -6
  68. package/dist/index.d.ts.map +1 -1
  69. package/dist/index.js +5 -5
  70. package/dist/marginfi-sdk/types/interestRateConfig.d.ts +3 -1
  71. package/dist/marginfi-sdk/types/interestRateConfig.d.ts.map +1 -1
  72. package/dist/marginfi-sdk/types/interestRateConfig.js +2 -1
  73. package/dist/services/flashLoans/flProviderAggregator.d.ts +19 -0
  74. package/dist/services/flashLoans/flProviderAggregator.d.ts.map +1 -0
  75. package/dist/services/flashLoans/flProviderAggregator.js +46 -0
  76. package/dist/services/flashLoans/flProviderBase.d.ts +23 -0
  77. package/dist/services/flashLoans/flProviderBase.d.ts.map +1 -0
  78. package/dist/services/flashLoans/flProviderBase.js +37 -0
  79. package/dist/services/flashLoans/index.d.ts +4 -0
  80. package/dist/services/flashLoans/index.d.ts.map +1 -0
  81. package/dist/services/flashLoans/index.js +19 -0
  82. package/dist/services/flashLoans/marginfiFlProvider.d.ts +25 -0
  83. package/dist/services/flashLoans/marginfiFlProvider.d.ts.map +1 -0
  84. package/dist/services/flashLoans/marginfiFlProvider.js +246 -0
  85. package/dist/services/index.d.ts +6 -0
  86. package/dist/services/index.d.ts.map +1 -0
  87. package/dist/services/index.js +21 -0
  88. package/dist/services/rebalance/index.d.ts +3 -0
  89. package/dist/services/rebalance/index.d.ts.map +1 -0
  90. package/dist/services/rebalance/index.js +18 -0
  91. package/dist/services/rebalance/rebalanceSwapManager.d.ts +30 -0
  92. package/dist/services/rebalance/rebalanceSwapManager.d.ts.map +1 -0
  93. package/dist/services/rebalance/rebalanceSwapManager.js +144 -0
  94. package/dist/services/rebalance/rebalanceTxBuilder.d.ts +22 -0
  95. package/dist/services/rebalance/rebalanceTxBuilder.d.ts.map +1 -0
  96. package/dist/services/rebalance/rebalanceTxBuilder.js +200 -0
  97. package/dist/services/rebalance/rebalanceValues.d.ts +31 -0
  98. package/dist/services/rebalance/rebalanceValues.d.ts.map +1 -0
  99. package/dist/services/rebalance/rebalanceValues.js +118 -0
  100. package/dist/services/rebalance/solautoFees.d.ts +13 -0
  101. package/dist/services/rebalance/solautoFees.d.ts.map +1 -0
  102. package/dist/services/rebalance/solautoFees.js +54 -0
  103. package/dist/services/solauto/index.d.ts +5 -0
  104. package/dist/services/solauto/index.d.ts.map +1 -0
  105. package/dist/{clients → services/solauto}/referralStateManager.d.ts +4 -5
  106. package/dist/services/solauto/referralStateManager.d.ts.map +1 -0
  107. package/dist/{clients → services/solauto}/referralStateManager.js +10 -12
  108. package/dist/services/solauto/solautoClient.d.ts +59 -0
  109. package/dist/services/solauto/solautoClient.d.ts.map +1 -0
  110. package/dist/{clients → services/solauto}/solautoClient.js +78 -109
  111. package/dist/services/solauto/solautoMarginfiClient.d.ts +34 -0
  112. package/dist/services/solauto/solautoMarginfiClient.d.ts.map +1 -0
  113. package/dist/services/solauto/solautoMarginfiClient.js +322 -0
  114. package/dist/{clients → services/solauto}/txHandler.d.ts +11 -2
  115. package/dist/services/solauto/txHandler.d.ts.map +1 -0
  116. package/dist/services/solauto/txHandler.js +38 -0
  117. package/dist/services/swap/index.d.ts +2 -0
  118. package/dist/services/swap/index.d.ts.map +1 -0
  119. package/dist/{utils/solauto → services/swap}/index.js +1 -2
  120. package/dist/services/swap/jupSwapManager.d.ts +37 -0
  121. package/dist/services/swap/jupSwapManager.d.ts.map +1 -0
  122. package/dist/services/swap/jupSwapManager.js +108 -0
  123. package/dist/services/transactions/index.d.ts.map +1 -0
  124. package/dist/{transactions → services/transactions}/transactionUtils.d.ts +3 -5
  125. package/dist/services/transactions/transactionUtils.d.ts.map +1 -0
  126. package/dist/{transactions → services/transactions}/transactionUtils.js +29 -137
  127. package/dist/{transactions → services/transactions}/transactionsManager.d.ts +4 -4
  128. package/dist/services/transactions/transactionsManager.d.ts.map +1 -0
  129. package/dist/{transactions → services/transactions}/transactionsManager.js +10 -8
  130. package/dist/solautoPosition/index.d.ts +4 -0
  131. package/dist/solautoPosition/index.d.ts.map +1 -0
  132. package/dist/solautoPosition/index.js +19 -0
  133. package/dist/solautoPosition/marginfiSolautoPositionEx.d.ts +14 -0
  134. package/dist/solautoPosition/marginfiSolautoPositionEx.d.ts.map +1 -0
  135. package/dist/solautoPosition/marginfiSolautoPositionEx.js +73 -0
  136. package/dist/solautoPosition/solautoPositionEx.d.ts +67 -0
  137. package/dist/solautoPosition/solautoPositionEx.d.ts.map +1 -0
  138. package/dist/solautoPosition/solautoPositionEx.js +143 -0
  139. package/dist/solautoPosition/utils.d.ts +17 -0
  140. package/dist/solautoPosition/utils.d.ts.map +1 -0
  141. package/dist/solautoPosition/utils.js +115 -0
  142. package/dist/types/solauto.d.ts +19 -1
  143. package/dist/types/solauto.d.ts.map +1 -1
  144. package/dist/utils/generalUtils.d.ts +1 -0
  145. package/dist/utils/generalUtils.d.ts.map +1 -1
  146. package/dist/utils/generalUtils.js +9 -1
  147. package/dist/utils/index.d.ts +1 -1
  148. package/dist/utils/index.d.ts.map +1 -1
  149. package/dist/utils/index.js +1 -1
  150. package/dist/utils/jitoUtils.d.ts.map +1 -1
  151. package/dist/utils/jupiterUtils.d.ts +3 -28
  152. package/dist/utils/jupiterUtils.d.ts.map +1 -1
  153. package/dist/utils/jupiterUtils.js +2 -73
  154. package/dist/utils/marginfiUtils.d.ts +4 -3
  155. package/dist/utils/marginfiUtils.d.ts.map +1 -1
  156. package/dist/utils/marginfiUtils.js +47 -18
  157. package/dist/utils/numberUtils.d.ts +3 -6
  158. package/dist/utils/numberUtils.d.ts.map +1 -1
  159. package/dist/utils/numberUtils.js +13 -48
  160. package/dist/utils/solanaUtils.js +2 -2
  161. package/dist/utils/{solauto/generalUtils.d.ts → solautoUtils.d.ts} +9 -16
  162. package/dist/utils/solautoUtils.d.ts.map +1 -0
  163. package/dist/utils/{solauto/generalUtils.js → solautoUtils.js} +48 -173
  164. package/local/createTokenAccounts.ts +1 -5
  165. package/local/logPositions.ts +22 -68
  166. package/local/shared.ts +29 -24
  167. package/local/txSandbox.ts +27 -0
  168. package/local/updateMarginfiLUT.ts +80 -4
  169. package/package.json +3 -6
  170. package/src/constants/solautoConstants.ts +4 -9
  171. package/src/generated/accounts/solautoPosition.ts +2 -2
  172. package/src/generated/errors/solauto.ts +45 -4
  173. package/src/generated/instructions/claimReferralFees.ts +1 -1
  174. package/src/generated/instructions/closePosition.ts +3 -3
  175. package/src/generated/instructions/marginfiOpenPosition.ts +0 -7
  176. package/src/generated/instructions/marginfiRebalance.ts +12 -3
  177. package/src/generated/types/index.ts +7 -1
  178. package/src/generated/types/positionData.ts +3 -3
  179. package/src/generated/types/positionState.ts +12 -12
  180. package/src/generated/types/{positionTokenUsage.ts → positionTokenState.ts} +13 -16
  181. package/src/generated/types/rebalanceData.ts +16 -27
  182. package/src/generated/types/rebalanceDirection.ts +1 -0
  183. package/src/generated/types/rebalanceInstructionData.ts +62 -0
  184. package/src/generated/types/rebalanceStateValues.ts +59 -0
  185. package/src/generated/types/rebalanceStep.ts +25 -0
  186. package/src/generated/types/solautoRebalanceType.ts +0 -1
  187. package/src/generated/types/solautoSettingsParameters.ts +4 -25
  188. package/src/generated/types/solautoSettingsParametersInp.ts +2 -24
  189. package/src/generated/types/swapType.ts +22 -0
  190. package/src/generated/types/tokenBalanceChange.ts +46 -0
  191. package/src/generated/types/tokenBalanceChangeType.ts +28 -0
  192. package/src/generated/types/updatePositionData.ts +3 -3
  193. package/src/index.ts +8 -8
  194. package/src/marginfi-sdk/types/interestRateConfig.ts +6 -2
  195. package/src/services/flashLoans/flProviderAggregator.ts +74 -0
  196. package/src/services/flashLoans/flProviderBase.ts +88 -0
  197. package/src/services/flashLoans/index.ts +3 -0
  198. package/src/services/flashLoans/marginfiFlProvider.ts +392 -0
  199. package/src/services/index.ts +5 -0
  200. package/src/services/rebalance/index.ts +2 -0
  201. package/src/services/rebalance/rebalanceSwapManager.ts +218 -0
  202. package/src/services/rebalance/rebalanceTxBuilder.ts +330 -0
  203. package/src/services/rebalance/rebalanceValues.ts +232 -0
  204. package/src/services/rebalance/solautoFees.ts +61 -0
  205. package/src/services/solauto/index.ts +4 -0
  206. package/src/{clients → services/solauto}/referralStateManager.ts +17 -31
  207. package/src/{clients → services/solauto}/solautoClient.ts +142 -205
  208. package/src/services/solauto/solautoMarginfiClient.ts +472 -0
  209. package/src/services/solauto/txHandler.ts +69 -0
  210. package/src/services/swap/index.ts +1 -0
  211. package/src/services/swap/jupSwapManager.ts +189 -0
  212. package/src/{transactions → services/transactions}/transactionUtils.ts +40 -280
  213. package/src/{transactions → services/transactions}/transactionsManager.ts +15 -10
  214. package/src/solautoPosition/index.ts +3 -0
  215. package/src/solautoPosition/marginfiSolautoPositionEx.ts +111 -0
  216. package/src/solautoPosition/solautoPositionEx.ts +281 -0
  217. package/src/solautoPosition/utils.ts +188 -0
  218. package/src/types/solauto.ts +30 -2
  219. package/src/utils/generalUtils.ts +9 -1
  220. package/src/utils/index.ts +2 -2
  221. package/src/utils/jitoUtils.ts +0 -4
  222. package/src/utils/jupiterUtils.ts +3 -164
  223. package/src/utils/marginfiUtils.ts +77 -43
  224. package/src/utils/numberUtils.ts +18 -77
  225. package/src/utils/solanaUtils.ts +1 -1
  226. package/src/utils/{solauto/generalUtils.ts → solautoUtils.ts} +66 -288
  227. package/tests/transactions/shared.ts +135 -0
  228. package/tests/transactions/solautoMarginfi.ts +8 -198
  229. package/tests/unit/accounts.ts +3 -10
  230. package/tests/unit/lookupTables.ts +23 -2
  231. package/tests/unit/rebalanceCalculations.ts +65 -343
  232. package/dist/clients/index.d.ts +0 -5
  233. package/dist/clients/index.d.ts.map +0 -1
  234. package/dist/clients/referralStateManager.d.ts.map +0 -1
  235. package/dist/clients/solautoClient.d.ts +0 -71
  236. package/dist/clients/solautoClient.d.ts.map +0 -1
  237. package/dist/clients/solautoMarginfiClient.d.ts +0 -51
  238. package/dist/clients/solautoMarginfiClient.d.ts.map +0 -1
  239. package/dist/clients/solautoMarginfiClient.js +0 -497
  240. package/dist/clients/txHandler.d.ts.map +0 -1
  241. package/dist/clients/txHandler.js +0 -23
  242. package/dist/generated/types/positionTokenUsage.d.ts.map +0 -1
  243. package/dist/transactions/index.d.ts.map +0 -1
  244. package/dist/transactions/transactionUtils.d.ts.map +0 -1
  245. package/dist/transactions/transactionsManager.d.ts.map +0 -1
  246. package/dist/utils/solauto/generalUtils.d.ts.map +0 -1
  247. package/dist/utils/solauto/index.d.ts +0 -3
  248. package/dist/utils/solauto/index.d.ts.map +0 -1
  249. package/dist/utils/solauto/rebalanceUtils.d.ts +0 -30
  250. package/dist/utils/solauto/rebalanceUtils.d.ts.map +0 -1
  251. package/dist/utils/solauto/rebalanceUtils.js +0 -287
  252. package/src/clients/index.ts +0 -4
  253. package/src/clients/solautoMarginfiClient.ts +0 -774
  254. package/src/clients/txHandler.ts +0 -38
  255. package/src/utils/solauto/index.ts +0 -2
  256. package/src/utils/solauto/rebalanceUtils.ts +0 -562
  257. package/dist/{clients → services/solauto}/index.js +2 -2
  258. /package/dist/{transactions → services/transactions}/index.d.ts +0 -0
  259. /package/dist/{transactions → services/transactions}/index.js +0 -0
  260. /package/src/{transactions → services/transactions}/index.ts +0 -0
package/local/shared.ts CHANGED
@@ -8,15 +8,11 @@ import {
8
8
  VersionedTransaction,
9
9
  PublicKey,
10
10
  } from "@solana/web3.js";
11
- import { buildHeliusApiUrl, getSolanaRpcConnection } from "../src/utils/solanaUtils";
12
-
13
- export function getBatches<T>(items: T[], batchSize: number): T[][] {
14
- const batches: T[][] = [];
15
- for (let i = 0; i < items.length; i += batchSize) {
16
- batches.push(items.slice(i, i + batchSize));
17
- }
18
- return batches;
19
- }
11
+ import {
12
+ buildHeliusApiUrl,
13
+ getSolanaRpcConnection,
14
+ } from "../src/utils/solanaUtils";
15
+ import { getBatches } from "../src";
20
16
 
21
17
  function loadSecretKey(keypairPath: string) {
22
18
  const secretKey = JSON.parse(fs.readFileSync(keypairPath, "utf8"));
@@ -30,19 +26,25 @@ export function getSecretKey(keypairFilename: string = "id"): Uint8Array {
30
26
  }
31
27
 
32
28
  const keypair = Keypair.fromSecretKey(getSecretKey("solauto-fees"));
33
- const [connection, _] = getSolanaRpcConnection(buildHeliusApiUrl(process.env.HELIUS_API_KEY ?? ""));
29
+ const [connection, _] = getSolanaRpcConnection(
30
+ buildHeliusApiUrl(process.env.HELIUS_API_KEY ?? "")
31
+ );
34
32
 
35
- async function createAndSendV0Tx(txInstructions: TransactionInstruction[]) {
33
+ export async function createAndSendV0Tx(
34
+ txInstructions: TransactionInstruction[],
35
+ payer: Keypair,
36
+ otherSigners?: Keypair[]
37
+ ) {
36
38
  let latestBlockhash = await connection.getLatestBlockhash("finalized");
37
39
 
38
40
  const messageV0 = new TransactionMessage({
39
- payerKey: keypair.publicKey,
41
+ payerKey: payer.publicKey,
40
42
  recentBlockhash: latestBlockhash.blockhash,
41
43
  instructions: txInstructions,
42
44
  }).compileToV0Message();
43
45
  const transaction = new VersionedTransaction(messageV0);
44
46
 
45
- transaction.sign([keypair]);
47
+ transaction.sign([payer, ...(otherSigners ?? [])]);
46
48
 
47
49
  const txid = await connection.sendTransaction(transaction, {
48
50
  maxRetries: 5,
@@ -67,19 +69,22 @@ async function addAddressesIfNeeded(
67
69
  const addresses = addressesToAdd
68
70
  .filter((x) => !existingAddresses.includes(x))
69
71
  .map((x) => new PublicKey(x));
70
-
72
+
71
73
  if (addresses.length > 0) {
72
74
  const batches = getBatches(addresses, 20);
73
75
  for (const addressBatch of batches) {
74
- console.log(addressBatch.map(x => x.toString()));
75
- await createAndSendV0Tx([
76
- AddressLookupTableProgram.extendLookupTable({
77
- payer: keypair.publicKey,
78
- authority: keypair.publicKey,
79
- lookupTable: lookupTableAddress,
80
- addresses: addressBatch,
81
- }),
82
- ]);
76
+ console.log(addressBatch.map((x) => x.toString()));
77
+ await createAndSendV0Tx(
78
+ [
79
+ AddressLookupTableProgram.extendLookupTable({
80
+ payer: keypair.publicKey,
81
+ authority: keypair.publicKey,
82
+ lookupTable: lookupTableAddress,
83
+ addresses: addressBatch,
84
+ }),
85
+ ],
86
+ keypair
87
+ );
83
88
  }
84
89
  }
85
90
  }
@@ -99,7 +104,7 @@ export async function updateLookupTable(
99
104
  });
100
105
  lookupTableAddress = addr;
101
106
  console.log("Lookup Table Address:", lookupTableAddress.toString());
102
- await createAndSendV0Tx([createLutIx]);
107
+ await createAndSendV0Tx([createLutIx], keypair);
103
108
  }
104
109
 
105
110
  const existingAccounts =
@@ -0,0 +1,27 @@
1
+ import { Keypair } from "@solana/web3.js";
2
+ import {
3
+ buildIronforgeApiUrl,
4
+ getSolanaRpcConnection,
5
+ SOLAUTO_PROD_PROGRAM,
6
+ SOLAUTO_TEST_PROGRAM,
7
+ } from "../src";
8
+ import { getSecretKey } from "./shared";
9
+ import { createSignerFromKeypair } from "@metaplex-foundation/umi";
10
+ import { fromWeb3JsKeypair } from "@metaplex-foundation/umi-web3js-adapters";
11
+
12
+ const testProgram = true;
13
+
14
+ export async function main() {
15
+ const [conn, umi] = getSolanaRpcConnection(
16
+ buildIronforgeApiUrl(process.env.IRONFORGE_API_KEY!),
17
+ testProgram ? SOLAUTO_TEST_PROGRAM : SOLAUTO_PROD_PROGRAM
18
+ );
19
+ const signer = createSignerFromKeypair(
20
+ umi,
21
+ fromWeb3JsKeypair(Keypair.fromSecretKey(getSecretKey()))
22
+ );
23
+
24
+
25
+ }
26
+
27
+ main();
@@ -1,13 +1,48 @@
1
- import { PublicKey } from "@solana/web3.js";
1
+ import { Keypair, PublicKey } from "@solana/web3.js";
2
2
  import { MARGINFI_ACCOUNTS_LOOKUP_TABLE } from "../src/constants/marginfiAccounts";
3
3
  import {
4
4
  MARGINFI_ACCOUNTS,
5
5
  DEFAULT_MARGINFI_GROUP,
6
6
  } from "../src/constants/marginfiAccounts";
7
- import { MARGINFI_PROGRAM_ID } from "../src/marginfi-sdk";
8
- import { updateLookupTable } from "./shared";
7
+ import {
8
+ MARGINFI_PROGRAM_ID,
9
+ marginfiAccountInitialize,
10
+ } from "../src/marginfi-sdk";
11
+ import { createAndSendV0Tx, getSecretKey, updateLookupTable } from "./shared";
12
+ import {
13
+ buildIronforgeApiUrl,
14
+ getEmptyMarginfiAccountsByAuthority,
15
+ getSolanaRpcConnection,
16
+ SOLAUTO_MANAGER,
17
+ } from "../src";
18
+ import {
19
+ createSignerFromKeypair,
20
+ publicKey,
21
+ signerIdentity,
22
+ } from "@metaplex-foundation/umi";
23
+ import {
24
+ fromWeb3JsKeypair,
25
+ toWeb3JsInstruction,
26
+ toWeb3JsKeypair,
27
+ } from "@metaplex-foundation/umi-web3js-adapters";
9
28
 
10
29
  const LOOKUP_TABLE_ADDRESS = new PublicKey(MARGINFI_ACCOUNTS_LOOKUP_TABLE);
30
+ let [, umi] = getSolanaRpcConnection(
31
+ buildIronforgeApiUrl(process.env.IRONFORGE_API_KEY!)
32
+ );
33
+ umi = umi.use(
34
+ signerIdentity(
35
+ createSignerFromKeypair(umi, umi.eddsa.generateKeypair()),
36
+ true
37
+ )
38
+ );
39
+ const solautoManagerKeypair = Keypair.fromSecretKey(
40
+ getSecretKey("solauto-manager")
41
+ );
42
+ const solautoManager = createSignerFromKeypair(
43
+ umi,
44
+ fromWeb3JsKeypair(solautoManagerKeypair)
45
+ );
11
46
 
12
47
  async function addBanks() {
13
48
  for (const group in MARGINFI_ACCOUNTS) {
@@ -27,9 +62,50 @@ async function addBanks() {
27
62
  }
28
63
  }
29
64
 
65
+ async function addImfiAccounts() {
66
+ const imfiAccounts = await getEmptyMarginfiAccountsByAuthority(
67
+ umi,
68
+ SOLAUTO_MANAGER
69
+ );
70
+
71
+ for (const group in MARGINFI_ACCOUNTS) {
72
+ const emptyAccs = imfiAccounts.filter((x) => x.group.toString() === group);
73
+ if (emptyAccs.length > 0) {
74
+ await updateLookupTable(
75
+ emptyAccs.map((x) => x.publicKey.toString()),
76
+ LOOKUP_TABLE_ADDRESS
77
+ );
78
+ } else {
79
+ console.log("Creating Imfi account for group:", group);
80
+ const iMfiAccountKeypair = umi.eddsa.generateKeypair();
81
+ const iMfiAccount = createSignerFromKeypair(umi, iMfiAccountKeypair);
82
+ const umiIx = marginfiAccountInitialize(umi, {
83
+ marginfiAccount: iMfiAccount,
84
+ marginfiGroup: publicKey(group),
85
+ authority: solautoManager,
86
+ feePayer: solautoManager,
87
+ });
88
+ const ix = toWeb3JsInstruction(umiIx.getInstructions()[0]);
89
+ await createAndSendV0Tx([ix], solautoManagerKeypair, [
90
+ toWeb3JsKeypair(iMfiAccountKeypair),
91
+ ]);
92
+ await updateLookupTable(
93
+ [iMfiAccount.publicKey.toString()],
94
+ LOOKUP_TABLE_ADDRESS
95
+ );
96
+ }
97
+ }
98
+ }
99
+
30
100
  updateLookupTable(
31
101
  [DEFAULT_MARGINFI_GROUP, MARGINFI_PROGRAM_ID],
32
102
  LOOKUP_TABLE_ADDRESS
33
103
  );
34
104
 
35
- addBanks();
105
+ addBanks().then((x) => x);
106
+
107
+ addImfiAccounts().then((x) => x);
108
+
109
+ // EoEVYjz3MnsX6fKyxrwJkRhzMCHKjj6dvnjTCHoZLMc7
110
+ // AuoepJfrCrkQF2PeUAgpnnJybRoiff82cNdwXTqyjjvm
111
+ // Bno3JybASPc1jNBZ9rnrdKVvbhk6UNMvSsYvgtitq3zb
package/package.json CHANGED
@@ -1,16 +1,15 @@
1
1
  {
2
2
  "name": "@haven-fi/solauto-sdk",
3
- "version": "1.0.582",
3
+ "version": "1.0.583",
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",
7
7
  "author": "Chelioso",
8
- "license": "MIT",
9
8
  "scripts": {
10
9
  "build": "rm -rf dist && npx tsc",
10
+ "test:all": "pnpm test:unit && pnpm test:txs",
11
11
  "test:txs": "ts-mocha -p ./tsconfig.json -t 1000000 tests/transactions/**/*.ts",
12
- "test:unit": "ts-mocha -p ./tsconfig.json -t 1000000 tests/unit/**/*.ts",
13
- "test:all": "pnpm test:unit && pnpm test:txs"
12
+ "test:unit": "ts-mocha -p ./tsconfig.json -t 1000000 tests/unit/**/*.ts"
14
13
  },
15
14
  "dependencies": {
16
15
  "@coral-xyz/anchor": "^0.30.1",
@@ -19,8 +18,6 @@
19
18
  "@metaplex-foundation/umi-bundle-defaults": "^0.9.1",
20
19
  "@metaplex-foundation/umi-signer-wallet-adapters": "^0.9.1",
21
20
  "@metaplex-foundation/umi-web3js-adapters": "^0.9.1",
22
- "@mrgnlabs/marginfi-client-v2": "^4.0.0",
23
- "@mrgnlabs/mrgn-common": "^1.8.0",
24
21
  "@solana/spl-token": "^0.4.0",
25
22
  "@solana/web3.js": "=1.95.8",
26
23
  "@switchboard-xyz/common": "=3.0.12",
@@ -20,7 +20,7 @@ export const SOLAUTO_TEST_PROGRAM = new PublicKey(
20
20
  "TesTjfQ6TbXv96Tv6fqr95XTZ1LYPxtkafmShN9PjBp"
21
21
  );
22
22
 
23
- (globalThis as any).LOCAL_TEST = false;
23
+ (globalThis as any).SHOW_LOGS = false;
24
24
 
25
25
  export const BASIS_POINTS = 10000;
26
26
 
@@ -29,6 +29,8 @@ export const MIN_REPAY_GAP_BPS = 50;
29
29
  export const MIN_BOOST_GAP_BPS = 50;
30
30
  export const MIN_USD_SUPPORTED_POSITION = 1000;
31
31
 
32
+ export const REFERRER_PERCENTAGE = 0.15;
33
+
32
34
  export const PRICES: { [key: string]: { price: number; time: number } } = {};
33
35
 
34
36
  export const JITO_BLOCK_ENGINE = "https://mainnet.block-engine.jito.wtf";
@@ -60,11 +62,4 @@ export const STANDARD_LUT_ACCOUNTS = [
60
62
  ].map((x) => x.toString());
61
63
 
62
64
  // TODO:
63
- export const BROKEN_TOKENS = [
64
- JUP,
65
- JLP,
66
- WETH,
67
- HNT,
68
- JTO,
69
- PYTH
70
- ]
65
+ export const BROKEN_TOKENS = [JUP, JLP, WETH, HNT, JTO, PYTH];
@@ -88,7 +88,7 @@ export function getSolautoPositionAccountDataSerializer(): Serializer<
88
88
  ['position', getPositionDataSerializer()],
89
89
  ['state', getPositionStateSerializer()],
90
90
  ['rebalance', getRebalanceDataSerializer()],
91
- ['padding', array(u32(), { size: 32 })],
91
+ ['padding', array(u32(), { size: 20 })],
92
92
  ],
93
93
  { description: 'SolautoPositionAccountData' }
94
94
  ) as Serializer<SolautoPositionAccountDataArgs, SolautoPositionAccountData>;
@@ -188,7 +188,7 @@ export function getSolautoPositionGpaBuilder(
188
188
  position: [40, getPositionDataSerializer()],
189
189
  state: [360, getPositionStateSerializer()],
190
190
  rebalance: [648, getRebalanceDataSerializer()],
191
- padding: [704, array(u32(), { size: 32 })],
191
+ padding: [752, array(u32(), { size: 20 })],
192
192
  })
193
193
  .deserializeUsing<SolautoPosition>((account) =>
194
194
  deserializeSolautoPosition(account)
@@ -15,7 +15,7 @@ type ProgramErrorConstructor = new (
15
15
  const codeToErrorMap: Map<number, ProgramErrorConstructor> = new Map();
16
16
  const nameToErrorMap: Map<string, ProgramErrorConstructor> = new Map();
17
17
 
18
- /** IncorrectAccounts: Missing or incorrect accounts provided for the given instruction */
18
+ /** IncorrectAccounts: Missing or incorrect accounts provided for the given instructions */
19
19
  export class IncorrectAccountsError extends ProgramError {
20
20
  override readonly name: string = 'IncorrectAccounts';
21
21
 
@@ -23,7 +23,7 @@ export class IncorrectAccountsError extends ProgramError {
23
23
 
24
24
  constructor(program: Program, cause?: Error) {
25
25
  super(
26
- 'Missing or incorrect accounts provided for the given instruction',
26
+ 'Missing or incorrect accounts provided for the given instructions',
27
27
  program,
28
28
  cause
29
29
  );
@@ -113,14 +113,18 @@ export class InstructionIsCPIError extends ProgramError {
113
113
  codeToErrorMap.set(0x6, InstructionIsCPIError);
114
114
  nameToErrorMap.set('InstructionIsCPI', InstructionIsCPIError);
115
115
 
116
- /** IncorrectInstructions: Incorrect set of instructions in the transaction */
116
+ /** IncorrectInstructions: Incorrect set of instructions or instruction data in the transaction */
117
117
  export class IncorrectInstructionsError extends ProgramError {
118
118
  override readonly name: string = 'IncorrectInstructions';
119
119
 
120
120
  readonly code: number = 0x7; // 7
121
121
 
122
122
  constructor(program: Program, cause?: Error) {
123
- super('Incorrect set of instructions in the transaction', program, cause);
123
+ super(
124
+ 'Incorrect set of instructions or instruction data in the transaction',
125
+ program,
126
+ cause
127
+ );
124
128
  }
125
129
  }
126
130
  codeToErrorMap.set(0x7, IncorrectInstructionsError);
@@ -143,6 +147,43 @@ export class IncorrectDebtAdjustmentError extends ProgramError {
143
147
  codeToErrorMap.set(0x8, IncorrectDebtAdjustmentError);
144
148
  nameToErrorMap.set('IncorrectDebtAdjustment', IncorrectDebtAdjustmentError);
145
149
 
150
+ /** InvalidRebalanceMade: Invalid rebalance was made. Target supply USD and target debt USD was not met */
151
+ export class InvalidRebalanceMadeError extends ProgramError {
152
+ override readonly name: string = 'InvalidRebalanceMade';
153
+
154
+ readonly code: number = 0x9; // 9
155
+
156
+ constructor(program: Program, cause?: Error) {
157
+ super(
158
+ 'Invalid rebalance was made. Target supply USD and target debt USD was not met',
159
+ program,
160
+ cause
161
+ );
162
+ }
163
+ }
164
+ codeToErrorMap.set(0x9, InvalidRebalanceMadeError);
165
+ nameToErrorMap.set('InvalidRebalanceMade', InvalidRebalanceMadeError);
166
+
167
+ /** NonAuthorityProvidedTargetLTV: Cannot provide a target liquidation utilization rate if the instruction is not signed by the position authority */
168
+ export class NonAuthorityProvidedTargetLTVError extends ProgramError {
169
+ override readonly name: string = 'NonAuthorityProvidedTargetLTV';
170
+
171
+ readonly code: number = 0xa; // 10
172
+
173
+ constructor(program: Program, cause?: Error) {
174
+ super(
175
+ 'Cannot provide a target liquidation utilization rate if the instruction is not signed by the position authority',
176
+ program,
177
+ cause
178
+ );
179
+ }
180
+ }
181
+ codeToErrorMap.set(0xa, NonAuthorityProvidedTargetLTVError);
182
+ nameToErrorMap.set(
183
+ 'NonAuthorityProvidedTargetLTV',
184
+ NonAuthorityProvidedTargetLTVError
185
+ );
186
+
146
187
  /**
147
188
  * Attempts to resolve a custom program error from the provided error code.
148
189
  * @category Errors
@@ -38,7 +38,7 @@ export type ClaimReferralFeesInstructionAccounts = {
38
38
  referralState: PublicKey | Pda;
39
39
  referralFeesDestTa: PublicKey | Pda;
40
40
  referralFeesDestMint: PublicKey | Pda;
41
- referralAuthority?: PublicKey | Pda;
41
+ referralAuthority: PublicKey | Pda;
42
42
  feesDestinationTa?: PublicKey | Pda;
43
43
  };
44
44
 
@@ -33,7 +33,7 @@ export type ClosePositionInstructionAccounts = {
33
33
  tokenProgram?: PublicKey | Pda;
34
34
  ataProgram?: PublicKey | Pda;
35
35
  solautoPosition: PublicKey | Pda;
36
- protocolAccount: PublicKey | Pda;
36
+ lpUserAccount: PublicKey | Pda;
37
37
  positionSupplyTa: PublicKey | Pda;
38
38
  signerSupplyTa: PublicKey | Pda;
39
39
  positionDebtTa: PublicKey | Pda;
@@ -102,10 +102,10 @@ export function closePosition(
102
102
  isWritable: true as boolean,
103
103
  value: input.solautoPosition ?? null,
104
104
  },
105
- protocolAccount: {
105
+ lpUserAccount: {
106
106
  index: 5,
107
107
  isWritable: true as boolean,
108
- value: input.protocolAccount ?? null,
108
+ value: input.lpUserAccount ?? null,
109
109
  },
110
110
  positionSupplyTa: {
111
111
  index: 6,
@@ -8,8 +8,6 @@
8
8
 
9
9
  import {
10
10
  Context,
11
- Option,
12
- OptionOrNullable,
13
11
  Pda,
14
12
  PublicKey,
15
13
  Signer,
@@ -20,9 +18,7 @@ import {
20
18
  import {
21
19
  Serializer,
22
20
  mapSerializer,
23
- option,
24
21
  struct,
25
- u64,
26
22
  u8,
27
23
  } from '@metaplex-foundation/umi/serializers';
28
24
  import {
@@ -67,13 +63,11 @@ export type MarginfiOpenPositionInstructionData = {
67
63
  discriminator: number;
68
64
  positionType: PositionType;
69
65
  positionData: UpdatePositionData;
70
- marginfiAccountSeedIdx: Option<bigint>;
71
66
  };
72
67
 
73
68
  export type MarginfiOpenPositionInstructionDataArgs = {
74
69
  positionType: PositionTypeArgs;
75
70
  positionData: UpdatePositionDataArgs;
76
- marginfiAccountSeedIdx: OptionOrNullable<number | bigint>;
77
71
  };
78
72
 
79
73
  export function getMarginfiOpenPositionInstructionDataSerializer(): Serializer<
@@ -90,7 +84,6 @@ export function getMarginfiOpenPositionInstructionDataSerializer(): Serializer<
90
84
  ['discriminator', u8()],
91
85
  ['positionType', getPositionTypeSerializer()],
92
86
  ['positionData', getUpdatePositionDataSerializer()],
93
- ['marginfiAccountSeedIdx', option(u64())],
94
87
  ],
95
88
  { description: 'MarginfiOpenPositionInstructionData' }
96
89
  ),
@@ -33,7 +33,10 @@ import {
33
33
  import {
34
34
  SolautoRebalanceType,
35
35
  SolautoRebalanceTypeArgs,
36
+ SwapType,
37
+ SwapTypeArgs,
36
38
  getSolautoRebalanceTypeSerializer,
39
+ getSwapTypeSerializer,
37
40
  } from '../types';
38
41
 
39
42
  // Accounts.
@@ -70,13 +73,17 @@ export type MarginfiRebalanceInstructionData = {
70
73
  discriminator: number;
71
74
  rebalanceType: SolautoRebalanceType;
72
75
  targetLiqUtilizationRateBps: Option<number>;
73
- targetInAmountBaseUnit: Option<bigint>;
76
+ swapInAmountBaseUnit: Option<bigint>;
77
+ flashLoanFeeBps: Option<number>;
78
+ swapType: Option<SwapType>;
74
79
  };
75
80
 
76
81
  export type MarginfiRebalanceInstructionDataArgs = {
77
82
  rebalanceType: SolautoRebalanceTypeArgs;
78
83
  targetLiqUtilizationRateBps: OptionOrNullable<number>;
79
- targetInAmountBaseUnit: OptionOrNullable<number | bigint>;
84
+ swapInAmountBaseUnit: OptionOrNullable<number | bigint>;
85
+ flashLoanFeeBps: OptionOrNullable<number>;
86
+ swapType: OptionOrNullable<SwapTypeArgs>;
80
87
  };
81
88
 
82
89
  export function getMarginfiRebalanceInstructionDataSerializer(): Serializer<
@@ -93,7 +100,9 @@ export function getMarginfiRebalanceInstructionDataSerializer(): Serializer<
93
100
  ['discriminator', u8()],
94
101
  ['rebalanceType', getSolautoRebalanceTypeSerializer()],
95
102
  ['targetLiqUtilizationRateBps', option(u16())],
96
- ['targetInAmountBaseUnit', option(u64())],
103
+ ['swapInAmountBaseUnit', option(u64())],
104
+ ['flashLoanFeeBps', option(u16())],
105
+ ['swapType', option(getSwapTypeSerializer())],
97
106
  ],
98
107
  { description: 'MarginfiRebalanceInstructionData' }
99
108
  ),
@@ -14,15 +14,21 @@ export * from './lendingPlatform';
14
14
  export * from './podBool';
15
15
  export * from './positionData';
16
16
  export * from './positionState';
17
- export * from './positionTokenUsage';
17
+ export * from './positionTokenState';
18
18
  export * from './positionType';
19
19
  export * from './rebalanceData';
20
20
  export * from './rebalanceDirection';
21
+ export * from './rebalanceInstructionData';
22
+ export * from './rebalanceStateValues';
23
+ export * from './rebalanceStep';
21
24
  export * from './solautoAction';
22
25
  export * from './solautoRebalanceType';
23
26
  export * from './solautoSettingsParameters';
24
27
  export * from './solautoSettingsParametersInp';
28
+ export * from './swapType';
25
29
  export * from './tokenAmount';
26
30
  export * from './tokenBalanceAmount';
31
+ export * from './tokenBalanceChange';
32
+ export * from './tokenBalanceChangeType';
27
33
  export * from './tokenType';
28
34
  export * from './updatePositionData';
@@ -33,7 +33,7 @@ export type PositionData = {
33
33
  protocolUserAccount: PublicKey;
34
34
  protocolSupplyAccount: PublicKey;
35
35
  protocolDebtAccount: PublicKey;
36
- settingParams: SolautoSettingsParameters;
36
+ settings: SolautoSettingsParameters;
37
37
  dca: DCASettings;
38
38
  padding: Array<number>;
39
39
  };
@@ -44,7 +44,7 @@ export type PositionDataArgs = {
44
44
  protocolUserAccount: PublicKey;
45
45
  protocolSupplyAccount: PublicKey;
46
46
  protocolDebtAccount: PublicKey;
47
- settingParams: SolautoSettingsParametersArgs;
47
+ settings: SolautoSettingsParametersArgs;
48
48
  dca: DCASettingsArgs;
49
49
  padding: Array<number>;
50
50
  };
@@ -60,7 +60,7 @@ export function getPositionDataSerializer(): Serializer<
60
60
  ['protocolUserAccount', publicKeySerializer()],
61
61
  ['protocolSupplyAccount', publicKeySerializer()],
62
62
  ['protocolDebtAccount', publicKeySerializer()],
63
- ['settingParams', getSolautoSettingsParametersSerializer()],
63
+ ['settings', getSolautoSettingsParametersSerializer()],
64
64
  ['dca', getDCASettingsSerializer()],
65
65
  ['padding', array(u32(), { size: 4 })],
66
66
  ],
@@ -16,11 +16,11 @@ import {
16
16
  u8,
17
17
  } from '@metaplex-foundation/umi/serializers';
18
18
  import {
19
- PositionTokenUsage,
20
- PositionTokenUsageArgs,
19
+ PositionTokenState,
20
+ PositionTokenStateArgs,
21
21
  TokenAmount,
22
22
  TokenAmountArgs,
23
- getPositionTokenUsageSerializer,
23
+ getPositionTokenStateSerializer,
24
24
  getTokenAmountSerializer,
25
25
  } from '.';
26
26
 
@@ -28,12 +28,12 @@ export type PositionState = {
28
28
  liqUtilizationRateBps: number;
29
29
  padding1: Array<number>;
30
30
  netWorth: TokenAmount;
31
- supply: PositionTokenUsage;
32
- debt: PositionTokenUsage;
31
+ supply: PositionTokenState;
32
+ debt: PositionTokenState;
33
33
  maxLtvBps: number;
34
34
  liqThresholdBps: number;
35
35
  padding2: Array<number>;
36
- lastUpdated: bigint;
36
+ lastRefreshed: bigint;
37
37
  padding: Array<number>;
38
38
  };
39
39
 
@@ -41,12 +41,12 @@ export type PositionStateArgs = {
41
41
  liqUtilizationRateBps: number;
42
42
  padding1: Array<number>;
43
43
  netWorth: TokenAmountArgs;
44
- supply: PositionTokenUsageArgs;
45
- debt: PositionTokenUsageArgs;
44
+ supply: PositionTokenStateArgs;
45
+ debt: PositionTokenStateArgs;
46
46
  maxLtvBps: number;
47
47
  liqThresholdBps: number;
48
48
  padding2: Array<number>;
49
- lastUpdated: number | bigint;
49
+ lastRefreshed: number | bigint;
50
50
  padding: Array<number>;
51
51
  };
52
52
 
@@ -59,12 +59,12 @@ export function getPositionStateSerializer(): Serializer<
59
59
  ['liqUtilizationRateBps', u16()],
60
60
  ['padding1', array(u8(), { size: 6 })],
61
61
  ['netWorth', getTokenAmountSerializer()],
62
- ['supply', getPositionTokenUsageSerializer()],
63
- ['debt', getPositionTokenUsageSerializer()],
62
+ ['supply', getPositionTokenStateSerializer()],
63
+ ['debt', getPositionTokenStateSerializer()],
64
64
  ['maxLtvBps', u16()],
65
65
  ['liqThresholdBps', u16()],
66
66
  ['padding2', array(u8(), { size: 4 })],
67
- ['lastUpdated', u64()],
67
+ ['lastRefreshed', u64()],
68
68
  ['padding', array(u32(), { size: 2 })],
69
69
  ],
70
70
  { description: 'PositionState' }
@@ -19,49 +19,46 @@ import {
19
19
  } from '@metaplex-foundation/umi/serializers';
20
20
  import { TokenAmount, TokenAmountArgs, getTokenAmountSerializer } from '.';
21
21
 
22
- export type PositionTokenUsage = {
22
+ export type PositionTokenState = {
23
23
  mint: PublicKey;
24
24
  decimals: number;
25
25
  padding1: Array<number>;
26
+ borrowFeeBps: number;
26
27
  amountUsed: TokenAmount;
27
28
  amountCanBeUsed: TokenAmount;
28
29
  baseAmountMarketPriceUsd: bigint;
29
- flashLoanFeeBps: number;
30
- borrowFeeBps: number;
31
30
  padding2: Array<number>;
32
31
  padding: Uint8Array;
33
32
  };
34
33
 
35
- export type PositionTokenUsageArgs = {
34
+ export type PositionTokenStateArgs = {
36
35
  mint: PublicKey;
37
36
  decimals: number;
38
37
  padding1: Array<number>;
38
+ borrowFeeBps: number;
39
39
  amountUsed: TokenAmountArgs;
40
40
  amountCanBeUsed: TokenAmountArgs;
41
41
  baseAmountMarketPriceUsd: number | bigint;
42
- flashLoanFeeBps: number;
43
- borrowFeeBps: number;
44
42
  padding2: Array<number>;
45
43
  padding: Uint8Array;
46
44
  };
47
45
 
48
- export function getPositionTokenUsageSerializer(): Serializer<
49
- PositionTokenUsageArgs,
50
- PositionTokenUsage
46
+ export function getPositionTokenStateSerializer(): Serializer<
47
+ PositionTokenStateArgs,
48
+ PositionTokenState
51
49
  > {
52
- return struct<PositionTokenUsage>(
50
+ return struct<PositionTokenState>(
53
51
  [
54
52
  ['mint', publicKeySerializer()],
55
53
  ['decimals', u8()],
56
- ['padding1', array(u8(), { size: 7 })],
54
+ ['padding1', array(u8(), { size: 5 })],
55
+ ['borrowFeeBps', u16()],
57
56
  ['amountUsed', getTokenAmountSerializer()],
58
57
  ['amountCanBeUsed', getTokenAmountSerializer()],
59
58
  ['baseAmountMarketPriceUsd', u64()],
60
- ['flashLoanFeeBps', u16()],
61
- ['borrowFeeBps', u16()],
62
- ['padding2', array(u8(), { size: 4 })],
59
+ ['padding2', array(u8(), { size: 8 })],
63
60
  ['padding', bytes({ size: 32 })],
64
61
  ],
65
- { description: 'PositionTokenUsage' }
66
- ) as Serializer<PositionTokenUsageArgs, PositionTokenUsage>;
62
+ { description: 'PositionTokenState' }
63
+ ) as Serializer<PositionTokenStateArgs, PositionTokenState>;
67
64
  }