import { ethers } from "ethers";
import { CallbackType } from "../../../utils/ethers/contractHelper";
import { LandId } from "../../../config/constants";
import { TransactionResponse } from "@ethersproject/providers";
/**
 * Get staker contract address by staking token
 * @param landId Land Id
 * @param provider Provider
 * @param stakingToken Staking token contract address
 * @param callback Callback
 * @returns any
 */
export declare const farmGetStakerAddress: (landId: LandId, provider: ethers.providers.Provider, stakingToken: string, callback?: CallbackType | undefined) => Promise<string>;
/**
 * Get the amount of staking token
 * @param landId Land Id
 * @param provider Provider
 * @param stakerContractAddress Contract address of staker
 * @param callback Callback
 * @returns any
 */
export declare const farmGetStakerTotalSupply: (landId: LandId, provider: ethers.providers.Provider, stakerContractAddress: string, callback?: CallbackType | undefined) => Promise<string>;
/**
 * Get the amount of staking token for a specific address
 * @param landId Land Id
 * @param provider Provider
 * @param stakerContractAddress Contract address of staker
 * @param account Address
 * @param callback Callback
 * @returns any
 */
export declare const farmGetStakerBalanceOf: (landId: LandId, provider: ethers.providers.Provider, stakerContractAddress: string, account: string, callback?: CallbackType | undefined) => Promise<string>;
/**
 * Get the amount of token already earned
 * @param landId Land Id
 * @param provider Provider
 * @param stakerContractAddress Contract address of staker
 * @param account Address
 * @param callback Callback
 * @returns any
 */
export declare const farmGetStakerEarned: (landId: LandId, provider: ethers.providers.Provider, stakerContractAddress: string, account: string, callback?: CallbackType | undefined) => Promise<string>;
/**
 * Stake token to staker contract
 * @param landId Land Id
 * @param signer Signer
 * @param stakerContractAddress Staker contract address
 * @param amount Stake amount
 * @param callback Callback
 * @returns any
 */
export declare const farmGetStakerStakeToken: (landId: LandId, signer: ethers.Signer, stakerContractAddress: string, amount: string, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
/**
 * Withdraw token from staker contract
 * @param landId Land Id
 * @param signer Signer
 * @param stakerContractAddress Staker contract address
 * @param amount Withdraw amount
 * @param callback Callback
 * @returns any
 */
export declare const farmStakerWithdraw: (landId: LandId, signer: ethers.Signer, stakerContractAddress: string, amount: string, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
/**
 * Claim reward
 * @param landId Land Id
 * @param signer Signer
 * @param stakerContractAddress Staker contract address
 * @param callback Callback
 * @returns any
 */
export declare const farmGetStakerGetReward: (landId: LandId, signer: ethers.Signer, stakerContractAddress: string, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
/**
 * Exit staker
 * @param landId Land Id
 * @param signer Signer
 * @param stakerContractAddress Staker contract address
 * @param callback Callback
 * @returns any
 */
export declare const farmGetStakerExit: (landId: LandId, signer: ethers.Signer, stakerContractAddress: string, callback?: CallbackType | undefined) => Promise<TransactionResponse>;
