import { ChangeDetectorRef, ElementRef, EventEmitter, OnInit } from '@angular/core';
import { ControlValueAccessor, FormBuilder } from '@angular/forms';
import { DomSanitizer, SafeStyle, SafeUrl } from '@angular/platform-browser';
import { NGXLogger } from 'ngx-logger';
import { Shape } from '../../core/enums/shape';
import { UI } from '../../core/enums/ui';
export declare enum MoveTypes {
    Move = "move",
    Pinch = "pinch"
}
export declare class MoveStart {
    active: boolean;
    type: MoveTypes | null;
    left: number;
    top: number;
    clientX: number;
    clientY: number;
}
export declare class ImagePosition {
    left: number;
    top: number;
    scale: number;
    width: number;
    height: number;
}
export declare class CropperPosition {
    width: number;
    height: number;
}
export declare type ImageCroppedData = {
    left: number;
    top: number;
    scale: number;
};
export declare class ImageCropperComponent implements OnInit, ControlValueAccessor {
    private logger;
    private cd;
    private fb;
    sanitizer: DomSanitizer;
    ui: typeof UI;
    readonly host = "jnt-image-cropper-host";
    private moveStart;
    private sizeRetries;
    private _url;
    private _min;
    private _max;
    private _step;
    transformStyle: SafeStyle | string;
    marginLeft: SafeStyle | string;
    moveTypes: typeof MoveTypes;
    imagePosition: ImagePosition;
    form: import("@angular/forms").FormGroup;
    wrapper: ElementRef;
    image: ElementRef;
    cropper: ElementRef;
    area: CropperPosition;
    set min(min: number);
    get min(): number;
    set max(max: number);
    get max(): number;
    set step(step: number);
    get step(): number;
    set url(url: SafeUrl | string);
    get url(): SafeUrl | string;
    disabled: boolean;
    _shape: Shape;
    set shape(shape: Shape);
    loaded: EventEmitter<void>;
    failed: EventEmitter<void>;
    onChange: (date: ImageCroppedData) => void;
    onTouched: () => void;
    registerOnChange: (fn: any) => any;
    registerOnTouched: (fn: any) => any;
    onBlur: () => void;
    constructor(logger: NGXLogger, cd: ChangeDetectorRef, fb: FormBuilder, sanitizer: DomSanitizer);
    ngOnInit(): void;
    inView(): void;
    private checkImageMaxSizeRecursively;
    startMove(event: any, moveType: MoveTypes): void;
    moveImg(event: any): void;
    moveStop(): void;
    private crop;
    private move;
    private getClientX;
    private getClientY;
    zoom(scale?: number): void;
    writeValue(data: ImageCroppedData): void;
    setDisabledState(isDisabled: boolean): void;
}
