import { PureComponent } from 'react';
import { II18nLocaleUpload } from '../../i18n';
import { IAbstractUploadProps, IUploadFileItem, IUploadOnErrorHandler, IUploadItemProps } from '../types';
declare abstract class AbstractUpload<UPLOAD_ITEM extends IUploadFileItem, ON_UPLOAD_SUCCESS_RETURN, UPLOAD_ITEM_COMP_PROPS extends IUploadItemProps<UPLOAD_ITEM>, P extends IAbstractUploadProps<UPLOAD_ITEM, ON_UPLOAD_SUCCESS_RETURN, UPLOAD_ITEM_COMP_PROPS>, S = unknown> extends PureComponent<P, S> {
    abstract get isControlled(): any;
    abstract getUploadItem(id: string): UPLOAD_ITEM;
    emitOnError: IUploadOnErrorHandler;
    emitOnUpload: (file: File, uploadItem: UPLOAD_ITEM) => void;
    abstract deleteUploadItem: (deleteItem: UPLOAD_ITEM) => void;
    abstract retryUploadItem: (retryItem: UPLOAD_ITEM) => void;
    abstract updateUploadItem: (updateItemId: string, overrideProps: Partial<UPLOAD_ITEM>) => void;
    updateUploadItemStatusToSuccess: (updateItemId: string, onUploadSuccessReturn: ON_UPLOAD_SUCCESS_RETURN) => void;
    updateUploadItemStatusToFailed: (updateItemId: string) => void;
    updateUploadItemPercent: (updateItemId: string, percent: number) => void;
    abstract onTriggerUploadFile: (file: File) => Promise<any>;
    protected getUploadSuccessOverrideProps(onUploadSuccessReturn: ON_UPLOAD_SUCCESS_RETURN): Partial<UPLOAD_ITEM>;
    protected abstract createNewUploadFileItem(file: File): UPLOAD_ITEM | Promise<UPLOAD_ITEM>;
    protected abstract renderTrigger(i18n: II18nLocaleUpload): React.ReactNode;
    protected abstract renderTips(i18n: II18nLocaleUpload): React.ReactNode;
}
export default AbstractUpload;
