@voltr/vault-sdk 1.1.0 → 2.1.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 (508) hide show
  1. package/dist/extensions/batchFetchers.d.ts +7 -0
  2. package/dist/extensions/batchFetchers.d.ts.map +1 -0
  3. package/dist/extensions/batchFetchers.js +63 -0
  4. package/dist/extensions/batchFetchers.js.map +1 -0
  5. package/dist/extensions/decimal.d.ts +11 -0
  6. package/dist/extensions/decimal.d.ts.map +1 -0
  7. package/dist/extensions/decimal.js +19 -0
  8. package/dist/extensions/decimal.js.map +1 -0
  9. package/dist/extensions/events.d.ts +33 -0
  10. package/dist/extensions/events.d.ts.map +1 -0
  11. package/dist/extensions/events.js +203 -0
  12. package/dist/extensions/events.js.map +1 -0
  13. package/dist/extensions/fees.d.ts +6 -0
  14. package/dist/extensions/fees.d.ts.map +1 -0
  15. package/dist/extensions/fees.js +23 -0
  16. package/dist/extensions/fees.js.map +1 -0
  17. package/dist/extensions/index.d.ts +11 -0
  18. package/dist/extensions/index.d.ts.map +1 -0
  19. package/dist/extensions/index.js +27 -0
  20. package/dist/extensions/index.js.map +1 -0
  21. package/dist/extensions/lpEconomics.d.ts +27 -0
  22. package/dist/extensions/lpEconomics.d.ts.map +1 -0
  23. package/dist/extensions/lpEconomics.js +140 -0
  24. package/dist/extensions/lpEconomics.js.map +1 -0
  25. package/dist/extensions/math.d.ts +90 -0
  26. package/dist/extensions/math.d.ts.map +1 -0
  27. package/dist/extensions/math.js +182 -0
  28. package/dist/extensions/math.js.map +1 -0
  29. package/dist/extensions/metadataPda.d.ts +18 -0
  30. package/dist/extensions/metadataPda.d.ts.map +1 -0
  31. package/dist/extensions/metadataPda.js +34 -0
  32. package/dist/extensions/metadataPda.js.map +1 -0
  33. package/dist/extensions/position.d.ts +19 -0
  34. package/dist/extensions/position.d.ts.map +1 -0
  35. package/dist/extensions/position.js +28 -0
  36. package/dist/extensions/position.js.map +1 -0
  37. package/dist/extensions/rpc.d.ts +8 -0
  38. package/dist/extensions/rpc.d.ts.map +1 -0
  39. package/dist/{types/voltr_vault.js → extensions/rpc.js} +1 -0
  40. package/dist/extensions/rpc.js.map +1 -0
  41. package/dist/extensions/withdrawals.d.ts +16 -0
  42. package/dist/extensions/withdrawals.d.ts.map +1 -0
  43. package/dist/extensions/withdrawals.js +59 -0
  44. package/dist/extensions/withdrawals.js.map +1 -0
  45. package/dist/generated/accounts/adaptorAddReceipt.d.ts +57 -0
  46. package/dist/generated/accounts/adaptorAddReceipt.d.ts.map +1 -0
  47. package/dist/generated/accounts/adaptorAddReceipt.js +82 -0
  48. package/dist/generated/accounts/adaptorAddReceipt.js.map +1 -0
  49. package/dist/generated/accounts/directWithdrawInitReceipt.d.ts +60 -0
  50. package/dist/generated/accounts/directWithdrawInitReceipt.d.ts.map +1 -0
  51. package/dist/generated/accounts/directWithdrawInitReceipt.js +95 -0
  52. package/dist/generated/accounts/directWithdrawInitReceipt.js.map +1 -0
  53. package/dist/generated/accounts/index.d.ts +14 -0
  54. package/dist/generated/accounts/index.d.ts.map +1 -0
  55. package/dist/generated/accounts/index.js +30 -0
  56. package/dist/generated/accounts/index.js.map +1 -0
  57. package/dist/generated/accounts/protocol.d.ts +57 -0
  58. package/dist/generated/accounts/protocol.d.ts.map +1 -0
  59. package/dist/generated/accounts/protocol.js +82 -0
  60. package/dist/generated/accounts/protocol.js.map +1 -0
  61. package/dist/generated/accounts/requestWithdrawVaultReceipt.d.ts +43 -0
  62. package/dist/generated/accounts/requestWithdrawVaultReceipt.d.ts.map +1 -0
  63. package/dist/generated/accounts/requestWithdrawVaultReceipt.js +85 -0
  64. package/dist/generated/accounts/requestWithdrawVaultReceipt.js.map +1 -0
  65. package/dist/generated/accounts/strategyInitReceipt.d.ts +69 -0
  66. package/dist/generated/accounts/strategyInitReceipt.d.ts.map +1 -0
  67. package/dist/generated/accounts/strategyInitReceipt.js +91 -0
  68. package/dist/generated/accounts/strategyInitReceipt.js.map +1 -0
  69. package/dist/generated/accounts/vault.d.ts +100 -0
  70. package/dist/generated/accounts/vault.d.ts.map +1 -0
  71. package/dist/generated/accounts/vault.js +105 -0
  72. package/dist/generated/accounts/vault.js.map +1 -0
  73. package/dist/generated/errors/index.d.ts +9 -0
  74. package/dist/generated/errors/index.d.ts.map +1 -0
  75. package/dist/{types → generated/errors}/index.js +9 -2
  76. package/dist/generated/errors/index.js.map +1 -0
  77. package/dist/generated/errors/voltrVault.d.ts +52 -0
  78. package/dist/generated/errors/voltrVault.d.ts.map +1 -0
  79. package/dist/generated/errors/voltrVault.js +77 -0
  80. package/dist/generated/errors/voltrVault.js.map +1 -0
  81. package/dist/generated/index.d.ts +14 -0
  82. package/dist/generated/index.d.ts.map +1 -0
  83. package/dist/generated/index.js +30 -0
  84. package/dist/generated/index.js.map +1 -0
  85. package/dist/generated/instructions/acceptProtocolAdmin.d.ts +47 -0
  86. package/dist/generated/instructions/acceptProtocolAdmin.d.ts.map +1 -0
  87. package/dist/generated/instructions/acceptProtocolAdmin.js +103 -0
  88. package/dist/generated/instructions/acceptProtocolAdmin.js.map +1 -0
  89. package/dist/generated/instructions/acceptVaultAdmin.d.ts +40 -0
  90. package/dist/generated/instructions/acceptVaultAdmin.d.ts.map +1 -0
  91. package/dist/generated/instructions/acceptVaultAdmin.js +75 -0
  92. package/dist/generated/instructions/acceptVaultAdmin.js.map +1 -0
  93. package/dist/generated/instructions/addAdaptor.d.ts +67 -0
  94. package/dist/generated/instructions/addAdaptor.d.ts.map +1 -0
  95. package/dist/generated/instructions/addAdaptor.js +149 -0
  96. package/dist/generated/instructions/addAdaptor.js.map +1 -0
  97. package/dist/generated/instructions/calibrateHighWaterMark.d.ts +63 -0
  98. package/dist/generated/instructions/calibrateHighWaterMark.d.ts.map +1 -0
  99. package/dist/generated/instructions/calibrateHighWaterMark.js +150 -0
  100. package/dist/generated/instructions/calibrateHighWaterMark.js.map +1 -0
  101. package/dist/generated/instructions/calibrateHighWaterMarkUnsafe.d.ts +55 -0
  102. package/dist/generated/instructions/calibrateHighWaterMarkUnsafe.d.ts.map +1 -0
  103. package/dist/generated/instructions/calibrateHighWaterMarkUnsafe.js +121 -0
  104. package/dist/generated/instructions/calibrateHighWaterMarkUnsafe.js.map +1 -0
  105. package/dist/generated/instructions/cancelRequestWithdrawVault.d.ts +84 -0
  106. package/dist/generated/instructions/cancelRequestWithdrawVault.d.ts.map +1 -0
  107. package/dist/generated/instructions/cancelRequestWithdrawVault.js +208 -0
  108. package/dist/generated/instructions/cancelRequestWithdrawVault.js.map +1 -0
  109. package/dist/generated/instructions/closeStrategy.d.ts +67 -0
  110. package/dist/generated/instructions/closeStrategy.d.ts.map +1 -0
  111. package/dist/generated/instructions/closeStrategy.js +149 -0
  112. package/dist/generated/instructions/closeStrategy.js.map +1 -0
  113. package/dist/generated/instructions/createLpMetadata.d.ts +88 -0
  114. package/dist/generated/instructions/createLpMetadata.d.ts.map +1 -0
  115. package/dist/generated/instructions/createLpMetadata.js +194 -0
  116. package/dist/generated/instructions/createLpMetadata.js.map +1 -0
  117. package/dist/generated/instructions/depositStrategy.d.ts +111 -0
  118. package/dist/generated/instructions/depositStrategy.d.ts.map +1 -0
  119. package/dist/generated/instructions/depositStrategy.js +277 -0
  120. package/dist/generated/instructions/depositStrategy.js.map +1 -0
  121. package/dist/generated/instructions/depositVault.d.ts +108 -0
  122. package/dist/generated/instructions/depositVault.d.ts.map +1 -0
  123. package/dist/generated/instructions/depositVault.js +258 -0
  124. package/dist/generated/instructions/depositVault.js.map +1 -0
  125. package/dist/generated/instructions/directWithdrawStrategy.d.ts +125 -0
  126. package/dist/generated/instructions/directWithdrawStrategy.d.ts.map +1 -0
  127. package/dist/generated/instructions/directWithdrawStrategy.js +338 -0
  128. package/dist/generated/instructions/directWithdrawStrategy.js.map +1 -0
  129. package/dist/generated/instructions/directWithdrawStrategyWithTolerance.d.ts +129 -0
  130. package/dist/generated/instructions/directWithdrawStrategyWithTolerance.d.ts.map +1 -0
  131. package/dist/generated/instructions/directWithdrawStrategyWithTolerance.js +338 -0
  132. package/dist/generated/instructions/directWithdrawStrategyWithTolerance.js.map +1 -0
  133. package/dist/generated/instructions/harvestFee.d.ts +87 -0
  134. package/dist/generated/instructions/harvestFee.d.ts.map +1 -0
  135. package/dist/generated/instructions/harvestFee.js +220 -0
  136. package/dist/generated/instructions/harvestFee.js.map +1 -0
  137. package/dist/generated/instructions/index.d.ts +35 -0
  138. package/dist/generated/instructions/index.d.ts.map +1 -0
  139. package/dist/generated/instructions/index.js +51 -0
  140. package/dist/generated/instructions/index.js.map +1 -0
  141. package/dist/generated/instructions/initProtocol.d.ts +60 -0
  142. package/dist/generated/instructions/initProtocol.d.ts.map +1 -0
  143. package/dist/generated/instructions/initProtocol.js +130 -0
  144. package/dist/generated/instructions/initProtocol.js.map +1 -0
  145. package/dist/generated/instructions/initializeDirectWithdrawStrategy.d.ts +92 -0
  146. package/dist/generated/instructions/initializeDirectWithdrawStrategy.d.ts.map +1 -0
  147. package/dist/generated/instructions/initializeDirectWithdrawStrategy.js +214 -0
  148. package/dist/generated/instructions/initializeDirectWithdrawStrategy.js.map +1 -0
  149. package/dist/generated/instructions/initializeStrategy.d.ts +88 -0
  150. package/dist/generated/instructions/initializeStrategy.d.ts.map +1 -0
  151. package/dist/generated/instructions/initializeStrategy.js +210 -0
  152. package/dist/generated/instructions/initializeStrategy.js.map +1 -0
  153. package/dist/generated/instructions/initializeVault.d.ts +172 -0
  154. package/dist/generated/instructions/initializeVault.d.ts.map +1 -0
  155. package/dist/generated/instructions/initializeVault.js +289 -0
  156. package/dist/generated/instructions/initializeVault.js.map +1 -0
  157. package/dist/generated/instructions/instantWithdrawStrategy.d.ts +133 -0
  158. package/dist/generated/instructions/instantWithdrawStrategy.d.ts.map +1 -0
  159. package/dist/generated/instructions/instantWithdrawStrategy.js +320 -0
  160. package/dist/generated/instructions/instantWithdrawStrategy.js.map +1 -0
  161. package/dist/generated/instructions/instantWithdrawStrategyWithTolerance.d.ts +137 -0
  162. package/dist/generated/instructions/instantWithdrawStrategyWithTolerance.d.ts.map +1 -0
  163. package/dist/generated/instructions/instantWithdrawStrategyWithTolerance.js +320 -0
  164. package/dist/generated/instructions/instantWithdrawStrategyWithTolerance.js.map +1 -0
  165. package/dist/generated/instructions/instantWithdrawVault.d.ts +112 -0
  166. package/dist/generated/instructions/instantWithdrawVault.d.ts.map +1 -0
  167. package/dist/generated/instructions/instantWithdrawVault.js +249 -0
  168. package/dist/generated/instructions/instantWithdrawVault.js.map +1 -0
  169. package/dist/generated/instructions/removeAdaptor.d.ts +63 -0
  170. package/dist/generated/instructions/removeAdaptor.d.ts.map +1 -0
  171. package/dist/generated/instructions/removeAdaptor.js +144 -0
  172. package/dist/generated/instructions/removeAdaptor.js.map +1 -0
  173. package/dist/generated/instructions/requestWithdrawVault.d.ts +104 -0
  174. package/dist/generated/instructions/requestWithdrawVault.d.ts.map +1 -0
  175. package/dist/generated/instructions/requestWithdrawVault.js +225 -0
  176. package/dist/generated/instructions/requestWithdrawVault.js.map +1 -0
  177. package/dist/generated/instructions/updateProtocol.d.ts +57 -0
  178. package/dist/generated/instructions/updateProtocol.d.ts.map +1 -0
  179. package/dist/generated/instructions/updateProtocol.js +111 -0
  180. package/dist/generated/instructions/updateProtocol.js.map +1 -0
  181. package/dist/generated/instructions/updateVaultConfig.d.ts +65 -0
  182. package/dist/generated/instructions/updateVaultConfig.d.ts.map +1 -0
  183. package/dist/generated/instructions/updateVaultConfig.js +133 -0
  184. package/dist/generated/instructions/updateVaultConfig.js.map +1 -0
  185. package/dist/generated/instructions/updateVaultProtocolFee.d.ts +65 -0
  186. package/dist/generated/instructions/updateVaultProtocolFee.d.ts.map +1 -0
  187. package/dist/generated/instructions/updateVaultProtocolFee.js +132 -0
  188. package/dist/generated/instructions/updateVaultProtocolFee.js.map +1 -0
  189. package/dist/generated/instructions/withdrawStrategy.d.ts +111 -0
  190. package/dist/generated/instructions/withdrawStrategy.d.ts.map +1 -0
  191. package/dist/generated/instructions/withdrawStrategy.js +277 -0
  192. package/dist/generated/instructions/withdrawStrategy.js.map +1 -0
  193. package/dist/generated/instructions/withdrawVault.d.ts +103 -0
  194. package/dist/generated/instructions/withdrawVault.d.ts.map +1 -0
  195. package/dist/generated/instructions/withdrawVault.js +258 -0
  196. package/dist/generated/instructions/withdrawVault.js.map +1 -0
  197. package/dist/generated/pdas/adaptorAddReceipt.d.ts +16 -0
  198. package/dist/generated/pdas/adaptorAddReceipt.d.ts.map +1 -0
  199. package/dist/generated/pdas/adaptorAddReceipt.js +26 -0
  200. package/dist/generated/pdas/adaptorAddReceipt.js.map +1 -0
  201. package/dist/generated/pdas/directWithdrawInitReceipt.d.ts +16 -0
  202. package/dist/generated/pdas/directWithdrawInitReceipt.d.ts.map +1 -0
  203. package/dist/generated/pdas/directWithdrawInitReceipt.js +26 -0
  204. package/dist/generated/pdas/directWithdrawInitReceipt.js.map +1 -0
  205. package/dist/generated/pdas/index.d.ts +17 -0
  206. package/dist/generated/pdas/index.d.ts.map +1 -0
  207. package/dist/generated/pdas/index.js +33 -0
  208. package/dist/generated/pdas/index.js.map +1 -0
  209. package/dist/generated/pdas/protocol.d.ts +12 -0
  210. package/dist/generated/pdas/protocol.d.ts.map +1 -0
  211. package/dist/generated/pdas/protocol.js +21 -0
  212. package/dist/generated/pdas/protocol.js.map +1 -0
  213. package/dist/generated/pdas/requestWithdrawVaultReceipt.d.ts +16 -0
  214. package/dist/generated/pdas/requestWithdrawVaultReceipt.d.ts.map +1 -0
  215. package/dist/generated/pdas/requestWithdrawVaultReceipt.js +27 -0
  216. package/dist/generated/pdas/requestWithdrawVaultReceipt.js.map +1 -0
  217. package/dist/generated/pdas/strategyInitReceipt.d.ts +16 -0
  218. package/dist/generated/pdas/strategyInitReceipt.d.ts.map +1 -0
  219. package/dist/generated/pdas/strategyInitReceipt.js +26 -0
  220. package/dist/generated/pdas/strategyInitReceipt.js.map +1 -0
  221. package/dist/generated/pdas/vaultAssetIdleAuth.d.ts +15 -0
  222. package/dist/generated/pdas/vaultAssetIdleAuth.d.ts.map +1 -0
  223. package/dist/generated/pdas/vaultAssetIdleAuth.js +25 -0
  224. package/dist/generated/pdas/vaultAssetIdleAuth.js.map +1 -0
  225. package/dist/generated/pdas/vaultLpMint.d.ts +15 -0
  226. package/dist/generated/pdas/vaultLpMint.d.ts.map +1 -0
  227. package/dist/generated/pdas/vaultLpMint.js +24 -0
  228. package/dist/generated/pdas/vaultLpMint.js.map +1 -0
  229. package/dist/generated/pdas/vaultLpMintAuth.d.ts +15 -0
  230. package/dist/generated/pdas/vaultLpMintAuth.d.ts.map +1 -0
  231. package/dist/generated/pdas/vaultLpMintAuth.js +25 -0
  232. package/dist/generated/pdas/vaultLpMintAuth.js.map +1 -0
  233. package/dist/generated/pdas/vaultStrategyAuth.d.ts +16 -0
  234. package/dist/generated/pdas/vaultStrategyAuth.d.ts.map +1 -0
  235. package/dist/generated/pdas/vaultStrategyAuth.js +26 -0
  236. package/dist/generated/pdas/vaultStrategyAuth.js.map +1 -0
  237. package/dist/generated/programs/index.d.ts +9 -0
  238. package/dist/generated/programs/index.d.ts.map +1 -0
  239. package/dist/generated/programs/index.js +25 -0
  240. package/dist/generated/programs/index.js.map +1 -0
  241. package/dist/generated/programs/voltrVault.d.ts +172 -0
  242. package/dist/generated/programs/voltrVault.d.ts.map +1 -0
  243. package/dist/generated/programs/voltrVault.js +447 -0
  244. package/dist/generated/programs/voltrVault.js.map +1 -0
  245. package/dist/generated/types/acceptProtocolAdminEvent.d.ts +24 -0
  246. package/dist/generated/types/acceptProtocolAdminEvent.d.ts.map +1 -0
  247. package/dist/generated/types/acceptProtocolAdminEvent.js +33 -0
  248. package/dist/generated/types/acceptProtocolAdminEvent.js.map +1 -0
  249. package/dist/generated/types/acceptVaultAdminEvent.d.ts +24 -0
  250. package/dist/generated/types/acceptVaultAdminEvent.d.ts.map +1 -0
  251. package/dist/generated/types/acceptVaultAdminEvent.js +33 -0
  252. package/dist/generated/types/acceptVaultAdminEvent.js.map +1 -0
  253. package/dist/generated/types/addAdaptorEvent.d.ts +28 -0
  254. package/dist/generated/types/addAdaptorEvent.d.ts.map +1 -0
  255. package/dist/generated/types/addAdaptorEvent.js +37 -0
  256. package/dist/generated/types/addAdaptorEvent.js.map +1 -0
  257. package/dist/generated/types/calibrateHighWaterMarkEvent.d.ts +34 -0
  258. package/dist/generated/types/calibrateHighWaterMarkEvent.d.ts.map +1 -0
  259. package/dist/generated/types/calibrateHighWaterMarkEvent.js +43 -0
  260. package/dist/generated/types/calibrateHighWaterMarkEvent.js.map +1 -0
  261. package/dist/generated/types/calibrateHighWaterMarkUnsafeEvent.d.ts +30 -0
  262. package/dist/generated/types/calibrateHighWaterMarkUnsafeEvent.d.ts.map +1 -0
  263. package/dist/generated/types/calibrateHighWaterMarkUnsafeEvent.js +39 -0
  264. package/dist/generated/types/calibrateHighWaterMarkUnsafeEvent.js.map +1 -0
  265. package/dist/generated/types/cancelRequestWithdrawVaultEvent.d.ts +32 -0
  266. package/dist/generated/types/cancelRequestWithdrawVaultEvent.d.ts.map +1 -0
  267. package/dist/generated/types/cancelRequestWithdrawVaultEvent.js +41 -0
  268. package/dist/generated/types/cancelRequestWithdrawVaultEvent.js.map +1 -0
  269. package/dist/generated/types/closeStrategyEvent.d.ts +26 -0
  270. package/dist/generated/types/closeStrategyEvent.d.ts.map +1 -0
  271. package/dist/generated/types/closeStrategyEvent.js +35 -0
  272. package/dist/generated/types/closeStrategyEvent.js.map +1 -0
  273. package/dist/generated/types/depositStrategyEvent.d.ts +52 -0
  274. package/dist/generated/types/depositStrategyEvent.d.ts.map +1 -0
  275. package/dist/generated/types/depositStrategyEvent.js +61 -0
  276. package/dist/generated/types/depositStrategyEvent.js.map +1 -0
  277. package/dist/generated/types/depositVaultEvent.d.ts +48 -0
  278. package/dist/generated/types/depositVaultEvent.d.ts.map +1 -0
  279. package/dist/generated/types/depositVaultEvent.js +57 -0
  280. package/dist/generated/types/depositVaultEvent.js.map +1 -0
  281. package/dist/generated/types/directWithdrawStrategyEvent.d.ts +62 -0
  282. package/dist/generated/types/directWithdrawStrategyEvent.d.ts.map +1 -0
  283. package/dist/generated/types/directWithdrawStrategyEvent.js +71 -0
  284. package/dist/generated/types/directWithdrawStrategyEvent.js.map +1 -0
  285. package/dist/generated/types/feeConfiguration.d.ts +33 -0
  286. package/dist/generated/types/feeConfiguration.d.ts.map +1 -0
  287. package/dist/generated/types/feeConfiguration.js +43 -0
  288. package/dist/generated/types/feeConfiguration.js.map +1 -0
  289. package/dist/generated/types/feeState.d.ts +32 -0
  290. package/dist/generated/types/feeState.d.ts.map +1 -0
  291. package/dist/generated/types/feeState.js +33 -0
  292. package/dist/generated/types/feeState.js.map +1 -0
  293. package/dist/generated/types/feeUpdate.d.ts +24 -0
  294. package/dist/generated/types/feeUpdate.d.ts.map +1 -0
  295. package/dist/generated/types/feeUpdate.js +29 -0
  296. package/dist/generated/types/feeUpdate.js.map +1 -0
  297. package/dist/generated/types/harvestFeeEvent.d.ts +32 -0
  298. package/dist/generated/types/harvestFeeEvent.d.ts.map +1 -0
  299. package/dist/generated/types/harvestFeeEvent.js +41 -0
  300. package/dist/generated/types/harvestFeeEvent.js.map +1 -0
  301. package/dist/generated/types/highWaterMark.d.ts +28 -0
  302. package/dist/generated/types/highWaterMark.d.ts.map +1 -0
  303. package/dist/generated/types/highWaterMark.js +31 -0
  304. package/dist/generated/types/highWaterMark.js.map +1 -0
  305. package/dist/generated/types/index.d.ts +44 -0
  306. package/dist/generated/types/index.d.ts.map +1 -0
  307. package/dist/generated/types/index.js +60 -0
  308. package/dist/generated/types/index.js.map +1 -0
  309. package/dist/generated/types/initProtocolEvent.d.ts +22 -0
  310. package/dist/generated/types/initProtocolEvent.d.ts.map +1 -0
  311. package/dist/generated/types/initProtocolEvent.js +31 -0
  312. package/dist/generated/types/initProtocolEvent.js.map +1 -0
  313. package/dist/generated/types/initializeDirectWithdrawStrategyEvent.d.ts +34 -0
  314. package/dist/generated/types/initializeDirectWithdrawStrategyEvent.d.ts.map +1 -0
  315. package/dist/generated/types/initializeDirectWithdrawStrategyEvent.js +55 -0
  316. package/dist/generated/types/initializeDirectWithdrawStrategyEvent.js.map +1 -0
  317. package/dist/generated/types/initializeStrategyEvent.d.ts +32 -0
  318. package/dist/generated/types/initializeStrategyEvent.d.ts.map +1 -0
  319. package/dist/generated/types/initializeStrategyEvent.js +41 -0
  320. package/dist/generated/types/initializeStrategyEvent.js.map +1 -0
  321. package/dist/generated/types/initializeVaultEvent.d.ts +56 -0
  322. package/dist/generated/types/initializeVaultEvent.d.ts.map +1 -0
  323. package/dist/generated/types/initializeVaultEvent.js +71 -0
  324. package/dist/generated/types/initializeVaultEvent.js.map +1 -0
  325. package/dist/generated/types/instantWithdrawStrategyEvent.d.ts +68 -0
  326. package/dist/generated/types/instantWithdrawStrategyEvent.d.ts.map +1 -0
  327. package/dist/generated/types/instantWithdrawStrategyEvent.js +77 -0
  328. package/dist/generated/types/instantWithdrawStrategyEvent.js.map +1 -0
  329. package/dist/generated/types/instantWithdrawVaultEvent.d.ts +56 -0
  330. package/dist/generated/types/instantWithdrawVaultEvent.d.ts.map +1 -0
  331. package/dist/generated/types/instantWithdrawVaultEvent.js +65 -0
  332. package/dist/generated/types/instantWithdrawVaultEvent.js.map +1 -0
  333. package/dist/generated/types/lockedProfitState.d.ts +20 -0
  334. package/dist/generated/types/lockedProfitState.d.ts.map +1 -0
  335. package/dist/generated/types/lockedProfitState.js +29 -0
  336. package/dist/generated/types/lockedProfitState.js.map +1 -0
  337. package/dist/generated/types/protocolConfigField.d.ts +17 -0
  338. package/dist/generated/types/protocolConfigField.d.ts.map +1 -0
  339. package/dist/generated/types/protocolConfigField.js +29 -0
  340. package/dist/generated/types/protocolConfigField.js.map +1 -0
  341. package/dist/generated/types/protocolFeeField.d.ts +17 -0
  342. package/dist/generated/types/protocolFeeField.d.ts.map +1 -0
  343. package/dist/generated/types/protocolFeeField.js +29 -0
  344. package/dist/generated/types/protocolFeeField.js.map +1 -0
  345. package/dist/generated/types/removeAdaptorEvent.d.ts +26 -0
  346. package/dist/generated/types/removeAdaptorEvent.d.ts.map +1 -0
  347. package/dist/generated/types/removeAdaptorEvent.js +35 -0
  348. package/dist/generated/types/removeAdaptorEvent.js.map +1 -0
  349. package/dist/generated/types/requestWithdrawVaultEvent.d.ts +44 -0
  350. package/dist/generated/types/requestWithdrawVaultEvent.d.ts.map +1 -0
  351. package/dist/generated/types/requestWithdrawVaultEvent.js +53 -0
  352. package/dist/generated/types/requestWithdrawVaultEvent.js.map +1 -0
  353. package/dist/generated/types/updateProtocolEvent.d.ts +28 -0
  354. package/dist/generated/types/updateProtocolEvent.d.ts.map +1 -0
  355. package/dist/generated/types/updateProtocolEvent.js +37 -0
  356. package/dist/generated/types/updateProtocolEvent.js.map +1 -0
  357. package/dist/generated/types/updateVaultConfigEvent.d.ts +28 -0
  358. package/dist/generated/types/updateVaultConfigEvent.d.ts.map +1 -0
  359. package/dist/generated/types/updateVaultConfigEvent.js +37 -0
  360. package/dist/generated/types/updateVaultConfigEvent.js.map +1 -0
  361. package/dist/generated/types/updateVaultEvent.d.ts +62 -0
  362. package/dist/generated/types/updateVaultEvent.d.ts.map +1 -0
  363. package/dist/generated/types/updateVaultEvent.js +71 -0
  364. package/dist/generated/types/updateVaultEvent.js.map +1 -0
  365. package/dist/generated/types/updateVaultProtocolFeeEvent.d.ts +28 -0
  366. package/dist/generated/types/updateVaultProtocolFeeEvent.d.ts.map +1 -0
  367. package/dist/generated/types/updateVaultProtocolFeeEvent.js +37 -0
  368. package/dist/generated/types/updateVaultProtocolFeeEvent.js.map +1 -0
  369. package/dist/generated/types/vaultAsset.d.ts +36 -0
  370. package/dist/generated/types/vaultAsset.d.ts.map +1 -0
  371. package/dist/generated/types/vaultAsset.js +35 -0
  372. package/dist/generated/types/vaultAsset.js.map +1 -0
  373. package/dist/generated/types/vaultConfigField.d.ts +28 -0
  374. package/dist/generated/types/vaultConfigField.d.ts.map +1 -0
  375. package/dist/generated/types/vaultConfigField.js +40 -0
  376. package/dist/generated/types/vaultConfigField.js.map +1 -0
  377. package/dist/generated/types/vaultConfiguration.d.ts +40 -0
  378. package/dist/generated/types/vaultConfiguration.d.ts.map +1 -0
  379. package/dist/generated/types/vaultConfiguration.js +37 -0
  380. package/dist/generated/types/vaultConfiguration.js.map +1 -0
  381. package/dist/generated/types/vaultLp.d.ts +23 -0
  382. package/dist/generated/types/vaultLp.d.ts.map +1 -0
  383. package/dist/generated/types/vaultLp.js +33 -0
  384. package/dist/generated/types/vaultLp.js.map +1 -0
  385. package/dist/generated/types/withdrawStrategyEvent.d.ts +52 -0
  386. package/dist/generated/types/withdrawStrategyEvent.d.ts.map +1 -0
  387. package/dist/generated/types/withdrawStrategyEvent.js +61 -0
  388. package/dist/generated/types/withdrawStrategyEvent.js.map +1 -0
  389. package/dist/generated/types/withdrawVaultEvent.d.ts +50 -0
  390. package/dist/generated/types/withdrawVaultEvent.d.ts.map +1 -0
  391. package/dist/generated/types/withdrawVaultEvent.js +59 -0
  392. package/dist/generated/types/withdrawVaultEvent.js.map +1 -0
  393. package/dist/index.d.ts +3 -4
  394. package/dist/index.d.ts.map +1 -0
  395. package/dist/index.js +3 -4
  396. package/dist/index.js.map +1 -0
  397. package/package.json +31 -27
  398. package/src/extensions/batchFetchers.ts +121 -0
  399. package/src/extensions/decimal.ts +15 -0
  400. package/src/extensions/events.ts +328 -0
  401. package/src/extensions/fees.ts +36 -0
  402. package/src/extensions/index.ts +10 -0
  403. package/src/extensions/lpEconomics.ts +225 -0
  404. package/src/extensions/math.ts +338 -0
  405. package/src/extensions/metadataPda.ts +47 -0
  406. package/src/extensions/position.ts +54 -0
  407. package/src/extensions/rpc.ts +17 -0
  408. package/src/extensions/withdrawals.ts +113 -0
  409. package/src/generated/accounts/adaptorAddReceipt.ts +194 -0
  410. package/src/generated/accounts/directWithdrawInitReceipt.ts +235 -0
  411. package/src/generated/accounts/index.ts +14 -0
  412. package/src/generated/accounts/protocol.ts +176 -0
  413. package/src/generated/accounts/requestWithdrawVaultReceipt.ts +197 -0
  414. package/src/generated/accounts/strategyInitReceipt.ts +221 -0
  415. package/src/generated/accounts/vault.ts +274 -0
  416. package/src/generated/errors/index.ts +9 -0
  417. package/src/generated/errors/voltrVault.ts +112 -0
  418. package/src/generated/index.ts +14 -0
  419. package/src/generated/instructions/acceptProtocolAdmin.ts +248 -0
  420. package/src/generated/instructions/acceptVaultAdmin.ts +187 -0
  421. package/src/generated/instructions/addAdaptor.ts +391 -0
  422. package/src/generated/instructions/calibrateHighWaterMark.ts +394 -0
  423. package/src/generated/instructions/calibrateHighWaterMarkUnsafe.ts +311 -0
  424. package/src/generated/instructions/cancelRequestWithdrawVault.ts +546 -0
  425. package/src/generated/instructions/closeStrategy.ts +395 -0
  426. package/src/generated/instructions/createLpMetadata.ts +501 -0
  427. package/src/generated/instructions/depositStrategy.ts +737 -0
  428. package/src/generated/instructions/depositVault.ts +686 -0
  429. package/src/generated/instructions/directWithdrawStrategy.ts +903 -0
  430. package/src/generated/instructions/directWithdrawStrategyWithTolerance.ts +913 -0
  431. package/src/generated/instructions/harvestFee.ts +599 -0
  432. package/src/generated/instructions/index.ts +35 -0
  433. package/src/generated/instructions/initProtocol.ts +329 -0
  434. package/src/generated/instructions/initializeDirectWithdrawStrategy.ts +576 -0
  435. package/src/generated/instructions/initializeStrategy.ts +557 -0
  436. package/src/generated/instructions/initializeVault.ts +784 -0
  437. package/src/generated/instructions/instantWithdrawStrategy.ts +870 -0
  438. package/src/generated/instructions/instantWithdrawStrategyWithTolerance.ts +878 -0
  439. package/src/generated/instructions/instantWithdrawVault.ts +670 -0
  440. package/src/generated/instructions/removeAdaptor.ts +371 -0
  441. package/src/generated/instructions/requestWithdrawVault.ts +608 -0
  442. package/src/generated/instructions/updateProtocol.ts +270 -0
  443. package/src/generated/instructions/updateVaultConfig.ts +343 -0
  444. package/src/generated/instructions/updateVaultProtocolFee.ts +344 -0
  445. package/src/generated/instructions/withdrawStrategy.ts +737 -0
  446. package/src/generated/instructions/withdrawVault.ts +685 -0
  447. package/src/generated/pdas/adaptorAddReceipt.ts +42 -0
  448. package/src/generated/pdas/directWithdrawInitReceipt.ts +42 -0
  449. package/src/generated/pdas/index.ts +17 -0
  450. package/src/generated/pdas/protocol.ts +30 -0
  451. package/src/generated/pdas/requestWithdrawVaultReceipt.ts +43 -0
  452. package/src/generated/pdas/strategyInitReceipt.ts +42 -0
  453. package/src/generated/pdas/vaultAssetIdleAuth.ts +40 -0
  454. package/src/generated/pdas/vaultLpMint.ts +39 -0
  455. package/src/generated/pdas/vaultLpMintAuth.ts +40 -0
  456. package/src/generated/pdas/vaultStrategyAuth.ts +42 -0
  457. package/src/generated/programs/index.ts +9 -0
  458. package/src/generated/programs/voltrVault.ts +1261 -0
  459. package/src/generated/types/acceptProtocolAdminEvent.ts +63 -0
  460. package/src/generated/types/acceptVaultAdminEvent.ts +63 -0
  461. package/src/generated/types/addAdaptorEvent.ts +68 -0
  462. package/src/generated/types/calibrateHighWaterMarkEvent.ts +85 -0
  463. package/src/generated/types/calibrateHighWaterMarkUnsafeEvent.ts +77 -0
  464. package/src/generated/types/cancelRequestWithdrawVaultEvent.ts +81 -0
  465. package/src/generated/types/closeStrategyEvent.ts +67 -0
  466. package/src/generated/types/depositStrategyEvent.ts +121 -0
  467. package/src/generated/types/depositVaultEvent.ts +113 -0
  468. package/src/generated/types/directWithdrawStrategyEvent.ts +141 -0
  469. package/src/generated/types/feeConfiguration.ts +84 -0
  470. package/src/generated/types/feeState.ts +67 -0
  471. package/src/generated/types/feeUpdate.ts +50 -0
  472. package/src/generated/types/harvestFeeEvent.ts +76 -0
  473. package/src/generated/types/highWaterMark.ts +66 -0
  474. package/src/generated/types/index.ts +44 -0
  475. package/src/generated/types/initProtocolEvent.ts +61 -0
  476. package/src/generated/types/initializeDirectWithdrawStrategyEvent.ts +104 -0
  477. package/src/generated/types/initializeStrategyEvent.ts +81 -0
  478. package/src/generated/types/initializeVaultEvent.ts +141 -0
  479. package/src/generated/types/instantWithdrawStrategyEvent.ts +155 -0
  480. package/src/generated/types/instantWithdrawVaultEvent.ts +131 -0
  481. package/src/generated/types/lockedProfitState.ts +52 -0
  482. package/src/generated/types/protocolConfigField.ts +41 -0
  483. package/src/generated/types/protocolFeeField.ts +41 -0
  484. package/src/generated/types/removeAdaptorEvent.ts +67 -0
  485. package/src/generated/types/requestWithdrawVaultEvent.ts +107 -0
  486. package/src/generated/types/updateProtocolEvent.ts +77 -0
  487. package/src/generated/types/updateVaultConfigEvent.ts +77 -0
  488. package/src/generated/types/updateVaultEvent.ts +141 -0
  489. package/src/generated/types/updateVaultProtocolFeeEvent.ts +79 -0
  490. package/src/generated/types/vaultAsset.ts +81 -0
  491. package/src/generated/types/vaultConfigField.ts +52 -0
  492. package/src/generated/types/vaultConfiguration.ts +87 -0
  493. package/src/generated/types/vaultLp.ts +61 -0
  494. package/src/generated/types/withdrawStrategyEvent.ts +121 -0
  495. package/src/generated/types/withdrawVaultEvent.ts +117 -0
  496. package/src/index.ts +2 -0
  497. package/README.md +0 -453
  498. package/dist/client.d.ts +0 -1544
  499. package/dist/client.js +0 -1962
  500. package/dist/constants.d.ts +0 -20
  501. package/dist/constants.js +0 -27
  502. package/dist/decimals.d.ts +0 -3
  503. package/dist/decimals.js +0 -10
  504. package/dist/idl/voltr_vault.json +0 -9029
  505. package/dist/types/index.d.ts +0 -2
  506. package/dist/types/vault.d.ts +0 -70
  507. package/dist/types/vault.js +0 -29
  508. package/dist/types/voltr_vault.d.ts +0 -9035
