/// <reference path="../../vendor/react/react.d.ts" />
//@ts-ignore
import { Component, LegacyRef } from 'react';
//@ts-ignore
import { Color, ComboBox, Size } from '@grapecity/core-ui';
/// <reference path="../../vendor/i18next.d.ts" />
//@ts-ignore
import { i18n } from 'i18next';
import { PaintToolsPlugin } from './PaintToolsPlugin';
import { Bounds, IGcSelectionBox, PointLocation, SelectionBoundsChangedParams } from '../../ImageViewer/Models/SelectionBoxTypes';
import { IViewerTransactionSupport } from '../../ImageViewer/Models/IViewerTransactionSupport';
import { IImageViewer, PaintToolType, ToolbarItemType } from '../../ImageViewer/Models/IImageViewer';
import { PaintToolbarProps, PaintToolbarState, PaintToolbarVariant, SharedUndoHeap } from './types';
import { IImageLayer, IPaintCommand, IPaintDesignerContext, IPaintObject, PaintCommandName, PaintObjectPropertyName } from '../../ImageViewer/Layers/types';
import { IPaintObjectDesigner } from './Objects/IPaintObjectDesigner';
import { SelectedRegionsDispatcher } from './Tools/Selection/SelectedRegionsDispatcher';
import { InternalFilterName } from './Tools/InternalFilters';
import { SelectionToolType } from './Tools/Selection/types';
export declare class PaintToolbar extends Component<PaintToolbarProps, PaintToolbarState> implements IViewerTransactionSupport, IPaintDesignerContext {
    static instances: {
        [id: string]: PaintToolbar | null;
    };
    private _activatedComboBox?;
    private _activatedDropdown?;
    private _colorDropdown;
    private _selectionToolDropdown;
    private _cloneStampSourcePoint?;
    private _cloneStampSourceDistance?;
    private _isMounted;
    private _onZoomChangedEventBusHandler?;
    private _objectDesigners;
    private _undoCommands;
    private _undoIndex;
    private _selectedRegionsDispatcher;
    constructor(props: any, context: any);
    getPaintObjectDesigners(): IPaintObjectDesigner[];
    get selectedRegionsDispatcher(): SelectedRegionsDispatcher;
    get in17n(): i18n;
    get isMounted(): boolean;
    get paintLayer(): IImageLayer;
    get lastSelectedObjectDesigner(): IPaintObjectDesigner | null;
    get selectedObjectDesigners(): IPaintObjectDesigner[];
    get selectedToolKey(): PaintToolType;
    get foreColor(): Color;
    set foreColor(color: Color);
    get penSize(): number;
    set penSize(val: number);
    get brushSize(): number;
    set brushSize(val: number);
    get eraserSize(): number;
    set eraserSize(val: number);
    get cloneStampSize(): number;
    set cloneStampSize(val: number);
    get fontSize(): number;
    set fontSize(val: number);
    onFontSizeChanged(val: number, dirty: boolean): void;
    get pencilOpacity(): number;
    set pencilOpacity(val: number);
    get brushOpacity(): number;
    set brushOpacity(val: number);
    get eraserOpacity(): number;
    set eraserOpacity(val: number);
    get cloneStampOpacity(): number;
    set cloneStampOpacity(val: number);
    get fontOpacity(): number;
    set fontOpacity(val: number);
    limitOpacityBounds(opacity: number): number;
    get brushHardness(): number;
    set brushHardness(val: number);
    get eraserHardness(): number;
    set eraserHardness(val: number);
    get cloneStampHardness(): number;
    set cloneStampHardness(val: number);
    get fontName(): string;
    set fontName(val: string);
    get fontItalic(): boolean;
    set fontItalic(val: boolean);
    get fontBold(): boolean;
    set fontBold(val: boolean);
    get fontNames(): string[];
    get selectionBox(): IGcSelectionBox;
    get viewer(): IImageViewer;
    get toolbarVariant(): PaintToolbarVariant;
    get maxWidth(): number;
    get maxHeight(): number;
    getX(): number;
    setX(x: number, checkBounds?: boolean): void;
    getY(): number;
    setY(y: number, checkBounds?: boolean): void;
    getWidth(): number;
    getHeight(): number;
    get naturalRatio(): number;
    static showDialog(paintToolsPlugin: PaintToolsPlugin): void;
    ensurePaintLayerReady(): Promise<IImageLayer>;
    getUndoCommands(): IPaintCommand[];
    get scrollContainer(): HTMLDivElement;
    toggleOriginalImageAppearance(hideOriginalImage: boolean): void;
    limitLineSizeBounds(val: number): number;
    limitHardnessBounds(val: number): number;
    limitFontSizeBounds(val: number): number;
    clearSelection(): void;
    get useOriginalImage(): boolean;
    set useOriginalImage(value: boolean);
    repaint(): Promise<void>;
    toggleTool(toolKey?: PaintToolType, checked?: boolean): Promise<void>;
    onPaintObjectPropertyChanged(propertyName: PaintObjectPropertyName, val: any, dirty?: boolean): void;
    onPaintObjectSelection(designer: IPaintObjectDesigner, selected: boolean): void;
    show(): void;
    hide(): void;
    _startSelectionCoords: PointLocation;
    executeTempPaintCommand(cmd: IPaintCommand): void;
    flushTempPaintCommands(mainCtx: CanvasRenderingContext2D, backCtx: CanvasRenderingContext2D): void;
    confirmClose(saveChangesVariant?: boolean): Promise<boolean>;
    onSelectionBoundsChanged(penCoords: PointLocation[] | Bounds, params: SelectionBoundsChangedParams): void;
    rasterizePaintObject(paintObject: IPaintObject): void;
    getSelectedClipPaths(relativeToBounds?: boolean): Path2D[];
    selectAll(): void;
    copySelectedRegions(): boolean;
    get paintCanvasScale(): number;
    get leftTopVisiblePosition(): PointLocation;
    pasteSelectedRegions(): void;
    executePaintCommand(cmd: IPaintCommand | null, mainCtx?: CanvasRenderingContext2D, backCtx?: CanvasRenderingContext2D): void;
    storePaintCommand(cmd: IPaintCommand): void;
    get hasUndoPaint(): boolean;
    get hasRedoPaint(): boolean;
    isObjectCommand(cmd?: IPaintCommand): boolean;
    shouldBreakUndoSequence(cmd: IPaintCommand | undefined, prevCmdName: PaintCommandName | undefined, sharedHeap?: SharedUndoHeap): boolean;
    get undoIndex(): number;
    undoPaint(endIndex?: number): Promise<void>;
    redoPaint(): Promise<void>;
    ensureSelectedObject(): void;
    paintCommands(startCommandIndex: number, endCommandIndex: number): Promise<void>;
    ensureSelectionBox(): void;
    showSelectionBox(toolKey: PaintToolType): void;
    updateSelectionBox(): void;
    disableSelectionBox(): void;
    hideSelectionBox(): void;
    componentWillUnmount(): void;
    componentDidMount(): void;
    saveStateToLocalStorage(): void;
    loadStateFromLocalStorage(callback: any): void;
    renderToolbarItems(toolbarLayout: ToolbarItemType[]): JSX.Element[];
    render(): JSX.Element | null;
    apply(): Promise<void>;
    confirmChanges(): Promise<void>;
    cancelChanges(): Promise<void | boolean>;
    undoTransactionStep(): boolean | void;
    redoTransactionStep(): boolean | void;
    getSizeToolParams(selectedToolKey?: PaintToolType): {
        sizeSelectDisabled: boolean;
        sizeFromState: string | number | undefined;
        hardnessFromState: string | number | undefined;
        opacityFromState: string | number | undefined;
        disableOpacity: any;
        disableHardness: any;
    };
    renderSizeTool(selectedToolKey?: PaintToolType, lastSelectedBrushToolKey?: PaintToolType): JSX.Element;
    private onColorSelect;
    onSelectionToolSelect(selectionToolType: SelectionToolType): void;
    get selectionToolType(): SelectionToolType;
    set selectionToolType(selectionToolType: SelectionToolType);
    get toolSize(): number;
    getToolSize(paintToolType: PaintToolType, defaultValue?: number): number;
    set toolSize(val: number);
    getToolHardness(toolType: PaintToolType, defaultValue?: number): number;
    get toolHardness(): number;
    set toolHardness(val: number);
    get toolOpacity(): number;
    set toolOpacity(val: number);
    private onSizeSelect;
    private onFonSizeSelect;
    private onFontNameSelect;
    private closeActiveComboBox;
    private _bindEvents;
    onKeyDown(e: KeyboardEvent, params: {
        alt: boolean;
        space: boolean;
        shift: boolean;
    }): void;
    commitSelectedRegion(): void;
    finishSelectedRegion(force?: boolean): boolean;
    onKeyUp(e: KeyboardEvent, params: {
        alt: boolean;
        space: boolean;
        shift: boolean;
    }): void;
    onCut(): Promise<void>;
    onSelectAll(): void;
    onCopy(): void;
    onPaste(): void;
    applyRegionFilter(filter: InternalFilterName, intencityValue1?: number, intencityValue2?: number, replaceSameFilter?: boolean): Promise<void>;
    onDeleteKeyDown(): Promise<void>;
    private _unbindEvents;
}
export declare function renderPenWidthComboBox(controlWidth: number, pencilWidthValue: number | string | undefined, in17n: any, onSelect: (value: any, dirty: boolean) => void, refCallback: LegacyRef<ComboBox>, size?: Size, disabled?: boolean): JSX.Element;
