import { Action } from '@lib/contracts/action'; import { Location } from '@lib/contracts/location'; import { Observable } from 'rxjs/Observable'; export interface Traceable { state$(location?: Location, ...rest: string[]): Observable; snapshot(location?: Location, ...rest: string[]): S | STATE; act(action: ACTIONS): void; action$(): Observable; start(): void; stop(): void; }