import { Observable } from "rxjs"; import { Auditor } from "./auditor"; import { PartialLogger } from "./logger"; import { Match } from "./match"; import { Deck, Notification, Plugin } from "./plugin"; export interface Ctor { new (...args: any[]): T; } export interface Options { [key: string]: any; } export interface Teardown { (): void; } export interface Spy { readonly auditor: Auditor; readonly tick: number; readonly version: string; debug(match: Match, ...notifications: Notification[]): Teardown; find(ctor: Ctor): T | undefined; findAll(ctor: Ctor): T[]; findAll(): Plugin[]; flush(): void; let(match: Match, select: (source: Observable) => Observable, options?: Options): Teardown; log(tagMatch: Match, notificationMatch: Match, partialLogger?: PartialLogger): Teardown; log(tagMatch: Match, partialLogger?: PartialLogger): Teardown; log(partialLogger?: PartialLogger): Teardown; pause(match: Match): Deck; plug(...plugins: Plugin[]): Teardown; show(match: Match, partialLogger?: PartialLogger): void; show(partialLogger?: PartialLogger): void; stats(partialLogger?: PartialLogger): void; teardown(): void; unplug(...plugins: Plugin[]): void; warn(logger: PartialLogger, message: any, ...args: any[]): void; warnOnce(logger: PartialLogger, message: any, ...args: any[]): void; }