/**
 * commerce-storefront blueprint · wiring seam for `@platform-modules/commerce-cart`.
 *
 * Adapter-minimalism: in-memory CartStore for the composition proof; a real host swaps in
 * `@platform-modules/commerce-cart/store-db` bound to the buyer session.
 */
import { applyToCart } from '@platform-modules/commerce-cart'
import { createMemoryCartStore } from '@platform-modules/commerce-cart/testing'
import type { CartAction, CartStore } from '@platform-modules/commerce-cart'

export type StorefrontCart = {
  store: CartStore
  applyToCart: (cartId: string, action: CartAction) => ReturnType<typeof applyToCart>
}

export function createStorefrontCart(): StorefrontCart {
  const store = createMemoryCartStore()
  return {
    store,
    applyToCart: (cartId, action) => applyToCart(store, cartId, action),
  }
}
