Unofficial Python SDK for the Folks Finance v2 lending protocol on the Algorand blockchain. Direct translation of most functions from the Folks-Finance/algorand-js-sdk and folks-router-js-sdk into Python.
- Function names and arguments are preserved from the JS SDK. Camel case and snake case code styles are often mixed.
currentRound
field was dropped from the returned data types.
Lending v2
-
Deposit
-
retrievePoolManagerInfo
-
retrievePoolInfo
-
retrieveUserDepositsInfo
-
retrieveUserDepositsFullInfo
-
retrieveUserDepositInfo
-
prepareAddDepositEscrowToDeposits
-
prepareOptDepositEscrowIntoAssetInDeposits
-
prepareDepositIntoPool
-
prepareWithdrawFromDepositEscrowInDeposits
-
prepareWithdrawFromPool
-
prepareUpdatePoolInterestIndexes
-
prepareOptOutDepositEscrowFromAssetInDeposits
-
prepareRemoveDepositEscrowFromDeposits
-
-
DepositStaking
-
retrieveDepositStakingInfo
-
retrieveUserDepositStakingsLocalState
-
retrieveUserDepositStakingLocalState
-
prepareAddDepositStakingEscrow
-
prepareOptDepositStakingEscrowIntoAsset
-
prepareSyncStakeInDepositStakingEscrow
-
prepareClaimRewardsOfDepositStakingEscrow
-
prepareWithdrawFromDepositStakingEscrow
-
prepareOptOutDepositStakingEscrowFromAsset
-
prepareRemoveDepositStakingEscrow
-
-
Loan
-
retrieveLoanInfo
-
retrieveLoansLocalState
-
retrieveLoanLocalState
-
retrieveUserLoansInfo
-
retrieveUserLoanInfo
-
retrieveLiquidatableLoans
-
getMaxReduceCollateralForBorrowUtilisationRatio
-
getMaxBorrowForBorrowUtilisationRatio
-
getUserLoanAssets
NEW -
prepareCreateUserLoan
-
prepareAddCollateralToLoan
-
prepareSyncCollateralInLoan
-
prepareReduceCollateralFromLoan
-
prepareSwapCollateralInLoanBegin
-
prepareSwapCollateralInLoanEnd
-
prepareRemoveCollateralFromLoan
-
prepareBorrowFromLoan
-
prepareSwitchBorrowTypeInLoan
-
prepareRepayLoanWithTxn
-
prepareRepayLoanWithCollateral
-
prepareLiquidateLoan
-
prepareRebalanceUpLoan
-
prepareRebalanceDownLoan
-
prepareRemoveUserLoan
-
prepareFlashLoanBegin
-
prepareFlashLoanEnd
-
wrapWithFlashLoan
-
-
Oracle
-
parseOracleValue
-
parseLPTokenOracleValue
-
getTinymanLPPrice
-
getPactLPPrice
-
getOraclePrices
(partial, without LP tokens) -
prepareRefreshPricesInOracleAdapter
(partial, without LPPools oracle update)
-
-
Utils
-
getEscrows
-
getAppEscrowsWithState
NEW -
depositStakingLocalState
-
depositStakingProgramsInfo
-
userDepositStakingInfo
-
loanLocalState
-
userLoanInfo
-
-
AMM
-
retrievePactLendingPoolInfo
(TODO: farming APRs)
-
gAlgo liquid governance
-
Common
-
getDispenserInfo
-
-
Governance v2
-
getDistributorLogicSig
-
getDistributorInfo
-
getUserLiquidGovernanceInfo
-
getEscrowGovernanceStatus
-
prepareAddLiquidGovernanceEscrowTransactions
-
prepareMintTransactions
-
prepareUnmintPremintTransaction
-
prepareUnmintTransactions
-
prepareClaimPremintTransaction
-
prepareRegisterEscrowOnlineTransactions
-
prepareRegisterEscrowOfflineTransaction
-
prepareCommitOrVoteTransaction
-
prepareRemoveLiquidGovernanceEscrowTransactions
-
prepareBurnTransactions
-
prepareCloseOutEscrowTransactions
-
xALGO liquid staking
-
getConsensusState
-
prepareDummyTransaction
-
prepareImmediateStakeTransactions
-
prepareImmediateStakeAndDepositTransactions
-
prepareDelayedStakeTransactions
-
prepareClaimDelayedStakeTransactions
-
prepareUnstakeTransactions
-
prepareClaimConsensusFeesTransactions
-
prepareSetProposerAdminTransaction
-
prepareRegisterProposerOnlineTransactions
-
prepareRegisterProposerOfflineTransaction
Folks Router
-
fetchSwapQuote
-
prepareSwapTransactions
-
getReferrerLogicSig
-
prepareReferrerOptIntoAsset
-
prepareClaimReferrerFees
-
prepareEnableAssetToBeSwapped
pip install git+https://github.com/algolog/ff-py-sdk
from ffsdk.client import FFMainnetClient
from ffsdk.lend.deposit import retrievePoolManagerInfo, retrievePoolInfo
from ffsdk.lend.deposit_staking import retrieveDepositStakingInfo
from ffsdk.lend.utils import depositStakingProgramsInfo
from ffsdk.lend.oracle import getOraclePrices
from ffsdk.mathlib import ONE_14_DP
client = FFMainnetClient().lending
pmi = retrievePoolManagerInfo(client.indexer, client.pool_manager_app_id)
oracle_prices = getOraclePrices(client.indexer, client.oracle)
# deposit pool info
pool_info = retrievePoolInfo(client.indexer, client.pools["ALGO"])
deposit_yield = pool_info.interest.depositInterestYield / ONE_14_DP
print(f'ALGO deposit APY: {deposit_yield:.2f}%')
# deposit staking programs info
dsi = retrieveDepositStakingInfo(client.indexer, client.deposit_staking_app_id)
dpi = depositStakingProgramsInfo(dsi, pmi, client.pools, oracle_prices)