import { Algodv2, Transaction } from "algosdk";
import AlgofiUser from "./../algofiUser";
import StakingClient from "./stakingClient";
import StakingConfig from "./stakingConfig";
import RewardsProgramState from "./rewardsProgramState";
export default class Staking {
    algod: Algodv2;
    stakingClient: StakingClient;
    appId: number;
    address: string;
    assetId: number;
    latestTime: number;
    rewardsEscrowAccount: string;
    boostMultiplierAppId: number;
    totalStaked: number;
    scaledTotalStaked: number;
    rewardsManagerAppId: number;
    rewardsProgramCount: number;
    rewardsProgramStates: {
        [key: number]: RewardsProgramState;
    };
    constructor(algod: Algodv2, stakingClient: StakingClient, rewardsManagerAppId: number, stakingConfig: StakingConfig);
    loadState(): Promise<void>;
    getStakeTxns(user: AlgofiUser, amount: number): Promise<Transaction[]>;
    getUnstakeTxns(user: AlgofiUser, amount: number): Promise<Transaction[]>;
    getClaimTxns(user: AlgofiUser): Promise<any>;
    getUserOptInTxns(user: AlgofiUser): Promise<Transaction[]>;
}
