import * as react_native from 'react-native';
import { ViewProps } from 'react-native';
import { BaseDocumentEngine } from '@papyrus-sdk/core';
import { DocumentSource, TextItem, TextSelection, OutlineItem, SearchResult } from '@papyrus-sdk/types';

type PapyrusPageViewProps = ViewProps & {
    engineId?: string;
};
declare const PapyrusPageView: react_native.HostComponent<PapyrusPageViewProps>;
declare class NativeDocumentEngine extends BaseDocumentEngine {
    private nativeModule;
    private engineId;
    private pageCount;
    private currentPage;
    private zoom;
    private rotation;
    constructor();
    load(source: DocumentSource): Promise<void>;
    getPageCount(): number;
    getCurrentPage(): number;
    goToPage(page: number): void;
    setZoom(zoom: number): void;
    getZoom(): number;
    rotate(direction: 'clockwise' | 'counterclockwise'): void;
    getRotation(): number;
    renderPage(pageIndex: number, target: any, scale: number): Promise<void>;
    renderTextLayer(pageIndex: number, target: any, scale: number): Promise<void>;
    getTextContent(pageIndex: number): Promise<TextItem[]>;
    getPageDimensions(pageIndex: number): Promise<{
        width: number;
        height: number;
    }>;
    selectText(pageIndex: number, rect: {
        x: number;
        y: number;
        width: number;
        height: number;
    }): Promise<TextSelection | null>;
    getOutline(): Promise<OutlineItem[]>;
    searchText(query: string): Promise<SearchResult[]>;
    getPageIndex(dest: any): Promise<number | null>;
    destroy(): void;
    private assertNativeModule;
    private normalizeSource;
    private isUriSource;
    private isDataSource;
    private isFileLike;
    private toNativeViewTag;
}

export { NativeDocumentEngine, PapyrusPageView, type PapyrusPageViewProps };
