@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
package/dist/shared/lending-platforms/src/services/lendingPosition/lendingPositionManager.d.ts
ADDED
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { type Address } from "@solana/kit";
|
|
2
|
+
import { type Environment } from "common";
|
|
3
|
+
import { LendingPlatformData } from "../../data/platform/lpDataBase";
|
|
4
|
+
import { ReserveBase } from "../../data/reserve/reserveBase";
|
|
5
|
+
import { ReservesManager } from "../reservesManager";
|
|
6
|
+
import type { CollateralPriceTriggerBand, LendingPositionInspectMetrics, LendingPositionState, LendingPositionUtilizationPrices, LendingPositionUtilizationRatesBps } from "./types";
|
|
7
|
+
/**
|
|
8
|
+
* Manages a leveraged lending position (collateral/debt pair): sizing decisions,
|
|
9
|
+
* threshold triggers, and realtime/EMA-priced state. Wraps a {@link ReservesManager}.
|
|
10
|
+
*
|
|
11
|
+
* Generic across protocols — the constructor takes pool + user-account addresses
|
|
12
|
+
* directly. SDK-specific subclasses may add convenience wrappers that derive
|
|
13
|
+
* targets from their own on-chain config.
|
|
14
|
+
*/
|
|
15
|
+
export declare class LendingPositionManager {
|
|
16
|
+
readonly lpData: LendingPlatformData;
|
|
17
|
+
readonly pool: Address;
|
|
18
|
+
readonly userAccount: Address;
|
|
19
|
+
readonly reservesManager: ReservesManager;
|
|
20
|
+
constructor(lpData: LendingPlatformData, pool: Address, userAccount: Address, collateralReserve: ReserveBase, debtReserve: ReserveBase, environment?: Environment);
|
|
21
|
+
/**
|
|
22
|
+
* Calculates the UI debt amount change needed to reach the target LTV utilization
|
|
23
|
+
* rate. Positive values indicate borrowing; negative values indicate repaying.
|
|
24
|
+
*/
|
|
25
|
+
calcDebtChangeAmount(targetUtilizationRateBps: number): Promise<number>;
|
|
26
|
+
/**
|
|
27
|
+
* Fetch current supply and debt position amounts in UI units.
|
|
28
|
+
*/
|
|
29
|
+
getLendingPositionAmounts(): Promise<{
|
|
30
|
+
supplyUiAmount: number;
|
|
31
|
+
debtUiAmount: number;
|
|
32
|
+
}>;
|
|
33
|
+
/**
|
|
34
|
+
* Calculates the utilization rate the source position must reach before a
|
|
35
|
+
* collateral withdrawal so that, after the withdrawal, the position lands at
|
|
36
|
+
* the desired target utilization rate.
|
|
37
|
+
*
|
|
38
|
+
* Units:
|
|
39
|
+
* - current supply USD = supplied collateral before withdrawal
|
|
40
|
+
* - withdrawn USD = collateral requested for the rebalance move
|
|
41
|
+
* - post-withdraw target = desired utilization after collateral leaves the LP
|
|
42
|
+
*
|
|
43
|
+
* Formula:
|
|
44
|
+
* pre_withdraw_target = post_withdraw_target * (current_supply - withdrawn) / current_supply
|
|
45
|
+
*
|
|
46
|
+
* The result is floored to stay conservatively at or below the requested
|
|
47
|
+
* post-withdraw target once integer basis-point rounding is applied.
|
|
48
|
+
*/
|
|
49
|
+
calcPreWithdrawalTargetUtilizationRateBps(withdrawUiCollateralAmount: number, postWithdrawalTargetUtilizationRateBps: number): Promise<number>;
|
|
50
|
+
/**
|
|
51
|
+
* Calculates the UI debt amount change needed before a collateral withdrawal
|
|
52
|
+
* so that the position lands at the desired utilization rate after the
|
|
53
|
+
* withdrawal completes.
|
|
54
|
+
*/
|
|
55
|
+
calcDebtChangeAmountForCollateralWithdrawal(withdrawUiCollateralAmount: number, postWithdrawalTargetUtilizationRateBps: number): Promise<number>;
|
|
56
|
+
/**
|
|
57
|
+
* Calculates the utilization rate after withdrawing collateral while leaving
|
|
58
|
+
* debt unchanged.
|
|
59
|
+
*/
|
|
60
|
+
calcPostWithdrawalUtilizationRateBps(withdrawUiCollateralAmount: number): Promise<number>;
|
|
61
|
+
/**
|
|
62
|
+
* For burn-token liquidity management: checks that a withdrawal of
|
|
63
|
+
* `collateralWithdrawalUiAmount` (collateral mint UI units) leaves strictly
|
|
64
|
+
* positive supplied collateral, matching the pre-withdraw math used in
|
|
65
|
+
* {@link calcPreWithdrawalTargetUtilizationRateBps}.
|
|
66
|
+
*
|
|
67
|
+
* Returns realtime LTV utilization in basis points when eligible; null when the
|
|
68
|
+
* obligation is missing, has no supply, prices are invalid, or the withdrawal
|
|
69
|
+
* would consume the full (or more than the full) collateral position.
|
|
70
|
+
*/
|
|
71
|
+
getBurnUnwindEligibility(collateralWithdrawalUiAmount: number): Promise<{
|
|
72
|
+
utilizationRateBps: number;
|
|
73
|
+
} | null>;
|
|
74
|
+
/**
|
|
75
|
+
* Returns the collateral price levels that would place the position exactly on
|
|
76
|
+
* its lower and upper utilization trigger bands.
|
|
77
|
+
*
|
|
78
|
+
* The lower-band trigger uses EMA pricing (to mirror boost-trigger semantics),
|
|
79
|
+
* while the upper-band trigger uses realtime pricing (to mirror unwind-trigger
|
|
80
|
+
* semantics).
|
|
81
|
+
*/
|
|
82
|
+
getCollateralPriceTriggerBand(params: {
|
|
83
|
+
lowerTargetUtilizationRateBps: number;
|
|
84
|
+
upperTargetUtilizationRateBps: number;
|
|
85
|
+
}): Promise<CollateralPriceTriggerBand>;
|
|
86
|
+
getUtilizationRatesBps(): Promise<LendingPositionUtilizationRatesBps | null>;
|
|
87
|
+
getUtilizationPrices(): Promise<LendingPositionUtilizationPrices | null>;
|
|
88
|
+
getInspectMetrics(params: {
|
|
89
|
+
lowerTargetUtilizationRateBps: number;
|
|
90
|
+
upperTargetUtilizationRateBps: number;
|
|
91
|
+
}): Promise<LendingPositionInspectMetrics | null>;
|
|
92
|
+
protected getPositionState(mode: "realtime" | "ema"): Promise<LendingPositionState | null>;
|
|
93
|
+
private calcPositionSupplyDebtUsd;
|
|
94
|
+
private selectPrice;
|
|
95
|
+
private getCollateralPriceTriggerLevel;
|
|
96
|
+
/**
|
|
97
|
+
* Solve for collateral price at a target utilization:
|
|
98
|
+
* utilization = debtUsd / (collateralAmount * collateralPrice * maxLtv).
|
|
99
|
+
*/
|
|
100
|
+
private calcCollateralPriceForTargetUtilization;
|
|
101
|
+
private calcDebtChangeAmountFromState;
|
|
102
|
+
/**
|
|
103
|
+
* Quantize to the debt mint's base-unit precision. Borrows floor; repays round
|
|
104
|
+
* away from zero so deleveraging does not undershoot.
|
|
105
|
+
*/
|
|
106
|
+
private quantizeDebtChangeUiAmount;
|
|
107
|
+
/** Cap positive borrows to obligation headroom when the platform exposes it. */
|
|
108
|
+
private capPositiveBorrowToProtocolHeadroom;
|
|
109
|
+
private calcPreWithdrawalTargetUtilizationRateBpsFromState;
|
|
110
|
+
private calcPostWithdrawalUtilizationRateBpsFromState;
|
|
111
|
+
protected assertValidUtilizationRateBps(value: number, field: string): void;
|
|
112
|
+
/**
|
|
113
|
+
* Unwind/boost trigger bands may exceed 100% LTV utilization (up to 10_500 bps
|
|
114
|
+
* on-chain). Debt-sizing paths still use {@link assertValidUtilizationRateBps}.
|
|
115
|
+
*/
|
|
116
|
+
protected assertValidTriggerBandUtilizationRateBps(value: number, field: string): void;
|
|
117
|
+
}
|
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LendingPositionManager = void 0;
|
|
4
|
+
const core_1 = require("@anchor-lang/core");
|
|
5
|
+
const common_1 = require("common");
|
|
6
|
+
const lendingPosition_1 = require("../../constants/lendingPosition");
|
|
7
|
+
const reservesManager_1 = require("../reservesManager");
|
|
8
|
+
/**
|
|
9
|
+
* Manages a leveraged lending position (collateral/debt pair): sizing decisions,
|
|
10
|
+
* threshold triggers, and realtime/EMA-priced state. Wraps a {@link ReservesManager}.
|
|
11
|
+
*
|
|
12
|
+
* Generic across protocols — the constructor takes pool + user-account addresses
|
|
13
|
+
* directly. SDK-specific subclasses may add convenience wrappers that derive
|
|
14
|
+
* targets from their own on-chain config.
|
|
15
|
+
*/
|
|
16
|
+
class LendingPositionManager {
|
|
17
|
+
constructor(lpData, pool, userAccount, collateralReserve, debtReserve, environment) {
|
|
18
|
+
this.lpData = lpData;
|
|
19
|
+
this.pool = pool;
|
|
20
|
+
this.userAccount = userAccount;
|
|
21
|
+
this.reservesManager = new reservesManager_1.ReservesManager(collateralReserve, debtReserve, environment);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Calculates the UI debt amount change needed to reach the target LTV utilization
|
|
25
|
+
* rate. Positive values indicate borrowing; negative values indicate repaying.
|
|
26
|
+
*/
|
|
27
|
+
async calcDebtChangeAmount(targetUtilizationRateBps) {
|
|
28
|
+
const state = await this.getPositionState("realtime");
|
|
29
|
+
if (!state)
|
|
30
|
+
return 0;
|
|
31
|
+
return this.calcDebtChangeAmountFromState(state, targetUtilizationRateBps);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Fetch current supply and debt position amounts in UI units.
|
|
35
|
+
*/
|
|
36
|
+
async getLendingPositionAmounts() {
|
|
37
|
+
const state = await this.getPositionState("realtime");
|
|
38
|
+
if (!state)
|
|
39
|
+
return { supplyUiAmount: 0, debtUiAmount: 0 };
|
|
40
|
+
const supplyPrice = state.prices.supply.realtimePrice;
|
|
41
|
+
const debtPrice = state.prices.debt.realtimePrice;
|
|
42
|
+
return {
|
|
43
|
+
supplyUiAmount: supplyPrice > 0 ? state.supplyUsd / supplyPrice : 0,
|
|
44
|
+
debtUiAmount: debtPrice > 0 ? state.debtUsd / debtPrice : 0,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Calculates the utilization rate the source position must reach before a
|
|
49
|
+
* collateral withdrawal so that, after the withdrawal, the position lands at
|
|
50
|
+
* the desired target utilization rate.
|
|
51
|
+
*
|
|
52
|
+
* Units:
|
|
53
|
+
* - current supply USD = supplied collateral before withdrawal
|
|
54
|
+
* - withdrawn USD = collateral requested for the rebalance move
|
|
55
|
+
* - post-withdraw target = desired utilization after collateral leaves the LP
|
|
56
|
+
*
|
|
57
|
+
* Formula:
|
|
58
|
+
* pre_withdraw_target = post_withdraw_target * (current_supply - withdrawn) / current_supply
|
|
59
|
+
*
|
|
60
|
+
* The result is floored to stay conservatively at or below the requested
|
|
61
|
+
* post-withdraw target once integer basis-point rounding is applied.
|
|
62
|
+
*/
|
|
63
|
+
async calcPreWithdrawalTargetUtilizationRateBps(withdrawUiCollateralAmount, postWithdrawalTargetUtilizationRateBps) {
|
|
64
|
+
const state = await this.getPositionState("realtime");
|
|
65
|
+
if (!state)
|
|
66
|
+
return 0;
|
|
67
|
+
return this.calcPreWithdrawalTargetUtilizationRateBpsFromState(state, withdrawUiCollateralAmount, postWithdrawalTargetUtilizationRateBps);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Calculates the UI debt amount change needed before a collateral withdrawal
|
|
71
|
+
* so that the position lands at the desired utilization rate after the
|
|
72
|
+
* withdrawal completes.
|
|
73
|
+
*/
|
|
74
|
+
async calcDebtChangeAmountForCollateralWithdrawal(withdrawUiCollateralAmount, postWithdrawalTargetUtilizationRateBps) {
|
|
75
|
+
const state = await this.getPositionState("realtime");
|
|
76
|
+
if (!state)
|
|
77
|
+
return 0;
|
|
78
|
+
const preWithdrawalTargetUtilizationRateBps = this.calcPreWithdrawalTargetUtilizationRateBpsFromState(state, withdrawUiCollateralAmount, postWithdrawalTargetUtilizationRateBps);
|
|
79
|
+
return this.calcDebtChangeAmountFromState(state, preWithdrawalTargetUtilizationRateBps);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Calculates the utilization rate after withdrawing collateral while leaving
|
|
83
|
+
* debt unchanged.
|
|
84
|
+
*/
|
|
85
|
+
async calcPostWithdrawalUtilizationRateBps(withdrawUiCollateralAmount) {
|
|
86
|
+
const state = await this.getPositionState("realtime");
|
|
87
|
+
if (!state)
|
|
88
|
+
return 0;
|
|
89
|
+
return this.calcPostWithdrawalUtilizationRateBpsFromState(state, withdrawUiCollateralAmount);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* For burn-token liquidity management: checks that a withdrawal of
|
|
93
|
+
* `collateralWithdrawalUiAmount` (collateral mint UI units) leaves strictly
|
|
94
|
+
* positive supplied collateral, matching the pre-withdraw math used in
|
|
95
|
+
* {@link calcPreWithdrawalTargetUtilizationRateBps}.
|
|
96
|
+
*
|
|
97
|
+
* Returns realtime LTV utilization in basis points when eligible; null when the
|
|
98
|
+
* obligation is missing, has no supply, prices are invalid, or the withdrawal
|
|
99
|
+
* would consume the full (or more than the full) collateral position.
|
|
100
|
+
*/
|
|
101
|
+
async getBurnUnwindEligibility(collateralWithdrawalUiAmount) {
|
|
102
|
+
if (!(collateralWithdrawalUiAmount > 0)) {
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
const state = await this.getPositionState("realtime");
|
|
106
|
+
if (!state) {
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
const collateralPrice = state.prices.supply.realtimePrice;
|
|
110
|
+
if (!(collateralPrice > 0)) {
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
const withdrawnCollateralUsd = collateralWithdrawalUiAmount * collateralPrice;
|
|
114
|
+
if (!(withdrawnCollateralUsd < state.supplyUsd)) {
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
const utilizationRateBps = this.reservesManager.calcLtvUtilizationRateBps(state.supplyUsd, state.debtUsd);
|
|
118
|
+
return { utilizationRateBps };
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Returns the collateral price levels that would place the position exactly on
|
|
122
|
+
* its lower and upper utilization trigger bands.
|
|
123
|
+
*
|
|
124
|
+
* The lower-band trigger uses EMA pricing (to mirror boost-trigger semantics),
|
|
125
|
+
* while the upper-band trigger uses realtime pricing (to mirror unwind-trigger
|
|
126
|
+
* semantics).
|
|
127
|
+
*/
|
|
128
|
+
async getCollateralPriceTriggerBand(params) {
|
|
129
|
+
const [lower, upper] = await Promise.all([
|
|
130
|
+
this.getCollateralPriceTriggerLevel("ema", params.lowerTargetUtilizationRateBps),
|
|
131
|
+
this.getCollateralPriceTriggerLevel("realtime", params.upperTargetUtilizationRateBps),
|
|
132
|
+
]);
|
|
133
|
+
return { lower, upper };
|
|
134
|
+
}
|
|
135
|
+
async getUtilizationRatesBps() {
|
|
136
|
+
const [realtimeState, emaState] = await Promise.all([
|
|
137
|
+
this.getPositionState("realtime"),
|
|
138
|
+
this.getPositionState("ema"),
|
|
139
|
+
]);
|
|
140
|
+
if (!realtimeState || !emaState) {
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
return {
|
|
144
|
+
realtime: this.reservesManager.calcLtvUtilizationRateBps(realtimeState.supplyUsd, realtimeState.debtUsd),
|
|
145
|
+
ema: this.reservesManager.calcLtvUtilizationRateBps(emaState.supplyUsd, emaState.debtUsd),
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
async getUtilizationPrices() {
|
|
149
|
+
const [realtimeState, emaState] = await Promise.all([
|
|
150
|
+
this.getPositionState("realtime"),
|
|
151
|
+
this.getPositionState("ema"),
|
|
152
|
+
]);
|
|
153
|
+
if (!realtimeState || !emaState) {
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
return {
|
|
157
|
+
realtime: {
|
|
158
|
+
collateral: this.selectPrice(realtimeState.prices.supply, "realtime"),
|
|
159
|
+
debt: this.selectPrice(realtimeState.prices.debt, "realtime"),
|
|
160
|
+
},
|
|
161
|
+
ema: {
|
|
162
|
+
collateral: this.selectPrice(emaState.prices.supply, "ema"),
|
|
163
|
+
debt: this.selectPrice(emaState.prices.debt, "ema"),
|
|
164
|
+
},
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
async getInspectMetrics(params) {
|
|
168
|
+
const [utilizationRateBps, utilizationPrices, triggerBand] = await Promise.all([
|
|
169
|
+
this.getUtilizationRatesBps(),
|
|
170
|
+
this.getUtilizationPrices(),
|
|
171
|
+
this.getCollateralPriceTriggerBand(params),
|
|
172
|
+
]);
|
|
173
|
+
if (!utilizationRateBps || !utilizationPrices) {
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
return { utilizationRateBps, utilizationPrices, triggerBand };
|
|
177
|
+
}
|
|
178
|
+
async getPositionState(mode) {
|
|
179
|
+
const position = await this.lpData.maybeFetchUserPositionInPool(this.pool, this.userAccount);
|
|
180
|
+
if (!position)
|
|
181
|
+
return null;
|
|
182
|
+
const prices = await this.reservesManager.prices();
|
|
183
|
+
const { supplyUsd, debtUsd } = this.calcPositionSupplyDebtUsd(position, prices, mode);
|
|
184
|
+
return { prices, supplyUsd, debtUsd };
|
|
185
|
+
}
|
|
186
|
+
calcPositionSupplyDebtUsd(position, prices, mode) {
|
|
187
|
+
const { supplyReserve, debtReserve } = this.reservesManager;
|
|
188
|
+
const deposit = position.deposits.find((d) => d.reserve === supplyReserve.address);
|
|
189
|
+
const borrow = position.borrows.find((b) => b.reserve === debtReserve.address);
|
|
190
|
+
const supplyAmount = deposit ? (0, common_1.toUiAmount)(deposit.amount, supplyReserve.mint.mintDecimals) : 0;
|
|
191
|
+
const debtAmount = borrow ? (0, common_1.toUiAmount)(borrow.amount, debtReserve.mint.mintDecimals) : 0;
|
|
192
|
+
return {
|
|
193
|
+
supplyUsd: supplyAmount * this.selectPrice(prices.supply, mode).value,
|
|
194
|
+
debtUsd: debtAmount * this.selectPrice(prices.debt, mode).value,
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
selectPrice(price, mode) {
|
|
198
|
+
if (mode === "realtime") {
|
|
199
|
+
return { value: price.realtimePrice, source: "realtime" };
|
|
200
|
+
}
|
|
201
|
+
if (price.emaPrice != null) {
|
|
202
|
+
return { value: price.emaPrice, source: "ema" };
|
|
203
|
+
}
|
|
204
|
+
return { value: price.realtimePrice, source: "ema_fallback_realtime" };
|
|
205
|
+
}
|
|
206
|
+
async getCollateralPriceTriggerLevel(mode, targetUtilizationRateBps) {
|
|
207
|
+
this.assertValidTriggerBandUtilizationRateBps(targetUtilizationRateBps, "targetUtilizationRateBps");
|
|
208
|
+
if (targetUtilizationRateBps === 0) {
|
|
209
|
+
return undefined;
|
|
210
|
+
}
|
|
211
|
+
const state = await this.getPositionState(mode);
|
|
212
|
+
if (!state) {
|
|
213
|
+
return undefined;
|
|
214
|
+
}
|
|
215
|
+
const currentCollateralPrice = mode === "ema"
|
|
216
|
+
? (state.prices.supply.emaPrice ?? state.prices.supply.realtimePrice)
|
|
217
|
+
: state.prices.supply.realtimePrice;
|
|
218
|
+
if (currentCollateralPrice <= 0 || state.debtUsd < 0 || this.reservesManager.maxLtv <= 0) {
|
|
219
|
+
return undefined;
|
|
220
|
+
}
|
|
221
|
+
const uiSupplyAmount = state.supplyUsd / currentCollateralPrice;
|
|
222
|
+
if (uiSupplyAmount <= 0) {
|
|
223
|
+
return undefined;
|
|
224
|
+
}
|
|
225
|
+
const triggerCollateralPrice = this.calcCollateralPriceForTargetUtilization(state.debtUsd, uiSupplyAmount, targetUtilizationRateBps);
|
|
226
|
+
if (!Number.isFinite(triggerCollateralPrice) || triggerCollateralPrice < 0) {
|
|
227
|
+
return undefined;
|
|
228
|
+
}
|
|
229
|
+
return {
|
|
230
|
+
currentCollateralPrice,
|
|
231
|
+
triggerCollateralPrice,
|
|
232
|
+
targetUtilizationRateBps,
|
|
233
|
+
priceMode: mode,
|
|
234
|
+
priceChangePct: ((triggerCollateralPrice - currentCollateralPrice) / currentCollateralPrice) * 100,
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Solve for collateral price at a target utilization:
|
|
239
|
+
* utilization = debtUsd / (collateralAmount * collateralPrice * maxLtv).
|
|
240
|
+
*/
|
|
241
|
+
calcCollateralPriceForTargetUtilization(debtUsd, uiSupplyAmount, targetUtilizationRateBps) {
|
|
242
|
+
const targetUtilizationRate = targetUtilizationRateBps / 10000;
|
|
243
|
+
return debtUsd / (uiSupplyAmount * this.reservesManager.maxLtv * targetUtilizationRate);
|
|
244
|
+
}
|
|
245
|
+
async calcDebtChangeAmountFromState(state, targetUtilizationRateBps) {
|
|
246
|
+
this.assertValidUtilizationRateBps(targetUtilizationRateBps, "targetUtilizationRateBps");
|
|
247
|
+
if (state.prices.debt.realtimePrice <= 0) {
|
|
248
|
+
throw new Error("Debt reserve realtime price must be positive");
|
|
249
|
+
}
|
|
250
|
+
if (state.prices.supply.realtimePrice <= 0) {
|
|
251
|
+
throw new Error("Collateral reserve realtime price must be positive");
|
|
252
|
+
}
|
|
253
|
+
const debtAdjustmentUsd = await this.reservesManager.calcDebtAdjustmentUsd(state.supplyUsd / state.prices.supply.realtimePrice, state.debtUsd / state.prices.debt.realtimePrice, targetUtilizationRateBps, { positionChangeMode: "debtOnly" });
|
|
254
|
+
const debtChangeUiAmount = debtAdjustmentUsd / state.prices.debt.realtimePrice;
|
|
255
|
+
const debtDecimals = this.reservesManager.debtReserve.mint.mintDecimals;
|
|
256
|
+
let quantizedUiAmount = this.quantizeDebtChangeUiAmount(debtChangeUiAmount, debtDecimals);
|
|
257
|
+
if (quantizedUiAmount > 0) {
|
|
258
|
+
quantizedUiAmount = await this.capPositiveBorrowToProtocolHeadroom(quantizedUiAmount, state);
|
|
259
|
+
}
|
|
260
|
+
return debtChangeUiAmount < 0 ? -quantizedUiAmount : quantizedUiAmount;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Quantize to the debt mint's base-unit precision. Borrows floor; repays round
|
|
264
|
+
* away from zero so deleveraging does not undershoot.
|
|
265
|
+
*/
|
|
266
|
+
quantizeDebtChangeUiAmount(debtChangeUiAmount, debtDecimals) {
|
|
267
|
+
if (debtChangeUiAmount === 0)
|
|
268
|
+
return 0;
|
|
269
|
+
const absUi = Math.abs(debtChangeUiAmount);
|
|
270
|
+
if (debtChangeUiAmount > 0) {
|
|
271
|
+
if (!(absUi > 0))
|
|
272
|
+
return 0;
|
|
273
|
+
const flooredBaseUnits = new core_1.BN(Math.floor(absUi * Math.pow(10, debtDecimals)));
|
|
274
|
+
return (0, common_1.toUiAmount)(flooredBaseUnits, debtDecimals);
|
|
275
|
+
}
|
|
276
|
+
const roundedAmount = (0, common_1.fromUiAmount)(absUi, debtDecimals);
|
|
277
|
+
let repayUi = (0, common_1.toUiAmount)(roundedAmount, debtDecimals);
|
|
278
|
+
if (repayUi < absUi) {
|
|
279
|
+
repayUi = (0, common_1.toUiAmount)(roundedAmount.addn(1), debtDecimals);
|
|
280
|
+
}
|
|
281
|
+
return repayUi;
|
|
282
|
+
}
|
|
283
|
+
/** Cap positive borrows to obligation headroom when the platform exposes it. */
|
|
284
|
+
async capPositiveBorrowToProtocolHeadroom(requestedUiAmount, state) {
|
|
285
|
+
const debtDecimals = this.reservesManager.debtReserve.mint.mintDecimals;
|
|
286
|
+
const position = await this.lpData.maybeFetchUserPositionInPool(this.pool, this.userAccount);
|
|
287
|
+
if (!position) {
|
|
288
|
+
return requestedUiAmount;
|
|
289
|
+
}
|
|
290
|
+
const maxUi = position.getMaxAdditionalBorrowUiAmount(state.prices.debt.realtimePrice, debtDecimals);
|
|
291
|
+
if (maxUi === undefined) {
|
|
292
|
+
return requestedUiAmount;
|
|
293
|
+
}
|
|
294
|
+
return Math.min(requestedUiAmount, maxUi);
|
|
295
|
+
}
|
|
296
|
+
calcPreWithdrawalTargetUtilizationRateBpsFromState(state, withdrawUiCollateralAmount, postWithdrawalTargetUtilizationRateBps) {
|
|
297
|
+
if (withdrawUiCollateralAmount <= 0) {
|
|
298
|
+
throw new Error("withdrawUiCollateralAmount must be greater than zero");
|
|
299
|
+
}
|
|
300
|
+
this.assertValidUtilizationRateBps(postWithdrawalTargetUtilizationRateBps, "postWithdrawalTargetUtilizationRateBps");
|
|
301
|
+
const collateralPrice = state.prices.supply.realtimePrice;
|
|
302
|
+
if (collateralPrice <= 0) {
|
|
303
|
+
throw new Error("Collateral reserve realtime price must be positive");
|
|
304
|
+
}
|
|
305
|
+
const withdrawnCollateralUsd = withdrawUiCollateralAmount * collateralPrice;
|
|
306
|
+
if (withdrawnCollateralUsd >= state.supplyUsd) {
|
|
307
|
+
throw new Error("withdrawUiCollateralAmount exceeds the current supplied collateral");
|
|
308
|
+
}
|
|
309
|
+
const preWithdrawalTargetUtilizationRateBps = Math.floor((postWithdrawalTargetUtilizationRateBps * (state.supplyUsd - withdrawnCollateralUsd)) /
|
|
310
|
+
state.supplyUsd);
|
|
311
|
+
return Math.max(0, Math.min(postWithdrawalTargetUtilizationRateBps, preWithdrawalTargetUtilizationRateBps));
|
|
312
|
+
}
|
|
313
|
+
calcPostWithdrawalUtilizationRateBpsFromState(state, withdrawUiCollateralAmount) {
|
|
314
|
+
if (withdrawUiCollateralAmount <= 0) {
|
|
315
|
+
throw new Error("withdrawUiCollateralAmount must be greater than zero");
|
|
316
|
+
}
|
|
317
|
+
const collateralPrice = state.prices.supply.realtimePrice;
|
|
318
|
+
if (collateralPrice <= 0) {
|
|
319
|
+
throw new Error("Collateral reserve realtime price must be positive");
|
|
320
|
+
}
|
|
321
|
+
const withdrawnCollateralUsd = withdrawUiCollateralAmount * collateralPrice;
|
|
322
|
+
if (withdrawnCollateralUsd >= state.supplyUsd) {
|
|
323
|
+
throw new Error("withdrawUiCollateralAmount exceeds the current supplied collateral");
|
|
324
|
+
}
|
|
325
|
+
return this.reservesManager.calcLtvUtilizationRateBps(state.supplyUsd - withdrawnCollateralUsd, state.debtUsd);
|
|
326
|
+
}
|
|
327
|
+
assertValidUtilizationRateBps(value, field) {
|
|
328
|
+
if (!Number.isFinite(value) || value < 0 || value > 10000) {
|
|
329
|
+
throw new Error(`${field} must be between 0 and 10000`);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Unwind/boost trigger bands may exceed 100% LTV utilization (up to 10_500 bps
|
|
334
|
+
* on-chain). Debt-sizing paths still use {@link assertValidUtilizationRateBps}.
|
|
335
|
+
*/
|
|
336
|
+
assertValidTriggerBandUtilizationRateBps(value, field) {
|
|
337
|
+
if (!Number.isFinite(value) || value < 0 || value > lendingPosition_1.MAX_LENDING_POSITION_UPPER_UTIL_BPS) {
|
|
338
|
+
throw new Error(`${field} must be between 0 and ${lendingPosition_1.MAX_LENDING_POSITION_UPPER_UTIL_BPS}`);
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
exports.LendingPositionManager = LendingPositionManager;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { ReservesPrices } from "../reservesManager";
|
|
2
|
+
export interface LendingPositionState {
|
|
3
|
+
prices: ReservesPrices;
|
|
4
|
+
supplyUsd: number;
|
|
5
|
+
debtUsd: number;
|
|
6
|
+
}
|
|
7
|
+
export interface CollateralPriceTriggerLevel {
|
|
8
|
+
currentCollateralPrice: number;
|
|
9
|
+
triggerCollateralPrice: number;
|
|
10
|
+
targetUtilizationRateBps: number;
|
|
11
|
+
priceMode: "realtime" | "ema";
|
|
12
|
+
priceChangePct: number;
|
|
13
|
+
}
|
|
14
|
+
export interface CollateralPriceTriggerBand {
|
|
15
|
+
lower?: CollateralPriceTriggerLevel;
|
|
16
|
+
upper?: CollateralPriceTriggerLevel;
|
|
17
|
+
}
|
|
18
|
+
export interface LendingPositionUtilizationRatesBps {
|
|
19
|
+
realtime: number;
|
|
20
|
+
ema: number;
|
|
21
|
+
}
|
|
22
|
+
export interface LendingPositionSelectedPrice {
|
|
23
|
+
value: number;
|
|
24
|
+
source: "realtime" | "ema" | "ema_fallback_realtime";
|
|
25
|
+
}
|
|
26
|
+
export interface LendingPositionUtilizationPrices {
|
|
27
|
+
realtime: {
|
|
28
|
+
collateral: LendingPositionSelectedPrice;
|
|
29
|
+
debt: LendingPositionSelectedPrice;
|
|
30
|
+
};
|
|
31
|
+
ema: {
|
|
32
|
+
collateral: LendingPositionSelectedPrice;
|
|
33
|
+
debt: LendingPositionSelectedPrice;
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
export interface LendingPositionInspectMetrics {
|
|
37
|
+
utilizationRateBps: LendingPositionUtilizationRatesBps;
|
|
38
|
+
utilizationPrices: LendingPositionUtilizationPrices;
|
|
39
|
+
triggerBand: CollateralPriceTriggerBand;
|
|
40
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./leverageService"), exports);
|
|
18
|
+
__exportStar(require("./types"), exports);
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import type { Instruction } from "@solana/kit";
|
|
2
|
+
import type { DecreaseLeverageParams, DecreaseLeverageResult, FlashRebalanceContext, FlashRebalanceParams, FlashRebalanceResult, IncreaseLeverageParams, IncreaseLeverageResult, LeverageContext } from "./types";
|
|
3
|
+
/**
|
|
4
|
+
* Thrown by {@link LeverageService.buildFlashRebalance} when the quoted
|
|
5
|
+
* destination-debt → source-debt swap breaches a caller-set bound. The quote's
|
|
6
|
+
* total below-par gap is split into two components, each bounded separately:
|
|
7
|
+
*
|
|
8
|
+
* - `executionCostBps` — quote rate vs the oracle-fair cross rate: route fees
|
|
9
|
+
* + price impact. Permanently lost value.
|
|
10
|
+
* - `marketBasisBps` — oracle-fair cross rate vs 1:1: genuine USD price
|
|
11
|
+
* difference between the two stables. Charged to the token's carry-vs-debt
|
|
12
|
+
* difference by the $1-pinned books at conversion time, but reverses on
|
|
13
|
+
* unwind if the basis persists.
|
|
14
|
+
*
|
|
15
|
+
* `reason` names which bound was breached; both measured components are
|
|
16
|
+
* always populated for logging/telemetry.
|
|
17
|
+
*/
|
|
18
|
+
export declare class FlashRebalanceSwapCostExceededError extends Error {
|
|
19
|
+
readonly reason: "execution-cost" | "market-basis";
|
|
20
|
+
readonly executionCostBps: number;
|
|
21
|
+
readonly marketBasisBps: number;
|
|
22
|
+
readonly limitBps: number;
|
|
23
|
+
readonly inputAmount: bigint;
|
|
24
|
+
readonly outputAmount: bigint;
|
|
25
|
+
constructor(reason: "execution-cost" | "market-basis", executionCostBps: number, marketBasisBps: number, limitBps: number, inputAmount: bigint, outputAmount: bigint);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Stateless service that sizes and builds lending-protocol CPIs for leverage
|
|
29
|
+
* changes on a collateral/debt reserve pair.
|
|
30
|
+
*
|
|
31
|
+
* Inputs are generic lending-platform types (reserves, LP client, position
|
|
32
|
+
* identifiers). No program-specific types.
|
|
33
|
+
*
|
|
34
|
+
* - **Increase leverage** → calculates borrow amount to reach target, builds
|
|
35
|
+
* borrow CPIs.
|
|
36
|
+
* - **Decrease leverage** → calculates repay amount to reach target, builds
|
|
37
|
+
* repay CPIs, and assembles swap + repay CPI groups when the debt token must
|
|
38
|
+
* be obtained via swap.
|
|
39
|
+
*/
|
|
40
|
+
export declare class LeverageService {
|
|
41
|
+
/**
|
|
42
|
+
* Calculate the borrow amount needed to reach the target utilization rate,
|
|
43
|
+
* then build the borrow CPIs.
|
|
44
|
+
*/
|
|
45
|
+
static buildIncreaseLeverage(ctx: LeverageContext, params: IncreaseLeverageParams): Promise<IncreaseLeverageResult>;
|
|
46
|
+
/**
|
|
47
|
+
* Calculate the repay amount needed to reach the target utilization rate,
|
|
48
|
+
* build the repay CPIs, and assemble CPI groups with an optional swap
|
|
49
|
+
* prepended when the caller's debt-token balance is insufficient.
|
|
50
|
+
*
|
|
51
|
+
* The returned `repayUiAmount` is always non-negative. When the position is
|
|
52
|
+
* already at or below the target, the amount is zero and the CPI list is
|
|
53
|
+
* sized for a zero repay.
|
|
54
|
+
*/
|
|
55
|
+
static buildDecreaseLeverage(ctx: LeverageContext, params: DecreaseLeverageParams): Promise<DecreaseLeverageResult>;
|
|
56
|
+
/**
|
|
57
|
+
* Assemble repay CPI groups, prepending a swap group whenever the bank is
|
|
58
|
+
* configured to source the debt mint via a swap. The on-chain handler
|
|
59
|
+
* decides whether to actually invoke the swap (via `perform_swap`) based on
|
|
60
|
+
* runtime balances; building it unconditionally keeps the tx resilient when
|
|
61
|
+
* the bank's debt-token balance changes between build and send.
|
|
62
|
+
*/
|
|
63
|
+
private static assembleDecreaseLeverageCpis;
|
|
64
|
+
/**
|
|
65
|
+
* Quote a swap that converts a source asset into the debt mint,
|
|
66
|
+
* covering at least `shortfall` base units.
|
|
67
|
+
*/
|
|
68
|
+
private static quoteDebtTopUpSwap;
|
|
69
|
+
/**
|
|
70
|
+
* Build a flash-loan-wrapped rebalance that moves collateral between two
|
|
71
|
+
* lending positions without decreasing any carry positions.
|
|
72
|
+
*
|
|
73
|
+
* The flow assembled here (inside a single transaction):
|
|
74
|
+
* 1. Top-level: flash-borrow source debt mint into the user's ATA.
|
|
75
|
+
* 2. CPI: repay flash-borrowed amount on source → frees collateral.
|
|
76
|
+
* 3. CPI: withdraw `collateralUiAmount` from source.
|
|
77
|
+
* 4. CPI: deposit that collateral on destination.
|
|
78
|
+
* 5. CPI: borrow destination debt mint (sized slightly above the swap
|
|
79
|
+
* input needed to produce the flash repay, so post-slippage output
|
|
80
|
+
* still covers it).
|
|
81
|
+
* 6. CPI: exact-in swap destination debt → source debt; the entire borrow
|
|
82
|
+
* is consumed and worst-case output is at least the flash repay amount.
|
|
83
|
+
* 7. Top-level: flash-repay source debt mint.
|
|
84
|
+
*
|
|
85
|
+
* The exact-in over-borrow leaves a small **source-debt** excess in the
|
|
86
|
+
* token PDA's ATA after the swap; the on-chain handler sweeps this excess
|
|
87
|
+
* into the yielding bank before the top-level flash repay so exactly
|
|
88
|
+
* `flashRepayAmountBaseUnits` remains for the repay.
|
|
89
|
+
*/
|
|
90
|
+
static buildFlashRebalance(ctx: FlashRebalanceContext, params: FlashRebalanceParams): Promise<FlashRebalanceResult>;
|
|
91
|
+
/**
|
|
92
|
+
* Build the top-level flash-repay instruction for a previously-built flash
|
|
93
|
+
* rebalance, given the final transaction index of its `flashBorrowIx`.
|
|
94
|
+
*
|
|
95
|
+
* Split from {@link buildFlashRebalance} because `borrowIxIndex` depends on
|
|
96
|
+
* the caller's full tx layout (pre-instructions + heap frame + ATA creations
|
|
97
|
+
* + flash-borrow position), which in turn depends on the ATA list derived
|
|
98
|
+
* from the plan's `remainingAccounts` — a chicken-and-egg the caller resolves
|
|
99
|
+
* by assembling the preamble before calling this.
|
|
100
|
+
*/
|
|
101
|
+
static buildFlashRepayIx(ctx: FlashRebalanceContext, plan: Pick<FlashRebalanceResult, "flashBorrowAmountBaseUnits">, borrowIxIndex: number): Promise<Instruction>;
|
|
102
|
+
private static calcSourceRepayForWithdraw;
|
|
103
|
+
private static calcDestinationBorrowCapacityForDeposit;
|
|
104
|
+
}
|