@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,585 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TransactionError = exports.HEAVY_CPI_COMPUTE_UNIT_LIMIT_MULTIPLIER = exports.DEFAULT_COMPUTE_UNIT_LIMIT_MULTIPLIER = void 0;
|
|
4
|
+
exports.computeUnitLimitFromSimulation = computeUnitLimitFromSimulation;
|
|
5
|
+
exports.buildTransactionMessage = buildTransactionMessage;
|
|
6
|
+
exports.simulateTransaction = simulateTransaction;
|
|
7
|
+
exports.signSendAndConfirmTransaction = signSendAndConfirmTransaction;
|
|
8
|
+
const kit_1 = require("@solana/kit");
|
|
9
|
+
const instruction_1 = require("./instruction");
|
|
10
|
+
const lutManager_1 = require("../services/lutManager");
|
|
11
|
+
const general_1 = require("./general");
|
|
12
|
+
const constants_1 = require("../constants");
|
|
13
|
+
const jito_1 = require("./jito");
|
|
14
|
+
const jsonRpcFetch_1 = require("./jsonRpcFetch");
|
|
15
|
+
const retry_1 = require("./retry");
|
|
16
|
+
const rpc_1 = require("./rpc");
|
|
17
|
+
const priorityFee_1 = require("./priorityFee");
|
|
18
|
+
const transactionSplitter_1 = require("./transactionSplitter");
|
|
19
|
+
const MAX_COMPUTE_UNIT_LIMIT = 1400000;
|
|
20
|
+
/** Default headroom over simulated CU usage for typical operator transactions. */
|
|
21
|
+
exports.DEFAULT_COMPUTE_UNIT_LIMIT_MULTIPLIER = 1.1;
|
|
22
|
+
/**
|
|
23
|
+
* Headroom for txs with deep CPI stacks (Jupiter + external liquidity mint/deposit).
|
|
24
|
+
* Simulation often undershoots on-chain usage by more than 10%.
|
|
25
|
+
*/
|
|
26
|
+
exports.HEAVY_CPI_COMPUTE_UNIT_LIMIT_MULTIPLIER = 1.2;
|
|
27
|
+
function computeUnitLimitFromSimulation(unitsConsumed, multiplier = exports.DEFAULT_COMPUTE_UNIT_LIMIT_MULTIPLIER) {
|
|
28
|
+
if (!(unitsConsumed > 0) || !(multiplier > 0)) {
|
|
29
|
+
return MAX_COMPUTE_UNIT_LIMIT;
|
|
30
|
+
}
|
|
31
|
+
return Math.min(MAX_COMPUTE_UNIT_LIMIT, Math.ceil(unitsConsumed * multiplier));
|
|
32
|
+
}
|
|
33
|
+
/** Distinct writable account addresses across `instructions`. */
|
|
34
|
+
function collectWritableAccounts(instructions) {
|
|
35
|
+
const seen = new Set();
|
|
36
|
+
const out = [];
|
|
37
|
+
for (const ix of instructions) {
|
|
38
|
+
for (const acc of ix.accounts ?? []) {
|
|
39
|
+
// Account flags: 1 = writable in Kit's `IAccountMeta` (signer is bit 0).
|
|
40
|
+
const role = acc.role;
|
|
41
|
+
if (role != null && (role & 1) === 1) {
|
|
42
|
+
const addr = acc.address;
|
|
43
|
+
if (!seen.has(addr)) {
|
|
44
|
+
seen.add(addr);
|
|
45
|
+
out.push(addr);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return out;
|
|
51
|
+
}
|
|
52
|
+
async function signTransactionsWithSigners(transactions, signers) {
|
|
53
|
+
let signedTransactions = [...transactions];
|
|
54
|
+
const modifyingSigners = signers.filter(kit_1.isTransactionModifyingSigner);
|
|
55
|
+
const partialSigners = signers.filter(kit_1.isTransactionPartialSigner);
|
|
56
|
+
for (const signer of modifyingSigners) {
|
|
57
|
+
signedTransactions = [...(await signer.modifyAndSignTransactions(signedTransactions))];
|
|
58
|
+
}
|
|
59
|
+
for (const signer of partialSigners) {
|
|
60
|
+
const signatures = await signer.signTransactions(signedTransactions);
|
|
61
|
+
signedTransactions = signedTransactions.map((transaction, index) => ({
|
|
62
|
+
...transaction,
|
|
63
|
+
signatures: {
|
|
64
|
+
...transaction.signatures,
|
|
65
|
+
...signatures[index],
|
|
66
|
+
},
|
|
67
|
+
}));
|
|
68
|
+
}
|
|
69
|
+
for (const transaction of signedTransactions) {
|
|
70
|
+
(0, kit_1.assertIsFullySignedTransaction)(transaction);
|
|
71
|
+
}
|
|
72
|
+
return signedTransactions;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Error thrown when a transaction simulation or on-chain execution fails.
|
|
76
|
+
* Carries the raw Solana program logs so callers (e.g. NestJS services)
|
|
77
|
+
* can log them through their own structured logger instead of dumping
|
|
78
|
+
* to stdout via `console.error`.
|
|
79
|
+
*/
|
|
80
|
+
class TransactionError extends Error {
|
|
81
|
+
constructor(message, programLogs = []) {
|
|
82
|
+
super(programLogs.length ? `${message}\n\nProgram logs:\n${programLogs.join("\n")}` : message);
|
|
83
|
+
this.name = "TransactionError";
|
|
84
|
+
this.programLogs = programLogs;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
exports.TransactionError = TransactionError;
|
|
88
|
+
function logProgramLogsLineByLine(logs, label = "Program logs") {
|
|
89
|
+
if (!logs.length) {
|
|
90
|
+
console.error(`${label}: (no logs returned)`);
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
console.error(`${label} (${logs.length} lines):`);
|
|
94
|
+
logs.forEach((line, index) => {
|
|
95
|
+
console.error(`[${index}] ${line}`);
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
async function resolvePriorityFeeMicroLamports(rpc, transactionMessage, writableAccounts, options) {
|
|
99
|
+
if (options?.computeUnitPriceMicroLamports !== undefined) {
|
|
100
|
+
return options.computeUnitPriceMicroLamports;
|
|
101
|
+
}
|
|
102
|
+
if (options?.priorityFeeSetting === undefined) {
|
|
103
|
+
return undefined;
|
|
104
|
+
}
|
|
105
|
+
const estimateMessage = (0, kit_1.appendTransactionMessageInstructions)([(0, instruction_1.setComputeUnitLimitIx)(MAX_COMPUTE_UNIT_LIMIT)], transactionMessage);
|
|
106
|
+
const estimateTransaction = (0, kit_1.getBase64EncodedWireTransaction)((0, kit_1.compileTransaction)(estimateMessage));
|
|
107
|
+
return (0, priorityFee_1.getPriorityFeeEstimate)(rpc, estimateTransaction, writableAccounts, options.priorityFeeSetting);
|
|
108
|
+
}
|
|
109
|
+
function getComputeBudgetInstructions(computeUnitLimit, priorityFeeMicroLamports) {
|
|
110
|
+
return priorityFeeMicroLamports === undefined
|
|
111
|
+
? [(0, instruction_1.setComputeUnitLimitIx)(computeUnitLimit)]
|
|
112
|
+
: [(0, instruction_1.setComputeUnitPriceIx)(priorityFeeMicroLamports), (0, instruction_1.setComputeUnitLimitIx)(computeUnitLimit)];
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Build a transaction message from instructions with embedded signers.
|
|
116
|
+
*
|
|
117
|
+
* @param rpc - Solana RPC client
|
|
118
|
+
* @param feePayer - Fee payer with TransactionSigner (signer will be embedded)
|
|
119
|
+
* @param instructions - Instructions to include
|
|
120
|
+
* @param lookupTableAddresses - Optional lookup tables for compression
|
|
121
|
+
* @param additionalSigners - Optional additional signers beyond fee payer
|
|
122
|
+
* @param blockhash - Optional blockhash (fetched if not provided)
|
|
123
|
+
*/
|
|
124
|
+
async function buildTransactionMessage(rpc, feePayer, instructions, lookupTableAddresses, additionalSigners, blockhash) {
|
|
125
|
+
const blockhashInfo = blockhash ??
|
|
126
|
+
(await rpc.getLatestBlockhash({ commitment: "confirmed" }).send()).value;
|
|
127
|
+
let transactionMessage = (0, kit_1.pipe)((0, kit_1.createTransactionMessage)({ version: 0 }), (tx) => (0, kit_1.setTransactionMessageFeePayerSigner)(feePayer, tx), (tx) => (0, kit_1.setTransactionMessageLifetimeUsingBlockhash)(blockhashInfo, tx), (tx) => (0, kit_1.appendTransactionMessageInstructions)(instructions, tx));
|
|
128
|
+
// Attach all signers (fee payer + additional) to instruction accounts that need them
|
|
129
|
+
const allSigners = [feePayer, ...(additionalSigners ?? [])];
|
|
130
|
+
transactionMessage = (0, kit_1.addSignersToTransactionMessage)(allSigners, transactionMessage);
|
|
131
|
+
if (lookupTableAddresses?.length) {
|
|
132
|
+
const lutInputs = await lutManager_1.lutManager.getLookupTableInputs(rpc, (0, general_1.deduplicateAccounts)(lookupTableAddresses));
|
|
133
|
+
const lookupTables = {};
|
|
134
|
+
for (const lut of lutInputs) {
|
|
135
|
+
lookupTables[lut.address] = [...lut.addresses];
|
|
136
|
+
}
|
|
137
|
+
transactionMessage = (0, kit_1.compressTransactionMessageUsingAddressLookupTables)(transactionMessage, lookupTables);
|
|
138
|
+
}
|
|
139
|
+
return transactionMessage;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Simulate a transaction message without requiring real signatures.
|
|
143
|
+
*
|
|
144
|
+
* Compiles the message into a wire-format transaction (with placeholder
|
|
145
|
+
* signatures), sends it to `simulateTransaction` with signature verification
|
|
146
|
+
* disabled, and validates the same recent blockhash that will be signed and
|
|
147
|
+
* sent if simulation succeeds.
|
|
148
|
+
*
|
|
149
|
+
* @param rpc - Solana RPC client
|
|
150
|
+
* @param transactionMessage - A compilable transaction message (with embedded signers)
|
|
151
|
+
*/
|
|
152
|
+
async function simulateTransaction(rpc, transactionMessage) {
|
|
153
|
+
const compiledTransaction = (0, kit_1.compileTransaction)(transactionMessage);
|
|
154
|
+
const base64EncodedTransaction = (0, kit_1.getBase64EncodedWireTransaction)(compiledTransaction);
|
|
155
|
+
const { value: { err, logs, unitsConsumed }, } = await rpc
|
|
156
|
+
.simulateTransaction(base64EncodedTransaction, {
|
|
157
|
+
encoding: "base64",
|
|
158
|
+
sigVerify: false,
|
|
159
|
+
replaceRecentBlockhash: false,
|
|
160
|
+
commitment: "confirmed",
|
|
161
|
+
})
|
|
162
|
+
.send();
|
|
163
|
+
return {
|
|
164
|
+
err: err,
|
|
165
|
+
logs: logs ?? [],
|
|
166
|
+
unitsConsumed: unitsConsumed ?? 0n,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Build, sign, send, and confirm a transaction using embedded signers.
|
|
171
|
+
*
|
|
172
|
+
* Use this with instructions that have TransactionSigner objects embedded
|
|
173
|
+
* in their accounts.
|
|
174
|
+
*
|
|
175
|
+
* @param rpc - Solana RPC client
|
|
176
|
+
* @param payer - Fee payer with TransactionSigner
|
|
177
|
+
* @param instructionsOrPlan - Kit Instructions or a composed transaction plan
|
|
178
|
+
* (with embedded signers)
|
|
179
|
+
* @param options - Optional configuration
|
|
180
|
+
* @returns Transaction signature
|
|
181
|
+
*
|
|
182
|
+
* @example
|
|
183
|
+
* ```typescript
|
|
184
|
+
* const sig = await signSendAndConfirmTransaction(rpc, payer, [
|
|
185
|
+
* computeBudgetIx,
|
|
186
|
+
* transferIx,
|
|
187
|
+
* ]);
|
|
188
|
+
* ```
|
|
189
|
+
*/
|
|
190
|
+
async function signSendAndConfirmTransaction(rpc, payer, instructionsOrPlan, options) {
|
|
191
|
+
const instructions = Array.isArray(instructionsOrPlan)
|
|
192
|
+
? instructionsOrPlan
|
|
193
|
+
: instructionsOrPlan.instructions;
|
|
194
|
+
const lookupTables = Array.isArray(instructionsOrPlan)
|
|
195
|
+
? options?.lookupTables
|
|
196
|
+
: (options?.lookupTables ?? instructionsOrPlan.lookupTables);
|
|
197
|
+
const segmentLengths = Array.isArray(instructionsOrPlan)
|
|
198
|
+
? undefined
|
|
199
|
+
: instructionsOrPlan.segmentLengths;
|
|
200
|
+
const freshBinSegments = Array.isArray(instructionsOrPlan)
|
|
201
|
+
? undefined
|
|
202
|
+
: instructionsOrPlan.freshBinSegments;
|
|
203
|
+
const filteredLuts = lookupTables?.filter((x) => x !== constants_1.DEFAULT_PUBLIC_KEY);
|
|
204
|
+
// Build transaction message with embedded signers
|
|
205
|
+
const transactionMessage = await buildTransactionMessage(rpc, payer, instructions, filteredLuts, options?.additionalSigners);
|
|
206
|
+
// Reserve room for compute-budget instructions added after this measurement.
|
|
207
|
+
// Also route to the split path whenever the plan declares
|
|
208
|
+
// `freshBinSegments`, since those boundaries only take effect there.
|
|
209
|
+
const txBytes = (0, transactionSplitter_1.measureTxBytes)(transactionMessage);
|
|
210
|
+
const maxUnaugmentedTxBytes = transactionSplitter_1.SOLANA_TX_SIZE_LIMIT - jito_1.BUNDLE_INJECTED_IX_RESERVED_BYTES;
|
|
211
|
+
const mustSplit = txBytes > maxUnaugmentedTxBytes || options?.forceJitoBundle || !!freshBinSegments?.length;
|
|
212
|
+
if (mustSplit) {
|
|
213
|
+
if (options?.sendOversizedAsSequentialTransactions) {
|
|
214
|
+
return signSendAndConfirmSplitSequentially(rpc, payer, instructions, filteredLuts, options, segmentLengths, freshBinSegments);
|
|
215
|
+
}
|
|
216
|
+
return _signSendAndConfirmBundle(rpc, payer, instructions, filteredLuts, options, segmentLengths, freshBinSegments);
|
|
217
|
+
}
|
|
218
|
+
// ── Single-transaction happy path ──
|
|
219
|
+
// Resolve the caller's explicit price or provider-routed priority level. If
|
|
220
|
+
// neither is provided, the transaction carries no compute-unit-price instruction.
|
|
221
|
+
const writableAccounts = collectWritableAccounts(instructions);
|
|
222
|
+
const priorityFeeMicroLamports = await resolvePriorityFeeMicroLamports(rpc, transactionMessage, writableAccounts, options);
|
|
223
|
+
// Simulate with the max CU limit and, when requested, the chosen priority
|
|
224
|
+
// fee. Matching the final compute-budget instructions keeps preflight costs
|
|
225
|
+
// consistent with the on-chain transaction.
|
|
226
|
+
const simMessage = (0, kit_1.appendTransactionMessageInstructions)(getComputeBudgetInstructions(MAX_COMPUTE_UNIT_LIMIT, priorityFeeMicroLamports), transactionMessage);
|
|
227
|
+
const simulation = await simulateTransaction(rpc, simMessage);
|
|
228
|
+
if (simulation.err) {
|
|
229
|
+
if (!options?.hideFailureInfo) {
|
|
230
|
+
console.error("Simulation failed:", simulation.err);
|
|
231
|
+
logProgramLogsLineByLine(simulation.logs, "Simulation logs");
|
|
232
|
+
}
|
|
233
|
+
const errStr = JSON.stringify(simulation.err, (_, v) => typeof v === "bigint" ? v.toString() : v);
|
|
234
|
+
throw new TransactionError(`Transaction simulation failed: ${errStr}`, simulation.logs);
|
|
235
|
+
}
|
|
236
|
+
// Append the measured CU limit (with headroom) and the optional priority fee.
|
|
237
|
+
const computeUnits = computeUnitLimitFromSimulation(Number(simulation.unitsConsumed), options?.computeUnitLimitMultiplier ?? exports.DEFAULT_COMPUTE_UNIT_LIMIT_MULTIPLIER);
|
|
238
|
+
const finalMessage = (0, kit_1.appendTransactionMessageInstructions)(getComputeBudgetInstructions(computeUnits, priorityFeeMicroLamports), transactionMessage);
|
|
239
|
+
// Sign with embedded signers
|
|
240
|
+
const signedTx = await (0, kit_1.signTransactionMessageWithSigners)(finalMessage);
|
|
241
|
+
// Send transaction
|
|
242
|
+
const base64EncodedTransaction = (0, kit_1.getBase64EncodedWireTransaction)(signedTx);
|
|
243
|
+
const signature = (0, kit_1.getSignatureFromTransaction)(signedTx);
|
|
244
|
+
await rpc
|
|
245
|
+
.sendTransaction(base64EncodedTransaction, {
|
|
246
|
+
encoding: "base64",
|
|
247
|
+
skipPreflight: true,
|
|
248
|
+
})
|
|
249
|
+
.send();
|
|
250
|
+
// Confirm transaction at the specified commitment level
|
|
251
|
+
try {
|
|
252
|
+
await confirmTransaction(rpc, signature, "confirmed");
|
|
253
|
+
options?.onSuccess?.();
|
|
254
|
+
return signature;
|
|
255
|
+
}
|
|
256
|
+
catch (error) {
|
|
257
|
+
// Before declaring failure, ask the RPC for the on-chain truth. The
|
|
258
|
+
// confirmation loop can fail for reasons unrelated to the tx itself
|
|
259
|
+
// (timeout, upstream provider returning "All providers failed", etc.),
|
|
260
|
+
// and in those cases the tx may have actually landed.
|
|
261
|
+
let logs = [];
|
|
262
|
+
let landedSuccessfully = false;
|
|
263
|
+
try {
|
|
264
|
+
const info = await rpc
|
|
265
|
+
.getTransaction(signature, { commitment: "confirmed", encoding: "base64" })
|
|
266
|
+
.send();
|
|
267
|
+
if (info) {
|
|
268
|
+
logs = (info.meta?.logMessages ?? []);
|
|
269
|
+
if (info.meta?.err == null) {
|
|
270
|
+
landedSuccessfully = true;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
catch {
|
|
275
|
+
// Best-effort lookup; if this also fails, we fall through and throw.
|
|
276
|
+
}
|
|
277
|
+
if (landedSuccessfully) {
|
|
278
|
+
console.warn(`Confirmation polling failed for signature ${signature} but the transaction landed on-chain; treating as success. Reason: ${error instanceof Error ? error.message : String(error)}`);
|
|
279
|
+
options?.onSuccess?.();
|
|
280
|
+
return signature;
|
|
281
|
+
}
|
|
282
|
+
if (!options?.hideFailureInfo) {
|
|
283
|
+
console.error("Transaction failed:", error);
|
|
284
|
+
logProgramLogsLineByLine(logs, "Transaction logs");
|
|
285
|
+
}
|
|
286
|
+
throw new TransactionError(`Transaction failed: ${error}`, logs);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Build and sign one split bin.
|
|
291
|
+
*/
|
|
292
|
+
async function signSplitBin(rpc, payer, bin, lookupTables, additionalSigners, blockhash, priorityFeeMicroLamports) {
|
|
293
|
+
const msg = await buildTransactionMessage(rpc, payer, bin, lookupTables, additionalSigners, blockhash);
|
|
294
|
+
const finalMsg = (0, kit_1.appendTransactionMessageInstructions)(getComputeBudgetInstructions(MAX_COMPUTE_UNIT_LIMIT, priorityFeeMicroLamports), msg);
|
|
295
|
+
const signed = await (0, kit_1.signTransactionMessageWithSigners)(finalMsg);
|
|
296
|
+
return {
|
|
297
|
+
wireB64: (0, kit_1.getBase64EncodedWireTransaction)(signed),
|
|
298
|
+
signature: (0, kit_1.getSignatureFromTransaction)(signed),
|
|
299
|
+
};
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Split an oversize instruction list into multiple transactions and submit
|
|
303
|
+
* them atomically as a Jito bundle. If Jito is disabled (`jitoTipLamports === 0`),
|
|
304
|
+
* throws instead of bundling.
|
|
305
|
+
*
|
|
306
|
+
* Bundle simulation runs through the RPC's `simulateBundle` (instead of a
|
|
307
|
+
* per-bin `simulateTransaction`) so intra-bundle dependencies — e.g. a
|
|
308
|
+
* refresh ix in bin 0 that the rebalance ix in bin 1 relies on — are honored
|
|
309
|
+
* by the simulator the same way they are by atomic bundle execution. The
|
|
310
|
+
* simulation skips signature verification but validates the same shared
|
|
311
|
+
* blockhash that is retained for final signing.
|
|
312
|
+
*/
|
|
313
|
+
async function _signSendAndConfirmBundle(rpc, payer, instructions, lookupTables, options, segmentLengths, freshBinSegments) {
|
|
314
|
+
const tipLamports = options?.jitoTipLamports ?? jito_1.DEFAULT_JITO_TIP_LAMPORTS;
|
|
315
|
+
if (tipLamports === 0) {
|
|
316
|
+
throw new TransactionError("Transaction exceeds the Solana size limit and Jito bundling is disabled. " +
|
|
317
|
+
"Set jitoTipLamports > 0 to enable bundle fallback.");
|
|
318
|
+
}
|
|
319
|
+
// Fetch one blockhash and reuse it for every tx in the bundle. This
|
|
320
|
+
// avoids redundant RPC calls during splitting + per-bin build, and
|
|
321
|
+
// ensures the whole bundle shares a single liveness window.
|
|
322
|
+
const { value: blockhash } = (await rpc
|
|
323
|
+
.getLatestBlockhash({ commitment: "confirmed" })
|
|
324
|
+
.send());
|
|
325
|
+
// Split instructions, reserving headroom for the compute-unit-limit ix
|
|
326
|
+
// that gets appended to every bin and the Jito tip ix that gets appended
|
|
327
|
+
// to one bin. Without reservation, a near-full bin would overflow 1232
|
|
328
|
+
// bytes once those are injected.
|
|
329
|
+
const { bins } = await (0, transactionSplitter_1.splitIntoTransactionBins)(rpc, payer, instructions, {
|
|
330
|
+
lookupTables,
|
|
331
|
+
additionalSigners: options?.additionalSigners,
|
|
332
|
+
blockhash,
|
|
333
|
+
reservedBytes: jito_1.BUNDLE_INJECTED_IX_RESERVED_BYTES,
|
|
334
|
+
segmentLengths,
|
|
335
|
+
freshBinSegments,
|
|
336
|
+
});
|
|
337
|
+
if (bins.length === 0) {
|
|
338
|
+
throw new TransactionError("Bundle build produced 0 bins; cannot attach Jito tip.");
|
|
339
|
+
}
|
|
340
|
+
// Build each bin's transaction message once; we'll reuse it for both the
|
|
341
|
+
// pre-signing simulation and the final signing pass.
|
|
342
|
+
const messages = [];
|
|
343
|
+
for (const bin of bins) {
|
|
344
|
+
messages.push(await buildTransactionMessage(rpc, payer, bin, lookupTables, options?.additionalSigners, blockhash));
|
|
345
|
+
}
|
|
346
|
+
// Append the Jito tip ix AFTER LUT compression in `buildTransactionMessage`.
|
|
347
|
+
// If we appended it before compression and any supplied LUT contained the
|
|
348
|
+
// tip account, it would be moved into the LUT-loaded address set. Jito's
|
|
349
|
+
// bundle validator only inspects *static* account keys for tip accounts and
|
|
350
|
+
// rejects with "Bundles must write lock at least one tip account to be
|
|
351
|
+
// eligible for the auction" otherwise.
|
|
352
|
+
//
|
|
353
|
+
// Pick the smallest tx to carry the tip so a bin already near the 1232-byte
|
|
354
|
+
// wire limit isn't pushed over by the extra ~81 bytes of tip-transfer ix.
|
|
355
|
+
const tipBinIdx = messages
|
|
356
|
+
.map((m, i) => ({ i, bytes: (0, transactionSplitter_1.measureTxBytes)(m) }))
|
|
357
|
+
.reduce((a, b) => (a.bytes <= b.bytes ? a : b)).i;
|
|
358
|
+
const tipAccount = (0, jito_1.getRandomTipAccount)();
|
|
359
|
+
const tipIx = (0, jito_1.buildTipInstruction)(payer, tipAccount, tipLamports);
|
|
360
|
+
messages[tipBinIdx] = (0, kit_1.appendTransactionMessageInstructions)([tipIx], messages[tipBinIdx]);
|
|
361
|
+
console.log(`[bundle] attached ${tipLamports} lamport tip to tx[${tipBinIdx}] (smallest of ${messages.length}) → ${tipAccount}`);
|
|
362
|
+
const priorityFeeMicroLamports = await Promise.all(messages.map((message, index) => resolvePriorityFeeMicroLamports(rpc, message, collectWritableAccounts(bins[index]), options)));
|
|
363
|
+
// Phase 1: encode each bin with a max CU limit and run a single bundle-level
|
|
364
|
+
// simulation. `compileTransaction` stamps placeholder signatures, while
|
|
365
|
+
// `skipSigVerify` lets the simulator validate the real shared blockhash
|
|
366
|
+
// before the wallet signs.
|
|
367
|
+
const simEncodedTxs = [];
|
|
368
|
+
for (let i = 0; i < messages.length; i += 1) {
|
|
369
|
+
const simMsg = (0, kit_1.appendTransactionMessageInstructions)(getComputeBudgetInstructions(MAX_COMPUTE_UNIT_LIMIT, priorityFeeMicroLamports[i]), messages[i]);
|
|
370
|
+
const compiled = (0, kit_1.compileTransaction)(simMsg);
|
|
371
|
+
simEncodedTxs.push((0, kit_1.getBase64EncodedWireTransaction)(compiled));
|
|
372
|
+
}
|
|
373
|
+
const rpcUrl = (0, rpc_1.getMainnetRpcUrl)();
|
|
374
|
+
const simResult = await (0, jito_1.simulateBundle)(rpcUrl, simEncodedTxs, {
|
|
375
|
+
replaceRecentBlockhash: false,
|
|
376
|
+
});
|
|
377
|
+
const failingIdx = simResult.transactionResults.findIndex((r) => r.err != null);
|
|
378
|
+
if (simResult.summary !== "succeeded" || failingIdx >= 0) {
|
|
379
|
+
const idx = failingIdx >= 0 ? failingIdx : 0;
|
|
380
|
+
const failed = simResult.transactionResults[idx];
|
|
381
|
+
if (!options?.hideFailureInfo) {
|
|
382
|
+
console.error(`Bundle simulation failed at tx[${idx}] of ${bins.length}.`);
|
|
383
|
+
console.error("Summary:", JSON.stringify(simResult.summary, null, 2));
|
|
384
|
+
simResult.transactionResults.forEach((r, i) => {
|
|
385
|
+
const tag = i === idx ? " ← FAILED" : i < idx ? " (succeeded)" : " (not run)";
|
|
386
|
+
console.error(`\n── tx[${i}]${tag} (unitsConsumed=${r.unitsConsumed ?? "—"}) ──`);
|
|
387
|
+
if (r.err != null)
|
|
388
|
+
console.error(" err:", JSON.stringify(r.err));
|
|
389
|
+
logProgramLogsLineByLine(r.logs ?? [], `tx[${i}] bundle simulation logs`);
|
|
390
|
+
});
|
|
391
|
+
// Fall back to a single-tx `simulateTransaction` on the failing bin —
|
|
392
|
+
// it returns longer logs than `simulateBundle` (which truncates at
|
|
393
|
+
// ~16 lines). Skips the intra-bundle effects from preceding bins, so
|
|
394
|
+
// dependent failures (e.g. PriceIsStale when bin 0 was supposed to
|
|
395
|
+
// refresh) surface here instead. Best-effort; we keep the original
|
|
396
|
+
// error.
|
|
397
|
+
//
|
|
398
|
+
// Uses direct JSON-RPC instead of Kit's typed `rpc.simulateTransaction`
|
|
399
|
+
// wrapper because the latter has thrown "Do not know how to serialize
|
|
400
|
+
// a BigInt" on this code path — the raw fetch route gives us a
|
|
401
|
+
// bigint-safe replacer in `jsonRpcFetchOnce`'s body builder.
|
|
402
|
+
try {
|
|
403
|
+
const failedSimMsg = (0, kit_1.appendTransactionMessageInstructions)(getComputeBudgetInstructions(MAX_COMPUTE_UNIT_LIMIT, priorityFeeMicroLamports[idx]), messages[idx]);
|
|
404
|
+
const failedB64 = (0, kit_1.getBase64EncodedWireTransaction)((0, kit_1.compileTransaction)(failedSimMsg));
|
|
405
|
+
const standalone = await (0, jsonRpcFetch_1.jsonRpcFetchOnce)(rpcUrl, "simulateTransaction", [
|
|
406
|
+
failedB64,
|
|
407
|
+
{
|
|
408
|
+
encoding: "base64",
|
|
409
|
+
sigVerify: false,
|
|
410
|
+
replaceRecentBlockhash: false,
|
|
411
|
+
commitment: "confirmed",
|
|
412
|
+
},
|
|
413
|
+
]);
|
|
414
|
+
console.error(`\n── tx[${idx}] standalone simulateTransaction (full logs, no preceding-bin effects) ──`);
|
|
415
|
+
if (standalone.value.err != null)
|
|
416
|
+
console.error(" err:", JSON.stringify(standalone.value.err, (_, v) => typeof v === "bigint" ? v.toString() : v));
|
|
417
|
+
const logs = standalone.value.logs ?? [];
|
|
418
|
+
logProgramLogsLineByLine(logs, `tx[${idx}] standalone simulation logs`);
|
|
419
|
+
}
|
|
420
|
+
catch (err) {
|
|
421
|
+
console.error(" (standalone fallback failed:", err instanceof Error ? err.message : String(err), ")");
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
const errStr = JSON.stringify(failed?.err ?? simResult.summary, (_, v) => typeof v === "bigint" ? v.toString() : v);
|
|
425
|
+
throw new TransactionError(`Bundle simulation failed at tx[${idx}]: ${errStr}`, failed?.logs ?? []);
|
|
426
|
+
}
|
|
427
|
+
// Phase 2: stamp each bin with its measured CU + 10% headroom while retaining
|
|
428
|
+
// the blockhash validated by simulation, then compile and batch-sign them.
|
|
429
|
+
// Browser wallets expose
|
|
430
|
+
// `signTransactions`, and using it here preserves the intended multi-tx
|
|
431
|
+
// approval flow for bundles instead of requesting one signature at a time.
|
|
432
|
+
// Fall back to MAX_COMPUTE_UNIT_LIMIT if the simulator didn't report a
|
|
433
|
+
// unitsConsumed value (some endpoints omit it on edge cases).
|
|
434
|
+
const finalTransactions = [];
|
|
435
|
+
for (let i = 0; i < messages.length; i += 1) {
|
|
436
|
+
const measured = simResult.transactionResults[i]?.unitsConsumed;
|
|
437
|
+
const cu = measured && measured > 0 ? Math.ceil(measured * 1.1) : MAX_COMPUTE_UNIT_LIMIT;
|
|
438
|
+
const withCu = (0, kit_1.appendTransactionMessageInstructions)(getComputeBudgetInstructions(cu, priorityFeeMicroLamports[i]), messages[i]);
|
|
439
|
+
const finalMsg = (0, kit_1.setTransactionMessageLifetimeUsingBlockhash)(blockhash, withCu);
|
|
440
|
+
finalTransactions.push((0, kit_1.compileTransaction)(finalMsg));
|
|
441
|
+
}
|
|
442
|
+
const signedTransactions = await signTransactionsWithSigners(finalTransactions, [
|
|
443
|
+
payer,
|
|
444
|
+
...(options?.additionalSigners ?? []),
|
|
445
|
+
]);
|
|
446
|
+
const base64Txs = signedTransactions.map(kit_1.getBase64EncodedWireTransaction);
|
|
447
|
+
const lastSignature = (0, kit_1.getSignatureFromTransaction)(signedTransactions[signedTransactions.length - 1]);
|
|
448
|
+
// Submit and confirm the bundle through the user's own RPC endpoint
|
|
449
|
+
// (Helius, Ironforge, etc.). These providers proxy Jito bundle methods,
|
|
450
|
+
// avoiding the global rate limit on Jito's public block engine.
|
|
451
|
+
try {
|
|
452
|
+
console.log(`[bundle] sending via ${(0, rpc_1.redactRpcUrlForLog)(rpcUrl)}`);
|
|
453
|
+
const bundleId = await (0, jito_1.sendBundle)(rpcUrl, base64Txs);
|
|
454
|
+
await (0, jito_1.confirmBundle)(rpcUrl, bundleId);
|
|
455
|
+
options?.onSuccess?.();
|
|
456
|
+
// Last bin carries the tip; signature matches what landed on-chain.
|
|
457
|
+
return lastSignature;
|
|
458
|
+
}
|
|
459
|
+
catch (error) {
|
|
460
|
+
if (error instanceof jito_1.JitoBundleError) {
|
|
461
|
+
throw new TransactionError(`Jito bundle failed: ${error.message}`);
|
|
462
|
+
}
|
|
463
|
+
throw error;
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
/**
|
|
467
|
+
* Same bin-packing as {@link signSendAndConfirmBundle}, but no tip and each
|
|
468
|
+
* bin is sent and confirmed via normal RPC (for environments without Jito).
|
|
469
|
+
*/
|
|
470
|
+
async function signSendAndConfirmSplitSequentially(rpc, payer, instructions, lookupTables, options, segmentLengths, freshBinSegments) {
|
|
471
|
+
const { value: splitBlockhash } = (await rpc
|
|
472
|
+
.getLatestBlockhash({ commitment: "confirmed" })
|
|
473
|
+
.send());
|
|
474
|
+
const { bins } = await (0, transactionSplitter_1.splitIntoTransactionBins)(rpc, payer, instructions, {
|
|
475
|
+
lookupTables,
|
|
476
|
+
additionalSigners: options?.additionalSigners,
|
|
477
|
+
blockhash: splitBlockhash,
|
|
478
|
+
reservedBytes: jito_1.BUNDLE_INJECTED_IX_RESERVED_BYTES,
|
|
479
|
+
segmentLengths,
|
|
480
|
+
freshBinSegments,
|
|
481
|
+
});
|
|
482
|
+
let lastSignature;
|
|
483
|
+
for (const [binIndex, bin] of bins.entries()) {
|
|
484
|
+
const { value: blockhash } = (await rpc
|
|
485
|
+
.getLatestBlockhash({ commitment: "confirmed" })
|
|
486
|
+
.send());
|
|
487
|
+
const transactionMessage = await buildTransactionMessage(rpc, payer, bin, lookupTables, options?.additionalSigners, blockhash);
|
|
488
|
+
const priorityFeeMicroLamports = await resolvePriorityFeeMicroLamports(rpc, transactionMessage, collectWritableAccounts(bin), options);
|
|
489
|
+
const simMsg = (0, kit_1.appendTransactionMessageInstructions)(getComputeBudgetInstructions(MAX_COMPUTE_UNIT_LIMIT, priorityFeeMicroLamports), transactionMessage);
|
|
490
|
+
const simulation = await simulateTransaction(rpc, simMsg);
|
|
491
|
+
if (simulation.err) {
|
|
492
|
+
if (!options?.hideFailureInfo) {
|
|
493
|
+
console.error(`Simulation failed for split bin ${binIndex}:`, simulation.err);
|
|
494
|
+
logProgramLogsLineByLine(simulation.logs, `split bin ${binIndex} simulation logs`);
|
|
495
|
+
}
|
|
496
|
+
const errStr = JSON.stringify(simulation.err, (_, v) => typeof v === "bigint" ? v.toString() : v);
|
|
497
|
+
throw new TransactionError(`Split bin ${binIndex} simulation failed: ${errStr}`, simulation.logs);
|
|
498
|
+
}
|
|
499
|
+
const { wireB64, signature } = await signSplitBin(rpc, payer, bin, lookupTables, options?.additionalSigners, blockhash, priorityFeeMicroLamports);
|
|
500
|
+
await rpc
|
|
501
|
+
.sendTransaction(wireB64, {
|
|
502
|
+
encoding: "base64",
|
|
503
|
+
skipPreflight: true,
|
|
504
|
+
})
|
|
505
|
+
.send();
|
|
506
|
+
try {
|
|
507
|
+
await confirmTransaction(rpc, signature, "confirmed");
|
|
508
|
+
}
|
|
509
|
+
catch (error) {
|
|
510
|
+
const logs = await fetchTransactionLogsWithRetry(rpc, signature);
|
|
511
|
+
if (!options?.hideFailureInfo) {
|
|
512
|
+
console.error(`Transaction failed for split bin ${binIndex}:`, signature, error);
|
|
513
|
+
logProgramLogsLineByLine(logs, `split bin ${binIndex} transaction logs`);
|
|
514
|
+
}
|
|
515
|
+
throw new TransactionError(`Transaction failed: ${error}`, logs);
|
|
516
|
+
}
|
|
517
|
+
lastSignature = signature;
|
|
518
|
+
}
|
|
519
|
+
options?.onSuccess?.();
|
|
520
|
+
return lastSignature;
|
|
521
|
+
}
|
|
522
|
+
async function fetchTransactionLogsWithRetry(rpc, signature) {
|
|
523
|
+
for (let attempt = 0; attempt < 10; attempt += 1) {
|
|
524
|
+
try {
|
|
525
|
+
const info = await rpc
|
|
526
|
+
.getTransaction(signature, { commitment: "confirmed", encoding: "base64" })
|
|
527
|
+
.send();
|
|
528
|
+
const logs = (info?.meta?.logMessages ?? []);
|
|
529
|
+
if (logs.length > 0)
|
|
530
|
+
return logs;
|
|
531
|
+
}
|
|
532
|
+
catch {
|
|
533
|
+
// Best-effort log retrieval; retry below.
|
|
534
|
+
}
|
|
535
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
536
|
+
}
|
|
537
|
+
return [];
|
|
538
|
+
}
|
|
539
|
+
/**
|
|
540
|
+
* Wait for a transaction to be confirmed at the specified commitment level.
|
|
541
|
+
*
|
|
542
|
+
* @param rpc - Solana RPC client
|
|
543
|
+
* @param signature - Transaction signature to confirm
|
|
544
|
+
* @param commitment - Commitment level to wait for
|
|
545
|
+
* @param timeoutMs - Maximum time to wait (default: 60000ms)
|
|
546
|
+
*/
|
|
547
|
+
async function confirmTransaction(rpc, signature, commitment, timeoutMs = 60000) {
|
|
548
|
+
const startTime = Date.now();
|
|
549
|
+
const pollIntervalMs = 500;
|
|
550
|
+
while (Date.now() - startTime < timeoutMs) {
|
|
551
|
+
let status = null;
|
|
552
|
+
try {
|
|
553
|
+
const response = await rpc.getSignatureStatuses([signature]).send();
|
|
554
|
+
status = response.value[0];
|
|
555
|
+
}
|
|
556
|
+
catch (err) {
|
|
557
|
+
// Transient upstream RPC failures during confirmation polling (e.g.
|
|
558
|
+
// Ironforge returning "All providers failed", DNS hiccups, 429s) must
|
|
559
|
+
// not declare the transaction failed — the tx may already have landed.
|
|
560
|
+
// Keep polling until we get a real status or the timeout elapses.
|
|
561
|
+
if (!(0, retry_1.isTransientNetworkError)(err))
|
|
562
|
+
throw err;
|
|
563
|
+
}
|
|
564
|
+
if (status !== null) {
|
|
565
|
+
// Check if transaction failed
|
|
566
|
+
if (status.err) {
|
|
567
|
+
// Use replacer to handle BigInt values in error objects
|
|
568
|
+
const errStr = JSON.stringify(status.err, (_, v) => typeof v === "bigint" ? v.toString() : v);
|
|
569
|
+
throw new Error(`Transaction failed: ${errStr}`);
|
|
570
|
+
}
|
|
571
|
+
// Check if we've reached the desired commitment level
|
|
572
|
+
const confirmationStatus = status.confirmationStatus;
|
|
573
|
+
if (confirmationStatus === commitment ||
|
|
574
|
+
(commitment === "processed" && confirmationStatus) ||
|
|
575
|
+
(commitment === "confirmed" &&
|
|
576
|
+
(confirmationStatus === "confirmed" || confirmationStatus === "finalized")) ||
|
|
577
|
+
(commitment === "finalized" && confirmationStatus === "finalized")) {
|
|
578
|
+
return;
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
// Wait before polling again
|
|
582
|
+
await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));
|
|
583
|
+
}
|
|
584
|
+
throw new Error(`Transaction confirmation timeout after ${timeoutMs}ms`);
|
|
585
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Greedy bin-packing splitter for instruction lists that exceed the Solana
|
|
3
|
+
* transaction wire limit (1232 bytes).
|
|
4
|
+
*
|
|
5
|
+
* Instructions are packed left-to-right (preserving caller order) into the
|
|
6
|
+
* fewest bins where each bin compiles to a valid-sized transaction. The
|
|
7
|
+
* result is an ordered array of instruction arrays, each of which can be
|
|
8
|
+
* independently built into a v0 `TransactionMessage`.
|
|
9
|
+
*/
|
|
10
|
+
import type { Address, Blockhash, CompilableTransactionMessage, Instruction, Rpc, SolanaRpcApi, TransactionSigner } from "@solana/kit";
|
|
11
|
+
/**
|
|
12
|
+
* Solana's maximum serialized transaction size in bytes. The base64 encoding
|
|
13
|
+
* inflates this to ~1644 chars, but we measure the decoded wire bytes via
|
|
14
|
+
* Kit's `compileTransaction` + `getBase64EncodedWireTransaction` and compare
|
|
15
|
+
* against the decoded length.
|
|
16
|
+
*/
|
|
17
|
+
export declare const SOLANA_TX_SIZE_LIMIT = 1232;
|
|
18
|
+
/**
|
|
19
|
+
* Measure the wire size of a compilable transaction message in bytes.
|
|
20
|
+
*/
|
|
21
|
+
export declare function measureTxBytes(msg: CompilableTransactionMessage): number;
|
|
22
|
+
export interface SplitResult {
|
|
23
|
+
/** Ordered instruction bins; each bin fits in one tx. */
|
|
24
|
+
bins: Instruction[][];
|
|
25
|
+
}
|
|
26
|
+
export interface SplitOptions {
|
|
27
|
+
lookupTables?: Address[];
|
|
28
|
+
additionalSigners?: TransactionSigner[];
|
|
29
|
+
/**
|
|
30
|
+
* Shared blockhash to use when compiling each candidate. Passing a stable
|
|
31
|
+
* blockhash avoids a per-iteration `getLatestBlockhash` RPC call and keeps
|
|
32
|
+
* every bin's size measurement consistent with what downstream signing
|
|
33
|
+
* will actually produce.
|
|
34
|
+
*/
|
|
35
|
+
blockhash?: Readonly<{
|
|
36
|
+
blockhash: Blockhash;
|
|
37
|
+
lastValidBlockHeight: bigint;
|
|
38
|
+
}>;
|
|
39
|
+
/**
|
|
40
|
+
* Bytes to reserve below {@link SOLANA_TX_SIZE_LIMIT} for instructions
|
|
41
|
+
* injected _after_ splitting (e.g. a compute-unit-limit ix on every bin
|
|
42
|
+
* and a Jito tip ix on one bin). Default 0 means pack tight to the limit.
|
|
43
|
+
*/
|
|
44
|
+
reservedBytes?: number;
|
|
45
|
+
/**
|
|
46
|
+
* When set, positive lengths must sum to `instructions.length`; each slice is
|
|
47
|
+
* kept intact when packing. Same field as `TransactionPlan.segmentLengths`.
|
|
48
|
+
* When omitted, each instruction is packed independently.
|
|
49
|
+
*/
|
|
50
|
+
segmentLengths?: number[];
|
|
51
|
+
/**
|
|
52
|
+
* Segment indices (0-based, into the segments produced by `segmentLengths`)
|
|
53
|
+
* that must always start a fresh bin. The current bin — if non-empty — is
|
|
54
|
+
* flushed before the segment is appended, even if the segment would have
|
|
55
|
+
* fit alongside it.
|
|
56
|
+
*
|
|
57
|
+
* Use case: a CPI whose on-chain check encodes a position-relative index
|
|
58
|
+
* (e.g. Kamino's flash-borrow records `borrowInstructionIndex` for the
|
|
59
|
+
* matching repay) needs the segment to land at a predictable index inside
|
|
60
|
+
* its own tx. Marking that segment as a forced boundary keeps its index
|
|
61
|
+
* stable regardless of how the preceding segments pack.
|
|
62
|
+
*/
|
|
63
|
+
freshBinSegments?: number[];
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Turn a flat instruction list into indivisible segments for bin-packing.
|
|
67
|
+
*
|
|
68
|
+
* @throws If lengths are invalid or do not partition `instructions`.
|
|
69
|
+
*/
|
|
70
|
+
export declare function buildInstructionSegments(instructions: Instruction[], segmentLengths?: number[]): Instruction[][];
|
|
71
|
+
/**
|
|
72
|
+
* Split an instruction list into the minimum number of ordered bins where
|
|
73
|
+
* each bin compiles to a transaction within the wire-size limit (minus
|
|
74
|
+
* `reservedBytes` of headroom for post-split instruction injection).
|
|
75
|
+
*
|
|
76
|
+
* Preserves instruction ordering: segments and instructions are never
|
|
77
|
+
* reordered across bins. Each bin is measured by actually compiling a v0
|
|
78
|
+
* message with the provided fee payer + ALTs, so the measurement accounts for
|
|
79
|
+
* signatures, account tables, and compact-u16 encoding exactly.
|
|
80
|
+
*
|
|
81
|
+
* Throws if:
|
|
82
|
+
* - A single segment cannot fit in one tx (even alone).
|
|
83
|
+
* - The total bins exceed `MAX_BUNDLE_TRANSACTIONS` (Jito's 5-tx limit).
|
|
84
|
+
*/
|
|
85
|
+
export declare function splitIntoTransactionBins(rpc: Rpc<SolanaRpcApi>, payer: TransactionSigner, instructions: Instruction[], options?: SplitOptions): Promise<SplitResult>;
|