import { Position } from '../../xyflow/react.ts';
import type { HandleConfigurationSpecificPosition, HandleLabelVisibility } from '../../schema/node-definition/handle';
import { type HandleType } from './HandleNotch';
export interface HandleActionEvent {
    handleId: string;
    nodeId: string;
    handleType: HandleType;
    position: Position;
    originalEvent: React.MouseEvent;
}
export interface HandleMouseEvent {
    handleId: string;
    nodeId: string;
    handleType: HandleType;
    position: Position;
}
type ButtonHandleProps = {
    id: string;
    nodeId: string;
    type: 'source' | 'target';
    position: Position;
    connectionPosition?: Position;
    handleType: HandleType;
    label?: string;
    labelIcon?: React.ReactNode;
    labelBackgroundColor?: string;
    visible?: boolean;
    labelVisible?: boolean;
    labelVisibility?: HandleLabelVisibility;
    showButton?: boolean;
    selected?: boolean;
    index?: number;
    total?: number;
    onAction?: (event: HandleActionEvent) => void;
    onMouseEnter?: (event: HandleMouseEvent) => void;
    onMouseLeave?: (event: HandleMouseEvent) => void;
    showNotches?: boolean;
    customPositionAndOffsets?: HandleConfigurationSpecificPosition;
    nodeWidth?: number;
    nodeHeight?: number;
    portalAction?: boolean;
};
export declare const ButtonHandle: import("react").MemoExoticComponent<({ id, nodeId, type, position, connectionPosition, handleType, label, labelIcon, labelBackgroundColor, visible, labelVisible, labelVisibility, showButton, selected, index, total, onAction, onMouseEnter, onMouseLeave, showNotches, customPositionAndOffsets, nodeWidth, nodeHeight, portalAction, }: ButtonHandleProps) => import("react/jsx-runtime").JSX.Element>;
export interface ButtonHandleConfig {
    id: string;
    type: 'source' | 'target';
    handleType: HandleType;
    label?: string;
    labelIcon?: React.ReactNode;
    showButton?: boolean;
    labelBackgroundColor?: string;
    labelVisibility?: HandleLabelVisibility;
    visible?: boolean;
    showHandle?: boolean;
    onAction?: (event: HandleActionEvent) => void;
    onMouseEnter?: (event: HandleMouseEvent) => void;
    onMouseLeave?: (event: HandleMouseEvent) => void;
    customPositionAndOffsets?: HandleConfigurationSpecificPosition;
}
export declare const ButtonHandles: import("react").MemoExoticComponent<({ nodeId, handles, position, connectionPosition, selected, hovered, visible, showAddButton, showNotches, customPositionAndOffsets, shouldShowAddButtonFn, nodeWidth, nodeHeight, portalActions, }: {
    nodeId: string;
    handles: ButtonHandleConfig[];
    position: Position;
    connectionPosition?: Position;
    selected?: boolean;
    hovered?: boolean;
    visible?: boolean;
    showAddButton?: boolean;
    showNotches?: boolean;
    customPositionAndOffsets?: HandleConfigurationSpecificPosition;
    nodeWidth?: number;
    nodeHeight?: number;
    portalActions?: boolean;
    shouldShowAddButtonFn?: ({ showAddButton, selected, hovered, }: {
        showAddButton: boolean;
        selected: boolean;
        hovered: boolean;
    }) => boolean;
}) => import("react/jsx-runtime").JSX.Element>;
export {};
//# sourceMappingURL=ButtonHandle.d.ts.map