import { EventEmitter, ElementRef, NgZone, OnInit, SimpleChanges } from '@angular/core';
import { ImageSource, PinturaEditorOptions, PinturaEditor, PinturaDefaultImageReaderResult, PinturaDefaultImageWriterResult, PinturaReadState, PinturaWriteState, PinturaImageState, PinturaNode, Sticker, PinturaEditorStatus, Size, Rect, Shape, Color, ColorMatrix, ConvolutionMatrix, ShapeRectangle, PinturaMetadata, OptionGroup, CropPresetOption, StickerGroup, Effect, SizeOption, LocaleString, MarkupEditorToolStyleDefaults, MarkupEditorShapeStyleControlDefaults, Vector, Filter } from '@pqina/pintura';
export declare abstract class PinturaEditorAbstractComponent<T> implements OnInit {
    protected element: ElementRef;
    protected zone: NgZone;
    private unsubs;
    editor: PinturaEditor;
    options: PinturaEditorOptions;
    id?: string;
    class?: string;
    animations?: boolean;
    src?: ImageSource;
    util?: string;
    utils?: string[];
    disabled?: boolean;
    status?: PinturaEditorStatus;
    elasticityMultiplier?: number;
    layoutDirectionPreference?: 'auto' | 'horizontal' | 'vertical';
    layoutVerticalUtilsPreference?: 'left' | 'right';
    layoutHorizontalUtilsPreference?: 'bottom' | 'top';
    imageSourceToImageData?: (src: any) => Promise<ImageData>;
    previewImageData?: ImageBitmap | ImageData | HTMLCanvasElement;
    previewImageDataMaxSize?: Size;
    previewUpscale?: boolean;
    shapePreprocessor?: any;
    enableButtonClose?: boolean;
    enableButtonExport?: boolean;
    enableButtonResetHistory?: boolean;
    enableButtonRevert?: boolean;
    enableNavigateHistory?: boolean;
    enableToolbar?: boolean;
    enableUtils?: boolean;
    enableDropImage?: boolean;
    enablePasteImage?: boolean;
    handleEvent?: (type: string, detail: any) => void;
    willRequestResource?: (url: string) => boolean;
    willClose?: () => Promise<boolean>;
    willRevert?: () => Promise<boolean>;
    willProcessImage?: () => Promise<boolean>;
    willRenderCanvas?: (shapes: {
        decorationShapes: Shape[];
        annotationShapes: Shape[];
        interfaceShapes: Shape[];
    }, state: any) => {
        decorationShapes: Shape[];
        annotationShapes: Shape[];
        interfaceShapes: Shape[];
    };
    willSetHistoryInitialState?: (initialState: any) => any;
    willRenderToolbar?: (nodes: PinturaNode[], env: any, redraw: () => void) => PinturaNode[];
    beforeSelectShape?: (current: Shape | undefined, target: Shape) => boolean;
    beforeDeselectShape?: (current: Shape, target: Shape | undefined) => boolean;
    beforeAddShape?: (shape: Shape) => boolean;
    beforeRemoveShape?: (shape: Shape) => boolean;
    beforeUpdateShape?: (shape: Shape, props: any, context: Rect) => Shape;
    willRenderShapeControls?: (nodes: PinturaNode[], shapeId: string) => PinturaNode[];
    willRenderShapePresetToolbar?: (nodes: PinturaNode[], addPreset: (sticker: Sticker) => void, env: any, redraw: () => void) => PinturaNode[];
    locale: any;
    imageReader: any[];
    imageWriter?: any[];
    imageOrienter?: any;
    imageScrambler?: any;
    imageBackgroundColor?: Color;
    imageColorMatrix?: ColorMatrix;
    imageConvolutionMatrix?: ConvolutionMatrix;
    imageCrop?: Rect;
    imageCropAspectRatio?: number | undefined;
    imageCropLimitToImage?: boolean;
    imageCropMaxSize?: Size;
    imageCropMinSize?: Size;
    imageRedaction?: ShapeRectangle[];
    imageAnnotation?: Shape[];
    imageDecoration?: Shape[];
    imageFlipX?: boolean;
    imageFlipY?: boolean;
    imageGamma?: number;
    imageNoise?: number;
    imageRotation?: number;
    imageVignette?: number;
    imageTargetSize?: Size;
    imageFrame?: string | {
        [key: string]: any;
        frameStyle: string;
    };
    imageMetadata?: PinturaMetadata;
    imageState?: any;
    get imageSize(): Size;
    get imageAspectRatio(): number;
    get imageCropSize(): Size;
    get imageCropRectAspectRatio(): number;
    get imageFile(): File;
    get imageLoadState(): any;
    get imageProcessState(): any;
    get imageRotationRange(): [number, number];
    markupEditorToolbar?: [string, LocaleString, any][];
    markupEditorToolStyles?: MarkupEditorToolStyleDefaults;
    markupEditorShapeStyleControls?: MarkupEditorShapeStyleControlDefaults;
    markupEditorToolSelectRadius?: number;
    markupEditorTextInputMode?: 'modal' | 'inline';
    enableSelectToolToAddShape?: boolean;
    enableTapToAddText?: boolean;
    enableZoom?: boolean;
    enablePan?: boolean;
    enableZoomControls?: boolean;
    markupEditorZoomLevels?: number[];
    markupEditorZoomAdjustStep?: number;
    markupEditorZoomAdjustFactor?: number;
    markupEditorWillStartInteraction?: (point: Vector, image: Rect) => boolean;
    cropAutoCenterImageSelectionTimeout?: undefined | number;
    cropWillRenderImageSelectionGuides?: undefined | ((interaction: string, interactionFraction: number) => {
        rows: number;
        cols: number;
        opacity: number;
    });
    cropEnableButtonFlipHorizontal?: boolean;
    cropEnableButtonFlipVertical?: boolean;
    cropEnableButtonRotateLeft?: boolean;
    cropEnableButtonRotateRight?: boolean;
    cropEnableButtonToggleCropLimit?: boolean;
    cropEnableCenterImageSelection?: boolean;
    cropEnableImageSelection?: boolean;
    cropEnableInfoIndicator?: boolean;
    cropEnableLimitWheelInputToCropSelection?: boolean;
    cropEnableRotationInput?: boolean;
    cropEnableSelectPreset?: boolean;
    cropEnableZoomInput?: boolean;
    cropEnableZoomMatchImageAspectRatio?: boolean;
    cropEnableZoomTowardsWheelPosition?: boolean;
    cropEnableZoomAutoHide?: boolean;
    cropImageSelectionCornerStyle?: undefined | 'hook' | 'round' | 'invisible';
    cropSelectPresetOptions?: OptionGroup[] | CropPresetOption[];
    cropEnableRotateMatchImageAspectRatio?: 'never' | 'custom' | 'always';
    cropWillRenderTools?: (nodes: PinturaNode[], env: any, redraw: () => void) => PinturaNode[];
    annotateActiveTool?: string;
    annotateEnableButtonFlipVertical?: boolean;
    annotatePresets?: Sticker[] | StickerGroup[];
    decorateActiveTool?: string;
    decorateEnableButtonFlipVertical?: boolean;
    decoratePresets?: Sticker[] | StickerGroup[];
    filterFunctions?: {
        [key: string]: Filter;
    };
    filterOptions?: any;
    finetuneControlConfiguration?: {
        [key: string]: Effect;
    };
    finetuneOptions?: [string | undefined, LocaleString];
    resizeMaxSize?: Size;
    resizeMinSize?: Size;
    resizeSizePresetOptions?: OptionGroup[] | SizeOption[];
    resizeWidthPresetOptions?: OptionGroup[] | SizeOption[];
    resizeHeightPresetOptions?: OptionGroup[] | SizeOption[];
    resizeWillRenderFooter?: (nodes: PinturaNode[], env: any, redraw: () => void) => PinturaNode[];
    frameStyles?: {
        [key: string]: {
            shape: {
                frameStyle: string;
                [key: string]: any;
            };
            thumb: string;
        };
    };
    frameOptions?: [string | undefined, LocaleString];
    stickers?: Sticker[] | StickerGroup[];
    stickerStickToImage?: boolean;
    stickersEnableButtonFlipVertical?: boolean;
    init: EventEmitter<PinturaEditor>;
    loadstart: EventEmitter<void>;
    loadabort: EventEmitter<PinturaReadState>;
    loaderror: EventEmitter<PinturaReadState>;
    loadprogress: EventEmitter<PinturaReadState>;
    load: EventEmitter<PinturaDefaultImageReaderResult>;
    processstart: EventEmitter<void>;
    processabort: EventEmitter<PinturaWriteState>;
    processerror: EventEmitter<PinturaWriteState>;
    processprogress: EventEmitter<PinturaWriteState>;
    process: EventEmitter<PinturaDefaultImageWriterResult>;
    update: EventEmitter<PinturaImageState>;
    undo: EventEmitter<number>;
    redo: EventEmitter<number>;
    revert: EventEmitter<void>;
    destroy: EventEmitter<void>;
    show: EventEmitter<void>;
    hide: EventEmitter<void>;
    close: EventEmitter<void>;
    ready: EventEmitter<void>;
    loadpreview: EventEmitter<ImageData | ImageBitmap>;
    addshape: EventEmitter<Shape>;
    selectshape: EventEmitter<Shape>;
    updateshape: EventEmitter<Shape>;
    removeshape: EventEmitter<Shape>;
    selectstyle: EventEmitter<{
        [key: string]: unknown;
    }>;
    constructor(element: ElementRef, zone: NgZone);
    private routeEvent;
    abstract initEditor(element: HTMLElement, props: PinturaEditorOptions): PinturaEditor;
    private _initialChanges;
    ngAfterViewInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngOnDestroy(): void;
    ngOnInit(): void;
}
