import { FocusOrigin } from '@angular/cdk/a11y';
import { AfterViewInit, DoCheck, ElementRef, EventEmitter, QueryList, TemplateRef } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
import { ErrorStateMatcher, KbqMultipleFileUploadLocaleConfig } from '@koobiq/components/core';
import { ProgressSpinnerMode } from '@koobiq/components/progress-spinner';
import { KbqFile, KbqFileItem, KbqFileUploadBase, KbqFileUploadCaptionContext, KbqFileValidatorFn } from './file-upload';
import { KbqFileLoader } from './primitives';
import * as i0 from "@angular/core";
import * as i1 from "./primitives/file-picker";
export interface KbqInputFileMultipleLabel extends KbqMultipleFileUploadLocaleConfig {
    [k: string | number | symbol]: unknown;
}
export declare const KBQ_MULTIPLE_FILE_UPLOAD_DEFAULT_CONFIGURATION: KbqMultipleFileUploadLocaleConfig;
export declare class KbqMultipleFileUploadComponent extends KbqFileUploadBase implements AfterViewInit, ControlValueAccessor, DoCheck {
    /**
     * A value responsible for progress spinner type.
     * Loading logic depends on selected mode */
    progressMode: ProgressSpinnerMode;
    /** Array of file type specifiers */
    accept?: string[];
    /**
     * @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;
    get files(): KbqFileItem[];
    set files(currentFileList: KbqFileItem[]);
    /**
     * Determines which kind of items the upload component can accept.
     * @default mixed
     */
    allowed: import("@angular/core").InputSignal<"file" | "folder" | "mixed">;
    /** Optional configuration to override default labels with localized text.*/
    readonly localeConfig: import("@angular/core").InputSignal<Partial<KbqMultipleFileUploadLocaleConfig> | 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>;
    protected readonly fileLoader: KbqFileLoader | undefined;
    /** @docs-private */
    protected readonly hint: QueryList<TemplateRef<any>>;
    /** @docs-private */
    hasFocus: boolean;
    /** @docs-private */
    readonly resolvedLocaleConfig: import("@angular/core").Signal<KbqMultipleFileUploadLocaleConfig>;
    /** @docs-private */
    protected readonly captionContext: import("@angular/core").Signal<KbqFileUploadCaptionContext>;
    /** cvaOnChange function registered via registerOnChange (ControlValueAccessor).
     * @docs-private
     */
    cvaOnChange: (_: KbqFileItem[]) => void;
    /** onTouch function registered via registerOnTouch (ControlValueAccessor).
     * @docs-private */
    onTouched: () => void;
    /** @docs-private */
    get input(): ElementRef<HTMLInputElement> | undefined;
    /** @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;
    /** @docs-private */
    protected get captionTextWhenSelected(): string;
    /** @docs-private */
    readonly configuration: KbqMultipleFileUploadLocaleConfig | null;
    private readonly localeId;
    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: KbqFile[]): void;
    /** @docs-private */
    deleteFile(index: number, event?: MouseEvent, origin?: FocusOrigin): void;
    private mapToFileItem;
    private validateFile;
    private onFileAdded;
    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; }; "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; }; "allowed": { "alias": "allowed"; "required": false; "isSignal": true; }; "localeConfig": { "alias": "localeConfig"; "required": false; "isSignal": true; }; }, { "filesChange": "fileQueueChanged"; "filesAdded": "filesAdded"; "fileRemoved": "fileRemoved"; }, ["customFileIcon", "hint"], ["kbq-hint"], true, [{ directive: typeof i1.KbqFileUploadContext; inputs: { "id": "id"; "disabled": "disabled"; }; outputs: {}; }, { directive: typeof i1.KbqFileList; inputs: {}; outputs: { "listChange": "filesChange"; "itemsAdded": "itemsAdded"; "itemRemoved": "itemRemoved"; }; }]>;
}
