import { ElementRef, EventEmitter } from '@angular/core';
import { AvatarUploadError, AvatarUploadMetadata, AvatarUploadResult } from './types';
import * as i0 from "@angular/core";
/**
* AvatarUploadComponent
*
* A complete avatar upload solution with:
* - Image selection from device
* - Crop modal with round preview
* - Automatic compression and thumbnail generation
* - Upload to Firebase Storage
* - Backend sync via AuthService
*
* @example Basic usage
* ```html
*
* ```
*/
export declare class AvatarUploadComponent {
private imageService;
private storageService;
private authService;
private i18n;
fileInput: ElementRef;
/** Component configuration */
readonly props: import("@angular/core").InputSignal;
/** Emitted after successful upload and backend sync */
uploaded: EventEmitter;
/** Emitted on any error during the process */
error: EventEmitter;
/** Emitted when upload starts */
uploadStart: EventEmitter;
protected loading: import("@angular/core").WritableSignal;
protected showCropModal: import("@angular/core").WritableSignal;
protected showViewModal: import("@angular/core").WritableSignal;
protected selectedFile: import("@angular/core").WritableSignal;
protected previewUrl: import("@angular/core").WritableSignal;
protected imageLoadError: import("@angular/core").WritableSignal;
/** Merged config with defaults */
protected config: import("@angular/core").Signal<{
currentUrl?: string;
initials?: string;
backgroundColor: string;
size: number;
editable: boolean;
storagePath: string;
i18nNamespace: string;
maxFileSize: number;
compressQuality: number;
maxWidth: number;
thumbnailSize: number;
showViewButton: boolean;
}>;
/** URL to display (preview takes priority over current) */
protected displayUrl: import("@angular/core").Signal;
/** Aria label for edit button */
protected editButtonLabel: import("@angular/core").Signal;
/** Label for view photo button */
protected viewPhotoLabel: import("@angular/core").Signal;
/** Label for close button inside photo viewer */
protected closePhotoLabel: import("@angular/core").Signal;
/** Open file picker dialog */
openFilePicker(): void;
/** Handle file selection */
onFileSelected(event: Event): void;
/** Handle crop completion */
onCropComplete(croppedBlob: Blob): Promise;
/** Handle crop cancel */
onCropCancel(): void;
/** Handle crop load failure */
onCropLoadFailed(): void;
/** Handle image load error */
onImageError(): void;
/** Timeout for upload operations (30 seconds) */
private static readonly UPLOAD_TIMEOUT_MS;
/** Process cropped image and upload */
private processAndUpload;
/** Emit error event */
private emitError;
static ɵfac: i0.ɵɵFactoryDeclaration;
static ɵcmp: i0.ɵɵComponentDeclaration;
}