import { CdsList } from '../components/CdsList';
import { IInternalItem, IUseItems } from './items';
import { TCdsIconsName } from '@central-design-system/icons';
import { ComponentProps, MaybePick } from '../utils';
import { PropType, ComputedRef, Ref } from 'vue';
export interface ISelectProps {
    multiple: boolean;
    openOnClear: boolean;
    hideSelected: boolean;
    hideNoData: boolean;
    isSelectAll: boolean;
    modelValue: any;
}
export declare const makeSelectProps: <Defaults extends {
    multiple?: unknown;
    openOnClear?: unknown;
    hideSelected?: unknown;
    hideNoData?: unknown;
    isSelectAll?: unknown;
    ellipsis?: unknown;
    listProps?: unknown;
    menuIcon?: unknown;
} = {}>(defaults?: Defaults | undefined) => import('../utils').AppendDefault<{
    /**
     * Множественный выбор элементов
     */
    multiple: {
        type: PropType<boolean>;
        default: boolean;
    };
    /**
     * Открывать при очистке поля ввода
     */
    openOnClear: {
        type: PropType<boolean>;
        default: boolean;
    };
    /**
     * Скрывать выбранные элементы из списка
     */
    hideSelected: {
        type: PropType<boolean>;
        default: boolean;
    };
    /**
     * Скрывать отображаемый текст, если нет данных
     */
    hideNoData: {
        type: PropType<boolean>;
        default: boolean;
    };
    /**
     * Добавляет возможность выбора всех элементов. Только для мультивыбора (multiple)
     */
    isSelectAll: {
        type: PropType<boolean>;
        default: boolean;
    };
    /**
     * Отображать элементы выбранного списка в одну строку
     */
    ellipsis: {
        type: PropType<boolean>;
        default: boolean;
    };
    /**
     * Свойства для списка
     */
    listProps: {
        type: PropType<ComponentProps<typeof CdsList>>;
        default: undefined;
    };
    /**
     * Иконка выпадающего меню
     */
    menuIcon: {
        type: PropType<TCdsIconsName>;
        default: string;
        validator: (value: TCdsIconsName) => boolean;
    };
}, Defaults>;
export declare function useSelect(props: ISelectProps, items: ComputedRef<IInternalItem[]> | Ref<IInternalItem[]>, transformIn: IUseItems['transformIn'], transformOut: IUseItems['transformOut']): {
    model: Ref<readonly IInternalItem<any>[], readonly IInternalItem<any>[]> & {
        readonly externalValue: any;
    };
    selections: ComputedRef<IInternalItem<any>[]>;
    selected: ComputedRef<any[]>;
    selectedAll: ComputedRef<boolean>;
    selectedIndeterminate: ComputedRef<boolean>;
    selectStrategy: ComputedRef<"independent" | "single-independent">;
    displayItems: ComputedRef<IInternalItem<any>[]>;
};
export declare function useFilteredSelectProps<Props extends Record<string, unknown>>(props: Props, filteredProps: Partial<Props>, excludes: Extract<keyof MaybePick<Props, Extract<keyof Props, string>>, string>[]): {
    inputProps: [Partial<Props>] extends [Ref<any, any>] ? import('@vue/shared').IfAny<Ref<any, any> & Partial<Props>, Ref<Ref<any, any> & Partial<Props>, Ref<any, any> & Partial<Props>>, Ref<any, any> & Partial<Props>> : Ref<import('vue').UnwrapRef<Partial<Props>>, Partial<Props> | import('vue').UnwrapRef<Partial<Props>>>;
};
