import { ComputedRef, Ref } from 'vue';
import { Reactive } from '../common/common';
import { Configs } from '../common/configs';
import { Edges, Layouts, Nodes, Paths, UserLayouts } from '../common/types';
import { MarkerState } from './marker';
import * as NodeModel from "../models/node";
import * as EdgeModel from "../models/edge";
import * as PathModel from "../models/path";
export type { EdgeGroupStates } from '../models/edge';
interface States {
    nodeStates: NodeModel.NodeStates;
    edgeStates: EdgeModel.EdgeStates;
    edgeGroupStates: EdgeModel.EdgeGroupStates;
    summarizedEdgeStates: EdgeModel.SummarizedEdgeStates;
    pathStates: PathModel.PathStates;
    nodeZOrderedList: ComputedRef<NodeModel.NodeState[]>;
    edgeZOrderedList: ComputedRef<EdgeModel.EdgeEntry[]>;
    pathZOrderedList: ComputedRef<PathModel.PathState[]>;
    layouts: Layouts;
}
export type ReadonlyStates = Readonly<States>;
interface InputObjects<T> {
    objects: Ref<T>;
    selected: Reactive<Set<string>>;
    hovered: Reactive<Set<string>>;
}
export declare function makeStateInput<T>(objects: Ref<T>, selected: Reactive<Set<string>>, hovered: Reactive<Set<string>>): {
    objects: Ref<T, T>;
    selected: Reactive<Set<string>>;
    hovered: Reactive<Set<string>>;
};
export declare function provideStates(nodes: InputObjects<Nodes>, edges: InputObjects<Edges>, paths: InputObjects<Paths>, configs: Readonly<Configs>, layouts: Reactive<Layouts>, readonlyLayouts: Readonly<UserLayouts>, makerState: MarkerState, scale: ComputedRef<number>): States;
export declare function isSummarizedEdges(item: EdgeModel.EdgeItem): item is EdgeModel.SummarizedEdgeItem;
export declare function useStates(): ReadonlyStates;
