import * as React from "react"; export interface ImageUploaderProps { /** Current image URL (remote, blob, or data URL). When set, the preview state is shown. */ value?: string; /** Fired when the user picks or drops a new image. The consumer is responsible for uploading. */ onChange: (file: File) => void; /** Fired when the user clicks the trash icon. Omit to hide the remove button. */ onRemove?: () => void; /** Accepted MIME types or extensions. Default: "image/*" */ accept?: string; /** Maximum file size in bytes. Default: 25MB */ maxSize?: number; /** Empty-state primary label. */ label?: string; /** Empty-state secondary description. */ description?: string; /** Empty-state hint line. Pass `null` to hide it. Default: derived from `maxSize`. */ hint?: React.ReactNode | null; /** Field label rendered above the component (via FieldWrapper). */ fieldLabel?: string; /** Disables interaction. */ disabled?: boolean; /** Show loading state — disables interaction and renders a spinner overlay. */ loading?: boolean; /** External error message. Internal validation errors take precedence when present. */ error?: string; /** CSS aspect-ratio for the dropzone, e.g. "16 / 9", "1 / 1". When set, overrides the default fixed height. */ aspectRatio?: string; /** object-fit for the preview image. Default: "cover" */ objectFit?: "cover" | "contain" | "fill" | "none" | "scale-down"; /** Alt text for the preview image. */ alt?: string; /** Extra className on the FieldWrapper root. */ className?: string; /** * Extra className on the dropzone element itself. Merged after the defaults, so it can * override the built-in sizing (e.g. pass `h-[148px]` to replace the default `h-44`). */ dropzoneClassName?: string; } export declare function ImageUploader({ value, onChange, onRemove, accept, maxSize, label, description, hint, fieldLabel, disabled, loading, error, aspectRatio, objectFit, alt, className, dropzoneClassName, }: ImageUploaderProps): React.JSX.Element; //# sourceMappingURL=image-uploader.d.ts.map