import { PaginationItem } from './pagination'; export interface UsePaginationArgs { /** 1-based current page. */ page: number; /** Total page count. */ pageCount: number; /** Pages always shown at the very start and very end. */ boundaryCount?: number; /** Pages shown on either side of the current page. */ siblingCount?: number; } /** * Computes the ordered list of pagination items (previous, page-buttons, * ellipsis, next). * * The algorithm targets a stable slot count: for any `pageCount` larger than * the window size, the returned list always has the same number of page * entries (`boundaryCount * 2 + siblingCount * 2 + 3`). As the current page * moves toward a boundary, the corresponding ellipsis is swapped for an extra * adjacent page number rather than collapsing the list — the visual row does * not expand or contract as the user navigates. * * Edge cases: * - `pageCount <= 0` → returns `[]`. * - `page` is clamped to `[1, pageCount]` before computation. * - `pageCount <= window size` → every page is rendered, no ellipsis. */ export declare function usePagination({ page, pageCount, boundaryCount, siblingCount, }: UsePaginationArgs): PaginationItem[];