/**
 * ScrollProvider
 *
 * Manages scrollable components and handles mouse scroll events.
 * Components register themselves as scrollable, and the provider
 * routes scroll events to the appropriate component.
 */
import type React from 'react';
import { type DOMElement } from 'ink';
export interface ScrollState {
    scrollTop: number;
    scrollHeight: number;
    innerHeight: number;
}
export interface ScrollableEntry {
    id: string;
    ref: React.RefObject<DOMElement | null>;
    getScrollState: () => ScrollState;
    scrollBy: (delta: number) => void;
    scrollTo?: (scrollTop: number, duration?: number) => void;
    hasFocus: () => boolean;
}
export interface ScrollProviderProps {
    children: React.ReactNode;
    /** Callback when user attempts to select text (drag without Option key) */
    onSelectionAttempt?: () => void;
}
export declare const ScrollProvider: React.FC<ScrollProviderProps>;
/**
 * Hook to register a component as scrollable
 */
export declare const useScrollable: (entry: Omit<ScrollableEntry, "id">, isActive: boolean) => void;
//# sourceMappingURL=ScrollProvider.d.ts.map