import { FocusOrigin } from '@angular/cdk/a11y';
import { AfterViewInit, DoCheck, ElementRef, EventEmitter } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
import { ErrorStateMatcher, KbqBaseFileUploadLocaleConfig, KbqFileUploadLocaleConfig } 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 declare const KBQ_SINGLE_FILE_UPLOAD_DEFAULT_CONFIGURATION: KbqFileUploadLocaleConfig['single'];
export declare class KbqSingleFileUploadComponent 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[];
    inputId: string;
    /**
     * @deprecated use FormControl for validation
     */
    customValidation?: KbqFileValidatorFn[];
    /** An object used to control the error state of the component. */
    errorStateMatcher: ErrorStateMatcher;
    get file(): KbqFileItem | null;
    set file(currentFile: KbqFileItem | null);
    /**
     * Controls whether to display the file size information.
     * @default true
     */
    showFileSize: boolean;
    /**
     * 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<KbqBaseFileUploadLocaleConfig> | 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 */
    protected readonly fileLoader: KbqFileLoader | undefined;
    /** @docs-private */
    private readonly hint;
    /** 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 input(): ElementRef<HTMLInputElement> | undefined;
    /** @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: KbqBaseFileUploadLocaleConfig | null;
    /** @docs-private */
    protected readonly captionContext: import("@angular/core").Signal<KbqFileUploadCaptionContext>;
    private readonly localeId;
    /** @docs-private */
    readonly resolvedLocaleConfig: import("@angular/core").Signal<KbqBaseFileUploadLocaleConfig>;
    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 */
    onFileDropped(files: KbqFile[]): void;
    /** @docs-private */
    deleteItem(event?: MouseEvent, origin?: FocusOrigin): void;
    private mapToFileItem;
    private validateFile;
    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; }; "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; }; "allowed": { "alias": "allowed"; "required": false; "isSignal": true; }; "localeConfig": { "alias": "localeConfig"; "required": false; "isSignal": true; }; }, { "fileChange": "fileQueueChange"; }, ["hint"], ["[kbq-icon]", "kbq-hint"], true, [{ directive: typeof i1.KbqFileUploadContext; inputs: { "id": "id"; "disabled": "disabled"; "multiple": "multiple"; }; outputs: {}; }, { directive: typeof i1.KbqFileList; inputs: {}; outputs: { "listChange": "fileChange"; }; }]>;
    static ngAcceptInputType_showFileSize: unknown;
}
