@slicekit/commerce
v0.1.1
Published
Slice commerce domain model: types, canonical value sets, pricing and currency rules, order and product semantics
Readme
@slicekit/commerce
The Slice commerce domain model, shared by the Slice SDKs and Slice's services. Types, canonical value sets, and the pricing, currency, and order rules that must agree everywhere — API, storefront, dashboard, and indexer — live here exactly once.
Installation
npm install @slicekit/commerce viemThe package depends only on @slicekit/abi (for deployment facts) and
viem. Generic utilities, React, wallet, API clients, and private
infrastructure never live here.
What it owns
- Domain types for products, prices, orders, slicers, roles, pagination, and API include flags.
- Canonical value sets: user roles, order types, payment labels, order statuses, onchain action types.
- Pricing rules: price math and payable amounts, dynamic price buffers,
and formatting policy (
formatCurrency,formatTokenAmount, USD quote formatting). - Currency and country rules: checkout currencies, fiat conversion
(
getPriceFiatValue), and display currency by country. - Order rules: status derivation (
deriveOrderTransactionStatus), fulfillment flows, export bounds, and stream roles. - Product metadata schemas: IPFS product metadata, NFT metadata, and commerce metadata fields with structured-data hashing.
- Protocol constants: base variant, default price buyer, fee parameters.
Usage
import {
deriveOrderTransactionStatus,
formatCurrency,
isInitialOrderStatus,
orderTypeValues
} from "@slicekit/commerce"
formatCurrency(12.5, { currency: "EUR" }) // "€12.50"
orderTypeValues // ["Online", "Counter", ...] — the canonical unionRaw onchain amounts stay base-unit strings; convert to bigint for math and
format labels only at display boundaries — the helpers here encode that
policy.
Entry Points
@slicekit/commerce: the full domain model.@slicekit/commerce/categories: the product category taxonomy, split out because of its size.@slicekit/commerce/orders: order rules and value sets alone, for consumers that do not need the full package runtime.
