import * as React from 'react';
import { EventTrigger } from '../coreUtils/events';
import { EntityElement } from '../editor/dataElements';
import type { DockDirection } from './utility/viewportDock';
import type { ConnectionsMenuCommands } from './connectionsMenu';
import type { InstancesSearchCommands } from './instancesSearch';
/**
 * Base props for selection action components.
 *
 * @see {@link SelectionAction}
 */
export interface SelectionActionStyleProps {
    /**
     * Dock side direction for the action around the selected elements.
     */
    dock: DockDirection;
    /**
     * Vertical place shift for the action button
     * (e.g. `-1` for one place above, `1` for one place below).
     */
    dockRow?: number;
    /**
     * Horizontal place shift for the action button
     * (e.g. `-1` for one place to the left, `1` for one place to the right).
     */
    dockColumn?: number;
    /**
     * Additional CSS class for the component.
     */
    className?: string;
    /**
     * Title for the action button.
     */
    title?: string;
}
/**
 * Props for {@link SelectionAction} component.
 *
 * @see {@link SelectionAction}
 */
export interface SelectionActionProps extends SelectionActionStyleProps {
    /**
     * Whether the action is disabled.
     */
    disabled?: boolean;
    /**
     * Handler to call when the action is selected.
     */
    onSelect?: () => void;
    /**
     * Raw handler for mouse down event on the action button.
     */
    onMouseDown?: (e: React.MouseEvent) => void;
    /**
     * Action content.
     */
    children?: React.ReactNode;
}
/**
 * Base component to display an action on the selected diagram elements
 * from {@link Halo} or {@link Selection}.
 *
 * @category Components
 */
export declare function SelectionAction(props: SelectionActionProps): import("react/jsx-runtime").JSX.Element;
/**
 * Props for {@link SelectionActionSpinner} component.
 *
 * @see {@link SelectionActionSpinner}
 */
export interface SelectionActionSpinnerProps extends SelectionActionStyleProps {
}
/**
 * Selection action component to display a loading spinner.
 *
 * @category Components
 */
export declare function SelectionActionSpinner(props: SelectionActionSpinnerProps): import("react/jsx-runtime").JSX.Element;
/**
 * Props for {@link SelectionActionRemove} component.
 *
 * @see {@link SelectionActionRemove}
 */
export interface SelectionActionRemoveProps extends SelectionActionStyleProps {
}
/**
 * Selection action component to remove an element from the diagram.
 *
 * Removing the elements adds a command to the command history.
 *
 * @category Components
 */
export declare function SelectionActionRemove(props: SelectionActionRemoveProps): import("react/jsx-runtime").JSX.Element;
/**
 * Props for {@link SelectionActionZoomToFit} component.
 *
 * @see {@link SelectionActionZoomToFit}
 */
export interface SelectionActionZoomToFitProps extends SelectionActionStyleProps {
}
/**
 * Selection action component to zoom-in or zoom-out the viewport
 * to fit all selected diagram elements.
 *
 * @category Components
 */
export declare function SelectionActionZoomToFit(props: SelectionActionZoomToFitProps): import("react/jsx-runtime").JSX.Element | null;
/**
 * Props for {@link SelectionActionLayout} component.
 *
 * @see {@link SelectionActionLayout}
 */
export interface SelectionActionLayoutProps extends SelectionActionStyleProps {
}
/**
 * Selection action component to perform graph layout algorithm on the sub-graph
 * formed from the selected elements.
 *
 * Applying the layout adds a command to the command history.
 *
 * @category Components
 */
export declare function SelectionActionLayout(props: SelectionActionLayoutProps): import("react/jsx-runtime").JSX.Element | null;
/**
 * Props for {@link SelectionActionExpand} component.
 *
 * @see {@link SelectionActionExpand}
 */
export interface SelectionActionExpandProps extends SelectionActionStyleProps {
}
/**
 * Selection action component to toggle expanded state for the selected elements.
 *
 * Elements are collapsed if all of them are expanded, otherwise only collapsed
 * ones are expanded instead.
 *
 * Expanding or collapsing the elements adds a command to the command history.
 *
 * @category Components
 */
export declare function SelectionActionExpand(props: SelectionActionExpandProps): import("react/jsx-runtime").JSX.Element | null;
/**
 * Props for {@link SelectionActionAnchor} component.
 *
 * @see {@link SelectionActionAnchor}
 */
export interface SelectionActionAnchorProps extends SelectionActionStyleProps {
    onSelect?: (target: EntityElement, e: React.MouseEvent<HTMLAnchorElement>) => void;
}
/**
 * Selection action component to display a link to the entity IRI.
 *
 * @category Components
 */
export declare function SelectionActionAnchor(props: SelectionActionAnchorProps): import("react/jsx-runtime").JSX.Element | null;
/**
 * Props for {@link SelectionActionConnections} component.
 *
 * @see {@link SelectionActionConnections}
 */
export interface SelectionActionConnectionsProps extends SelectionActionStyleProps {
    /**
     * Event bus to send commands to {@link ConnectionMenu} component.
     */
    commands?: EventTrigger<ConnectionsMenuCommands>;
}
/**
 * Selection action component to open a {@link ConnectionsMenu} for the selected entities.
 *
 * @category Components
 */
export declare function SelectionActionConnections(props: SelectionActionConnectionsProps): import("react/jsx-runtime").JSX.Element | null;
/**
 * Props for {@link SelectionActionAddToFilter} component.
 *
 * @see {@link SelectionActionAddToFilter}
 */
export interface SelectionActionAddToFilterProps extends SelectionActionStyleProps {
    /**
     * Event bus to send commands to {@link InstancesSearch} component.
     */
    commands?: EventTrigger<InstancesSearchCommands>;
}
/**
 * Selection action component to add the selected entity to the {@link InstancesSearch} filter.
 *
 * @category Components
 */
export declare function SelectionActionAddToFilter(props: SelectionActionAddToFilterProps): import("react/jsx-runtime").JSX.Element | null;
/**
 * Props for {@link SelectionActionGroup} component.
 *
 * @see {@link SelectionActionGroup}
 */
export interface SelectionActionGroupProps extends SelectionActionStyleProps {
}
/**
 * Selection action component to group or ungroup selected elements.
 *
 * Selected elements can be grouped if only entity elements are selected,
 * the elements can be ungrouped if only entity groups are selected.
 *
 * Grouping or ungrouping the elements adds a command to the command history.
 *
 * @category Components
 */
export declare function SelectionActionGroup(props: SelectionActionGroupProps): import("react/jsx-runtime").JSX.Element | null;
/**
 * Props for {@link SelectionActionEstablishLink} component.
 *
 * @see {@link SelectionActionEstablishLink}
 */
export interface SelectionActionEstablishLinkProps extends SelectionActionStyleProps {
}
/**
 * Selection action component to start creating a relation link to an existing
 * or a new entity.
 *
 * This action is visible only when graph authoring mode is active.
 *
 * Creating a link adds a command to the command history.
 *
 * @category Components
 */
export declare function SelectionActionEstablishLink(props: SelectionActionEstablishLinkProps): import("react/jsx-runtime").JSX.Element | null;
//# sourceMappingURL=selectionAction.d.ts.map