import React from 'react';
import { DockviewWillDropEvent, DockviewDidDropEvent, IWatermarkPanelProps, IDockviewHeaderActionsProps, IDockviewPanelHeaderProps, IDockviewPanelProps, DockviewOptions, DockviewReadyEvent, BuiltInContextMenuItem, BuiltInChipContextMenuItem, ContextMenuItemConfig, GetTabContextMenuItemsParams, GetTabGroupChipContextMenuItemsParams, IContextMenuItemComponentProps } from 'dockview-core';
import { IDockviewTabGroupChipProps } from './reactTabGroupChipPart';
import { IDockviewGroupDragGhostProps } from './reactGroupDragGhostPart';
export interface ReactContextMenuItemConfig extends Omit<ContextMenuItemConfig, 'component'> {
    component?: React.FunctionComponent<IContextMenuItemComponentProps>;
}
export interface IDockviewReactProps extends DockviewOptions {
    tabComponents?: Record<string, React.FunctionComponent<IDockviewPanelHeaderProps>>;
    components: Record<string, React.FunctionComponent<IDockviewPanelProps>>;
    watermarkComponent?: React.FunctionComponent<IWatermarkPanelProps>;
    defaultTabComponent?: React.FunctionComponent<IDockviewPanelHeaderProps>;
    rightHeaderActionsComponent?: React.FunctionComponent<IDockviewHeaderActionsProps>;
    leftHeaderActionsComponent?: React.FunctionComponent<IDockviewHeaderActionsProps>;
    prefixHeaderActionsComponent?: React.FunctionComponent<IDockviewHeaderActionsProps>;
    getTabContextMenuItems?: (params: GetTabContextMenuItemsParams) => (BuiltInContextMenuItem | ReactContextMenuItemConfig)[];
    getTabGroupChipContextMenuItems?: (params: GetTabGroupChipContextMenuItemsParams) => (BuiltInChipContextMenuItem | ReactContextMenuItemConfig)[];
    tabGroupChipComponent?: React.FunctionComponent<IDockviewTabGroupChipProps>;
    /**
     * Component rendered as the drag ghost (the small floating chip) while
     * a group of panels is being dragged. If omitted, the default
     * `"Multiple Panels (N)"` ghost is used.
     *
     * Note: the ghost is captured by the browser at drag start, so the
     * component must render fast / synchronously enough to be visible
     * before the browser snapshots it.
     */
    groupDragGhostComponent?: React.FunctionComponent<IDockviewGroupDragGhostProps>;
    onReady: (event: DockviewReadyEvent) => void;
    onDidDrop?: (event: DockviewDidDropEvent) => void;
    onWillDrop?: (event: DockviewWillDropEvent) => void;
}
export declare const DockviewReact: React.ForwardRefExoticComponent<IDockviewReactProps & React.RefAttributes<HTMLDivElement>>;
