import { Filter, Logger } from '../../common';
import { ClassInfo, Metric } from '../extraction';
import { MetricComparison } from './types';
import type { CheckOptions } from '../../common/fluentapi';
/**
 * Filter classes by class name using regex patterns
 */
export declare class ClassFilter {
    private readonly filter;
    constructor(filter: Filter);
    apply(classes: ClassInfo[], logger?: Logger, options?: CheckOptions): ClassInfo[];
    getFilter(): Filter;
}
/**
 * Combine multiple filters with AND logic
 */
export declare class CompositeFilter {
    private readonly filters;
    constructor(filters: ClassFilter[]);
    apply(classes: ClassInfo[], logger?: Logger, options?: CheckOptions): ClassInfo[];
}
/**
 * Projects class information to calculate specific metrics
 */
export interface MetricProjection {
    apply(classes: ClassInfo[]): {
        [className: string]: number;
    };
}
/**
 * Creates a projection for a specific metric calculation
 * @param metricCalculation Function that calculates the metric for a single class
 */
export declare const projectToMetric: (metricCalculation: (classInfo: ClassInfo) => number) => MetricProjection;
/**
 * Represents the result of a metric calculation for violation checking
 */
export interface MetricResult {
    className: string;
    filePath: string;
    metricName: string;
    metricValue: number;
    threshold: number;
    comparison: MetricComparison;
    isViolation: boolean;
}
/**
 * Projects class information into metric results for violation checking
 */
export declare function projectToMetricResults<T extends ClassInfo>(classes: T[], metric: Metric, threshold: number, comparison: MetricComparison): MetricResult[];
