import { Apr, Balance, CoinType, CoinsToDecimals, CoinsToPrice, ObjectId, SuiAddress, SuiNetwork, Timestamp } from "../../types";
import { Caller } from "../../general/utils/caller";
import { ApiFarmsGrantOneTimeAdminCapBody, FarmOwnerOrOneTimeAdminCap, FarmsMultiplier, FarmsStakingPoolObject, FarmsStakingPoolRewardCoin } from "./farmsTypes";
import { AftermathApi } from "../../general/providers";
export declare class FarmsStakingPool extends Caller {
    stakingPool: FarmsStakingPoolObject;
    readonly network?: SuiNetwork | undefined;
    private readonly Provider?;
    constructor(stakingPool: FarmsStakingPoolObject, network?: SuiNetwork | undefined, Provider?: AftermathApi | undefined);
    rewardCoinTypes: () => CoinType[];
    nonZeroRewardCoinTypes: () => CoinType[];
    rewardCoin: (inputs: {
        coinType: CoinType;
    }) => FarmsStakingPoolRewardCoin;
    maxLockDurationMs: () => number;
    emitRewards: () => void;
    calcApr: (inputs: {
        coinType: CoinType;
        price: number;
        decimals: number;
        tvlUsd: number;
    }) => Apr;
    calcTotalApr: (inputs: {
        coinsToPrice: CoinsToPrice;
        coinsToDecimals: CoinsToDecimals;
        tvlUsd: number;
    }) => Apr;
    calcMultiplier: (inputs: {
        lockDurationMs: number;
    }) => FarmsMultiplier;
    getStakeTransaction(inputs: {
        stakeAmount: Balance;
        lockDurationMs: Timestamp;
        walletAddress: SuiAddress;
        isSponsoredTx?: boolean;
    }): Promise<import("@mysten/sui/transactions").Transaction>;
    getHarvestRewardsTransaction(inputs: {
        stakedPositionIds: ObjectId[];
        walletAddress: SuiAddress;
    }): Promise<import("@mysten/sui/transactions").Transaction>;
    getIncreaseRewardsEmissionsTransaction(inputs: {
        ownerCapId: ObjectId;
        rewards: {
            rewardCoinType: CoinType;
            emissionScheduleMs: Timestamp;
            emissionRate: bigint;
        }[];
        walletAddress: SuiAddress;
    }): Promise<import("@mysten/sui/transactions").Transaction>;
    getGrantOneTimeAdminCapTransaction(inputs: ApiFarmsGrantOneTimeAdminCapBody): import("@mysten/sui/transactions").Transaction;
    getInitializeRewardTransaction(inputs: {
        rewardAmount: Balance;
        emissionScheduleMs: Timestamp;
        emissionRate: bigint;
        emissionDelayTimestampMs: Timestamp;
        rewardCoinType: CoinType;
        walletAddress: SuiAddress;
        isSponsoredTx?: boolean;
    } & FarmOwnerOrOneTimeAdminCap): Promise<import("@mysten/sui/transactions").Transaction>;
    getTopUpRewardsTransaction(inputs: {
        rewards: {
            rewardAmount: Balance;
            rewardCoinType: CoinType;
        }[];
        walletAddress: SuiAddress;
        isSponsoredTx?: boolean;
    } & FarmOwnerOrOneTimeAdminCap): Promise<import("@mysten/sui/transactions").Transaction>;
    private increaseRewardsAccumulatedPerShare;
    private rewardsRemaining;
    private calcRewardsToEmit;
    private calcRewardsEmittedFromTimeTmToTn;
    private useProvider;
}
//# sourceMappingURL=farmsStakingPool.d.ts.map