import { VerbosityLevel, Permissions, Outline, Info, Metadata } from './types';
export type PdfDataGetOptions = {
    /**
     * get number of pages, by default it is true
     *
     * @type {boolean|undefined}
     */
    pages?: boolean;
    /**
     * get text of each page, by default it is true
     *
     * @type {boolean|undefined}
     */
    text?: boolean;
    /**
     * get fingerprint, by default it is true
     *
     * @type {boolean|undefined}
     */
    fingerprint?: boolean;
    /**
     * get outline, by default it is true
     *
     * @type {boolean|undefined}
     */
    outline?: boolean;
    /**
     * get metadata, by default it is true
     *
     * @type {boolean|undefined}
     */
    metadata?: boolean;
    /**
     * get info, by default it is true
     *
     * @type {boolean|undefined}
     */
    info?: boolean;
    /**
     * get permissions, by default it is true
     *
     * @type {boolean|undefined}
     */
    permissions?: boolean;
};
export type PdfDataOptions = {
    /**
     * password for a password-protected PDF
     *
     * @type {string|undefined}
     */
    password?: string;
    /**
     * the number of pages to be read, all pages are read by default
     *
     * @deprecated use pages instead
     *
     * @type {number|undefined}
     */
    max?: number;
    /**
     * sort the text by text coordinates
     *
     * @type {boolean|undefined}
     */
    sort?: boolean;
    /**
     * the logging level
     *
     * @type {VerbosityLevel|undefined}
     */
    verbosity?: VerbosityLevel;
    /**
     * can either be the number of pages to be read,
     * a number array with the exact pages (sorted by page number)
     * or a filter function (return true to parse the page)
     * all pages are read by default
     * not used if get.pages is false
     *
     * @type {number|number[]|((pageNumber: number) => boolean|undefined)}
     */
    pages?: number | number[] | ((pageNumber: number) => boolean);
    /**
     * options to enable or disable parsing methods
     *
     * @type {PdfDataGetOptions|undefined}
     */
    get?: PdfDataGetOptions;
};
/**
 * the data of the pdf
 */
export declare class PdfData {
    /**
     * the number of pages
     *
     * @readonly
     * @type {number|undefined}
     */
    readonly pages?: number;
    /**
     * extracted text per page
     *
     * @readonly
     * @type {string[]|undefined}
     */
    readonly text?: readonly string[];
    /**
     * the fingerprint
     *
     * @readonly
     * @type {string|undefined}
     */
    readonly fingerprint?: string;
    /**
     * the outline/bookmarks
     *
     * @readonly
     * @type {Outline[]|undefined}
     */
    readonly outline?: readonly Outline[];
    /**
     * the informations/description
     *
     * @readonly
     * @type {Info|undefined}
     */
    readonly info?: Info;
    /**
     * the metadata
     *
     * @readonly
     * @type {Metadata|undefined}
     */
    readonly metadata?: Metadata;
    /**
     * the permission flags
     *
     * @readonly
     * @type {Permissions | undefined}
     */
    readonly permissions?: Permissions;
    private constructor();
    /**
     * get the data
     *
     * @param {Uint8Array} data - the binary data file
     * @param {PdfDataOptions} [options={}] - the options on how the data should be extracted
     * @returns {Promise<PdfData>} a promise that is resolved with a {PdfData} object with the extracted data
     */
    static extract(data: Uint8Array, options?: PdfDataOptions): Promise<PdfData>;
}
