{"_id":"@circles-market/cart","name":"@circles-market/cart","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@circles-market/cart","version":"0.1.0","private":false,"type":"module","main":"dist/index.cjs","module":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","require":"./dist/index.cjs","import":"./dist/index.js"}},"sideEffects":false,"scripts":{"build":"tsup src/index.ts --dts --format esm,cjs --sourcemap","clean":"rm -rf dist","typecheck":"tsc -p tsconfig.json --noEmit"},"dependencies":{"@circles-market/core":"0.1.0","@circles-market/session":"0.1.0"},"devDependencies":{"tsup":"^8.3.0","typescript":"^5.6.3"},"_id":"@circles-market/cart@0.1.0","gitHead":"2bfca7a6816434444613f8ca4349e796179480b5","description":"Basket/cart operations against the Market API (create basket, set items, validate, preview, checkout).","_nodeVersion":"24.8.0","_npmVersion":"11.6.0","dist":{"integrity":"sha512-NzgrXtqqs6velBs2Yg7Sv48GGj1dgMPmTXCzBQ2Uh+F/yYnrJWiIALQ/qOsipSlQSMeFhZt7JpAdX+ILqfKOLA==","shasum":"5b92738e20324a77e9e59d78a5c34ef0c98c6e8e","tarball":"https://registry.npmjs.org/@circles-market/cart/-/cart-0.1.0.tgz","fileCount":12,"unpackedSize":48144,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFp/yg7pav5b3DGcq5MCyJFJpmQikwaSs+BASJouwvNTAiEA6zmTqe66V+Ux0SQGWcYsoX+X56ZG88/QDe3DqCKlrsE="}]},"_npmUser":{"name":"jaensen","email":"daniel@djanz.de"},"directories":{},"maintainers":[{"name":"jaensen","email":"daniel@djanz.de"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cart_0.1.0_1768922727045_0.48042490765388357"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-20T15:25:26.966Z","0.1.0":"2026-01-20T15:25:27.182Z","modified":"2026-01-20T15:25:27.375Z"},"maintainers":[{"name":"jaensen","email":"daniel@djanz.de"}],"description":"Basket/cart operations against the Market API (create basket, set items, validate, preview, checkout).","readme":"# @circles-market/cart\n\nBasket/cart operations against the Market API (create basket, set items, validate, preview, checkout).\n\n## Install\n\n```bash\npnpm add @circles-market/cart @circles-market/core @circles-market/session\n```\n\n## Quickstart\n\n```ts\nimport { FetchHttpTransport } from \"@circles-market/core\";\nimport { InMemoryAuthContext } from \"@circles-market/session\";\nimport { CartClientImpl } from \"@circles-market/cart\";\n\nasync function checkoutExample(marketApiBase: string) {\n  const http = new FetchHttpTransport();\n  const session = new InMemoryAuthContext();\n\n  const cart = new CartClientImpl(marketApiBase, http, session);\n\n  const { basketId } = await cart.createBasket({\n    buyer: \"0x0000000000000000000000000000000000000000\",\n    operator: \"0x0000000000000000000000000000000000000000\",\n    chainId: 100,\n  });\n\n  await cart.setItems({\n    basketId,\n    items: [\n      { seller: \"0x0000000000000000000000000000000000000000\", sku: \"coffee-1\", quantity: 2 },\n    ],\n  });\n\n  await cart.setCheckoutDetails({\n    basketId,\n    contactPoint: { email: \"buyer@example.com\" },\n    shippingAddress: { addressCountry: \"DE\", postalCode: \"10115\" },\n  });\n\n  const validation = await cart.validateBasket(basketId);\n  if (!validation.valid) {\n    return validation;\n  }\n\n  const preview = await cart.previewOrder(basketId);\n  const checkout = await cart.checkoutBasket({ basketId });\n\n  return { preview, checkout };\n}\n```\n\n## Reference\n\n### Concepts\n\n* A `Basket` is server state identified by `basketId`.\n* `items` reference sellers + product SKUs.\n* Many endpoints can use auth (`AuthContext` token). Checkout flows usually do.\n\n### API and return values\n\n* `createBasket({ buyer, operator, chainId? })` → `{ basketId: string }`\n  * `basketId`: server-generated identifier\n* `setItems({ basketId, items })` → `Basket`\n* `setCheckoutDetails({ basketId, shippingAddress?, billingAddress?, contactPoint?, ageProof? })` → `Basket`\n* `validateBasket(basketId)` → `ValidationResult`\n* `previewOrder(basketId)` → `any`\n  * backend-defined JSON object; treat as opaque unless you control the backend schema\n* `checkoutBasket({ basketId, buyer? })` → `{ orderId: string; paymentReference: string; basketId: string }`\n  * `orderId`: use with `@circles-market/orders`\n  * `paymentReference`: backend-issued reference\n  * `basketId`: echoed basket id\n\n### Types\n\n#### `BasketItemInput`\nFields:\n- `seller`: seller/avatar EVM address (`0x...`)\n- `sku`: product SKU (typically from `@circles-market/catalog`)\n- `quantity`: integer quantity\n- `imageUrl?`: optional UI hint\n\n#### `Basket`\nFields:\n- `basketId`: basket identifier\n- `buyer?`: buyer address (when provided/known)\n- `operator?`: operator address (when provided/known)\n- `chainId`: chain id (default `100` when created by SDK)\n- `items`: `BasketItem[]` (server-side basket line shape; see below). Backend may add extra fields via `[k: string]: unknown`.\n- `status`: backend-defined status string\n- `[k: string]: unknown`: forward-compat for backend-added fields\n\n#### `BasketItem` (server basket line shape)\nFields (all optional unless noted by backend):\n- `@type?`: typically \"OrderItem\"\n- `orderQuantity?`: number\n- `orderedItem?`: `{ '@type'?: string; sku?: string; [k: string]: unknown }`\n- `seller?`: seller/avatar EVM address (`0x...`)\n- `imageUrl?`: optional UI hint\n- `productCid?`, `offerSnapshot?`: optional provenance fields that the server may include\n- `[k: string]: unknown`: forward-compat for backend-added fields\n\n#### `PostalAddressInput`\nFields (all optional):\n- `streetAddress`, `addressLocality`, `postalCode`, `addressCountry`\n\n#### `ContactPointInput`\nFields (all optional):\n- `email`, `telephone`\n\n#### `PersonMinimalInput`\nFields (all optional):\n- `birthDate`: ISO date string (e.g. \"1990-01-01\")\n\n#### `ValidationResult`\nFields:\n- `valid`: `true` if checkout should be possible\n- `requirements`: backend-defined requirement list\n- `missing`: backend-defined missing-fields list\n- `ruleTrace`: backend-defined rule evaluation trace\n\n## Related packages\n\n* `@circles-market/catalog` to discover valid `{ seller, sku }` pairs\n* `@circles-market/auth` + `@circles-market/session` for authenticated checkout flows\n* `@circles-market/sdk` if you don’t want to wire the dependencies yourself\n","readmeFilename":"README.md","_rev":"1-dacac1791708e53b0dcc8d6c2b9b8361"}