import { BaseControllerClass, ModuleClass, ModuleDefinition, Sequence, } from '../' type Action = (context: { props: P }) => T export interface SnapshotTest { mutate: (method: string, path: string, value: any) => SnapshotTest mock: (path: string, value: any) => SnapshotTest mockResolvedPromise: (path: string, value: any) => SnapshotTest mockRejectedPromise: (path: string, value: any) => SnapshotTest run: (sequence: string, payload: {}) => Promise } export function Snapshot(module: ModuleDefinition): SnapshotTest export interface RunActionResult { controller: BaseControllerClass props: P state: any output: T } interface RunSequenceResult0 { '0': RunActionResult } interface RunSequenceResult1 { '0': RunActionResult '1': RunActionResult } interface RunSequenceResult2 { '0': RunActionResult '1': RunActionResult '2': RunActionResult } export function runAction

( action: Action | T>, fixtures?: { props: P & any } & any ): Promise> export function runCompute(computed: T, fixtures?: any): T export function runSequence( sequence: [Action | T0>], fixtures?: { props: P & any } & any, options?: any ): Promise> export function runSequence( sequence: [Action | T0>, Action | T1>], fixtures?: { props: P & any } & any, options?: any ): Promise> export function runSequence( sequence: [ Action | T0>, Action | T1>, Action | T2>, ], fixtures?: { props: P & any } & any, options?: any ): Promise> export function runSequence( sequence: Sequence, fixtures?: any, options?: any ): Promise interface CerebralTestType { controller: BaseControllerClass runSequence(sequence: Sequence | string, props?: any): Promise setState(path: string, value: any): void getState(path: string): any } export function CerebralTest( rootModule: ModuleClass | ModuleDefinition, options?: any ): CerebralTestType