import { Align } from 'reactflow';
import { AnimationEventHandler } from 'react';
import { AriaRole } from 'react';
import { BackgroundProps } from 'reactflow';
import { ClipboardEventHandler } from 'react';
import { CompositionEventHandler } from 'react';
import { Context } from 'react';
import { ControlProps } from 'reactflow';
import { CoordinateExtent } from 'reactflow';
import { CSSProperties } from 'react';
import { Dispatch } from 'react';
import { DndContextProps } from '@dnd-kit/core';
import { DragEndEvent } from '@dnd-kit/core';
import { DragEventHandler } from 'react';
import { DragOverlayProps } from '@dnd-kit/core';
import { Edge } from 'reactflow';
import { ExtractNames } from '@hitachivantara/uikit-react-core';
import { FocusEventHandler } from 'react';
import { FormEventHandler } from 'react';
import { GetMiniMapNodeAttribute } from 'reactflow';
import { HTMLAttributes } from 'react';
import { HvActionGeneric } from '@hitachivantara/uikit-react-core';
import { HvActionsGenericProps } from '@hitachivantara/uikit-react-core';
import { HvBaseProps } from '@hitachivantara/uikit-react-core';
import { HvBreakpoints } from '@hitachivantara/uikit-react-core';
import { HvButtonBaseProps } from '@hitachivantara/uikit-react-core';
import { HvButtonProps } from '@hitachivantara/uikit-react-core';
import { HvColorAny } from '@hitachivantara/uikit-styles';
import { HvDialogProps } from '@hitachivantara/uikit-react-core';
import { HvDrawerProps } from '@hitachivantara/uikit-react-core';
import { HvEmptyStateProps } from '@hitachivantara/uikit-react-core';
import { HvFlowContextValue } from '../FlowContext';
import { HvFlowNodeMeta as HvFlowNodeMeta_2 } from '..';
import { HvSize } from '@hitachivantara/uikit-react-core';
import { HvSliderProps } from '@hitachivantara/uikit-react-core';
import { HvTypographyVariants } from '@hitachivantara/uikit-react-core';
import { InputEventHandler } from 'react';
import { JSX as JSX_2 } from 'react/jsx-runtime';
import { KeyboardEventHandler } from 'react';
import { MiniMapProps } from 'reactflow';
import { MouseEventHandler } from 'react';
import { Node as Node_2 } from 'reactflow';
import { NodeProps } from 'reactflow';
import { NodeToolbarProps } from 'reactflow';
import { PanelPosition } from 'reactflow';
import { PointerEventHandler } from 'react';
import { Position } from 'reactflow';
import { ReactEventHandler } from 'react';
import { ReactFlowInstance } from 'reactflow';
import { ReactFlowProps } from 'reactflow';
import { ReactGridLayoutProps } from 'react-grid-layout';
import { ReactNode } from 'react';
import { ResponsiveProps } from 'react-grid-layout';
import { SetStateAction } from 'react';
import { SyntheticEvent } from 'react';
import { TouchEventHandler } from 'react';
import { TransitionEventHandler } from 'react';
import { UIEventHandler } from 'react';
import { WheelEventHandler } from 'react';

export declare const bladeClasses: {
    root: string;
    expanded: string;
    fullWidth: string;
    heading: string;
    button: string;
    textOnlyLabel: string;
    container: string;
    disabled: string;
};

export declare const bladesClasses: {
    root: string;
};

export declare const dashboardClasses: {
    root: string;
};

export declare const DEFAULT_LABELS: {
    outputsTitle: string;
    inputsTitle: string;
    deleteActionLabel: string;
    duplicateActionLabel: string;
};

declare const DEFAULT_LABELS_2: {
    fitView: string;
    zoomIn: string;
    zoomOut: string;
    interactive: string;
};

declare const DEFAULT_LABELS_3: {
    itemAriaRoleDescription: string;
    expandGroupButtonAriaLabel: string;
    searchPlaceholder: string;
    searchAriaLabel: string;
};

declare const DEFAULT_LABELS_4: {
    deleteActionLabel: string;
    duplicateActionLabel: string;
};

declare const DEFAULT_LABELS_5: {
    collapseLabel: string;
    expandLabel: string;
};

declare const DEFAULT_LABELS_6: {
    emptyMessage: string;
    dialogTitle: string;
    dialogSubtitle: string;
    dialogApply: string;
    dialogCancel: string;
};

export declare const flowBaseNodeClasses: {
    root: string;
    headerContainer: string;
    titleContainer: string;
    title: string;
    inputsTitleContainer: string;
    outputsTitleContainer: string;
    contentContainer: string;
    inputsContainer: string;
    outputsContainer: string;
    inputGroupContainer: string;
    outputGroupContainer: string;
    inputContainer: string;
    outputContainer: string;
    handle: string;
    handleConnected: string;
    mandatory: string;
    footerContainer: string;
};

export declare const flowClasses: {
    root: string;
};

export declare const flowMinimapClasses: {
    root: string;
};

export declare const flowNodeClasses: {
    mandatory: string;
    root: string;
    title: string;
    footerContainer: string;
    titleContainer: string;
    inputContainer: string;
    handle: string;
    headerContainer: string;
    inputsTitleContainer: string;
    outputsTitleContainer: string;
    contentContainer: string;
    inputsContainer: string;
    outputsContainer: string;
    inputGroupContainer: string;
    outputGroupContainer: string;
    outputContainer: string;
    handleConnected: string;
    subtitleContainer: string;
    subtitle: string;
    inlineEditRoot: string;
    inlineEditButton: string;
    actions: string;
    actionsButton: string;
    paramsContainer: string;
};

export declare const flowSidebarClasses: {
    drawerPaper: string;
    titleContainer: string;
    contentContainer: string;
    description: string;
    searchRoot: string;
    groupsContainer: string;
};

/**
 * A blade is a design element that expands horizontally to reveal information, similar to an accordion.
 *
 * It is usually stacked horizontally with other blades and works best when used within a flex container.
 * The `HvBlades` component is recommended for this purpose, as it also provides better management of the
 * blades' expanded state.
 */
export declare const HvBlade: (props: HvBladeProps) => JSX_2.Element;

export declare type HvBladeClasses = ExtractNames<typeof useClasses>;

export declare interface HvBladeProps extends HvBaseProps<HTMLDivElement, "onChange" | "children"> {
    /**
     * The content that will be rendered within the blade.
     */
    children: React.ReactNode;
    /**
     * The content of the blade's button.
     *
     * If a render function is provided, it will be called with the expanded state as an argument.
     */
    label?: React.ReactNode | ((expanded: boolean) => React.ReactNode);
    /**
     * Typography variant for the blade's button label.
     */
    labelVariant?: HvTypographyVariants;
    /**
     * Heading Level to apply to blade button.
     *
     * If 'undefined', the button will not have a header wrapper.
     */
    headingLevel?: 1 | 2 | 3 | 4 | 5 | 6;
    /**
     * Indicates whether the blade is expanded or not.
     *
     * When defined the expanded state becomes controlled.
     *
     * @default undefined
     */
    expanded?: boolean;
    /**
     * Specifies the initial expanded state of the blade when it is uncontrolled.
     */
    defaultExpanded?: boolean;
    /**
     * Callback function triggered when the blade's button is pressed.
     * It receives the event and the new expanded state as arguments.
     *
     * If the blade is uncontrolled, this new state will be effective.
     * If the blade is controlled, it is up to the parent component to manage this state.
     *
     * @param {SyntheticEvent} event The event source of the callback.
     * @param {boolean} value The new value.
     */
    onChange?: (event: React.SyntheticEvent, value: boolean) => void;
    /**
     * Specifies whether the blade is disabled. If true, the blade cannot be interacted with.
     */
    disabled?: boolean;
    /**
     * If true, the blade will take up the maximum width of the container when expanded.
     */
    fullWidth?: boolean;
    /**
     * Props to be passed to the button that toggles the blade's expanded state.
     * This can be used to further customize the appearance or behavior of the blade's button,
     * e.g. to set the aria-label attribute.
     */
    buttonProps?: HTMLAttributes<HTMLDivElement>;
    /**
     * Props to be passed to the container div that holds the blade's children.
     * This can be used to further customize the appearance or behavior of the blade's content area.
     */
    containerProps?: HTMLAttributes<HTMLDivElement>;
    /**
     * A Jss Object used to override or extend the styles applied.
     */
    classes?: HvBladeClasses;
}

