/// <reference types="react" />
import { WebpubManifest } from './WebpubManifestTypes/WebpubManifest';
export { WebpubManifest };
export declare const EpubMimeType = "application/epub";
export declare const WebpubMimeType = "application/webpub";
export declare type ColorMode = 'night' | 'sepia' | 'day';
export declare type FontFamily = 'publisher' | 'serif' | 'sans-serif' | 'open-dyslexic';
export declare type Navigator = {
    goForward: () => void;
    goBackward: () => void;
    setColorMode: (mode: ColorMode) => Promise<void>;
    setScroll: (val: 'scrolling' | 'paginated') => Promise<void>;
    increaseFontSize: () => Promise<void>;
    decreaseFontSize: () => Promise<void>;
    setFontFamily: (family: FontFamily) => Promise<void>;
    goToPage: (href: string) => void;
};
export declare type PdfNavigator = Navigator;
export declare type HtmlNavigator = Navigator;
export declare type ReaderState = {
    colorMode: ColorMode;
    isScrolling: boolean;
    fontSize: number;
    fontFamily: FontFamily;
    currentTocUrl: string | null;
};
export declare type PdfReaderState = ReaderState;
export declare type HtmlReaderState = ReaderState;
export declare type InactiveReader = null;
export declare type LoadingReader = {
    isLoading: true;
    content: JSX.Element;
    navigator: null;
    state: null;
    manifest: null;
    type: null;
};
declare type CommonReader = {
    isLoading: false;
    content: JSX.Element;
    manifest: WebpubManifest;
};
export declare type PDFActiveReader = CommonReader & {
    state: PdfReaderState;
    navigator: PdfNavigator;
    type: 'PDF';
};
export declare type HTMLActiveReader = CommonReader & {
    state: HtmlReaderState;
    navigator: HtmlNavigator;
    type: 'HTML';
};
export declare type ActiveReader = PDFActiveReader | HTMLActiveReader;
export declare type ReaderReturn = InactiveReader | LoadingReader | ActiveReader;
export declare type GetContent = (href: string) => Promise<string>;
export declare type UseWebReaderArguments = {
    webpubManifestUrl: string;
    proxyUrl?: string;
    getContent?: GetContent;
};
export declare type ActiveReaderArguments = UseWebReaderArguments & {
    manifest: WebpubManifest;
};
export declare type InactiveReaderArguments = undefined;
export declare type ReaderArguments = ActiveReaderArguments | InactiveReaderArguments;
export declare type GetColor = (light: string, dark: string, sepia: string) => string;
