import React, { ReactNode } from 'react';
import { SlotRegistry } from '@teambit/harmony';
import { DropdownComponentVersion, GetActiveTabIndex } from '@teambit/component.ui.version-dropdown';
import { MenuItemSlot } from '@teambit/ui-foundation.ui.main-dropdown';
import { ComponentID } from '@teambit/component-id';
import { LanesModel } from '@teambit/lanes.ui.models.lanes-model';
import { UseComponentType, Filters } from '../use-component';
import { OrderedNavigationSlot, ConsumeMethodSlot } from './nav-plugin';
export type RightSideMenuItem = {
    item: ReactNode;
    order: number;
};
export type RightSideMenuSlot = SlotRegistry<RightSideMenuItem[]>;
export type MenuProps = {
    className?: string;
    /**
     * skip the right side.
     */
    skipRightSide?: boolean;
    /**
     * custom render the right side
     */
    RightNode?: React.ReactNode;
    /**
     * slot for top bar menu nav items
     */
    navigationSlot: OrderedNavigationSlot;
    /**
     * right side navigation menu item slot
     */
    widgetSlot: OrderedNavigationSlot;
    /**
     * right side menu item slot
     */
    rightSideMenuSlot: RightSideMenuSlot;
    /**
     * workspace or scope
     */
    host: string;
    /**
     * main dropdown item slot
     */
    menuItemSlot: MenuItemSlot;
    consumeMethodSlot: ConsumeMethodSlot;
    componentIdStr?: string | (() => string | undefined);
    useComponent?: UseComponentType;
    useComponentFilters?: () => Filters;
    useLanes?: () => {
        loading?: boolean;
        lanesModel?: LanesModel;
    };
    path?: string;
};
/**
 * top bar menu.
 */
export declare function ComponentMenu({ navigationSlot, widgetSlot, className, host, menuItemSlot, consumeMethodSlot, rightSideMenuSlot, componentIdStr, skipRightSide, RightNode, useComponent, path, useComponentFilters, }: MenuProps): import("react/jsx-runtime").JSX.Element;
export type VersionRelatedDropdownsProps = {
    componentId?: string;
    consumeMethods?: ConsumeMethodSlot;
    componentFilters?: Filters;
    useComponent?: UseComponentVersions;
    className?: string;
    loading?: boolean;
    host: string;
    useLanes?: () => {
        loading?: boolean;
        lanesModel?: LanesModel;
    };
    dropdownOptions?: {
        showVersionDetails?: boolean;
        getActiveTabIndex?: GetActiveTabIndex;
    };
};
export type UseComponentVersionsProps = {
    skip?: boolean;
    id?: string;
    initialLoad?: boolean;
};
export type UseComponentVersionProps = {
    skip?: boolean;
    version?: string;
};
export type UseComponentVersions = (props?: UseComponentVersionsProps) => UseComponentVersionsResult;
export type UseComponentVersion = (props?: UseComponentVersionProps) => DropdownComponentVersion | undefined;
export type UseComponentVersionsResult = {
    tags?: DropdownComponentVersion[];
    snaps?: DropdownComponentVersion[];
    id?: ComponentID;
    packageName?: string;
    latest?: string;
    currentVersion?: string;
    loading?: boolean;
};
export declare function defaultLoadVersions(host: string, componentId?: string, componentFilters?: Filters, useComponent?: UseComponentType, loadingFromProps?: boolean): UseComponentVersions;
export declare const defaultLoadCurrentVersion: (props: VersionRelatedDropdownsProps) => UseComponentVersion;
export declare function VersionRelatedDropdowns(props: VersionRelatedDropdownsProps): import("react/jsx-runtime").JSX.Element;
