import { Size } from '../helpers';
export interface Props {
    modelValue: string | number | boolean;
    /**
     * Словарь для генерации элементов <option>
     *
     * Поддерживает 3 типа аргумента:
     * - Словарь со значениями: базовый способ создать простой список
     * - Словарь с объектами Option: расширенный способ, позволяющий указать для <option disabled> и вынести <option> в <optgroup>
     * - Массив с объектами Option: альтернативный словарю расширенный способ, в новых версиях js использовать не рекомендуется, работает медленнее
     *
     * Можно задать <optgroup>, передав в options[n].children вложенный список options
     */
    options: Options | Option[];
    name?: string;
    disabled?: boolean;
    icon?: string;
    size?: Size;
    styling?: Style;
    addChanger?: boolean;
    title?: string;
    isError?: boolean;
}
export interface Slots {
    /**
     * Слот для вставки html вместо **props.title**
     */
    caption(props: {}): any;
}
export declare const styling: {
    readonly regular: "";
    readonly soft: "soft";
    readonly transparent: "transparent";
};
export type Style = typeof styling[keyof typeof styling];
export interface Emits {
    (e: 'update:modelValue', value: Props['modelValue']): void;
}
export type Options = Map<Props['modelValue'], string | Option>;
/**
 * Конфигурации для более сложной настройки <option>
 */
export interface Option {
    value: Props['modelValue'];
    title: string;
    icon?: string;
    disabled?: boolean;
    children?: Props['options'];
}
/**
 * Тип для внутренней реализации компонента
 */
export type LocalOptions = Map<Props['modelValue'], LocalOption>;
/**
 * Тип для внутренней реализации компонента
 */
export interface LocalOption {
    value: Props['modelValue'];
    title: string;
    icon?: string;
    disabled?: boolean;
    children?: LocalOptions;
}
export type { Size };
