import { ElementRef, EventEmitter, OnChanges, SimpleChanges, ChangeDetectorRef } from '@angular/core';
import { DomSanitizer, SafeUrl, SafeStyle } from '@angular/platform-browser';
import { ImageCropperExifService } from './image-cropper-exif.service';
export interface CropperPosition {
    x1: number;
    y1: number;
    x2: number;
    y2: number;
}
export declare class ImageCropperComponent implements OnChanges {
    private elementRef;
    private sanitizer;
    private cd;
    private exifService;
    private originalImage;
    private moveStart;
    private maxSize;
    private originalSize;
    safeImgDataUrl: SafeUrl | string;
    marginLeft: SafeStyle | string;
    imageVisible: boolean;
    imageChangedEvent: any;
    imageBase64: string;
    format: 'png' | 'jpeg' | 'bmp' | 'webp' | 'ico';
    maintainAspectRatio: boolean;
    aspectRatio: number;
    resizeToWidth: number;
    onlyScaleDown: boolean;
    imageQuality: number;
    cropper: CropperPosition;
    imageCropped: EventEmitter<string>;
    imageLoaded: EventEmitter<void>;
    loadImageFailed: EventEmitter<void>;
    constructor(elementRef: ElementRef, sanitizer: DomSanitizer, cd: ChangeDetectorRef, exifService: ImageCropperExifService);
    ngOnChanges(changes: SimpleChanges): void;
    private initCropper();
    loadImage(event: any): void;
    private loadBase64Image(imageBase64);
    imageLoadedInView(): void;
    imageResizedInView(event: Event): void;
    private resizeCropperPosition();
    private resetCropperPosition();
    startMove(event: any, moveType: string, position?: string | null): void;
    moveImg(event: any): void;
    private setMaxSize();
    private checkCropperPosition(maintainSize?);
    moveStop(event: any): void;
    private move(event);
    private resize(event);
    private checkAspectRatio();
    private crop();
    private getResizeRatio(width);
    private getClientX(event);
    private getClientY(event);
    /**
     * Calculate the ratio to use when determining the proper
     * cropping coordinates the user has chosen
     *
     * @param workingImage The image we are currently working with. This may be the original
     *                     image the user took or a rotated version of that image
     * @param displayedImage Image that is currently set in the img component in the HTML view
     * @param number The ratio to use based on the working and displayed images
     */
    private calculateRatio(workingImage, displayedImage);
}
