import { TUseValues } from '../../AHooks/useValues';
import { IABaseProps } from '../ABase/ABase';
import { Resources } from '../AResource/AResource';
export interface IFileRendererProps {
    /**
     * file : File
     *
     * Description : file to render
     */
    file: File;
    /**
     * useFile : TUseValues<File | null>
     *
     * Description : useFile of AFileBox
     */
    useFile: TUseValues<File | null>;
}
export interface ISelectRendererProps {
    /**
     * fileSelectButtonClassName? : string
     *
     * Description : className of file select button
     */
    fileSelectButtonClassName?: string;
    /**
     * onClick : () => void
     *
     * Description : onClick handler for file selection
     */
    onClick: () => void;
    /**
     * resources : typeof Resources.AFileBox
     *
     * Description : resources of AFileBox
     */
    resources: typeof Resources.AFileBox;
}
export interface IDropRendererProps {
    /**
     * resources : typeof Resources.AFileBox
     *
     * Description : resources of AFileBox
     */
    resources: typeof Resources.AFileBox;
}
export interface IAFileBoxProps extends IABaseProps {
    /**
     * DropRenderer? : (props: IDropRendererProps) => React.ReactNode
     *
     * Description : DropRenderer for customizing drag and drop UI
     */
    DropRenderer?: (props: IDropRendererProps) => React.ReactNode;
    /**
     * FileRenderer? : (props: IFileRendererProps) => React.ReactNode
     *
     * Description : FileRenderer of AFileBox
     */
    FileRenderer?: (props: IFileRendererProps) => React.ReactNode;
    /**
     * SelectRenderer? : (props: ISelectRendererProps) => React.ReactNode
     *
     * Description : SelectRenderer for customizing file selection UI
     */
    SelectRenderer?: (props: ISelectRendererProps) => React.ReactNode;
    /**
     * accept? : string
     *
     * Description : acceptable formats of file
     */
    accept?: string;
    /**
     * fileSelectButtonClassName? : string
     *
     * Description : className of file select button
     */
    fileSelectButtonClassName?: string;
    /**
     * onInvalidFileFormat? : () => void
     *
     * Description : callback function when file format is invalid (not in accept list)
     */
    onInvalidFileFormat?: () => void;
    /**
     * resources? : typeof Resources.AFileBox
     *
     * Description : resources of AFileBox
     */
    resources?: Partial<typeof Resources.AFileBox>;
    /**
     * useFile : TUseValues<File | null>
     *
     * Description : useFile of AFileBox
     */
    useFile: TUseValues<File | null>;
}
/**
 * AComponent : AFileBox
 *
 * Description : AFileBox is a file box component that can select a file.
 *
 * Basic Usage :
 *
 *     const [file, setFile] = useState<File | null>(null);
 *
 *     if (case 1)
 *       <AFileBox useFile={[file, setFile]}/>
 */
export declare const AFileBox: (props: IAFileBoxProps) => import("react/jsx-runtime").JSX.Element;
