import type { PageChangeEvent } from '../components/pagination/Pagination'; export type PaginationState = { skip: number; take: number; }; export interface UsePaginationProps { data?: readonly T[]; /** * Default/initial state. If you pass `state`, these are ignored. */ skip?: number; take?: number; /** * Controlled mode: if provided, the hook will not keep its own state. */ state?: PaginationState; onStateChange?: (next: PaginationState) => void; /** * When true, page index resets to 0 whenever `data` reference changes. * Useful after filtering/sorting changes upstream. */ resetOnDataChange?: boolean; /** * Optional localStorage key for persisting pagination state. * Only used in uncontrolled mode. */ storageKey?: string; } export interface UsePaginationResult { paginatedData: T[]; paginationState: PaginationState; onPageChange: (pageEvent: PageChangeEvent) => void; setPagination: (next: PaginationState) => void; resetPage: () => void; page: number; totalCount: number; } export declare function usePagination({ data, skip, take, state, onStateChange, resetOnDataChange, storageKey, }: UsePaginationProps): UsePaginationResult;