import { ContentModel } from './ContentModel';
import { DecoratorModel } from './DecoratorModel';
import { LayoutModel } from './LayoutModel';
import { SelectionModel } from './SelectionModel';
import { DecoratedEdge, DecoratedNode, GraphCommand } from './types';
/** The GraphModel is a declarative, immutable definition of graph state
 
The GraphModel defines:
- Nodes/edges (ContentModel)
    - No requirement for ontology, typing etc
    - Attributes
- Decoration (DecoratorModel)
    - May define custom node/edge Decorators based on any property on the node/edge
- Selection (SelectionModel)
    - Multi-select
- Graph layout (LayoutModel)
    - Force Layout / Cola JS
    - Circle
    - Grid
    - Custom (supplying a function)
- CommandQueue
    - Trigger behaviour from outside the GraphModel/React component
    - Current commands: zoom in/out, relayout, refit
 */
export declare class GraphModel {
    private readonly contentModel;
    private readonly selectionModel;
    private readonly decoratorModel;
    private readonly layoutModel;
    private readonly commandQueue;
    constructor(contentModel: ContentModel, options?: {
        selectionModel?: SelectionModel;
        decoratorModel?: DecoratorModel;
        layoutModel?: LayoutModel;
        commandQueue?: GraphCommand[];
    });
    static applyContent(graphModel: GraphModel, contentModel: ContentModel): GraphModel;
    static applySelection(graphModel: GraphModel, selectionModel: SelectionModel): GraphModel;
    static applyLayout(graphModel: GraphModel, layoutModel: LayoutModel): GraphModel;
    static applyDecoration(graphModel: GraphModel, decoratorModel: DecoratorModel): GraphModel;
    static createEmpty(): GraphModel;
    static createWithContent(contentModel: ContentModel): GraphModel;
    getCurrentContent(): ContentModel;
    getDecorators(): DecoratorModel;
    get nodes(): DecoratedNode[];
    get edges(): DecoratedEdge[];
    get selectedNodes(): DecoratedNode[];
    get selectedEdges(): DecoratedEdge[];
    getNode(id: string): DecoratedNode | undefined;
    getEdge(id: string): DecoratedEdge | undefined;
    getCurrentLayout(): LayoutModel;
    getSelection(): SelectionModel;
    getCommands(): GraphCommand[];
    pushCommand(command: GraphCommand): GraphModel;
    clearCommands(): GraphModel;
    private getOptions;
    private static reconcileSelection;
}
