/**
 * @module Cart
 */
import { ClientApplication } from '../../client';
import { ActionSet } from '../helper';
import { MetaAction } from '../types';
import { ErrorAction } from '../Error';
import { Action, AddCustomerAddressPayload, AddLineItemPayload, Options, Payload, RemoveLineItemDiscountPayload, RemoveLineItemPayload, RemoveLineItemPropertiesPayload, RemovePropertiesPayload, SetCustomerPayload, SetDiscountPayload, SetLineItemDiscountPayload, SetLineItemPropertiesPayload, SetPropertiesPayload, UpdateCustomerAddressPayload, UpdateLineItemPayload } from './types';
export declare function validationError(action: MetaAction): undefined | ErrorAction;
/**
 * Cart
 */
export declare class Cart extends ActionSet {
    constructor(app: ClientApplication<any>, options?: Options);
    dispatch(action: Action.FETCH | Action.REMOVE_CUSTOMER | Action.REMOVE_DISCOUNT | Action.CLEAR): Cart;
    dispatch(action: Action.UPDATE, payload: Payload): Cart;
    dispatch(action: Action.SET_CUSTOMER, payload: SetCustomerPayload): Cart;
    dispatch(action: Action.ADD_CUSTOMER_ADDRESS, payload: AddCustomerAddressPayload): Cart;
    dispatch(action: Action.UPDATE_CUSTOMER_ADDRESS, payload: UpdateCustomerAddressPayload): Cart;
    dispatch(action: Action.SET_DISCOUNT, payload: SetDiscountPayload): Cart;
    dispatch(action: Action.SET_PROPERTIES, payload: SetPropertiesPayload): Cart;
    dispatch(action: Action.REMOVE_PROPERTIES, payload: RemovePropertiesPayload): Cart;
    dispatch(action: Action.ADD_LINE_ITEM, payload: AddLineItemPayload): Cart;
    dispatch(action: Action.UPDATE_LINE_ITEM, payload: UpdateLineItemPayload): Cart;
    dispatch(action: Action.REMOVE_LINE_ITEM, payload: RemoveLineItemPayload): Cart;
    dispatch(action: Action.SET_LINE_ITEM_DISCOUNT, payload: SetLineItemDiscountPayload): Cart;
    dispatch(action: Action.REMOVE_LINE_ITEM_DISCOUNT, payload: RemoveLineItemDiscountPayload): Cart;
    dispatch(action: Action.SET_LINE_ITEM_PROPERTIES, payload: SetLineItemPropertiesPayload): Cart;
    dispatch(action: Action.REMOVE_LINE_ITEM_PROPERTIES, payload: RemoveLineItemPropertiesPayload): Cart;
    private dispatchCartAction(type, payload?);
}
export declare function create(app: ClientApplication<any>, options?: Options): Cart;
