import { ElementRef, EventEmitter } from '@angular/core';
import { FormGroup } from '@angular/forms';
import * as i0 from "@angular/core";
export interface UploadConfig {
    id: string;
    label?: string;
    multiple: boolean;
    acceptedFileTypes?: string[];
    maxFileSize?: number;
    helperText?: string;
    required?: boolean;
    maxFiles?: number;
    showFileList?: boolean;
    messages?: {
        success?: string;
        error?: string;
        fileTypeError?: string;
        fileSizeError?: string;
        maxFilesError?: string;
    };
}
interface FileMessage {
    type: 'success' | 'error' | 'warning';
    text: string;
}
export declare class UploadComponent {
    config: UploadConfig;
    parentForm: FormGroup;
    filesChanged: EventEmitter<File[]>;
    fileInput: ElementRef;
    files: File[];
    isDragging: boolean;
    isInvalid: boolean;
    uploading: boolean;
    message: FileMessage | null;
    get acceptedFileTypesString(): string;
    constructor();
    ngOnInit(): void;
    openFileSelector(): void;
    onDragOver(event: DragEvent): void;
    onDragLeave(event: DragEvent): void;
    onDrop(event: DragEvent): void;
    onFileSelected(event: Event): void;
    handleFiles(fileList: FileList): void;
    validateFile(file: File): boolean;
    removeFile(file: File): void;
    openFile(file: File): void;
    getTruncatedName(name: string): string;
    formatFileSize(bytes: number): string;
    showMessage(message: FileMessage): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<UploadComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<UploadComponent, "cfc-upload", never, { "config": { "alias": "config"; "required": false; }; "parentForm": { "alias": "parentForm"; "required": false; }; }, { "filesChanged": "filesChanged"; }, never, never, false, never>;
}
export {};
