import { PublicKey } from "@solana/web3.js";
import BN from "bn.js";
import * as types from "../types";
export interface RewardInfoFields {
    /** Reward token mint. */
    mint: PublicKey;
    /** Reward vault token account. */
    vault: PublicKey;
    /** Authority account that allows to fund rewards */
    funder: PublicKey;
    /** TODO check whether we need to store it in pool */
    rewardDuration: BN;
    /** TODO check whether we need to store it in pool */
    rewardDurationEnd: BN;
    /** TODO check whether we need to store it in pool */
    rewardRate: BN;
    /** The last time reward states were updated. */
    lastUpdateTime: BN;
    /** Accumulated seconds where when farm distribute rewards, but the bin is empty. The reward will be accumulated for next reward time window. */
    cumulativeSecondsWithEmptyLiquidityReward: BN;
}
export interface RewardInfoJSON {
    /** Reward token mint. */
    mint: string;
    /** Reward vault token account. */
    vault: string;
    /** Authority account that allows to fund rewards */
    funder: string;
    /** TODO check whether we need to store it in pool */
    rewardDuration: string;
    /** TODO check whether we need to store it in pool */
    rewardDurationEnd: string;
    /** TODO check whether we need to store it in pool */
    rewardRate: string;
    /** The last time reward states were updated. */
    lastUpdateTime: string;
    /** Accumulated seconds where when farm distribute rewards, but the bin is empty. The reward will be accumulated for next reward time window. */
    cumulativeSecondsWithEmptyLiquidityReward: string;
}
/** Stores the state relevant for tracking liquidity mining rewards */
export declare class RewardInfo {
    /** Reward token mint. */
    readonly mint: PublicKey;
    /** Reward vault token account. */
    readonly vault: PublicKey;
    /** Authority account that allows to fund rewards */
    readonly funder: PublicKey;
    /** TODO check whether we need to store it in pool */
    readonly rewardDuration: BN;
    /** TODO check whether we need to store it in pool */
    readonly rewardDurationEnd: BN;
    /** TODO check whether we need to store it in pool */
    readonly rewardRate: BN;
    /** The last time reward states were updated. */
    readonly lastUpdateTime: BN;
    /** Accumulated seconds where when farm distribute rewards, but the bin is empty. The reward will be accumulated for next reward time window. */
    readonly cumulativeSecondsWithEmptyLiquidityReward: BN;
    constructor(fields: RewardInfoFields);
    static layout(property?: string): any;
    static fromDecoded(obj: any): types.RewardInfo;
    static toEncodable(fields: RewardInfoFields): {
        mint: PublicKey;
        vault: PublicKey;
        funder: PublicKey;
        rewardDuration: BN;
        rewardDurationEnd: BN;
        rewardRate: BN;
        lastUpdateTime: BN;
        cumulativeSecondsWithEmptyLiquidityReward: BN;
    };
    toJSON(): RewardInfoJSON;
    static fromJSON(obj: RewardInfoJSON): RewardInfo;
    toEncodable(): {
        mint: PublicKey;
        vault: PublicKey;
        funder: PublicKey;
        rewardDuration: BN;
        rewardDurationEnd: BN;
        rewardRate: BN;
        lastUpdateTime: BN;
        cumulativeSecondsWithEmptyLiquidityReward: BN;
    };
}
//# sourceMappingURL=RewardInfo.d.ts.map