/**
 * `HvBlades` is a component that groups multiple `HvBlade` components.
 *
 * It allows for better control over the expanded state of blades, suitable for both
 * controlled and uncontrolled scenarios.
 */
export declare const HvBlades: (props: HvBladesProps) => JSX_2.Element;

export declare type HvBladesClasses = ExtractNames<typeof useClasses_2>;

export declare interface HvBladesProps extends HvBaseProps<HTMLDivElement, "onChange" | "children"> {
    /**
     * Array of indices representing the expanded state of each blade.
     *
     * When defined, the expanded state of the blades becomes controlled.
     */
    expanded?: number[];
    /**
     * Initial expanded state of the blades when in an uncontrolled state.
     *
     * It's an array of indices representing the blades that should be initially expanded.
     */
    defaultExpanded?: number[];
    /**
     * If true, ensures that only one blade can be expanded at a time.
     */
    atMostOneExpanded?: boolean;
    /**
     * If true, ensures that at least one blade is always expanded.
     */
    atLeastOneExpanded?: boolean;
    /**
     * If true, the blades will take up the full width of the container by default.
     */
    fullWidthBlades?: boolean;
    /**
     * Callback function triggered when the expanded state of any blade changes.
     * It receives the event and the new array of expanded indices as arguments.
     *
     * If uncontrolled, this new state will be effective.
     * If controlled, it is up to the parent component to manage this state.
     *
     * @param {SyntheticEvent} event The event source of the callback.
     * @param {number[]} value Array of indices of the blades that are expanded.
     */
    onChange?: (event: SyntheticEvent, value: number[]) => void;
    /**
     * The blades to be rendered within the group.
     * Must be instances of `HvBlade`, otherwise the behavior is undefined and will most likely break.
     */
    children: React.ReactNode;
    /**
     * A Jss Object used to override or extend the styles applied.
     */
    classes?: HvBladesClasses;
}

/**
 * A Dashboard grid layout component, based on `react-grid-layout`.
 * The children elements are grid items and must be `key`ed.
 *
 * @see https://github.com/react-grid-layout/react-grid-layout?tab=readme-ov-file#grid-layout-props
 *
 * DISCLAIMER: This component is a work in progress and there might be breaking changes.
 */
export declare const HvDashboard: (props: HvDashboardProps) => JSX_2.Element;

export declare type HvDashboardClasses = ExtractNames<typeof useClasses_3>;

/** @deprecated no longer supported. Instead create a custom node with `HvDialog` + `HvDashboard` */
export declare const HvDashboardNode: (props: HvDashboardNodeProps) => JSX_2.Element;

export declare type HvDashboardNodeClasses = ExtractNames<typeof useClasses_9>;

export declare const hvDashboardNodeClasses: {
    mandatory: string;
    root: string;
    title: string;
    actions: string;
    footerContainer: string;
    titleContainer: string;
    inputContainer: string;
    handle: string;
    headerContainer: string;
    inputsTitleContainer: string;
    outputsTitleContainer: string;
    contentContainer: string;
    inputsContainer: string;
    outputsContainer: string;
    inputGroupContainer: string;
    outputGroupContainer: string;
    outputContainer: string;
    handleConnected: string;
    subtitle: string;
    subtitleContainer: string;
    inlineEditRoot: string;
    inlineEditButton: string;
    actionsButton: string;
    paramsContainer: string;
    empty: string;
};

export declare interface HvDashboardNodeProps extends HvFlowNodeProps, Pick<HvDialogProps, "open" | "onClose">, Pick<HvDashboardProps, "layout"> {
    classes?: HvDashboardNodeClasses;
    labels?: HvFlowNodeProps["labels"] & Partial<typeof DEFAULT_LABELS_6>;
    previewItems?: React.ReactNode;
    onApply?: () => void;
    onCancel?: () => void;
    dashboardProps?: Omit<HvDashboardProps, "children">;
    dialogProps?: HvDialogProps;
}

export declare interface HvDashboardProps extends Omit<ResponsiveProps, "cols"> {
    /** Dashboard items. Each node must be `key`'ed  */
    children: React.ReactNode;
    /** An object used to override or extend the styles applied. */
    classes?: HvDashboardClasses;
    /**
     * Layout is an array of object with the format:
     *
     * `{i: string, x: number, y: number, w: number, h: number}`
     *
     * The `i` must match the key used on each item component.
     */
    layout?: ReactGridLayoutProps["layout"];
    /** Number of grid columns or an object of breakpoint -> #columns */
    cols?: number | ResponsiveProps["cols"];
}

declare interface HvDroppableFlowProps<NodeType extends string | undefined = string | undefined, NodeData = any> extends Omit<ReactFlowProps, "nodes" | "edges" | "nodeTypes"> {
    /** Flow content: background, controls, and minimap. */
    children?: React.ReactNode;
    /** Flow nodes types. */
    nodeTypes?: HvFlowNodeTypes<NodeData>;
    /** Flow nodes. */
    nodes?: Node_2<NodeData, NodeType>[];
    /** Flow edges. */
    edges?: Edge[];
    /** A Jss Object used to override or extend the styles applied to the component. */
    classes?: HvFlowClasses;
    /** Callback called when the flow changes. Returns the updated nodes and edges. */
    onFlowChange?: (nodes: Node_2<NodeData, NodeType>[], edges: Edge[]) => void;
    /**
     * Callback called when a node is dropped in the flow.
     *
     * This callback should be used to override the custom UI Kit drop event.
     * Thus, when defined, the user is responsible for adding nodes to the flow.
     *
     * This callback is called when `HvFlowSidebar` is used or a custom sidebar was created using Dnd Kit.
     * When a custom sidebar was created using the native HTML drag and drop API, refer to the `onDrop` callback.
     *
     * Returns the event and the node to be added to the flow.
     */
    onDndDrop?: (event: DragEndEvent, node: Node_2) => void;
}

/**
 * Flow component to build interactive node-based UIs.
 *
 * This implementation leverages [React Flow](https://reactflow.dev).
 * The drag and drop functionality leverages [Dnd Kit](https://docs.dndkit.com)
 *
 * Take a look at the [usage page](https://lumada-design.github.io/uikit/master/?path=/docs/lab-flow-usage--docs) to learn more about this component.
 *
 * DISCLAIMER: This component is a work in progress and there might be breaking changes.
 */
export declare const HvFlow: ({ nodeGroups, sidebar, defaultActions, dndContextProps, ...others }: HvFlowProps) => JSX_2.Element;

export declare const HvFlowBackground: ({ color, ...others }: HvFlowBackgroundProps) => JSX_2.Element;

export declare interface HvFlowBackgroundProps extends Omit<BackgroundProps, "color"> {
    /** Color for the background dots. Defaults to `secondary`. */
    color?: HvColorAny;
}

export declare const HvFlowBaseNode: ({ id, title: titleProp, headerItems, icon: iconProp, color: colorProp, inputs: inputsProp, outputs: outputsProp, nodeActions: nodeActionsProp, footer, classes: classesProp, labels: labelsProp, className, children, }: HvFlowBaseNodeProps<unknown>) => JSX_2.Element | null;

export declare type HvFlowBaseNodeClasses = ExtractNames<typeof useClasses_7>;

export declare interface HvFlowBaseNodeProps<T = any> extends Omit<HvBaseProps, "id" | "color">, Omit<HvUseNodeParams, "id">, NodeProps<T> {
    /** Header items */
    headerItems?: React.ReactNode;
    /** The content of the node footer */
    footer?: React.ReactNode;
    /** Labels used on the node. */
    labels?: Partial<typeof DEFAULT_LABELS>;
    /** A Jss Object used to override or extend the styles applied to the component. */
    classes?: HvFlowBaseNodeClasses;
}

export declare type HvFlowBuiltInAction = "delete" | "duplicate";

export declare type HvFlowBuiltInActions = Omit<HvFlowNodeAction, "id" | "callback"> & {
    id: HvFlowBuiltInAction;
};

export declare type HvFlowClasses = ExtractNames<typeof useClasses_4>;

