import type { LocalKeys } from '../../I18n';
import type { AttachmentFile, UploadResponse } from '../types/attachment';
/**
 * 文件上传业务函数集中位置。
 *
 * 历史背景：
 *   `upLoadFileToServer` 原先与 `AttachmentButton`（UI 按钮）共置于
 *   `src/MarkdownInputField/AttachmentButton/index.tsx`，导致：
 *     - `FileUploadManager`、`hooks/usePasteHandler`（基础设施 / 业务 hook）
 *       反向 import 一个 UI 模块，破坏「UI 模块只导出 UI」的边界；
 *     - 按钮文件超过 400 行，可读性差。
 *
 *   现在抽离为独立工具模块，`AttachmentButton/index.tsx` 仅保留 re-export
 *   兼容层（`export { upLoadFileToServer } from '../utils/uploadFile'`），
 *   维持公开 API（`@ant-design/agentic-ui` 已通过 `src/index.ts:408` 导出
 *   `upLoadFileToServer`）不变。
 */
/** 单文件上传配置 */
export type UploadProps = {
    /** 文件映射表 */
    fileMap?: Map<string, AttachmentFile>;
    /** 文件映射变更回调 */
    onFileMapChange?: (files?: Map<string, AttachmentFile>) => void;
    /** 上传函数，返回文件 URL */
    upload?: (file: AttachmentFile, index: number) => Promise<string>;
    /** 上传函数（返回完整响应） */
    uploadWithResponse?: (file: AttachmentFile, index: number) => Promise<UploadResponse>;
    /** 单文件最大大小（字节） */
    maxFileSize?: number;
    /** 最大文件数量 */
    maxFileCount?: number;
    /** 最小文件数量 */
    minFileCount?: number;
    /** 国际化文案 */
    locale?: Partial<LocalKeys>;
    /** 文件数量超出 maxFileCount 限制时的回调 */
    onExceedMaxCount?: (info: {
        maxCount: number;
        currentCount: number;
        selectedCount: number;
    }) => void;
    /** 文件超出 maxFileSize 大小限制时的回调 */
    onExceedMaxSize?: (info: {
        file: AttachmentFile;
        maxSize: number;
    }) => void;
    /** 文件上传失败时的回调 */
    onUploadError?: (info: {
        file: AttachmentFile;
        error: unknown;
    }) => void;
    /**
     * 上传失败时自动将文件从列表中移除（退回），不显示错误状态
     * @default false
     */
    removeFileOnUploadError?: boolean;
};
/**
 * 上传文件到服务器
 *
 * @param files - 要上传的文件列表
 * @param props - 上传配置项
 * @param props.upload - 上传函数，返回文件 URL
 * @param props.uploadWithResponse - 上传函数（返回完整响应）
 * @param props.fileMap - 文件映射表
 * @param props.onFileMapChange - 文件映射变更回调
 * @param props.maxFileSize - 单文件最大大小（字节）
 * @param props.maxFileCount - 最大文件数量
 * @param props.minFileCount - 最小文件数量
 * @param props.locale - 国际化文案
 */
export declare const upLoadFileToServer: (files: ArrayLike<File>, props: UploadProps) => Promise<void>;
