/// <reference path="../../vendor/react/react.d.ts" />
//@ts-ignore
import { Component } from 'react';
import { PageToolsPlugin } from './PageToolsPlugin';
/// <reference path="../../vendor/i18next.d.ts" />
//@ts-ignore
import { i18n } from 'i18next';
import { Bounds, IGcSelectionBox, SelectionBoundsChangedParams } from '../../ImageViewer/Models/SelectionBoxTypes';
import { IViewerTransactionSupport } from '../../ImageViewer/Models/IViewerTransactionSupport';
export declare type CropToolbarState = {
    hidden?: boolean;
    x?: number | any;
    y?: number | any;
    width?: number | any;
    height?: number | any;
    aspectRatio?: AspectRatioType;
};
export declare type CropToolbarProps = {
    pageToolsPlugin: PageToolsPlugin;
    hidden?: boolean;
};
export declare type AspectRatioType = "Custom" | "Original" | "9_12" | "1_1" | "5_4" | "4_3" | "3_2" | "16_9";
export declare class CropToolbar extends Component<CropToolbarProps, CropToolbarState> implements IViewerTransactionSupport {
    static instances: {
        [id: string]: CropToolbar | null;
    };
    private _isMounted;
    private _onZoomChangedEventBusHandler?;
    constructor(props: any, context: any);
    get in17n(): i18n;
    get isMounted(): boolean;
    get selectionBox(): IGcSelectionBox;
    get viewer(): import("../../ImageViewer/Models").IImageViewer;
    get maxImageSize(): {
        width: number;
        height: number;
    };
    get maxWidth(): number;
    get maxHeight(): number;
    getX(): number;
    setX(x: number, checkBounds?: boolean): void;
    getY(): number;
    setY(y: number, checkBounds?: boolean): void;
    getWidth(): number;
    set width(width: number | string);
    getHeight(): number;
    set height(height: number);
    adjustAspectRatio(changedSide?: "height" | "width"): boolean;
    get naturalRatio(): number;
    static showDialog(pageToolsPlugin: PageToolsPlugin): void;
    show(): void;
    private _bindEvents;
    private _unbindEvents;
    resetValues(): void;
    hide(): void;
    onSelectionBoundsChanged(selection: Bounds, params: SelectionBoundsChangedParams): void;
    get keepAspectRatio(): boolean;
    showSelectionBox(): void;
    updateSelectionBox(): void;
    hideSelectionBox(): void;
    componentWillUnmount(): void;
    componentDidMount(): void;
    confirmChanges(): void;
    cancelChanges(): void;
    undoTransactionStep(): boolean | void;
    redoTransactionStep(): boolean | void;
    render(): JSX.Element | null;
    isSizeCorrect(): boolean;
    apply(): void;
}