export declare const HvFlowControls: ({ onZoomIn: onZoomInProp, onZoomOut: onZoomOutProp, onFitView: onFitViewProp, labels: labelsProps, hideInteractive, hideFitView, hideZoom, position, orientation, onInteractiveChange, fitViewOptions, children, ...others }: HvFlowControlsProps) => JSX_2.Element;

export declare type HvFlowControlsPosition = PanelPosition;

export declare interface HvFlowControlsProps extends Omit<ControlProps, "position" | "showFitView" | "showInteractive" | "showZoom"> {
    /** Controls position. Defaults to `bottom-center`. */
    position?: HvFlowControlsPosition;
    /** Controls orientation. Defaults to `horizontal`. */
    orientation?: "vertical" | "horizontal";
    /** Labels used on the controls buttons. */
    labels?: Partial<typeof DEFAULT_LABELS_2>;
    /** Whether to hide the zoom controls. */
    hideZoom?: boolean;
    /** Whether to hide the fit view controls. */
    hideFitView?: boolean;
    /** Whether to hide the interactive controls. */
    hideInteractive?: boolean;
}

export declare const HvFlowEmpty: ({ className, ...others }: HvFlowEmptyProps) => JSX_2.Element | null;

export declare interface HvFlowEmptyProps extends HvEmptyStateProps {
}

export declare interface HvFlowGroupItem<NodeData = any> extends Pick<HvFlowNodeProps, "params" | "subtitle"> {
    /** The node identifier registered in `nodeTypes` */
    nodeType: string;
    label: string;
    data?: NodeData;
}

export declare type HvFlowInstance<NodeData = any, EdgeData = any> = ReactFlowInstance<NodeData, EdgeData>;

export declare const HvFlowMinimap: ({ nodeColor, maskColor, maskStrokeColor, nodeStrokeColor, classes: classesProp, className, ...others }: HvFlowMinimapProps) => JSX_2.Element;

export declare type HvFlowMinimapClasses = ExtractNames<typeof useClasses_5>;

export declare interface HvFlowMinimapProps<NodeData = any> extends Omit<MiniMapProps<NodeData>, "nodeColor" | "nodeStrokeColor" | "maskColor" | "maskStrokeColor"> {
    /** Node color. Defaults to `atmo4`. */
    nodeColor?: HvColorAny | GetMiniMapNodeAttribute<NodeData>;
    /** Node stroke color. Defaults to `atmo4`. */
    nodeStrokeColor?: HvColorAny | GetMiniMapNodeAttribute<NodeData>;
    /** Mask color. Defaults to `atmo3`. */
    maskColor?: HvColorAny;
    /** Mask stroke color. Defaults to `atmo3`. */
    maskStrokeColor?: HvColorAny;
    /** A Jss Object used to override or extend the styles applied to the component. */
    classes?: HvFlowMinimapClasses;
}

export declare const HvFlowNode: ({ id, type, headerItems, actions, actionCallback, onAction, maxVisibleActions, expanded, actionsIconOnly, params, classes: classesProp, labels: labelsProps, children, expandParamsButtonProps, disableInlineEdit, title: titleProp, subtitle: subtitleProp, description, groupId, color: colorProp, icon: iconProp, ...props }: HvFlowNodeProps<unknown>) => JSX_2.Element;

export declare interface HvFlowNodeAction extends HvActionGeneric {
    callback?: (node: Node_2) => void;
}

export declare type HvFlowNodeClasses = ExtractNames<typeof useClasses_8>;

/** HvFlowNode component type. @extends React.FC */
export declare interface HvFlowNodeFC<NodeData = any> extends React.FC<NodeProps<NodeData>> {
}

/** Node groups */
export declare interface HvFlowNodeGroup {
    label: string;
    description?: string;
    color?: HvColorAny;
    icon?: React.ReactNode;
    items?: HvFlowGroupItem[];
}

export declare type HvFlowNodeGroups<GroupId extends keyof any = string> = Record<GroupId, HvFlowNodeGroup>;

export declare interface HvFlowNodeInput {
    id?: string;
    label: React.ReactNode;
    isMandatory?: boolean;
    accepts?: string[];
    maxConnections?: number;
}

export declare interface HvFlowNodeInputGroup {
    label: React.ReactNode;
    inputs: HvFlowNodeInput[];
}

export declare interface HvFlowNodeMeta {
    label: string;
    inputs?: (HvFlowNodeInput | HvFlowNodeInputGroup)[];
    outputs?: (HvFlowNodeOutput | HvFlowNodeOutputGroup)[];
}

export declare type HvFlowNodeMetaRegistry = Record<string, HvFlowNodeMeta>;

export declare interface HvFlowNodeOutput {
    id?: string;
    label: React.ReactNode;
    isMandatory?: boolean;
    provides?: string;
    maxConnections?: number;
}

export declare interface HvFlowNodeOutputGroup {
    label: React.ReactNode;
    outputs: HvFlowNodeOutput[];
}

export declare type HvFlowNodeParam = HvFlowNodeSelectParam | HvFlowNodeTextParam | HvFlowNodeSliderParam;

export declare interface HvFlowNodeProps<T = any> extends HvFlowBaseNodeProps<T> {
    /** Node description. */
    description?: string;
    /** Node actions. */
    actions?: HvActionsGenericProps["actions"];
    /**
     * Node action callback.
     *
     * @deprecated Use `onAction` instead.
     * */
    actionCallback?: HvActionsGenericProps["actionsCallback"];
    /** Node action callback. */
    onAction?: HvActionsGenericProps["onAction"];
    /** Whether the actions should be all icon buttons when visible. @default true */
    actionsIconOnly?: HvActionsGenericProps["iconOnly"];
    /** Node maximum number of actions visible. */
    maxVisibleActions?: HvActionsGenericProps["maxVisibleActions"];
    /** Node subtitle - this is typically the node "name" */
    subtitle?: string;
    /** Node group ID */
    groupId?: string;
    /** Node expanded */
    expanded?: boolean;
    /** Node parameters */
    params?: HvFlowNodeParam[];
    /** Props to be passed to the expand parameters button. */
    expandParamsButtonProps?: HvButtonProps;
    /** Labels used on the node. */
    labels?: HvFlowBaseNodeProps["labels"] & Partial<typeof DEFAULT_LABELS_5>;
    /** A Jss Object used to override or extend the styles applied to the component. */
    classes?: HvFlowNodeClasses;
    /** Remove the ability to customize the label of the Node */
    disableInlineEdit?: boolean;
}

export declare interface HvFlowNodeSelectParam extends HvFlowNodeSharedParam {
    type: "select";
    multiple?: boolean;
    options?: string[] | {
        id: string;
        label: string;
    }[];
}

export declare interface HvFlowNodeSharedParam {
    id: string;
    label: string;
}

export declare interface HvFlowNodeSliderParam extends HvFlowNodeSharedParam, Omit<HvSliderProps, keyof HvFlowNodeSharedParam> {
    type: "slider";
}

export declare interface HvFlowNodeTextParam extends HvFlowNodeSharedParam {
    type: "text";
}

export declare type HvFlowNodeTypes<NodeData = any> = Record<string, HvFlowNodeFC<NodeData>>;

export declare interface HvFlowProps<NodeGroups extends keyof any = string, NodeType extends string | undefined = string | undefined, NodeData = any> extends HvDroppableFlowProps<NodeType, NodeData> {
    /** Flow nodes groups. */
    nodeGroups?: HvFlowNodeGroups<NodeGroups>;
    /** Flow sidebar. */
    sidebar?: React.ReactNode;
    /** Flow default actions. */
    defaultActions?: HvFlowNodeAction[];
    /**
     * Dnd Kit context props. This should be used for accessibility purposes.
     *
     * More information can be found on the [Dnd Kit documentation](https://docs.dndkit.com/guides/accessibility)
     */
    dndContextProps?: Pick<DndContextProps, "accessibility">;
}

export declare const HvFlowSidebar: ({ id, title, description, anchor, buttonTitle, flatten, classes: classesProp, labels: labelsProps, dragOverlayProps, ...others }: HvFlowSidebarProps) => JSX_2.Element;

export declare type HvFlowSidebarClasses = ExtractNames<typeof useClasses_6>;

