import BigNumber from 'bignumber.js';
import { Asset, Checkpoint, Context, Entity } from "../../../internal";
import { CalendarPeriod, CalendarUnit, ScheduleDetails } from "../../../types";
export interface UniqueIdentifiers {
    id: BigNumber;
    ticker: string;
}
interface CalendarPeriodHumanReadable {
    unit: CalendarUnit;
    amount: string;
}
interface HumanReadable {
    id: string;
    ticker: string;
    period: CalendarPeriodHumanReadable | null;
    start: string;
    expiryDate: string | null;
    complexity: string;
}
export interface Params {
    period: CalendarPeriod;
    start: Date;
    remaining: BigNumber;
    nextCheckpointDate: Date;
}
/**
 * Represents a Checkpoint Schedule for an Asset. Schedules can be set up to create Checkpoints at regular intervals
 */
export declare class CheckpointSchedule extends Entity<UniqueIdentifiers, HumanReadable> {
    /**
     * @hidden
     * Check if a value is of type [[UniqueIdentifiers]]
     */
    static isUniqueIdentifiers(identifier: unknown): identifier is UniqueIdentifiers;
    /**
     * schedule identifier number
     */
    id: BigNumber;
    /**
     * Asset for which Checkpoints are scheduled
     */
    asset: Asset;
    /**
     * how often this Schedule creates a Checkpoint. A null value means this Schedule
     *   creates a single Checkpoint and then expires
     */
    period: CalendarPeriod | null;
    /**
     * first Checkpoint creation date
     */
    start: Date;
    /**
     * date at which the last Checkpoint will be created with this Schedule.
     *   A null value means that this Schedule never expires
     */
    expiryDate: Date | null;
    /**
     * abstract measure of the complexity of this Schedule. Shorter periods translate into more complexity
     */
    complexity: BigNumber;
    /**
     * @hidden
     */
    constructor(args: UniqueIdentifiers & Params, context: Context);
    /**
     * Retrieve information specific to this Schedule
     */
    details(): Promise<ScheduleDetails>;
    /**
     * Retrieve all Checkpoints created by this Schedule
     */
    getCheckpoints(): Promise<Checkpoint[]>;
    /**
     * Determine whether this Checkpoint Schedule exists on chain
     */
    exists(): Promise<boolean>;
    /**
     * Return the Schedule's static data
     */
    toJson(): HumanReadable;
}
export {};
//# sourceMappingURL=index.d.ts.map