import type { ISelectItem } from 'node_modules/@feedmepos/ui-library/dist/components/form/select/FmSelect.vue';
export interface ISelectItemSublabel extends ISelectItem {
    groupId?: string;
    collapsed?: boolean;
    tags?: string[];
    searchKeys?: string[];
}
export interface ISelectItemGroup {
    id: string;
    label: string;
    sublabel?: string;
    collapse?: boolean;
    disabled?: boolean;
}
export interface FmMultiselectDialogProps {
    modelValue: any;
    items: ISelectItemSublabel[];
    groups?: ISelectItemGroup[];
    singleSelect?: boolean;
    placeholder?: string;
    showValidBorder?: boolean;
    maxHeight?: number;
    width?: number | undefined;
    noShadow?: boolean;
    loading?: boolean;
    virtualScroll?: boolean;
    /**
     * An array of RuleAttribute objects used to define available filter options for the multiselect dialog.
     * Each RuleAttribute describes a filterable attribute, including its name, type, and possible values.
     * This property enables advanced filtering functionality by allowing users to filter the selectable items
     * based on the specified attributes.
     */
    filterAttributes?: RuleAttribute[];
    /**
     * By default, we call validateMongoQuery directly on each item:
     * `validateMongoQuery(item, mongoQuery)`.
     * If attributeKey is provided, we call validateMongoQuery on the nested attribute:
     * `validateMongoQuery(item[attributeKey], mongoQuery)`
     */
    attributeKey?: string;
    /**
     * Maximum number of items that can be selected. If not set, there is no limit.
     * Note: singleSelect is equivalent to maxSelections: 1
     */
    maxSelections?: number;
}
export interface FmMultiselectDialogEvents {
    (event: 'update:modelValue', mv: any): void;
    (event: 'close'): void;
}
