@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,380 @@
|
|
|
1
|
+
import { address, type Address } from "@solana/kit";
|
|
2
|
+
import { BN, IdlAccounts } from "@anchor-lang/core";
|
|
3
|
+
import { PublicKey } from "@solana/web3.js";
|
|
4
|
+
import { LongYieldCarry } from "../idl/long_yield_carry";
|
|
5
|
+
import {
|
|
6
|
+
applyBps,
|
|
7
|
+
fromWeb3Pk,
|
|
8
|
+
LendingPlatform,
|
|
9
|
+
lendingPlatformToEnum,
|
|
10
|
+
mints,
|
|
11
|
+
toBigInt,
|
|
12
|
+
toUiAmount,
|
|
13
|
+
TVL_USD_DECIMAL_PLACES,
|
|
14
|
+
} from "common";
|
|
15
|
+
import type { PdaClient } from "../client/pda";
|
|
16
|
+
import { podBoolToNumber } from "../utils/general";
|
|
17
|
+
import { collectableNetYieldUsd, splitFeeProportionally } from "../utils/tokenFeeMath";
|
|
18
|
+
import type { BurnAmounts, MintAmounts } from "../client/types/general";
|
|
19
|
+
|
|
20
|
+
const MAX_COLLECTABLE_SURPLUS_BPS = BigInt(1);
|
|
21
|
+
const BASIS_POINTS = BigInt(10_000);
|
|
22
|
+
|
|
23
|
+
/** Decoded on-chain data for a Token account, derived from the IDL. */
|
|
24
|
+
export type TokenAccountData = IdlAccounts<LongYieldCarry>["token"];
|
|
25
|
+
|
|
26
|
+
export type TokenLendingPositionData = TokenAccountData["lendingPositions"][number];
|
|
27
|
+
|
|
28
|
+
export type TokenCarryPositionData = TokenAccountData["debtCarry"][number];
|
|
29
|
+
|
|
30
|
+
/** A carry position paired with its index in the `debtCarry` array. */
|
|
31
|
+
export interface IndexedCarryPosition {
|
|
32
|
+
index: number;
|
|
33
|
+
data: TokenCarryPositionData;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/** A lending position paired with its index in the `lendingPositions` array. */
|
|
37
|
+
export interface IndexedLendingPosition {
|
|
38
|
+
index: number;
|
|
39
|
+
data: TokenLendingPositionData;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Wrapper around the raw Token account data from the program.
|
|
44
|
+
*
|
|
45
|
+
* Provides typed access to on-chain state and a home for
|
|
46
|
+
* derived/computed helpers as the SDK grows.
|
|
47
|
+
*/
|
|
48
|
+
export class LYCToken {
|
|
49
|
+
constructor(
|
|
50
|
+
/** The Token PDA address this data was fetched from */
|
|
51
|
+
readonly address: Address,
|
|
52
|
+
/** Deserialized account data */
|
|
53
|
+
readonly data: TokenAccountData
|
|
54
|
+
) {}
|
|
55
|
+
|
|
56
|
+
get circuitBreaker(): number {
|
|
57
|
+
return podBoolToNumber(this.data.config.circuitBreaker);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/** Whether the token is operational (circuit breaker is off). */
|
|
61
|
+
get isActive(): boolean {
|
|
62
|
+
return this.circuitBreaker === 0;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Returns carry positions that have a non-default yielding base mint and
|
|
67
|
+
* positive shares — i.e. positions with actual yield exposure. Includes the
|
|
68
|
+
* original array index so callers can reference `debtCarry[index]` on-chain.
|
|
69
|
+
*/
|
|
70
|
+
get activeCarryPositions(): IndexedCarryPosition[] {
|
|
71
|
+
return this.data.debtCarry
|
|
72
|
+
.map((carry, index) => ({ index, data: carry }))
|
|
73
|
+
.filter(
|
|
74
|
+
({ data }) =>
|
|
75
|
+
!data.yieldingBaseMint.equals(PublicKey.default) && toBigInt(data.shares) > BigInt(0)
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Returns lending positions that have a non-None platform — i.e. positions
|
|
81
|
+
* with an active lending protocol. Includes the original array index so
|
|
82
|
+
* callers can reference `lendingPositions[index]` on-chain.
|
|
83
|
+
*/
|
|
84
|
+
get activeLendingPositions(): IndexedLendingPosition[] {
|
|
85
|
+
return this.data.lendingPositions
|
|
86
|
+
.map((lp, index) => ({ index, data: lp }))
|
|
87
|
+
.filter(({ data }) => lendingPlatformToEnum(data.platform) !== LendingPlatform.None);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Subset of {@link activeLendingPositions} that currently has supplied
|
|
92
|
+
* collateral on-chain. Filters out slots whose platform is set but whose
|
|
93
|
+
* collateral has been fully withdrawn — those slots can still report
|
|
94
|
+
* non-zero protocol-level state via a shared obligation, which makes them
|
|
95
|
+
* unsafe targets for borrow/withdraw flows.
|
|
96
|
+
*/
|
|
97
|
+
get usedLendingPositions(): IndexedLendingPosition[] {
|
|
98
|
+
return this.activeLendingPositions.filter(
|
|
99
|
+
({ data }) => toBigInt(data.accounting.collateral) > BigInt(0)
|
|
100
|
+
);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
get config(): TokenAccountData["config"] {
|
|
104
|
+
return this.data.config;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
get collateral(): TokenAccountData["collateral"] {
|
|
108
|
+
return this.data.collateral;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
get fees(): TokenAccountData["fees"] {
|
|
112
|
+
return this.data.fees;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
get accounting(): TokenAccountData["accounting"] {
|
|
116
|
+
return this.data.accounting;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
get id(): number {
|
|
120
|
+
return this.data.config.id;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
get mint(): Address {
|
|
124
|
+
return address(this.data.config.mint.toString());
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
get collateralMint(): Address {
|
|
128
|
+
return address(this.data.collateral.mint.toString());
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
get label(): string {
|
|
132
|
+
const symbol = mints.get(this.collateralMint)?.symbol;
|
|
133
|
+
return (symbol ? symbol : this.address).toLowerCase();
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
get decimals(): number {
|
|
137
|
+
return this.data.config.decimals;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* On-chain token price: **collateral per yToken** in UI units (same decimals as
|
|
142
|
+
* the yToken), not USD. At genesis this is 1:1 with the collateral asset; it
|
|
143
|
+
* moves with NAV. For USD notional use `tvlUsd` / `totalSupply`, or
|
|
144
|
+
* `client.account.fetchUserHoldings` (pro-rata TVL).
|
|
145
|
+
*/
|
|
146
|
+
get price(): number {
|
|
147
|
+
return toUiAmount(this.data.accounting.price, this.decimals);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
get totalSupply(): number {
|
|
151
|
+
return toUiAmount(this.data.accounting.totalSupply, this.decimals);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Total protocol TVL in USD (on-chain `accounting.tvlUsd` is 8-decimal
|
|
156
|
+
* fixed-point USD, $1 = 10^8).
|
|
157
|
+
*/
|
|
158
|
+
get tvlUsd(): number {
|
|
159
|
+
return toUiAmount(this.data.accounting.tvlUsd, TVL_USD_DECIMAL_PLACES);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
get depositLimitUi(): number {
|
|
163
|
+
return toUiAmount(this.data.config.depositLimit, this.data.collateral.decimals);
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Sum of active `debtCarry[*].tvlUsd` (8-decimal normalized USD stored on-chain).
|
|
168
|
+
* Mirrors the on-chain `Token::total_carry_tvl_usd` helper.
|
|
169
|
+
*/
|
|
170
|
+
get totalCarryTvlUsd(): bigint {
|
|
171
|
+
return this.activeCarryPositions.reduce(
|
|
172
|
+
(sum, { data }) => sum + toBigInt(data.tvlUsd),
|
|
173
|
+
BigInt(0)
|
|
174
|
+
);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Sum of active `lendingPositions[*].accounting.debt.tvlUsd` (8-decimal normalized USD).
|
|
179
|
+
* Mirrors the on-chain `Token::total_lp_debt_usd` helper.
|
|
180
|
+
*/
|
|
181
|
+
get totalLendingDebtTvlUsd(): bigint {
|
|
182
|
+
return this.activeLendingPositions.reduce(
|
|
183
|
+
(sum, { data }) => sum + toBigInt(data.accounting.debt.tvlUsd),
|
|
184
|
+
BigInt(0)
|
|
185
|
+
);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Collectable net yield (8-dec USD): any carry surplus above debt. Zero when
|
|
190
|
+
* carry TVL does not exceed debt TVL.
|
|
191
|
+
*/
|
|
192
|
+
get collectableNetYieldUsd(): bigint {
|
|
193
|
+
return collectableNetYieldUsd(this.totalCarryTvlUsd, this.totalLendingDebtTvlUsd);
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* True when the token is active and carry TVL exceeds debt by at most 1 bp.
|
|
198
|
+
*/
|
|
199
|
+
hasInterestToCollect(): boolean {
|
|
200
|
+
const totalDebtUsd = this.totalLendingDebtTvlUsd;
|
|
201
|
+
const surplusUsd = collectableNetYieldUsd(this.totalCarryTvlUsd, totalDebtUsd);
|
|
202
|
+
|
|
203
|
+
if (!this.isActive || totalDebtUsd === BigInt(0) || surplusUsd === BigInt(0)) {
|
|
204
|
+
return false;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
// A carry surplus above 1 bp of debt cannot plausibly accrue between hourly
|
|
208
|
+
// collection cycles at supported yields, so treat it as stablecoin pricing
|
|
209
|
+
// drift instead of realizable interest. Cross-multiplication preserves
|
|
210
|
+
// sub-bp precision without truncating an integer bps calculation.
|
|
211
|
+
return surplusUsd * BASIS_POINTS <= totalDebtUsd * MAX_COLLECTABLE_SURPLUS_BPS;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Finds an active lending position whose debt mint matches `debtMint`.
|
|
216
|
+
*
|
|
217
|
+
* Returns the 0-based position index, or `-1` if no active position matches.
|
|
218
|
+
*/
|
|
219
|
+
findLendingPositionByDebtMint(debtMint: Address): number {
|
|
220
|
+
for (let i = 0; i < this.data.lendingPositions.length; i++) {
|
|
221
|
+
const position = this.data.lendingPositions[i];
|
|
222
|
+
if (lendingPlatformToEnum(position.platform) === LendingPlatform.None) continue;
|
|
223
|
+
if (fromWeb3Pk(position.accounting.debt.mint) === debtMint) return i;
|
|
224
|
+
}
|
|
225
|
+
return -1;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* Mirror the on-chain `Token::compute_mint_amounts` formula.
|
|
230
|
+
*
|
|
231
|
+
* The holder price-fee (the residual after protocol/curator take their split)
|
|
232
|
+
* is a gift to the pre-mint supply `S`. To stop the minter clawing back their
|
|
233
|
+
* own gift, all minted tokens are sized at the post-gift price — i.e. scaled by
|
|
234
|
+
* `S / (S + priceFee)`. The fee is not applied to the price on-chain at mint
|
|
235
|
+
* time; it is buffered and released gradually by `refreshTokenState`, so this
|
|
236
|
+
* quote returns the same base-unit amounts the program mints.
|
|
237
|
+
*
|
|
238
|
+
* When `totalSupply === 0` the price-fee has no beneficiary, so the whole fee
|
|
239
|
+
* is split between protocol and curator and the user is priced at the current
|
|
240
|
+
* price.
|
|
241
|
+
*/
|
|
242
|
+
computeMintAmounts(depositAmount: BN | number): MintAmounts {
|
|
243
|
+
const deposit = BigInt(depositAmount.toString());
|
|
244
|
+
const feeBps = BigInt(this.data.fees.mintingFeeBps);
|
|
245
|
+
const protocolPctBps = BigInt(this.data.fees.protocolMintBurnPctBps);
|
|
246
|
+
const curatorPctBps = BigInt(this.data.fees.curatorMintBurnPctBps);
|
|
247
|
+
const price = BigInt(this.data.accounting.price.toString());
|
|
248
|
+
const scale = BigInt(Math.pow(10, this.data.config.decimals));
|
|
249
|
+
const totalSupply = BigInt(this.data.accounting.totalSupply.toString());
|
|
250
|
+
|
|
251
|
+
const tokensBeforeFees = (deposit * scale) / price;
|
|
252
|
+
const totalFee = applyBps(tokensBeforeFees, feeBps);
|
|
253
|
+
|
|
254
|
+
// Genesis: no holders to receive the price-fee → split the whole fee and
|
|
255
|
+
// price the user at the current price (no post-gift scaling).
|
|
256
|
+
if (totalSupply === 0n) {
|
|
257
|
+
const [protocolFee, curatorFee] = splitFeeProportionally(
|
|
258
|
+
totalFee,
|
|
259
|
+
protocolPctBps,
|
|
260
|
+
curatorPctBps
|
|
261
|
+
);
|
|
262
|
+
return { tokensToUser: tokensBeforeFees - totalFee, protocolFee, curatorFee };
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
const baseProtocolFee = applyBps(totalFee, protocolPctBps);
|
|
266
|
+
const baseCuratorFee = applyBps(totalFee, curatorPctBps);
|
|
267
|
+
const priceFee = totalFee - baseProtocolFee - baseCuratorFee;
|
|
268
|
+
|
|
269
|
+
// Post-gift sizing: scale every minted amount by S / (S + priceFee).
|
|
270
|
+
const denom = totalSupply + priceFee;
|
|
271
|
+
const tokensToUser = ((tokensBeforeFees - totalFee) * totalSupply) / denom;
|
|
272
|
+
const protocolFee = (baseProtocolFee * totalSupply) / denom;
|
|
273
|
+
const curatorFee = (baseCuratorFee * totalSupply) / denom;
|
|
274
|
+
|
|
275
|
+
return { tokensToUser, protocolFee, curatorFee };
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
/**
|
|
279
|
+
* Mirror the on-chain `Token::compute_burn_amounts` formula.
|
|
280
|
+
*
|
|
281
|
+
* Returns exact base-unit values for the three accounting effects of a burn:
|
|
282
|
+
* - `collateralToUser`: collateral returned to the burner
|
|
283
|
+
* - `protocolFee`: yTokens accrued as pending protocol fees
|
|
284
|
+
* - `supplyReduction`: net decrease in total supply
|
|
285
|
+
*
|
|
286
|
+
* The holder price-fee (residual after protocol/curator take their split) is
|
|
287
|
+
* not paid out as collateral; on-chain it is buffered and dripped into the
|
|
288
|
+
* price for the remaining holders. The burner is leaving, so there is no
|
|
289
|
+
* self-dealing to guard against and no post-gift scaling is applied. When the
|
|
290
|
+
* burner is redeeming all circulating supply (no remaining holders), the full
|
|
291
|
+
* fee is split between protocol and curator instead of benefiting no one.
|
|
292
|
+
*/
|
|
293
|
+
computeBurnAmounts(burnAmount: BN | number): BurnAmounts {
|
|
294
|
+
const burn = BigInt(burnAmount.toString());
|
|
295
|
+
const feeBps = BigInt(this.data.fees.burningFeeBps);
|
|
296
|
+
const protocolPctBps = BigInt(this.data.fees.protocolMintBurnPctBps);
|
|
297
|
+
const curatorPctBps = BigInt(this.data.fees.curatorMintBurnPctBps);
|
|
298
|
+
const price = BigInt(this.data.accounting.price.toString());
|
|
299
|
+
const scale = BigInt(Math.pow(10, this.data.config.decimals));
|
|
300
|
+
|
|
301
|
+
const totalSupply = BigInt(this.data.accounting.totalSupply.toString());
|
|
302
|
+
const pendingProtocolFees = BigInt(this.data.accounting.pendingProtocolFees.toString());
|
|
303
|
+
const pendingCuratorFees = BigInt(this.data.accounting.pendingCuratorFees.toString());
|
|
304
|
+
const pendingFees = pendingProtocolFees + pendingCuratorFees;
|
|
305
|
+
const circulatingSupply = totalSupply > pendingFees ? totalSupply - pendingFees : BigInt(0);
|
|
306
|
+
const isLastHolder = burn >= circulatingSupply;
|
|
307
|
+
|
|
308
|
+
const totalFee = applyBps(burn, feeBps);
|
|
309
|
+
const baseProtocolFee = applyBps(totalFee, protocolPctBps);
|
|
310
|
+
const baseCuratorFee = applyBps(totalFee, curatorPctBps);
|
|
311
|
+
let protocolFee: bigint;
|
|
312
|
+
let curatorFee: bigint;
|
|
313
|
+
if (isLastHolder) {
|
|
314
|
+
[protocolFee, curatorFee] = splitFeeProportionally(totalFee, protocolPctBps, curatorPctBps);
|
|
315
|
+
} else {
|
|
316
|
+
// No cap: protocol/curator take their base split and the price-fee residual
|
|
317
|
+
// is buffered (dripped into the price) rather than redirected to them.
|
|
318
|
+
[protocolFee, curatorFee] = [baseProtocolFee, baseCuratorFee];
|
|
319
|
+
}
|
|
320
|
+
const tokensAfterFee = burn - totalFee;
|
|
321
|
+
const collateralToUser = (tokensAfterFee * price) / scale;
|
|
322
|
+
const supplyReduction = burn - protocolFee - curatorFee;
|
|
323
|
+
|
|
324
|
+
return { collateralToUser, protocolFee, curatorFee, supplyReduction };
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
/**
|
|
328
|
+
* Convenience wrapper around {@link computeBurnAmounts} that returns only
|
|
329
|
+
* the collateral owed to the user, converted to a UI amount
|
|
330
|
+
* (divided by 10^collateral.decimals).
|
|
331
|
+
*/
|
|
332
|
+
computeBurnWithdrawUiAmount(burnAmount: BN | number): number {
|
|
333
|
+
const { collateralToUser } = this.computeBurnAmounts(burnAmount);
|
|
334
|
+
return toUiAmount(collateralToUser, this.data.collateral.decimals);
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
/**
|
|
338
|
+
* Derives the YieldingBank PDA for the `debtCarry` entry at `debtCarryIndex`.
|
|
339
|
+
*
|
|
340
|
+
* @param debtCarryIndex - Index into `data.debtCarry`
|
|
341
|
+
* @param pda - Program PDA client (`YIELDING_BANK` seeds match on-chain).
|
|
342
|
+
*/
|
|
343
|
+
async deriveYieldingBankAddressForDebtCarryIndex(
|
|
344
|
+
debtCarryIndex: number,
|
|
345
|
+
pda: PdaClient
|
|
346
|
+
): Promise<Address> {
|
|
347
|
+
const carry = this.data.debtCarry[debtCarryIndex];
|
|
348
|
+
if (!carry) {
|
|
349
|
+
throw new Error(
|
|
350
|
+
`Invalid debtCarryIndex ${debtCarryIndex} (token has ${this.data.debtCarry.length} debt carry entries)`
|
|
351
|
+
);
|
|
352
|
+
}
|
|
353
|
+
if (carry.yieldingBaseMint.equals(PublicKey.default)) {
|
|
354
|
+
throw new Error(
|
|
355
|
+
`debtCarry[${debtCarryIndex}] has no active yielding bank (zero yielding base mint)`
|
|
356
|
+
);
|
|
357
|
+
}
|
|
358
|
+
const [bankPda] = await pda.deriveYieldingBankPda(
|
|
359
|
+
fromWeb3Pk(carry.yieldingBaseMint),
|
|
360
|
+
carry.yieldingBankId
|
|
361
|
+
);
|
|
362
|
+
return bankPda;
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
/**
|
|
366
|
+
* Resolves the YieldingBank PDA for the token's first active `debtCarry`
|
|
367
|
+
* entry. Used as a default when callers haven't picked a specific bank.
|
|
368
|
+
*/
|
|
369
|
+
async resolveFirstYieldingBankAddress(pda: PdaClient): Promise<Address> {
|
|
370
|
+
const firstActiveIdx = this.data.debtCarry.findIndex(
|
|
371
|
+
(entry) => !entry.yieldingBaseMint.equals(PublicKey.default)
|
|
372
|
+
);
|
|
373
|
+
if (firstActiveIdx < 0) {
|
|
374
|
+
throw new Error(
|
|
375
|
+
"Token has no active yielding banks — call `increase_carry_position` first or pick a bank explicitly"
|
|
376
|
+
);
|
|
377
|
+
}
|
|
378
|
+
return this.deriveYieldingBankAddressForDebtCarryIndex(firstActiveIdx, pda);
|
|
379
|
+
}
|
|
380
|
+
}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { type Address } from "@solana/kit";
|
|
2
|
+
import { PublicKey } from "@solana/web3.js";
|
|
3
|
+
import { IdlAccounts } from "@anchor-lang/core";
|
|
4
|
+
import { LongYieldCarry } from "../idl/long_yield_carry";
|
|
5
|
+
import { fromWeb3Pk, toUiAmount } from "common";
|
|
6
|
+
import { podBoolToNumber } from "../utils/general";
|
|
7
|
+
import { TOKEN_STALENESS_THRESHOLD_SECS } from "../constants/general";
|
|
8
|
+
|
|
9
|
+
/** Decoded on-chain data for a YieldingBank account, derived from the IDL. */
|
|
10
|
+
export type YieldingBankAccountData = IdlAccounts<LongYieldCarry>["yieldingBank"];
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Wrapper around the raw YieldingBank account data from the program.
|
|
14
|
+
*
|
|
15
|
+
* Provides typed access to on-chain state and a home for
|
|
16
|
+
* derived/computed helpers as the SDK grows.
|
|
17
|
+
*/
|
|
18
|
+
export class LYCYieldingBank {
|
|
19
|
+
constructor(
|
|
20
|
+
/** The YieldingBank PDA address this data was fetched from */
|
|
21
|
+
readonly address: Address,
|
|
22
|
+
/** Deserialized account data */
|
|
23
|
+
readonly data: YieldingBankAccountData
|
|
24
|
+
) {}
|
|
25
|
+
|
|
26
|
+
get circuitBreaker(): number {
|
|
27
|
+
return podBoolToNumber(this.data.config.circuitBreaker);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
get isActive(): boolean {
|
|
31
|
+
return this.circuitBreaker === 0;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
get config(): YieldingBankAccountData["config"] {
|
|
35
|
+
return this.data.config;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
get accounting(): YieldingBankAccountData["accounting"] {
|
|
39
|
+
return this.data.accounting;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
get baseMint(): Address {
|
|
43
|
+
return fromWeb3Pk(this.data.config.baseMint);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
get defaultRedemptionMint(): Address {
|
|
47
|
+
return fromWeb3Pk(this.data.config.defaultRedemptionMint);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
get id(): number {
|
|
51
|
+
return this.data.config.id;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
get decimals(): number {
|
|
55
|
+
return this.data.config.decimals;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
get timeCreatedTs(): bigint {
|
|
59
|
+
return BigInt(this.data.config.timeCreatedTs.toString());
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
get sharePrice(): number {
|
|
63
|
+
return toUiAmount(this.data.accounting.sharePrice, this.decimals);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
get totalShares(): number {
|
|
67
|
+
return toUiAmount(this.data.accounting.totalShares, this.decimals);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* `true` when the bank's cached `lastRefreshedTs` is older than the
|
|
72
|
+
* client-side staleness threshold and a `refresh_yielding_bank` ix should
|
|
73
|
+
* be prepended before any handler that calls `verify_price_is_fresh`.
|
|
74
|
+
*/
|
|
75
|
+
get isStale(): boolean {
|
|
76
|
+
const lastRefreshed = this.data.accounting.lastRefreshedTs.toNumber();
|
|
77
|
+
const nowSecs = Math.floor(Date.now() / 1000);
|
|
78
|
+
return nowSecs - lastRefreshed > TOKEN_STALENESS_THRESHOLD_SECS;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
get baseAsset(): YieldingBankAccountData["baseAsset"] {
|
|
82
|
+
return this.data.baseAsset;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
get assets(): YieldingBankAccountData["assets"] {
|
|
86
|
+
return this.data.assets;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
get externalYieldingPositions(): YieldingBankAccountData["externalYieldingPositions"] {
|
|
90
|
+
return this.data.externalYieldingPositions;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Find the asset holding entry for a given mint across the bank's
|
|
95
|
+
* base asset and additional assets. Returns null if not held.
|
|
96
|
+
*/
|
|
97
|
+
findAssetHolding(mint: Address): YieldingBankAccountData["baseAsset"] | null {
|
|
98
|
+
if (this.baseMint === mint) {
|
|
99
|
+
return this.data.baseAsset;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
for (const asset of this.data.assets) {
|
|
103
|
+
if (asset.mint.equals(PublicKey.default)) continue;
|
|
104
|
+
if (fromWeb3Pk(asset.mint) === mint) {
|
|
105
|
+
return asset;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Returns the flat index for the asset holding matching the given mint
|
|
114
|
+
* (0 = base_asset, 1–12 = assets[0–11]), or null if not found.
|
|
115
|
+
*/
|
|
116
|
+
findAssetHoldingIndex(mint: Address): number | null {
|
|
117
|
+
if (this.baseMint === mint) return 0;
|
|
118
|
+
|
|
119
|
+
for (let i = 0; i < this.data.assets.length; i++) {
|
|
120
|
+
const asset = this.data.assets[i];
|
|
121
|
+
if (asset.mint.equals(PublicKey.default)) continue;
|
|
122
|
+
if (fromWeb3Pk(asset.mint) === mint) return i + 1;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
}
|