@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.
- package/.env.example +11 -0
- package/README.md +207 -0
- package/dist/sdks/long-yield-carry/scripts/asyncBurn.d.ts +1 -0
- package/dist/sdks/long-yield-carry/scripts/asyncBurn.js +117 -0
- package/dist/sdks/long-yield-carry/scripts/burnToken.d.ts +1 -0
- package/dist/sdks/long-yield-carry/scripts/burnToken.js +98 -0
- package/dist/sdks/long-yield-carry/scripts/claimIncentives.d.ts +1 -0
- package/dist/sdks/long-yield-carry/scripts/claimIncentives.js +108 -0
- package/dist/sdks/long-yield-carry/scripts/closeCpiPlans.d.ts +1 -0
- package/dist/sdks/long-yield-carry/scripts/closeCpiPlans.js +93 -0
- package/dist/sdks/long-yield-carry/scripts/collectInterest.d.ts +1 -0
- package/dist/sdks/long-yield-carry/scripts/collectInterest.js +164 -0
- package/dist/sdks/long-yield-carry/scripts/collectProtocolFees.d.ts +1 -0
- package/dist/sdks/long-yield-carry/scripts/collectProtocolFees.js +120 -0
- package/dist/sdks/long-yield-carry/scripts/computeOptimalAllocations.d.ts +1 -0
- package/dist/sdks/long-yield-carry/scripts/computeOptimalAllocations.js +84 -0
- package/dist/sdks/long-yield-carry/scripts/createToken.d.ts +1 -0
- package/dist/sdks/long-yield-carry/scripts/createToken.js +76 -0
- package/dist/sdks/long-yield-carry/scripts/createTokenLendingPosition.d.ts +1 -0
- package/dist/sdks/long-yield-carry/scripts/createTokenLendingPosition.js +157 -0
- package/dist/sdks/long-yield-carry/scripts/createYieldingBank.d.ts +1 -0
- package/dist/sdks/long-yield-carry/scripts/createYieldingBank.js +69 -0
- package/dist/sdks/long-yield-carry/scripts/decreaseCarryPositions.d.ts +1 -0
- package/dist/sdks/long-yield-carry/scripts/decreaseCarryPositions.js +247 -0
- package/dist/sdks/long-yield-carry/scripts/depositUnlentCollateral.d.ts +1 -0
- package/dist/sdks/long-yield-carry/scripts/depositUnlentCollateral.js +90 -0
- package/dist/sdks/long-yield-carry/scripts/emergency/deleverageAll.d.ts +1 -0
- package/dist/sdks/long-yield-carry/scripts/emergency/deleverageAll.js +202 -0
- package/dist/sdks/long-yield-carry/scripts/emergency/triggerCircuitBreaker.d.ts +1 -0
- package/dist/sdks/long-yield-carry/scripts/emergency/triggerCircuitBreaker.js +68 -0
- package/dist/sdks/long-yield-carry/scripts/env.d.ts +1 -0
- package/dist/sdks/long-yield-carry/scripts/env.js +8 -0
- package/dist/sdks/long-yield-carry/scripts/findTxs.d.ts +1 -0
- package/dist/sdks/long-yield-carry/scripts/findTxs.js +143 -0
- package/dist/sdks/long-yield-carry/scripts/increaseCarryPositions.d.ts +1 -0
- package/dist/sdks/long-yield-carry/scripts/increaseCarryPositions.js +112 -0
- package/dist/sdks/long-yield-carry/scripts/inspect/format.d.ts +13 -0
- package/dist/sdks/long-yield-carry/scripts/inspect/format.js +363 -0
- package/dist/sdks/long-yield-carry/scripts/inspect.d.ts +1 -0
- package/dist/sdks/long-yield-carry/scripts/inspect.js +108 -0
- package/dist/sdks/long-yield-carry/scripts/localUtils.d.ts +53 -0
- package/dist/sdks/long-yield-carry/scripts/localUtils.js +191 -0
- package/dist/sdks/long-yield-carry/scripts/mintToken.d.ts +1 -0
- package/dist/sdks/long-yield-carry/scripts/mintToken.js +103 -0
- package/dist/sdks/long-yield-carry/scripts/processAsyncBurns.d.ts +1 -0
- package/dist/sdks/long-yield-carry/scripts/processAsyncBurns.js +76 -0
- package/dist/sdks/long-yield-carry/scripts/rebalanceToken.d.ts +1 -0
- package/dist/sdks/long-yield-carry/scripts/rebalanceToken.js +210 -0
- package/dist/sdks/long-yield-carry/scripts/rebalanceYieldingBank.d.ts +1 -0
- package/dist/sdks/long-yield-carry/scripts/rebalanceYieldingBank.js +149 -0
- package/dist/sdks/long-yield-carry/scripts/recollateralizeLoss.d.ts +1 -0
- package/dist/sdks/long-yield-carry/scripts/recollateralizeLoss.js +64 -0
- package/dist/sdks/long-yield-carry/scripts/refresh.d.ts +1 -0
- package/dist/sdks/long-yield-carry/scripts/refresh.js +101 -0
- package/dist/sdks/long-yield-carry/scripts/updateFees.d.ts +1 -0
- package/dist/sdks/long-yield-carry/scripts/updateFees.js +369 -0
- package/dist/sdks/long-yield-carry/scripts/updateGeneralLut.d.ts +1 -0
- package/dist/sdks/long-yield-carry/scripts/updateGeneralLut.js +27 -0
- package/dist/sdks/long-yield-carry/scripts/updateLendingPositionConfig.d.ts +1 -0
- package/dist/sdks/long-yield-carry/scripts/updateLendingPositionConfig.js +127 -0
- package/dist/sdks/long-yield-carry/scripts/updateTokenLuts.d.ts +1 -0
- package/dist/sdks/long-yield-carry/scripts/updateTokenLuts.js +27 -0
- package/dist/sdks/long-yield-carry/scripts/updateTokenMetadata.d.ts +1 -0
- package/dist/sdks/long-yield-carry/scripts/updateTokenMetadata.js +194 -0
- package/dist/sdks/long-yield-carry/scripts/updateYieldingBankConfig.d.ts +1 -0
- package/dist/sdks/long-yield-carry/scripts/updateYieldingBankConfig.js +84 -0
- package/dist/sdks/long-yield-carry/scripts/withdrawUnlentCollateral.d.ts +1 -0
- package/dist/sdks/long-yield-carry/scripts/withdrawUnlentCollateral.js +140 -0
- package/dist/sdks/long-yield-carry/src/client/account.d.ts +152 -0
- package/dist/sdks/long-yield-carry/src/client/account.js +349 -0
- package/dist/sdks/long-yield-carry/src/client/builders/args.d.ts +299 -0
- package/dist/sdks/long-yield-carry/src/client/builders/args.js +2 -0
- package/dist/sdks/long-yield-carry/src/client/builders/asyncBurnBuilder.d.ts +20 -0
- package/dist/sdks/long-yield-carry/src/client/builders/asyncBurnBuilder.js +212 -0
- package/dist/sdks/long-yield-carry/src/client/builders/base.d.ts +77 -0
- package/dist/sdks/long-yield-carry/src/client/builders/base.js +191 -0
- package/dist/sdks/long-yield-carry/src/client/builders/burnTokenBuilder.d.ts +18 -0
- package/dist/sdks/long-yield-carry/src/client/builders/burnTokenBuilder.js +165 -0
- package/dist/sdks/long-yield-carry/src/client/builders/claimIncentivesBuilder.d.ts +9 -0
- package/dist/sdks/long-yield-carry/src/client/builders/claimIncentivesBuilder.js +135 -0
- package/dist/sdks/long-yield-carry/src/client/builders/collectFeesBuilder.d.ts +14 -0
- package/dist/sdks/long-yield-carry/src/client/builders/collectFeesBuilder.js +50 -0
- package/dist/sdks/long-yield-carry/src/client/builders/collectInterestBuilder.d.ts +8 -0
- package/dist/sdks/long-yield-carry/src/client/builders/collectInterestBuilder.js +86 -0
- package/dist/sdks/long-yield-carry/src/client/builders/createCpiPlanBuilder.d.ts +6 -0
- package/dist/sdks/long-yield-carry/src/client/builders/createCpiPlanBuilder.js +22 -0
- package/dist/sdks/long-yield-carry/src/client/builders/createTokenBuilder.d.ts +7 -0
- package/dist/sdks/long-yield-carry/src/client/builders/createTokenBuilder.js +64 -0
- package/dist/sdks/long-yield-carry/src/client/builders/createTokenLendingPositionBuilder.d.ts +10 -0
- package/dist/sdks/long-yield-carry/src/client/builders/createTokenLendingPositionBuilder.js +138 -0
- package/dist/sdks/long-yield-carry/src/client/builders/createYieldingBankAllocationBuilder.d.ts +7 -0
- package/dist/sdks/long-yield-carry/src/client/builders/createYieldingBankAllocationBuilder.js +29 -0
- package/dist/sdks/long-yield-carry/src/client/builders/createYieldingBankBuilder.d.ts +7 -0
- package/dist/sdks/long-yield-carry/src/client/builders/createYieldingBankBuilder.js +39 -0
- package/dist/sdks/long-yield-carry/src/client/builders/decreaseCarryPositionBuilder.d.ts +30 -0
- package/dist/sdks/long-yield-carry/src/client/builders/decreaseCarryPositionBuilder.js +99 -0
- package/dist/sdks/long-yield-carry/src/client/builders/depositUnlentCollateralBuilder.d.ts +8 -0
- package/dist/sdks/long-yield-carry/src/client/builders/depositUnlentCollateralBuilder.js +64 -0
- package/dist/sdks/long-yield-carry/src/client/builders/increaseCarryPositionBuilder.d.ts +8 -0
- package/dist/sdks/long-yield-carry/src/client/builders/increaseCarryPositionBuilder.js +73 -0
- package/dist/sdks/long-yield-carry/src/client/builders/index.d.ts +28 -0
- package/dist/sdks/long-yield-carry/src/client/builders/index.js +62 -0
- package/dist/sdks/long-yield-carry/src/client/builders/mintTokenBuilder.d.ts +8 -0
- package/dist/sdks/long-yield-carry/src/client/builders/mintTokenBuilder.js +95 -0
- package/dist/sdks/long-yield-carry/src/client/builders/rebalanceTokenBuilder.d.ts +11 -0
- package/dist/sdks/long-yield-carry/src/client/builders/rebalanceTokenBuilder.js +255 -0
- package/dist/sdks/long-yield-carry/src/client/builders/rebalanceYieldingBankBuilder.d.ts +8 -0
- package/dist/sdks/long-yield-carry/src/client/builders/rebalanceYieldingBankBuilder.js +75 -0
- package/dist/sdks/long-yield-carry/src/client/builders/recollateralizeLossBuilder.d.ts +12 -0
- package/dist/sdks/long-yield-carry/src/client/builders/recollateralizeLossBuilder.js +220 -0
- package/dist/sdks/long-yield-carry/src/client/builders/refreshTokenStateBuilder.d.ts +9 -0
- package/dist/sdks/long-yield-carry/src/client/builders/refreshTokenStateBuilder.js +112 -0
- package/dist/sdks/long-yield-carry/src/client/builders/refreshTokensBuilder.d.ts +9 -0
- package/dist/sdks/long-yield-carry/src/client/builders/refreshTokensBuilder.js +59 -0
- package/dist/sdks/long-yield-carry/src/client/builders/refreshYieldingBankBuilder.d.ts +8 -0
- package/dist/sdks/long-yield-carry/src/client/builders/refreshYieldingBankBuilder.js +29 -0
- package/dist/sdks/long-yield-carry/src/client/builders/resetTokenBurnRateLimitBuilder.d.ts +7 -0
- package/dist/sdks/long-yield-carry/src/client/builders/resetTokenBurnRateLimitBuilder.js +19 -0
- package/dist/sdks/long-yield-carry/src/client/builders/setTokenCircuitBreakerBuilder.d.ts +11 -0
- package/dist/sdks/long-yield-carry/src/client/builders/setTokenCircuitBreakerBuilder.js +31 -0
- package/dist/sdks/long-yield-carry/src/client/builders/setYieldingBankCircuitBreakerBuilder.d.ts +8 -0
- package/dist/sdks/long-yield-carry/src/client/builders/setYieldingBankCircuitBreakerBuilder.js +28 -0
- package/dist/sdks/long-yield-carry/src/client/builders/updateLendingPositionConfigBuilder.d.ts +10 -0
- package/dist/sdks/long-yield-carry/src/client/builders/updateLendingPositionConfigBuilder.js +30 -0
- package/dist/sdks/long-yield-carry/src/client/builders/updateTokenConfigurationBuilder.d.ts +11 -0
- package/dist/sdks/long-yield-carry/src/client/builders/updateTokenConfigurationBuilder.js +47 -0
- package/dist/sdks/long-yield-carry/src/client/builders/updateTokenMetadataBuilder.d.ts +7 -0
- package/dist/sdks/long-yield-carry/src/client/builders/updateTokenMetadataBuilder.js +24 -0
- package/dist/sdks/long-yield-carry/src/client/builders/updateYieldingBankConfigBuilder.d.ts +10 -0
- package/dist/sdks/long-yield-carry/src/client/builders/updateYieldingBankConfigBuilder.js +31 -0
- package/dist/sdks/long-yield-carry/src/client/builders/utils.d.ts +4 -0
- package/dist/sdks/long-yield-carry/src/client/builders/utils.js +20 -0
- package/dist/sdks/long-yield-carry/src/client/client.d.ts +115 -0
- package/dist/sdks/long-yield-carry/src/client/client.js +166 -0
- package/dist/sdks/long-yield-carry/src/client/externalLiquidityResolver.d.ts +13 -0
- package/dist/sdks/long-yield-carry/src/client/externalLiquidityResolver.js +34 -0
- package/dist/sdks/long-yield-carry/src/client/index.d.ts +10 -0
- package/dist/sdks/long-yield-carry/src/client/index.js +33 -0
- package/dist/sdks/long-yield-carry/src/client/lendingPlatformClients.d.ts +19 -0
- package/dist/sdks/long-yield-carry/src/client/lendingPlatformClients.js +33 -0
- package/dist/sdks/long-yield-carry/src/client/pda.d.ts +33 -0
- package/dist/sdks/long-yield-carry/src/client/pda.js +79 -0
- package/dist/sdks/long-yield-carry/src/client/plans/collectInterest.d.ts +24 -0
- package/dist/sdks/long-yield-carry/src/client/plans/collectInterest.js +150 -0
- package/dist/sdks/long-yield-carry/src/client/plans/decreaseCarryPosition.d.ts +12 -0
- package/dist/sdks/long-yield-carry/src/client/plans/decreaseCarryPosition.js +140 -0
- package/dist/sdks/long-yield-carry/src/client/routes/collectInterest.d.ts +13 -0
- package/dist/sdks/long-yield-carry/src/client/routes/collectInterest.js +39 -0
- package/dist/sdks/long-yield-carry/src/client/transaction.d.ts +41 -0
- package/dist/sdks/long-yield-carry/src/client/transaction.js +55 -0
- package/dist/sdks/long-yield-carry/src/client/types/builders.d.ts +18 -0
- package/dist/sdks/long-yield-carry/src/client/types/builders.js +2 -0
- package/dist/sdks/long-yield-carry/src/client/types/enums.d.ts +22 -0
- package/dist/sdks/long-yield-carry/src/client/types/enums.js +48 -0
- package/dist/sdks/long-yield-carry/src/client/types/general.d.ts +98 -0
- package/dist/sdks/long-yield-carry/src/client/types/general.js +2 -0
- package/dist/sdks/long-yield-carry/src/client/types/index.d.ts +6 -0
- package/dist/sdks/long-yield-carry/src/client/types/index.js +22 -0
- package/dist/sdks/long-yield-carry/src/client/types/ix.d.ts +352 -0
- package/dist/sdks/long-yield-carry/src/client/types/ix.js +2 -0
- package/dist/sdks/long-yield-carry/src/client/types/planTypes/collectInterest.d.ts +91 -0
- package/dist/sdks/long-yield-carry/src/client/types/planTypes/collectInterest.js +2 -0
- package/dist/sdks/long-yield-carry/src/client/types/planTypes/common.d.ts +28 -0
- package/dist/sdks/long-yield-carry/src/client/types/planTypes/common.js +2 -0
- package/dist/sdks/long-yield-carry/src/client/types/planTypes/decreaseCarryPosition.d.ts +128 -0
- package/dist/sdks/long-yield-carry/src/client/types/planTypes/decreaseCarryPosition.js +2 -0
- package/dist/sdks/long-yield-carry/src/client/types/planTypes/index.d.ts +3 -0
- package/dist/sdks/long-yield-carry/src/client/types/planTypes/index.js +19 -0
- package/dist/sdks/long-yield-carry/src/client/types/tx.d.ts +339 -0
- package/dist/sdks/long-yield-carry/src/client/types/tx.js +2 -0
- package/dist/sdks/long-yield-carry/src/constants/configs/allocations.d.ts +3 -0
- package/dist/sdks/long-yield-carry/src/constants/configs/allocations.js +23 -0
- package/dist/sdks/long-yield-carry/src/constants/configs/carryTradePresets.d.ts +58 -0
- package/dist/sdks/long-yield-carry/src/constants/configs/carryTradePresets.js +116 -0
- package/dist/sdks/long-yield-carry/src/constants/configs/index.d.ts +2 -0
- package/dist/sdks/long-yield-carry/src/constants/configs/index.js +18 -0
- package/dist/sdks/long-yield-carry/src/constants/general.d.ts +70 -0
- package/dist/sdks/long-yield-carry/src/constants/general.js +107 -0
- package/dist/sdks/long-yield-carry/src/constants/index.d.ts +3 -0
- package/dist/sdks/long-yield-carry/src/constants/index.js +19 -0
- package/dist/sdks/long-yield-carry/src/constants/lycTokenMetadata.d.ts +36 -0
- package/dist/sdks/long-yield-carry/src/constants/lycTokenMetadata.js +41 -0
- package/dist/sdks/long-yield-carry/src/decoders/decodeTransaction.d.ts +86 -0
- package/dist/sdks/long-yield-carry/src/decoders/decodeTransaction.js +230 -0
- package/dist/sdks/long-yield-carry/src/decoders/discriminators.d.ts +8 -0
- package/dist/sdks/long-yield-carry/src/decoders/discriminators.js +11 -0
- package/dist/sdks/long-yield-carry/src/decoders/idlAccounts.d.ts +29 -0
- package/dist/sdks/long-yield-carry/src/decoders/idlAccounts.js +57 -0
- package/dist/sdks/long-yield-carry/src/decoders/index.d.ts +6 -0
- package/dist/sdks/long-yield-carry/src/decoders/index.js +14 -0
- package/dist/sdks/long-yield-carry/src/decoders/innerCpis.d.ts +68 -0
- package/dist/sdks/long-yield-carry/src/decoders/innerCpis.js +225 -0
- package/dist/sdks/long-yield-carry/src/decoders/lycInstructionNames.d.ts +6 -0
- package/dist/sdks/long-yield-carry/src/decoders/lycInstructionNames.js +73 -0
- package/dist/sdks/long-yield-carry/src/decoders/programIds.d.ts +4 -0
- package/dist/sdks/long-yield-carry/src/decoders/programIds.js +11 -0
- package/dist/sdks/long-yield-carry/src/decoders/solana.d.ts +7 -0
- package/dist/sdks/long-yield-carry/src/decoders/solana.js +30 -0
- package/dist/sdks/long-yield-carry/src/decoders/transactionPayload.d.ts +41 -0
- package/dist/sdks/long-yield-carry/src/decoders/transactionPayload.js +6 -0
- package/dist/sdks/long-yield-carry/src/decoders/types.d.ts +58 -0
- package/dist/sdks/long-yield-carry/src/decoders/types.js +2 -0
- package/dist/sdks/long-yield-carry/src/errors.d.ts +69 -0
- package/dist/sdks/long-yield-carry/src/errors.js +183 -0
- package/dist/sdks/long-yield-carry/src/idl/long_yield_carry.d.ts +7327 -0
- package/dist/sdks/long-yield-carry/src/idl/long_yield_carry.js +7323 -0
- package/dist/sdks/long-yield-carry/src/index.d.ts +10 -0
- package/dist/sdks/long-yield-carry/src/index.js +25 -0
- package/dist/sdks/long-yield-carry/src/metrics/index.d.ts +1 -0
- package/dist/sdks/long-yield-carry/src/metrics/index.js +17 -0
- package/dist/sdks/long-yield-carry/src/metrics/protocolMetrics.d.ts +276 -0
- package/dist/sdks/long-yield-carry/src/metrics/protocolMetrics.js +547 -0
- package/dist/sdks/long-yield-carry/src/models/index.d.ts +3 -0
- package/dist/sdks/long-yield-carry/src/models/index.js +7 -0
- package/dist/sdks/long-yield-carry/src/models/lycToken.d.ts +156 -0
- package/dist/sdks/long-yield-carry/src/models/lycToken.js +288 -0
- package/dist/sdks/long-yield-carry/src/models/yieldingBank.d.ts +52 -0
- package/dist/sdks/long-yield-carry/src/models/yieldingBank.js +109 -0
- package/dist/sdks/long-yield-carry/src/services/allocation/allocationService.d.ts +106 -0
- package/dist/sdks/long-yield-carry/src/services/allocation/allocationService.js +589 -0
- package/dist/sdks/long-yield-carry/src/services/allocation/index.d.ts +2 -0
- package/dist/sdks/long-yield-carry/src/services/allocation/index.js +18 -0
- package/dist/sdks/long-yield-carry/src/services/allocation/types.d.ts +25 -0
- package/dist/sdks/long-yield-carry/src/services/allocation/types.js +2 -0
- package/dist/sdks/long-yield-carry/src/services/carry/carryAllocationConfig.d.ts +103 -0
- package/dist/sdks/long-yield-carry/src/services/carry/carryAllocationConfig.js +146 -0
- package/dist/sdks/long-yield-carry/src/services/carry/index.d.ts +2 -0
- package/dist/sdks/long-yield-carry/src/services/carry/index.js +18 -0
- package/dist/sdks/long-yield-carry/src/services/carry/lycLendingPositionManager.d.ts +39 -0
- package/dist/sdks/long-yield-carry/src/services/carry/lycLendingPositionManager.js +100 -0
- package/dist/sdks/long-yield-carry/src/services/index.d.ts +5 -0
- package/dist/sdks/long-yield-carry/src/services/index.js +21 -0
- package/dist/sdks/long-yield-carry/src/services/lendingPosition/index.d.ts +2 -0
- package/dist/sdks/long-yield-carry/src/services/lendingPosition/index.js +5 -0
- package/dist/sdks/long-yield-carry/src/services/lendingPosition/lendingPositionService.d.ts +88 -0
- package/dist/sdks/long-yield-carry/src/services/lendingPosition/lendingPositionService.js +229 -0
- package/dist/sdks/long-yield-carry/src/services/rebalance/index.d.ts +2 -0
- package/dist/sdks/long-yield-carry/src/services/rebalance/index.js +18 -0
- package/dist/sdks/long-yield-carry/src/services/rebalance/token/index.d.ts +1 -0
- package/dist/sdks/long-yield-carry/src/services/rebalance/token/index.js +17 -0
- package/dist/sdks/long-yield-carry/src/services/rebalance/token/tokenRebalanceService.d.ts +51 -0
- package/dist/sdks/long-yield-carry/src/services/rebalance/token/tokenRebalanceService.js +99 -0
- package/dist/sdks/long-yield-carry/src/services/rebalance/yieldingBank/index.d.ts +3 -0
- package/dist/sdks/long-yield-carry/src/services/rebalance/yieldingBank/index.js +21 -0
- package/dist/sdks/long-yield-carry/src/services/rebalance/yieldingBank/planner.d.ts +68 -0
- package/dist/sdks/long-yield-carry/src/services/rebalance/yieldingBank/planner.js +181 -0
- package/dist/sdks/long-yield-carry/src/services/rebalance/yieldingBank/strategy.d.ts +26 -0
- package/dist/sdks/long-yield-carry/src/services/rebalance/yieldingBank/strategy.js +26 -0
- package/dist/sdks/long-yield-carry/src/services/rebalance/yieldingBank/types.d.ts +40 -0
- package/dist/sdks/long-yield-carry/src/services/rebalance/yieldingBank/types.js +2 -0
- package/dist/sdks/long-yield-carry/src/services/redemption/index.d.ts +2 -0
- package/dist/sdks/long-yield-carry/src/services/redemption/index.js +5 -0
- package/dist/sdks/long-yield-carry/src/services/redemption/redemptionService.d.ts +139 -0
- package/dist/sdks/long-yield-carry/src/services/redemption/redemptionService.js +532 -0
- package/dist/sdks/long-yield-carry/src/types/enriched.d.ts +168 -0
- package/dist/sdks/long-yield-carry/src/types/enriched.js +2 -0
- package/dist/sdks/long-yield-carry/src/types/index.d.ts +1 -0
- package/dist/sdks/long-yield-carry/src/types/index.js +17 -0
- package/dist/sdks/long-yield-carry/src/utils/cache.d.ts +4 -0
- package/dist/sdks/long-yield-carry/src/utils/cache.js +10 -0
- package/dist/sdks/long-yield-carry/src/utils/data.d.ts +12 -0
- package/dist/sdks/long-yield-carry/src/utils/data.js +59 -0
- package/dist/sdks/long-yield-carry/src/utils/enrichment.d.ts +5 -0
- package/dist/sdks/long-yield-carry/src/utils/enrichment.js +244 -0
- package/dist/sdks/long-yield-carry/src/utils/feeDripMetrics.d.ts +36 -0
- package/dist/sdks/long-yield-carry/src/utils/feeDripMetrics.js +93 -0
- package/dist/sdks/long-yield-carry/src/utils/general.d.ts +28 -0
- package/dist/sdks/long-yield-carry/src/utils/general.js +47 -0
- package/dist/sdks/long-yield-carry/src/utils/index.d.ts +13 -0
- package/dist/sdks/long-yield-carry/src/utils/index.js +29 -0
- package/dist/sdks/long-yield-carry/src/utils/ix.d.ts +83 -0
- package/dist/sdks/long-yield-carry/src/utils/ix.js +165 -0
- package/dist/sdks/long-yield-carry/src/utils/lendingPosition.d.ts +68 -0
- package/dist/sdks/long-yield-carry/src/utils/lendingPosition.js +105 -0
- package/dist/sdks/long-yield-carry/src/utils/lookupTables.d.ts +55 -0
- package/dist/sdks/long-yield-carry/src/utils/lookupTables.js +216 -0
- package/dist/sdks/long-yield-carry/src/utils/lycData.d.ts +66 -0
- package/dist/sdks/long-yield-carry/src/utils/lycData.js +211 -0
- package/dist/sdks/long-yield-carry/src/utils/timelock.d.ts +19 -0
- package/dist/sdks/long-yield-carry/src/utils/timelock.js +37 -0
- package/dist/sdks/long-yield-carry/src/utils/tokenFeeMath.d.ts +11 -0
- package/dist/sdks/long-yield-carry/src/utils/tokenFeeMath.js +24 -0
- package/dist/sdks/long-yield-carry/src/utils/transactions.d.ts +20 -0
- package/dist/sdks/long-yield-carry/src/utils/transactions.js +72 -0
- package/dist/sdks/long-yield-carry/src/utils/yieldingBank.d.ts +24 -0
- package/dist/sdks/long-yield-carry/src/utils/yieldingBank.js +36 -0
- package/dist/shared/common/src/constants/accountMetas.d.ts +3 -0
- package/dist/shared/common/src/constants/accountMetas.js +9 -0
- package/dist/shared/common/src/constants/general.d.ts +21 -0
- package/dist/shared/common/src/constants/general.js +30 -0
- package/dist/shared/common/src/constants/generated/cpi.d.ts +23 -0
- package/dist/shared/common/src/constants/generated/cpi.js +28 -0
- package/dist/shared/common/src/constants/generated/index.d.ts +1 -0
- package/dist/shared/common/src/constants/generated/index.js +17 -0
- package/dist/shared/common/src/constants/index.d.ts +3 -0
- package/dist/shared/common/src/constants/index.js +19 -0
- package/dist/shared/common/src/index.d.ts +4 -0
- package/dist/shared/common/src/index.js +20 -0
- package/dist/shared/common/src/services/baseAccountClient.d.ts +22 -0
- package/dist/shared/common/src/services/baseAccountClient.js +38 -0
- package/dist/shared/common/src/services/baseIxBuilderService.d.ts +27 -0
- package/dist/shared/common/src/services/baseIxBuilderService.js +48 -0
- package/dist/shared/common/src/services/dataCache.d.ts +41 -0
- package/dist/shared/common/src/services/dataCache.js +130 -0
- package/dist/shared/common/src/services/index.d.ts +8 -0
- package/dist/shared/common/src/services/index.js +24 -0
- package/dist/shared/common/src/services/lutManager.d.ts +31 -0
- package/dist/shared/common/src/services/lutManager.js +133 -0
- package/dist/shared/common/src/services/mints/defaults.d.ts +2 -0
- package/dist/shared/common/src/services/mints/defaults.js +152 -0
- package/dist/shared/common/src/services/mints/index.d.ts +4 -0
- package/dist/shared/common/src/services/mints/index.js +20 -0
- package/dist/shared/common/src/services/mints/registry.d.ts +70 -0
- package/dist/shared/common/src/services/mints/registry.js +117 -0
- package/dist/shared/common/src/services/mints/symbols.d.ts +6 -0
- package/dist/shared/common/src/services/mints/symbols.js +13 -0
- package/dist/shared/common/src/services/mints/types.d.ts +30 -0
- package/dist/shared/common/src/services/mints/types.js +2 -0
- package/dist/shared/common/src/services/swap/index.d.ts +4 -0
- package/dist/shared/common/src/services/swap/index.js +20 -0
- package/dist/shared/common/src/services/swap/routableSwapClient.d.ts +36 -0
- package/dist/shared/common/src/services/swap/routableSwapClient.js +2 -0
- package/dist/shared/common/src/services/swap/swapClientBase.d.ts +45 -0
- package/dist/shared/common/src/services/swap/swapClientBase.js +2 -0
- package/dist/shared/common/src/services/swap/swapRouting.d.ts +13 -0
- package/dist/shared/common/src/services/swap/swapRouting.js +28 -0
- package/dist/shared/common/src/services/swap/types.d.ts +77 -0
- package/dist/shared/common/src/services/swap/types.js +2 -0
- package/dist/shared/common/src/services/token/index.d.ts +2 -0
- package/dist/shared/common/src/services/token/index.js +18 -0
- package/dist/shared/common/src/services/token/tokenProtocolClientBase.d.ts +51 -0
- package/dist/shared/common/src/services/token/tokenProtocolClientBase.js +2 -0
- package/dist/shared/common/src/services/token/types.d.ts +19 -0
- package/dist/shared/common/src/services/token/types.js +2 -0
- package/dist/shared/common/src/services/transactionSender.d.ts +24 -0
- package/dist/shared/common/src/services/transactionSender.js +30 -0
- package/dist/shared/common/src/types/cpi.d.ts +34 -0
- package/dist/shared/common/src/types/cpi.js +8 -0
- package/dist/shared/common/src/types/enums.d.ts +59 -0
- package/dist/shared/common/src/types/enums.js +122 -0
- package/dist/shared/common/src/types/general.d.ts +38 -0
- package/dist/shared/common/src/types/general.js +2 -0
- package/dist/shared/common/src/types/index.d.ts +4 -0
- package/dist/shared/common/src/types/index.js +20 -0
- package/dist/shared/common/src/types/solana.d.ts +24 -0
- package/dist/shared/common/src/types/solana.js +2 -0
- package/dist/shared/common/src/utils/accounts/index.d.ts +5 -0
- package/dist/shared/common/src/utils/accounts/index.js +21 -0
- package/dist/shared/common/src/utils/accounts/meta.d.ts +21 -0
- package/dist/shared/common/src/utils/accounts/meta.js +27 -0
- package/dist/shared/common/src/utils/accounts/pda.d.ts +2 -0
- package/dist/shared/common/src/utils/accounts/pda.js +17 -0
- package/dist/shared/common/src/utils/accounts/roles.d.ts +26 -0
- package/dist/shared/common/src/utils/accounts/roles.js +54 -0
- package/dist/shared/common/src/utils/accounts/rpc.d.ts +8 -0
- package/dist/shared/common/src/utils/accounts/rpc.js +30 -0
- package/dist/shared/common/src/utils/accounts/splBalances.d.ts +15 -0
- package/dist/shared/common/src/utils/accounts/splBalances.js +52 -0
- package/dist/shared/common/src/utils/anchor.d.ts +17 -0
- package/dist/shared/common/src/utils/anchor.js +29 -0
- package/dist/shared/common/src/utils/asyncConcurrency.d.ts +5 -0
- package/dist/shared/common/src/utils/asyncConcurrency.js +28 -0
- package/dist/shared/common/src/utils/compat.d.ts +46 -0
- package/dist/shared/common/src/utils/compat.js +72 -0
- package/dist/shared/common/src/utils/cpi/args.d.ts +69 -0
- package/dist/shared/common/src/utils/cpi/args.js +100 -0
- package/dist/shared/common/src/utils/cpi/index.d.ts +2 -0
- package/dist/shared/common/src/utils/cpi/index.js +18 -0
- package/dist/shared/common/src/utils/cpi/refs.d.ts +122 -0
- package/dist/shared/common/src/utils/cpi/refs.js +234 -0
- package/dist/shared/common/src/utils/data.d.ts +20 -0
- package/dist/shared/common/src/utils/data.js +27 -0
- package/dist/shared/common/src/utils/general.d.ts +24 -0
- package/dist/shared/common/src/utils/general.js +95 -0
- package/dist/shared/common/src/utils/index.d.ts +22 -0
- package/dist/shared/common/src/utils/index.js +38 -0
- package/dist/shared/common/src/utils/instruction.d.ts +74 -0
- package/dist/shared/common/src/utils/instruction.js +147 -0
- package/dist/shared/common/src/utils/jito.d.ts +113 -0
- package/dist/shared/common/src/utils/jito.js +178 -0
- package/dist/shared/common/src/utils/json.d.ts +5 -0
- package/dist/shared/common/src/utils/json.js +25 -0
- package/dist/shared/common/src/utils/jsonRpcFetch.d.ts +21 -0
- package/dist/shared/common/src/utils/jsonRpcFetch.js +134 -0
- package/dist/shared/common/src/utils/metadata.d.ts +107 -0
- package/dist/shared/common/src/utils/metadata.js +194 -0
- package/dist/shared/common/src/utils/numbers.d.ts +72 -0
- package/dist/shared/common/src/utils/numbers.js +193 -0
- package/dist/shared/common/src/utils/priorityFee.d.ts +18 -0
- package/dist/shared/common/src/utils/priorityFee.js +63 -0
- package/dist/shared/common/src/utils/retry.d.ts +20 -0
- package/dist/shared/common/src/utils/retry.js +69 -0
- package/dist/shared/common/src/utils/rpc.d.ts +40 -0
- package/dist/shared/common/src/utils/rpc.js +130 -0
- package/dist/shared/common/src/utils/solana.d.ts +23 -0
- package/dist/shared/common/src/utils/solana.js +61 -0
- package/dist/shared/common/src/utils/timeSeries.d.ts +18 -0
- package/dist/shared/common/src/utils/timeSeries.js +40 -0
- package/dist/shared/common/src/utils/token.d.ts +33 -0
- package/dist/shared/common/src/utils/token.js +82 -0
- package/dist/shared/common/src/utils/transaction.d.ts +154 -0
- package/dist/shared/common/src/utils/transaction.js +585 -0
- package/dist/shared/common/src/utils/transactionSplitter.d.ts +85 -0
- package/dist/shared/common/src/utils/transactionSplitter.js +127 -0
- package/dist/shared/common/src/utils/txAccountCoverage.d.ts +49 -0
- package/dist/shared/common/src/utils/txAccountCoverage.js +122 -0
- package/dist/shared/jupiter-helpers/src/api.d.ts +59 -0
- package/dist/shared/jupiter-helpers/src/api.js +130 -0
- package/dist/shared/jupiter-helpers/src/client.d.ts +79 -0
- package/dist/shared/jupiter-helpers/src/client.js +173 -0
- package/dist/shared/jupiter-helpers/src/constants.d.ts +35 -0
- package/dist/shared/jupiter-helpers/src/constants.js +38 -0
- package/dist/shared/jupiter-helpers/src/extract.d.ts +30 -0
- package/dist/shared/jupiter-helpers/src/extract.js +57 -0
- package/dist/shared/jupiter-helpers/src/index.d.ts +5 -0
- package/dist/shared/jupiter-helpers/src/index.js +21 -0
- package/dist/shared/jupiter-helpers/src/routePreInstructions.d.ts +19 -0
- package/dist/shared/jupiter-helpers/src/routePreInstructions.js +61 -0
- package/dist/shared/jupiter-helpers/src/sizeExactInForMinOutput.d.ts +70 -0
- package/dist/shared/jupiter-helpers/src/sizeExactInForMinOutput.js +95 -0
- package/dist/shared/jupiter-helpers/src/types.d.ts +66 -0
- package/dist/shared/jupiter-helpers/src/types.js +2 -0
- package/dist/shared/lending-platforms/src/constants/cache.d.ts +8 -0
- package/dist/shared/lending-platforms/src/constants/cache.js +11 -0
- package/dist/shared/lending-platforms/src/constants/index.d.ts +3 -0
- package/dist/shared/lending-platforms/src/constants/index.js +19 -0
- package/dist/shared/lending-platforms/src/constants/kamino.d.ts +7 -0
- package/dist/shared/lending-platforms/src/constants/kamino.js +83 -0
- package/dist/shared/lending-platforms/src/constants/lendingPosition.d.ts +7 -0
- package/dist/shared/lending-platforms/src/constants/lendingPosition.js +10 -0
- package/dist/shared/lending-platforms/src/data/accounts/index.d.ts +2 -0
- package/dist/shared/lending-platforms/src/data/accounts/index.js +18 -0
- package/dist/shared/lending-platforms/src/data/accounts/kamino.d.ts +42 -0
- package/dist/shared/lending-platforms/src/data/accounts/kamino.js +104 -0
- package/dist/shared/lending-platforms/src/data/accounts/lpAccountsBase.d.ts +7 -0
- package/dist/shared/lending-platforms/src/data/accounts/lpAccountsBase.js +9 -0
- package/dist/shared/lending-platforms/src/data/incentive/incentiveBase.d.ts +35 -0
- package/dist/shared/lending-platforms/src/data/incentive/incentiveBase.js +26 -0
- package/dist/shared/lending-platforms/src/data/incentive/index.d.ts +2 -0
- package/dist/shared/lending-platforms/src/data/incentive/index.js +18 -0
- package/dist/shared/lending-platforms/src/data/incentive/kamino.d.ts +55 -0
- package/dist/shared/lending-platforms/src/data/incentive/kamino.js +101 -0
- package/dist/shared/lending-platforms/src/data/index.d.ts +6 -0
- package/dist/shared/lending-platforms/src/data/index.js +22 -0
- package/dist/shared/lending-platforms/src/data/instructions/index.d.ts +3 -0
- package/dist/shared/lending-platforms/src/data/instructions/index.js +19 -0
- package/dist/shared/lending-platforms/src/data/instructions/kamino.d.ts +55 -0
- package/dist/shared/lending-platforms/src/data/instructions/kamino.js +630 -0
- package/dist/shared/lending-platforms/src/data/instructions/lpInstructionsBase.d.ts +175 -0
- package/dist/shared/lending-platforms/src/data/instructions/lpInstructionsBase.js +192 -0
- package/dist/shared/lending-platforms/src/data/instructions/types.d.ts +7 -0
- package/dist/shared/lending-platforms/src/data/instructions/types.js +2 -0
- package/dist/shared/lending-platforms/src/data/platform/index.d.ts +2 -0
- package/dist/shared/lending-platforms/src/data/platform/index.js +18 -0
- package/dist/shared/lending-platforms/src/data/platform/kamino.d.ts +59 -0
- package/dist/shared/lending-platforms/src/data/platform/kamino.js +206 -0
- package/dist/shared/lending-platforms/src/data/platform/lpDataBase.d.ts +35 -0
- package/dist/shared/lending-platforms/src/data/platform/lpDataBase.js +31 -0
- package/dist/shared/lending-platforms/src/data/reserve/index.d.ts +2 -0
- package/dist/shared/lending-platforms/src/data/reserve/index.js +18 -0
- package/dist/shared/lending-platforms/src/data/reserve/kamino.d.ts +45 -0
- package/dist/shared/lending-platforms/src/data/reserve/kamino.js +141 -0
- package/dist/shared/lending-platforms/src/data/reserve/reserveBase.d.ts +114 -0
- package/dist/shared/lending-platforms/src/data/reserve/reserveBase.js +125 -0
- package/dist/shared/lending-platforms/src/data/userPosition/index.d.ts +2 -0
- package/dist/shared/lending-platforms/src/data/userPosition/index.js +18 -0
- package/dist/shared/lending-platforms/src/data/userPosition/kamino.d.ts +15 -0
- package/dist/shared/lending-platforms/src/data/userPosition/kamino.js +45 -0
- package/dist/shared/lending-platforms/src/data/userPosition/userPositionBase.d.ts +50 -0
- package/dist/shared/lending-platforms/src/data/userPosition/userPositionBase.js +63 -0
- package/dist/shared/lending-platforms/src/index.d.ts +5 -0
- package/dist/shared/lending-platforms/src/index.js +21 -0
- package/dist/shared/lending-platforms/src/services/client/index.d.ts +2 -0
- package/dist/shared/lending-platforms/src/services/client/index.js +18 -0
- package/dist/shared/lending-platforms/src/services/client/kamino.d.ts +53 -0
- package/dist/shared/lending-platforms/src/services/client/kamino.js +142 -0
- package/dist/shared/lending-platforms/src/services/client/lpClientBase.d.ts +66 -0
- package/dist/shared/lending-platforms/src/services/client/lpClientBase.js +19 -0
- package/dist/shared/lending-platforms/src/services/flashLoan/flashLoanBase.d.ts +49 -0
- package/dist/shared/lending-platforms/src/services/flashLoan/flashLoanBase.js +16 -0
- package/dist/shared/lending-platforms/src/services/flashLoan/index.d.ts +2 -0
- package/dist/shared/lending-platforms/src/services/flashLoan/index.js +18 -0
- package/dist/shared/lending-platforms/src/services/flashLoan/kamino.d.ts +11 -0
- package/dist/shared/lending-platforms/src/services/flashLoan/kamino.js +85 -0
- package/dist/shared/lending-platforms/src/services/index.d.ts +5 -0
- package/dist/shared/lending-platforms/src/services/index.js +21 -0
- package/dist/shared/lending-platforms/src/services/lendingPosition/index.d.ts +2 -0
- package/dist/shared/lending-platforms/src/services/lendingPosition/index.js +18 -0
- package/dist/shared/lending-platforms/src/services/lendingPosition/lendingPositionManager.d.ts +117 -0
- package/dist/shared/lending-platforms/src/services/lendingPosition/lendingPositionManager.js +342 -0
- package/dist/shared/lending-platforms/src/services/lendingPosition/types.d.ts +40 -0
- package/dist/shared/lending-platforms/src/services/lendingPosition/types.js +2 -0
- package/dist/shared/lending-platforms/src/services/leverage/index.d.ts +2 -0
- package/dist/shared/lending-platforms/src/services/leverage/index.js +18 -0
- package/dist/shared/lending-platforms/src/services/leverage/leverageService.d.ts +104 -0
- package/dist/shared/lending-platforms/src/services/leverage/leverageService.js +437 -0
- package/dist/shared/lending-platforms/src/services/leverage/types.d.ts +261 -0
- package/dist/shared/lending-platforms/src/services/leverage/types.js +2 -0
- package/dist/shared/lending-platforms/src/services/reservesManager.d.ts +53 -0
- package/dist/shared/lending-platforms/src/services/reservesManager.js +112 -0
- package/dist/shared/lending-platforms/src/types/general.d.ts +37 -0
- package/dist/shared/lending-platforms/src/types/general.js +8 -0
- package/dist/shared/lending-platforms/src/types/index.d.ts +2 -0
- package/dist/shared/lending-platforms/src/types/index.js +18 -0
- package/dist/shared/lending-platforms/src/types/kamino.d.ts +10 -0
- package/dist/shared/lending-platforms/src/types/kamino.js +2 -0
- package/dist/shared/lending-platforms/src/utils/accounts.d.ts +16 -0
- package/dist/shared/lending-platforms/src/utils/accounts.js +36 -0
- package/dist/shared/lending-platforms/src/utils/cache.d.ts +3 -0
- package/dist/shared/lending-platforms/src/utils/cache.js +11 -0
- package/dist/shared/lending-platforms/src/utils/index.d.ts +6 -0
- package/dist/shared/lending-platforms/src/utils/index.js +22 -0
- package/dist/shared/lending-platforms/src/utils/kamino.d.ts +87 -0
- package/dist/shared/lending-platforms/src/utils/kamino.js +190 -0
- package/dist/shared/lending-platforms/src/utils/lendingPlatform.d.ts +6 -0
- package/dist/shared/lending-platforms/src/utils/lendingPlatform.js +16 -0
- package/dist/shared/lending-platforms/src/utils/math.d.ts +47 -0
- package/dist/shared/lending-platforms/src/utils/math.js +123 -0
- package/dist/shared/lending-platforms/src/utils/scope.d.ts +38 -0
- package/dist/shared/lending-platforms/src/utils/scope.js +144 -0
- package/dist/shared/oracle-service/src/constants/index.d.ts +3 -0
- package/dist/shared/oracle-service/src/constants/index.js +19 -0
- package/dist/shared/oracle-service/src/constants/pyth.d.ts +7 -0
- package/dist/shared/oracle-service/src/constants/pyth.js +71 -0
- package/dist/shared/oracle-service/src/constants/splStake.d.ts +2 -0
- package/dist/shared/oracle-service/src/constants/splStake.js +6 -0
- package/dist/shared/oracle-service/src/constants/switchboard.d.ts +7 -0
- package/dist/shared/oracle-service/src/constants/switchboard.js +10 -0
- package/dist/shared/oracle-service/src/feeds/custom.d.ts +30 -0
- package/dist/shared/oracle-service/src/feeds/custom.js +56 -0
- package/dist/shared/oracle-service/src/feeds/jupiter.d.ts +7 -0
- package/dist/shared/oracle-service/src/feeds/jupiter.js +43 -0
- package/dist/shared/oracle-service/src/feeds/priceBase.d.ts +13 -0
- package/dist/shared/oracle-service/src/feeds/priceBase.js +25 -0
- package/dist/shared/oracle-service/src/feeds/pyth.d.ts +8 -0
- package/dist/shared/oracle-service/src/feeds/pyth.js +59 -0
- package/dist/shared/oracle-service/src/feeds/splStake.d.ts +26 -0
- package/dist/shared/oracle-service/src/feeds/splStake.js +99 -0
- package/dist/shared/oracle-service/src/feeds/switchboard.d.ts +6 -0
- package/dist/shared/oracle-service/src/feeds/switchboard.js +11 -0
- package/dist/shared/oracle-service/src/index.d.ts +5 -0
- package/dist/shared/oracle-service/src/index.js +26 -0
- package/dist/shared/oracle-service/src/oracle.d.ts +22 -0
- package/dist/shared/oracle-service/src/oracle.js +104 -0
- package/dist/shared/oracle-service/src/types.d.ts +4 -0
- package/dist/shared/oracle-service/src/types.js +2 -0
- package/dist/shared/oracle-service/src/utils/general.d.ts +20 -0
- package/dist/shared/oracle-service/src/utils/general.js +65 -0
- package/dist/shared/oracle-service/src/utils/index.d.ts +1 -0
- package/dist/shared/oracle-service/src/utils/index.js +17 -0
- package/dist/shared/perena-helpers/src/accounts.d.ts +7 -0
- package/dist/shared/perena-helpers/src/accounts.js +12 -0
- package/dist/shared/perena-helpers/src/client.d.ts +299 -0
- package/dist/shared/perena-helpers/src/client.js +680 -0
- package/dist/shared/perena-helpers/src/constants.d.ts +5 -0
- package/dist/shared/perena-helpers/src/constants.js +8 -0
- package/dist/shared/perena-helpers/src/cpi/burn.d.ts +27 -0
- package/dist/shared/perena-helpers/src/cpi/burn.js +22 -0
- package/dist/shared/perena-helpers/src/cpi/index.d.ts +3 -0
- package/dist/shared/perena-helpers/src/cpi/index.js +19 -0
- package/dist/shared/perena-helpers/src/cpi/mint.d.ts +27 -0
- package/dist/shared/perena-helpers/src/cpi/mint.js +22 -0
- package/dist/shared/perena-helpers/src/cpi/requestUnstake.d.ts +19 -0
- package/dist/shared/perena-helpers/src/cpi/requestUnstake.js +16 -0
- package/dist/shared/perena-helpers/src/index.d.ts +5 -0
- package/dist/shared/perena-helpers/src/index.js +21 -0
- package/dist/shared/perena-helpers/src/utils.d.ts +9 -0
- package/dist/shared/perena-helpers/src/utils.js +54 -0
- package/dist/shared/swap-aggregator/src/aggSwapClient.d.ts +71 -0
- package/dist/shared/swap-aggregator/src/aggSwapClient.js +103 -0
- package/dist/shared/swap-aggregator/src/index.d.ts +1 -0
- package/dist/shared/swap-aggregator/src/index.js +17 -0
- package/docs/launchingToken.md +57 -0
- package/package.json +75 -0
- package/scripts/asyncBurn.ts +155 -0
- package/scripts/burnToken.ts +120 -0
- package/scripts/claimIncentives.ts +125 -0
- package/scripts/closeCpiPlans.ts +113 -0
- package/scripts/collectInterest.ts +194 -0
- package/scripts/collectProtocolFees.ts +144 -0
- package/scripts/computeOptimalAllocations.ts +117 -0
- package/scripts/createToken.ts +100 -0
- package/scripts/createTokenLendingPosition.ts +204 -0
- package/scripts/createYieldingBank.ts +91 -0
- package/scripts/decreaseCarryPositions.ts +359 -0
- package/scripts/depositUnlentCollateral.ts +106 -0
- package/scripts/emergency/deleverageAll.ts +287 -0
- package/scripts/emergency/triggerCircuitBreaker.ts +87 -0
- package/scripts/env.ts +4 -0
- package/scripts/findTxs.ts +169 -0
- package/scripts/increaseCarryPositions.ts +134 -0
- package/scripts/inspect/format.ts +576 -0
- package/scripts/inspect.ts +147 -0
- package/scripts/localUtils.ts +249 -0
- package/scripts/mintToken.ts +126 -0
- package/scripts/processAsyncBurns.ts +89 -0
- package/scripts/rebalanceToken.ts +269 -0
- package/scripts/rebalanceYieldingBank.ts +183 -0
- package/scripts/recollateralizeLoss.ts +79 -0
- package/scripts/refresh.ts +156 -0
- package/scripts/updateFees.ts +486 -0
- package/scripts/updateGeneralLut.ts +36 -0
- package/scripts/updateLendingPositionConfig.ts +172 -0
- package/scripts/updateTokenLuts.ts +36 -0
- package/scripts/updateTokenMetadata.ts +199 -0
- package/scripts/updateYieldingBankConfig.ts +100 -0
- package/scripts/withdrawUnlentCollateral.ts +178 -0
- package/src/client/account.ts +503 -0
- package/src/client/builders/args.ts +381 -0
- package/src/client/builders/asyncBurnBuilder.ts +305 -0
- package/src/client/builders/base.ts +303 -0
- package/src/client/builders/burnTokenBuilder.ts +258 -0
- package/src/client/builders/claimIncentivesBuilder.ts +211 -0
- package/src/client/builders/collectFeesBuilder.ts +52 -0
- package/src/client/builders/collectInterestBuilder.ts +165 -0
- package/src/client/builders/createCpiPlanBuilder.ts +21 -0
- package/src/client/builders/createTokenBuilder.ts +73 -0
- package/src/client/builders/createTokenLendingPositionBuilder.ts +219 -0
- package/src/client/builders/createYieldingBankAllocationBuilder.ts +32 -0
- package/src/client/builders/createYieldingBankBuilder.ts +39 -0
- package/src/client/builders/decreaseCarryPositionBuilder.ts +162 -0
- package/src/client/builders/depositUnlentCollateralBuilder.ts +95 -0
- package/src/client/builders/increaseCarryPositionBuilder.ts +105 -0
- package/src/client/builders/index.ts +37 -0
- package/src/client/builders/mintTokenBuilder.ts +137 -0
- package/src/client/builders/rebalanceTokenBuilder.ts +356 -0
- package/src/client/builders/rebalanceYieldingBankBuilder.ts +109 -0
- package/src/client/builders/recollateralizeLossBuilder.ts +367 -0
- package/src/client/builders/refreshTokenStateBuilder.ts +153 -0
- package/src/client/builders/refreshTokensBuilder.ts +82 -0
- package/src/client/builders/refreshYieldingBankBuilder.ts +42 -0
- package/src/client/builders/resetTokenBurnRateLimitBuilder.ts +21 -0
- package/src/client/builders/setTokenCircuitBreakerBuilder.ts +40 -0
- package/src/client/builders/setYieldingBankCircuitBreakerBuilder.ts +37 -0
- package/src/client/builders/updateLendingPositionConfigBuilder.ts +33 -0
- package/src/client/builders/updateTokenConfigurationBuilder.ts +50 -0
- package/src/client/builders/updateTokenMetadataBuilder.ts +24 -0
- package/src/client/builders/updateYieldingBankConfigBuilder.ts +32 -0
- package/src/client/builders/utils.ts +26 -0
- package/src/client/client.ts +264 -0
- package/src/client/externalLiquidityResolver.ts +54 -0
- package/src/client/index.ts +20 -0
- package/src/client/lendingPlatformClients.ts +50 -0
- package/src/client/pda.ts +102 -0
- package/src/client/plans/collectInterest.ts +207 -0
- package/src/client/plans/decreaseCarryPosition.ts +226 -0
- package/src/client/routes/collectInterest.ts +56 -0
- package/src/client/transaction.ts +106 -0
- package/src/client/types/builders.ts +19 -0
- package/src/client/types/enums.ts +47 -0
- package/src/client/types/general.ts +117 -0
- package/src/client/types/index.ts +6 -0
- package/src/client/types/ix.ts +452 -0
- package/src/client/types/planTypes/collectInterest.ts +97 -0
- package/src/client/types/planTypes/common.ts +31 -0
- package/src/client/types/planTypes/decreaseCarryPosition.ts +134 -0
- package/src/client/types/planTypes/index.ts +3 -0
- package/src/client/types/tx.ts +409 -0
- package/src/constants/configs/allocations.ts +30 -0
- package/src/constants/configs/carryTradePresets.ts +164 -0
- package/src/constants/configs/index.ts +2 -0
- package/src/constants/general.ts +141 -0
- package/src/constants/index.ts +3 -0
- package/src/constants/lycTokenMetadata.ts +52 -0
- package/src/decoders/decodeTransaction.ts +319 -0
- package/src/decoders/discriminators.ts +10 -0
- package/src/decoders/idlAccounts.ts +75 -0
- package/src/decoders/index.ts +15 -0
- package/src/decoders/innerCpis.ts +262 -0
- package/src/decoders/lycInstructionNames.ts +73 -0
- package/src/decoders/programIds.ts +12 -0
- package/src/decoders/solana.ts +25 -0
- package/src/decoders/transactionPayload.ts +41 -0
- package/src/decoders/types.ts +60 -0
- package/src/errors.ts +195 -0
- package/src/idl/long_yield_carry.ts +14648 -0
- package/src/index.ts +10 -0
- package/src/metrics/index.ts +1 -0
- package/src/metrics/protocolMetrics.ts +976 -0
- package/src/models/index.ts +9 -0
- package/src/models/lycToken.ts +380 -0
- package/src/models/yieldingBank.ts +127 -0
- package/src/services/allocation/allocationService.ts +823 -0
- package/src/services/allocation/index.ts +2 -0
- package/src/services/allocation/types.ts +27 -0
- package/src/services/carry/carryAllocationConfig.ts +266 -0
- package/src/services/carry/index.ts +2 -0
- package/src/services/carry/lycLendingPositionManager.ts +167 -0
- package/src/services/index.ts +5 -0
- package/src/services/lendingPosition/index.ts +5 -0
- package/src/services/lendingPosition/lendingPositionService.ts +328 -0
- package/src/services/rebalance/index.ts +2 -0
- package/src/services/rebalance/token/index.ts +1 -0
- package/src/services/rebalance/token/tokenRebalanceService.ts +142 -0
- package/src/services/rebalance/yieldingBank/index.ts +3 -0
- package/src/services/rebalance/yieldingBank/planner.ts +215 -0
- package/src/services/rebalance/yieldingBank/strategy.ts +41 -0
- package/src/services/rebalance/yieldingBank/types.ts +41 -0
- package/src/services/redemption/index.ts +9 -0
- package/src/services/redemption/redemptionService.ts +758 -0
- package/src/types/enriched.ts +187 -0
- package/src/types/index.ts +1 -0
- package/src/utils/cache.ts +12 -0
- package/src/utils/data.ts +65 -0
- package/src/utils/enrichment.ts +330 -0
- package/src/utils/feeDripMetrics.ts +146 -0
- package/src/utils/general.ts +54 -0
- package/src/utils/index.ts +13 -0
- package/src/utils/ix.ts +227 -0
- package/src/utils/lendingPosition.ts +221 -0
- package/src/utils/lookupTables.ts +309 -0
- package/src/utils/lycData.ts +321 -0
- package/src/utils/timelock.ts +63 -0
- package/src/utils/tokenFeeMath.ts +25 -0
- package/src/utils/transactions.ts +109 -0
- package/src/utils/yieldingBank.ts +38 -0
- package/tsconfig.json +11 -0
|
@@ -0,0 +1,532 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RedemptionService = void 0;
|
|
4
|
+
const common_1 = require("common");
|
|
5
|
+
const general_1 = require("../../constants/general");
|
|
6
|
+
const lendingPosition_1 = require("../lendingPosition");
|
|
7
|
+
const EPOCH_WINDOW_MS = 60000;
|
|
8
|
+
const DEFAULT_DCP_SWAP_SLIPPAGE_BPS = 100;
|
|
9
|
+
// Retries after the initial attempt (3 attempts total). Each attempt
|
|
10
|
+
// re-fetches a fresh swap quote.
|
|
11
|
+
const DCP_MAX_RETRIES = 2;
|
|
12
|
+
// Mirrors on-chain UTILIZATION_RATE_DEVIATION_THRESHOLD_BPS (150 bps relative margin).
|
|
13
|
+
const UTILIZATION_RATE_DEVIATION_THRESHOLD_BPS = 150;
|
|
14
|
+
// Extra fraction added to partial withdrawals so Kamino rounding never leaves
|
|
15
|
+
// the epoch a few lamports short. 0.1% is well within the utilization margin.
|
|
16
|
+
const WITHDRAWAL_OVERSHOOT_BPS = 10;
|
|
17
|
+
function emptyFundingErrors() {
|
|
18
|
+
return { dcp: [], withdraw: [] };
|
|
19
|
+
}
|
|
20
|
+
function errorMessage(err) {
|
|
21
|
+
return err instanceof Error ? err.message : String(err);
|
|
22
|
+
}
|
|
23
|
+
function errorNameAndMessage(err) {
|
|
24
|
+
if (err instanceof Error)
|
|
25
|
+
return `${err.name}: ${err.message}`;
|
|
26
|
+
return String(err);
|
|
27
|
+
}
|
|
28
|
+
function compactStack(stack) {
|
|
29
|
+
return stack
|
|
30
|
+
.split("\n")
|
|
31
|
+
.map((line) => line.trim())
|
|
32
|
+
.filter(Boolean)
|
|
33
|
+
.slice(0, 12)
|
|
34
|
+
.join(" | ");
|
|
35
|
+
}
|
|
36
|
+
function errorCause(err) {
|
|
37
|
+
return err !== null && typeof err === "object" && "cause" in err
|
|
38
|
+
? err.cause
|
|
39
|
+
: undefined;
|
|
40
|
+
}
|
|
41
|
+
function errorDiagnostics(err) {
|
|
42
|
+
const diagnostics = [];
|
|
43
|
+
let current = err;
|
|
44
|
+
for (let depth = 0; current !== undefined && depth < 4; depth += 1) {
|
|
45
|
+
const prefix = depth === 0 ? "error" : `cause[${depth}]`;
|
|
46
|
+
diagnostics.push(`${prefix}: ${errorNameAndMessage(current)}`);
|
|
47
|
+
if (current instanceof Error && current.stack) {
|
|
48
|
+
diagnostics.push(`${prefix} stack: ${compactStack(current.stack)}`);
|
|
49
|
+
}
|
|
50
|
+
current = errorCause(current);
|
|
51
|
+
}
|
|
52
|
+
return diagnostics;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Orchestrates the redemption epoch lifecycle: detecting open epochs, waiting
|
|
56
|
+
* for their time window to elapse, funding (DCP + top-up), and processing
|
|
57
|
+
* individual async burn requests.
|
|
58
|
+
*
|
|
59
|
+
* Holds a reference to the LYC client and caches yielding-bank PDAs per token
|
|
60
|
+
* so repeated calls against the same token avoid redundant derivation.
|
|
61
|
+
*/
|
|
62
|
+
class RedemptionService {
|
|
63
|
+
constructor(client, opts) {
|
|
64
|
+
this.client = client;
|
|
65
|
+
this.yieldingBankCache = new Map();
|
|
66
|
+
this.dcpSwapSlippageBps = opts?.dcpSwapSlippageBps ?? DEFAULT_DCP_SWAP_SLIPPAGE_BPS;
|
|
67
|
+
this.lpService = new lendingPosition_1.LendingPositionService(client);
|
|
68
|
+
this.structuredLog = opts?.structuredLog;
|
|
69
|
+
}
|
|
70
|
+
// ── Epoch discovery ────────────────────────────────────────────────────────
|
|
71
|
+
/** Delegates to `client.account.fetchAllRedemptionEpochs`. */
|
|
72
|
+
async getAllEpochs() {
|
|
73
|
+
return this.client.account.fetchAllRedemptionEpochs({ fresh: true });
|
|
74
|
+
}
|
|
75
|
+
/** Delegates to `client.account.fetchRedemptionEpoch`. */
|
|
76
|
+
async getEpoch(epochPda) {
|
|
77
|
+
return this.client.account.fetchRedemptionEpoch(epochPda, { fresh: true });
|
|
78
|
+
}
|
|
79
|
+
/** Re-fetches an existing snapshot from on-chain state. */
|
|
80
|
+
async refreshEpoch(epoch) {
|
|
81
|
+
return this.getEpoch(epoch.pda);
|
|
82
|
+
}
|
|
83
|
+
// ── Epoch window ───────────────────────────────────────────────────────────
|
|
84
|
+
/**
|
|
85
|
+
* Returns the number of milliseconds until the epoch's acceptance window
|
|
86
|
+
* closes. Zero or negative means the window has already elapsed.
|
|
87
|
+
*/
|
|
88
|
+
epochWindowRemainingMs(epoch) {
|
|
89
|
+
return Number(epoch.epochId) + EPOCH_WINDOW_MS - Date.now();
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Sleeps until the epoch's 60-second acceptance window has elapsed. Returns
|
|
93
|
+
* immediately if the window is already closed.
|
|
94
|
+
*/
|
|
95
|
+
async waitForEpochWindow(epoch, log) {
|
|
96
|
+
const remainingMs = this.epochWindowRemainingMs(epoch);
|
|
97
|
+
if (remainingMs <= 0) {
|
|
98
|
+
log?.("Epoch window already closed.");
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
log?.(`Waiting ${Math.ceil(remainingMs / 1000)}s for epoch window to close...`);
|
|
102
|
+
await new Promise((resolve) => setTimeout(resolve, remainingMs));
|
|
103
|
+
log?.("Window closed.");
|
|
104
|
+
}
|
|
105
|
+
// ── Status transitions ─────────────────────────────────────────────────────
|
|
106
|
+
/**
|
|
107
|
+
* Transitions an epoch from Open → Funding. Waits for the epoch window to
|
|
108
|
+
* close first so in-flight burns can still land.
|
|
109
|
+
*/
|
|
110
|
+
async closeEpoch(signer, epoch, log) {
|
|
111
|
+
if (epoch.status !== general_1.REDEMPTION_EPOCH_STATUS_OPEN)
|
|
112
|
+
return;
|
|
113
|
+
await this.waitForEpochWindow(epoch, log);
|
|
114
|
+
log?.("Setting status → Funding...");
|
|
115
|
+
const plan = await this.client.tx.setRedemptionEpochStatus.getTx({
|
|
116
|
+
token: epoch.tokenPda,
|
|
117
|
+
redemptionEpoch: epoch.pda,
|
|
118
|
+
params: { status: general_1.REDEMPTION_EPOCH_STATUS_FUNDING },
|
|
119
|
+
});
|
|
120
|
+
await this.client.sendTransaction(signer, plan);
|
|
121
|
+
this.client.clearAllCache();
|
|
122
|
+
}
|
|
123
|
+
/** Transitions an epoch from Funding → Processing. */
|
|
124
|
+
async startProcessing(signer, epoch, log) {
|
|
125
|
+
if (epoch.status > general_1.REDEMPTION_EPOCH_STATUS_FUNDING)
|
|
126
|
+
return;
|
|
127
|
+
log?.("Setting status → Processing...");
|
|
128
|
+
const plan = await this.client.tx.setRedemptionEpochStatus.getTx({
|
|
129
|
+
token: epoch.tokenPda,
|
|
130
|
+
redemptionEpoch: epoch.pda,
|
|
131
|
+
params: { status: general_1.REDEMPTION_EPOCH_STATUS_PROCESSING },
|
|
132
|
+
});
|
|
133
|
+
await this.client.sendTransaction(signer, plan);
|
|
134
|
+
this.client.clearAllCache();
|
|
135
|
+
}
|
|
136
|
+
// ── Funding ────────────────────────────────────────────────────────────────
|
|
137
|
+
/**
|
|
138
|
+
* Funds a redemption epoch. Withdraws from debt-free LPs first (no DCP
|
|
139
|
+
* needed), then — if a deficit remains — runs targeted DCP + withdraw on
|
|
140
|
+
* carry-loaded LPs, prioritizing non-optimal positions.
|
|
141
|
+
*/
|
|
142
|
+
async fundEpoch(signer, epoch, log) {
|
|
143
|
+
const fundingErrors = emptyFundingErrors();
|
|
144
|
+
const fresh = await this.refreshEpoch(epoch);
|
|
145
|
+
if (this.isFullyFunded(fresh)) {
|
|
146
|
+
log?.("Already fully funded.");
|
|
147
|
+
return this.fundResult(fresh, fundingErrors);
|
|
148
|
+
}
|
|
149
|
+
const token = await this.client.account.fetchToken(fresh.tokenPda, { fresh: true });
|
|
150
|
+
const decimals = token.data.collateral.decimals;
|
|
151
|
+
const deficitUi = this.deficitUi(fresh, decimals);
|
|
152
|
+
log?.(`Deficit: ${deficitUi}`);
|
|
153
|
+
await this.fundFromDebtFreeLps(signer, token, fresh, decimals, fundingErrors, log);
|
|
154
|
+
const afterDirect = await this.refreshEpoch(epoch);
|
|
155
|
+
if (this.isFullyFunded(afterDirect)) {
|
|
156
|
+
log?.("Fully funded from debt-free LPs — no DCP needed.");
|
|
157
|
+
return this.fundResult(afterDirect, fundingErrors);
|
|
158
|
+
}
|
|
159
|
+
await this.fundFromCarryLps(signer, fresh.tokenPda, afterDirect, decimals, fundingErrors, log);
|
|
160
|
+
const afterCarry = await this.refreshEpoch(epoch);
|
|
161
|
+
if (this.isFullyFunded(afterCarry)) {
|
|
162
|
+
log?.("Fully funded.");
|
|
163
|
+
return this.fundResult(afterCarry, fundingErrors);
|
|
164
|
+
}
|
|
165
|
+
await this.creditResidualUnlent(signer, afterCarry, decimals, log);
|
|
166
|
+
const afterResidual = await this.refreshEpoch(epoch);
|
|
167
|
+
if (this.isFullyFunded(afterResidual)) {
|
|
168
|
+
log?.("Fully funded from lending positions and residual unlent reserves.");
|
|
169
|
+
}
|
|
170
|
+
return this.fundResult(afterResidual, fundingErrors);
|
|
171
|
+
}
|
|
172
|
+
// ── Request processing ─────────────────────────────────────────────────────
|
|
173
|
+
/**
|
|
174
|
+
* Processes all remaining async burn requests in a redemption epoch in FIFO
|
|
175
|
+
* order.
|
|
176
|
+
*/
|
|
177
|
+
async processRequests(signer, epoch, log) {
|
|
178
|
+
const snap = await this.refreshEpoch(epoch);
|
|
179
|
+
let processed = 0;
|
|
180
|
+
for (let seq = snap.processedRequestCount; seq < snap.requestCount; seq++) {
|
|
181
|
+
const plan = await this.client.tx.processAsyncBurn.getTx({
|
|
182
|
+
token: snap.tokenPda,
|
|
183
|
+
params: { epochId: snap.epochId, sequence: seq },
|
|
184
|
+
});
|
|
185
|
+
const debug = plan.debug?.processAsyncBurn;
|
|
186
|
+
if (debug) {
|
|
187
|
+
const payoutTarget = debug.collateralDelivery === "nativeSol"
|
|
188
|
+
? `native SOL via request escrow ${debug.requestCollateralAccount ?? "unknown"}`
|
|
189
|
+
: `user collateral ATA ${debug.userCollateralAccount ?? "unknown"}`;
|
|
190
|
+
log?.(`Request ${seq}: user ${debug.user}, payout ${payoutTarget}`);
|
|
191
|
+
}
|
|
192
|
+
const sig = await this.client.sendTransaction(signer, plan);
|
|
193
|
+
log?.(`Request ${seq}: ${sig}`);
|
|
194
|
+
this.client.clearAllCache();
|
|
195
|
+
processed++;
|
|
196
|
+
}
|
|
197
|
+
return { requestsProcessed: processed };
|
|
198
|
+
}
|
|
199
|
+
// ── Full lifecycle ─────────────────────────────────────────────────────────
|
|
200
|
+
/**
|
|
201
|
+
* Runs the complete epoch lifecycle: close → fund → transition to
|
|
202
|
+
* processing → process all requests.
|
|
203
|
+
*
|
|
204
|
+
* Returns true if the epoch was fully processed and closed.
|
|
205
|
+
*/
|
|
206
|
+
async processEpoch(signer, epoch, log) {
|
|
207
|
+
await this.closeEpoch(signer, epoch, log);
|
|
208
|
+
const afterClose = await this.refreshEpoch(epoch);
|
|
209
|
+
const fundResult = await this.fundEpoch(signer, afterClose, log);
|
|
210
|
+
if (fundResult.errors.dcp.length > 0 || fundResult.errors.withdraw.length > 0) {
|
|
211
|
+
const summary = `${fundResult.errors.dcp.length} DCP failure(s), ${fundResult.errors.withdraw.length} withdraw failure(s)`;
|
|
212
|
+
log?.(`Funding phase recorded ${summary}.`);
|
|
213
|
+
this.structuredLog?.({
|
|
214
|
+
level: "warn",
|
|
215
|
+
event: "redemption_epoch_funding_failures",
|
|
216
|
+
data: {
|
|
217
|
+
epochPda: afterClose.pda,
|
|
218
|
+
tokenPda: afterClose.tokenPda,
|
|
219
|
+
dcp: fundResult.errors.dcp,
|
|
220
|
+
withdraw: fundResult.errors.withdraw,
|
|
221
|
+
},
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
if (!fundResult.funded) {
|
|
225
|
+
log?.(`Epoch underfunded (${fundResult.fundedCollateral} / ${fundResult.grossCollateralClaim}; ` +
|
|
226
|
+
`realized unwind loss ${fundResult.realizedUnwindLoss}).`);
|
|
227
|
+
return false;
|
|
228
|
+
}
|
|
229
|
+
const afterFunding = await this.refreshEpoch(afterClose);
|
|
230
|
+
await this.startProcessing(signer, afterFunding, log);
|
|
231
|
+
const processingEpoch = await this.refreshEpoch(afterFunding);
|
|
232
|
+
const remaining = processingEpoch.requestCount - processingEpoch.processedRequestCount;
|
|
233
|
+
log?.(`Processing ${remaining} request(s)...`);
|
|
234
|
+
await this.processRequests(signer, processingEpoch, log);
|
|
235
|
+
return true;
|
|
236
|
+
}
|
|
237
|
+
// ── Cache management ───────────────────────────────────────────────────────
|
|
238
|
+
clearYieldingBankCache() {
|
|
239
|
+
this.yieldingBankCache.clear();
|
|
240
|
+
}
|
|
241
|
+
// ── Private: funding phases ───────────────────────────────────────────────
|
|
242
|
+
/**
|
|
243
|
+
* Credits only the residual shortfall from collateral already sitting in the
|
|
244
|
+
* token PDA's unlent reserve. LP withdrawals run first so existing reserves
|
|
245
|
+
* are used as the tail of mixed LP/unlent funding, not the first source.
|
|
246
|
+
*/
|
|
247
|
+
async creditResidualUnlent(signer, epoch, decimals, log) {
|
|
248
|
+
const current = await this.refreshEpoch(epoch);
|
|
249
|
+
const shortfall = current.grossCollateralClaim - current.fundedCollateral;
|
|
250
|
+
if (shortfall <= 0n)
|
|
251
|
+
return;
|
|
252
|
+
const token = await this.client.account.fetchToken(current.tokenPda, { fresh: true });
|
|
253
|
+
const rawUnlent = token.data.collateral.unlentAmount;
|
|
254
|
+
const unlent = rawUnlent === undefined ? 0n : (0, common_1.toBigInt)(rawUnlent);
|
|
255
|
+
const uncreditedUnlent = unlent > current.fundedCollateral ? unlent - current.fundedCollateral : 0n;
|
|
256
|
+
if (uncreditedUnlent === 0n)
|
|
257
|
+
return;
|
|
258
|
+
const credit = shortfall < uncreditedUnlent ? shortfall : uncreditedUnlent;
|
|
259
|
+
log?.(`Crediting residual unlent reserves (${(0, common_1.toUiAmount)(credit, decimals)}) to epoch...`);
|
|
260
|
+
const plan = await this.client.tx.creditUnlentToRedemptionEpoch.getTx({
|
|
261
|
+
token: token.address,
|
|
262
|
+
redemptionEpoch: current.pda,
|
|
263
|
+
});
|
|
264
|
+
await this.client.sendTransaction(signer, plan);
|
|
265
|
+
this.client.clearAllCache();
|
|
266
|
+
}
|
|
267
|
+
/** Phase 1: withdraw directly from LPs that have no debt (no DCP needed). */
|
|
268
|
+
async fundFromDebtFreeLps(signer, token, epoch, decimals, fundingErrors, log) {
|
|
269
|
+
const debtFreeLps = token.usedLendingPositions.filter((lp) => (0, common_1.toBigInt)(lp.data.accounting.debt.amount) === 0n);
|
|
270
|
+
if (debtFreeLps.length === 0) {
|
|
271
|
+
log?.("No debt-free LP collateral available for direct withdrawal.");
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
log?.(`${debtFreeLps.length} debt-free LP(s) — withdrawing directly...`);
|
|
275
|
+
await this.withdrawFromLps(signer, epoch, decimals, debtFreeLps, fundingErrors, log);
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Phase 2: DCP + withdraw from carry-loaded LPs, sorted so non-optimal
|
|
279
|
+
* positions are unwound first.
|
|
280
|
+
*/
|
|
281
|
+
async fundFromCarryLps(signer, tokenPda, epoch, decimals, fundingErrors, log) {
|
|
282
|
+
const remainingDeficitUi = this.deficitUi(epoch, decimals);
|
|
283
|
+
log?.(`Remaining deficit after debt-free withdrawals: ${remainingDeficitUi}`);
|
|
284
|
+
const token = await this.client.account.fetchToken(tokenPda, { fresh: true });
|
|
285
|
+
const carryLps = token.usedLendingPositions.filter((lp) => (0, common_1.toBigInt)(lp.data.accounting.debt.amount) > 0n);
|
|
286
|
+
if (carryLps.length === 0) {
|
|
287
|
+
log?.("No carry-loaded LP collateral available for DCP funding.");
|
|
288
|
+
return;
|
|
289
|
+
}
|
|
290
|
+
const sorted = await this.lpService.sortByOptimality(token, carryLps, log);
|
|
291
|
+
await this.dcpAcrossLps(signer, token, epoch, remainingDeficitUi, decimals, sorted, fundingErrors, log);
|
|
292
|
+
await this.withdrawFromLps(signer, epoch, decimals, sorted, fundingErrors, log);
|
|
293
|
+
}
|
|
294
|
+
// ── Private: DCP ──────────────────────────────────────────────────────────
|
|
295
|
+
/**
|
|
296
|
+
* Runs a targeted DCP on each LP that needs collateral freed. Iterates `lps`
|
|
297
|
+
* in the caller-provided order (non-optimal positions first).
|
|
298
|
+
*/
|
|
299
|
+
async dcpAcrossLps(signer, token, epoch, totalDeficitUi, decimals, lps, fundingErrors, log) {
|
|
300
|
+
if (token.activeCarryPositions.length === 0)
|
|
301
|
+
return;
|
|
302
|
+
const fallbackBanks = await this.resolveYieldingBanks(token);
|
|
303
|
+
const fallbackBank = fallbackBanks[0];
|
|
304
|
+
if (!fallbackBank)
|
|
305
|
+
return;
|
|
306
|
+
let remainingDeficitUi = totalDeficitUi;
|
|
307
|
+
for (const lp of lps) {
|
|
308
|
+
if (remainingDeficitUi <= 0)
|
|
309
|
+
break;
|
|
310
|
+
const lpCollateralUi = (0, common_1.toUiAmount)((0, common_1.toBigInt)(lp.data.accounting.collateral), decimals);
|
|
311
|
+
// Skip DCP only when the amount this LP must supply (plus the withdrawal
|
|
312
|
+
// overshoot) can be withdrawn directly while keeping post-withdraw
|
|
313
|
+
// utilization within the on-chain threshold. Current utilization being
|
|
314
|
+
// in range is not enough: withdrawing collateral with debt outstanding
|
|
315
|
+
// raises utilization, and both Kamino's max LTV and the
|
|
316
|
+
// top_up_unlent_reserves post-withdraw check validate the resulting state.
|
|
317
|
+
const neededUi = Math.min(remainingDeficitUi, lpCollateralUi);
|
|
318
|
+
const neededWithOvershootUi = neededUi * (1 + WITHDRAWAL_OVERSHOOT_BPS / 10000);
|
|
319
|
+
const maxDirectUi = (0, common_1.toUiAmount)(this.maxDirectWithdrawal(lp), decimals);
|
|
320
|
+
if (maxDirectUi >= neededWithOvershootUi) {
|
|
321
|
+
log?.(`DCP LP[${lp.index}] skipped — needed ${neededUi} within direct-withdrawal headroom (${maxDirectUi}).`);
|
|
322
|
+
remainingDeficitUi -= neededUi;
|
|
323
|
+
continue;
|
|
324
|
+
}
|
|
325
|
+
const fullUnwind = remainingDeficitUi >= lpCollateralUi;
|
|
326
|
+
const dcpSucceeded = await this.dcpSingleLp(signer, epoch, lp, fallbackBank, fullUnwind, neededUi, fundingErrors, log);
|
|
327
|
+
if (dcpSucceeded) {
|
|
328
|
+
remainingDeficitUi -= neededUi;
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Max collateral (native units) withdrawable from an LP without a prior DCP.
|
|
334
|
+
*
|
|
335
|
+
* TopUpUnlentReserves re-checks `is_utilization_rate_at_or_below_target`
|
|
336
|
+
* AFTER the withdrawal (util <= target + target * threshold / 10_000), and
|
|
337
|
+
* utilization scales as `util_after = util * collateral / (collateral - w)`
|
|
338
|
+
* when debt and prices stay constant (mirrors on-chain
|
|
339
|
+
* `simulate_utilization_rate_bps_after_collateral_withdraw`). Inverting
|
|
340
|
+
* against the upper bound gives:
|
|
341
|
+
* w_max = collateral * (limit - util) / limit
|
|
342
|
+
*/
|
|
343
|
+
maxDirectWithdrawal(lp) {
|
|
344
|
+
const collateral = (0, common_1.toBigInt)(lp.data.accounting.collateral);
|
|
345
|
+
const utilBps = BigInt(lp.data.accounting.ltvUtilizationRateBps);
|
|
346
|
+
if (utilBps === 0n)
|
|
347
|
+
return collateral;
|
|
348
|
+
const target = lp.data.config.targetUtilizationRateBps;
|
|
349
|
+
const margin = Math.floor((target * UTILIZATION_RATE_DEVIATION_THRESHOLD_BPS) / 10000);
|
|
350
|
+
const limitBps = BigInt(Math.min(target + margin, 10000));
|
|
351
|
+
if (utilBps >= limitBps)
|
|
352
|
+
return 0n;
|
|
353
|
+
return (collateral * (limitBps - utilBps)) / limitBps;
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Executes a single DCP on one lending position with retry logic. Uses full
|
|
357
|
+
* unwind (target utilization 0) when the deficit exceeds the LP's collateral,
|
|
358
|
+
* otherwise uses `collateralWithdrawal` steering.
|
|
359
|
+
*/
|
|
360
|
+
async dcpSingleLp(signer, epoch, lp, yieldingBank, fullUnwind, withdrawUi, fundingErrors, log) {
|
|
361
|
+
const repaySteering = fullUnwind
|
|
362
|
+
? {
|
|
363
|
+
mode: "explicitTargetUtilization",
|
|
364
|
+
targetUtilizationRateBps: 0,
|
|
365
|
+
}
|
|
366
|
+
: {
|
|
367
|
+
mode: "collateralWithdrawal",
|
|
368
|
+
collateralWithdrawalUiAmount: withdrawUi,
|
|
369
|
+
allowBelowTargetOnChain: true,
|
|
370
|
+
};
|
|
371
|
+
const label = fullUnwind ? "full unwind" : "collateralWithdrawal steering";
|
|
372
|
+
log?.(`DCP LP[${lp.index}] (${label})...`);
|
|
373
|
+
let lastError = "unknown error";
|
|
374
|
+
for (let attempt = 0; attempt <= DCP_MAX_RETRIES; attempt++) {
|
|
375
|
+
if (attempt > 0) {
|
|
376
|
+
log?.(`DCP LP[${lp.index}] retry ${attempt}/${DCP_MAX_RETRIES}...`);
|
|
377
|
+
this.client.clearAllCache();
|
|
378
|
+
}
|
|
379
|
+
const attemptLabel = `${attempt + 1}/${DCP_MAX_RETRIES + 1}`;
|
|
380
|
+
log?.(`DCP LP[${lp.index}] attempt ${attemptLabel}: building plan ` +
|
|
381
|
+
`(token=${epoch.tokenPda}, epoch=${epoch.pda}, yieldingBank=${yieldingBank}, signer=${signer.address}).`);
|
|
382
|
+
let plan;
|
|
383
|
+
try {
|
|
384
|
+
plan = await this.client.tx.decreaseCarryPosition.getTx({
|
|
385
|
+
signer: signer.address,
|
|
386
|
+
token: epoch.tokenPda,
|
|
387
|
+
redemptionEpoch: epoch.pda,
|
|
388
|
+
params: {
|
|
389
|
+
lendingPositionIndex: lp.index,
|
|
390
|
+
yieldingBank,
|
|
391
|
+
swapSlippageBps: this.dcpSwapSlippageBps,
|
|
392
|
+
...(repaySteering ? { repaySteering } : {}),
|
|
393
|
+
},
|
|
394
|
+
});
|
|
395
|
+
}
|
|
396
|
+
catch (err) {
|
|
397
|
+
lastError = errorMessage(err);
|
|
398
|
+
log?.(`DCP LP[${lp.index}] plan build failed: ${lastError}`);
|
|
399
|
+
for (const detail of errorDiagnostics(err)) {
|
|
400
|
+
log?.(`DCP LP[${lp.index}] plan build ${detail}`);
|
|
401
|
+
}
|
|
402
|
+
continue;
|
|
403
|
+
}
|
|
404
|
+
log?.(`DCP LP[${lp.index}] attempt ${attemptLabel}: plan built ` +
|
|
405
|
+
`(${plan.instructions.length} ix, ${plan.lookupTables?.length ?? 0} LUT(s)); sending transaction.`);
|
|
406
|
+
try {
|
|
407
|
+
await this.client.sendTransaction(signer, plan);
|
|
408
|
+
this.client.clearAllCache();
|
|
409
|
+
log?.(`DCP LP[${lp.index}] done.`);
|
|
410
|
+
return true;
|
|
411
|
+
}
|
|
412
|
+
catch (err) {
|
|
413
|
+
lastError = errorMessage(err);
|
|
414
|
+
log?.(`DCP LP[${lp.index}] send failed: ${lastError}`);
|
|
415
|
+
for (const detail of errorDiagnostics(err)) {
|
|
416
|
+
log?.(`DCP LP[${lp.index}] send ${detail}`);
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
log?.(`DCP LP[${lp.index}] exhausted retries — continuing.`);
|
|
421
|
+
fundingErrors.dcp.push({ lpIndex: lp.index, message: lastError });
|
|
422
|
+
return false;
|
|
423
|
+
}
|
|
424
|
+
// ── Private: top-up withdrawals ───────────────────────────────────────────
|
|
425
|
+
/**
|
|
426
|
+
* Withdraws collateral from lending positions into unlent reserves, crediting
|
|
427
|
+
* the redemption epoch. Stops as soon as the epoch is fully funded.
|
|
428
|
+
*/
|
|
429
|
+
async withdrawFromLps(signer, epoch, decimals, lps, fundingErrors, log) {
|
|
430
|
+
for (const lp of lps) {
|
|
431
|
+
const current = await this.refreshEpoch(epoch);
|
|
432
|
+
if (this.isFullyFunded(current))
|
|
433
|
+
break;
|
|
434
|
+
// Re-fetch the LP so post-DCP debt/collateral (and thus utilization) are
|
|
435
|
+
// current — the caller's snapshot predates any DCPs run this funding pass.
|
|
436
|
+
const token = await this.client.account.fetchToken(epoch.tokenPda, { fresh: true });
|
|
437
|
+
const freshLp = token.usedLendingPositions.find((p) => p.index === lp.index);
|
|
438
|
+
if (!freshLp)
|
|
439
|
+
continue;
|
|
440
|
+
const remainingDeficit = current.grossCollateralClaim - current.fundedCollateral;
|
|
441
|
+
const lpCollateral = (0, common_1.toBigInt)(freshLp.data.accounting.collateral);
|
|
442
|
+
// For partial withdrawals, overshoot slightly so Kamino rounding never
|
|
443
|
+
// leaves the epoch a few lamports short of fully funded.
|
|
444
|
+
const overshoot = (remainingDeficit * BigInt(WITHDRAWAL_OVERSHOOT_BPS)) / 10000n;
|
|
445
|
+
const withOvershoot = remainingDeficit + overshoot;
|
|
446
|
+
const requested = withOvershoot < lpCollateral
|
|
447
|
+
? withOvershoot
|
|
448
|
+
: remainingDeficit < lpCollateral
|
|
449
|
+
? remainingDeficit
|
|
450
|
+
: lpCollateral;
|
|
451
|
+
// Cap at what the post-withdraw utilization checks (Kamino max LTV and
|
|
452
|
+
// on-chain is_utilization_rate_at_or_below_target) allow with the LP's
|
|
453
|
+
// remaining debt.
|
|
454
|
+
const maxWithdraw = this.maxDirectWithdrawal(freshLp);
|
|
455
|
+
if (maxWithdraw === 0n) {
|
|
456
|
+
log?.(`LP[${lp.index}]: skipped — no utilization headroom for a direct withdrawal.`);
|
|
457
|
+
continue;
|
|
458
|
+
}
|
|
459
|
+
const amount = requested < maxWithdraw ? requested : maxWithdraw;
|
|
460
|
+
if (amount < requested) {
|
|
461
|
+
log?.(`LP[${lp.index}]: capping withdrawal at utilization headroom (${(0, common_1.toUiAmount)(maxWithdraw, decimals)}).`);
|
|
462
|
+
}
|
|
463
|
+
const drainAll = amount >= lpCollateral;
|
|
464
|
+
const fundsFully = amount >= remainingDeficit;
|
|
465
|
+
const uiAmount = drainAll ? "all" : (0, common_1.toUiAmount)(amount, decimals);
|
|
466
|
+
log?.(`LP[${lp.index}]: withdrawing ${drainAll ? "all" : uiAmount}...`);
|
|
467
|
+
try {
|
|
468
|
+
const plan = await this.client.tx.topUpUnlentReserves.getTx({
|
|
469
|
+
token: epoch.tokenPda,
|
|
470
|
+
params: {
|
|
471
|
+
lendingPositionIndex: lp.index,
|
|
472
|
+
uiAmount,
|
|
473
|
+
redemptionEpoch: epoch.pda,
|
|
474
|
+
},
|
|
475
|
+
});
|
|
476
|
+
if (!drainAll && fundsFully) {
|
|
477
|
+
// Bundle Funding → Processing in the same tx. On-chain the status
|
|
478
|
+
// instruction validates funded_collateral >= gross_collateral_claim,
|
|
479
|
+
// so the whole tx rolls back atomically if the withdrawal fell short.
|
|
480
|
+
const statusIx = await this.client.tx.setRedemptionEpochStatus.getIx({
|
|
481
|
+
token: epoch.tokenPda,
|
|
482
|
+
redemptionEpoch: epoch.pda,
|
|
483
|
+
params: { status: general_1.REDEMPTION_EPOCH_STATUS_PROCESSING },
|
|
484
|
+
});
|
|
485
|
+
plan.instructions.push(statusIx);
|
|
486
|
+
}
|
|
487
|
+
await this.client.sendTransaction(signer, plan);
|
|
488
|
+
this.client.clearAllCache();
|
|
489
|
+
if (fundsFully)
|
|
490
|
+
break;
|
|
491
|
+
}
|
|
492
|
+
catch (err) {
|
|
493
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
494
|
+
log?.(`LP[${lp.index}] withdraw failed: ${message}`);
|
|
495
|
+
fundingErrors.withdraw.push({ lpIndex: lp.index, message });
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
// ── Private: utilities ────────────────────────────────────────────────────
|
|
500
|
+
isFullyFunded(epoch) {
|
|
501
|
+
return epoch.fundedCollateral >= epoch.grossCollateralClaim;
|
|
502
|
+
}
|
|
503
|
+
deficitUi(epoch, decimals) {
|
|
504
|
+
return (0, common_1.toUiAmount)(epoch.grossCollateralClaim - epoch.fundedCollateral, decimals);
|
|
505
|
+
}
|
|
506
|
+
fundResult(epoch, errors) {
|
|
507
|
+
return {
|
|
508
|
+
funded: this.isFullyFunded(epoch),
|
|
509
|
+
fundedCollateral: epoch.fundedCollateral,
|
|
510
|
+
grossCollateralClaim: epoch.grossCollateralClaim,
|
|
511
|
+
realizedUnwindLoss: epoch.realizedUnwindLoss,
|
|
512
|
+
errors,
|
|
513
|
+
};
|
|
514
|
+
}
|
|
515
|
+
async resolveYieldingBanks(token) {
|
|
516
|
+
const cached = this.yieldingBankCache.get(token.address);
|
|
517
|
+
if (cached)
|
|
518
|
+
return cached;
|
|
519
|
+
const seen = new Set();
|
|
520
|
+
const banks = [];
|
|
521
|
+
for (const carry of token.activeCarryPositions) {
|
|
522
|
+
const bankPda = await token.deriveYieldingBankAddressForDebtCarryIndex(carry.index, this.client.pda);
|
|
523
|
+
if (!seen.has(bankPda)) {
|
|
524
|
+
seen.add(bankPda);
|
|
525
|
+
banks.push(bankPda);
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
this.yieldingBankCache.set(token.address, banks);
|
|
529
|
+
return banks;
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
exports.RedemptionService = RedemptionService;
|