export declare interface HvFlowSidebarProps extends Omit<HvDrawerProps, "classes" | "title"> {
    /** Sidebar title. */
    title?: string;
    /** Sidebar description. */
    description?: string;
    /** Flatten sidebar items */
    flatten?: boolean;
    /** A Jss Object used to override or extend the styles applied to the component. */
    classes?: HvFlowSidebarClasses;
    /** Labels used on the sidebar. */
    labels?: Partial<typeof DEFAULT_LABELS_3>;
    /**
     * Dnd Kit drag overlay props for customization.
     *
     * More information can be found in the [Dnd Kit documentation](https://docs.dndkit.com/api-documentation/draggable/drag-overlay).
     */
    dragOverlayProps?: DragOverlayProps;
}

declare type HvStepClasses = ExtractNames<typeof useClasses_11>;

/**
 * Navigation page with steps.
 *
 * You need to define the `steps` displayed on the component so that itself can be drawn on the UI.
 * On each step, you need to define a `state` - 'Pending', 'Failed', 'Completed', 'Current', 'Disabled' -
 * and a `title` to be shown as a tooltip or a text above of the step. You can also defined `className`, `separatorClassName`, and `titleClassName` to override the default styles.
 *
 * If the step component has titles, each one will have 215px of width by default.
 */
export declare const HvStepNavigation: ({ className, classes: classesProp, width, steps, stepSize, showTitles, type, "aria-label": ariaLabel, ...others }: HvStepNavigationProps) => JSX_2.Element;

export declare type HvStepNavigationClasses = ExtractNames<typeof useClasses_10>;

export declare interface HvStepNavigationProps extends HvBaseProps {
    /** Type of step navigation. */
    type?: "Simple" | "Default";
    /** Steps to show on the component. */
    steps: Array<Pick<HvStepProps, "state" | "title" | "onClick" | "className" | "disabled"> & {
        /** Class names to override styles on the separator component after the step. */
        separatorClassName?: string;
        /** Class names to override styles on the title component above the step. */
        titleClassName?: string;
    }>;
    /** Sets one of the standard sizes of the steps. @default useWidth()  */
    stepSize?: "xs" | "sm" | "md" | "lg" | "xl";
    /**
     * Width of the component element on each breakpoint screen resolution.
     * If undefined and the step component has no title, the width of the separator element will be 100px.
     * */
    width?: {
        [breakpoint in HvBreakpoints]?: number;
    };
    /** Defines either show a title or only a tooltip on each step component. */
    showTitles?: boolean;
    /** A Jss Object used to override or extend the styles applied to the empty state StepNavigation. */
    classes?: HvStepNavigationClasses;
}

declare interface HvStepProps extends Pick<HvButtonBaseProps, "onClick">, Omit<HvBaseProps, "onClick"> {
    /** A Jss Object used to override or extend the styles applied to the empty state StepNavigation. */
    classes?: HvStepClasses;
    /** State of the step. Values = {"Pending", "Failed", "Completed", "Current", "Disabled", "Enabled"} */
    state: "Pending" | "Failed" | "Completed" | "Current" | "Disabled" | "Enabled";
    /** Title of the step. */
    title: string;
    /** Sets one of the standard sizes of the step */
    size?: HvSize;
    /** Number of the step. */
    number?: number;
    /**
     * Define if a step is disabled/enabled.
     * If this property is not defined and the step is on state "Disabled", the step component will be disabled
     */
    disabled?: boolean;
}

export declare interface HvUseNodeParams {
    id: string;
    /** Node group ID */
    groupId?: string;
    title?: string;
    subtitle?: string;
    icon?: React.ReactNode;
    color?: HvColorAny;
    /** Node inputs */
    inputs?: (HvFlowNodeInput | HvFlowNodeInputGroup)[];
    /** Node outputs */
    outputs?: (HvFlowNodeOutput | HvFlowNodeOutputGroup)[];
    /** Node actions */
    nodeActions?: HvFlowNodeAction[];
    /** Labels used on the default actions. */
    labels?: Partial<typeof DEFAULT_LABELS_4>;
    /** Props for the NodeToolbar Component */
    nodeToolbarProps?: NodeToolbarProps;
}

export declare const HvWizard: ({ className, children, onClose, handleSubmit, title, open, skippable, loading, hasSummary, summaryContent, labels, fixedHeight, customStep, classes: classesProp, ...others }: HvWizardProps) => JSX_2.Element;

export declare const HvWizardActions: ({ classes: classesProp, handleClose, handleSubmit, loading, skippable, labels, handleBeforeNext, handleBeforePrevious, }: HvWizardActionsProps) => JSX_2.Element;

export declare type HvWizardActionsClasses = ExtractNames<typeof useClasses_13>;

export declare interface HvWizardActionsProps extends HvBaseProps {
    /** Function to handle the cancel button. */
    handleClose: (event: React.MouseEvent<HTMLButtonElement>) => void;
    /** Function to handle the submit button. Also sends the current context state. */
    handleSubmit: (context: any) => void;
    /** An object containing all the labels for the wizard actions component. */
    labels?: {
        /** Cancel button label. */
        cancel?: string | React.ReactNode;
        /** Skip button label. */
        skip?: string | React.ReactNode;
        /** Previous button label. */
        previous?: string | React.ReactNode;
        /** Next button label. */
        next?: string | React.ReactNode;
        /** Submit button label. */
        submit?: string | React.ReactNode;
    };
    /** Whether the submit button is disabled. */
    loading?: boolean;
    /** Enables the skip button. */
    skippable?: boolean;
    /** A Jss Object used to override or extend the styles applied to the empty state Wizard. */
    classes?: HvWizardActionsClasses;
    /** Function executed instead of default go to next page */
    handleBeforeNext?: () => void;
    /** Function executed instead of default go to previous page */
    handleBeforePrevious?: () => void;
}

export declare type HvWizardClasses = ExtractNames<typeof useClasses_12>;

export declare const HvWizardContainer: (props: HvWizardContainerProps) => JSX_2.Element;

export declare type HvWizardContainerClasses = ExtractNames<typeof useClasses_15>;

export declare interface HvWizardContainerProps extends Omit<HvBaseProps, "onClose">, Pick<HvDialogProps, "maxWidth" | "fullWidth"> {
    /** Current state of the Wizard. */
    open: boolean;
    /** Function executed on close. */
    handleClose: HvDialogProps["onClose"];
    /** A Jss Object used to override or extend the styles applied to the empty state Wizard. */
    classes?: HvWizardContainerClasses;
}

export declare const HvWizardContent: ({ classes: classesProp, fixedHeight, loading, children, summaryContent, }: HvWizardContentProps) => JSX_2.Element;

export declare type HvWizardContentClasses = ExtractNames<typeof useClasses_16>;

export declare interface HvWizardContentProps extends HvBaseProps {
    /** Forces minimum height to the component. */
    fixedHeight?: boolean;
    /** Whether the loading animation is shown. */
    loading?: boolean;
    /** The content of the summary. */
    summaryContent?: React.ReactNode;
    /** A Jss Object used to override or extend the styles applied to the empty state Wizard. */
    classes?: HvWizardContentClasses;
}

export declare const HvWizardContext: Context<HvWizardContextProp>;

declare type HvWizardContextProp = {
    context: HvWizardTabs;
    setContext: React.Dispatch<React.SetStateAction<HvWizardTabs>>;
    summary: boolean;
    setSummary: React.Dispatch<React.SetStateAction<boolean>>;
    tab: number;
    setTab: Dispatch<SetStateAction<number>>;
};

export declare interface HvWizardProps extends HvBaseProps, Pick<HvDialogProps, "maxWidth" | "fullWidth"> {
    /** Current state of the Wizard. */
    open: boolean;
    /** Function executed on close. */
    onClose: (event: React.MouseEvent<HTMLButtonElement> | {}, reason?: "escapeKeyDown" | "backdropClick") => void;
    /** Function executed on submit. */
    handleSubmit: (context: HvWizardTabs) => void;
    /** Title for the wizard. */
    title?: string;
    /** An object containing all the labels for the wizard. */
    labels?: HvWizardActionsProps["labels"] & HvWizardTitleProps["labels"];
    /** Shows the summary button. */
    hasSummary?: boolean;
    /** The content of the summary. */
    summaryContent?: React.ReactNode;
    /** Enables the skip button. */
    skippable?: boolean;
    /** Forces minimum height to the component. */
    fixedHeight?: boolean;
    /** Whether the loading animation is shown. */
    loading?: boolean;
    /** Custom object to define type, size and width of the StepNavigation component */
    customStep?: Pick<HvStepNavigationProps, "type" | "stepSize" | "width">;
    /** A Jss Object used to override or extend the styles applied to the empty state Wizard. */
    classes?: HvWizardClasses;
}

