'use client';

/**
 * @frank-auth/react - Profile Form Component
 *
 * User profile editing form with image upload, field validation,
 * and real-time updates for personal information management.
 */
export interface ProfileFormProps {
    /**
     * Form submission handler
     */
    onSubmit?: (data: ProfileFormData) => void;
    /**
     * Profile update handler
     */
    onUpdate?: (data: ProfileFormData) => void;
    /**
     * Success callback
     */
    onSuccess?: (message: string) => void;
    /**
     * Error callback
     */
    onError?: (error: string) => void;
    /**
     * Show save button
     */
    showSaveButton?: boolean;
    /**
     * Auto-save changes
     */
    autoSave?: boolean;
    /**
     * Auto-save delay (ms)
     */
    autoSaveDelay?: number;
    /**
     * Show profile image upload
     */
    showImageUpload?: boolean;
    /**
     * Show email field
     */
    showEmail?: boolean;
    /**
     * Show phone field
     */
    showPhone?: boolean;
    /**
     * Show username field
     */
    showUsername?: boolean;
    /**
     * Show metadata fields
     */
    showMetadata?: boolean;
    /**
     * Custom fields to display
     */
    customFields?: ProfileFormField[];
    /**
     * Hide specific fields
     */
    hideFields?: string[];
    /**
     * Field layout (columns)
     */
    fieldLayout?: "single" | "double";
    /**
     * Form variant
     */
    variant?: "flat" | "bordered" | "faded";
    /**
     * Form size
     */
    size?: "sm" | "md" | "lg";
    /**
     * Whether form is disabled
     */
    isDisabled?: boolean;
    /**
     * Whether form is loading
     */
    isLoading?: boolean;
    /**
     * Custom className
     */
    className?: string;
    /**
     * Show verification status
     */
    showVerificationStatus?: boolean;
    /**
     * Allow profile image removal
     */
    allowImageRemoval?: boolean;
    /**
     * Image upload handler
     */
    onImageUpload?: (file: File) => Promise<string>;
    /**
     * Image removal handler
     */
    onImageRemove?: () => Promise<void>;
    /**
     * Maximum file size for images (bytes)
     */
    maxImageSize?: number;
    /**
     * Allowed image types
     */
    allowedImageTypes?: string[];
}
export interface ProfileFormData {
    firstName?: string;
    lastName?: string;
    email?: string;
    phone?: string;
    username?: string;
    profileImageUrl?: string;
    metadata?: Record<string, any>;
    customFields?: Record<string, any>;
}
export interface ProfileFormField {
    key: string;
    label: string;
    type: "text" | "email" | "phone" | "textarea" | "select" | "switch";
    placeholder?: string;
    description?: string;
    required?: boolean;
    options?: {
        value: string;
        label: string;
    }[];
    validation?: (value: any) => string | null;
}
export declare function ProfileForm({ onSubmit, onUpdate, onSuccess, onError, showSaveButton, autoSave, autoSaveDelay, showImageUpload, showEmail, showPhone, showUsername, showMetadata, customFields, hideFields, fieldLayout, variant, size, isDisabled, isLoading: externalLoading, className, showVerificationStatus, allowImageRemoval, onImageUpload, onImageRemove, maxImageSize, // 5MB
allowedImageTypes, }: ProfileFormProps): import("react/jsx-runtime").JSX.Element | null;
export default ProfileForm;
//# sourceMappingURL=profile-form.d.ts.map