import { OnInit, ElementRef, EventEmitter } from '@angular/core';
import { CfCoreComponent } from '../core/core.component';
import { FileUploaderModel } from '../../models/file-uploader/file-uploader.model';
import { FileUploaderStylingModel } from '../../models/file-uploader/file-uploader-styling.model';
import { TemplateService } from '../../services/template-service/template.service';
/**
 * <p>File-uploader component based on:</p>
 * <ul>
 * <li><a href="https://github.com/uniprank/ng2-file-uploader/wiki/Module-API" target="_blank">Angular 2 File Upload</a></li>
 * <li>CF Button</li>
 * <li>Angular Material Progress Bar</li>
 * </ul>
 * <pre>
 * <code>
 * import { FileUploaderModel } from 'cedrus-fusion'
 * import { FileUploaderStylingModel } from 'cedrus-fusion'
 * <code><</code>cf-file-uploader<code>></code><code><</code><code>/</code>cf-file-uploader<code>></code>
 * </code>
 * </pre>
 */
export declare class CfFileUploaderComponent extends CfCoreComponent implements OnInit {
    elementRef: ElementRef;
    /** @hidden
     * It is an object with properties for FileUploaderModel.
     */
    cfFileUploader: FileUploaderModel;
    /** @hidden
     * It is a trigger for input[type="file"] which is opening browser window for selecting files
     */
    loadWindowTrigger: any;
    /**
     * <pre>{
     *  main: {
     *    url: string,                  // Path to server where the files be uploaded. Default: ''
     *    alias: string,                // File alias. Default: 'file'
     *    headers: Object,              // An object with header informations. Default: {}
     *    filters: FileFilter[],        // A list of filters which are extend the default list. Default: []
     *    formData: Object[],           // A list of data to be sent along with the files. Default: []
     *    autoUpload: boolean,          // Automatically upload new files when they are adding to the queue. Default: false
     *    method: string,               // Request methode - HTML5 only. Default: 'POST'
     *    removeBySuccess: boolean,     // Remove file from queue when upload was successfull. Default: false
     *    queueLimit: number,           // Limitation of files at the queue (-1 is unlimited). Default: -1
     *    enableCors: boolean,          // Activate CORS - HTML5 only. Default: false
     *    withCredentials: boolean,     // If to use credentials. Default: false
     *    uniqueFiles: boolean,         // To add only unique files to files list. Default: false
     *  },
     *  showDropZone: boolean,          // Means if component must show dropZone. Default: true
     *  dropZoneLabel: string,          // Means label for dropZone. Default: 'Drop files here or click to select: '
     *  showFilesActions: boolean,      // Means if to show actions for all selected files. Default: true
     *  showFileActions: boolean,       // Means if to show actions for a single file. Default: true
     *  uploadFileButton: ButtonModel,  // ButtonModel for each file uploa. Default: new ButtonModel({ label: "Upload" })
     *  removeFileButton: ButtonModel,  // ButtonModel for each file remov. Default: new ButtonModel({ label: "Remove" })
     *  uploadFilesButton: ButtonModel, // ButtonModel for upload all file. Default: new ButtonModel({ label: "Upload All" })
     *  removeFilesButton: ButtonModel, // ButtonModel for remove all file. Default: new ButtonModel({ label: "Remove All" })
     * }</pre>
     * <p>Example of object:</p>
     * <pre>{
     *  main: {
     *    "url": "http://localhost:3001/upload",
     *    "removeBySuccess": true
     *  }
     * }</pre>
     */
    properties: FileUploaderModel;
    /**
     * <pre>{
     *  dropZone: StylingModel,                // Styling dropZone html element
     *  files: StylingModel,                   // Styling files html element
     *  file: StylingModel,                    // Styling file html element
     *  fileImage: StylingModel,               // Styling fileImage html element
     *  fileName: StylingModel,                // Styling fileName html element
     *  fileProgress: StylingModel,            // Styling fileProgress html element
     *  fileActions: StylingModel,             // Styling fileActions html element
     *  filesActions: StylingModel,            // Styling filesActions html element
     *  uploadFileButton: ButtonStylingModel,  // Styling uploadFileButton html element
     *  removeFileButton: ButtonStylingModel,  // Styling removeFileButton html element
     *  uploadFilesButton: ButtonStylingModel, // Styling uploadFilesButton html element
     *  removeFilesButton: ButtonStylingModel, // Styling removeFilesButton html element
     * }</pre>
     * <p>Example of object:</p>
     * <pre>{
     *  myUploaderStyling = new FileUploaderStylingModel({
     *    dropZone: {
     *      class: 'dropzone-styling'
     *    },
     *    uploadButton: new ButtonStylingModel({
     *      button: { class: 'mat-primary mat-raised-button' }
     *    }),
     *    removeButton: new ButtonStylingModel({
     *      button: { class: 'mat-primary mat-raised-button' }
     *    }),
     *    uploadAllButton: new ButtonStylingModel({
     *      button: { class: 'mat-primary mat-raised-button' }
     *    }),
     *    removeAllButton: new ButtonStylingModel({
     *      button: { class: 'mat-primary mat-raised-button' }
     *    })
     *  });
     * }</pre>
     */
    styling: FileUploaderStylingModel;
    /**
     * Event emited when file was added to list. Event contain added file
     */
    onAddFile: EventEmitter<any>;
    /**
     * Event emited when all files was added to list. Event contain whole component
     */
    onAddFiles: EventEmitter<any>;
    /**
     * Event emited on error adding file to list. Event contain error file
     */
    onAddFileError: EventEmitter<any>;
    /**
     * Event emited when file was uploaded. Event contain uploaded file
     */
    onComplete: EventEmitter<any>;
    /**
     * Event emited when all files was uploaded. Event contain whole component
     */
    onCompleteAll: EventEmitter<any>;
    /** @hidden*/
    constructor(elementRef: ElementRef, /**@hidden */ templateService: TemplateService);
    /** @hidden
     * On init it is generating FileUploaderModel and based on it - generating FileUploader model for external library. Also are registered event emiters for external library events. And generated styling object.
     */
    ngOnInit(): void;
    /** @hidden
     * It is function for trigger opening browser window
     */
    openWindow(): void;
    /** @hidden
     * It is function for clearing list with added files
     */
    removeAll(): void;
    /** @hidden
     * Function to calculate uploading percentage process
     * @param process  it is json process object
     */
    processingFile(process: any): any;
    /** @hidden
     * Function to calculate file size
     * @param process  it is json process object
     */
    processedFile(process: any): any;
}