export declare type HvWizardTab = {
    name?: string;
    valid?: boolean | null;
    mustValidate?: boolean;
    touched?: boolean;
    form?: any;
    children?: React.ReactNode;
    disabled?: boolean;
    loading?: boolean;
    [other: string]: any;
};

export declare type HvWizardTabs = {
    [tab in number]?: HvWizardTab;
};

export declare const HvWizardTitle: ({ title, hasSummary, labels, classes: classesProp, customStep, }: HvWizardTitleProps) => JSX_2.Element;

export declare type HvWizardTitleClasses = ExtractNames<typeof useClasses_14>;

export declare interface HvWizardTitleProps extends HvBaseProps {
    /** Title for the wizard. */
    title?: string;
    /** Shows the summary button. */
    hasSummary?: boolean;
    /** An object containing all the labels for the wizard header. */
    labels?: {
        /** Summary button label. */
        summary?: string;
    };
    /** Custom object to define type, size and width of the StepNavigation component */
    customStep?: Pick<HvStepNavigationProps, "type" | "stepSize" | "width">;
    /** A Jss Object used to override or extend the styles applied to the empty state Wizard. */
    classes?: HvWizardTitleClasses;
}

export declare const stepNavigationClasses: {
    root: string;
    titles: string;
    ol: string;
    li: string;
    separator: string;
};

declare const useClasses: (classesProp?: Partial<Record<"container" | "button" | "expanded" | "disabled" | "root" | "heading" | "fullWidth" | "textOnlyLabel", string>>, addStatic?: boolean) => {
    readonly classes: {
        root: string;
        expanded: string;
        fullWidth: string;
        heading: string;
        button: string;
        textOnlyLabel: string;
        container: string;
        disabled: string;
    };
    readonly css: any;
    readonly cx: (...args: any) => string;
};

declare const useClasses_10: (classesProp?: Partial<Record<"separator" | "root" | "li" | "ol" | "titles", string>>, addStatic?: boolean) => {
    readonly classes: {
        root: string;
        titles: string;
        ol: string;
        li: string;
        separator: string;
    };
    readonly css: any;
    readonly cx: (...args: any) => string;
};

declare const useClasses_11: (classesProp?: Partial<Record<"xs" | "sm" | "md" | "lg" | "xl" | "root" | "avatar" | "notCurrent", string>>, addStatic?: boolean) => {
    readonly classes: {
        root: string;
        notCurrent: string;
        xs: string;
        sm: string;
        md: string;
        lg: string;
        xl: string;
        avatar: string;
    };
    readonly css: any;
    readonly cx: (...args: any) => string;
};

declare const useClasses_12: (classesProp?: Partial<Record<"root", string>>, addStatic?: boolean) => {
    readonly classes: {
        root: string;
    };
    readonly css: any;
    readonly cx: (...args: any) => string;
};

declare const useClasses_13: (classesProp?: Partial<Record<"actionsContainer" | "buttonWidth" | "buttonsContainer" | "buttonSpacing", string>>, addStatic?: boolean) => {
    readonly classes: {
        actionsContainer: string;
        buttonWidth: string;
        buttonsContainer: string;
        buttonSpacing: string;
    };
    readonly css: any;
    readonly cx: (...args: any) => string;
};

declare const useClasses_14: (classesProp?: Partial<Record<"root" | "messageContainer" | "titleContainer" | "headerContainer" | "buttonWidth" | "summaryButton" | "rootSummaryButton" | "stepContainer", string>>, addStatic?: boolean) => {
    readonly classes: {
        root: string;
        headerContainer: string;
        messageContainer: string;
        titleContainer: string;
        summaryButton: string;
        buttonWidth: string;
        rootSummaryButton: string;
        stepContainer: string;
    };
    readonly css: any;
    readonly cx: (...args: any) => string;
};

declare const useClasses_15: (classesProp?: Partial<Record<"root" | "closeButton" | "paper", string>>, addStatic?: boolean) => {
    readonly classes: {
        root: string;
        paper: string;
        closeButton: string;
    };
    readonly css: any;
    readonly cx: (...args: any) => string;
};

declare const useClasses_16: (classesProp?: Partial<Record<"contentContainer" | "fixedHeight" | "summaryRef" | "summarySticky" | "summaryContainer", string>>, addStatic?: boolean) => {
    readonly classes: {
        contentContainer: string;
        fixedHeight: string;
        summaryRef: string;
        summarySticky: string;
        summaryContainer: string;
    };
    readonly css: any;
    readonly cx: (...args: any) => string;
};

declare const useClasses_2: (classesProp?: Partial<Record<"root", string>>, addStatic?: boolean) => {
    readonly classes: {
        root: string;
    };
    readonly css: any;
    readonly cx: (...args: any) => string;
};

declare const useClasses_3: (classesProp?: Partial<Record<"root", string>>, addStatic?: boolean) => {
    readonly classes: {
        root: string;
    };
    readonly css: any;
    readonly cx: (...args: any) => string;
};

declare const useClasses_4: (classesProp?: Partial<Record<"root", string>>, addStatic?: boolean) => {
    readonly classes: {
        root: string;
    };
    readonly css: any;
    readonly cx: (...args: any) => string;
};

declare const useClasses_5: (classesProp?: Partial<Record<"root", string>>, addStatic?: boolean) => {
    readonly classes: {
        root: string;
    };
    readonly css: any;
    readonly cx: (...args: any) => string;
};

declare const useClasses_6: (classesProp?: Partial<Record<"description" | "titleContainer" | "contentContainer" | "drawerPaper" | "searchRoot" | "groupsContainer", string>>, addStatic?: boolean) => {
    readonly classes: {
        drawerPaper: string;
        titleContainer: string;
        contentContainer: string;
        description: string;
        searchRoot: string;
        groupsContainer: string;
    };
    readonly css: any;
    readonly cx: (...args: any) => string;
};

declare const useClasses_7: (classesProp?: Partial<Record<"mandatory" | "root" | "title" | "footerContainer" | "titleContainer" | "inputContainer" | "handle" | "headerContainer" | "inputsTitleContainer" | "outputsTitleContainer" | "contentContainer" | "inputsContainer" | "outputsContainer" | "inputGroupContainer" | "outputGroupContainer" | "outputContainer" | "handleConnected", string>>, addStatic?: boolean) => {
    readonly classes: {
        root: string;
        headerContainer: string;
        titleContainer: string;
        title: string;
        inputsTitleContainer: string;
        outputsTitleContainer: string;
        contentContainer: string;
        inputsContainer: string;
        outputsContainer: string;
        inputGroupContainer: string;
        outputGroupContainer: string;
        inputContainer: string;
        outputContainer: string;
        handle: string;
        handleConnected: string;
        mandatory: string;
        footerContainer: string;
    };
    readonly css: any;
    readonly cx: (...args: any) => string;
};

declare const useClasses_8: (classesProp?: Partial<Record<"mandatory" | "root" | "title" | "actions" | "footerContainer" | "titleContainer" | "inputContainer" | "handle" | "headerContainer" | "inputsTitleContainer" | "outputsTitleContainer" | "contentContainer" | "inputsContainer" | "outputsContainer" | "inputGroupContainer" | "outputGroupContainer" | "outputContainer" | "handleConnected" | "subtitle" | "subtitleContainer" | "inlineEditRoot" | "inlineEditButton" | "actionsButton" | "paramsContainer", string>>, addStatic?: boolean) => {
    readonly classes: {
        mandatory: string;
        root: string;
        title: string;
        footerContainer: string;
        titleContainer: string;
        inputContainer: string;
        handle: string;
        headerContainer: string;
        inputsTitleContainer: string;
        outputsTitleContainer: string;
        contentContainer: string;
        inputsContainer: string;
        outputsContainer: string;
        inputGroupContainer: string;
        outputGroupContainer: string;
        outputContainer: string;
        handleConnected: string;
        subtitleContainer: string;
        subtitle: string;
        inlineEditRoot: string;
        inlineEditButton: string;
        actions: string;
        actionsButton: string;
        paramsContainer: string;
    };
    readonly css: any;
    readonly cx: (...args: any) => string;
};

