/**
 * Health Bar Component
 *
 * Visualizes sync history as a timeline of dots.
 * Each dot represents 15 minutes, showing success/failure/no-activity.
 */
import { type ReactNode } from "react";
/** Number of dots to display (12 dots = 3 hours at 15 min each) */
declare const DOT_COUNT = 12;
/** Minutes per dot for health bar resolution */
declare const MINUTES_PER_DOT = 15;
/** Health status for a single time slot */
export type SlotStatus = "success" | "inactive" | "warning" | "failed";
/** A time slot with its status */
export interface HealthSlot {
    readonly status: SlotStatus;
    readonly timestamp: number;
}
export interface HealthBarProps {
    /** Array of health slots (newest first) */
    readonly slots: ReadonlyArray<HealthSlot>;
    /** Optional: show time label (e.g., "2m ago") */
    readonly timeLabel?: string;
}
/**
 * Health bar showing sync status over time.
 *
 * Displays 12 dots representing the last 3 hours of sync activity.
 * Each dot represents a 15-minute interval.
 */
export declare const HealthBar: import("react").MemoExoticComponent<({ slots, timeLabel }: HealthBarProps) => ReactNode>;
/** Create a health bar with all success dots */
export declare const createSuccessBar: (count?: number) => ReadonlyArray<HealthSlot>;
/** Create a health bar with all inactive dots (for paused flows) */
export declare const createInactiveBar: (count?: number) => ReadonlyArray<HealthSlot>;
/** Create a health bar from sync events */
export declare const createHealthBarFromEvents: (events: ReadonlyArray<{
    readonly timestamp: number;
    readonly success: boolean;
}>, nowMs: number) => ReadonlyArray<HealthSlot>;
export { DOT_COUNT, MINUTES_PER_DOT };
//# sourceMappingURL=HealthBar.d.ts.map