import { PropType, ComputedRef } from 'vue';
export type TItemKey = boolean | string | (string | number)[] | ((item: Record<string, any>, fallback?: any) => any);
export interface IInternalItem<T = any> {
    title: string;
    value: any;
    props: {
        [key: string]: any;
        title: string;
        value: any;
    };
    children?: IInternalItem<T>[];
    raw: T;
}
export interface IItemsProps {
    items: any[];
    itemTitle: TItemKey;
    itemValue: TItemKey;
    itemChildren: TItemKey;
    itemProps: TItemKey;
    returnObject: boolean;
}
export interface IUseItems {
    items: ComputedRef<IInternalItem[]>;
    itemsProps: string[];
    transformIn: (value: any[]) => IInternalItem[];
    transformOut: (value: any[]) => any[];
}
export interface IItemSlotProps {
    isActive: boolean;
    isSelected: boolean;
    isIndeterminate: boolean;
    select: (selected: boolean, event?: Event) => void;
}
export declare const makeItemsProps: <Defaults extends {
    items?: unknown;
    itemTitle?: unknown;
    itemValue?: unknown;
    itemChildren?: unknown;
    itemProps?: unknown;
    returnObject?: unknown;
} = {}>(defaults?: Defaults | undefined) => import('../utils').AppendDefault<{
    /**
     * Массив списка элементов
     */
    items: {
        type: PropType<any[]>;
        default: () => never[];
    };
    /**
     * Ключ для заголовка элемента
     */
    itemTitle: {
        type: PropType<TItemKey>;
        default: string;
    };
    /**
     * Ключ для значения элемента
     */
    itemValue: {
        type: PropType<TItemKey>;
        default: string;
    };
    /**
     * Ключ для дочерних элементов
     */
    itemChildren: {
        type: PropType<TItemKey>;
        default: string;
    };
    /**
     * Ключ для дополнительных свойств элемента
     */
    itemProps: {
        type: PropType<TItemKey>;
        default: string;
    };
    /**
     * Возвращать объект вместо массива
     */
    returnObject: {
        type: PropType<boolean>;
        default: boolean;
    };
}, Defaults>;
export declare function useItems(props: IItemsProps): IUseItems;
export declare function transformItem(props: Omit<IItemsProps, 'items'>, item: any): IInternalItem;
export declare function transformItems(props: Omit<IItemsProps, 'items'>, items: IItemsProps['items']): IInternalItem[];
