@kestrelfi/lyc-sdk 1.0.1 → 1.0.3

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 (738) hide show
  1. package/README.md +32 -0
  2. package/dist/carry-XU3WUD22.mjs +20 -0
  3. package/dist/carry-XU3WUD22.mjs.map +1 -0
  4. package/dist/chunk-2T23QQCX.mjs +3707 -0
  5. package/dist/chunk-2T23QQCX.mjs.map +1 -0
  6. package/dist/chunk-GOW6CARW.mjs +3969 -0
  7. package/dist/chunk-GOW6CARW.mjs.map +1 -0
  8. package/dist/chunk-ZPXXY3QV.mjs +9330 -0
  9. package/dist/chunk-ZPXXY3QV.mjs.map +1 -0
  10. package/dist/{sdks/long-yield-carry/src/idl/long_yield_carry.d.ts → core-DP6wfpME.d.mts} +3242 -84
  11. package/dist/core-DP6wfpME.d.ts +10485 -0
  12. package/dist/core.d.mts +8 -0
  13. package/dist/core.d.ts +8 -0
  14. package/dist/core.js +12348 -0
  15. package/dist/core.js.map +1 -0
  16. package/dist/core.mjs +72 -0
  17. package/dist/core.mjs.map +1 -0
  18. package/dist/index.d.mts +2537 -0
  19. package/dist/index.d.ts +2537 -0
  20. package/dist/index.js +23884 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/index.mjs +5898 -0
  23. package/dist/index.mjs.map +1 -0
  24. package/package.json +56 -10
  25. package/.env.example +0 -11
  26. package/dist/sdks/long-yield-carry/scripts/asyncBurn.d.ts +0 -1
  27. package/dist/sdks/long-yield-carry/scripts/asyncBurn.js +0 -117
  28. package/dist/sdks/long-yield-carry/scripts/burnToken.d.ts +0 -1
  29. package/dist/sdks/long-yield-carry/scripts/burnToken.js +0 -98
  30. package/dist/sdks/long-yield-carry/scripts/claimIncentives.d.ts +0 -1
  31. package/dist/sdks/long-yield-carry/scripts/claimIncentives.js +0 -108
  32. package/dist/sdks/long-yield-carry/scripts/closeCpiPlans.d.ts +0 -1
  33. package/dist/sdks/long-yield-carry/scripts/closeCpiPlans.js +0 -93
  34. package/dist/sdks/long-yield-carry/scripts/collectInterest.d.ts +0 -1
  35. package/dist/sdks/long-yield-carry/scripts/collectInterest.js +0 -164
  36. package/dist/sdks/long-yield-carry/scripts/collectProtocolFees.d.ts +0 -1
  37. package/dist/sdks/long-yield-carry/scripts/collectProtocolFees.js +0 -120
  38. package/dist/sdks/long-yield-carry/scripts/computeOptimalAllocations.d.ts +0 -1
  39. package/dist/sdks/long-yield-carry/scripts/computeOptimalAllocations.js +0 -84
  40. package/dist/sdks/long-yield-carry/scripts/createToken.d.ts +0 -1
  41. package/dist/sdks/long-yield-carry/scripts/createToken.js +0 -76
  42. package/dist/sdks/long-yield-carry/scripts/createTokenLendingPosition.d.ts +0 -1
  43. package/dist/sdks/long-yield-carry/scripts/createTokenLendingPosition.js +0 -157
  44. package/dist/sdks/long-yield-carry/scripts/createYieldingBank.d.ts +0 -1
  45. package/dist/sdks/long-yield-carry/scripts/createYieldingBank.js +0 -69
  46. package/dist/sdks/long-yield-carry/scripts/decreaseCarryPositions.d.ts +0 -1
  47. package/dist/sdks/long-yield-carry/scripts/decreaseCarryPositions.js +0 -247
  48. package/dist/sdks/long-yield-carry/scripts/depositUnlentCollateral.d.ts +0 -1
  49. package/dist/sdks/long-yield-carry/scripts/depositUnlentCollateral.js +0 -90
  50. package/dist/sdks/long-yield-carry/scripts/emergency/deleverageAll.d.ts +0 -1
  51. package/dist/sdks/long-yield-carry/scripts/emergency/deleverageAll.js +0 -202
  52. package/dist/sdks/long-yield-carry/scripts/emergency/triggerCircuitBreaker.d.ts +0 -1
  53. package/dist/sdks/long-yield-carry/scripts/emergency/triggerCircuitBreaker.js +0 -68
  54. package/dist/sdks/long-yield-carry/scripts/env.d.ts +0 -1
  55. package/dist/sdks/long-yield-carry/scripts/env.js +0 -8
  56. package/dist/sdks/long-yield-carry/scripts/findTxs.d.ts +0 -1
  57. package/dist/sdks/long-yield-carry/scripts/findTxs.js +0 -143
  58. package/dist/sdks/long-yield-carry/scripts/increaseCarryPositions.d.ts +0 -1
  59. package/dist/sdks/long-yield-carry/scripts/increaseCarryPositions.js +0 -112
  60. package/dist/sdks/long-yield-carry/scripts/inspect/format.d.ts +0 -13
  61. package/dist/sdks/long-yield-carry/scripts/inspect/format.js +0 -363
  62. package/dist/sdks/long-yield-carry/scripts/inspect.d.ts +0 -1
  63. package/dist/sdks/long-yield-carry/scripts/inspect.js +0 -108
  64. package/dist/sdks/long-yield-carry/scripts/localUtils.d.ts +0 -53
  65. package/dist/sdks/long-yield-carry/scripts/localUtils.js +0 -191
  66. package/dist/sdks/long-yield-carry/scripts/mintToken.d.ts +0 -1
  67. package/dist/sdks/long-yield-carry/scripts/mintToken.js +0 -103
  68. package/dist/sdks/long-yield-carry/scripts/processAsyncBurns.d.ts +0 -1
  69. package/dist/sdks/long-yield-carry/scripts/processAsyncBurns.js +0 -76
  70. package/dist/sdks/long-yield-carry/scripts/rebalanceToken.d.ts +0 -1
  71. package/dist/sdks/long-yield-carry/scripts/rebalanceToken.js +0 -210
  72. package/dist/sdks/long-yield-carry/scripts/rebalanceYieldingBank.d.ts +0 -1
  73. package/dist/sdks/long-yield-carry/scripts/rebalanceYieldingBank.js +0 -149
  74. package/dist/sdks/long-yield-carry/scripts/recollateralizeLoss.d.ts +0 -1
  75. package/dist/sdks/long-yield-carry/scripts/recollateralizeLoss.js +0 -64
  76. package/dist/sdks/long-yield-carry/scripts/refresh.d.ts +0 -1
  77. package/dist/sdks/long-yield-carry/scripts/refresh.js +0 -101
  78. package/dist/sdks/long-yield-carry/scripts/updateFees.d.ts +0 -1
  79. package/dist/sdks/long-yield-carry/scripts/updateFees.js +0 -369
  80. package/dist/sdks/long-yield-carry/scripts/updateGeneralLut.d.ts +0 -1
  81. package/dist/sdks/long-yield-carry/scripts/updateGeneralLut.js +0 -27
  82. package/dist/sdks/long-yield-carry/scripts/updateLendingPositionConfig.d.ts +0 -1
  83. package/dist/sdks/long-yield-carry/scripts/updateLendingPositionConfig.js +0 -127
  84. package/dist/sdks/long-yield-carry/scripts/updateTokenLuts.d.ts +0 -1
  85. package/dist/sdks/long-yield-carry/scripts/updateTokenLuts.js +0 -27
  86. package/dist/sdks/long-yield-carry/scripts/updateTokenMetadata.d.ts +0 -1
  87. package/dist/sdks/long-yield-carry/scripts/updateTokenMetadata.js +0 -194
  88. package/dist/sdks/long-yield-carry/scripts/updateYieldingBankConfig.d.ts +0 -1
  89. package/dist/sdks/long-yield-carry/scripts/updateYieldingBankConfig.js +0 -84
  90. package/dist/sdks/long-yield-carry/scripts/withdrawUnlentCollateral.d.ts +0 -1
  91. package/dist/sdks/long-yield-carry/scripts/withdrawUnlentCollateral.js +0 -140
  92. package/dist/sdks/long-yield-carry/src/client/account.d.ts +0 -152
  93. package/dist/sdks/long-yield-carry/src/client/account.js +0 -349
  94. package/dist/sdks/long-yield-carry/src/client/builders/args.d.ts +0 -299
  95. package/dist/sdks/long-yield-carry/src/client/builders/args.js +0 -2
  96. package/dist/sdks/long-yield-carry/src/client/builders/asyncBurnBuilder.d.ts +0 -20
  97. package/dist/sdks/long-yield-carry/src/client/builders/asyncBurnBuilder.js +0 -212
  98. package/dist/sdks/long-yield-carry/src/client/builders/base.d.ts +0 -77
  99. package/dist/sdks/long-yield-carry/src/client/builders/base.js +0 -191
  100. package/dist/sdks/long-yield-carry/src/client/builders/burnTokenBuilder.d.ts +0 -18
  101. package/dist/sdks/long-yield-carry/src/client/builders/burnTokenBuilder.js +0 -165
  102. package/dist/sdks/long-yield-carry/src/client/builders/claimIncentivesBuilder.d.ts +0 -9
  103. package/dist/sdks/long-yield-carry/src/client/builders/claimIncentivesBuilder.js +0 -135
  104. package/dist/sdks/long-yield-carry/src/client/builders/collectFeesBuilder.d.ts +0 -14
  105. package/dist/sdks/long-yield-carry/src/client/builders/collectFeesBuilder.js +0 -50
  106. package/dist/sdks/long-yield-carry/src/client/builders/collectInterestBuilder.d.ts +0 -8
  107. package/dist/sdks/long-yield-carry/src/client/builders/collectInterestBuilder.js +0 -86
  108. package/dist/sdks/long-yield-carry/src/client/builders/createCpiPlanBuilder.d.ts +0 -6
  109. package/dist/sdks/long-yield-carry/src/client/builders/createCpiPlanBuilder.js +0 -22
  110. package/dist/sdks/long-yield-carry/src/client/builders/createTokenBuilder.d.ts +0 -7
  111. package/dist/sdks/long-yield-carry/src/client/builders/createTokenBuilder.js +0 -64
  112. package/dist/sdks/long-yield-carry/src/client/builders/createTokenLendingPositionBuilder.d.ts +0 -10
  113. package/dist/sdks/long-yield-carry/src/client/builders/createTokenLendingPositionBuilder.js +0 -138
  114. package/dist/sdks/long-yield-carry/src/client/builders/createYieldingBankAllocationBuilder.d.ts +0 -7
  115. package/dist/sdks/long-yield-carry/src/client/builders/createYieldingBankAllocationBuilder.js +0 -29
  116. package/dist/sdks/long-yield-carry/src/client/builders/createYieldingBankBuilder.d.ts +0 -7
  117. package/dist/sdks/long-yield-carry/src/client/builders/createYieldingBankBuilder.js +0 -39
  118. package/dist/sdks/long-yield-carry/src/client/builders/decreaseCarryPositionBuilder.d.ts +0 -30
  119. package/dist/sdks/long-yield-carry/src/client/builders/decreaseCarryPositionBuilder.js +0 -99
  120. package/dist/sdks/long-yield-carry/src/client/builders/depositUnlentCollateralBuilder.d.ts +0 -8
  121. package/dist/sdks/long-yield-carry/src/client/builders/depositUnlentCollateralBuilder.js +0 -64
  122. package/dist/sdks/long-yield-carry/src/client/builders/increaseCarryPositionBuilder.d.ts +0 -8
  123. package/dist/sdks/long-yield-carry/src/client/builders/increaseCarryPositionBuilder.js +0 -73
  124. package/dist/sdks/long-yield-carry/src/client/builders/index.d.ts +0 -28
  125. package/dist/sdks/long-yield-carry/src/client/builders/index.js +0 -62
  126. package/dist/sdks/long-yield-carry/src/client/builders/mintTokenBuilder.d.ts +0 -8
  127. package/dist/sdks/long-yield-carry/src/client/builders/mintTokenBuilder.js +0 -95
  128. package/dist/sdks/long-yield-carry/src/client/builders/rebalanceTokenBuilder.d.ts +0 -11
  129. package/dist/sdks/long-yield-carry/src/client/builders/rebalanceTokenBuilder.js +0 -255
  130. package/dist/sdks/long-yield-carry/src/client/builders/rebalanceYieldingBankBuilder.d.ts +0 -8
  131. package/dist/sdks/long-yield-carry/src/client/builders/rebalanceYieldingBankBuilder.js +0 -75
  132. package/dist/sdks/long-yield-carry/src/client/builders/recollateralizeLossBuilder.d.ts +0 -12
  133. package/dist/sdks/long-yield-carry/src/client/builders/recollateralizeLossBuilder.js +0 -220
  134. package/dist/sdks/long-yield-carry/src/client/builders/refreshTokenStateBuilder.d.ts +0 -9
  135. package/dist/sdks/long-yield-carry/src/client/builders/refreshTokenStateBuilder.js +0 -112
  136. package/dist/sdks/long-yield-carry/src/client/builders/refreshTokensBuilder.d.ts +0 -9
  137. package/dist/sdks/long-yield-carry/src/client/builders/refreshTokensBuilder.js +0 -59
  138. package/dist/sdks/long-yield-carry/src/client/builders/refreshYieldingBankBuilder.d.ts +0 -8
  139. package/dist/sdks/long-yield-carry/src/client/builders/refreshYieldingBankBuilder.js +0 -29
  140. package/dist/sdks/long-yield-carry/src/client/builders/resetTokenBurnRateLimitBuilder.d.ts +0 -7
  141. package/dist/sdks/long-yield-carry/src/client/builders/resetTokenBurnRateLimitBuilder.js +0 -19
  142. package/dist/sdks/long-yield-carry/src/client/builders/setTokenCircuitBreakerBuilder.d.ts +0 -11
  143. package/dist/sdks/long-yield-carry/src/client/builders/setTokenCircuitBreakerBuilder.js +0 -31
  144. package/dist/sdks/long-yield-carry/src/client/builders/setYieldingBankCircuitBreakerBuilder.d.ts +0 -8
  145. package/dist/sdks/long-yield-carry/src/client/builders/setYieldingBankCircuitBreakerBuilder.js +0 -28
  146. package/dist/sdks/long-yield-carry/src/client/builders/updateLendingPositionConfigBuilder.d.ts +0 -10
  147. package/dist/sdks/long-yield-carry/src/client/builders/updateLendingPositionConfigBuilder.js +0 -30
  148. package/dist/sdks/long-yield-carry/src/client/builders/updateTokenConfigurationBuilder.d.ts +0 -11
  149. package/dist/sdks/long-yield-carry/src/client/builders/updateTokenConfigurationBuilder.js +0 -47
  150. package/dist/sdks/long-yield-carry/src/client/builders/updateTokenMetadataBuilder.d.ts +0 -7
  151. package/dist/sdks/long-yield-carry/src/client/builders/updateTokenMetadataBuilder.js +0 -24
  152. package/dist/sdks/long-yield-carry/src/client/builders/updateYieldingBankConfigBuilder.d.ts +0 -10
  153. package/dist/sdks/long-yield-carry/src/client/builders/updateYieldingBankConfigBuilder.js +0 -31
  154. package/dist/sdks/long-yield-carry/src/client/builders/utils.d.ts +0 -4
  155. package/dist/sdks/long-yield-carry/src/client/builders/utils.js +0 -20
  156. package/dist/sdks/long-yield-carry/src/client/client.d.ts +0 -115
  157. package/dist/sdks/long-yield-carry/src/client/client.js +0 -166
  158. package/dist/sdks/long-yield-carry/src/client/externalLiquidityResolver.d.ts +0 -13
  159. package/dist/sdks/long-yield-carry/src/client/externalLiquidityResolver.js +0 -34
  160. package/dist/sdks/long-yield-carry/src/client/index.d.ts +0 -10
  161. package/dist/sdks/long-yield-carry/src/client/index.js +0 -33
  162. package/dist/sdks/long-yield-carry/src/client/lendingPlatformClients.d.ts +0 -19
  163. package/dist/sdks/long-yield-carry/src/client/lendingPlatformClients.js +0 -33
  164. package/dist/sdks/long-yield-carry/src/client/pda.d.ts +0 -33
  165. package/dist/sdks/long-yield-carry/src/client/pda.js +0 -79
  166. package/dist/sdks/long-yield-carry/src/client/plans/collectInterest.d.ts +0 -24
  167. package/dist/sdks/long-yield-carry/src/client/plans/collectInterest.js +0 -150
  168. package/dist/sdks/long-yield-carry/src/client/plans/decreaseCarryPosition.d.ts +0 -12
  169. package/dist/sdks/long-yield-carry/src/client/plans/decreaseCarryPosition.js +0 -140
  170. package/dist/sdks/long-yield-carry/src/client/routes/collectInterest.d.ts +0 -13
  171. package/dist/sdks/long-yield-carry/src/client/routes/collectInterest.js +0 -39
  172. package/dist/sdks/long-yield-carry/src/client/transaction.d.ts +0 -41
  173. package/dist/sdks/long-yield-carry/src/client/transaction.js +0 -55
  174. package/dist/sdks/long-yield-carry/src/client/types/builders.d.ts +0 -18
  175. package/dist/sdks/long-yield-carry/src/client/types/builders.js +0 -2
  176. package/dist/sdks/long-yield-carry/src/client/types/enums.d.ts +0 -22
  177. package/dist/sdks/long-yield-carry/src/client/types/enums.js +0 -48
  178. package/dist/sdks/long-yield-carry/src/client/types/general.d.ts +0 -98
  179. package/dist/sdks/long-yield-carry/src/client/types/general.js +0 -2
  180. package/dist/sdks/long-yield-carry/src/client/types/index.d.ts +0 -6
  181. package/dist/sdks/long-yield-carry/src/client/types/index.js +0 -22
  182. package/dist/sdks/long-yield-carry/src/client/types/ix.d.ts +0 -352
  183. package/dist/sdks/long-yield-carry/src/client/types/ix.js +0 -2
  184. package/dist/sdks/long-yield-carry/src/client/types/planTypes/collectInterest.d.ts +0 -91
  185. package/dist/sdks/long-yield-carry/src/client/types/planTypes/collectInterest.js +0 -2
  186. package/dist/sdks/long-yield-carry/src/client/types/planTypes/common.d.ts +0 -28
  187. package/dist/sdks/long-yield-carry/src/client/types/planTypes/common.js +0 -2
  188. package/dist/sdks/long-yield-carry/src/client/types/planTypes/decreaseCarryPosition.d.ts +0 -128
  189. package/dist/sdks/long-yield-carry/src/client/types/planTypes/decreaseCarryPosition.js +0 -2
  190. package/dist/sdks/long-yield-carry/src/client/types/planTypes/index.d.ts +0 -3
  191. package/dist/sdks/long-yield-carry/src/client/types/planTypes/index.js +0 -19
  192. package/dist/sdks/long-yield-carry/src/client/types/tx.d.ts +0 -339
  193. package/dist/sdks/long-yield-carry/src/client/types/tx.js +0 -2
  194. package/dist/sdks/long-yield-carry/src/constants/configs/allocations.d.ts +0 -3
  195. package/dist/sdks/long-yield-carry/src/constants/configs/allocations.js +0 -23
  196. package/dist/sdks/long-yield-carry/src/constants/configs/carryTradePresets.d.ts +0 -58
  197. package/dist/sdks/long-yield-carry/src/constants/configs/carryTradePresets.js +0 -116
  198. package/dist/sdks/long-yield-carry/src/constants/configs/index.d.ts +0 -2
  199. package/dist/sdks/long-yield-carry/src/constants/configs/index.js +0 -18
  200. package/dist/sdks/long-yield-carry/src/constants/general.d.ts +0 -70
  201. package/dist/sdks/long-yield-carry/src/constants/general.js +0 -107
  202. package/dist/sdks/long-yield-carry/src/constants/index.d.ts +0 -3
  203. package/dist/sdks/long-yield-carry/src/constants/index.js +0 -19
  204. package/dist/sdks/long-yield-carry/src/constants/lycTokenMetadata.d.ts +0 -36
  205. package/dist/sdks/long-yield-carry/src/constants/lycTokenMetadata.js +0 -41
  206. package/dist/sdks/long-yield-carry/src/decoders/decodeTransaction.d.ts +0 -86
  207. package/dist/sdks/long-yield-carry/src/decoders/decodeTransaction.js +0 -230
  208. package/dist/sdks/long-yield-carry/src/decoders/discriminators.d.ts +0 -8
  209. package/dist/sdks/long-yield-carry/src/decoders/discriminators.js +0 -11
  210. package/dist/sdks/long-yield-carry/src/decoders/idlAccounts.d.ts +0 -29
  211. package/dist/sdks/long-yield-carry/src/decoders/idlAccounts.js +0 -57
  212. package/dist/sdks/long-yield-carry/src/decoders/index.d.ts +0 -6
  213. package/dist/sdks/long-yield-carry/src/decoders/index.js +0 -14
  214. package/dist/sdks/long-yield-carry/src/decoders/innerCpis.d.ts +0 -68
  215. package/dist/sdks/long-yield-carry/src/decoders/innerCpis.js +0 -225
  216. package/dist/sdks/long-yield-carry/src/decoders/lycInstructionNames.d.ts +0 -6
  217. package/dist/sdks/long-yield-carry/src/decoders/lycInstructionNames.js +0 -73
  218. package/dist/sdks/long-yield-carry/src/decoders/programIds.d.ts +0 -4
  219. package/dist/sdks/long-yield-carry/src/decoders/programIds.js +0 -11
  220. package/dist/sdks/long-yield-carry/src/decoders/solana.d.ts +0 -7
  221. package/dist/sdks/long-yield-carry/src/decoders/solana.js +0 -30
  222. package/dist/sdks/long-yield-carry/src/decoders/transactionPayload.d.ts +0 -41
  223. package/dist/sdks/long-yield-carry/src/decoders/transactionPayload.js +0 -6
  224. package/dist/sdks/long-yield-carry/src/decoders/types.d.ts +0 -58
  225. package/dist/sdks/long-yield-carry/src/decoders/types.js +0 -2
  226. package/dist/sdks/long-yield-carry/src/errors.d.ts +0 -69
  227. package/dist/sdks/long-yield-carry/src/errors.js +0 -183
  228. package/dist/sdks/long-yield-carry/src/idl/long_yield_carry.js +0 -7323
  229. package/dist/sdks/long-yield-carry/src/index.d.ts +0 -10
  230. package/dist/sdks/long-yield-carry/src/index.js +0 -25
  231. package/dist/sdks/long-yield-carry/src/metrics/index.d.ts +0 -1
  232. package/dist/sdks/long-yield-carry/src/metrics/index.js +0 -17
  233. package/dist/sdks/long-yield-carry/src/metrics/protocolMetrics.d.ts +0 -276
  234. package/dist/sdks/long-yield-carry/src/metrics/protocolMetrics.js +0 -547
  235. package/dist/sdks/long-yield-carry/src/models/index.d.ts +0 -3
  236. package/dist/sdks/long-yield-carry/src/models/index.js +0 -7
  237. package/dist/sdks/long-yield-carry/src/models/lycToken.d.ts +0 -156
  238. package/dist/sdks/long-yield-carry/src/models/lycToken.js +0 -288
  239. package/dist/sdks/long-yield-carry/src/models/yieldingBank.d.ts +0 -52
  240. package/dist/sdks/long-yield-carry/src/models/yieldingBank.js +0 -109
  241. package/dist/sdks/long-yield-carry/src/services/allocation/allocationService.d.ts +0 -106
  242. package/dist/sdks/long-yield-carry/src/services/allocation/allocationService.js +0 -589
  243. package/dist/sdks/long-yield-carry/src/services/allocation/index.d.ts +0 -2
  244. package/dist/sdks/long-yield-carry/src/services/allocation/index.js +0 -18
  245. package/dist/sdks/long-yield-carry/src/services/allocation/types.d.ts +0 -25
  246. package/dist/sdks/long-yield-carry/src/services/allocation/types.js +0 -2
  247. package/dist/sdks/long-yield-carry/src/services/carry/carryAllocationConfig.d.ts +0 -103
  248. package/dist/sdks/long-yield-carry/src/services/carry/carryAllocationConfig.js +0 -146
  249. package/dist/sdks/long-yield-carry/src/services/carry/index.d.ts +0 -2
  250. package/dist/sdks/long-yield-carry/src/services/carry/index.js +0 -18
  251. package/dist/sdks/long-yield-carry/src/services/carry/lycLendingPositionManager.d.ts +0 -39
  252. package/dist/sdks/long-yield-carry/src/services/carry/lycLendingPositionManager.js +0 -100
  253. package/dist/sdks/long-yield-carry/src/services/index.d.ts +0 -5
  254. package/dist/sdks/long-yield-carry/src/services/index.js +0 -21
  255. package/dist/sdks/long-yield-carry/src/services/lendingPosition/index.d.ts +0 -2
  256. package/dist/sdks/long-yield-carry/src/services/lendingPosition/index.js +0 -5
  257. package/dist/sdks/long-yield-carry/src/services/lendingPosition/lendingPositionService.d.ts +0 -88
  258. package/dist/sdks/long-yield-carry/src/services/lendingPosition/lendingPositionService.js +0 -229
  259. package/dist/sdks/long-yield-carry/src/services/rebalance/index.d.ts +0 -2
  260. package/dist/sdks/long-yield-carry/src/services/rebalance/index.js +0 -18
  261. package/dist/sdks/long-yield-carry/src/services/rebalance/token/index.d.ts +0 -1
  262. package/dist/sdks/long-yield-carry/src/services/rebalance/token/index.js +0 -17
  263. package/dist/sdks/long-yield-carry/src/services/rebalance/token/tokenRebalanceService.d.ts +0 -51
  264. package/dist/sdks/long-yield-carry/src/services/rebalance/token/tokenRebalanceService.js +0 -99
  265. package/dist/sdks/long-yield-carry/src/services/rebalance/yieldingBank/index.d.ts +0 -3
  266. package/dist/sdks/long-yield-carry/src/services/rebalance/yieldingBank/index.js +0 -21
  267. package/dist/sdks/long-yield-carry/src/services/rebalance/yieldingBank/planner.d.ts +0 -68
  268. package/dist/sdks/long-yield-carry/src/services/rebalance/yieldingBank/planner.js +0 -181
  269. package/dist/sdks/long-yield-carry/src/services/rebalance/yieldingBank/strategy.d.ts +0 -26
  270. package/dist/sdks/long-yield-carry/src/services/rebalance/yieldingBank/strategy.js +0 -26
  271. package/dist/sdks/long-yield-carry/src/services/rebalance/yieldingBank/types.d.ts +0 -40
  272. package/dist/sdks/long-yield-carry/src/services/rebalance/yieldingBank/types.js +0 -2
  273. package/dist/sdks/long-yield-carry/src/services/redemption/index.d.ts +0 -2
  274. package/dist/sdks/long-yield-carry/src/services/redemption/index.js +0 -5
  275. package/dist/sdks/long-yield-carry/src/services/redemption/redemptionService.d.ts +0 -139
  276. package/dist/sdks/long-yield-carry/src/services/redemption/redemptionService.js +0 -532
  277. package/dist/sdks/long-yield-carry/src/types/enriched.d.ts +0 -168
  278. package/dist/sdks/long-yield-carry/src/types/enriched.js +0 -2
  279. package/dist/sdks/long-yield-carry/src/types/index.d.ts +0 -1
  280. package/dist/sdks/long-yield-carry/src/types/index.js +0 -17
  281. package/dist/sdks/long-yield-carry/src/utils/cache.d.ts +0 -4
  282. package/dist/sdks/long-yield-carry/src/utils/cache.js +0 -10
  283. package/dist/sdks/long-yield-carry/src/utils/data.d.ts +0 -12
  284. package/dist/sdks/long-yield-carry/src/utils/data.js +0 -59
  285. package/dist/sdks/long-yield-carry/src/utils/enrichment.d.ts +0 -5
  286. package/dist/sdks/long-yield-carry/src/utils/enrichment.js +0 -244
  287. package/dist/sdks/long-yield-carry/src/utils/feeDripMetrics.d.ts +0 -36
  288. package/dist/sdks/long-yield-carry/src/utils/feeDripMetrics.js +0 -93
  289. package/dist/sdks/long-yield-carry/src/utils/general.d.ts +0 -28
  290. package/dist/sdks/long-yield-carry/src/utils/general.js +0 -47
  291. package/dist/sdks/long-yield-carry/src/utils/index.d.ts +0 -13
  292. package/dist/sdks/long-yield-carry/src/utils/index.js +0 -29
  293. package/dist/sdks/long-yield-carry/src/utils/ix.d.ts +0 -83
  294. package/dist/sdks/long-yield-carry/src/utils/ix.js +0 -165
  295. package/dist/sdks/long-yield-carry/src/utils/lendingPosition.d.ts +0 -68
  296. package/dist/sdks/long-yield-carry/src/utils/lendingPosition.js +0 -105
  297. package/dist/sdks/long-yield-carry/src/utils/lookupTables.d.ts +0 -55
  298. package/dist/sdks/long-yield-carry/src/utils/lookupTables.js +0 -216
  299. package/dist/sdks/long-yield-carry/src/utils/lycData.d.ts +0 -66
  300. package/dist/sdks/long-yield-carry/src/utils/lycData.js +0 -211
  301. package/dist/sdks/long-yield-carry/src/utils/timelock.d.ts +0 -19
  302. package/dist/sdks/long-yield-carry/src/utils/timelock.js +0 -37
  303. package/dist/sdks/long-yield-carry/src/utils/tokenFeeMath.d.ts +0 -11
  304. package/dist/sdks/long-yield-carry/src/utils/tokenFeeMath.js +0 -24
  305. package/dist/sdks/long-yield-carry/src/utils/transactions.d.ts +0 -20
  306. package/dist/sdks/long-yield-carry/src/utils/transactions.js +0 -72
  307. package/dist/sdks/long-yield-carry/src/utils/yieldingBank.d.ts +0 -24
  308. package/dist/sdks/long-yield-carry/src/utils/yieldingBank.js +0 -36
  309. package/dist/shared/common/src/constants/accountMetas.d.ts +0 -3
  310. package/dist/shared/common/src/constants/accountMetas.js +0 -9
  311. package/dist/shared/common/src/constants/general.d.ts +0 -21
  312. package/dist/shared/common/src/constants/general.js +0 -30
  313. package/dist/shared/common/src/constants/generated/cpi.d.ts +0 -23
  314. package/dist/shared/common/src/constants/generated/cpi.js +0 -28
  315. package/dist/shared/common/src/constants/generated/index.d.ts +0 -1
  316. package/dist/shared/common/src/constants/generated/index.js +0 -17
  317. package/dist/shared/common/src/constants/index.d.ts +0 -3
  318. package/dist/shared/common/src/constants/index.js +0 -19
  319. package/dist/shared/common/src/index.d.ts +0 -4
  320. package/dist/shared/common/src/index.js +0 -20
  321. package/dist/shared/common/src/services/baseAccountClient.d.ts +0 -22
  322. package/dist/shared/common/src/services/baseAccountClient.js +0 -38
  323. package/dist/shared/common/src/services/baseIxBuilderService.d.ts +0 -27
  324. package/dist/shared/common/src/services/baseIxBuilderService.js +0 -48
  325. package/dist/shared/common/src/services/dataCache.d.ts +0 -41
  326. package/dist/shared/common/src/services/dataCache.js +0 -130
  327. package/dist/shared/common/src/services/index.d.ts +0 -8
  328. package/dist/shared/common/src/services/index.js +0 -24
  329. package/dist/shared/common/src/services/lutManager.d.ts +0 -31
  330. package/dist/shared/common/src/services/lutManager.js +0 -133
  331. package/dist/shared/common/src/services/mints/defaults.d.ts +0 -2
  332. package/dist/shared/common/src/services/mints/defaults.js +0 -152
  333. package/dist/shared/common/src/services/mints/index.d.ts +0 -4
  334. package/dist/shared/common/src/services/mints/index.js +0 -20
  335. package/dist/shared/common/src/services/mints/registry.d.ts +0 -70
  336. package/dist/shared/common/src/services/mints/registry.js +0 -117
  337. package/dist/shared/common/src/services/mints/symbols.d.ts +0 -6
  338. package/dist/shared/common/src/services/mints/symbols.js +0 -13
  339. package/dist/shared/common/src/services/mints/types.d.ts +0 -30
  340. package/dist/shared/common/src/services/mints/types.js +0 -2
  341. package/dist/shared/common/src/services/swap/index.d.ts +0 -4
  342. package/dist/shared/common/src/services/swap/index.js +0 -20
  343. package/dist/shared/common/src/services/swap/routableSwapClient.d.ts +0 -36
  344. package/dist/shared/common/src/services/swap/routableSwapClient.js +0 -2
  345. package/dist/shared/common/src/services/swap/swapClientBase.d.ts +0 -45
  346. package/dist/shared/common/src/services/swap/swapClientBase.js +0 -2
  347. package/dist/shared/common/src/services/swap/swapRouting.d.ts +0 -13
  348. package/dist/shared/common/src/services/swap/swapRouting.js +0 -28
  349. package/dist/shared/common/src/services/swap/types.d.ts +0 -77
  350. package/dist/shared/common/src/services/swap/types.js +0 -2
  351. package/dist/shared/common/src/services/token/index.d.ts +0 -2
  352. package/dist/shared/common/src/services/token/index.js +0 -18
  353. package/dist/shared/common/src/services/token/tokenProtocolClientBase.d.ts +0 -51
  354. package/dist/shared/common/src/services/token/tokenProtocolClientBase.js +0 -2
  355. package/dist/shared/common/src/services/token/types.d.ts +0 -19
  356. package/dist/shared/common/src/services/token/types.js +0 -2
  357. package/dist/shared/common/src/services/transactionSender.d.ts +0 -24
  358. package/dist/shared/common/src/services/transactionSender.js +0 -30
  359. package/dist/shared/common/src/types/cpi.d.ts +0 -34
  360. package/dist/shared/common/src/types/cpi.js +0 -8
  361. package/dist/shared/common/src/types/enums.d.ts +0 -59
  362. package/dist/shared/common/src/types/enums.js +0 -122
  363. package/dist/shared/common/src/types/general.d.ts +0 -38
  364. package/dist/shared/common/src/types/general.js +0 -2
  365. package/dist/shared/common/src/types/index.d.ts +0 -4
  366. package/dist/shared/common/src/types/index.js +0 -20
  367. package/dist/shared/common/src/types/solana.d.ts +0 -24
  368. package/dist/shared/common/src/types/solana.js +0 -2
  369. package/dist/shared/common/src/utils/accounts/index.d.ts +0 -5
  370. package/dist/shared/common/src/utils/accounts/index.js +0 -21
  371. package/dist/shared/common/src/utils/accounts/meta.d.ts +0 -21
  372. package/dist/shared/common/src/utils/accounts/meta.js +0 -27
  373. package/dist/shared/common/src/utils/accounts/pda.d.ts +0 -2
  374. package/dist/shared/common/src/utils/accounts/pda.js +0 -17
  375. package/dist/shared/common/src/utils/accounts/roles.d.ts +0 -26
  376. package/dist/shared/common/src/utils/accounts/roles.js +0 -54
  377. package/dist/shared/common/src/utils/accounts/rpc.d.ts +0 -8
  378. package/dist/shared/common/src/utils/accounts/rpc.js +0 -30
  379. package/dist/shared/common/src/utils/accounts/splBalances.d.ts +0 -15
  380. package/dist/shared/common/src/utils/accounts/splBalances.js +0 -52
  381. package/dist/shared/common/src/utils/anchor.d.ts +0 -17
  382. package/dist/shared/common/src/utils/anchor.js +0 -29
  383. package/dist/shared/common/src/utils/asyncConcurrency.d.ts +0 -5
  384. package/dist/shared/common/src/utils/asyncConcurrency.js +0 -28
  385. package/dist/shared/common/src/utils/compat.d.ts +0 -46
  386. package/dist/shared/common/src/utils/compat.js +0 -72
  387. package/dist/shared/common/src/utils/cpi/args.d.ts +0 -69
  388. package/dist/shared/common/src/utils/cpi/args.js +0 -100
  389. package/dist/shared/common/src/utils/cpi/index.d.ts +0 -2
  390. package/dist/shared/common/src/utils/cpi/index.js +0 -18
  391. package/dist/shared/common/src/utils/cpi/refs.d.ts +0 -122
  392. package/dist/shared/common/src/utils/cpi/refs.js +0 -234
  393. package/dist/shared/common/src/utils/data.d.ts +0 -20
  394. package/dist/shared/common/src/utils/data.js +0 -27
  395. package/dist/shared/common/src/utils/general.d.ts +0 -24
  396. package/dist/shared/common/src/utils/general.js +0 -95
  397. package/dist/shared/common/src/utils/index.d.ts +0 -22
  398. package/dist/shared/common/src/utils/index.js +0 -38
  399. package/dist/shared/common/src/utils/instruction.d.ts +0 -74
  400. package/dist/shared/common/src/utils/instruction.js +0 -147
  401. package/dist/shared/common/src/utils/jito.d.ts +0 -113
  402. package/dist/shared/common/src/utils/jito.js +0 -178
  403. package/dist/shared/common/src/utils/json.d.ts +0 -5
  404. package/dist/shared/common/src/utils/json.js +0 -25
  405. package/dist/shared/common/src/utils/jsonRpcFetch.d.ts +0 -21
  406. package/dist/shared/common/src/utils/jsonRpcFetch.js +0 -134
  407. package/dist/shared/common/src/utils/metadata.d.ts +0 -107
  408. package/dist/shared/common/src/utils/metadata.js +0 -194
  409. package/dist/shared/common/src/utils/numbers.d.ts +0 -72
  410. package/dist/shared/common/src/utils/numbers.js +0 -193
  411. package/dist/shared/common/src/utils/priorityFee.d.ts +0 -18
  412. package/dist/shared/common/src/utils/priorityFee.js +0 -63
  413. package/dist/shared/common/src/utils/retry.d.ts +0 -20
  414. package/dist/shared/common/src/utils/retry.js +0 -69
  415. package/dist/shared/common/src/utils/rpc.d.ts +0 -40
  416. package/dist/shared/common/src/utils/rpc.js +0 -130
  417. package/dist/shared/common/src/utils/solana.d.ts +0 -23
  418. package/dist/shared/common/src/utils/solana.js +0 -61
  419. package/dist/shared/common/src/utils/timeSeries.d.ts +0 -18
  420. package/dist/shared/common/src/utils/timeSeries.js +0 -40
  421. package/dist/shared/common/src/utils/token.d.ts +0 -33
  422. package/dist/shared/common/src/utils/token.js +0 -82
  423. package/dist/shared/common/src/utils/transaction.d.ts +0 -154
  424. package/dist/shared/common/src/utils/transaction.js +0 -585
  425. package/dist/shared/common/src/utils/transactionSplitter.d.ts +0 -85
  426. package/dist/shared/common/src/utils/transactionSplitter.js +0 -127
  427. package/dist/shared/common/src/utils/txAccountCoverage.d.ts +0 -49
  428. package/dist/shared/common/src/utils/txAccountCoverage.js +0 -122
  429. package/dist/shared/jupiter-helpers/src/api.d.ts +0 -59
  430. package/dist/shared/jupiter-helpers/src/api.js +0 -130
  431. package/dist/shared/jupiter-helpers/src/client.d.ts +0 -79
  432. package/dist/shared/jupiter-helpers/src/client.js +0 -173
  433. package/dist/shared/jupiter-helpers/src/constants.d.ts +0 -35
  434. package/dist/shared/jupiter-helpers/src/constants.js +0 -38
  435. package/dist/shared/jupiter-helpers/src/extract.d.ts +0 -30
  436. package/dist/shared/jupiter-helpers/src/extract.js +0 -57
  437. package/dist/shared/jupiter-helpers/src/index.d.ts +0 -5
  438. package/dist/shared/jupiter-helpers/src/index.js +0 -21
  439. package/dist/shared/jupiter-helpers/src/routePreInstructions.d.ts +0 -19
  440. package/dist/shared/jupiter-helpers/src/routePreInstructions.js +0 -61
  441. package/dist/shared/jupiter-helpers/src/sizeExactInForMinOutput.d.ts +0 -70
  442. package/dist/shared/jupiter-helpers/src/sizeExactInForMinOutput.js +0 -95
  443. package/dist/shared/jupiter-helpers/src/types.d.ts +0 -66
  444. package/dist/shared/jupiter-helpers/src/types.js +0 -2
  445. package/dist/shared/lending-platforms/src/constants/cache.d.ts +0 -8
  446. package/dist/shared/lending-platforms/src/constants/cache.js +0 -11
  447. package/dist/shared/lending-platforms/src/constants/index.d.ts +0 -3
  448. package/dist/shared/lending-platforms/src/constants/index.js +0 -19
  449. package/dist/shared/lending-platforms/src/constants/kamino.d.ts +0 -7
  450. package/dist/shared/lending-platforms/src/constants/kamino.js +0 -83
  451. package/dist/shared/lending-platforms/src/constants/lendingPosition.d.ts +0 -7
  452. package/dist/shared/lending-platforms/src/constants/lendingPosition.js +0 -10
  453. package/dist/shared/lending-platforms/src/data/accounts/index.d.ts +0 -2
  454. package/dist/shared/lending-platforms/src/data/accounts/index.js +0 -18
  455. package/dist/shared/lending-platforms/src/data/accounts/kamino.d.ts +0 -42
  456. package/dist/shared/lending-platforms/src/data/accounts/kamino.js +0 -104
  457. package/dist/shared/lending-platforms/src/data/accounts/lpAccountsBase.d.ts +0 -7
  458. package/dist/shared/lending-platforms/src/data/accounts/lpAccountsBase.js +0 -9
  459. package/dist/shared/lending-platforms/src/data/incentive/incentiveBase.d.ts +0 -35
  460. package/dist/shared/lending-platforms/src/data/incentive/incentiveBase.js +0 -26
  461. package/dist/shared/lending-platforms/src/data/incentive/index.d.ts +0 -2
  462. package/dist/shared/lending-platforms/src/data/incentive/index.js +0 -18
  463. package/dist/shared/lending-platforms/src/data/incentive/kamino.d.ts +0 -55
  464. package/dist/shared/lending-platforms/src/data/incentive/kamino.js +0 -101
  465. package/dist/shared/lending-platforms/src/data/index.d.ts +0 -6
  466. package/dist/shared/lending-platforms/src/data/index.js +0 -22
  467. package/dist/shared/lending-platforms/src/data/instructions/index.d.ts +0 -3
  468. package/dist/shared/lending-platforms/src/data/instructions/index.js +0 -19
  469. package/dist/shared/lending-platforms/src/data/instructions/kamino.d.ts +0 -55
  470. package/dist/shared/lending-platforms/src/data/instructions/kamino.js +0 -630
  471. package/dist/shared/lending-platforms/src/data/instructions/lpInstructionsBase.d.ts +0 -175
  472. package/dist/shared/lending-platforms/src/data/instructions/lpInstructionsBase.js +0 -192
  473. package/dist/shared/lending-platforms/src/data/instructions/types.d.ts +0 -7
  474. package/dist/shared/lending-platforms/src/data/instructions/types.js +0 -2
  475. package/dist/shared/lending-platforms/src/data/platform/index.d.ts +0 -2
  476. package/dist/shared/lending-platforms/src/data/platform/index.js +0 -18
  477. package/dist/shared/lending-platforms/src/data/platform/kamino.d.ts +0 -59
  478. package/dist/shared/lending-platforms/src/data/platform/kamino.js +0 -206
  479. package/dist/shared/lending-platforms/src/data/platform/lpDataBase.d.ts +0 -35
  480. package/dist/shared/lending-platforms/src/data/platform/lpDataBase.js +0 -31
  481. package/dist/shared/lending-platforms/src/data/reserve/index.d.ts +0 -2
  482. package/dist/shared/lending-platforms/src/data/reserve/index.js +0 -18
  483. package/dist/shared/lending-platforms/src/data/reserve/kamino.d.ts +0 -45
  484. package/dist/shared/lending-platforms/src/data/reserve/kamino.js +0 -141
  485. package/dist/shared/lending-platforms/src/data/reserve/reserveBase.d.ts +0 -114
  486. package/dist/shared/lending-platforms/src/data/reserve/reserveBase.js +0 -125
  487. package/dist/shared/lending-platforms/src/data/userPosition/index.d.ts +0 -2
  488. package/dist/shared/lending-platforms/src/data/userPosition/index.js +0 -18
  489. package/dist/shared/lending-platforms/src/data/userPosition/kamino.d.ts +0 -15
  490. package/dist/shared/lending-platforms/src/data/userPosition/kamino.js +0 -45
  491. package/dist/shared/lending-platforms/src/data/userPosition/userPositionBase.d.ts +0 -50
  492. package/dist/shared/lending-platforms/src/data/userPosition/userPositionBase.js +0 -63
  493. package/dist/shared/lending-platforms/src/index.d.ts +0 -5
  494. package/dist/shared/lending-platforms/src/index.js +0 -21
  495. package/dist/shared/lending-platforms/src/services/client/index.d.ts +0 -2
  496. package/dist/shared/lending-platforms/src/services/client/index.js +0 -18
  497. package/dist/shared/lending-platforms/src/services/client/kamino.d.ts +0 -53
  498. package/dist/shared/lending-platforms/src/services/client/kamino.js +0 -142
  499. package/dist/shared/lending-platforms/src/services/client/lpClientBase.d.ts +0 -66
  500. package/dist/shared/lending-platforms/src/services/client/lpClientBase.js +0 -19
  501. package/dist/shared/lending-platforms/src/services/flashLoan/flashLoanBase.d.ts +0 -49
  502. package/dist/shared/lending-platforms/src/services/flashLoan/flashLoanBase.js +0 -16
  503. package/dist/shared/lending-platforms/src/services/flashLoan/index.d.ts +0 -2
  504. package/dist/shared/lending-platforms/src/services/flashLoan/index.js +0 -18
  505. package/dist/shared/lending-platforms/src/services/flashLoan/kamino.d.ts +0 -11
  506. package/dist/shared/lending-platforms/src/services/flashLoan/kamino.js +0 -85
  507. package/dist/shared/lending-platforms/src/services/index.d.ts +0 -5
  508. package/dist/shared/lending-platforms/src/services/index.js +0 -21
  509. package/dist/shared/lending-platforms/src/services/lendingPosition/index.d.ts +0 -2
  510. package/dist/shared/lending-platforms/src/services/lendingPosition/index.js +0 -18
  511. package/dist/shared/lending-platforms/src/services/lendingPosition/lendingPositionManager.d.ts +0 -117
  512. package/dist/shared/lending-platforms/src/services/lendingPosition/lendingPositionManager.js +0 -342
  513. package/dist/shared/lending-platforms/src/services/lendingPosition/types.d.ts +0 -40
  514. package/dist/shared/lending-platforms/src/services/lendingPosition/types.js +0 -2
  515. package/dist/shared/lending-platforms/src/services/leverage/index.d.ts +0 -2
  516. package/dist/shared/lending-platforms/src/services/leverage/index.js +0 -18
  517. package/dist/shared/lending-platforms/src/services/leverage/leverageService.d.ts +0 -104
  518. package/dist/shared/lending-platforms/src/services/leverage/leverageService.js +0 -437
  519. package/dist/shared/lending-platforms/src/services/leverage/types.d.ts +0 -261
  520. package/dist/shared/lending-platforms/src/services/leverage/types.js +0 -2
  521. package/dist/shared/lending-platforms/src/services/reservesManager.d.ts +0 -53
  522. package/dist/shared/lending-platforms/src/services/reservesManager.js +0 -112
  523. package/dist/shared/lending-platforms/src/types/general.d.ts +0 -37
  524. package/dist/shared/lending-platforms/src/types/general.js +0 -8
  525. package/dist/shared/lending-platforms/src/types/index.d.ts +0 -2
  526. package/dist/shared/lending-platforms/src/types/index.js +0 -18
  527. package/dist/shared/lending-platforms/src/types/kamino.d.ts +0 -10
  528. package/dist/shared/lending-platforms/src/types/kamino.js +0 -2
  529. package/dist/shared/lending-platforms/src/utils/accounts.d.ts +0 -16
  530. package/dist/shared/lending-platforms/src/utils/accounts.js +0 -36
  531. package/dist/shared/lending-platforms/src/utils/cache.d.ts +0 -3
  532. package/dist/shared/lending-platforms/src/utils/cache.js +0 -11
  533. package/dist/shared/lending-platforms/src/utils/index.d.ts +0 -6
  534. package/dist/shared/lending-platforms/src/utils/index.js +0 -22
  535. package/dist/shared/lending-platforms/src/utils/kamino.d.ts +0 -87
  536. package/dist/shared/lending-platforms/src/utils/kamino.js +0 -190
  537. package/dist/shared/lending-platforms/src/utils/lendingPlatform.d.ts +0 -6
  538. package/dist/shared/lending-platforms/src/utils/lendingPlatform.js +0 -16
  539. package/dist/shared/lending-platforms/src/utils/math.d.ts +0 -47
  540. package/dist/shared/lending-platforms/src/utils/math.js +0 -123
  541. package/dist/shared/lending-platforms/src/utils/scope.d.ts +0 -38
  542. package/dist/shared/lending-platforms/src/utils/scope.js +0 -144
  543. package/dist/shared/oracle-service/src/constants/index.d.ts +0 -3
  544. package/dist/shared/oracle-service/src/constants/index.js +0 -19
  545. package/dist/shared/oracle-service/src/constants/pyth.d.ts +0 -7
  546. package/dist/shared/oracle-service/src/constants/pyth.js +0 -71
  547. package/dist/shared/oracle-service/src/constants/splStake.d.ts +0 -2
  548. package/dist/shared/oracle-service/src/constants/splStake.js +0 -6
  549. package/dist/shared/oracle-service/src/constants/switchboard.d.ts +0 -7
  550. package/dist/shared/oracle-service/src/constants/switchboard.js +0 -10
  551. package/dist/shared/oracle-service/src/feeds/custom.d.ts +0 -30
  552. package/dist/shared/oracle-service/src/feeds/custom.js +0 -56
  553. package/dist/shared/oracle-service/src/feeds/jupiter.d.ts +0 -7
  554. package/dist/shared/oracle-service/src/feeds/jupiter.js +0 -43
  555. package/dist/shared/oracle-service/src/feeds/priceBase.d.ts +0 -13
  556. package/dist/shared/oracle-service/src/feeds/priceBase.js +0 -25
  557. package/dist/shared/oracle-service/src/feeds/pyth.d.ts +0 -8
  558. package/dist/shared/oracle-service/src/feeds/pyth.js +0 -59
  559. package/dist/shared/oracle-service/src/feeds/splStake.d.ts +0 -26
  560. package/dist/shared/oracle-service/src/feeds/splStake.js +0 -99
  561. package/dist/shared/oracle-service/src/feeds/switchboard.d.ts +0 -6
  562. package/dist/shared/oracle-service/src/feeds/switchboard.js +0 -11
  563. package/dist/shared/oracle-service/src/index.d.ts +0 -5
  564. package/dist/shared/oracle-service/src/index.js +0 -26
  565. package/dist/shared/oracle-service/src/oracle.d.ts +0 -22
  566. package/dist/shared/oracle-service/src/oracle.js +0 -104
  567. package/dist/shared/oracle-service/src/types.d.ts +0 -4
  568. package/dist/shared/oracle-service/src/types.js +0 -2
  569. package/dist/shared/oracle-service/src/utils/general.d.ts +0 -20
  570. package/dist/shared/oracle-service/src/utils/general.js +0 -65
  571. package/dist/shared/oracle-service/src/utils/index.d.ts +0 -1
  572. package/dist/shared/oracle-service/src/utils/index.js +0 -17
  573. package/dist/shared/perena-helpers/src/accounts.d.ts +0 -7
  574. package/dist/shared/perena-helpers/src/accounts.js +0 -12
  575. package/dist/shared/perena-helpers/src/client.d.ts +0 -299
  576. package/dist/shared/perena-helpers/src/client.js +0 -680
  577. package/dist/shared/perena-helpers/src/constants.d.ts +0 -5
  578. package/dist/shared/perena-helpers/src/constants.js +0 -8
  579. package/dist/shared/perena-helpers/src/cpi/burn.d.ts +0 -27
  580. package/dist/shared/perena-helpers/src/cpi/burn.js +0 -22
  581. package/dist/shared/perena-helpers/src/cpi/index.d.ts +0 -3
  582. package/dist/shared/perena-helpers/src/cpi/index.js +0 -19
  583. package/dist/shared/perena-helpers/src/cpi/mint.d.ts +0 -27
  584. package/dist/shared/perena-helpers/src/cpi/mint.js +0 -22
  585. package/dist/shared/perena-helpers/src/cpi/requestUnstake.d.ts +0 -19
  586. package/dist/shared/perena-helpers/src/cpi/requestUnstake.js +0 -16
  587. package/dist/shared/perena-helpers/src/index.d.ts +0 -5
  588. package/dist/shared/perena-helpers/src/index.js +0 -21
  589. package/dist/shared/perena-helpers/src/utils.d.ts +0 -9
  590. package/dist/shared/perena-helpers/src/utils.js +0 -54
  591. package/dist/shared/swap-aggregator/src/aggSwapClient.d.ts +0 -71
  592. package/dist/shared/swap-aggregator/src/aggSwapClient.js +0 -103
  593. package/dist/shared/swap-aggregator/src/index.d.ts +0 -1
  594. package/dist/shared/swap-aggregator/src/index.js +0 -17
  595. package/docs/launchingToken.md +0 -57
  596. package/scripts/asyncBurn.ts +0 -155
  597. package/scripts/burnToken.ts +0 -120
  598. package/scripts/claimIncentives.ts +0 -125
  599. package/scripts/closeCpiPlans.ts +0 -113
  600. package/scripts/collectInterest.ts +0 -194
  601. package/scripts/collectProtocolFees.ts +0 -144
  602. package/scripts/computeOptimalAllocations.ts +0 -117
  603. package/scripts/createToken.ts +0 -100
  604. package/scripts/createTokenLendingPosition.ts +0 -204
  605. package/scripts/createYieldingBank.ts +0 -91
  606. package/scripts/decreaseCarryPositions.ts +0 -359
  607. package/scripts/depositUnlentCollateral.ts +0 -106
  608. package/scripts/emergency/deleverageAll.ts +0 -287
  609. package/scripts/emergency/triggerCircuitBreaker.ts +0 -87
  610. package/scripts/env.ts +0 -4
  611. package/scripts/findTxs.ts +0 -169
  612. package/scripts/increaseCarryPositions.ts +0 -134
  613. package/scripts/inspect/format.ts +0 -576
  614. package/scripts/inspect.ts +0 -147
  615. package/scripts/localUtils.ts +0 -249
  616. package/scripts/mintToken.ts +0 -126
  617. package/scripts/processAsyncBurns.ts +0 -89
  618. package/scripts/rebalanceToken.ts +0 -269
  619. package/scripts/rebalanceYieldingBank.ts +0 -183
  620. package/scripts/recollateralizeLoss.ts +0 -79
  621. package/scripts/refresh.ts +0 -156
  622. package/scripts/updateFees.ts +0 -486
  623. package/scripts/updateGeneralLut.ts +0 -36
  624. package/scripts/updateLendingPositionConfig.ts +0 -172
  625. package/scripts/updateTokenLuts.ts +0 -36
  626. package/scripts/updateTokenMetadata.ts +0 -199
  627. package/scripts/updateYieldingBankConfig.ts +0 -100
  628. package/scripts/withdrawUnlentCollateral.ts +0 -178
  629. package/src/client/account.ts +0 -503
  630. package/src/client/builders/args.ts +0 -381
  631. package/src/client/builders/asyncBurnBuilder.ts +0 -305
  632. package/src/client/builders/base.ts +0 -303
  633. package/src/client/builders/burnTokenBuilder.ts +0 -258
  634. package/src/client/builders/claimIncentivesBuilder.ts +0 -211
  635. package/src/client/builders/collectFeesBuilder.ts +0 -52
  636. package/src/client/builders/collectInterestBuilder.ts +0 -165
  637. package/src/client/builders/createCpiPlanBuilder.ts +0 -21
  638. package/src/client/builders/createTokenBuilder.ts +0 -73
  639. package/src/client/builders/createTokenLendingPositionBuilder.ts +0 -219
  640. package/src/client/builders/createYieldingBankAllocationBuilder.ts +0 -32
  641. package/src/client/builders/createYieldingBankBuilder.ts +0 -39
  642. package/src/client/builders/decreaseCarryPositionBuilder.ts +0 -162
  643. package/src/client/builders/depositUnlentCollateralBuilder.ts +0 -95
  644. package/src/client/builders/increaseCarryPositionBuilder.ts +0 -105
  645. package/src/client/builders/index.ts +0 -37
  646. package/src/client/builders/mintTokenBuilder.ts +0 -137
  647. package/src/client/builders/rebalanceTokenBuilder.ts +0 -356
  648. package/src/client/builders/rebalanceYieldingBankBuilder.ts +0 -109
  649. package/src/client/builders/recollateralizeLossBuilder.ts +0 -367
  650. package/src/client/builders/refreshTokenStateBuilder.ts +0 -153
  651. package/src/client/builders/refreshTokensBuilder.ts +0 -82
  652. package/src/client/builders/refreshYieldingBankBuilder.ts +0 -42
  653. package/src/client/builders/resetTokenBurnRateLimitBuilder.ts +0 -21
  654. package/src/client/builders/setTokenCircuitBreakerBuilder.ts +0 -40
  655. package/src/client/builders/setYieldingBankCircuitBreakerBuilder.ts +0 -37
  656. package/src/client/builders/updateLendingPositionConfigBuilder.ts +0 -33
  657. package/src/client/builders/updateTokenConfigurationBuilder.ts +0 -50
  658. package/src/client/builders/updateTokenMetadataBuilder.ts +0 -24
  659. package/src/client/builders/updateYieldingBankConfigBuilder.ts +0 -32
  660. package/src/client/builders/utils.ts +0 -26
  661. package/src/client/client.ts +0 -264
  662. package/src/client/externalLiquidityResolver.ts +0 -54
  663. package/src/client/index.ts +0 -20
  664. package/src/client/lendingPlatformClients.ts +0 -50
  665. package/src/client/pda.ts +0 -102
  666. package/src/client/plans/collectInterest.ts +0 -207
  667. package/src/client/plans/decreaseCarryPosition.ts +0 -226
  668. package/src/client/routes/collectInterest.ts +0 -56
  669. package/src/client/transaction.ts +0 -106
  670. package/src/client/types/builders.ts +0 -19
  671. package/src/client/types/enums.ts +0 -47
  672. package/src/client/types/general.ts +0 -117
  673. package/src/client/types/index.ts +0 -6
  674. package/src/client/types/ix.ts +0 -452
  675. package/src/client/types/planTypes/collectInterest.ts +0 -97
  676. package/src/client/types/planTypes/common.ts +0 -31
  677. package/src/client/types/planTypes/decreaseCarryPosition.ts +0 -134
  678. package/src/client/types/planTypes/index.ts +0 -3
  679. package/src/client/types/tx.ts +0 -409
  680. package/src/constants/configs/allocations.ts +0 -30
  681. package/src/constants/configs/carryTradePresets.ts +0 -164
  682. package/src/constants/configs/index.ts +0 -2
  683. package/src/constants/general.ts +0 -141
  684. package/src/constants/index.ts +0 -3
  685. package/src/constants/lycTokenMetadata.ts +0 -52
  686. package/src/decoders/decodeTransaction.ts +0 -319
  687. package/src/decoders/discriminators.ts +0 -10
  688. package/src/decoders/idlAccounts.ts +0 -75
  689. package/src/decoders/index.ts +0 -15
  690. package/src/decoders/innerCpis.ts +0 -262
  691. package/src/decoders/lycInstructionNames.ts +0 -73
  692. package/src/decoders/programIds.ts +0 -12
  693. package/src/decoders/solana.ts +0 -25
  694. package/src/decoders/transactionPayload.ts +0 -41
  695. package/src/decoders/types.ts +0 -60
  696. package/src/errors.ts +0 -195
  697. package/src/idl/long_yield_carry.ts +0 -14648
  698. package/src/index.ts +0 -10
  699. package/src/metrics/index.ts +0 -1
  700. package/src/metrics/protocolMetrics.ts +0 -976
  701. package/src/models/index.ts +0 -9
  702. package/src/models/lycToken.ts +0 -380
  703. package/src/models/yieldingBank.ts +0 -127
  704. package/src/services/allocation/allocationService.ts +0 -823
  705. package/src/services/allocation/index.ts +0 -2
  706. package/src/services/allocation/types.ts +0 -27
  707. package/src/services/carry/carryAllocationConfig.ts +0 -266
  708. package/src/services/carry/index.ts +0 -2
  709. package/src/services/carry/lycLendingPositionManager.ts +0 -167
  710. package/src/services/index.ts +0 -5
  711. package/src/services/lendingPosition/index.ts +0 -5
  712. package/src/services/lendingPosition/lendingPositionService.ts +0 -328
  713. package/src/services/rebalance/index.ts +0 -2
  714. package/src/services/rebalance/token/index.ts +0 -1
  715. package/src/services/rebalance/token/tokenRebalanceService.ts +0 -142
  716. package/src/services/rebalance/yieldingBank/index.ts +0 -3
  717. package/src/services/rebalance/yieldingBank/planner.ts +0 -215
  718. package/src/services/rebalance/yieldingBank/strategy.ts +0 -41
  719. package/src/services/rebalance/yieldingBank/types.ts +0 -41
  720. package/src/services/redemption/index.ts +0 -9
  721. package/src/services/redemption/redemptionService.ts +0 -758
  722. package/src/types/enriched.ts +0 -187
  723. package/src/types/index.ts +0 -1
  724. package/src/utils/cache.ts +0 -12
  725. package/src/utils/data.ts +0 -65
  726. package/src/utils/enrichment.ts +0 -330
  727. package/src/utils/feeDripMetrics.ts +0 -146
  728. package/src/utils/general.ts +0 -54
  729. package/src/utils/index.ts +0 -13
  730. package/src/utils/ix.ts +0 -227
  731. package/src/utils/lendingPosition.ts +0 -221
  732. package/src/utils/lookupTables.ts +0 -309
  733. package/src/utils/lycData.ts +0 -321
  734. package/src/utils/timelock.ts +0 -63
  735. package/src/utils/tokenFeeMath.ts +0 -25
  736. package/src/utils/transactions.ts +0 -109
  737. package/src/utils/yieldingBank.ts +0 -38
  738. package/tsconfig.json +0 -11
