import { EventEmitter, InjectionToken, OnDestroy, OnInit } from '@angular/core';
import { NgxFileDropEntry } from 'ngx-file-drop';
import { Observable } from 'rxjs';
import { FormControlExtended } from '@al00x/forms';
import * as i0 from "@angular/core";
export type ImageUploaderComponent = InstanceType<typeof CacImageUploaderComponent>;
export declare const IMAGE_UPLOADER_COMPONENT_CONFIG: InjectionToken<Partial<CacImageUploaderComponent<unknown, unknown>>>;
export declare class CacImageUploaderComponent<INPUT, OPTION> implements OnInit, OnDestroy {
    private readonly destroyRef;
    control: FormControlExtended;
    fetchFn?: (value: INPUT, opts?: OPTION) => Observable<string | File | Blob>;
    uploadFn?: (file: File, opts?: OPTION) => Observable<INPUT>;
    options?: OPTION;
    label: string;
    disabled: boolean;
    accept: string;
    onUploading: EventEmitter<boolean>;
    onUploaded: EventEmitter<INPUT>;
    value: import("@angular/core").InputSignal<string | undefined>;
    isLoading: import("@angular/core").WritableSignal<boolean>;
    url: import("@angular/core").WritableSignal<string | undefined>;
    private _objectUrls;
    constructor();
    ngOnInit(): void;
    updateValues(): void;
    ngOnDestroy(): void;
    onFileDrop(files: NgxFileDropEntry[]): void;
    onDelete(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<CacImageUploaderComponent<any, any>, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<CacImageUploaderComponent<any, any>, "cac-image-uploader", never, { "control": { "alias": "control"; "required": false; }; "fetchFn": { "alias": "fetchFn"; "required": false; }; "uploadFn": { "alias": "uploadFn"; "required": false; }; "options": { "alias": "options"; "required": false; }; "label": { "alias": "label"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "accept": { "alias": "accept"; "required": false; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "onUploading": "onUploading"; "onUploaded": "onUploaded"; }, never, never, true, never>;
}
