interface PriceSnapshot {
    amount: bigint;
    currency: string;
    priceMode: 'inclusive' | 'exclusive';
}
interface CartLine {
    lineId: string;
    variantId: string;
    qty: number;
    price: PriceSnapshot;
    vendorId: string | null;
}
interface Cart {
    id: string;
    currency: string;
    lines: CartLine[];
    subtotal: bigint;
}
type CartAction = {
    type: 'addLine';
    variantId: string;
    qty: number;
    price: PriceSnapshot;
    vendorId?: string | null;
} | {
    type: 'setQty';
    lineId: string;
    qty: number;
} | {
    type: 'removeLine';
    lineId: string;
} | {
    type: 'clear';
};

interface CartStore {
    load(cartId: string): Promise<Cart | null>;
    save(cart: Cart): Promise<void>;
    merge(guestCartId: string, userId: string): Promise<Cart>;
}

export type { CartStore as C, PriceSnapshot as P, CartAction as a, Cart as b, CartLine as c };
