/** * Type-safe timing configuration for picker auto-close behavior * * Provides semantic presets ('instant', 'fast', 'balanced', 'patient') * and auto-detection based on device/accessibility preferences. */ interface TimingConfig { /** Single gesture close delay (quick tap/drag) */ readonly settleGracePeriod: number; /** Wheel/scroll momentum close delay */ readonly wheelIdleTimeout: number; /** Multi-gesture browsing timeout */ readonly idleTimeout: number; /** Force settle if vendor callback fails */ readonly watchdogTimeout: number; } type TimingPreset = 'instant' | 'fast' | 'balanced' | 'patient'; /** * Predefined timing configurations with validated ratios * * Constraints enforced: * - wheelIdleTimeout >= settleGracePeriod * 5 * - idleTimeout >= wheelIdleTimeout * 2 * - watchdogTimeout >= settleGracePeriod * 5 */ declare const TIMING_PRESETS: { /** * Instant close (50ms grace) * Best for: High-frequency data entry, power users */ readonly instant: { readonly settleGracePeriod: 50; readonly wheelIdleTimeout: 300; readonly idleTimeout: 1500; readonly watchdogTimeout: 800; }; /** * Fast close (100ms grace) * Best for: Desktop users, keyboard-heavy workflows */ readonly fast: { readonly settleGracePeriod: 100; readonly wheelIdleTimeout: 500; readonly idleTimeout: 2500; readonly watchdogTimeout: 1000; }; /** * Balanced close (150ms grace) - DEFAULT * Best for: General use, mixed input methods */ readonly balanced: { readonly settleGracePeriod: 150; readonly wheelIdleTimeout: 800; readonly idleTimeout: 2500; readonly watchdogTimeout: 1000; }; /** * Patient close (300ms grace) * Best for: Mobile, accessibility, reduced motion preference */ readonly patient: { readonly settleGracePeriod: 300; readonly wheelIdleTimeout: 1200; readonly idleTimeout: 6000; readonly watchdogTimeout: 1500; }; }; /** * Auto-detect recommended timing preset based on: * - User accessibility preferences (prefers-reduced-motion) * - Device type (mobile vs desktop) * - Connection speed (for remote apps) * * @returns Recommended timing preset * * @example * ```tsx * * ``` */ declare function getRecommendedTiming(): TimingPreset; export { type TimingConfig as T, type TimingPreset as a, TIMING_PRESETS as b, getRecommendedTiming as g };