@betterstore/react
Version:
E-commerce for Developers
36 lines (35 loc) • 1.47 kB
TypeScript
import { Product, LineItemCreate as SDKLineItemCreate } from "@betterstore/sdk";
type LineItemOptionalParams = {
quantity?: number;
variantOptions?: {
name: string;
value: string;
}[];
metadata?: Record<string, any>;
};
export interface CartLineItem extends Pick<SDKLineItemCreate, "metadata" | "quantity" | "variantOptions" | "productId" | "product"> {
id: string;
selectedVariant: Product["productVariants"][number] | null;
}
export interface Cart {
lineItems: CartLineItem[];
addItem: (product: CartLineItem["product"] & {
productVariants?: Product["productVariants"];
}, additionalParams?: LineItemOptionalParams) => void;
removeItem: (id: string) => void;
updateQuantity: (id: string, quantity: number) => void;
getProductQuantity: (productId: string) => number;
clearCart: () => void;
}
export declare const useCart: import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<Cart>, "persist"> & {
persist: {
setOptions: (options: Partial<import("zustand/middleware").PersistOptions<Cart, Cart>>) => void;
clearStorage: () => void;
rehydrate: () => Promise<void> | void;
hasHydrated: () => boolean;
onHydrate: (fn: (state: Cart) => void) => () => void;
onFinishHydration: (fn: (state: Cart) => void) => () => void;
getOptions: () => Partial<import("zustand/middleware").PersistOptions<Cart, Cart>>;
};
}>;
export {};