import * as _angular_core from '@angular/core';
import { AfterViewInit, ElementRef, Injector } from '@angular/core';
import _FileUploader from '@ui5/webcomponents/dist/FileUploader.js';
import { UI5CustomEvent } from '@ui5/webcomponents-base';
import * as i1 from '@fundamental-ngx/ui5-webcomponents/utils';

declare class FileUploader implements AfterViewInit {
    /**
     * Comma-separated list of file types that the component should accept.
  
  **Note:** Please make sure you are adding the `.` in front on the file type, e.g. `.png` in case you want to accept png's only.
     */
    accept: _angular_core.InputSignal<string | undefined>;
    /**
     * If set to "true", the input field of component will not be rendered. Only the default slot that is passed will be rendered.
  
  **Note:** Use this property in combination with the default slot to achieve a button-only file uploader design.
     */
    hideInput: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Defines whether the component is in disabled state.
  
  **Note:** A disabled component is completely noninteractive.
     */
    disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Allows multiple files to be chosen.
     */
    multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Determines the name by which the component will be identified upon submission in an HTML form.
  
  **Note:** This property is only applicable within the context of an HTML Form element.
     */
    name: _angular_core.InputSignal<string | undefined>;
    /**
     * Defines a short hint intended to aid the user with data entry when the component has no value.
     */
    placeholder: _angular_core.InputSignal<string | undefined>;
    /**
     * Defines the name/names of the file/files to upload.
     */
    value: _angular_core.InputSignal<string | undefined>;
    /**
     * Defines the maximum file size in megabytes which prevents the upload if at least one file exceeds it.
     */
    maxFileSize: _angular_core.InputSignal<number | undefined>;
    /**
     * Defines the value state of the component.
     */
    valueState: _angular_core.InputSignal<"None" | "Positive" | "Critical" | "Negative" | "Information" | undefined>;
    /**
     * Defines whether the component is required.
     */
    required: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Defines the accessible ARIA name of the component.
     */
    accessibleName: _angular_core.InputSignal<string | undefined>;
    /**
     * Receives id(or many ids) of the elements that label the input.
     */
    accessibleNameRef: _angular_core.InputSignal<string | undefined>;
    /**
     * Defines the accessible description of the component.
     */
    accessibleDescription: _angular_core.InputSignal<string | undefined>;
    /**
     * Receives id(or many ids) of the elements that describe the input.
     */
    accessibleDescriptionRef: _angular_core.InputSignal<string | undefined>;
    /**
     * FileList of all selected files.
     * @readonly This property is managed by the web component and updates reactively.
     * Based on schema: readonly field that updates via change event parameters.
     */
    files: _angular_core.Signal<FileList | null>;
    /**
     * Event is fired when the value of the file path has been changed.
  
  **Note:** Keep in mind that because of the HTML input element of type file, the event is also fired in Chrome browser when the Cancel button of the uploads window is pressed.
     */
    ui5Change: _angular_core.OutputEmitterRef<UI5CustomEvent<_FileUploader, "change">>;
    /**
     * Event is fired when the size of a file is above the `maxFileSize` property value.
     */
    ui5FileSizeExceed: _angular_core.OutputEmitterRef<UI5CustomEvent<_FileUploader, "file-size-exceed">>;
    /**
     * Available slots for content projection in this component.
     *
     * Slots allow you to insert custom content into predefined areas of the web component.
     * Use the `slot` attribute on child elements to target specific slots.
     *
     * - **(default)**: This slot allows you to add custom content to the component, such as a button or any other interactive element to trigger the file selection dialog.
  
  **Note:** For best accessibility experience, set a `tabindex` of "-1" on your interactive element, or it will be set automatically.
  This slot is intended for use cases where you want a button-only file uploader.
  It is recommended to set `hideInput` property to "true" when using this slot.
  Not setting `hideInput` may negatively impact the screen reader users.
     * - **valueStateMessage**: Defines the value state message that will be displayed as pop up under the component.
  
  **Note:** If not specified, a default text (in the respective language) will be displayed.
  
  **Note:** The `valueStateMessage` would be displayed,
  when the component is in `Information`, `Critical` or `Negative` value state.
     *
     * @example
     * ```html
     * <ui5-file-uploader>
     *   <div slot="header">Custom header content</div>
     *   <p>Default slot content</p>
     * </ui5-file-uploader>
     * ```
     *
     * @readonly
     * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_templates_and_slots | MDN Web Components Slots}
     */
    readonly slots: ({
        name: string;
        description: string;
        since?: undefined;
    } | {
        name: string;
        description: string;
        since: string;
    })[];
    elementRef: ElementRef<_FileUploader>;
    injector: Injector;
    private _filesSignal;
    get element(): _FileUploader;
    ngAfterViewInit(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<FileUploader, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<FileUploader, "ui5-file-uploader, [ui5-file-uploader]", ["ui5FileUploader"], { "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "hideInput": { "alias": "hideInput"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "maxFileSize": { "alias": "maxFileSize"; "required": false; "isSignal": true; }; "valueState": { "alias": "valueState"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "accessibleName": { "alias": "accessibleName"; "required": false; "isSignal": true; }; "accessibleNameRef": { "alias": "accessibleNameRef"; "required": false; "isSignal": true; }; "accessibleDescription": { "alias": "accessibleDescription"; "required": false; "isSignal": true; }; "accessibleDescriptionRef": { "alias": "accessibleDescriptionRef"; "required": false; "isSignal": true; }; }, { "ui5Change": "ui5Change"; "ui5FileSizeExceed": "ui5FileSizeExceed"; }, never, ["*"], true, [{ directive: typeof i1.GenericControlValueAccessor; inputs: {}; outputs: {}; }]>;
}

export { FileUploader };
