import { TypedEventEmitter } from '@ulixee/commons/lib/eventUtils'; import IExtractorComponents from '../interfaces/IExtractorComponents'; import IExtractorContext from '../interfaces/IExtractorContext'; import IExtractorRunOptions from '../interfaces/IExtractorRunOptions'; import IExtractorSchema, { ExtractSchemaType } from '../interfaces/IExtractorSchema'; import IObservableChange from '../interfaces/IObservableChange'; import DatastoreSchemaError from './DatastoreSchemaError'; import { IOutputClass } from './Output'; import ResultIterable from './ResultIterable'; export default class ExtractorInternal, TOptions extends IExtractorRunOptions = IExtractorRunOptions, TInput extends ExtractSchemaType = ExtractSchemaType, TOutput extends ExtractSchemaType = ExtractSchemaType> extends TypedEventEmitter<{ close: void; }> { #private; private components; readonly outputs: (TOutput & { emit(): void; })[]; readonly options: TOptions; readonly schema: TSchema; readonly Output: IOutputClass; onOutputChanges: (index: number, changes: IObservableChange[]) => any; onOutputRecord: (index: number, output: TOutput) => void; constructor(options: TOptions, components: IExtractorComponents); run(context: IExtractorContext): ResultIterable; emitPendingOutputs(): void; get isClosing(): boolean; get input(): TInput; close(closeFn?: () => Promise): Promise; validateInput(): DatastoreSchemaError; validateOutput(output: TOutput, counter: number): void; protected onOutputEmitted(index: number, output: TOutput): void; protected onNewOutput(index: number): void; protected defaultOnOutputChanges(index: number, output: TOutput, changes: IObservableChange[]): void; static fillInputWithExamples(schema: IExtractorSchema, input: Record): any; static createExampleCall(functionName: string, schema: IExtractorSchema): { formatted: string; args: Record; }; }