interface HeroImageUploaderProps {
    /** Current image URL if one already exists */
    imageUrl?: string;
    /** Callback fired with new image URL (or undefined if removed) */
    onChange: (url: string | undefined) => void;
    /** Upload endpoint (required) */
    uploadEndpoint: string;
    /** Height of drop-zone. Number treated as pixels, string passed directly (e.g. '100%') */
    height?: number | string;
    /** Image object-fit, defaults to cover */
    objectFit?: 'cover' | 'contain' | 'fill' | 'none' | 'scale-down';
    /** Show a replace/upload button overlay in addition to remove (default true for parity with blog editor) */
    showReplaceButton?: boolean;
    /** If true, skip the actual upload and just return a base64 data URL preview. Useful for unauthenticated flows – the caller can upload later. */
    deferUpload?: boolean;
    /** Optional custom upload handler for authenticated uploads. If provided, this will be used instead of the default fetch */
    onUpload?: (file: File) => Promise<string>;
    /** Optional custom delete handler for authenticated deletion. If provided, this will be used instead of just clearing the image */
    onDelete?: () => Promise<void>;
}
/**
 * Reusable dashed hero-style image uploader identical to Blog Editor's hero picker.
 * Handles client-side validation (JPEG/PNG/WebP/GIF up to 5 MB), upload, preview & removal.
 */
export declare function HeroImageUploader({ imageUrl, onChange, uploadEndpoint, height, objectFit, showReplaceButton, deferUpload, onUpload, onDelete }: HeroImageUploaderProps): import("react").JSX.Element;
export {};
//# sourceMappingURL=hero-image-uploader.d.ts.map