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.
currentRoundfield 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 -
getUserLoanAssetsNEW -
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 -
getAppEscrowsWithStateNEW -
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
-
fetchUserDiscount -
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)