/**
 * Observes devicePixelRatio changes (e.g. when a window is moved between monitors
 * with different scaling). Calls `fn` whenever the DPR changes.
 *
 * Uses matchMedia with a resolution query tied to the current DPR value.
 * When the DPR changes the query no longer matches, so we re-subscribe
 * with the updated value — this is why `once: true` is used.
 *
 * The callback is deferred to the next animation frame to avoid a race condition
 * where the `change` event fires before the browser has updated `devicePixelRatio`.
 *
 * @param fn - Callback receiving the current devicePixelRatio
 * @returns Unsubscribe function that stops observing DPR changes
 */
export declare function observeDPR(fn: (dpr: number) => void): () => void;
