/**
 * @param {PDFDocumentProxy} pdf
 * @param {number} firstPage
 * @param {number} lastPage
 * @returns {Promise<PDFPageProxy[]>}
 */
export function getPdfjsPages(pdf: PDFDocumentProxy, firstPage: number, lastPage: number): Promise<PDFPageProxy[]>;
/**
 * @param {number} version
 * @returns {string}
 */
export function getWorkerSrcFromCDN(version: number): string;
export class PDFJSAdapter extends PDFAdapter {
    /**
     * @param {PDFJSConfig} config
     */
    constructor(config: PDFJSConfig);
    pdfLib: any;
    pdfViewer: any;
    workerSrc: string | undefined;
    textLayerMode: 0 | 1;
    /** @type {any[]} */
    pdfPageViews: any[];
    /**
     * @param {string | ArrayBuffer | Uint8Array} file
     * @returns {Promise<PDFDocumentProxy>}
     */
    getDocument(file: string | ArrayBuffer | Uint8Array): Promise<PDFDocumentProxy>;
    /**
     * @param {RenderPagesOptions} options
     * @returns {Promise<void>}
     */
    renderPages({ documentId, pdfDocument, viewerContainer, emit }: RenderPagesOptions): Promise<void>;
    /**
     * @param {PDFPageProxy} page
     * @returns {PageSize}
     */
    getOriginalPageSize(page: PDFPageProxy): PageSize;
    /**
     * @return {void}
     */
    destroy(): void;
}
export class PDFAdapterFactory {
    /**
     * @param {PDFJSConfig & {adapter: AdapterType}} config
     * @returns {PDFAdapter}
     * @throws {Error}
     */
    static create(config: PDFJSConfig & {
        adapter: AdapterType;
    }): PDFAdapter;
}
export function createPDFConfig(config?: Partial<PDFConfig>): PDFConfig;
export type PDFDocumentProxy = import("pdfjs-dist").PDFDocumentProxy;
export type PDFPageProxy = import("pdfjs-dist").PDFPageProxy;
export type AdapterType = "pdfjs";
export type PDFConfig = {
    adapter: AdapterType;
    pdfLib?: any;
    pdfViewer?: any;
    workerSrc?: string | undefined;
    setWorker?: boolean | undefined;
    textLayerMode?: 0 | 1 | undefined;
};
export type PDFJSConfig = {
    pdfLib: any;
    pdfViewer: any;
    workerSrc?: string | undefined;
    textLayerMode?: 0 | 1 | undefined;
    setWorker?: boolean | undefined;
};
export type RenderPagesOptions = {
    documentId: string;
    pdfDocument: PDFDocumentProxy;
    viewerContainer: HTMLElement;
    emit?: ((arg0: string, ...arg1: any[]) => void) | undefined;
};
export type PageSize = {
    width: number;
    height: number;
};
/**
 * @typedef {import('pdfjs-dist').PDFDocumentProxy} PDFDocumentProxy
 * @typedef {import('pdfjs-dist').PDFPageProxy} PDFPageProxy
 */
/**
 * @typedef {'pdfjs'} AdapterType
 */
/**
 * @typedef {Object} PDFConfig
 * @property {AdapterType} adapter
 * @property {any} [pdfLib]
 * @property {any} [pdfViewer]
 * @property {string} [workerSrc]
 * @property {boolean} [setWorker]
 * @property {0 | 1} [textLayerMode]
 */
/**
 * @typedef {Object} PDFJSConfig
 * @property {any} pdfLib
 * @property {any} pdfViewer
 * @property {string} [workerSrc]
 * @property {0 | 1} [textLayerMode]
 * @property {boolean} [setWorker]
 */
/**
 * @typedef {Object} RenderPagesOptions
 * @property {string} documentId
 * @property {PDFDocumentProxy} pdfDocument
 * @property {HTMLElement} viewerContainer
 * @property {function(string, ...any): void} [emit]
 */
/**
 * @typedef {Object} PageSize
 * @property {number} width
 * @property {number} height
 */
/**
 * @abstract
 */
declare class PDFAdapter {
}
export {};
//# sourceMappingURL=pdf-adapter.d.ts.map