import BN from "bn.js";
import * as types from "../types";
export interface RewardScheduleCurveFields {
    /**
     * This is a stepwise function, meaning that each point represents
     * how many rewards are issued per time unit since the beginning
     * of that point until the beginning of the next point.
     * This is not a linear curve, there is no interpolation going on.
     * A curve can be [[t0, 100], [t1, 50], [t2, 0]]
     * meaning that from t0 to t1, 100 rewards are issued per time unit,
     * from t1 to t2, 50 rewards are issued per time unit, and after t2 it stops
     * Another curve, can be [[t0, 100], [u64::max, 0]]
     * meaning that from t0 to u64::max, 100 rewards are issued per time unit
     */
    points: Array<types.RewardPerTimeUnitPointFields>;
}
export interface RewardScheduleCurveJSON {
    /**
     * This is a stepwise function, meaning that each point represents
     * how many rewards are issued per time unit since the beginning
     * of that point until the beginning of the next point.
     * This is not a linear curve, there is no interpolation going on.
     * A curve can be [[t0, 100], [t1, 50], [t2, 0]]
     * meaning that from t0 to t1, 100 rewards are issued per time unit,
     * from t1 to t2, 50 rewards are issued per time unit, and after t2 it stops
     * Another curve, can be [[t0, 100], [u64::max, 0]]
     * meaning that from t0 to u64::max, 100 rewards are issued per time unit
     */
    points: Array<types.RewardPerTimeUnitPointJSON>;
}
export declare class RewardScheduleCurve {
    /**
     * This is a stepwise function, meaning that each point represents
     * how many rewards are issued per time unit since the beginning
     * of that point until the beginning of the next point.
     * This is not a linear curve, there is no interpolation going on.
     * A curve can be [[t0, 100], [t1, 50], [t2, 0]]
     * meaning that from t0 to t1, 100 rewards are issued per time unit,
     * from t1 to t2, 50 rewards are issued per time unit, and after t2 it stops
     * Another curve, can be [[t0, 100], [u64::max, 0]]
     * meaning that from t0 to u64::max, 100 rewards are issued per time unit
     */
    readonly points: Array<types.RewardPerTimeUnitPoint>;
    constructor(fields: RewardScheduleCurveFields);
    static layout(property?: string): any;
    static fromDecoded(obj: any): types.RewardScheduleCurve;
    static toEncodable(fields: RewardScheduleCurveFields): {
        points: {
            tsStart: BN;
            rewardPerTimeUnit: BN;
        }[];
    };
    toJSON(): RewardScheduleCurveJSON;
    static fromJSON(obj: RewardScheduleCurveJSON): RewardScheduleCurve;
    toEncodable(): {
        points: {
            tsStart: BN;
            rewardPerTimeUnit: BN;
        }[];
    };
}
