import { PublicKey } from "@solana/web3.js";
import BN from "bn.js";
import * as types from "../types";
export interface RewardInfoFields {
    token: types.TokenInfoFields;
    rewardsVault: PublicKey;
    rewardsAvailable: BN;
    rewardScheduleCurve: types.RewardScheduleCurveFields;
    minClaimDurationSeconds: BN;
    lastIssuanceTs: BN;
    rewardsIssuedUnclaimed: BN;
    rewardsIssuedCumulative: BN;
    rewardPerShareScaled: BN;
    placeholder0: BN;
    rewardType: number;
    rewardsPerSecondDecimals: number;
    padding0: Array<number>;
    padding1: Array<BN>;
}
export interface RewardInfoJSON {
    token: types.TokenInfoJSON;
    rewardsVault: string;
    rewardsAvailable: string;
    rewardScheduleCurve: types.RewardScheduleCurveJSON;
    minClaimDurationSeconds: string;
    lastIssuanceTs: string;
    rewardsIssuedUnclaimed: string;
    rewardsIssuedCumulative: string;
    rewardPerShareScaled: string;
    placeholder0: string;
    rewardType: number;
    rewardsPerSecondDecimals: number;
    padding0: Array<number>;
    padding1: Array<string>;
}
export declare class RewardInfo {
    readonly token: types.TokenInfo;
    readonly rewardsVault: PublicKey;
    readonly rewardsAvailable: BN;
    readonly rewardScheduleCurve: types.RewardScheduleCurve;
    readonly minClaimDurationSeconds: BN;
    readonly lastIssuanceTs: BN;
    readonly rewardsIssuedUnclaimed: BN;
    readonly rewardsIssuedCumulative: BN;
    readonly rewardPerShareScaled: BN;
    readonly placeholder0: BN;
    readonly rewardType: number;
    readonly rewardsPerSecondDecimals: number;
    readonly padding0: Array<number>;
    readonly padding1: Array<BN>;
    constructor(fields: RewardInfoFields);
    static layout(property?: string): any;
    static fromDecoded(obj: any): types.RewardInfo;
    static toEncodable(fields: RewardInfoFields): {
        token: {
            mint: PublicKey;
            decimals: BN;
            padding: BN[];
        };
        rewardsVault: PublicKey;
        rewardsAvailable: BN;
        rewardScheduleCurve: {
            points: {
                tsStart: BN;
                rewardPerTimeUnit: BN;
            }[];
        };
        minClaimDurationSeconds: BN;
        lastIssuanceTs: BN;
        rewardsIssuedUnclaimed: BN;
        rewardsIssuedCumulative: BN;
        rewardPerShareScaled: BN;
        placeholder0: BN;
        rewardType: number;
        rewardsPerSecondDecimals: number;
        padding0: number[];
        padding1: BN[];
    };
    toJSON(): RewardInfoJSON;
    static fromJSON(obj: RewardInfoJSON): RewardInfo;
    toEncodable(): {
        token: {
            mint: PublicKey;
            decimals: BN;
            padding: BN[];
        };
        rewardsVault: PublicKey;
        rewardsAvailable: BN;
        rewardScheduleCurve: {
            points: {
                tsStart: BN;
                rewardPerTimeUnit: BN;
            }[];
        };
        minClaimDurationSeconds: BN;
        lastIssuanceTs: BN;
        rewardsIssuedUnclaimed: BN;
        rewardsIssuedCumulative: BN;
        rewardPerShareScaled: BN;
        placeholder0: BN;
        rewardType: number;
        rewardsPerSecondDecimals: number;
        padding0: number[];
        padding1: BN[];
    };
}
