import { EventEmitter, ChangeDetectorRef, OnInit, ElementRef } from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser';
export interface Message {
    severity: string;
    message: string;
    id?: any;
}
export declare class UploaderComponent implements OnInit {
    sanitizer: DomSanitizer;
    private cdRef;
    /**
     * 上传提交的URL
     */
    url: string;
    /**
     * 上传模式包括图片上传和文件上传
     * @default 'image'
     */
    mode: string;
    /**
     * 可上传的文件类型
     * @default 'image/*'
     */
    accept: string;
    /**
     * 上传进度包括百分比和进度条
     * @default 'text'
     */
    progressMode: string;
    /**
     * 已上传文件列表
     */
    _files: any[];
    files: any;
    /**
     * 布局方式，'horizontal' | 'vertical'
     * @default 'horizontal'
     */
    direction: string;
    /**
     * 限制文件的大小
     */
    maxFileSize: number;
    /**
     * 限制文件的数量
     */
    maxFileCount: number;
    /**
     * 文件数量不符合要求的提示信息
     * @default '文件的数量超过限制'
     */
    invalidFileCountMessage: string;
    /**
     * 文件大小不符合要求的提示信息
     * @default '文件的大小不符合要求'
     */
    invalidFileSizeMessage: string;
    /**
     * 文件类型不符合要求的提示信息
     * @default '文件的类型不符合要求'
     */
    invalidFileTypeMessage: string;
    /**
     * 上传失败的提示信息
     * @default '上传失败'
     */
    uploadFailedMessage: string;
    /**
     * 上传是否是禁用状态
     * @default false
     */
    disabled: boolean;
    /**
     * 跨域请求中是否携带cookie
     */
    withCredentials: boolean;
    onBeforeUpload: EventEmitter<any>;
    onBeforeSend: EventEmitter<any>;
    onSuccess: EventEmitter<any>;
    onError: EventEmitter<any>;
    onClear: EventEmitter<any>;
    onRemove: EventEmitter<any>;
    onSelect: EventEmitter<any>;
    onProgress: EventEmitter<any>;
    /**
     * Input上传控件
     * @default false
     */
    uploadInput: ElementRef;
    /**
     * 错误信息集合
     *
     * @docs-private
     */
    msgs: Message[];
    /**
     * 重新上传中被替换的文件
     */
    private _replacingFile;
    private _method;
    constructor(sanitizer: DomSanitizer, cdRef: ChangeDetectorRef);
    ngOnInit(): void;
    /**
     * 选择待上传的文件
     *
     * @param {object} event - 文件选择事件
     * @docs-private
     */
    onFileSelect(event: any): void;
    /**
     * 文件验证通过后上传
     *
     * @param {object} files - 待上传文件
     */
    private validateFiles;
    /**
     * 清空上传Input所持有的文件，避免上传同一文件不触发change事件
     *
     * @param {object} files - 待上传文件
     */
    clearInputElement(): void;
    /**
     * 上传文件
     *
     * @param {object} files - 待上传文件
     */
    private upload;
    /**
     * 验证文件的类型、大小
     *
     * @param {object} files - 待上传文件
     */
    private validate;
    /**
     * 验证文件的数量是否超过上限
     *
     * @param {object} files - 待上传文件
     * @return {boolean} 是否通过验证
     */
    private validateFileCount;
    /**
     * 验证文件的类型是否符合要求
     *
     * @param {object} file - 待上传文件
     * @return {boolean} 是否通过验证
     */
    private isFileTypeValid;
    /**
     * 文件类型是否包含通配符
     *
     * @param {string} fileType - 文件类型
     * @return {boolean} 是否通过验证
     */
    private isWildcard;
    /**
     * 获取文件的第一类型
     *
     * @param {string} fileType - 文件类型
     * @return {string} 文件的第一类型，如image、file
     */
    private getTypeClass;
    /**
     * 获取文件名后缀
     *
     * @param {string} file - 待上传文件
     * @return {string} 文件名后缀
     */
    private getFileExtension;
    /**
     * 将文件原始大小的字节数格式化成可读性更好的单位数
     *
     * @param {number} bytes - 字节数
     * @return {string} 带有单位的文件大小
     */
    private formatSize;
    /**
     * 是否为图片
     *
     * @param {object} file - 待上传的文件
     * @return {boolean} 是否为图片
     */
    private isImage;
    /**
     * 取消上传中的文件
     *
     * @param {object} file - 上传中的文件
     * @docs-private
     */
    onCancelFile(file: any): void;
    /**
     * 删除已上传的文件
     *
     * @param {object} file - 已上传的文件
     * @docs-private
     */
    onRemoveFile(file: any): void;
    /**
     * 上传失败后重新上传当前文件
     *
     * @param {object} file - 上传失败的文件
     * @docs-private
     */
    onReuploadFile(file: any): void;
    /**
     * 上次成功后重新选择其他文件上传
     *
     * @param {object} file - 待上传的文件
     * @docs-private
     */
    onReplaceFile(file: any): void;
    /**
     * Sets the model value. Implemented as part of ControlValueAccessor.
     * @param value Value to be set to the model.
     */
    private writeValue;
    /**
     * The method to be called in order to update ngModel.
     * Now `ngModel` binding is not supported in multiple selection mode.
     */
    private _onModelChange;
    /**
     * Registers a callback that will be triggered when the value has changed.
     * Implemented as part of ControlValueAccessor.
     * @param fn On change callback function.
     */
    registerOnChange(fn: Function): void;
    /** onTouch function registered via registerOnTouch (ControlValueAccessor). */
    private _onTouch;
    /**
     * Registers a callback that will be triggered when the control has been touched.
     * Implemented as part of ControlValueAccessor.
     * @param fn On touch callback function.
     */
    registerOnTouched(fn: Function): void;
    /**
     * Toggles the disabled state of the component. Implemented as part of ControlValueAccessor.
     * @param isDisabled Whether the component should be disabled.
     */
    setDisabledState(isDisabled: boolean): void;
    /**
     * 用于Form中的数据接口
     */
    _updateFormModel(): void;
}
