import { PDFPageProxy } from 'pdfjs-dist';
import { DocumentInitParameters, PDFDataRangeTransport, PDFDocumentProxy, TypedArray } from 'pdfjs-dist/types/src/display/api';
import { PageViewport } from 'pdfjs-dist/types/web/interfaces';
import { Dispatch, FC, PropsWithChildren, SetStateAction } from 'react';
export interface DocumentContextType {
    pdf?: PDFDocumentProxy;
    pages: Map<number, PdfPage>;
    pdfSrc?: PDFSrc;
    setPdfSrc: React.Dispatch<React.SetStateAction<RPSrc | undefined>>;
    pdfProperties?: PdfProperties;
    setFilename: React.Dispatch<React.SetStateAction<string | undefined>>;
    filename?: string | null;
    loading: boolean;
    loaderProgress: number;
    error: ErrorType | unknown;
}
export declare enum AnnotationSubType {
    Text = 1,
    Link = 2,
    FreeText = 3,
    Line = 4,
    Square = 5,
    Circle = 6,
    Polygon = 7,
    Polyline = 8,
    Highlight = 9,
    Underline = 10,
    Squiggly = 11,
    StrikeOut = 12,
    Stamp = 13,
    Caret = 14,
    Ink = 15,
    Popup = 16,
    FileAttachment = 17,
    Widget = 20
}
export declare enum AnnotationType {
    INTERNAL_LINK = "internal-link",
    LINK = "link",
    FILE_ATTACHMENT = "file-attachment",
    FORM_TEXT = "form-text",
    FORM_SELECT = "form-select",
    FORM_CHECKBOX = "form-checkbox",
    FORM_RADIO = "form-radio",
    FORM_BUTTON = "form-button",
    BUTTON = "button"
}
export declare enum ErrorType {
    NOT_SUPPORTED = "not-supported"
}
export interface AnnotationEventPayload {
    type: AnnotationType;
    data: any;
}
interface AnnotationPoint {
    x: number;
    y: number;
}
export interface OutlineRef {
    gen: number;
    num: number;
}
export interface OutlineDestinationName {
    name: string;
}
export type OutlineDestination = [
    OutlineRef | number,
    OutlineDestinationName,
    ...any[]
];
export type OutlineDestinationType = string | OutlineDestination;
export declare enum ZoomLevel {
    ACTUAL = "Actual Size",
    PAGE_FIT = "Page Fit",
    PAGE_WIDTH = "Page Width"
}
export type Localization = {
    searchButtonTooltip?: string;
    searchInputPlaceholder?: string;
    searchInputTooltip?: string;
    searchPrevTooltip?: string;
    searchNextTooltip?: string;
    searchCloseButtonTooltip?: string;
    searchMatchCaseLabel?: string;
    searchMatchCaseTooltip?: string;
    searchWholeWordsLabel?: string;
    searchWholeWordsTooltip?: string;
    previousPageTooltip?: string;
    currentPageTooltip?: string;
    nextPageTooltip?: string;
    zoomOutTooltip?: string;
    zoomInTooltip?: string;
    zoomSelectTooltip?: string;
    zoomActualSize?: string;
    zoomPageFit?: string;
    zoomPageWidth?: string;
    themeEnableDarkTooltip?: string;
    themeEnableLightTooltip?: string;
    openLocalFileLabel?: string;
    openLocalFileTooltip?: string;
    downloadFileLabel?: string;
    downloadFileTooltip?: string;
    printLabel?: string;
    printTooltip?: string;
    printLoadingMessage?: string;
    printCancelLabel?: string;
    fullScreenLabel?: string;
    fullScreenTooltip?: string;
    moreOptionTooltip?: string;
    firstPageLabel?: string;
    firstPageTooltip?: string;
    lastPageLabel?: string;
    lastPageTooltip?: string;
    rotateClockwiseLabel?: string;
    rotateClockwiseTooltip?: string;
    rotateCounterclockwiseLabel?: string;
    rotateCounterclockwiseTooltip?: string;
    textSelectionLabel?: string;
    textSelectionTooltip?: string;
    handToolLabel?: string;
    handToolTooltip?: string;
    pageScrollingLabel?: string;
    pageScrollingTooltip?: string;
    verticalScrollingLabel?: string;
    verticalScrollingTooltip?: string;
    horizontalLabel?: string;
    horizontalTooltip?: string;
    singlePageLabel?: string;
    singlePageTooltip?: string;
    dualPageLabel?: string;
    dualPageTooltip?: string;
    documentPropertiesLabel?: string;
    documentPropertiesTooltip?: string;
    propertiesFilenameLabel?: string;
    propertiesFileSizeLabel?: string;
    propertiesTitleLabel?: string;
    propertiesAuthorLabel?: string;
    propertiesSubjectLabel?: string;
    propertiesKeywordLabel?: string;
    propertiesCreatorLabel?: string;
    propertiesCreateOnLabel?: string;
    propertiesModifiedOnLabel?: string;
    propertiesPDFProducerLabel?: string;
    propertiesPDFVersionLabel?: string;
    propertiesPageCountLabel?: string;
    thumbnailTooltip?: string;
    passwordModalTitle?: string;
    passwordModalMessage?: string;
    passwordPlaceholder?: string;
    passwordConfirmLabel?: string;
    passwordError?: string;
    dragDropFileMessage?: string;
};
interface Attachment {
    content: Uint8Array;
    filename: string;
}
export interface Annotation {
    annotationType: number;
    color?: Uint8ClampedArray;
    dest: OutlineDestinationType;
    hasAppearance: boolean;
    id: string;
    rect: number[];
    subtype: string;
    borderStyle: {
        dashArray: number[];
        horizontalCornerRadius: number;
        style: number;
        verticalCornerRadius: number;
        width: number;
    };
    hasPopup?: boolean;
    contents?: string;
    contentsObj?: {
        dir: string;
        str: string;
    };
    modificationDate?: string;
    quadPoints?: AnnotationPoint[][];
    title?: string;
    titleObj?: {
        dir: string;
        str: string;
    };
    parentId?: string;
    parentType?: string;
    file?: Attachment;
    inkLists?: AnnotationPoint[][];
    lineCoordinates: number[];
    action?: string;
    unsafeUrl?: string;
    url?: string;
    newWindow?: boolean;
    vertices?: AnnotationPoint[];
    name?: string;
    fieldType: string;
    pushButton: boolean;
}
export interface Destination {
    pageIndex: number;
    bottomOffset: number | DestinationOffsetFromViewport;
    leftOffset: number | DestinationOffsetFromViewport;
    label?: string;
    scaleTo?: number;
}
export type DestinationOffsetFromViewport = (viewportWidth: number, viewportHeight: number) => number;
export interface OutlineRef {
    gen: number;
    num: number;
}
export interface RotateContextType {
    rotate: number;
    setRotate: React.Dispatch<React.SetStateAction<number>>;
}
export interface RPThemeContextType extends PropsWithChildren {
    customVariables?: Partial<Record<ThemeVariables, string>>;
    customDarkVariables?: Partial<Record<ThemeVariables, string>>;
}
export interface DarkModeProps {
    darkMode: boolean;
    setDarkMode: Dispatch<React.SetStateAction<boolean>>;
}
export interface DarkMode extends DarkModeProps {
    onDarkModeChange: (value: boolean) => void;
}
export interface renderOptions {
    scale?: number;
    rotate?: number;
    renderForms?: boolean;
}
export interface License {
    validating?: boolean;
    isValid: boolean;
    invalidatedMessage?: string;
    type?: LicenseType;
}
export declare enum LicenseType {
    Organization = "organization",
    Developer = "developer",
    FreeTrial = "free-trial"
}
export type DecryptedLicense = {
    exp: number;
    avu: number;
    t: LicenseType;
    dmt: 'specific' | 'wildcard';
    dm: string;
    n: string;
};
export interface PdfPage {
    page: PDFPageProxy;
    thumbnailViewport: PageViewport;
    thumbnailScale: number;
    defaultRotation: number;
}
export interface SetPageResult {
    success: boolean;
    currentPage: number;
}
export interface PageControl {
    focusedPage: number;
    setFocusedPage: (page: number | string) => void;
    goToPage: (page: number | string) => SetPageResult;
    totalPages: number;
    setTotalPages: (page: number) => void;
    nextPage: () => void;
    prevPage: () => void;
}
export interface PageControlContextType extends PageControl {
}
export interface ThumbnailContextType {
    thumbnailPages: Record<number, ThumbnailRenderedList>;
    addPage: (page: number) => void;
    addToPage: (page: number) => void;
    thumbnailLength: number;
    active: boolean;
    setActive: React.Dispatch<React.SetStateAction<boolean>>;
}
export interface FileDragDropControl {
    dragging: boolean;
    handleDragLeave: (event: React.DragEvent) => void;
    handleDragEnter: (event: React.DragEvent) => void;
    handleDrop: (event: React.DragEvent) => void;
}
export interface ThumbnailRenderedList {
    loading: boolean;
    page: PDFPageProxy;
    thumbnailSrc?: string;
    viewport: PageViewport;
    scale: number;
    defaultRotation: number;
}
export declare enum ViewMode {
    SINGLE_PAGE = "Single",
    DUAL_PAGE = "Dual"
}
export type PDFSrc = string | URL | TypedArray | PDFDataRangeTransport | DocumentInitParameters | undefined | null;
export type RPSrc = Omit<PDFSrc, 'DocumentInitParameters' | 'PDFDataRangeTransport'>;
export interface FullScreenToolProps {
    isFullScreen: boolean;
    toggleFullScreen: () => void;
    isSupported?: boolean;
}
export interface OpenFileToolProps {
    openFile: () => void;
}
export interface DownloadToolProps {
    download: () => void;
}
export interface PageNavigationToolProps {
    total: number;
    current: number;
    nextPage: () => void;
    prevPage: () => void;
    changePage: (page: number) => void;
    goToPage: (page: number) => SetPageResult;
}
export interface PreparePrintProgress {
    loadedPages: number;
    totalPages: number;
    percentage: number;
}
export interface PrintToolProps {
    print: () => void;
    cancel: () => void;
    setOnProgress: (callback: (progress: PreparePrintProgress) => void) => void;
    setOnComplete: (callback: () => void) => void;
    setOnError: (callback: (error: Error) => void) => void;
    progress: PreparePrintProgress;
}
export interface ThumbnailToolProps {
    onClick: () => void;
    active: boolean;
}
export interface RPSlots extends RPHorizontalBarSlots, RPVerticalBarSlots {
    sidebarEnable?: boolean;
}
export interface RPIcons extends RPHorizontalBarIcons, RPVerticalBarIcons {
}
export interface PdfProperties {
    filename: string;
    fileSize: string;
    title: string;
    author: string;
    subject: string;
    keywords: string;
    creator: string;
    createdOn: string;
    modifiedOn: string;
    pdfProducer: string;
    pdfVersion: string;
    pageCount?: number;
}
export interface ConfigContextType {
    workerUrlAdded: boolean;
}
export declare enum ThemeVariables {
    FONT_FAMILY = "--rp-font-family",
    PRIMARY_COLOR = "--rp-primary-color",
    BORDER_RADIUS = "--rp-border-radius",
    TEXT_COLOR = "--rp-text-color",
    OUTLINE_COLOR = "--rp-outline-color",
    FONT_SIZE = "--rp-font-size",
    DROP_MASK_BACKGROUND_COLOR = "--rp-drop-mask-background-color",
    LOADER_BACKDROP_COLOR = "--rp-loader-backdrop-color",
    ICON_DISABLED = "--rp-icon-disabled",
    ICON_FONT_SIZE = "--rp-icon-font-size",
    TOOLBAR_BACKGROUND = "--rp-toolbar-background",
    TOOLBAR_BORDER_COLOR = "--rp-toolbar-border-color",
    TOOLBAR_PADDING = "--rp-toolbar-padding",
    TOOLBAR_GAP = "--rp-toolbar-gap",
    TOOLBAR_SIZE = "--rp-toolbar-size",
    SIDEBAR_WIDTH = "--rp-sidebar-width",
    THUMBNAIL_BORDER_COLOR = "--rp-thumbnail-border-color",
    THUMBNAIL_BACKGROUND_COLOR = "--rp-thumbnail-background-color",
    THUMBNAIL_ACTIVE_COLOR = "--rp-thumbnail-active-color",
    THUMBNAIL_PADDING_Y = "--rp-thumbnail-padding-y",
    BUTTON_HOVER_BACKGROUND = "--rp-button-hover-background",
    BUTTON_PADDING = "--rp-button-padding",
    INPUT_PADDING = "--rp-input-padding",
    INPUT_BORDER_RADIUS = "--rp-input-border-radius",
    INPUT_BACKGROUND_COLOR = "--rp-input-background-color",
    INPUT_PLACEHOLDER_COLOR = "--rp-input-placeholder-color",
    PAGES_BACKGROUND_COLOR = "--rp-pages-background-color",
    ANNOTATION_LAYER_LINK_HOVER_BACKGROUND = "--rp-annotation-layer__link-hover-background",
    DROPDOWN_BACKGROUND_COLOR = "--rp-dropdown-background-color",
    DROPDOWN_PADDING = "--rp-dropdown-padding",
    DROPDOWN_HOVER_BACKGROUND_COLOR = "--rp-dropdown-hover-background-color",
    DROPDOWN_SEPARATOR_COLOR = "--rp-dropdown-separator-color",
    DROPDOWN_SEPARATOR_MARGIN = "--rp-dropdown-separator-margin",
    DROPDOWN_PADDING_MENU_ITEM = "--rp-dropdown-padding-menu-item",
    DROPDOWN_FONT_SIZE = "--rp-dropdown-font-size",
    DROPDOWN_BORDER_RADIUS = "--rp-dropdown-border-radius",
    SEARCH_TOOL_DROPDOWN_PADDING = "--rp-search-tool-dropdown-padding",
    POPOVER_FONT_SIZE = "--rp-popover-font-size",
    POPOVER_BACKGROUND_COLOR = "--rp-popover-background-color",
    POPOVER_COLOR = "--rp-popover-color",
    POPOVER_BORDER_COLOR = "--rp-popover-border-color",
    POPOVER_BORDER_RADIUS = "--rp-popover-border-radius",
    OVERLAY_BACKGROUND_COLOR = "--rp-overlay-background-color",
    DIALOG_BACKGROUND_COLOR = "--rp-dialog-background-color",
    PROPERTIES_DIVIDER_COLOR = "--rp-properties-divider-color",
    PROPERTIES_DIVIDER_MARGIN = "--rp-properties-divider-margin",
    PROPERTY_ITEM_GAP = "--rp-property-item-gap",
    DIALOG_TITLE_COLOR = "--rp-dialog-title-color",
    PROPERTY_ITEM_LABEL_COLOR = "--rp-property-item-label-color",
    PROPERTY_CLOSE_ICON_SIZE = "--rp-property-close-icon-size",
    PROPERTY_ITEM_FONT_SIZE = "--rp-property-item-font-size",
    PROPERTY_ITEM_FONT_WEIGHT = "--rp-property-item-font-weight",
    DIALOG_TITLE_FONT_SIZE = "--rp-dialog-title-font-size",
    DIALOG_TITLE_FONT_WEIGHT = "--rp-dialog-title-font-weight",
    MENU_ITEM_ICON_SIZE = "--rp-menu-item-icon-size",
    PRINT_PROGRESS_BACKGROUND = "--rp-print-progress-background",
    PRINT_PROGRESS_COLOR = "--rp-print-progress-color",
    DROP_ZONE_BORDER = "--rp-drop-zone-border",
    DROP_ZONE_FONT_COLOR = "--rp-drop-zone-font-color",
    DROP_ZONE_FONT_SIZE = "--rp-drop-zone-font-size",
    DROP_ZONE_BACKGROUND_COLOR = "--rp-drop-zone-background-color",
    CHECKBOX_BORDER_RADIUS = "--rp-checkbox-border-radius",
    CHECKBOX_BORDER_COLOR = "--rp-checkbox-border-color",
    CHECKBOX_INDICATOR_COLOR = "--rp-checkbox-indicator-color",
    HIGHLIGHT_BACKGROUND_COLOR = "--rp-highlight-background-color",
    TEXT_LAYER_HIGHLIGHT_BORDER_RADIUS = "--rp-text-layer-highlight-border-radius",
    CURRENT_HIGHLIGHT_BACKGROUND_COLOR = "--rp-current-highlight-background-color",
    TOOLTIP_BACKGROUND_COLOR = "--rp-tooltip-background-color",
    TOOLTIP_BORDER_RADIUS = "--rp-tooltip-border-radius",
    TOOLTIP_FONT_COLOR = "--rp-tooltip-font-color",
    TOOLTIP_FONT_SIZE = "--rp-tooltip-font-size",
    TOOLTIP_PADDING = "--rp-tooltip-padding",
    PASSWORD_MODAL_BACKGROUND_COLOR = "--rp-password-background-color",
    PASSWORD_MODAL_TITLE_FONT_COLOR = "--rp-password-title-font-color",
    PASSWORD_MODAL_CONTENT_FONT_COLOR = "--rp-password-content-font-color",
    PASSWORD_MODAL_INPUT_PLACEHOLDER_COLOR = "--rp-password-input-placeholder-color",
    PASSWORD_MODAL_INPUT_BORDER_COLOR = "--rp-password-input-border-color",
    PASSWORD_MODAL_INPUT_FONT_COLOR = "--rp-password-input-font-color",
    PASSWORD_MODAL_BUTTON_FONT_COLOR = "--rp-password-button-font-color",
    PASSWORD_MODAL_BUTTON_BACKGROUND_COLOR = "--rp-password-button-background-color",
    PASSWORD_MODAL_BUTTON_BORDER_COLOR = "--rp-password-button-border-color",
    PASSWORD_MODAL_BORDER_COLOR = "--rp-password-border-color",
    CONTAINER_FOCUS_OUTLINE_WIDTH = "--rp-container-focus-outline-width",
    CONTAINER_FOCUS_OUTLINE_COLOR = "--rp-container-focus-outline-color",
    CONTAINER_FOCUS_OUTLINE_OFFSET = "--rp-container-focus-outline-offset",
    BUTTON_BORDER_RADIUS = "--rp-button-border-radius"
}
export interface DarkModeProviderProps extends PropsWithChildren, Partial<Omit<DarkMode, 'setDarkMode'>> {
}
export interface RotateProviderProps extends PropsWithChildren {
    initialRotation?: number;
}
export interface LayerProviderProps extends PropsWithChildren {
    textLayer?: boolean;
}
export type RPThemeProps = RPThemeContextType;
export interface CharacterMap {
    url: string;
    isCompressed: boolean;
}
export interface RPProviderProps extends PropsWithChildren, LoadPDFOptions, RPControllerProps {
    src: RPSrc;
    workerUrl?: string;
    characterMap?: CharacterMap;
}
export type LocalizationMap = Record<string, Localization>;
export interface RPControllerProps extends PropsWithChildren, DarkModeProviderProps, RotateProviderProps, LayerProviderProps, ZoomProviderProps, PageProviderProps, ViewModeProps, ScrollModeProps {
    initialSearch?: string;
    initialThumbnailsVisible?: boolean;
    locale?: string;
    localization?: LocalizationMap;
    downloadFilename?: string;
}
export interface RPConfigProps extends Omit<ConfigContextType, 'workerUrlAdded'>, RPThemeContextType, PropsWithChildren {
    workerUrl?: string;
    licenseKey?: string;
}
export interface RPDefaultLayoutProps extends PropsWithChildren, ViewportProps {
    slots?: RPSlots;
    icons?: RPIcons;
    style?: React.CSSProperties;
    className?: string;
    onLoaded?: () => void;
    cleanupOnLoaded?: () => void;
}
export interface RPLayoutProps extends PropsWithChildren, ViewportProps {
    toolbar?: boolean | Partial<ToolbarProps>;
    style?: React.CSSProperties;
    className?: string;
    onLoaded?: () => void;
    cleanupOnLoaded?: () => void;
}
export interface DimensionPagesContextType {
    widths: number[];
    heights: number[];
    setWidths: React.Dispatch<React.SetStateAction<number[]>>;
    setHeights: React.Dispatch<React.SetStateAction<number[]>>;
}
export interface ZoomContextType {
    zoomLevel: number | ZoomLevel;
    currentZoom: number;
    setZoomLevel: (callback: number | ZoomLevel | ((prev: number) => number | ZoomLevel)) => void;
}
export type ZoomProps = Omit<ZoomContextType, 'currentZoom'>;
export type InitialStateContextType = {
    instanceId: string;
} & ZoomProviderProps & PageProviderProps & ViewModeProps & ScrollModeProps & RotateProviderProps;
export interface ZoomProviderProps {
    initialScale?: number | ZoomLevel;
}
export interface PageProviderProps {
    initialPage?: number;
}
export interface ViewModeContextType {
    columnCount: number;
    setSinglePage: () => void;
    setDualPage: () => void;
    viewMode: ViewMode;
}
export interface ViewModeProps {
    initialViewMode?: ViewMode;
}
export interface ViewportProps {
    mobileWidth?: number;
    onLayoutWidthChange?: (isMobileScreen: boolean, currentWidth: number) => void;
}
export declare enum ScrollMode {
    PAGE_SCROLLING = "PAGE",
    VERTICAL_SCROLLING = "VERTICAL",
    HORIZONTAL_SCROLLING = "HORIZONTAL"
}
export interface ScrollModeContextType {
    scrollMode: ScrollMode;
    setScrollMode: (mode: ScrollMode) => void;
}
export interface ScrollModeProps {
    initialScrollMode?: ScrollMode;
}
export interface WordPositionRect {
    left: number;
    top: number;
    width: number;
    height: number;
}
export interface Match {
    start: {
        idx: number;
        offset: number;
    };
    end: {
        idx: number;
        offset: number;
    };
    str: string;
    oIndex: number;
    pageIndex: number;
    rect: WordPositionRect;
}
export interface MatchValue extends Match {
    page: number;
    pageMatchIdx: number;
}
export interface SearchOptions {
    matchCase?: boolean;
    wholeWords?: boolean;
}
export type TextItem = {
    /**
     * - Text content.
     */
    str: string;
    /**
     * - Text direction: 'ttb', 'ltr' or 'rtl'.
     */
    dir: string;
    /**
     * - Transformation matrix.
     */
    transform: Array<any>;
    /**
     * - Width in device space.
     */
    width: number;
    /**
     * - Height in device space.
     */
    height: number;
    /**
     * - Font name used by PDF.js for converted font.
     */
    fontName: string;
    /**
     * - Indicating if the text content is followed by a
     * line-break.
     */
    hasEOL: boolean;
};
export interface SearchContextType {
    search: string;
    setSearch: Dispatch<SetStateAction<string>>;
    loading: boolean;
    matches: MatchValue[];
    totalMatches: number;
    currentMatchPosition: number;
    currentMatch: MatchValue | null;
    nextMatch: () => void;
    prevMatch: () => void;
    searchOptions: SearchOptions;
    setSearchOptions: Dispatch<SetStateAction<SearchOptions>>;
    currentMatchElement: HTMLElement | null;
    setCurrentMatchElement: Dispatch<SetStateAction<HTMLElement | null>>;
}
export declare enum SelectionMode {
    TEXT = "TEXT",
    HAND = "HAND"
}
export interface SelectionModeContextType {
    selectionMode: SelectionMode;
    setSelectionMode: (mode: SelectionMode) => void;
}
export interface SelectionModeProps {
    initialSelectionMode?: SelectionMode;
}
export type LoaderImage = JSX.Element | string;
export interface LoadPDFOptions {
    onLoadError?: (error: any) => void;
    onLoaded?: (pdfDocument: PDFDocumentProxy) => void;
    loaderImage?: LoaderImage;
}
export interface ScrollPosition {
    left: number;
    top: number;
}
export declare const Locales: LocalizationMap;
export interface LocalizationContextType {
    localeMessages?: Localization;
}
export interface LocalizationProps {
    locale?: string;
    localization?: LocalizationMap;
}
export interface LoaderContextType {
    LoaderImageComponent?: React.FC;
}
export interface TextHighlight {
    keyword: string | RegExp;
    highlightColor: string;
    options?: SearchOptions;
}
export interface UseHighlight {
    highlight: (value: TextHighlight[]) => Promise<void>;
    highlightMatches: MatchHighlight[];
    highlightKeywords: TextHighlight[] | undefined;
    clear: () => void;
}
export interface useElementPage {
    updateElement: (pageNumber: number, element: (prevElements: Array<HTMLElement | JSX.Element>, dimension: {
        width: number;
        height: number;
    }, rotate: number, zoomLevel: number) => Array<HTMLElement | JSX.Element>) => void;
    removeElement: (pageNumber: number, index: number) => void;
    clearElements: (pageNumber: number) => void;
    elementList: Record<number, Array<HTMLElement | JSX.Element>>;
}
export interface MatchHighlight extends MatchValue {
    keyword: string | RegExp;
    color: string;
}
export interface FlagKeyword {
    keyword: string;
    matchCase?: boolean;
    wholeWords?: boolean;
}
export type SingleKeyword = string | RegExp | FlagKeyword;
export interface NormalizedKeyword {
    keyword: string;
    regExp: RegExp;
    wholeWords: boolean;
    color?: string;
}
export interface MatchRangeIndex {
    keyword: RegExp;
    startIndex: number;
    endIndex: number;
}
export interface HighlightArea {
    keywordStr: string;
    left: number;
    top: number;
    height: number;
    width: number;
    pageHeight: number;
    pageWidth: number;
    highlightColor?: string;
}
export interface CharacterIndex {
    char: string;
    charIdxInSpan: number;
    spanIdx: number;
}
export interface ToolbarLayoutProps {
    children: React.ReactNode;
    toolbar?: boolean | Partial<ToolbarProps>;
}
export interface ToolProps {
    icon?: React.ReactNode;
}
export interface ThemeSwitcherToolProps {
    icons?: {
        lightModeIcon?: React.ReactNode;
        darkModeIcon?: React.ReactNode;
    };
}
export interface ToolbarSection {
    component: React.ReactNode;
}
export interface ToolbarProps {
    topbar: boolean | Partial<ToolbarSection>;
    leftSidebar: boolean | Partial<ToolbarSection>;
}
export interface RPHorizontalBarSlots {
    themeSwitcher?: boolean | FC<Omit<DarkModeProps, 'onDarkModeChange'>>;
    documentProperties?: boolean;
    rotateTool?: boolean;
    fullscreenTool?: boolean | FC<FullScreenToolProps>;
    openFileTool?: boolean | FC<OpenFileToolProps>;
    dropFileZone?: boolean | React.ReactNode | React.ComponentType;
    downloadTool?: boolean | FC<DownloadToolProps>;
    zoomTool?: boolean | FC<ZoomProps>;
    viewModeTool?: boolean;
    scrollModeTool?: boolean;
    pageNavigationTool?: boolean | FC<PageNavigationToolProps>;
    printTool?: boolean | FC<PrintToolProps>;
    containerWidthSm?: number;
    showPrintProgress?: boolean;
    selectionModeTool?: boolean;
    searchTool?: boolean;
    jumpNavigationTool?: boolean;
}
export interface RPHorizontalBarIcons {
    goToFirstPageIcon?: React.ReactNode;
    goToLastPageIcon?: React.ReactNode;
    lightModeIcon?: React.ReactNode;
    darkModeIcon?: React.ReactNode;
    nextIcon?: React.ReactNode;
    prevIcon?: React.ReactNode;
    fullScreenIcon?: React.ReactNode;
    downloadIcon?: React.ReactNode;
    zoomInIcon?: React.ReactNode;
    zoomOutIcon?: React.ReactNode;
    openFileIcon?: React.ReactNode;
    rotateClockwiseIcon?: React.ReactNode;
    rotateCounterClockwiseIcon?: React.ReactNode;
    singlePageIcon?: React.ReactNode;
    dualPageIcon?: React.ReactNode;
    pageScrollIcon?: React.ReactNode;
    verticalScrollIcon?: React.ReactNode;
    horizontalScrollIcon?: React.ReactNode;
    documentPropertiesIcon?: React.ReactNode;
    printIcon?: React.ReactNode;
    searchIcon?: React.ReactNode;
    textSelectionIcon?: React.ReactNode;
    handModeIcon?: React.ReactNode;
}
export interface RPHorizontalBarProps {
    slots?: RPHorizontalBarSlots;
    icons?: RPHorizontalBarIcons;
}
export interface RPVerticalBarSlots {
    thumbnailTool?: boolean | FC<ThumbnailToolProps>;
}
export interface RPVerticalBarIcons {
    thumbnailIcon?: React.ReactNode;
}
export interface RPVerticalBarProps {
    slots?: RPVerticalBarSlots;
    icons?: RPVerticalBarIcons;
}
export {};
