import { MaybeRefOrGetter, Ref } from 'vue'; interface RuntimeStorage { getItem(key: string): string | null; setItem(key: string, value: string): void; } interface RuntimeEventTarget { addEventListener(type: 'vite:preloadError', listener: EventListener): void; removeEventListener(type: 'vite:preloadError', listener: EventListener): void; } interface RuntimeVisibilityTarget { addEventListener(type: 'visibilitychange', listener: EventListener): void; removeEventListener(type: 'visibilitychange', listener: EventListener): void; } export interface RuntimeRevisionResponse { frontend_revision?: string | null; } export interface RuntimeAlignmentOptions { /** Revision embedded in the HTML that booted this tab. */ currentRevision?: MaybeRefOrGetter; /** Browser visibility seam. */ visibility?: () => DocumentVisibilityState; /** Current location seam. */ currentUrl?: () => string; /** Location replacement seam. */ replace?: (url: string) => void; /** Per-tab recovery guard storage. */ storage?: RuntimeStorage | null; /** Vite preload error source. */ eventTarget?: RuntimeEventTarget | null; /** Browser visibility event source. */ visibilityTarget?: RuntimeVisibilityTarget | null; } export interface UseRuntimeAlignmentReturn { updateAvailable: Readonly>; nextRevision: Readonly>; observe: (response: RuntimeRevisionResponse | unknown) => void; reload: () => void; recoverMissingChunk: () => void; } /** Keep a loaded MINT frontend aligned with the backend revision serving its scope. */ export declare function useRuntimeAlignment(options?: RuntimeAlignmentOptions): UseRuntimeAlignmentReturn; /** Read the revision injected into the HTML that started this browser tab. */ export declare function getInjectedFrontendRevision(): string | null; export {};