@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 @@
|
|
|
1
|
+
{"version":3,"file":"instructions.js","sourceRoot":"","sources":["../../src/referrals/instructions.ts"],"names":[],"mappings":"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","sourcesContent":["import { PublicKey, SYSVAR_RENT_PUBKEY, SystemProgram, TransactionInstruction, Connection } from '@solana/web3.js';\nimport { KaminoMarket } from '../classes';\nimport { checkIfAccountExists, referrerStatePda, referrerTokenStatePda, shortUrlPda, userMetadataPda } from '../utils';\nimport {\n PROGRAM_ID,\n ReferrerState,\n deleteReferrerStateAndShortUrl,\n initReferrerStateAndShortUrl,\n initReferrerTokenState,\n} from '../lib';\n\nexport const getInitAllReferrerTokenStateIxns = async ({\n referrer,\n kaminoMarket,\n}: {\n referrer: PublicKey;\n kaminoMarket: KaminoMarket;\n}) => {\n if (referrer.equals(PublicKey.default)) {\n throw new Error('Referrer not set');\n }\n\n await kaminoMarket.loadReserves();\n\n const initReferrerTokenStateIxns: TransactionInstruction[] = [];\n\n const tokenStatesToCreate: [PublicKey, PublicKey][] = [];\n for (const reserve of kaminoMarket.reserves.values()) {\n const referrerTokenStateAddress = referrerTokenStatePda(referrer, reserve.address, kaminoMarket.programId)[0];\n\n if (!(await checkIfAccountExists(kaminoMarket.getConnection(), referrerTokenStateAddress))) {\n tokenStatesToCreate.push([referrerTokenStateAddress, reserve?.address]);\n }\n }\n\n tokenStatesToCreate.forEach(([referrerTokenStateAddress, reserveAddress]) => {\n const initReferrerTokenStateIx = initReferrerTokenState(\n {\n referrer: referrer,\n },\n {\n lendingMarket: kaminoMarket.getAddress(),\n payer: referrer,\n reserve: reserveAddress,\n referrerTokenState: referrerTokenStateAddress,\n rent: SYSVAR_RENT_PUBKEY,\n systemProgram: SystemProgram.programId,\n }\n );\n\n initReferrerTokenStateIxns.push(initReferrerTokenStateIx);\n });\n\n return initReferrerTokenStateIxns;\n};\n\nexport const getInitReferrerStateAndShortUrlIxns = ({\n referrer,\n shortUrl,\n programId = PROGRAM_ID,\n}: {\n referrer: PublicKey;\n shortUrl: string;\n programId: PublicKey;\n}) => {\n const [referrerStateAddress] = referrerStatePda(referrer, programId);\n const [shortUrlAddress] = shortUrlPda(shortUrl, programId);\n\n const referrerUserMetadataAddress = userMetadataPda(referrer, programId)[0];\n\n const initReferrerStateAndShortUrlIx = initReferrerStateAndShortUrl(\n {\n shortUrl: shortUrl,\n },\n {\n referrer: referrer,\n referrerState: referrerStateAddress,\n referrerShortUrl: shortUrlAddress,\n referrerUserMetadata: referrerUserMetadataAddress,\n rent: SYSVAR_RENT_PUBKEY,\n systemProgram: SystemProgram.programId,\n },\n programId\n );\n\n return initReferrerStateAndShortUrlIx;\n};\n\n// TODO: 1 thing left before adding program id\nexport const getDeleteReferrerStateAndShortUrlIxns = async ({\n referrer,\n connection,\n programId = PROGRAM_ID,\n}: {\n referrer: PublicKey;\n connection: Connection;\n programId: PublicKey;\n}) => {\n const [referrerStateAddress] = referrerStatePda(referrer, programId);\n const referrerState = await ReferrerState.fetch(connection, referrerStateAddress, programId);\n\n const initReferrerStateAndShortUrlIx = deleteReferrerStateAndShortUrl(\n {\n referrer: referrer,\n referrerState: referrerStateAddress,\n shortUrl: referrerState!.shortUrl,\n rent: SYSVAR_RENT_PUBKEY,\n systemProgram: SystemProgram.programId,\n },\n programId\n );\n\n return initReferrerStateAndShortUrlIx;\n};\n"]}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { Connection, Keypair, PublicKey } from '@solana/web3.js';
|
|
2
|
+
import { KaminoMarket } from '../classes';
|
|
3
|
+
import { UserMetadata } from '../lib';
|
|
4
|
+
import Decimal from 'decimal.js';
|
|
5
|
+
/**
|
|
6
|
+
* Initialize all referrer token states for a given referrer
|
|
7
|
+
* @param referrer
|
|
8
|
+
* @param kaminoMarket
|
|
9
|
+
*/
|
|
10
|
+
export declare const initAllReferrerTokenStates: ({ referrer, kaminoMarket, }: {
|
|
11
|
+
referrer: Keypair;
|
|
12
|
+
kaminoMarket: KaminoMarket;
|
|
13
|
+
}) => Promise<string>;
|
|
14
|
+
/**
|
|
15
|
+
* Initialize referrer state and short url
|
|
16
|
+
* @param connection
|
|
17
|
+
* @param referrer
|
|
18
|
+
* @param shortUrl
|
|
19
|
+
*/
|
|
20
|
+
export declare const createReferrerStateAndShortUrl: ({ connection, referrer, shortUrl, programId, }: {
|
|
21
|
+
connection: Connection;
|
|
22
|
+
referrer: Keypair;
|
|
23
|
+
shortUrl: string;
|
|
24
|
+
programId?: PublicKey | undefined;
|
|
25
|
+
}) => Promise<string>;
|
|
26
|
+
/**
|
|
27
|
+
* Initialize referrer state and short url
|
|
28
|
+
* @param connection
|
|
29
|
+
* @param referrer
|
|
30
|
+
* @param newShortUrl
|
|
31
|
+
*/
|
|
32
|
+
export declare const updateReferrerStateAndShortUrl: ({ connection, referrer, newShortUrl, programId, }: {
|
|
33
|
+
connection: Connection;
|
|
34
|
+
referrer: Keypair;
|
|
35
|
+
newShortUrl: string;
|
|
36
|
+
programId?: PublicKey | undefined;
|
|
37
|
+
}) => Promise<string>;
|
|
38
|
+
/**
|
|
39
|
+
* Check if short URL available - also checks if short URL is valid (ascii-alphanumeric plus '_' '-', max 32 chars)
|
|
40
|
+
* @param connection
|
|
41
|
+
* @param shortUrl
|
|
42
|
+
* @param programId
|
|
43
|
+
*/
|
|
44
|
+
export declare function isShortUrlAvailable(connection: Connection, shortUrl: string, programId?: PublicKey): Promise<boolean>;
|
|
45
|
+
/**
|
|
46
|
+
* Get referrer short URL address and shortUrl
|
|
47
|
+
* @param connection
|
|
48
|
+
* @param referrer
|
|
49
|
+
* @param programId
|
|
50
|
+
*/
|
|
51
|
+
export declare function getReferrerShortUrl(connection: Connection, referrer: PublicKey, programId?: PublicKey): Promise<[PublicKey | null, string | null]>;
|
|
52
|
+
/**
|
|
53
|
+
* Get referrer for a given Short URL
|
|
54
|
+
* @param connection
|
|
55
|
+
* @param shortUrl
|
|
56
|
+
* @param programId
|
|
57
|
+
*/
|
|
58
|
+
export declare function getReferrerForShortUrl(connection: Connection, shortUrl: string, programId?: PublicKey): Promise<PublicKey>;
|
|
59
|
+
/**
|
|
60
|
+
* Get referrer all UserMetadata user accounts linked to a given referrer
|
|
61
|
+
* @param connection
|
|
62
|
+
* @param referrer
|
|
63
|
+
* @param programId
|
|
64
|
+
*/
|
|
65
|
+
export declare function getUserMetadatasByReferrer(connection: Connection, referrer: PublicKey, programId?: PublicKey): Promise<UserMetadata[]>;
|
|
66
|
+
/**
|
|
67
|
+
* Get referrer all UserMetadata user accounts
|
|
68
|
+
* @param connection
|
|
69
|
+
* @param referrer
|
|
70
|
+
* @param programId
|
|
71
|
+
*/
|
|
72
|
+
export declare function getAllUserMetadatas(connection: Connection, programId?: PublicKey): Promise<UserMetadata[]>;
|
|
73
|
+
/**
|
|
74
|
+
* Get referrer all UserMetadata user accounts linked to a given referrer
|
|
75
|
+
* @param connection
|
|
76
|
+
* @param referrer
|
|
77
|
+
* @param programId
|
|
78
|
+
*/
|
|
79
|
+
export declare function getTotalUsersReferred(connection: Connection, referrer: PublicKey, programId?: PublicKey): Promise<number>;
|
|
80
|
+
export type ReferralRank = {
|
|
81
|
+
referrer: PublicKey;
|
|
82
|
+
totalUsersReferred: number;
|
|
83
|
+
totalEarningsUsd: Decimal;
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* Get ReferralRank array of all referrers ordered by how much they've earned in USD
|
|
87
|
+
* @param connection
|
|
88
|
+
* @param kaminoMarket
|
|
89
|
+
*/
|
|
90
|
+
export declare function getReferralsRanking(connection: Connection, kaminoMarket: KaminoMarket): Promise<ReferralRank[]>;
|
|
91
|
+
/**
|
|
92
|
+
* Get ReferralRank array of all referrers ordered by how much they've earned in USD
|
|
93
|
+
* @param connection
|
|
94
|
+
* @param user
|
|
95
|
+
* @param programId
|
|
96
|
+
*/
|
|
97
|
+
export declare function getUserReferralRanking(connection: Connection, user: PublicKey, kaminoMarket: KaminoMarket): Promise<number | undefined>;
|
|
@@ -0,0 +1,258 @@
|
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.getUserReferralRanking = exports.getReferralsRanking = exports.getTotalUsersReferred = exports.getAllUserMetadatas = exports.getUserMetadatasByReferrer = exports.getReferrerForShortUrl = exports.getReferrerShortUrl = exports.isShortUrlAvailable = exports.updateReferrerStateAndShortUrl = exports.createReferrerStateAndShortUrl = exports.initAllReferrerTokenStates = void 0;
|
|
16
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
17
|
+
const utils_1 = require("../utils");
|
|
18
|
+
const instructions_1 = require("./instructions");
|
|
19
|
+
const lib_1 = require("../lib");
|
|
20
|
+
const decimal_js_1 = __importDefault(require("decimal.js"));
|
|
21
|
+
/**
|
|
22
|
+
* Initialize all referrer token states for a given referrer
|
|
23
|
+
* @param referrer
|
|
24
|
+
* @param kaminoMarket
|
|
25
|
+
*/
|
|
26
|
+
const initAllReferrerTokenStates = ({ referrer, kaminoMarket, }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
27
|
+
const ixns = yield (0, instructions_1.getInitAllReferrerTokenStateIxns)({ referrer: referrer.publicKey, kaminoMarket });
|
|
28
|
+
const tx = yield (0, utils_1.buildVersionedTransaction)(kaminoMarket.getConnection(), referrer.publicKey, ixns);
|
|
29
|
+
console.log('Init Referral Token States');
|
|
30
|
+
return yield (0, utils_1.buildAndSendTxnWithLogs)(kaminoMarket.getConnection(), tx, referrer, [referrer]);
|
|
31
|
+
});
|
|
32
|
+
exports.initAllReferrerTokenStates = initAllReferrerTokenStates;
|
|
33
|
+
/**
|
|
34
|
+
* Initialize referrer state and short url
|
|
35
|
+
* @param connection
|
|
36
|
+
* @param referrer
|
|
37
|
+
* @param shortUrl
|
|
38
|
+
*/
|
|
39
|
+
const createReferrerStateAndShortUrl = ({ connection, referrer, shortUrl, programId = lib_1.PROGRAM_ID, }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
40
|
+
const ixn = (0, instructions_1.getInitReferrerStateAndShortUrlIxns)({ referrer: referrer.publicKey, shortUrl, programId });
|
|
41
|
+
const tx = yield (0, utils_1.buildVersionedTransaction)(connection, referrer.publicKey, [ixn]);
|
|
42
|
+
console.log('Init ReferrerState for referrer ' + referrer.publicKey.toBase58() + ' and shortUrl ' + shortUrl);
|
|
43
|
+
return yield (0, utils_1.buildAndSendTxnWithLogs)(connection, tx, referrer, [referrer]);
|
|
44
|
+
});
|
|
45
|
+
exports.createReferrerStateAndShortUrl = createReferrerStateAndShortUrl;
|
|
46
|
+
/**
|
|
47
|
+
* Initialize referrer state and short url
|
|
48
|
+
* @param connection
|
|
49
|
+
* @param referrer
|
|
50
|
+
* @param newShortUrl
|
|
51
|
+
*/
|
|
52
|
+
const updateReferrerStateAndShortUrl = ({ connection, referrer, newShortUrl, programId = lib_1.PROGRAM_ID, }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
53
|
+
const deleteIxn = yield (0, instructions_1.getDeleteReferrerStateAndShortUrlIxns)({
|
|
54
|
+
referrer: referrer.publicKey,
|
|
55
|
+
connection,
|
|
56
|
+
programId,
|
|
57
|
+
});
|
|
58
|
+
const initIxn = (0, instructions_1.getInitReferrerStateAndShortUrlIxns)({
|
|
59
|
+
referrer: referrer.publicKey,
|
|
60
|
+
shortUrl: newShortUrl,
|
|
61
|
+
programId,
|
|
62
|
+
});
|
|
63
|
+
const tx = yield (0, utils_1.buildVersionedTransaction)(connection, referrer.publicKey, [deleteIxn, initIxn]);
|
|
64
|
+
console.log('Update ReferrerState for referrer ' + referrer.publicKey.toBase58() + ' and shortUrl ' + newShortUrl);
|
|
65
|
+
return yield (0, utils_1.buildAndSendTxnWithLogs)(connection, tx, referrer, [referrer]);
|
|
66
|
+
});
|
|
67
|
+
exports.updateReferrerStateAndShortUrl = updateReferrerStateAndShortUrl;
|
|
68
|
+
/**
|
|
69
|
+
* Check if short URL available - also checks if short URL is valid (ascii-alphanumeric plus '_' '-', max 32 chars)
|
|
70
|
+
* @param connection
|
|
71
|
+
* @param shortUrl
|
|
72
|
+
* @param programId
|
|
73
|
+
*/
|
|
74
|
+
function isShortUrlAvailable(connection, shortUrl, programId = lib_1.PROGRAM_ID) {
|
|
75
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
76
|
+
if (shortUrl.length > 32) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
if (!/^[a-zA-Z0-9-_]+$/.test(shortUrl)) {
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
const [shortUrlAddress] = (0, utils_1.shortUrlPda)(shortUrl, programId);
|
|
83
|
+
const info = yield connection.getAccountInfo(shortUrlAddress);
|
|
84
|
+
return info === null;
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
exports.isShortUrlAvailable = isShortUrlAvailable;
|
|
88
|
+
/**
|
|
89
|
+
* Get referrer short URL address and shortUrl
|
|
90
|
+
* @param connection
|
|
91
|
+
* @param referrer
|
|
92
|
+
* @param programId
|
|
93
|
+
*/
|
|
94
|
+
function getReferrerShortUrl(connection, referrer, programId = lib_1.PROGRAM_ID) {
|
|
95
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
96
|
+
const [referrerStateAddress] = (0, utils_1.referrerStatePda)(referrer, programId);
|
|
97
|
+
const referrerState = yield lib_1.ReferrerState.fetch(connection, referrerStateAddress, programId);
|
|
98
|
+
const shortUrlState = yield lib_1.ShortUrl.fetch(connection, referrerState.shortUrl, programId);
|
|
99
|
+
const shortUrlAddress = referrerState ? referrerState.shortUrl : null;
|
|
100
|
+
const shortUrl = shortUrlState ? shortUrlState.shortUrl : null;
|
|
101
|
+
return [shortUrlAddress, shortUrl];
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
exports.getReferrerShortUrl = getReferrerShortUrl;
|
|
105
|
+
/**
|
|
106
|
+
* Get referrer for a given Short URL
|
|
107
|
+
* @param connection
|
|
108
|
+
* @param shortUrl
|
|
109
|
+
* @param programId
|
|
110
|
+
*/
|
|
111
|
+
function getReferrerForShortUrl(connection, shortUrl, programId = lib_1.PROGRAM_ID) {
|
|
112
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
113
|
+
const [shortUrlAddress] = (0, utils_1.shortUrlPda)(shortUrl, programId);
|
|
114
|
+
const shortUrlState = yield lib_1.ShortUrl.fetch(connection, shortUrlAddress, programId);
|
|
115
|
+
return shortUrlState.referrer;
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
exports.getReferrerForShortUrl = getReferrerForShortUrl;
|
|
119
|
+
/**
|
|
120
|
+
* Get referrer all UserMetadata user accounts linked to a given referrer
|
|
121
|
+
* @param connection
|
|
122
|
+
* @param referrer
|
|
123
|
+
* @param programId
|
|
124
|
+
*/
|
|
125
|
+
function getUserMetadatasByReferrer(connection, referrer, programId = lib_1.PROGRAM_ID) {
|
|
126
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
127
|
+
const userMetadatas = yield connection.getProgramAccounts(programId, {
|
|
128
|
+
filters: [
|
|
129
|
+
{
|
|
130
|
+
dataSize: lib_1.UserMetadata.layout.span + 8,
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
memcmp: {
|
|
134
|
+
offset: 8,
|
|
135
|
+
bytes: referrer.toBase58(),
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
],
|
|
139
|
+
});
|
|
140
|
+
return userMetadatas.map((userMetadata) => {
|
|
141
|
+
if (userMetadata.account === null) {
|
|
142
|
+
throw new Error('Invalid account');
|
|
143
|
+
}
|
|
144
|
+
if (!userMetadata.account.owner.equals(programId)) {
|
|
145
|
+
throw new Error("account doesn't belong to this program");
|
|
146
|
+
}
|
|
147
|
+
const userMetadataAccount = lib_1.UserMetadata.decode(userMetadata.account.data);
|
|
148
|
+
if (!userMetadataAccount) {
|
|
149
|
+
throw Error('Could not parse obligation.');
|
|
150
|
+
}
|
|
151
|
+
return userMetadataAccount;
|
|
152
|
+
});
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
exports.getUserMetadatasByReferrer = getUserMetadatasByReferrer;
|
|
156
|
+
/**
|
|
157
|
+
* Get referrer all UserMetadata user accounts
|
|
158
|
+
* @param connection
|
|
159
|
+
* @param referrer
|
|
160
|
+
* @param programId
|
|
161
|
+
*/
|
|
162
|
+
function getAllUserMetadatas(connection, programId = lib_1.PROGRAM_ID) {
|
|
163
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
164
|
+
const userMetadatas = yield connection.getProgramAccounts(programId, {
|
|
165
|
+
filters: [
|
|
166
|
+
{
|
|
167
|
+
dataSize: lib_1.UserMetadata.layout.span + 8,
|
|
168
|
+
},
|
|
169
|
+
],
|
|
170
|
+
});
|
|
171
|
+
return userMetadatas.map((userMetadata) => {
|
|
172
|
+
if (userMetadata.account === null) {
|
|
173
|
+
throw new Error('Invalid account');
|
|
174
|
+
}
|
|
175
|
+
if (!userMetadata.account.owner.equals(programId)) {
|
|
176
|
+
throw new Error("account doesn't belong to this program");
|
|
177
|
+
}
|
|
178
|
+
const userMetadataAccount = lib_1.UserMetadata.decode(userMetadata.account.data);
|
|
179
|
+
if (!userMetadataAccount) {
|
|
180
|
+
throw Error('Could not parse obligation.');
|
|
181
|
+
}
|
|
182
|
+
return userMetadataAccount;
|
|
183
|
+
});
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
exports.getAllUserMetadatas = getAllUserMetadatas;
|
|
187
|
+
/**
|
|
188
|
+
* Get referrer all UserMetadata user accounts linked to a given referrer
|
|
189
|
+
* @param connection
|
|
190
|
+
* @param referrer
|
|
191
|
+
* @param programId
|
|
192
|
+
*/
|
|
193
|
+
function getTotalUsersReferred(connection, referrer, programId = lib_1.PROGRAM_ID) {
|
|
194
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
195
|
+
const userMetadatas = yield getUserMetadatasByReferrer(connection, referrer, programId);
|
|
196
|
+
return userMetadatas.length;
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
exports.getTotalUsersReferred = getTotalUsersReferred;
|
|
200
|
+
/**
|
|
201
|
+
* Get ReferralRank array of all referrers ordered by how much they've earned in USD
|
|
202
|
+
* @param connection
|
|
203
|
+
* @param kaminoMarket
|
|
204
|
+
*/
|
|
205
|
+
function getReferralsRanking(connection, kaminoMarket) {
|
|
206
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
207
|
+
const referrersUsersReferred = new utils_1.PublicKeyMap();
|
|
208
|
+
// counting users referred for each referrer
|
|
209
|
+
const userMetadatas = yield getAllUserMetadatas(connection, kaminoMarket.programId);
|
|
210
|
+
for (const userMetadata of userMetadatas) {
|
|
211
|
+
const referrer = userMetadata.referrer;
|
|
212
|
+
const usersReferred = referrersUsersReferred.get(referrer);
|
|
213
|
+
if (usersReferred) {
|
|
214
|
+
referrersUsersReferred.set(referrer, usersReferred + 1);
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
referrersUsersReferred.set(referrer, 1);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
const referralsRankArray = [];
|
|
221
|
+
for (const referrer of referrersUsersReferred.keys()) {
|
|
222
|
+
const referrerTokenStates = yield kaminoMarket.getAllReferrerFeesCumulative(referrer);
|
|
223
|
+
let totalEarningsUsd = new decimal_js_1.default(0);
|
|
224
|
+
// calculating earnings for each referrer
|
|
225
|
+
for (const reserve of kaminoMarket.reserves.values()) {
|
|
226
|
+
totalEarningsUsd = totalEarningsUsd.add(referrerTokenStates.get(reserve.getLiquidityMint()).mul(reserve.getReserveMarketPrice()));
|
|
227
|
+
}
|
|
228
|
+
referralsRankArray.push({
|
|
229
|
+
referrer: new web3_js_1.PublicKey(referrer),
|
|
230
|
+
totalUsersReferred: referrersUsersReferred.get(referrer),
|
|
231
|
+
totalEarningsUsd: totalEarningsUsd,
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
referralsRankArray.sort((a, b) => {
|
|
235
|
+
return b.totalEarningsUsd.comparedTo(a.totalEarningsUsd);
|
|
236
|
+
});
|
|
237
|
+
return referralsRankArray;
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
exports.getReferralsRanking = getReferralsRanking;
|
|
241
|
+
/**
|
|
242
|
+
* Get ReferralRank array of all referrers ordered by how much they've earned in USD
|
|
243
|
+
* @param connection
|
|
244
|
+
* @param user
|
|
245
|
+
* @param programId
|
|
246
|
+
*/
|
|
247
|
+
function getUserReferralRanking(connection, user, kaminoMarket) {
|
|
248
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
249
|
+
const referralsRanking = yield getReferralsRanking(connection, kaminoMarket);
|
|
250
|
+
for (let index = 0; index < referralsRanking.length; index++) {
|
|
251
|
+
if (user.equals(referralsRanking[index].referrer)) {
|
|
252
|
+
return index + 1;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
exports.getUserReferralRanking = getUserReferralRanking;
|
|
258
|
+
//# sourceMappingURL=operations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations.js","sourceRoot":"","sources":["../../src/referrals/operations.ts"],"names":[],"mappings":"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","sourcesContent":["import { Connection, Keypair, PublicKey } from '@solana/web3.js';\nimport { KaminoMarket } from '../classes';\nimport {\n PublicKeyMap,\n buildAndSendTxnWithLogs,\n buildVersionedTransaction,\n referrerStatePda,\n shortUrlPda,\n} from '../utils';\nimport {\n getDeleteReferrerStateAndShortUrlIxns,\n getInitAllReferrerTokenStateIxns,\n getInitReferrerStateAndShortUrlIxns,\n} from './instructions';\nimport { PROGRAM_ID, UserMetadata, ReferrerState, ShortUrl } from '../lib';\nimport Decimal from 'decimal.js';\n\n/**\n * Initialize all referrer token states for a given referrer\n * @param referrer\n * @param kaminoMarket\n */\nexport const initAllReferrerTokenStates = async ({\n referrer,\n kaminoMarket,\n}: {\n referrer: Keypair;\n kaminoMarket: KaminoMarket;\n}) => {\n const ixns = await getInitAllReferrerTokenStateIxns({ referrer: referrer.publicKey, kaminoMarket });\n\n const tx = await buildVersionedTransaction(kaminoMarket.getConnection(), referrer.publicKey, ixns);\n\n console.log('Init Referral Token States');\n\n return await buildAndSendTxnWithLogs(kaminoMarket.getConnection(), tx, referrer, [referrer]);\n};\n\n/**\n * Initialize referrer state and short url\n * @param connection\n * @param referrer\n * @param shortUrl\n */\nexport const createReferrerStateAndShortUrl = async ({\n connection,\n referrer,\n shortUrl,\n programId = PROGRAM_ID,\n}: {\n connection: Connection;\n referrer: Keypair;\n shortUrl: string;\n programId?: PublicKey;\n}) => {\n const ixn = getInitReferrerStateAndShortUrlIxns({ referrer: referrer.publicKey, shortUrl, programId });\n\n const tx = await buildVersionedTransaction(connection, referrer.publicKey, [ixn]);\n\n console.log('Init ReferrerState for referrer ' + referrer.publicKey.toBase58() + ' and shortUrl ' + shortUrl);\n\n return await buildAndSendTxnWithLogs(connection, tx, referrer, [referrer]);\n};\n\n/**\n * Initialize referrer state and short url\n * @param connection\n * @param referrer\n * @param newShortUrl\n */\nexport const updateReferrerStateAndShortUrl = async ({\n connection,\n referrer,\n newShortUrl,\n programId = PROGRAM_ID,\n}: {\n connection: Connection;\n referrer: Keypair;\n newShortUrl: string;\n programId?: PublicKey;\n}) => {\n const deleteIxn = await getDeleteReferrerStateAndShortUrlIxns({\n referrer: referrer.publicKey,\n connection,\n programId,\n });\n\n const initIxn = getInitReferrerStateAndShortUrlIxns({\n referrer: referrer.publicKey,\n shortUrl: newShortUrl,\n programId,\n });\n\n const tx = await buildVersionedTransaction(connection, referrer.publicKey, [deleteIxn, initIxn]);\n\n console.log('Update ReferrerState for referrer ' + referrer.publicKey.toBase58() + ' and shortUrl ' + newShortUrl);\n\n return await buildAndSendTxnWithLogs(connection, tx, referrer, [referrer]);\n};\n\n/**\n * Check if short URL available - also checks if short URL is valid (ascii-alphanumeric plus '_' '-', max 32 chars)\n * @param connection\n * @param shortUrl\n * @param programId\n */\nexport async function isShortUrlAvailable(\n connection: Connection,\n shortUrl: string,\n programId: PublicKey = PROGRAM_ID\n): Promise<boolean> {\n if (shortUrl.length > 32) {\n return false;\n }\n\n if (!/^[a-zA-Z0-9-_]+$/.test(shortUrl)) {\n return false;\n }\n\n const [shortUrlAddress] = shortUrlPda(shortUrl, programId);\n const info = await connection.getAccountInfo(shortUrlAddress);\n return info === null;\n}\n\n/**\n * Get referrer short URL address and shortUrl\n * @param connection\n * @param referrer\n * @param programId\n */\nexport async function getReferrerShortUrl(\n connection: Connection,\n referrer: PublicKey,\n programId: PublicKey = PROGRAM_ID\n): Promise<[PublicKey | null, string | null]> {\n const [referrerStateAddress] = referrerStatePda(referrer, programId);\n const referrerState = await ReferrerState.fetch(connection, referrerStateAddress, programId);\n const shortUrlState = await ShortUrl.fetch(connection, referrerState!.shortUrl, programId);\n const shortUrlAddress = referrerState ? referrerState.shortUrl : null;\n const shortUrl = shortUrlState ? shortUrlState.shortUrl : null;\n return [shortUrlAddress, shortUrl];\n}\n\n/**\n * Get referrer for a given Short URL\n * @param connection\n * @param shortUrl\n * @param programId\n */\nexport async function getReferrerForShortUrl(\n connection: Connection,\n shortUrl: string,\n programId: PublicKey = PROGRAM_ID\n): Promise<PublicKey> {\n const [shortUrlAddress] = shortUrlPda(shortUrl, programId);\n const shortUrlState = await ShortUrl.fetch(connection, shortUrlAddress, programId);\n return shortUrlState!.referrer;\n}\n\n/**\n * Get referrer all UserMetadata user accounts linked to a given referrer\n * @param connection\n * @param referrer\n * @param programId\n */\nexport async function getUserMetadatasByReferrer(\n connection: Connection,\n referrer: PublicKey,\n programId: PublicKey = PROGRAM_ID\n): Promise<UserMetadata[]> {\n const userMetadatas = await connection.getProgramAccounts(programId, {\n filters: [\n {\n dataSize: UserMetadata.layout.span + 8,\n },\n {\n memcmp: {\n offset: 8,\n bytes: referrer.toBase58(),\n },\n },\n ],\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 obligation.');\n }\n\n return userMetadataAccount;\n });\n}\n\n/**\n * Get referrer all UserMetadata user accounts\n * @param connection\n * @param referrer\n * @param programId\n */\nexport async function getAllUserMetadatas(\n connection: Connection,\n programId: PublicKey = PROGRAM_ID\n): Promise<UserMetadata[]> {\n const userMetadatas = await connection.getProgramAccounts(programId, {\n filters: [\n {\n dataSize: UserMetadata.layout.span + 8,\n },\n ],\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 obligation.');\n }\n\n return userMetadataAccount;\n });\n}\n\n/**\n * Get referrer all UserMetadata user accounts linked to a given referrer\n * @param connection\n * @param referrer\n * @param programId\n */\nexport async function getTotalUsersReferred(\n connection: Connection,\n referrer: PublicKey,\n programId: PublicKey = PROGRAM_ID\n): Promise<number> {\n const userMetadatas = await getUserMetadatasByReferrer(connection, referrer, programId);\n return userMetadatas.length;\n}\n\nexport type ReferralRank = {\n referrer: PublicKey;\n totalUsersReferred: number;\n totalEarningsUsd: Decimal;\n};\n\n/**\n * Get ReferralRank array of all referrers ordered by how much they've earned in USD\n * @param connection\n * @param kaminoMarket\n */\nexport async function getReferralsRanking(connection: Connection, kaminoMarket: KaminoMarket): Promise<ReferralRank[]> {\n const referrersUsersReferred = new PublicKeyMap<PublicKey, number>();\n\n // counting users referred for each referrer\n const userMetadatas = await getAllUserMetadatas(connection, kaminoMarket.programId);\n for (const userMetadata of userMetadatas) {\n const referrer = userMetadata.referrer;\n const usersReferred = referrersUsersReferred.get(referrer);\n if (usersReferred) {\n referrersUsersReferred.set(referrer, usersReferred + 1);\n } else {\n referrersUsersReferred.set(referrer, 1);\n }\n }\n\n const referralsRankArray: ReferralRank[] = [];\n\n for (const referrer of referrersUsersReferred.keys()) {\n const referrerTokenStates = await kaminoMarket.getAllReferrerFeesCumulative(referrer);\n let totalEarningsUsd = new Decimal(0);\n // calculating earnings for each referrer\n for (const reserve of kaminoMarket.reserves.values()) {\n totalEarningsUsd = totalEarningsUsd.add(\n referrerTokenStates.get(reserve.getLiquidityMint())!.mul(reserve.getReserveMarketPrice())\n );\n }\n\n referralsRankArray.push({\n referrer: new PublicKey(referrer),\n totalUsersReferred: referrersUsersReferred.get(referrer)!,\n totalEarningsUsd: totalEarningsUsd,\n });\n }\n\n referralsRankArray.sort((a, b) => {\n return b.totalEarningsUsd.comparedTo(a.totalEarningsUsd);\n });\n\n return referralsRankArray;\n}\n\n/**\n * Get ReferralRank array of all referrers ordered by how much they've earned in USD\n * @param connection\n * @param user\n * @param programId\n */\nexport async function getUserReferralRanking(connection: Connection, user: PublicKey, kaminoMarket: KaminoMarket) {\n const referralsRanking = await getReferralsRanking(connection, kaminoMarket);\n\n for (let index = 0; index < referralsRanking.length; index++) {\n if (user.equals(referralsRanking[index].referrer)) {\n return index + 1;\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { PublicKey } from '@solana/web3.js';
|
|
2
|
+
import { KaminoMarket, KaminoObligation } from '../classes';
|
|
3
|
+
export type ObligationType = VanillaObligation | MultiplyObligation | LendingObligation;
|
|
4
|
+
export declare enum ObligationTypeTag {
|
|
5
|
+
Vanilla = 0,
|
|
6
|
+
Multiply = 1,
|
|
7
|
+
Lending = 2,
|
|
8
|
+
Leverage = 3
|
|
9
|
+
}
|
|
10
|
+
export type InitObligationArgsModel = {
|
|
11
|
+
tag: number;
|
|
12
|
+
id: number;
|
|
13
|
+
seed1: PublicKey;
|
|
14
|
+
seed2: PublicKey;
|
|
15
|
+
};
|
|
16
|
+
export declare class VanillaObligation {
|
|
17
|
+
readonly programId: PublicKey;
|
|
18
|
+
static tag: number;
|
|
19
|
+
constructor(programId: PublicKey);
|
|
20
|
+
toArgs(): InitObligationArgsModel;
|
|
21
|
+
toPda(market: PublicKey, user: PublicKey): PublicKey;
|
|
22
|
+
}
|
|
23
|
+
export declare class MultiplyObligation {
|
|
24
|
+
readonly collToken: PublicKey;
|
|
25
|
+
readonly debtToken: PublicKey;
|
|
26
|
+
readonly programId: PublicKey;
|
|
27
|
+
static tag: number;
|
|
28
|
+
constructor(collToken: PublicKey, debtToken: PublicKey, programId: PublicKey);
|
|
29
|
+
toArgs(): InitObligationArgsModel;
|
|
30
|
+
toPda(market: PublicKey, user: PublicKey): PublicKey;
|
|
31
|
+
}
|
|
32
|
+
export declare class LeverageObligation {
|
|
33
|
+
readonly collToken: PublicKey;
|
|
34
|
+
readonly debtToken: PublicKey;
|
|
35
|
+
readonly programId: PublicKey;
|
|
36
|
+
static tag: number;
|
|
37
|
+
constructor(collToken: PublicKey, debtToken: PublicKey, programId: PublicKey);
|
|
38
|
+
toArgs(): InitObligationArgsModel;
|
|
39
|
+
toPda(market: PublicKey, user: PublicKey): PublicKey;
|
|
40
|
+
}
|
|
41
|
+
export declare class LendingObligation {
|
|
42
|
+
readonly token: PublicKey;
|
|
43
|
+
readonly programId: PublicKey;
|
|
44
|
+
static tag: number;
|
|
45
|
+
constructor(token: PublicKey, programId: PublicKey);
|
|
46
|
+
toArgs(): InitObligationArgsModel;
|
|
47
|
+
toPda(market: PublicKey, user: PublicKey): PublicKey;
|
|
48
|
+
}
|
|
49
|
+
export declare function getObligationTypeFromObligation(kaminoMarket: KaminoMarket, obligation: KaminoObligation): ObligationType;
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getObligationTypeFromObligation = exports.LendingObligation = exports.LeverageObligation = exports.MultiplyObligation = exports.VanillaObligation = exports.ObligationTypeTag = void 0;
|
|
4
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
5
|
+
var ObligationTypeTag;
|
|
6
|
+
(function (ObligationTypeTag) {
|
|
7
|
+
ObligationTypeTag[ObligationTypeTag["Vanilla"] = 0] = "Vanilla";
|
|
8
|
+
ObligationTypeTag[ObligationTypeTag["Multiply"] = 1] = "Multiply";
|
|
9
|
+
ObligationTypeTag[ObligationTypeTag["Lending"] = 2] = "Lending";
|
|
10
|
+
ObligationTypeTag[ObligationTypeTag["Leverage"] = 3] = "Leverage";
|
|
11
|
+
})(ObligationTypeTag = exports.ObligationTypeTag || (exports.ObligationTypeTag = {}));
|
|
12
|
+
class VanillaObligation {
|
|
13
|
+
constructor(programId) {
|
|
14
|
+
this.programId = programId;
|
|
15
|
+
}
|
|
16
|
+
toArgs() {
|
|
17
|
+
const initObligationArgs = {
|
|
18
|
+
tag: VanillaObligation.tag,
|
|
19
|
+
id: 0,
|
|
20
|
+
seed1: web3_js_1.PublicKey.default,
|
|
21
|
+
seed2: web3_js_1.PublicKey.default,
|
|
22
|
+
};
|
|
23
|
+
return initObligationArgs;
|
|
24
|
+
}
|
|
25
|
+
toPda(market, user) {
|
|
26
|
+
return getObligationPdaWithArgs(market, user, this.toArgs(), this.programId);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.VanillaObligation = VanillaObligation;
|
|
30
|
+
VanillaObligation.tag = 0;
|
|
31
|
+
class MultiplyObligation {
|
|
32
|
+
constructor(collToken, debtToken, programId) {
|
|
33
|
+
this.collToken = collToken;
|
|
34
|
+
this.debtToken = debtToken;
|
|
35
|
+
this.programId = programId;
|
|
36
|
+
}
|
|
37
|
+
toArgs() {
|
|
38
|
+
const initObligationArgs = {
|
|
39
|
+
tag: MultiplyObligation.tag,
|
|
40
|
+
id: 0,
|
|
41
|
+
seed1: this.collToken,
|
|
42
|
+
seed2: this.debtToken,
|
|
43
|
+
};
|
|
44
|
+
return initObligationArgs;
|
|
45
|
+
}
|
|
46
|
+
toPda(market, user) {
|
|
47
|
+
return getObligationPdaWithArgs(market, user, this.toArgs(), this.programId);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
exports.MultiplyObligation = MultiplyObligation;
|
|
51
|
+
MultiplyObligation.tag = 1;
|
|
52
|
+
class LeverageObligation {
|
|
53
|
+
constructor(collToken, debtToken, programId) {
|
|
54
|
+
this.collToken = collToken;
|
|
55
|
+
this.debtToken = debtToken;
|
|
56
|
+
this.programId = programId;
|
|
57
|
+
}
|
|
58
|
+
toArgs() {
|
|
59
|
+
const initObligationArgs = {
|
|
60
|
+
tag: LeverageObligation.tag,
|
|
61
|
+
id: 0,
|
|
62
|
+
seed1: this.collToken,
|
|
63
|
+
seed2: this.debtToken,
|
|
64
|
+
};
|
|
65
|
+
return initObligationArgs;
|
|
66
|
+
}
|
|
67
|
+
toPda(market, user) {
|
|
68
|
+
return getObligationPdaWithArgs(market, user, this.toArgs(), this.programId);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
exports.LeverageObligation = LeverageObligation;
|
|
72
|
+
LeverageObligation.tag = 3;
|
|
73
|
+
class LendingObligation {
|
|
74
|
+
constructor(token, programId) {
|
|
75
|
+
this.token = token;
|
|
76
|
+
this.programId = programId;
|
|
77
|
+
}
|
|
78
|
+
toArgs() {
|
|
79
|
+
const initObligationArgs = {
|
|
80
|
+
tag: LendingObligation.tag,
|
|
81
|
+
id: 0,
|
|
82
|
+
seed1: this.token,
|
|
83
|
+
seed2: this.token,
|
|
84
|
+
};
|
|
85
|
+
return initObligationArgs;
|
|
86
|
+
}
|
|
87
|
+
toPda(market, user) {
|
|
88
|
+
return getObligationPdaWithArgs(market, user, this.toArgs(), this.programId);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
exports.LendingObligation = LendingObligation;
|
|
92
|
+
LendingObligation.tag = 2;
|
|
93
|
+
function getObligationPdaWithArgs(market, user, args, programId) {
|
|
94
|
+
const seed = [
|
|
95
|
+
Buffer.from([args.tag]),
|
|
96
|
+
Buffer.from([args.id]),
|
|
97
|
+
user.toBuffer(),
|
|
98
|
+
market.toBuffer(),
|
|
99
|
+
args.seed1.toBuffer(),
|
|
100
|
+
args.seed2.toBuffer(),
|
|
101
|
+
];
|
|
102
|
+
const [obligationAddress, _obligationAddressBump] = web3_js_1.PublicKey.findProgramAddressSync(seed, programId);
|
|
103
|
+
return obligationAddress;
|
|
104
|
+
}
|
|
105
|
+
function getObligationTypeFromObligation(kaminoMarket, obligation) {
|
|
106
|
+
switch (obligation.obligationTag) {
|
|
107
|
+
case VanillaObligation.tag: {
|
|
108
|
+
return new VanillaObligation(kaminoMarket.programId);
|
|
109
|
+
break;
|
|
110
|
+
}
|
|
111
|
+
case MultiplyObligation.tag: {
|
|
112
|
+
return new MultiplyObligation(obligation.deposits[0].mintAddress, obligation.borrows[0].mintAddress, kaminoMarket.programId);
|
|
113
|
+
break;
|
|
114
|
+
}
|
|
115
|
+
case LeverageObligation.tag: {
|
|
116
|
+
return new LeverageObligation(obligation.deposits[0].mintAddress, obligation.borrows[0].mintAddress, kaminoMarket.programId);
|
|
117
|
+
break;
|
|
118
|
+
}
|
|
119
|
+
case LendingObligation.tag: {
|
|
120
|
+
return new LendingObligation(obligation.deposits[0].mintAddress, kaminoMarket.programId);
|
|
121
|
+
break;
|
|
122
|
+
}
|
|
123
|
+
default: {
|
|
124
|
+
throw new Error('Invalid obligation type');
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
exports.getObligationTypeFromObligation = getObligationTypeFromObligation;
|
|
129
|
+
//# sourceMappingURL=ObligationType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ObligationType.js","sourceRoot":"","sources":["../../src/utils/ObligationType.ts"],"names":[],"mappings":"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","sourcesContent":["import { PublicKey } from '@solana/web3.js';\nimport { KaminoMarket, KaminoObligation } from '../classes';\n\nexport type ObligationType = VanillaObligation | MultiplyObligation | LendingObligation;\n\nexport enum ObligationTypeTag {\n Vanilla = 0,\n Multiply = 1,\n Lending = 2,\n Leverage = 3,\n}\n\nexport type InitObligationArgsModel = {\n tag: number;\n id: number;\n seed1: PublicKey;\n seed2: PublicKey;\n};\n\nexport class VanillaObligation {\n readonly programId: PublicKey;\n static tag = 0;\n\n constructor(programId: PublicKey) {\n this.programId = programId;\n }\n toArgs() {\n const initObligationArgs: InitObligationArgsModel = {\n tag: VanillaObligation.tag,\n id: 0,\n seed1: PublicKey.default,\n seed2: PublicKey.default,\n };\n\n return initObligationArgs;\n }\n toPda(market: PublicKey, user: PublicKey) {\n return getObligationPdaWithArgs(market, user, this.toArgs(), this.programId);\n }\n}\n\nexport class MultiplyObligation {\n readonly collToken: PublicKey;\n readonly debtToken: PublicKey;\n readonly programId: PublicKey;\n static tag = 1;\n\n constructor(collToken: PublicKey, debtToken: PublicKey, programId: PublicKey) {\n this.collToken = collToken;\n this.debtToken = debtToken;\n this.programId = programId;\n }\n\n toArgs() {\n const initObligationArgs: InitObligationArgsModel = {\n tag: MultiplyObligation.tag,\n id: 0,\n seed1: this.collToken,\n seed2: this.debtToken,\n };\n\n return initObligationArgs;\n }\n toPda(market: PublicKey, user: PublicKey) {\n return getObligationPdaWithArgs(market, user, this.toArgs(), this.programId);\n }\n}\n\nexport class LeverageObligation {\n readonly collToken: PublicKey;\n readonly debtToken: PublicKey;\n readonly programId: PublicKey;\n static tag = 3;\n\n constructor(collToken: PublicKey, debtToken: PublicKey, programId: PublicKey) {\n this.collToken = collToken;\n this.debtToken = debtToken;\n this.programId = programId;\n }\n\n toArgs() {\n const initObligationArgs: InitObligationArgsModel = {\n tag: LeverageObligation.tag,\n id: 0,\n seed1: this.collToken,\n seed2: this.debtToken,\n };\n\n return initObligationArgs;\n }\n toPda(market: PublicKey, user: PublicKey) {\n return getObligationPdaWithArgs(market, user, this.toArgs(), this.programId);\n }\n}\n\nexport class LendingObligation {\n readonly token: PublicKey;\n readonly programId: PublicKey;\n static tag = 2;\n\n constructor(token: PublicKey, programId: PublicKey) {\n this.token = token;\n this.programId = programId;\n }\n toArgs() {\n const initObligationArgs: InitObligationArgsModel = {\n tag: LendingObligation.tag,\n id: 0,\n seed1: this.token,\n seed2: this.token,\n };\n\n return initObligationArgs;\n }\n toPda(market: PublicKey, user: PublicKey) {\n return getObligationPdaWithArgs(market, user, this.toArgs(), this.programId);\n }\n}\n\nfunction getObligationPdaWithArgs(\n market: PublicKey,\n user: PublicKey,\n args: InitObligationArgsModel,\n programId: PublicKey\n) {\n const seed = [\n Buffer.from([args.tag]),\n Buffer.from([args.id]),\n user.toBuffer(),\n market.toBuffer(),\n args.seed1.toBuffer(),\n args.seed2.toBuffer(),\n ];\n const [obligationAddress, _obligationAddressBump] = PublicKey.findProgramAddressSync(seed, programId);\n return obligationAddress;\n}\n\nexport function getObligationTypeFromObligation(\n kaminoMarket: KaminoMarket,\n obligation: KaminoObligation\n): ObligationType {\n switch (obligation.obligationTag) {\n case VanillaObligation.tag: {\n return new VanillaObligation(kaminoMarket.programId);\n break;\n }\n case MultiplyObligation.tag: {\n return new MultiplyObligation(\n obligation.deposits[0].mintAddress,\n obligation.borrows[0].mintAddress,\n kaminoMarket.programId\n );\n break;\n }\n case LeverageObligation.tag: {\n return new LeverageObligation(\n obligation.deposits[0].mintAddress,\n obligation.borrows[0].mintAddress,\n kaminoMarket.programId\n );\n break;\n }\n case LendingObligation.tag: {\n return new LendingObligation(obligation.deposits[0].mintAddress, kaminoMarket.programId);\n break;\n }\n default: {\n throw new Error('Invalid obligation type');\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { PublicKey } from '@solana/web3.js';
|
|
2
|
+
import { ConfigType } from '../classes';
|
|
3
|
+
import { IBackOffOptions } from 'exponential-backoff';
|
|
4
|
+
export declare function getMarketsFromApi(programId?: PublicKey, source?: 'API' | 'CDN'): Promise<ConfigType>;
|
|
5
|
+
export declare const KAMINO_CDN_RETRY: Partial<IBackOffOptions>;
|
|
6
|
+
export declare const KAMINO_API_RETRY: Partial<IBackOffOptions>;
|