export type PaginationRangeItem = number | '...'; /** * Configuration used to compute a pagination range. */ export interface PaginationRangeConfig { /** Current page (1-based). */ currentPage: number; /** Total number of paginated items. */ totalCount: number; /** Number of items per page. */ pageSize: number; /** Number of visible page buttons in the start zone. */ numStartZoneButtons: number; /** Number of visible page buttons in the end zone. */ numEndZoneButtons: number; /** Number of visible page buttons in the middle zone. */ numMiddleButtons: number; /** Enables the explicit middle zone rendering mode. */ showMiddleZone: boolean; } /** * Calculates the number of pages needed for the given number of items. * Invalid input (a page size or total count that is not a positive finite * number) yields 0 pages, and so does a result that is not a safe integer: * the division can overflow to `Infinity` (e.g. `Number.MAX_VALUE / * Number.MIN_VALUE`), and above `Number.MAX_SAFE_INTEGER` `i++` no longer * changes `i`. Either way callers could loop forever over the pages. * @param {number} totalCount Total number of paginated items. * @param {number} pageSize Number of items per page. * @returns {number} The number of pages, or 0 when the input is invalid. */ export declare function getTotalPageCount(totalCount: number, pageSize: number): number; /** * Generates a pagination range with page numbers and ellipsis items. * @param {PaginationRangeConfig} config Pagination configuration. * @returns {PaginationRangeItem[]} Ordered range items. */ export declare function calculatePaginationRange({ currentPage, totalCount, pageSize, numStartZoneButtons, numEndZoneButtons, numMiddleButtons, showMiddleZone, }: PaginationRangeConfig): PaginationRangeItem[];