declare namespace Cropper { export type Action = 'crop' | 'move' | 'zoom' | 'e' | 's' | 'w' | 'n' | 'ne' | 'nw' | 'se' | 'sw' | 'all'; export type DragMode = 'crop' | 'move' | 'none'; export type ImageSmoothingQuality = 'low' | 'medium' | 'high'; export type ViewMode = 0 | 1 | 2 | 3; export interface Data { x: number; y: number; width: number; height: number; rotate: number; scaleX: number; scaleY: number; } export interface ContainerData { width: number; height: number; } export interface ImageData { left: number; top: number; width: number; height: number; rotate: number; scaleX: number; scaleY: number; naturalWidth: number; naturalHeight: number; aspectRatio: number; } export interface CanvasData { left: number; top: number; width: number; height: number; naturalWidth: number; naturalHeight: number; } export interface CropBoxData { left: number; top: number; width: number; height: number; } export interface GetCroppedCanvasOptions { width?: number; height?: number; minWidth?: number; minHeight?: number; maxWidth?: number; maxHeight?: number; rounded?: boolean; fillColor?: string; imageSmoothingEnabled?: boolean; imageSmoothingQuality?: ImageSmoothingQuality; } export interface SetDataOptions { x?: number; y?: number; width?: number; height?: number; rotate?: number; scaleX?: number; scaleY?: number; } export interface SetCanvasDataOptions { left?: number; top?: number; width?: number; height?: number; } export interface SetCropBoxDataOptions { left?: number; top?: number; width?: number; height?: number; } interface CropperEvent extends CustomEvent { currentTarget: T & { cropper: Cropper }; } export type ReadyEvent = CropperEvent export interface CropEvent extends CropperEvent { detail: Data; } export interface CropEventData { originalEvent: PointerEvent | TouchEvent | MouseEvent; action: Action; } export interface CropStartEvent extends CropperEvent { detail: CropEventData; } export interface CropMoveEvent extends CropperEvent { detail: CropEventData; } export interface CropEndEvent extends CropperEvent { detail: CropEventData; } export interface ZoomEventData { originalEvent: WheelEvent | PointerEvent | TouchEvent | MouseEvent; oldRatio: number; ratio: number; } export interface ZoomEvent extends CropperEvent { detail: ZoomEventData; } export interface Options { aspectRatio?: number; autoCrop?: boolean; autoCropArea?: number; background?: boolean; center?: boolean; checkCrossOrigin?: boolean; checkOrientation?: boolean; cropBoxMovable?: boolean; cropBoxResizable?: boolean; data?: SetDataOptions; dragMode?: DragMode; guides?: boolean; highlight?: boolean; initialAspectRatio?: number; minCanvasHeight?: number; minCanvasWidth?: number; minContainerHeight?: number; minContainerWidth?: number; minCropBoxHeight?: number; minCropBoxWidth?: number; modal?: boolean; movable?: boolean; preview?: HTMLElement | HTMLElement[] | NodeListOf | string; responsive?: boolean; restore?: boolean; rotatable?: boolean; scalable?: boolean; toggleDragModeOnDblclick?: boolean; viewMode?: ViewMode; wheelZoomRatio?: number; zoomOnTouch?: boolean; zoomOnWheel?: boolean; zoomable?: boolean; ready?(event: ReadyEvent): void; crop?(event: CropEvent): void; cropend?(event: CropEndEvent): void; cropmove?(event: CropMoveEvent): void; cropstart?(event: CropStartEvent): void; zoom?(event: ZoomEvent): void; } } declare class Cropper { constructor(element: HTMLImageElement, options?: Cropper.Options); constructor(element: HTMLCanvasElement, options?: Cropper.Options); clear(): Cropper; crop(): Cropper; destroy(): Cropper; disable(): Cropper; enable(): Cropper; getCanvasData(): Cropper.CanvasData; getContainerData(): Cropper.ContainerData; getCropBoxData(): Cropper.CropBoxData; getCroppedCanvas(options?: Cropper.GetCroppedCanvasOptions): HTMLCanvasElement; getData(rounded?: boolean): Cropper.Data; getImageData(): Cropper.ImageData; move(offsetX: number, offsetY?: number): Cropper; moveTo(x: number, y?: number): Cropper; replace(url: string, onlyColorChanged?: boolean): Cropper; reset(): Cropper; rotate(degree: number): Cropper; rotateTo(degree: number): Cropper; scale(scaleX: number, scaleY?: number): Cropper; scaleX(scaleX: number): Cropper; scaleY(scaleY: number): Cropper; setAspectRatio(aspectRatio: number): Cropper; setCanvasData(data: Cropper.SetCanvasDataOptions): Cropper; setCropBoxData(data: Cropper.SetCropBoxDataOptions): Cropper; setData(data: Cropper.SetDataOptions): Cropper; setDragMode(dragMode: Cropper.DragMode): Cropper; zoom(ratio: number): Cropper; zoomTo(ratio: number, pivot?: { x: number; y: number }): Cropper; static noConflict(): Cropper; static setDefaults(options: Cropper.Options): void; } declare module 'cropperjs' { export default Cropper; }