import { SxProps, Theme } from '@mui/material';
import React, { DetailedHTMLProps, InputHTMLAttributes, ReactNode } from 'react';
import { DropEvent, DropzoneOptions, FileRejection } from 'react-dropzone';
import { InputErrorProps, Omit } from '../../types';
import { UploadableFileModel } from '../AttachFileDrop';
type OmitProps = 'onDrop' | 'onDragEnter' | 'onDragLeave' | 'onDragOver' | 'multiple' | 'style' | 'required' | 'accept';
export type ValueModel = {
    id?: string | null;
    name?: string | null;
    url?: string | null;
    mimeType?: string | null;
};
export type FileDropProps<T extends ValueModel, Multiple extends boolean | undefined> = {
    focusedStyle?: SxProps<Theme>;
    acceptStyle?: SxProps<Theme>;
    rejectStyle?: SxProps<Theme>;
    sx?: SxProps<Theme>;
    customChildren?: React.ReactNode | React.ReactNode[];
    helperNode?: React.ReactNode;
    value?: Multiple extends boolean ? T[] : T;
    onChange?: (accepted: UploadableFileModel[], rejected: FileRejection[], event: DropEvent) => void;
    onDelete?: (id?: string | null) => void;
    InputProps?: Omit<DetailedHTMLProps<InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, OmitProps>;
    multiple?: Multiple;
    children?: Multiple extends boolean ? (file?: UploadableFileModel | T, onDelete?: () => void) => ReactNode : never;
} & Omit<DropzoneOptions, 'onDrop' | 'multiple'> & InputErrorProps;
export type { FileRejection, DropEvent, };
