/// <reference types="react" />
import * as React from 'react';
import { StyleDeclaration } from 'aphrodite';
export interface PageControllerStyle extends StyleDeclaration {
    PageController: React.CSSProperties;
    controllerContainer: React.CSSProperties;
    contentContainer: React.CSSProperties;
    controllerButton: React.CSSProperties;
    disabledControllerButton: React.CSSProperties;
    pageNumberText: React.CSSProperties;
}
export declare const defaultPageControllerStyle: PageControllerStyle;
export interface PageInfo<T> {
    render: (props: T) => JSX.Element;
    props?: any;
}
export interface PageControllerProps {
    styles?: Partial<PageControllerStyle>;
    prevButtonText?: string;
    nextButtonText?: string;
    onNextPageClick?: (activeIndex: number) => void;
    onPrevPageClick?: (activeIndex: number) => void;
    pages: PageInfo<Partial<{
        active: boolean;
    }>>[];
    onPageChange?: (page: number) => void;
    renderPageController?: (state: PageControllerState, props: PageControllerProps, onNextPageClick: any, onPrevPageClick: any) => any;
    renderHeaderContainer?: (state: PageControllerState, props: PageControllerProps) => any;
}
export interface PageControllerState {
    activePageIndex: number;
}
export declare class PageController extends React.Component<PageControllerProps, PageControllerState> {
    constructor(props: PageControllerProps);
    render(): JSX.Element;
    componentWillReceiveProps(nextProps: PageControllerProps): void;
    private renderPageController;
    private onNextPage;
    private onPrevPage;
}
export default PageController;
