/**
 * @file Custom Scorer Utilities
 * Helper functions for creating custom scorers
 */
import type { JsonObject } from "../../types/common.js";
import type { ScorerCategory, ScorerConfig, ScorerInput, ScorerMetadata, ScorerType } from "../../types/scorerTypes.js";
import { BaseScorer } from "./baseScorer.js";
/**
 * Function scorer - a simple function-based scorer
 */
export type ScorerFunction = (input: ScorerInput) => Promise<{
    score: number;
    reasoning: string;
    metadata?: JsonObject;
}>;
/**
 * Create scorer metadata with defaults
 */
export declare function createScorerMetadata(id: string, name: string, options?: {
    description?: string;
    type?: ScorerType;
    category?: ScorerCategory;
    version?: string;
    requiredInputs?: (keyof ScorerInput)[];
    optionalInputs?: (keyof ScorerInput)[];
    defaultConfig?: ScorerConfig;
}): ScorerMetadata;
/**
 * Create a simple function-based scorer
 */
export declare function createFunctionScorer(id: string, name: string, scorerFn: ScorerFunction, options?: {
    description?: string;
    category?: ScorerCategory;
    type?: ScorerType;
    version?: string;
    requiredInputs?: (keyof ScorerInput)[];
    optionalInputs?: (keyof ScorerInput)[];
    config?: ScorerConfig;
}): BaseScorer;
/**
 * Create a regex-based scorer
 */
export declare function createRegexScorer(id: string, name: string, options: {
    pattern: string | RegExp;
    flags?: string;
    shouldMatch?: boolean;
    description?: string;
    config?: ScorerConfig;
}): BaseScorer;
/**
 * Create a keyword presence scorer
 */
export declare function createKeywordScorer(id: string, name: string, options: {
    requiredKeywords?: string[];
    forbiddenKeywords?: string[];
    caseInsensitive?: boolean;
    description?: string;
    config?: ScorerConfig;
}): BaseScorer;
/**
 * Create a length-based scorer
 */
export declare function createSimpleLengthScorer(id: string, name: string, options: {
    minWords?: number;
    maxWords?: number;
    minChars?: number;
    maxChars?: number;
    description?: string;
    config?: ScorerConfig;
}): BaseScorer;
/**
 * Compose multiple scorers into a single scorer with aggregation
 */
export declare function composeScorers(id: string, name: string, scorers: BaseScorer[], options?: {
    aggregation?: "average" | "min" | "max" | "weighted";
    weights?: number[];
    description?: string;
    config?: ScorerConfig;
}): BaseScorer;
/**
 * Create a conditional scorer that only runs if a condition is met
 */
export declare function createConditionalScorer(id: string, name: string, condition: (input: ScorerInput) => boolean, scorer: BaseScorer, options?: {
    defaultScore?: number;
    defaultReasoning?: string;
    description?: string;
    config?: ScorerConfig;
}): BaseScorer;
/**
 * Create a scorer that inverts the score (10 - score)
 */
export declare function createInvertedScorer(id: string, name: string, scorer: BaseScorer, options?: {
    description?: string;
    config?: ScorerConfig;
}): BaseScorer;
