@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,309 @@
|
|
|
1
|
+
import { type Address, Rpc, SolanaRpcApi, TransactionSigner } from "@solana/kit";
|
|
2
|
+
import { ADDRESS_LOOKUP_TABLE_PROGRAM_ADDRESS } from "@solana-program/address-lookup-table";
|
|
3
|
+
import { COMPUTE_BUDGET_PROGRAM_ADDRESS } from "@solana-program/compute-budget";
|
|
4
|
+
import { SYSTEM_PROGRAM_ADDRESS } from "@solana-program/system";
|
|
5
|
+
import { ASSOCIATED_TOKEN_PROGRAM_ADDRESS, TOKEN_PROGRAM_ADDRESS } from "@solana-program/token";
|
|
6
|
+
import { TOKEN_2022_PROGRAM_ADDRESS } from "@solana-program/token-2022";
|
|
7
|
+
import {
|
|
8
|
+
DEFAULT_PUBLIC_KEY,
|
|
9
|
+
dedupeOrderedAddresses,
|
|
10
|
+
type DeployedEnv,
|
|
11
|
+
type Environment,
|
|
12
|
+
JITO_TIP_ACCOUNTS,
|
|
13
|
+
LendingPlatform,
|
|
14
|
+
type MintIdentifier,
|
|
15
|
+
fromWeb3Pk,
|
|
16
|
+
getAtaAddress,
|
|
17
|
+
getRpcUrl,
|
|
18
|
+
lendingPlatformToEnum,
|
|
19
|
+
lutManager,
|
|
20
|
+
mints,
|
|
21
|
+
resolveTokenProgram,
|
|
22
|
+
} from "common";
|
|
23
|
+
import { oracle } from "oracle";
|
|
24
|
+
import {
|
|
25
|
+
getGeneralLookupTableAccountsForPerena,
|
|
26
|
+
PERENA_PROGRAM_ID,
|
|
27
|
+
PerenaClient,
|
|
28
|
+
} from "perena-helpers";
|
|
29
|
+
import { LongYieldCarryClient } from "../client/client";
|
|
30
|
+
import { LYCToken } from "../models/lycToken";
|
|
31
|
+
import {
|
|
32
|
+
CIRCUIT_BREAKER_CONTROLLER,
|
|
33
|
+
GENERAL_LOOKUP_TABLES,
|
|
34
|
+
MANAGER,
|
|
35
|
+
PROGRAM_ID,
|
|
36
|
+
PROTOCOL_ADMIN,
|
|
37
|
+
PROTOCOL_FEE_WALLET,
|
|
38
|
+
} from "../constants/general";
|
|
39
|
+
import { TOKEN_LOOKUP_TABLES } from "../constants";
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Oracle account when {@link oracle} can resolve Pyth, Switchboard, or a custom feed.
|
|
43
|
+
* Not exported — module-local helper (TypeScript has no `private` on file-level functions).
|
|
44
|
+
*/
|
|
45
|
+
function tryOracleAddress(mint: MintIdentifier): Address | undefined {
|
|
46
|
+
try {
|
|
47
|
+
return oracle.getOracleData(mint).oracle;
|
|
48
|
+
} catch {
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/** Registry stablecoins + YBAs — used for yielding-bank ATA derivation. */
|
|
54
|
+
const DEBT_AND_YBA_MINT_INFOS = [...mints.stablecoins(), ...mints.yieldBearingAssets()];
|
|
55
|
+
|
|
56
|
+
/** Registry Standard + LST mints — risk / collateral-style assets (oracle-only on general LUT). */
|
|
57
|
+
const RISK_ASSET_MINT_INFOS = [
|
|
58
|
+
...mints.filterAssetsByType("Standard"),
|
|
59
|
+
...mints.filterAssetsByType("LST"),
|
|
60
|
+
];
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Stablecoin + YBA mints with registry oracles for the general LUT.
|
|
64
|
+
* Risk assets (Standard + LST registry entries): oracle only — mints stay on each token's LUT via on-chain collateral.
|
|
65
|
+
* Not exported — module-local helper.
|
|
66
|
+
*/
|
|
67
|
+
function getMintRegistryAccountsForGeneralLut(): Address[] {
|
|
68
|
+
const out: Address[] = [];
|
|
69
|
+
for (const m of DEBT_AND_YBA_MINT_INFOS) {
|
|
70
|
+
out.push(m.address);
|
|
71
|
+
const o = tryOracleAddress(m.address);
|
|
72
|
+
if (o) {
|
|
73
|
+
out.push(o);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
for (const m of RISK_ASSET_MINT_INFOS) {
|
|
77
|
+
const o = tryOracleAddress(m.address);
|
|
78
|
+
if (o) {
|
|
79
|
+
out.push(o);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return out;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Every YieldingBank PDA plus, for each bank, the ATA for each registry stablecoin and YBA mint.
|
|
87
|
+
* Not exported — module-local helper.
|
|
88
|
+
*/
|
|
89
|
+
async function getYieldingBankAccountsForGeneralLut(
|
|
90
|
+
client: LongYieldCarryClient
|
|
91
|
+
): Promise<Address[]> {
|
|
92
|
+
const banks = await client.account.fetchAllYieldingBanks();
|
|
93
|
+
const out: Address[] = [];
|
|
94
|
+
|
|
95
|
+
for (const b of banks) {
|
|
96
|
+
out.push(b.address);
|
|
97
|
+
for (const m of DEBT_AND_YBA_MINT_INFOS) {
|
|
98
|
+
out.push(await getAtaAddress(m.address, b.address, m.tokenProgram));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return out;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Get the specific lookup table for the given Token PDA (if it exists).
|
|
106
|
+
*
|
|
107
|
+
* `TOKEN_LOOKUP_TABLES` is keyed by Token PDA address.
|
|
108
|
+
*/
|
|
109
|
+
export function getLookupTableForToken(tokenPda: Address) {
|
|
110
|
+
if (tokenPda in TOKEN_LOOKUP_TABLES) {
|
|
111
|
+
return TOKEN_LOOKUP_TABLES[tokenPda];
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Assembles lookup table addresses for LYC transaction plans: the deployment
|
|
117
|
+
* general LUT (when not `local`), any registered per-token LUT for the given
|
|
118
|
+
* token PDAs, then any CPI/swap tables. Entries are omitted when missing or
|
|
119
|
+
* equal to the default (unused) public key; duplicates are removed in first-seen
|
|
120
|
+
* order.
|
|
121
|
+
*/
|
|
122
|
+
export function mergeLycLookupTables(
|
|
123
|
+
environment: Environment,
|
|
124
|
+
tokenPda?: Address | readonly Address[],
|
|
125
|
+
existingLookupTables?: readonly Address[]
|
|
126
|
+
): Address[] {
|
|
127
|
+
const all: (Address | undefined)[] = [];
|
|
128
|
+
|
|
129
|
+
if (environment !== "local") {
|
|
130
|
+
all.push(GENERAL_LOOKUP_TABLES[environment as DeployedEnv]);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
if (tokenPda !== undefined) {
|
|
134
|
+
for (const t of Array.isArray(tokenPda) ? tokenPda : [tokenPda]) {
|
|
135
|
+
all.push(getLookupTableForToken(t));
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
if (existingLookupTables) {
|
|
140
|
+
all.push(...existingLookupTables);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
const valid = all.filter((a): a is Address => a !== undefined && a !== DEFAULT_PUBLIC_KEY);
|
|
144
|
+
return [...new Set(valid)];
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Refresh per-token lookup tables for every Token account owned by the program.
|
|
149
|
+
*
|
|
150
|
+
* @param client - Initialized client (provides RPC-backed account fetch and Kamino helpers).
|
|
151
|
+
*/
|
|
152
|
+
export async function updateTokenLutsIfNeeded(
|
|
153
|
+
signer: TransactionSigner,
|
|
154
|
+
rpc: Rpc<SolanaRpcApi>,
|
|
155
|
+
client: LongYieldCarryClient
|
|
156
|
+
) {
|
|
157
|
+
const tokens = await client.account.fetchAllTokens();
|
|
158
|
+
for (const t of tokens) {
|
|
159
|
+
await updateTokenLutIfNeeded(signer, rpc, client, t);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Extend the per-token lookup table with addresses needed for that token's
|
|
165
|
+
* instructions: mints, token/YB ATAs, registry debt-mint ATAs for the token PDA, lending protocol accounts, Kamino
|
|
166
|
+
* obligation ATAs when applicable. Lending reserve accounts live on the
|
|
167
|
+
* lending-platform LUT; price oracles for registry-listed debt/YBAs and risk
|
|
168
|
+
* assets live on the general LUT.
|
|
169
|
+
*
|
|
170
|
+
* Collateral mint is read from on-chain token state (it is not a PDA).
|
|
171
|
+
*
|
|
172
|
+
* @param client - Used for Kamino reserve metadata and reserve interaction ATAs.
|
|
173
|
+
* @param token - Fetched token model (`LYCToken`); avoids an extra fetch.
|
|
174
|
+
*/
|
|
175
|
+
export async function updateTokenLutIfNeeded(
|
|
176
|
+
signer: TransactionSigner,
|
|
177
|
+
rpc: Rpc<SolanaRpcApi>,
|
|
178
|
+
client: LongYieldCarryClient,
|
|
179
|
+
token: LYCToken
|
|
180
|
+
) {
|
|
181
|
+
const kaminoClient = client.getLendingPlatformClientByPlatform(LendingPlatform.Kamino);
|
|
182
|
+
const allAccounts: Address[] = [];
|
|
183
|
+
|
|
184
|
+
const tokenPda = token.address;
|
|
185
|
+
const yMint = token.mint;
|
|
186
|
+
const collateralMint = token.collateralMint;
|
|
187
|
+
const collateralTp = resolveTokenProgram(token.data.collateral.tokenProgram);
|
|
188
|
+
const yTokenTp = resolveTokenProgram(token.data.config.tokenProgram);
|
|
189
|
+
|
|
190
|
+
allAccounts.push(tokenPda, yMint, collateralMint);
|
|
191
|
+
allAccounts.push(
|
|
192
|
+
await getAtaAddress(collateralMint, tokenPda, collateralTp),
|
|
193
|
+
await getAtaAddress(yMint, tokenPda, yTokenTp)
|
|
194
|
+
);
|
|
195
|
+
|
|
196
|
+
for (const m of mints.stablecoins()) {
|
|
197
|
+
allAccounts.push(await getAtaAddress(m.address, tokenPda, m.tokenProgram));
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
for (const position of token.data.lendingPositions) {
|
|
201
|
+
const platform = lendingPlatformToEnum(position.platform);
|
|
202
|
+
if (platform === LendingPlatform.None) {
|
|
203
|
+
continue;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
allAccounts.push(fromWeb3Pk(position.protocolUserAcc));
|
|
207
|
+
|
|
208
|
+
const debtMint = fromWeb3Pk(position.accounting.debt.mint);
|
|
209
|
+
const debtTp = resolveTokenProgram(position.accounting.debt.tokenProgram);
|
|
210
|
+
allAccounts.push(await getAtaAddress(debtMint, tokenPda, debtTp));
|
|
211
|
+
|
|
212
|
+
if (platform === LendingPlatform.Kamino) {
|
|
213
|
+
const pool = fromWeb3Pk(position.pool);
|
|
214
|
+
const userAcc = fromWeb3Pk(position.protocolUserAcc);
|
|
215
|
+
for (const reserve of [
|
|
216
|
+
fromWeb3Pk(position.collateralReserve),
|
|
217
|
+
fromWeb3Pk(position.debtReserve),
|
|
218
|
+
]) {
|
|
219
|
+
const details = await kaminoClient.accounts.reserveInteractionDetails(
|
|
220
|
+
tokenPda,
|
|
221
|
+
pool,
|
|
222
|
+
reserve,
|
|
223
|
+
userAcc
|
|
224
|
+
);
|
|
225
|
+
allAccounts.push(
|
|
226
|
+
details.userLiquidityTa.address,
|
|
227
|
+
details.userCollateralTa.address,
|
|
228
|
+
userAcc
|
|
229
|
+
);
|
|
230
|
+
|
|
231
|
+
const userFarmAddresses = await kaminoClient.accounts.getUserFarmAddresses(
|
|
232
|
+
pool,
|
|
233
|
+
reserve,
|
|
234
|
+
userAcc
|
|
235
|
+
);
|
|
236
|
+
allAccounts.push(...userFarmAddresses);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
console.log("Updating token LUT for token:", tokenPda);
|
|
242
|
+
lutManager.clearCache();
|
|
243
|
+
await lutManager.updateLookupTable(signer, rpc, allAccounts, getLookupTableForToken(tokenPda));
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* Extend the shared general lookup table: program IDs, well-known SPL programs,
|
|
248
|
+
* stablecoin and YBA mints (plus registry oracles), Standard + LST oracle accounts,
|
|
249
|
+
* Perena program id, every on-chain YieldingBank PDA, each bank’s ATAs for
|
|
250
|
+
* all registry debt mints (stablecoins) and yield-bearing assets, the canonical
|
|
251
|
+
* Jito tip accounts (referenced by every Jito-bundle tip ix), the ComputeBudget
|
|
252
|
+
* program (referenced by every CU-limit ix), and the deployment's role wallets:
|
|
253
|
+
* manager, protocol admin, circuit-breaker controller, and protocol fee wallet.
|
|
254
|
+
*
|
|
255
|
+
* Risk asset (Standard + LST) mints are omitted here; they appear on each token LUT
|
|
256
|
+
* as collateral.
|
|
257
|
+
*
|
|
258
|
+
* Uses {@link GENERAL_LOOKUP_TABLES} for {@link LongYieldCarryClient.environment}
|
|
259
|
+
* (`test` | `prod` only) and only that tier’s program ID.
|
|
260
|
+
*
|
|
261
|
+
* @throws If `client.environment` is `local` — there is no pinned general LUT for local.
|
|
262
|
+
*/
|
|
263
|
+
export async function updateGeneralLutIfNeeded(
|
|
264
|
+
signer: TransactionSigner,
|
|
265
|
+
rpc: Rpc<SolanaRpcApi>,
|
|
266
|
+
client: LongYieldCarryClient
|
|
267
|
+
): Promise<Address> {
|
|
268
|
+
const deployedEnv = client.environment;
|
|
269
|
+
|
|
270
|
+
if (deployedEnv === "local") {
|
|
271
|
+
throw new Error(
|
|
272
|
+
"updateGeneralLutIfNeeded requires LongYieldCarryClient built with test or prod; local has no GENERAL_LOOKUP_TABLES entry."
|
|
273
|
+
);
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
const registryAccounts = getMintRegistryAccountsForGeneralLut();
|
|
277
|
+
const yieldingBankAccounts = await getYieldingBankAccountsForGeneralLut(client);
|
|
278
|
+
const perenaAccounts = await getGeneralLookupTableAccountsForPerena(
|
|
279
|
+
new PerenaClient(getRpcUrl(deployedEnv))
|
|
280
|
+
);
|
|
281
|
+
|
|
282
|
+
const allAccounts: Address[] = [
|
|
283
|
+
PROGRAM_ID[deployedEnv],
|
|
284
|
+
SYSTEM_PROGRAM_ADDRESS,
|
|
285
|
+
TOKEN_PROGRAM_ADDRESS,
|
|
286
|
+
ASSOCIATED_TOKEN_PROGRAM_ADDRESS,
|
|
287
|
+
TOKEN_2022_PROGRAM_ADDRESS,
|
|
288
|
+
COMPUTE_BUDGET_PROGRAM_ADDRESS,
|
|
289
|
+
DEFAULT_PUBLIC_KEY,
|
|
290
|
+
ADDRESS_LOOKUP_TABLE_PROGRAM_ADDRESS,
|
|
291
|
+
PERENA_PROGRAM_ID,
|
|
292
|
+
MANAGER[deployedEnv],
|
|
293
|
+
PROTOCOL_ADMIN[deployedEnv],
|
|
294
|
+
CIRCUIT_BREAKER_CONTROLLER[deployedEnv],
|
|
295
|
+
PROTOCOL_FEE_WALLET[deployedEnv],
|
|
296
|
+
...JITO_TIP_ACCOUNTS,
|
|
297
|
+
...registryAccounts,
|
|
298
|
+
...perenaAccounts,
|
|
299
|
+
...yieldingBankAccounts,
|
|
300
|
+
];
|
|
301
|
+
|
|
302
|
+
lutManager.clearCache();
|
|
303
|
+
return lutManager.updateLookupTable(
|
|
304
|
+
signer,
|
|
305
|
+
rpc,
|
|
306
|
+
dedupeOrderedAddresses(allAccounts),
|
|
307
|
+
GENERAL_LOOKUP_TABLES[deployedEnv]
|
|
308
|
+
);
|
|
309
|
+
}
|
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure helpers over decoded long_yield_carry account data (`Token`, `YieldingBank`, etc.):
|
|
3
|
+
* selection logic, liquidity / holding analysis, and other algorithms that do not belong on
|
|
4
|
+
* `AccountClient` or transaction composers.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { Address } from "@solana/kit";
|
|
8
|
+
import { BN } from "@anchor-lang/core";
|
|
9
|
+
import { PublicKey } from "@solana/web3.js";
|
|
10
|
+
import {
|
|
11
|
+
fromWeb3Pk,
|
|
12
|
+
LendingPlatform,
|
|
13
|
+
lendingPlatformToEnum,
|
|
14
|
+
maxByNumber,
|
|
15
|
+
toUiAmount,
|
|
16
|
+
} from "common";
|
|
17
|
+
import type { AccountClient } from "../client/account";
|
|
18
|
+
import type { LYCToken, TokenLendingPositionData } from "../models/lycToken";
|
|
19
|
+
import type { BurnAmounts } from "../client/types/general";
|
|
20
|
+
import { LYCYieldingBank } from "../models/yieldingBank";
|
|
21
|
+
import type { LendingPlatformClientBase, LendingPlatformData } from "lending-platforms";
|
|
22
|
+
import { LycLendingPositionManager } from "../services/carry";
|
|
23
|
+
|
|
24
|
+
/** Any object that can resolve a lending-platform client for a given position. */
|
|
25
|
+
export interface LendingPlatformResolver {
|
|
26
|
+
getForPosition(
|
|
27
|
+
position: TokenLendingPositionData
|
|
28
|
+
): LendingPlatformClientBase<LendingPlatformData>;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
type BurnUnwindCandidate = {
|
|
32
|
+
lendingPositionIndex: number;
|
|
33
|
+
position: TokenLendingPositionData;
|
|
34
|
+
collateralAmount: bigint;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export function getBurnCollateralWithdrawalAmount(tokenData: LYCToken, burnAmount: BN | number) {
|
|
38
|
+
const { collateralToUser } = tokenData.computeBurnAmounts(burnAmount);
|
|
39
|
+
const unlentAmount = BigInt(tokenData.data.collateral.unlentAmount.toString());
|
|
40
|
+
const reserved = BigInt(tokenData.data.accounting.pendingAsyncRedemptionLiability.toString());
|
|
41
|
+
const available = unlentAmount > reserved ? unlentAmount - reserved : BigInt(0);
|
|
42
|
+
return collateralToUser > available ? collateralToUser - available : BigInt(0);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export function getBurnCollateralWithdrawalUiAmount(
|
|
46
|
+
tokenData: LYCToken,
|
|
47
|
+
burnAmount: BN | number,
|
|
48
|
+
includeOneUnitTolerance = false
|
|
49
|
+
) {
|
|
50
|
+
const withdrawalAmount = getBurnCollateralWithdrawalAmount(tokenData, burnAmount);
|
|
51
|
+
const adjustedWithdrawalAmount =
|
|
52
|
+
includeOneUnitTolerance && withdrawalAmount > BigInt(0)
|
|
53
|
+
? withdrawalAmount + BigInt(1)
|
|
54
|
+
: withdrawalAmount;
|
|
55
|
+
return toUiAmount(adjustedWithdrawalAmount, tokenData.data.collateral.decimals);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export async function computeBurnAmountsForFrontendEstimate(
|
|
59
|
+
_account: AccountClient,
|
|
60
|
+
tokenData: LYCToken,
|
|
61
|
+
burnAmount: BN | number,
|
|
62
|
+
_resolver: LendingPlatformResolver
|
|
63
|
+
): Promise<BurnAmounts> {
|
|
64
|
+
// TODO: For frontend redemption estimates, account for expected
|
|
65
|
+
// default-redemption swap slippage/fee.
|
|
66
|
+
return tokenData.computeBurnAmounts(burnAmount);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
async function collectBurnUnwindCandidates(
|
|
70
|
+
tokenData: LYCToken,
|
|
71
|
+
collateralWithdrawalUiAmount: number,
|
|
72
|
+
resolver: LendingPlatformResolver
|
|
73
|
+
): Promise<BurnUnwindCandidate[]> {
|
|
74
|
+
const candidates: BurnUnwindCandidate[] = [];
|
|
75
|
+
|
|
76
|
+
for (let i = 0; i < tokenData.data.lendingPositions.length; i++) {
|
|
77
|
+
const position = tokenData.data.lendingPositions[i];
|
|
78
|
+
if (lendingPlatformToEnum(position.platform) === LendingPlatform.None) {
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
const lpClient = resolver.getForPosition(position);
|
|
83
|
+
const manager = await LycLendingPositionManager.create(lpClient.data, position);
|
|
84
|
+
const eligibility = await manager.getBurnUnwindEligibility(collateralWithdrawalUiAmount);
|
|
85
|
+
if (!eligibility) {
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
candidates.push({
|
|
90
|
+
lendingPositionIndex: i,
|
|
91
|
+
position,
|
|
92
|
+
collateralAmount: BigInt(position.accounting.collateral.toString()),
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
return candidates;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* True when at least one active lending position can supply the collateral implied by `burnAmount`
|
|
101
|
+
* for a liquidity-managed burn (same eligibility filter as {@link findPositionToUnwindForBurn}).
|
|
102
|
+
*/
|
|
103
|
+
export async function hasLendingPositionCoveringBurn(
|
|
104
|
+
tokenData: LYCToken,
|
|
105
|
+
burnAmount: BN | number,
|
|
106
|
+
resolver: LendingPlatformResolver
|
|
107
|
+
): Promise<boolean> {
|
|
108
|
+
const collateralWithdrawalUiAmount = getBurnCollateralWithdrawalUiAmount(
|
|
109
|
+
tokenData,
|
|
110
|
+
burnAmount,
|
|
111
|
+
true
|
|
112
|
+
);
|
|
113
|
+
const candidates = await collectBurnUnwindCandidates(
|
|
114
|
+
tokenData,
|
|
115
|
+
collateralWithdrawalUiAmount,
|
|
116
|
+
resolver
|
|
117
|
+
);
|
|
118
|
+
return candidates.length > 0;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* True when the best burn-candidate lending position can absorb a collateral
|
|
123
|
+
* withdrawal for `burnAmount` without pushing the LTV utilization rate above
|
|
124
|
+
* the position's upper deviation band — meaning no `decrease_carry_position`
|
|
125
|
+
* (debt repayment) is required.
|
|
126
|
+
*
|
|
127
|
+
* Should only be called after {@link hasLendingPositionCoveringBurn} returns
|
|
128
|
+
* `true`; uses the same candidate selection logic as
|
|
129
|
+
* {@link findPositionToUnwindForBurn}.
|
|
130
|
+
*/
|
|
131
|
+
export async function isWithdrawOnlyBurnFeasible(
|
|
132
|
+
tokenData: LYCToken,
|
|
133
|
+
burnAmount: BN | number,
|
|
134
|
+
resolver: LendingPlatformResolver
|
|
135
|
+
): Promise<boolean> {
|
|
136
|
+
const collateralWithdrawalUiAmount = getBurnCollateralWithdrawalUiAmount(
|
|
137
|
+
tokenData,
|
|
138
|
+
burnAmount,
|
|
139
|
+
true
|
|
140
|
+
);
|
|
141
|
+
|
|
142
|
+
let position: TokenLendingPositionData;
|
|
143
|
+
try {
|
|
144
|
+
({ position } = await findPositionToUnwindForBurn(
|
|
145
|
+
tokenData,
|
|
146
|
+
collateralWithdrawalUiAmount,
|
|
147
|
+
resolver
|
|
148
|
+
));
|
|
149
|
+
} catch {
|
|
150
|
+
return false;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
const lpClient = resolver.getForPosition(position);
|
|
154
|
+
const manager = await LycLendingPositionManager.create(lpClient.data, position);
|
|
155
|
+
const postWithdrawalUtilBps = await manager.calcPostWithdrawalUtilizationRateBps(
|
|
156
|
+
collateralWithdrawalUiAmount
|
|
157
|
+
);
|
|
158
|
+
|
|
159
|
+
const upperBound =
|
|
160
|
+
position.config.targetUtilizationRateBps + position.config.maxDeviationAboveTargetUtilBps;
|
|
161
|
+
return postWithdrawalUtilBps <= upperBound;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Chooses which `lendingPositions` slot to unwind for a burn liquidity-managed tx.
|
|
166
|
+
*
|
|
167
|
+
* Considers only active positions with a supported platform and collateral mint
|
|
168
|
+
* matching the token. Filters to positions that can cover `collateralWithdrawalUiAmount`
|
|
169
|
+
* (same strict less-than full-supply rule as pre-withdraw repay sizing). Among those,
|
|
170
|
+
* picks the position with the most deposited collateral (tie → lower index) so the
|
|
171
|
+
* burn unwind comes out of the deepest slot and small positions are left intact.
|
|
172
|
+
*
|
|
173
|
+
* @param getLendingPlatformClient - Resolves the Kamino (etc.) client for a position;
|
|
174
|
+
* kept injectable so callers are not tied to transaction wiring.
|
|
175
|
+
*/
|
|
176
|
+
export async function findPositionToUnwindForBurn(
|
|
177
|
+
tokenData: LYCToken,
|
|
178
|
+
collateralWithdrawalUiAmount: number,
|
|
179
|
+
resolver: LendingPlatformResolver
|
|
180
|
+
): Promise<{ lendingPositionIndex: number; position: TokenLendingPositionData }> {
|
|
181
|
+
const candidates = await collectBurnUnwindCandidates(
|
|
182
|
+
tokenData,
|
|
183
|
+
collateralWithdrawalUiAmount,
|
|
184
|
+
resolver
|
|
185
|
+
);
|
|
186
|
+
|
|
187
|
+
if (!candidates.length) {
|
|
188
|
+
// Fallback: the withdrawal would fully drain the position (supply <=
|
|
189
|
+
// withdrawal amount), so the eligibility filter excluded it. Pick the
|
|
190
|
+
// largest active position instead — the SDK will pass the "all" sentinel.
|
|
191
|
+
const fallback = findLargestActiveLendingPosition(tokenData);
|
|
192
|
+
if (fallback) {
|
|
193
|
+
return fallback;
|
|
194
|
+
}
|
|
195
|
+
throw new Error(
|
|
196
|
+
"No lending position can cover this burn collateral withdrawal with the token collateral mint (or platform is unsupported)"
|
|
197
|
+
);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
candidates.sort((a, b) => {
|
|
201
|
+
if (a.collateralAmount === b.collateralAmount) {
|
|
202
|
+
return a.lendingPositionIndex - b.lendingPositionIndex;
|
|
203
|
+
}
|
|
204
|
+
return b.collateralAmount > a.collateralAmount ? 1 : -1;
|
|
205
|
+
});
|
|
206
|
+
|
|
207
|
+
const best = candidates[0]!;
|
|
208
|
+
return { lendingPositionIndex: best.lendingPositionIndex, position: best.position };
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* Finds the largest active (non-None platform) lending position by collateral
|
|
213
|
+
* amount. Used as a fallback when the standard eligibility filter excludes all
|
|
214
|
+
* positions (e.g. when the withdrawal fully drains the position).
|
|
215
|
+
*/
|
|
216
|
+
function findLargestActiveLendingPosition(
|
|
217
|
+
tokenData: LYCToken
|
|
218
|
+
): { lendingPositionIndex: number; position: TokenLendingPositionData } | null {
|
|
219
|
+
let best: { lendingPositionIndex: number; position: TokenLendingPositionData } | null = null;
|
|
220
|
+
let bestCollateral = BigInt(0);
|
|
221
|
+
|
|
222
|
+
for (let i = 0; i < tokenData.data.lendingPositions.length; i++) {
|
|
223
|
+
const position = tokenData.data.lendingPositions[i];
|
|
224
|
+
if (lendingPlatformToEnum(position.platform) === LendingPlatform.None) {
|
|
225
|
+
continue;
|
|
226
|
+
}
|
|
227
|
+
const collateral = BigInt(position.accounting.collateral.toString());
|
|
228
|
+
if (collateral > bestCollateral) {
|
|
229
|
+
bestCollateral = collateral;
|
|
230
|
+
best = { lendingPositionIndex: i, position };
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
return best;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* Picks the yielding bank to fund repay/swap during a burn liquidity-managed tx.
|
|
239
|
+
*
|
|
240
|
+
* Enumerates banks derived from active `debtCarry` entries on the token, fetches
|
|
241
|
+
* each account via `account.fetchYieldingBanks`, then:
|
|
242
|
+
* 1. Prefer a bank whose **debt mint** holding is at least `requiredDebtUiAmount` (debt token UI)
|
|
243
|
+
* and is largest among those sufficient balances (headroom for the unwind repay).
|
|
244
|
+
* 2. Otherwise prefer the bank whose **default redemption mint** holding has the largest
|
|
245
|
+
* balance in UI units (`toUiAmount` with the holding's on-chain `decimals`).
|
|
246
|
+
*
|
|
247
|
+
* Permissionless burn planning does not pass `sourceMint`; the default-redemption fallback
|
|
248
|
+
* assumes that path is viable for the chosen bank's holdings.
|
|
249
|
+
*/
|
|
250
|
+
export async function findBestYieldingBankForBurn(
|
|
251
|
+
account: AccountClient,
|
|
252
|
+
tokenData: LYCToken,
|
|
253
|
+
position: TokenLendingPositionData,
|
|
254
|
+
requiredDebtUiAmount: number
|
|
255
|
+
): Promise<{ yieldingBank: Address }> {
|
|
256
|
+
const bankAddresses: Address[] = [];
|
|
257
|
+
const seen = new Set<string>();
|
|
258
|
+
|
|
259
|
+
for (let i = 0; i < tokenData.data.debtCarry.length; i++) {
|
|
260
|
+
const carry = tokenData.data.debtCarry[i];
|
|
261
|
+
if (carry.yieldingBaseMint.equals(PublicKey.default)) {
|
|
262
|
+
continue;
|
|
263
|
+
}
|
|
264
|
+
const bankPda = await tokenData.deriveYieldingBankAddressForDebtCarryIndex(i, account.pda);
|
|
265
|
+
const key = String(bankPda);
|
|
266
|
+
if (seen.has(key)) {
|
|
267
|
+
continue;
|
|
268
|
+
}
|
|
269
|
+
seen.add(key);
|
|
270
|
+
bankAddresses.push(bankPda);
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
if (bankAddresses.length === 0) {
|
|
274
|
+
throw new Error(
|
|
275
|
+
"Token has no active yielding carry positions; cannot select a yielding bank for burn liquidity management"
|
|
276
|
+
);
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
const banks = await account.fetchYieldingBanks(bankAddresses);
|
|
280
|
+
const debtMint = fromWeb3Pk(position.accounting.debt.mint);
|
|
281
|
+
|
|
282
|
+
type SufficientDebt = { bank: LYCYieldingBank; debtHeldUi: number };
|
|
283
|
+
const sufficientDebt: SufficientDebt[] = [];
|
|
284
|
+
for (const bank of banks) {
|
|
285
|
+
const holding = bank.findAssetHolding(debtMint);
|
|
286
|
+
if (!holding) {
|
|
287
|
+
continue;
|
|
288
|
+
}
|
|
289
|
+
const debtHeldUi = toUiAmount(holding.amount, holding.decimals);
|
|
290
|
+
if (debtHeldUi >= requiredDebtUiAmount) {
|
|
291
|
+
sufficientDebt.push({ bank, debtHeldUi });
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
if (sufficientDebt.length > 0) {
|
|
296
|
+
const best = maxByNumber(sufficientDebt, (x) => x.debtHeldUi);
|
|
297
|
+
return { yieldingBank: best.bank.address };
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
type DefaultMintUi = { bank: LYCYieldingBank; defaultMintUiAmount: number };
|
|
301
|
+
const defaultMintUi: DefaultMintUi[] = [];
|
|
302
|
+
for (const bank of banks) {
|
|
303
|
+
const holding = bank.findAssetHolding(bank.defaultRedemptionMint);
|
|
304
|
+
if (!holding) {
|
|
305
|
+
continue;
|
|
306
|
+
}
|
|
307
|
+
defaultMintUi.push({
|
|
308
|
+
bank,
|
|
309
|
+
defaultMintUiAmount: toUiAmount(holding.amount, holding.decimals),
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
if (defaultMintUi.length > 0) {
|
|
314
|
+
const best = maxByNumber(defaultMintUi, (x) => x.defaultMintUiAmount);
|
|
315
|
+
return { yieldingBank: best.bank.address };
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
throw new Error(
|
|
319
|
+
"No yielding bank linked to this token has sufficient debt liquidity for unwind or an active default redemption holding"
|
|
320
|
+
);
|
|
321
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { BN } from "@anchor-lang/core";
|
|
2
|
+
import { type Environment, toBigInt } from "common";
|
|
3
|
+
|
|
4
|
+
export type TimelockKind = "touch" | "cleanup";
|
|
5
|
+
|
|
6
|
+
export interface TimelockStatus {
|
|
7
|
+
enabled: boolean;
|
|
8
|
+
isTimelocked: boolean;
|
|
9
|
+
timeCreated: bigint;
|
|
10
|
+
unlockAt?: bigint;
|
|
11
|
+
remainingSecs: bigint;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface TimelockOptions {
|
|
15
|
+
enableLocalTimelocks?: boolean;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const TIMELOCK_COOLDOWN_SECS: Record<TimelockKind, bigint> = {
|
|
19
|
+
touch: 12n * 60n * 60n,
|
|
20
|
+
cleanup: 24n * 60n * 60n,
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export function timelocksEnabled(environment: Environment, options: TimelockOptions = {}): boolean {
|
|
24
|
+
return (
|
|
25
|
+
environment === "prod" || (environment === "local" && options.enableLocalTimelocks === true)
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export function getTimelockStatus(
|
|
30
|
+
environment: Environment,
|
|
31
|
+
timeCreated: bigint | number | BN,
|
|
32
|
+
kind: TimelockKind,
|
|
33
|
+
options: TimelockOptions = {}
|
|
34
|
+
): TimelockStatus {
|
|
35
|
+
const createdAt = toBigInt(timeCreated);
|
|
36
|
+
const enabled = timelocksEnabled(environment, options);
|
|
37
|
+
|
|
38
|
+
if (!enabled || createdAt === 0n) {
|
|
39
|
+
return {
|
|
40
|
+
enabled,
|
|
41
|
+
isTimelocked: false,
|
|
42
|
+
timeCreated: createdAt,
|
|
43
|
+
remainingSecs: 0n,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const unlockAt = createdAt + TIMELOCK_COOLDOWN_SECS[kind];
|
|
48
|
+
const now = BigInt(Math.floor(Date.now() / 1000));
|
|
49
|
+
const remainingSecs = unlockAt > now ? unlockAt - now : 0n;
|
|
50
|
+
|
|
51
|
+
return {
|
|
52
|
+
enabled,
|
|
53
|
+
isTimelocked: remainingSecs > 0n,
|
|
54
|
+
timeCreated: createdAt,
|
|
55
|
+
unlockAt,
|
|
56
|
+
remainingSecs,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export type AllocationTimelockKind = TimelockKind;
|
|
61
|
+
export type AllocationTimelockStatus = TimelockStatus;
|
|
62
|
+
export const allocationTimelocksEnabled = timelocksEnabled;
|
|
63
|
+
export const getAllocationTimelockStatus = getTimelockStatus;
|