import { Product } from '../interfaces/product';
import { CartItem } from '../interfaces/cart-item';
import { Observable } from 'rxjs';
import { ConnectionService } from '../api/connection.service';
import { Constants } from '../core.consts';
import { AuthService } from './auth.service';
import { ToastService } from '../utils/toast.service';
import { OrderUtilityService } from '../utils/order-util.service';
import { CheckoutData } from '../interfaces/checkout-data';
import { CartAffordable } from '../interfaces/cart/cart-affordable';
import { ChannelConfigService } from './channel-config.service';
import { AnalyticsService } from '../../public-api';
export declare class CartService {
    private connection;
    private toastrService;
    private consts;
    private authService;
    private orderUtils;
    private analyticsService;
    private channelConfigService;
    private cartItemsSubject;
    private couponSubject;
    private cartSubject;
    private requestInProcess;
    private promotionsSubject;
    private items;
    private count;
    private locale;
    private logged_in;
    private have_to_update;
    channelConfig: any;
    private cart_baseUrl;
    cartItemsApi: () => string;
    addItemApi: () => string;
    addAllItemsApi: () => string;
    updateItemQuantityApi: (item_id: any) => string;
    deleteItemApi: (item_id: any) => string;
    couponApi: () => string;
    cart_token: any;
    cartItems: Observable<CartItem[]>;
    coupon: Observable<any>;
    loading: Observable<boolean>;
    cart: Observable<any>;
    promotions: Observable<CheckoutData[]>;
    constructor(connection: ConnectionService, toastrService: ToastService, consts: Constants, authService: AuthService, orderUtils: OrderUtilityService, analyticsService: AnalyticsService, channelConfigService: ChannelConfigService);
    private getCart;
    private getCartByToken;
    private getCartByCustomer;
    /**
     *  @private
     *  CART CRUD SERVER'S SYNCRONIZED
     */
    private initializeCart;
    private switchPriceInCartItem;
    private stepCart;
    private updateCartItems;
    private updateCartItemQuantity;
    private appendToCart;
    private removeCartItem;
    private addIfAllreadyExists;
    private updateLocalCart;
    private resetCart;
    private updateCartObj;
    private isItemInLocal;
    /**
     *  @public
     *  CART CRUD
     */
    addToCart: (product: Product, quantity: number, variant_id: any) => void;
    addToCartPromise: (product: Product, quantity: number, variant_id: any) => Promise<{
        error: boolean;
    }>;
    addAllToCart: (items: any[]) => void;
    mergeItemsAddAllToCart: (items: any[]) => any[];
    updateItemQuantity: (item: CartItem, quantity: any) => void;
    validateQuantity: (item: CartItem, quantity: any) => boolean;
    calculateStockCounts: (item: CartItem, quantity: any) => boolean;
    deleteCartItem: (item: any, toast?: boolean) => void;
    clearCart(): void;
    clearAndResetCart(): void;
    clearAndResetCustomerCart(): void;
    handleError: (error: {
        error: string;
    }) => void;
    getCountFromItemInCart: (codeVariant: any) => number;
    findItemByIdVariant: (variant_id: any) => any;
    findItem: (product_id: any) => any;
    /** DATA FOR OTHER SERVICES */
    getCartToken: () => any;
    getLocale: () => string;
    getTotalAmount: () => Observable<number>;
    getCountCartItems: () => Observable<number>;
    getTaxesAmount: () => Observable<number>;
    getSubTotalAmount: () => Observable<number>;
    toDecimal: (total: any) => any;
    getDiscount(): Observable<number>;
    addCoupon: (code: any) => Promise<any>;
    removeCoupon: () => Promise<boolean>;
    formatCoupon: (cart: any) => void;
    changeHaveToUpdate: (value: any) => any;
    readyForCheckout: (successCallback?: Function, errorCallback?: Function) => CartAffordable;
    updateItemsOnError: (itemsWithError: any[], code: string) => void;
    loadCartByToken: (token: string) => Promise<import("rxjs").Subscription>;
    /**
     *  UTILS
     */
    transformItems: (server_item: any) => any;
}
