import { RefObject } from 'react';
import { Emitter } from '@co-hooks/emitter';
import { FileClass } from './file';
import { IBaseFile, IFileUploadErrorMessage, IFileUploadEvent, IFileUploadOptions } from '..';
interface IFilesMap<T> {
    [key: string]: FileClass<T>;
}
export declare class FileUpload<T> extends Emitter<IFileUploadEvent<T>> {
    files: FileClass<T>[];
    filesMap: IFilesMap<T>;
    input: RefObject<HTMLInputElement>;
    maxLength: number;
    autoUpload: boolean;
    name: string;
    uploadUrl: string;
    accept: string;
    multiple: boolean;
    withCredentials: boolean;
    headers: {
        [key: string]: string;
    };
    errors: IFileUploadErrorMessage;
    init(input: RefObject<HTMLInputElement>): void;
    initFile(file: Partial<IBaseFile<T>>): FileClass<T>;
    initURLFile(file: IBaseFile<T>): FileClass<T>;
    clickInput(): void;
    addFiles(files: FileList | File[]): void;
    replaceFile(id: string): void;
    removeFileById(id: string): void;
    getIndexById(id: string): number;
    upload(file: FileClass<T>): FileClass<T>;
    uploadFileById(id: string): void;
    isOverMaxLength(): boolean;
    updateOptions(options: Omit<IFileUploadOptions<T>, 'value'>): void;
    updateValue(value: IBaseFile<T>[]): void;
    destroy(): void;
    clearUnusedFiles(): void;
    private getBaseFiles;
}
export {};
