import Popover from '../popover';
import Option from './option';
import Group from './optionGroup';
import SelectTagInput from './selectTagInput';
export interface OptionInstanceType extends InstanceType<typeof Option> {
    optionID: string;
}
export type GroupInstanceType = InstanceType<typeof Group>;
export type PopoverInstanceType = InstanceType<typeof Popover>;
export type SelectTagInputType = InstanceType<typeof SelectTagInput>;
export interface ISelectContext {
    multiple?: boolean;
    selected: ISelected[];
    activeOptionValue: PropertyKey;
    showSelectedIcon: boolean;
    selectedStyle: 'check' | 'checkbox';
    curSearchValue: string;
    highlightKeyword: boolean;
    isSearchEmpty: boolean;
    register(key: PropertyKey, option: OptionInstanceType): void;
    unregister(key: PropertyKey, option?: OptionInstanceType): void;
    registerGroup(key: PropertyKey, option: GroupInstanceType): void;
    unregisterGroup(key: PropertyKey): void;
    handleOptionSelected(option: OptionInstanceType): void;
    handleGetLabelByValue(value: PropertyKey): number | string;
}
export interface IOptionGroupContext {
    disabled: boolean;
    groupCollapse: boolean;
    register(key: PropertyKey, option: OptionInstanceType): void;
    unregister(key: PropertyKey, option?: OptionInstanceType): void;
}
export interface ISelectState {
    currentPlaceholder: string;
    currentSelectedLabel: string;
}
export interface IPopoverConfig {
    popoverMinWidth: number;
}
export interface ISelected {
    value: string;
    label: number | string;
}
