import { ProductData, ApiConfig } from '../../interface/CoreTypes';
import { OrderLineData, VariantItemData } from '@crystaldesign/basket-model';
export declare class ProductHandler {
    private organizationId;
    private apiConfig;
    private apiKey;
    private livingArea;
    private mainCategory;
    private subCategory;
    constructor(organizationId: string, apiConfig: ApiConfig, apiKey: string, livingArea: string, mainCategory: string, subCategory: string);
    /**
     * Saves the products in the current state
     * @param basket the basket data for which products get created/loaded
     * @param catalogData the catalog data for this basket
     */
    createAndSave: ({ basket, catalogData }: any) => Promise<any[]>;
    /**
     * Saves the products in the current state
     * @param basket the basket data for which products get created/loaded
     * @param catalogData the catalog data for this basket
     * @param catalogServiceUrl the url for the catalog service
     * @param productData an optional list of products, if set no products get loaded from the server
     */
    loadProducts: ({ basket, catalogData, productData, classificationFields }: any) => Promise<{
        baseData: ProductData;
        classificationData: any;
        optFields: any[];
        initialSelectedFields: any[];
        variantData: ProductData[];
        addedProducts: string[];
        removedProducts: string[];
        modified: {
            shortDescription: boolean;
            addPrice: boolean;
            variantData: any[];
        };
        isNew: boolean;
    }>;
    /**
     * Saves the products in the current state
     * @param baseData the basedata of the base product
     * @param classificationData the classification data of the base product
     * @param variantData the list of varinat products
     * @param removedProducts the ids of products that get removed
     * @param removedMedia the list of media items that get removed
     * @param classificationFields the lists of classification fields used
     */
    saveData: ({ baseData, classificationData, variantData, removedProducts, removedMedia, classificationFields }: any) => Promise<any[]>;
    /**
     * Calculates the inital state of one varinat data entry
     *
     * @param baseData the inital base data
     * @param param1 one variant data entry
     * @returns the inital state of one varinat data entry
     */
    private initVariant;
    private apiSaveProducts;
    static calculateComputedValue(previouseValue: any, updatedValue: any, computedValue: any, modified?: boolean): {
        modified: boolean;
        value: any;
    };
    static isSameProduct(product: ProductData, setHash: string, diva3dProject: string, orderLines: OrderLineData[], varinatData: VariantItemData[], catalogCodex: string): boolean;
    private parseClassificationFields;
    static baseDataFields: any[];
}
//# sourceMappingURL=productHandlerMoc.d.ts.map