import { ImageFormatCode, ImageFormatName, LogLevel, OpenParameters, SaveOptions } from './Models/Types';
//@ts-ignore
import { EventFan, PluginModel, ReportViewer, Toolbar, ToolbarLayout, ViewerStatus, ZoomMode } from '@grapecity/viewer-core';
import { ViewerOptions } from './ViewerOptions';
import { GcMeasurement } from './Utils/GcMeasurement';
//@ts-ignore
import { PanelHandle } from '@grapecity/viewer-core/types/api/PluginModel';
import ImageReportPlugin from './plugin';
/// <reference path="../vendor/react/react-dom.d.ts" />
//@ts-ignore
import ReactDOM from 'react-dom';
/// <reference path="../vendor/react/react.d.ts" />
//@ts-ignore
import React, { Component, LegacyRef } from 'react';
import { LeftSidebar } from './LeftSidebar';
import { DataStorage } from './DataStorage/DataStorage';
import { ImageToolbarLayout } from './Toolbar/ImageToolbarLayout';
import { SecondToolbar } from './Toolbar/SecondToolbar/SecondToolbar';
import { AfterOpenEventArgs, BeforeOpenEventArgs, ErrorEventArgs, EventArgs, EventName, ImagePaintEventArgs } from './Models/EventArgs';
import { ImagePaneView } from './ImageDocumentViewer/ImagePaneView';
import { IViewerPlugin } from './Models/IViewerPlugin';
import { IGcSelectionBox, PointLocation } from './Models/SelectionBoxTypes';
import { SvgIconKey } from './Styles/svgIcons';
import { imageDataToCanvas } from './Utils/ImageUtils';
import { DomActivityIndicator } from './Utils/DomActivityIndicator';
import { UndoStorage } from './Undo/UndoStorage';
import { UndoCommandSupport } from './Undo/Commands';
import { GcPanSupport } from './Utils/GcPanSupport';
import { ShortcutsConfig } from './Keyboard/ShortcutsConfig';
import { IViewerTransactionSupport } from './Models/IViewerTransactionSupport';
import { IEventBus, IImageViewer, SecondToolbarType, WindowKeyboardListener } from './Models/IImageViewer';
import { ConfirmButton } from './Dialogs/Types';
import { IImageLayer } from './Layers/types';
//@ts-ignore
import { Color, Dropdown } from '@grapecity/core-ui';
import { ColorEditorLocalization } from './Tools/ColorEditor/types';
/// <reference path="../vendor/i18next.d.ts" />
//@ts-ignore
import { i18n } from 'i18next';
export declare class GcImageViewer extends ReportViewer implements IImageViewer {
    private static _i18n;
    static _instanceCounter: number;
    static instances: any;
    static focusedInstance?: GcImageViewer | null;
    private _plugin;
    private _isUpdating;
    private _viewerInstanceId;
    readonly in17n: i18n;
    private _disposed;
    private _eventsDef;
    private _fileStorage;
    private _plugins;
    private _secondToolbarLayout;
    private _secondToolbar;
    private _toolbarLayout;
    private _eventBus;
    private _selectionBox;
    private _layers;
    private _activeLayerIndex;
    constructor(element: HTMLElement | string, options?: Partial<ViewerOptions>);
    pluginPanels: {
        [key: string]: {
            handle: PluginModel.PanelHandle;
            panel: Component<any> | null;
        };
    };
    get actualZoomFactor(): number;
    get instanceId(): string;
    set instanceId(id: string);
    get imagePaneView(): ImagePaneView;
    get imageFormat(): ImageFormatCode;
    set imageFormat(imageFormat: ImageFormatCode);
    get hasImage(): boolean;
    get adaptiveNaturalSize(): {
        width: number;
        height: number;
    };
    get actualSize(): {
        width: number;
        height: number;
    };
    get isReady(): boolean;
    get language(): string;
    set language(lng: string);
    ensurePaintLayer(): IImageLayer;
    removeLayer(layerOrIndex: IImageLayer | number | string): void;
    removeLayers(): void;
    get layers(): IImageLayer[];
    get activeLayerIndex(): number;
    set activeLayerIndex(ind: number);
    get activeLayer(): IImageLayer | undefined;
    get maxImageSize(): {
        width: number;
        height: number;
    };
    get naturalSize(): {
        width: number;
        height: number;
    };
    get openParameters(): OpenParameters | undefined;
    get options(): Partial<ViewerOptions>;
    set options(options: Partial<ViewerOptions>);
    get panSupport(): GcPanSupport | undefined;
    get selectionBox(): IGcSelectionBox;
    get toolbarLayout(): ImageToolbarLayout;
    set toolbarLayout(toolbarLayout: ImageToolbarLayout);
    get undoStorage(): UndoStorage;
    get hasUndo(): boolean;
    get hasRedo(): boolean;
    get undoIndex(): number;
    get undoCount(): number;
    get version(): string;
    static get i18n(): i18n;
    get frameIndex(): number;
    set frameIndex(val: number);
    get framesCount(): number;
    set zoomValue(val: number);
    get zoomValue(): number;
    set zoomMode(val: ZoomMode);
    get zoomMode(): ZoomMode;
    get eventBus(): IEventBus;
    get onAfterOpen(): EventFan<AfterOpenEventArgs>;
    get onBeforeOpen(): EventFan<BeforeOpenEventArgs>;
    get onError(): EventFan<ErrorEventArgs>;
    get onImagePaint(): EventFan<ImagePaintEventArgs>;
    static updateSvgIcon(iconKey: SvgIconKey, svgIcon: Element | string): void;
    static getSvgIcon(iconKey: SvgIconKey): Element;
    applyOptions(): void;
    applyToolbarLayout(): void;
    addPlugin(plugin: IViewerPlugin): boolean;
    private _keyboardListeners;
    private _onWindowKeydownHandler?;
    private _onWindowKeyupHandler?;
    altPressed: boolean;
    ctrlPressed: boolean;
    shiftPressed: boolean;
    spacePressed: boolean;
    addKeyboardListener(uniqueKey: string, handler: WindowKeyboardListener): void;
    private onWindowKeyDown;
    private onWindowKeyUp;
    removeKeyboardListener(uniqueKey: string): void;
    raiseKeyDown(event: KeyboardEvent): void;
    raiseKeyUp(event: KeyboardEvent): void;
    configurePluginMainToolbar(pos: number | boolean | undefined, buttonsToInsert: string[]): void;
    getEventCanvasPoint(event: PointerEvent | MouseEvent): PointLocation;
    renderColorDropdown(colorValue: Color | null | undefined, onSelect: (color: Color) => void, localization: ColorEditorLocalization, refCallback: LegacyRef<Dropdown>, settings?: {
        size?: 'small' | 'default' | 'large';
        includeOpacity?: boolean;
        disabled?: boolean;
    }): JSX.Element;
    dataUrlToImageData(dataUrl: string, destinationSize?: {
        width: number;
        height: number;
    }): Promise<ImageData>;
    confirm(confirmationText?: string | JSX.Element, level?: "info" | "warning" | "error", title?: string, buttons?: ConfirmButton[]): Promise<boolean | ConfirmButton>;
    onFocus(): void;
    onBlur(): void;
    removePlugin(pluginId: string | IViewerPlugin): void;
    showAbout(): void;
    findPlugin(pluginId: string): IViewerPlugin | null;
    removePlugins(): void;
    clearUndo(): void;
    executeCommand(command: UndoCommandSupport): Promise<void>;
    newImage(options?: {
        width?: number;
        height?: number;
    } & OpenParameters): Promise<any>;
    canvasToDataURL(canvas: HTMLCanvasElement): string;
    get imageFormatSupportsTransparency(): boolean;
    performTransparencyConversionCheck(message: string): Promise<boolean>;
    open(file?: any | string | URL | Uint8Array | Array<number>, openParameters?: OpenParameters | ImageFormatName | ImageFormatCode): Promise<any>;
    dispose(): void;
    playAnimation(): void;
    showActivitySpinner(container?: HTMLElement): void;
    hideActivitySpinner(): void;
    startAnimation(): void;
    stopAnimation(): void;
    toggleAnimation(): void;
    undo(): Promise<void>;
    redo(): Promise<void>;
    getEvent(eventName: EventName): EventFan<any>;
    triggerEvent(eventName: EventName, args?: EventArgs | BeforeOpenEventArgs | AfterOpenEventArgs | ImagePaintEventArgs | any): void;
    transaction?: IViewerTransactionSupport;
    setTransaction(transaction: IViewerTransactionSupport): void;
    confirmChanges(): Promise<void>;
    cancelChanges(): Promise<void | boolean>;
    clearTransaction(transaction: IViewerTransactionSupport): void;
    static findControl(selector: string | HTMLElement): GcImageViewer | undefined;
    getOriginalImageDataUrl(): string;
    getImageDataUrl(): string;
    setImageDataUrl(dataUrl: any): Promise<void>;
    get secondToolbar(): SecondToolbar;
    get secondToolbarMode(): SecondToolbarType;
    invalidate(): void;
    showSecondToolbar(toolbarKey: SecondToolbarType): Promise<void>;
    hideSecondToolbar(toolbarKey?: SecondToolbarType): Promise<void>;
    activateEditorMode(caller: "SecondBar" | "FormEditor" | "AnnotationEdtor"): void;
    deactivateEditorMode(caller: "SecondBar" | "ViewerLayout"): void;
    logError(method: string, message: string): void;
    logDebug(method: string, message: string): void;
    close(): Promise<void>;
    openLocalFile(): any;
    print(): void;
    download(fileName?: string, original?: boolean): void;
    save(options?: string | SaveOptions, original?: boolean): void;
    raiseStateChanged(): void;
    get scrollViewElement(): HTMLElement;
    setTheme(theme?: string): void;
    beginUpdate(): void;
    endUpdate(): void;
    get isUpdating(): boolean;
    get isAnimationStarted(): boolean;
    static LicenseKey: string;
    get currentUserName(): string;
    set currentUserName(userName: string);
    get fileData(): Uint8Array | null;
    get fileName(): string;
    get fileUrl(): string;
    get leftSidebar(): LeftSidebar;
    get storage(): DataStorage;
    get hasDocument(): boolean;
    get logLevel(): LogLevel;
    set logLevel(logLvel: LogLevel);
    getType(typeName: string): typeof GcImageViewer | typeof React | typeof ImageReportPlugin | typeof ZoomMode | typeof ViewerStatus | typeof ReactDOM | typeof ViewerOptions | typeof Toolbar | typeof GcMeasurement | {
        cropImage: typeof import("./Utils/ImageUtils").cropImage;
        resizeImage: typeof import("./Utils/ImageUtils").resizeImage;
        resizeImageDataUrl: typeof import("./Utils/ImageUtils").resizeImageDataUrl;
        currentDisplayPxPerInch: typeof import("./Utils/ImageUtils").currentDisplayPxPerInch;
        getImageNaturalSize: typeof import("./Utils/ImageUtils").getImageNaturalSize;
        imageDataToCanvas: typeof imageDataToCanvas;
        setDpiAdaptiveSize: typeof import("./Utils/ImageUtils").setDpiAdaptiveSize;
        getDpiAdaptiveSize: typeof import("./Utils/ImageUtils").getDpiAdaptiveSize;
        copyImageCanvasToClipboard: typeof import("./Utils/ImageUtils").copyImageCanvasToClipboard;
        getImageCanvasFromClipboard: typeof import("./Utils/ImageUtils").getImageCanvasFromClipboard;
    } | {
        about: JSX.Element;
        'severity-info': JSX.Element;
        'severity-warning': JSX.Element;
        'severity-error': JSX.Element;
        save: JSX.Element;
        rotate: JSX.Element;
        'flip-horizontal': JSX.Element;
        'flip-vertical': JSX.Element;
        'crop-image': JSX.Element;
        'resize-image': JSX.Element;
        'magnify-minus-outline': JSX.Element;
        'magnify-plus-outline': JSX.Element;
        magnify: JSX.Element;
        open: JSX.Element;
        'page-tools': JSX.Element;
        'paint-tools': JSX.Element;
        'text-tools': JSX.Element;
        effects: JSX.Element;
        'paint-undo': JSX.Element;
        'paint-redo': JSX.Element;
        'select-region': JSX.Element;
        QuickSelection: JSX.Element;
        FreeSelection: JSX.Element;
        RectangularSelection: JSX.Element;
        EllipticalSelection: JSX.Element;
        PolygonalSelection: JSX.Element;
        ColorSelection: JSX.Element;
        SubjectSelection: JSX.Element;
        pencil: JSX.Element;
        brush: JSX.Element;
        eraser: JSX.Element;
        text: JSX.Element;
        'font-bold': JSX.Element;
        'font-italic': JSX.Element;
        'clone-stamp': JSX.Element;
        'foreground-color': JSX.Element;
        'image-filter-tools': JSX.Element;
        'filter-blur': JSX.Element;
        'filter-pixelate': JSX.Element;
        'filter-brightness': JSX.Element;
        'filter-contrast': JSX.Element;
        'filter-vibrance': JSX.Element;
        'filter-brightness-contrast': JSX.Element;
        print: JSX.Element;
        'edit-undo': JSX.Element;
        'edit-redo': JSX.Element;
        'aspect-ratio': JSX.Element;
        chevron: JSX.Element;
        'chevron-accent': JSX.Element;
        'animated-spinner': JSX.Element;
        'drag-handle': JSX.Element;
        keyboard: JSX.Element;
        image: JSX.Element;
        'theme-change': JSX.Element;
        'new-document': JSX.Element;
        'new-page': JSX.Element;
        'delete-page': JSX.Element;
        pan: JSX.Element;
        'doc-properties': JSX.Element;
        'context-copy': JSX.Element;
        'context-paste': JSX.Element;
        'context-cut': JSX.Element;
        'context-delete': JSX.Element;
        'arrow-expand-horizontal': JSX.Element;
        'arrow-expand-all': JSX.Element;
        'resize-handle-h': JSX.Element;
        close: JSX.Element;
        'reset-values': JSX.Element;
        done: JSX.Element;
        'file-png': JSX.Element;
        'file-jpeg': JSX.Element;
        'file-tiff': JSX.Element;
        'file-gif': JSX.Element;
        'file-bmp': JSX.Element;
        'file-webp': JSX.Element;
    } | null;
    get plugin(): ImageReportPlugin;
    get secondToolbarLayout(): {
        [toolbarKey: string]: string[];
    };
    set secondToolbarLayout(layout: {
        [toolbarKey: string]: string[];
    });
    get shortcutsConfig(): ShortcutsConfig;
    get onThemeChanged(): EventFan<AfterOpenEventArgs>;
    openPanel(panelHandleOrId: PanelHandle | string): void;
    closePanel(panelHandleOrId?: PanelHandle | string): void;
    get beforeUnloadConfirmation(): boolean;
    set beforeUnloadConfirmation(enable: boolean);
    updateLayout(layout: ToolbarLayout): void;
    showMessage(message: string, details?: string, severity?: "error" | "warn" | "info" | "debug"): void;
    raiseError(message: string): void;
    clearMessages(): void;
    _domActivityIndicator: DomActivityIndicator;
    onLoadProgress(percent?: number): void;
    get domActivityIndicator(): DomActivityIndicator;
    private _getEventFan;
    private static _init_i18n;
}
