import { NodeDefinition, NodeLike, StatelessGraphNode, StatelessNodeDefinition, StatelessNodeType } from '../../types/graph'; /** * An instance of the [[log]] node. * See the [[log]] documentation to find out more. */ export interface LogNode extends StatelessGraphNode<'log', LogNodeProperties> { } /** * A definition of the [[log]] node. * See the [[log]] documentation to find out more. */ export interface LogNodeDefinition extends StatelessNodeDefinition<'log', LogNodeProperties> { } export interface LogNodeProperties { target: NodeDefinition; } /** * The implementation of the [[log]]. * See the [[log]] documentation to learn more. */ export declare const LogNodeType: StatelessNodeType<'log', LogNodeProperties>; /** * Creates a new instance of a [[log]] node, which is a type of a [[NodeDefinition]] used for logging a value of a * target node every time it emits a new value. * * @example **Log [[computed]] value** * ```js * import muster, { computed, log, ref, set, variable } from '@dws/muster'; * * const app = muster({ * balance: variable(500), * bet: variable(100), * canBet: log( * computed( * [ref('balance'), ref('bet')], * (balance, bet) => balance >= bet, * ), * ), * }); * * // Just subscribe, no need to log anything as LogNode will handle that * app.resolve(ref('canBet')).subscribe((canBet) => {}); * * await app.resolve(set('bet', 510)); * * await app.resolve(set('bet', 30)); * * // Console output: * // { input: <>, output: value(true) } * // { input: <>, output: value(false) } * // { input: <>, output: value(true) } * ``` */ export declare function log(target: NodeLike | NodeDefinition): LogNodeDefinition; export declare function isLogNodeDefinition(value: NodeDefinition): value is LogNodeDefinition;