import { IEventEmitter } from '@breadstone/mosaik-elements';
import { IClearable } from '../../../Behaviors/Clearable';
import { type IInvalidable } from '../../../Behaviors/Invalidable';
import { ISlottable } from '../../../Behaviors/Slottable';
import type { IFilesSelectedEventDetail } from '../../../events';
import { InputBaseElement } from '../Abstracts/InputBase';
import type { IFileBoxElementProps } from './IFileBoxElementProps';
declare const FileBoxElement_base: (abstract new (...args: Array<any>) => import("../../../Behaviors/Themeable").IThemeableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Slottable").ISlottableProps & ISlottable) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Clearable").IClearableProps & import("../../../Behaviors/Clearable").IClearableEvents & IClearable) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Disableable").IDisableableProps) & (abstract new (...args: Array<any>) => IInvalidable & import("../../../Behaviors/Invalidable").IInvalidableProps<unknown>) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Valueable").IValueableProps<unknown>) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Variantable").IVariantableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Labelable").ILabelableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Appearanceable").IAppearanceableProps) & typeof InputBaseElement & import("../../../Behaviors/Themeable").IThemeableCtor;
/**
 * File Box - A text-box-styled file input control with a trailing browse button.
 *
 * @description
 * The File Box component provides a familiar text-box appearance for file selection.
 * It displays the selected file name(s) in a readonly text input and offers a trailing
 * browse button to open the native file picker dialog. Supports single and multiple file
 * selection, directory selection, file type filtering via accept attribute, clearable state,
 * and form integration through value accessors. Bridges the gap between the primitive
 * FilePicker and the complex FileUpload component.
 *
 * @name File Box
 * @element mosaik-filebox
 * @category Inputs
 *
 * @slot prefix - Content placed before the input field.
 * @slot suffix - Content placed after the input field.
 *
 * @csspart browse - The browse button.
 * @csspart clear - The clear button.
 * @csspart fileInput - The fileInput part.
 * @csspart focusRing - The focus ring indicator.
 * @csspart inner - The inner container wrapper.
 * @csspart input - The readonly text input showing file names.
 * @csspart label - The floating label element.
 * @csspart prefix - The prefix content container.
 * @csspart suffix - The suffix content container.
 *
 * @cssprop {String} --file-box-background-color - The box background color CSS custom property.
 * @cssprop {String} --file-box-border-color - The box border color CSS custom property.
 * @cssprop {String} --file-box-border-radius - The box border radius CSS custom property.
 * @cssprop {String} --file-box-border-style - The box border style CSS custom property.
 * @cssprop {String} --file-box-border-width - The box border width CSS custom property.
 * @cssprop {String} --file-box-focus-ring-width - The box focus ring width CSS custom property.
 * @cssprop {String} --file-box-font-family - The box font family CSS custom property.
 * @cssprop {String} --file-box-font-letter-spacing - The box font letter spacing CSS custom property.
 * @cssprop {String} --file-box-font-line-height - The box font line height CSS custom property.
 * @cssprop {String} --file-box-font-size - The box font size CSS custom property.
 * @cssprop {String} --file-box-font-text-decoration - The box font text decoration CSS custom property.
 * @cssprop {String} --file-box-font-text-transform - The box font text transform CSS custom property.
 * @cssprop {String} --file-box-font-weight - The box font weight CSS custom property.
 * @cssprop {String} --file-box-foreground-color - The box foreground color CSS custom property.
 * @cssprop {String} --file-box-gap - The box gap CSS custom property.
 * @cssprop {String} --file-box-height - The box height CSS custom property.
 * @cssprop {String} --file-box-padding-bottom - The box padding bottom CSS custom property.
 * @cssprop {String} --file-box-padding-left - The box padding left CSS custom property.
 * @cssprop {String} --file-box-padding-right - The box padding right CSS custom property.
 * @cssprop {String} --file-box-padding-top - The box padding top CSS custom property.
 * @cssprop {String} --file-box-shadow - The box shadow CSS custom property.
 * @cssprop {String} --file-box-shadow-blur - The box shadow blur CSS custom property.
 * @cssprop {String} --file-box-shadow-color - The box shadow color CSS custom property.
 * @cssprop {String} --file-box-shadow-offset-x - The box shadow offset x CSS custom property.
 * @cssprop {String} --file-box-shadow-offset-y - The box shadow offset y CSS custom property.
 * @cssprop {String} --file-box-shadow-spread - The box shadow spread CSS custom property.
 * @cssprop {String} --file-box-transition-duration - The box transition duration CSS custom property.
 * @cssprop {String} --file-box-transition-mode - The box transition mode CSS custom property.
 * @cssprop {String} --file-box-transition-property - The box transition property CSS custom property.
 * @cssprop {String} --file-box-translate - The box translate CSS custom property.
 *
 * @fires cleared {ClearedEvent} - Fired when the file selection is cleared.
 * @fires filesSelected {FilesSelectedEvent} - Fired when files are selected.
 *
 * @dependency mosaik-button - Used for the browse button.
 * @dependency mosaik-focus-ring - Used for focus indication.
 *
 * @example
 * ```html
 * <mosaik-filebox
 *   placeholder="Choose a file..."
 *   accept=".pdf,.doc,.docx">
 * </mosaik-filebox>
 * ```
 *
 * @public
 */
