import { ITaskRunner } from '@singularsystems/neo-core'; import { IReactionDisposer } from 'mobx'; export interface IViewModel { taskRunner: ITaskRunner; /** * initialise() is called from componentDidMount(). * For persistent views, this is only called once, not every time a user navigates to the view. */ initialise(): void | Promise; /** * dispose() is called from componentWillUnmount(). * For persistent views, dispose is never called. */ dispose(): void; registerReaction(expression: () => T, effect: (value: T) => void): IReactionDisposer; }