import React from 'react';
import type { CollaborationStatus, OfflinePersistenceStatus } from '../lib/collaboration-provider.js';
/**
 * Compact connection + offline-draft indicator. Rendered alongside the
 * presence chips above the editor toolbar so editors get a single,
 * always-visible signal:
 *
 * - **Saved & synced** — IndexedDB store is ready and the gateway
 *   socket is connected.
 * - **Saved locally** — IndexedDB ready but the socket is disconnected
 *   (offline drafts in flight; will sync on reconnect).
 * - **Syncing local copy…** — IndexedDB is replaying the last snapshot
 *   into the doc. The editor is still usable but undo / cursor sync
 *   may flicker briefly.
 * - **Local drafts unsupported** — `indexedDB` is unavailable; the
 *   editor will rely on the gateway only. Refresh loses uncommitted
 *   edits.
 * - **Local drafts failed** — IndexedDB threw on init (quota, private
 *   browsing). Same risk as "unsupported", but with a different cause.
 *
 * Keeping the component dumb and prop-driven keeps the unit tests
 * trivial — the parent owns the status transitions.
 */
export interface OfflineStatusProps {
    connection: CollaborationStatus;
    offline: OfflinePersistenceStatus;
}
export declare function OfflineStatus({ connection, offline }: OfflineStatusProps): React.JSX.Element;
export type OfflineTone = 'good' | 'warn' | 'info' | 'bad';
/**
 * Pure helper that maps the (connection, offline) status pair to a
 * single user-facing label + colour tone. Exported so the unit tests
 * can exercise every combination without rendering React.
 */
export declare function describeOfflineStatus(connection: CollaborationStatus, offline: OfflinePersistenceStatus): {
    label: string;
    tone: OfflineTone;
};
//# sourceMappingURL=OfflineStatus.d.ts.map