import { Ref } from 'vue';
type PositionKeys = 'top' | 'bottom' | 'left' | 'right';
type ResizePosition = PositionKeys | 'left-top' | 'left-bottom' | 'right-top' | 'right-bottom' | '';
interface ProcessedDOMRect {
    top: number;
    right: number;
    bottom: number;
    left: number;
    width: number;
    height: number;
}
interface SizeUnit {
    width: string;
    height: string;
}
interface PositionUnit {
    left: string;
    top: string;
    right: string;
    bottom: string;
}
export interface Size {
    width: number;
    height: number;
}
interface Point {
    x: number;
    y: number;
}
type CropAreaStylesType = SizeUnit & PositionUnit;
export type RectSizePosition = Point & Size;
export declare function useCropState(): {
    cropAreaRef: Ref<HTMLCanvasElement | null>;
    cropWrapperRef: Ref<HTMLCanvasElement | null>;
    cropAreaStyles: {
        width: string;
        height: string;
        left: string;
        top: string;
        right: string;
        bottom: string;
    };
    resizePosition: import('vue').Reactive<ResizePosition[]>;
    positionType: Ref<ResizePosition>;
    maxSize: {
        width: number;
        height: number;
    };
    isMove: Ref<boolean>;
    originPosition: {
        x: number;
        y: number;
    };
    moveStartPosition: {
        x: number;
        y: number;
    };
    rectSizePosition: {
        x: number;
        y: number;
        width: number;
        height: number;
    };
    wrapperInfo: {
        top: number;
        right: number;
        bottom: number;
        left: number;
        width: number;
        height: number;
    };
};
export declare function useCropMethod(props: {
    cropAreaRef: Ref<HTMLCanvasElement | null>;
    cropWrapperRef: Ref<HTMLCanvasElement | null>;
    positionType: Ref<ResizePosition>;
    maxSize: Size;
    cropAreaStyles: CropAreaStylesType;
    isMove: Ref<boolean>;
    moveStartPosition: Point;
    originPosition: Point;
    rectSizePosition: RectSizePosition;
    wrapperInfo: ProcessedDOMRect;
    cropScale: Ref<number>;
}): {
    onMousemove: (event: MouseEvent) => void;
    onMouseup: () => void;
    onAreaMousedown: (event: MouseEvent) => void;
    onAreaMouseup: () => void;
    onMousedown: (event: MouseEvent, position: ResizePosition) => void;
    processDOMRect: (rect: DOMRect) => ProcessedDOMRect;
};
export {};
