export type Factor = {
    name: string;
    levels: any[];
};
export type ExperimentResult = {
    factors: Record<string, any>;
    result: number;
};
export type OrthogonalArrayType = 'L4' | 'L8' | 'L9' | 'L16' | 'L18';
export declare enum SNRatioType {
    LARGER_IS_BETTER = "LARGER_IS_BETTER",
    SMALLER_IS_BETTER = "SMALLER_IS_BETTER",
    NOMINAL_IS_BEST = "NOMINAL_IS_BEST"
}
export interface TaguchiConfig {
    type: OrthogonalArrayType;
    factors: Record<string, any[]>;
    snRatioType: SNRatioType;
    targetValue?: number;
    poolingThreshold?: number;
}
export type AnalysisResult = {
    optimalLevels: Record<string, number>;
    snRatios: Record<string, number[]>;
    mainEffects: Record<string, number[]>;
    contributions: Record<string, number>;
    variance: Record<string, {
        ss: number;
        df: number;
        ms: number;
        f: number;
        contribution: number;
        confidenceInterval?: [number, number];
        isPooled?: boolean;
    }>;
    error?: {
        ss: number;
        df: number;
        ms: number;
        pooledFactors: string[];
    };
};
export declare class Taguchi {
    private factors;
    private orthogonalArray;
    private snRatioType;
    private targetValue?;
    private poolingThreshold;
    private error?;
    constructor(config: TaguchiConfig);
    private validateArrayType;
    generateExperiments(): Array<Record<string, any>>;
    private calculateSNRatio;
    private calculateConfidenceInterval;
    private calculateMainEffects;
    private calculateANOVA;
    analyzeResults(results: ExperimentResult[]): AnalysisResult;
}
