/// <reference types="node" />
export declare type MuTimer = NodeJS.Timer | number;
export declare type MuRequestAnimationFrame = (callback: (time: number) => void) => number;
export declare type MuCancelAnimationFrame = (handle: number) => void;
export interface MuIdleDeadline {
    readonly didTimeout: boolean;
    timeRemaining: () => number;
}
export declare type MuRequestIdleCallback = (callback: (deadline: MuIdleDeadline) => void, options?: {
    timeout: number;
}) => MuTimer;
export declare type MuCancelIdleCallback = (handle: any) => void;
export declare type MuProcessNextTick = (callback: (...args: any[]) => void) => void;
export interface MuScheduler {
    now: () => number;
    setTimeout: (callback: (...args: any[]) => void, ms: number, ...args: any[]) => MuTimer;
    clearTimeout: (handle: any) => void;
    setInterval: (callback: (...args: any[]) => void, ms: number, ...args: any[]) => MuTimer;
    clearInterval: (handle: any) => void;
    requestAnimationFrame: MuRequestAnimationFrame;
    cancelAnimationFrame: MuCancelAnimationFrame;
    requestIdleCallback: MuRequestIdleCallback;
    cancelIdleCallback: MuCancelIdleCallback;
    nextTick: MuProcessNextTick;
}
