import BigNumber from 'bignumber.js';
import { Asset, CheckpointSchedule, Context, CreateCheckpointScheduleParams, Namespace, RemoveCheckpointScheduleParams } from "../../../../internal";
import { CalendarPeriod, ProcedureMethod, ScheduleWithDetails } from "../../../../types";
/**
 * Handles all Asset Checkpoint Schedules related functionality
 */
export declare class Schedules extends Namespace<Asset> {
    /**
     * @hidden
     */
    constructor(parent: Asset, context: Context);
    /**
     * Create a schedule for Checkpoint creation (i.e. "Create a checkpoint every week for 5 weeks, starting next tuesday")
     *
     * @note due to chain limitations, schedules are advanced and (if appropriate) executed whenever the Asset is
     *   redeemed, issued or transferred between portfolios. This means that on an Asset without much movement, there may be disparities between intended Checkpoint creation dates
     *   and the actual date when they are created. This, however, has no effect on the Checkpoint's accuracy regarding to balances
     */
    create: ProcedureMethod<CreateCheckpointScheduleParams, CheckpointSchedule>;
    /**
     * Remove the supplied Checkpoint Schedule for a given Asset
     */
    remove: ProcedureMethod<RemoveCheckpointScheduleParams, void>;
    /**
     * Retrieve a single Checkpoint Schedule associated to this Asset by its ID
     *
     * @throws if there is no Schedule with the passed ID
     */
    getOne({ id }: {
        id: BigNumber;
    }): Promise<ScheduleWithDetails>;
    /**
     * Retrieve all active Checkpoint Schedules
     */
    get(): Promise<ScheduleWithDetails[]>;
    /**
     * Calculate an abstract measure of the complexity of a given Calendar Period
     */
    complexityOf(period: CalendarPeriod): number;
    /**
     * Calculate the sum of the complexity of all current Checkpoint Schedules for this Asset.
     *   The number cannot exceed the Asset's maximum complexity (obtained via [[maxComplexity]])
     */
    currentComplexity(): Promise<number>;
    /**
     * Retrieve the maximum allowed Schedule complexity for this Asset
     */
    maxComplexity(): Promise<number>;
}
//# sourceMappingURL=Schedules.d.ts.map