import { Dispatcher } from '../bus';
import { Translatable } from '../l10n';
import { Toolbar, ToolbarItemType } from '../toolbar';
import { ResolvedParams } from '../utils';
import { InitializerType, LayerBuilderType, ViewerType } from '../viewer';
export { ToolbarItemType };
export type PluginType = (Plugin | (new (params?: any) => Plugin));
export declare abstract class Plugin<T = any> extends Dispatcher implements Translatable {
    private _name?;
    private _toolbar?;
    private _viewer?;
    protected abortController?: AbortController;
    protected initializers: InitializerType[];
    protected layerBuilders: LayerBuilderType[];
    private _initializers;
    private _layerBuilders;
    private _resolvedParams?;
    readonly params: { [K in keyof T]: T[K] extends infer T_1 ? T_1 extends T[K] ? T_1 extends import('../utils').Resolveable<infer U> ? Promise<U> : T_1 : never : never; } | undefined;
    constructor(params?: ResolvedParams<T>);
    get name(): string;
    get toolbar(): Toolbar;
    get viewer(): ViewerType;
    get options(): import('../viewer').ViewerOptions;
    get eventBus(): import('../bus').EventBus<Record<string, import('../bus').ListenerCallback>, string>;
    get signal(): AbortSignal | undefined;
    get l10n(): import('../l10n').IL10n;
    get logger(): import('../viewer/logger').Logger;
    get pdfDocument(): import('pdfjs-dist/types/src/display/api').PDFDocumentProxy | undefined;
    get rootContainer(): HTMLElement;
    get container(): HTMLDivElement;
    get viewerContainer(): HTMLDivElement;
    get pagesCount(): number;
    get page(): number;
    set page(val: number);
    get initialized(): boolean;
    get resolvedParams(): T | undefined;
    get translator(): {
        translate: (key: string, options?: object) => string;
    };
    translate(key: string, options?: object): string;
    setToolbar(toolbar: Toolbar): void;
    setViewer(viewer: ViewerType): void;
    setCurrentPage(page: number): void;
    protected init(): Promise<void> | void;
    protected onLoad(_resolvedParams?: T): Promise<void> | void;
    protected destroy(): Promise<void> | void;
    protected getToolbarItems(): Map<string, ToolbarItemType> | Promise<Map<string, ToolbarItemType>>;
    protected getInitializers(): InitializerType[] | Promise<InitializerType[]>;
    protected getLayerBuilders(): LayerBuilderType[] | Promise<LayerBuilderType[]>;
    initialize(): Promise<void>;
    load(): Promise<void>;
    terminate(): Promise<void>;
}
