export interface ReporterState { obj: any; path: string[]; options: any; errors: ReporterError[]; } export interface ReporterSaveState { obj: any; pathLen: number; } export declare class Reporter { _reporterState: ReporterState; constructor(options?: any); isError(obj: any): boolean; saveReporter(): ReporterSaveState; restoreReporter(data: ReporterSaveState): void; enterKey(key: string): number; exitKey(index: number): void; leaveKey(index: number, key?: string, value?: any): void; path(): string; enterObject(): any; leaveObject(prev: any): any; error(msg: string | Error | ReporterError): ReporterError; wrapResult(result: any): any; } export declare class ReporterError extends Error { path: string; constructor(path: string, msg: string); rethrow(msg: string): this; }