export default backgroundTaskScheduler;
export type DataTask<T> = {
    data: T;
    handler: (data: T) => void;
    trackId?: string | undefined;
};
export type NullDataTask = {
    data: null;
    handler: () => void;
    trackId?: string | undefined;
};
export type Task = DataTask<any> | NullDataTask;
declare const backgroundTaskScheduler: BackgroundTaskScheduler;
/**
 */
declare class BackgroundTaskScheduler {
    /** @type {Task[]} */
    taskList: Task[];
    taskHandle: number | null;
    requestIdleCallbackTimeout: number;
    /**
     * @template T
     * @overload
     * @param {(data: T) => void} taskHandler
     * @param {T} taskData
     * @param {string | null=} trackId
     * @return {void}
     */
    enqueueTask<T>(taskHandler: (data: T) => void, taskData: T, trackId?: (string | null) | undefined): void;
    /**
     * If `taskData` is `null` the `taskHandler` will eventaully be called without any arguments.
     *
     * @overload
     * @param {() => void} taskHandler
     * @param {null} taskData
     * @param {string | null=} trackId
     * @return {void}
     */
    enqueueTask(taskHandler: () => void, taskData: null, trackId?: (string | null) | undefined): void;
    /**
     * @param {{ timeRemaining(): number, didTimeout: boolean }} deadline
     */
    runTaskQueue(deadline: {
        timeRemaining(): number;
        didTimeout: boolean;
    }): void;
}
