import { AfterViewInit, ElementRef, OnDestroy, OnInit } from "@angular/core";
import { FileField, FilePreviewType } from "../models/file-field";
import { DomSanitizer, SafeUrl } from "@angular/platform-browser";
import { BehaviorSubject } from "rxjs";
import { TaskResourceService } from "../../../resources/engine-endpoint/task-resource.service";
import { LoggerService } from "../../../logger/services/logger.service";
import { SnackBarService } from "../../../snack-bar/services/snack-bar.service";
import { TranslateService } from "@ngx-translate/core";
import { EventService } from "../../../event/services/event.service";
import { ResizedEvent } from "angular-resize-event";
import { DataFieldPortalData } from "../../models/data-field-portal-data-injection-token";
import { FileFieldRequest } from "../../../resources/interface/file-field-request-body";
import { AbstractFileFieldDefaultComponent } from '../../models/abstract-file-field-default-component';
import { FrontActionService } from "../../../actions/services/front-action.service";
import * as i0 from "@angular/core";
export interface FileState {
    progress: number;
    uploading: boolean;
    downloading: boolean;
    completed: boolean;
    error: boolean;
}
export declare abstract class AbstractFileDefaultFieldComponent extends AbstractFileFieldDefaultComponent<FileField> implements OnInit, AfterViewInit, OnDestroy {
    protected _taskResourceService: TaskResourceService;
    protected _log: LoggerService;
    protected _snackbar: SnackBarService;
    protected _translate: TranslateService;
    protected _eventService: EventService;
    protected _sanitizer: DomSanitizer;
    protected _frontActionService: FrontActionService;
    /**
     * The width of the default file preview border in pixels. The `px` string is appended in the code.
     */
    static readonly DEFAULT_PREVIEW_BORDER_WIDTH = 0;
    /**
     * The CSS style attribute of the default file preview border.
     */
    static readonly DEFAULT_PREVIEW_BORDER_STYLE = "none";
    /**
     * The CSS color string of the default file preview border.
     */
    static readonly DEFAULT_PREVIEW_BORDER_COLOR = "black";
    state: FileState;
    /**
     * Image field view element reference from component template that is initialized after view init.
     */
    imageEl: ElementRef;
    imageDivEl: ElementRef;
    /**
     * If file type can be displayed
     */
    isDisplayable: boolean;
    /**
     * Max height of preview
     */
    private maxHeight;
    /**
     * Store file for preview
     */
    private fileForPreview;
    /**
     * Url of preview file
     */
    previewSource: SafeUrl;
    /**
     * Store file to show/download
     */
    private fileForDownload;
    /**
     * Full size file url
     */
    fullSource: BehaviorSubject<SafeUrl>;
    /**
     * Extension of file to preview
     */
    previewExtension: FilePreviewType;
    /**
     * Form control subscription
     */
    private updatedFieldSubscription;
    isFilePreview: boolean;
    isFilePreviewButton: boolean;
    /**
     * Only inject services.
     * @param _taskResourceService Provides to download a file from the backend
     * @param _log Logger service
     * @param _snackbar Snackbar service to notify user
     * @param _translate Translate service for I18N
     * @param _eventService used for parsing of backend response
     * Option injected trough `NAE_INFORM_ABOUT_INVALID_DATA` InjectionToken
     * @param _sanitizer Sanitize url of image preview
     * @param dataFieldPortalData Field and form control data if field is provided with portal
     */
    protected constructor(_taskResourceService: TaskResourceService, _log: LoggerService, _snackbar: SnackBarService, _translate: TranslateService, _eventService: EventService, _sanitizer: DomSanitizer, _frontActionService: FrontActionService, dataFieldPortalData: DataFieldPortalData<FileField>);
    /**
     * Set :
     *  - File field to [FileFieldService]{@link FileFieldService}
     *  - Display name
     */
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    chooseFile(): void;
    /**
     * Call after click on file field.
     *
     * If file field has no file uploaded
     * [FilesUploadComponent]{@link AbstractFilesUploadComponent} via [SideMenu]{@link SideMenuService} opens.
     *
     * Otherwise opens a file picker from which the user can select files.
     */
    upload(): void;
    download(): void;
    private initDownloadFile;
    protected downloadViaAnchor(blob: Blob): void;
    deleteFile(): void;
    isEmpty(): boolean;
    protected createRequestBody(): FileFieldRequest;
    protected get defaultState(): FileState;
    /**
     * Construct display name.
     */
    constructDisplayName(): string;
    /**
     * Initialize file field image from backend if it is image type.
     */
    protected initFileFieldImage(): void;
    protected checkFileBeforeDownload(): boolean;
    showPreviewDialog(): void;
    changeMaxWidth(event: ResizedEvent): void;
    protected initializePreviewIfDisplayable(): void;
    getHeight(): number;
    getPreviewBorderWidth(): string;
    getPreviewBorderStyle(): string;
    getPreviewBorderColor(): string;
    isBorderLGBTQ(): boolean;
    isBorderDefault(): boolean;
    borderPropertyEnabled(property: string): boolean;
    hasTitle(): boolean;
    hasHint(): boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<AbstractFileDefaultFieldComponent, [null, null, null, null, null, null, null, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AbstractFileDefaultFieldComponent, "ncc-abstract-file-default-fied", never, {}, {}, never, never, false, never>;
}
