import React, { PropsWithChildren, ReactElement } from 'react';
import { GraphModel } from '../../graph/GraphModel';
import { DecoratedNode, GraphRenderer, GraphRendererOptions } from '../../graph/types';
export interface GraphProps<O extends GraphRendererOptions> {
    /** Pluggable GraphRender interface to create a React Component using the GraphModel  */
    renderer: GraphRenderer<O>;
    /** Declarative definition of graph state */
    model: GraphModel;
    /** Options specific to the chosen GraphRenderer */
    options: Partial<O> & {
        height: GraphRendererOptions['height'];
    };
    /** The graph model change callback */
    onModelChange: (model: GraphModel | ((model2: GraphModel) => GraphModel)) => void;
    onViewNode?: (node: DecoratedNode) => void;
}
/**
 * The Graph component renders a Graph defined by the GraphModel. How it is rendered is determined by the GraphRenderer
 *
 */
export declare const Graph: <O extends GraphRendererOptions>({ renderer, model, onModelChange, onViewNode, options, }: React.PropsWithChildren<GraphProps<O>>) => React.ReactElement<GraphProps<O>, string | React.JSXElementConstructor<any>>;
