import type { Ref } from 'vue';
import type { FormActionType } from '../../form';
import type { BasicPropsType, FileItemType, ProvideDataType, Recordable } from './types';
declare class Handler {
    private emit;
    private _hyperlinkFormMethods;
    private _props;
    private _provide;
    private set props(value);
    private _params;
    private _showTable;
    private _refFileList;
    private _uploadResponse;
    private _refFileListPushEnd;
    private _immediate;
    private _controlInOuter;
    private _fileFormatter;
    /**
     * newest typeCode
     */
    private _typeCode;
    private _isLoading;
    private _dataSource;
    currentTypeCodeIsHyperlink: Ref<boolean, boolean>;
    private _paramsName;
    private _paramsAddress;
    private _apis;
    currentUpload: Promise<any> | FileItemType[] | null;
    get dataSource(): Ref<{
        actualId?: string | undefined;
        address: string;
        appId?: number | undefined;
        businessId?: string | undefined;
        businessKey?: string | undefined;
        createBy?: string | undefined;
        createByName?: string | undefined;
        createTime?: string | undefined;
        deleted: number;
        fileSize?: string | undefined;
        fullName: string;
        hyperlink?: number | undefined;
        id?: number | undefined;
        moduleCode?: string | undefined;
        moduleId: number;
        moduleName?: string | undefined;
        name: string;
        runtime?: number | undefined;
        size: number;
        sourceFileDownload?: number | undefined;
        suffix: string;
        type: number;
        typeCode?: string | undefined;
        typeName?: string | undefined;
        version: number;
        watermarkFileDownload?: number | undefined;
    }[], FileItemType[] | {
        actualId?: string | undefined;
        address: string;
        appId?: number | undefined;
        businessId?: string | undefined;
        businessKey?: string | undefined;
        createBy?: string | undefined;
        createByName?: string | undefined;
        createTime?: string | undefined;
        deleted: number;
        fileSize?: string | undefined;
        fullName: string;
        hyperlink?: number | undefined;
        id?: number | undefined;
        moduleCode?: string | undefined;
        moduleId: number;
        moduleName?: string | undefined;
        name: string;
        runtime?: number | undefined;
        size: number;
        sourceFileDownload?: number | undefined;
        suffix: string;
        type: number;
        typeCode?: string | undefined;
        typeName?: string | undefined;
        version: number;
        watermarkFileDownload?: number | undefined;
    }[]>;
    get typeCode(): Ref<string | undefined, string | undefined>;
    get loading(): Ref<boolean, boolean>;
    get typeCodeRecord(): Recordable<import("./types").LabelValueOptions<any, any>>;
    get apis(): ProvideDataType;
    get getFileFormatter(): {
        formatToApi: (files: FileItemType[]) => {
            actualId: string;
            moduleCode: string | undefined;
            versionList: FileItemType[];
        }[];
        upadteVersion: (file: FileItemType) => void;
        getFilesByActualId: (actualId: string) => FileItemType[] | undefined;
        getBasicFileByActualId: (actualId: string) => FileItemType | undefined;
        getNewestFileByActualId: (actualId: string) => FileItemType | undefined;
    };
    set paramsName(v: string);
    set paramsAddress(v: string);
    set uploadResponse(v: FileItemType[] | undefined);
    /**
     * 构造函数.
     * @param props BasicPropsType
     */
    constructor(props: BasicPropsType, instanceEmit: any);
    /**
     * 如多个文件正在上传或上传列表(变量)已清空 -> 不发请求
     */
    private isInvalidRequest;
    /**
     * 提取文件真实id
     */
    private getFileActualIds;
    /**
     * 返回编辑后的文件列表数据格式
     * ```js
     * [
     *    {
     *        moduleCode: "...",
     *        versionList: [
     *          file1,...
     *        ]
     *    }
     * ]
     * ```
     * @returns
     */
    getResult: () => {
        actualId: string;
        moduleCode: string | undefined;
        versionList: FileItemType[];
    }[];
    getPropsOrProvide<T extends keyof BasicPropsType>(propName: T): BasicPropsType[T];
    /**
     * 将列表数据填到表格上
     */
    fillDataSource: () => void;
    /**
     * 请求文件列表成功和上传成功时触发
     * @param newRecord 新上传成功的文件
     */
    private throwResponse;
    /**
     * 更新一条数据
     * @param {Recordable} record
     * @memberof Handler
     **/
    updateItem: (record: FileItemType, oldFileActualIds: string) => void;
    /**
     * 删除一条数据
     * @param {Recordable} record 需要删除的文件信息
     * @memberof Handler
     */
    deleteItem: (record: Recordable) => void;
    backfill(): Promise<void>;
    /**
     * 在弹窗关闭时调用
     */
    clearResponse(): void;
    /**
     * 多个文件依次push到文件列表(变量)
     * @param file 一个文件
     */
    antBeforeUpload: (file: File) => false | undefined;
    /**
     * 将多个文件组合在一起发送上传请求
     */
    customRequest: () => void;
    private resetFileList;
    /**
     * 真正的上传请求
     */
    private realUpload;
    hyperlinkFormRegister: (methods: Partial<FormActionType>) => void;
    /**
     * 超链接上传
     */
    hyperlinkUpload(): void;
    preOpenChooseFile: (e: MouseEvent) => void;
}
export { Handler };
