import { Stream } from "./Stream"; import { Cell } from "./Cell"; export declare class Operational { /** * A stream that gives the updates/steps for a {@link Cell}. *

* This is an OPERATIONAL primitive, which is not part of the main Sodium * API. It breaks the property of non-detectability of cell steps/updates. * The rule with this primitive is that you should only use it in functions * that do not allow the caller to detect the cell updates. */ static updates(c: Cell): Stream; /** * A stream that is guaranteed to fire once in the transaction where value() is invoked, giving * the current value of the cell, and thereafter behaves like {@link updates(Cell)}, * firing for each update/step of the cell's value. *

* This is an OPERATIONAL primitive, which is not part of the main Sodium * API. It breaks the property of non-detectability of cell steps/updates. * The rule with this primitive is that you should only use it in functions * that do not allow the caller to detect the cell updates. */ static value(c: Cell): Stream; /** * Push each event onto a new transaction guaranteed to come before the next externally * initiated transaction. Same as {@link split(Stream)} but it works on a single value. */ static defer(s: Stream): Stream; /** * Push each event in the list onto a newly created transaction guaranteed * to come before the next externally initiated transaction. Note that the semantics * are such that two different invocations of split() can put events into the same * new transaction, so the resulting stream's events could be simultaneous with * events output by split() or {@link defer(Stream)} invoked elsewhere in the code. */ static split(s: Stream>): Stream; }