/**
 * @file Sampling Strategy
 * Configurable sampling for cost-efficient evaluation
 */
import type { SamplingConfig, SamplingContext, SamplingDecision } from "../../../types/index.js";
/**
 * Default sampling configuration
 */
export declare const DEFAULT_SAMPLING_CONFIG: SamplingConfig;
/**
 * Sampling strategy for evaluation
 */
export declare class SamplingStrategy {
    private _config;
    private _recentScores;
    private _currentRate;
    private _maxRecentScores;
    constructor(config?: Partial<SamplingConfig>);
    /**
     * Get current sampling configuration
     */
    get config(): SamplingConfig;
    /**
     * Get current sampling rate
     */
    get currentRate(): number;
    /**
     * Decide whether to sample a request
     */
    shouldSample(context?: SamplingContext): SamplingDecision;
    /**
     * Record a score for adaptive sampling
     */
    recordScore(score: number): void;
    /**
     * Update sampling rate based on recent quality
     */
    private _updateAdaptiveRate;
    /**
     * Reset sampling state
     */
    reset(): void;
    /**
     * Update sampling configuration
     */
    configure(config: Partial<SamplingConfig>): void;
    /**
     * Get sampling statistics
     */
    getStats(): {
        currentRate: number;
        recentScoresCount: number;
        averageScore: number | null;
    };
}
/**
 * Create a sampling strategy
 */
export declare function createSamplingStrategy(config?: Partial<SamplingConfig>): SamplingStrategy;
/**
 * Pre-configured sampling strategies
 */
export declare const SamplingStrategies: {
    /** Evaluate everything (default) */
    readonly all: () => SamplingStrategy;
    /** Evaluate 50% of requests */
    readonly half: () => SamplingStrategy;
    /** Evaluate 10% of requests */
    readonly light: () => SamplingStrategy;
    /** Adaptive sampling based on quality */
    readonly adaptive: () => SamplingStrategy;
    /** Only evaluate errors and specific conditions */
    readonly errorsOnly: () => SamplingStrategy;
    /** VIP users always evaluated */
    readonly vipUsers: (users: string[]) => SamplingStrategy;
};
