export interface UseLoaderOptions { /** Initial loading state */ initialLoading?: boolean; /** Delay before showing loader (ms) */ delay?: number; /** Minimum duration to show loader (ms) */ minDuration?: number; /** Auto-hide loader after duration (ms) */ autoHide?: number; } export interface UseLoaderReturn { /** Current loading state */ loading: boolean; /** Start loading */ startLoading: () => void; /** Stop loading */ stopLoading: () => void; /** Toggle loading state */ toggleLoading: () => void; /** Set loading state directly */ setLoading: (loading: boolean) => void; /** Whether loader should be visible (accounts for delay/minDuration) */ isVisible: boolean; } /** * useLoader - Manage loading states with smart UX features * * A hook for managing loader visibility with built-in delay, minimum duration, * and auto-hide capabilities for optimal user experience. * * @param options - Configuration options * @returns Loading state and control functions * * @example * ```tsx * function MyComponent() { * const { loading, startLoading, stopLoading, isVisible } = useLoader({ * delay: 200, * minDuration: 600, * }); * * const fetchData = async () => { * startLoading(); * try { * await api.fetchData(); * } finally { * stopLoading(); * } * }; * * return ; * } * ``` */ export declare function useLoader(options?: UseLoaderOptions): UseLoaderReturn; //# sourceMappingURL=useLoader.d.ts.map