import DivaArticle from '../DivaArticle';
import ArticleEngine from './ArticleEngine';
import ArticleOptionStateData from '../ArticleOptionState';
import { IDMDecision } from '../../../interface/IDM/Decision';
import ArticleOptionValueData from '../../../model/Options/ArticleOptionValueData';
import PartListArticleToLoad from '../../../interface/Articles/PartListArticleToLoadType';
export default class IDMEngine implements ArticleEngine {
    private article;
    private decisionDebugStack;
    private priceDebugStack;
    constructor(article: DivaArticle);
    evalDecisions(onlyUpdateOnce?: boolean): void;
    get decisions(): IDMDecision[];
    evalDecisionsfunction(): void;
    private pushDecisionDebug;
    private sortFeatures;
    private evalType1Decision;
    private evalType0Decision;
    private evalValueWithOperator;
    private evalType2Decision;
    private evalDisableDecision;
    private evalSetFeatureVisible;
    private evalSetFeatureDefault;
    private evalSetFeature;
    assignOptionValue(featureNo: string, optionNo: string, setBy?: 'fix' | 'set' | 'default', freeText?: string): void;
    updateArtOPV(myItem: ArticleOptionValueData | null, featureNo: string, ops?: ArticleOptionStateData, freeText?: string, byFormula?: boolean): void;
    clearOP(featureNo: string, keepEnalbed?: boolean): void;
    /**
     * calculates the price for the current config. The order is the following:
     * 1. finishes
     * 2. percentage surcharge for price feature groups
     * 3. global percentage surcharge
     * at the end the article used calc price is calculated for all the different price refs
     * @returns the price for the current config
     */
    calcConfigPrice(): void;
    private checkPriceGroupAllZeros;
    private logPrice;
    setOP(featureNo: string, option: ArticleOptionValueData, freeText?: string | null, doDefine?: boolean, byFormula?: boolean): ArticleOptionStateData | undefined;
    evalSetFeatureDefaultDecisions(): {};
    private pushPartlistDebugEntry;
    evalPartlist(newConfigValues?: {
        [optCodex: string]: string;
    }): PartListArticleToLoad[];
    private addPartilstToPartlistArticlesToLoad;
    private getMatchingOptionCombination;
    private evalCombi;
    private checkDecisionNumber;
    updateIDMSpecificFeatures(): void;
    private updateIDMSpecificFeature;
    getValuesInfluencingOPT(featureNo: string, optionKey?: string): {
        [opt: string]: string;
    }[];
    private evalMeasureFormula;
    updateArticleOptionTree(): never[];
    updateConfigDependentMedia(): void;
}
//# sourceMappingURL=IDMArticleEngine.d.ts.map