declare const useClasses_9: (classesProp?: Partial<Record<"mandatory" | "root" | "title" | "empty" | "actions" | "footerContainer" | "titleContainer" | "inputContainer" | "handle" | "headerContainer" | "inputsTitleContainer" | "outputsTitleContainer" | "contentContainer" | "inputsContainer" | "outputsContainer" | "inputGroupContainer" | "outputGroupContainer" | "outputContainer" | "handleConnected" | "subtitle" | "subtitleContainer" | "inlineEditRoot" | "inlineEditButton" | "actionsButton" | "paramsContainer", string>>, addStatic?: boolean) => {
    readonly classes: {
        mandatory: string;
        root: string;
        title: string;
        actions: string;
        footerContainer: string;
        titleContainer: string;
        inputContainer: string;
        handle: string;
        headerContainer: string;
        inputsTitleContainer: string;
        outputsTitleContainer: string;
        contentContainer: string;
        inputsContainer: string;
        outputsContainer: string;
        inputGroupContainer: string;
        outputGroupContainer: string;
        outputContainer: string;
        handleConnected: string;
        subtitle: string;
        subtitleContainer: string;
        inlineEditRoot: string;
        inlineEditButton: string;
        actionsButton: string;
        paramsContainer: string;
        empty: string;
    };
    readonly css: any;
    readonly cx: (...args: any) => string;
};

export declare const useFlowContext: () => HvFlowContextValue<string>;

/** Retrieves the nodes connected to the inputs of the node */
export declare function useFlowInputNodes<T = any>(id?: string): Node_2<T>[];

/** Retrieves the React Flow instance */
export declare function useFlowInstance<NodeData = any, EdgeData = any>(): HvFlowInstance<NodeData, EdgeData>;

/** Retrieves the node instance */
export declare function useFlowNode<T extends Node_2 = Node_2>(id?: string): T | undefined;

/** Offers both input and output edges of the node */
export declare function useFlowNodeEdges(id?: string): Edge[];

/** Provides the input edges connected to the node */
export declare function useFlowNodeInputEdges(id?: string): Edge[];

export declare function useFlowNodeIntersections<NodeData = any>(id?: string): Node_2<NodeData>[];

export declare function useFlowNodeMeta(id?: string): HvFlowNodeMeta_2;

/** Gives the output edges connected from the node */
export declare function useFlowNodeOutputEdges(id?: string): Edge[];

/** Gets the parent nodes of a specified node (nodes that have an output connected to one of the inputs of the node) */
export declare function useFlowNodeParents(id?: string): Node_2[];

/** Utilities to manipulate a node in the flow */
export declare function useFlowNodeUtils<NodeData = any>(id?: string): {
    setNodeData: (setNewData: (newData?: NodeData) => NodeData) => void;
    setNodeParent: (node?: Node_2<any>, extent?: "parent" | CoordinateExtent) => void;
};

/** Retrieves the nodes connected to the outputs of the node */
export declare function useFlowOutputNodes<T = any>(id?: string): Node_2<T>[];

