perena-vault-sdk 1.0.0

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 (242) hide show
  1. package/README.md +396 -0
  2. package/dist/client/account.d.ts +59 -0
  3. package/dist/client/account.d.ts.map +1 -0
  4. package/dist/client/account.js +94 -0
  5. package/dist/client/account.js.map +1 -0
  6. package/dist/client/builders/activateCircuitBreaker.d.ts +12 -0
  7. package/dist/client/builders/activateCircuitBreaker.d.ts.map +1 -0
  8. package/dist/client/builders/activateCircuitBreaker.js +27 -0
  9. package/dist/client/builders/activateCircuitBreaker.js.map +1 -0
  10. package/dist/client/builders/anchorArgs.d.ts +59 -0
  11. package/dist/client/builders/anchorArgs.d.ts.map +1 -0
  12. package/dist/client/builders/anchorArgs.js +43 -0
  13. package/dist/client/builders/anchorArgs.js.map +1 -0
  14. package/dist/client/builders/args.d.ts +754 -0
  15. package/dist/client/builders/args.d.ts.map +1 -0
  16. package/dist/client/builders/args.js +3 -0
  17. package/dist/client/builders/args.js.map +1 -0
  18. package/dist/client/builders/base.d.ts +10 -0
  19. package/dist/client/builders/base.d.ts.map +1 -0
  20. package/dist/client/builders/base.js +20 -0
  21. package/dist/client/builders/base.js.map +1 -0
  22. package/dist/client/builders/cancelJuniorTrancheWithdraw.d.ts +13 -0
  23. package/dist/client/builders/cancelJuniorTrancheWithdraw.d.ts.map +1 -0
  24. package/dist/client/builders/cancelJuniorTrancheWithdraw.js +57 -0
  25. package/dist/client/builders/cancelJuniorTrancheWithdraw.js.map +1 -0
  26. package/dist/client/builders/crankNav.d.ts +29 -0
  27. package/dist/client/builders/crankNav.d.ts.map +1 -0
  28. package/dist/client/builders/crankNav.js +88 -0
  29. package/dist/client/builders/crankNav.js.map +1 -0
  30. package/dist/client/builders/crankPerformanceFees.d.ts +19 -0
  31. package/dist/client/builders/crankPerformanceFees.d.ts.map +1 -0
  32. package/dist/client/builders/crankPerformanceFees.js +80 -0
  33. package/dist/client/builders/crankPerformanceFees.js.map +1 -0
  34. package/dist/client/builders/createAssetHolding.d.ts +13 -0
  35. package/dist/client/builders/createAssetHolding.d.ts.map +1 -0
  36. package/dist/client/builders/createAssetHolding.js +47 -0
  37. package/dist/client/builders/createAssetHolding.js.map +1 -0
  38. package/dist/client/builders/createTrancheState.d.ts +13 -0
  39. package/dist/client/builders/createTrancheState.d.ts.map +1 -0
  40. package/dist/client/builders/createTrancheState.js +57 -0
  41. package/dist/client/builders/createTrancheState.js.map +1 -0
  42. package/dist/client/builders/createVault.d.ts +9 -0
  43. package/dist/client/builders/createVault.d.ts.map +1 -0
  44. package/dist/client/builders/createVault.js +75 -0
  45. package/dist/client/builders/createVault.js.map +1 -0
  46. package/dist/client/builders/disableCircuitBreaker.d.ts +12 -0
  47. package/dist/client/builders/disableCircuitBreaker.d.ts.map +1 -0
  48. package/dist/client/builders/disableCircuitBreaker.js +27 -0
  49. package/dist/client/builders/disableCircuitBreaker.js.map +1 -0
  50. package/dist/client/builders/executeDeposit.d.ts +15 -0
  51. package/dist/client/builders/executeDeposit.d.ts.map +1 -0
  52. package/dist/client/builders/executeDeposit.js +86 -0
  53. package/dist/client/builders/executeDeposit.js.map +1 -0
  54. package/dist/client/builders/executeTrancheDeposit.d.ts +16 -0
  55. package/dist/client/builders/executeTrancheDeposit.d.ts.map +1 -0
  56. package/dist/client/builders/executeTrancheDeposit.js +84 -0
  57. package/dist/client/builders/executeTrancheDeposit.js.map +1 -0
  58. package/dist/client/builders/executeTrancheWithdraw.d.ts +16 -0
  59. package/dist/client/builders/executeTrancheWithdraw.d.ts.map +1 -0
  60. package/dist/client/builders/executeTrancheWithdraw.js +83 -0
  61. package/dist/client/builders/executeTrancheWithdraw.js.map +1 -0
  62. package/dist/client/builders/executeWithdraw.d.ts +14 -0
  63. package/dist/client/builders/executeWithdraw.d.ts.map +1 -0
  64. package/dist/client/builders/executeWithdraw.js +86 -0
  65. package/dist/client/builders/executeWithdraw.js.map +1 -0
  66. package/dist/client/builders/feeCollector.d.ts +17 -0
  67. package/dist/client/builders/feeCollector.d.ts.map +1 -0
  68. package/dist/client/builders/feeCollector.js +66 -0
  69. package/dist/client/builders/feeCollector.js.map +1 -0
  70. package/dist/client/builders/fulfillJuniorTrancheWithdraw.d.ts +14 -0
  71. package/dist/client/builders/fulfillJuniorTrancheWithdraw.d.ts.map +1 -0
  72. package/dist/client/builders/fulfillJuniorTrancheWithdraw.js +82 -0
  73. package/dist/client/builders/fulfillJuniorTrancheWithdraw.js.map +1 -0
  74. package/dist/client/builders/index.d.ts +31 -0
  75. package/dist/client/builders/index.d.ts.map +1 -0
  76. package/dist/client/builders/index.js +47 -0
  77. package/dist/client/builders/index.js.map +1 -0
  78. package/dist/client/builders/initializeVaultRoles.d.ts +12 -0
  79. package/dist/client/builders/initializeVaultRoles.d.ts.map +1 -0
  80. package/dist/client/builders/initializeVaultRoles.js +37 -0
  81. package/dist/client/builders/initializeVaultRoles.js.map +1 -0
  82. package/dist/client/builders/managerRedepositAsset.d.ts +12 -0
  83. package/dist/client/builders/managerRedepositAsset.d.ts.map +1 -0
  84. package/dist/client/builders/managerRedepositAsset.js +52 -0
  85. package/dist/client/builders/managerRedepositAsset.js.map +1 -0
  86. package/dist/client/builders/managerWithdrawAsset.d.ts +12 -0
  87. package/dist/client/builders/managerWithdrawAsset.d.ts.map +1 -0
  88. package/dist/client/builders/managerWithdrawAsset.js +47 -0
  89. package/dist/client/builders/managerWithdrawAsset.js.map +1 -0
  90. package/dist/client/builders/protocolInteraction.d.ts +22 -0
  91. package/dist/client/builders/protocolInteraction.d.ts.map +1 -0
  92. package/dist/client/builders/protocolInteraction.js +157 -0
  93. package/dist/client/builders/protocolInteraction.js.map +1 -0
  94. package/dist/client/builders/removeAssetHolding.d.ts +13 -0
  95. package/dist/client/builders/removeAssetHolding.d.ts.map +1 -0
  96. package/dist/client/builders/removeAssetHolding.js +37 -0
  97. package/dist/client/builders/removeAssetHolding.js.map +1 -0
  98. package/dist/client/builders/requestJuniorTrancheWithdraw.d.ts +14 -0
  99. package/dist/client/builders/requestJuniorTrancheWithdraw.d.ts.map +1 -0
  100. package/dist/client/builders/requestJuniorTrancheWithdraw.js +72 -0
  101. package/dist/client/builders/requestJuniorTrancheWithdraw.js.map +1 -0
  102. package/dist/client/builders/setAssetPriceOracle.d.ts +12 -0
  103. package/dist/client/builders/setAssetPriceOracle.d.ts.map +1 -0
  104. package/dist/client/builders/setAssetPriceOracle.js +40 -0
  105. package/dist/client/builders/setAssetPriceOracle.js.map +1 -0
  106. package/dist/client/builders/setExternalLiquidity.d.ts +12 -0
  107. package/dist/client/builders/setExternalLiquidity.d.ts.map +1 -0
  108. package/dist/client/builders/setExternalLiquidity.js +49 -0
  109. package/dist/client/builders/setExternalLiquidity.js.map +1 -0
  110. package/dist/client/builders/setProtocolFee.d.ts +12 -0
  111. package/dist/client/builders/setProtocolFee.d.ts.map +1 -0
  112. package/dist/client/builders/setProtocolFee.js +37 -0
  113. package/dist/client/builders/setProtocolFee.js.map +1 -0
  114. package/dist/client/builders/setVaultConfig.d.ts +12 -0
  115. package/dist/client/builders/setVaultConfig.d.ts.map +1 -0
  116. package/dist/client/builders/setVaultConfig.js +54 -0
  117. package/dist/client/builders/setVaultConfig.js.map +1 -0
  118. package/dist/client/builders/trancheState.d.ts +28 -0
  119. package/dist/client/builders/trancheState.d.ts.map +1 -0
  120. package/dist/client/builders/trancheState.js +75 -0
  121. package/dist/client/builders/trancheState.js.map +1 -0
  122. package/dist/client/builders/updateAssetPrice.d.ts +18 -0
  123. package/dist/client/builders/updateAssetPrice.d.ts.map +1 -0
  124. package/dist/client/builders/updateAssetPrice.js +50 -0
  125. package/dist/client/builders/updateAssetPrice.js.map +1 -0
  126. package/dist/client/builders/updateConsensusOracle.d.ts +20 -0
  127. package/dist/client/builders/updateConsensusOracle.d.ts.map +1 -0
  128. package/dist/client/builders/updateConsensusOracle.js +64 -0
  129. package/dist/client/builders/updateConsensusOracle.js.map +1 -0
  130. package/dist/client/builders/updateConsensusSigners.d.ts +13 -0
  131. package/dist/client/builders/updateConsensusSigners.d.ts.map +1 -0
  132. package/dist/client/builders/updateConsensusSigners.js +38 -0
  133. package/dist/client/builders/updateConsensusSigners.js.map +1 -0
  134. package/dist/client/builders/updateTrancheConfig.d.ts +13 -0
  135. package/dist/client/builders/updateTrancheConfig.d.ts.map +1 -0
  136. package/dist/client/builders/updateTrancheConfig.js +50 -0
  137. package/dist/client/builders/updateTrancheConfig.js.map +1 -0
  138. package/dist/client/builders/vaultReallocation.d.ts +15 -0
  139. package/dist/client/builders/vaultReallocation.d.ts.map +1 -0
  140. package/dist/client/builders/vaultReallocation.js +148 -0
  141. package/dist/client/builders/vaultReallocation.js.map +1 -0
  142. package/dist/client/client.d.ts +34 -0
  143. package/dist/client/client.d.ts.map +1 -0
  144. package/dist/client/client.js +75 -0
  145. package/dist/client/client.js.map +1 -0
  146. package/dist/client/index.d.ts +8 -0
  147. package/dist/client/index.d.ts.map +1 -0
  148. package/dist/client/index.js +24 -0
  149. package/dist/client/index.js.map +1 -0
  150. package/dist/client/pda.d.ts +42 -0
  151. package/dist/client/pda.d.ts.map +1 -0
  152. package/dist/client/pda.js +88 -0
  153. package/dist/client/pda.js.map +1 -0
  154. package/dist/client/transaction.d.ts +36 -0
  155. package/dist/client/transaction.d.ts.map +1 -0
  156. package/dist/client/transaction.js +39 -0
  157. package/dist/client/transaction.js.map +1 -0
  158. package/dist/client/types/builders.d.ts +12 -0
  159. package/dist/client/types/builders.d.ts.map +1 -0
  160. package/dist/client/types/builders.js +3 -0
  161. package/dist/client/types/builders.js.map +1 -0
  162. package/dist/client/types/tx.d.ts +13 -0
  163. package/dist/client/types/tx.d.ts.map +1 -0
  164. package/dist/client/types/tx.js +3 -0
  165. package/dist/client/types/tx.js.map +1 -0
  166. package/dist/constants.d.ts +45 -0
  167. package/dist/constants.d.ts.map +1 -0
  168. package/dist/constants.js +49 -0
  169. package/dist/constants.js.map +1 -0
  170. package/dist/env.d.ts +70 -0
  171. package/dist/env.d.ts.map +1 -0
  172. package/dist/env.js +117 -0
  173. package/dist/env.js.map +1 -0
  174. package/dist/idl/index.d.ts +3 -0
  175. package/dist/idl/index.d.ts.map +1 -0
  176. package/dist/idl/index.js +6 -0
  177. package/dist/idl/index.js.map +1 -0
  178. package/dist/idl/vault.d.ts +9617 -0
  179. package/dist/idl/vault.d.ts.map +1 -0
  180. package/dist/idl/vault.js +7917 -0
  181. package/dist/idl/vault.js.map +1 -0
  182. package/dist/index.d.ts +7 -0
  183. package/dist/index.d.ts.map +1 -0
  184. package/dist/index.js +23 -0
  185. package/dist/index.js.map +1 -0
  186. package/dist/services/consensusOracle/consensusOracleService.d.ts +38 -0
  187. package/dist/services/consensusOracle/consensusOracleService.d.ts.map +1 -0
  188. package/dist/services/consensusOracle/consensusOracleService.js +270 -0
  189. package/dist/services/consensusOracle/consensusOracleService.js.map +1 -0
  190. package/dist/services/consensusOracle/externalPositions.d.ts +26 -0
  191. package/dist/services/consensusOracle/externalPositions.d.ts.map +1 -0
  192. package/dist/services/consensusOracle/externalPositions.js +37 -0
  193. package/dist/services/consensusOracle/externalPositions.js.map +1 -0
  194. package/dist/services/consensusOracle/index.d.ts +7 -0
  195. package/dist/services/consensusOracle/index.d.ts.map +1 -0
  196. package/dist/services/consensusOracle/index.js +23 -0
  197. package/dist/services/consensusOracle/index.js.map +1 -0
  198. package/dist/services/consensusOracle/jupiterBalanceSource.d.ts +34 -0
  199. package/dist/services/consensusOracle/jupiterBalanceSource.d.ts.map +1 -0
  200. package/dist/services/consensusOracle/jupiterBalanceSource.js +80 -0
  201. package/dist/services/consensusOracle/jupiterBalanceSource.js.map +1 -0
  202. package/dist/services/consensusOracle/jupiterPriceSource.d.ts +25 -0
  203. package/dist/services/consensusOracle/jupiterPriceSource.d.ts.map +1 -0
  204. package/dist/services/consensusOracle/jupiterPriceSource.js +63 -0
  205. package/dist/services/consensusOracle/jupiterPriceSource.js.map +1 -0
  206. package/dist/services/consensusOracle/mockYieldTracker.d.ts +44 -0
  207. package/dist/services/consensusOracle/mockYieldTracker.d.ts.map +1 -0
  208. package/dist/services/consensusOracle/mockYieldTracker.js +107 -0
  209. package/dist/services/consensusOracle/mockYieldTracker.js.map +1 -0
  210. package/dist/services/consensusOracle/types.d.ts +180 -0
  211. package/dist/services/consensusOracle/types.d.ts.map +1 -0
  212. package/dist/services/consensusOracle/types.js +5 -0
  213. package/dist/services/consensusOracle/types.js.map +1 -0
  214. package/dist/services/index.d.ts +4 -0
  215. package/dist/services/index.d.ts.map +1 -0
  216. package/dist/services/index.js +20 -0
  217. package/dist/services/index.js.map +1 -0
  218. package/dist/services/oracleService.d.ts +72 -0
  219. package/dist/services/oracleService.d.ts.map +1 -0
  220. package/dist/services/oracleService.js +93 -0
  221. package/dist/services/oracleService.js.map +1 -0
  222. package/dist/services/withdrawalQueueService.d.ts +76 -0
  223. package/dist/services/withdrawalQueueService.d.ts.map +1 -0
  224. package/dist/services/withdrawalQueueService.js +138 -0
  225. package/dist/services/withdrawalQueueService.js.map +1 -0
  226. package/dist/utils/index.d.ts +4 -0
  227. package/dist/utils/index.d.ts.map +1 -0
  228. package/dist/utils/index.js +20 -0
  229. package/dist/utils/index.js.map +1 -0
  230. package/dist/utils/provider.d.ts +4 -0
  231. package/dist/utils/provider.d.ts.map +1 -0
  232. package/dist/utils/provider.js +10 -0
  233. package/dist/utils/provider.js.map +1 -0
  234. package/dist/utils/rpc.d.ts +4 -0
  235. package/dist/utils/rpc.d.ts.map +1 -0
  236. package/dist/utils/rpc.js +8 -0
  237. package/dist/utils/rpc.js.map +1 -0
  238. package/dist/utils/token.d.ts +6 -0
  239. package/dist/utils/token.d.ts.map +1 -0
  240. package/dist/utils/token.js +32 -0
  241. package/dist/utils/token.js.map +1 -0
  242. package/package.json +50 -0
