@kamino-finance/klend-sdk 3.2.26 → 4.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/dist/classes/action.d.ts +1 -0
- package/dist/classes/action.d.ts.map +1 -0
- package/dist/classes/action.js +1132 -1188
- package/dist/classes/action.js.map +1 -1
- package/dist/classes/curve.d.ts +1 -0
- package/dist/classes/curve.d.ts.map +1 -0
- package/dist/classes/curve.js +1 -1
- package/dist/classes/curve.js.map +1 -1
- package/dist/classes/fraction.d.ts +1 -0
- package/dist/classes/fraction.d.ts.map +1 -0
- package/dist/classes/fraction.js +7 -6
- package/dist/classes/fraction.js.map +1 -1
- package/dist/classes/index.d.ts +1 -0
- package/dist/classes/index.d.ts.map +1 -0
- package/dist/classes/index.js.map +1 -1
- package/dist/classes/jupiterPerps.d.ts +1 -0
- package/dist/classes/jupiterPerps.d.ts.map +1 -0
- package/dist/classes/jupiterPerps.js +7 -18
- package/dist/classes/jupiterPerps.js.map +1 -1
- package/dist/classes/manager.d.ts +1 -0
- package/dist/classes/manager.d.ts.map +1 -0
- package/dist/classes/manager.js +132 -159
- package/dist/classes/manager.js.map +1 -1
- package/dist/classes/market.d.ts +2 -1
- package/dist/classes/market.d.ts.map +1 -0
- package/dist/classes/market.js +622 -716
- package/dist/classes/market.js.map +1 -1
- package/dist/classes/obligation.d.ts +1 -0
- package/dist/classes/obligation.d.ts.map +1 -0
- package/dist/classes/obligation.js +60 -62
- package/dist/classes/obligation.js.map +1 -1
- package/dist/classes/reserve.d.ts +1 -0
- package/dist/classes/reserve.d.ts.map +1 -0
- package/dist/classes/reserve.js +121 -130
- package/dist/classes/reserve.js.map +1 -1
- package/dist/classes/shared.d.ts +2 -1
- package/dist/classes/shared.d.ts.map +1 -0
- package/dist/classes/shared.js.map +1 -1
- package/dist/classes/utils.d.ts +1 -0
- package/dist/classes/utils.d.ts.map +1 -0
- package/dist/classes/utils.js +3 -3
- package/dist/classes/utils.js.map +1 -1
- package/dist/classes/vault.d.ts +1 -0
- package/dist/classes/vault.d.ts.map +1 -0
- package/dist/classes/vault.js +334 -354
- package/dist/classes/vault.js.map +1 -1
- package/dist/client_kamino_manager.d.ts +1 -0
- package/dist/client_kamino_manager.d.ts.map +1 -0
- package/dist/client_kamino_manager.js +323 -326
- package/dist/client_kamino_manager.js.map +1 -1
- package/dist/idl_codegen/accounts/LendingMarket.d.ts +1 -0
- package/dist/idl_codegen/accounts/LendingMarket.d.ts.map +1 -0
- package/dist/idl_codegen/accounts/LendingMarket.js +89 -55
- package/dist/idl_codegen/accounts/LendingMarket.js.map +1 -1
- package/dist/idl_codegen/accounts/Obligation.d.ts +1 -0
- package/dist/idl_codegen/accounts/Obligation.d.ts.map +1 -0
- package/dist/idl_codegen/accounts/Obligation.js +87 -56
- package/dist/idl_codegen/accounts/Obligation.js.map +1 -1
- package/dist/idl_codegen/accounts/ReferrerState.d.ts +1 -0
- package/dist/idl_codegen/accounts/ReferrerState.d.ts.map +1 -0
- package/dist/idl_codegen/accounts/ReferrerState.js +22 -33
- package/dist/idl_codegen/accounts/ReferrerState.js.map +1 -1
- package/dist/idl_codegen/accounts/ReferrerTokenState.d.ts +1 -0
- package/dist/idl_codegen/accounts/ReferrerTokenState.d.ts.map +1 -0
- package/dist/idl_codegen/accounts/ReferrerTokenState.js +35 -37
- package/dist/idl_codegen/accounts/ReferrerTokenState.js.map +1 -1
- package/dist/idl_codegen/accounts/Reserve.d.ts +1 -0
- package/dist/idl_codegen/accounts/Reserve.d.ts.map +1 -0
- package/dist/idl_codegen/accounts/Reserve.js +60 -49
- package/dist/idl_codegen/accounts/Reserve.js.map +1 -1
- package/dist/idl_codegen/accounts/ShortUrl.d.ts +1 -0
- package/dist/idl_codegen/accounts/ShortUrl.d.ts.map +1 -0
- package/dist/idl_codegen/accounts/ShortUrl.js +22 -33
- package/dist/idl_codegen/accounts/ShortUrl.js.map +1 -1
- package/dist/idl_codegen/accounts/UserMetadata.d.ts +1 -0
- package/dist/idl_codegen/accounts/UserMetadata.d.ts.map +1 -0
- package/dist/idl_codegen/accounts/UserMetadata.js +34 -37
- package/dist/idl_codegen/accounts/UserMetadata.js.map +1 -1
- package/dist/idl_codegen/accounts/UserState.d.ts +1 -0
- package/dist/idl_codegen/accounts/UserState.d.ts.map +1 -0
- package/dist/idl_codegen/accounts/UserState.js +77 -48
- package/dist/idl_codegen/accounts/UserState.js.map +1 -1
- package/dist/idl_codegen/accounts/index.d.ts +1 -0
- package/dist/idl_codegen/accounts/index.d.ts.map +1 -0
- package/dist/idl_codegen/accounts/index.js.map +1 -1
- package/dist/idl_codegen/errors/anchor.d.ts +1 -0
- package/dist/idl_codegen/errors/anchor.d.ts.map +1 -0
- package/dist/idl_codegen/errors/anchor.js +270 -216
- package/dist/idl_codegen/errors/anchor.js.map +1 -1
- package/dist/idl_codegen/errors/custom.d.ts +1 -0
- package/dist/idl_codegen/errors/custom.d.ts.map +1 -0
- package/dist/idl_codegen/errors/custom.js +560 -448
- package/dist/idl_codegen/errors/custom.js.map +1 -1
- package/dist/idl_codegen/errors/index.d.ts +1 -0
- package/dist/idl_codegen/errors/index.d.ts.map +1 -0
- package/dist/idl_codegen/errors/index.js.map +1 -1
- package/dist/idl_codegen/instructions/borrowObligationLiquidity.d.ts +1 -0
- package/dist/idl_codegen/instructions/borrowObligationLiquidity.d.ts.map +1 -0
- package/dist/idl_codegen/instructions/borrowObligationLiquidity.js.map +1 -1
- package/dist/idl_codegen/instructions/deleteReferrerStateAndShortUrl.d.ts +1 -0
- package/dist/idl_codegen/instructions/deleteReferrerStateAndShortUrl.d.ts.map +1 -0
- package/dist/idl_codegen/instructions/deleteReferrerStateAndShortUrl.js.map +1 -1
- package/dist/idl_codegen/instructions/depositObligationCollateral.d.ts +1 -0
- package/dist/idl_codegen/instructions/depositObligationCollateral.d.ts.map +1 -0
- package/dist/idl_codegen/instructions/depositObligationCollateral.js.map +1 -1
- package/dist/idl_codegen/instructions/depositReserveLiquidity.d.ts +1 -0
- package/dist/idl_codegen/instructions/depositReserveLiquidity.d.ts.map +1 -0
- package/dist/idl_codegen/instructions/depositReserveLiquidity.js.map +1 -1
- package/dist/idl_codegen/instructions/depositReserveLiquidityAndObligationCollateral.d.ts +1 -0
- package/dist/idl_codegen/instructions/depositReserveLiquidityAndObligationCollateral.d.ts.map +1 -0
- package/dist/idl_codegen/instructions/depositReserveLiquidityAndObligationCollateral.js.map +1 -1
- package/dist/idl_codegen/instructions/flashBorrowReserveLiquidity.d.ts +1 -0
- package/dist/idl_codegen/instructions/flashBorrowReserveLiquidity.d.ts.map +1 -0
- package/dist/idl_codegen/instructions/flashBorrowReserveLiquidity.js.map +1 -1
- package/dist/idl_codegen/instructions/flashRepayReserveLiquidity.d.ts +1 -0
- package/dist/idl_codegen/instructions/flashRepayReserveLiquidity.d.ts.map +1 -0
- package/dist/idl_codegen/instructions/flashRepayReserveLiquidity.js.map +1 -1
- package/dist/idl_codegen/instructions/idlMissingTypes.d.ts +1 -0
- package/dist/idl_codegen/instructions/idlMissingTypes.d.ts.map +1 -0
- package/dist/idl_codegen/instructions/idlMissingTypes.js.map +1 -1
- package/dist/idl_codegen/instructions/index.d.ts +1 -0
- package/dist/idl_codegen/instructions/index.d.ts.map +1 -0
- package/dist/idl_codegen/instructions/index.js.map +1 -1
- package/dist/idl_codegen/instructions/initFarmsForReserve.d.ts +1 -0
- package/dist/idl_codegen/instructions/initFarmsForReserve.d.ts.map +1 -0
- package/dist/idl_codegen/instructions/initFarmsForReserve.js.map +1 -1
- package/dist/idl_codegen/instructions/initLendingMarket.d.ts +1 -0
- package/dist/idl_codegen/instructions/initLendingMarket.d.ts.map +1 -0
- package/dist/idl_codegen/instructions/initLendingMarket.js.map +1 -1
- package/dist/idl_codegen/instructions/initObligation.d.ts +1 -0
- package/dist/idl_codegen/instructions/initObligation.d.ts.map +1 -0
- package/dist/idl_codegen/instructions/initObligation.js.map +1 -1
- package/dist/idl_codegen/instructions/initObligationFarmsForReserve.d.ts +1 -0
- package/dist/idl_codegen/instructions/initObligationFarmsForReserve.d.ts.map +1 -0
- package/dist/idl_codegen/instructions/initObligationFarmsForReserve.js.map +1 -1
- package/dist/idl_codegen/instructions/initReferrerStateAndShortUrl.d.ts +1 -0
- package/dist/idl_codegen/instructions/initReferrerStateAndShortUrl.d.ts.map +1 -0
- package/dist/idl_codegen/instructions/initReferrerStateAndShortUrl.js.map +1 -1
- package/dist/idl_codegen/instructions/initReferrerTokenState.d.ts +1 -0
- package/dist/idl_codegen/instructions/initReferrerTokenState.d.ts.map +1 -0
- package/dist/idl_codegen/instructions/initReferrerTokenState.js.map +1 -1
- package/dist/idl_codegen/instructions/initReserve.d.ts +1 -0
- package/dist/idl_codegen/instructions/initReserve.d.ts.map +1 -0
- package/dist/idl_codegen/instructions/initReserve.js.map +1 -1
- package/dist/idl_codegen/instructions/initUserMetadata.d.ts +1 -0
- package/dist/idl_codegen/instructions/initUserMetadata.d.ts.map +1 -0
- package/dist/idl_codegen/instructions/initUserMetadata.js.map +1 -1
- package/dist/idl_codegen/instructions/liquidateObligationAndRedeemReserveCollateral.d.ts +1 -0
- package/dist/idl_codegen/instructions/liquidateObligationAndRedeemReserveCollateral.d.ts.map +1 -0
- package/dist/idl_codegen/instructions/liquidateObligationAndRedeemReserveCollateral.js.map +1 -1
- package/dist/idl_codegen/instructions/redeemFees.d.ts +1 -0
- package/dist/idl_codegen/instructions/redeemFees.d.ts.map +1 -0
- package/dist/idl_codegen/instructions/redeemFees.js.map +1 -1
- package/dist/idl_codegen/instructions/redeemReserveCollateral.d.ts +1 -0
- package/dist/idl_codegen/instructions/redeemReserveCollateral.d.ts.map +1 -0
- package/dist/idl_codegen/instructions/redeemReserveCollateral.js.map +1 -1
- package/dist/idl_codegen/instructions/refreshObligation.d.ts +1 -0
- package/dist/idl_codegen/instructions/refreshObligation.d.ts.map +1 -0
- package/dist/idl_codegen/instructions/refreshObligation.js.map +1 -1
- package/dist/idl_codegen/instructions/refreshObligationFarmsForReserve.d.ts +1 -0
- package/dist/idl_codegen/instructions/refreshObligationFarmsForReserve.d.ts.map +1 -0
- package/dist/idl_codegen/instructions/refreshObligationFarmsForReserve.js.map +1 -1
- package/dist/idl_codegen/instructions/refreshReserve.d.ts +1 -0
- package/dist/idl_codegen/instructions/refreshReserve.d.ts.map +1 -0
- package/dist/idl_codegen/instructions/refreshReserve.js.map +1 -1
- package/dist/idl_codegen/instructions/refreshReservesBatch.d.ts +1 -0
- package/dist/idl_codegen/instructions/refreshReservesBatch.d.ts.map +1 -0
- package/dist/idl_codegen/instructions/refreshReservesBatch.js.map +1 -1
- package/dist/idl_codegen/instructions/repayObligationLiquidity.d.ts +1 -0
- package/dist/idl_codegen/instructions/repayObligationLiquidity.d.ts.map +1 -0
- package/dist/idl_codegen/instructions/repayObligationLiquidity.js.map +1 -1
- package/dist/idl_codegen/instructions/requestElevationGroup.d.ts +1 -0
- package/dist/idl_codegen/instructions/requestElevationGroup.d.ts.map +1 -0
- package/dist/idl_codegen/instructions/requestElevationGroup.js.map +1 -1
- package/dist/idl_codegen/instructions/socializeLoss.d.ts +1 -0
- package/dist/idl_codegen/instructions/socializeLoss.d.ts.map +1 -0
- package/dist/idl_codegen/instructions/socializeLoss.js.map +1 -1
- package/dist/idl_codegen/instructions/updateEntireReserveConfig.d.ts +1 -0
- package/dist/idl_codegen/instructions/updateEntireReserveConfig.d.ts.map +1 -0
- package/dist/idl_codegen/instructions/updateEntireReserveConfig.js.map +1 -1
- package/dist/idl_codegen/instructions/updateLendingMarket.d.ts +1 -0
- package/dist/idl_codegen/instructions/updateLendingMarket.d.ts.map +1 -0
- package/dist/idl_codegen/instructions/updateLendingMarket.js.map +1 -1
- package/dist/idl_codegen/instructions/updateLendingMarketOwner.d.ts +1 -0
- package/dist/idl_codegen/instructions/updateLendingMarketOwner.d.ts.map +1 -0
- package/dist/idl_codegen/instructions/updateLendingMarketOwner.js.map +1 -1
- package/dist/idl_codegen/instructions/updateReserveConfig.d.ts +1 -0
- package/dist/idl_codegen/instructions/updateReserveConfig.d.ts.map +1 -0
- package/dist/idl_codegen/instructions/updateReserveConfig.js.map +1 -1
- package/dist/idl_codegen/instructions/updateSingleReserveConfig.d.ts +1 -0
- package/dist/idl_codegen/instructions/updateSingleReserveConfig.d.ts.map +1 -0
- package/dist/idl_codegen/instructions/updateSingleReserveConfig.js.map +1 -1
- package/dist/idl_codegen/instructions/withdrawObligationCollateral.d.ts +1 -0
- package/dist/idl_codegen/instructions/withdrawObligationCollateral.d.ts.map +1 -0
- package/dist/idl_codegen/instructions/withdrawObligationCollateral.js.map +1 -1
- package/dist/idl_codegen/instructions/withdrawObligationCollateralAndRedeemReserveCollateral.d.ts +1 -0
- package/dist/idl_codegen/instructions/withdrawObligationCollateralAndRedeemReserveCollateral.d.ts.map +1 -0
- package/dist/idl_codegen/instructions/withdrawObligationCollateralAndRedeemReserveCollateral.js.map +1 -1
- package/dist/idl_codegen/instructions/withdrawProtocolFee.d.ts +1 -0
- package/dist/idl_codegen/instructions/withdrawProtocolFee.d.ts.map +1 -0
- package/dist/idl_codegen/instructions/withdrawProtocolFee.js.map +1 -1
- package/dist/idl_codegen/instructions/withdrawReferrerFees.d.ts +1 -0
- package/dist/idl_codegen/instructions/withdrawReferrerFees.d.ts.map +1 -0
- package/dist/idl_codegen/instructions/withdrawReferrerFees.js.map +1 -1
- package/dist/idl_codegen/programId.d.ts +1 -0
- package/dist/idl_codegen/programId.d.ts.map +1 -0
- package/dist/idl_codegen/programId.js.map +1 -1
- package/dist/idl_codegen/types/AssetTier.d.ts +1 -0
- package/dist/idl_codegen/types/AssetTier.d.ts.map +1 -0
- package/dist/idl_codegen/types/AssetTier.js +12 -18
- package/dist/idl_codegen/types/AssetTier.js.map +1 -1
- package/dist/idl_codegen/types/BigFractionBytes.d.ts +1 -0
- package/dist/idl_codegen/types/BigFractionBytes.d.ts.map +1 -0
- package/dist/idl_codegen/types/BigFractionBytes.js +2 -0
- package/dist/idl_codegen/types/BigFractionBytes.js.map +1 -1
- package/dist/idl_codegen/types/BorrowRateCurve.d.ts +1 -0
- package/dist/idl_codegen/types/BorrowRateCurve.d.ts.map +1 -0
- package/dist/idl_codegen/types/BorrowRateCurve.js +2 -1
- package/dist/idl_codegen/types/BorrowRateCurve.js.map +1 -1
- package/dist/idl_codegen/types/CurvePoint.d.ts +1 -0
- package/dist/idl_codegen/types/CurvePoint.d.ts.map +1 -0
- package/dist/idl_codegen/types/CurvePoint.js +2 -0
- package/dist/idl_codegen/types/CurvePoint.js.map +1 -1
- package/dist/idl_codegen/types/ElevationGroup.d.ts +1 -0
- package/dist/idl_codegen/types/ElevationGroup.d.ts.map +1 -0
- package/dist/idl_codegen/types/ElevationGroup.js +10 -0
- package/dist/idl_codegen/types/ElevationGroup.js.map +1 -1
- package/dist/idl_codegen/types/FeeCalculation.d.ts +1 -0
- package/dist/idl_codegen/types/FeeCalculation.d.ts.map +1 -0
- package/dist/idl_codegen/types/FeeCalculation.js +8 -12
- package/dist/idl_codegen/types/FeeCalculation.js.map +1 -1
- package/dist/idl_codegen/types/InitObligationArgs.d.ts +1 -0
- package/dist/idl_codegen/types/InitObligationArgs.d.ts.map +1 -0
- package/dist/idl_codegen/types/InitObligationArgs.js +2 -0
- package/dist/idl_codegen/types/InitObligationArgs.js.map +1 -1
- package/dist/idl_codegen/types/LastUpdate.d.ts +1 -0
- package/dist/idl_codegen/types/LastUpdate.d.ts.map +1 -0
- package/dist/idl_codegen/types/LastUpdate.js +7 -0
- package/dist/idl_codegen/types/LastUpdate.js.map +1 -1
- package/dist/idl_codegen/types/ObligationCollateral.d.ts +1 -0
- package/dist/idl_codegen/types/ObligationCollateral.d.ts.map +1 -0
- package/dist/idl_codegen/types/ObligationCollateral.js +14 -0
- package/dist/idl_codegen/types/ObligationCollateral.js.map +1 -1
- package/dist/idl_codegen/types/ObligationLiquidity.d.ts +1 -0
- package/dist/idl_codegen/types/ObligationLiquidity.d.ts.map +1 -0
- package/dist/idl_codegen/types/ObligationLiquidity.js +17 -1
- package/dist/idl_codegen/types/ObligationLiquidity.js.map +1 -1
- package/dist/idl_codegen/types/PriceHeuristic.d.ts +1 -0
- package/dist/idl_codegen/types/PriceHeuristic.d.ts.map +1 -0
- package/dist/idl_codegen/types/PriceHeuristic.js +6 -0
- package/dist/idl_codegen/types/PriceHeuristic.js.map +1 -1
- package/dist/idl_codegen/types/PythConfiguration.d.ts +1 -0
- package/dist/idl_codegen/types/PythConfiguration.d.ts.map +1 -0
- package/dist/idl_codegen/types/PythConfiguration.js +2 -0
- package/dist/idl_codegen/types/PythConfiguration.js.map +1 -1
- package/dist/idl_codegen/types/ReserveCollateral.d.ts +1 -0
- package/dist/idl_codegen/types/ReserveCollateral.d.ts.map +1 -0
- package/dist/idl_codegen/types/ReserveCollateral.js +8 -0
- package/dist/idl_codegen/types/ReserveCollateral.js.map +1 -1
- package/dist/idl_codegen/types/ReserveConfig.d.ts +1 -0
- package/dist/idl_codegen/types/ReserveConfig.d.ts.map +1 -0
- package/dist/idl_codegen/types/ReserveConfig.js +78 -5
- package/dist/idl_codegen/types/ReserveConfig.js.map +1 -1
- package/dist/idl_codegen/types/ReserveFarmKind.d.ts +1 -0
- package/dist/idl_codegen/types/ReserveFarmKind.d.ts.map +1 -0
- package/dist/idl_codegen/types/ReserveFarmKind.js +8 -12
- package/dist/idl_codegen/types/ReserveFarmKind.js.map +1 -1
- package/dist/idl_codegen/types/ReserveFees.d.ts +1 -0
- package/dist/idl_codegen/types/ReserveFees.d.ts.map +1 -0
- package/dist/idl_codegen/types/ReserveFees.js +16 -0
- package/dist/idl_codegen/types/ReserveFees.js.map +1 -1
- package/dist/idl_codegen/types/ReserveLiquidity.d.ts +1 -0
- package/dist/idl_codegen/types/ReserveLiquidity.d.ts.map +1 -0
- package/dist/idl_codegen/types/ReserveLiquidity.js +43 -1
- package/dist/idl_codegen/types/ReserveLiquidity.js.map +1 -1
- package/dist/idl_codegen/types/ReserveStatus.d.ts +1 -0
- package/dist/idl_codegen/types/ReserveStatus.d.ts.map +1 -0
- package/dist/idl_codegen/types/ReserveStatus.js +12 -18
- package/dist/idl_codegen/types/ReserveStatus.js.map +1 -1
- package/dist/idl_codegen/types/ScopeConfiguration.d.ts +1 -0
- package/dist/idl_codegen/types/ScopeConfiguration.d.ts.map +1 -0
- package/dist/idl_codegen/types/ScopeConfiguration.js +6 -0
- package/dist/idl_codegen/types/ScopeConfiguration.js.map +1 -1
- package/dist/idl_codegen/types/SwitchboardConfiguration.d.ts +1 -0
- package/dist/idl_codegen/types/SwitchboardConfiguration.d.ts.map +1 -0
- package/dist/idl_codegen/types/SwitchboardConfiguration.js +3 -0
- package/dist/idl_codegen/types/SwitchboardConfiguration.js.map +1 -1
- package/dist/idl_codegen/types/TokenInfo.d.ts +1 -0
- package/dist/idl_codegen/types/TokenInfo.d.ts.map +1 -0
- package/dist/idl_codegen/types/TokenInfo.js +27 -4
- package/dist/idl_codegen/types/TokenInfo.js.map +1 -1
- package/dist/idl_codegen/types/UpdateConfigMode.d.ts +1 -0
- package/dist/idl_codegen/types/UpdateConfigMode.d.ts.map +1 -0
- package/dist/idl_codegen/types/UpdateConfigMode.js +188 -282
- package/dist/idl_codegen/types/UpdateConfigMode.js.map +1 -1
- package/dist/idl_codegen/types/UpdateLendingMarketConfigValue.d.ts +1 -0
- package/dist/idl_codegen/types/UpdateLendingMarketConfigValue.d.ts.map +1 -0
- package/dist/idl_codegen/types/UpdateLendingMarketConfigValue.js +41 -33
- package/dist/idl_codegen/types/UpdateLendingMarketConfigValue.js.map +1 -1
- package/dist/idl_codegen/types/UpdateLendingMarketMode.d.ts +1 -0
- package/dist/idl_codegen/types/UpdateLendingMarketMode.d.ts.map +1 -0
- package/dist/idl_codegen/types/UpdateLendingMarketMode.js +72 -108
- package/dist/idl_codegen/types/UpdateLendingMarketMode.js.map +1 -1
- package/dist/idl_codegen/types/WithdrawalCaps.d.ts +1 -0
- package/dist/idl_codegen/types/WithdrawalCaps.d.ts.map +1 -0
- package/dist/idl_codegen/types/WithdrawalCaps.js +4 -0
- package/dist/idl_codegen/types/WithdrawalCaps.js.map +1 -1
- package/dist/idl_codegen/types/index.d.ts +1 -0
- package/dist/idl_codegen/types/index.d.ts.map +1 -0
- package/dist/idl_codegen/types/index.js.map +1 -1
- package/dist/idl_codegen/zero_padding/ObligationZP.d.ts +1 -0
- package/dist/idl_codegen/zero_padding/ObligationZP.d.ts.map +1 -0
- package/dist/idl_codegen/zero_padding/ObligationZP.js +83 -54
- package/dist/idl_codegen/zero_padding/ObligationZP.js.map +1 -1
- package/dist/idl_codegen/zero_padding/index.d.ts +1 -0
- package/dist/idl_codegen/zero_padding/index.d.ts.map +1 -0
- package/dist/idl_codegen/zero_padding/index.js.map +1 -1
- package/dist/idl_codegen_jupiter_perps/accounts/Pool.d.ts +1 -0
- package/dist/idl_codegen_jupiter_perps/accounts/Pool.d.ts.map +1 -0
- package/dist/idl_codegen_jupiter_perps/accounts/Pool.js +39 -42
- package/dist/idl_codegen_jupiter_perps/accounts/Pool.js.map +1 -1
- package/dist/idl_codegen_jupiter_perps/accounts/index.d.ts +1 -0
- package/dist/idl_codegen_jupiter_perps/accounts/index.d.ts.map +1 -0
- package/dist/idl_codegen_jupiter_perps/accounts/index.js.map +1 -1
- package/dist/idl_codegen_jupiter_perps/programId.d.ts +1 -0
- package/dist/idl_codegen_jupiter_perps/programId.d.ts.map +1 -0
- package/dist/idl_codegen_jupiter_perps/programId.js.map +1 -1
- package/dist/idl_codegen_jupiter_perps/types/Fees.d.ts +1 -0
- package/dist/idl_codegen_jupiter_perps/types/Fees.d.ts.map +1 -0
- package/dist/idl_codegen_jupiter_perps/types/Fees.js +9 -0
- package/dist/idl_codegen_jupiter_perps/types/Fees.js.map +1 -1
- package/dist/idl_codegen_jupiter_perps/types/Limit.d.ts +1 -0
- package/dist/idl_codegen_jupiter_perps/types/Limit.d.ts.map +1 -0
- package/dist/idl_codegen_jupiter_perps/types/Limit.js +3 -0
- package/dist/idl_codegen_jupiter_perps/types/Limit.js.map +1 -1
- package/dist/idl_codegen_jupiter_perps/types/PoolApr.d.ts +1 -0
- package/dist/idl_codegen_jupiter_perps/types/PoolApr.d.ts.map +1 -0
- package/dist/idl_codegen_jupiter_perps/types/PoolApr.js +3 -0
- package/dist/idl_codegen_jupiter_perps/types/PoolApr.js.map +1 -1
- package/dist/idl_codegen_jupiter_perps/types/index.d.ts +1 -0
- package/dist/idl_codegen_jupiter_perps/types/index.d.ts.map +1 -0
- package/dist/idl_codegen_jupiter_perps/types/index.js.map +1 -1
- package/dist/idl_codegen_kamino_vault/accounts/Reserve.d.ts +1 -0
- package/dist/idl_codegen_kamino_vault/accounts/Reserve.d.ts.map +1 -0
- package/dist/idl_codegen_kamino_vault/accounts/Reserve.js +58 -47
- package/dist/idl_codegen_kamino_vault/accounts/Reserve.js.map +1 -1
- package/dist/idl_codegen_kamino_vault/accounts/VaultState.d.ts +1 -0
- package/dist/idl_codegen_kamino_vault/accounts/VaultState.d.ts.map +1 -0
- package/dist/idl_codegen_kamino_vault/accounts/VaultState.js +51 -47
- package/dist/idl_codegen_kamino_vault/accounts/VaultState.js.map +1 -1
- package/dist/idl_codegen_kamino_vault/accounts/index.d.ts +1 -0
- package/dist/idl_codegen_kamino_vault/accounts/index.d.ts.map +1 -0
- package/dist/idl_codegen_kamino_vault/accounts/index.js.map +1 -1
- package/dist/idl_codegen_kamino_vault/errors/anchor.d.ts +1 -0
- package/dist/idl_codegen_kamino_vault/errors/anchor.d.ts.map +1 -0
- package/dist/idl_codegen_kamino_vault/errors/anchor.js +270 -216
- package/dist/idl_codegen_kamino_vault/errors/anchor.js.map +1 -1
- package/dist/idl_codegen_kamino_vault/errors/custom.d.ts +1 -0
- package/dist/idl_codegen_kamino_vault/errors/custom.d.ts.map +1 -0
- package/dist/idl_codegen_kamino_vault/errors/custom.js +120 -96
- package/dist/idl_codegen_kamino_vault/errors/custom.js.map +1 -1
- package/dist/idl_codegen_kamino_vault/errors/index.d.ts +1 -0
- package/dist/idl_codegen_kamino_vault/errors/index.d.ts.map +1 -0
- package/dist/idl_codegen_kamino_vault/errors/index.js.map +1 -1
- package/dist/idl_codegen_kamino_vault/instructions/deposit.d.ts +1 -0
- package/dist/idl_codegen_kamino_vault/instructions/deposit.d.ts.map +1 -0
- package/dist/idl_codegen_kamino_vault/instructions/deposit.js.map +1 -1
- package/dist/idl_codegen_kamino_vault/instructions/index.d.ts +1 -0
- package/dist/idl_codegen_kamino_vault/instructions/index.d.ts.map +1 -0
- package/dist/idl_codegen_kamino_vault/instructions/index.js.map +1 -1
- package/dist/idl_codegen_kamino_vault/instructions/initVault.d.ts +1 -0
- package/dist/idl_codegen_kamino_vault/instructions/initVault.d.ts.map +1 -0
- package/dist/idl_codegen_kamino_vault/instructions/initVault.js.map +1 -1
- package/dist/idl_codegen_kamino_vault/instructions/invest.d.ts +1 -0
- package/dist/idl_codegen_kamino_vault/instructions/invest.d.ts.map +1 -0
- package/dist/idl_codegen_kamino_vault/instructions/invest.js.map +1 -1
- package/dist/idl_codegen_kamino_vault/instructions/updateReserveAllocation.d.ts +1 -0
- package/dist/idl_codegen_kamino_vault/instructions/updateReserveAllocation.d.ts.map +1 -0
- package/dist/idl_codegen_kamino_vault/instructions/updateReserveAllocation.js.map +1 -1
- package/dist/idl_codegen_kamino_vault/instructions/withdraw.d.ts +1 -0
- package/dist/idl_codegen_kamino_vault/instructions/withdraw.d.ts.map +1 -0
- package/dist/idl_codegen_kamino_vault/instructions/withdraw.js.map +1 -1
- package/dist/idl_codegen_kamino_vault/programId.d.ts +1 -0
- package/dist/idl_codegen_kamino_vault/programId.d.ts.map +1 -0
- package/dist/idl_codegen_kamino_vault/programId.js.map +1 -1
- package/dist/idl_codegen_kamino_vault/types/BigFractionBytes.d.ts +1 -0
- package/dist/idl_codegen_kamino_vault/types/BigFractionBytes.d.ts.map +1 -0
- package/dist/idl_codegen_kamino_vault/types/BigFractionBytes.js +2 -0
- package/dist/idl_codegen_kamino_vault/types/BigFractionBytes.js.map +1 -1
- package/dist/idl_codegen_kamino_vault/types/BorrowRateCurve.d.ts +1 -0
- package/dist/idl_codegen_kamino_vault/types/BorrowRateCurve.d.ts.map +1 -0
- package/dist/idl_codegen_kamino_vault/types/BorrowRateCurve.js +2 -1
- package/dist/idl_codegen_kamino_vault/types/BorrowRateCurve.js.map +1 -1
- package/dist/idl_codegen_kamino_vault/types/CurvePoint.d.ts +1 -0
- package/dist/idl_codegen_kamino_vault/types/CurvePoint.d.ts.map +1 -0
- package/dist/idl_codegen_kamino_vault/types/CurvePoint.js +2 -0
- package/dist/idl_codegen_kamino_vault/types/CurvePoint.js.map +1 -1
- package/dist/idl_codegen_kamino_vault/types/LastUpdate.d.ts +1 -0
- package/dist/idl_codegen_kamino_vault/types/LastUpdate.d.ts.map +1 -0
- package/dist/idl_codegen_kamino_vault/types/LastUpdate.js +7 -0
- package/dist/idl_codegen_kamino_vault/types/LastUpdate.js.map +1 -1
- package/dist/idl_codegen_kamino_vault/types/PriceHeuristic.d.ts +1 -0
- package/dist/idl_codegen_kamino_vault/types/PriceHeuristic.d.ts.map +1 -0
- package/dist/idl_codegen_kamino_vault/types/PriceHeuristic.js +6 -0
- package/dist/idl_codegen_kamino_vault/types/PriceHeuristic.js.map +1 -1
- package/dist/idl_codegen_kamino_vault/types/PythConfiguration.d.ts +1 -0
- package/dist/idl_codegen_kamino_vault/types/PythConfiguration.d.ts.map +1 -0
- package/dist/idl_codegen_kamino_vault/types/PythConfiguration.js +2 -0
- package/dist/idl_codegen_kamino_vault/types/PythConfiguration.js.map +1 -1
- package/dist/idl_codegen_kamino_vault/types/ReserveCollateral.d.ts +1 -0
- package/dist/idl_codegen_kamino_vault/types/ReserveCollateral.d.ts.map +1 -0
- package/dist/idl_codegen_kamino_vault/types/ReserveCollateral.js +8 -0
- package/dist/idl_codegen_kamino_vault/types/ReserveCollateral.js.map +1 -1
- package/dist/idl_codegen_kamino_vault/types/ReserveConfig.d.ts +1 -0
- package/dist/idl_codegen_kamino_vault/types/ReserveConfig.d.ts.map +1 -0
- package/dist/idl_codegen_kamino_vault/types/ReserveConfig.js +77 -5
- package/dist/idl_codegen_kamino_vault/types/ReserveConfig.js.map +1 -1
- package/dist/idl_codegen_kamino_vault/types/ReserveFees.d.ts +1 -0
- package/dist/idl_codegen_kamino_vault/types/ReserveFees.d.ts.map +1 -0
- package/dist/idl_codegen_kamino_vault/types/ReserveFees.js +16 -0
- package/dist/idl_codegen_kamino_vault/types/ReserveFees.js.map +1 -1
- package/dist/idl_codegen_kamino_vault/types/ReserveLiquidity.d.ts +1 -0
- package/dist/idl_codegen_kamino_vault/types/ReserveLiquidity.d.ts.map +1 -0
- package/dist/idl_codegen_kamino_vault/types/ReserveLiquidity.js +41 -1
- package/dist/idl_codegen_kamino_vault/types/ReserveLiquidity.js.map +1 -1
- package/dist/idl_codegen_kamino_vault/types/ScopeConfiguration.d.ts +1 -0
- package/dist/idl_codegen_kamino_vault/types/ScopeConfiguration.d.ts.map +1 -0
- package/dist/idl_codegen_kamino_vault/types/ScopeConfiguration.js +6 -0
- package/dist/idl_codegen_kamino_vault/types/ScopeConfiguration.js.map +1 -1
- package/dist/idl_codegen_kamino_vault/types/SwitchboardConfiguration.d.ts +1 -0
- package/dist/idl_codegen_kamino_vault/types/SwitchboardConfiguration.d.ts.map +1 -0
- package/dist/idl_codegen_kamino_vault/types/SwitchboardConfiguration.js +3 -0
- package/dist/idl_codegen_kamino_vault/types/SwitchboardConfiguration.js.map +1 -1
- package/dist/idl_codegen_kamino_vault/types/TokenInfo.d.ts +1 -0
- package/dist/idl_codegen_kamino_vault/types/TokenInfo.d.ts.map +1 -0
- package/dist/idl_codegen_kamino_vault/types/TokenInfo.js +27 -4
- package/dist/idl_codegen_kamino_vault/types/TokenInfo.js.map +1 -1
- package/dist/idl_codegen_kamino_vault/types/VaultAllocation.d.ts +1 -0
- package/dist/idl_codegen_kamino_vault/types/VaultAllocation.d.ts.map +1 -0
- package/dist/idl_codegen_kamino_vault/types/VaultAllocation.js +8 -0
- package/dist/idl_codegen_kamino_vault/types/VaultAllocation.js.map +1 -1
- package/dist/idl_codegen_kamino_vault/types/WithdrawalCaps.d.ts +1 -0
- package/dist/idl_codegen_kamino_vault/types/WithdrawalCaps.d.ts.map +1 -0
- package/dist/idl_codegen_kamino_vault/types/WithdrawalCaps.js +4 -0
- package/dist/idl_codegen_kamino_vault/types/WithdrawalCaps.js.map +1 -1
- package/dist/idl_codegen_kamino_vault/types/index.d.ts +1 -0
- package/dist/idl_codegen_kamino_vault/types/index.d.ts.map +1 -0
- package/dist/idl_codegen_kamino_vault/types/index.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js.map +1 -1
- package/dist/lending_operations/index.d.ts +1 -0
- package/dist/lending_operations/index.d.ts.map +1 -0
- package/dist/lending_operations/index.js.map +1 -1
- package/dist/lending_operations/repay_with_collateral_calcs.d.ts +1 -0
- package/dist/lending_operations/repay_with_collateral_calcs.d.ts.map +1 -0
- package/dist/lending_operations/repay_with_collateral_calcs.js +1 -1
- package/dist/lending_operations/repay_with_collateral_calcs.js.map +1 -1
- package/dist/lending_operations/repay_with_collateral_operations.d.ts +1 -0
- package/dist/lending_operations/repay_with_collateral_operations.d.ts.map +1 -0
- package/dist/lending_operations/repay_with_collateral_operations.js +15 -24
- package/dist/lending_operations/repay_with_collateral_operations.js.map +1 -1
- package/dist/leverage/calcs.d.ts +1 -0
- package/dist/leverage/calcs.d.ts.map +1 -0
- package/dist/leverage/calcs.js +119 -132
- package/dist/leverage/calcs.js.map +1 -1
- package/dist/leverage/index.d.ts +1 -0
- package/dist/leverage/index.d.ts.map +1 -0
- package/dist/leverage/index.js.map +1 -1
- package/dist/leverage/instructions.d.ts +1 -0
- package/dist/leverage/instructions.d.ts.map +1 -0
- package/dist/leverage/instructions.js.map +1 -1
- package/dist/leverage/operations.d.ts +1 -0
- package/dist/leverage/operations.d.ts.map +1 -0
- package/dist/leverage/operations.js +75 -84
- package/dist/leverage/operations.js.map +1 -1
- package/dist/leverage/utils.d.ts +1 -0
- package/dist/leverage/utils.d.ts.map +1 -0
- package/dist/leverage/utils.js +73 -88
- package/dist/leverage/utils.js.map +1 -1
- package/dist/lib.d.ts +1 -0
- package/dist/lib.d.ts.map +1 -0
- package/dist/lib.js.map +1 -1
- package/dist/referrals/index.d.ts +1 -0
- package/dist/referrals/index.d.ts.map +1 -0
- package/dist/referrals/index.js.map +1 -1
- package/dist/referrals/instructions.d.ts +1 -0
- package/dist/referrals/instructions.d.ts.map +1 -0
- package/dist/referrals/instructions.js +8 -17
- package/dist/referrals/instructions.js.map +1 -1
- package/dist/referrals/operations.d.ts +2 -1
- package/dist/referrals/operations.d.ts.map +1 -0
- package/dist/referrals/operations.js +119 -143
- package/dist/referrals/operations.js.map +1 -1
- package/dist/utils/ObligationType.d.ts +1 -0
- package/dist/utils/ObligationType.d.ts.map +1 -0
- package/dist/utils/ObligationType.js +16 -7
- package/dist/utils/ObligationType.js.map +1 -1
- package/dist/utils/api.d.ts +1 -0
- package/dist/utils/api.d.ts.map +1 -0
- package/dist/utils/api.js +10 -21
- package/dist/utils/api.js.map +1 -1
- package/dist/utils/ata.d.ts +1 -0
- package/dist/utils/ata.d.ts.map +1 -0
- package/dist/utils/ata.js +25 -38
- package/dist/utils/ata.js.map +1 -1
- package/dist/utils/constants.d.ts +1 -0
- package/dist/utils/constants.d.ts.map +1 -0
- package/dist/utils/constants.js +1 -1
- package/dist/utils/constants.js.map +1 -1
- package/dist/utils/idl.d.ts +1 -0
- package/dist/utils/idl.d.ts.map +1 -0
- package/dist/utils/idl.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/instruction.d.ts +1 -0
- package/dist/utils/instruction.d.ts.map +1 -0
- package/dist/utils/instruction.js +116 -143
- package/dist/utils/instruction.js.map +1 -1
- package/dist/utils/kamino.d.ts +1 -0
- package/dist/utils/kamino.d.ts.map +1 -0
- package/dist/utils/kamino.js +4 -15
- package/dist/utils/kamino.js.map +1 -1
- package/dist/utils/layout.d.ts +1 -0
- package/dist/utils/layout.d.ts.map +1 -0
- package/dist/utils/layout.js.map +1 -1
- package/dist/utils/lookupTable.d.ts +1 -0
- package/dist/utils/lookupTable.d.ts.map +1 -0
- package/dist/utils/lookupTable.js +14 -27
- package/dist/utils/lookupTable.js.map +1 -1
- package/dist/utils/managerTypes.d.ts +1 -0
- package/dist/utils/managerTypes.d.ts.map +1 -0
- package/dist/utils/managerTypes.js +32 -3
- package/dist/utils/managerTypes.js.map +1 -1
- package/dist/utils/oracle.d.ts +2 -1
- package/dist/utils/oracle.d.ts.map +1 -0
- package/dist/utils/oracle.js +71 -85
- package/dist/utils/oracle.js.map +1 -1
- package/dist/utils/pubkey.d.ts +1 -0
- package/dist/utils/pubkey.d.ts.map +1 -0
- package/dist/utils/pubkey.js +7 -9
- package/dist/utils/pubkey.js.map +1 -1
- package/dist/utils/rpc.d.ts +1 -0
- package/dist/utils/rpc.d.ts.map +1 -0
- package/dist/utils/rpc.js +48 -70
- package/dist/utils/rpc.js.map +1 -1
- package/dist/utils/seeds.d.ts +1 -0
- package/dist/utils/seeds.d.ts.map +1 -0
- package/dist/utils/seeds.js.map +1 -1
- package/dist/utils/sendTransactionsUtils.d.ts +1 -0
- package/dist/utils/sendTransactionsUtils.d.ts.map +1 -0
- package/dist/utils/sendTransactionsUtils.js +82 -82
- package/dist/utils/sendTransactionsUtils.js.map +1 -1
- package/dist/utils/slots.d.ts +1 -0
- package/dist/utils/slots.d.ts.map +1 -0
- package/dist/utils/slots.js.map +1 -1
- package/dist/utils/syncNative.d.ts +1 -0
- package/dist/utils/syncNative.d.ts.map +1 -0
- package/dist/utils/syncNative.js.map +1 -1
- package/dist/utils/userMetadata.d.ts +1 -0
- package/dist/utils/userMetadata.d.ts.map +1 -0
- package/dist/utils/userMetadata.js +41 -53
- package/dist/utils/userMetadata.js.map +1 -1
- package/package.json +14 -8
- package/src/classes/action.ts +2884 -0
- package/src/classes/curve.ts +29 -0
- package/src/classes/fraction.ts +65 -0
- package/src/classes/index.ts +10 -0
- package/src/classes/jupiterPerps.ts +14 -0
- package/src/classes/manager.ts +746 -0
- package/src/classes/market.ts +1459 -0
- package/src/classes/obligation.ts +1315 -0
- package/src/classes/reserve.ts +1980 -0
- package/src/classes/shared.ts +57 -0
- package/src/classes/utils.ts +192 -0
- package/src/classes/vault.ts +808 -0
- package/src/client.ts +446 -0
- package/src/client_kamino_manager.ts +791 -0
- package/src/global.d.ts +1 -0
- package/src/idl_codegen/accounts/LendingMarket.ts +364 -0
- package/src/idl_codegen/accounts/Obligation.ts +349 -0
- package/src/idl_codegen/accounts/ReferrerState.ts +97 -0
- package/src/idl_codegen/accounts/ReferrerTokenState.ts +145 -0
- package/src/idl_codegen/accounts/Reserve.ts +248 -0
- package/src/idl_codegen/accounts/ShortUrl.ts +97 -0
- package/src/idl_codegen/accounts/UserMetadata.ts +142 -0
- package/src/idl_codegen/accounts/UserState.ts +301 -0
- package/src/idl_codegen/accounts/index.ts +19 -0
- package/src/idl_codegen/errors/anchor.ts +773 -0
- package/src/idl_codegen/errors/custom.ts +1633 -0
- package/src/idl_codegen/errors/index.ts +62 -0
- package/src/idl_codegen/instructions/borrowObligationLiquidity.ts +82 -0
- package/src/idl_codegen/instructions/deleteReferrerStateAndShortUrl.ts +30 -0
- package/src/idl_codegen/instructions/depositObligationCollateral.ts +62 -0
- package/src/idl_codegen/instructions/depositReserveLiquidity.ts +90 -0
- package/src/idl_codegen/instructions/depositReserveLiquidityAndObligationCollateral.ts +98 -0
- package/src/idl_codegen/instructions/flashBorrowReserveLiquidity.ts +82 -0
- package/src/idl_codegen/instructions/flashRepayReserveLiquidity.ts +83 -0
- package/src/idl_codegen/instructions/idlMissingTypes.ts +62 -0
- package/src/idl_codegen/instructions/index.ts +138 -0
- package/src/idl_codegen/instructions/initFarmsForReserve.ts +62 -0
- package/src/idl_codegen/instructions/initLendingMarket.ts +50 -0
- package/src/idl_codegen/instructions/initObligation.ts +52 -0
- package/src/idl_codegen/instructions/initObligationFarmsForReserve.ts +60 -0
- package/src/idl_codegen/instructions/initReferrerStateAndShortUrl.ts +50 -0
- package/src/idl_codegen/instructions/initReferrerTokenState.ts +46 -0
- package/src/idl_codegen/instructions/initReserve.ts +74 -0
- package/src/idl_codegen/instructions/initUserMetadata.ts +50 -0
- package/src/idl_codegen/instructions/liquidateObligationAndRedeemReserveCollateral.ts +139 -0
- package/src/idl_codegen/instructions/redeemFees.ts +50 -0
- package/src/idl_codegen/instructions/redeemReserveCollateral.ts +94 -0
- package/src/idl_codegen/instructions/refreshObligation.ts +24 -0
- package/src/idl_codegen/instructions/refreshObligationFarmsForReserve.ts +62 -0
- package/src/idl_codegen/instructions/refreshReserve.ts +40 -0
- package/src/idl_codegen/instructions/refreshReservesBatch.ts +29 -0
- package/src/idl_codegen/instructions/repayObligationLiquidity.ts +64 -0
- package/src/idl_codegen/instructions/requestElevationGroup.ts +40 -0
- package/src/idl_codegen/instructions/socializeLoss.ts +48 -0
- package/src/idl_codegen/instructions/updateEntireReserveConfig.ts +45 -0
- package/src/idl_codegen/instructions/updateLendingMarket.ts +43 -0
- package/src/idl_codegen/instructions/updateLendingMarketOwner.ts +28 -0
- package/src/idl_codegen/instructions/updateReserveConfig.ts +52 -0
- package/src/idl_codegen/instructions/updateSingleReserveConfig.ts +48 -0
- package/src/idl_codegen/instructions/withdrawObligationCollateral.ts +68 -0
- package/src/idl_codegen/instructions/withdrawObligationCollateralAndRedeemReserveCollateral.ts +102 -0
- package/src/idl_codegen/instructions/withdrawProtocolFee.ts +62 -0
- package/src/idl_codegen/instructions/withdrawReferrerFees.ts +54 -0
- package/src/idl_codegen/programId.ts +13 -0
- package/src/idl_codegen/types/AssetTier.ts +118 -0
- package/src/idl_codegen/types/BigFractionBytes.ts +67 -0
- package/src/idl_codegen/types/BorrowRateCurve.ts +60 -0
- package/src/idl_codegen/types/CurvePoint.ts +64 -0
- package/src/idl_codegen/types/ElevationGroup.ts +133 -0
- package/src/idl_codegen/types/FeeCalculation.ts +90 -0
- package/src/idl_codegen/types/InitObligationArgs.ts +61 -0
- package/src/idl_codegen/types/LastUpdate.ts +95 -0
- package/src/idl_codegen/types/ObligationCollateral.ts +128 -0
- package/src/idl_codegen/types/ObligationLiquidity.ts +159 -0
- package/src/idl_codegen/types/PriceHeuristic.ts +81 -0
- package/src/idl_codegen/types/PythConfiguration.ts +56 -0
- package/src/idl_codegen/types/ReserveCollateral.ts +104 -0
- package/src/idl_codegen/types/ReserveConfig.ts +467 -0
- package/src/idl_codegen/types/ReserveFarmKind.ts +90 -0
- package/src/idl_codegen/types/ReserveFees.ts +122 -0
- package/src/idl_codegen/types/ReserveLiquidity.ts +286 -0
- package/src/idl_codegen/types/ReserveStatus.ts +120 -0
- package/src/idl_codegen/types/ScopeConfiguration.ts +85 -0
- package/src/idl_codegen/types/SwitchboardConfiguration.ts +67 -0
- package/src/idl_codegen/types/TokenInfo.ts +190 -0
- package/src/idl_codegen/types/UpdateConfigMode.ts +1440 -0
- package/src/idl_codegen/types/UpdateLendingMarketConfigValue.ts +376 -0
- package/src/idl_codegen/types/UpdateLendingMarketMode.ts +570 -0
- package/src/idl_codegen/types/WithdrawalCaps.ts +86 -0
- package/src/idl_codegen/types/index.ts +276 -0
- package/src/idl_codegen/zero_padding/ObligationZP.ts +186 -0
- package/src/idl_codegen/zero_padding/index.ts +1 -0
- package/src/idl_codegen_jupiter_perps/accounts/Pool.ts +155 -0
- package/src/idl_codegen_jupiter_perps/accounts/index.ts +2 -0
- package/src/idl_codegen_jupiter_perps/programId.ts +7 -0
- package/src/idl_codegen_jupiter_perps/types/Fees.ts +130 -0
- package/src/idl_codegen_jupiter_perps/types/Limit.ts +72 -0
- package/src/idl_codegen_jupiter_perps/types/PoolApr.ts +69 -0
- package/src/idl_codegen_jupiter_perps/types/index.ts +6 -0
- package/src/idl_codegen_kamino_vault/accounts/Reserve.ts +221 -0
- package/src/idl_codegen_kamino_vault/accounts/VaultState.ts +214 -0
- package/src/idl_codegen_kamino_vault/accounts/index.ts +4 -0
- package/src/idl_codegen_kamino_vault/errors/anchor.ts +764 -0
- package/src/idl_codegen_kamino_vault/errors/custom.ts +344 -0
- package/src/idl_codegen_kamino_vault/errors/index.ts +49 -0
- package/src/idl_codegen_kamino_vault/instructions/deposit.ts +54 -0
- package/src/idl_codegen_kamino_vault/instructions/index.ts +10 -0
- package/src/idl_codegen_kamino_vault/instructions/initVault.ts +35 -0
- package/src/idl_codegen_kamino_vault/instructions/invest.ts +60 -0
- package/src/idl_codegen_kamino_vault/instructions/updateReserveAllocation.ts +58 -0
- package/src/idl_codegen_kamino_vault/instructions/withdraw.ts +81 -0
- package/src/idl_codegen_kamino_vault/programId.ts +7 -0
- package/src/idl_codegen_kamino_vault/types/BigFractionBytes.ts +61 -0
- package/src/idl_codegen_kamino_vault/types/BorrowRateCurve.ts +55 -0
- package/src/idl_codegen_kamino_vault/types/CurvePoint.ts +61 -0
- package/src/idl_codegen_kamino_vault/types/LastUpdate.ts +90 -0
- package/src/idl_codegen_kamino_vault/types/PriceHeuristic.ts +78 -0
- package/src/idl_codegen_kamino_vault/types/PythConfiguration.ts +56 -0
- package/src/idl_codegen_kamino_vault/types/ReserveCollateral.ts +104 -0
- package/src/idl_codegen_kamino_vault/types/ReserveConfig.ts +426 -0
- package/src/idl_codegen_kamino_vault/types/ReserveFees.ts +118 -0
- package/src/idl_codegen_kamino_vault/types/ReserveLiquidity.ts +268 -0
- package/src/idl_codegen_kamino_vault/types/ScopeConfiguration.ts +85 -0
- package/src/idl_codegen_kamino_vault/types/SwitchboardConfiguration.ts +64 -0
- package/src/idl_codegen_kamino_vault/types/TokenInfo.ts +172 -0
- package/src/idl_codegen_kamino_vault/types/VaultAllocation.ts +115 -0
- package/src/idl_codegen_kamino_vault/types/WithdrawalCaps.ts +86 -0
- package/src/idl_codegen_kamino_vault/types/index.ts +30 -0
- package/src/index.ts +1 -0
- package/src/lending_operations/index.ts +2 -0
- package/src/lending_operations/repay_with_collateral_calcs.ts +71 -0
- package/src/lending_operations/repay_with_collateral_operations.ts +318 -0
- package/src/leverage/calcs.ts +465 -0
- package/src/leverage/index.ts +4 -0
- package/src/leverage/instructions.ts +144 -0
- package/src/leverage/operations.ts +1814 -0
- package/src/leverage/utils.ts +273 -0
- package/src/lib.ts +9 -0
- package/src/referrals/index.ts +2 -0
- package/src/referrals/instructions.ts +114 -0
- package/src/referrals/operations.ts +325 -0
- package/src/utils/ObligationType.ts +171 -0
- package/src/utils/api.ts +59 -0
- package/src/utils/ata.ts +195 -0
- package/src/utils/constants.ts +81 -0
- package/src/utils/idl.ts +4 -0
- package/src/utils/index.ts +16 -0
- package/src/utils/instruction.ts +258 -0
- package/src/utils/kamino.ts +12 -0
- package/src/utils/layout.ts +118 -0
- package/src/utils/lookupTable.ts +55 -0
- package/src/utils/managerTypes.ts +456 -0
- package/src/utils/oracle.ts +337 -0
- package/src/utils/pubkey.ts +261 -0
- package/src/utils/rpc.ts +108 -0
- package/src/utils/seeds.ts +183 -0
- package/src/utils/sendTransactionsUtils.ts +207 -0
- package/src/utils/slots.ts +28 -0
- package/src/utils/syncNative.ts +22 -0
- package/src/utils/userMetadata.ts +401 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operations.js","sourceRoot":"","sources":["../../src/leverage/operations.ts"],"names":[],"mappings":"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","sourcesContent":["import { Connection, LAMPORTS_PER_SOL, PublicKey, TransactionInstruction } from '@solana/web3.js';\nimport Decimal from 'decimal.js';\nimport { KaminoAction, KaminoMarket, KaminoObligation, lamportsToNumberDecimal as fromLamports } from '../classes';\nimport { getFlashLoanInstructions } from './instructions';\n\nimport { numberToLamportsDecimal as toLamports } from '../classes';\nimport {\n LeverageObligation,\n MultiplyObligation,\n ObligationType,\n ObligationTypeTag,\n PublicKeySet,\n U64_MAX,\n WRAPPED_SOL_MINT,\n getAssociatedTokenAddress,\n getAtasWithCreateIxnsIfMissing,\n getComputeBudgetAndPriorityFeeIxns,\n getDepositWsolIxns,\n removeBudgetAndAtaIxns,\n} from '../utils';\nimport { calcAdjustAmounts, calcWithdrawAmounts, simulateMintKToken, toJson } from './calcs';\nimport { TOKEN_PROGRAM_ID, createCloseAccountInstruction } from '@solana/spl-token';\nimport {\n Kamino,\n InstructionsWithLookupTables,\n StrategyWithAddress,\n TokenAmounts,\n} from '@kamino-finance/kliquidity-sdk';\nimport { getExpectedTokenBalanceAfterBorrow, getKtokenToTokenSwapper, getTokenToKtokenSwapper } from './utils';\n\nexport type SwapIxnsProvider = (\n amountInLamports: number,\n amountInMint: PublicKey,\n amountOutMint: PublicKey,\n slippagePct: number,\n amountDebtAtaBalance?: Decimal\n) => Promise<[TransactionInstruction[], PublicKey[]]>;\n\nexport type PriceAinBProvider = (mintA: PublicKey, mintB: PublicKey) => Promise<Decimal>;\n\nexport type IsKtokenProvider = (token: PublicKey | string) => Promise<boolean>;\n\nexport type SwapInputs = {\n inputAmountLamports: number;\n inputMint: PublicKey;\n outputMint: PublicKey;\n};\n\nexport type KaminoDepositSwapOverride = (\n kaminoMarket: KaminoMarket,\n kamino: Kamino,\n depositor: PublicKey,\n amountInMint: PublicKey,\n amountOutMint: PublicKey,\n amountIn: Decimal,\n slippageFactor: Decimal,\n amountDebtAtaBalance: Decimal\n) => Promise<InstructionsWithLookupTables>;\n\nexport const depositLeverageCalcs = (props: {\n depositAmount: Decimal;\n depositTokenIsCollToken: boolean;\n depositTokenIsSol: boolean;\n priceDebtToColl: Decimal;\n targetLeverage: Decimal;\n slippagePct: Decimal;\n flashLoanFee: Decimal;\n}): {\n flashBorrowInCollToken: Decimal;\n initDepositInSol: Decimal;\n debtTokenToBorrow: Decimal;\n collTokenToDeposit: Decimal;\n swapDebtTokenIn: Decimal;\n swapCollTokenExpectedOut: Decimal;\n} => {\n // Initialize local variables from the props object\n const {\n depositAmount,\n depositTokenIsCollToken,\n depositTokenIsSol,\n priceDebtToColl,\n targetLeverage,\n slippagePct,\n flashLoanFee,\n } = props;\n const slippage = slippagePct.div('100');\n\n const initDepositInSol = depositTokenIsSol ? depositAmount : new Decimal(0);\n\n // Core logic\n if (depositTokenIsCollToken) {\n const y = targetLeverage.mul(priceDebtToColl);\n const x = flashLoanFee.add('1').mul(slippage.add('1')).div(priceDebtToColl);\n const finalColl = depositAmount.mul(x).div(x.sub(targetLeverage.sub('1').div(y)));\n const debt = finalColl.sub(depositAmount).mul(x);\n const flashBorrowColl = finalColl.sub(depositAmount).mul(flashLoanFee.add('1'));\n\n return {\n flashBorrowInCollToken: flashBorrowColl,\n initDepositInSol,\n debtTokenToBorrow: debt,\n collTokenToDeposit: finalColl,\n swapDebtTokenIn: debt,\n swapCollTokenExpectedOut: finalColl.sub(depositAmount),\n };\n } else {\n const y = targetLeverage.mul(priceDebtToColl);\n const x = flashLoanFee.add('1').mul(slippage.add('1')).div(priceDebtToColl);\n const finalColl = depositAmount.div(x.sub(targetLeverage.sub('1').div(y)));\n const flashBorrowColl = finalColl.mul(flashLoanFee.add('1'));\n const debt = targetLeverage.sub('1').mul(finalColl).div(y);\n\n return {\n flashBorrowInCollToken: flashBorrowColl,\n initDepositInSol,\n debtTokenToBorrow: debt,\n collTokenToDeposit: finalColl,\n swapDebtTokenIn: debt.add(depositAmount),\n swapCollTokenExpectedOut: finalColl,\n };\n }\n};\n\nexport const depositLeverageKtokenCalcs = async (props: {\n kamino: Kamino;\n strategy: StrategyWithAddress;\n debtTokenMint: PublicKey;\n depositAmount: Decimal;\n depositTokenIsCollToken: boolean;\n depositTokenIsSol: boolean;\n priceDebtToColl: Decimal;\n targetLeverage: Decimal;\n slippagePct: Decimal;\n flashLoanFee: Decimal;\n priceAinB: PriceAinBProvider;\n strategyHoldings?: TokenAmounts;\n}): Promise<{\n flashBorrowInDebtToken: Decimal;\n initDepositInSol: Decimal;\n collTokenToDeposit: Decimal;\n debtTokenToBorrow: Decimal; // debtTokenToBorrow = flashBorrowInDebtToken + flashLoanFee\n requiredCollateral: Decimal;\n singleSidedDeposit: Decimal;\n}> => {\n const {\n kamino,\n strategy,\n debtTokenMint,\n depositAmount,\n depositTokenIsCollToken,\n depositTokenIsSol,\n priceDebtToColl,\n targetLeverage,\n slippagePct,\n flashLoanFee,\n priceAinB,\n strategyHoldings,\n } = props;\n const initDepositInSol = depositTokenIsSol ? depositAmount : new Decimal(0);\n const slippage = slippagePct.div('100');\n\n let flashBorrowInDebtToken: Decimal;\n let collTokenToDeposit: Decimal;\n let debtTokenToBorrow: Decimal;\n\n if (depositTokenIsCollToken) {\n const x = slippage.add('1').div(priceDebtToColl);\n const y = flashLoanFee.add('1').mul(priceDebtToColl);\n const z = targetLeverage.mul(y).div(targetLeverage.sub(1));\n flashBorrowInDebtToken = depositAmount.div(z.minus(new Decimal(1).div(x)));\n collTokenToDeposit = depositAmount.add(flashBorrowInDebtToken.div(x));\n debtTokenToBorrow = flashBorrowInDebtToken.mul(new Decimal(1).add(flashLoanFee));\n\n return {\n flashBorrowInDebtToken,\n initDepositInSol,\n collTokenToDeposit,\n debtTokenToBorrow,\n requiredCollateral: collTokenToDeposit.sub(depositAmount), // Assuming netValue is requiredCollateral, adjust as needed\n singleSidedDeposit: flashBorrowInDebtToken,\n };\n } else {\n const y = targetLeverage.mul(priceDebtToColl);\n // although we will only swap ~half of the debt token, we account for the slippage on the entire amount as we are working backwards from the minimum collateral and do not know the exact swap proportion in advance\n // This also allows for some variation in the pool ratios between calculation + submitting the tx\n const x = flashLoanFee.add('1').mul(slippage.add('1')).div(priceDebtToColl);\n // Calculate the amount of collateral tokens we will deposit in order to achieve the desired leverage after swapping a portion of the debt token and flash loan fees\n const finalColl = depositAmount.div(x.sub(targetLeverage.sub('1').div(y)));\n // Calculate how many A and B tokens we will need to actually mint the desired amount of ktoken collateral\n // The actual amount of ktokens received may be less than the finalColl due to smart proportional contract logic\n // So we use the actualColl as the amount we will deposit\n const [estimatedA, estimatedB, actualColl] = await simulateMintKToken(\n kamino!,\n strategy!,\n finalColl,\n strategyHoldings\n );\n const pxAinB = await priceAinB(strategy!.strategy.tokenAMint, strategy!.strategy.tokenBMint);\n const isTokenADeposit = strategy.strategy.tokenAMint.equals(debtTokenMint);\n // Calculate the amount we need to flash borrow by combining value of A and B into the debt token\n const singleSidedDepositAmount = isTokenADeposit\n ? estimatedA.add(estimatedB.div(pxAinB))\n : estimatedB.add(estimatedA.mul(pxAinB));\n\n // Add slippage to the entire amount, add flash loan fee to part we will flash borrow\n flashBorrowInDebtToken = singleSidedDepositAmount\n .div(new Decimal('1').sub(slippage))\n .sub(depositAmount)\n .div(new Decimal('1').sub(flashLoanFee));\n // Deposit the min ktoken amount we calculated at the beginning\n // Any slippage will be left in the user's wallet as ktokens\n collTokenToDeposit = actualColl;\n debtTokenToBorrow = flashBorrowInDebtToken.div(new Decimal('1').sub(flashLoanFee));\n // Add slippage to ensure we try to swap/deposit as much as possible after flash loan fees\n const singleSidedDeposit = singleSidedDepositAmount.div(new Decimal('1').sub(slippage));\n\n return {\n flashBorrowInDebtToken,\n initDepositInSol,\n collTokenToDeposit,\n debtTokenToBorrow,\n requiredCollateral: collTokenToDeposit, // Assuming collTokenToDeposit is requiredCollateral, adjust as needed\n singleSidedDeposit,\n };\n }\n};\n\nexport const getDepositWithLeverageSwapInputs = (props: {\n depositAmount: Decimal;\n priceDebtToColl: Decimal;\n slippagePct: Decimal;\n targetLeverage: Decimal;\n kaminoMarket: KaminoMarket;\n selectedTokenMint: PublicKey;\n debtTokenMint: PublicKey;\n collTokenMint: PublicKey;\n}): {\n swapInputs: SwapInputs;\n} => {\n const {\n depositAmount,\n priceDebtToColl,\n slippagePct,\n targetLeverage,\n kaminoMarket,\n selectedTokenMint,\n debtTokenMint,\n collTokenMint,\n } = props;\n const debtReserve = kaminoMarket.getReserveByMint(debtTokenMint);\n const selectedTokenIsCollToken = selectedTokenMint.equals(collTokenMint);\n const solTokenReserve = kaminoMarket.getReserveByMint(WRAPPED_SOL_MINT);\n const depositTokenIsSol = !solTokenReserve ? false : selectedTokenMint.equals(solTokenReserve!.getLiquidityMint());\n const flashLoanFee = debtReserve?.getFlashLoanFee() || new Decimal(0);\n\n const calcs = depositLeverageCalcs({\n depositAmount,\n depositTokenIsCollToken: selectedTokenIsCollToken,\n depositTokenIsSol,\n priceDebtToColl,\n targetLeverage,\n slippagePct,\n flashLoanFee,\n });\n\n return {\n swapInputs: {\n inputAmountLamports: toLamports(calcs.swapDebtTokenIn, debtReserve!.state.liquidity.mintDecimals.toNumber())\n .ceil()\n .toNumber(),\n inputMint: debtTokenMint,\n outputMint: collTokenMint,\n },\n };\n};\n\nexport const getDepositWithLeverageIxns = async (props: {\n connection: Connection;\n budgetAndPriorityFeeIxns?: TransactionInstruction[];\n user: PublicKey;\n amount: Decimal;\n selectedTokenMint: PublicKey;\n collTokenMint: PublicKey;\n debtTokenMint: PublicKey;\n targetLeverage: Decimal;\n kaminoMarket: KaminoMarket;\n slippagePct: Decimal;\n priceDebtToColl: Decimal;\n swapper: SwapIxnsProvider;\n referrer: PublicKey;\n isKtoken: IsKtokenProvider;\n priceAinB: PriceAinBProvider;\n kamino: Kamino | undefined;\n obligationTypeTagOverride: ObligationTypeTag;\n obligation: KaminoObligation | null;\n currentSlot: number;\n getTotalKlendAccountsOnly: boolean;\n scopeFeed?: string;\n}): Promise<{\n ixns: TransactionInstruction[];\n lookupTablesAddresses: PublicKey[];\n swapInputs: SwapInputs;\n totalKlendAccounts: number;\n}> => {\n const {\n connection,\n budgetAndPriorityFeeIxns,\n user,\n amount,\n selectedTokenMint,\n collTokenMint,\n debtTokenMint,\n targetLeverage,\n kaminoMarket,\n slippagePct,\n priceDebtToColl,\n swapper,\n referrer,\n isKtoken,\n priceAinB,\n kamino,\n obligationTypeTagOverride = 1,\n obligation,\n currentSlot,\n getTotalKlendAccountsOnly,\n scopeFeed,\n } = props;\n const collReserve = kaminoMarket.getReserveByMint(collTokenMint);\n const debtReserve = kaminoMarket.getReserveByMint(debtTokenMint);\n const solTokenReserve = kaminoMarket.getReserveByMint(WRAPPED_SOL_MINT);\n const flashLoanFee = collReserve!.getFlashLoanFee() || new Decimal(0);\n\n const selectedTokenIsCollToken = selectedTokenMint.equals(collTokenMint);\n const depositTokenIsSol = !solTokenReserve ? false : selectedTokenMint.equals(solTokenReserve!.getLiquidityMint());\n\n const collIsKtoken = await isKtoken(collTokenMint);\n const strategy = collIsKtoken ? (await kamino!.getStrategyByKTokenMint(collTokenMint))! : undefined;\n\n const calcs = depositLeverageCalcs({\n depositAmount: amount,\n depositTokenIsCollToken: selectedTokenIsCollToken,\n depositTokenIsSol,\n priceDebtToColl,\n targetLeverage,\n slippagePct,\n flashLoanFee,\n });\n let calcsKtoken;\n if (collIsKtoken) {\n calcsKtoken = await depositLeverageKtokenCalcs({\n kamino: kamino!,\n strategy: strategy!,\n debtTokenMint,\n depositAmount: amount,\n depositTokenIsCollToken: selectedTokenIsCollToken,\n depositTokenIsSol,\n priceDebtToColl,\n targetLeverage,\n slippagePct,\n flashLoanFee,\n priceAinB,\n });\n // Rounding to exact number of decimals so this value is passed through in all calcs without rounding inconsistencies\n calcsKtoken.flashBorrowInDebtToken = calcsKtoken.flashBorrowInDebtToken.toDecimalPlaces(\n debtReserve?.state.liquidity.mintDecimals.toNumber()!,\n Decimal.ROUND_CEIL\n );\n calcsKtoken.debtTokenToBorrow = calcsKtoken.debtTokenToBorrow.toDecimalPlaces(\n debtReserve?.state.liquidity.mintDecimals.toNumber()!,\n Decimal.ROUND_CEIL\n );\n calcsKtoken.singleSidedDeposit = calcsKtoken.singleSidedDeposit.toDecimalPlaces(\n debtReserve?.state.liquidity.mintDecimals.toNumber()!,\n Decimal.ROUND_CEIL\n );\n }\n\n console.log('Ops Calcs', toJson(!collIsKtoken ? calcs : calcsKtoken));\n console.log(\n 'Infos',\n toJson({\n depositTokenIsSol,\n selectedTokenIsCollToken,\n initDepositInSol: calcs.initDepositInSol,\n })\n );\n\n // 1. Create atas & budget txns\n let mintsToCreateAtas: PublicKey[] = [];\n let mintsToCreateAtasTokenPrograms: PublicKey[] = [];\n if (collIsKtoken) {\n const secondTokenAta = strategy!.strategy.tokenAMint.equals(debtTokenMint)\n ? strategy!.strategy.tokenBMint\n : strategy!.strategy.tokenAMint;\n const secondTokenTokenProgarm = strategy?.strategy.tokenAMint.equals(debtTokenMint)\n ? strategy!.strategy.tokenBTokenProgram.equals(PublicKey.default)\n ? TOKEN_PROGRAM_ID\n : strategy!.strategy.tokenBTokenProgram\n : strategy!.strategy.tokenATokenProgram.equals(PublicKey.default)\n ? TOKEN_PROGRAM_ID\n : strategy!.strategy.tokenATokenProgram;\n mintsToCreateAtas = [collTokenMint, debtTokenMint, collReserve!.getCTokenMint(), secondTokenAta];\n mintsToCreateAtasTokenPrograms = [\n collReserve!.getLiquidityTokenProgram(),\n debtReserve!.getLiquidityTokenProgram(),\n TOKEN_PROGRAM_ID,\n secondTokenTokenProgarm,\n ];\n } else {\n mintsToCreateAtas = [collTokenMint, debtTokenMint, collReserve!.getCTokenMint()];\n mintsToCreateAtasTokenPrograms = [\n collReserve!.getLiquidityTokenProgram(),\n debtReserve!.getLiquidityTokenProgram(),\n TOKEN_PROGRAM_ID,\n ];\n }\n\n const budgetIxns = budgetAndPriorityFeeIxns || getComputeBudgetAndPriorityFeeIxns(3000000);\n const {\n atas: [collTokenAta, debtTokenAta],\n createAtasIxns,\n closeAtasIxns,\n } = await getAtasWithCreateIxnsIfMissing(connection, user, mintsToCreateAtas, mintsToCreateAtasTokenPrograms);\n\n // TODO: this needs to work the other way around also\n // TODO: marius test this with shorting leverage and with leverage looping\n const fillWsolAtaIxns: TransactionInstruction[] = [];\n if (depositTokenIsSol) {\n fillWsolAtaIxns.push(\n ...getDepositWsolIxns(\n user,\n selectedTokenIsCollToken ? collTokenAta : debtTokenAta,\n toLamports(calcs.initDepositInSol, solTokenReserve!.stats.decimals).ceil()\n )\n );\n }\n\n // 1. Flash borrow & repay the collateral amount needed for given leverage\n // if user deposits coll, then we borrow the diff, else we borrow the entire amount\n const { flashBorrowIxn, flashRepayIxn } = getFlashLoanInstructions({\n borrowIxnIndex: budgetIxns.length + createAtasIxns.length + fillWsolAtaIxns.length,\n walletPublicKey: user,\n lendingMarketAuthority: kaminoMarket.getLendingMarketAuthority(),\n lendingMarketAddress: kaminoMarket.getAddress(),\n reserve: !collIsKtoken ? collReserve! : debtReserve!,\n amountLamports: toLamports(\n !collIsKtoken ? calcs.flashBorrowInCollToken : calcsKtoken.flashBorrowInDebtToken,\n !collIsKtoken ? collReserve!.stats.decimals : debtReserve!.stats.decimals\n ),\n destinationAta: !collIsKtoken ? collTokenAta : debtTokenAta,\n referrerAccount: kaminoMarket.programId,\n referrerTokenState: kaminoMarket.programId,\n programId: kaminoMarket.programId,\n });\n\n console.log(\n 'Borrowing: ',\n toLamports(!collIsKtoken ? calcs.debtTokenToBorrow : calcsKtoken.debtTokenToBorrow, debtReserve!.stats.decimals)\n .ceil()\n .toString()\n );\n // 3. Deposit initial tokens + borrowed tokens into reserve\n let obligationType: ObligationType;\n if (obligationTypeTagOverride === ObligationTypeTag.Multiply) {\n // multiply\n obligationType = new MultiplyObligation(collTokenMint, debtTokenMint, kaminoMarket.programId);\n } else if (obligationTypeTagOverride === ObligationTypeTag.Leverage) {\n // leverage\n obligationType = new LeverageObligation(collTokenMint, debtTokenMint, kaminoMarket.programId);\n } else {\n throw Error('Obligation type tag not supported for leverage, please use 1 - multiply or 3 - leverage');\n }\n\n const scopeRefresh = scopeFeed ? { includeScopeRefresh: true, scopeFeed: scopeFeed } : undefined;\n\n const kaminoDepositAndBorrowAction = await KaminoAction.buildDepositAndBorrowTxns(\n kaminoMarket,\n toLamports(!collIsKtoken ? calcs.collTokenToDeposit : calcsKtoken.collTokenToDeposit, collReserve!.stats.decimals)\n .floor()\n .toString(),\n collTokenMint,\n toLamports(!collIsKtoken ? calcs.debtTokenToBorrow : calcsKtoken.debtTokenToBorrow, debtReserve!.stats.decimals)\n .ceil()\n .toString(),\n debtTokenMint,\n user,\n obligation ? obligation : obligationType,\n 0,\n false,\n true, // emode\n false, // to be checked and created in a setup tx in the UI\n referrer,\n currentSlot,\n scopeRefresh\n );\n\n console.log(\n 'Expected to swap in',\n !collIsKtoken ? calcs.swapDebtTokenIn.toNumber().toString() : calcsKtoken.singleSidedDeposit.toNumber().toString(),\n 'debt for',\n !collIsKtoken ? calcs.swapCollTokenExpectedOut.toString() : calcsKtoken.requiredCollateral.toNumber().toString(),\n 'coll'\n );\n\n const ixns = [\n ...budgetIxns,\n ...createAtasIxns,\n ...fillWsolAtaIxns,\n ...[flashBorrowIxn],\n ...kaminoDepositAndBorrowAction.setupIxs,\n ...[kaminoDepositAndBorrowAction.lendingIxs[0]],\n ...kaminoDepositAndBorrowAction.inBetweenIxs,\n ...[kaminoDepositAndBorrowAction.lendingIxs[1]],\n ...kaminoDepositAndBorrowAction.cleanupIxs,\n ...[flashRepayIxn],\n ...closeAtasIxns,\n ];\n\n const uniqueAccounts = new PublicKeySet<PublicKey>([]);\n ixns.forEach((ixn) => {\n ixn.keys.forEach((key) => {\n uniqueAccounts.add(key.pubkey);\n });\n });\n const totalKlendAccounts = uniqueAccounts.toArray().length;\n\n // return early to avoid extra swapper calls\n if (getTotalKlendAccountsOnly) {\n return {\n ixns: [],\n lookupTablesAddresses: [],\n swapInputs: { inputAmountLamports: 0, inputMint: PublicKey.default, outputMint: PublicKey.default },\n totalKlendAccounts: totalKlendAccounts,\n };\n }\n\n let depositSwapper: SwapIxnsProvider;\n let expectedDebtTokenAtaBalance: Decimal = new Decimal(0); // only needed for kTokens\n\n if (!collIsKtoken) {\n depositSwapper = swapper;\n } else {\n if (kamino === undefined) {\n throw Error('Ktoken use as collateral for leverage without Kamino instance');\n }\n depositSwapper = await getTokenToKtokenSwapper(connection, kaminoMarket, kamino, user, swapper, priceAinB, false);\n\n let futureBalanceInAta = new Decimal(0);\n if (debtTokenMint.equals(WRAPPED_SOL_MINT)) {\n futureBalanceInAta = futureBalanceInAta.add(\n !collIsKtoken ? calcs.initDepositInSol : calcsKtoken.initDepositInSol\n );\n }\n futureBalanceInAta = futureBalanceInAta.add(\n !collIsKtoken ? calcs.debtTokenToBorrow : calcsKtoken.flashBorrowInDebtToken\n );\n expectedDebtTokenAtaBalance = await getExpectedTokenBalanceAfterBorrow(\n connection,\n debtTokenMint,\n user,\n toLamports(futureBalanceInAta.toDecimalPlaces(debtReserve!.stats.decimals), debtReserve!.stats.decimals),\n debtReserve!.state.liquidity.mintDecimals.toNumber()\n );\n }\n\n const swapInputs: SwapInputs = {\n inputAmountLamports: toLamports(\n !collIsKtoken ? calcs.swapDebtTokenIn : calcsKtoken.singleSidedDeposit,\n debtReserve!.stats.decimals\n )\n .ceil()\n .toNumber(),\n inputMint: debtTokenMint,\n outputMint: collTokenMint,\n };\n\n const [swapIxns, lookupTablesAddresses] = await depositSwapper(\n swapInputs.inputAmountLamports,\n swapInputs.inputMint,\n swapInputs.outputMint,\n slippagePct.toNumber(),\n expectedDebtTokenAtaBalance\n );\n\n if (collIsKtoken) {\n if (strategy?.strategy.strategyLookupTable) {\n lookupTablesAddresses.push(strategy?.strategy.strategyLookupTable!);\n } else {\n console.log('Strategy lookup table not found');\n }\n }\n\n const swapInstructions = removeBudgetAndAtaIxns(swapIxns, []);\n\n if (!collIsKtoken) {\n return {\n ixns: [\n ...budgetIxns,\n ...createAtasIxns,\n ...fillWsolAtaIxns,\n ...[flashBorrowIxn],\n ...kaminoDepositAndBorrowAction.setupIxs,\n ...[kaminoDepositAndBorrowAction.lendingIxs[0]],\n ...kaminoDepositAndBorrowAction.inBetweenIxs,\n ...[kaminoDepositAndBorrowAction.lendingIxs[1]],\n ...kaminoDepositAndBorrowAction.cleanupIxs,\n ...swapInstructions,\n ...[flashRepayIxn],\n ...closeAtasIxns,\n ],\n lookupTablesAddresses,\n swapInputs,\n totalKlendAccounts: totalKlendAccounts,\n };\n } else {\n return {\n ixns: [\n ...budgetIxns,\n ...createAtasIxns,\n ...fillWsolAtaIxns,\n ...[flashBorrowIxn],\n ...swapInstructions,\n ...kaminoDepositAndBorrowAction.setupIxs,\n ...[kaminoDepositAndBorrowAction.lendingIxs[0]],\n ...kaminoDepositAndBorrowAction.inBetweenIxs,\n ...[kaminoDepositAndBorrowAction.lendingIxs[1]],\n ...kaminoDepositAndBorrowAction.cleanupIxs,\n ...[flashRepayIxn],\n ...closeAtasIxns,\n ],\n lookupTablesAddresses,\n swapInputs,\n totalKlendAccounts: totalKlendAccounts,\n };\n }\n};\n\nexport const getWithdrawWithLeverageSwapInputs = (props: {\n amount: Decimal;\n deposited: Decimal;\n borrowed: Decimal;\n priceCollToDebt: Decimal;\n slippagePct: number;\n isClosingPosition: boolean;\n kaminoMarket: KaminoMarket;\n selectedTokenMint: PublicKey;\n debtTokenMint: PublicKey;\n collTokenMint: PublicKey;\n userObligation: KaminoObligation;\n currentSlot: number;\n}): {\n swapInputs: SwapInputs;\n} => {\n const {\n amount,\n deposited,\n borrowed,\n priceCollToDebt,\n slippagePct,\n isClosingPosition,\n kaminoMarket,\n selectedTokenMint,\n debtTokenMint,\n collTokenMint,\n userObligation,\n currentSlot,\n } = props;\n const collReserve = kaminoMarket.getReserveByMint(collTokenMint);\n const debtReserve = kaminoMarket.getReserveByMint(debtTokenMint);\n const flashLoanFee = debtReserve?.getFlashLoanFee() || new Decimal(0);\n const selectedTokenIsCollToken = selectedTokenMint.equals(collTokenMint);\n\n const { adjustDepositPosition: withdrawAmount, adjustBorrowPosition: initialRepayAmount } = isClosingPosition\n ? { adjustDepositPosition: deposited, adjustBorrowPosition: borrowed }\n : calcWithdrawAmounts({\n collTokenMint: collTokenMint,\n priceCollToDebt: new Decimal(priceCollToDebt),\n currentDepositPosition: deposited,\n currentBorrowPosition: borrowed,\n withdrawAmount: new Decimal(amount),\n selectedTokenMint: selectedTokenMint,\n });\n\n const irSlippageBpsForDebt = userObligation\n .estimateObligationInterestRate(kaminoMarket, debtReserve!, userObligation.state.borrows[0]!, currentSlot)\n .toDecimalPlaces(debtReserve?.state.liquidity.mintDecimals.toNumber()!, Decimal.ROUND_CEIL);\n\n const repayAmount = initialRepayAmount\n .mul(irSlippageBpsForDebt.add('0.1').div('10_000').add('1'))\n .toDecimalPlaces(debtReserve?.state.liquidity.mintDecimals.toNumber()!, Decimal.ROUND_CEIL);\n\n const swapAmountIfWithdrawingColl = repayAmount\n .mul(new Decimal(1).plus(flashLoanFee))\n .mul(new Decimal(1 + slippagePct / 100))\n .div(priceCollToDebt);\n\n const swapAmountIfWithdrawingDebt = withdrawAmount;\n\n const collTokenSwapIn = selectedTokenIsCollToken ? swapAmountIfWithdrawingColl : swapAmountIfWithdrawingDebt;\n\n return {\n swapInputs: {\n inputAmountLamports: toLamports(collTokenSwapIn, collReserve!.state.liquidity.mintDecimals.toNumber())\n .ceil()\n .toNumber(),\n inputMint: collTokenMint,\n outputMint: debtTokenMint,\n },\n };\n};\n\nexport const getWithdrawWithLeverageIxns = async (props: {\n connection: Connection;\n budgetAndPriorityFeeIxns: TransactionInstruction[];\n user: PublicKey;\n amount: Decimal;\n deposited: Decimal;\n borrowed: Decimal;\n collTokenMint: PublicKey;\n debtTokenMint: PublicKey;\n priceCollToDebt: Decimal;\n selectedTokenMint: PublicKey;\n isClosingPosition: boolean;\n kaminoMarket: KaminoMarket;\n slippagePct: number;\n swapper: SwapIxnsProvider;\n referrer: PublicKey;\n isKtoken: IsKtokenProvider;\n kamino: Kamino | undefined;\n obligationTypeTagOverride: ObligationTypeTag;\n obligation: KaminoObligation | null;\n currentSlot: number;\n getTotalKlendAccountsOnly: boolean;\n scopeFeed?: string;\n}): Promise<{\n ixns: TransactionInstruction[];\n lookupTablesAddresses: PublicKey[];\n swapInputs: SwapInputs;\n totalKlendAccounts: number;\n}> => {\n const {\n connection,\n budgetAndPriorityFeeIxns,\n user,\n amount,\n deposited,\n borrowed,\n collTokenMint,\n debtTokenMint,\n priceCollToDebt,\n selectedTokenMint,\n isClosingPosition,\n kaminoMarket,\n slippagePct,\n swapper,\n referrer,\n isKtoken,\n kamino,\n obligationTypeTagOverride,\n obligation,\n currentSlot,\n getTotalKlendAccountsOnly,\n scopeFeed,\n } = props;\n\n const collReserve = kaminoMarket.getReserveByMint(collTokenMint);\n const debtReserve = kaminoMarket.getReserveByMint(debtTokenMint);\n const flashLoanFee = debtReserve?.getFlashLoanFee() || new Decimal(0);\n const collIsKtoken = await isKtoken(collTokenMint);\n\n const solTokenReserve = kaminoMarket.getReserveByMint(WRAPPED_SOL_MINT);\n const selectedTokenIsCollToken = selectedTokenMint.equals(collTokenMint);\n const depositTokenIsSol = !solTokenReserve ? false : selectedTokenMint.equals(solTokenReserve!.getLiquidityMint());\n\n let obligationType: ObligationType;\n if (obligationTypeTagOverride == ObligationTypeTag.Multiply) {\n // multiply\n obligationType = new MultiplyObligation(collTokenMint, debtTokenMint, kaminoMarket.programId);\n } else if (obligationTypeTagOverride == ObligationTypeTag.Leverage) {\n // leverage\n obligationType = new LeverageObligation(collTokenMint, debtTokenMint, kaminoMarket.programId);\n } else {\n throw Error(\n `Obligation type tag ${obligationTypeTagOverride} not supported for leverage, please use multiply (1) or leverage (3) obligation type`\n );\n }\n\n // 1. Calculate coll_amount and debt_amount to repay such that we maintain leverage and we withdraw to\n // the wallet `amountInDepositTokenToWithdrawToWallet` amount of collateral token\n // We need to withdraw withdrawAmountInDepositToken coll tokens\n // and repay repayAmountInBorrowToken debt tokens\n // TODO marius: do the same in useDeposit\n const { adjustDepositPosition: withdrawAmount, adjustBorrowPosition: initialRepayAmount } = isClosingPosition\n ? { adjustDepositPosition: deposited, adjustBorrowPosition: borrowed }\n : calcWithdrawAmounts({\n collTokenMint: collTokenMint,\n priceCollToDebt: new Decimal(priceCollToDebt),\n currentDepositPosition: deposited,\n currentBorrowPosition: borrowed,\n withdrawAmount: new Decimal(amount),\n selectedTokenMint: selectedTokenMint,\n });\n\n // Add slippage for the accrued interest rate amount\n const userObligation = obligation\n ? obligation\n : await kaminoMarket.getObligationByAddress(obligationType.toPda(kaminoMarket.getAddress(), user));\n const irSlippageBpsForDebt = userObligation!\n .estimateObligationInterestRate(kaminoMarket, debtReserve!, userObligation?.state.borrows[0]!, currentSlot)\n .toDecimalPlaces(debtReserve?.state.liquidity.mintDecimals.toNumber()!, Decimal.ROUND_CEIL);\n // add 0.1 to irSlippageBpsForDebt because we don't want to estimate slightly less than SC and end up not reapying enough\n const repayAmount = initialRepayAmount\n .mul(irSlippageBpsForDebt.add('0.1').div('10_000').add('1'))\n .toDecimalPlaces(debtReserve?.state.liquidity.mintDecimals.toNumber()!, Decimal.ROUND_CEIL);\n\n // 6. Get swap ixns\n // 5. Get swap estimations to understand how much we need to borrow from borrow reserve\n // prevent withdrawing more then deposited if we close position\n const depositTokenWithdrawAmount = !isClosingPosition\n ? withdrawAmount.mul(new Decimal(1).plus(flashLoanFee))\n : withdrawAmount;\n\n // We are swapping debt token\n // When withdrawing coll, it means we just need to swap enough to pay for the flash borrow\n const swapAmountIfWithdrawingColl = repayAmount\n .mul(new Decimal(1).plus(flashLoanFee))\n .mul(new Decimal(1 + slippagePct / 100))\n .div(priceCollToDebt);\n\n // When withdrawing debt, it means we need to swap just the collateral we are withdrwaing\n // enough to cover the debt we are repaying, leaving the remaining in the wallet\n const swapAmountIfWithdrawingDebt = withdrawAmount;\n\n const collTokenSwapIn = selectedTokenIsCollToken ? swapAmountIfWithdrawingColl : swapAmountIfWithdrawingDebt;\n const debtTokenExpectedSwapOut = collTokenSwapIn.mul(priceCollToDebt).div(new Decimal(1 + slippagePct / 100));\n\n const strategy = collIsKtoken ? await kamino?.getStrategyByKTokenMint(collTokenMint) : undefined;\n\n console.log('Expecting to swap', collTokenSwapIn.toString(), 'coll for', debtTokenExpectedSwapOut.toString(), 'debt');\n // 1. Create atas & budget txns & user metadata\n let mintsToCreateAtas: PublicKey[] = [];\n let mintsToCreateAtasTokenPrograms: PublicKey[] = [];\n if (collIsKtoken) {\n const secondTokenAta = strategy!.strategy.tokenAMint.equals(debtTokenMint)\n ? strategy!.strategy.tokenBMint\n : strategy!.strategy.tokenAMint;\n const secondTokenTokenProgarm = strategy?.strategy.tokenAMint.equals(debtTokenMint)\n ? strategy!.strategy.tokenBTokenProgram.equals(PublicKey.default)\n ? TOKEN_PROGRAM_ID\n : strategy!.strategy.tokenBTokenProgram\n : strategy!.strategy.tokenATokenProgram.equals(PublicKey.default)\n ? TOKEN_PROGRAM_ID\n : strategy!.strategy.tokenATokenProgram;\n mintsToCreateAtas = [collTokenMint, debtTokenMint, collReserve!.getCTokenMint(), secondTokenAta];\n mintsToCreateAtasTokenPrograms = [\n collReserve!.getLiquidityTokenProgram(),\n debtReserve!.getLiquidityTokenProgram(),\n TOKEN_PROGRAM_ID,\n secondTokenTokenProgarm,\n ];\n } else {\n mintsToCreateAtas = [collTokenMint, debtTokenMint, collReserve!.getCTokenMint()];\n mintsToCreateAtasTokenPrograms = [\n collReserve!.getLiquidityTokenProgram(),\n debtReserve!.getLiquidityTokenProgram(),\n TOKEN_PROGRAM_ID,\n ];\n }\n\n const {\n atas: [, debtTokenAta],\n createAtasIxns,\n closeAtasIxns,\n } = await getAtasWithCreateIxnsIfMissing(connection, user, mintsToCreateAtas, mintsToCreateAtasTokenPrograms);\n\n const closeWsolAtaIxns: TransactionInstruction[] = [];\n if (depositTokenIsSol || debtTokenMint.equals(WRAPPED_SOL_MINT)) {\n const wsolAta = getAssociatedTokenAddress(WRAPPED_SOL_MINT, user, false);\n closeWsolAtaIxns.push(createCloseAccountInstruction(wsolAta, user, user, [], TOKEN_PROGRAM_ID));\n }\n closeAtasIxns.push(...closeWsolAtaIxns);\n\n const budgetIxns = budgetAndPriorityFeeIxns || getComputeBudgetAndPriorityFeeIxns(3000000);\n\n // TODO: marius test this with shorting leverage and with leverage looping\n // This is here so that we have enough wsol to repay in case the kAB swapped to sol after estimates is not enough\n const fillWsolAtaIxns: TransactionInstruction[] = [];\n if (debtTokenMint.equals(WRAPPED_SOL_MINT)) {\n const halfSolBalance = (await connection.getBalance(user)) / LAMPORTS_PER_SOL / 2;\n const balanceToWrap = halfSolBalance < 0.1 ? halfSolBalance : 0.1;\n fillWsolAtaIxns.push(\n ...getDepositWsolIxns(user, debtTokenAta, toLamports(balanceToWrap, solTokenReserve!.stats.decimals).ceil())\n );\n }\n\n // 2. Prepare the flash borrow and flash repay amounts and ixns\n // We borrow exactly how much we need to repay\n // and repay that + flash amount fee\n\n const { flashBorrowIxn, flashRepayIxn } = getFlashLoanInstructions({\n borrowIxnIndex: budgetIxns.length + createAtasIxns.length + fillWsolAtaIxns.length,\n walletPublicKey: user,\n lendingMarketAuthority: kaminoMarket.getLendingMarketAuthority(),\n lendingMarketAddress: kaminoMarket.getAddress(),\n reserve: debtReserve!,\n amountLamports: toLamports(repayAmount, debtReserve!.stats.decimals),\n destinationAta: debtTokenAta,\n referrerAccount: kaminoMarket.programId,\n referrerTokenState: kaminoMarket.programId,\n programId: kaminoMarket.programId,\n });\n\n // 6. Repay borrowed tokens and Withdraw tokens from reserve that will be swapped to repay flash loan\n const repayAndWithdrawAction = await KaminoAction.buildRepayAndWithdrawTxns(\n kaminoMarket,\n isClosingPosition ? U64_MAX : toLamports(repayAmount, debtReserve!.stats.decimals).floor().toString(),\n debtTokenMint,\n isClosingPosition ? U64_MAX : toLamports(depositTokenWithdrawAmount, collReserve!.stats.decimals).ceil().toString(),\n collTokenMint,\n user,\n currentSlot,\n userObligation ? userObligation : obligationType,\n 0,\n false,\n false,\n false, // to be checked and created in a setup tx in the UI (won't be the case for withdraw anyway as this would be created in deposit)\n isClosingPosition,\n referrer,\n { includeScopeRefresh: true, scopeFeed: scopeFeed! }\n );\n\n const klendIxns = [\n ...budgetIxns,\n ...createAtasIxns,\n ...fillWsolAtaIxns,\n ...[flashBorrowIxn],\n ...repayAndWithdrawAction.setupIxs,\n ...[repayAndWithdrawAction.lendingIxs[0]],\n ...repayAndWithdrawAction.inBetweenIxs,\n ...[repayAndWithdrawAction.lendingIxs[1]],\n ...repayAndWithdrawAction.cleanupIxs,\n ...[flashRepayIxn],\n ...closeAtasIxns,\n ];\n\n const uniqueAccounts = new PublicKeySet<PublicKey>([]);\n klendIxns.forEach((ixn) => {\n ixn.keys.forEach((key) => {\n uniqueAccounts.add(key.pubkey);\n });\n });\n const totalKlendAccounts = uniqueAccounts.toArray().length;\n\n // return early to avoid extra swapper calls\n if (getTotalKlendAccountsOnly) {\n return {\n ixns: [],\n lookupTablesAddresses: [],\n swapInputs: { inputAmountLamports: 0, inputMint: PublicKey.default, outputMint: PublicKey.default },\n totalKlendAccounts: totalKlendAccounts,\n };\n }\n\n let withdrawSwapper: SwapIxnsProvider;\n\n if (collIsKtoken) {\n if (kamino === undefined) {\n throw Error('Ktoken use as collateral for leverage without Kamino instance');\n }\n withdrawSwapper = await getKtokenToTokenSwapper(kaminoMarket, kamino, user, swapper);\n } else {\n withdrawSwapper = swapper;\n }\n\n const swapInputs: SwapInputs = {\n inputAmountLamports: toLamports(collTokenSwapIn, collReserve!.stats.decimals).ceil().toNumber(),\n inputMint: collTokenMint,\n outputMint: debtTokenMint,\n };\n\n const [swapIxns, lookupTablesAddresses] = await withdrawSwapper(\n swapInputs.inputAmountLamports,\n swapInputs.inputMint,\n swapInputs.outputMint,\n slippagePct\n );\n\n // TODO MARIUS: remove first instruction that is setBudget ixn\n\n if (collIsKtoken) {\n if (strategy?.strategy.strategyLookupTable) {\n lookupTablesAddresses.push(strategy?.strategy.strategyLookupTable!);\n } else {\n console.log('Strategy lookup table not found');\n }\n }\n\n const swapInstructions = removeBudgetAndAtaIxns(swapIxns, []);\n\n const ixns = [\n ...budgetIxns,\n ...createAtasIxns,\n ...fillWsolAtaIxns,\n ...[flashBorrowIxn],\n ...repayAndWithdrawAction.setupIxs,\n ...[repayAndWithdrawAction.lendingIxs[0]],\n ...repayAndWithdrawAction.inBetweenIxs,\n ...[repayAndWithdrawAction.lendingIxs[1]],\n ...repayAndWithdrawAction.cleanupIxs,\n ...swapInstructions,\n ...[flashRepayIxn],\n ...closeAtasIxns,\n ];\n\n // Send ixns and lookup tables\n return {\n ixns,\n lookupTablesAddresses,\n swapInputs,\n totalKlendAccounts: totalKlendAccounts,\n };\n};\n\nexport const getAdjustLeverageSwapInputs = (props: {\n deposited: Decimal;\n borrowed: Decimal;\n priceCollToDebt: Decimal;\n priceDebtToColl: Decimal;\n slippagePct: number;\n targetLeverage: Decimal;\n kaminoMarket: KaminoMarket;\n debtTokenMint: PublicKey;\n collTokenMint: PublicKey;\n}): {\n swapInputs: SwapInputs;\n} => {\n const {\n deposited,\n borrowed,\n priceCollToDebt,\n priceDebtToColl,\n slippagePct,\n targetLeverage,\n kaminoMarket,\n debtTokenMint,\n collTokenMint,\n } = props;\n const collReserve = kaminoMarket.getReserveByMint(collTokenMint);\n const debtReserve = kaminoMarket.getReserveByMint(debtTokenMint);\n const flashLoanFee = debtReserve?.getFlashLoanFee() || new Decimal(0);\n\n const { adjustDepositPosition, adjustBorrowPosition } = calcAdjustAmounts({\n currentDepositPosition: deposited,\n currentBorrowPosition: borrowed,\n targetLeverage: targetLeverage,\n priceCollToDebt: priceCollToDebt,\n flashLoanFee: new Decimal(flashLoanFee),\n });\n const isDeposit = adjustDepositPosition.gte(0) && adjustBorrowPosition.gte(0);\n\n if (isDeposit) {\n const borrowAmount = adjustDepositPosition\n .mul(new Decimal(1).plus(flashLoanFee))\n .mul(new Decimal(1 + slippagePct / 100))\n .div(priceDebtToColl);\n\n return {\n swapInputs: {\n inputAmountLamports: toLamports(borrowAmount, debtReserve!.state.liquidity.mintDecimals.toNumber())\n .ceil()\n .toNumber(),\n inputMint: debtTokenMint,\n outputMint: collTokenMint,\n },\n };\n } else {\n const withdrawAmountWithSlippageAndFlashLoanFee = Decimal.abs(adjustDepositPosition)\n .mul(new Decimal(1).plus(flashLoanFee))\n .mul(1 + slippagePct / 100);\n\n return {\n swapInputs: {\n inputAmountLamports: toLamports(\n withdrawAmountWithSlippageAndFlashLoanFee,\n collReserve!.state.liquidity.mintDecimals.toNumber()\n )\n .ceil()\n .toNumber(),\n inputMint: collTokenMint,\n outputMint: debtTokenMint,\n },\n };\n }\n};\n\nexport const getAdjustLeverageIxns = async (props: {\n connection: Connection;\n budgetAndPriorityFeeIxns: TransactionInstruction[];\n user: PublicKey;\n kaminoMarket: KaminoMarket;\n priceDebtToColl: Decimal;\n priceCollToDebt: Decimal;\n targetLeverage: Decimal;\n slippagePct: number;\n depositedLamports: Decimal;\n borrowedLamports: Decimal;\n collTokenMint: PublicKey;\n debtTokenMint: PublicKey;\n swapper: SwapIxnsProvider;\n referrer: PublicKey;\n isKtoken: IsKtokenProvider;\n priceAinB: PriceAinBProvider;\n kamino: Kamino | undefined;\n obligationTypeTagOverride: ObligationTypeTag;\n obligation: KaminoObligation | null;\n currentSlot: number;\n getTotalKlendAccountsOnly: boolean;\n scopeFeed: string | undefined;\n}) => {\n const {\n connection,\n budgetAndPriorityFeeIxns,\n user,\n kaminoMarket,\n priceDebtToColl,\n priceCollToDebt,\n targetLeverage,\n slippagePct,\n depositedLamports,\n borrowedLamports,\n collTokenMint,\n debtTokenMint,\n swapper,\n referrer,\n isKtoken,\n priceAinB,\n kamino,\n obligationTypeTagOverride,\n obligation,\n currentSlot,\n getTotalKlendAccountsOnly,\n scopeFeed,\n } = props;\n\n const collReserve = kaminoMarket.getReserveByMint(collTokenMint);\n const debtReserve = kaminoMarket.getReserveByMint(debtTokenMint);\n\n const deposited = fromLamports(depositedLamports, collReserve!.stats.decimals);\n const borrowed = fromLamports(borrowedLamports, debtReserve!.stats.decimals);\n const userObligation = obligation\n ? obligation\n : (await kaminoMarket.getUserObligationsByTag(obligationTypeTagOverride, user)).filter(\n (obligation: KaminoObligation) =>\n obligation.getBorrowByMint(debtReserve!.getLiquidityMint()) !== undefined &&\n obligation.getDepositByMint(collReserve!.getLiquidityMint()) !== undefined\n )[0];\n const currentLeverage = userObligation!.refreshedStats.leverage;\n const isDepositViaLeverage = targetLeverage.gte(new Decimal(currentLeverage));\n\n let flashLoanFee = new Decimal(0);\n if (isDepositViaLeverage) {\n flashLoanFee = collReserve!.getFlashLoanFee() || new Decimal(0);\n } else {\n flashLoanFee = debtReserve!.getFlashLoanFee() || new Decimal(0);\n }\n\n const { adjustDepositPosition, adjustBorrowPosition } = calcAdjustAmounts({\n currentDepositPosition: deposited,\n currentBorrowPosition: borrowed,\n targetLeverage: targetLeverage,\n priceCollToDebt: priceCollToDebt,\n flashLoanFee: new Decimal(flashLoanFee),\n });\n\n let ixns: TransactionInstruction[] = [];\n let lookupTablesAddresses: PublicKey[] = [];\n let swapInputs: SwapInputs;\n let totalKlendAccounts: number = 0;\n\n const isDeposit = adjustDepositPosition.gte(0) && adjustBorrowPosition.gte(0);\n if (isDepositViaLeverage !== isDeposit) {\n throw new Error('Invalid target leverage');\n }\n\n // leverage increased so we need to deposit and borrow more\n if (isDeposit) {\n console.log('Increasing leaverage');\n // TODO: marius why are we not using both adjustDepositPosition & adjustBorrowPosition\n const res = await getIncreaseLeverageIxns({\n connection,\n budgetAndPriorityFeeIxns,\n user,\n kaminoMarket,\n depositAmount: adjustDepositPosition,\n collTokenMint,\n debtTokenMint,\n slippagePct,\n priceDebtToColl,\n priceCollToDebt,\n swapper,\n referrer,\n isKtoken,\n priceAinB,\n kamino,\n obligationTypeTagOverride,\n obligation: userObligation,\n currentSlot,\n getTotalKlendAccountsOnly,\n scopeFeed,\n });\n ixns = res.ixns;\n lookupTablesAddresses = res.lookupTablesAddresses;\n swapInputs = res.swapInputs;\n totalKlendAccounts = res.totalKlendAccounts;\n } else {\n console.log('Decreasing leverage');\n const res = await getDecreaseLeverageIxns({\n connection,\n budgetAndPriorityFeeIxns,\n user,\n kaminoMarket,\n withdrawAmount: Decimal.abs(adjustDepositPosition),\n repayAmount: Decimal.abs(adjustBorrowPosition),\n collTokenMint,\n debtTokenMint,\n slippagePct,\n swapper,\n referrer,\n isKtoken,\n kamino,\n obligationTypeTagOverride,\n obligation: userObligation,\n currentSlot,\n getTotalKlendAccountsOnly,\n scopeFeed,\n });\n ixns = res.ixns;\n lookupTablesAddresses = res.lookupTablesAddresses;\n swapInputs = res.swapInputs;\n totalKlendAccounts = res.totalKlendAccounts;\n }\n\n return {\n ixns,\n lookupTablesAddresses,\n swapInputs,\n totalKlendAccounts,\n };\n};\n\n/**\n * Deposit and borrow tokens if leverage increased\n */\nexport const getIncreaseLeverageIxns = async (props: {\n connection: Connection;\n budgetAndPriorityFeeIxns: TransactionInstruction[];\n user: PublicKey;\n kaminoMarket: KaminoMarket;\n depositAmount: Decimal;\n collTokenMint: PublicKey;\n debtTokenMint: PublicKey;\n slippagePct: number;\n priceDebtToColl: Decimal;\n priceCollToDebt: Decimal;\n swapper: SwapIxnsProvider;\n referrer: PublicKey;\n isKtoken: IsKtokenProvider;\n priceAinB: PriceAinBProvider;\n kamino: Kamino | undefined;\n obligationTypeTagOverride: ObligationTypeTag;\n obligation: KaminoObligation | null;\n currentSlot: number;\n getTotalKlendAccountsOnly: boolean;\n scopeFeed: string | undefined;\n}) => {\n const {\n connection,\n budgetAndPriorityFeeIxns,\n user,\n kaminoMarket,\n depositAmount,\n collTokenMint,\n debtTokenMint,\n slippagePct,\n priceDebtToColl,\n priceCollToDebt,\n swapper,\n referrer,\n isKtoken,\n priceAinB,\n kamino,\n obligationTypeTagOverride = 1,\n obligation,\n currentSlot,\n getTotalKlendAccountsOnly,\n scopeFeed,\n } = props;\n const collReserve = kaminoMarket.getReserveByMint(collTokenMint);\n const debtReserve = kaminoMarket.getReserveByMint(debtTokenMint);\n const collIsKtoken = await isKtoken(collTokenMint);\n\n const flashLoanFee = collReserve!.getFlashLoanFee() || new Decimal(0);\n\n if (!priceDebtToColl || !priceCollToDebt) {\n throw new Error('Price is not loaded. Please, reload the page and try again');\n }\n\n // TODO: why are we recalculating here again\n const strategy = collIsKtoken ? await kamino?.getStrategyByKTokenMint(collTokenMint) : undefined;\n\n // 1. Create atas & budget txns\n const budgetIxns = budgetAndPriorityFeeIxns || getComputeBudgetAndPriorityFeeIxns(3000000);\n let mintsToCreateAtas: PublicKey[] = [];\n let mintsToCreateAtasTokenPrograms: PublicKey[] = [];\n if (collIsKtoken) {\n const secondTokenAta = strategy!.strategy.tokenAMint.equals(debtTokenMint)\n ? strategy!.strategy.tokenBMint\n : strategy!.strategy.tokenAMint;\n const secondTokenTokenProgarm = strategy?.strategy.tokenAMint.equals(debtTokenMint)\n ? strategy!.strategy.tokenBTokenProgram.equals(PublicKey.default)\n ? TOKEN_PROGRAM_ID\n : strategy!.strategy.tokenBTokenProgram\n : strategy!.strategy.tokenATokenProgram.equals(PublicKey.default)\n ? TOKEN_PROGRAM_ID\n : strategy!.strategy.tokenATokenProgram;\n mintsToCreateAtas = [collTokenMint, debtTokenMint, collReserve!.getCTokenMint(), secondTokenAta];\n mintsToCreateAtasTokenPrograms = [\n collReserve!.getLiquidityTokenProgram(),\n debtReserve!.getLiquidityTokenProgram(),\n TOKEN_PROGRAM_ID,\n secondTokenTokenProgarm,\n ];\n } else {\n mintsToCreateAtas = [collTokenMint, debtTokenMint, collReserve!.getCTokenMint()];\n mintsToCreateAtasTokenPrograms = [\n collReserve!.getLiquidityTokenProgram(),\n debtReserve!.getLiquidityTokenProgram(),\n TOKEN_PROGRAM_ID,\n ];\n }\n\n const {\n atas: [collTokenAta, debtTokenAta],\n createAtasIxns,\n closeAtasIxns,\n } = await getAtasWithCreateIxnsIfMissing(connection, user, mintsToCreateAtas, mintsToCreateAtasTokenPrograms);\n\n // 2. Create borrow flash loan instruction\n\n // used if coll is Ktoken and we borrow debt token instead\n const amountToFashBorrowDebt = depositAmount\n .div(priceDebtToColl)\n .mul(new Decimal(1 + slippagePct / 100))\n .toDecimalPlaces(debtReserve!.stats.decimals, Decimal.ROUND_UP);\n // .toDecimalPlaces(debtReserve?.state.liquidity.mintDecimals.toNumber());\n\n const { flashBorrowIxn, flashRepayIxn } = getFlashLoanInstructions({\n borrowIxnIndex: budgetIxns.length + createAtasIxns.length, // TODO: how about user metadata ixns\n walletPublicKey: user,\n lendingMarketAuthority: kaminoMarket.getLendingMarketAuthority(),\n lendingMarketAddress: kaminoMarket.getAddress(),\n reserve: !collIsKtoken ? collReserve! : debtReserve!,\n amountLamports: toLamports(\n !collIsKtoken ? depositAmount : amountToFashBorrowDebt,\n !collIsKtoken ? collReserve!.stats.decimals : debtReserve!.stats.decimals\n ),\n destinationAta: !collIsKtoken ? collTokenAta : debtTokenAta,\n referrerAccount: kaminoMarket.programId,\n referrerTokenState: kaminoMarket.programId,\n programId: kaminoMarket.programId,\n });\n\n // 3. Deposit initial tokens + borrowed tokens into reserve\n let obligationType: ObligationType;\n if (obligationTypeTagOverride === ObligationTypeTag.Multiply) {\n // multiply\n obligationType = new MultiplyObligation(collTokenMint, debtTokenMint, kaminoMarket.programId);\n } else if (obligationTypeTagOverride === ObligationTypeTag.Leverage) {\n // leverage\n obligationType = new LeverageObligation(collTokenMint, debtTokenMint, kaminoMarket.programId);\n } else {\n throw Error('Obligation type tag not supported for leverage, please use 1 - multiply or 3 - leverage');\n }\n\n const depositAction = await KaminoAction.buildDepositTxns(\n kaminoMarket,\n toLamports(depositAmount, collReserve!.stats.decimals).floor().toString(),\n collTokenMint,\n user,\n obligation ? obligation : obligationType,\n 0,\n false,\n false,\n false, // to be checked and create in a setup tx in the UI (won't be the case for adjust anyway as this would be created in deposit)\n referrer,\n currentSlot,\n { includeScopeRefresh: true, scopeFeed: scopeFeed! }\n );\n\n // 4. Get swap estimations to understand how much we need to borrow from borrow reserve\n const borrowAmount = depositAmount\n .mul(new Decimal(1).plus(flashLoanFee))\n .mul(new Decimal(1 + slippagePct / 100))\n .div(priceDebtToColl);\n\n const _collTokenExpectedSwapOut = depositAmount.mul(new Decimal(1).plus(flashLoanFee));\n\n // 5. Borrow tokens in borrow token reserve that will be swapped to repay flash loan\n const borrowAction = await KaminoAction.buildBorrowTxns(\n kaminoMarket,\n toLamports(borrowAmount, debtReserve!.stats.decimals).ceil().toString(),\n debtTokenMint,\n user,\n obligation ? obligation : obligationType,\n 0,\n false,\n false,\n false, // to be checked and create in a setup tx in the UI (won't be the case for adjust anyway as this would be created in deposit)\n referrer,\n currentSlot,\n { includeScopeRefresh: true, scopeFeed: scopeFeed! }\n );\n\n const klendIxns = [\n ...budgetIxns,\n ...createAtasIxns,\n ...[flashBorrowIxn],\n ...depositAction.setupIxs,\n ...depositAction.lendingIxs,\n ...depositAction.cleanupIxs,\n ...borrowAction.setupIxs,\n ...borrowAction.lendingIxs,\n ...borrowAction.cleanupIxs,\n ...[flashRepayIxn],\n ...closeAtasIxns,\n ];\n\n const uniqueAccounts = new PublicKeySet<PublicKey>([]);\n klendIxns.forEach((ixn) => {\n ixn.keys.forEach((key) => {\n uniqueAccounts.add(key.pubkey);\n });\n });\n const totalKlendAccounts = uniqueAccounts.toArray().length;\n\n // return early to avoid extra swapper calls\n if (getTotalKlendAccountsOnly) {\n return {\n ixns: [],\n lookupTablesAddresses: [],\n swapInputs: { inputAmountLamports: 0, inputMint: PublicKey.default, outputMint: PublicKey.default },\n totalKlendAccounts: totalKlendAccounts,\n };\n }\n\n let depositSwapper: SwapIxnsProvider;\n let expectedDebtTokenAtaBalance = new Decimal(0);\n\n if (collIsKtoken) {\n if (kamino === undefined) {\n throw Error('Ktoken use as collateral for leverage without Kamino instance');\n }\n depositSwapper = await getTokenToKtokenSwapper(connection, kaminoMarket, kamino, user, swapper, priceAinB, false);\n\n expectedDebtTokenAtaBalance = await getExpectedTokenBalanceAfterBorrow(\n connection,\n debtTokenMint,\n user,\n toLamports(!collIsKtoken ? borrowAmount : amountToFashBorrowDebt, debtReserve!.stats.decimals).floor(),\n debtReserve!.state.liquidity.mintDecimals.toNumber()\n );\n } else {\n depositSwapper = swapper;\n }\n\n const swapInputs: SwapInputs = {\n inputAmountLamports: toLamports(!collIsKtoken ? borrowAmount : amountToFashBorrowDebt, debtReserve!.stats.decimals)\n .ceil()\n .toNumber(),\n inputMint: debtTokenMint,\n outputMint: collTokenMint,\n };\n\n const [swapIxns, lookupTablesAddresses] = await depositSwapper(\n swapInputs.inputAmountLamports,\n swapInputs.inputMint,\n swapInputs.outputMint,\n slippagePct,\n expectedDebtTokenAtaBalance\n );\n\n const swapInstructions = removeBudgetAndAtaIxns(swapIxns, []);\n\n const ixns = !collIsKtoken\n ? [\n ...budgetIxns,\n ...createAtasIxns,\n ...[flashBorrowIxn],\n ...depositAction.setupIxs,\n ...depositAction.lendingIxs,\n ...depositAction.cleanupIxs,\n ...borrowAction.setupIxs,\n ...borrowAction.lendingIxs,\n ...borrowAction.cleanupIxs,\n ...swapInstructions,\n ...[flashRepayIxn],\n ...closeAtasIxns,\n ]\n : [\n ...budgetIxns,\n ...createAtasIxns,\n ...[flashBorrowIxn],\n ...swapInstructions,\n ...depositAction.setupIxs,\n ...depositAction.lendingIxs,\n ...depositAction.cleanupIxs,\n ...borrowAction.setupIxs,\n ...borrowAction.lendingIxs,\n ...borrowAction.cleanupIxs,\n ...[flashRepayIxn],\n ...closeAtasIxns,\n ];\n\n ixns.forEach((ixn, i) => {\n console.log(`ixn ${i + 1}: ${ixn.programId.toString()}`);\n });\n\n // Create and send transaction\n if (collIsKtoken) {\n if (strategy?.strategy.strategyLookupTable) {\n lookupTablesAddresses.push(strategy?.strategy.strategyLookupTable!);\n } else {\n console.log('Strategy lookup table not found');\n }\n }\n return {\n ixns,\n lookupTablesAddresses,\n swapInputs,\n totalKlendAccounts,\n };\n};\n\n/**\n * Withdraw and repay tokens if leverage decreased\n */\nexport const getDecreaseLeverageIxns = async (props: {\n connection: Connection;\n budgetAndPriorityFeeIxns: TransactionInstruction[];\n user: PublicKey;\n kaminoMarket: KaminoMarket;\n withdrawAmount: Decimal;\n repayAmount: Decimal;\n collTokenMint: PublicKey;\n debtTokenMint: PublicKey;\n slippagePct: number;\n swapper: SwapIxnsProvider;\n referrer: PublicKey;\n isKtoken: IsKtokenProvider;\n kamino: Kamino | undefined;\n obligationTypeTagOverride: ObligationTypeTag;\n obligation: KaminoObligation | null;\n currentSlot: number;\n getTotalKlendAccountsOnly: boolean;\n scopeFeed: string | undefined;\n}) => {\n const {\n connection,\n budgetAndPriorityFeeIxns,\n user,\n kaminoMarket,\n withdrawAmount,\n repayAmount,\n collTokenMint,\n debtTokenMint,\n slippagePct,\n swapper,\n referrer,\n isKtoken,\n kamino,\n obligationTypeTagOverride = 1,\n obligation,\n currentSlot,\n getTotalKlendAccountsOnly,\n scopeFeed,\n } = props;\n\n console.log(\n 'getDecreaseLeverageIxns',\n toJson({ withdrawAmount, repayAmount, collTokenMint, debtTokenMint, slippagePct })\n );\n const collReserve = kaminoMarket.getReserveByMint(collTokenMint);\n const debtReserve = kaminoMarket.getReserveByMint(debtTokenMint);\n const collIsKtoken = await isKtoken(collTokenMint);\n\n const flashLoanFee = debtReserve?.getFlashLoanFee() || new Decimal(0);\n\n const strategy = collIsKtoken ? await kamino?.getStrategyByKTokenMint(collTokenMint) : undefined;\n\n // 1. Create atas & budget txns\n const budgetIxns = budgetAndPriorityFeeIxns || getComputeBudgetAndPriorityFeeIxns(3000000);\n let mintsToCreateAtas: PublicKey[] = [];\n let mintsToCreateAtasTokenPrograms: PublicKey[] = [];\n if (collIsKtoken) {\n const secondTokenAta = strategy!.strategy.tokenAMint.equals(debtTokenMint)\n ? strategy!.strategy.tokenBMint\n : strategy!.strategy.tokenAMint;\n const secondTokenTokenProgarm = strategy?.strategy.tokenAMint.equals(debtTokenMint)\n ? strategy!.strategy.tokenBTokenProgram.equals(PublicKey.default)\n ? TOKEN_PROGRAM_ID\n : strategy!.strategy.tokenBTokenProgram\n : strategy!.strategy.tokenATokenProgram.equals(PublicKey.default)\n ? TOKEN_PROGRAM_ID\n : strategy!.strategy.tokenATokenProgram;\n mintsToCreateAtas = [collTokenMint, debtTokenMint, collReserve!.getCTokenMint(), secondTokenAta];\n mintsToCreateAtasTokenPrograms = [\n collReserve!.getLiquidityTokenProgram(),\n debtReserve!.getLiquidityTokenProgram(),\n TOKEN_PROGRAM_ID,\n secondTokenTokenProgarm,\n ];\n } else {\n mintsToCreateAtas = [collTokenMint, debtTokenMint, collReserve!.getCTokenMint()];\n mintsToCreateAtasTokenPrograms = [\n collReserve!.getLiquidityTokenProgram(),\n debtReserve!.getLiquidityTokenProgram(),\n TOKEN_PROGRAM_ID,\n ];\n }\n const {\n atas: [, debtTokenAta],\n createAtasIxns,\n closeAtasIxns,\n } = await getAtasWithCreateIxnsIfMissing(connection, user, mintsToCreateAtas, mintsToCreateAtasTokenPrograms);\n\n // TODO: Mihai/Marius check if we can improve this logic and not convert any SOL\n // This is here so that we have enough wsol to repay in case the kAB swapped to sol after estimates is not enough\n const closeWsolAtaIxns: TransactionInstruction[] = [];\n if (debtTokenMint.equals(WRAPPED_SOL_MINT)) {\n const wsolAta = await getAssociatedTokenAddress(WRAPPED_SOL_MINT, user, false);\n closeWsolAtaIxns.push(createCloseAccountInstruction(wsolAta, user, user, [], TOKEN_PROGRAM_ID));\n }\n closeAtasIxns.push(...closeWsolAtaIxns);\n\n const fillWsolAtaIxns: TransactionInstruction[] = [];\n if (debtTokenMint.equals(WRAPPED_SOL_MINT)) {\n const halfSolBalance = (await connection.getBalance(user)) / LAMPORTS_PER_SOL / 2;\n const balanceToWrap = halfSolBalance < 0.1 ? halfSolBalance : 0.1;\n fillWsolAtaIxns.push(\n ...getDepositWsolIxns(user, debtTokenAta, toLamports(balanceToWrap, debtReserve!.stats.decimals).ceil())\n );\n }\n\n // 3. Flash borrow & repay amount to repay (debt)\n const { flashBorrowIxn, flashRepayIxn } = getFlashLoanInstructions({\n borrowIxnIndex: budgetIxns.length + createAtasIxns.length + fillWsolAtaIxns.length,\n walletPublicKey: user,\n lendingMarketAuthority: kaminoMarket.getLendingMarketAuthority(),\n lendingMarketAddress: kaminoMarket.getAddress(),\n reserve: debtReserve!,\n amountLamports: toLamports(repayAmount, debtReserve!.stats.decimals),\n destinationAta: debtTokenAta,\n referrerAccount: kaminoMarket.programId,\n referrerTokenState: kaminoMarket.programId,\n programId: kaminoMarket.programId,\n });\n\n // 4. Actually do the repay of the flash borrowed amounts\n let obligationType: ObligationType;\n if (obligationTypeTagOverride === ObligationTypeTag.Multiply) {\n // multiply\n obligationType = new MultiplyObligation(collTokenMint, debtTokenMint, kaminoMarket.programId);\n } else if (obligationTypeTagOverride === ObligationTypeTag.Leverage) {\n // leverage\n obligationType = new LeverageObligation(collTokenMint, debtTokenMint, kaminoMarket.programId);\n } else {\n throw Error('Obligation type tag not supported for leverage, please use 1 - multiply or 3 - leverage');\n }\n\n const scopeRefresh = scopeFeed ? { includeScopeRefresh: true, scopeFeed: scopeFeed } : undefined;\n\n const repayAction = await KaminoAction.buildRepayTxns(\n kaminoMarket,\n toLamports(repayAmount, debtReserve!.stats.decimals).floor().toString(),\n debtTokenMint,\n user,\n obligation ? obligation : obligationType,\n currentSlot,\n undefined,\n 0,\n false,\n false,\n false, // to be checked and create in a setup tx in the UI (won't be the case for adjust anyway as this would be created in deposit)\n referrer,\n scopeRefresh\n );\n\n // 6. Withdraw collateral (a little bit more to be able to pay for the slippage on swap)\n const withdrawAmountWithSlippageAndFlashLoanFee = withdrawAmount\n .mul(new Decimal(1).plus(flashLoanFee))\n .mul(1 + slippagePct / 100);\n\n const withdrawAction = await KaminoAction.buildWithdrawTxns(\n kaminoMarket,\n toLamports(withdrawAmountWithSlippageAndFlashLoanFee, collReserve!.stats.decimals).ceil().toString(),\n collTokenMint,\n user,\n obligation ? obligation : obligationType,\n 0,\n false,\n false,\n false, // to be checked and create in a setup tx in the UI (won't be the case for adjust anyway as this would be created in deposit)\n referrer,\n currentSlot,\n { includeScopeRefresh: true, scopeFeed: scopeFeed! }\n );\n\n const klendIxns = [\n ...budgetIxns,\n ...createAtasIxns,\n ...fillWsolAtaIxns,\n ...[flashBorrowIxn],\n ...repayAction.setupIxs,\n ...repayAction.lendingIxs,\n ...repayAction.cleanupIxs,\n ...withdrawAction.setupIxs,\n ...withdrawAction.lendingIxs,\n ...withdrawAction.cleanupIxs,\n ...[flashRepayIxn],\n ...closeAtasIxns,\n ];\n\n const uniqueAccounts = new PublicKeySet<PublicKey>([]);\n klendIxns.forEach((ixn) => {\n ixn.keys.forEach((key) => {\n uniqueAccounts.add(key.pubkey);\n });\n });\n const totalKlendAccounts = uniqueAccounts.toArray().length;\n\n // return early to avoid extra swapper calls\n if (getTotalKlendAccountsOnly) {\n return {\n ixns: [],\n lookupTablesAddresses: [],\n swapInputs: { inputAmountLamports: 0, inputMint: PublicKey.default, outputMint: PublicKey.default },\n totalKlendAccounts: totalKlendAccounts,\n };\n }\n\n let withdrawSwapper: SwapIxnsProvider;\n\n if (collIsKtoken) {\n if (kamino === undefined) {\n throw Error('Ktoken use as collateral for leverage without Kamino instance');\n }\n withdrawSwapper = await getKtokenToTokenSwapper(kaminoMarket, kamino, user, swapper);\n } else {\n withdrawSwapper = swapper;\n }\n\n const swapInputs: SwapInputs = {\n inputAmountLamports: toLamports(withdrawAmountWithSlippageAndFlashLoanFee, collReserve!.stats.decimals)\n .ceil()\n .toNumber(),\n inputMint: collTokenMint,\n outputMint: debtTokenMint,\n };\n\n // 5. Get swap ixns\n const [swapIxns, lookupTablesAddresses] = await withdrawSwapper(\n swapInputs.inputAmountLamports,\n swapInputs.inputMint,\n swapInputs.outputMint,\n slippagePct\n );\n\n const swapInstructions = removeBudgetAndAtaIxns(swapIxns, []);\n\n const ixns = [\n ...budgetIxns,\n ...createAtasIxns,\n ...fillWsolAtaIxns,\n ...[flashBorrowIxn],\n ...repayAction.setupIxs,\n ...repayAction.lendingIxs,\n ...repayAction.cleanupIxs,\n ...withdrawAction.setupIxs,\n ...withdrawAction.lendingIxs,\n ...withdrawAction.cleanupIxs,\n ...swapInstructions,\n ...[flashRepayIxn],\n ...closeAtasIxns,\n ];\n\n ixns.forEach((ixn, i) => {\n console.log(`ixn ${i + 1}: ${ixn.programId.toString()}`);\n });\n\n if (collIsKtoken) {\n if (strategy?.strategy.strategyLookupTable) {\n lookupTablesAddresses.push(strategy?.strategy.strategyLookupTable!);\n } else {\n console.log('Strategy lookup table not found');\n }\n }\n // Create and send transaction\n return {\n ixns,\n lookupTablesAddresses,\n swapInputs,\n totalKlendAccounts,\n };\n};\n"]}
|
|
1
|
+
{"version":3,"file":"operations.js","sourceRoot":"","sources":["../../src/leverage/operations.ts"],"names":[],"mappings":"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"}
|
package/dist/leverage/utils.d.ts
CHANGED
|
@@ -20,3 +20,4 @@ export declare function getKtokenWithdrawEstimatesAndPrice(kamino: Kamino, kamin
|
|
|
20
20
|
export declare function swapProviderToKaminoSwapProvider(swapper: SwapIxnsProvider): KaminoSwapperIxBuilder;
|
|
21
21
|
export declare const getExpectedTokenBalanceAfterBorrow: (connection: Connection, mint: PublicKey, owner: PublicKey, amountToBorrowLamports: Decimal, amountToBorrowmintDecimals: number) => Promise<Decimal>;
|
|
22
22
|
export declare const isBorrowingEnabled: (reserve: KaminoReserve) => boolean;
|
|
23
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/leverage/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,aAAa,EAA2B,MAAM,YAAY,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,OAAO,MAAM,YAAY,CAAC;AAKjC,MAAM,WAAW,sBAAsB;IACrC,CACE,KAAK,EAAE,qBAAqB,EAC5B,UAAU,EAAE,SAAS,EACrB,UAAU,EAAE,SAAS,EACrB,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,SAAS,EAAE,GACnB,OAAO,CAAC,CAAC,sBAAsB,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;CACrD;AAED,MAAM,WAAW,qBAAqB;IACpC,wBAAwB,EAAE,OAAO,CAAC;IAClC,wBAAwB,EAAE,OAAO,CAAC;IAClC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAED,eAAO,MAAM,uBAAuB,eACtB,UAAU,gBACR,YAAY,UAClB,MAAM,aACH,SAAS,WACX,gBAAgB,aACd,iBAAiB,mBACZ,OAAO,KACtB,OAAO,CAAC,gBAAgB,CA+B1B,CAAC;AAEF,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,SAAS,EACpB,gBAAgB,EAAE,SAAS,EAC3B,UAAU,EAAE,SAAS,EACrB,eAAe,EAAE,OAAO,EACxB,WAAW,EAAE,OAAO,EACpB,+BAA+B,EAAE,OAAO,EACxC,OAAO,EAAE,gBAAgB,EACzB,SAAS,EAAE,iBAAiB,EAC5B,cAAc,GAAE,OAAc,kFAuC/B;AAED,eAAO,MAAM,uBAAuB,iBACpB,YAAY,UAClB,MAAM,aACH,SAAS,WACX,gBAAgB,KACxB,OAAO,CAAC,gBAAgB,CAsC1B,CAAC;AAEF,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,SAAS,EACrB,cAAc,EAAE,mBAAmB,EACnC,gBAAgB,EAAE,OAAO,oEAG1B;AAED,wBAAsB,kCAAkC,CACtD,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,mBAAmB,EACnC,gBAAgB,EAAE,OAAO,sBAgD1B;AAED,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,gBAAgB,GAAG,sBAAsB,CA2BlG;AAED,eAAO,MAAM,kCAAkC,eACjC,UAAU,QAChB,SAAS,SACR,SAAS,0BACQ,OAAO,8BACH,MAAM,qBAOnC,CAAC;AAEF,eAAO,MAAM,kBAAkB,YAAa,aAAa,YAExD,CAAC"}
|
package/dist/leverage/utils.js
CHANGED
|
@@ -1,13 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
4
|
};
|
|
@@ -22,8 +13,8 @@ const decimal_js_1 = __importDefault(require("decimal.js"));
|
|
|
22
13
|
const utils_1 = require("../utils");
|
|
23
14
|
const utils_2 = require("../classes/utils");
|
|
24
15
|
const bn_js_1 = __importDefault(require("bn.js"));
|
|
25
|
-
const getTokenToKtokenSwapper =
|
|
26
|
-
return (amountInLamports, amountInMint, amountOutMint, slippage, amountDebtAtaBalance) =>
|
|
16
|
+
const getTokenToKtokenSwapper = async (connection, kaminoMarket, kamino, depositor, swapper, priceAinB, includeAtaIxns = true) => {
|
|
17
|
+
return async (amountInLamports, amountInMint, amountOutMint, slippage, amountDebtAtaBalance) => {
|
|
27
18
|
const slippageBps = new decimal_js_1.default(slippage).mul('100');
|
|
28
19
|
const mintInDecimals = kaminoMarket.getReserveByMint(amountInMint).state.liquidity.mintDecimals.toNumber();
|
|
29
20
|
const amountIn = (0, classes_1.lamportsToNumberDecimal)(amountInLamports, mintInDecimals);
|
|
@@ -31,111 +22,105 @@ const getTokenToKtokenSwapper = (connection_1, kaminoMarket_1, kamino_1, deposit
|
|
|
31
22
|
if (amountDebtAtaBalance === undefined) {
|
|
32
23
|
throw Error('Amount in debt ATA balance is undefined for leverage ktoken deposit');
|
|
33
24
|
}
|
|
34
|
-
const ixWithLookup = (
|
|
25
|
+
const ixWithLookup = (await getKtokenDepositIxs(connection, kamino, depositor, amountInMint, amountOutMint, amountIn, slippageBps, amountDebtAtaBalance, swapper, priceAinB, includeAtaIxns));
|
|
35
26
|
return [ixWithLookup.instructions, ixWithLookup.lookupTablesAddresses];
|
|
36
|
-
}
|
|
37
|
-
}
|
|
27
|
+
};
|
|
28
|
+
};
|
|
38
29
|
exports.getTokenToKtokenSwapper = getTokenToKtokenSwapper;
|
|
39
|
-
function getKtokenDepositIxs(
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}
|
|
59
|
-
});
|
|
30
|
+
async function getKtokenDepositIxs(connection, kamino, depositor, depositTokenMint, ktokenMint, amountToDeposit, slippageBps, amountExpectedDepositAtaBalance, swapper, priceAinB, includeAtaIxns = true) {
|
|
31
|
+
const kaminoStrategy = await kamino.getStrategyByKTokenMint(ktokenMint);
|
|
32
|
+
const tokenAMint = kaminoStrategy?.strategy.tokenAMint;
|
|
33
|
+
const tokenBMint = kaminoStrategy?.strategy.tokenBMint;
|
|
34
|
+
const priceAinBDecimal = await priceAinB(tokenAMint, tokenBMint);
|
|
35
|
+
if (tokenAMint.equals(depositTokenMint)) {
|
|
36
|
+
const bBalance = await (0, utils_1.getTokenAccountBalanceDecimal)(connection, tokenBMint, depositor);
|
|
37
|
+
const tokensBalances = { a: amountExpectedDepositAtaBalance, b: bBalance };
|
|
38
|
+
console.log('amountToDeposit', amountToDeposit);
|
|
39
|
+
return await kamino.singleSidedDepositTokenA(kaminoStrategy, amountToDeposit, depositor, slippageBps, undefined, swapProviderToKaminoSwapProvider(swapper), tokensBalances, priceAinBDecimal, includeAtaIxns);
|
|
40
|
+
}
|
|
41
|
+
else if (tokenBMint.equals(depositTokenMint)) {
|
|
42
|
+
const aBalance = await (0, utils_1.getTokenAccountBalanceDecimal)(connection, tokenAMint, depositor);
|
|
43
|
+
const tokensBalances = { a: aBalance, b: amountExpectedDepositAtaBalance };
|
|
44
|
+
return await kamino.singleSidedDepositTokenB(kaminoStrategy, amountToDeposit, depositor, slippageBps, undefined, swapProviderToKaminoSwapProvider(swapper), tokensBalances, priceAinBDecimal, includeAtaIxns);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
throw Error('Deposit token is neither A nor B in the strategy');
|
|
48
|
+
}
|
|
60
49
|
}
|
|
61
|
-
const getKtokenToTokenSwapper = (kaminoMarket, kamino, depositor, swapper) =>
|
|
62
|
-
return (amountInLamports, amountInMint, amountOutMint, slippage) =>
|
|
50
|
+
const getKtokenToTokenSwapper = async (kaminoMarket, kamino, depositor, swapper) => {
|
|
51
|
+
return async (amountInLamports, amountInMint, amountOutMint, slippage) => {
|
|
63
52
|
const amountInDecimals = kaminoMarket.getReserveByMint(amountInMint).state.liquidity.mintDecimals.toNumber();
|
|
64
53
|
const amountToWithdraw = (0, classes_1.lamportsToNumberDecimal)(amountInLamports, amountInDecimals);
|
|
65
|
-
const kaminoStrategy =
|
|
54
|
+
const kaminoStrategy = await kamino.getStrategyByKTokenMint(amountInMint);
|
|
66
55
|
console.log('Withdrawing ktoken', amountInMint.toString(), ' for ', amountOutMint.toString(), 'token');
|
|
67
|
-
const ixWithdraw = (
|
|
68
|
-
const [estimatedAOut, estimatedBOut] =
|
|
69
|
-
if (amountOutMint.equals(kaminoStrategy
|
|
70
|
-
const [swapIxs, swapLookupTables] =
|
|
56
|
+
const ixWithdraw = (await getKtokenWithdrawIxs(kamino, depositor, kaminoStrategy, amountToWithdraw));
|
|
57
|
+
const [estimatedAOut, estimatedBOut] = await getKtokenWithdrawEstimatesAndPrice(kamino, kaminoStrategy, amountToWithdraw);
|
|
58
|
+
if (amountOutMint.equals(kaminoStrategy?.strategy.tokenAMint)) {
|
|
59
|
+
const [swapIxs, swapLookupTables] = await swapper(estimatedBOut.toNumber(), kaminoStrategy?.strategy.tokenBMint, kaminoStrategy?.strategy.tokenAMint, slippage);
|
|
71
60
|
return [[...ixWithdraw.prerequisiteIxs, ixWithdraw.withdrawIx, ...swapIxs], swapLookupTables];
|
|
72
61
|
}
|
|
73
|
-
else if (amountOutMint.equals(kaminoStrategy
|
|
74
|
-
const [swapIxs, swapLookupTables] =
|
|
62
|
+
else if (amountOutMint.equals(kaminoStrategy?.strategy.tokenBMint)) {
|
|
63
|
+
const [swapIxs, swapLookupTables] = await swapper(estimatedAOut.toNumber(), kaminoStrategy?.strategy.tokenAMint, kaminoStrategy?.strategy.tokenBMint, slippage);
|
|
75
64
|
return [[...ixWithdraw.prerequisiteIxs, ixWithdraw.withdrawIx, ...swapIxs], swapLookupTables];
|
|
76
65
|
}
|
|
77
66
|
else {
|
|
78
67
|
throw Error('Deposit token is neither A nor B in the strategy');
|
|
79
68
|
}
|
|
80
|
-
}
|
|
81
|
-
}
|
|
69
|
+
};
|
|
70
|
+
};
|
|
82
71
|
exports.getKtokenToTokenSwapper = getKtokenToTokenSwapper;
|
|
83
|
-
function getKtokenWithdrawIxs(kamino, withdrawer, kaminoStrategy, amountToWithdraw) {
|
|
84
|
-
return
|
|
85
|
-
return yield kamino.withdrawShares(kaminoStrategy, amountToWithdraw, withdrawer);
|
|
86
|
-
});
|
|
72
|
+
async function getKtokenWithdrawIxs(kamino, withdrawer, kaminoStrategy, amountToWithdraw) {
|
|
73
|
+
return await kamino.withdrawShares(kaminoStrategy, amountToWithdraw, withdrawer);
|
|
87
74
|
}
|
|
88
|
-
function getKtokenWithdrawEstimatesAndPrice(kamino, kaminoStrategy, amountToWithdraw) {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
return [estimatedAOutDecimal, estimatedBOutDecimal];
|
|
118
|
-
});
|
|
75
|
+
async function getKtokenWithdrawEstimatesAndPrice(kamino, kaminoStrategy, amountToWithdraw) {
|
|
76
|
+
const sharesData = await kamino.getStrategyShareData(kaminoStrategy);
|
|
77
|
+
const withdrawPct = amountToWithdraw
|
|
78
|
+
.div((0, classes_1.lamportsToNumberDecimal)(new decimal_js_1.default(kaminoStrategy.strategy.sharesIssued.toString()), kaminoStrategy.strategy.sharesMintDecimals.toNumber()))
|
|
79
|
+
.toDecimalPlaces(18);
|
|
80
|
+
const withdrawFee = new decimal_js_1.default(10_000).sub(new decimal_js_1.default(kaminoStrategy.strategy.withdrawFee.toString()));
|
|
81
|
+
// TODO: Mihai/Marius improve - currently subtracting due to decimal accuracy issues compared to yvaults SC
|
|
82
|
+
// for both A and B op: .sub(0.000002)
|
|
83
|
+
const estimatedAOut = sharesData.balance.computedHoldings.invested.a
|
|
84
|
+
.add(sharesData.balance.computedHoldings.available.a)
|
|
85
|
+
.mul(withdrawPct)
|
|
86
|
+
.toDecimalPlaces(kaminoStrategy.strategy.tokenAMintDecimals.toNumber(), 1)
|
|
87
|
+
.sub(0.000002)
|
|
88
|
+
.mul(withdrawFee)
|
|
89
|
+
.div(10_000)
|
|
90
|
+
.toDecimalPlaces(kaminoStrategy.strategy.tokenAMintDecimals.toNumber());
|
|
91
|
+
const estimatedAOutDecimal = (0, utils_2.numberToLamportsDecimal)(estimatedAOut, kaminoStrategy.strategy.tokenAMintDecimals.toNumber()).floor();
|
|
92
|
+
const estimatedBOut = sharesData.balance.computedHoldings.invested.b
|
|
93
|
+
.add(sharesData.balance.computedHoldings.available.b)
|
|
94
|
+
.mul(withdrawPct)
|
|
95
|
+
.toDecimalPlaces(kaminoStrategy.strategy.tokenBMintDecimals.toNumber(), 1)
|
|
96
|
+
.sub(0.000002)
|
|
97
|
+
.mul(withdrawFee)
|
|
98
|
+
.div(10_000)
|
|
99
|
+
.toDecimalPlaces(kaminoStrategy.strategy.tokenAMintDecimals.toNumber());
|
|
100
|
+
const estimatedBOutDecimal = (0, utils_2.numberToLamportsDecimal)(estimatedBOut, kaminoStrategy.strategy.tokenBMintDecimals.toNumber()).floor();
|
|
101
|
+
console.log('a-out', estimatedAOutDecimal.toString());
|
|
102
|
+
console.log('b-out', estimatedBOut.toString());
|
|
103
|
+
return [estimatedAOutDecimal, estimatedBOutDecimal];
|
|
119
104
|
}
|
|
120
105
|
function swapProviderToKaminoSwapProvider(swapper) {
|
|
121
|
-
return (input, tokenAMint, tokenBMint, _owner, slippageBps, _allKeys) =>
|
|
106
|
+
return async (input, tokenAMint, tokenBMint, _owner, slippageBps, _allKeys) => {
|
|
122
107
|
if (input.tokenBToSwapAmount.lt(0)) {
|
|
123
|
-
return
|
|
108
|
+
return await swapper(input.tokenBToSwapAmount.abs().toNumber(), tokenBMint, tokenAMint, slippageBps.toNumber() / 100);
|
|
124
109
|
}
|
|
125
110
|
else if (input.tokenAToSwapAmount.lt(0)) {
|
|
126
|
-
return
|
|
111
|
+
return await swapper(input.tokenAToSwapAmount.abs().toNumber(), tokenAMint, tokenBMint, slippageBps.toNumber() / 100);
|
|
127
112
|
}
|
|
128
113
|
else {
|
|
129
114
|
throw Error('Nothing to swap');
|
|
130
115
|
}
|
|
131
|
-
}
|
|
116
|
+
};
|
|
132
117
|
}
|
|
133
|
-
const getExpectedTokenBalanceAfterBorrow = (connection, mint, owner, amountToBorrowLamports, amountToBorrowmintDecimals) =>
|
|
134
|
-
const initialUserTokenABalance =
|
|
118
|
+
const getExpectedTokenBalanceAfterBorrow = async (connection, mint, owner, amountToBorrowLamports, amountToBorrowmintDecimals) => {
|
|
119
|
+
const initialUserTokenABalance = await (0, utils_1.getTokenAccountBalanceDecimal)(connection, mint, owner);
|
|
135
120
|
return initialUserTokenABalance
|
|
136
121
|
.add((0, classes_1.lamportsToNumberDecimal)(amountToBorrowLamports, amountToBorrowmintDecimals))
|
|
137
122
|
.toDecimalPlaces(amountToBorrowmintDecimals);
|
|
138
|
-
}
|
|
123
|
+
};
|
|
139
124
|
exports.getExpectedTokenBalanceAfterBorrow = getExpectedTokenBalanceAfterBorrow;
|
|
140
125
|
const isBorrowingEnabled = (reserve) => {
|
|
141
126
|
return reserve.state.config.borrowLimit.gt(new bn_js_1.default(0));
|