import { Slot } from 'vue';
export interface FilePickerItem {
    /**
     * SVG icon (as string) for the action
     */
    iconSvg: string;
    /**
     * Label of the action
     */
    label: string;
    /**
     * Callback when the action is clicked
     */
    onClick: () => void;
}
export interface FilePickerItemGroup {
    /**
     * Caption for the action group
     */
    caption: string;
    /**
     * Actions within this group
     */
    actions: FilePickerItem[];
}
type __VLS_Props = {
    /**
     * File types to accept
     */
    accept?: string[];
    /**
     * Optional menu caption to be shown above the actions
     */
    actionCaption?: string;
    /**
     * Additional actions to be shown within the picker menu
     */
    actions?: FilePickerItem[] | FilePickerItemGroup[];
    /**
     * Allow picking a directory
     */
    directory?: boolean;
    /**
     * Disable picking files and only allow picking a directory
     */
    directoryOnly?: boolean;
    /**
     * Disabled state of the picker
     */
    disabled?: boolean;
    /**
     * If set then the label is only used for accessibility but not shown visually
     */
    iconOnly?: boolean;
    /**
     * Label of the picker
     *
     * @default 'Pick file' or 'Pick files' depending on `multiple`
     */
    label?: string;
    /**
     * If set then the picker will be set into a loading state.
     * This means the picker is disabled, a loading spinner is shown and the label is adjusted.
     */
    loading?: boolean;
    /**
     * Can the user pick multiple files.
     * This is ignored when picking folder (by browser limitations).
     */
    multiple?: boolean;
    /**
     * The variant of the button
     */
    variant?: 'primary' | 'secondary' | 'tertiary';
};
/**
 * Reset the picker state of the currently selected files.
 */
declare function reset(): void;
declare function __VLS_template(): {
    attrs: Partial<{}>;
    slots: Readonly<{
        /**
         * Optional custom icon for the picker menu
         */
        icon?: Slot;
        /**
         * Optional content to be shown in the picker.
         * This can be used e.g. for a progress bar or similar.
         */
        default?: Slot;
    }> & {
        /**
         * Optional custom icon for the picker menu
         */
        icon?: Slot;
        /**
         * Optional content to be shown in the picker.
         * This can be used e.g. for a progress bar or similar.
         */
        default?: Slot;
    };
    refs: {
        form: HTMLFormElement;
        input: HTMLInputElement;
    };
    rootEl: HTMLFormElement;
};
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {
    reset: typeof reset;
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
    pick: (files: File[]) => any;
}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
    onPick?: ((files: File[]) => any) | undefined;
}>, {
    label: string;
    variant: "primary" | "secondary" | "tertiary";
    actions: FilePickerItem[] | FilePickerItemGroup[];
    accept: string[];
    actionCaption: string;
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
    form: HTMLFormElement;
    input: HTMLInputElement;
}, HTMLFormElement>;
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
export default _default;
type __VLS_WithTemplateSlots<T, S> = T & {
    new (): {
        $slots: S;
    };
};
