type UsePaginationOptions = {
    /** Max block length for all blocks, this gets overwritten by `startBlockMaxLength`, `middleBlockMaxLength`, `endBlockMaxLength` */
    blockMaxLength?: number;
    /** Doesn't chunk pages */
    compact?: boolean;
    /** Default selected page */
    defaultSelected?: number;
    /** Maximum length of pages to show on the end pagination block */
    endBlockMaxLength?: number;
    /** Maximum page number to be shown, (default null for no maximum) */
    maxPageNumber?: number | null;
    /** Maximum length of pages to show on the middle pagination block */
    middleBlockMaxLength?: number;
    /** Currently selected page (controlled) */
    selectedPage?: number;
    /** Function to set the selected page (controlled) */
    setSelectedPage?: (page: number) => void;
    /** What to separate the pagination array up with, usually this separator will be replaced with icon or ellipses when shown in the UI */
    separator?: number | string;
    /** Maximum length of pages to show on the start pagination block */
    startBlockMaxLength?: number;
    /** Start from this page */
    startPage?: number;
    /** Length of total pages */
    totalPages: number;
};
/**
 * @docs {@link https://design.visa.com/components/pagination/?code_library=react | See Docs}
 * @description This hook is used to manage pagination events, state, and visible page blocks. Supports both controlled and uncontrolled usage.
 * @related pagination
 * @vgar TODO
 * @wcag TODO
 */
export declare const usePagination: {
    (usePaginationOptions?: UsePaginationOptions): {
        /** Is first page currently selected */
        isFirstPage: boolean;
        /** Is last page currently selected */
        isLastPage: boolean;
        /** Event to handle first page selection */
        onFirstPage: () => void;
        /** Event to handle last page selection */
        onLastPage: () => void;
        /** Event to handle next page selection */
        onNextPage: () => void;
        /** Event to handle page selection */
        onPageChange: (pageNumber: number) => void;
        /** Event to handle previous page selection */
        onPreviousPage: () => void;
        /** Array of currently visible pages split by separator */
        pages: (string | number)[];
        /** Currently selected page */
        selectedPage: number;
    };
    displayName: string;
};
export default usePagination;
export { calculatePagesFromTo, calculateTotalPages } from './utils';
