import React from 'react';
import PropTypes from 'prop-types';
declare enum PagingMode {
    PAGING_MODE_LISTING = "listing",
    PAGING_MODE_PAGES = "pages"
}
declare type RangesResult = {
    head: [number, number] | null;
    middle: [number, number] | null;
    tail: [number, number] | null;
};
declare type PurePaginationProps = {
    className?: string;
    showPageSizeSelector?: boolean;
    beforeAfterAmount?: number;
    boundaryAmount?: number;
    mode?: PagingMode;
    currentPageLabel?: string;
    goToPageLabel?: string;
    pageNextLabel?: string;
    pagePrevLabel?: string;
    pageSizeSelectorText?: string;
    allText?: string;
    pageLabel?: string;
    itemsCount: number;
    activePage: number;
    onChangePageSize: Function;
    onChangePage: Function;
    pageSizes?: number[];
    pageSize?: number;
} & Partial<PurePaginationDefaultProps>;
declare type PurePaginationDefaultProps = {
    showPageSizeSelector: boolean;
    beforeAfterAmount: number;
    boundaryAmount: number;
    mode: PagingMode;
    currentPageLabel: string;
    goToPageLabel: string;
    pageNextLabel: string;
    pagePrevLabel: string;
    pageSizeSelectorText: string;
    allText: string;
    pageLabel: string;
    pageSizes: number[];
    pageSize: number;
};
export declare class PurePagination extends React.Component<PurePaginationProps> {
    static PagingModes: {
        listing: string;
        pages: string;
    };
    static propTypes: {
        activePage: PropTypes.Validator<number>;
        itemsCount: PropTypes.Validator<number>;
        pageSize: PropTypes.Validator<number>;
        onChangePage: PropTypes.Validator<(...args: any[]) => any>;
        onChangePageSize: PropTypes.Validator<(...args: any[]) => any>;
        pageSizes: PropTypes.Requireable<any[]>;
        className: PropTypes.Requireable<string>;
        showPageSizeSelector: PropTypes.Requireable<boolean>;
        beforeAfterAmount: PropTypes.Requireable<number>;
        boundaryAmount: PropTypes.Requireable<number>;
        mode: PropTypes.Requireable<string>;
        currentPageLabel: PropTypes.Requireable<string>;
        goToPageLabel: PropTypes.Requireable<string>;
        pageNextLabel: PropTypes.Requireable<string>;
        pagePrevLabel: PropTypes.Requireable<string>;
        pageSizeSelectorText: PropTypes.Requireable<string>;
        allText: PropTypes.Requireable<string>;
        pageLabel: PropTypes.Requireable<string>;
    };
    static defaultProps: {
        pageSizes: number[];
        className: null;
        showPageSizeSelector: boolean;
        beforeAfterAmount: number;
        boundaryAmount: number;
        mode: string;
        currentPageLabel: string;
        goToPageLabel: string;
        pageNextLabel: string;
        pagePrevLabel: string;
        pageSizeSelectorText: string;
        allText: string;
        pageLabel: string;
    };
    calculatePageCount(itemsCount: number, pageSize: number): number;
    /**
     * Calculates pagination ranges
     *
     * @param {Number} activePage Zero based value of active page
     * @param {Number} beforeAfterAmount A number of items wanted to show before and after active page
     * @param {Number} boundaryAmount A number of items wanted to show on head and on tail
     * @param {Number} pageCount Actual count of pages
     */
    getRanges(activePage: number, beforeAfterAmount: number, boundaryAmount: number, pageCount: number): RangesResult;
    isRangeEmpty(range: any): boolean;
    hasGap(rangeA: any, rangeB: any): boolean;
    hasHeadDots(ranges: any): boolean;
    hasTailDots(ranges: any): boolean;
    formatPageSize(digit: any, itemsCount: any, pageSizes: any): any;
    getPageSizeSelector(pageSizes: any, pageSize: any, itemsCount: any): JSX.Element;
    getPageSizeSelectorLabel(): string | undefined;
    getPageCount(): number;
    getPageIndex(): number;
    isNextButtonDisabled(): boolean;
    isPrevButtonDisabled(): boolean;
    handlePrevClick: () => void;
    handleClickNext: () => void;
    handleChangePageSize: (event: any) => void;
    renderDot(className: any): JSX.Element;
    renderPages(range: any, activePage: any, handler: any): JSX.Element[];
    render(): JSX.Element;
}
export {};
