import React from 'react';

interface CropArea {
    x: number;
    y: number;
    width: number;
    height: number;
}
type CropShape = "circle" | "square" | "rectangle";
type OutputImageType = "png" | "jpeg" | "webp";
type CropCompleteCallback = (area: CropArea, croppedImageData?: string) => void;
interface ThemeOptions {
    backgroundColor?: string;
    overlayColor?: string;
    borderColor?: string;
    accentColor?: string;
    textColor?: string;
    buttonBackgroundColor?: string;
    buttonTextColor?: string;
}
interface ProfileCropperProps {
    initialImage?: string;
    onSave?: (imageData: string) => void;
    onCancel?: () => void;
    cropShape?: CropShape;
    aspectRatio?: number;
    outputFormat?: OutputImageType;
    outputQuality?: number;
    theme?: ThemeOptions;
    size?: number;
    className?: string;
    style?: React.CSSProperties;
    containerHeight?: number;
    maxZoom?: number;
    minZoom?: number;
    zoomStep?: number;
    allowZoom?: boolean;
    allowDrag?: boolean;
    headerText?: string;
    previewText?: string;
    saveButtonText?: string;
    cancelButtonText?: string;
    loadingText?: string;
    uploadText?: string;
    uploadSubtext?: string;
    zoomLabel?: string;
    changeButtonText?: string;
    acceptedFileTypes?: string;
    maxFileSizeMB?: number;
    showPreview?: boolean;
    previewSize?: number;
    showZoomControls?: boolean;
    showChangeButton?: boolean;
    containerClassName?: string;
    headerClassName?: string;
    previewContainerClassName?: string;
    buttonContainerClassName?: string;
    saveButtonClassName?: string;
    cancelButtonClassName?: string;
    errorContainerClassname?: string;
    errorTextClassname?: string;
    onError?: (error: string) => void;
}

declare const ProfileCropper: React.FC<ProfileCropperProps>;

export { type CropArea, type CropCompleteCallback, type CropShape, type OutputImageType, ProfileCropper, type ProfileCropperProps, type ThemeOptions };