package/README.md ADDED
@@ -0,0 +1,396 @@
1
+ # Vault SDK
2
+
3
+ TypeScript helpers for the Bankineco vault program. The SDK wraps PDA derivation,
4
+ account fetching, and instruction building behind a single `VaultClient`. Every
5
+ on-chain instruction has a **transaction builder** on `client.tx` that returns a
6
+ `VaultTransactionPlan` you can sign and send.
7
+
8
+ For runnable CLI examples, see [`scripts/README.md`](scripts/README.md).
9
+
10
+ ## Install
11
+
12
+ From the monorepo (workspace package name is `vault`):
13
+
14
+ ```bash
15
+ pnpm install
16
+ pnpm --filter vault run build
17
+ ```
18
+
19
+ In another workspace package:
20
+
21
+ ```json
22
+ {
23
+ "dependencies": {
24
+ "vault": "workspace:*"
25
+ }
26
+ }
27
+ ```
28
+
29
+ ## Quick start
30
+
31
+ ### Option A — `createVaultClient` (scripts and backend services)
32
+
33
+ Use this when targeting deployed `test` or `prod` networks. It wires RPC,
34
+ keypair, and program id from env vars (see [`.env.example`](.env.example)).
35
+
36
+ ```typescript
37
+ import { createVaultClient } from "vault";
38
+
39
+ const { client, payer, signer } = createVaultClient("test", {
40
+ role: "vault", // default keypair: ~/.config/solana/vault-test.json
41
+ });
42
+
43
+ const vault = "..." as Address; // vault PDA
44
+ const vaultAccount = await client.account.fetchVault(vault);
45
+
46
+ const plan = await client.tx.executeDeposit.getTx({
47
+ user: signer,
48
+ vault,
49
+ assetMint: vaultAccount.config.baseAssetMint,
50
+ shareMint: vaultAccount.config.shareMint,
51
+ amount: 1_000_000n, // base units (6 decimals → 1.0 UI)
52
+ });
53
+
54
+ const signature = await client.sendTransaction(payer, plan);
55
+ console.log(signature);
56
+ ```
57
+
58
+ ### Option B — manual `VaultClient` (tests, custom integrations)
59
+
60
+ Use this when you already have a `Connection` and signer:
61
+
62
+ ```typescript
63
+ import { AnchorProvider } from "@anchor-lang/core";
64
+ import { Connection, Keypair } from "@solana/web3.js";
65
+ import { fromWeb3Pk } from "common";
66
+ import { VaultClient, makeProvider } from "vault";
67
+
68
+ const connection = new Connection("http://127.0.0.1:8899", "confirmed");
69
+ const payer = Keypair.generate();
70
+ const client = new VaultClient(makeProvider(connection, payer));
71
+
72
+ const [vault] = await client.pda.deriveVaultPda(0); // vault id
73
+ ```
74
+
75
+ ## Creating transactions
76
+
77
+ ### The builder pattern
78
+
79
+ Every instruction lives on `client.tx.<builderName>`. Builders follow the same
80
+ contract:
81
+
82
+ | Method | Returns | When to use |
83
+ | --- | --- | --- |
84
+ | `getTx(txArgs)` | `VaultTransactionPlan` | **Preferred.** Derives PDAs/ATAs, prepends setup ixs (e.g. idempotent ATA creates), and attaches cache invalidation metadata. |
85
+ | `getIx(ixArgs)` | `Instruction` | Low-level. You supply every account address yourself. |
86
+
87
+ `TxArgs` types are the high-level inputs (curator, vault, amounts as `bigint`,
88
+ optional PDAs). `IxArgs` types are the fully-resolved account sets the program
89
+ expects. Type definitions live in
90
+ [`src/client/builders/args.ts`](src/client/builders/args.ts).
91
+
92
+ A typical flow:
93
+
94
+ ```typescript
95
+ // 1. Build a plan
96
+ const plan = await client.tx.executeDeposit.getTx({
97
+ user: signer,
98
+ vault,
99
+ assetMint,
100
+ shareMint,
101
+ amount: 500_000n,
102
+ });
103
+
104
+ // 2. Send it (signs, confirms, clears relevant account cache)
105
+ const sig = await client.sendTransaction(payer, plan);
106
+ ```
107
+
108
+ `VaultTransactionPlan` contains:
109
+
110
+ - `instructions` — ordered `@solana/kit` instructions (preamble + program ix)
111
+ - `lookupTables?` — optional address lookup tables for v0 transactions
112
+ - `postSuccessCacheInvalidations?` — vault cache keys to clear after success
113
+
114
+ ### Example: deposit
115
+
116
+ ```typescript
117
+ const plan = await client.tx.executeDeposit.getTx({
118
+ user: signer,
119
+ vault,
120
+ assetMint,
121
+ shareMint,
122
+ amount: 1_000_000n,
123
+ });
124
+ await client.sendTransaction(payer, plan);
125
+ ```
126
+
127
+ The builder automatically:
128
+
129
+ - Derives `vaultOracle` from the vault PDA
130
+ - Computes user/vault ATAs
131
+ - Prepends idempotent ATA-create instructions where needed
132
+
133
+ ### Example: withdraw
134
+
135
+ ```typescript
136
+ const plan = await client.tx.executeWithdraw.getTx({
137
+ user: signer,
138
+ vault,
139
+ assetMint,
140
+ shareMint,
141
+ shareAmount: 500_000n,
142
+ });
143
+ await client.sendTransaction(payer, plan);
144
+ ```
145
+
146
+ For withdrawals routed through external liquidity (CPI), pass
147
+ `externalWithdrawIxRefs`, `externalWithdrawAccounts`, and optionally
148
+ `lookupTables` — see `ExecuteWithdrawTxArgs` in `args.ts`.
149
+
150
+ ### Example: vault setup (multi-step)
151
+
152
+ Deploy flows compose several builders in sequence:
153
+
154
+ ```typescript
155
+ const curator = fromWeb3Pk(payer.publicKey);
156
+
157
+ await client.sendTransaction(
158
+ payer,
159
+ await client.tx.createVault.getTx({
160
+ curator,
161
+ shareMint,
162
+ strictAssetMint: assetMint,
163
+ assetDecimals: 6,
164
+ })
165
+ );
166
+
167
+ await client.sendTransaction(
168
+ payer,
169
+ await client.tx.createTrancheState.getTx({
170
+ curator,
171
+ vault,
172
+ juniorShareMint,
173
+ seniorShareMint,
174
+ seniorFixedApyBps: 1_000,
175
+ })
176
+ );
177
+
178
+ await client.sendTransaction(
179
+ payer,
180
+ await client.tx.updateConsensusSigners.getTx({
181
+ curator,
182
+ vault,
183
+ signers: [curator],
184
+ })
185
+ );
186
+ ```
187
+
188
+ ### Example: tranche deposit
189
+
190
+ ```typescript
191
+ const plan = await client.tx.executeTrancheDeposit.getTx({
192
+ user: signer,
193
+ vault,
194
+ assetMint,
195
+ trancheShareMint: juniorMint,
196
+ kind: { junior: {} }, // or { senior: {} }
197
+ amount: 1_000_000n,
198
+ });
199
+ await client.sendTransaction(payer, plan);
200
+ ```
201
+
202
+ ### Example: junior withdrawal queue
203
+
204
+ ```typescript
205
+ // User queues a locked junior withdraw
206
+ await client.sendTransaction(
207
+ payer,
208
+ await client.tx.requestJuniorTrancheWithdraw.getTx({
209
+ owner: signer,
210
+ vault,
211
+ juniorMint,
212
+ queueId: 0,
213
+ shareAmount: 100_000n,
214
+ })
215
+ );
216
+
217
+ // Fulfiller pays out after lockup (see WithdrawalQueueService for batch logic)
218
+ await client.sendTransaction(
219
+ fulfiller,
220
+ await client.tx.fulfillJuniorTrancheWithdraw.getTx({
221
+ fulfiller: fromWeb3Pk(fulfiller.publicKey),
222
+ owner,
223
+ vault,
224
+ queueId: 0,
225
+ })
226
+ );
227
+ ```
228
+
229
+ ## Sending transactions
230
+
231
+ ### Built-in helper
232
+
233
+ `VaultClient.sendTransaction` builds a legacy `Transaction`, signs with the
234
+ fee payer, sends, confirms, and applies cache invalidations from the plan:
235
+
236
+ ```typescript
237
+ const signature = await client.sendTransaction(payer, plan);
238
+ ```
239
+
240
+ ### Versioned transactions (lookup tables)
241
+
242
+ Some builders (e.g. `executeWithdraw`, `protocolInteraction`, `jupiterSwap`)
243
+ return `lookupTables` on the plan. `sendTransaction` does **not** compile v0
244
+ messages — use `sendVersionedTransaction` from `common` instead:
245
+
246
+ ```typescript
247
+ import { fromKitInstruction, sendVersionedTransaction } from "common";
248
+
249
+ const plan = await client.tx.protocolInteraction.getTx({ /* ... */ });
250
+
251
+ const signature = await sendVersionedTransaction({
252
+ connection: client.provider.connection,
253
+ payer,
254
+ instructions: plan.instructions.map(fromKitInstruction),
255
+ lookupTables: plan.lookupTables ?? [],
256
+ });
257
+
258
+ client.applyCacheInvalidations(plan);
259
+ ```
260
+
261
+ ### Composing your own transaction
262
+
263
+ You can merge instructions from multiple builders or mix in custom ixs:
264
+
265
+ ```typescript
266
+ const depositPlan = await client.tx.executeDeposit.getTx({ /* ... */ });
267
+ const customIx = /* your instruction */;
268
+
269
+ const combined: VaultTransactionPlan = {
270
+ instructions: [...depositPlan.instructions, customIx],
271
+ postSuccessCacheInvalidations: depositPlan.postSuccessCacheInvalidations,
272
+ };
273
+ ```
274
+
275
+ Or call `getIx` directly when you only need the program instruction:
276
+
277
+ ```typescript
278
+ const ix = await client.tx.executeDeposit.getIx({
279
+ user: signer,
280
+ vault,
281
+ vaultOracle,
282
+ vaultTrancheState: null,
283
+ assetMint,
284
+ shareMint,
285
+ amount: new BN("1000000"),
286
+ assetTokenProgram: TOKEN_PROGRAM_ID,
287
+ shareTokenProgram: TOKEN_PROGRAM_ID,
288
+ userAssetAta,
289
+ vaultAssetAta,
290
+ userShareAta,
291
+ });
292
+ ```
293
+
294
+ ## Reading on-chain state
295
+
296
+ Use `client.account` to fetch decoded vault accounts (cached by default, TTL
297
+ 60s):
298
+
299
+ ```typescript
300
+ const vaultAccount = await client.account.fetchVault(vault);
301
+ const oracle = await client.account.fetchVaultOracle(vaultOraclePda);
302
+ const trancheState = await client.account.fetchVaultTrancheState(tranchePda);
303
+
304
+ // Force a fresh read after an external tx
305
+ const fresh = await client.account.fetchVault(vault, { fresh: true });
306
+ client.clearAllCache();
307
+ ```
308
+
309
+ Derive PDAs with `client.pda`:
310
+
311
+ ```typescript
312
+ const [vault] = await client.pda.deriveVaultPda(vaultId);
313
+ const [vaultOracle] = await client.pda.deriveVaultOraclePda(vault);
314
+ const [trancheState] = await client.pda.deriveVaultTrancheStatePda(vault);
315
+ const [queue] = await client.pda.deriveWithdrawalQueuePda(
316
+ vault,
317
+ owner,
318
+ queueId
319
+ );
320
+ ```
321
+
322
+ ## Available transaction builders
323
+
324
+ All builders are on `client.tx`:
325
+
326
+ | Builder | Program instruction | Typical signer |
327
+ | --- | --- | --- |
328
+ | `createVault` | `create_vault` | Curator |
329
+ | `createAssetHolding` | `create_asset_holding` | HW manager |
330
+ | `removeAssetHolding` | `remove_asset_holding` | HW manager |
331
+ | `updateConsensusSigners` | `update_consensus_signers` | Curator |
332
+ | `createTrancheState` | `create_tranche_state` | Curator |
333
+ | `setVaultConfig` | `set_vault_config` | Curator |
334
+ | `updateTrancheConfig` | `update_tranche_config` | Curator |
335
+ | `activateCircuitBreaker` | `activate_circuit_breaker` | CB trigger |
336
+ | `disableCircuitBreaker` | `disable_circuit_breaker` | Curator |
337
+ | `updateConsensusOracle` | `update_consensus_oracle` | Consensus signer |
338
+ | `executeDeposit` | `execute_deposit` | User |
339
+ | `executeTrancheDeposit` | `execute_tranche_deposit` | User |
340
+ | `executeTrancheWithdraw` | `execute_tranche_withdraw` | User |
341
+ | `requestJuniorTrancheWithdraw` | `request_junior_tranche_withdraw` | Owner |
342
+ | `cancelJuniorTrancheWithdraw` | `cancel_junior_tranche_withdraw` | Owner |
343
+ | `fulfillJuniorTrancheWithdraw` | `fulfill_junior_tranche_withdraw` | Fulfiller |
344
+ | `executeWithdraw` | `execute_withdraw` | User |
345
+ | `managerWithdrawAsset` | `manager_withdraw_asset` | HW manager |
346
+ | `managerRedepositAsset` | `manager_redeposit_asset` | HW manager |
347
+ | `protocolInteraction` | `protocol_interaction` | HW manager |
348
+ | `jupiterSwap` | `jupiter_swap` | HW manager |
349
+ | `setExternalLiquidity` | `set_external_liquidity` | HW manager |
350
+ | `setAssetPriceOracle` | `set_asset_price_oracle` | Curator |
351
+ | `updateAssetPrice` | `update_asset_price` | Oracle keeper |
352
+ | `vaultReallocation` | `vault_reallocation` | HW manager |
353
+ | `withdrawProtocolFees` | `withdraw_protocol_fees` | Curator |
354
+ | `withdrawTrancheFees` | `withdraw_tranche_fees` | Curator |
355
+
356
+ Argument shapes for each builder: [`src/client/builders/args.ts`](src/client/builders/args.ts).
357
+
358
+ ## Higher-level services
359
+
360
+ For recurring backend work, prefer the services layer over reimplementing
361
+ discovery logic in your app:
362
+
363
+ - **`WithdrawalQueueService`** — scan and fulfill eligible junior withdrawal
364
+ queues (`src/services/withdrawalQueueService.ts`)
365
+ - **`OracleService`** — consensus oracle / asset price updates
366
+ (`src/services/oracleService.ts`)
367
+
368
+ These services call the same `client.tx.*.getTx` builders internally.
369
+
370
+ ## Environment and RPC
371
+
372
+ Copy [`.env.example`](.env.example) to `.env`. RPC resolution order:
373
+
374
+ 1. `VAULT_RPC_URL_TEST` / `VAULT_RPC_URL_PROD`
375
+ 2. `RPC_URL`
376
+ 3. `HELIUS_API_KEY` (auto-built Helius URL)
377
+
378
+ Program ids per environment: `getVaultProgramId("test" | "prod")` in
379
+ [`src/env.ts`](src/env.ts).
380
+
381
+ ## CLI scripts
382
+
383
+ Thin wrappers around the SDK live in [`scripts/`](scripts/). From the repo root:
384
+
385
+ ```bash
386
+ pnpm deposit test <VAULT_PDA> 100
387
+ pnpm inspect prod <VAULT_PDA>
388
+ ```
389
+
390
+ See [`scripts/README.md`](scripts/README.md) for the full command list.
391
+
392
+ ## Types and addresses
393
+
394
+ - Public keys use `@solana/kit` `Address` strings in builder args.
395
+ - Convert from web3.js: `fromWeb3Pk(keypair.publicKey)` (from `common`).
396
+ - Amounts in `TxArgs` are `bigint` base units unless noted otherwise.
@@ -0,0 +1,59 @@
1
+ import type { Address, Rpc, SolanaRpcApi } from "@solana/kit";
2
+ import { IdlAccounts, Program } from "@anchor-lang/core";
3
+ import { BaseAccountClient } from "common";
4
+ import type { Vault } from "../idl/vault";
5
+ import type { PdaClient } from "./pda";
6
+ export declare const VAULT_CACHE_CATEGORY = "vault";
7
+ export declare const FEE_VAULT_CACHE_CATEGORY = "fee_vault";
8
+ export declare const VAULT_ORACLE_CACHE_CATEGORY = "vault_oracle";
9
+ export declare const VAULT_TRANCHE_STATE_CACHE_CATEGORY = "vault_tranche_state";
10
+ export declare const VAULT_TRANCHE_WITHDRAWAL_QUEUE_CACHE_CATEGORY = "vault_tranche_withdrawal_queue";
11
+ /** Decoded on-chain `Vault` account (from generated IDL types). */
12
+ export type VaultAccountData = IdlAccounts<Vault>["vault"];
13
+ export type FeeVaultAccountData = IdlAccounts<Vault>["feeVault"];
14
+ export type VaultOracleAccountData = IdlAccounts<Vault>["vaultOracle"];
15
+ export type VaultTrancheStateAccountData = IdlAccounts<Vault>["vaultTrancheState"];
16
+ export type VaultTrancheWithdrawalQueueAccountData = IdlAccounts<Vault>["vaultWithdrawalQueue"];
17
+ /**
18
+ * Account fetchers for the vault program.
19
+ */
20
+ export declare class AccountClient extends BaseAccountClient {
21
+ private readonly program;
22
+ readonly pda: PdaClient;
23
+ constructor(program: Program<Vault>, pda: PdaClient, rpc: Rpc<SolanaRpcApi>);
24
+ fetchVault(vault: Address, opts?: {
25
+ fresh?: boolean;
26
+ }): Promise<VaultAccountData>;
27
+ fetchVaults(vaults: Address[]): Promise<VaultAccountData[]>;
28
+ fetchFeeVault(feeVault: Address, opts?: {
29
+ fresh?: boolean;
30
+ }): Promise<FeeVaultAccountData>;
31
+ fetchFeeVaultForVault(vault: Address, opts?: {
32
+ fresh?: boolean;
33
+ }): Promise<FeeVaultAccountData>;
34
+ fetchVaultOracle(vaultOracle: Address, opts?: {
35
+ fresh?: boolean;
36
+ }): Promise<VaultOracleAccountData>;
37
+ fetchVaultOracleForVault(vault: Address, opts?: {
38
+ fresh?: boolean;
39
+ }): Promise<VaultOracleAccountData>;
40
+ fetchVaultTrancheState(vaultTrancheState: Address, opts?: {
41
+ fresh?: boolean;
42
+ }): Promise<VaultTrancheStateAccountData>;
43
+ fetchVaultTrancheStateForVault(vault: Address, opts?: {
44
+ fresh?: boolean;
45
+ }): Promise<VaultTrancheStateAccountData>;
46
+ fetchVaultTrancheWithdrawalQueue(withdrawalQueue: Address, opts?: {
47
+ fresh?: boolean;
48
+ }): Promise<VaultTrancheWithdrawalQueueAccountData>;
49
+ fetchVaultTrancheWithdrawalQueueForOwner(vault: Address, owner: Address, queueId: number, opts?: {
50
+ fresh?: boolean;
51
+ }): Promise<VaultTrancheWithdrawalQueueAccountData>;
52
+ fetchAllVaults(opts?: {
53
+ fresh?: boolean;
54
+ }): Promise<{
55
+ publicKey: Address;
56
+ account: VaultAccountData;
57
+ }[]>;
58
+ }
59
+ //# sourceMappingURL=account.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../src/client/account.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AccountClient = exports.VAULT_TRANCHE_WITHDRAWAL_QUEUE_CACHE_CATEGORY = exports.VAULT_TRANCHE_STATE_CACHE_CATEGORY = exports.VAULT_ORACLE_CACHE_CATEGORY = exports.FEE_VAULT_CACHE_CATEGORY = exports.VAULT_CACHE_CATEGORY = void 0;
4
+ const common_1 = require("common");
5
+ exports.VAULT_CACHE_CATEGORY = "vault";
6
+ exports.FEE_VAULT_CACHE_CATEGORY = "fee_vault";
7
+ exports.VAULT_ORACLE_CACHE_CATEGORY = "vault_oracle";
8
+ exports.VAULT_TRANCHE_STATE_CACHE_CATEGORY = "vault_tranche_state";
9
+ exports.VAULT_TRANCHE_WITHDRAWAL_QUEUE_CACHE_CATEGORY = "vault_tranche_withdrawal_queue";
10
+ /**
11
+ * Account fetchers for the vault program.
12
+ */
13
+ class AccountClient extends common_1.BaseAccountClient {
14
+ constructor(program, pda, rpc) {
15
+ super(rpc, {
16
+ categoryTtlMs: {
17
+ [exports.VAULT_CACHE_CATEGORY]: 60000,
18
+ [exports.FEE_VAULT_CACHE_CATEGORY]: 60000,
19
+ [exports.VAULT_ORACLE_CACHE_CATEGORY]: 60000,
20
+ [exports.VAULT_TRANCHE_STATE_CACHE_CATEGORY]: 60000,
21
+ [exports.VAULT_TRANCHE_WITHDRAWAL_QUEUE_CACHE_CATEGORY]: 60000,
22
+ },
23
+ });
24
+ this.program = program;
25
+ this.pda = pda;
26
+ }
27
+ async fetchVault(vault, opts) {
28
+ if (opts?.fresh) {
29
+ this.dataCache.clearCacheEntry(exports.VAULT_CACHE_CATEGORY, vault);
30
+ }
31
+ const { data } = await this.dataCache.getDataOrThrow(() => this.program.account.vault.fetch((0, common_1.toWeb3Pk)(vault)), exports.VAULT_CACHE_CATEGORY, vault);
32
+ return data;
33
+ }
34
+ async fetchVaults(vaults) {
35
+ const { data } = await this.dataCache.getDataBatch(() => this.program.account.vault.fetchMultiple(vaults.map(common_1.toWeb3Pk)), exports.VAULT_CACHE_CATEGORY, vaults);
36
+ return data;
37
+ }
38
+ async fetchFeeVault(feeVault, opts) {
39
+ if (opts?.fresh) {
40
+ this.dataCache.clearCacheEntry(exports.FEE_VAULT_CACHE_CATEGORY, feeVault);
41
+ }
42
+ const { data } = await this.dataCache.getDataOrThrow(() => this.program.account.feeVault.fetch((0, common_1.toWeb3Pk)(feeVault)), exports.FEE_VAULT_CACHE_CATEGORY, feeVault);
43
+ return data;
44
+ }
45
+ async fetchFeeVaultForVault(vault, opts) {
46
+ const [feeVault] = await this.pda.deriveFeeAuthorityPda(vault);
47
+ return this.fetchFeeVault(feeVault, opts);
48
+ }
49
+ async fetchVaultOracle(vaultOracle, opts) {
50
+ if (opts?.fresh) {
51
+ this.dataCache.clearCacheEntry(exports.VAULT_ORACLE_CACHE_CATEGORY, vaultOracle);
52
+ }
53
+ const { data } = await this.dataCache.getDataOrThrow(() => this.program.account.vaultOracle.fetch((0, common_1.toWeb3Pk)(vaultOracle)), exports.VAULT_ORACLE_CACHE_CATEGORY, vaultOracle);
54
+ return data;
55
+ }
56
+ async fetchVaultOracleForVault(vault, opts) {
57
+ const [vaultOracle] = await this.pda.deriveVaultOraclePda(vault);
58
+ return this.fetchVaultOracle(vaultOracle, opts);
59
+ }
60
+ async fetchVaultTrancheState(vaultTrancheState, opts) {
61
+ if (opts?.fresh) {
62
+ this.dataCache.clearCacheEntry(exports.VAULT_TRANCHE_STATE_CACHE_CATEGORY, vaultTrancheState);
63
+ }
64
+ const { data } = await this.dataCache.getDataOrThrow(() => this.program.account.vaultTrancheState.fetch((0, common_1.toWeb3Pk)(vaultTrancheState)), exports.VAULT_TRANCHE_STATE_CACHE_CATEGORY, vaultTrancheState);
65
+ return data;
66
+ }
67
+ async fetchVaultTrancheStateForVault(vault, opts) {
68
+ const [vaultTrancheState] = await this.pda.deriveVaultTrancheStatePda(vault);
69
+ return this.fetchVaultTrancheState(vaultTrancheState, opts);
70
+ }
71
+ async fetchVaultTrancheWithdrawalQueue(withdrawalQueue, opts) {
72
+ if (opts?.fresh) {
73
+ this.dataCache.clearCacheEntry(exports.VAULT_TRANCHE_WITHDRAWAL_QUEUE_CACHE_CATEGORY, withdrawalQueue);
74
+ }
75
+ const { data } = await this.dataCache.getDataOrThrow(() => this.program.account.vaultWithdrawalQueue.fetch((0, common_1.toWeb3Pk)(withdrawalQueue)), exports.VAULT_TRANCHE_WITHDRAWAL_QUEUE_CACHE_CATEGORY, withdrawalQueue);
76
+ return data;
77
+ }
78
+ async fetchVaultTrancheWithdrawalQueueForOwner(vault, owner, queueId, opts) {
79
+ const [withdrawalQueue] = await this.pda.deriveVaultTrancheWithdrawalQueuePda(vault, owner, queueId);
80
+ return this.fetchVaultTrancheWithdrawalQueue(withdrawalQueue, opts);
81
+ }
82
+ async fetchAllVaults(opts) {
83
+ if (opts?.fresh) {
84
+ this.dataCache.clearCacheEntry(exports.VAULT_CACHE_CATEGORY, "all");
85
+ }
86
+ const { data } = await this.dataCache.getDataOrThrow(() => this.program.account.vault.all(), exports.VAULT_CACHE_CATEGORY, "all");
87
+ return data.map((acc) => ({
88
+ publicKey: (0, common_1.fromWeb3Pk)(acc.publicKey),
89
+ account: acc.account,
90
+ }));
91
+ }
92
+ }
93
+ exports.AccountClient = AccountClient;
94
+ //# sourceMappingURL=account.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.js","sourceRoot":"","sources":["../../src/client/account.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { VaultBuilderBase } from "./base";
2
+ import type { ActivateCircuitBreakerIxArgs, ActivateCircuitBreakerTxArgs } from "./args";
3
+ export declare class ActivateCircuitBreakerBuilder extends VaultBuilderBase<ActivateCircuitBreakerIxArgs, ActivateCircuitBreakerTxArgs> {
4
+ getIx(args: ActivateCircuitBreakerIxArgs): Promise<import("@solana/kit").Instruction<string, readonly (import("@solana/kit").AccountLookupMeta<string, string> | import("@solana/kit").AccountMeta<string>)[]>>;
5
+ protected deriveIxArgs(txArgs: ActivateCircuitBreakerTxArgs): Promise<ActivateCircuitBreakerIxArgs>;
6
+ protected buildPlanExtras(args: ActivateCircuitBreakerIxArgs): Promise<{
7
+ postSuccessCacheInvalidations: {
8
+ vaultPda: import("@solana/kit").Address;
9
+ }[];
10
+ }>;
11
+ }
12
+ //# sourceMappingURL=activateCircuitBreaker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activateCircuitBreaker.d.ts","sourceRoot":"","sources":["../../../src/client/builders/activateCircuitBreaker.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,KAAK,EACV,4BAA4B,EAC5B,4BAA4B,EAC7B,MAAM,QAAQ,CAAC;AAEhB,qBAAa,6BAA8B,SAAQ,gBAAgB,CACjE,4BAA4B,EAC5B,4BAA4B,CAC7B;IACO,KAAK,CAAC,IAAI,EAAE,4BAA4B;cAW9B,YAAY,CAC1B,MAAM,EAAE,4BAA4B,GACnC,OAAO,CAAC,4BAA4B,CAAC;cAIxB,eAAe,CAAC,IAAI,EAAE,4BAA4B;;;;;CAKnE"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ActivateCircuitBreakerBuilder = void 0;
4
+ const common_1 = require("common");
5
+ const base_1 = require("./base");
6
+ class ActivateCircuitBreakerBuilder extends base_1.VaultBuilderBase {
7
+ async getIx(args) {
8
+ return this.program.methods
9
+ .activateCircuitBreaker()
10
+ .accountsPartial({
11
+ cbTrigger: (0, common_1.toWeb3Pk)(args.cbTrigger),
12
+ vault: (0, common_1.toWeb3Pk)(args.vault),
13
+ })
14
+ .instruction()
15
+ .then(common_1.toKitInstruction);
16
+ }
17
+ async deriveIxArgs(txArgs) {
18
+ return txArgs;
19
+ }
20
+ async buildPlanExtras(args) {
21
+ return {
22
+ postSuccessCacheInvalidations: [{ vaultPda: args.vault }],
23
+ };
24
+ }
25
+ }
26
+ exports.ActivateCircuitBreakerBuilder = ActivateCircuitBreakerBuilder;
27
+ //# sourceMappingURL=activateCircuitBreaker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activateCircuitBreaker.js","sourceRoot":"","sources":["../../../src/client/builders/activateCircuitBreaker.ts"],"names":[],"mappings":";;;AAAA,mCAAoD;AAEpD,iCAA0C;AAM1C,MAAa,6BAA8B,SAAQ,uBAGlD;IACC,KAAK,CAAC,KAAK,CAAC,IAAkC;QAC5C,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO;aACxB,sBAAsB,EAAE;aACxB,eAAe,CAAC;YACf,SAAS,EAAE,IAAA,iBAAQ,EAAC,IAAI,CAAC,SAAS,CAAC;YACnC,KAAK,EAAE,IAAA,iBAAQ,EAAC,IAAI,CAAC,KAAK,CAAC;SAC5B,CAAC;aACD,WAAW,EAAE;aACb,IAAI,CAAC,yBAAgB,CAAC,CAAC;IAC5B,CAAC;IAES,KAAK,CAAC,YAAY,CAC1B,MAAoC;QAEpC,OAAO,MAAM,CAAC;IAChB,CAAC;IAES,KAAK,CAAC,eAAe,CAAC,IAAkC;QAChE,OAAO;YACL,6BAA6B,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;SAC1D,CAAC;IACJ,CAAC;CACF;AA1BD,sEA0BC"}
@@ -0,0 +1,59 @@
1
+ import { BN } from "@anchor-lang/core";
2
+ import type { Address } from "@solana/kit";
3
+ import type { ConsensusAssetUpdate, CreateVaultParams } from "./args";
4
+ export declare function toAnchorCreateVaultParams(params: CreateVaultParams): {
5
+ hwManager: import("@solana/web3.js").PublicKey;
6
+ cbTrigger: import("@solana/web3.js").PublicKey;
7
+ feeCollector: import("@solana/web3.js").PublicKey;
8
+ baseAssetMint: import("@solana/web3.js").PublicKey;
9
+ basePriceOracleAccount: import("@solana/web3.js").PublicKey;
10
+ vaultId: number;
11
+ assetDecimals: number;
12
+ mintFeeBps: number;
13
+ burnFeeBps: number;
14
+ performanceFeeBps: number;
15
+ fixedApyBps: number;
16
+ maxApyBps: number;
17
+ tvlLimit: BN;
18
+ lossesEnabled: boolean;
19
+ initialMintSharePrice: BN | null;
20
+ basePriceOracleType: number;
21
+ basePrice: BN;
22
+ forMigration: boolean;
23
+ };
24
+ export declare function toAnchorSetVaultConfigArgs(args: {
25
+ manager: Address | null;
26
+ hwManager: Address | null;
27
+ cbTrigger: Address | null;
28
+ fulfiller: Address | null;
29
+ feeCollector: Address | null;
30
+ mintFeeBps: number | null;
31
+ burnFeeBps: number | null;
32
+ performanceFeeBps: number | null;
33
+ fixedApyBps: number | null;
34
+ maxApyBps: number | null;
35
+ tvlLimit: BN | null;
36
+ lossesEnabled: boolean | null;
37
+ priceStalenessThresholdSecs: BN | null;
38
+ }): {
39
+ manager: import("@solana/web3.js").PublicKey | null;
40
+ hwManager: import("@solana/web3.js").PublicKey | null;
41
+ cbTrigger: import("@solana/web3.js").PublicKey | null;
42
+ fulfiller: import("@solana/web3.js").PublicKey | null;
43
+ feeCollector: import("@solana/web3.js").PublicKey | null;
44
+ mintFeeBps: number | null;
45
+ burnFeeBps: number | null;
46
+ performanceFeeBps: number | null;
47
+ fixedApyBps: number | null;
48
+ maxApyBps: number | null;
49
+ tvlLimit: BN | null;
50
+ lossesEnabled: boolean | null;
51
+ priceStalenessThresholdSecs: BN | null;
52
+ };
53
+ export declare function toAnchorConsensusUpdates(updates: ConsensusAssetUpdate[]): {
54
+ holdingIndex: number;
55
+ mint: import("@solana/web3.js").PublicKey | null;
56
+ price: BN;
57
+ externalAmount: BN;
58
+ }[];
59
+ //# sourceMappingURL=anchorArgs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anchorArgs.d.ts","sourceRoot":"","sources":["../../../src/client/builders/anchorArgs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAEtE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,iBAAiB;;;;;;;;;;;;;;;;;;;EASlE;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE;IAC/C,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,EAAE,GAAG,IAAI,CAAC;IACpB,aAAa,EAAE,OAAO,GAAG,IAAI,CAAC;IAC9B,2BAA2B,EAAE,EAAE,GAAG,IAAI,CAAC;CACxC;;;;;;;;;;;;;;EAgBA;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,oBAAoB,EAAE;;;;;IAOvE"}