export type PaginationState = {
    /** Total number of items across all pages */
    totalItems: number;
    /** Current active page (1-based) */
    currentPage: number;
    /** Number of items displayed per page */
    pageSize: number;
    /** Total number of pages available */
    totalPages: number;
    /** Index of the first item on current page (1-based) */
    startItem: number;
    /** Index of the last item on current page (1-based) */
    endItem: number;
    /** Whether there is a previous page available */
    hasPreviousPage: boolean;
    /** Whether there is a next page available */
    hasNextPage: boolean;
};
export type UsePaginationProps = {
    /** Total number of items to paginate */
    totalItems: number;
    /** Initial current page (1-based), defaults to 1 */
    currentPage?: number;
    /** Initial number of items per page, defaults to 10 */
    pageSize?: number;
    /** Callback fired when the current page changes */
    onPageChange?: (page: number) => void;
    /** Callback fired when the page size changes */
    onPageSizeChange?: (pageSize: number) => void;
};
export type UsePaginationReturn = PaginationState & {
    /** Navigate to a specific page number (1-based) */
    goToPage: (page: number) => void;
    /** Navigate to the previous page, if available */
    goToPreviousPage: () => void;
    /** Navigate to the next page, if available */
    goToNextPage: () => void;
    /** Change the number of items displayed per page */
    setPageSize: (pageSize: number) => void;
};
/**
 * # usePagination
 *
 * Custom hook that provides pagination state management and navigation controls.
 *
 * Supports both controlled and uncontrolled modes:
 * - Controlled: Parent component manages currentPage state via props and callbacks
 * - Uncontrolled: Hook manages internal currentPage state automatically
 *
 * @param props - Configuration object for pagination behavior
 * @param props.totalItems - Total number of items to paginate
 * @param props.currentPage - Current page number (controlled mode). If undefined, uses uncontrolled mode
 * @param props.pageSize - Number of items per page (defaults to 20)
 * @param props.onPageChange - Callback fired when page changes
 * @param props.onPageSizeChange - Callback fired when page size changes
 *
 * @returns Object containing pagination state and navigation functions:
 * - totalItems: Total number of items
 * - currentPage: Current active page number (1-based)
 * - pageSize: Number of items per page
 * - totalPages: Total number of pages
 * - startItem: First item number on current page
 * - endItem: Last item number on current page
 * - hasPreviousPage: Whether previous page exists
 * - hasNextPage: Whether next page exists
 * - goToPage: Function to navigate to specific page
 * - goToPreviousPage: Function to navigate to previous page
 * - goToNextPage: Function to navigate to next page
 * - setPageSize: Function to change page size
 *
 */
export declare function usePagination({ totalItems, currentPage: controlledCurrentPage, pageSize: controlledPageSize, onPageChange, onPageSizeChange, }: UsePaginationProps): UsePaginationReturn;
