import BigNumber from 'bignumber.js';
import { Checkpoint, Context, Entity } from "../../../internal";
import { CalendarPeriod, ScheduleDetails } from "../../../types";
export interface UniqueIdentifiers {
    id: BigNumber;
    ticker: string;
}
interface HumanReadable {
    id: string;
    ticker: string;
    period: CalendarPeriod | null;
    start: string;
    expiryDate: string | null;
    complexity: number;
}
export interface Params {
    period: CalendarPeriod;
    start: Date;
    remaining: number;
    nextCheckpointDate: Date;
}
/**
 * Represents a Schedule in which Checkpoints are created for a specific
 *  Security Token. Schedules can be set up to create checkpoints
 */
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;
    /**
     * ticker of the Security Token for which Checkpoints are scheduled
     */
    ticker: string;
    /**
     * 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: number;
    /**
     * @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 ID and Token ticker
     */
    toJson(): HumanReadable;
}
export {};
//# sourceMappingURL=index.d.ts.map