import { ButtonProps, TooltipProps } from '@patternfly/react-core';
import { Accept, DropEvent, DropzoneOptions, FileError, FileRejection } from 'react-dropzone';
export interface AttachButtonProps extends ButtonProps {
    /** Callback for when button is clicked */
    onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;
    /** Callback function for AttachButton when an attachment is made */
    onAttachAccepted?: (data: File[], event: DropEvent) => void;
    /** Specifies the file types accepted by the attachment upload component.
     *  Files that don't match the accepted types will be disabled in the file picker.
     *  For example,
     *  allowedFileTypes: { 'application/json': ['.json'], 'text/plain': ['.txt'] }
     **/
    allowedFileTypes?: Accept;
    /** Class name for AttachButton */
    className?: string;
    /** Props to control if the AttachButton should be disabled */
    isDisabled?: boolean;
    /** Props to control the PF Tooltip component */
    tooltipProps?: Omit<TooltipProps, 'content'>;
    /** Ref applied to AttachButton and used in tooltip */
    innerRef?: React.Ref<any>;
    /** English text "Attach" used in the tooltip */
    tooltipContent?: string;
    /** Test id applied to input */
    inputTestId?: string;
    /** Whether button is compact */
    isCompact?: boolean;
    /** Minimum file size allowed */
    minSize?: number;
    /** Max file size allowed */
    maxSize?: number;
    /** Max number of files allowed */
    maxFiles?: number;
    /** Whether attachments are disabled */
    isAttachmentDisabled?: boolean;
    /** Callback when file(s) are attached */
    onAttach?: <T extends File>(acceptedFiles: T[], fileRejections: FileRejection[], event: DropEvent) => void;
    /** Callback function for AttachButton when an attachment fails */
    onAttachRejected?: (fileRejections: FileRejection[], event: DropEvent) => void;
    /** Validator for files; see https://react-dropzone.js.org/#!/Custom%20validation for more information */
    validator?: <T extends File>(file: T) => FileError | readonly FileError[] | null;
    /** Additional props passed to react-dropzone */
    dropzoneProps?: DropzoneOptions;
    /** Icon displayed in attach button */
    icon?: React.ReactNode;
}
export declare const AttachButton: import("react").ForwardRefExoticComponent<AttachButtonProps & import("react").RefAttributes<any>>;
