import * as _angular_core from '@angular/core';
import { PipeTransform, OnDestroy, ChangeDetectorRef } from '@angular/core';
import { ControlValueAccessor, Validators, NgControl } from '@angular/forms';
import { HttpContext, HttpClient } from '@angular/common/http';
import { DomSanitizer, SafeUrl } from '@angular/platform-browser';

declare class UploadField implements ControlValueAccessor {
    readonly label: _angular_core.InputSignal<string | undefined>;
    readonly title: _angular_core.InputSignal<string>;
    readonly description: _angular_core.InputSignal<string>;
    readonly endPoint: _angular_core.InputSignal<string>;
    readonly size: _angular_core.InputSignal<"normal" | "large" | "xlarge" | undefined>;
    readonly userImgClass: _angular_core.InputSignal<string | undefined>;
    readonly shape: _angular_core.InputSignal<"circle" | "field" | "card">;
    readonly multiple: _angular_core.InputSignal<boolean>;
    readonly accept: _angular_core.InputSignal<string | undefined>;
    readonly isDragging: _angular_core.ModelSignal<boolean>;
    readonly fileSizeLimit: _angular_core.InputSignal<number | undefined>;
    readonly: _angular_core.InputSignal<boolean>;
    readonly context: _angular_core.InputSignal<HttpContext | undefined>;
    readonly onChange: _angular_core.OutputEmitterRef<any>;
    readonly requiredValidator: typeof Validators.required;
    readonly value: _angular_core.WritableSignal<any>;
    readonly files: _angular_core.Signal<any[]>;
    readonly primaryFile: _angular_core.Signal<any>;
    readonly imgPath: _angular_core.Signal<string | undefined>;
    readonly disabled: _angular_core.WritableSignal<boolean>;
    readonly uploadProgress: _angular_core.WritableSignal<number>;
    readonly loading: _angular_core.WritableSignal<boolean>;
    private readonly httpClient;
    private readonly pendingUploads;
    onTouched: () => void;
    onModelChange: (value: any) => void;
    readonly ngControl: NgControl;
    constructor();
    writeValue(value: any): void;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: any): void;
    setDisabledState(disabled: boolean): void;
    onAdd(item: any): void;
    onDelete(item?: any): void;
    onFileSelect(event: Event): void;
    prepareFiles(files: File[]): void;
    uploadFile(file: File): void;
    handleUploadDone(file: any): void;
    downloadFile(value: any): void;
    onDragOver(event: DragEvent): void;
    onDragLeave(event: DragEvent): void;
    onDrop(event: DragEvent): void;
    protected resolveImgPath(value: any): string | undefined;
    private fetchMetadata;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<UploadField, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<UploadField, "mt-upload-field", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "endPoint": { "alias": "endPoint"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "userImgClass": { "alias": "userImgClass"; "required": false; "isSignal": true; }; "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "isDragging": { "alias": "isDragging"; "required": false; "isSignal": true; }; "fileSizeLimit": { "alias": "fileSizeLimit"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "context": { "alias": "context"; "required": false; "isSignal": true; }; }, { "isDragging": "isDraggingChange"; "onChange": "onChange"; }, never, never, true, never>;
}

declare class SecureImagePipe implements PipeTransform, OnDestroy {
    private static readonly cachedBlobUrls;
    private static readonly pendingRequests;
    httpClient: HttpClient;
    domSanitizer: DomSanitizer;
    cdr: ChangeDetectorRef;
    constructor();
    ngOnDestroy(): void;
    private subscription;
    private latestValue;
    private transformValue;
    private loading;
    transform(imagePath: string, wrapUrlOrContext?: boolean | HttpContext, contextOrEndpoint?: HttpContext | string, endPoint?: string): string | SafeUrl;
    private static createCacheKey;
    private static serializeContextValue;
    private getOrLoadBlobUrl;
    private setUpSubscription;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SecureImagePipe, never>;
    static ɵpipe: _angular_core.ɵɵPipeDeclaration<SecureImagePipe, "secureImage", true>;
}

export { SecureImagePipe, UploadField };
