import { type ExtractPropTypes, type Ref } from 'vue';
import type { UploadCropperFiles } from './upload';
export declare const croppersEmits: {
    'update:modelValue': (value: boolean) => boolean;
    cropUploadSuccess: (value: Blob) => boolean;
};
export interface IsourceImgContainer {
    w: number;
    h: number;
    r: number;
}
export interface IshadeInfo {
    w: number;
    h: number;
    x: number;
    y: number;
}
export interface IsourceImgInfo {
    x: number;
    y: number;
    width: number;
    height: number;
    top: number;
    left: number;
    screenX: number;
    screenY: number;
    initWidth: number;
    initHeight: number;
    naturalWidth: number;
    naturalHeight: number;
}
export declare const uploadCropperProps: {
    readonly maxFileSize: import("element-plus/es/utils").EpPropFinalized<NumberConstructor, unknown, unknown, 3000000, boolean>;
    readonly width: import("element-plus/es/utils").EpPropFinalized<NumberConstructor, unknown, unknown, 400, boolean>;
    readonly height: import("element-plus/es/utils").EpPropFinalized<NumberConstructor, unknown, unknown, 400, boolean>;
    readonly size: import("element-plus/es/utils").EpPropFinalized<NumberConstructor, unknown, unknown, 3, boolean>;
};
export declare const cropperProps: {
    readonly modelValue: {
        readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<BooleanConstructor, unknown, unknown>>;
        readonly required: true;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    };
    readonly file: {
        readonly type: import("vue").PropType<import("element-plus/es/utils").EpPropMergeType<(new (...args: any[]) => UploadCropperFiles & {}) | (() => UploadCropperFiles) | ((new (...args: any[]) => UploadCropperFiles & {}) | (() => UploadCropperFiles))[], unknown, unknown>>;
        readonly required: true;
        readonly validator: ((val: unknown) => boolean) | undefined;
        __epPropKey: true;
    };
    readonly maxFileSize: import("element-plus/es/utils").EpPropFinalized<NumberConstructor, unknown, unknown, 3000000, boolean>;
    readonly width: import("element-plus/es/utils").EpPropFinalized<NumberConstructor, unknown, unknown, 400, boolean>;
    readonly height: import("element-plus/es/utils").EpPropFinalized<NumberConstructor, unknown, unknown, 400, boolean>;
    readonly size: import("element-plus/es/utils").EpPropFinalized<NumberConstructor, unknown, unknown, 3, boolean>;
};
export declare type CropperProps = ExtractPropTypes<typeof cropperProps>;
export declare const useCropper: (cropperProps: CropperProps) => {
    zoomImg: (type: number) => void;
    scalingRatio: Ref<number>;
    canvasRef: Ref<HTMLCanvasElement | null>;
    createImg: () => void;
    data2blob: (data: string) => Blob;
    createImgUrl: Ref<string>;
    sourImgUrl: Ref<string>;
    clearData: () => void;
    previewImgStyle: import("vue").ComputedRef<{
        width: string;
        height: string;
    }>;
    shadeStyle: import("vue").ComputedRef<{
        width: string;
        height: string;
    }>;
    sourImgStyle: import("vue").ComputedRef<{
        width: string;
        height: string;
        top: string;
        left: string;
    }>;
    isShowDialog: Ref<boolean>;
    startMoveImg: (e: MouseEvent) => void;
    moveImg: import("lodash").DebouncedFunc<(e: MouseEvent) => void>;
    shadeInfo: Ref<{
        w: number;
        h: number;
        x: number;
        y: number;
    }>;
    sourceImgInfo: Ref<{
        x: number;
        y: number;
        width: number;
        height: number;
        top: number;
        left: number;
        screenX: number;
        screenY: number;
        initWidth: number;
        initHeight: number;
        naturalWidth: number;
        naturalHeight: number;
    }>;
};
