import type { Ref } from 'react';
import type { BaseProps, ForwardRefForwardPropsComponent, NoChildrenProp, OmitStrict, TestIdProp } from '../../types';
import type { FormControlProps } from '../FormControl';
import { type ModalProps } from '../Modal';
import type { FileItemProps } from './FileItem';
import type { FileListProps } from './FileList';
/** Props to be used when rendering compact variant for multiple FileInput. */
interface MultiAttachCompactProps {
    /** Modal props */
    modal?: Pick<ModalProps, 'onBeforeOpen'> & {
        /** Callback for cancel button */
        onCancel: ({ close }: {
            close: () => void;
        }) => void;
        /** Callback for submit button */
        onSubmit: ({ close }: {
            close: () => void;
        }) => void;
        /** If true renders loading indicator inside Modal. */
        loading?: boolean;
    };
    /** Conveys the number of files attached  */
    count?: number;
}
interface BaseFileInputProps extends BaseProps, NoChildrenProp, TestIdProp, Pick<FileItemProps, 'previewFromActions'>, Pick<FileListProps, 'onDownloadAll'> {
    /** Called when files are added either via the input or drop zone. */
    onFilesAdded?: (files: File[]) => void;
    /**
     * Allow multiple files to be selected from the OS specific file browser.
     * NOTE: This does not restrict multiple files from being added via drag and drop.
     * Restrict multi file drag and drop via onFilesAdded and custom info message.
     * @default false
     */
    multiple?: boolean;
    /**
     * Renders compact variant.
     * @default false
     */
    compact?: boolean;
    /** An array of files that have been uploaded. */
    files?: OmitStrict<FileItemProps, 'previewFromActions'>[];
    /**
     * Specify allowed file types.
     * @see {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/accept}
     */
    accept?: string | string[];
    /**
     * Sets DOM id for the control and associates label element via 'for' attribute.
     * If an id is not pass, a random id will be generated for any render.
     */
    id?: FormControlProps['id'];
    /** Set visual state based on a validation state. */
    status?: FormControlProps['status'];
    /** Pass a string or a fragment with an Icon and string. */
    label?: FormControlProps['label'];
    /** Visually hides the label region. */
    labelHidden?: FormControlProps['labelHidden'];
    /** It is recommended to pass a simple string to offer guidance. Text will be styled based on status prop. */
    info?: FormControlProps['info'];
    /** Indicate if the field is required. The browser defaults to false. */
    required?: FormControlProps['required'];
    /** Disable the control. The browser defaults to false. */
    disabled?: FormControlProps['disabled'];
    /** Makes the input non editable and non clickable. */
    readOnly?: FormControlProps['readOnly'];
    /** Sets html name attribute for the underlying control. Useful for mapping to a data field. */
    name?: FormControlProps['name'];
    /** Pass a heading and content to show additional information on the field. */
    additionalInfo?: FormControlProps['additionalInfo'];
    /** Ref for the input element within the component's dom structure. */
    ref?: Ref<HTMLInputElement>;
}
export interface FileInputProps extends BaseFileInputProps, MultiAttachCompactProps {
}
declare const _default: ForwardRefForwardPropsComponent<FileInputProps> & {
    getTestIds: (testIdProp?: TestIdProp["testId"]) => import("../../types").TestIdsRecord<readonly ["control", "files", "label", "info", "additional-info", "suggestion-accept", "suggestion-reject"]>;
};
export default _default;
//# sourceMappingURL=FileInput.d.ts.map