import { Actions, Modal } from '../../interface/CoreTypes';
import { BasketData, OrderSetData } from '@crystaldesign/basket-model';
import DivaSet from './DivaSet';
import ArticleOptionValueData from '../../model/Options/ArticleOptionValueData';
declare class DivaFavoritesHandler {
    private isCalcForSummary;
    constructor(isCalcForSummary?: boolean);
    initSet(set: DivaSet, orderSet: OrderSetData): void;
    FavoritesDefined(set: DivaSet): boolean;
    getVariantsForSummary(set: DivaSet): Promise<{
        disabled: number[];
        variants: FavoritesVariants[];
        singleOptions: string[];
    }>;
    getAllValidVariants(set: DivaSet): Promise<FavoritesVariants[]>;
    private getVariantIdToStart;
    private tryGetOldVariantIdForVariant;
    changeDisabledVariants(set: DivaSet, index: number | 'ALL', disable: boolean): void;
    changeOnFavorites(set: DivaSet, opt: string, opvs: string[], targetArticles: string[], remove: boolean, openModal?: (data: Modal) => void): void;
    /**
     * this function checks for the usecase when the user tries to select different opvs at the same option for different elements
     * This functionality is not supported for an option to have different variants depending on the element
     * @returns true if the described usecase is really the case
     */
    private checkForInvalidSelection;
    private setFavorites;
    repairFavorites(set: DivaSet): {
        favsAreDefiend: boolean;
        singleOptions: string[];
    };
    getVariants(set: DivaSet): FavoritesVariants[];
    getValidVariants(set: DivaSet, useCache?: boolean): Promise<FavoritesVariants[]>;
    handleFavorites(set: DivaSet, mode: 'SAVE' | 'CALC' | 'REPAIR', actBasket: BasketData, saveToBasketWrapper: any, doConfigure: (myValues: {
        [optCodex: string]: string;
    }, targetArticles: string[], dontUpdatePlannerView?: boolean) => Promise<void>, updatePlanner: () => void, actions?: Actions): Promise<any>;
    private saveConfigVariantsInBasket;
    private evalOldConfigVariants;
    isFavorite(set: DivaSet, targetArticles: string[], item: ArticleOptionValueData, optionCodex?: string): boolean | undefined;
    get IsCalcForSummary(): boolean;
}
export interface FavoritesVariants {
    targetArticles: {
        [targetArticle: string]: {
            [opt: string]: string;
        };
    };
    price?: number;
    configVariantValues?: {
        [targetArticle: string]: {
            [opt: string]: string;
        };
    };
    title?: string;
    hash?: string;
    id?: number;
}
declare const favoritesHandlerInstance: DivaFavoritesHandler;
export default favoritesHandlerInstance;
//# sourceMappingURL=FavoritesHandler.d.ts.map