import { DropdownMenu } from 'reka-ui/namespaced';
import type { DropdownMenuContentProps as RekaDropdownMenuContentProps, DropdownMenuArrowProps } from 'reka-ui';
import type { AppConfig } from '@nuxt/schema';
import type theme from '#build/b24ui/dropdown-menu';
import type { DropdownMenuItem, DropdownMenuSlots, IconComponent } from '../types';
import type { ArrayOrNested, GetItemKeys, NestedItem, DynamicSlots, MergeTypes } from '../types/utils';
import type { ComponentConfig } from '../types/tv';
type DropdownMenu = ComponentConfig<typeof theme, AppConfig, 'dropdownMenu'>;
interface DropdownMenuContentProps<T extends ArrayOrNested<DropdownMenuItem>> extends Omit<RekaDropdownMenuContentProps, 'as' | 'asChild' | 'forceMount'> {
    items?: T;
    /**
     * Display an arrow alongside the menu.
     * @defaultValue false
     */
    arrow?: boolean | Omit<DropdownMenuArrowProps, 'as' | 'asChild'>;
    portal?: boolean | string | HTMLElement;
    sub?: boolean;
    labelKey: GetItemKeys<T>;
    descriptionKey: GetItemKeys<T>;
    /**
     * @IconComponent
     */
    checkedIcon?: IconComponent;
    /**
     * @IconComponent
     */
    externalIcon?: boolean | IconComponent;
    class?: any;
    b24ui: DropdownMenu['b24ui'];
    b24uiOverride?: DropdownMenu['slots'];
}
type DropdownMenuContentSlots<A extends ArrayOrNested<DropdownMenuItem> = ArrayOrNested<DropdownMenuItem>, T extends NestedItem<A> = NestedItem<A>> = Pick<DropdownMenuSlots<A>, 'item' | 'item-leading' | 'item-label' | 'item-description' | 'item-trailing' | 'content-top' | 'content-bottom'> & {
    default(props?: {}): any;
} & DynamicSlots<MergeTypes<T>, 'label' | 'description', {
    active?: boolean;
    index: number;
}> & DynamicSlots<MergeTypes<T>, 'leading' | 'trailing', {
    active?: boolean;
    index: number;
    b24ui: DropdownMenu['b24ui'];
}>;
declare const __VLS_export: <T extends ArrayOrNested<DropdownMenuItem>>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
    props: __VLS_PrettifyLocal<DropdownMenuContentProps<T> & {
        onEscapeKeyDown?: ((event: KeyboardEvent) => any) | undefined;
        onPointerDownOutside?: ((event: import("reka-ui").PointerDownOutsideEvent) => any) | undefined;
        onFocusOutside?: ((event: import("reka-ui").FocusOutsideEvent) => any) | undefined;
        onInteractOutside?: ((event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => any) | undefined;
        onCloseAutoFocus?: ((event: Event) => any) | undefined;
    }> & import("vue").PublicProps;
    expose: (exposed: {}) => void;
    attrs: any;
    slots: DropdownMenuContentSlots<T, NestedItem<T>>;
    emit: ((evt: "escapeKeyDown", event: KeyboardEvent) => void) & ((evt: "pointerDownOutside", event: import("reka-ui").PointerDownOutsideEvent) => void) & ((evt: "focusOutside", event: import("reka-ui").FocusOutsideEvent) => void) & ((evt: "interactOutside", event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => void) & ((evt: "closeAutoFocus", event: Event) => void);
}>) => import("vue").VNode & {
    __ctx?: Awaited<typeof __VLS_setup>;
};
declare const _default: typeof __VLS_export;
export default _default;
type __VLS_PrettifyLocal<T> = {
    [K in keyof T as K]: T[K];
} & {};
