import React, { ReactNode } from 'react';
import PropTypes from 'prop-types';
import { Size } from '../../../lib/_util/enum';
import DataSetComponent, { DataSetComponentProps } from '../data-set/DataSetComponent';
import { QuickJumperPosition, SizeChangerPosition } from './enum';
import { Renderer } from '../field/FormField';
export declare type PagerType = 'page' | 'prev' | 'next' | 'first' | 'last' | 'jump-prev' | 'jump-next';
export interface PaginationProps extends DataSetComponentProps {
    total?: number;
    page?: number;
    pageSize?: number;
    maxPageSize?: number;
    onChange?: (page: number, pageSize: number) => void;
    itemRender?: (page: number, type: PagerType) => ReactNode;
    pageSizeOptions?: string[];
    pageSizeEditable?: boolean;
    sizeChangerPosition?: SizeChangerPosition;
    sizeChangerOptionRenderer?: Renderer;
    showSizeChanger?: boolean;
    showQuickJumper?: boolean | {
        goButton?: React.ReactNode;
    };
    showSizeChangerLabel?: boolean;
    showTotal?: boolean | ((total: number, range: [number, number]) => React.ReactNode);
    showPager?: boolean;
    hideOnSinglePage?: boolean;
    simple?: boolean;
    quickJumperPosition?: QuickJumperPosition;
}
export default class Pagination extends DataSetComponent<PaginationProps> {
    static displayName: string;
    static propTypes: {
        id: PropTypes.Requireable<string>;
        size: PropTypes.Requireable<Size>;
        suffixCls: PropTypes.Requireable<string>;
        prefixCls: PropTypes.Requireable<string>;
        title: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        disabled: PropTypes.Requireable<boolean>;
        hidden: PropTypes.Requireable<boolean>;
        autoFocus: PropTypes.Requireable<boolean>;
        accessKey: PropTypes.Requireable<string | boolean>;
        dir: PropTypes.Requireable<string>;
        contentEditable: PropTypes.Requireable<string | boolean>;
        draggable: PropTypes.Requireable<string | boolean>;
        style: PropTypes.Requireable<object>;
        className: PropTypes.Requireable<string>;
        tabIndex: PropTypes.Requireable<number>;
        lang: PropTypes.Requireable<string>;
        spellCheck: PropTypes.Requireable<boolean>;
        onFocus: PropTypes.Requireable<(...args: any[]) => any>;
        onBlur: PropTypes.Requireable<(...args: any[]) => any>;
        onClick: PropTypes.Requireable<(...args: any[]) => any>;
        onDoubleClick: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseUp: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseDown: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseMove: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseEnter: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseLeave: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseOver: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseOut: PropTypes.Requireable<(...args: any[]) => any>;
        onContextMenu: PropTypes.Requireable<(...args: any[]) => any>;
        onKeyDown: PropTypes.Requireable<(...args: any[]) => any>;
        onKeyUp: PropTypes.Requireable<(...args: any[]) => any>;
        onKeyPress: PropTypes.Requireable<(...args: any[]) => any>;
        dataSet: PropTypes.Requireable<object>;
        total: PropTypes.Requireable<number>;
        page: PropTypes.Requireable<number>;
        pageSize: PropTypes.Requireable<number>;
        onChange: PropTypes.Requireable<(...args: any[]) => any>;
        itemRender: PropTypes.Requireable<(...args: any[]) => any>;
        sizeChangerPosition: PropTypes.Requireable<SizeChangerPosition>;
        sizeChangerOptionRenderer: PropTypes.Requireable<(...args: any[]) => any>;
        showSizeChanger: PropTypes.Requireable<boolean>;
        showQuickJumper: PropTypes.Requireable<boolean | object>;
        showSizeChangerLabel: PropTypes.Requireable<boolean>;
        showTotal: PropTypes.Requireable<boolean | ((...args: any[]) => any)>;
        showPager: PropTypes.Requireable<boolean>;
        simple: PropTypes.Requireable<boolean>;
        quickJumperPosition: PropTypes.Requireable<QuickJumperPosition>;
    };
    static defaultProps: {
        suffixCls: string;
        sizeChangerPosition: SizeChangerPosition;
        quickJumperPosition: QuickJumperPosition;
        sizeChangerOptionRenderer: ({ text }: {
            text: any;
        }) => any;
        hideOnSinglePage: boolean;
        showSizeChanger: boolean;
        showQuickJumper: boolean;
        showSizeChangerLabel: boolean;
        showTotal: boolean;
        simple: boolean;
    };
    pageInput?: number | '';
    get pageSize(): number;
    get page(): number;
    get total(): number | undefined;
    get totalPage(): number;
    get next(): boolean;
    getObservableProps(props: any, context: any): any;
    handlePageSizeBeforeChange(value: any): boolean | Promise<boolean>;
    handlePageSizeChange(value: number): void;
    handleChange(page: number, pageSize: number): void;
    handlePagerClick(page: any): void;
    getValidValue(value: any): any;
    jumpPage(page: any): void;
    handleJumpChange(value: any): void;
    handleJumpGo(e: any): void;
    getOmitPropsKeys(): string[];
    getOptions(): ReactNode;
    getPager(page: number, type: PagerType, active?: boolean, disabledSender?: boolean): JSX.Element;
    renderPagers(page: number): ReactNode;
    renderSizeChange(pageSize: number): ReactNode;
    renderTotal(pageSize: number, page: number, total: number): ReactNode;
    /**
     * 渲染快速跳至
     */
    renderQuickGo(): ReactNode;
    render(): JSX.Element | null;
}
