import { VNodeChild, Ref, UnwrapRef, VNode, HTMLAttributes } from 'vue';
import { TreeNode } from 'treemate';
import type { SelectBaseOption, SelectGroupOption, SelectIgnoredOption } from '../../../select/src/interface';
export type Size = 'small' | 'medium' | 'large' | 'huge';
export type RenderLabel = (option: SelectBaseOption & SelectGroupOption & SelectIgnoredOption, selected: boolean) => VNodeChild;
export type RenderLabelImpl = (option: SelectBaseOption | SelectGroupOption | SelectIgnoredOption, selected: boolean) => VNodeChild;
export type RenderOption = (info: {
node: VNode;
option: SelectBaseOption & SelectGroupOption & SelectIgnoredOption;
selected: boolean;
}) => VNodeChild;
export type RenderOptionImpl = (info: {
node: VNode;
option: SelectBaseOption | SelectGroupOption | SelectIgnoredOption;
selected: boolean;
}) => VNodeChild;
export type NodeProps = (option: SelectBaseOption | SelectGroupOption) => HTMLAttributes & Record;
export interface InternalSelectMenuInjection {
handleOptionMouseEnter: (e: MouseEvent, tmNode: TreeNode) => void;
handleOptionClick: (e: MouseEvent, tmNode: TreeNode) => void;
showCheckmarkRef: Ref;
valueSetRef: Ref>;
pendingTmNodeRef: Ref | null>;
multipleRef: Ref;
valueRef: Ref | null>;
renderLabelRef: Ref;
renderOptionRef: Ref;
labelFieldRef: Ref;
valueFieldRef: Ref;
nodePropsRef: Ref;
}
export interface InternalExposedProps {
selfRef: Ref;
getPendingTmNode: () => TreeNode | null;
prev: () => void;
next: () => void;
}
export declare const internalSelectionMenuInjectionKey: import("vue").InjectionKey;
export declare const internalSelectionMenuBodyInjectionKey: import("vue").InjectionKey[>;
export type InternalSelectMenuRef = UnwrapRef;
]