import { PublicKey } from '@solana/web3.js';
import BN from 'bn.js';
import * as types from '../types';
export interface RewardInfoFields {
    /** Reward state */
    rewardState: number;
    /** Reward open time */
    openTime: BN;
    /** Reward end time */
    endTime: BN;
    /** Reward last update time */
    lastUpdateTime: BN;
    /** Q64.64 number indicates how many tokens per second are earned per unit of liquidity. */
    emissionsPerSecondX64: BN;
    /** The total amount of reward emissioned */
    rewardTotalEmissioned: BN;
    /** The total amount of claimed reward */
    rewardClaimed: BN;
    /** Reward token mint. */
    tokenMint: PublicKey;
    /** Reward vault token account. */
    tokenVault: PublicKey;
    /** The owner that has permission to set reward param */
    authority: PublicKey;
    /**
     * Q64.64 number that tracks the total tokens earned per unit of liquidity since the reward
     * emissions were turned on.
     */
    rewardGrowthGlobalX64: BN;
}
export interface RewardInfoJSON {
    /** Reward state */
    rewardState: number;
    /** Reward open time */
    openTime: string;
    /** Reward end time */
    endTime: string;
    /** Reward last update time */
    lastUpdateTime: string;
    /** Q64.64 number indicates how many tokens per second are earned per unit of liquidity. */
    emissionsPerSecondX64: string;
    /** The total amount of reward emissioned */
    rewardTotalEmissioned: string;
    /** The total amount of claimed reward */
    rewardClaimed: string;
    /** Reward token mint. */
    tokenMint: string;
    /** Reward vault token account. */
    tokenVault: string;
    /** The owner that has permission to set reward param */
    authority: string;
    /**
     * Q64.64 number that tracks the total tokens earned per unit of liquidity since the reward
     * emissions were turned on.
     */
    rewardGrowthGlobalX64: string;
}
export declare class RewardInfo {
    /** Reward state */
    readonly rewardState: number;
    /** Reward open time */
    readonly openTime: BN;
    /** Reward end time */
    readonly endTime: BN;
    /** Reward last update time */
    readonly lastUpdateTime: BN;
    /** Q64.64 number indicates how many tokens per second are earned per unit of liquidity. */
    readonly emissionsPerSecondX64: BN;
    /** The total amount of reward emissioned */
    readonly rewardTotalEmissioned: BN;
    /** The total amount of claimed reward */
    readonly rewardClaimed: BN;
    /** Reward token mint. */
    readonly tokenMint: PublicKey;
    /** Reward vault token account. */
    readonly tokenVault: PublicKey;
    /** The owner that has permission to set reward param */
    readonly authority: PublicKey;
    /**
     * Q64.64 number that tracks the total tokens earned per unit of liquidity since the reward
     * emissions were turned on.
     */
    readonly rewardGrowthGlobalX64: BN;
    constructor(fields: RewardInfoFields);
    static layout(property?: string): any;
    static fromDecoded(obj: any): types.RewardInfo;
    static toEncodable(fields: RewardInfoFields): {
        rewardState: number;
        openTime: BN;
        endTime: BN;
        lastUpdateTime: BN;
        emissionsPerSecondX64: BN;
        rewardTotalEmissioned: BN;
        rewardClaimed: BN;
        tokenMint: PublicKey;
        tokenVault: PublicKey;
        authority: PublicKey;
        rewardGrowthGlobalX64: BN;
    };
    toJSON(): RewardInfoJSON;
    static fromJSON(obj: RewardInfoJSON): RewardInfo;
    toEncodable(): {
        rewardState: number;
        openTime: BN;
        endTime: BN;
        lastUpdateTime: BN;
        emissionsPerSecondX64: BN;
        rewardTotalEmissioned: BN;
        rewardClaimed: BN;
        tokenMint: PublicKey;
        tokenVault: PublicKey;
        authority: PublicKey;
        rewardGrowthGlobalX64: BN;
    };
}
