import { Logger } from "@/utils/logger";
import { EvalResult, EvalConfig } from "@/types/interfaces/evals";
export interface FeedbackData extends Record<string, any> {
    evaluator: string;
    [key: string]: any;
}
export declare abstract class BaseEvaluator {
    protected config: EvalConfig;
    protected logger: Logger;
    constructor(config: EvalConfig);
    abstract evaluate(input: any, expected?: any): Promise<EvalResult[]>;
}
export declare class AutomatedEvaluator extends BaseEvaluator {
    evaluate(input: any, expected?: any): Promise<EvalResult[]>;
    private evaluateMetric;
    private evaluateResponseTime;
    private evaluateTokenUsage;
    private evaluateErrorRate;
}
export declare class HumanEvaluator extends BaseEvaluator {
    evaluate(input: any, feedback: FeedbackData): Promise<EvalResult[]>;
}
export declare class CustomEvaluator extends BaseEvaluator {
    private customMetrics;
    constructor(config: EvalConfig);
    registerMetric(name: string, evaluator: (input: any, expected?: any) => Promise<number>): void;
    evaluate(input: any, expected?: any): Promise<EvalResult[]>;
}
