/**
 * @since 1.0.0
 */
/**
 * @since 1.0.0
 * @category models
 */
export type Task = () => void;
/**
 * @since 1.0.0
 * @category models
 */
export interface Scheduler {
    scheduleTask(task: Task): void;
}
/**
 * @since 1.0.0
 * @category schedulers
 */
export declare class MixedScheduler implements Scheduler {
    /**
     * @since 1.0.0
     */
    readonly maxNextTickBeforeTimer: number;
    /**
     * @since 1.0.0
     */
    running: boolean;
    /**
     * @since 1.0.0
     */
    tasks: Array<Task>;
    constructor(
    /**
     * @since 1.0.0
     */
    maxNextTickBeforeTimer: number);
    /**
     * @since 1.0.0
     */
    private starveInternal;
    /**
     * @since 1.0.0
     */
    private starve;
    /**
     * @since 1.0.0
     */
    scheduleTask(task: Task): void;
}
/**
 * @since 1.0.0
 * @category schedulers
 */
export declare const defaultScheduler: Scheduler;
/**
 * @since 1.0.0
 * @category schedulers
 */
export declare class SyncScheduler implements Scheduler {
    /**
     * @since 1.0.0
     */
    tasks: Array<Task>;
    /**
     * @since 1.0.0
     */
    deferred: boolean;
    /**
     * @since 1.0.0
     */
    scheduleTask(task: Task): void;
    /**
     * @since 1.0.0
     */
    flush(): void;
}
/**
 * @since 1.0.0
 * @category schedulers
 */
export declare class ControlledScheduler implements Scheduler {
    /**
     * @since 1.0.0
     */
    tasks: Array<Task>;
    /**
     * @since 1.0.0
     */
    deferred: boolean;
    /**
     * @since 1.0.0
     */
    scheduleTask(task: Task): void;
    /**
     * @since 1.0.0
     */
    step(): void;
}
/**
 * @since 1.0.0
 * @category schedulers
 */
export declare const timeBased: Scheduler;
//# sourceMappingURL=Scheduler.d.ts.map