import type { Operator } from "../Operator"; import type { NonPostableEvt } from "./NonPostableEvt"; import type { CtxLike } from "./CtxLike"; import type { StatefulEvt } from "./StatefulEvt"; import type { Evt } from "./Evt"; export declare type StateDiff = { prevState: T; newState: T; }; export interface StatefulReadonlyEvt extends NonPostableEvt { /** https://docs.evt.land/api/statefulevt#tostateless-ctx */ toStateless(ctx?: CtxLike): Evt; readonly state: T; /** https://docs.evt.land/api/statefulevt#evtdiff */ readonly evtDiff: NonPostableEvt>; /** https://docs.evt.land/api/statefulevt#evtchange */ readonly evtChange: StatefulReadonlyEvt; /** https://docs.evt.land/api/statefulevt#evtchangediff */ readonly evtChangeDiff: NonPostableEvt>; /** https://docs.evt.land/api/statefulevt#pipe */ pipe(): StatefulEvt; pipe(op: Operator.fλ): StatefulEvt; pipe(op: (data: T) => data is U): StatefulEvt; pipe(op: (data: T) => boolean): StatefulEvt; pipe(ctx: CtxLike): StatefulEvt; pipe(ctx: CtxLike, op: Operator.fλ): StatefulEvt; pipe(ctx: CtxLike, op: (data: T) => data is U): StatefulEvt; pipe(ctx: CtxLike, op: (data: T) => boolean): StatefulEvt; pipe(op1: Operator.fλ, op2: Operator.fλ): StatefulEvt; pipe(op1: Operator.fλ, op2: (data: B) => data is C): StatefulEvt; pipe(op1: Operator.fλ, op2: (data: B) => boolean): StatefulEvt; pipe(op1: (data: T) => data is B, op2: Operator.fλ): StatefulEvt; pipe(op1: (data: T) => boolean, op2: Operator.fλ): StatefulEvt; pipe(op1: (data: T) => data is B, op2: (data: B) => data is C): StatefulEvt; pipe(op1: (data: T) => data is B, op2: (data: B) => boolean): StatefulEvt; pipe(op1: (data: T) => boolean, op2: (data: T) => data is B): StatefulEvt; pipe(op1: (data: T) => boolean, op2: (data: T) => boolean): StatefulEvt; pipe(op1: Operator.fλ, op2: Operator.fλ, op3: Operator.fλ): StatefulEvt; pipe(op1: Operator.fλ, op2: Operator.fλ, op3: Operator.fλ, op4: Operator.fλ): StatefulEvt; pipe(op1: Operator.fλ, op2: Operator.fλ, op3: Operator.fλ, op4: Operator.fλ): StatefulEvt; pipe(op1: Operator.fλ, op2: Operator.fλ, op3: Operator.fλ, op4: Operator.fλ, op5: Operator.fλ): StatefulEvt; pipe(op1: Operator, op2: Operator): StatefulEvt; pipe(op1: Operator, op2: Operator, op3: Operator): StatefulEvt; pipe(op1: Operator, op2: Operator, op3: Operator, op4: Operator): StatefulEvt; pipe(op1: Operator, op2: Operator, op3: Operator, op4: Operator, op5: Operator): StatefulEvt; pipe(...ops: [ Operator, ...Operator[] ]): StatefulEvt; pipe(...ops: [ Operator, ...Operator[] ]): StatefulEvt; }