import type { HashMap, HashSet } from '@rimbu/hashed';
import type { SortedMap, SortedSet } from '@rimbu/sorted';
import type { RMap, RSet } from '@rimbu/collection-types';
import type { GraphBase } from '../../common/index.mjs';
import type {
ArrowGraph,
ArrowGraphHashed,
ArrowGraphSorted,
} from '@rimbu/graph';
export interface ArrowGraphCreators {
/**
* Returns a new ArrowGraph context instance based on the given `options`.
* @typeparam UN - the upper node type for which the context can create instances
* @param options - an object containing the following properties:
* - linkMapContext: the map context to use to maintain link maps
* - linkConnectionsContext: the set context to use to maintain link connection maps
*/
createContext(options: {
linkMapContext: RMap.Context;
linkConnectionsContext: RSet.Context;
}): ArrowGraph.Context;
}
export interface ArrowGraphHashedCreators
extends GraphBase.Factory {
/**
* Returns a new ArrowValuedGraphHashed context instance based on the given `options`.
* @typeparam UN - the upper node type for which the context can create instances
* @param options - (optional) an object containing the following properties:
* - linkMapContext: (optional) the map context to use to maintain link maps
* - linkConnectionsContext: (optional) the set context to use to maintain link connections
*/
createContext(options?: {
linkMapContext?: HashMap.Context;
linkConnectionsContext?: HashSet.Context;
}): ArrowGraphHashed.Context;
/**
* Returns the default context for this type of graph.
* @typeparam UN - the upper node type that the context should accept
*/
defaultContext(): ArrowGraphHashed.Context;
}
export interface ArrowGraphSortedCreators
extends GraphBase.Factory {
/**
* Returns a new ArrowValuedGraphSorted context instance based on the given `options`.
* @typeparam UN - the upper node type for which the context can create instances
* @param options - (optional) an object containing the following properties:
* - linkMapContext: (optional) the map context to use to maintain link maps
* - linkConnectionsContext: (optional) the set context to use to maintain link connections
*/
createContext(options?: {
linkMapContext?: SortedMap.Context;
linkConnectionsContext?: SortedSet.Context;
}): ArrowGraphSorted.Context;
/**
* Returns the default context for this type of graph.
* @typeparam UN - the upper node type that the context should accept
*/
defaultContext(): ArrowGraphSorted.Context;
}