import GcPdfViewer from "../GcPdfViewer";
import { OptionalContentConfig } from "../Models/ViewerTypes";
export type ViewerMetaDataType = "optionalContentConfig" | "structureTree";
/**
 * Meta data loader.
 * @ignore exclude from docs.
 **/
export declare class GcPdfViewerDataLoader {
    viewer: GcPdfViewer;
    private _dataPromise;
    private _data;
    private _listeners;
    private _documentOpenedPromise1;
    constructor(viewer: GcPdfViewer);
    /**
     * Gets meta data promise.
     * @param key
     */
    getDataPromise(key: ViewerMetaDataType): Promise<OptionalContentConfig>;
    /**
     * Gets cached data if any.
     * @param key
     */
    getData(key: ViewerMetaDataType): OptionalContentConfig | null;
    /**
     * Listen for data modifications. Note, only one listener per one key is allowed.
     * @param key
     * @param callback
     */
    listen(key: ViewerMetaDataType, callback: (data: any, type: "data" | "reset") => void): void;
    /**
     * Remove data modification listener(s).
     * @param key
     */
    unlisten(key: ViewerMetaDataType): void;
    get documentOpenedPromise(): {
        promise: Promise<any>;
        resolve: Function;
        reject: Function;
    };
    createDocumentOpenedPromiseCap(recreate: boolean): void;
    onCleanupDocument(): void;
    onDocumentOpened(): void;
    /**
     * Send data event.
     * @param key Meta-data type: "optionalContentConfig" or "structureTree"
     * @param data Data object or null.
     * @param type Operation: "data" or "reset".
     */
    notify(key: ViewerMetaDataType, data: any, type?: "data" | "reset"): void;
}
