import { AfterContentInit, ElementRef, EventEmitter, OnDestroy, OnInit } from '@angular/core';
import { FormControl } from '@angular/forms';
import { FileDto } from './models/file-dto';
import { FilePickerPermissions } from './models/file-picker-permissions';
import { UploadError } from './models/uploadError';
import * as i0 from "@angular/core";
import * as i1 from "@seniorsistemas/angular-components/common/deprecated-selector";
/**
* @description Componente de upload de arquivos com suporte a seleção múltipla,
* validação de tipo/tamanho, controle de permissões (adicionar, ler, remover),
* download e cancelamento de uploads em andamento.
*
* @example
* ```html
*
* ```
*
* @category Inputs
*/
export declare class FilePickerComponent implements OnInit, OnDestroy, AfterContentInit {
private readonly sanitizer;
private readonly filePickerService;
private readonly translate;
static nextId: number;
ADD_PERMISSION: FilePickerPermissions;
READ_PERMISSION: FilePickerPermissions;
REMOVE_PERMISSION: FilePickerPermissions;
private readonly inputUpload;
private readonly anchor;
/** @description Identificador do componente no DOM. Gerado automaticamente se não informado. */
id: string;
/** @description Rótulo do botão de seleção de arquivo. */
chooseLabel?: string;
/** @description Rótulo do botão de remoção de arquivo. */
removeLabel?: string;
/** @description Rótulo do botão de cancelamento de upload. */
cancelLabel?: string;
/** @description Texto do tooltip exibido após upload bem-sucedido. */
successTooltip?: string;
/** @description Permite selecionar múltiplos arquivos ao mesmo tempo. */
multiple?: boolean;
/** @description Tipos MIME aceitos pelo seletor de arquivo (ex.: `'application/pdf,image/*'`). */
accept?: string;
/** @description Lista de extensões de arquivo aceitas para validação (ex.: `['.pdf', '.docx']`). @default [] */
supportedExtensions: string[];
/** @description Label ARIA para o nome do arquivo, para leitores de tela. */
ariaLabelFileName?: string;
/** @description Tamanho máximo por arquivo em bytes. */
maxFileSize?: number;
/** @description Tamanho máximo combinado de todos os arquivos em bytes. */
maxCombinedFileSize?: number;
/** @description Número máximo de arquivos que podem ser selecionados. */
fileLimit?: number;
/** @description Label ARIA para a barra de progresso do upload. */
ariaLabelProgress?: string;
/** @description Label ARIA para o ícone de sucesso. */
ariaLabelSuccess?: string;
/** @description Label ARIA para mensagens de erro de validação. */
ariaLabelError?: string;
/** @description Label ARIA para o botão de remoção de arquivo. */
ariaLabelRemove?: string;
/** @description FormControl externo vinculado ao componente para controle de estado. */
formControl?: FormControl;
/** @description Desabilita todas as interações do componente. @default false */
disabled: boolean;
/** @description Exibe a data de upload de cada arquivo. @default false */
showFileUploadDate: boolean;
/** @description Lista de permissões habilitadas no componente: `'add'`, `'read'`, `'remove'`. @default ALL_PERMISSIONS */
permissions: FilePickerPermissions[];
/**
* @description Lista de arquivos já enviados a serem exibidos no componente.
* Ao atribuir, os arquivos são processados e suas URLs são geradas para preview.
*/
set files(files: FileDto[]);
/** @description Emitido quando o usuário seleciona arquivos válidos para upload. */
uploadHandler: EventEmitter<{
files: FileDto[];
}>;
/** @description Emitido quando o usuário remove um arquivo da lista. */
removeFile: EventEmitter<{
file: File;
}>;
/** @description Emitido quando o usuário cancela um upload em andamento. Emite o índice do arquivo cancelado. */
cancelUpload: EventEmitter;
/** @description Emitido quando o usuário clica para baixar um arquivo. */
downloadFile: EventEmitter<{
index: number;
anchor: ElementRef;
}>;
/** @description Emitido quando um arquivo não passa na validação de tipo, tamanho ou limite. */
validateErrors: EventEmitter;
private _files;
private readonly ngUsubscribe;
isSmallDevice: boolean;
inputValue: string;
modifiedDate?: string;
ngOnInit(): void;
ngOnDestroy(): void;
ngAfterContentInit(): void;
onResize(): void;
_onInputFileSelect($event: Event): void;
onFileSelect(files: FileDto[]): void;
onRemoveFile(file: FileDto): void;
onCancelUpload(index: number): void;
onDowloadFile(index: number): void;
get files(): FileDto[];
formatFileSize(size: number): string;
private update;
private isFileLimitExceeded;
private isFileCombinedSizeExceeded;
private isFileSizeExceeded;
private isUnsupportedFileExtension;
private clearFileInput;
private getUploadDate;
private setModifiedDate;
static ɵfac: i0.ɵɵFactoryDeclaration;
static ɵcmp: i0.ɵɵComponentDeclaration;
}