import { ObjectType, RootSchema, Schema } from '../schema'; import { Informer, Namespace, PrintReporter, PropertyResult, TrackReport } from './'; import { AnalyzeReport } from './analyze-report'; export type AnalyzeParams = { rootSchema: RootSchema; identifierPropertyName: Namespace | undefined; printReporter: PrintReporter; filterProperties: (properties: PropertyResult[]) => PropertyResult[]; }; export declare class Analyze { #private; objectValidatorCount: number; propertyValidatorCount: number; protected readonly rootSchema: RootSchema; protected readonly mainSchema: ObjectType; protected readonly printReporter: PrintReporter; protected readonly startAnalyzeTime: number; protected trackDuration: number; constructor({ printReporter, filterProperties, rootSchema, identifierPropertyName }: AnalyzeParams); /** * End Analyze and print the report */ endAndPrint(): Promise; /** * End Analyze */ end(): AnalyzeReport; /** * Track the data * @param input */ trackAsync(input: T | null | undefined): Promise; /** * Track the data and print the report * @param input */ trackAndPrint(input: T | null | undefined): void; /** * Track the data * @param input */ track(input: T | null | undefined): TrackReport; /** * Get the number of tracks */ get trackCount(): number; protected createTrackReport(input: T | undefined, propertyResults: PropertyResult[]): TrackReport; protected validateInput(input: T | undefined): PropertyResult[]; } export declare class AnalyzeAndInpect extends Analyze { #private; readonly infoValues: boolean; constructor({ infoValues, ...options }: AnalyzeParams & { infoValues?: boolean; }); /** * Add a reporter * @param reporter */ report(reporter: (propertiesResult: PropertyResult[]) => void): void; /** * Add an informer * @param informer */ inform(informer: (informers: Informer[]) => void): void; end(): AnalyzeReport; }