@kestrelfi/lyc-sdk 1.0.1

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 (717) hide show
  1. package/.env.example +11 -0
  2. package/README.md +207 -0
  3. package/dist/sdks/long-yield-carry/scripts/asyncBurn.d.ts +1 -0
  4. package/dist/sdks/long-yield-carry/scripts/asyncBurn.js +117 -0
  5. package/dist/sdks/long-yield-carry/scripts/burnToken.d.ts +1 -0
  6. package/dist/sdks/long-yield-carry/scripts/burnToken.js +98 -0
  7. package/dist/sdks/long-yield-carry/scripts/claimIncentives.d.ts +1 -0
  8. package/dist/sdks/long-yield-carry/scripts/claimIncentives.js +108 -0
  9. package/dist/sdks/long-yield-carry/scripts/closeCpiPlans.d.ts +1 -0
  10. package/dist/sdks/long-yield-carry/scripts/closeCpiPlans.js +93 -0
  11. package/dist/sdks/long-yield-carry/scripts/collectInterest.d.ts +1 -0
  12. package/dist/sdks/long-yield-carry/scripts/collectInterest.js +164 -0
  13. package/dist/sdks/long-yield-carry/scripts/collectProtocolFees.d.ts +1 -0
  14. package/dist/sdks/long-yield-carry/scripts/collectProtocolFees.js +120 -0
  15. package/dist/sdks/long-yield-carry/scripts/computeOptimalAllocations.d.ts +1 -0
  16. package/dist/sdks/long-yield-carry/scripts/computeOptimalAllocations.js +84 -0
  17. package/dist/sdks/long-yield-carry/scripts/createToken.d.ts +1 -0
  18. package/dist/sdks/long-yield-carry/scripts/createToken.js +76 -0
  19. package/dist/sdks/long-yield-carry/scripts/createTokenLendingPosition.d.ts +1 -0
  20. package/dist/sdks/long-yield-carry/scripts/createTokenLendingPosition.js +157 -0
  21. package/dist/sdks/long-yield-carry/scripts/createYieldingBank.d.ts +1 -0
  22. package/dist/sdks/long-yield-carry/scripts/createYieldingBank.js +69 -0
  23. package/dist/sdks/long-yield-carry/scripts/decreaseCarryPositions.d.ts +1 -0
  24. package/dist/sdks/long-yield-carry/scripts/decreaseCarryPositions.js +247 -0
  25. package/dist/sdks/long-yield-carry/scripts/depositUnlentCollateral.d.ts +1 -0
  26. package/dist/sdks/long-yield-carry/scripts/depositUnlentCollateral.js +90 -0
  27. package/dist/sdks/long-yield-carry/scripts/emergency/deleverageAll.d.ts +1 -0
  28. package/dist/sdks/long-yield-carry/scripts/emergency/deleverageAll.js +202 -0
  29. package/dist/sdks/long-yield-carry/scripts/emergency/triggerCircuitBreaker.d.ts +1 -0
  30. package/dist/sdks/long-yield-carry/scripts/emergency/triggerCircuitBreaker.js +68 -0
  31. package/dist/sdks/long-yield-carry/scripts/env.d.ts +1 -0
  32. package/dist/sdks/long-yield-carry/scripts/env.js +8 -0
  33. package/dist/sdks/long-yield-carry/scripts/findTxs.d.ts +1 -0
  34. package/dist/sdks/long-yield-carry/scripts/findTxs.js +143 -0
  35. package/dist/sdks/long-yield-carry/scripts/increaseCarryPositions.d.ts +1 -0
  36. package/dist/sdks/long-yield-carry/scripts/increaseCarryPositions.js +112 -0
  37. package/dist/sdks/long-yield-carry/scripts/inspect/format.d.ts +13 -0
  38. package/dist/sdks/long-yield-carry/scripts/inspect/format.js +363 -0
  39. package/dist/sdks/long-yield-carry/scripts/inspect.d.ts +1 -0
  40. package/dist/sdks/long-yield-carry/scripts/inspect.js +108 -0
  41. package/dist/sdks/long-yield-carry/scripts/localUtils.d.ts +53 -0
  42. package/dist/sdks/long-yield-carry/scripts/localUtils.js +191 -0
  43. package/dist/sdks/long-yield-carry/scripts/mintToken.d.ts +1 -0
  44. package/dist/sdks/long-yield-carry/scripts/mintToken.js +103 -0
  45. package/dist/sdks/long-yield-carry/scripts/processAsyncBurns.d.ts +1 -0
  46. package/dist/sdks/long-yield-carry/scripts/processAsyncBurns.js +76 -0
  47. package/dist/sdks/long-yield-carry/scripts/rebalanceToken.d.ts +1 -0
  48. package/dist/sdks/long-yield-carry/scripts/rebalanceToken.js +210 -0
  49. package/dist/sdks/long-yield-carry/scripts/rebalanceYieldingBank.d.ts +1 -0
  50. package/dist/sdks/long-yield-carry/scripts/rebalanceYieldingBank.js +149 -0
  51. package/dist/sdks/long-yield-carry/scripts/recollateralizeLoss.d.ts +1 -0
  52. package/dist/sdks/long-yield-carry/scripts/recollateralizeLoss.js +64 -0
  53. package/dist/sdks/long-yield-carry/scripts/refresh.d.ts +1 -0
  54. package/dist/sdks/long-yield-carry/scripts/refresh.js +101 -0
  55. package/dist/sdks/long-yield-carry/scripts/updateFees.d.ts +1 -0
  56. package/dist/sdks/long-yield-carry/scripts/updateFees.js +369 -0
  57. package/dist/sdks/long-yield-carry/scripts/updateGeneralLut.d.ts +1 -0
  58. package/dist/sdks/long-yield-carry/scripts/updateGeneralLut.js +27 -0
  59. package/dist/sdks/long-yield-carry/scripts/updateLendingPositionConfig.d.ts +1 -0
  60. package/dist/sdks/long-yield-carry/scripts/updateLendingPositionConfig.js +127 -0
  61. package/dist/sdks/long-yield-carry/scripts/updateTokenLuts.d.ts +1 -0
  62. package/dist/sdks/long-yield-carry/scripts/updateTokenLuts.js +27 -0
  63. package/dist/sdks/long-yield-carry/scripts/updateTokenMetadata.d.ts +1 -0
  64. package/dist/sdks/long-yield-carry/scripts/updateTokenMetadata.js +194 -0
  65. package/dist/sdks/long-yield-carry/scripts/updateYieldingBankConfig.d.ts +1 -0
  66. package/dist/sdks/long-yield-carry/scripts/updateYieldingBankConfig.js +84 -0
  67. package/dist/sdks/long-yield-carry/scripts/withdrawUnlentCollateral.d.ts +1 -0
  68. package/dist/sdks/long-yield-carry/scripts/withdrawUnlentCollateral.js +140 -0
  69. package/dist/sdks/long-yield-carry/src/client/account.d.ts +152 -0
  70. package/dist/sdks/long-yield-carry/src/client/account.js +349 -0
  71. package/dist/sdks/long-yield-carry/src/client/builders/args.d.ts +299 -0
  72. package/dist/sdks/long-yield-carry/src/client/builders/args.js +2 -0
  73. package/dist/sdks/long-yield-carry/src/client/builders/asyncBurnBuilder.d.ts +20 -0
  74. package/dist/sdks/long-yield-carry/src/client/builders/asyncBurnBuilder.js +212 -0
  75. package/dist/sdks/long-yield-carry/src/client/builders/base.d.ts +77 -0
  76. package/dist/sdks/long-yield-carry/src/client/builders/base.js +191 -0
  77. package/dist/sdks/long-yield-carry/src/client/builders/burnTokenBuilder.d.ts +18 -0
  78. package/dist/sdks/long-yield-carry/src/client/builders/burnTokenBuilder.js +165 -0
  79. package/dist/sdks/long-yield-carry/src/client/builders/claimIncentivesBuilder.d.ts +9 -0
  80. package/dist/sdks/long-yield-carry/src/client/builders/claimIncentivesBuilder.js +135 -0
  81. package/dist/sdks/long-yield-carry/src/client/builders/collectFeesBuilder.d.ts +14 -0
  82. package/dist/sdks/long-yield-carry/src/client/builders/collectFeesBuilder.js +50 -0
  83. package/dist/sdks/long-yield-carry/src/client/builders/collectInterestBuilder.d.ts +8 -0
  84. package/dist/sdks/long-yield-carry/src/client/builders/collectInterestBuilder.js +86 -0
  85. package/dist/sdks/long-yield-carry/src/client/builders/createCpiPlanBuilder.d.ts +6 -0
  86. package/dist/sdks/long-yield-carry/src/client/builders/createCpiPlanBuilder.js +22 -0
  87. package/dist/sdks/long-yield-carry/src/client/builders/createTokenBuilder.d.ts +7 -0
  88. package/dist/sdks/long-yield-carry/src/client/builders/createTokenBuilder.js +64 -0
  89. package/dist/sdks/long-yield-carry/src/client/builders/createTokenLendingPositionBuilder.d.ts +10 -0
  90. package/dist/sdks/long-yield-carry/src/client/builders/createTokenLendingPositionBuilder.js +138 -0
  91. package/dist/sdks/long-yield-carry/src/client/builders/createYieldingBankAllocationBuilder.d.ts +7 -0
  92. package/dist/sdks/long-yield-carry/src/client/builders/createYieldingBankAllocationBuilder.js +29 -0
  93. package/dist/sdks/long-yield-carry/src/client/builders/createYieldingBankBuilder.d.ts +7 -0
  94. package/dist/sdks/long-yield-carry/src/client/builders/createYieldingBankBuilder.js +39 -0
  95. package/dist/sdks/long-yield-carry/src/client/builders/decreaseCarryPositionBuilder.d.ts +30 -0
  96. package/dist/sdks/long-yield-carry/src/client/builders/decreaseCarryPositionBuilder.js +99 -0
  97. package/dist/sdks/long-yield-carry/src/client/builders/depositUnlentCollateralBuilder.d.ts +8 -0
  98. package/dist/sdks/long-yield-carry/src/client/builders/depositUnlentCollateralBuilder.js +64 -0
  99. package/dist/sdks/long-yield-carry/src/client/builders/increaseCarryPositionBuilder.d.ts +8 -0
  100. package/dist/sdks/long-yield-carry/src/client/builders/increaseCarryPositionBuilder.js +73 -0
  101. package/dist/sdks/long-yield-carry/src/client/builders/index.d.ts +28 -0
  102. package/dist/sdks/long-yield-carry/src/client/builders/index.js +62 -0
  103. package/dist/sdks/long-yield-carry/src/client/builders/mintTokenBuilder.d.ts +8 -0
  104. package/dist/sdks/long-yield-carry/src/client/builders/mintTokenBuilder.js +95 -0
  105. package/dist/sdks/long-yield-carry/src/client/builders/rebalanceTokenBuilder.d.ts +11 -0
  106. package/dist/sdks/long-yield-carry/src/client/builders/rebalanceTokenBuilder.js +255 -0
  107. package/dist/sdks/long-yield-carry/src/client/builders/rebalanceYieldingBankBuilder.d.ts +8 -0
  108. package/dist/sdks/long-yield-carry/src/client/builders/rebalanceYieldingBankBuilder.js +75 -0
  109. package/dist/sdks/long-yield-carry/src/client/builders/recollateralizeLossBuilder.d.ts +12 -0
  110. package/dist/sdks/long-yield-carry/src/client/builders/recollateralizeLossBuilder.js +220 -0
  111. package/dist/sdks/long-yield-carry/src/client/builders/refreshTokenStateBuilder.d.ts +9 -0
  112. package/dist/sdks/long-yield-carry/src/client/builders/refreshTokenStateBuilder.js +112 -0
  113. package/dist/sdks/long-yield-carry/src/client/builders/refreshTokensBuilder.d.ts +9 -0
  114. package/dist/sdks/long-yield-carry/src/client/builders/refreshTokensBuilder.js +59 -0
  115. package/dist/sdks/long-yield-carry/src/client/builders/refreshYieldingBankBuilder.d.ts +8 -0
  116. package/dist/sdks/long-yield-carry/src/client/builders/refreshYieldingBankBuilder.js +29 -0
  117. package/dist/sdks/long-yield-carry/src/client/builders/resetTokenBurnRateLimitBuilder.d.ts +7 -0
  118. package/dist/sdks/long-yield-carry/src/client/builders/resetTokenBurnRateLimitBuilder.js +19 -0
  119. package/dist/sdks/long-yield-carry/src/client/builders/setTokenCircuitBreakerBuilder.d.ts +11 -0
  120. package/dist/sdks/long-yield-carry/src/client/builders/setTokenCircuitBreakerBuilder.js +31 -0
  121. package/dist/sdks/long-yield-carry/src/client/builders/setYieldingBankCircuitBreakerBuilder.d.ts +8 -0
  122. package/dist/sdks/long-yield-carry/src/client/builders/setYieldingBankCircuitBreakerBuilder.js +28 -0
  123. package/dist/sdks/long-yield-carry/src/client/builders/updateLendingPositionConfigBuilder.d.ts +10 -0
  124. package/dist/sdks/long-yield-carry/src/client/builders/updateLendingPositionConfigBuilder.js +30 -0
  125. package/dist/sdks/long-yield-carry/src/client/builders/updateTokenConfigurationBuilder.d.ts +11 -0
  126. package/dist/sdks/long-yield-carry/src/client/builders/updateTokenConfigurationBuilder.js +47 -0
  127. package/dist/sdks/long-yield-carry/src/client/builders/updateTokenMetadataBuilder.d.ts +7 -0
  128. package/dist/sdks/long-yield-carry/src/client/builders/updateTokenMetadataBuilder.js +24 -0
  129. package/dist/sdks/long-yield-carry/src/client/builders/updateYieldingBankConfigBuilder.d.ts +10 -0
  130. package/dist/sdks/long-yield-carry/src/client/builders/updateYieldingBankConfigBuilder.js +31 -0
  131. package/dist/sdks/long-yield-carry/src/client/builders/utils.d.ts +4 -0
  132. package/dist/sdks/long-yield-carry/src/client/builders/utils.js +20 -0
  133. package/dist/sdks/long-yield-carry/src/client/client.d.ts +115 -0
  134. package/dist/sdks/long-yield-carry/src/client/client.js +166 -0
  135. package/dist/sdks/long-yield-carry/src/client/externalLiquidityResolver.d.ts +13 -0
  136. package/dist/sdks/long-yield-carry/src/client/externalLiquidityResolver.js +34 -0
  137. package/dist/sdks/long-yield-carry/src/client/index.d.ts +10 -0
  138. package/dist/sdks/long-yield-carry/src/client/index.js +33 -0
  139. package/dist/sdks/long-yield-carry/src/client/lendingPlatformClients.d.ts +19 -0
  140. package/dist/sdks/long-yield-carry/src/client/lendingPlatformClients.js +33 -0
  141. package/dist/sdks/long-yield-carry/src/client/pda.d.ts +33 -0
  142. package/dist/sdks/long-yield-carry/src/client/pda.js +79 -0
  143. package/dist/sdks/long-yield-carry/src/client/plans/collectInterest.d.ts +24 -0
  144. package/dist/sdks/long-yield-carry/src/client/plans/collectInterest.js +150 -0
  145. package/dist/sdks/long-yield-carry/src/client/plans/decreaseCarryPosition.d.ts +12 -0
  146. package/dist/sdks/long-yield-carry/src/client/plans/decreaseCarryPosition.js +140 -0
  147. package/dist/sdks/long-yield-carry/src/client/routes/collectInterest.d.ts +13 -0
  148. package/dist/sdks/long-yield-carry/src/client/routes/collectInterest.js +39 -0
  149. package/dist/sdks/long-yield-carry/src/client/transaction.d.ts +41 -0
  150. package/dist/sdks/long-yield-carry/src/client/transaction.js +55 -0
  151. package/dist/sdks/long-yield-carry/src/client/types/builders.d.ts +18 -0
  152. package/dist/sdks/long-yield-carry/src/client/types/builders.js +2 -0
  153. package/dist/sdks/long-yield-carry/src/client/types/enums.d.ts +22 -0
  154. package/dist/sdks/long-yield-carry/src/client/types/enums.js +48 -0
  155. package/dist/sdks/long-yield-carry/src/client/types/general.d.ts +98 -0
  156. package/dist/sdks/long-yield-carry/src/client/types/general.js +2 -0
  157. package/dist/sdks/long-yield-carry/src/client/types/index.d.ts +6 -0
  158. package/dist/sdks/long-yield-carry/src/client/types/index.js +22 -0
  159. package/dist/sdks/long-yield-carry/src/client/types/ix.d.ts +352 -0
  160. package/dist/sdks/long-yield-carry/src/client/types/ix.js +2 -0
  161. package/dist/sdks/long-yield-carry/src/client/types/planTypes/collectInterest.d.ts +91 -0
  162. package/dist/sdks/long-yield-carry/src/client/types/planTypes/collectInterest.js +2 -0
  163. package/dist/sdks/long-yield-carry/src/client/types/planTypes/common.d.ts +28 -0
  164. package/dist/sdks/long-yield-carry/src/client/types/planTypes/common.js +2 -0
  165. package/dist/sdks/long-yield-carry/src/client/types/planTypes/decreaseCarryPosition.d.ts +128 -0
  166. package/dist/sdks/long-yield-carry/src/client/types/planTypes/decreaseCarryPosition.js +2 -0
  167. package/dist/sdks/long-yield-carry/src/client/types/planTypes/index.d.ts +3 -0
  168. package/dist/sdks/long-yield-carry/src/client/types/planTypes/index.js +19 -0
  169. package/dist/sdks/long-yield-carry/src/client/types/tx.d.ts +339 -0
  170. package/dist/sdks/long-yield-carry/src/client/types/tx.js +2 -0
  171. package/dist/sdks/long-yield-carry/src/constants/configs/allocations.d.ts +3 -0
  172. package/dist/sdks/long-yield-carry/src/constants/configs/allocations.js +23 -0
  173. package/dist/sdks/long-yield-carry/src/constants/configs/carryTradePresets.d.ts +58 -0
  174. package/dist/sdks/long-yield-carry/src/constants/configs/carryTradePresets.js +116 -0
  175. package/dist/sdks/long-yield-carry/src/constants/configs/index.d.ts +2 -0
  176. package/dist/sdks/long-yield-carry/src/constants/configs/index.js +18 -0
  177. package/dist/sdks/long-yield-carry/src/constants/general.d.ts +70 -0
  178. package/dist/sdks/long-yield-carry/src/constants/general.js +107 -0
  179. package/dist/sdks/long-yield-carry/src/constants/index.d.ts +3 -0
  180. package/dist/sdks/long-yield-carry/src/constants/index.js +19 -0
  181. package/dist/sdks/long-yield-carry/src/constants/lycTokenMetadata.d.ts +36 -0
  182. package/dist/sdks/long-yield-carry/src/constants/lycTokenMetadata.js +41 -0
  183. package/dist/sdks/long-yield-carry/src/decoders/decodeTransaction.d.ts +86 -0
  184. package/dist/sdks/long-yield-carry/src/decoders/decodeTransaction.js +230 -0
  185. package/dist/sdks/long-yield-carry/src/decoders/discriminators.d.ts +8 -0
  186. package/dist/sdks/long-yield-carry/src/decoders/discriminators.js +11 -0
  187. package/dist/sdks/long-yield-carry/src/decoders/idlAccounts.d.ts +29 -0
  188. package/dist/sdks/long-yield-carry/src/decoders/idlAccounts.js +57 -0
  189. package/dist/sdks/long-yield-carry/src/decoders/index.d.ts +6 -0
  190. package/dist/sdks/long-yield-carry/src/decoders/index.js +14 -0
  191. package/dist/sdks/long-yield-carry/src/decoders/innerCpis.d.ts +68 -0
  192. package/dist/sdks/long-yield-carry/src/decoders/innerCpis.js +225 -0
  193. package/dist/sdks/long-yield-carry/src/decoders/lycInstructionNames.d.ts +6 -0
  194. package/dist/sdks/long-yield-carry/src/decoders/lycInstructionNames.js +73 -0
  195. package/dist/sdks/long-yield-carry/src/decoders/programIds.d.ts +4 -0
  196. package/dist/sdks/long-yield-carry/src/decoders/programIds.js +11 -0
  197. package/dist/sdks/long-yield-carry/src/decoders/solana.d.ts +7 -0
  198. package/dist/sdks/long-yield-carry/src/decoders/solana.js +30 -0
  199. package/dist/sdks/long-yield-carry/src/decoders/transactionPayload.d.ts +41 -0
  200. package/dist/sdks/long-yield-carry/src/decoders/transactionPayload.js +6 -0
  201. package/dist/sdks/long-yield-carry/src/decoders/types.d.ts +58 -0
  202. package/dist/sdks/long-yield-carry/src/decoders/types.js +2 -0
  203. package/dist/sdks/long-yield-carry/src/errors.d.ts +69 -0
  204. package/dist/sdks/long-yield-carry/src/errors.js +183 -0
  205. package/dist/sdks/long-yield-carry/src/idl/long_yield_carry.d.ts +7327 -0
  206. package/dist/sdks/long-yield-carry/src/idl/long_yield_carry.js +7323 -0
  207. package/dist/sdks/long-yield-carry/src/index.d.ts +10 -0
  208. package/dist/sdks/long-yield-carry/src/index.js +25 -0
  209. package/dist/sdks/long-yield-carry/src/metrics/index.d.ts +1 -0
  210. package/dist/sdks/long-yield-carry/src/metrics/index.js +17 -0
  211. package/dist/sdks/long-yield-carry/src/metrics/protocolMetrics.d.ts +276 -0
  212. package/dist/sdks/long-yield-carry/src/metrics/protocolMetrics.js +547 -0
  213. package/dist/sdks/long-yield-carry/src/models/index.d.ts +3 -0
  214. package/dist/sdks/long-yield-carry/src/models/index.js +7 -0
  215. package/dist/sdks/long-yield-carry/src/models/lycToken.d.ts +156 -0
  216. package/dist/sdks/long-yield-carry/src/models/lycToken.js +288 -0
  217. package/dist/sdks/long-yield-carry/src/models/yieldingBank.d.ts +52 -0
  218. package/dist/sdks/long-yield-carry/src/models/yieldingBank.js +109 -0
  219. package/dist/sdks/long-yield-carry/src/services/allocation/allocationService.d.ts +106 -0
  220. package/dist/sdks/long-yield-carry/src/services/allocation/allocationService.js +589 -0
  221. package/dist/sdks/long-yield-carry/src/services/allocation/index.d.ts +2 -0
  222. package/dist/sdks/long-yield-carry/src/services/allocation/index.js +18 -0
  223. package/dist/sdks/long-yield-carry/src/services/allocation/types.d.ts +25 -0
  224. package/dist/sdks/long-yield-carry/src/services/allocation/types.js +2 -0
  225. package/dist/sdks/long-yield-carry/src/services/carry/carryAllocationConfig.d.ts +103 -0
  226. package/dist/sdks/long-yield-carry/src/services/carry/carryAllocationConfig.js +146 -0
  227. package/dist/sdks/long-yield-carry/src/services/carry/index.d.ts +2 -0
  228. package/dist/sdks/long-yield-carry/src/services/carry/index.js +18 -0
  229. package/dist/sdks/long-yield-carry/src/services/carry/lycLendingPositionManager.d.ts +39 -0
  230. package/dist/sdks/long-yield-carry/src/services/carry/lycLendingPositionManager.js +100 -0
  231. package/dist/sdks/long-yield-carry/src/services/index.d.ts +5 -0
  232. package/dist/sdks/long-yield-carry/src/services/index.js +21 -0
  233. package/dist/sdks/long-yield-carry/src/services/lendingPosition/index.d.ts +2 -0
  234. package/dist/sdks/long-yield-carry/src/services/lendingPosition/index.js +5 -0
  235. package/dist/sdks/long-yield-carry/src/services/lendingPosition/lendingPositionService.d.ts +88 -0
  236. package/dist/sdks/long-yield-carry/src/services/lendingPosition/lendingPositionService.js +229 -0
  237. package/dist/sdks/long-yield-carry/src/services/rebalance/index.d.ts +2 -0
  238. package/dist/sdks/long-yield-carry/src/services/rebalance/index.js +18 -0
  239. package/dist/sdks/long-yield-carry/src/services/rebalance/token/index.d.ts +1 -0
  240. package/dist/sdks/long-yield-carry/src/services/rebalance/token/index.js +17 -0
  241. package/dist/sdks/long-yield-carry/src/services/rebalance/token/tokenRebalanceService.d.ts +51 -0
  242. package/dist/sdks/long-yield-carry/src/services/rebalance/token/tokenRebalanceService.js +99 -0
  243. package/dist/sdks/long-yield-carry/src/services/rebalance/yieldingBank/index.d.ts +3 -0
  244. package/dist/sdks/long-yield-carry/src/services/rebalance/yieldingBank/index.js +21 -0
  245. package/dist/sdks/long-yield-carry/src/services/rebalance/yieldingBank/planner.d.ts +68 -0
  246. package/dist/sdks/long-yield-carry/src/services/rebalance/yieldingBank/planner.js +181 -0
  247. package/dist/sdks/long-yield-carry/src/services/rebalance/yieldingBank/strategy.d.ts +26 -0
  248. package/dist/sdks/long-yield-carry/src/services/rebalance/yieldingBank/strategy.js +26 -0
  249. package/dist/sdks/long-yield-carry/src/services/rebalance/yieldingBank/types.d.ts +40 -0
  250. package/dist/sdks/long-yield-carry/src/services/rebalance/yieldingBank/types.js +2 -0
  251. package/dist/sdks/long-yield-carry/src/services/redemption/index.d.ts +2 -0
  252. package/dist/sdks/long-yield-carry/src/services/redemption/index.js +5 -0
  253. package/dist/sdks/long-yield-carry/src/services/redemption/redemptionService.d.ts +139 -0
  254. package/dist/sdks/long-yield-carry/src/services/redemption/redemptionService.js +532 -0
  255. package/dist/sdks/long-yield-carry/src/types/enriched.d.ts +168 -0
  256. package/dist/sdks/long-yield-carry/src/types/enriched.js +2 -0
  257. package/dist/sdks/long-yield-carry/src/types/index.d.ts +1 -0
  258. package/dist/sdks/long-yield-carry/src/types/index.js +17 -0
  259. package/dist/sdks/long-yield-carry/src/utils/cache.d.ts +4 -0
  260. package/dist/sdks/long-yield-carry/src/utils/cache.js +10 -0
  261. package/dist/sdks/long-yield-carry/src/utils/data.d.ts +12 -0
  262. package/dist/sdks/long-yield-carry/src/utils/data.js +59 -0
  263. package/dist/sdks/long-yield-carry/src/utils/enrichment.d.ts +5 -0
  264. package/dist/sdks/long-yield-carry/src/utils/enrichment.js +244 -0
  265. package/dist/sdks/long-yield-carry/src/utils/feeDripMetrics.d.ts +36 -0
  266. package/dist/sdks/long-yield-carry/src/utils/feeDripMetrics.js +93 -0
  267. package/dist/sdks/long-yield-carry/src/utils/general.d.ts +28 -0
  268. package/dist/sdks/long-yield-carry/src/utils/general.js +47 -0
  269. package/dist/sdks/long-yield-carry/src/utils/index.d.ts +13 -0
  270. package/dist/sdks/long-yield-carry/src/utils/index.js +29 -0
  271. package/dist/sdks/long-yield-carry/src/utils/ix.d.ts +83 -0
  272. package/dist/sdks/long-yield-carry/src/utils/ix.js +165 -0
  273. package/dist/sdks/long-yield-carry/src/utils/lendingPosition.d.ts +68 -0
  274. package/dist/sdks/long-yield-carry/src/utils/lendingPosition.js +105 -0
  275. package/dist/sdks/long-yield-carry/src/utils/lookupTables.d.ts +55 -0
  276. package/dist/sdks/long-yield-carry/src/utils/lookupTables.js +216 -0
  277. package/dist/sdks/long-yield-carry/src/utils/lycData.d.ts +66 -0
  278. package/dist/sdks/long-yield-carry/src/utils/lycData.js +211 -0
  279. package/dist/sdks/long-yield-carry/src/utils/timelock.d.ts +19 -0
  280. package/dist/sdks/long-yield-carry/src/utils/timelock.js +37 -0
  281. package/dist/sdks/long-yield-carry/src/utils/tokenFeeMath.d.ts +11 -0
  282. package/dist/sdks/long-yield-carry/src/utils/tokenFeeMath.js +24 -0
  283. package/dist/sdks/long-yield-carry/src/utils/transactions.d.ts +20 -0
  284. package/dist/sdks/long-yield-carry/src/utils/transactions.js +72 -0
  285. package/dist/sdks/long-yield-carry/src/utils/yieldingBank.d.ts +24 -0
  286. package/dist/sdks/long-yield-carry/src/utils/yieldingBank.js +36 -0
  287. package/dist/shared/common/src/constants/accountMetas.d.ts +3 -0
  288. package/dist/shared/common/src/constants/accountMetas.js +9 -0
  289. package/dist/shared/common/src/constants/general.d.ts +21 -0
  290. package/dist/shared/common/src/constants/general.js +30 -0
  291. package/dist/shared/common/src/constants/generated/cpi.d.ts +23 -0
  292. package/dist/shared/common/src/constants/generated/cpi.js +28 -0
  293. package/dist/shared/common/src/constants/generated/index.d.ts +1 -0
  294. package/dist/shared/common/src/constants/generated/index.js +17 -0
  295. package/dist/shared/common/src/constants/index.d.ts +3 -0
  296. package/dist/shared/common/src/constants/index.js +19 -0
  297. package/dist/shared/common/src/index.d.ts +4 -0
  298. package/dist/shared/common/src/index.js +20 -0
  299. package/dist/shared/common/src/services/baseAccountClient.d.ts +22 -0
  300. package/dist/shared/common/src/services/baseAccountClient.js +38 -0
  301. package/dist/shared/common/src/services/baseIxBuilderService.d.ts +27 -0
  302. package/dist/shared/common/src/services/baseIxBuilderService.js +48 -0
  303. package/dist/shared/common/src/services/dataCache.d.ts +41 -0
  304. package/dist/shared/common/src/services/dataCache.js +130 -0
  305. package/dist/shared/common/src/services/index.d.ts +8 -0
  306. package/dist/shared/common/src/services/index.js +24 -0
  307. package/dist/shared/common/src/services/lutManager.d.ts +31 -0
  308. package/dist/shared/common/src/services/lutManager.js +133 -0
  309. package/dist/shared/common/src/services/mints/defaults.d.ts +2 -0
  310. package/dist/shared/common/src/services/mints/defaults.js +152 -0
  311. package/dist/shared/common/src/services/mints/index.d.ts +4 -0
  312. package/dist/shared/common/src/services/mints/index.js +20 -0
  313. package/dist/shared/common/src/services/mints/registry.d.ts +70 -0
  314. package/dist/shared/common/src/services/mints/registry.js +117 -0
  315. package/dist/shared/common/src/services/mints/symbols.d.ts +6 -0
  316. package/dist/shared/common/src/services/mints/symbols.js +13 -0
  317. package/dist/shared/common/src/services/mints/types.d.ts +30 -0
  318. package/dist/shared/common/src/services/mints/types.js +2 -0
  319. package/dist/shared/common/src/services/swap/index.d.ts +4 -0
  320. package/dist/shared/common/src/services/swap/index.js +20 -0
  321. package/dist/shared/common/src/services/swap/routableSwapClient.d.ts +36 -0
  322. package/dist/shared/common/src/services/swap/routableSwapClient.js +2 -0
  323. package/dist/shared/common/src/services/swap/swapClientBase.d.ts +45 -0
  324. package/dist/shared/common/src/services/swap/swapClientBase.js +2 -0
  325. package/dist/shared/common/src/services/swap/swapRouting.d.ts +13 -0
  326. package/dist/shared/common/src/services/swap/swapRouting.js +28 -0
  327. package/dist/shared/common/src/services/swap/types.d.ts +77 -0
  328. package/dist/shared/common/src/services/swap/types.js +2 -0
  329. package/dist/shared/common/src/services/token/index.d.ts +2 -0
  330. package/dist/shared/common/src/services/token/index.js +18 -0
  331. package/dist/shared/common/src/services/token/tokenProtocolClientBase.d.ts +51 -0
  332. package/dist/shared/common/src/services/token/tokenProtocolClientBase.js +2 -0
  333. package/dist/shared/common/src/services/token/types.d.ts +19 -0
  334. package/dist/shared/common/src/services/token/types.js +2 -0
  335. package/dist/shared/common/src/services/transactionSender.d.ts +24 -0
  336. package/dist/shared/common/src/services/transactionSender.js +30 -0
  337. package/dist/shared/common/src/types/cpi.d.ts +34 -0
  338. package/dist/shared/common/src/types/cpi.js +8 -0
  339. package/dist/shared/common/src/types/enums.d.ts +59 -0
  340. package/dist/shared/common/src/types/enums.js +122 -0
  341. package/dist/shared/common/src/types/general.d.ts +38 -0
  342. package/dist/shared/common/src/types/general.js +2 -0
  343. package/dist/shared/common/src/types/index.d.ts +4 -0
  344. package/dist/shared/common/src/types/index.js +20 -0
  345. package/dist/shared/common/src/types/solana.d.ts +24 -0
  346. package/dist/shared/common/src/types/solana.js +2 -0
  347. package/dist/shared/common/src/utils/accounts/index.d.ts +5 -0
  348. package/dist/shared/common/src/utils/accounts/index.js +21 -0
  349. package/dist/shared/common/src/utils/accounts/meta.d.ts +21 -0
  350. package/dist/shared/common/src/utils/accounts/meta.js +27 -0
  351. package/dist/shared/common/src/utils/accounts/pda.d.ts +2 -0
  352. package/dist/shared/common/src/utils/accounts/pda.js +17 -0
  353. package/dist/shared/common/src/utils/accounts/roles.d.ts +26 -0
  354. package/dist/shared/common/src/utils/accounts/roles.js +54 -0
  355. package/dist/shared/common/src/utils/accounts/rpc.d.ts +8 -0
  356. package/dist/shared/common/src/utils/accounts/rpc.js +30 -0
  357. package/dist/shared/common/src/utils/accounts/splBalances.d.ts +15 -0
  358. package/dist/shared/common/src/utils/accounts/splBalances.js +52 -0
  359. package/dist/shared/common/src/utils/anchor.d.ts +17 -0
  360. package/dist/shared/common/src/utils/anchor.js +29 -0
  361. package/dist/shared/common/src/utils/asyncConcurrency.d.ts +5 -0
  362. package/dist/shared/common/src/utils/asyncConcurrency.js +28 -0
  363. package/dist/shared/common/src/utils/compat.d.ts +46 -0
  364. package/dist/shared/common/src/utils/compat.js +72 -0
  365. package/dist/shared/common/src/utils/cpi/args.d.ts +69 -0
  366. package/dist/shared/common/src/utils/cpi/args.js +100 -0
  367. package/dist/shared/common/src/utils/cpi/index.d.ts +2 -0
  368. package/dist/shared/common/src/utils/cpi/index.js +18 -0
  369. package/dist/shared/common/src/utils/cpi/refs.d.ts +122 -0
  370. package/dist/shared/common/src/utils/cpi/refs.js +234 -0
  371. package/dist/shared/common/src/utils/data.d.ts +20 -0
  372. package/dist/shared/common/src/utils/data.js +27 -0
  373. package/dist/shared/common/src/utils/general.d.ts +24 -0
  374. package/dist/shared/common/src/utils/general.js +95 -0
  375. package/dist/shared/common/src/utils/index.d.ts +22 -0
  376. package/dist/shared/common/src/utils/index.js +38 -0
  377. package/dist/shared/common/src/utils/instruction.d.ts +74 -0
  378. package/dist/shared/common/src/utils/instruction.js +147 -0
  379. package/dist/shared/common/src/utils/jito.d.ts +113 -0
  380. package/dist/shared/common/src/utils/jito.js +178 -0
  381. package/dist/shared/common/src/utils/json.d.ts +5 -0
  382. package/dist/shared/common/src/utils/json.js +25 -0
  383. package/dist/shared/common/src/utils/jsonRpcFetch.d.ts +21 -0
  384. package/dist/shared/common/src/utils/jsonRpcFetch.js +134 -0
  385. package/dist/shared/common/src/utils/metadata.d.ts +107 -0
  386. package/dist/shared/common/src/utils/metadata.js +194 -0
  387. package/dist/shared/common/src/utils/numbers.d.ts +72 -0
  388. package/dist/shared/common/src/utils/numbers.js +193 -0
  389. package/dist/shared/common/src/utils/priorityFee.d.ts +18 -0
  390. package/dist/shared/common/src/utils/priorityFee.js +63 -0
  391. package/dist/shared/common/src/utils/retry.d.ts +20 -0
  392. package/dist/shared/common/src/utils/retry.js +69 -0
  393. package/dist/shared/common/src/utils/rpc.d.ts +40 -0
  394. package/dist/shared/common/src/utils/rpc.js +130 -0
  395. package/dist/shared/common/src/utils/solana.d.ts +23 -0
  396. package/dist/shared/common/src/utils/solana.js +61 -0
  397. package/dist/shared/common/src/utils/timeSeries.d.ts +18 -0
  398. package/dist/shared/common/src/utils/timeSeries.js +40 -0
  399. package/dist/shared/common/src/utils/token.d.ts +33 -0
  400. package/dist/shared/common/src/utils/token.js +82 -0
  401. package/dist/shared/common/src/utils/transaction.d.ts +154 -0
  402. package/dist/shared/common/src/utils/transaction.js +585 -0
  403. package/dist/shared/common/src/utils/transactionSplitter.d.ts +85 -0
  404. package/dist/shared/common/src/utils/transactionSplitter.js +127 -0
  405. package/dist/shared/common/src/utils/txAccountCoverage.d.ts +49 -0
  406. package/dist/shared/common/src/utils/txAccountCoverage.js +122 -0
  407. package/dist/shared/jupiter-helpers/src/api.d.ts +59 -0
  408. package/dist/shared/jupiter-helpers/src/api.js +130 -0
  409. package/dist/shared/jupiter-helpers/src/client.d.ts +79 -0
  410. package/dist/shared/jupiter-helpers/src/client.js +173 -0
  411. package/dist/shared/jupiter-helpers/src/constants.d.ts +35 -0
  412. package/dist/shared/jupiter-helpers/src/constants.js +38 -0
  413. package/dist/shared/jupiter-helpers/src/extract.d.ts +30 -0
  414. package/dist/shared/jupiter-helpers/src/extract.js +57 -0
  415. package/dist/shared/jupiter-helpers/src/index.d.ts +5 -0
  416. package/dist/shared/jupiter-helpers/src/index.js +21 -0
  417. package/dist/shared/jupiter-helpers/src/routePreInstructions.d.ts +19 -0
  418. package/dist/shared/jupiter-helpers/src/routePreInstructions.js +61 -0
  419. package/dist/shared/jupiter-helpers/src/sizeExactInForMinOutput.d.ts +70 -0
  420. package/dist/shared/jupiter-helpers/src/sizeExactInForMinOutput.js +95 -0
  421. package/dist/shared/jupiter-helpers/src/types.d.ts +66 -0
  422. package/dist/shared/jupiter-helpers/src/types.js +2 -0
  423. package/dist/shared/lending-platforms/src/constants/cache.d.ts +8 -0
  424. package/dist/shared/lending-platforms/src/constants/cache.js +11 -0
  425. package/dist/shared/lending-platforms/src/constants/index.d.ts +3 -0
  426. package/dist/shared/lending-platforms/src/constants/index.js +19 -0
  427. package/dist/shared/lending-platforms/src/constants/kamino.d.ts +7 -0
  428. package/dist/shared/lending-platforms/src/constants/kamino.js +83 -0
  429. package/dist/shared/lending-platforms/src/constants/lendingPosition.d.ts +7 -0
  430. package/dist/shared/lending-platforms/src/constants/lendingPosition.js +10 -0
  431. package/dist/shared/lending-platforms/src/data/accounts/index.d.ts +2 -0
  432. package/dist/shared/lending-platforms/src/data/accounts/index.js +18 -0
  433. package/dist/shared/lending-platforms/src/data/accounts/kamino.d.ts +42 -0
  434. package/dist/shared/lending-platforms/src/data/accounts/kamino.js +104 -0
  435. package/dist/shared/lending-platforms/src/data/accounts/lpAccountsBase.d.ts +7 -0
  436. package/dist/shared/lending-platforms/src/data/accounts/lpAccountsBase.js +9 -0
  437. package/dist/shared/lending-platforms/src/data/incentive/incentiveBase.d.ts +35 -0
  438. package/dist/shared/lending-platforms/src/data/incentive/incentiveBase.js +26 -0
  439. package/dist/shared/lending-platforms/src/data/incentive/index.d.ts +2 -0
  440. package/dist/shared/lending-platforms/src/data/incentive/index.js +18 -0
  441. package/dist/shared/lending-platforms/src/data/incentive/kamino.d.ts +55 -0
  442. package/dist/shared/lending-platforms/src/data/incentive/kamino.js +101 -0
  443. package/dist/shared/lending-platforms/src/data/index.d.ts +6 -0
  444. package/dist/shared/lending-platforms/src/data/index.js +22 -0
  445. package/dist/shared/lending-platforms/src/data/instructions/index.d.ts +3 -0
  446. package/dist/shared/lending-platforms/src/data/instructions/index.js +19 -0
  447. package/dist/shared/lending-platforms/src/data/instructions/kamino.d.ts +55 -0
  448. package/dist/shared/lending-platforms/src/data/instructions/kamino.js +630 -0
  449. package/dist/shared/lending-platforms/src/data/instructions/lpInstructionsBase.d.ts +175 -0
  450. package/dist/shared/lending-platforms/src/data/instructions/lpInstructionsBase.js +192 -0
  451. package/dist/shared/lending-platforms/src/data/instructions/types.d.ts +7 -0
  452. package/dist/shared/lending-platforms/src/data/instructions/types.js +2 -0
  453. package/dist/shared/lending-platforms/src/data/platform/index.d.ts +2 -0
  454. package/dist/shared/lending-platforms/src/data/platform/index.js +18 -0
  455. package/dist/shared/lending-platforms/src/data/platform/kamino.d.ts +59 -0
  456. package/dist/shared/lending-platforms/src/data/platform/kamino.js +206 -0
  457. package/dist/shared/lending-platforms/src/data/platform/lpDataBase.d.ts +35 -0
  458. package/dist/shared/lending-platforms/src/data/platform/lpDataBase.js +31 -0
  459. package/dist/shared/lending-platforms/src/data/reserve/index.d.ts +2 -0
  460. package/dist/shared/lending-platforms/src/data/reserve/index.js +18 -0
  461. package/dist/shared/lending-platforms/src/data/reserve/kamino.d.ts +45 -0
  462. package/dist/shared/lending-platforms/src/data/reserve/kamino.js +141 -0
  463. package/dist/shared/lending-platforms/src/data/reserve/reserveBase.d.ts +114 -0
  464. package/dist/shared/lending-platforms/src/data/reserve/reserveBase.js +125 -0
  465. package/dist/shared/lending-platforms/src/data/userPosition/index.d.ts +2 -0
  466. package/dist/shared/lending-platforms/src/data/userPosition/index.js +18 -0
  467. package/dist/shared/lending-platforms/src/data/userPosition/kamino.d.ts +15 -0
  468. package/dist/shared/lending-platforms/src/data/userPosition/kamino.js +45 -0
  469. package/dist/shared/lending-platforms/src/data/userPosition/userPositionBase.d.ts +50 -0
  470. package/dist/shared/lending-platforms/src/data/userPosition/userPositionBase.js +63 -0
  471. package/dist/shared/lending-platforms/src/index.d.ts +5 -0
  472. package/dist/shared/lending-platforms/src/index.js +21 -0
  473. package/dist/shared/lending-platforms/src/services/client/index.d.ts +2 -0
  474. package/dist/shared/lending-platforms/src/services/client/index.js +18 -0
  475. package/dist/shared/lending-platforms/src/services/client/kamino.d.ts +53 -0
  476. package/dist/shared/lending-platforms/src/services/client/kamino.js +142 -0
  477. package/dist/shared/lending-platforms/src/services/client/lpClientBase.d.ts +66 -0
  478. package/dist/shared/lending-platforms/src/services/client/lpClientBase.js +19 -0
  479. package/dist/shared/lending-platforms/src/services/flashLoan/flashLoanBase.d.ts +49 -0
  480. package/dist/shared/lending-platforms/src/services/flashLoan/flashLoanBase.js +16 -0
  481. package/dist/shared/lending-platforms/src/services/flashLoan/index.d.ts +2 -0
  482. package/dist/shared/lending-platforms/src/services/flashLoan/index.js +18 -0
  483. package/dist/shared/lending-platforms/src/services/flashLoan/kamino.d.ts +11 -0
  484. package/dist/shared/lending-platforms/src/services/flashLoan/kamino.js +85 -0
  485. package/dist/shared/lending-platforms/src/services/index.d.ts +5 -0
  486. package/dist/shared/lending-platforms/src/services/index.js +21 -0
  487. package/dist/shared/lending-platforms/src/services/lendingPosition/index.d.ts +2 -0
  488. package/dist/shared/lending-platforms/src/services/lendingPosition/index.js +18 -0
  489. package/dist/shared/lending-platforms/src/services/lendingPosition/lendingPositionManager.d.ts +117 -0
  490. package/dist/shared/lending-platforms/src/services/lendingPosition/lendingPositionManager.js +342 -0
  491. package/dist/shared/lending-platforms/src/services/lendingPosition/types.d.ts +40 -0
  492. package/dist/shared/lending-platforms/src/services/lendingPosition/types.js +2 -0
  493. package/dist/shared/lending-platforms/src/services/leverage/index.d.ts +2 -0
  494. package/dist/shared/lending-platforms/src/services/leverage/index.js +18 -0
  495. package/dist/shared/lending-platforms/src/services/leverage/leverageService.d.ts +104 -0
  496. package/dist/shared/lending-platforms/src/services/leverage/leverageService.js +437 -0
  497. package/dist/shared/lending-platforms/src/services/leverage/types.d.ts +261 -0
  498. package/dist/shared/lending-platforms/src/services/leverage/types.js +2 -0
  499. package/dist/shared/lending-platforms/src/services/reservesManager.d.ts +53 -0
  500. package/dist/shared/lending-platforms/src/services/reservesManager.js +112 -0
  501. package/dist/shared/lending-platforms/src/types/general.d.ts +37 -0
  502. package/dist/shared/lending-platforms/src/types/general.js +8 -0
  503. package/dist/shared/lending-platforms/src/types/index.d.ts +2 -0
  504. package/dist/shared/lending-platforms/src/types/index.js +18 -0
  505. package/dist/shared/lending-platforms/src/types/kamino.d.ts +10 -0
  506. package/dist/shared/lending-platforms/src/types/kamino.js +2 -0
  507. package/dist/shared/lending-platforms/src/utils/accounts.d.ts +16 -0
  508. package/dist/shared/lending-platforms/src/utils/accounts.js +36 -0
  509. package/dist/shared/lending-platforms/src/utils/cache.d.ts +3 -0
  510. package/dist/shared/lending-platforms/src/utils/cache.js +11 -0
  511. package/dist/shared/lending-platforms/src/utils/index.d.ts +6 -0
  512. package/dist/shared/lending-platforms/src/utils/index.js +22 -0
  513. package/dist/shared/lending-platforms/src/utils/kamino.d.ts +87 -0
  514. package/dist/shared/lending-platforms/src/utils/kamino.js +190 -0
  515. package/dist/shared/lending-platforms/src/utils/lendingPlatform.d.ts +6 -0
  516. package/dist/shared/lending-platforms/src/utils/lendingPlatform.js +16 -0
  517. package/dist/shared/lending-platforms/src/utils/math.d.ts +47 -0
  518. package/dist/shared/lending-platforms/src/utils/math.js +123 -0
  519. package/dist/shared/lending-platforms/src/utils/scope.d.ts +38 -0
  520. package/dist/shared/lending-platforms/src/utils/scope.js +144 -0
  521. package/dist/shared/oracle-service/src/constants/index.d.ts +3 -0
  522. package/dist/shared/oracle-service/src/constants/index.js +19 -0
  523. package/dist/shared/oracle-service/src/constants/pyth.d.ts +7 -0
  524. package/dist/shared/oracle-service/src/constants/pyth.js +71 -0
  525. package/dist/shared/oracle-service/src/constants/splStake.d.ts +2 -0
  526. package/dist/shared/oracle-service/src/constants/splStake.js +6 -0
  527. package/dist/shared/oracle-service/src/constants/switchboard.d.ts +7 -0
  528. package/dist/shared/oracle-service/src/constants/switchboard.js +10 -0
  529. package/dist/shared/oracle-service/src/feeds/custom.d.ts +30 -0
  530. package/dist/shared/oracle-service/src/feeds/custom.js +56 -0
  531. package/dist/shared/oracle-service/src/feeds/jupiter.d.ts +7 -0
  532. package/dist/shared/oracle-service/src/feeds/jupiter.js +43 -0
  533. package/dist/shared/oracle-service/src/feeds/priceBase.d.ts +13 -0
  534. package/dist/shared/oracle-service/src/feeds/priceBase.js +25 -0
  535. package/dist/shared/oracle-service/src/feeds/pyth.d.ts +8 -0
  536. package/dist/shared/oracle-service/src/feeds/pyth.js +59 -0
  537. package/dist/shared/oracle-service/src/feeds/splStake.d.ts +26 -0
  538. package/dist/shared/oracle-service/src/feeds/splStake.js +99 -0
  539. package/dist/shared/oracle-service/src/feeds/switchboard.d.ts +6 -0
  540. package/dist/shared/oracle-service/src/feeds/switchboard.js +11 -0
  541. package/dist/shared/oracle-service/src/index.d.ts +5 -0
  542. package/dist/shared/oracle-service/src/index.js +26 -0
  543. package/dist/shared/oracle-service/src/oracle.d.ts +22 -0
  544. package/dist/shared/oracle-service/src/oracle.js +104 -0
  545. package/dist/shared/oracle-service/src/types.d.ts +4 -0
  546. package/dist/shared/oracle-service/src/types.js +2 -0
  547. package/dist/shared/oracle-service/src/utils/general.d.ts +20 -0
  548. package/dist/shared/oracle-service/src/utils/general.js +65 -0
  549. package/dist/shared/oracle-service/src/utils/index.d.ts +1 -0
  550. package/dist/shared/oracle-service/src/utils/index.js +17 -0
  551. package/dist/shared/perena-helpers/src/accounts.d.ts +7 -0
  552. package/dist/shared/perena-helpers/src/accounts.js +12 -0
  553. package/dist/shared/perena-helpers/src/client.d.ts +299 -0
  554. package/dist/shared/perena-helpers/src/client.js +680 -0
  555. package/dist/shared/perena-helpers/src/constants.d.ts +5 -0
  556. package/dist/shared/perena-helpers/src/constants.js +8 -0
  557. package/dist/shared/perena-helpers/src/cpi/burn.d.ts +27 -0
  558. package/dist/shared/perena-helpers/src/cpi/burn.js +22 -0
  559. package/dist/shared/perena-helpers/src/cpi/index.d.ts +3 -0
  560. package/dist/shared/perena-helpers/src/cpi/index.js +19 -0
  561. package/dist/shared/perena-helpers/src/cpi/mint.d.ts +27 -0
  562. package/dist/shared/perena-helpers/src/cpi/mint.js +22 -0
  563. package/dist/shared/perena-helpers/src/cpi/requestUnstake.d.ts +19 -0
  564. package/dist/shared/perena-helpers/src/cpi/requestUnstake.js +16 -0
  565. package/dist/shared/perena-helpers/src/index.d.ts +5 -0
  566. package/dist/shared/perena-helpers/src/index.js +21 -0
  567. package/dist/shared/perena-helpers/src/utils.d.ts +9 -0
  568. package/dist/shared/perena-helpers/src/utils.js +54 -0
  569. package/dist/shared/swap-aggregator/src/aggSwapClient.d.ts +71 -0
  570. package/dist/shared/swap-aggregator/src/aggSwapClient.js +103 -0
  571. package/dist/shared/swap-aggregator/src/index.d.ts +1 -0
  572. package/dist/shared/swap-aggregator/src/index.js +17 -0
  573. package/docs/launchingToken.md +57 -0
  574. package/package.json +75 -0
  575. package/scripts/asyncBurn.ts +155 -0
  576. package/scripts/burnToken.ts +120 -0
  577. package/scripts/claimIncentives.ts +125 -0
  578. package/scripts/closeCpiPlans.ts +113 -0
  579. package/scripts/collectInterest.ts +194 -0
  580. package/scripts/collectProtocolFees.ts +144 -0
  581. package/scripts/computeOptimalAllocations.ts +117 -0
  582. package/scripts/createToken.ts +100 -0
  583. package/scripts/createTokenLendingPosition.ts +204 -0
  584. package/scripts/createYieldingBank.ts +91 -0
  585. package/scripts/decreaseCarryPositions.ts +359 -0
  586. package/scripts/depositUnlentCollateral.ts +106 -0
  587. package/scripts/emergency/deleverageAll.ts +287 -0
  588. package/scripts/emergency/triggerCircuitBreaker.ts +87 -0
  589. package/scripts/env.ts +4 -0
  590. package/scripts/findTxs.ts +169 -0
  591. package/scripts/increaseCarryPositions.ts +134 -0
  592. package/scripts/inspect/format.ts +576 -0
  593. package/scripts/inspect.ts +147 -0
  594. package/scripts/localUtils.ts +249 -0
  595. package/scripts/mintToken.ts +126 -0
  596. package/scripts/processAsyncBurns.ts +89 -0
  597. package/scripts/rebalanceToken.ts +269 -0
  598. package/scripts/rebalanceYieldingBank.ts +183 -0
  599. package/scripts/recollateralizeLoss.ts +79 -0
  600. package/scripts/refresh.ts +156 -0
  601. package/scripts/updateFees.ts +486 -0
  602. package/scripts/updateGeneralLut.ts +36 -0
  603. package/scripts/updateLendingPositionConfig.ts +172 -0
  604. package/scripts/updateTokenLuts.ts +36 -0
  605. package/scripts/updateTokenMetadata.ts +199 -0
  606. package/scripts/updateYieldingBankConfig.ts +100 -0
  607. package/scripts/withdrawUnlentCollateral.ts +178 -0
  608. package/src/client/account.ts +503 -0
  609. package/src/client/builders/args.ts +381 -0
  610. package/src/client/builders/asyncBurnBuilder.ts +305 -0
  611. package/src/client/builders/base.ts +303 -0
  612. package/src/client/builders/burnTokenBuilder.ts +258 -0
  613. package/src/client/builders/claimIncentivesBuilder.ts +211 -0
  614. package/src/client/builders/collectFeesBuilder.ts +52 -0
  615. package/src/client/builders/collectInterestBuilder.ts +165 -0
  616. package/src/client/builders/createCpiPlanBuilder.ts +21 -0
  617. package/src/client/builders/createTokenBuilder.ts +73 -0
  618. package/src/client/builders/createTokenLendingPositionBuilder.ts +219 -0
  619. package/src/client/builders/createYieldingBankAllocationBuilder.ts +32 -0
  620. package/src/client/builders/createYieldingBankBuilder.ts +39 -0
  621. package/src/client/builders/decreaseCarryPositionBuilder.ts +162 -0
  622. package/src/client/builders/depositUnlentCollateralBuilder.ts +95 -0
  623. package/src/client/builders/increaseCarryPositionBuilder.ts +105 -0
  624. package/src/client/builders/index.ts +37 -0
  625. package/src/client/builders/mintTokenBuilder.ts +137 -0
  626. package/src/client/builders/rebalanceTokenBuilder.ts +356 -0
  627. package/src/client/builders/rebalanceYieldingBankBuilder.ts +109 -0
  628. package/src/client/builders/recollateralizeLossBuilder.ts +367 -0
  629. package/src/client/builders/refreshTokenStateBuilder.ts +153 -0
  630. package/src/client/builders/refreshTokensBuilder.ts +82 -0
  631. package/src/client/builders/refreshYieldingBankBuilder.ts +42 -0
  632. package/src/client/builders/resetTokenBurnRateLimitBuilder.ts +21 -0
  633. package/src/client/builders/setTokenCircuitBreakerBuilder.ts +40 -0
  634. package/src/client/builders/setYieldingBankCircuitBreakerBuilder.ts +37 -0
  635. package/src/client/builders/updateLendingPositionConfigBuilder.ts +33 -0
  636. package/src/client/builders/updateTokenConfigurationBuilder.ts +50 -0
  637. package/src/client/builders/updateTokenMetadataBuilder.ts +24 -0
  638. package/src/client/builders/updateYieldingBankConfigBuilder.ts +32 -0
  639. package/src/client/builders/utils.ts +26 -0
  640. package/src/client/client.ts +264 -0
  641. package/src/client/externalLiquidityResolver.ts +54 -0
  642. package/src/client/index.ts +20 -0
  643. package/src/client/lendingPlatformClients.ts +50 -0
  644. package/src/client/pda.ts +102 -0
  645. package/src/client/plans/collectInterest.ts +207 -0
  646. package/src/client/plans/decreaseCarryPosition.ts +226 -0
  647. package/src/client/routes/collectInterest.ts +56 -0
  648. package/src/client/transaction.ts +106 -0
  649. package/src/client/types/builders.ts +19 -0
  650. package/src/client/types/enums.ts +47 -0
  651. package/src/client/types/general.ts +117 -0
  652. package/src/client/types/index.ts +6 -0
  653. package/src/client/types/ix.ts +452 -0
  654. package/src/client/types/planTypes/collectInterest.ts +97 -0
  655. package/src/client/types/planTypes/common.ts +31 -0
  656. package/src/client/types/planTypes/decreaseCarryPosition.ts +134 -0
  657. package/src/client/types/planTypes/index.ts +3 -0
  658. package/src/client/types/tx.ts +409 -0
  659. package/src/constants/configs/allocations.ts +30 -0
  660. package/src/constants/configs/carryTradePresets.ts +164 -0
  661. package/src/constants/configs/index.ts +2 -0
  662. package/src/constants/general.ts +141 -0
  663. package/src/constants/index.ts +3 -0
  664. package/src/constants/lycTokenMetadata.ts +52 -0
  665. package/src/decoders/decodeTransaction.ts +319 -0
  666. package/src/decoders/discriminators.ts +10 -0
  667. package/src/decoders/idlAccounts.ts +75 -0
  668. package/src/decoders/index.ts +15 -0
  669. package/src/decoders/innerCpis.ts +262 -0
  670. package/src/decoders/lycInstructionNames.ts +73 -0
  671. package/src/decoders/programIds.ts +12 -0
  672. package/src/decoders/solana.ts +25 -0
  673. package/src/decoders/transactionPayload.ts +41 -0
  674. package/src/decoders/types.ts +60 -0
  675. package/src/errors.ts +195 -0
  676. package/src/idl/long_yield_carry.ts +14648 -0
  677. package/src/index.ts +10 -0
  678. package/src/metrics/index.ts +1 -0
  679. package/src/metrics/protocolMetrics.ts +976 -0
  680. package/src/models/index.ts +9 -0
  681. package/src/models/lycToken.ts +380 -0
  682. package/src/models/yieldingBank.ts +127 -0
  683. package/src/services/allocation/allocationService.ts +823 -0
  684. package/src/services/allocation/index.ts +2 -0
  685. package/src/services/allocation/types.ts +27 -0
  686. package/src/services/carry/carryAllocationConfig.ts +266 -0
  687. package/src/services/carry/index.ts +2 -0
  688. package/src/services/carry/lycLendingPositionManager.ts +167 -0
  689. package/src/services/index.ts +5 -0
  690. package/src/services/lendingPosition/index.ts +5 -0
  691. package/src/services/lendingPosition/lendingPositionService.ts +328 -0
  692. package/src/services/rebalance/index.ts +2 -0
  693. package/src/services/rebalance/token/index.ts +1 -0
  694. package/src/services/rebalance/token/tokenRebalanceService.ts +142 -0
  695. package/src/services/rebalance/yieldingBank/index.ts +3 -0
  696. package/src/services/rebalance/yieldingBank/planner.ts +215 -0
  697. package/src/services/rebalance/yieldingBank/strategy.ts +41 -0
  698. package/src/services/rebalance/yieldingBank/types.ts +41 -0
  699. package/src/services/redemption/index.ts +9 -0
  700. package/src/services/redemption/redemptionService.ts +758 -0
  701. package/src/types/enriched.ts +187 -0
  702. package/src/types/index.ts +1 -0
  703. package/src/utils/cache.ts +12 -0
  704. package/src/utils/data.ts +65 -0
  705. package/src/utils/enrichment.ts +330 -0
  706. package/src/utils/feeDripMetrics.ts +146 -0
  707. package/src/utils/general.ts +54 -0
  708. package/src/utils/index.ts +13 -0
  709. package/src/utils/ix.ts +227 -0
  710. package/src/utils/lendingPosition.ts +221 -0
  711. package/src/utils/lookupTables.ts +309 -0
  712. package/src/utils/lycData.ts +321 -0
  713. package/src/utils/timelock.ts +63 -0
  714. package/src/utils/tokenFeeMath.ts +25 -0
  715. package/src/utils/transactions.ts +109 -0
  716. package/src/utils/yieldingBank.ts +38 -0
  717. package/tsconfig.json +11 -0
