/// <reference types="react" />
import { AbstractCropperInstanceCallbacks, AbstractCropperInstanceParameters, CropperImage, DrawOptions } from 'advanced-cropper';
import { StretchableBoundaryMethods } from '../components/service/StretchableBoundary';
import { CropperCanvasMethods } from '../components/service/CropperCanvas';
import { ExtendedSettings, SettingsExtension } from '../types';
import { AbstractCropperRef, AbstractCropperSettings } from '../components/AbstractCropper';
import { CropperInstanceSettingsProp } from './useCropperInstance';
export interface AbstractCropperHookProps<Settings extends AbstractCropperSettings> extends AbstractCropperInstanceParameters<Settings>, AbstractCropperInstanceCallbacks<AbstractCropperRef<Settings>> {
    src?: string | null;
    checkOrientation?: boolean;
    canvas?: boolean;
    crossOrigin?: 'anonymous' | 'use-credentials' | boolean;
    onReady?: (cropper: AbstractCropperRef<Settings>) => void;
    onError?: (cropper: AbstractCropperRef<Settings>) => void;
    onUpdate?: (cropper: AbstractCropperRef<Settings>) => void;
    unloadTime?: number;
    autoReconcileState?: boolean;
    settings?: CropperInstanceSettingsProp<Settings>;
}
export declare function useAbstractCropper<Extension extends SettingsExtension = {}>(props: () => AbstractCropperHookProps<ExtendedSettings<Extension>>): {
    cropper: {
        reset: () => Promise<void>;
        refresh: () => Promise<void>;
        setImage: (image: CropperImage) => void;
        reconcileState: (options?: import("advanced-cropper/instance/AbstractCropperInstance").TransitionOptions | undefined) => void;
        moveCoordinates: (directions: Partial<import("advanced-cropper/types").MoveDirections>, options?: (import("advanced-cropper/instance/AbstractCropperInstance").InteractionOptions & import("advanced-cropper/instance/AbstractCropperInstance").ImmediatelyOptions & import("advanced-cropper/instance/AbstractCropperInstance").NormalizeOptions & import("advanced-cropper/instance/AbstractCropperInstance").TransitionOptions) | undefined) => void;
        moveCoordinatesEnd: (options?: (import("advanced-cropper/instance/AbstractCropperInstance").ImmediatelyOptions & import("advanced-cropper/instance/AbstractCropperInstance").TransitionOptions) | undefined) => void;
        resizeCoordinates: (anchor: import("advanced-cropper/types").ResizeAnchor, directions: Partial<import("advanced-cropper/types").MoveDirections>, parameters?: unknown, options?: (import("advanced-cropper/instance/AbstractCropperInstance").InteractionOptions & import("advanced-cropper/instance/AbstractCropperInstance").ImmediatelyOptions & import("advanced-cropper/instance/AbstractCropperInstance").NormalizeOptions & import("advanced-cropper/instance/AbstractCropperInstance").TransitionOptions) | undefined) => void;
        clear: () => void;
        resizeCoordinatesEnd: (options?: (import("advanced-cropper/instance/AbstractCropperInstance").ImmediatelyOptions & import("advanced-cropper/instance/AbstractCropperInstance").TransitionOptions) | undefined) => void;
        moveImage: (left: number, top?: number | undefined, options?: (import("advanced-cropper/instance/AbstractCropperInstance").InteractionOptions & import("advanced-cropper/instance/AbstractCropperInstance").ImmediatelyOptions & import("advanced-cropper/instance/AbstractCropperInstance").NormalizeOptions & import("advanced-cropper/instance/AbstractCropperInstance").TransitionOptions) | undefined) => void;
        flipImage: (horizontal?: boolean | undefined, vertical?: boolean | undefined, options?: (import("advanced-cropper/instance/AbstractCropperInstance").InteractionOptions & import("advanced-cropper/instance/AbstractCropperInstance").ImmediatelyOptions & import("advanced-cropper/instance/AbstractCropperInstance").NormalizeOptions & import("advanced-cropper/instance/AbstractCropperInstance").TransitionOptions) | undefined) => void;
        zoomImage: (scale: number | import("advanced-cropper/types").Scale, options?: (import("advanced-cropper/instance/AbstractCropperInstance").InteractionOptions & import("advanced-cropper/instance/AbstractCropperInstance").ImmediatelyOptions & import("advanced-cropper/instance/AbstractCropperInstance").NormalizeOptions & import("advanced-cropper/instance/AbstractCropperInstance").TransitionOptions) | undefined) => void;
        rotateImage: (rotate: number | import("advanced-cropper/types").Rotate, options?: (import("advanced-cropper/instance/AbstractCropperInstance").InteractionOptions & import("advanced-cropper/instance/AbstractCropperInstance").ImmediatelyOptions & import("advanced-cropper/instance/AbstractCropperInstance").NormalizeOptions & import("advanced-cropper/instance/AbstractCropperInstance").TransitionOptions) | undefined) => void;
        transformImage: (transform: import("advanced-cropper/types").ImageTransform, options?: (import("advanced-cropper/instance/AbstractCropperInstance").InteractionOptions & import("advanced-cropper/instance/AbstractCropperInstance").ImmediatelyOptions & import("advanced-cropper/instance/AbstractCropperInstance").NormalizeOptions & import("advanced-cropper/instance/AbstractCropperInstance").TransitionOptions) | undefined) => void;
        transformImageEnd: (options?: (import("advanced-cropper/instance/AbstractCropperInstance").ImmediatelyOptions & import("advanced-cropper/instance/AbstractCropperInstance").TransitionOptions) | undefined) => void;
        setCoordinates: (transforms: import("advanced-cropper/types").CoordinatesTransform | import("advanced-cropper/types").CoordinatesTransform[], options?: (import("advanced-cropper/instance/AbstractCropperInstance").ImmediatelyOptions & import("advanced-cropper/instance/AbstractCropperInstance").TransitionOptions) | undefined) => void;
        setVisibleArea: (visibleArea: import("advanced-cropper/types").Coordinates, options?: (import("advanced-cropper/instance/AbstractCropperInstance").ImmediatelyOptions & import("advanced-cropper/instance/AbstractCropperInstance").TransitionOptions) | undefined) => void;
        startTransitions: () => void;
        setState: (modifier: import("advanced-cropper/types").CropperState | ((state: import("advanced-cropper/types").CropperState | null, settings: import("advanced-cropper/types").CoreSettings) => import("advanced-cropper/types").CropperState | null) | null, options?: (import("advanced-cropper/instance/AbstractCropperInstance").TransitionOptions & import("advanced-cropper/instance/AbstractCropperInstance").ImmediatelyOptions & import("advanced-cropper/instance/AbstractCropperInstance").InteractionOptions & import("advanced-cropper/instance/AbstractCropperInstance").PostprocessOptions) | undefined) => void;
        hasInteractions: () => boolean;
        getStencilCoordinates: () => {
            left: number;
            top: number;
            width: number;
            height: number;
        };
        getCoordinates: (options?: {
            round?: boolean | undefined;
        } | undefined) => import("advanced-cropper/types").Coordinates | null;
        getVisibleArea: () => {
            width: number;
            height: number;
            top: number;
            left: number;
        } | null;
        getTransforms: () => import("advanced-cropper/types").Transforms;
        getTransitions: () => any;
        getInteractions: () => import("advanced-cropper/types").CropperInteractions;
        getSettings: () => ExtendedSettings<Extension>;
        getState: () => import("advanced-cropper/types").CropperState | null;
        getDefaultState(): import("advanced-cropper/types").CropperState | null;
        getCanvas: (options?: DrawOptions | undefined) => HTMLCanvasElement | null;
        getImage: () => {
            src: string;
            revoke: boolean;
            transforms: import("advanced-cropper/types").Transforms;
            arrayBuffer: ArrayBuffer | null;
            width: number;
            height: number;
        } | null;
        isLoading: () => boolean;
        isLoaded: () => boolean;
    };
    refs: {
        image: import("react").RefObject<HTMLElement>;
        boundary: import("react").RefObject<StretchableBoundaryMethods>;
        canvas: import("react").RefObject<CropperCanvasMethods>;
    };
    image: CropperImage | null;
};
