import { UploadFile, UploadProps } from 'antdv-next';
import { ClassValue, CSSProperties, DefineComponent, StyleValue, VNodeChild } from 'vue';
import { FileCardProps } from '../file-card';
import { SemanticType as FileCardSemanticType } from '../file-card/FileCard';
import { SemanticType as FileCardListSemanticType } from '../file-card/List';
import { PlaceholderFieldSlotInfo, PlaceholderSlotInfo, PlaceholderType } from './PlaceholderUploader';
export type SemanticType = "root" | "list" | "placeholder" | "upload";
export interface Attachment<T = any> extends UploadFile<T>, Omit<FileCardProps, "size" | "byte" | "type"> {
    description?: VNodeChild;
    cardType?: FileCardProps["type"];
}
export interface AttachmentsProps<T = any> {
    prefixCls?: string;
    rootClass?: string;
    style?: StyleValue;
    class?: ClassValue;
    classes?: Partial<Record<SemanticType | FileCardSemanticType | FileCardListSemanticType, string>>;
    styles?: Partial<Record<SemanticType | FileCardSemanticType | FileCardListSemanticType, CSSProperties>>;
    children?: VNodeChild;
    disabled?: boolean;
    placeholder?: PlaceholderType | ((type: "inline" | "drop") => PlaceholderType);
    getDropContainer?: null | (() => HTMLElement | null | undefined);
    items?: Attachment<T>[];
    overflow?: "scrollX" | "scrollY" | "wrap";
    accept?: string;
    action?: string;
    method?: string;
    directory?: boolean;
    multiple?: boolean;
    maxCount?: number;
    beforeUpload?: UploadProps["beforeUpload"];
    onRemove?: (file: Attachment) => boolean | Promise<boolean>;
    customRequest?: UploadProps["customRequest"];
    withCredentials?: boolean;
    openFileDialogOnClick?: boolean;
}
export interface AttachmentsSlots {
    placeholder?: (info: PlaceholderSlotInfo) => VNodeChild;
    placeholderIcon?: (info: PlaceholderFieldSlotInfo) => VNodeChild;
    placeholderTitle?: (info: PlaceholderFieldSlotInfo) => VNodeChild;
    placeholderDescription?: (info: PlaceholderFieldSlotInfo) => VNodeChild;
}
export interface AttachmentsRef {
    nativeElement?: HTMLDivElement | null;
    fileNativeElement?: HTMLInputElement | null;
    upload: (file: File) => void;
    select: (options?: {
        accept?: string;
        multiple?: boolean;
    }) => void;
}
declare const _default: DefineComponent<AttachmentsProps>;
export default _default;
export type { PlaceholderConfig, PlaceholderFieldSlotInfo, PlaceholderSlotInfo, PlaceholderType, } from './PlaceholderUploader';
