import { ReactNode } from 'react';
export type GhanttScrollVirtualSlotRange = {
    start: number;
    end: number;
};
export interface GhanttScrollVirtualContextValue {
    /** `true` cuando el host calcula la ventana (hora/día/semana con muchos slots). */
    managed: boolean;
    slotRange: GhanttScrollVirtualSlotRange | null;
}
/** Referencia estable cuando no hay virtualización por scroll. */
export declare const GHANTT_SCROLL_VIRTUAL_CTX_IDLE: GhanttScrollVirtualContextValue;
/**
 * Store externo (`useSyncExternalStore`): actualizar la ventana no re-renderiza el organismo Ghantt
 * ni la tabla completa, solo a los suscriptores (p. ej. cabecera con `GhanttSlotStrip`).
 */
export type GhanttScrollVirtualStore = {
    subscribe: (onStoreChange: () => void) => () => void;
    getSnapshot: () => GhanttScrollVirtualContextValue;
    setIdle: () => void;
    /** `managed === true`; `range === null` hasta la primera medición del viewport. */
    setManagedRange: (range: GhanttScrollVirtualSlotRange | null) => void;
};
export declare function createGhanttScrollVirtualStore(): GhanttScrollVirtualStore;
export declare function GhanttScrollVirtualRoot({ store, children, }: {
    store: GhanttScrollVirtualStore;
    children: ReactNode;
}): import("react/jsx-runtime").JSX.Element;
/**
 * Ventana virtual de índices de slots (cabecera). Implementado con `useSyncExternalStore` para no
 * re-renderizar celdas de tabla al hacer scroll horizontal.
 */
export declare function useGhanttScrollVirtual(): GhanttScrollVirtualContextValue;
//# sourceMappingURL=GhanttScrollVirtualContext.d.ts.map