export declare function useHvNode(props: HvUseNodeParams): {
    id: string;
    title: string | undefined;
    icon: ReactNode;
    color: string | undefined;
    iconColor: string | undefined;
    subtitle: any;
    inputs: (HvFlowNodeInput | HvFlowNodeOutput | {
        inputs: HvFlowNodeInput[];
        label: React.ReactNode;
    } | {
        outputs: HvFlowNodeOutput[];
        label: React.ReactNode;
    })[] | undefined;
    inputEdges: Edge[];
    outputs: (HvFlowNodeInput | HvFlowNodeOutput | {
        inputs: HvFlowNodeInput[];
        label: React.ReactNode;
    } | {
        outputs: HvFlowNodeOutput[];
        label: React.ReactNode;
    })[] | undefined;
    outputEdges: Edge[];
    node: Node_2 | undefined;
    nodeActions: HvFlowNodeAction[];
    showActions: boolean;
    intersections: Node_2<any>[];
    getNodeToolbarProps: () => {
        defaultChecked?: boolean | undefined;
        defaultValue?: string | number | readonly string[] | undefined;
        suppressContentEditableWarning?: boolean | undefined;
        suppressHydrationWarning?: boolean | undefined;
        accessKey?: string | undefined;
        autoCapitalize?: "off" | "none" | "on" | "sentences" | "words" | "characters" | undefined | (string & {});
        autoFocus?: boolean | undefined;
        className?: string | undefined;
        contentEditable?: (boolean | "false" | "true") | "inherit" | "plaintext-only" | undefined;
        contextMenu?: string | undefined;
        dir?: string | undefined;
        draggable?: (boolean | "false" | "true") | undefined;
        enterKeyHint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined;
        hidden?: boolean | undefined;
        id?: string | undefined;
        lang?: string | undefined;
        nonce?: string | undefined;
        slot?: string | undefined;
        spellCheck?: (boolean | "false" | "true") | undefined;
        style?: CSSProperties | undefined;
        tabIndex?: number | undefined;
        title?: string | undefined;
        translate?: "yes" | "no" | undefined;
        radioGroup?: string | undefined;
        role?: AriaRole | undefined;
        about?: string | undefined;
        content?: string | undefined;
        datatype?: string | undefined;
        inlist?: any;
        prefix?: string | undefined;
        property?: string | undefined;
        rel?: string | undefined;
        resource?: string | undefined;
        rev?: string | undefined;
        typeof?: string | undefined;
        vocab?: string | undefined;
        autoCorrect?: string | undefined;
        autoSave?: string | undefined;
        color?: string | undefined;
        itemProp?: string | undefined;
        itemScope?: boolean | undefined;
        itemType?: string | undefined;
        itemID?: string | undefined;
        itemRef?: string | undefined;
        results?: number | undefined;
        security?: string | undefined;
        unselectable?: "on" | "off" | undefined;
        inputMode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined;
        is?: string | undefined;
        exportparts?: string | undefined;
        part?: string | undefined;
        children?: ReactNode | Iterable<ReactNode>;
        "aria-activedescendant"?: string | undefined;
        "aria-atomic"?: (boolean | "false" | "true") | undefined;
        "aria-autocomplete"?: "none" | "inline" | "list" | "both" | undefined;
        "aria-braillelabel"?: string | undefined;
        "aria-brailleroledescription"?: string | undefined;
        "aria-busy"?: (boolean | "false" | "true") | undefined;
        "aria-checked"?: boolean | "false" | "mixed" | "true" | undefined;
        "aria-colcount"?: number | undefined;
        "aria-colindex"?: number | undefined;
        "aria-colindextext"?: string | undefined;
        "aria-colspan"?: number | undefined;
        "aria-controls"?: string | undefined;
        "aria-current"?: boolean | "false" | "true" | "page" | "step" | "location" | "date" | "time" | undefined;
        "aria-describedby"?: string | undefined;
        "aria-description"?: string | undefined;
        "aria-details"?: string | undefined;
        "aria-disabled"?: (boolean | "false" | "true") | undefined;
        "aria-dropeffect"?: "none" | "copy" | "execute" | "link" | "move" | "popup" | undefined;
        "aria-errormessage"?: string | undefined;
        "aria-expanded"?: (boolean | "false" | "true") | undefined;
        "aria-flowto"?: string | undefined;
        "aria-grabbed"?: (boolean | "false" | "true") | undefined;
        "aria-haspopup"?: boolean | "false" | "true" | "menu" | "listbox" | "tree" | "grid" | "dialog" | undefined;
        "aria-hidden"?: (boolean | "false" | "true") | undefined;
        "aria-invalid"?: boolean | "false" | "true" | "grammar" | "spelling" | undefined;
        "aria-keyshortcuts"?: string | undefined;
        "aria-label"?: string | undefined;
        "aria-labelledby"?: string | undefined;
        "aria-level"?: number | undefined;
        "aria-live"?: "off" | "assertive" | "polite" | undefined;
        "aria-modal"?: (boolean | "false" | "true") | undefined;
        "aria-multiline"?: (boolean | "false" | "true") | undefined;
        "aria-multiselectable"?: (boolean | "false" | "true") | undefined;
        "aria-orientation"?: "horizontal" | "vertical" | undefined;
        "aria-owns"?: string | undefined;
        "aria-placeholder"?: string | undefined;
        "aria-posinset"?: number | undefined;
        "aria-pressed"?: boolean | "false" | "mixed" | "true" | undefined;
        "aria-readonly"?: (boolean | "false" | "true") | undefined;
        "aria-relevant"?: "additions" | "additions removals" | "additions text" | "all" | "removals" | "removals additions" | "removals text" | "text" | "text additions" | "text removals" | undefined;
        "aria-required"?: (boolean | "false" | "true") | undefined;
        "aria-roledescription"?: string | undefined;
        "aria-rowcount"?: number | undefined;
        "aria-rowindex"?: number | undefined;
        "aria-rowindextext"?: string | undefined;
        "aria-rowspan"?: number | undefined;
        "aria-selected"?: (boolean | "false" | "true") | undefined;
        "aria-setsize"?: number | undefined;
        "aria-sort"?: "none" | "ascending" | "descending" | "other" | undefined;
        "aria-valuemax"?: number | undefined;
        "aria-valuemin"?: number | undefined;
        "aria-valuenow"?: number | undefined;
        "aria-valuetext"?: string | undefined;
        dangerouslySetInnerHTML?: {
            __html: string | TrustedHTML;
        } | undefined;
        onCopy?: ClipboardEventHandler<HTMLDivElement> | undefined;
        onCopyCapture?: ClipboardEventHandler<HTMLDivElement> | undefined;
        onCut?: ClipboardEventHandler<HTMLDivElement> | undefined;
        onCutCapture?: ClipboardEventHandler<HTMLDivElement> | undefined;
        onPaste?: ClipboardEventHandler<HTMLDivElement> | undefined;
        onPasteCapture?: ClipboardEventHandler<HTMLDivElement> | undefined;
        onCompositionEnd?: CompositionEventHandler<HTMLDivElement> | undefined;
        onCompositionEndCapture?: CompositionEventHandler<HTMLDivElement> | undefined;
        onCompositionStart?: CompositionEventHandler<HTMLDivElement> | undefined;
        onCompositionStartCapture?: CompositionEventHandler<HTMLDivElement> | undefined;
        onCompositionUpdate?: CompositionEventHandler<HTMLDivElement> | undefined;
        onCompositionUpdateCapture?: CompositionEventHandler<HTMLDivElement> | undefined;
        onFocus?: FocusEventHandler<HTMLDivElement> | undefined;
        onFocusCapture?: FocusEventHandler<HTMLDivElement> | undefined;
        onBlur?: FocusEventHandler<HTMLDivElement> | undefined;
        onBlurCapture?: FocusEventHandler<HTMLDivElement> | undefined;
        onChange?: FormEventHandler<HTMLDivElement> | undefined;
        onChangeCapture?: FormEventHandler<HTMLDivElement> | undefined;
        onBeforeInput?: InputEventHandler<HTMLDivElement> | undefined;
        onBeforeInputCapture?: FormEventHandler<HTMLDivElement> | undefined;
        onInput?: FormEventHandler<HTMLDivElement> | undefined;
        onInputCapture?: FormEventHandler<HTMLDivElement> | undefined;
        onReset?: FormEventHandler<HTMLDivElement> | undefined;
        onResetCapture?: FormEventHandler<HTMLDivElement> | undefined;
        onSubmit?: FormEventHandler<HTMLDivElement> | undefined;
        onSubmitCapture?: FormEventHandler<HTMLDivElement> | undefined;
        onInvalid?: FormEventHandler<HTMLDivElement> | undefined;
        onInvalidCapture?: FormEventHandler<HTMLDivElement> | undefined;
        onLoad?: ReactEventHandler<HTMLDivElement> | undefined;
        onLoadCapture?: ReactEventHandler<HTMLDivElement> | undefined;
        onError?: ReactEventHandler<HTMLDivElement> | undefined;
        onErrorCapture?: ReactEventHandler<HTMLDivElement> | undefined;
        onKeyDown?: KeyboardEventHandler<HTMLDivElement> | undefined;
        onKeyDownCapture?: KeyboardEventHandler<HTMLDivElement> | undefined;
        onKeyPress?: KeyboardEventHandler<HTMLDivElement> | undefined;
        onKeyPressCapture?: KeyboardEventHandler<HTMLDivElement> | undefined;
        onKeyUp?: KeyboardEventHandler<HTMLDivElement> | undefined;
        onKeyUpCapture?: KeyboardEventHandler<HTMLDivElement> | undefined;
        onAbort?: ReactEventHandler<HTMLDivElement> | undefined;
        onAbortCapture?: ReactEventHandler<HTMLDivElement> | undefined;
        onCanPlay?: ReactEventHandler<HTMLDivElement> | undefined;
        onCanPlayCapture?: ReactEventHandler<HTMLDivElement> | undefined;
        onCanPlayThrough?: ReactEventHandler<HTMLDivElement> | undefined;
        onCanPlayThroughCapture?: ReactEventHandler<HTMLDivElement> | undefined;
        onDurationChange?: ReactEventHandler<HTMLDivElement> | undefined;
        onDurationChangeCapture?: ReactEventHandler<HTMLDivElement> | undefined;
        onEmptied?: ReactEventHandler<HTMLDivElement> | undefined;
        onEmptiedCapture?: ReactEventHandler<HTMLDivElement> | undefined;
        onEncrypted?: ReactEventHandler<HTMLDivElement> | undefined;
        onEncryptedCapture?: ReactEventHandler<HTMLDivElement> | undefined;
        onEnded?: ReactEventHandler<HTMLDivElement> | undefined;
        onEndedCapture?: ReactEventHandler<HTMLDivElement> | undefined;
        onLoadedData?: ReactEventHandler<HTMLDivElement> | undefined;
        onLoadedDataCapture?: ReactEventHandler<HTMLDivElement> | undefined;
        onLoadedMetadata?: ReactEventHandler<HTMLDivElement> | undefined;
        onLoadedMetadataCapture?: ReactEventHandler<HTMLDivElement> | undefined;
        onLoadStart?: ReactEventHandler<HTMLDivElement> | undefined;
        onLoadStartCapture?: ReactEventHandler<HTMLDivElement> | undefined;
        onPause?: ReactEventHandler<HTMLDivElement> | undefined;
        onPauseCapture?: ReactEventHandler<HTMLDivElement> | undefined;
        onPlay?: ReactEventHandler<HTMLDivElement> | undefined;
        onPlayCapture?: ReactEventHandler<HTMLDivElement> | undefined;
        onPlaying?: ReactEventHandler<HTMLDivElement> | undefined;
        onPlayingCapture?: ReactEventHandler<HTMLDivElement> | undefined;
        onProgress?: ReactEventHandler<HTMLDivElement> | undefined;
        onProgressCapture?: ReactEventHandler<HTMLDivElement> | undefined;
        onRateChange?: ReactEventHandler<HTMLDivElement> | undefined;
        onRateChangeCapture?: ReactEventHandler<HTMLDivElement> | undefined;
        onSeeked?: ReactEventHandler<HTMLDivElement> | undefined;
        onSeekedCapture?: ReactEventHandler<HTMLDivElement> | undefined;
        onSeeking?: ReactEventHandler<HTMLDivElement> | undefined;
        onSeekingCapture?: ReactEventHandler<HTMLDivElement> | undefined;
        onStalled?: ReactEventHandler<HTMLDivElement> | undefined;
        onStalledCapture?: ReactEventHandler<HTMLDivElement> | undefined;
        onSuspend?: ReactEventHandler<HTMLDivElement> | undefined;
        onSuspendCapture?: ReactEventHandler<HTMLDivElement> | undefined;
        onTimeUpdate?: ReactEventHandler<HTMLDivElement> | undefined;
        onTimeUpdateCapture?: ReactEventHandler<HTMLDivElement> | undefined;
        onVolumeChange?: ReactEventHandler<HTMLDivElement> | undefined;
        onVolumeChangeCapture?: ReactEventHandler<HTMLDivElement> | undefined;
        onWaiting?: ReactEventHandler<HTMLDivElement> | undefined;
        onWaitingCapture?: ReactEventHandler<HTMLDivElement> | undefined;
        onAuxClick?: MouseEventHandler<HTMLDivElement> | undefined;
        onAuxClickCapture?: MouseEventHandler<HTMLDivElement> | undefined;
        onClick?: MouseEventHandler<HTMLDivElement> | undefined;
        onClickCapture?: MouseEventHandler<HTMLDivElement> | undefined;
        onContextMenu?: MouseEventHandler<HTMLDivElement> | undefined;
        onContextMenuCapture?: MouseEventHandler<HTMLDivElement> | undefined;
        onDoubleClick?: MouseEventHandler<HTMLDivElement> | undefined;
        onDoubleClickCapture?: MouseEventHandler<HTMLDivElement> | undefined;
        onDrag?: DragEventHandler<HTMLDivElement> | undefined;
        onDragCapture?: DragEventHandler<HTMLDivElement> | undefined;
        onDragEnd?: DragEventHandler<HTMLDivElement> | undefined;
        onDragEndCapture?: DragEventHandler<HTMLDivElement> | undefined;
        onDragEnter?: DragEventHandler<HTMLDivElement> | undefined;
        onDragEnterCapture?: DragEventHandler<HTMLDivElement> | undefined;
        onDragExit?: DragEventHandler<HTMLDivElement> | undefined;
        onDragExitCapture?: DragEventHandler<HTMLDivElement> | undefined;
        onDragLeave?: DragEventHandler<HTMLDivElement> | undefined;
        onDragLeaveCapture?: DragEventHandler<HTMLDivElement> | undefined;
        onDragOver?: DragEventHandler<HTMLDivElement> | undefined;
        onDragOverCapture?: DragEventHandler<HTMLDivElement> | undefined;
        onDragStart?: DragEventHandler<HTMLDivElement> | undefined;
        onDragStartCapture?: DragEventHandler<HTMLDivElement> | undefined;
        onDrop?: DragEventHandler<HTMLDivElement> | undefined;
        onDropCapture?: DragEventHandler<HTMLDivElement> | undefined;
        onMouseDown?: MouseEventHandler<HTMLDivElement> | undefined;
        onMouseDownCapture?: MouseEventHandler<HTMLDivElement> | undefined;
        onMouseEnter?: MouseEventHandler<HTMLDivElement> | undefined;
        onMouseLeave?: MouseEventHandler<HTMLDivElement> | undefined;
        onMouseMove?: MouseEventHandler<HTMLDivElement> | undefined;
        onMouseMoveCapture?: MouseEventHandler<HTMLDivElement> | undefined;
        onMouseOut?: MouseEventHandler<HTMLDivElement> | undefined;
        onMouseOutCapture?: MouseEventHandler<HTMLDivElement> | undefined;
        onMouseOver?: MouseEventHandler<HTMLDivElement> | undefined;
        onMouseOverCapture?: MouseEventHandler<HTMLDivElement> | undefined;
        onMouseUp?: MouseEventHandler<HTMLDivElement> | undefined;
        onMouseUpCapture?: MouseEventHandler<HTMLDivElement> | undefined;
        onSelect?: ReactEventHandler<HTMLDivElement> | undefined;
        onSelectCapture?: ReactEventHandler<HTMLDivElement> | undefined;
        onTouchCancel?: TouchEventHandler<HTMLDivElement> | undefined;
        onTouchCancelCapture?: TouchEventHandler<HTMLDivElement> | undefined;
        onTouchEnd?: TouchEventHandler<HTMLDivElement> | undefined;
        onTouchEndCapture?: TouchEventHandler<HTMLDivElement> | undefined;
        onTouchMove?: TouchEventHandler<HTMLDivElement> | undefined;
        onTouchMoveCapture?: TouchEventHandler<HTMLDivElement> | undefined;
        onTouchStart?: TouchEventHandler<HTMLDivElement> | undefined;
        onTouchStartCapture?: TouchEventHandler<HTMLDivElement> | undefined;
        onPointerDown?: PointerEventHandler<HTMLDivElement> | undefined;
        onPointerDownCapture?: PointerEventHandler<HTMLDivElement> | undefined;
        onPointerMove?: PointerEventHandler<HTMLDivElement> | undefined;
        onPointerMoveCapture?: PointerEventHandler<HTMLDivElement> | undefined;
        onPointerUp?: PointerEventHandler<HTMLDivElement> | undefined;
        onPointerUpCapture?: PointerEventHandler<HTMLDivElement> | undefined;
        onPointerCancel?: PointerEventHandler<HTMLDivElement> | undefined;
        onPointerCancelCapture?: PointerEventHandler<HTMLDivElement> | undefined;
        onPointerEnter?: PointerEventHandler<HTMLDivElement> | undefined;
        onPointerLeave?: PointerEventHandler<HTMLDivElement> | undefined;
        onPointerOver?: PointerEventHandler<HTMLDivElement> | undefined;
        onPointerOverCapture?: PointerEventHandler<HTMLDivElement> | undefined;
        onPointerOut?: PointerEventHandler<HTMLDivElement> | undefined;
        onPointerOutCapture?: PointerEventHandler<HTMLDivElement> | undefined;
        onGotPointerCapture?: PointerEventHandler<HTMLDivElement> | undefined;
        onGotPointerCaptureCapture?: PointerEventHandler<HTMLDivElement> | undefined;
        onLostPointerCapture?: PointerEventHandler<HTMLDivElement> | undefined;
        onLostPointerCaptureCapture?: PointerEventHandler<HTMLDivElement> | undefined;
        onScroll?: UIEventHandler<HTMLDivElement> | undefined;
        onScrollCapture?: UIEventHandler<HTMLDivElement> | undefined;
        onWheel?: WheelEventHandler<HTMLDivElement> | undefined;
        onWheelCapture?: WheelEventHandler<HTMLDivElement> | undefined;
        onAnimationStart?: AnimationEventHandler<HTMLDivElement> | undefined;
        onAnimationStartCapture?: AnimationEventHandler<HTMLDivElement> | undefined;
        onAnimationEnd?: AnimationEventHandler<HTMLDivElement> | undefined;
        onAnimationEndCapture?: AnimationEventHandler<HTMLDivElement> | undefined;
        onAnimationIteration?: AnimationEventHandler<HTMLDivElement> | undefined;
        onAnimationIterationCapture?: AnimationEventHandler<HTMLDivElement> | undefined;
        onTransitionEnd?: TransitionEventHandler<HTMLDivElement> | undefined;
        onTransitionEndCapture?: TransitionEventHandler<HTMLDivElement> | undefined;
        nodeId?: string | string[];
        isVisible: boolean;
        position?: Position;
        offset: number;
        align?: Align;
    };
    toggleShowActions: () => void;
    handleDefaultAction: (action: HvFlowNodeAction) => void;
    setNodeData: (setNewData: (newData?: any) => any) => void;
    setNodeParent: (node?: Node_2<any>, extent?: "parent" | CoordinateExtent) => void;
};

export declare function useNodeMetaRegistry(): {
    registerNode: (id: string, nodeInfo: HvFlowNodeMeta) => void;
    unregisterNode: (id: string) => void;
    registry: Record<string, HvFlowNodeMeta>;
};

export declare const wizardActionsClasses: {
    actionsContainer: string;
    buttonWidth: string;
    buttonsContainer: string;
    buttonSpacing: string;
};

export declare const wizardClasses: {
    root: string;
};

export declare const wizardContainerClasses: {
    root: string;
    paper: string;
    closeButton: string;
};

export declare const wizardContentClasses: {
    contentContainer: string;
    fixedHeight: string;
    summaryRef: string;
    summarySticky: string;
    summaryContainer: string;
};

export declare const wizardTitleClasses: {
    root: string;
    headerContainer: string;
    messageContainer: string;
    titleContainer: string;
    summaryButton: string;
    buttonWidth: string;
    rootSummaryButton: string;
    stepContainer: string;
};

export { }
