import type { CreateEvaluatorArgs, EvaluationKind, EvaluationResult, EvaluatorInterface, OptimizationDirection, TelemetryConfig } from "../types/index.js";
import type { ObjectMapping } from "../types/data.js";
/**
 * Base class for all evaluators
 */
export declare abstract class EvaluatorBase<RecordType extends Record<string, unknown>> implements EvaluatorInterface<RecordType> {
    readonly name: string;
    readonly kind: EvaluationKind;
    readonly optimizationDirection?: OptimizationDirection;
    readonly inputMapping?: ObjectMapping<RecordType>;
    readonly telemetry?: TelemetryConfig;
    constructor({ name, kind, optimizationDirection, inputMapping, telemetry, }: CreateEvaluatorArgs<RecordType>);
    abstract evaluate(_example: RecordType): Promise<EvaluationResult>;
    /**
     * Binds the input mapping to the evaluator. It makes a a copy of the evaluator and returns it.
     */
    abstract bindInputMapping(inputMapping: ObjectMapping<RecordType>): EvaluatorBase<RecordType>;
}
//# sourceMappingURL=EvaluatorBase.d.ts.map