import * as React from "react";
import { Store } from "redux";
import { State } from "../state";
import { ComputeBreadcrumbs } from "./Breadcrumbs";
import { CollectionData, BookData, StateProps, NavigateContext, BasicAuthCallback, BasicAuthLabels } from "../interfaces";
export interface HeaderProps extends React.Props<any> {
    collectionTitle: string;
    bookTitle: string;
    loansUrl?: string;
    isSignedIn: boolean;
    showBasicAuthForm: (callback: BasicAuthCallback, labels: BasicAuthLabels, title: string) => void;
    clearBasicAuthCredentials: () => void;
}
export interface FooterProps extends React.Props<any> {
    collection: CollectionData;
}
export interface BookDetailsContainerProps extends React.Props<any> {
    bookUrl: string;
    collectionUrl: string;
    refreshCatalog: () => Promise<any>;
    book: BookData;
}
export interface RootProps extends StateProps {
    store?: Store<State>;
    collectionUrl?: string;
    bookUrl?: string;
    proxyUrl?: string;
    dispatch?: any;
    setCollectionAndBook?: (collectionUrl: string, bookUrl: string) => Promise<any>;
    clearCollection?: () => void;
    clearBook?: () => void;
    fetchSearchDescription?: (url: string) => void;
    closeError?: () => void;
    fetchBook?: (bookUrl: string) => Promise<any>;
    refreshCollectionAndBook?: () => Promise<any>;
    retryCollectionAndBook?: () => Promise<any>;
    pageTitleTemplate?: (collectionTitle: string, bookTitle: string) => string;
    headerTitle?: string;
    fetchPage?: (url: string) => Promise<any>;
    Header?: new () => __React.Component<HeaderProps, any>;
    Footer?: new () => __React.Component<FooterProps, any>;
    BookDetailsContainer?: new () => __React.Component<BookDetailsContainerProps, any>;
    computeBreadcrumbs?: ComputeBreadcrumbs;
    updateBook?: (url: string) => Promise<BookData>;
    fulfillBook?: (url: string) => Promise<Blob>;
    indirectFulfillBook?: (url: string, type: string) => Promise<string>;
    fetchLoans?: (url: string) => Promise<any>;
    saveBasicAuthCredentials?: (credentials: string) => void;
    clearBasicAuthCredentials?: () => void;
    showBasicAuthForm?: (callback: BasicAuthCallback, labels: BasicAuthLabels, title: string) => void;
    closeErrorAndHideBasicAuthForm?: () => void;
}
export declare class Root extends React.Component<RootProps, any> {
    context: NavigateContext;
    static contextTypes: React.ValidationMap<RootProps>;
    render(): JSX.Element;
    componentWillMount(): Promise<void>;
    componentDidMount(): void;
    componentWillReceiveProps(nextProps: RootProps): void;
    updatePageTitle(props: any): void;
    handleKeyDown(event: any): void;
    showPrevBook(): void;
    showNextBook(): void;
    showRelativeBook(relativeIndex: number): void;
    loanedBookData(): BookData;
}
declare const ConnectedRoot: React.ComponentClass<any>;
export default ConnectedRoot;
