import { AfterViewInit, OnChanges, Renderer2, SimpleChanges } from '@angular/core';
import { PoProgressStatus } from '../../po-progress/enums/po-progress-status.enum';
import { PoButtonComponent } from './../../po-button/po-button.component';
import { PoModalAction, PoModalComponent } from '../../po-modal';
import { PoUploadBaseComponent } from './po-upload-base.component';
import { PoUploadFile } from './po-upload-file';
import { PoUploadStatus } from './po-upload-status.enum';
import { PoHelperComponent } from '../../po-helper';
/**
 * @docsExtends PoUploadBaseComponent
 *
 * @example
 *
 * <example name="po-upload-basic" title="PO Upload Basic">
 *   <file name="sample-po-upload-basic/sample-po-upload-basic.component.html"> </file>
 *   <file name="sample-po-upload-basic/sample-po-upload-basic.component.ts"> </file>
 * </example>
 *
 * <example name="po-upload-labs" title="PO Upload Labs">
 *   <file name="sample-po-upload-labs/sample-po-upload-labs.component.html"> </file>
 *   <file name="sample-po-upload-labs/sample-po-upload-labs.component.ts"> </file>
 * </example>
 *
 * <example name="po-upload-resume" title="PO Upload - Resume">
 *   <file name="sample-po-upload-resume/sample-po-upload-resume.component.html"> </file>
 *   <file name="sample-po-upload-resume/sample-po-upload-resume.component.ts"> </file>
 * </example>
 *
 * <example name="po-upload-rs" title="PO Upload - Realize & Show">
 *   <file name="sample-po-upload-rs/sample-po-upload-rs.component.html"> </file>
 *   <file name="sample-po-upload-rs/sample-po-upload-rs.component.ts"> </file>
 * </example>
 *
 * <example name="po-upload-download" title="PO Upload - with Download Button">
 *   <file name="sample-po-upload-download/sample-po-upload-download.component.html"> </file>
 *   <file name="sample-po-upload-download/sample-po-upload-download.component.ts"> </file>
 * </example>
 *
 * <example name="po-upload-preview" title="PO Upload - with Preview">
 *   <file name="sample-po-upload-preview/sample-po-upload-preview.component.html"> </file>
 *   <file name="sample-po-upload-preview/sample-po-upload-preview.component.ts"> </file>
 * </example>
 */
export declare class PoUploadComponent extends PoUploadBaseComponent implements AfterViewInit, OnChanges {
    renderer: Renderer2;
    private readonly i18nPipe;
    private readonly notification;
    private readonly inputFile;
    private readonly poUploadDragDropComponent;
    uploadButton: PoButtonComponent;
    modalComponent: PoModalComponent;
    helperEl?: PoHelperComponent;
    id: string;
    infoByUploadStatus: {
        [key: string]: {
            text: (percent?: number) => string;
            icon?: string;
        };
    };
    progressStatusByFileStatus: {
        0: PoProgressStatus;
        2: PoProgressStatus;
    };
    private calledByCleanInputValue;
    protected modalPrimaryAction: PoModalAction;
    protected modalSecondaryAction: PoModalAction;
    protected errorMessage: string;
    protected tooltipTitle: string;
    protected modalImageUrl: string;
    protected errorModalImage: boolean;
    constructor();
    get displayDragDrop(): boolean;
    get displaySendButton(): boolean;
    get selectFileButtonLabel(): string;
    get hasMoreThanFourItems(): boolean;
    get hasMultipleFiles(): boolean;
    get hasFileNotUploaded(): boolean;
    get isDisabled(): boolean;
    get isSelectButtonDisabled(): boolean;
    get isFieldDisabled(): boolean;
    get maxFiles(): number;
    cancel(file: PoUploadFile, keydown?: KeyboardEvent): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngAfterViewInit(): void;
    /** Método responsável por **limpar** o(s) arquivo(s) selecionado(s). */
    clear(): void;
    emitAdditionalHelp(): void;
    /**
     * Função que atribui foco ao componente.
     *
     * Para utilizá-la é necessário ter a instância do componente no DOM, podendo ser utilizado o ViewChild da seguinte forma:
     *
     * ```
     * import { PoUploadComponent } from '@po-ui/ng-components';
     *
     * ...
     *
     * @ViewChild(PoUploadComponent, { static: true }) upload: PoUploadComponent;
     *
     * focusUpload() {
     *   this.upload.focus();
     * }
     * ```
     */
    focus(): void;
    getAdditionalHelpTooltip(): string;
    hasAnyFileUploading(files: Array<PoUploadFile>): boolean;
    isAllowCancelEvent(status: PoUploadStatus): status is PoUploadStatus.Uploading | PoUploadStatus.Error | PoUploadStatus.None;
    onFileChange(event: any): void;
    onFileChangeDragDrop(files: any): void;
    onKeyDown(event: KeyboardEvent): void;
    /**
     * Método responsável por fechar o modal.
     */
    closeModal(): void;
    openModal(file: PoUploadFile, keydown?: KeyboardEvent): void;
    removeFile(file: any): void;
    /** Método responsável por **abrir** a janela para seleção de arquivo(s). */
    selectFiles(): void;
    sendFeedback(file?: any): void;
    /** Método responsável por **enviar** o(s) arquivo(s) selecionado(s). */
    sendFiles(): void;
    setDirectoryAttribute(canHandleDirectory: boolean): void;
    /**
     * Método que exibe `p-helper` ou executa a ação definida em `p-helper{eventOnClick}` ou em `p-additionalHelp`.
     * Para isso, será necessário configurar uma tecla de atalho utilizando o evento `p-keydown`.
     *
     * > Exibe ou oculta o conteúdo do componente `po-helper` quando o componente estiver com foco.
     *
     * ```
     * //Exemplo com p-label e p-helper
     * <po-upload
     *  #upload
     *  ...
     *  p-label="Label do upload"
     *  [p-helper]="helperOptions"
     *  (p-keydown)="onKeyDown($event, upload)"
     * ></po-upload>
     * ```
     * ```
     * ...
     * onKeyDown(event: KeyboardEvent, inp: PoUploadComponent): void {
     *  if (event.code === 'F9') {
     *    inp.showAdditionalHelp();
     *  }
     * }
     * ```
     */
    showAdditionalHelp(): boolean;
    stopUpload(file: PoUploadFile): void;
    trackByFn(index: any, file: PoUploadFile): string;
    uploadFiles(files: Array<PoUploadFile>): void;
    customClick(file: PoUploadFile): void;
    setHelper(label?: string, additionalHelpTooltip?: string): {
        hideAdditionalHelp: boolean;
        helperSettings?: any;
    };
    protected actionIsDisabled(action: any): any;
    protected isActionVisible(action: any): boolean;
    protected onImageError(file: any): void;
    protected showTooltipText(e: MouseEvent, text: string): void;
    private cleanInputValue;
    private isAdditionalHelpEventTriggered;
    private isUploadButtonFocused;
    private responseHandler;
    private setPipeArguments;
    private setPrimaryActionModal;
    private stopUploadHandler;
    private updateFiles;
    private updateModel;
    private uploadingHandler;
    private mapCleanUploadFiles;
}
