import type { BundleConfiguration } from "@epcc-sdk/sdks-shopper"; import type { CartItemBody } from "../../types/cart"; /** * Extended cart item interface including EP-specific features * Extends core CartItemBody with EP-specific functionality */ export interface ExtendedCartItem extends CartItemBody { bundleConfiguration?: BundleConfiguration; locationId?: string; } /** * Form values from React Hook Form context */ export interface CartFormValues { ProductQuantity?: number; ProductVariant?: string; BundleConfiguration?: BundleConfiguration; SelectedLocationSlug?: string; } /** * Props for add to cart button component */ export interface AddToCartButtonProps { locationId?: string; locationSlug?: string; } /** * Cart item data structure for EP API */ export interface CartItemData { type: "cart_item"; id: string; quantity: number; bundle_configuration?: BundleConfiguration; location?: string; } /** * Resolves the target location slug from form values and props * @param formValues Current form values * @param props Component props * @returns Location slug to use, or undefined */ export declare function resolveLocationSlug(formValues: CartFormValues, props: AddToCartButtonProps): string | undefined; /** * Extracts cart item details from form values and product info * @param formValues Form values from React Hook Form * @param product Product object * @param props Component props * @returns Extended cart item object */ export declare function extractCartItemFromForm(formValues: CartFormValues, product: any, props: AddToCartButtonProps): ExtendedCartItem; /** * Builds cart item data for EP API from cart item * @param item Extended cart item * @returns Cart item data for API call */ export declare function buildCartItemData(item: ExtendedCartItem): CartItemData; /** * Validates cart item before adding to cart * @param item Cart item to validate * @returns Validation result */ export declare function validateCartItem(item: ExtendedCartItem): { isValid: boolean; errorMessage?: string; }; /** * Validates quantity from form input * @param quantityValue Raw quantity value from form * @returns Validation result with parsed quantity */ export declare function validateAndParseQuantity(quantityValue: any): { isValid: boolean; quantity: number; errorMessage?: string; }; /** * Determines the cart item ID to use (variant or product) * @param productId Product ID * @param variantId Optional variant ID * @returns ID to use for cart item */ export declare function getCartItemId(productId: string, variantId?: string): string; /** * Converts ExtendedCartItem to core CartItemBody format * Handles the paradigm difference between EP (product-centric) and core (variant-centric) * @param item Extended cart item * @returns Cart item body compatible with core commerce types */ export declare function toCartItemBody(item: ExtendedCartItem): CartItemBody; /** * Creates a debug-friendly representation of cart item data * @param item Extended cart item * @param cartData Built cart data * @returns Debug info object */ export declare function createCartDebugInfo(item: ExtendedCartItem, cartData: CartItemData): Record;