/**-----------------------------------------------------------------------------------------
* Copyright © 2025 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the project root for more information
*-------------------------------------------------------------------------------------------*/
import { HttpHeaders } from '@angular/common/http';
import { ElementRef, EventEmitter, NgZone, OnDestroy, OnInit, Renderer2, ChangeDetectorRef, Injector } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
import { LocalizationService } from '@progress/kendo-angular-l10n';
import { Direction } from './types/direction';
import { FileInfo } from './types';
import { NavigationService } from './navigation.service';
import { CancelEvent, ClearEvent, ErrorEvent, SuccessEvent, UploadEvent, UploadProgressEvent } from './events';
import { UploadService } from './upload.service';
import { ChunkSettings } from './types/chunk-settings';
import { DropZoneService } from './dropzone.service';
import { ActionsLayout } from './common/action-buttons-layout';
import { UploadFileSelectBase } from './common/base';
import * as i0 from "@angular/core";
/**
 * @hidden
 */
export declare const UPLOAD_VALUE_ACCESSOR: any;
/**
 * Represents the [Kendo UI Upload component for Angular]({% slug overview_upload %}).
 */
export declare class UploadComponent extends UploadFileSelectBase implements OnInit, OnDestroy, ControlValueAccessor {
    protected uploadService: UploadService;
    private localization;
    protected navigation: NavigationService;
    private dropZoneService;
    protected zone: NgZone;
    private renderer;
    protected cdr: ChangeDetectorRef;
    protected injector: Injector;
    /**
     * By default, the selected files are immediately uploaded
     * ([see example]({% slug fileprocessing_upload %}#toc-automatic-upload-of-files)).
     * To change this behavior, set `autoUpload` to `false`.
     */
    set autoUpload(autoUpload: boolean);
    get autoUpload(): boolean;
    /**
     * When enabled, all files in the selection are uploaded in one request
     * ([see example]({% slug fileprocessing_upload %}#toc-upload-of-batches-of-files)).
     * Any files that are selected one after the other are uploaded in separate requests.
     */
    set batch(batch: boolean);
    get batch(): boolean;
    /**
     * Configures whether credentials (cookies, headers) will be sent for cross-site requests
     * ([see example]({% slug credentials_upload %}#toc-attaching-credentials-to-requests)).
     * The default values is `true`. Setting `withCredentials` has no effect on same-site requests.
     * To add credentials to the request, use the `saveHeaders` or `removeHeaders` property,
     * or the [`upload`]({% slug api_upload_uploadevent %}) event.
     */
    set withCredentials(withCredentials: boolean);
    get withCredentials(): boolean;
    /**
     * Sets the [`FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData) key which contains the files submitted to `saveUrl`.
     * The default value is `files`.
     */
    set saveField(saveField: string);
    get saveField(): string;
    /**
     * Configures the [`HttpHeaders`](https://angular.io/api/common/http/HttpHeaders)
     * that are attached to each upload request.
     */
    set saveHeaders(saveHeaders: HttpHeaders);
    get saveHeaders(): HttpHeaders;
    /**
     * Sets the [`RequestMethod`](https://angular.io/api/http/RequestMethod) of the upload request.
     * The default value is `POST`.
     */
    set saveMethod(saveMethod: string);
    get saveMethod(): string;
    /**
     * Sets the URL of the endpoint for the upload request.
     * The request [`FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData) key is named after the `saveField` property.
     * It contains the list of files to be uploaded.
     */
    set saveUrl(saveUrl: string);
    get saveUrl(): string;
    /**
     * Sets the expected [`response type`](https://angular.io/api/common/http/HttpRequest#responseType) of the server.
     * It is used to parse the response appropriately.
     * @default 'json'
     */
    set responseType(responseType: 'arraybuffer' | 'blob' | 'json' | 'text');
    get responseType(): 'arraybuffer' | 'blob' | 'json' | 'text';
    /**
     * Sets the [`FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData) key
     * which contains the list of file names that are submitted to `removeUrl`.
     * The default value is `fileNames`.
     */
    set removeField(removeField: string);
    get removeField(): string;
    /**
     * Configures the [`HttpHeaders`](https://angular.io/api/common/http/HttpHeaders)
     * that are attached to each `remove` request.
     */
    set removeHeaders(removeHeaders: HttpHeaders);
    get removeHeaders(): HttpHeaders;
    /**
     * Sets the [`RequestMethod`](https://angular.io/api/http/RequestMethod) of the `remove` request.
     * The default value is `POST`.
     */
    set removeMethod(removeMethod: string);
    get removeMethod(): string;
    /**
     * Sets the URL of the endpoint for the `remove` request.
     * The [`FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData) request key is named after the `removeField` property.
     * It contains the list of file names which will be removed.
     */
    set removeUrl(removeUrl: string);
    get removeUrl(): string;
    /**
     * Enables the chunk functionality of the Upload.
     *
     * @default false
     */
    chunkable: ChunkSettings | boolean;
    /**
     * Specifies if the selected files are uploaded simultaneously or one by one.
     *
     * @default true
     */
    set concurrent(concurrent: boolean);
    get concurrent(): boolean;
    /**
     * Toggles the visibility of the file list.
     * @default true
     */
    showFileList: boolean;
    /**
     * @hidden
     */
    set tabIndex(tabIndex: number);
    get tabIndex(): number;
    /**
     * Specifies the possible layout of the action buttons.
     */
    actionsLayout: ActionsLayout;
    fileSelectInput: ElementRef;
    /**
     * Fires when the upload is canceled while in progress.
     */
    cancel: EventEmitter<CancelEvent>;
    /**
     * Fires when the file list is about to be cleared. If prevented, the files will not be cleared.
     */
    clear: EventEmitter<ClearEvent>;
    /**
     * Fires when all active uploads are completed either successfully or with errors.
     */
    complete: EventEmitter<any>;
    /**
     * Fires when an `upload` or `remove` operation has failed.
     */
    error: EventEmitter<ErrorEvent>;
    /**
     * Fires when the upload of a file has been paused.
     */
    pause: EventEmitter<any>;
    /**
     * Fires when the upload of a file has been resumed.
     */
    resume: EventEmitter<any>;
    /**
     * Fires when an `upload` or `remove` operation is successfully completed.
     */
    success: EventEmitter<SuccessEvent>;
    /**
     * Fires when one or more files are about to be uploaded. If prevented, the files will neither be uploaded, nor added to the file list.
     */
    upload: EventEmitter<UploadEvent>;
    /**
     * Fires when one or more files are being uploaded.
     */
    uploadProgress: EventEmitter<UploadProgressEvent>;
    /**
     * Fires when the value of the component has changed as a result of a successful `upload`, `remove` or `clear` operation.
     */
    valueChange: EventEmitter<Array<FileInfo>>;
    get dir(): string;
    direction: Direction;
    wrapper: HTMLElement;
    fileListId: string;
    private documentClick;
    private blurSubscription;
    private wrapperFocusSubscription;
    private selectButtonFocusSubscription;
    private localizationChangeSubscription;
    private subs;
    constructor(uploadService: UploadService, localization: LocalizationService, navigation: NavigationService, dropZoneService: DropZoneService, zone: NgZone, renderer: Renderer2, cdr: ChangeDetectorRef, wrapper: ElementRef, injector: Injector);
    ngOnInit(): void;
    ngOnChanges(changes: any): void;
    ngOnDestroy(): void;
    /**
     * @hidden
     */
    writeValue(newValue: any): void;
    /**
     * @hidden
     */
    get showActionButtons(): boolean;
    /**
     * @hidden
     */
    get showTotalStatus(): boolean;
    /**
     * @hidden
     */
    textFor(key: string): string;
    /**
     * @hidden
     */
    getIds(): {
        buttonId: string;
        fileListId: string;
    };
    /**
     * Pauses the upload process of a file that is currently uploading.
     * The `pauseFileByUid` method requires the `chunkable` option of the Upload to be enabled.
     *
     * @param uid - The `uid` of the file that will be paused.
     */
    pauseFileByUid(uid: string): void;
    /**
     * Resumes the upload process for a file that has been previously paused.
     * The `resumeFileByUid` method requires the `chunkable` option of the Upload to be enabled.
     *
     * @param uid - The `uid` of the file that will be resumed.
     */
    resumeFileByUid(uid: string): void;
    /**
     * Triggers the removal of a file or a batch of files.
     * @param uid - The `uid` of the file or a batch of files that will be removed.
     */
    removeFilesByUid(uid: string): void;
    /**
     * Triggers another upload attempt of an unsuccessfully uploaded file or a batch of files.
     * @param uid - The `uid` of the file or a batch of files to be retried.
     */
    retryUploadByUid(uid: string): void;
    /**
     * Cancels the upload of a file or a batch of files.
     * @param uid - The `uid` of the file or a batch of files that will be canceled.
     */
    cancelUploadByUid(uid: string): void;
    /**
     * Uploads the currently selected files which pass the set restrictions.
     */
    uploadFiles(): void;
    /**
     * Visually clears all files from the UI without issuing requests to the remove handler.
     */
    clearFiles(): void;
    /**
     * @hidden
     * Used by the external dropzone to add files to the Upload
     */
    addFiles(files: FileInfo[]): void;
    /**
     * @hidden
     * Used to determine if the component is empty.
     */
    isEmpty(): boolean;
    private verifySettings;
    private subscribeBlur;
    private handleKeydown;
    private subscribeFocus;
    private attachEventHandlers;
    static ɵfac: i0.ɵɵFactoryDeclaration<UploadComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<UploadComponent, "kendo-upload", ["kendoUpload"], { "autoUpload": { "alias": "autoUpload"; "required": false; }; "batch": { "alias": "batch"; "required": false; }; "withCredentials": { "alias": "withCredentials"; "required": false; }; "saveField": { "alias": "saveField"; "required": false; }; "saveHeaders": { "alias": "saveHeaders"; "required": false; }; "saveMethod": { "alias": "saveMethod"; "required": false; }; "saveUrl": { "alias": "saveUrl"; "required": false; }; "responseType": { "alias": "responseType"; "required": false; }; "removeField": { "alias": "removeField"; "required": false; }; "removeHeaders": { "alias": "removeHeaders"; "required": false; }; "removeMethod": { "alias": "removeMethod"; "required": false; }; "removeUrl": { "alias": "removeUrl"; "required": false; }; "chunkable": { "alias": "chunkable"; "required": false; }; "concurrent": { "alias": "concurrent"; "required": false; }; "showFileList": { "alias": "showFileList"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "actionsLayout": { "alias": "actionsLayout"; "required": false; }; }, { "cancel": "cancel"; "clear": "clear"; "complete": "complete"; "error": "error"; "pause": "pause"; "resume": "resume"; "success": "success"; "upload": "upload"; "uploadProgress": "uploadProgress"; "valueChange": "valueChange"; }, never, never, true, never>;
}