@@ -0,0 +1,338 @@
1
+ export const MAX_FEE_BPS = 10_000n;
2
+ export const SECONDS_PER_YEAR = BigInt(365 * 24 * 60 * 60);
3
+ /**
4
+ * Matches `DEAD_WEIGHT` in the program. The first deposit ever made into a
5
+ * vault donates this many LP units permanently to the vault to prevent
6
+ * inflation/donation attacks; subsequent deposits are unaffected.
7
+ */
8
+ export const DEAD_WEIGHT_LP = 1_000n;
9
+
10
+ export function maxBigInt(a: bigint, b: bigint): bigint {
11
+ return a > b ? a : b;
12
+ }
13
+
14
+ export function minBigInt(a: bigint, b: bigint): bigint {
15
+ return a < b ? a : b;
16
+ }
17
+
18
+ /** Ceiling division for positive bigints. */
19
+ export function ceilDivBigInt(a: bigint, b: bigint): bigint {
20
+ return (a + b - 1n) / b;
21
+ }
22
+
23
+ export function nowSeconds(): bigint {
24
+ return BigInt(Math.floor(Date.now() / 1000));
25
+ }
26
+
27
+ /**
28
+ * Mirrors the program-side locked-profit decay: the locked profit drops
29
+ * linearly over `lockedProfitDegradationDuration` and is zero once that
30
+ * window has elapsed. Note: the legacy JS SDK measured elapsed time from
31
+ * `lastUpdatedLockedProfit` (an amount, not a timestamp), which produced
32
+ * incorrect values; this port follows the program, which uses `lastReport`.
33
+ */
34
+ export function calculateLockedProfit(
35
+ lastUpdatedLockedProfit: bigint,
36
+ lockedProfitDegradationDuration: bigint,
37
+ currentTimeSec: bigint,
38
+ lastReport: bigint,
39
+ ): bigint {
40
+ if (lockedProfitDegradationDuration === 0n) return 0n;
41
+
42
+ const duration = currentTimeSec - lastReport;
43
+ if (duration <= 0n) return lastUpdatedLockedProfit;
44
+ if (duration >= lockedProfitDegradationDuration) return 0n;
45
+
46
+ return (
47
+ (lastUpdatedLockedProfit *
48
+ (lockedProfitDegradationDuration - duration)) /
49
+ lockedProfitDegradationDuration
50
+ );
51
+ }
52
+
53
+ /**
54
+ * Estimates the LP that would be minted to cover management fees accrued
55
+ * since `lastManagementFeeUpdateTs`. Returns 0n when the inputs make the
56
+ * fee calculation undefined (no time elapsed, no assets, etc.).
57
+ *
58
+ * Both rounding steps are ceiling divisions, matching the program's
59
+ * `calc_management_fee_amount_in_asset` and `calc_fee_lp_to_mint` — flooring
60
+ * the asset fee first would understate the LP that should be minted whenever
61
+ * the accrued fee isn't an exact multiple of the denominator.
62
+ */
63
+ export function calculateUnrealisedLpFees(
64
+ currentTotalLp: bigint,
65
+ assetTotalValue: bigint,
66
+ lastManagementFeeUpdateTs: bigint,
67
+ managementFeeBps: bigint,
68
+ currentTimeSec: bigint = nowSeconds(),
69
+ ): bigint {
70
+ if (
71
+ lastManagementFeeUpdateTs === 0n ||
72
+ assetTotalValue === 0n ||
73
+ managementFeeBps === 0n
74
+ ) {
75
+ return 0n;
76
+ }
77
+
78
+ const timeElapsed = maxBigInt(0n, currentTimeSec - lastManagementFeeUpdateTs);
79
+ if (timeElapsed === 0n) return 0n;
80
+
81
+ const feeAmountInAsset = ceilDivBigInt(
82
+ assetTotalValue * timeElapsed * managementFeeBps,
83
+ MAX_FEE_BPS * SECONDS_PER_YEAR,
84
+ );
85
+
86
+ // Matches the program's `handle_management_fee`: when accrued fees would
87
+ // meet or exceed the vault's asset value, the on-chain instruction reverts
88
+ // with FeeExceedsTotalAssetValue. Quoting 0 here would silently mask a
89
+ // state where every deposit/withdraw transaction is going to fail.
90
+ if (feeAmountInAsset >= assetTotalValue) {
91
+ throw new Error(
92
+ "Accrued management fees exceed vault total asset value (program would revert with FeeExceedsTotalAssetValue)",
93
+ );
94
+ }
95
+
96
+ const lpDenominator = assetTotalValue - feeAmountInAsset;
97
+ return ceilDivBigInt(feeAmountInAsset * currentTotalLp, lpDenominator);
98
+ }
99
+
100
+ /**
101
+ * Total LP supply the program treats as outstanding for accounting:
102
+ * circulating LP + accumulated (but unharvested) fee LP + dead weight LP.
103
+ * Matches `Vault::get_total_lp_supply_incl_fees` in the program.
104
+ */
105
+ export function getTotalLpSupplyInclFees(args: {
106
+ lpSupply: bigint;
107
+ vaultAccumulatedLpAdminFees: bigint;
108
+ vaultAccumulatedLpManagerFees: bigint;
109
+ vaultAccumulatedLpProtocolFees: bigint;
110
+ vaultDeadWeight: bigint;
111
+ }): bigint {
112
+ return (
113
+ args.lpSupply +
114
+ args.vaultAccumulatedLpAdminFees +
115
+ args.vaultAccumulatedLpManagerFees +
116
+ args.vaultAccumulatedLpProtocolFees +
117
+ args.vaultDeadWeight
118
+ );
119
+ }
120
+
121
+ export type AssetsForWithdrawInputs = {
122
+ vaultTotalValue: bigint;
123
+ vaultLastUpdatedLockedProfit: bigint;
124
+ vaultLastReport: bigint;
125
+ vaultLockedProfitDegradationDuration: bigint;
126
+ vaultAccumulatedLpAdminFees: bigint;
127
+ vaultAccumulatedLpManagerFees: bigint;
128
+ vaultAccumulatedLpProtocolFees: bigint;
129
+ vaultDeadWeight: bigint;
130
+ vaultRedemptionFeeBps: number;
131
+ vaultManagementFeeBps: number;
132
+ vaultLastManagementFeeUpdateTs: bigint;
133
+ lpSupply: bigint;
134
+ lpAmount: bigint;
135
+ currentTimeSec?: bigint;
136
+ };
137
+
138
+ export function calculateAssetsForWithdrawAmount(
139
+ inputs: AssetsForWithdrawInputs,
140
+ ): bigint {
141
+ const {
142
+ vaultTotalValue,
143
+ vaultLastUpdatedLockedProfit,
144
+ vaultLastReport,
145
+ vaultLockedProfitDegradationDuration,
146
+ vaultAccumulatedLpAdminFees,
147
+ vaultAccumulatedLpManagerFees,
148
+ vaultAccumulatedLpProtocolFees,
149
+ vaultDeadWeight,
150
+ vaultRedemptionFeeBps,
151
+ vaultManagementFeeBps,
152
+ vaultLastManagementFeeUpdateTs,
153
+ lpSupply,
154
+ lpAmount,
155
+ currentTimeSec = nowSeconds(),
156
+ } = inputs;
157
+
158
+ if (lpSupply <= 0n) throw new Error("Invalid LP supply");
159
+ if (vaultTotalValue <= 0n) throw new Error("Invalid total assets");
160
+
161
+ const lockedProfit = calculateLockedProfit(
162
+ vaultLastUpdatedLockedProfit,
163
+ vaultLockedProfitDegradationDuration,
164
+ currentTimeSec,
165
+ vaultLastReport,
166
+ );
167
+ const totalUnlockedValue = vaultTotalValue - lockedProfit;
168
+
169
+ const lpSupplyInclAccumulatedFees = getTotalLpSupplyInclFees({
170
+ lpSupply,
171
+ vaultAccumulatedLpAdminFees,
172
+ vaultAccumulatedLpManagerFees,
173
+ vaultAccumulatedLpProtocolFees,
174
+ vaultDeadWeight,
175
+ });
176
+ const unrealisedLpFees = calculateUnrealisedLpFees(
177
+ lpSupplyInclAccumulatedFees,
178
+ vaultTotalValue,
179
+ vaultLastManagementFeeUpdateTs,
180
+ BigInt(vaultManagementFeeBps),
181
+ currentTimeSec,
182
+ );
183
+ const lpSupplyInclFees = lpSupplyInclAccumulatedFees + unrealisedLpFees;
184
+
185
+ // The program floors asset_to_redeem (favours the vault on the redeem side).
186
+ const numerator =
187
+ lpAmount * totalUnlockedValue * BigInt(10_000 - vaultRedemptionFeeBps);
188
+ const denominator = lpSupplyInclFees * 10_000n;
189
+
190
+ return numerator / denominator;
191
+ }
192
+
193
+ export type LpForWithdrawInputs = Omit<AssetsForWithdrawInputs, "lpAmount"> & {
194
+ assetAmount: bigint;
195
+ };
196
+
197
+ /**
198
+ * Computes the LP that must be burned to redeem at least `assetAmount`,
199
+ * matching `calc_withdraw_lp_to_burn` in the program (which rounds up so
200
+ * the burn always covers the requested asset amount). Flooring here would
201
+ * underquote the burn and either revert or short-redeem.
202
+ */
203
+ export function calculateLpForWithdrawAmount(
204
+ inputs: LpForWithdrawInputs,
205
+ ): bigint {
206
+ const {
207
+ vaultTotalValue,
208
+ vaultLastUpdatedLockedProfit,
209
+ vaultLastReport,
210
+ vaultLockedProfitDegradationDuration,
211
+ vaultAccumulatedLpAdminFees,
212
+ vaultAccumulatedLpManagerFees,
213
+ vaultAccumulatedLpProtocolFees,
214
+ vaultDeadWeight,
215
+ vaultRedemptionFeeBps,
216
+ vaultManagementFeeBps,
217
+ vaultLastManagementFeeUpdateTs,
218
+ lpSupply,
219
+ assetAmount,
220
+ currentTimeSec = nowSeconds(),
221
+ } = inputs;
222
+
223
+ if (lpSupply <= 0n) throw new Error("Invalid LP supply");
224
+ if (vaultTotalValue <= 0n) throw new Error("Invalid total assets");
225
+
226
+ const lockedProfit = calculateLockedProfit(
227
+ vaultLastUpdatedLockedProfit,
228
+ vaultLockedProfitDegradationDuration,
229
+ currentTimeSec,
230
+ vaultLastReport,
231
+ );
232
+ const totalUnlockedValue = vaultTotalValue - lockedProfit;
233
+
234
+ const lpSupplyInclAccumulatedFees = getTotalLpSupplyInclFees({
235
+ lpSupply,
236
+ vaultAccumulatedLpAdminFees,
237
+ vaultAccumulatedLpManagerFees,
238
+ vaultAccumulatedLpProtocolFees,
239
+ vaultDeadWeight,
240
+ });
241
+ const unrealisedLpFees = calculateUnrealisedLpFees(
242
+ lpSupplyInclAccumulatedFees,
243
+ vaultTotalValue,
244
+ vaultLastManagementFeeUpdateTs,
245
+ BigInt(vaultManagementFeeBps),
246
+ currentTimeSec,
247
+ );
248
+ const lpSupplyInclFees = lpSupplyInclAccumulatedFees + unrealisedLpFees;
249
+
250
+ const numerator = assetAmount * lpSupplyInclFees * 10_000n;
251
+ const denominator =
252
+ totalUnlockedValue * BigInt(10_000 - vaultRedemptionFeeBps);
253
+
254
+ return ceilDivBigInt(numerator, denominator);
255
+ }
256
+
257
+ export type LpForDepositInputs = {
258
+ vaultTotalValue: bigint;
259
+ vaultAccumulatedLpAdminFees: bigint;
260
+ vaultAccumulatedLpManagerFees: bigint;
261
+ vaultAccumulatedLpProtocolFees: bigint;
262
+ vaultDeadWeight: bigint;
263
+ vaultIssuanceFeeBps: number;
264
+ vaultManagementFeeBps: number;
265
+ vaultLastManagementFeeUpdateTs: bigint;
266
+ lpSupply: bigint;
267
+ assetAmount: bigint;
268
+ /** Required when the pool is empty so the 1:1 mint can scale precision correctly. */
269
+ assetDecimals: number;
270
+ /** Required when the pool is empty so the 1:1 mint can scale precision correctly. */
271
+ lpDecimals: number;
272
+ currentTimeSec?: bigint;
273
+ };
274
+
275
+ export function calculateLpForDepositAmount(inputs: LpForDepositInputs): bigint {
276
+ const {
277
+ vaultTotalValue,
278
+ vaultAccumulatedLpAdminFees,
279
+ vaultAccumulatedLpManagerFees,
280
+ vaultAccumulatedLpProtocolFees,
281
+ vaultDeadWeight,
282
+ vaultIssuanceFeeBps,
283
+ vaultManagementFeeBps,
284
+ vaultLastManagementFeeUpdateTs,
285
+ lpSupply,
286
+ assetAmount,
287
+ assetDecimals,
288
+ lpDecimals,
289
+ currentTimeSec = nowSeconds(),
290
+ } = inputs;
291
+
292
+ const lpSupplyInclAccumulatedFees = getTotalLpSupplyInclFees({
293
+ lpSupply,
294
+ vaultAccumulatedLpAdminFees,
295
+ vaultAccumulatedLpManagerFees,
296
+ vaultAccumulatedLpProtocolFees,
297
+ vaultDeadWeight,
298
+ });
299
+ const unrealisedLpFees = calculateUnrealisedLpFees(
300
+ lpSupplyInclAccumulatedFees,
301
+ vaultTotalValue,
302
+ vaultLastManagementFeeUpdateTs,
303
+ BigInt(vaultManagementFeeBps),
304
+ currentTimeSec,
305
+ );
306
+ const lpSupplyInclFees = lpSupplyInclAccumulatedFees + unrealisedLpFees;
307
+
308
+ let lpToMintBeforeDeadWeight: bigint;
309
+ if (lpSupplyInclFees === 0n) {
310
+ lpToMintBeforeDeadWeight =
311
+ (assetAmount * 10n ** BigInt(lpDecimals)) / 10n ** BigInt(assetDecimals);
312
+ } else {
313
+ // The program floors mint quantity (favours existing holders on the
314
+ // mint side), so we mirror that here.
315
+ const numerator =
316
+ assetAmount * lpSupplyInclFees * BigInt(10_000 - vaultIssuanceFeeBps);
317
+ const totalAssetPostDeposit = vaultTotalValue + assetAmount;
318
+ const denominator =
319
+ totalAssetPostDeposit * 10_000n -
320
+ assetAmount * BigInt(10_000 - vaultIssuanceFeeBps);
321
+ lpToMintBeforeDeadWeight = numerator / denominator;
322
+ }
323
+
324
+ // First-ever deposit pays DEAD_WEIGHT_LP into the vault permanently. The
325
+ // program rejects deposits that don't clear that floor, so we surface the
326
+ // same condition here rather than silently quoting a value the user can't
327
+ // actually receive.
328
+ if (vaultDeadWeight === 0n) {
329
+ if (lpToMintBeforeDeadWeight < DEAD_WEIGHT_LP) {
330
+ throw new Error(
331
+ `First deposit must mint at least ${DEAD_WEIGHT_LP} LP (would mint ${lpToMintBeforeDeadWeight})`,
332
+ );
333
+ }
334
+ return lpToMintBeforeDeadWeight - DEAD_WEIGHT_LP;
335
+ }
336
+
337
+ return lpToMintBeforeDeadWeight;
338
+ }
@@ -0,0 +1,47 @@
1
+ import {
2
+ getAddressEncoder,
3
+ getBytesEncoder,
4
+ getProgramDerivedAddress,
5
+ type Address,
6
+ type ProgramDerivedAddress,
7
+ } from "@solana/kit";
8
+
9
+ import { findVaultLpMintPda, VOLTR_VAULT_PROGRAM_ADDRESS } from "../generated";
10
+
11
+ /**
12
+ * Metaplex Token Metadata program ID. Codama can't derive PDAs that depend on
13
+ * an external program, so we keep this helper hand-written.
14
+ */
15
+ export const METAPLEX_METADATA_PROGRAM_ADDRESS =
16
+ "metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s" as Address<"metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s">;
17
+
18
+ const METADATA_SEED = new Uint8Array([
19
+ 109, 101, 116, 97, 100, 97, 116, 97,
20
+ ]); // "metadata"
21
+
22
+ /**
23
+ * Derives the LP metadata PDA owned by the Metaplex Token Metadata program for
24
+ * a given Voltr vault. Mirrors the legacy SDK's `findLpMetadataAccount(vault)`
25
+ * convenience: caller supplies the vault, we compute the LP mint PDA and then
26
+ * the metadata PDA off of it.
27
+ */
28
+ export async function findLpMetadataPda(
29
+ seeds: { vault: Address },
30
+ config: { voltrProgramAddress?: Address } = {},
31
+ ): Promise<ProgramDerivedAddress> {
32
+ const [lpMint] = await findVaultLpMintPda(
33
+ { vault: seeds.vault },
34
+ {
35
+ programAddress:
36
+ config.voltrProgramAddress ?? VOLTR_VAULT_PROGRAM_ADDRESS,
37
+ },
38
+ );
39
+ return await getProgramDerivedAddress({
40
+ programAddress: METAPLEX_METADATA_PROGRAM_ADDRESS,
41
+ seeds: [
42
+ getBytesEncoder().encode(METADATA_SEED),
43
+ getAddressEncoder().encode(METAPLEX_METADATA_PROGRAM_ADDRESS),
44
+ getAddressEncoder().encode(lpMint),
45
+ ],
46
+ });
47
+ }
@@ -0,0 +1,54 @@
1
+ import type { Address } from "@solana/kit";
2
+
3
+ import { fetchVault } from "../generated";
4
+ import { fetchAllStrategyInitReceiptAccountsOfVault } from "./batchFetchers";
5
+ import { convertDecimalBitsToNumber } from "./decimal";
6
+ import type { ExtensionsRpc } from "./rpc";
7
+
8
+ export type StrategyPositionInfo = {
9
+ strategyId: Address;
10
+ /** Position value in raw asset base units. */
11
+ amount: bigint;
12
+ };
13
+
14
+ export type VaultPositionAndTotalValues = {
15
+ /** Total value of the vault in raw asset base units. */
16
+ totalValue: bigint;
17
+ strategies: StrategyPositionInfo[];
18
+ };
19
+
20
+ export async function getPositionAndTotalValuesForVault(
21
+ rpc: ExtensionsRpc,
22
+ vault: Address,
23
+ ): Promise<VaultPositionAndTotalValues> {
24
+ const [vaultAccount, strategyAccounts] = await Promise.all([
25
+ fetchVault(rpc, vault),
26
+ fetchAllStrategyInitReceiptAccountsOfVault(rpc, vault),
27
+ ]);
28
+
29
+ return {
30
+ totalValue: vaultAccount.data.asset.totalValue,
31
+ strategies: strategyAccounts.map((account) => ({
32
+ strategyId: account.data.strategy,
33
+ amount: account.data.positionValue,
34
+ })),
35
+ };
36
+ }
37
+
38
+ export type HighWaterMarkInfo = {
39
+ highestAssetPerLp: number;
40
+ lastUpdatedTs: bigint;
41
+ };
42
+
43
+ export async function getHighWaterMarkForVault(
44
+ rpc: ExtensionsRpc,
45
+ vault: Address,
46
+ ): Promise<HighWaterMarkInfo> {
47
+ const account = await fetchVault(rpc, vault);
48
+ return {
49
+ highestAssetPerLp: convertDecimalBitsToNumber(
50
+ account.data.highWaterMark.highestAssetPerLpDecimalBits,
51
+ ),
52
+ lastUpdatedTs: account.data.highWaterMark.lastUpdatedTs,
53
+ };
54
+ }
@@ -0,0 +1,17 @@
1
+ import type {
2
+ GetAccountInfoApi,
3
+ GetMultipleAccountsApi,
4
+ GetProgramAccountsApi,
5
+ GetTokenSupplyApi,
6
+ Rpc,
7
+ } from "@solana/kit";
8
+
9
+ export type GetAccountInfoRpc = Rpc<GetAccountInfoApi>;
10
+ export type GetMultipleAccountsRpc = Rpc<GetMultipleAccountsApi>;
11
+ export type GetProgramAccountsRpc = Rpc<GetProgramAccountsApi>;
12
+ export type GetTokenSupplyRpc = Rpc<GetTokenSupplyApi>;
13
+
14
+ /** Combined RPC interface used by the higher-level extension helpers. */
15
+ export type ExtensionsRpc = Rpc<
16
+ GetAccountInfoApi & GetTokenSupplyApi & GetProgramAccountsApi
17
+ >;
@@ -0,0 +1,113 @@
1
+ import type { Account, Address } from "@solana/kit";
2
+
3
+ import {
4
+ fetchRequestWithdrawVaultReceipt,
5
+ fetchVault,
6
+ findRequestWithdrawVaultReceiptPda,
7
+ findVaultLpMintPda,
8
+ VOLTR_VAULT_PROGRAM_ADDRESS,
9
+ type RequestWithdrawVaultReceipt,
10
+ type Vault,
11
+ } from "../generated";
12
+ import { fetchAllRequestWithdrawVaultReceiptsOfVault } from "./batchFetchers";
13
+ import { convertDecimalBitsToNumber } from "./decimal";
14
+ import { getTotalManagementFeeBps } from "./lpEconomics";
15
+ import { calculateAssetsForWithdrawAmount } from "./math";
16
+ import type { ExtensionsRpc } from "./rpc";
17
+
18
+ export type PendingWithdrawal = {
19
+ user: Address;
20
+ amountAssetToWithdrawEffective: number;
21
+ amountAssetToWithdrawAtRequest: number;
22
+ amountAssetToWithdrawAtPresent: number;
23
+ amountLpEscrowed: bigint;
24
+ withdrawableFromTs: bigint;
25
+ };
26
+
27
+ function processWithdrawalReceipt(
28
+ receipt: RequestWithdrawVaultReceipt,
29
+ vault: Vault,
30
+ lpSupply: bigint,
31
+ ): PendingWithdrawal {
32
+ const amountAssetToWithdrawAtRequest = convertDecimalBitsToNumber(
33
+ receipt.amountAssetToWithdrawDecimalBits,
34
+ );
35
+
36
+ const amountAssetToWithdrawAtPresent = Number(
37
+ calculateAssetsForWithdrawAmount({
38
+ vaultTotalValue: vault.asset.totalValue,
39
+ vaultLastUpdatedLockedProfit:
40
+ vault.lockedProfitState.lastUpdatedLockedProfit,
41
+ vaultLastReport: vault.lockedProfitState.lastReport,
42
+ vaultLockedProfitDegradationDuration:
43
+ vault.vaultConfiguration.lockedProfitDegradationDuration,
44
+ vaultAccumulatedLpAdminFees: vault.feeState.accumulatedLpAdminFees,
45
+ vaultAccumulatedLpManagerFees: vault.feeState.accumulatedLpManagerFees,
46
+ vaultAccumulatedLpProtocolFees: vault.feeState.accumulatedLpProtocolFees,
47
+ vaultDeadWeight: vault.deadWeight,
48
+ vaultRedemptionFeeBps: vault.feeConfiguration.redemptionFee,
49
+ vaultManagementFeeBps: getTotalManagementFeeBps(vault.feeConfiguration),
50
+ vaultLastManagementFeeUpdateTs: vault.feeUpdate.lastManagementFeeUpdateTs,
51
+ lpSupply,
52
+ lpAmount: receipt.amountLpEscrowed,
53
+ }),
54
+ );
55
+
56
+ return {
57
+ user: receipt.user,
58
+ amountAssetToWithdrawEffective: Math.min(
59
+ amountAssetToWithdrawAtPresent,
60
+ amountAssetToWithdrawAtRequest,
61
+ ),
62
+ amountAssetToWithdrawAtRequest,
63
+ amountAssetToWithdrawAtPresent,
64
+ amountLpEscrowed: receipt.amountLpEscrowed,
65
+ withdrawableFromTs: receipt.withdrawableFromTs,
66
+ };
67
+ }
68
+
69
+ async function fetchVaultWithLpSupply(
70
+ rpc: ExtensionsRpc,
71
+ vault: Address,
72
+ ): Promise<{ data: Vault; lpSupply: bigint }> {
73
+ const account = await fetchVault(rpc, vault);
74
+ const [lpMint] = await findVaultLpMintPda(
75
+ { vault },
76
+ { programAddress: VOLTR_VAULT_PROGRAM_ADDRESS },
77
+ );
78
+ const supplyResp = await rpc.getTokenSupply(lpMint).send();
79
+ return {
80
+ data: account.data,
81
+ lpSupply: BigInt(supplyResp.value.amount),
82
+ };
83
+ }
84
+
85
+ export async function getPendingWithdrawalForUser(
86
+ rpc: ExtensionsRpc,
87
+ vault: Address,
88
+ user: Address,
89
+ ): Promise<PendingWithdrawal> {
90
+ const { data, lpSupply } = await fetchVaultWithLpSupply(rpc, vault);
91
+ const [receiptAddress] = await findRequestWithdrawVaultReceiptPda(
92
+ { vault, userTransferAuthority: user },
93
+ { programAddress: VOLTR_VAULT_PROGRAM_ADDRESS },
94
+ );
95
+ const receipt = await fetchRequestWithdrawVaultReceipt(rpc, receiptAddress);
96
+ return processWithdrawalReceipt(receipt.data, data, lpSupply);
97
+ }
98
+
99
+ export async function getAllPendingWithdrawalsForVault(
100
+ rpc: ExtensionsRpc,
101
+ vault: Address,
102
+ ): Promise<PendingWithdrawal[]> {
103
+ const [{ data, lpSupply }, receipts] = await Promise.all([
104
+ fetchVaultWithLpSupply(rpc, vault),
105
+ fetchAllRequestWithdrawVaultReceiptsOfVault(rpc, vault),
106
+ ]);
107
+
108
+ return receipts.map((account: Account<RequestWithdrawVaultReceipt>) =>
109
+ processWithdrawalReceipt(account.data, data, lpSupply),
110
+ );
111
+ }
112
+
113
+ export { processWithdrawalReceipt };