import { FileInputProps, FileUploadError } from "../../types/file-uploader.js";
import { FormHelperTextProps, FormLabelProps } from "../../types/mui.js";
import { ChangeEvent, ReactNode } from "react";
import * as react_jsx_runtime0 from "react/jsx-runtime";
import { Control, FieldValues, Path, RegisterOptions } from "react-hook-form";

//#region src/mui/file-uploader/index.d.ts
type RHFFileUploaderProps<T extends FieldValues> = {
  fieldName: Path<T>;
  control: Control<T>;
  registerOptions?: RegisterOptions<T, Path<T>>;
  required?: boolean;
  showFileSize?: boolean;
  hideFileList?: boolean;
  renderUploadButton?: (fileInput: ReactNode) => ReactNode;
  renderFileItem?: (file: File, index: number) => ReactNode;
  onValueChange?: (acceptedFiles: File | File[] | null, event: ChangeEvent<HTMLInputElement>) => void;
  onUploadError?: (errors: FileUploadError[], rejectedFiles: File[]) => void;
  label?: ReactNode;
  showLabelAboveFormField?: boolean;
  formLabelProps?: FormLabelProps;
  errorMessage?: ReactNode;
  helperText?: ReactNode;
  hideErrorMessage?: boolean;
  formHelperTextProps?: FormHelperTextProps;
  fullWidth?: boolean;
} & FileInputProps;
declare const RHFFileUploader: <T extends FieldValues>({
  fieldName,
  control,
  registerOptions,
  accept,
  multiple,
  maxFiles,
  maxSize,
  hideFileList,
  showFileSize,
  renderUploadButton,
  renderFileItem,
  onValueChange,
  disabled: muiDisabled,
  onUploadError,
  label,
  showLabelAboveFormField,
  formLabelProps,
  required,
  helperText,
  errorMessage,
  hideErrorMessage,
  formHelperTextProps,
  fullWidth
}: RHFFileUploaderProps<T>) => react_jsx_runtime0.JSX.Element;
//#endregion
export { type FileUploadError, RHFFileUploaderProps, RHFFileUploader as default };