import React from 'react';
import type { PDFDocumentProxy } from '@orca-fe/pdfjs-dist-browserify';
import type { SetState } from 'ahooks/es/useSetState';
export type SourceType = string | URL | ArrayBuffer;
export type LoadOptions = {
    title?: string;
    resetScrollTop?: boolean;
};
/**
 * PDF 控制器
 * 用于控制 PDF 阅读器，进行基础操作
 */
export type PDFViewerHandle = {
    /** 加载文件，支持 url / 文件 / ArrayBuffer */
    load: (file: Promise<SourceType | Blob> | SourceType | Blob, options?: LoadOptions) => Promise<void>;
    /** 关闭文件，恢复初始状态 */
    close: () => Promise<void>;
    /** 设置当前的缩放级别 */
    setZoom: (zoom: number) => void;
    /** 获取当前的缩放级别 */
    getZoom: () => number;
    /** 翻页 */
    changePage: (pageIndex: number, anim?: boolean) => void;
    /** 滚动到制定高度 */
    scrollTo: Element['scrollTo'];
    /** 获取当前页码 */
    getCurrentPage: () => number;
    /** 获取总页数 */
    getPageCount: () => number;
    /** 获取某一页的 PDF 图像内容（Blob） */
    getPageBlob: (index: number, options?: {
        scale?: number;
        outputScale?: number;
    }) => Promise<Blob | null>;
    setTitle: (title: React.ReactNode) => void;
    getRoot: () => HTMLElement | null;
    getFileSource: () => SourceType | null | undefined;
    getPDFInstance: () => PDFDocumentProxy | undefined;
    pluginLoad: () => void;
    pluginLoaded: () => void;
};
export type PageViewport = {
    height: number;
    offsetX: number;
    offsetY: number;
    rotation: number;
    scale: number;
    transform: [number, number, number, number, number, number];
    viewBox: [number, number, number, number];
    width: number;
    rawDims: {
        pageHeight: number;
        pageWidth: number;
        pageX: number;
        pageY: number;
    };
};
export type RenderPageCoverFnType = (pageIndex: number, options: {
    viewport: PageViewport;
    zoom: number;
}) => React.ReactNode;
export type PDFViewerInternalStateType = Record<string, any> & {
    drawingPluginName: string;
};
export type PDFViewerContextType = {
    loading: boolean;
    pluginLoading: number;
    pages: any[];
    current: number;
    zoom: number;
    pdfViewer: PDFViewerHandle;
    forceUpdate: () => void;
    pageCoverRefs: (HTMLDivElement | null)[];
    bodyElement: HTMLDivElement | null;
    viewports: PageViewport[];
    internalState: PDFViewerInternalStateType;
    setInternalState: SetState<PDFViewerInternalStateType>;
    onMenuCollect: (callback: (...args: any[]) => any) => void;
    offMenuCollect: (callback: (...args: any[]) => any) => void;
};
declare const PDFViewerContext: React.Context<PDFViewerContextType>;
export default PDFViewerContext;
export type PDFToolbarContextType = {
    toolbarLeftDom: HTMLDivElement | null;
    toolbarRightDom: HTMLDivElement | null;
    addCenterToolbarId: (id: string, order?: number) => void;
    removeCenterToolbarId: (id: string) => void;
    centerToolbarIds: string[];
};
export declare const PDFToolbarContext: React.Context<PDFToolbarContextType>;
export declare function usePageCoverRenderer(): (callback: RenderPageCoverFnType) => (import("react/jsx-runtime").JSX.Element | null)[];
