import { BaseItem } from "@aurigma/design-atoms-model";
import { PointF, SizeF } from "@aurigma/design-atoms-model/Math";
import { Canvas } from "../Canvas";
import { IPointerParams } from "../Input/InputManager/IInputManager";
import { UpdateStatus } from "../UpdateStatus";
import { Cursor } from "../Utils/Common";
import { IRangeParams, IRulersConfig } from "./Interfaces";
import { ScrollBarsStyle } from "./ScrollBarsStyle";
import { IIntervalCheckLoop } from "./StandardIntervalCheckLoop";
import { ViewportAlignment } from "./ViewportAlignment";
import { ZoomMode } from "./ZoomMode";
import { ZoomQuality } from "./ZoomQuality";
export declare class ZoomParams {
    skipZoomToCenter?: boolean;
    centerPageX?: number;
    centerPageY?: number;
    workspaceX?: number;
    workspaceY?: number;
    preventEvent?: boolean;
}
export declare class BaseViewer {
    protected _viewerElement: HTMLDivElement;
    private _maxZoom;
    private _minZoom;
    protected _screenXDpi: number;
    protected _screenYDpi: number;
    private _scrollBarsStyle;
    private _actualScrollbarWidth;
    protected _baseRulersOffset: PointF;
    private _scrollingPosition;
    private _scrollInitialized;
    private _viewportAlignment;
    private _zoom;
    private _zoomMode;
    private _zoomQuality;
    private _bestFitWhiteSpacePc;
    private _status;
    private _delayedRefreshTimeout;
    protected _refreshTimer: any;
    protected _contentElements: any[];
    protected _needToRefresh: boolean;
    private _rulerEnabled;
    private _rulerWidth;
    protected _rulerBorderWidth: number;
    private _rulerScale;
    private _rulerDivision;
    private _rulerOffsetX;
    private _rulerOffsetY;
    private _rulersOnScrollDelegate;
    private _rulersOnZoomDelegate;
    private _pinchZoomEnabled;
    private _holderBounds;
    protected _contentCtx: HTMLElement;
    private _contentCtxDimension;
    protected _holderElement: HTMLElement;
    private _rulers;
    private _bodyCursor;
    protected _ignoreDocumentClickOnce: boolean;
    private _statusChangedEvent;
    private _scrolledEvent;
    private _onresizeEvent;
    private _zoomedEvent;
    protected _canvas: Canvas;
    protected _intervalCheckLoop: IIntervalCheckLoop;
    protected _contentAngle: number;
    constructor();
    get element(): HTMLDivElement;
    get id(): string;
    get contentAngle(): number;
    set contentAngle(value: number);
    get holderBounds(): {
        width: any;
        height: any;
        offsetWidth: any;
        offsetHeight: any;
        offsetTop: any;
        offsetLeft: any;
    };
    /** Gets a value that represents the width of the control's content taking into account its horizontal resolution and zoom value */
    get contentWidth(): any;
    /** Gets the width (in pixels) of the control area. */
    get width(): any;
    /** Gets a value that represents the height of the control's content taking into account its vertical resolution and zoom value */
    get contentHeight(): any;
    /** Gets the height (in pixels) of the control area. */
    get height(): any;
    private _notifySizeChanged;
    protected _renderContent(sb: string): string;
    private get hasContent();
    private _render;
    private _clearElement;
    private _rulersOnScroll;
    private _rulersOnZoom;
    protected _rulersOnHover: (e: IPointerParams) => void;
    private _initializeRulers;
    private _disposeRulers;
    private _updateRulersStyle;
    protected _setRulersConfig(config: IRulersConfig): void;
    private _drawRulers;
    getActualScrollPosition(): PointF;
    getViewportLocation(): PointF;
    ignoreDocumentClickOnce(): void;
    _onDocumentClick: (e: MouseEvent) => void;
    protected _makeInactive(domElement: any): void;
    protected _resizeContentElements(): void;
    protected _getElementBounds(element: any): {
        width: any;
        height: any;
        offsetWidth: any;
        offsetHeight: any;
        offsetTop: any;
        offsetLeft: any;
    };
    initialize(intervalCheckLoop?: any): void;
    private _startIntervalCheckLoop;
    setIntervalCheckLoop(intervalCheckLoop: IIntervalCheckLoop): void;
    protected _onScroll: (e: any) => void;
    protected _onResize(sender: any, updateButtonGroup: any): void;
    protected _updateViewport(ignoreZoomConfigRestrictions?: boolean): void;
    private _zoomToPagePoint;
    private _zoomToWorkspacePoint;
    private _updateViewportAlignment;
    /** Gets a scroll bar length (in other words, the right-bottom point of the image fragment which is out of the visible area). */
    get scrollingSize(): PointF;
    get contentCtx(): HTMLElement;
    /** @deprecated */
    get clientSideOptions(): {};
    get zoomConfig(): IRangeParams;
    setCursor(cursor: Cursor, onBody?: boolean): void;
    protected _getElementForCursor(): HTMLElement;
    /** Amount of milliseconds to wait before delayed refresh will be invoked */
    get delayedRefreshTimeout(): number;
    set delayedRefreshTimeout(v: number);
    /**
     * Gets the maximum allowed zoom value.
     * @remarks Zoom values are measured in percents/100.
     * It means that value = 1 specify 100% zoom (i.e. actual size), value = 10 means 1000% zoom (10x), value = 0,5 means 50% zoom (half), etc.
     **/
    getMaxZoom(): number;
    setMaxZoom(value: number): void;
    /**
     * Gets the minimum allowed zoom value
     * @remarks Zoom values are measured in percents/100.
     * It means that value = 1 specify 100% zoom (i.e. actual size), value = 10 means 1000% zoom (10x), value = 0,5 means 50% zoom (half), etc.
     */
    get minZoom(): number;
    set minZoom(value: number);
    set screenXDpi(v: number);
    get screenXDpi(): number;
    set screenYDpi(v: number);
    get screenYDpi(): number;
    get scrollBarsStyle(): ScrollBarsStyle;
    set scrollBarsStyle(value: ScrollBarsStyle);
    get scrollBarWidth(): number;
    /** Gets/sets the position of the scroll bars */
    get scrollingPosition(): PointF;
    set scrollingPosition(value: PointF);
    /** Gets/sets a value that specifies content alignment in the control. */
    get viewportAlignment(): ViewportAlignment;
    set viewportAlignment(v: ViewportAlignment);
    get zoom(): number;
    setZoom(zoom: number, params: ZoomParams, ignoreZoomConfigRestrictions?: boolean, withoutUpdate?: boolean): number;
    protected _setZoom(value: number, ignoreZoomConfigRestrictions?: boolean): void;
    get pinchZoomEnabled(): boolean;
    set pinchZoomEnabled(v: boolean);
    get rulerEnabled(): boolean;
    set rulerEnabled(v: boolean);
    get rulerScale(): number;
    set rulerScale(v: number);
    get rulerDivision(): number;
    set rulerDivision(v: number);
    get rulerOffsetX(): number;
    set rulerOffsetX(v: number);
    get rulerOffsetY(): number;
    set rulerOffsetY(v: number);
    get actualRulerWidth(): number;
    get rulerWidth(): number;
    set rulerWidth(v: number);
    get zoomMode(): ZoomMode;
    set zoomMode(v: ZoomMode);
    protected _setZoomMode(v: ZoomMode): void;
    /** Gets or sets white space (in percent from 1 to 99) between content maximal demention and canvas */
    get bestFitWhiteSpacePc(): number;
    set bestFitWhiteSpacePc(v: number);
    /** Gets a value that specifies a zoom quality. */
    get zoomQuality(): ZoomQuality;
    /** The value which represents current status of Viewer control */
    get status(): UpdateStatus;
    /**
     * The value which represents description of exception which was thrown during calling remote scripting method
     * @deprecated
     **/
    get exceptionDescription(): string;
    get returnValue(): string;
    /** Gets a value that represents the width (in points) of the associated with this */
    get workspaceWidth(): number;
    /** Gets a value that represents the height (in points) of the associated with this */
    get workspaceHeight(): number;
    /**
     * Gets value which represents the ratio of screen horizontal resolution to the canvas resolution.
     */
    get actualSizeHorizontalScale(): number;
    calculateZoomByZoomMode(zoomMode: ZoomMode, size?: SizeF, bestFitWhiteSpacePcArg?: number): number;
    zoomToSelection(): void;
    zoomToItems(items?: BaseItem[]): void;
    getScrollBars(): {
        vertical: number;
        horizontal: number;
    };
    clearRenderCtx(ctx: HTMLElement): void;
    abort(): void;
    /** Releases all resources */
    dispose(): void;
    /** Indicates that the control needs to be refreshed. The actual refreshing is applied when the user does not update the control state (such as scroll position, zoom value) in one second. */
    delayedRefresh(): void;
    protected _refresh(): void;
    /** Refreshes the control immediately. */
    refresh(): void;
    add_onResize(h: any): void;
    remove_onResize(h: any): void;
    /** Fires when scroll position of the control is changed */
    add_scrolled(h: any): void;
    remove_scrolled(h: any): void;
    /** Fires when status  is updated. */
    add_statusChanged(h: any): void;
    remove_statusChanged(h: any): void;
    /** Fires when the content is zoomed in the control */
    add_zoomed(h: any): void;
    remove_zoomed(h: any): void;
}
