/**-----------------------------------------------------------------------------------------
* Copyright © 2026 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the project root for more information
*-------------------------------------------------------------------------------------------*/
import { ChangeDetectorRef, ElementRef, EventEmitter, Injector, NgZone } from "@angular/core";
import { RemoveEvent, SelectEvent } from "../events";
import { FileTemplateDirective } from "../templates/file-template.directive";
import { FileInfoTemplateDirective } from "../templates/file-info-template.directive";
import { FileMap, FileRestrictions } from "../types";
import { UploadService } from "../upload.service";
import { FormControl } from "@angular/forms";
import { NavigationService } from "../navigation.service";
import * as i0 from "@angular/core";
/**
 * @hidden
 */
export declare abstract class UploadFileSelectBase {
    protected uploadService: UploadService;
    protected navigation: NavigationService;
    protected cdr: ChangeDetectorRef;
    protected injector: Injector;
    protected zone: NgZone;
    /**
     * @hidden
     */
    fileTemplate: FileTemplateDirective;
    /**
     * @hidden
     */
    fileInfoTemplate: FileInfoTemplateDirective;
    /**
     * @hidden
     */
    fileSelectButton: ElementRef;
    /**
     * Sets the `accept` attribute of the internal `input` element of the component.
     */
    accept: string;
    /**
     * Disables the component.
     *
     * @default false
     */
    disabled: boolean;
    /**
     * Allows you to select multiple files.
     * When you set this to `false`, you can select only one file at a time.
     *
     * @default true
     */
    multiple: boolean;
    /**
     * Controls the visibility of the file list.
     *
     * @default true
     */
    showFileList: boolean;
    /**
     * Sets the [`tabindex`](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex) of the component.
     *
     * @default 0
     */
    tabindex: number;
    /**
     * Sets the restrictions for selected files.
     */
    set restrictions(restrictions: FileRestrictions);
    get restrictions(): FileRestrictions;
    /**
     * Sets the `id` of the external drop zone that you want to associate with the component.
     */
    zoneId: string;
    /**
     * @hidden
     */
    focusableId: string;
    /**
     * @hidden
     */
    hostUploadClass: boolean;
    /**
     * @hidden
     */
    hostUploadAsyncClass: boolean;
    /**
     * @hidden
     */
    get hostDisabledClass(): boolean;
    /**
     * @hidden
     */
    get hostEmptyClass(): boolean;
    /**
     * Fires when you navigate outside the component.
     */
    onBlur: EventEmitter<any>;
    /**
     * Fires when you focus the component.
     */
    onFocus: EventEmitter<any>;
    /**
     * Fires when you select files. If you prevent this event, the component will not add the selected files to the list.
     */
    select: EventEmitter<SelectEvent>;
    /**
     * Fires when you are about to remove a file. If you prevent this event, the file will remain in the list.
     */
    remove: EventEmitter<RemoveEvent>;
    /**
     * @hidden
     */
    _restrictions: FileRestrictions;
    /**
     * @hidden
     */
    fileList: FileMap;
    constructor(uploadService: UploadService, navigation: NavigationService, cdr: ChangeDetectorRef, injector: Injector, zone: NgZone);
    /**
     * @hidden
     */
    get formControl(): FormControl;
    /**
     * @hidden
     */
    get isControlRequired(): boolean;
    /**
     * @hidden
     */
    get hasFileList(): boolean;
    /**
     * @hidden
     */
    writeValue(newValue: any, validation: Function, callback: string): void;
    protected onTouchedCallback: Function;
    protected onChangeCallback: Function;
    /**
     * @hidden
     */
    registerOnChange(fn: any): void;
    /**
     * @hidden
     */
    registerOnTouched(fn: any): void;
    /**
     * @hidden
     */
    setDisabledState(isDisabled: boolean): void;
    /**
     * @hidden
     */
    onFileSelectButtonFocus(): void;
    /**
     * Focuses the component's **Select files** button.
     */
    focus(): void;
    /**
     * @hidden
     * @deprecated
     */
    focusComponent(): void;
    /**
     * Blurs the component if you previously focused it.
     */
    blur(): void;
    /**
     * @hidden
     * @deprecated
     */
    blurComponent(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<UploadFileSelectBase, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<UploadFileSelectBase, never, never, { "accept": { "alias": "accept"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "showFileList": { "alias": "showFileList"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "restrictions": { "alias": "restrictions"; "required": false; }; "zoneId": { "alias": "zoneId"; "required": false; }; "focusableId": { "alias": "focusableId"; "required": false; }; }, { "onBlur": "blur"; "onFocus": "focus"; "select": "select"; "remove": "remove"; }, ["fileTemplate", "fileInfoTemplate"], never, true, never>;
}
