/**
 * Metadata the policy records about the triggering disconnect.
 *
 * @kosService core.reload-on-disconnect-policy
 * @kosApiLevel 23
 */
export interface ReloadOnDisconnectInfo {
    code: number;
    reason: string;
    wasClean: boolean;
    at: number;
}
/**
 * Props for ReloadOnDisconnectPolicy.
 *
 * @kosService core.reload-on-disconnect-policy
 * @kosApiLevel 23
 */
export interface ReloadOnDisconnectPolicyProps {
    /**
     * Delay before reloading, in milliseconds. Lets rapid-fire reconnect
     * attempts settle without stacking reloads. Default: 3000.
     */
    graceMs?: number;
    /**
     * Called synchronously immediately before the reload. Useful for
     * telemetry. Do not perform async work here — the reload may preempt it.
     */
    onBeforeReload?: (info: ReloadOnDisconnectInfo) => void;
    /**
     * Test seam. Replace the reload function. Defaults to
     * () => window.location.reload().
     */
    reloadFn?: () => void;
}
/**
 * Mounts a connection-recovery policy: when the WebSocket disconnects, wait
 * a short grace window, record the disconnect in sessionStorage, then
 * `window.location.reload()` the page. Renders nothing.
 *
 * The grace window exists only to de-bounce rapid disconnect/reconnect
 * flapping — it is NOT a signal to trust fast recoveries. Even a sub-second
 * reconnect triggers the reload, because the data layer has no way to
 * guarantee freshness across the gap.
 *
 * Apps that want different behavior (e.g. Studio, which prefers
 * reconcile-on-reconnect) simply do not mount this policy.
 *
 * Pair with an overlay that reads `KOS_RECOVERING_SESSION_KEY` on mount to
 * keep a "reconnecting" message visible across the reload boundary.
 *
 * @kosService core.reload-on-disconnect-policy
 * @kosApiLevel 23
 */
export declare const ReloadOnDisconnectPolicy: React.FC<ReloadOnDisconnectPolicyProps>;
//# sourceMappingURL=reload-on-disconnect-policy.d.ts.map