import { IEventEmitter } from '@breadstone/mosaik-elements';
import { CustomElement } from '../../Abstracts/CustomElement';
import type { IFilePickEventDetail } from './Events/IFilePickEvent';
import type { IFilePickerElementEvents } from './IFilePickerElementEvents';
import type { IFilePickerElementProps } from './IFilePickerElementProps';
declare const FilePickerElement_base: (abstract new (...args: Array<any>) => import("../../../Behaviors/Themeable").IThemeableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Disableable").IDisableableProps) & typeof CustomElement & import("../../../Behaviors/Themeable").IThemeableCtor;
/**
 * File Picker - A user interface component that allows users to select files from their device.
 *
 * @description
 * The FilePicker component provides a simple and accessible way for users to browse and select files,
 * either through a native file dialog or via drag-and-drop integration. It is commonly used in forms,
 * upload flows, and content management systems where files such as images, documents, or media need
 * to be added by the user.
 *
 * FilePicker ensures accessibility and consistency across browsers while offering customization options
 * for styling and behavior. Developers can listen to emitted events to handle picked files and integrate
 * them seamlessly into application logic.
 *
 * @element mosaik-file-picker
 * @category Input
 *
 * @slot - The default slot for custom trigger content (e.g., a button or icon).
 *
 * @fires filePicked - Fired when one or multiple files are selected by the user.
 *
 * @example
 * ```html
 * <mosaik-file-picker>
 *   <button>Select File</button>
 * </mosaik-file-picker>
 * ```
 *
 * @public
 */
export declare class FilePickerElement extends FilePickerElement_base implements IFilePickerElementProps, IFilePickerElementEvents {
    private readonly _filePicked;
    private _fileElement;
    private _multiple;
    private _accept;
    private _directory;
    /**
     * @public
     */
    constructor();
    /**
     * Returns the `{@link is}` property.
     * The `{@link is}` property represents natural name of this element.
     *
     * @public
     * @static
     * @readonly
     */
    static get is(): string;
    /**
     * Gets or sets the `multiple` property.
     *
     * @public
     * @attr
     */
    get multiple(): boolean;
    set multiple(value: boolean);
    /**
     * Gets or sets the `accept` property.
     *
     * @public
     */
    get accept(): Array<string>;
    set accept(value: Array<string>);
    /**
     * Gets or sets the `directory` property.
     *
     * @public
     * @attr
     */
    get directory(): boolean;
    set directory(value: boolean);
    /**
     * Called when a file is picked.
     * Provides reference to `{@link IEventDetail}` as event detail.
     *
     * @public
     * @readonly
     * @eventProperty
     */
    get filePicked(): IEventEmitter<IFilePickEventDetail>;
    /**
     * @public
     */
    pick(): void;
    /**
     * @private
     * @template
     */
    onFileChange(e: Event): void;
    /**
     * @private
     * @template
     */
    onSlotChange(e: Event): void;
    /**
     * @protected
     * @override
     */
    protected onApplyTemplate(): void;
    /**
     * Emits the {@link filePicked} event.
     *
     * @protected
     */
    protected onFilePicked(args: IFilePickEventDetail): void;
}
/**
 * @public
 */
export declare namespace FilePickerElement {
    type Props = IFilePickerElementProps;
}
/**
 * @public
 */
declare global {
    interface HTMLElementTagNameMap {
        'mosaik-file-picker': FilePickerElement;
    }
}
export {};
//# sourceMappingURL=FilePickerElement.d.ts.map