import { AfterViewInit, DoCheck, ElementRef, EventEmitter, QueryList, TemplateRef } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
import { ErrorStateMatcher } from '@koobiq/components/core';
import { ProgressSpinnerMode } from '@koobiq/components/progress-spinner';
import { KbqFile, KbqFileItem, KbqFileUploadBase, KbqFileValidatorFn, KbqInputFile, KbqInputFileLabel } from './file-upload';
import * as i0 from "@angular/core";
export interface KbqInputFileMultipleLabel extends KbqInputFileLabel {
    captionTextWhenSelected: string;
    captionTextForCompactSize: string;
    gridHeaders: {
        file: string;
        size: string;
    };
    [k: string | number | symbol]: unknown;
}
export declare const KBQ_MULTIPLE_FILE_UPLOAD_DEFAULT_CONFIGURATION: KbqInputFileMultipleLabel;
export declare class KbqMultipleFileUploadComponent extends KbqFileUploadBase implements AfterViewInit, KbqInputFile, ControlValueAccessor, DoCheck {
    /**
     * A value responsible for progress spinner type.
     * Loading logic depends on selected mode */
    progressMode: ProgressSpinnerMode;
    /** Array of file type specifiers */
    accept?: string[];
    disabled: boolean;
    /**
     * @deprecated use `FormControl.errors`
     */
    errors: string[];
    size: 'compact' | 'default';
    /**
     * custom ID for the file input element.
     */
    inputId: string;
    /**
     * @deprecated use FormControl for validation
     */
    customValidation?: KbqFileValidatorFn[];
    /** An object used to control the error state of the component. */
    errorStateMatcher: ErrorStateMatcher;
    private _files;
    get files(): KbqFileItem[];
    set files(currentFileList: KbqFileItem[]);
    /** Optional configuration to override default labels with localized text.*/
    readonly localeConfig: import("@angular/core").InputSignal<Partial<KbqInputFileMultipleLabel> | undefined>;
    /** Emits an event containing updated file list.
     * public output will be renamed to filesChange in next major release (#DS-3700) */
    readonly filesChange: EventEmitter<KbqFileItem[]>;
    /**
     * Emits an event containing a chunk of files added to the file list.
     * Useful when handling added files, skipping filtering file list.
     */
    readonly filesAdded: EventEmitter<KbqFileItem[]>;
    /**
     * Emits an event containing a tuple of file and file's index when removed from the file list.
     * Useful when handle removed files, skipping filtering file list.
     */
    readonly fileRemoved: EventEmitter<[KbqFileItem, number]>;
    /** File Icon Template */
    protected readonly customFileIcon: TemplateRef<HTMLElement>;
    /** @docs-private */
    readonly input: ElementRef<HTMLInputElement>;
    private readonly fileSizeHeaderCell;
    /** @docs-private */
    protected readonly hint: QueryList<TemplateRef<any>>;
    /** @docs-private */
    hasFocus: boolean;
    /** @docs-private */
    columnDefs: {
        header: string;
        cssClass: string;
    }[];
    /** @docs-private */
    config: KbqInputFileMultipleLabel;
    /** @docs-private */
    separatedCaptionText: string[];
    /** @docs-private */
    separatedCaptionTextWhenSelected: string[];
    /** @docs-private */
    separatedCaptionTextForCompactSize: string[];
    /** cvaOnChange function registered via registerOnChange (ControlValueAccessor).
     * @docs-private
     */
    cvaOnChange: (_: KbqFileItem[]) => void;
    /** onTouch function registered via registerOnTouch (ControlValueAccessor).
     * @docs-private */
    onTouched: () => void;
    /** @docs-private */
    get acceptedFiles(): string;
    /**
     * @deprecated use `FormControl.errors`
     */
    get hasErrors(): boolean;
    /** @docs-private */
    get hasHint(): boolean;
    /**
     * Indicates an invalid state based on `errorState`,
     * applying a CSS class in HTML for visual feedback.
     * @docs-private
     */
    get invalid(): boolean;
    /**
     * Set maxWidth for filesize cell to enable proper ellipsis center,
     * @docs-private
     */
    protected get fileSizeCellMaxWidth(): number;
    /** @docs-private */
    readonly configuration: KbqInputFileMultipleLabel | null;
    private readonly focusMonitor;
    private readonly platformId;
    constructor();
    ngDoCheck(): void;
    ngAfterViewInit(): void;
    /** Implemented as part of ControlValueAccessor.
     * @docs-private */
    writeValue(files: FileList | KbqFileItem[] | null): void;
    /** Implemented as part of ControlValueAccessor.
     * @docs-private */
    registerOnChange(fn: any): void;
    /** Implemented as part of ControlValueAccessor.
     * @docs-private */
    registerOnTouched(fn: any): void;
    /**
     * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.
     * @param isDisabled Whether the control should be disabled.
     * @docs-private
     */
    setDisabledState(isDisabled: boolean): void;
    /** @docs-private */
    onFileSelectedViaClick({ target }: Event): void;
    /** @docs-private */
    onFileDropped(files: FileList | KbqFile[]): void;
    /** @docs-private */
    deleteFile(index: number, event?: MouseEvent): void;
    private updateLocaleParams;
    private mapToFileItem;
    private validateFile;
    private initDefaultParams;
    private getCaptionText;
    static ɵfac: i0.ɵɵFactoryDeclaration<KbqMultipleFileUploadComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<KbqMultipleFileUploadComponent, "kbq-multiple-file-upload,kbq-file-upload[multiple]", never, { "progressMode": { "alias": "progressMode"; "required": false; }; "accept": { "alias": "accept"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "errors": { "alias": "errors"; "required": false; }; "size": { "alias": "size"; "required": false; }; "inputId": { "alias": "inputId"; "required": false; }; "customValidation": { "alias": "customValidation"; "required": false; }; "errorStateMatcher": { "alias": "errorStateMatcher"; "required": false; }; "files": { "alias": "files"; "required": false; }; "localeConfig": { "alias": "localeConfig"; "required": false; "isSignal": true; }; }, { "filesChange": "fileQueueChanged"; "filesAdded": "filesAdded"; "fileRemoved": "fileRemoved"; }, ["customFileIcon", "hint"], ["kbq-hint"], false, never>;
}