@@ -0,0 +1,319 @@
1
+ /**
2
+ * Decoder: streamed Solana transaction payloads → normalized LYC user events.
3
+ *
4
+ * Wire shape is validator-style `getTransaction` data wrapped by the API into
5
+ * {@link LycProgramTransactionRecord} when enqueued. Downstream consumers (the
6
+ * indexer Lambda, backfill jobs) validate the envelope with
7
+ * {@link parseLycProgramTransactionRecord} then call
8
+ * {@link decodeLycProgramTransaction} to produce zero or more user-facing
9
+ * {@link LycTransactionEvent}s.
10
+ *
11
+ * The set of indexed instructions is currently `mint_token` and `burn_token`.
12
+ * Both are inlined in this module — if we ever add a third, promote back to a
13
+ * registry/interface pattern.
14
+ */
15
+
16
+ import { BURN_TOKEN_DISCRIMINATOR, MINT_TOKEN_DISCRIMINATOR } from "./discriminators";
17
+ import { BURN_TOKEN_ACCOUNTS, MINT_TOKEN_ACCOUNTS } from "./idlAccounts";
18
+ import {
19
+ aggregateCollateralTransfers,
20
+ collectSplTransfersTo,
21
+ findInnerInstructionBlock,
22
+ splBurnAmountFromSource,
23
+ splMintToAmountToDest,
24
+ sumSplTransfersFromSource,
25
+ } from "./innerCpis";
26
+ import { LYC_PROGRAM_IDS } from "./programIds";
27
+ import { buildAccountKeys, decodeInstructionData, discriminatorMatches } from "./solana";
28
+ import type { TxMessage, TxMeta } from "./transactionPayload";
29
+ import type { LycProgramTransactionRecord, LycTransactionEvent } from "./types";
30
+
31
+ /**
32
+ * Validate and narrow an arbitrary JSON body (SQS message body / API request)
33
+ * to {@link LycProgramTransactionRecord}. Returns `null` on any shape mismatch.
34
+ */
35
+ export function parseLycProgramTransactionRecord(
36
+ input: unknown
37
+ ): LycProgramTransactionRecord | null {
38
+ if (!input || typeof input !== "object") return null;
39
+ const o = input as Record<string, unknown>;
40
+ if (o.source !== "lyc-program-transaction") return null;
41
+ if (typeof o.signature !== "string" || o.signature.length === 0) return null;
42
+ if (!("payload" in o)) return null;
43
+
44
+ return {
45
+ source: "lyc-program-transaction",
46
+ receivedAt: typeof o.receivedAt === "number" ? o.receivedAt : 0,
47
+ signature: o.signature,
48
+ slot: typeof o.slot === "number" ? o.slot : undefined,
49
+ payload: o.payload,
50
+ };
51
+ }
52
+
53
+ /**
54
+ * Stable enum of why a matched-discriminator instruction produced no event.
55
+ * All reasons are CPI-driven; none depend on balance deltas.
56
+ */
57
+ export type DecoderRejectionReason =
58
+ | "accounts_too_short"
59
+ | "missing_key"
60
+ | "no_inner_instructions_block"
61
+ | "no_token_burn_cpi"
62
+ | "no_token_mint_to_cpi"
63
+ | "no_collateral_out_delta"
64
+ | "no_collateral_in_delta";
65
+
66
+ /**
67
+ * One reason a tx produced zero events despite looking like something we index.
68
+ *
69
+ * - `payload_unparseable`: the envelope `payload` lacked `meta` / `transaction.message` and
70
+ * we couldn't even enumerate instructions.
71
+ * - `instruction_data_invalid`: an LYC-program instruction's `data` field wasn't valid
72
+ * base58 so we couldn't read its discriminator.
73
+ * - `decoder_rejected`: the discriminator matched a user-facing decoder but a guard rail
74
+ * returned null — `reason` identifies which guard.
75
+ */
76
+ export type DecodeRejection =
77
+ | { kind: "payload_unparseable" }
78
+ | { kind: "instruction_data_invalid"; instructionIndex: number }
79
+ | {
80
+ kind: "decoder_rejected";
81
+ name: "mint_token" | "burn_token";
82
+ reason: DecoderRejectionReason;
83
+ };
84
+
85
+ export interface DecodeResult {
86
+ events: LycTransactionEvent[];
87
+ /**
88
+ * Non-empty only when something anomalous happened. Consumers that want to
89
+ * distinguish "refresh-only tx, nothing to do" from "tried and bailed" check
90
+ * `rejections.length === 0` for the former and `rejections.length > 0` for
91
+ * the latter.
92
+ */
93
+ rejections: DecodeRejection[];
94
+ }
95
+
96
+ /**
97
+ * Decode one queued tx into zero or more user-facing events, in top-level
98
+ * instruction order. Silently skips instructions we don't index or whose data
99
+ * cannot be base58-decoded.
100
+ */
101
+ export function decodeLycProgramTransaction(
102
+ record: LycProgramTransactionRecord
103
+ ): LycTransactionEvent[] {
104
+ return decodeLycProgramTransactionWithDiagnostics(record).events;
105
+ }
106
+
107
+ /**
108
+ * Same as {@link decodeLycProgramTransaction} but also returns structured
109
+ * rejections for the indexer's CloudWatch log path. Use this when "zero events"
110
+ * isn't enough information — e.g. you need to know whether a burn-shaped tx
111
+ * bailed because its inner-instructions block was missing or because no
112
+ * collateral transfer CPI landed in the user's ATA.
113
+ */
114
+ export function decodeLycProgramTransactionWithDiagnostics(
115
+ record: LycProgramTransactionRecord
116
+ ): DecodeResult {
117
+ const tx = parseRecordPayload(record);
118
+ if (!tx) {
119
+ return { events: [], rejections: [{ kind: "payload_unparseable" }] };
120
+ }
121
+
122
+ const events: LycTransactionEvent[] = [];
123
+ const rejections: DecodeRejection[] = [];
124
+
125
+ for (let i = 0; i < tx.message.instructions.length; i++) {
126
+ const ix = tx.message.instructions[i]!;
127
+ const programId = tx.keys[ix.programIdIndex];
128
+ if (!programId || !LYC_PROGRAM_IDS.has(programId)) continue;
129
+
130
+ let data: Uint8Array;
131
+ try {
132
+ data = decodeInstructionData(ix.data);
133
+ } catch {
134
+ rejections.push({ kind: "instruction_data_invalid", instructionIndex: i });
135
+ continue;
136
+ }
137
+
138
+ if (discriminatorMatches(data, MINT_TOKEN_DISCRIMINATOR)) {
139
+ const outcome = decodeMintToken(tx, ix.accounts, i);
140
+ if ("event" in outcome) events.push(outcome.event);
141
+ else
142
+ rejections.push({ kind: "decoder_rejected", name: "mint_token", reason: outcome.reason });
143
+ } else if (discriminatorMatches(data, BURN_TOKEN_DISCRIMINATOR)) {
144
+ const outcome = decodeBurnToken(tx, ix.accounts, i);
145
+ if ("event" in outcome) events.push(outcome.event);
146
+ else
147
+ rejections.push({ kind: "decoder_rejected", name: "burn_token", reason: outcome.reason });
148
+ }
149
+ }
150
+
151
+ return { events, rejections };
152
+ }
153
+
154
+ /**
155
+ * Per-tx data shared by the mint/burn decoders and by
156
+ * {@link listLycTopLevelInstructionNames} in the sibling module. Exported so
157
+ * the names helper can reuse the parse work — not part of the public SDK.
158
+ */
159
+ export interface ParsedTx {
160
+ message: TxMessage;
161
+ meta: TxMeta;
162
+ signature: string;
163
+ slot: number;
164
+ blockTime: number;
165
+ fee: number;
166
+ /** Static + ALT-loaded account keys, in the index order used by instructions. */
167
+ keys: string[];
168
+ }
169
+
170
+ export function parseRecordPayload(record: LycProgramTransactionRecord): ParsedTx | null {
171
+ const payload = record.payload;
172
+ if (!payload || typeof payload !== "object") return null;
173
+
174
+ const p = payload as Record<string, unknown>;
175
+ const meta = p.meta as TxMeta | undefined;
176
+ const transaction = p.transaction as { message?: TxMessage } | undefined;
177
+ const message = transaction?.message;
178
+ if (!meta || !message?.accountKeys || !Array.isArray(message.instructions)) {
179
+ return null;
180
+ }
181
+
182
+ const slot =
183
+ typeof record.slot === "number" ? record.slot : typeof p.slot === "number" ? p.slot : 0;
184
+
185
+ return {
186
+ message,
187
+ meta,
188
+ signature: record.signature,
189
+ slot,
190
+ blockTime: typeof p.blockTime === "number" ? p.blockTime : 0,
191
+ fee: typeof meta.fee === "number" ? meta.fee : 0,
192
+ keys: buildAccountKeys(message, meta),
193
+ };
194
+ }
195
+
196
+ type DecoderOutcome = { event: LycTransactionEvent } | { reason: DecoderRejectionReason };
197
+
198
+ /**
199
+ * Authoritative reads: inner CPIs emitted by mint_token.
200
+ * - Token amount: SPL Token `MintTo` CPI whose `accounts[1]` (dest ATA)
201
+ * matches `user_token_account`. Amount is encoded in the ix data as a
202
+ * little-endian u64.
203
+ * - Collateral amount: sum of SPL Token `Transfer` / `TransferChecked`
204
+ * CPIs whose source matches `user_collateral_account`. The collateral
205
+ * mint is known structurally (`collateral_mint`), so we don't need to
206
+ * derive it per-transfer.
207
+ *
208
+ * Account positions are resolved by name from the IDL via
209
+ * {@link MINT_TOKEN_ACCOUNTS} — resilient to account-list reordering, and
210
+ * fail-fast at module load if a required account is renamed or removed.
211
+ */
212
+ function decodeMintToken(tx: ParsedTx, accounts: number[], ixIndex: number): DecoderOutcome {
213
+ const signerPos = MINT_TOKEN_ACCOUNTS.signer;
214
+ const mintPos = MINT_TOKEN_ACCOUNTS.mint;
215
+ const collateralMintPos = MINT_TOKEN_ACCOUNTS.collateral_mint;
216
+ const userCollateralAtaPos = MINT_TOKEN_ACCOUNTS.user_collateral_account;
217
+ const userTokenAtaPos = MINT_TOKEN_ACCOUNTS.user_token_account;
218
+
219
+ const maxPos = Math.max(
220
+ signerPos,
221
+ mintPos,
222
+ collateralMintPos,
223
+ userCollateralAtaPos,
224
+ userTokenAtaPos
225
+ );
226
+ if (accounts.length <= maxPos) return { reason: "accounts_too_short" };
227
+
228
+ const wallet = tx.keys[accounts[signerPos]];
229
+ const tokenMint = tx.keys[accounts[mintPos]];
230
+ const collateralMint = tx.keys[accounts[collateralMintPos]];
231
+ if (!wallet || !tokenMint || !collateralMint) return { reason: "missing_key" };
232
+
233
+ const block = findInnerInstructionBlock(tx.meta, ixIndex);
234
+ if (!block) return { reason: "no_inner_instructions_block" };
235
+
236
+ const mintedAmount = splMintToAmountToDest(tx.keys, block, accounts[userTokenAtaPos]);
237
+ if (mintedAmount === null) return { reason: "no_token_mint_to_cpi" };
238
+
239
+ const collateralAmount = sumSplTransfersFromSource(
240
+ tx.keys,
241
+ block,
242
+ accounts[userCollateralAtaPos]
243
+ );
244
+ if (collateralAmount <= 0n) return { reason: "no_collateral_in_delta" };
245
+
246
+ return {
247
+ event: {
248
+ signature: tx.signature,
249
+ slot: tx.slot,
250
+ blockTime: tx.blockTime,
251
+ type: "mint",
252
+ wallet,
253
+ tokenMint,
254
+ tokenAmountBaseUnits: mintedAmount.toString(),
255
+ collateralMint,
256
+ collateralAmountBaseUnits: collateralAmount.toString(),
257
+ fee: tx.fee,
258
+ },
259
+ };
260
+ }
261
+
262
+ /**
263
+ * Authoritative reads: inner CPIs emitted by burn_token.
264
+ * - Token amount: SPL Token `Burn` CPI whose `accounts[0]` (source ATA)
265
+ * matches `user_token_account`. Amount is encoded in the ix data as a
266
+ * little-endian u64, not derived from a balance delta.
267
+ * - Collateral: SPL Token `Transfer` / `TransferChecked` CPIs whose
268
+ * destination matches `user_collateral_account`. Amounts are summed per
269
+ * mint; the dominant mint wins — in practice the Rust program emits a
270
+ * single transfer with a single mint, so the aggregation step is defensive
271
+ * (see `rust/.../burn_token.rs`).
272
+ *
273
+ * CPI-authoritative decoding does not depend on whether the user's collateral
274
+ * ATA persists across the tx — created-and-closed-same-tx ATAs, pre-existing
275
+ * ATAs closed at the end, and ATAs re-funded inside the same tx all decode
276
+ * identically because the CPIs themselves never disappear.
277
+ *
278
+ * Account positions are resolved by name from the IDL via
279
+ * {@link BURN_TOKEN_ACCOUNTS} — resilient to account-list reordering, and
280
+ * fail-fast at module load if a required account is renamed or removed.
281
+ */
282
+ function decodeBurnToken(tx: ParsedTx, accounts: number[], ixIndex: number): DecoderOutcome {
283
+ const signerPos = BURN_TOKEN_ACCOUNTS.signer;
284
+ const mintPos = BURN_TOKEN_ACCOUNTS.mint;
285
+ const userTokenAtaPos = BURN_TOKEN_ACCOUNTS.user_token_account;
286
+ const userCollateralAtaPos = BURN_TOKEN_ACCOUNTS.user_collateral_account;
287
+
288
+ const maxPos = Math.max(signerPos, mintPos, userTokenAtaPos, userCollateralAtaPos);
289
+ if (accounts.length <= maxPos) return { reason: "accounts_too_short" };
290
+
291
+ const wallet = tx.keys[accounts[signerPos]];
292
+ const tokenMint = tx.keys[accounts[mintPos]];
293
+ if (!wallet || !tokenMint) return { reason: "missing_key" };
294
+
295
+ const block = findInnerInstructionBlock(tx.meta, ixIndex);
296
+ if (!block) return { reason: "no_inner_instructions_block" };
297
+
298
+ const burnedAmount = splBurnAmountFromSource(tx.keys, block, accounts[userTokenAtaPos]);
299
+ if (burnedAmount === null) return { reason: "no_token_burn_cpi" };
300
+
301
+ const transfers = collectSplTransfersTo(tx.keys, block, accounts[userCollateralAtaPos]);
302
+ const collateral = aggregateCollateralTransfers(tx.meta, transfers);
303
+ if (!collateral) return { reason: "no_collateral_out_delta" };
304
+
305
+ return {
306
+ event: {
307
+ signature: tx.signature,
308
+ slot: tx.slot,
309
+ blockTime: tx.blockTime,
310
+ type: "burn",
311
+ wallet,
312
+ tokenMint,
313
+ tokenAmountBaseUnits: burnedAmount.toString(),
314
+ collateralMint: collateral.collateralMint,
315
+ collateralAmountBaseUnits: collateral.amount.toString(),
316
+ fee: tx.fee,
317
+ },
318
+ };
319
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Anchor 8-byte instruction discriminators (see `idl/long_yield_carry.ts`).
3
+ * Add new entries here when supporting additional indexed instructions.
4
+ */
5
+
6
+ /** `burn_token` */
7
+ export const BURN_TOKEN_DISCRIMINATOR = Uint8Array.from([185, 165, 216, 246, 144, 31, 70, 74]);
8
+
9
+ /** `mint_token` */
10
+ export const MINT_TOKEN_DISCRIMINATOR = Uint8Array.from([172, 137, 183, 14, 207, 110, 234, 56]);
@@ -0,0 +1,75 @@
1
+ /**
2
+ * IDL-backed account resolution for the LYC decoder.
3
+ *
4
+ * The decoder reads specific accounts (wallet, mint, collateral mint, user
5
+ * ATAs) out of each indexed instruction's account list. Rather than hardcoding
6
+ * positional indices — which silently break if the on-chain
7
+ * `#[derive(Accounts)]` struct is ever reordered — we resolve positions by
8
+ * account name off the SDK's shipped IDL at module load.
9
+ *
10
+ * Guarantees:
11
+ * - **Resilient to reordering.** If the Rust program reorders accounts, the
12
+ * regenerated IDL updates the name→index map and the decoder follows.
13
+ * - **Fail-fast on rename/removal.** If an account we depend on is renamed
14
+ * or removed, this module throws at import time — the SDK fails to load
15
+ * instead of producing mislabeled events.
16
+ * - **Minimal surface.** Only pins the accounts the decoder actually reads
17
+ * (`signer`, `mint`, `collateral_mint`, `user_token_account`,
18
+ * `user_collateral_account`). Unused accounts can be renamed freely.
19
+ */
20
+
21
+ import { IDL } from "../idl/long_yield_carry";
22
+
23
+ const MINT_TOKEN_REQUIRED_ACCOUNT_NAMES = [
24
+ "signer",
25
+ "mint",
26
+ "collateral_mint",
27
+ "user_collateral_account",
28
+ "user_token_account",
29
+ ] as const;
30
+
31
+ const BURN_TOKEN_REQUIRED_ACCOUNT_NAMES = [
32
+ "signer",
33
+ "mint",
34
+ "user_token_account",
35
+ "user_collateral_account",
36
+ ] as const;
37
+
38
+ type MintTokenAccountName = (typeof MINT_TOKEN_REQUIRED_ACCOUNT_NAMES)[number];
39
+ type BurnTokenAccountName = (typeof BURN_TOKEN_REQUIRED_ACCOUNT_NAMES)[number];
40
+
41
+ function buildAccountIndexMap<const T extends readonly string[]>(
42
+ instructionName: string,
43
+ requiredNames: T
44
+ ): Readonly<Record<T[number], number>> {
45
+ const ix = IDL.instructions.find((entry) => entry.name === instructionName);
46
+ if (!ix) {
47
+ throw new Error(`IDL account resolver: instruction "${instructionName}" not found`);
48
+ }
49
+ const map: Record<string, number> = {};
50
+ for (const name of requiredNames) {
51
+ const idx = ix.accounts.findIndex((a) => a.name === name);
52
+ if (idx < 0) {
53
+ throw new Error(
54
+ `IDL account resolver: instruction "${instructionName}" is missing account "${name}"`
55
+ );
56
+ }
57
+ map[name] = idx;
58
+ }
59
+ return Object.freeze(map) as Readonly<Record<T[number], number>>;
60
+ }
61
+
62
+ /** Name→index map for the accounts list of `mint_token`. */
63
+ export const MINT_TOKEN_ACCOUNTS = buildAccountIndexMap(
64
+ "mint_token",
65
+ MINT_TOKEN_REQUIRED_ACCOUNT_NAMES
66
+ );
67
+
68
+ /** Name→index map for the accounts list of `burn_token`. */
69
+ export const BURN_TOKEN_ACCOUNTS = buildAccountIndexMap(
70
+ "burn_token",
71
+ BURN_TOKEN_REQUIRED_ACCOUNT_NAMES
72
+ );
73
+
74
+ export { MINT_TOKEN_REQUIRED_ACCOUNT_NAMES, BURN_TOKEN_REQUIRED_ACCOUNT_NAMES };
75
+ export type { MintTokenAccountName, BurnTokenAccountName };
@@ -0,0 +1,15 @@
1
+ export type { LycProgramTransactionRecord, LycTransactionEvent, LycTransactionType } from "./types";
2
+ export {
3
+ decodeLycProgramTransaction,
4
+ decodeLycProgramTransactionWithDiagnostics,
5
+ parseLycProgramTransactionRecord,
6
+ } from "./decodeTransaction";
7
+ export type { DecodeRejection, DecodeResult, DecoderRejectionReason } from "./decodeTransaction";
8
+ export { listLycTopLevelInstructionNames } from "./lycInstructionNames";
9
+ export {
10
+ BURN_TOKEN_ACCOUNTS,
11
+ BURN_TOKEN_REQUIRED_ACCOUNT_NAMES,
12
+ MINT_TOKEN_ACCOUNTS,
13
+ MINT_TOKEN_REQUIRED_ACCOUNT_NAMES,
14
+ } from "./idlAccounts";
15
+ export type { BurnTokenAccountName, MintTokenAccountName } from "./idlAccounts";
@@ -0,0 +1,262 @@
1
+ import bs58 from "bs58";
2
+ import { TOKEN_PROGRAM_ADDRESS, TokenInstruction } from "@solana-program/token";
3
+ import { TOKEN_2022_PROGRAM_ADDRESS } from "@solana-program/token-2022";
4
+
5
+ import type {
6
+ CompiledInstruction,
7
+ InnerInstructionBlock,
8
+ TokenBalanceRow,
9
+ TxMeta,
10
+ } from "./transactionPayload";
11
+
12
+ /**
13
+ * Inner-instruction (CPI) scanning primitives for the decoder.
14
+ *
15
+ * The decoder reads LYC user events off the on-chain CPIs the program emits,
16
+ * not off net balance deltas. A `burn_token` top-level ix is decoded by finding
17
+ * the SPL Token `Burn` CPI (for the token amount) and the SPL Token
18
+ * `Transfer` / `TransferChecked` CPIs to the user's collateral ATA (for the
19
+ * collateral amount + mint) inside the burn ix's inner-instructions block.
20
+ *
21
+ * Reading CPIs is robust to ATA lifecycle quirks (created + closed in the same
22
+ * tx, wrap + unwrap side effects, etc.) because the CPIs are the actions that
23
+ * actually happened — balance rows are just their net effect and can be hidden
24
+ * or confounded by other same-tx ixs.
25
+ *
26
+ * Program IDs come from {@link TOKEN_PROGRAM_ADDRESS} / {@link TOKEN_2022_PROGRAM_ADDRESS}
27
+ * (kit-aligned `@solana-program/*` clients). Instruction tags use {@link TokenInstruction}
28
+ * — Token-2022 shares the same numeric tags for Transfer / TransferChecked / MintTo / Burn.
29
+ */
30
+
31
+ const SPL_TOKEN_PROGRAM_IDS = new Set<string>([TOKEN_PROGRAM_ADDRESS, TOKEN_2022_PROGRAM_ADDRESS]);
32
+
33
+ interface ParsedSplIx {
34
+ tag: number;
35
+ amount: bigint;
36
+ }
37
+
38
+ /**
39
+ * Decode an SPL Token ix and extract its tag + u64 amount, if the tag is one
40
+ * we care about (Transfer, TransferChecked, MintTo, Burn). Returns null for
41
+ * any other variant (approve, close, sync native, etc.) or for malformed data.
42
+ *
43
+ * Layout (all little-endian):
44
+ * - Transfer: `[3, amount:u64]` (9 bytes)
45
+ * - MintTo: `[7, amount:u64]` (9 bytes)
46
+ * - Burn: `[8, amount:u64]` (9 bytes)
47
+ * - TransferChecked: `[12, amount:u64, decimals:u8]` (10 bytes)
48
+ */
49
+ function parseSplAmountIx(ix: CompiledInstruction): ParsedSplIx | null {
50
+ let bytes: Uint8Array;
51
+ try {
52
+ bytes = bs58.decode(ix.data);
53
+ } catch {
54
+ return null;
55
+ }
56
+ if (bytes.length < 9) return null;
57
+ const tag = bytes[0];
58
+ if (
59
+ tag !== TokenInstruction.Transfer &&
60
+ tag !== TokenInstruction.TransferChecked &&
61
+ tag !== TokenInstruction.MintTo &&
62
+ tag !== TokenInstruction.Burn
63
+ ) {
64
+ return null;
65
+ }
66
+ let amount = 0n;
67
+ for (let i = 0; i < 8; i++) {
68
+ amount |= BigInt(bytes[1 + i]) << BigInt(i * 8);
69
+ }
70
+ return { tag, amount };
71
+ }
72
+
73
+ /** Resolve the inner-instructions block for a given top-level instruction. */
74
+ export function findInnerInstructionBlock(
75
+ meta: TxMeta,
76
+ topLevelIndex: number
77
+ ): InnerInstructionBlock | undefined {
78
+ return meta.innerInstructions?.find((b) => b.index === topLevelIndex);
79
+ }
80
+
81
+ /**
82
+ * Find the SPL Token `Burn` CPI whose source token account matches
83
+ * `sourceAtaIndex` and return its amount. Tx-level account indexes are shared
84
+ * between outer and inner instructions, so callers resolve the source by
85
+ * outer IDL-named account (e.g. `burn_token.user_token_account`) and we match
86
+ * against `burn.accounts[0]` here.
87
+ *
88
+ * `Burn` account layout: `[source_ata, mint, authority, ...signers]`.
89
+ */
90
+ export function splBurnAmountFromSource(
91
+ keys: string[],
92
+ block: InnerInstructionBlock,
93
+ sourceAtaIndex: number
94
+ ): bigint | null {
95
+ for (const ix of block.instructions) {
96
+ if (!SPL_TOKEN_PROGRAM_IDS.has(keys[ix.programIdIndex] ?? "")) continue;
97
+ if (ix.accounts.length < 3 || ix.accounts[0] !== sourceAtaIndex) continue;
98
+ const parsed = parseSplAmountIx(ix);
99
+ if (parsed?.tag !== TokenInstruction.Burn) continue;
100
+ if (parsed.amount <= 0n) continue;
101
+ return parsed.amount;
102
+ }
103
+ return null;
104
+ }
105
+
106
+ /**
107
+ * Find the SPL Token `MintTo` CPI whose destination ATA matches `destAtaIndex`
108
+ * and return its amount. The mint slot (`MintTo.accounts[0]`) is not checked:
109
+ * an ATA has a fixed mint, so a MintTo landing in the right ATA cannot be for
110
+ * any other mint — the on-chain SPL program rejects mismatches.
111
+ *
112
+ * `MintTo` account layout: `[mint, dest_ata, authority, ...signers]`.
113
+ */
114
+ export function splMintToAmountToDest(
115
+ keys: string[],
116
+ block: InnerInstructionBlock,
117
+ destAtaIndex: number
118
+ ): bigint | null {
119
+ for (const ix of block.instructions) {
120
+ if (!SPL_TOKEN_PROGRAM_IDS.has(keys[ix.programIdIndex] ?? "")) continue;
121
+ if (ix.accounts.length < 3 || ix.accounts[1] !== destAtaIndex) continue;
122
+ const parsed = parseSplAmountIx(ix);
123
+ if (parsed?.tag !== TokenInstruction.MintTo) continue;
124
+ if (parsed.amount <= 0n) continue;
125
+ return parsed.amount;
126
+ }
127
+ return null;
128
+ }
129
+
130
+ interface SplTransferSummary {
131
+ sourceIndex: number;
132
+ destIndex: number;
133
+ amount: bigint;
134
+ /**
135
+ * For `TransferChecked` the mint sits in the ix's `accounts[1]`, so we can
136
+ * pin it down without consulting the balance-row table. Plain `Transfer`
137
+ * leaves this undefined — callers fall back to {@link mintForAccountIndex}.
138
+ */
139
+ explicitMint: string | undefined;
140
+ }
141
+
142
+ function extractTransfer(keys: string[], ix: CompiledInstruction): SplTransferSummary | null {
143
+ if (!SPL_TOKEN_PROGRAM_IDS.has(keys[ix.programIdIndex] ?? "")) return null;
144
+ const parsed = parseSplAmountIx(ix);
145
+ if (!parsed) return null;
146
+ if (parsed.amount <= 0n) return null;
147
+
148
+ if (parsed.tag === TokenInstruction.Transfer && ix.accounts.length >= 3) {
149
+ return {
150
+ sourceIndex: ix.accounts[0],
151
+ destIndex: ix.accounts[1],
152
+ amount: parsed.amount,
153
+ explicitMint: undefined,
154
+ };
155
+ }
156
+ if (parsed.tag === TokenInstruction.TransferChecked && ix.accounts.length >= 4) {
157
+ return {
158
+ sourceIndex: ix.accounts[0],
159
+ destIndex: ix.accounts[2],
160
+ amount: parsed.amount,
161
+ explicitMint: keys[ix.accounts[1]] ?? undefined,
162
+ };
163
+ }
164
+ return null;
165
+ }
166
+
167
+ /**
168
+ * Collect every SPL Token `Transfer` / `TransferChecked` CPI in the given inner
169
+ * block whose destination matches `destAtaIndex`. Multiple transfers (e.g. fees
170
+ * split across two CPIs, managed-unwind returning partial then final amounts)
171
+ * are returned as-is so callers can aggregate per mint.
172
+ */
173
+ export function collectSplTransfersTo(
174
+ keys: string[],
175
+ block: InnerInstructionBlock,
176
+ destAtaIndex: number
177
+ ): SplTransferSummary[] {
178
+ const out: SplTransferSummary[] = [];
179
+ for (const ix of block.instructions) {
180
+ const summary = extractTransfer(keys, ix);
181
+ if (summary && summary.destIndex === destAtaIndex) {
182
+ out.push(summary);
183
+ }
184
+ }
185
+ return out;
186
+ }
187
+
188
+ /**
189
+ * Sum the amounts of every SPL Token `Transfer` / `TransferChecked` CPI in the
190
+ * given inner block whose source matches `sourceAtaIndex`. Returns 0n if none.
191
+ *
192
+ * Used by `decodeMintToken` to total the collateral moved out of the user's
193
+ * collateral ATA. The collateral mint is known structurally from the IDL
194
+ * (`mint_token.collateral_mint`), so we don't need to track per-transfer mints.
195
+ */
196
+ export function sumSplTransfersFromSource(
197
+ keys: string[],
198
+ block: InnerInstructionBlock,
199
+ sourceAtaIndex: number
200
+ ): bigint {
201
+ let total = 0n;
202
+ for (const ix of block.instructions) {
203
+ const summary = extractTransfer(keys, ix);
204
+ if (summary && summary.sourceIndex === sourceAtaIndex) {
205
+ total += summary.amount;
206
+ }
207
+ }
208
+ return total;
209
+ }
210
+
211
+ /**
212
+ * Look up the mint a token account was holding by finding any row in pre/post
213
+ * balances with the matching `accountIndex`. Used when a plain `Transfer` CPI
214
+ * doesn't carry the mint in-line — we read it off the counterparty's row.
215
+ */
216
+ export function mintForAccountIndex(
217
+ pre: TokenBalanceRow[] | undefined,
218
+ post: TokenBalanceRow[] | undefined,
219
+ accountIndex: number
220
+ ): string | null {
221
+ for (const row of pre ?? []) {
222
+ if (row.accountIndex === accountIndex) return row.mint;
223
+ }
224
+ for (const row of post ?? []) {
225
+ if (row.accountIndex === accountIndex) return row.mint;
226
+ }
227
+ return null;
228
+ }
229
+
230
+ /**
231
+ * Given the inner-instruction transfers that delivered collateral to the user's
232
+ * collateral ATA, resolve (mint, amount) per mint and return the largest.
233
+ *
234
+ * Multi-mint returns (dust + primary) are possible in managed-unwind paths; we
235
+ * pick the dominant mint rather than summing across mints so the event's
236
+ * `collateralMint` remains a single string that matches the user's intent.
237
+ */
238
+ export function aggregateCollateralTransfers(
239
+ meta: TxMeta,
240
+ transfers: SplTransferSummary[]
241
+ ): { collateralMint: string; amount: bigint } | null {
242
+ const totals = new Map<string, bigint>();
243
+ for (const t of transfers) {
244
+ const mint =
245
+ t.explicitMint ??
246
+ mintForAccountIndex(meta.preTokenBalances, meta.postTokenBalances, t.sourceIndex) ??
247
+ mintForAccountIndex(meta.preTokenBalances, meta.postTokenBalances, t.destIndex);
248
+ if (!mint) continue;
249
+ totals.set(mint, (totals.get(mint) ?? 0n) + t.amount);
250
+ }
251
+
252
+ let bestMint: string | null = null;
253
+ let bestAmt = 0n;
254
+ for (const [mint, amt] of totals) {
255
+ if (amt > bestAmt) {
256
+ bestAmt = amt;
257
+ bestMint = mint;
258
+ }
259
+ }
260
+ if (bestMint === null || bestAmt <= 0n) return null;
261
+ return { collateralMint: bestMint, amount: bestAmt };
262
+ }