export declare class FileBoxElement extends FileBoxElement_base implements IFileBoxElementProps, IInvalidable, IClearable, ISlottable {
    private readonly _filesSelected;
    private _fileInputElement;
    private _value;
    private _readonly;
    private _required;
    private _autofocus;
    private _name;
    private _placeholder;
    private _multiple;
    private _accept;
    private _directory;
    private _files;
    /**
     * @public
     */
    constructor();
    /**
     * Returns the `is` property.
     * The `is` property represents natural name of this element.
     *
     * @public
     * @static
     * @readonly
     */
    static get is(): string;
    /**
     * Gets or sets the `value` property.
     * The value represents the display text of the selected file(s).
     *
     * @public
     * @override
     */
    get value(): string;
    set value(value: string);
    /**
     * Gets or sets the `readonly` property.
     *
     * @public
     * @attr
     */
    get readonly(): boolean;
    set readonly(value: boolean);
    /**
     * Gets or sets the `required` property.
     *
     * @public
     * @attr
     */
    get required(): boolean;
    set required(value: boolean);
    /**
     * Gets or sets the `autofocus` property.
     *
     * @public
     * @override
     */
    get autofocus(): boolean;
    set autofocus(value: boolean);
    /**
     * Gets or sets the `name` property.
     *
     * @public
     * @attr
     */
    get name(): string;
    set name(value: string);
    /**
     * Gets or sets the `placeholder` property.
     *
     * @public
     * @attr
     */
    get placeholder(): string;
    set placeholder(value: string);
    /**
     * Gets or sets the `multiple` property.
     * When true, allows selecting multiple files.
     *
     * @public
     * @attr
     */
    get multiple(): boolean;
    set multiple(value: boolean);
    /**
     * Gets or sets the `accept` property.
     * Specifies the file types that the file input should accept.
     *
     * @public
     * @attr
     */
    get accept(): Array<string>;
    set accept(value: Array<string>);
    /**
     * Gets or sets the `directory` property.
     * When true, allows selecting directories instead of files.
     *
     * @public
     * @attr
     */
    get directory(): boolean;
    set directory(value: boolean);
    /**
     * Gets or sets the selected files.
     *
     * @public
     * @readonly
     */
    get files(): ReadonlyArray<File>;
    set files(value: ReadonlyArray<File>);
    /**
     * Determines whether the element has a prefix or not.
     *
     * @private
     * @readonly
     * @attr
     */
    get hasPrefix(): boolean;
    /**
     * Determines whether the element has a suffix or not.
     *
     * @private
     * @readonly
     * @attr
     */
    get hasSuffix(): boolean;
    /**
     * Called when files are selected.
     * Provides reference to `IFilesSelectedEventDetail` as event detail.
     *
     * @public
     * @readonly
     * @eventProperty
     */
    get filesSelected(): IEventEmitter<IFilesSelectedEventDetail>;
    /**
     * @public
     * @override
     */
    focus(): void;
    /**
     * @public
     * @override
     */
    blur(): void;
    /**
     * Opens the native file picker dialog.
     *
     * @public
     */
    browse(): void;
    /**
     * Clears the selected files and value.
     *
     * @public
     * @override
     */
    clear(force?: boolean): boolean;
    /**
     * Resets the value, all kinds of validation and errors.
     *
     * @public
     * @override
     */
    reset(): void;
    /**
     * Checks the validity of the element.
     *
     * @public
     * @override
     */
    checkValidity(): boolean;
    /**
     * Handles file input change events.
     *
     * @public
     */
    onFileChange(event: Event): void;
    /**
     * @template
     * @protected
     * @override
     */
    onFocus(event: FocusEvent): void;
    /**
     * @template
     * @protected
     * @override
     */
    onBlur(event: FocusEvent): void;
    /**
     * @protected
     * @override
     */
    protected onApplyTemplate(): void;
    /**
     * Emits the `filesSelected` event.
     *
     * @protected
     */
    protected onFilesSelected(args: IFilesSelectedEventDetail): void;
}
/**
 * @public
 */
export declare namespace FileBoxElement {
    type Props = IFileBoxElementProps;
}
/**
 * @public
 */
declare global {
    interface HTMLElementTagNameMap {
        'mosaik-filebox': FileBoxElement;
    }
}
export {};
//# sourceMappingURL=FileBoxElement.d.ts.map