import { ComponentOptionsMixin } from 'vue';
import { ComponentProvideOptions } from 'vue';
import { DefineComponent } from 'vue';
import { ExtractPropTypes } from 'vue';
import { PropType } from 'vue';
import { PublicProps } from 'vue';

declare const __VLS_export: DefineComponent<ExtractPropTypes<{
    modalTitle: {
        type: StringConstructor;
        default: string;
        required: false;
    };
    crossOrigin: {
        type: BooleanConstructor;
        default: boolean;
        required: false;
    };
    crossOriginHeader: {
        type: StringConstructor;
        default: string;
        required: false;
    };
    label: {
        type: StringConstructor;
        default: string;
        required: false;
    };
    isModal: {
        type: BooleanConstructor;
        default: boolean;
        required: false;
    };
    lockScroll: {
        type: BooleanConstructor;
        default: boolean;
        required: false;
    };
    showChooseBtn: {
        type: BooleanConstructor;
        default: boolean;
        required: false;
    };
    boxWidth: {
        type: NumberConstructor;
        default: number;
        required: false;
    };
    boxHeight: {
        type: NumberConstructor;
        default: number;
        required: false;
    };
    cutWidth: {
        type: NumberConstructor;
        default: number;
        required: false;
    };
    cutHeight: {
        type: NumberConstructor;
        default: number;
        required: false;
    };
    rate: {
        type: PropType<string | null>;
        default: null;
        required: false;
    };
    tool: {
        type: BooleanConstructor;
        default: boolean;
        required: false;
    };
    toolBgc: {
        type: StringConstructor;
        default: string;
        required: false;
    };
    imgMove: {
        type: BooleanConstructor;
        default: boolean;
        required: false;
    };
    sizeChange: {
        type: BooleanConstructor;
        default: boolean;
        required: false;
    };
    originalGraph: {
        type: BooleanConstructor;
        default: boolean;
        required: false;
    };
    moveAble: {
        type: BooleanConstructor;
        default: boolean;
        required: false;
    };
    previewMode: {
        type: BooleanConstructor;
        default: boolean;
        required: false;
    };
    CuttingOriginal: {
        type: BooleanConstructor;
        default: boolean;
        required: false;
    };
    WatermarkText: {
        type: StringConstructor;
        default: string;
        required: false;
    };
    WatermarkTextFont: {
        type: StringConstructor;
        default: string;
        required: false;
    };
    WatermarkTextColor: {
        type: StringConstructor;
        default: string;
        required: false;
    };
    WatermarkTextX: {
        type: NumberConstructor;
        default: number;
        required: false;
    };
    WatermarkTextY: {
        type: NumberConstructor;
        default: number;
        required: false;
    };
    smallToUpload: {
        type: BooleanConstructor;
        default: boolean;
        required: false;
    };
    saveCutPosition: {
        type: BooleanConstructor;
        default: boolean;
        required: false;
    };
    scaleAble: {
        type: BooleanConstructor;
        default: boolean;
        required: false;
    };
    index: {
        default: null;
        required: false;
        type: (StringConstructor | NumberConstructor)[];
    };
    fileType: {
        default: string;
        required: false;
        type: StringConstructor;
    };
    toolBoxOverflow: {
        type: BooleanConstructor;
        default: boolean;
        required: false;
    };
    DoNotDisplayCopyright: {
        type: BooleanConstructor;
        default: boolean;
        required: false;
    };
    quality: {
        type: NumberConstructor;
        default: number;
        required: false;
    };
    accept: {
        type: StringConstructor;
        default: string;
        required: false;
    };
    afterChooseImg: {
        type: PropType<(e: Event) => Promise<boolean> | boolean>;
        default: null;
        required: false;
    };
}>, {}, {
    version: string;
    visible: boolean;
    fileName: string;
    cutImageObj: HTMLImageElement | null;
    onPrintImgTimmer: any;
    toolBoxPosition: {
        x: number;
        y: number;
    };
    drawImg: DrawImg;
    toolBox: ToolBox;
    dropImg: DropImg;
    rotateImg: {
        angle: number;
    };
    rotateControl: RotateControl;
    scaleImg: {
        rate: number;
        params: {};
    };
    controlBox: {
        disable: boolean;
        btnName: string;
        start: {
            x: number;
            y: number;
            width: number;
            height: number;
        };
    };
    selectBox: boolean;
    selectBoxColor: string;
    isFlipHorizontal: boolean;
    isFlipVertically: boolean;
}, {
    showToolBoxWidth(): string;
    showToolBoxHeight(): string;
    showToolBoxX(): string;
    showToolBoxY(): string;
}, {
    handleOpen(img: any): void;
    handleClose(): void;
    chooseImg(): void;
    importImgToCanv(img: HTMLImageElement): void;
    putImgToCanv(e: any): Promise<false | undefined>;
    putToolBox(): void;
    checkToolBoxOverflow(): Promise<void>;
    isSupportFileApi(): boolean;
    dataURLtoFile(dataurl: string, filename: string): File | "不支持File对象";
    clearAll(): void;
    clearCutImageObj(): void;
    drawControlBox(width: number, height: number, x: number, y: number): void;
    resetToolBox(): void;
    toolBoxMouseDown(e: MouseEvent): void;
    toolBoxMouseMove(e: MouseEvent): void;
    toolBoxMouseLeave(): void;
    toolBoxMouseUp(): void;
    printImg(): void;
    dropImgOn(e: MouseEvent): void;
    dropImgOff(): void;
    dropImgMove(e: MouseEvent): void;
    scaleReset(): void;
    scaleImgWheel(e: any): false;
    flipHorizontal(): void;
    flipVertically(): void;
    turnImg(angle: number): void;
    turnReset(): void;
    controlBtnMouseDown(e: MouseEvent, btnName: string): void;
    controlBtnMouseUp(e: MouseEvent): void;
    controlBtnMouseMove(e: MouseEvent): void;
    changeFileName(fileName: string, type: string): string;
    cropPicture(doNotReset: boolean): void;
    scrollBarControlMove(e: MouseEvent): void;
    scrollBarControlOn(e: MouseEvent): void;
    scrollBarControlOff(): void;
}, ComponentOptionsMixin, ComponentOptionsMixin, ("onImageLoadError" | "error" | "onImageLoadComplete" | "onChooseImg" | "onClearAll" | "cutDown" | "onPrintImg")[], "onImageLoadError" | "error" | "onImageLoadComplete" | "onChooseImg" | "onClearAll" | "cutDown" | "onPrintImg", PublicProps, Readonly< ExtractPropTypes<{
    modalTitle: {
        type: StringConstructor;
        default: string;
        required: false;
    };
    crossOrigin: {
        type: BooleanConstructor;
        default: boolean;
        required: false;
    };
    crossOriginHeader: {
        type: StringConstructor;
        default: string;
        required: false;
    };
    label: {
        type: StringConstructor;
        default: string;
        required: false;
    };
    isModal: {
        type: BooleanConstructor;
        default: boolean;
        required: false;
    };
    lockScroll: {
        type: BooleanConstructor;
        default: boolean;
        required: false;
    };
    showChooseBtn: {
        type: BooleanConstructor;
        default: boolean;
        required: false;
    };
    boxWidth: {
        type: NumberConstructor;
        default: number;
        required: false;
    };
    boxHeight: {
        type: NumberConstructor;
        default: number;
        required: false;
    };
    cutWidth: {
        type: NumberConstructor;
        default: number;
        required: false;
    };
    cutHeight: {
        type: NumberConstructor;
        default: number;
        required: false;
    };
    rate: {
        type: PropType<string | null>;
        default: null;
        required: false;
    };
    tool: {
        type: BooleanConstructor;
        default: boolean;
        required: false;
    };
    toolBgc: {
        type: StringConstructor;
        default: string;
        required: false;
    };
    imgMove: {
        type: BooleanConstructor;
        default: boolean;
        required: false;
    };
    sizeChange: {
        type: BooleanConstructor;
        default: boolean;
        required: false;
    };
    originalGraph: {
        type: BooleanConstructor;
        default: boolean;
        required: false;
    };
    moveAble: {
        type: BooleanConstructor;
        default: boolean;
        required: false;
    };
    previewMode: {
        type: BooleanConstructor;
        default: boolean;
        required: false;
    };
    CuttingOriginal: {
        type: BooleanConstructor;
        default: boolean;
        required: false;
    };
    WatermarkText: {
        type: StringConstructor;
        default: string;
        required: false;
    };
    WatermarkTextFont: {
        type: StringConstructor;
        default: string;
        required: false;
    };
    WatermarkTextColor: {
        type: StringConstructor;
        default: string;
        required: false;
    };
    WatermarkTextX: {
        type: NumberConstructor;
        default: number;
        required: false;
    };
    WatermarkTextY: {
        type: NumberConstructor;
        default: number;
        required: false;
    };
    smallToUpload: {
        type: BooleanConstructor;
        default: boolean;
        required: false;
    };
    saveCutPosition: {
        type: BooleanConstructor;
        default: boolean;
        required: false;
    };
    scaleAble: {
        type: BooleanConstructor;
        default: boolean;
        required: false;
    };
    index: {
        default: null;
        required: false;
        type: (StringConstructor | NumberConstructor)[];
    };
    fileType: {
        default: string;
        required: false;
        type: StringConstructor;
    };
    toolBoxOverflow: {
        type: BooleanConstructor;
        default: boolean;
        required: false;
    };
    DoNotDisplayCopyright: {
        type: BooleanConstructor;
        default: boolean;
        required: false;
    };
    quality: {
        type: NumberConstructor;
        default: number;
        required: false;
    };
    accept: {
        type: StringConstructor;
        default: string;
        required: false;
    };
    afterChooseImg: {
        type: PropType<(e: Event) => Promise<boolean> | boolean>;
        default: null;
        required: false;
    };
}>> & Readonly<{
    onOnImageLoadError?: ((...args: any[]) => any) | undefined;
    onError?: ((...args: any[]) => any) | undefined;
    onOnImageLoadComplete?: ((...args: any[]) => any) | undefined;
    onOnChooseImg?: ((...args: any[]) => any) | undefined;
    onOnClearAll?: ((...args: any[]) => any) | undefined;
    onCutDown?: ((...args: any[]) => any) | undefined;
    onOnPrintImg?: ((...args: any[]) => any) | undefined;
}>, {
    modalTitle: string;
    crossOrigin: boolean;
    crossOriginHeader: string;
    label: string;
    isModal: boolean;
    lockScroll: boolean;
    showChooseBtn: boolean;
    boxWidth: number;
    boxHeight: number;
    cutWidth: number;
    cutHeight: number;
    rate: string | null;
    tool: boolean;
    toolBgc: string;
    imgMove: boolean;
    sizeChange: boolean;
    originalGraph: boolean;
    moveAble: boolean;
    previewMode: boolean;
    CuttingOriginal: boolean;
    WatermarkText: string;
    WatermarkTextFont: string;
    WatermarkTextColor: string;
    WatermarkTextX: number;
    WatermarkTextY: number;
    smallToUpload: boolean;
    saveCutPosition: boolean;
    scaleAble: boolean;
    index: string | number;
    fileType: string;
    toolBoxOverflow: boolean;
    DoNotDisplayCopyright: boolean;
    quality: number;
    accept: string;
    afterChooseImg: (e: Event) => Promise<boolean> | boolean;
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;

declare const _default: typeof __VLS_export;
export default _default;

declare interface DrawImg {
    img: HTMLImageElement | null;
    sx: number;
    sy: number;
    swidth: number;
    sheight: number;
    x: number;
    y: number;
    width: number;
    height: number;
}

declare interface DropImg {
    active: boolean;
    pageX: number;
    pageY: number;
    params: Partial<DrawImg>;
}

declare interface RotateControl {
    active: boolean;
    start: {
        x: number;
        y: number;
        position: number;
    };
    position: number;
}

declare interface ToolBox {
    disable: boolean;
    width: number;
    height: number;
    x: number;
    y: number;
    boxMove: {
        start: {
            x: number;
            y: number;
        };
        moveTo: {
            x: number;
            y: number;
        };
    };
}

export { }
