import { Algodv2, Transaction } from "algosdk";
import { getParams, waitForConfirmation } from "./extraUtils/submissionUtils";
export { getParams, waitForConfirmation };
import { getStorageAddress, getGlobalManagerInfo, getUserManagerData, getAccountOptInData } from "./extraUtils/stateUtils";
export { getUserManagerData, getGlobalManagerInfo, getStorageAddress };
import { managerStrings, marketStrings } from "./contractStrings";
export { managerStrings, marketStrings };
import { orderedAssets, orderedAssetsAndPlaceholders, protocolManagerAppId, assetDictionary, orderedOracleAppIds, orderedMarketAppIds, orderedSupportedMarketAppIds, SECONDS_PER_YEAR, PARAMETER_SCALE_FACTOR, SCALE_FACTOR, foreignAppIds } from "./config";
import { Base64Encoder } from "./extraUtils/encoder";
export { getAccountOptInData, orderedAssets, orderedAssetsAndPlaceholders, protocolManagerAppId, assetDictionary, orderedOracleAppIds, orderedMarketAppIds, orderedSupportedMarketAppIds, SECONDS_PER_YEAR, PARAMETER_SCALE_FACTOR, SCALE_FACTOR, Base64Encoder, foreignAppIds };
import { Asset } from "./asset";
import { Market } from "./market";
import { prepareAddCollateralTransactions } from "./addCollateral";
import { prepareBorrowTransactions } from "./borrow";
import { prepareBurnTransactions } from "./burn";
import { prepareClaimRewardsTransactions } from "./claimRewards";
import { prepareMintTransactions } from "./mint";
import { prepareMintToCollateralTransactions } from "./mintToCollateral";
import { prepareRemoveCollateralTransactions } from "./removeCollateral";
import { prepareRemoveCollateralUnderlyingTransactions } from "./removeCollateralUnderlying";
import { prepareRepayBorrowTransactions } from "./repayBorrow";
export { Asset, Market, prepareAddCollateralTransactions, prepareBorrowTransactions, prepareBurnTransactions, prepareClaimRewardsTransactions, prepareMintTransactions, prepareMintToCollateralTransactions, prepareRemoveCollateralTransactions, prepareRemoveCollateralUnderlyingTransactions, prepareRepayBorrowTransactions };
/**
 * Function to create transactions to opt address into our market contracts
 *
 * @param   {Algodv2}         algoClient
 * @param   {string}          address
 *
 * @return  {Transaction[]}   transaction group to opt into algofi markets contracts
 */
export declare function optInMarkets(algodClient: Algodv2, address: string): Promise<Transaction[]>;
/**
 * Function to get opt in transactions for algofi supported assets
 *
 * @param   {Algodv2}         algoClient
 * @param   {string}          stakeAsset
 * @param   {string}          address
 * @param   {string}          storageAddress
 * @param   {number}          storageAddressFundingAmount
 *
 * @return  {Transaction[]}   create transactions to opt in to Staker and rekey storage address to manager contract
 */
export declare function optInStaker(algodClient: Algodv2, stakeAsset: string, address: string, storageAddress: string, storageAddressFundingAmount: number): Promise<any[]>;
/**
 * Function to get opt in transactions for algofi supported assets
 *
 * @param   {Algodv2}         algoClient
 * @param   {string}          address
 *
 * @return  {Transaction[]}   get opt in transactions for non opted in algofi assets
 */
export declare function optInUnderlyingAssets(algodClient: Algodv2, address: string): Promise<Transaction[][] | Transaction[]>;
/**
 * Function to get opt in transactions for algofi supported assets
 *
 * @param   {Algodv2}         algoClient
 * @param   {string}          address
 * @param   {string}          storageAddress
 * @param   {number}          storageAddressFundingAmount
 *
 * @return  {Transaction[]}   create transactions to opt in to manager and rekey storage address to manager contract
 */
export declare function optInManager(algodClient: Algodv2, address: string, storageAddress: string, storageAddressFundingAmount: number): Promise<Transaction[]>;
export declare function getProtocolData(algodClient: Algodv2): Promise<any>;
/**
 * Funtion to get user data from the protocol as well as totals
 *
 * @param   {Algodv2}   algodClient
 * @param   {string}    address
 *
 * @return  {[dict<string,n>, dict<string,n>]} dictionaries containing the aggregated user protocol data
 */
export declare function getUserAndProtocolData(algodClient: Algodv2, address: string): Promise<any>;
