import { GraphAction, GraphNode, NodeDefinition, NodeDependency, StatelessGraphNode, StatelessNodeDefinition, StatelessNodeType } from '../../types/graph'; /** * An instance of the [[resolve]] node. * See the [[resolve]] documentation to find out more. */ export interface ResolveNode extends StatelessGraphNode<'resolve', ResolveNodeProperties> { } /** * A definition of the [[resolve]] node. * See the [[resolve]] documentation to find out more. */ export interface ResolveNodeDefinition extends StatelessNodeDefinition<'resolve', ResolveNodeProperties> { } export interface ResolveNodeProperties { dependencies: Array; combine: (values: Array) => GraphNode | GraphAction | NodeDefinition; } /** * The implementation of the [[resolve]] node. * See the [[resolve]] documentation to learn more. */ export declare const ResolveNodeType: StatelessNodeType<'resolve', ResolveNodeProperties>; /** * Creates a new instance of a [[resolve]] node, which is useful when you need to change the resolution scope or when * the default end condition must be changed. The [[resolve]] works in the same way as the * [[computed]] but allows for more fine-grained control over the scopes and dependencies. * See the [[NodeDependency]] interface to find out more about available properties. * * The node is mainly used as part of the implementation of other Muster graph nodes. Examples of graph * nodes that use the [[resolve]]: * - [[context]] * - [[extend]] * - [[set]] * - and many more * * Using this node outside a [[NodeDefinition]] implementation is hard because the * [[ResolverScope]] needed to declare dependencies is easily available outside the * Muster implementation. * * See the above-mentioned graph nodes to learn how to use the [[resolve]]. */ export declare function resolve(dependencies: ResolveNodeProperties['dependencies'], combine: ResolveNodeProperties['combine']): ResolveNodeDefinition; export declare function isResolveNodeDefinition(value: NodeDefinition): value is ResolveNodeDefinition;