@@ -1,823 +0,0 @@
1
- import { type Address } from "@solana/kit";
2
- import { fromWeb3Pk, mints, toUiAmount } from "common";
3
- import { KAMINO_MAIN_MARKET } from "lending-platforms";
4
- import type { LendingPlatformData, ReserveBase, TokenIncentiveBase } from "lending-platforms";
5
- import type { IndexedLendingPosition, LYCToken } from "../../models/lycToken";
6
- import type { LYCYieldingBank } from "../../models/yieldingBank";
7
- import type { DebtAllocationTarget, DebtReallocation } from "./types";
8
-
9
- /**
10
- * Supported borrow tokens by registry symbol. Addresses are taken from
11
- * `mints` (common mint registry) when resolving candidates.
12
- */
13
- const BORROW_TOKEN_SYMBOLS = ["USDC", "PYUSD", "USDT", "CASH", "USDG", "USDS"] as const;
14
- const USDC_MINT = mints.get("USDC")!.address;
15
- const USD_STAR_MINT = mints.get("USD*")!.address;
16
-
17
- /**
18
- * Selection-only discount applied to USDC's effective borrow APY when the
19
- * token's yielding bank holds USD*. Borrowing USDC avoids the otherwise
20
- * required debt-mint → USDC swap and its occasional execution loss.
21
- */
22
- const USDC_BORROW_APY_BIAS = 0.005;
23
-
24
- /**
25
- * Discrete allocation steps for the per-position DP grid. 20 → 5% increments.
26
- * Complexity is O(positions × candidates × K²) — all synchronous, negligible.
27
- */
28
- const ALLOCATION_STEPS = 20;
29
-
30
- /**
31
- * Minimum borrow-APY improvement that justifies emitting a reallocation. Below
32
- * this, the rebalance is skipped — on-chain costs (flash-loan fee + swap
33
- * slippage + tx fees) eat marginal gains, and thrashing positions for a few
34
- * basis points adds noise without value. 0.025 = 250 bps on the position's APY.
35
- */
36
- const MIN_REALLOC_APY_IMPROVEMENT = 0.025;
37
-
38
- /**
39
- * Positions with debt below this threshold (in the borrowed token's UI units)
40
- * are dust — typically idle or near-closed slots — and are excluded from
41
- * optimization. Without this filter, dust slots generate phantom reallocations
42
- * with zero economic effect but real on-chain transaction costs.
43
- */
44
- const DUST_DEBT_THRESHOLD = 1.0;
45
-
46
- // ─── Internal types ────────────────────────────────────────────────────────
47
-
48
- interface ResolvedPosition {
49
- pool: Address;
50
- token: LYCToken;
51
- lendingPositionIndex: number;
52
- debtMint: Address;
53
- debtAmountUi: number;
54
- collateralReserve: ReserveBase;
55
- debtReserve: ReserveBase;
56
- currentBorrowApy: number;
57
- /** Borrow APY minus the supply incentive the collateral earns from this debt token. */
58
- currentEffectiveBorrowApy: number;
59
- /** Whether USDC should receive the selection-only borrow-rate discount. */
60
- biasTowardUsdc: boolean;
61
- }
62
-
63
- interface GroupCandidate {
64
- mint: Address;
65
- reserve: ReserveBase;
66
- /** Total debt already borrowed from this reserve across all positions in the group. */
67
- existingGroupDebt: number;
68
- /** Available borrow capacity in UI units — caps per-position allocations in the DP. */
69
- liquidityAvailableUi: number;
70
- }
71
-
72
- interface PositionMintAlloc {
73
- mint: Address;
74
- reserve: ReserveBase;
75
- amountUi: number;
76
- weightBps: number;
77
- borrowApy: number;
78
- supplyIncentiveApy: number;
79
- effectiveBorrowApy: number;
80
- selectionBorrowApy: number;
81
- }
82
-
83
- interface PositionOptimum {
84
- mints: PositionMintAlloc[];
85
- /** Debt-weighted average effective borrow APY (borrow − supply incentive) across all mints. */
86
- blendedEffectiveBorrowApy: number;
87
- /** Effective borrow APY after applying selection-only mint biases. */
88
- blendedSelectionBorrowApy: number;
89
- }
90
-
91
- // ─── LTV helpers ───────────────────────────────────────────────────────────
92
-
93
- /**
94
- * Returns the LTV (as a decimal) for a collateral/debt pair, using the
95
- * e-mode config if one exists for the pair, otherwise the base LTV.
96
- */
97
- function getPairLtv(collateralReserve: ReserveBase, debtReserveAddress: Address): number {
98
- const emode = collateralReserve.emodes?.find((e) => e.debtReserve === debtReserveAddress);
99
- return emode?.ltvPct ?? collateralReserve.ltvPct;
100
- }
101
-
102
- // ─── Log formatters ────────────────────────────────────────────────────────
103
-
104
- function mintSymbol(mint: Address): string {
105
- return mints.get(mint)?.symbol ?? `${mint.slice(0, 6)}…`;
106
- }
107
-
108
- function tokenLabel(pos: ResolvedPosition): string {
109
- return pos.token.label ?? pos.token.address.slice(0, 6);
110
- }
111
-
112
- function positionTag(pos: ResolvedPosition): string {
113
- return `${tokenLabel(pos)}#${pos.lendingPositionIndex}`;
114
- }
115
-
116
- function formatApy(x: number): string {
117
- return `${(x * 100).toFixed(3)}%`;
118
- }
119
-
120
- function formatApyDelta(x: number): string {
121
- const sign = x >= 0 ? "+" : "";
122
- return `${sign}${(x * 100).toFixed(3)}%`;
123
- }
124
-
125
- function formatAmount(x: number): string {
126
- return x.toLocaleString(undefined, { maximumFractionDigits: 2 });
127
- }
128
-
129
- function formatIncentive(inc: TokenIncentiveBase): string {
130
- const pair = inc.config.requiresPairReserve
131
- ? `pair=${inc.config.requiresPairReserve.slice(0, 6)}…`
132
- : "pair=none";
133
- const active = inc.active() ? "active" : "inactive";
134
- return (
135
- `type=${inc.config.incentiveType} ${pair} ` +
136
- `reward=${mintSymbol(inc.config.rewardMint)} apy=${formatApy(inc.apy())} ${active}`
137
- );
138
- }
139
-
140
- // ─── Service ───────────────────────────────────────────────────────────────
141
-
142
- export interface AllocationServiceOptions {
143
- /**
144
- * Receives diagnostic log messages. When omitted, the service is silent
145
- * (used by unit tests). Pass `console.log` from scripts to inspect per-pool
146
- * candidate evaluation, incentive eligibility, and the chosen allocation.
147
- */
148
- logger?: (message: string) => void;
149
- /**
150
- * Yielding-bank state used to identify tokens whose active bank holds USD*.
151
- * Without this data, allocation remains unbiased.
152
- */
153
- yieldingBanks?: readonly LYCYieldingBank[];
154
- }
155
-
156
- export class AllocationService {
157
- private readonly log: (message: string) => void;
158
- private readonly yieldingBanks: readonly LYCYieldingBank[];
159
-
160
- constructor(
161
- private readonly lpData: LendingPlatformData,
162
- options: AllocationServiceOptions = {}
163
- ) {
164
- this.log = options.logger ?? (() => {});
165
- this.yieldingBanks = options.yieldingBanks ?? [];
166
- }
167
-
168
- /**
169
- * Returns the debt mint with the highest pair-adjusted net APY
170
- * (supplyAPY − borrowAPY) for a given pool and collateral reserve.
171
- *
172
- * Use this when creating a new lending position to pick the optimal debt
173
- * mint rather than hardcoding a default.
174
- */
175
- async findOptimalDebtMint(
176
- pool: Address,
177
- collateralReserve: ReserveBase,
178
- token?: LYCToken
179
- ): Promise<{ mint: Address; symbol: string; borrowApy: number } | null> {
180
- const biasTowardUsdc = token ? this.tokenUsesUsdStarYieldingBank(token) : false;
181
- const candidates = await Promise.all(
182
- BORROW_TOKEN_SYMBOLS.map(async (symbol) => {
183
- const info = mints.get(symbol);
184
- if (!info) return null;
185
- const reserve = await this.fetchOptionalReserveByMint(pool, info.address);
186
- if (!reserve) return null;
187
- // TODO: revert to pair-adjusted rates once Kamino main-market incentive distortions are resolved.
188
- // Revert to:
189
- // const pairedBorrowApy = reserve.borrowAPY(collateralReserve.address);
190
- // const supplyIncentiveApy = collateralReserve.supplyAPY(reserve.address) - collateralReserve.supplyAPY();
191
- const isKaminoMain = pool === KAMINO_MAIN_MARKET;
192
- const pairedBorrowApy = isKaminoMain
193
- ? reserve.borrowAPY()
194
- : reserve.borrowAPY(collateralReserve.address);
195
- const supplyIncentiveApy = isKaminoMain
196
- ? 0
197
- : collateralReserve.supplyAPY(reserve.address) - collateralReserve.supplyAPY();
198
- const effectiveBorrowApy = pairedBorrowApy - supplyIncentiveApy;
199
- const selectionBorrowApy = this.applyUsdcBias(
200
- effectiveBorrowApy,
201
- info.address,
202
- biasTowardUsdc
203
- );
204
- const incentiveNote =
205
- supplyIncentiveApy > 0
206
- ? ` − ${formatApy(supplyIncentiveApy)} incentive = ${formatApy(effectiveBorrowApy)} effective`
207
- : "";
208
- const biasNote =
209
- selectionBorrowApy !== effectiveBorrowApy
210
- ? ` − ${formatApy(USDC_BORROW_APY_BIAS)} USDC bias = ${formatApy(selectionBorrowApy)} selection`
211
- : "";
212
- this.log(
213
- ` [findOptimalDebtMint] ${symbol.padEnd(6)} borrow ${formatApy(pairedBorrowApy)}${incentiveNote}${biasNote}`
214
- );
215
- return {
216
- mint: info.address,
217
- symbol,
218
- pairedBorrowApy,
219
- effectiveBorrowApy,
220
- selectionBorrowApy,
221
- };
222
- })
223
- );
224
-
225
- const valid = candidates.filter((c): c is NonNullable<typeof c> => c !== null);
226
- if (valid.length === 0) return null;
227
-
228
- valid.sort((a, b) => a.selectionBorrowApy - b.selectionBorrowApy);
229
- const best = valid[0];
230
- this.log(
231
- ` [findOptimalDebtMint] → ${best.symbol}` +
232
- ` (borrow ${formatApy(best.pairedBorrowApy)} effective ${formatApy(best.effectiveBorrowApy)}` +
233
- (best.selectionBorrowApy !== best.effectiveBorrowApy
234
- ? ` selection ${formatApy(best.selectionBorrowApy)}`
235
- : "") +
236
- `)`
237
- );
238
- return { mint: best.mint, symbol: best.symbol, borrowApy: best.effectiveBorrowApy };
239
- }
240
-
241
- /**
242
- * Groups all active lending positions by pool, then for each position in a
243
- * pool finds the allocation across supported borrow mints that minimises
244
- * that position's pair-adjusted borrow cost. Positions are optimised
245
- * independently — pair-incentive eligibility is keyed on the position's
246
- * (debt, collateral) pair, so positions with different collaterals can have
247
- * different optimal debt mints. (Utilization coupling between positions on
248
- * the same reserve is not modelled; pair-incentive deltas dominate marginal
249
- * utilization deltas at typical position sizes.)
250
- *
251
- * Returns one entry per position whose allocation would change.
252
- */
253
- async computeOptimalAllocations(tokens: LYCToken[]): Promise<DebtReallocation[]> {
254
- const positions = await this.resolveAllPositions(tokens);
255
- const poolGroups = this.groupByPool(positions);
256
- this.log(
257
- `[AllocationService] ${positions.length} active position${positions.length === 1 ? "" : "s"} across ${poolGroups.size} pool${poolGroups.size === 1 ? "" : "s"}`
258
- );
259
- const reallocations: DebtReallocation[] = [];
260
-
261
- for (const [pool, group] of poolGroups) {
262
- const groupReallocations = await this.processPoolGroup(pool, group);
263
- reallocations.push(...groupReallocations);
264
- }
265
-
266
- return reallocations;
267
- }
268
-
269
- // ─── Position resolution ─────────────────────────────────────────────────
270
-
271
- private async resolveAllPositions(tokens: LYCToken[]): Promise<ResolvedPosition[]> {
272
- const maybePositions = await Promise.all(
273
- tokens.flatMap((token) =>
274
- token.activeLendingPositions.map((lp) => this.resolvePosition(token, lp))
275
- )
276
- );
277
- return maybePositions.filter((p): p is ResolvedPosition => p !== null);
278
- }
279
-
280
- private async resolvePosition(
281
- token: LYCToken,
282
- { index, data: lp }: IndexedLendingPosition
283
- ): Promise<ResolvedPosition | null> {
284
- const pool = fromWeb3Pk(lp.pool);
285
- const debtAmountUi = toUiAmount(lp.accounting.debt.amount, lp.accounting.debt.decimals);
286
-
287
- // Skip dust slots — idle positions whose debt is too small for a
288
- // reallocation to recover its on-chain transaction cost.
289
- if (debtAmountUi < DUST_DEBT_THRESHOLD) return null;
290
-
291
- const [collateralReserve, debtReserve] = await Promise.all([
292
- this.lpData.fetchReserve(pool, fromWeb3Pk(lp.collateralReserve)),
293
- this.lpData.fetchReserve(pool, fromWeb3Pk(lp.debtReserve)),
294
- ]);
295
-
296
- if (!collateralReserve || !debtReserve) return null;
297
-
298
- return {
299
- pool,
300
- token,
301
- lendingPositionIndex: index,
302
- // `lp.accounting.debt.mint` is set at position creation and is NOT
303
- // updated when the debt is rebalanced into a different mint. The
304
- // debt reserve, by contrast, reflects the live borrow on-chain — so
305
- // that's the source of truth for which token is actually borrowed.
306
- debtMint: debtReserve.mint.mint,
307
- debtAmountUi,
308
- collateralReserve,
309
- debtReserve,
310
- // TODO: revert to pair-adjusted rates once Kamino main-market incentive distortions are resolved.
311
- // Revert to:
312
- // currentBorrowApy: debtReserve.borrowAPY(collateralReserve.address),
313
- // currentEffectiveBorrowApy:
314
- // debtReserve.borrowAPY(collateralReserve.address) -
315
- // (collateralReserve.supplyAPY(debtReserve.address) - collateralReserve.supplyAPY()),
316
- currentBorrowApy:
317
- pool === KAMINO_MAIN_MARKET
318
- ? debtReserve.borrowAPY()
319
- : debtReserve.borrowAPY(collateralReserve.address),
320
- currentEffectiveBorrowApy:
321
- pool === KAMINO_MAIN_MARKET
322
- ? debtReserve.borrowAPY()
323
- : debtReserve.borrowAPY(collateralReserve.address) -
324
- (collateralReserve.supplyAPY(debtReserve.address) - collateralReserve.supplyAPY()),
325
- biasTowardUsdc: this.tokenUsesUsdStarYieldingBank(token),
326
- };
327
- }
328
-
329
- private tokenUsesUsdStarYieldingBank(token: LYCToken): boolean {
330
- // A yielding-bank PDA is identified by its base mint + id. Match both so a
331
- // USD* holding in an unrelated global bank cannot influence this token.
332
- // `activeCarryPositions` also ensures the token has real shares in the bank,
333
- // rather than merely retaining an initialized but unused carry slot.
334
- return token.activeCarryPositions.some(({ data: carry }) =>
335
- this.yieldingBanks.some(
336
- (bank) =>
337
- bank.baseMint === fromWeb3Pk(carry.yieldingBaseMint) &&
338
- bank.id === carry.yieldingBankId &&
339
- bank.findAssetHolding(USD_STAR_MINT) !== null
340
- )
341
- );
342
- }
343
-
344
- private applyUsdcBias(effectiveBorrowApy: number, mint: Address, enabled: boolean): number {
345
- return enabled && mint === USDC_MINT
346
- ? effectiveBorrowApy - USDC_BORROW_APY_BIAS
347
- : effectiveBorrowApy;
348
- }
349
-
350
- private groupByPool(positions: ResolvedPosition[]): Map<Address, ResolvedPosition[]> {
351
- const groups = new Map<Address, ResolvedPosition[]>();
352
- for (const pos of positions) {
353
- if (!groups.has(pos.pool)) groups.set(pos.pool, []);
354
- groups.get(pos.pool)!.push(pos);
355
- }
356
- return groups;
357
- }
358
-
359
- // ─── Pool group processing ────────────────────────────────────────────────
360
-
361
- private async processPoolGroup(
362
- pool: Address,
363
- group: ResolvedPosition[]
364
- ): Promise<DebtReallocation[]> {
365
- this.log(`\n${"═".repeat(70)}`);
366
- this.log(
367
- `Pool ${pool.slice(0, 6)}… (${group.length} position${group.length === 1 ? "" : "s"})`
368
- );
369
- this.log(`${"─".repeat(70)}`);
370
- for (const pos of group) {
371
- this.log(
372
- ` ${positionTag(pos).padEnd(14)}` +
373
- ` collateral=${mintSymbol(pos.collateralReserve.mint.mint)}` +
374
- ` debt=${mintSymbol(pos.debtMint)} $${formatAmount(pos.debtAmountUi)}` +
375
- ` borrow ${formatApy(pos.currentBorrowApy)}`
376
- );
377
- }
378
-
379
- const existingDebtByMint = this.aggregateExistingDebtByMint(group);
380
- const candidates = await this.resolveGroupCandidates(pool, group, existingDebtByMint);
381
- if (candidates.length === 0) {
382
- this.log(" no borrow-token candidates resolved on this pool; skipping");
383
- return [];
384
- }
385
-
386
- this.logCandidates(group, candidates);
387
-
388
- const reallocations: DebtReallocation[] = [];
389
- for (const pos of group) {
390
- const realloc = this.evaluatePosition(pos, candidates);
391
- if (realloc !== null) reallocations.push(realloc);
392
- }
393
- return reallocations;
394
- }
395
-
396
- /**
397
- * Optimises a single position against the candidate set, logs the result,
398
- * applies the minimum-improvement gate, and returns a reallocation if one
399
- * should be emitted. Returns `null` when the position is already optimal,
400
- * the optimum doesn't beat current, or the gain is below threshold.
401
- *
402
- */
403
- private evaluatePosition(
404
- pos: ResolvedPosition,
405
- candidates: GroupCandidate[]
406
- ): DebtReallocation | null {
407
- const tag = positionTag(pos);
408
- const {
409
- mints: optimumMints,
410
- blendedEffectiveBorrowApy: optimumEffectiveBorrowApy,
411
- blendedSelectionBorrowApy: optimumSelectionBorrowApy,
412
- } = this.optimizePosition(pos, candidates);
413
- const currentSelectionBorrowApy = this.applyUsdcBias(
414
- pos.currentEffectiveBorrowApy,
415
- pos.debtMint,
416
- pos.biasTowardUsdc
417
- );
418
-
419
- this.log(`\n ── ${tag} ──`);
420
- const currentSupplyIncentive =
421
- pos.collateralReserve.supplyAPY(pos.debtReserve.address) - pos.collateralReserve.supplyAPY();
422
- const currentEffectiveNote =
423
- currentSupplyIncentive > 0
424
- ? ` − ${formatApy(currentSupplyIncentive)} incentive = ${formatApy(pos.currentEffectiveBorrowApy)} effective`
425
- : "";
426
- this.log(
427
- ` Current: ${mintSymbol(pos.debtMint)} $${formatAmount(pos.debtAmountUi)}` +
428
- ` borrow ${formatApy(pos.currentBorrowApy)}${currentEffectiveNote}`
429
- );
430
- this.log(
431
- ` Optimum: effective borrow ${formatApy(optimumEffectiveBorrowApy)}` +
432
- (optimumSelectionBorrowApy !== optimumEffectiveBorrowApy
433
- ? ` selection ${formatApy(optimumSelectionBorrowApy)}`
434
- : "")
435
- );
436
- for (const m of optimumMints) {
437
- const incentiveNote =
438
- m.supplyIncentiveApy > 0
439
- ? ` − ${formatApy(m.supplyIncentiveApy)} incentive = ${formatApy(m.effectiveBorrowApy)} effective`
440
- : "";
441
- const biasNote =
442
- m.selectionBorrowApy !== m.effectiveBorrowApy
443
- ? ` − ${formatApy(USDC_BORROW_APY_BIAS)} USDC bias = ${formatApy(m.selectionBorrowApy)} selection`
444
- : "";
445
- this.log(
446
- ` ${mintSymbol(m.mint).padEnd(6)} ${(m.weightBps / 100).toFixed(0).padStart(3)}%` +
447
- ` $${formatAmount(m.amountUi)} borrow ${formatApy(m.borrowApy)}${incentiveNote}${biasNote}`
448
- );
449
- }
450
-
451
- const isAlreadyOptimal =
452
- optimumMints.length === 1 &&
453
- optimumMints[0].mint === pos.debtMint &&
454
- optimumMints[0].weightBps === 10_000;
455
- if (isAlreadyOptimal) {
456
- this.log(` → No change (already optimal)`);
457
- return null;
458
- }
459
-
460
- if (optimumSelectionBorrowApy >= currentSelectionBorrowApy) {
461
- this.log(` → No change (optimum effective borrow rate does not beat current)`);
462
- return null;
463
- }
464
-
465
- const improvement = currentSelectionBorrowApy - optimumSelectionBorrowApy;
466
- if (improvement < MIN_REALLOC_APY_IMPROVEMENT) {
467
- this.log(
468
- ` → No change (improvement ${formatApyDelta(improvement)}` +
469
- ` below ${formatApyDelta(MIN_REALLOC_APY_IMPROVEMENT)} threshold)`
470
- );
471
- return null;
472
- }
473
- this.log(
474
- ` → Rebalancing (effective borrow rate improves by ${formatApyDelta(improvement)})`
475
- );
476
-
477
- const targets: DebtAllocationTarget[] = optimumMints.map((m) => ({
478
- mint: m.mint,
479
- amountUi: m.amountUi,
480
- weightBps: m.weightBps,
481
- }));
482
-
483
- // Build fallback single-mint options: every candidate that beats current,
484
- // sorted by effective borrow APY ascending, excluding the primary target
485
- // mint(s) already in `targets`.
486
- const isKaminoMain = pos.pool === KAMINO_MAIN_MARKET;
487
- const baseSupplyApy = pos.collateralReserve.supplyAPY();
488
- const primaryMints = new Set(targets.map((t) => t.mint));
489
- const fallbackTargets: DebtAllocationTarget[][] = candidates
490
- .map(({ mint, reserve }) => {
491
- if (primaryMints.has(mint)) return null;
492
- const supplyIncentiveApy = isKaminoMain
493
- ? 0
494
- : pos.collateralReserve.supplyAPY(reserve.address) - baseSupplyApy;
495
- const borrowApy = isKaminoMain
496
- ? reserve.simulateNewBorrowAPY({ debtChange: pos.debtAmountUi })
497
- : reserve.simulateNewBorrowAPY(
498
- { debtChange: pos.debtAmountUi },
499
- pos.collateralReserve.address
500
- );
501
- const effectiveBorrowApy = borrowApy - supplyIncentiveApy;
502
- const selectionBorrowApy = this.applyUsdcBias(effectiveBorrowApy, mint, pos.biasTowardUsdc);
503
- if (selectionBorrowApy >= currentSelectionBorrowApy) return null;
504
- return {
505
- selectionBorrowApy,
506
- target: {
507
- mint,
508
- amountUi: pos.debtAmountUi,
509
- weightBps: 10_000,
510
- } satisfies DebtAllocationTarget,
511
- };
512
- })
513
- .filter((x): x is NonNullable<typeof x> => x !== null)
514
- .sort((a, b) => a.selectionBorrowApy - b.selectionBorrowApy)
515
- .map((x) => [x.target]);
516
-
517
- return {
518
- token: pos.token.address,
519
- lendingPositionIndex: pos.lendingPositionIndex,
520
- currentDebtMint: pos.debtMint,
521
- currentDebtAmountUi: pos.debtAmountUi,
522
- currentBorrowApy: pos.currentBorrowApy,
523
- currentSupplyIncentiveApy: currentSupplyIncentive,
524
- projectedBorrowApy: optimumEffectiveBorrowApy,
525
- targets,
526
- fallbackTargets,
527
- };
528
- }
529
-
530
- /**
531
- * Logs, in this order:
532
- * 1. Each collateral reserve in the pool group + its incentives (once).
533
- * 2. Each candidate debt reserve: base borrow APY, utilization, and its
534
- * borrow-side incentives (once).
535
- * 3. A net-APY matrix (candidate rows × collateral columns) showing the
536
- * pair-adjusted supply APY, borrow APY, and net APY = supply − borrow.
537
- * The matrix answers "should I borrow USDS or USDG against cbBTC?" at a
538
- * glance — compare rows within the cbBTC column.
539
- *
540
- * The matrix uses `supplyAPY(debtReserve)` and `borrowAPY(supplyReserve)`,
541
- * which include pair-gated incentives. A `★` marks rows where a pair
542
- * incentive activates (supplyApy or borrowApy differs from the base).
543
- */
544
- private logCandidates(group: ResolvedPosition[], candidates: GroupCandidate[]) {
545
- const collateralReserves = new Map<Address, ReserveBase>();
546
- for (const pos of group) {
547
- collateralReserves.set(pos.collateralReserve.address, pos.collateralReserve);
548
- }
549
-
550
- this.log(`\nCollateral reserves:`);
551
- for (const r of collateralReserves.values()) {
552
- const activeIncentives = (r.incentives ?? []).filter((i) => i.active());
553
- const inactiveCount = (r.incentives ?? []).length - activeIncentives.length;
554
- this.log(
555
- ` ${mintSymbol(r.mint.mint).padEnd(8)} base supply ${formatApy(r.supplyAPY())}` +
556
- (activeIncentives.length > 0
557
- ? ` +${activeIncentives.length} active incentive${activeIncentives.length === 1 ? "" : "s"}`
558
- : "") +
559
- (inactiveCount > 0 ? ` (${inactiveCount} inactive)` : "")
560
- );
561
- for (const inc of activeIncentives) {
562
- this.log(` ${formatIncentive(inc)}`);
563
- }
564
- }
565
-
566
- this.log(`\nDebt candidates:`);
567
- for (const c of candidates) {
568
- const activeIncentives = (c.reserve.incentives ?? []).filter((i) => i.active());
569
- const inactiveCount = (c.reserve.incentives ?? []).length - activeIncentives.length;
570
- this.log(
571
- ` ${mintSymbol(c.mint).padEnd(8)} borrow ${formatApy(c.reserve.borrowAPY())}` +
572
- ` util ${(c.reserve.utilizationRatePct() * 100).toFixed(1)}%` +
573
- ` capacity $${formatAmount(c.liquidityAvailableUi)}` +
574
- ` group debt $${formatAmount(c.existingGroupDebt)}` +
575
- (activeIncentives.length > 0
576
- ? ` +${activeIncentives.length} active incentive${activeIncentives.length === 1 ? "" : "s"}`
577
- : " no incentives") +
578
- (inactiveCount > 0 ? ` (${inactiveCount} inactive)` : "")
579
- );
580
- for (const inc of activeIncentives) {
581
- this.log(` ${formatIncentive(inc)}`);
582
- }
583
- }
584
-
585
- this.logBorrowRateMatrix(collateralReserves, candidates);
586
- }
587
-
588
- private logBorrowRateMatrix(
589
- collateralReserves: Map<Address, ReserveBase>,
590
- candidates: GroupCandidate[]
591
- ) {
592
- const collateralList = [...collateralReserves.values()];
593
- const symW = 8;
594
- const borrowW = 8;
595
- const cellW = 9;
596
-
597
- this.log(`\nBorrow rate matrix (pair-adjusted ★ = pair incentive changes rate)`);
598
- const header =
599
- ` ${"Debt".padEnd(symW)} ${"Base".padStart(borrowW)}` +
600
- collateralList.map((r) => `vs ${mintSymbol(r.mint.mint)}`.padStart(cellW + 3)).join("");
601
- this.log(header);
602
-
603
- for (const c of candidates) {
604
- const baseBorrow = c.reserve.borrowAPY();
605
- const cells = collateralList.map((coll) => {
606
- const pairedBorrow = c.reserve.borrowAPY(coll.address);
607
- const pairedSupply = coll.supplyAPY(c.reserve.address);
608
- const pairActive = pairedBorrow !== baseBorrow || pairedSupply !== coll.supplyAPY();
609
- return `${formatApy(pairedBorrow).padStart(cellW)} ${pairActive ? "★" : " "}`;
610
- });
611
- this.log(
612
- ` ${mintSymbol(c.mint).padEnd(symW)} ${formatApy(baseBorrow).padStart(borrowW)}` +
613
- cells.join(" ")
614
- );
615
- }
616
- }
617
-
618
- private aggregateExistingDebtByMint(group: ResolvedPosition[]): Map<Address, number> {
619
- const existingDebtByMint = new Map<Address, number>();
620
- for (const pos of group) {
621
- existingDebtByMint.set(
622
- pos.debtMint,
623
- (existingDebtByMint.get(pos.debtMint) ?? 0) + pos.debtAmountUi
624
- );
625
- }
626
- return existingDebtByMint;
627
- }
628
-
629
- private async resolveGroupCandidates(
630
- pool: Address,
631
- group: ResolvedPosition[],
632
- existingDebtByMint: Map<Address, number>
633
- ): Promise<GroupCandidate[]> {
634
- // Reuse already-fetched reserves where possible to avoid redundant RPC calls
635
- const fetchedByMint = new Map<Address, ReserveBase>(
636
- group.map((p) => [p.debtMint, p.debtReserve])
637
- );
638
-
639
- const results = await Promise.all(
640
- BORROW_TOKEN_SYMBOLS.map(async (symbol) => {
641
- const info = mints.get(symbol);
642
- if (!info) {
643
- throw new Error(
644
- `AllocationService: borrow token symbol "${symbol}" not found in mint registry`
645
- );
646
- }
647
- const mint = info.address;
648
- const reserve =
649
- fetchedByMint.get(mint) ?? (await this.fetchOptionalReserveByMint(pool, mint));
650
- if (!reserve) return;
651
- return {
652
- mint,
653
- reserve,
654
- existingGroupDebt: existingDebtByMint.get(mint) ?? 0,
655
- liquidityAvailableUi: reserve.liquidityAvailable(),
656
- } satisfies GroupCandidate;
657
- })
658
- );
659
-
660
- return results.filter((c): c is GroupCandidate => Boolean(c));
661
- }
662
-
663
- private async fetchOptionalReserveByMint(
664
- pool: Address,
665
- mint: Address
666
- ): Promise<ReserveBase | null> {
667
- try {
668
- return await this.lpData.fetchReserveByMint(pool, mint);
669
- } catch (error) {
670
- if (error instanceof Error && error.message === `Unable to find reserve by mint ${mint}`) {
671
- this.log(` (${mintSymbol(mint)} not listed on this pool — skipping)`);
672
- return null;
673
- }
674
- throw error;
675
- }
676
- }
677
-
678
- // ─── Per-position DP optimization ─────────────────────────────────────────
679
-
680
- /**
681
- * Finds the allocation of `pos.debtAmountUi` across `candidates` that
682
- * MAXIMISES this position's pair-adjusted net APY (supplyApy − borrowApy)
683
- * using DP over a discrete grid of size K = ALLOCATION_STEPS.
684
- *
685
- * Both legs are pair-adjusted with this position's own collateral reserve,
686
- * since incentive eligibility is keyed on the (debt, collateral) pair. This
687
- * matters because some pair incentives (e.g. USDG★cbBTC) act on the supply
688
- * side — minimising borrow cost alone would miss them.
689
- *
690
- * For candidate `i` at step `n`:
691
- * target = n × stepSize
692
- * posExisting = pos.debtAmountUi if pos.debtMint == candidate.mint else 0
693
- * debtChange = target − posExisting
694
- * borrowApy = simulateNewBorrowAPY({debtChange}, pos.collateralReserve)
695
- * supplyApy = pos.collateralReserve.supplyAPY(reserve.address)
696
- *
697
- * The DP minimises Σ target × (borrowApy − supplyApy) — equivalent to
698
- * maximising debt-weighted net APY. Utilization coupling with sibling
699
- * positions is not modelled; the simulator only sees this position's
700
- * marginal change.
701
- */
702
- private optimizePosition(pos: ResolvedPosition, candidates: GroupCandidate[]): PositionOptimum {
703
- const K = ALLOCATION_STEPS;
704
- const stepSize = pos.debtAmountUi / K;
705
-
706
- const baseSupplyApy = pos.collateralReserve.supplyAPY();
707
-
708
- // TODO: revert to pair-adjusted rates once Kamino main-market incentive distortions are resolved.
709
- // In costGrid: revert borrowApy to reserve.simulateNewBorrowAPY({ debtChange }, pos.collateralReserve.address)
710
- // and supplyIncentiveApy to pos.collateralReserve.supplyAPY(reserve.address) - baseSupplyApy.
711
- // In mintAllocs: same reversions for borrowApy and supplyIncentiveApy.
712
- const isKaminoMain = pos.pool === KAMINO_MAIN_MARKET;
713
- const costGrid = candidates.map(({ reserve, mint }) => {
714
- const posExisting = mint === pos.debtMint ? pos.debtAmountUi : 0;
715
- const supplyIncentiveApy = isKaminoMain
716
- ? 0
717
- : pos.collateralReserve.supplyAPY(reserve.address) - baseSupplyApy;
718
- return Array.from({ length: K + 1 }, (_, n) => {
719
- const target = n * stepSize;
720
- const debtChange = target - posExisting;
721
- const borrowApy = isKaminoMain
722
- ? reserve.simulateNewBorrowAPY({ debtChange })
723
- : reserve.simulateNewBorrowAPY({ debtChange }, pos.collateralReserve.address);
724
- const effectiveBorrowApy = borrowApy - supplyIncentiveApy;
725
- return target * this.applyUsdcBias(effectiveBorrowApy, mint, pos.biasTowardUsdc);
726
- });
727
- });
728
-
729
- // Cap each candidate's DP steps by:
730
- // 1. Reserve liquidity (can't borrow more than what's available)
731
- // 2. LTV-ratio feasibility: if the candidate pair has lower LTV than the
732
- // current pair, the position can only hold (candidateLtv/currentLtv)
733
- // of its current debt in that token. posExisting offsets the cap since
734
- // existing debt in the same token needs no new capacity.
735
- const currentPairLtv = getPairLtv(pos.collateralReserve, pos.debtReserve.address);
736
- const maxStepsPerCandidate = candidates.map(({ mint, reserve, liquidityAvailableUi }) => {
737
- const posExisting = mint === pos.debtMint ? pos.debtAmountUi : 0;
738
- const candidateLtv = getPairLtv(pos.collateralReserve, reserve.address);
739
- // Max debt in candidate token = current_debt * (candidateLtv / currentLtv),
740
- // assuming position is at current LTV and both tokens have ~equal price.
741
- const ltvCapUi =
742
- currentPairLtv > 0 ? (pos.debtAmountUi * candidateLtv) / currentPairLtv : pos.debtAmountUi;
743
- const effectiveCap = posExisting + Math.min(ltvCapUi, liquidityAvailableUi);
744
- return Math.min(K, Math.floor(effectiveCap / stepSize));
745
- });
746
- const optimalSteps = this.runDp(costGrid, candidates.length, K, maxStepsPerCandidate);
747
-
748
- // Keep the real APY separate from the biased selection score. The bias
749
- // models avoided debt-mint → USDC swap losses; it is not an actual lending
750
- // rate and therefore must not be reported as the projected borrow APY.
751
- let blendedEffectiveBorrowApy = 0;
752
- let blendedSelectionBorrowApy = 0;
753
- const mintAllocs: PositionMintAlloc[] = optimalSteps
754
- .map((n, i) => {
755
- const { mint, reserve } = candidates[i];
756
- const amountUi = n * stepSize;
757
- const posExisting = mint === pos.debtMint ? pos.debtAmountUi : 0;
758
- const borrowApy = isKaminoMain
759
- ? reserve.simulateNewBorrowAPY({ debtChange: amountUi - posExisting })
760
- : reserve.simulateNewBorrowAPY(
761
- { debtChange: amountUi - posExisting },
762
- pos.collateralReserve.address
763
- );
764
- const supplyIncentiveApy = isKaminoMain
765
- ? 0
766
- : pos.collateralReserve.supplyAPY(reserve.address) - baseSupplyApy;
767
- const effectiveBorrowApy = borrowApy - supplyIncentiveApy;
768
- const selectionBorrowApy = this.applyUsdcBias(effectiveBorrowApy, mint, pos.biasTowardUsdc);
769
- if (pos.debtAmountUi > 0) {
770
- blendedEffectiveBorrowApy += (amountUi / pos.debtAmountUi) * effectiveBorrowApy;
771
- blendedSelectionBorrowApy += (amountUi / pos.debtAmountUi) * selectionBorrowApy;
772
- }
773
- return {
774
- mint,
775
- reserve,
776
- amountUi,
777
- weightBps: Math.round((n / K) * 10_000),
778
- borrowApy,
779
- supplyIncentiveApy,
780
- effectiveBorrowApy,
781
- selectionBorrowApy,
782
- };
783
- })
784
- .filter((m) => m.weightBps > 0);
785
-
786
- return { mints: mintAllocs, blendedEffectiveBorrowApy, blendedSelectionBorrowApy };
787
- }
788
-
789
- private runDp(
790
- costGrid: number[][],
791
- numCandidates: number,
792
- K: number,
793
- maxStepsPerCandidate?: number[]
794
- ): number[] {
795
- type DPState = { minCost: number; steps: number[] };
796
-
797
- let dp: DPState[] = Array.from({ length: K + 1 }, (_, s) =>
798
- s === 0 ? { minCost: 0, steps: [] } : { minCost: Infinity, steps: [] }
799
- );
800
-
801
- for (let i = 0; i < numCandidates; i++) {
802
- const maxN = maxStepsPerCandidate ? maxStepsPerCandidate[i] : K;
803
- const next: DPState[] = Array.from({ length: K + 1 }, () => ({
804
- minCost: Infinity,
805
- steps: [],
806
- }));
807
-
808
- for (let s = 0; s <= K; s++) {
809
- if (dp[s].minCost === Infinity) continue;
810
- for (let n = 0; n <= Math.min(maxN, K - s); n++) {
811
- const cost = dp[s].minCost + costGrid[i][n];
812
- if (cost < next[s + n].minCost) {
813
- next[s + n] = { minCost: cost, steps: [...dp[s].steps, n] };
814
- }
815
- }
816
- }
817
-
818
- dp = next;
819
- }
820
-
821
- return dp[K].steps;
822
- }
823
- }