import { NodeDefinition, NodeLike, StatelessGraphNode, StatelessNodeDefinition, StatelessNodeType } from '../../types/graph'; /** * An instance of the [[ifElse]] node. * See the [[ifElse]] documentation to find out more. */ export interface IfElseNode extends StatelessGraphNode<'ifElse', IfElseNodeProperties> { } /** * A definition of the [[ifElse]] node. * See the [[ifElse]] documentation to find out more. */ export interface IfElseNodeDefinition extends StatelessNodeDefinition<'ifElse', IfElseNodeProperties> { } export interface IfElseNodeProperties { if: NodeDefinition; then: NodeDefinition; else: NodeDefinition; } /** * The implementation of the [[ifElse]] node. * See the [[ifElse]] documentation to learn more. */ export declare const IfElseNodeType: StatelessNodeType<'ifElse', IfElseNodeProperties>; /** * Creates a new instance of an [[ifElse]] node, which allows creation of conditional expressions. You can think of it as * a `if ... else ...` statement in any programming language. This node by conditionally resolving * to `then` node when the `if` condition resolves to `true`; otherwise resolves to `else`. * The `if`, `then` and `else` nodes can be any graph nodes. * * * @example **Simple if-else** * ```ts * import muster, { ifElse, ref, set, variable } from '@dws/muster'; * * const app = muster({ * isLoggedIn: variable(false), * greeting: ifElse({ * if: ref('isLoggedIn'), * then: 'Hello, logged-in user!', * else: 'Hello, guest!', * }), * }); * * app.resolve(ref('greeting')).subscribe((res) => { * console.log(res); * }); * * console.log('Logging in'); * await app.resolve(set('isLoggedIn', true)); * * // Console output: * // Hello, guest! * // Logging in * // Hello, logged-in user! * ``` */ export declare function ifElse(definition: { if: NodeDefinition | NodeLike; then: NodeDefinition | NodeLike; else: NodeDefinition | NodeLike; }): IfElseNodeDefinition; export declare function isIfElseNodeDefinition(value: NodeDefinition): value is IfElseNodeDefinition;