import * as React from 'react';
export declare type ZeroIndexedNumber = number;
export interface IButtonOption<T> {
    disabled?: boolean;
    label: string;
    value?: T;
    onClick?(): void;
}
export interface IButtonOptions<T> {
    options: Array<IButtonOption<T>>;
    value: T;
    className?: string;
}
export declare class ButtonOptions<T> extends React.PureComponent<IButtonOptions<T>> {
    render(): JSX.Element;
}
export interface IPagination {
    data?: any[];
    manual?: boolean;
    page: ZeroIndexedNumber;
    pages: number;
    showPageSizeOptions?: boolean;
    pageSizeOptions: number[];
    pageSize: number;
    totalCount?: number;
    showPageJump?: boolean;
    canPrevious?: boolean;
    canNext?: boolean;
    nextText?: string;
    ofText?: string;
    rowsText?: string;
    className?: string;
    onPageChange(page: ZeroIndexedNumber): void;
    onPageSizeChange(page: number): void;
}
export interface IPaginationState {
    page: ZeroIndexedNumber;
}
export declare class Pagination extends React.Component<IPagination, IPaginationState> {
    static defaultProps: Partial<IPagination>;
    state: IPaginationState;
    componentDidUpdate(prevProps: IPagination): void;
    render(): JSX.Element | null;
    private renderPageStats;
    private renderEntryStats;
    private limitPage;
    private setPage;
    private onFirstClick;
    private onLastClick;
    private onPreviousClick;
    private onNextClick;
    private getPageButtonIndices;
    private getPages;
    private getPageSizeOptions;
}
