import { CustomQuery, UseCart, Context, FactoryParams, PlatformApi } from '../types';
export interface UseCartFactoryParams<CART, CART_ITEM, PRODUCT, API extends PlatformApi = any> extends FactoryParams<API> {
    load: (context: Context, params: {
        customQuery?: any;
    }) => Promise<CART>;
    addItem: (context: Context, params: {
        currentCart: CART;
        product: PRODUCT;
        quantity: any;
        customQuery?: CustomQuery;
    }) => Promise<CART>;
    removeItem: (context: Context, params: {
        currentCart: CART;
        product: CART_ITEM;
        customQuery?: CustomQuery;
    }) => Promise<CART>;
    updateItemQty: (context: Context, params: {
        currentCart: CART;
        product: CART_ITEM;
        quantity: number;
        customQuery?: CustomQuery;
    }) => Promise<CART>;
    clear: (context: Context, params: {
        currentCart: CART;
    }) => Promise<CART>;
    applyCoupon: (context: Context, params: {
        currentCart: CART;
        couponCode: string;
        customQuery?: CustomQuery;
    }) => Promise<{
        updatedCart: CART;
    }>;
    removeCoupon: (context: Context, params: {
        currentCart: CART;
        couponCode: string;
        customQuery?: CustomQuery;
    }) => Promise<{
        updatedCart: CART;
    }>;
    isInCart: (context: Context, params: {
        currentCart: CART;
        product: PRODUCT;
    }) => boolean;
}
export declare const useCartFactory: <CART, CART_ITEM, PRODUCT, API extends PlatformApi = any>(factoryParams: UseCartFactoryParams<CART, CART_ITEM, PRODUCT, API>) => () => UseCart<CART, CART_ITEM, PRODUCT, API>;
