import React from 'react';
import type { ActionObject, Payload } from 'jamis-core';
import type { DropEvent, FileRejection } from 'react-dropzone';
import 'blueimp-canvastoblob';
import type { ImageFileValue, ImageFileX, InputImageProps } from './types';
interface ImageState {
    uploading: boolean;
    locked: boolean;
    lockedReason?: string;
    files: Array<ImageFileValue | ImageFileX>;
    crop?: any;
    error?: string;
    cropFile?: ImageFileValue;
    cropFileName?: string;
    submitOnChange?: boolean;
    frameImageWidth?: number;
}
declare class ImageControl extends React.Component<InputImageProps, ImageState> {
    static defaultProps: Partial<InputImageProps>;
    static valueToFile(value: string | object, props?: InputImageProps): ImageFileValue | undefined;
    static sizeInfo(width: number | undefined, height: number | undefined): string;
    state: ImageState;
    files: Array<ImageFileValue | ImageFileX>;
    fileUploadCancelExecutors: Array<{
        file: any;
        executor: () => void;
    }>;
    cropper: Cropper;
    dropzone: React.RefObject<any>;
    frameImageRef: React.RefObject<any>;
    current: ImageFileValue | ImageFileX | null;
    resolve?: (value?: any) => void;
    emitValue: any;
    unmounted: boolean;
    initAutoFill: boolean;
    reuploadIndex: undefined | number;
    constructor(props: InputImageProps);
    componentDidMount(): void;
    componentDidUpdate(prevProps: InputImageProps): void;
    componentWillUnmount(): void;
    buildCrop(props: InputImageProps): false | {
        aspectRatio?: number;
        guides?: boolean;
        dragMode?: string;
        viewMode?: number;
        rotatable?: boolean;
        scalable?: boolean;
    } | null | undefined;
    handleDropRejected(rejectedFiles: FileRejection[], evt: React.DragEvent<any>): void;
    startUpload(retry?: boolean): void;
    toggleUpload(): void;
    stopUpload(): void;
    tick(): void;
    removeFile(file: ImageFileValue, index: number): Promise<void>;
    previewImage(file: ImageFileX, index: number, e: React.MouseEvent<any>): void;
    editImage(index: number): void;
    onChange(changeImmediately?: boolean, changeEvent?: boolean): Promise<void>;
    syncAutoFill(): void;
    handleSelect(): void;
    handleRetry(index: number): void;
    handleDrop(files: Array<ImageFileX>, e?: any, event?: DropEvent): void;
    handlePaste(e: React.ClipboardEvent<any>): void;
    handleCrop(): void;
    cancelCrop(): void;
    rotatableCrop(): void;
    addFiles(files: Array<ImageFileX>): void;
    sendFile(file: ImageFileX, cb: (error: null | string, file: ImageFileX, obj?: ImageFileValue) => void, onProgress: (progress: number) => void): void;
    _upload(file: ImageFileX, cb: (error: null | string, file: Blob, obj?: ImageFileValue) => void, onProgress: (progress: number) => void): void;
    _send(file: Blob, receiver: string, params: object, onProgress: (progress: number) => void): Promise<Payload>;
    removeFileCanelExecutor(file: any, execute?: boolean): void;
    handleClick(): void;
    handleImageLoaded(index: number, e: React.UIEvent<any>): void;
    handleFrameImageLoaded(e: React.UIEvent<any>): void;
    validate(): any;
    dispatchEvent(e: string, data?: Record<string, any>): Promise<import("jamis-core").RendererEvent<any, any> | undefined>;
    doAction(action: ActionObject, data: object, throwErrors: boolean): void;
    handleReSelect(index: number): void;
    pickClassStyle: import("jamis-core").PickClassStyleFn;
    renderSlotBody: import("..").RenderSlotBodyType;
    renderCropFile: () => JSX.Element;
    render(): JSX.Element;
}
export declare class ImageControlRenderer extends ImageControl {
}
export {};
