import React, { ReactNode } from 'react';
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;
    beforeChange?: (page: number, pageSize: number) => Promise<boolean | undefined> | boolean | undefined | 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], counting?: boolean) => React.ReactNode);
    showPager?: boolean;
    hideOnSinglePage?: boolean;
    simple?: boolean;
    quickJumperPosition?: QuickJumperPosition;
}
export default class Pagination extends DataSetComponent<PaginationProps> {
    static displayName: string;
    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): Promise<void>;
    handlePagerClick(page: any): void;
    getValidValue(value: any): any;
    jumpPage(page: any): Promise<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;
}
