@kamino-finance/klend-sdk 2.10.6
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/README.md +85 -0
- package/dist/classes/action.d.ts +154 -0
- package/dist/classes/action.js +1505 -0
- package/dist/classes/action.js.map +1 -0
- package/dist/classes/curve.d.ts +15 -0
- package/dist/classes/curve.js +32 -0
- package/dist/classes/curve.js.map +1 -0
- package/dist/classes/fraction.d.ts +23 -0
- package/dist/classes/fraction.js +60 -0
- package/dist/classes/fraction.js.map +1 -0
- package/dist/classes/index.d.ts +8 -0
- package/dist/classes/index.js +25 -0
- package/dist/classes/index.js.map +1 -0
- package/dist/classes/jupiterPerps.d.ts +2 -0
- package/dist/classes/jupiterPerps.js +25 -0
- package/dist/classes/jupiterPerps.js.map +1 -0
- package/dist/classes/market.d.ts +140 -0
- package/dist/classes/market.js +901 -0
- package/dist/classes/market.js.map +1 -0
- package/dist/classes/obligation.d.ts +170 -0
- package/dist/classes/obligation.js +610 -0
- package/dist/classes/obligation.js.map +1 -0
- package/dist/classes/reserve.d.ts +161 -0
- package/dist/classes/reserve.js +474 -0
- package/dist/classes/reserve.js.map +1 -0
- package/dist/classes/shared.d.ts +41 -0
- package/dist/classes/shared.js +10 -0
- package/dist/classes/shared.js.map +1 -0
- package/dist/classes/utils.d.ts +40 -0
- package/dist/classes/utils.js +129 -0
- package/dist/classes/utils.js.map +1 -0
- package/dist/idl.json +4102 -0
- package/dist/idl_codegen/accounts/LendingMarket.d.ts +153 -0
- package/dist/idl_codegen/accounts/LendingMarket.js +204 -0
- package/dist/idl_codegen/accounts/LendingMarket.js.map +1 -0
- package/dist/idl_codegen/accounts/Obligation.d.ts +139 -0
- package/dist/idl_codegen/accounts/Obligation.js +193 -0
- package/dist/idl_codegen/accounts/Obligation.js.map +1 -0
- package/dist/idl_codegen/accounts/ReferrerState.d.ts +22 -0
- package/dist/idl_codegen/accounts/ReferrerState.js +101 -0
- package/dist/idl_codegen/accounts/ReferrerState.js.map +1 -0
- package/dist/idl_codegen/accounts/ReferrerTokenState.d.ts +51 -0
- package/dist/idl_codegen/accounts/ReferrerTokenState.js +126 -0
- package/dist/idl_codegen/accounts/ReferrerTokenState.js.map +1 -0
- package/dist/idl_codegen/accounts/Reserve.d.ts +72 -0
- package/dist/idl_codegen/accounts/Reserve.js +156 -0
- package/dist/idl_codegen/accounts/Reserve.js.map +1 -0
- package/dist/idl_codegen/accounts/ShortUrl.d.ts +22 -0
- package/dist/idl_codegen/accounts/ShortUrl.js +101 -0
- package/dist/idl_codegen/accounts/ShortUrl.js.map +1 -0
- package/dist/idl_codegen/accounts/UserMetadata.d.ts +48 -0
- package/dist/idl_codegen/accounts/UserMetadata.js +126 -0
- package/dist/idl_codegen/accounts/UserMetadata.js.map +1 -0
- package/dist/idl_codegen/accounts/UserState.d.ts +143 -0
- package/dist/idl_codegen/accounts/UserState.js +180 -0
- package/dist/idl_codegen/accounts/UserState.js.map +1 -0
- package/dist/idl_codegen/accounts/index.d.ts +16 -0
- package/dist/idl_codegen/accounts/index.js +20 -0
- package/dist/idl_codegen/accounts/index.js.map +1 -0
- package/dist/idl_codegen/errors/anchor.d.ts +434 -0
- package/dist/idl_codegen/errors/anchor.js +713 -0
- package/dist/idl_codegen/errors/anchor.js.map +1 -0
- package/dist/idl_codegen/errors/custom.d.ts +730 -0
- package/dist/idl_codegen/errors/custom.js +1194 -0
- package/dist/idl_codegen/errors/custom.js.map +1 -0
- package/dist/idl_codegen/errors/index.d.ts +5 -0
- package/dist/idl_codegen/errors/index.js +71 -0
- package/dist/idl_codegen/errors/index.js.map +1 -0
- package/dist/idl_codegen/instructions/borrowObligationLiquidity.d.ts +20 -0
- package/dist/idl_codegen/instructions/borrowObligationLiquidity.js +75 -0
- package/dist/idl_codegen/instructions/borrowObligationLiquidity.js.map +1 -0
- package/dist/idl_codegen/instructions/deleteReferrerStateAndShortUrl.d.ts +9 -0
- package/dist/idl_codegen/instructions/deleteReferrerStateAndShortUrl.js +20 -0
- package/dist/idl_codegen/instructions/deleteReferrerStateAndShortUrl.js.map +1 -0
- package/dist/idl_codegen/instructions/depositObligationCollateral.d.ts +17 -0
- package/dist/idl_codegen/instructions/depositObligationCollateral.js +64 -0
- package/dist/idl_codegen/instructions/depositObligationCollateral.js.map +1 -0
- package/dist/idl_codegen/instructions/depositReserveLiquidity.d.ts +19 -0
- package/dist/idl_codegen/instructions/depositReserveLiquidity.js +74 -0
- package/dist/idl_codegen/instructions/depositReserveLiquidity.js.map +1 -0
- package/dist/idl_codegen/instructions/depositReserveLiquidityAndObligationCollateral.d.ts +21 -0
- package/dist/idl_codegen/instructions/depositReserveLiquidityAndObligationCollateral.js +80 -0
- package/dist/idl_codegen/instructions/depositReserveLiquidityAndObligationCollateral.js.map +1 -0
- package/dist/idl_codegen/instructions/flashBorrowReserveLiquidity.d.ts +20 -0
- package/dist/idl_codegen/instructions/flashBorrowReserveLiquidity.js +75 -0
- package/dist/idl_codegen/instructions/flashBorrowReserveLiquidity.js.map +1 -0
- package/dist/idl_codegen/instructions/flashRepayReserveLiquidity.d.ts +21 -0
- package/dist/idl_codegen/instructions/flashRepayReserveLiquidity.js +75 -0
- package/dist/idl_codegen/instructions/flashRepayReserveLiquidity.js.map +1 -0
- package/dist/idl_codegen/instructions/idlMissingTypes.d.ts +18 -0
- package/dist/idl_codegen/instructions/idlMissingTypes.js +62 -0
- package/dist/idl_codegen/instructions/idlMissingTypes.js.map +1 -0
- package/dist/idl_codegen/instructions/index.d.ts +66 -0
- package/dist/idl_codegen/instructions/index.js +70 -0
- package/dist/idl_codegen/instructions/index.js.map +1 -0
- package/dist/idl_codegen/instructions/initFarmsForReserve.d.ts +19 -0
- package/dist/idl_codegen/instructions/initFarmsForReserve.js +63 -0
- package/dist/idl_codegen/instructions/initFarmsForReserve.js.map +1 -0
- package/dist/idl_codegen/instructions/initLendingMarket.d.ts +13 -0
- package/dist/idl_codegen/instructions/initLendingMarket.js +55 -0
- package/dist/idl_codegen/instructions/initLendingMarket.js.map +1 -0
- package/dist/idl_codegen/instructions/initObligation.d.ts +19 -0
- package/dist/idl_codegen/instructions/initObligation.js +55 -0
- package/dist/idl_codegen/instructions/initObligation.js.map +1 -0
- package/dist/idl_codegen/instructions/initObligationFarmsForReserve.d.ts +20 -0
- package/dist/idl_codegen/instructions/initObligationFarmsForReserve.js +60 -0
- package/dist/idl_codegen/instructions/initObligationFarmsForReserve.js.map +1 -0
- package/dist/idl_codegen/instructions/initReferrerStateAndShortUrl.d.ts +14 -0
- package/dist/idl_codegen/instructions/initReferrerStateAndShortUrl.js +54 -0
- package/dist/idl_codegen/instructions/initReferrerStateAndShortUrl.js.map +1 -0
- package/dist/idl_codegen/instructions/initReferrerTokenState.d.ts +14 -0
- package/dist/idl_codegen/instructions/initReferrerTokenState.js +50 -0
- package/dist/idl_codegen/instructions/initReferrerTokenState.js.map +1 -0
- package/dist/idl_codegen/instructions/initReserve.d.ts +16 -0
- package/dist/idl_codegen/instructions/initReserve.js +47 -0
- package/dist/idl_codegen/instructions/initReserve.js.map +1 -0
- package/dist/idl_codegen/instructions/initUserMetadata.d.ts +14 -0
- package/dist/idl_codegen/instructions/initUserMetadata.js +54 -0
- package/dist/idl_codegen/instructions/initUserMetadata.js.map +1 -0
- package/dist/idl_codegen/instructions/liquidateObligationAndRedeemReserveCollateral.d.ts +27 -0
- package/dist/idl_codegen/instructions/liquidateObligationAndRedeemReserveCollateral.js +102 -0
- package/dist/idl_codegen/instructions/liquidateObligationAndRedeemReserveCollateral.js.map +1 -0
- package/dist/idl_codegen/instructions/redeemFees.d.ts +10 -0
- package/dist/idl_codegen/instructions/redeemFees.js +33 -0
- package/dist/idl_codegen/instructions/redeemFees.js.map +1 -0
- package/dist/idl_codegen/instructions/redeemReserveCollateral.d.ts +19 -0
- package/dist/idl_codegen/instructions/redeemReserveCollateral.js +78 -0
- package/dist/idl_codegen/instructions/redeemReserveCollateral.js.map +1 -0
- package/dist/idl_codegen/instructions/refreshObligation.d.ts +6 -0
- package/dist/idl_codegen/instructions/refreshObligation.js +17 -0
- package/dist/idl_codegen/instructions/refreshObligation.js.map +1 -0
- package/dist/idl_codegen/instructions/refreshObligationFarmsForReserve.d.ts +19 -0
- package/dist/idl_codegen/instructions/refreshObligationFarmsForReserve.js +63 -0
- package/dist/idl_codegen/instructions/refreshObligationFarmsForReserve.js.map +1 -0
- package/dist/idl_codegen/instructions/refreshReserve.d.ts +10 -0
- package/dist/idl_codegen/instructions/refreshReserve.js +29 -0
- package/dist/idl_codegen/instructions/refreshReserve.js.map +1 -0
- package/dist/idl_codegen/instructions/repayObligationLiquidity.d.ts +17 -0
- package/dist/idl_codegen/instructions/repayObligationLiquidity.js +60 -0
- package/dist/idl_codegen/instructions/repayObligationLiquidity.js.map +1 -0
- package/dist/idl_codegen/instructions/requestElevationGroup.d.ts +11 -0
- package/dist/idl_codegen/instructions/requestElevationGroup.js +47 -0
- package/dist/idl_codegen/instructions/requestElevationGroup.js.map +1 -0
- package/dist/idl_codegen/instructions/socializeLoss.d.ts +14 -0
- package/dist/idl_codegen/instructions/socializeLoss.js +53 -0
- package/dist/idl_codegen/instructions/socializeLoss.js.map +1 -0
- package/dist/idl_codegen/instructions/updateEntireReserveConfig.d.ts +13 -0
- package/dist/idl_codegen/instructions/updateEntireReserveConfig.js +51 -0
- package/dist/idl_codegen/instructions/updateEntireReserveConfig.js.map +1 -0
- package/dist/idl_codegen/instructions/updateLendingMarket.d.ts +12 -0
- package/dist/idl_codegen/instructions/updateLendingMarket.js +50 -0
- package/dist/idl_codegen/instructions/updateLendingMarket.js.map +1 -0
- package/dist/idl_codegen/instructions/updateLendingMarketOwner.d.ts +6 -0
- package/dist/idl_codegen/instructions/updateLendingMarketOwner.js +21 -0
- package/dist/idl_codegen/instructions/updateLendingMarketOwner.js.map +1 -0
- package/dist/idl_codegen/instructions/updateReserveConfig.d.ts +13 -0
- package/dist/idl_codegen/instructions/updateReserveConfig.js +51 -0
- package/dist/idl_codegen/instructions/updateReserveConfig.js.map +1 -0
- package/dist/idl_codegen/instructions/updateSingleReserveConfig.d.ts +13 -0
- package/dist/idl_codegen/instructions/updateSingleReserveConfig.js +51 -0
- package/dist/idl_codegen/instructions/updateSingleReserveConfig.js.map +1 -0
- package/dist/idl_codegen/instructions/withdrawObligationCollateral.d.ts +18 -0
- package/dist/idl_codegen/instructions/withdrawObligationCollateral.js +69 -0
- package/dist/idl_codegen/instructions/withdrawObligationCollateral.js.map +1 -0
- package/dist/idl_codegen/instructions/withdrawObligationCollateralAndRedeemReserveCollateral.d.ts +21 -0
- package/dist/idl_codegen/instructions/withdrawObligationCollateralAndRedeemReserveCollateral.js +84 -0
- package/dist/idl_codegen/instructions/withdrawObligationCollateralAndRedeemReserveCollateral.js.map +1 -0
- package/dist/idl_codegen/instructions/withdrawProtocolFee.d.ts +16 -0
- package/dist/idl_codegen/instructions/withdrawProtocolFee.js +59 -0
- package/dist/idl_codegen/instructions/withdrawProtocolFee.js.map +1 -0
- package/dist/idl_codegen/instructions/withdrawReferrerFees.d.ts +12 -0
- package/dist/idl_codegen/instructions/withdrawReferrerFees.js +35 -0
- package/dist/idl_codegen/instructions/withdrawReferrerFees.js.map +1 -0
- package/dist/idl_codegen/programId.d.ts +4 -0
- package/dist/idl_codegen/programId.js +13 -0
- package/dist/idl_codegen/programId.js.map +1 -0
- package/dist/idl_codegen/types/AssetTier.d.ts +44 -0
- package/dist/idl_codegen/types/AssetTier.js +128 -0
- package/dist/idl_codegen/types/AssetTier.js.map +1 -0
- package/dist/idl_codegen/types/BigFractionBytes.d.ts +27 -0
- package/dist/idl_codegen/types/BigFractionBytes.js +73 -0
- package/dist/idl_codegen/types/BigFractionBytes.js.map +1 -0
- package/dist/idl_codegen/types/BorrowRateCurve.d.ts +27 -0
- package/dist/idl_codegen/types/BorrowRateCurve.js +62 -0
- package/dist/idl_codegen/types/BorrowRateCurve.js.map +1 -0
- package/dist/idl_codegen/types/CurvePoint.d.ts +26 -0
- package/dist/idl_codegen/types/CurvePoint.js +66 -0
- package/dist/idl_codegen/types/CurvePoint.js.map +1 -0
- package/dist/idl_codegen/types/ElevationGroup.d.ts +52 -0
- package/dist/idl_codegen/types/ElevationGroup.js +103 -0
- package/dist/idl_codegen/types/ElevationGroup.js.map +1 -0
- package/dist/idl_codegen/types/FeeCalculation.d.ts +31 -0
- package/dist/idl_codegen/types/FeeCalculation.js +102 -0
- package/dist/idl_codegen/types/FeeCalculation.js.map +1 -0
- package/dist/idl_codegen/types/InitObligationArgs.d.ts +26 -0
- package/dist/idl_codegen/types/InitObligationArgs.js +66 -0
- package/dist/idl_codegen/types/InitObligationArgs.js.map +1 -0
- package/dist/idl_codegen/types/LastUpdate.d.ts +47 -0
- package/dist/idl_codegen/types/LastUpdate.js +86 -0
- package/dist/idl_codegen/types/LastUpdate.js.map +1 -0
- package/dist/idl_codegen/types/ObligationCollateral.d.ts +48 -0
- package/dist/idl_codegen/types/ObligationCollateral.js +87 -0
- package/dist/idl_codegen/types/ObligationCollateral.js.map +1 -0
- package/dist/idl_codegen/types/ObligationLiquidity.d.ts +75 -0
- package/dist/idl_codegen/types/ObligationLiquidity.js +107 -0
- package/dist/idl_codegen/types/ObligationLiquidity.js.map +1 -0
- package/dist/idl_codegen/types/PriceHeuristic.d.ts +41 -0
- package/dist/idl_codegen/types/PriceHeuristic.js +75 -0
- package/dist/idl_codegen/types/PriceHeuristic.js.map +1 -0
- package/dist/idl_codegen/types/PythConfiguration.d.ts +25 -0
- package/dist/idl_codegen/types/PythConfiguration.js +62 -0
- package/dist/idl_codegen/types/PythConfiguration.js.map +1 -0
- package/dist/idl_codegen/types/ReserveCollateral.d.ts +53 -0
- package/dist/idl_codegen/types/ReserveCollateral.js +93 -0
- package/dist/idl_codegen/types/ReserveCollateral.js.map +1 -0
- package/dist/idl_codegen/types/ReserveConfig.d.ts +304 -0
- package/dist/idl_codegen/types/ReserveConfig.js +209 -0
- package/dist/idl_codegen/types/ReserveConfig.js.map +1 -0
- package/dist/idl_codegen/types/ReserveFarmKind.d.ts +31 -0
- package/dist/idl_codegen/types/ReserveFarmKind.js +102 -0
- package/dist/idl_codegen/types/ReserveFarmKind.js.map +1 -0
- package/dist/idl_codegen/types/ReserveFees.d.ts +78 -0
- package/dist/idl_codegen/types/ReserveFees.js +86 -0
- package/dist/idl_codegen/types/ReserveFees.js.map +1 -0
- package/dist/idl_codegen/types/ReserveLiquidity.d.ts +173 -0
- package/dist/idl_codegen/types/ReserveLiquidity.js +166 -0
- package/dist/idl_codegen/types/ReserveLiquidity.js.map +1 -0
- package/dist/idl_codegen/types/ReserveStatus.d.ts +44 -0
- package/dist/idl_codegen/types/ReserveStatus.js +128 -0
- package/dist/idl_codegen/types/ReserveStatus.js.map +1 -0
- package/dist/idl_codegen/types/ScopeConfiguration.d.ts +41 -0
- package/dist/idl_codegen/types/ScopeConfiguration.js +76 -0
- package/dist/idl_codegen/types/ScopeConfiguration.js.map +1 -0
- package/dist/idl_codegen/types/SwitchboardConfiguration.d.ts +30 -0
- package/dist/idl_codegen/types/SwitchboardConfiguration.js +67 -0
- package/dist/idl_codegen/types/SwitchboardConfiguration.js.map +1 -0
- package/dist/idl_codegen/types/TokenInfo.d.ts +109 -0
- package/dist/idl_codegen/types/TokenInfo.js +116 -0
- package/dist/idl_codegen/types/TokenInfo.js.map +1 -0
- package/dist/idl_codegen/types/UpdateConfigMode.d.ts +538 -0
- package/dist/idl_codegen/types/UpdateConfigMode.js +1116 -0
- package/dist/idl_codegen/types/UpdateConfigMode.js.map +1 -0
- package/dist/idl_codegen/types/UpdateLendingMarketConfigValue.d.ts +155 -0
- package/dist/idl_codegen/types/UpdateLendingMarketConfigValue.js +273 -0
- package/dist/idl_codegen/types/UpdateLendingMarketConfigValue.js.map +1 -0
- package/dist/idl_codegen/types/UpdateLendingMarketMode.d.ts +200 -0
- package/dist/idl_codegen/types/UpdateLendingMarketMode.js +440 -0
- package/dist/idl_codegen/types/UpdateLendingMarketMode.js.map +1 -0
- package/dist/idl_codegen/types/WithdrawalCaps.d.ts +38 -0
- package/dist/idl_codegen/types/WithdrawalCaps.js +86 -0
- package/dist/idl_codegen/types/WithdrawalCaps.js.map +1 -0
- package/dist/idl_codegen/types/index.d.ts +65 -0
- package/dist/idl_codegen/types/index.js +77 -0
- package/dist/idl_codegen/types/index.js.map +1 -0
- package/dist/idl_codegen/zero_padding/ObligationZP.d.ts +53 -0
- package/dist/idl_codegen/zero_padding/ObligationZP.js +140 -0
- package/dist/idl_codegen/zero_padding/ObligationZP.js.map +1 -0
- package/dist/idl_codegen/zero_padding/index.d.ts +1 -0
- package/dist/idl_codegen/zero_padding/index.js +6 -0
- package/dist/idl_codegen/zero_padding/index.js.map +1 -0
- package/dist/idl_codegen_jupiter_perps/accounts/Pool.d.ts +48 -0
- package/dist/idl_codegen_jupiter_perps/accounts/Pool.js +144 -0
- package/dist/idl_codegen_jupiter_perps/accounts/Pool.js.map +1 -0
- package/dist/idl_codegen_jupiter_perps/accounts/index.d.ts +2 -0
- package/dist/idl_codegen_jupiter_perps/accounts/index.js +6 -0
- package/dist/idl_codegen_jupiter_perps/accounts/index.js.map +1 -0
- package/dist/idl_codegen_jupiter_perps/programId.d.ts +3 -0
- package/dist/idl_codegen_jupiter_perps/programId.js +9 -0
- package/dist/idl_codegen_jupiter_perps/programId.js.map +1 -0
- package/dist/idl_codegen_jupiter_perps/types/Fees.d.ts +62 -0
- package/dist/idl_codegen_jupiter_perps/types/Fees.js +115 -0
- package/dist/idl_codegen_jupiter_perps/types/Fees.js.map +1 -0
- package/dist/idl_codegen_jupiter_perps/types/Limit.d.ts +32 -0
- package/dist/idl_codegen_jupiter_perps/types/Limit.js +75 -0
- package/dist/idl_codegen_jupiter_perps/types/Limit.js.map +1 -0
- package/dist/idl_codegen_jupiter_perps/types/PoolApr.d.ts +32 -0
- package/dist/idl_codegen_jupiter_perps/types/PoolApr.js +75 -0
- package/dist/idl_codegen_jupiter_perps/types/PoolApr.js.map +1 -0
- package/dist/idl_codegen_jupiter_perps/types/index.d.ts +6 -0
- package/dist/idl_codegen_jupiter_perps/types/index.js +10 -0
- package/dist/idl_codegen_jupiter_perps/types/index.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/lending_operations/index.d.ts +2 -0
- package/dist/lending_operations/index.js +19 -0
- package/dist/lending_operations/index.js.map +1 -0
- package/dist/lending_operations/repay_with_collateral_calcs.d.ts +5 -0
- package/dist/lending_operations/repay_with_collateral_calcs.js +26 -0
- package/dist/lending_operations/repay_with_collateral_calcs.js.map +1 -0
- package/dist/lending_operations/repay_with_collateral_operations.d.ts +47 -0
- package/dist/lending_operations/repay_with_collateral_operations.js +163 -0
- package/dist/lending_operations/repay_with_collateral_operations.js.map +1 -0
- package/dist/leverage/calcs.d.ts +132 -0
- package/dist/leverage/calcs.js +291 -0
- package/dist/leverage/calcs.js.map +1 -0
- package/dist/leverage/index.d.ts +4 -0
- package/dist/leverage/index.js +21 -0
- package/dist/leverage/index.js.map +1 -0
- package/dist/leverage/instructions.d.ts +43 -0
- package/dist/leverage/instructions.js +103 -0
- package/dist/leverage/instructions.js.map +1 -0
- package/dist/leverage/operations.d.ts +231 -0
- package/dist/leverage/operations.js +1058 -0
- package/dist/leverage/operations.js.map +1 -0
- package/dist/leverage/utils.d.ts +22 -0
- package/dist/leverage/utils.js +144 -0
- package/dist/leverage/utils.js.map +1 -0
- package/dist/lib.d.ts +9 -0
- package/dist/lib.js +26 -0
- package/dist/lib.js.map +1 -0
- package/dist/referrals/index.d.ts +2 -0
- package/dist/referrals/index.js +19 -0
- package/dist/referrals/index.js.map +1 -0
- package/dist/referrals/instructions.d.ts +16 -0
- package/dist/referrals/instructions.js +76 -0
- package/dist/referrals/instructions.js.map +1 -0
- package/dist/referrals/operations.d.ts +97 -0
- package/dist/referrals/operations.js +258 -0
- package/dist/referrals/operations.js.map +1 -0
- package/dist/utils/ObligationType.d.ts +49 -0
- package/dist/utils/ObligationType.js +129 -0
- package/dist/utils/ObligationType.js.map +1 -0
- package/dist/utils/api.d.ts +6 -0
- package/dist/utils/api.js +61 -0
- package/dist/utils/api.js.map +1 -0
- package/dist/utils/ata.d.ts +25 -0
- package/dist/utils/ata.js +155 -0
- package/dist/utils/ata.js.map +1 -0
- package/dist/utils/constants.d.ts +48 -0
- package/dist/utils/constants.js +75 -0
- package/dist/utils/constants.js.map +1 -0
- package/dist/utils/idl.d.ts +2 -0
- package/dist/utils/idl.js +9 -0
- package/dist/utils/idl.js.map +1 -0
- package/dist/utils/index.d.ts +14 -0
- package/dist/utils/index.js +31 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/instruction.d.ts +22 -0
- package/dist/utils/instruction.js +202 -0
- package/dist/utils/instruction.js.map +1 -0
- package/dist/utils/kamino.d.ts +3 -0
- package/dist/utils/kamino.js +45 -0
- package/dist/utils/kamino.js.map +1 -0
- package/dist/utils/layout.d.ts +13 -0
- package/dist/utils/layout.js +123 -0
- package/dist/utils/layout.js.map +1 -0
- package/dist/utils/lookupTable.d.ts +5 -0
- package/dist/utils/lookupTable.js +57 -0
- package/dist/utils/lookupTable.js.map +1 -0
- package/dist/utils/oracle.d.ts +51 -0
- package/dist/utils/oracle.js +295 -0
- package/dist/utils/oracle.js.map +1 -0
- package/dist/utils/pubkey.d.ts +74 -0
- package/dist/utils/pubkey.js +229 -0
- package/dist/utils/pubkey.js.map +1 -0
- package/dist/utils/seeds.d.ts +122 -0
- package/dist/utils/seeds.js +153 -0
- package/dist/utils/seeds.js.map +1 -0
- package/dist/utils/slots.d.ts +18 -0
- package/dist/utils/slots.js +32 -0
- package/dist/utils/slots.js.map +1 -0
- package/dist/utils/syncNative.d.ts +10 -0
- package/dist/utils/syncNative.js +46 -0
- package/dist/utils/syncNative.js.map +1 -0
- package/dist/utils/userMetadata.d.ts +15 -0
- package/dist/utils/userMetadata.js +259 -0
- package/dist/utils/userMetadata.js.map +1 -0
- package/package.json +94 -0
|
@@ -0,0 +1,259 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.getAllUserMetadatasWithFilter = exports.getUserLutAddressAndSetupIxns = void 0;
|
|
13
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
14
|
+
const lib_1 = require("../lib");
|
|
15
|
+
const farms_sdk_1 = require("@hubbleprotocol/farms-sdk");
|
|
16
|
+
const getUserLutAddressAndSetupIxns = (kaminoMarket, user, referrer = web3_js_1.PublicKey.default, withExtendLut = true, multiplyMints = [], leverageMints = [], repayWithCollObligation = undefined, payer = web3_js_1.PublicKey.default) => __awaiter(void 0, void 0, void 0, function* () {
|
|
17
|
+
const [userMetadataAddress, userMetadataState] = yield kaminoMarket.getUserMetadata(user);
|
|
18
|
+
const initUserMetadataIxs = [];
|
|
19
|
+
let userLookupTableAddress;
|
|
20
|
+
const referrerUserMetadata = referrer.equals(web3_js_1.PublicKey.default)
|
|
21
|
+
? kaminoMarket.programId
|
|
22
|
+
: (yield kaminoMarket.getUserMetadata(referrer))[0];
|
|
23
|
+
if (!userMetadataState) {
|
|
24
|
+
const [createLutIx, lookupTableAddress] = yield (0, lib_1.createLookupTableIx)(kaminoMarket.getConnection(), user);
|
|
25
|
+
userLookupTableAddress = lookupTableAddress;
|
|
26
|
+
initUserMetadataIxs.push(createLutIx);
|
|
27
|
+
initUserMetadataIxs.push((0, lib_1.initUserMetadata)({
|
|
28
|
+
userLookupTable: lookupTableAddress,
|
|
29
|
+
}, {
|
|
30
|
+
owner: user,
|
|
31
|
+
feePayer: payer.equals(web3_js_1.PublicKey.default) ? user : payer,
|
|
32
|
+
userMetadata: userMetadataAddress,
|
|
33
|
+
referrerUserMetadata: referrerUserMetadata,
|
|
34
|
+
rent: web3_js_1.SYSVAR_RENT_PUBKEY,
|
|
35
|
+
systemProgram: web3_js_1.SystemProgram.programId,
|
|
36
|
+
}, kaminoMarket.programId));
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
userLookupTableAddress = userMetadataState.userLookupTable;
|
|
40
|
+
}
|
|
41
|
+
const setupUserMetadataIxs = [initUserMetadataIxs];
|
|
42
|
+
if (withExtendLut) {
|
|
43
|
+
const dedupUserLutAddresses = yield getDedupUserLookupTableAddresses(kaminoMarket, userLookupTableAddress, user, referrer, multiplyMints, leverageMints, userMetadataState !== null, repayWithCollObligation);
|
|
44
|
+
const extendLookupTableChunkIxs = (0, lib_1.extendLookupTableIxs)(user, userLookupTableAddress, dedupUserLutAddresses, payer);
|
|
45
|
+
for (const extendLutIx of extendLookupTableChunkIxs) {
|
|
46
|
+
setupUserMetadataIxs.push([extendLutIx]);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return [userLookupTableAddress, setupUserMetadataIxs];
|
|
50
|
+
});
|
|
51
|
+
exports.getUserLutAddressAndSetupIxns = getUserLutAddressAndSetupIxns;
|
|
52
|
+
const getDedupUserLookupTableAddresses = (kaminoMarket, table_pk, user, referrer, multiplyMints = [], leverageMints = [], tableExists, repayWithCollObligation = undefined) => __awaiter(void 0, void 0, void 0, function* () {
|
|
53
|
+
var _a;
|
|
54
|
+
const requiredAddresses = yield getUserLookupTableAddresses(kaminoMarket, user, referrer, multiplyMints, leverageMints, repayWithCollObligation);
|
|
55
|
+
if (tableExists) {
|
|
56
|
+
const userLookupTable = (_a = (yield kaminoMarket.getConnection().getAddressLookupTable(table_pk)).value) === null || _a === void 0 ? void 0 : _a.state;
|
|
57
|
+
const addressesAndLogsNotInLut = requiredAddresses.filter((addressAndLogs) => userLookupTable.addresses.filter((a) => a.equals(addressAndLogs.address)).length === 0);
|
|
58
|
+
console.log('Addresses to be added in LUT:');
|
|
59
|
+
const addressNotInLut = addressesAndLogsNotInLut.map((addressAndLogs) => {
|
|
60
|
+
console.log(addressAndLogs.log);
|
|
61
|
+
return addressAndLogs.address;
|
|
62
|
+
});
|
|
63
|
+
return new lib_1.PublicKeySet(addressNotInLut).toArray();
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
const addressNotInLut = requiredAddresses.map((addressAndLogs) => {
|
|
67
|
+
console.log(addressAndLogs.log);
|
|
68
|
+
return addressAndLogs.address;
|
|
69
|
+
});
|
|
70
|
+
return new lib_1.PublicKeySet(addressNotInLut).toArray();
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
const getUserLookupTableAddresses = (kaminoMarket, user, referrer, multiplyMints = [], leverageMints = [], repayWithCollObligation = undefined) => __awaiter(void 0, void 0, void 0, function* () {
|
|
74
|
+
const addresses = [];
|
|
75
|
+
addresses.push({ address: user, log: 'user address' });
|
|
76
|
+
const [userMetadataAddress] = (0, lib_1.userMetadataPda)(user, kaminoMarket.programId);
|
|
77
|
+
addresses.push({ address: userMetadataAddress, log: 'userMetadata address' });
|
|
78
|
+
const allMints = [];
|
|
79
|
+
multiplyMints.forEach(({ coll: collMint, debt: debtMint }) => {
|
|
80
|
+
allMints.push(collMint);
|
|
81
|
+
allMints.push(debtMint);
|
|
82
|
+
});
|
|
83
|
+
leverageMints.forEach(({ coll: collMint, debt: debtMint }) => {
|
|
84
|
+
allMints.push(collMint);
|
|
85
|
+
allMints.push(debtMint);
|
|
86
|
+
});
|
|
87
|
+
if (repayWithCollObligation) {
|
|
88
|
+
repayWithCollObligation.borrows.forEach((borrow) => {
|
|
89
|
+
allMints.push(borrow.mintAddress);
|
|
90
|
+
});
|
|
91
|
+
repayWithCollObligation.deposits.forEach((deposit) => {
|
|
92
|
+
allMints.push(deposit.mintAddress);
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
const dedupMints = [...new lib_1.PublicKeySet(allMints).toArray()];
|
|
96
|
+
const reserves = [];
|
|
97
|
+
dedupMints.forEach((mint) => {
|
|
98
|
+
const kaminoReserve = kaminoMarket.getReserveByMint(mint);
|
|
99
|
+
if (kaminoReserve) {
|
|
100
|
+
reserves.push(kaminoReserve);
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
// reserve mint ATAs
|
|
104
|
+
const mintsAtas = yield Promise.all(dedupMints.map((mint) => __awaiter(void 0, void 0, void 0, function* () {
|
|
105
|
+
return { address: yield (0, lib_1.getAssociatedTokenAddress)(mint, user), log: 'ata for mint ' + mint.toString() };
|
|
106
|
+
})));
|
|
107
|
+
addresses.push(...mintsAtas);
|
|
108
|
+
// ctoken ATAs
|
|
109
|
+
const ctokenMintsAtas = yield Promise.all(reserves.map((reserve) => __awaiter(void 0, void 0, void 0, function* () {
|
|
110
|
+
const ctokenMint = reserve.getCTokenMint();
|
|
111
|
+
return {
|
|
112
|
+
address: yield (0, lib_1.getAssociatedTokenAddress)(ctokenMint, user),
|
|
113
|
+
log: 'ctoken ata for reserve ' + reserve.address.toString(),
|
|
114
|
+
};
|
|
115
|
+
})));
|
|
116
|
+
addresses.push(...ctokenMintsAtas);
|
|
117
|
+
// farm states
|
|
118
|
+
const farmCollateralStates = reserves.map((reserve) => reserve.state.farmCollateral);
|
|
119
|
+
const farmDebtStates = reserves.map((reserve) => reserve.state.farmDebt);
|
|
120
|
+
const farmStates = new lib_1.PublicKeySet(farmCollateralStates.concat(farmDebtStates).filter((address) => (0, lib_1.isNotNullPubkey)(address)));
|
|
121
|
+
const farmStatesAdressesAndLogs = farmStates.toArray().map((address) => {
|
|
122
|
+
return { address: address, log: 'farm state' };
|
|
123
|
+
});
|
|
124
|
+
addresses.push(...farmStatesAdressesAndLogs);
|
|
125
|
+
// referrer token states
|
|
126
|
+
const referrerTokenStates = reserves.map((reserve) => {
|
|
127
|
+
return {
|
|
128
|
+
address: (0, lib_1.referrerTokenStatePda)(referrer, reserve.address, kaminoMarket.programId)[0],
|
|
129
|
+
log: 'referrer token state for reserve ' + reserve.address,
|
|
130
|
+
};
|
|
131
|
+
});
|
|
132
|
+
if (!referrer.equals(web3_js_1.PublicKey.default)) {
|
|
133
|
+
addresses.push(...referrerTokenStates);
|
|
134
|
+
}
|
|
135
|
+
const [multiplyObligations, multiplyObligationsFarmUserStates] = getMultiplyObligationAndObligationFarmStateAddresses(kaminoMarket, user, multiplyMints);
|
|
136
|
+
addresses.push(...multiplyObligations);
|
|
137
|
+
addresses.push(...multiplyObligationsFarmUserStates);
|
|
138
|
+
const [leverageObligations, leverageObligationsFarmUserStates] = getLeverageObligationAndObligationFarmStateAddresses(kaminoMarket, user, leverageMints);
|
|
139
|
+
addresses.push(...leverageObligations);
|
|
140
|
+
addresses.push(...leverageObligationsFarmUserStates);
|
|
141
|
+
if (repayWithCollObligation) {
|
|
142
|
+
const repayWithCollFarmUserStates = getRepayWithCollObligationFarmStateAddresses(kaminoMarket, repayWithCollObligation);
|
|
143
|
+
addresses.push(...repayWithCollFarmUserStates);
|
|
144
|
+
}
|
|
145
|
+
return addresses;
|
|
146
|
+
});
|
|
147
|
+
function getMultiplyObligationAndObligationFarmStateAddresses(kaminoMarket, user, mints) {
|
|
148
|
+
const obligationPdas = [];
|
|
149
|
+
const farmUserStates = [];
|
|
150
|
+
for (const { coll: collMint, debt: debtMint } of mints) {
|
|
151
|
+
const collReserve = kaminoMarket.getReserveByMint(collMint);
|
|
152
|
+
const debtReserve = kaminoMarket.getReserveByMint(debtMint);
|
|
153
|
+
const collMintString = collMint.toString();
|
|
154
|
+
const debtMintString = debtMint.toString();
|
|
155
|
+
if (collReserve && debtReserve) {
|
|
156
|
+
const multiplyObligation = new lib_1.MultiplyObligation(collMint, lib_1.WRAPPED_SOL_MINT, kaminoMarket.programId);
|
|
157
|
+
obligationPdas.push({
|
|
158
|
+
address: multiplyObligation.toPda(kaminoMarket.getAddress(), user),
|
|
159
|
+
log: 'multiply obligation coll: ' + collMintString + ' debt: ' + debtMintString,
|
|
160
|
+
});
|
|
161
|
+
if (!collReserve.state.farmCollateral.equals(web3_js_1.PublicKey.default)) {
|
|
162
|
+
farmUserStates.push({
|
|
163
|
+
address: getPdaFarmsUserState(collReserve.state.farmCollateral, multiplyObligation.toPda(kaminoMarket.getAddress(), user)),
|
|
164
|
+
log: 'collReserve farmState for multiply obligation coll: ' + collMintString + ' debt: ' + debtMintString,
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
if (!debtReserve.state.farmDebt.equals(web3_js_1.PublicKey.default)) {
|
|
168
|
+
farmUserStates.push({
|
|
169
|
+
address: getPdaFarmsUserState(debtReserve.state.farmDebt, multiplyObligation.toPda(kaminoMarket.getAddress(), user)),
|
|
170
|
+
log: 'debtReserve farmState for multiply obligation coll: ' + collMintString + ' debt: ' + debtMintString,
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
return [obligationPdas, farmUserStates];
|
|
176
|
+
}
|
|
177
|
+
function getLeverageObligationAndObligationFarmStateAddresses(kaminoMarket, user, mints) {
|
|
178
|
+
const obligationPdas = [];
|
|
179
|
+
const farmUserStates = [];
|
|
180
|
+
for (const { coll: collMint, debt: debtMint } of mints) {
|
|
181
|
+
const collReserve = kaminoMarket.getReserveByMint(collMint);
|
|
182
|
+
const debtReserve = kaminoMarket.getReserveByMint(debtMint);
|
|
183
|
+
const collMintString = collMint.toString();
|
|
184
|
+
const debtMintString = debtMint.toString();
|
|
185
|
+
if (collReserve && debtReserve) {
|
|
186
|
+
const leverageObligation = new lib_1.LeverageObligation(collMint, debtMint, kaminoMarket.programId);
|
|
187
|
+
obligationPdas.push({
|
|
188
|
+
address: leverageObligation.toPda(kaminoMarket.getAddress(), user),
|
|
189
|
+
log: 'leverage obligation coll: ' + collMintString + ' debt: ' + debtMintString,
|
|
190
|
+
});
|
|
191
|
+
if (!collReserve.state.farmCollateral.equals(web3_js_1.PublicKey.default)) {
|
|
192
|
+
farmUserStates.push({
|
|
193
|
+
address: getPdaFarmsUserState(collReserve.state.farmCollateral, leverageObligation.toPda(kaminoMarket.getAddress(), user)),
|
|
194
|
+
log: 'collReserve farmState for leverage obligation coll: ' + collMintString + ' debt: ' + debtMintString,
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
if (!debtReserve.state.farmDebt.equals(web3_js_1.PublicKey.default)) {
|
|
198
|
+
farmUserStates.push({
|
|
199
|
+
address: getPdaFarmsUserState(debtReserve.state.farmDebt, leverageObligation.toPda(kaminoMarket.getAddress(), user)),
|
|
200
|
+
log: 'debtReserve farmState for leverage obligation coll: ' + collMintString + ' debt: ' + debtMintString,
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
return [obligationPdas, farmUserStates];
|
|
206
|
+
}
|
|
207
|
+
function getRepayWithCollObligationFarmStateAddresses(kaminoMarket, obligation) {
|
|
208
|
+
const farmUserStates = [];
|
|
209
|
+
const obligationString = obligation.obligationAddress.toString();
|
|
210
|
+
obligation.borrows.forEach((borrow) => {
|
|
211
|
+
const borrowReserve = kaminoMarket.getReserveByMint(borrow.mintAddress);
|
|
212
|
+
if (!borrowReserve.state.farmDebt.equals(web3_js_1.PublicKey.default)) {
|
|
213
|
+
farmUserStates.push({
|
|
214
|
+
address: getPdaFarmsUserState(borrowReserve.state.farmDebt, obligation.obligationAddress),
|
|
215
|
+
log: 'debtReserve farmState for vanilla obligation: ' + obligationString,
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
obligation.deposits.forEach((deposit) => {
|
|
220
|
+
const depositReserve = kaminoMarket.getReserveByMint(deposit.mintAddress);
|
|
221
|
+
if (!depositReserve.state.farmCollateral.equals(web3_js_1.PublicKey.default)) {
|
|
222
|
+
farmUserStates.push({
|
|
223
|
+
address: getPdaFarmsUserState(depositReserve.state.farmCollateral, obligation.obligationAddress),
|
|
224
|
+
log: 'collReserve farmState for vanilla obligation' + obligationString,
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
return farmUserStates;
|
|
229
|
+
}
|
|
230
|
+
const BASE_SEED_USER_STATE = Buffer.from('user');
|
|
231
|
+
const getPdaFarmsUserState = (farm, obligation) => web3_js_1.PublicKey.findProgramAddressSync([BASE_SEED_USER_STATE, farm.toBytes(), obligation.toBytes()], farms_sdk_1.farmsId)[0];
|
|
232
|
+
function getAllUserMetadatasWithFilter(connection, filter, programId) {
|
|
233
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
234
|
+
const filters = [
|
|
235
|
+
{
|
|
236
|
+
dataSize: lib_1.UserMetadata.layout.span + 8,
|
|
237
|
+
},
|
|
238
|
+
...filter,
|
|
239
|
+
];
|
|
240
|
+
const userMetadatas = yield connection.getProgramAccounts(programId, {
|
|
241
|
+
filters,
|
|
242
|
+
});
|
|
243
|
+
return userMetadatas.map((userMetadata) => {
|
|
244
|
+
if (userMetadata.account === null) {
|
|
245
|
+
throw new Error('Invalid account');
|
|
246
|
+
}
|
|
247
|
+
if (!userMetadata.account.owner.equals(programId)) {
|
|
248
|
+
throw new Error("account doesn't belong to this program");
|
|
249
|
+
}
|
|
250
|
+
const userMetadataAccount = lib_1.UserMetadata.decode(userMetadata.account.data);
|
|
251
|
+
if (!userMetadataAccount) {
|
|
252
|
+
throw Error('Could not parse user metadata.');
|
|
253
|
+
}
|
|
254
|
+
return { address: userMetadata.pubkey, state: userMetadataAccount };
|
|
255
|
+
});
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
exports.getAllUserMetadatasWithFilter = getAllUserMetadatasWithFilter;
|
|
259
|
+
//# sourceMappingURL=userMetadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"userMetadata.js","sourceRoot":"","sources":["../../src/utils/userMetadata.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n PublicKey,\n TransactionInstruction,\n SYSVAR_RENT_PUBKEY,\n SystemProgram,\n Connection,\n GetProgramAccountsFilter,\n} from '@solana/web3.js';\nimport { KaminoMarket, KaminoObligation } from '../classes';\nimport {\n LeverageObligation,\n MultiplyObligation,\n WRAPPED_SOL_MINT,\n createLookupTableIx,\n extendLookupTableIxs,\n getAssociatedTokenAddress,\n initUserMetadata,\n referrerTokenStatePda,\n userMetadataPda,\n isNotNullPubkey,\n UserMetadata,\n PublicKeySet,\n} from '../lib';\nimport { farmsId } from '@hubbleprotocol/farms-sdk';\nimport { KaminoReserve } from '../classes/reserve';\n\nexport type KaminoUserMetadata = {\n address: PublicKey;\n state: UserMetadata;\n};\n\nexport const getUserLutAddressAndSetupIxns = async (\n kaminoMarket: KaminoMarket,\n user: PublicKey,\n referrer: PublicKey = PublicKey.default,\n withExtendLut: boolean = true,\n multiplyMints: { coll: PublicKey; debt: PublicKey }[] = [],\n leverageMints: { coll: PublicKey; debt: PublicKey }[] = [],\n repayWithCollObligation: KaminoObligation | undefined = undefined,\n payer: PublicKey = PublicKey.default\n): Promise<[PublicKey, TransactionInstruction[][]]> => {\n const [userMetadataAddress, userMetadataState] = await kaminoMarket.getUserMetadata(user);\n const initUserMetadataIxs: TransactionInstruction[] = [];\n let userLookupTableAddress: PublicKey;\n\n const referrerUserMetadata = referrer.equals(PublicKey.default)\n ? kaminoMarket.programId\n : (await kaminoMarket.getUserMetadata(referrer))[0];\n\n if (!userMetadataState) {\n const [createLutIx, lookupTableAddress] = await createLookupTableIx(kaminoMarket.getConnection(), user);\n userLookupTableAddress = lookupTableAddress;\n initUserMetadataIxs.push(createLutIx);\n initUserMetadataIxs.push(\n initUserMetadata(\n {\n userLookupTable: lookupTableAddress,\n },\n {\n owner: user,\n feePayer: payer.equals(PublicKey.default) ? user : payer,\n userMetadata: userMetadataAddress,\n referrerUserMetadata: referrerUserMetadata,\n rent: SYSVAR_RENT_PUBKEY,\n systemProgram: SystemProgram.programId,\n },\n kaminoMarket.programId\n )\n );\n } else {\n userLookupTableAddress = userMetadataState.userLookupTable;\n }\n\n const setupUserMetadataIxs = [initUserMetadataIxs];\n\n if (withExtendLut) {\n const dedupUserLutAddresses = await getDedupUserLookupTableAddresses(\n kaminoMarket,\n userLookupTableAddress,\n user,\n referrer,\n multiplyMints,\n leverageMints,\n userMetadataState !== null,\n repayWithCollObligation\n );\n\n const extendLookupTableChunkIxs = extendLookupTableIxs(user, userLookupTableAddress, dedupUserLutAddresses, payer);\n\n for (const extendLutIx of extendLookupTableChunkIxs) {\n setupUserMetadataIxs.push([extendLutIx]);\n }\n }\n\n return [userLookupTableAddress, setupUserMetadataIxs];\n};\n\nconst getDedupUserLookupTableAddresses = async (\n kaminoMarket: KaminoMarket,\n table_pk: PublicKey,\n user: PublicKey,\n referrer: PublicKey,\n multiplyMints: { coll: PublicKey; debt: PublicKey }[] = [],\n leverageMints: { coll: PublicKey; debt: PublicKey }[] = [],\n tableExists: boolean,\n repayWithCollObligation: KaminoObligation | undefined = undefined\n): Promise<PublicKey[]> => {\n const requiredAddresses = await getUserLookupTableAddresses(\n kaminoMarket,\n user,\n referrer,\n multiplyMints,\n leverageMints,\n repayWithCollObligation\n );\n\n if (tableExists) {\n const userLookupTable = (await kaminoMarket.getConnection().getAddressLookupTable(table_pk)).value?.state!;\n const addressesAndLogsNotInLut = requiredAddresses.filter(\n (addressAndLogs) => userLookupTable.addresses.filter((a) => a.equals(addressAndLogs.address)).length === 0\n );\n console.log('Addresses to be added in LUT:');\n const addressNotInLut = addressesAndLogsNotInLut.map((addressAndLogs) => {\n console.log(addressAndLogs.log);\n return addressAndLogs.address;\n });\n return new PublicKeySet(addressNotInLut).toArray();\n } else {\n const addressNotInLut = requiredAddresses.map((addressAndLogs) => {\n console.log(addressAndLogs.log);\n return addressAndLogs.address;\n });\n return new PublicKeySet(addressNotInLut).toArray();\n }\n};\n\nconst getUserLookupTableAddresses = async (\n kaminoMarket: KaminoMarket,\n user: PublicKey,\n referrer: PublicKey,\n multiplyMints: { coll: PublicKey; debt: PublicKey }[] = [],\n leverageMints: { coll: PublicKey; debt: PublicKey }[] = [],\n repayWithCollObligation: KaminoObligation | undefined = undefined\n): Promise<{ address: PublicKey; log: string }[]> => {\n const addresses: { address: PublicKey; log: string }[] = [];\n addresses.push({ address: user, log: 'user address' });\n const [userMetadataAddress] = userMetadataPda(user, kaminoMarket.programId);\n addresses.push({ address: userMetadataAddress, log: 'userMetadata address' });\n\n const allMints: PublicKey[] = [];\n multiplyMints.forEach(({ coll: collMint, debt: debtMint }) => {\n allMints.push(collMint);\n allMints.push(debtMint);\n });\n leverageMints.forEach(({ coll: collMint, debt: debtMint }) => {\n allMints.push(collMint);\n allMints.push(debtMint);\n });\n\n if (repayWithCollObligation) {\n repayWithCollObligation.borrows.forEach((borrow) => {\n allMints.push(borrow.mintAddress);\n });\n\n repayWithCollObligation.deposits.forEach((deposit) => {\n allMints.push(deposit.mintAddress);\n });\n }\n\n const dedupMints = [...new PublicKeySet(allMints).toArray()];\n const reserves: KaminoReserve[] = [];\n dedupMints.forEach((mint) => {\n const kaminoReserve = kaminoMarket.getReserveByMint(mint);\n if (kaminoReserve) {\n reserves.push(kaminoReserve);\n }\n });\n\n // reserve mint ATAs\n const mintsAtas: { address: PublicKey; log: string }[] = await Promise.all(\n dedupMints.map(async (mint) => {\n return { address: await getAssociatedTokenAddress(mint, user), log: 'ata for mint ' + mint.toString() };\n })\n );\n addresses.push(...mintsAtas);\n // ctoken ATAs\n const ctokenMintsAtas: { address: PublicKey; log: string }[] = await Promise.all(\n reserves.map(async (reserve) => {\n const ctokenMint = reserve.getCTokenMint();\n return {\n address: await getAssociatedTokenAddress(ctokenMint, user),\n log: 'ctoken ata for reserve ' + reserve.address.toString(),\n };\n })\n );\n addresses.push(...ctokenMintsAtas);\n // farm states\n const farmCollateralStates: PublicKey[] = reserves.map((reserve) => reserve.state.farmCollateral);\n const farmDebtStates: PublicKey[] = reserves.map((reserve) => reserve.state.farmDebt);\n const farmStates = new PublicKeySet(\n farmCollateralStates.concat(farmDebtStates).filter((address) => isNotNullPubkey(address))\n );\n const farmStatesAdressesAndLogs = farmStates.toArray().map((address) => {\n return { address: address, log: 'farm state' };\n });\n addresses.push(...farmStatesAdressesAndLogs);\n // referrer token states\n const referrerTokenStates: { address: PublicKey; log: string }[] = reserves.map((reserve) => {\n return {\n address: referrerTokenStatePda(referrer, reserve.address, kaminoMarket.programId)[0],\n log: 'referrer token state for reserve ' + reserve.address,\n };\n });\n if (!referrer.equals(PublicKey.default)) {\n addresses.push(...referrerTokenStates);\n }\n\n const [multiplyObligations, multiplyObligationsFarmUserStates] = getMultiplyObligationAndObligationFarmStateAddresses(\n kaminoMarket,\n user,\n multiplyMints\n );\n\n addresses.push(...multiplyObligations);\n addresses.push(...multiplyObligationsFarmUserStates);\n\n const [leverageObligations, leverageObligationsFarmUserStates] = getLeverageObligationAndObligationFarmStateAddresses(\n kaminoMarket,\n user,\n leverageMints\n );\n\n addresses.push(...leverageObligations);\n addresses.push(...leverageObligationsFarmUserStates);\n\n if (repayWithCollObligation) {\n const repayWithCollFarmUserStates = getRepayWithCollObligationFarmStateAddresses(\n kaminoMarket,\n repayWithCollObligation\n );\n addresses.push(...repayWithCollFarmUserStates);\n }\n\n return addresses;\n};\n\nfunction getMultiplyObligationAndObligationFarmStateAddresses(\n kaminoMarket: KaminoMarket,\n user: PublicKey,\n mints: { coll: PublicKey; debt: PublicKey }[]\n): [{ address: PublicKey; log: string }[], { address: PublicKey; log: string }[]] {\n const obligationPdas: { address: PublicKey; log: string }[] = [];\n const farmUserStates: { address: PublicKey; log: string }[] = [];\n\n for (const { coll: collMint, debt: debtMint } of mints) {\n const collReserve = kaminoMarket.getReserveByMint(collMint);\n const debtReserve = kaminoMarket.getReserveByMint(debtMint);\n const collMintString = collMint.toString();\n const debtMintString = debtMint.toString();\n if (collReserve && debtReserve) {\n const multiplyObligation = new MultiplyObligation(collMint, WRAPPED_SOL_MINT, kaminoMarket.programId);\n obligationPdas.push({\n address: multiplyObligation.toPda(kaminoMarket.getAddress(), user),\n log: 'multiply obligation coll: ' + collMintString + ' debt: ' + debtMintString,\n });\n if (!collReserve.state.farmCollateral.equals(PublicKey.default)) {\n farmUserStates.push({\n address: getPdaFarmsUserState(\n collReserve.state.farmCollateral!,\n multiplyObligation.toPda(kaminoMarket.getAddress(), user)\n ),\n log: 'collReserve farmState for multiply obligation coll: ' + collMintString + ' debt: ' + debtMintString,\n });\n }\n if (!debtReserve.state.farmDebt.equals(PublicKey.default)) {\n farmUserStates.push({\n address: getPdaFarmsUserState(\n debtReserve.state.farmDebt!,\n multiplyObligation.toPda(kaminoMarket.getAddress(), user)\n ),\n log: 'debtReserve farmState for multiply obligation coll: ' + collMintString + ' debt: ' + debtMintString,\n });\n }\n }\n }\n\n return [obligationPdas, farmUserStates];\n}\n\nfunction getLeverageObligationAndObligationFarmStateAddresses(\n kaminoMarket: KaminoMarket,\n user: PublicKey,\n mints: { coll: PublicKey; debt: PublicKey }[]\n): [{ address: PublicKey; log: string }[], { address: PublicKey; log: string }[]] {\n const obligationPdas: { address: PublicKey; log: string }[] = [];\n const farmUserStates: { address: PublicKey; log: string }[] = [];\n\n for (const { coll: collMint, debt: debtMint } of mints) {\n const collReserve = kaminoMarket.getReserveByMint(collMint);\n const debtReserve = kaminoMarket.getReserveByMint(debtMint);\n const collMintString = collMint.toString();\n const debtMintString = debtMint.toString();\n if (collReserve && debtReserve) {\n const leverageObligation = new LeverageObligation(collMint, debtMint, kaminoMarket.programId);\n obligationPdas.push({\n address: leverageObligation.toPda(kaminoMarket.getAddress(), user),\n log: 'leverage obligation coll: ' + collMintString + ' debt: ' + debtMintString,\n });\n if (!collReserve.state.farmCollateral.equals(PublicKey.default)) {\n farmUserStates.push({\n address: getPdaFarmsUserState(\n collReserve.state.farmCollateral!,\n leverageObligation.toPda(kaminoMarket.getAddress(), user)\n ),\n log: 'collReserve farmState for leverage obligation coll: ' + collMintString + ' debt: ' + debtMintString,\n });\n }\n if (!debtReserve.state.farmDebt.equals(PublicKey.default)) {\n farmUserStates.push({\n address: getPdaFarmsUserState(\n debtReserve.state.farmDebt!,\n leverageObligation.toPda(kaminoMarket.getAddress(), user)\n ),\n log: 'debtReserve farmState for leverage obligation coll: ' + collMintString + ' debt: ' + debtMintString,\n });\n }\n }\n }\n\n return [obligationPdas, farmUserStates];\n}\n\nfunction getRepayWithCollObligationFarmStateAddresses(\n kaminoMarket: KaminoMarket,\n obligation: KaminoObligation\n): { address: PublicKey; log: string }[] {\n const farmUserStates: { address: PublicKey; log: string }[] = [];\n const obligationString = obligation.obligationAddress.toString();\n\n obligation.borrows.forEach((borrow) => {\n const borrowReserve = kaminoMarket.getReserveByMint(borrow.mintAddress)!;\n if (!borrowReserve.state.farmDebt.equals(PublicKey.default)) {\n farmUserStates.push({\n address: getPdaFarmsUserState(borrowReserve.state.farmDebt!, obligation.obligationAddress),\n log: 'debtReserve farmState for vanilla obligation: ' + obligationString,\n });\n }\n });\n\n obligation.deposits.forEach((deposit) => {\n const depositReserve = kaminoMarket.getReserveByMint(deposit.mintAddress)!;\n if (!depositReserve.state.farmCollateral.equals(PublicKey.default)) {\n farmUserStates.push({\n address: getPdaFarmsUserState(depositReserve.state.farmCollateral!, obligation.obligationAddress),\n log: 'collReserve farmState for vanilla obligation' + obligationString,\n });\n }\n });\n\n return farmUserStates;\n}\n\nconst BASE_SEED_USER_STATE = Buffer.from('user');\n\nconst getPdaFarmsUserState = (farm: PublicKey, obligation: PublicKey) =>\n PublicKey.findProgramAddressSync([BASE_SEED_USER_STATE, farm.toBytes(), obligation.toBytes()], farmsId)[0];\n\nexport async function getAllUserMetadatasWithFilter(\n connection: Connection,\n filter: GetProgramAccountsFilter[],\n programId: PublicKey\n): Promise<KaminoUserMetadata[]> {\n const filters = [\n {\n dataSize: UserMetadata.layout.span + 8,\n },\n ...filter,\n ];\n\n const userMetadatas = await connection.getProgramAccounts(programId, {\n filters,\n });\n\n return userMetadatas.map((userMetadata) => {\n if (userMetadata.account === null) {\n throw new Error('Invalid account');\n }\n if (!userMetadata.account.owner.equals(programId)) {\n throw new Error(\"account doesn't belong to this program\");\n }\n\n const userMetadataAccount = UserMetadata.decode(userMetadata.account.data);\n\n if (!userMetadataAccount) {\n throw Error('Could not parse user metadata.');\n }\n\n return { address: userMetadata.pubkey, state: userMetadataAccount };\n });\n}\n"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@kamino-finance/klend-sdk",
|
|
3
|
+
"version": "2.10.6",
|
|
4
|
+
"description": "Typescript SDK for interacting with the Kamino Lending (klend) protocol",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "git+github.com:Kamino-Finance/klend-sdk.git"
|
|
8
|
+
},
|
|
9
|
+
"author": "Kamino Finance",
|
|
10
|
+
"homepage": "https://kamino.finance",
|
|
11
|
+
"bugs": {
|
|
12
|
+
"url": "https://github.com/Kamino-Finance/klend-sdk/issues"
|
|
13
|
+
},
|
|
14
|
+
"keywords": [
|
|
15
|
+
"solana",
|
|
16
|
+
"anchor",
|
|
17
|
+
"klend",
|
|
18
|
+
"kamino"
|
|
19
|
+
],
|
|
20
|
+
"main": "dist/index.js",
|
|
21
|
+
"module": "dist/index.js",
|
|
22
|
+
"types": "dist/index.d.ts",
|
|
23
|
+
"files": [
|
|
24
|
+
"dist"
|
|
25
|
+
],
|
|
26
|
+
"license": "MIT",
|
|
27
|
+
"scripts": {
|
|
28
|
+
"docs": "typedoc",
|
|
29
|
+
"prepublish": "yarn build",
|
|
30
|
+
"build": "rm -rf dist/; tsc",
|
|
31
|
+
"test": "npx ts-mocha tests/**/*.test.ts --exit",
|
|
32
|
+
"watch": "tsc --watch",
|
|
33
|
+
"coverage": "jest --coverage",
|
|
34
|
+
"lint": "yarn prettier --check .; yarn eslint .",
|
|
35
|
+
"lint:fix": "yarn prettier --write .; yarn eslint . --fix",
|
|
36
|
+
"codegen": "yarn anchor-client-gen src/idl.json ./src/idl_codegen/ --program-id KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD",
|
|
37
|
+
"codegen-jupiter-perps": "yarn anchor-client-gen src/jupiter_perps_idl.json ./src/idl_codegen_jupiter_perps/ --program-id PERPHjGBqRHArX4DySjwM6UJHiR3sWAatqfdBS2qQJu",
|
|
38
|
+
"start-validator": "solana-test-validator $(./deps/test-validator-params.sh)",
|
|
39
|
+
"start-validator-and-test": "yarn start-server-and-test 'yarn start-validator' http://127.0.0.1:8899/health test",
|
|
40
|
+
"dump-programs": "./deps/dump-from-mainnet.sh"
|
|
41
|
+
},
|
|
42
|
+
"dependencies": {
|
|
43
|
+
"@coral-xyz/anchor": "^0.28.0",
|
|
44
|
+
"@coral-xyz/borsh": "^0.28.0",
|
|
45
|
+
"@hubbleprotocol/farms-sdk": "^0.3.7",
|
|
46
|
+
"@hubbleprotocol/kamino-sdk": "^3.0.16",
|
|
47
|
+
"@hubbleprotocol/scope-sdk": "^3.0.6",
|
|
48
|
+
"@pythnetwork/client": "^2.5.1",
|
|
49
|
+
"@solana/buffer-layout": "^4.0.0",
|
|
50
|
+
"@solana/spl-token": "^0.1.8",
|
|
51
|
+
"@solana/web3.js": "^1.87.6",
|
|
52
|
+
"@switchboard-xyz/sbv2-lite": "^0.1.0",
|
|
53
|
+
"bn.js": "^5.2.1",
|
|
54
|
+
"buffer": "^6.0.3",
|
|
55
|
+
"buffer-layout": "^1.2.2",
|
|
56
|
+
"commander": "^9.3.0",
|
|
57
|
+
"decimal.js": "^10.4.3",
|
|
58
|
+
"exponential-backoff": "^3.1.1"
|
|
59
|
+
},
|
|
60
|
+
"devDependencies": {
|
|
61
|
+
"@jup-ag/core": "=3.0.0-beta.18",
|
|
62
|
+
"@orca-so/sdk": "^1.2.25",
|
|
63
|
+
"@orca-so/whirlpool-sdk": "=0.4.2",
|
|
64
|
+
"@raydium-io/raydium-sdk": "=1.3.1-beta.5",
|
|
65
|
+
"@types/bn.js": "^5.1.1",
|
|
66
|
+
"@types/bs58": "^4.0.1",
|
|
67
|
+
"@types/chai": "^4.3.5",
|
|
68
|
+
"@types/jest": "^27.0.3",
|
|
69
|
+
"@types/mocha": "^10.0.1",
|
|
70
|
+
"@types/node-fetch": "^2.6.7",
|
|
71
|
+
"@typescript-eslint/eslint-plugin": "^5.5.0",
|
|
72
|
+
"@typescript-eslint/parser": "^5.5.0",
|
|
73
|
+
"anchor-client-gen": "^0.28.1",
|
|
74
|
+
"chai": "^4.3.7",
|
|
75
|
+
"chai-bignumber": "^3.1.0",
|
|
76
|
+
"eslint": "^8.4.0",
|
|
77
|
+
"eslint-config-airbnb-base": "^15.0.0",
|
|
78
|
+
"eslint-config-airbnb-typescript": "^16.1.0",
|
|
79
|
+
"eslint-config-prettier": "^8.3.0",
|
|
80
|
+
"eslint-plugin-import": "^2.25.3",
|
|
81
|
+
"eslint-plugin-react": "^7.27.1",
|
|
82
|
+
"jest": "^27.4.3",
|
|
83
|
+
"jest-fetch-mock": "^3.0.3",
|
|
84
|
+
"mocha": "^10.2.0",
|
|
85
|
+
"prettier": "^2.8.8",
|
|
86
|
+
"start-server-and-test": "^2.0.0",
|
|
87
|
+
"ts-jest": "^28.0.7",
|
|
88
|
+
"ts-mocha": "^10.0.0",
|
|
89
|
+
"ts-node": "^10.9.1",
|
|
90
|
+
"typedoc": "^0.22.10",
|
|
91
|
+
"typescript": "^4.9.5",
|
|
92
|
+
"typescript-eslint": "^0.0.1-alpha.0"
|
|
93
|
+
}
|
|
94
|
+
}
|