import { AfterViewInit, DoCheck, ElementRef, EventEmitter } 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 declare const KBQ_SINGLE_FILE_UPLOAD_DEFAULT_CONFIGURATION: KbqInputFileLabel;
export declare class KbqSingleFileUploadComponent 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[];
    inputId: string;
    /**
     * @deprecated use FormControl for validation
     */
    customValidation?: KbqFileValidatorFn[];
    /** An object used to control the error state of the component. */
    errorStateMatcher: ErrorStateMatcher;
    private _file;
    get file(): KbqFileItem | null;
    set file(currentFile: KbqFileItem | null);
    /**
     * Controls whether to display the file size information.
     * @default true
     */
    showFileSize: boolean;
    /** Optional configuration to override default labels with localized text.*/
    readonly localeConfig: import("@angular/core").InputSignal<Partial<KbqInputFileLabel> | undefined>;
    /** Emits an event containing updated file.
     * public output will be renamed to fileChange in next major release (#DS-3700) */
    readonly fileChange: EventEmitter<KbqFileItem | null>;
    /** @docs-private */
    input: ElementRef<HTMLInputElement>;
    /** @docs-private */
    private readonly hint;
    /** @docs-private */
    config: KbqInputFileLabel;
    /** @docs-private */
    separatedCaptionText: string[];
    /** cvaOnChange function registered via registerOnChange (ControlValueAccessor).
     * @docs-private
     */
    cvaOnChange: (_: KbqFileItem | null) => void;
    /** onTouch function registered via registerOnTouch (ControlValueAccessor).
     * @docs-private
     */
    onTouched: () => void;
    /** @docs-private */
    get acceptedFiles(): string;
    /** @docs-private */
    get hasHint(): boolean;
    /**
     * Indicates an invalid state based on file errors or `errorState`,
     * applying a CSS class in HTML for visual feedback.
     * @docs-private
     */
    get invalid(): boolean;
    /** @docs-private */
    readonly configuration: KbqInputFileLabel | null;
    private readonly focusMonitor;
    private readonly platformId;
    constructor();
    ngDoCheck(): void;
    ngAfterViewInit(): void;
    /** Implemented as part of ControlValueAccessor.
     * @docs-private */
    writeValue(file: File | 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 */
    deleteItem(event?: MouseEvent): void;
    /** @docs-private */
    onFileDropped(files: FileList | KbqFile[]): void;
    private updateLocaleParams;
    private mapToFileItem;
    private validateFile;
    private initDefaultParams;
    private getCaptionText;
    static ɵfac: i0.ɵɵFactoryDeclaration<KbqSingleFileUploadComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<KbqSingleFileUploadComponent, "kbq-single-file-upload,kbq-file-upload:not([multiple])", never, { "progressMode": { "alias": "progressMode"; "required": false; }; "accept": { "alias": "accept"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "errors": { "alias": "errors"; "required": false; }; "inputId": { "alias": "inputId"; "required": false; }; "customValidation": { "alias": "customValidation"; "required": false; }; "errorStateMatcher": { "alias": "errorStateMatcher"; "required": false; }; "file": { "alias": "file"; "required": false; }; "showFileSize": { "alias": "showFileSize"; "required": false; }; "localeConfig": { "alias": "localeConfig"; "required": false; "isSignal": true; }; }, { "fileChange": "fileQueueChange"; }, ["hint"], ["[kbq-icon]", "kbq-hint"], false, never>;
    static ngAcceptInputType_showFileSize: unknown;
}
