// eslint-disable-next-line no-restricted-globals
const { setTimeout, clearTimeout } = self;

/** Polyfills for requestIdleCallback and cancelIdleCallback */

export const {
  requestIdleCallback = (
    // eslint-disable-next-line @typescript-eslint/no-explicit-any
    callback: (...args: any[]) => any,
    options: {
      /** Callback timeout */
      timeout: number;
    } = { timeout: 0 },
  ): number => setTimeout(callback, options.timeout),
  cancelIdleCallback = (callbackId: number) => {
    clearTimeout(callbackId);
  },
  // eslint-disable-next-line no-restricted-globals, @typescript-eslint/no-explicit-any
} = self as any;
