/**
 * Yield the current task back to the browser so it can paint and process input
 * before the awaited continuation runs.
 *
 * Uses `scheduler.yield()` when available (modern Chromium) for better priority
 * handling; falls back to `setTimeout(_, 0)`, which macrotask-defers in every
 * browser, in Node/SSR, and in fake-timer test environments.
 */
export declare function yieldToMain(): Promise<void>;
/**
 * Run `task` during the browser's first idle period, falling back to
 * `setTimeout(task, 0)` where `requestIdleCallback` is unavailable (Safari,
 * Node/SSR, fake timers). Use this for genuinely deferrable background work
 * (e.g. stale-while-revalidate refreshes, the `idle` highlight/enhance swap)
 * that should wait for the main thread to be free.
 *
 * @param options.timeout forwarded to `requestIdleCallback` so the task still
 *   runs even if the browser never goes idle.
 * @returns a function that cancels the task if it has not run yet.
 */
export declare function requestIdle(task: () => void, options?: {
  timeout?: number;
}): () => void;