import { ScrollDirection } from '../components/core/ScrollArea/smooth/SmoothScrollEngine.types';
/**
 * Calculate velocity from position change
 *
 * @param current - Current position
 * @param previous - Previous position
 * @param deltaTime - Time elapsed in milliseconds
 * @returns Velocity in pixels per frame
 */
export declare function calculateVelocity(current: number, previous: number, deltaTime: number): number;
/**
 * Clamp scroll position to valid bounds
 *
 * @param position - Position to clamp
 * @param min - Minimum value
 * @param max - Maximum value
 * @returns Clamped position
 */
export declare function clampScroll(position: number, min: number, max: number): number;
/**
 * Detect scroll direction from velocity
 *
 * @param velocity - Current velocity
 * @param threshold - Minimum velocity to detect direction (default: 0.1)
 * @returns 1 for down/right, -1 for up/left, 0 for stationary
 */
export declare function detectScrollDirection(velocity: number, threshold?: number): ScrollDirection;
/**
 * Check if user prefers reduced motion
 *
 * @returns True if prefers-reduced-motion is set
 */
export declare function isReducedMotion(): boolean;
/**
 * Linear interpolation between two values
 *
 * @param start - Start value
 * @param end - End value
 * @param factor - Interpolation factor (0-1)
 * @returns Interpolated value
 */
export declare function lerp(start: number, end: number, factor: number): number;
/**
 * Calculate scroll progress as percentage
 *
 * @param current - Current scroll position
 * @param max - Maximum scroll position
 * @returns Progress from 0 to 1
 */
export declare function calculateScrollProgress(current: number, max: number): number;
/**
 * Normalize wheel delta across different browsers and input devices
 *
 * @param event - WheelEvent
 * @param orientation - Scroll orientation ('vertical' uses deltaY, 'horizontal' uses deltaX)
 * @returns Normalized delta and device detection
 */
export declare function normalizeWheelDelta(event: WheelEvent, orientation?: 'vertical' | 'horizontal'): {
    delta: number;
    isTouchpad: boolean;
};
/**
 * Check if element is scrollable
 *
 * @param element - Element to check
 * @returns True if element has scrollable overflow
 */
export declare function isScrollable(element: HTMLElement | null): boolean;
/**
 * Get maximum scroll position for element
 *
 * @param element - Scrollable element
 * @param orientation - Scroll orientation
 * @returns Maximum scroll position
 */
export declare function getMaxScroll(element: HTMLElement, orientation?: 'vertical' | 'horizontal'): number;
/**
 * Debounce function for performance optimization
 *
 * @param fn - Function to debounce
 * @param delay - Delay in milliseconds
 * @returns Debounced function
 */
export declare function debounce<T extends (...args: any[]) => any>(fn: T, delay: number): (...args: Parameters<T>) => void;
/**
 * Throttle function for performance optimization
 *
 * @param fn - Function to throttle
 * @param limit - Time limit in milliseconds
 * @returns Throttled function
 */
export declare function throttle<T extends (...args: any[]) => any>(fn: T, limit: number): (...args: Parameters<T>) => void;
