Skip to main content

stateset_embedded/
lib.rs

1#![deny(unsafe_code)]
2#![cfg_attr(not(test), deny(clippy::unwrap_used))]
3#![cfg_attr(not(test), warn(unused_crate_dependencies))]
4#![cfg_attr(docsrs, feature(doc_cfg))]
5#![doc(
6    html_logo_url = "https://raw.githubusercontent.com/stateset/stateset-icommerce/main/assets/stateset.png",
7    html_favicon_url = "https://raw.githubusercontent.com/stateset/stateset-icommerce/main/assets/favicon.ico",
8    issue_tracker_base_url = "https://github.com/stateset/stateset-icommerce/issues/"
9)]
10
11//! # StateSet iCommerce
12//!
13//! The SQLite of commerce operations. An embeddable commerce library
14//! that runs anywhere with zero external dependencies.
15//!
16//! ## Quick Start
17//!
18//! ```rust,ignore
19//! use stateset_embedded::{Commerce, CreateCustomer, CreateOrder, CreateOrderItem, CreateInventoryItem};
20//! use rust_decimal_macros::dec;
21//!
22//! // Initialize with a database file (creates if not exists)
23//! let commerce = Commerce::new("./store.db")?;
24//!
25//! // Create a customer
26//! let customer = commerce.customers().create(CreateCustomer {
27//!     email: "alice@example.com".into(),
28//!     first_name: "Alice".into(),
29//!     last_name: "Smith".into(),
30//!     ..Default::default()
31//! })?;
32//!
33//! // Create inventory
34//! commerce.inventory().create_item(CreateInventoryItem {
35//!     sku: "SKU-001".into(),
36//!     name: "Widget".into(),
37//!     initial_quantity: Some(dec!(100)),
38//!     ..Default::default()
39//! })?;
40//!
41//! // Create an order
42//! let order = commerce.orders().create(CreateOrder {
43//!     customer_id: customer.id,
44//!     items: vec![CreateOrderItem {
45//!         sku: "SKU-001".into(),
46//!         name: "Widget".into(),
47//!         quantity: 2,
48//!         unit_price: dec!(29.99),
49//!         ..Default::default()
50//!     }],
51//!     ..Default::default()
52//! })?;
53//!
54//! // Adjust inventory
55//! commerce.inventory().adjust("SKU-001", dec!(-2), "Order fulfillment")?;
56//! # Ok::<(), stateset_embedded::CommerceError>(())
57//! ```
58//!
59//! ## Features
60//!
61//! - **Zero configuration** - Just point to a file and go
62//! - **Embedded SQLite** - No external database server needed (default)
63//! - **PostgreSQL support** - Scale to production with `postgres` feature
64//! - **Full commerce stack** - Orders, inventory, customers, products, returns
65//! - **Sync API** - Simple blocking operations
66//! - **Async API** - True async for PostgreSQL with `AsyncCommerce`
67//! - **Event-driven** - Subscribe to commerce events for side effects
68//!
69//! ## Database Backends
70//!
71//! ### SQLite (default)
72//! ```rust,ignore
73//! let commerce = Commerce::new("./store.db")?;
74//! // or in-memory for testing
75//! let commerce = Commerce::new(":memory:")?;
76//! ```
77//!
78//! ### PostgreSQL (requires `postgres` feature)
79//! ```rust,ignore
80//! let commerce = Commerce::with_postgres("postgres://user:pass@localhost/db")?;
81//! // or via builder
82//! let commerce = Commerce::builder()
83//!     .postgres("postgres://localhost/stateset")
84//!     .max_connections(20)
85//!     .build()?;
86//! ```
87//!
88//! ### Async PostgreSQL API
89//!
90//! For true async operations with PostgreSQL, use `AsyncCommerce`:
91//!
92//! ```rust,ignore
93//! use stateset_embedded::{AsyncCommerce, CreateOrder, CreateOrderItem};
94//! use rust_decimal_macros::dec;
95//!
96//! #[tokio::main]
97//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
98//!     let commerce = AsyncCommerce::connect("postgres://localhost/stateset").await?;
99//!
100//!     // All operations are truly async
101//!     let order = commerce.orders().create(CreateOrder {
102//!         customer_id: uuid::Uuid::new_v4(),
103//!         items: vec![CreateOrderItem {
104//!             sku: "SKU-001".into(),
105//!             name: "Widget".into(),
106//!             quantity: 2,
107//!             unit_price: dec!(29.99),
108//!             ..Default::default()
109//!         }],
110//!         ..Default::default()
111//!     }).await?;
112//!
113//!     let customers = commerce.customers().list(Default::default()).await?;
114//!     let inventory = commerce.inventory().get_stock("SKU-001").await?;
115//!
116//!     Ok(())
117//! }
118//! ```
119//!
120//! ## Architecture
121//!
122//! ```text
123//! ┌─────────────────────────────────────────┐
124//! │           Your Application              │
125//! │  ┌───────────────────────────────────┐  │
126//! │  │     Commerce (this crate)         │  │
127//! │  │  ┌─────────────────────────────┐  │  │
128//! │  │  │  SQLite or PostgreSQL       │  │  │
129//! │  │  └─────────────────────────────┘  │  │
130//! │  └───────────────────────────────────┘  │
131//! └─────────────────────────────────────────┘
132//! ```
133
134#[cfg(feature = "async")]
135use futures as _;
136#[cfg(feature = "postgres")]
137use sqlx as _;
138
139mod accounts_payable;
140mod accounts_receivable;
141mod activity_logs;
142mod analytics;
143mod backorder;
144mod bom;
145mod carts;
146mod channels;
147mod commerce;
148mod companies;
149mod cost_accounting;
150mod credit;
151mod currency;
152mod custom_objects;
153mod customers;
154mod edi_documents;
155mod erc8004;
156mod fixed_assets;
157mod fraud;
158mod fulfillment;
159mod general_ledger;
160mod gift_cards;
161mod inbound_shipments;
162mod integration_field_mappings;
163mod integration_mappings;
164mod inventory;
165mod invoices;
166mod lots;
167mod loyalty;
168pub mod maintenance;
169mod orders;
170mod payment_obligations;
171mod payments;
172mod prepayments;
173mod price_levels;
174mod price_schedules;
175mod print_stations;
176mod production_batches;
177mod products;
178mod promotions;
179mod purchase_orders;
180mod purgatory;
181mod quality;
182mod receiving;
183mod returns;
184mod revenue_recognition;
185mod reviews;
186mod search_config;
187mod segments;
188mod serials;
189mod shipments;
190mod shipping_zones;
191mod stock_snapshots;
192mod store_credits;
193mod subscriptions;
194mod supplier_skus;
195mod tax;
196mod topology_snapshots;
197mod transfer_orders;
198mod units_of_measure;
199mod vendor_credits;
200mod vendor_returns;
201mod warehouse;
202mod warranties;
203mod wishlists;
204mod work_orders;
205mod x402;
206
207pub mod notifications;
208
209#[cfg(feature = "vector")]
210mod vector;
211
212#[cfg(feature = "postgres")]
213mod async_commerce;
214
215#[cfg(feature = "events")]
216pub mod events;
217
218/// Curated stable subset of the public API — see [`prelude`] for what
219/// `stateset-embedded` intends to commit to at 1.0.
220pub mod prelude;
221
222// Event system types (feature-gated)
223#[cfg(feature = "events")]
224pub use events::{
225    EventBus, EventConfig, EventReceiver, EventSubscription, EventSystem, FilteredSubscription,
226    InMemoryEventStore, Webhook, WebhookConfig, WebhookDelivery, WebhookManager,
227    WebhookRegistrationError, filters,
228};
229
230#[cfg(all(feature = "events", feature = "sqlite-events"))]
231pub use events::SqliteEventStore;
232
233pub use accounts_payable::AccountsPayable;
234pub use accounts_receivable::AccountsReceivable;
235pub use activity_logs::ActivityLogs;
236pub use analytics::Analytics;
237pub use backorder::Backorders;
238pub use bom::Bom;
239pub use carts::Carts;
240pub use channels::Channels;
241pub use commerce::{Commerce, CommerceBackend, CommerceBuilder, CommerceHealth};
242pub use companies::Companies;
243pub use cost_accounting::CostAccounting;
244pub use credit::Credit;
245pub use currency::CurrencyOps;
246pub use custom_objects::CustomObjects;
247pub use customers::Customers;
248pub use edi_documents::EdiDocuments;
249pub use erc8004::Erc8004;
250pub use fixed_assets::FixedAssets;
251pub use fraud::Fraud;
252pub use fulfillment::Fulfillment;
253pub use general_ledger::GeneralLedger;
254pub use gift_cards::GiftCards;
255pub use inbound_shipments::InboundShipments;
256pub use integration_field_mappings::IntegrationFieldMappings;
257pub use integration_mappings::IntegrationMappings;
258pub use inventory::Inventory;
259pub use invoices::Invoices;
260pub use lots::Lots;
261pub use loyalty::Loyalty;
262pub use maintenance::Maintenance;
263pub use orders::Orders;
264pub use payment_obligations::PaymentObligations;
265pub use payments::Payments;
266pub use prepayments::Prepayments;
267pub use price_levels::PriceLevels;
268pub use price_schedules::PriceSchedules;
269pub use print_stations::PrintStations;
270pub use production_batches::ProductionBatches;
271pub use products::Products;
272pub use promotions::Promotions;
273pub use purchase_orders::PurchaseOrders;
274pub use purgatory::Purgatory;
275pub use quality::Quality;
276pub use receiving::Receiving;
277pub use returns::Returns;
278pub use revenue_recognition::RevenueRecognition;
279pub use reviews::Reviews;
280pub use search_config::SearchConfigs;
281pub use segments::Segments;
282pub use serials::Serials;
283pub use shipments::Shipments;
284pub use shipping_zones::ShippingZones;
285pub use stock_snapshots::StockSnapshots;
286pub use store_credits::StoreCredits;
287pub use subscriptions::Subscriptions;
288pub use supplier_skus::SupplierSkus;
289pub use tax::Tax;
290pub use topology_snapshots::TopologySnapshots;
291pub use transfer_orders::TransferOrders;
292pub use units_of_measure::UnitsOfMeasure;
293pub use vendor_credits::VendorCredits;
294pub use vendor_returns::VendorReturns;
295pub use warehouse::WarehouseOps;
296pub use warranties::Warranties;
297pub use wishlists::Wishlists;
298pub use work_orders::WorkOrders;
299pub use x402::X402;
300
301pub use notifications::{
302    EmailBackend, EmailTemplate, LogEmailBackend, NotificationConfig, NotificationService,
303    RecipientResolver, TransactionalEmail, WebhookEmailBackend,
304};
305
306#[cfg(feature = "vector")]
307pub use vector::Vector;
308
309// Async API for PostgreSQL (feature-gated)
310#[cfg(feature = "postgres")]
311pub use async_commerce::{
312    AsyncAccountsPayable, AsyncAccountsReceivable, AsyncAnalytics, AsyncBackorder, AsyncBom,
313    AsyncCarts, AsyncCommerce, AsyncCostAccounting, AsyncCredit, AsyncCurrency, AsyncCustomObjects,
314    AsyncCustomers, AsyncFixedAssets, AsyncFulfillment, AsyncGeneralLedger, AsyncGiftCards,
315    AsyncInventory, AsyncInvoices, AsyncLots, AsyncLoyalty, AsyncOrders, AsyncPayments,
316    AsyncProducts, AsyncPromotions, AsyncPurchaseOrders, AsyncQuality, AsyncReceiving,
317    AsyncReturns, AsyncRevenueRecognition, AsyncSerials, AsyncShipments, AsyncStoreCredits,
318    AsyncSubscriptions, AsyncTax, AsyncWarehouse, AsyncWarranties, AsyncWorkOrders, AsyncX402,
319};
320
321// Re-export Database trait for advanced users who want to bring their own database
322pub use stateset_db::Database;
323// Re-export the durable HTTP idempotency store types for the HTTP layer
324pub use stateset_db::{HttpIdempotencyRecord, HttpIdempotencyRepository};
325// Re-export observability primitives used by Commerce diagnostics/metrics APIs
326pub use stateset_observability::{Metrics, MetricsConfig, MetricsSnapshot};
327
328// Re-export core types for convenience
329pub use stateset_core::{
330    A2APurchase,
331    A2APurchaseFilter,
332    A2AQuote,
333    A2AQuoteFilter,
334    // A2A Skill types
335    A2ASkill,
336    // General Ledger types
337    AccountStatus,
338    AccountSubType,
339    AccountType,
340    // Cart/Checkout types
341    AddCartItem,
342    // Fulfillment types
343    AddCarton,
344    AddCartonItem,
345    // Lot/Batch Tracking types
346    AddLotCertificate,
347    // Shipment types
348    AddShipmentEvent,
349    // Manufacturing - Work Order types
350    AddWorkOrderMaterial,
351    // Order types
352    Address,
353    // Customer types
354    AddressType,
355    // Inventory types
356    AdjustInventory,
357    // Warehouse & Location types
358    AdjustLocationInventory,
359    AdjustLot,
360    // Agent Card types
361    AgentCard,
362    AgentCardFilter,
363    AgentFeedback,
364    AgentFeedbackFilter,
365    AgentFeedbackResponse,
366    // ERC-8004 types
367    AgentIdentity,
368    AgentIdentityFilter,
369    AgentMetadataEntry,
370    AgentRegistrationFile,
371    AgentRegistrationRef,
372    AgentServiceEndpoint,
373    AgentValidationFilter,
374    AgentValidationRequest,
375    AgentValidationResponse,
376    AgentValidationStatus,
377    AgentWalletProofType,
378    AgingBucket,
379    // Backorder types
380    AllocateBackorder,
381    AllocationStatus,
382    // Analytics types
383    AnalyticsQuery,
384    // Accounts Payable types
385    ApAgingSummary,
386    // Promotion types
387    AppliedPromotion,
388    ApplyCartDiscount,
389    // Accounts Receivable types
390    ApplyCreditMemo,
391    ApplyPaymentToInvoices,
392    ApplyPromotionsRequest,
393    ApplyPromotionsResult,
394    ArAgingFilter,
395    ArAgingSummary,
396    ArPaymentApplication,
397    AutoPostingConfig,
398    Backorder,
399    BackorderAllocation,
400    BackorderFilter,
401    BackorderFulfillment,
402    BackorderPriority,
403    BackorderStatus,
404    BackorderSummary,
405    BalanceSheet,
406    BalanceSheetLine,
407    BalanceSide,
408    BatchResult,
409    Bill,
410    BillFilter,
411    BillItem,
412    // Manufacturing - BOM types
413    BillOfMaterials,
414    BillPayment,
415    BillPaymentFilter,
416    BillStatus,
417    // Subscription types
418    BillingCycle,
419    BillingCycleFilter,
420    BillingCycleStatus,
421    BillingInterval,
422    BomComponent,
423    BomFilter,
424    BomStatus,
425    // Tax types
426    CanadianTaxInfo,
427    CancelSubscription,
428    // Payment types
429    CardBrand,
430    Cart,
431    CartAddress,
432    CartFilter,
433    CartItem,
434    CartPaymentStatus,
435    CartStatus,
436    Carton,
437    CartonItem,
438    CertificateType,
439    // Serial Number types
440    ChangeSerialStatus,
441    CheckoutResult,
442    // Warranty types
443    ClaimResolution,
444    ClaimStatus,
445    // Month-end close orchestration types
446    CloseMonthOptions,
447    CloseMonthReport,
448    CloseMonthStepReport,
449    CloseMonthStepStatus,
450    CollectionActivity,
451    CollectionActivityFilter,
452    CollectionActivityType,
453    CollectionStatus,
454    // Errors
455    CommerceError,
456    // Events
457    CommerceEvent,
458    // Quality Control types
459    CompleteInspection,
460    CompletePick,
461    // Receiving types
462    CompletePutAway,
463    CompleteShip,
464    ConditionOperator,
465    ConditionType,
466    ConfirmDeliveryInput,
467    ConfirmDeliveryOutput,
468    ConsumeLot,
469    // Currency types
470    ConversionResult,
471    ConvertCurrency,
472    // Cost Accounting types
473    CostAdjustment,
474    CostAdjustmentFilter,
475    CostAdjustmentStatus,
476    CostAdjustmentType,
477    CostLayer,
478    CostLayerFilter,
479    CostLayerSource,
480    CostMethod,
481    CostRollup,
482    CostTransaction,
483    CostTransactionFilter,
484    CostTransactionType,
485    CostVariance,
486    CostVarianceFilter,
487    CouponCode,
488    CouponFilter,
489    CouponStatus,
490    CreateA2APurchase,
491    CreateA2AQuote,
492    CreateAgentCard,
493    CreateAgentFeedback,
494    CreateAgentFeedbackResponse,
495    CreateAgentIdentity,
496    CreateAgentValidationRequest,
497    CreateAgentValidationResponse,
498    CreateAutoPostingConfig,
499    CreateBackorder,
500    CreateBill,
501    CreateBillItem,
502    CreateBillPayment,
503    CreateBillingCycle,
504    CreateBom,
505    CreateBomComponent,
506    CreateCart,
507    CreateCollectionActivity,
508    CreateCostAdjustment,
509    CreateCostLayer,
510    CreateCouponCode,
511    // Credit types
512    CreateCreditAccount,
513    CreateCreditMemo,
514    CreateCustomObject,
515    CreateCustomObjectType,
516    CreateCustomer,
517    CreateCustomerAddress,
518    // Cycle count types
519    CreateCycleCount,
520    CreateCycleCountLine,
521    CreateDefectCode,
522    // Fraud types
523    CreateFraudAssessment,
524    // Gift Card types
525    CreateGiftCard,
526    CreateGlAccount,
527    CreateGlPeriod,
528    CreateInspection,
529    CreateInspectionItem,
530    CreateInventoryItem,
531    // Invoice types
532    CreateInvoice,
533    CreateInvoiceItem,
534    CreateJournalEntry,
535    CreateJournalEntryLine,
536    CreateLocation,
537    CreateLot,
538    // Loyalty types
539    CreateLoyaltyProgram,
540    CreateNcr,
541    CreateNonConformance,
542    CreateOrder,
543    CreateOrderItem,
544    CreatePackTask,
545    CreatePayment,
546    CreatePaymentMethod,
547    CreatePaymentRun,
548    CreatePickTask,
549    // Product types
550    CreateProduct,
551    CreateProductVariant,
552    CreatePromotion,
553    CreatePromotionCondition,
554    // Purchase Order types
555    CreatePurchaseOrder,
556    CreatePurchaseOrderItem,
557    CreatePutAway,
558    CreateQualityHold,
559    CreateReceipt,
560    CreateReceiptItem,
561    CreateReceiptLine,
562    CreateRefund,
563    // Return types
564    CreateReturn,
565    CreateReturnItem,
566    // Review types
567    CreateReview,
568    // Search Config types
569    CreateSearchConfig,
570    // Segment types
571    CreateSegment,
572    CreateSerial,
573    CreateSerialNumber,
574    CreateSerialNumbersBulk,
575    CreateShipTask,
576    CreateShipment,
577    CreateShipmentItem,
578    // Shipping Zone types
579    CreateShippingZone,
580    // Store Credit types
581    CreateStoreCredit,
582    CreateSubscription,
583    CreateSubscriptionItem,
584    CreateSubscriptionPlan,
585    CreateSubscriptionPlanItem,
586    CreateSupplier,
587    CreateTaxExemption,
588    CreateTaxJurisdiction,
589    CreateTaxRate,
590    CreateWarehouse,
591    CreateWarehouseLocation,
592    CreateWarranty,
593    CreateWarrantyClaim,
594    CreateWave,
595    // Wishlist types
596    CreateWishlist,
597    CreateWorkOrder,
598    CreateWorkOrderTask,
599    CreateWriteOff,
600    CreateX402CreditAccount,
601    // x402 Payment Protocol types
602    CreateX402PaymentIntent,
603    CreateZone,
604    CreditAccount,
605    CreditAccountFilter,
606    CreditAccountStatus,
607    CreditAgingBucket,
608    CreditApplication,
609    CreditApplicationFilter,
610    CreditApplicationStatus,
611    CreditCheckResult,
612    CreditHold,
613    CreditHoldFilter,
614    CreditHoldStatus,
615    CreditHoldType,
616    CreditMemo,
617    CreditMemoApplication,
618    CreditMemoFilter,
619    CreditMemoReason,
620    CreditMemoStatus,
621    CreditTransaction,
622    CreditTransactionFilter,
623    CreditTransactionType,
624    Currency,
625    CurrencyCode,
626    // Custom Objects (custom states / metaobjects)
627    CustomFieldDefinition,
628    CustomFieldType,
629    CustomObject,
630    CustomObjectFilter,
631    CustomObjectType,
632    CustomObjectTypeFilter,
633    Customer,
634    CustomerAddress,
635    CustomerArAging,
636    CustomerArSummary,
637    CustomerCreditSummary,
638    CustomerFilter,
639    CustomerId,
640    CustomerMetrics,
641    CustomerStatement,
642    CustomerStatus,
643    CycleCount,
644    CycleCountFilter,
645    CycleCountLine,
646    CycleCountStatus,
647    DateRange,
648    DefectCode,
649    DemandForecast,
650    DiscountTier,
651    DiscoverSellersInput,
652    DiscoverSellersOutput,
653    Disposition,
654    DunningLetterType,
655    ERC8004_REGISTRATION_V1,
656    EuVatInfo,
657    ExchangeRate,
658    ExchangeRateFilter,
659    ExemptionType,
660    FeedbackSummary,
661    FulfillBackorder,
662    // Typed IDs
663    FulfillmentId,
664    FulfillmentMetrics,
665    FulfillmentSourceType,
666    FulfillmentStatus,
667    FulfillmentType,
668    GenerateStatementRequest,
669    GlAccount,
670    GlAccountFilter,
671    GlPeriod,
672    GlPeriodFilter,
673    HoldType,
674    IncomeStatement,
675    IncomeStatementLine,
676    InitiatePurchaseInput,
677    InitiatePurchaseOutput,
678    Inspection,
679    InspectionFilter,
680    InspectionItem,
681    InspectionResult,
682    InspectionStatus,
683    InspectionType,
684    InventoryBalance,
685    InventoryFilter,
686    InventoryHealth,
687    InventoryItem,
688    InventoryMovement,
689    InventoryReservation,
690    InventoryTransaction,
691    InventoryValuation,
692    Invoice,
693    InvoiceFilter,
694    InvoiceItem,
695    InvoiceStatus,
696    InvoiceType,
697    IssueCostLayers,
698    ItemAvailability,
699    ItemCondition,
700    ItemCost,
701    ItemCostFilter,
702    JournalEntry,
703    JournalEntryFilter,
704    JournalEntryLine,
705    JournalEntrySource,
706    JournalEntryStatus,
707    JournalEntryType,
708    JurisdictionLevel,
709    JurisdictionSummary,
710    LineItemDiscount,
711    LineItemTax,
712    Location,
713    LocationFilter,
714    LocationInventory,
715    LocationInventoryFilter,
716    LocationMovement,
717    LocationStock,
718    LocationType,
719    Lot,
720    LotCertificate,
721    LotFilter,
722    LotLocation,
723    LotStatus,
724    LotTransaction,
725    LotTransactionType,
726    LowStockItem,
727    MergeLots,
728    Money,
729    MoveInventory,
730    MoveSerial,
731    MovementFilter,
732    MovementType,
733    NcrStatus,
734    NonConformance,
735    NonConformanceFilter,
736    NonConformanceSource,
737    Order,
738    OrderFilter,
739    OrderId,
740    OrderItem,
741    OrderItemId,
742    OrderStatus,
743    OrderStatusBreakdown,
744    PackStatus,
745    PackTask,
746    PackTaskFilter,
747    PackageType,
748    PauseSubscription,
749    PayBill,
750    Payment,
751    PaymentAllocation,
752    PaymentAllocationInput,
753    PaymentApplicationLine,
754    PaymentFilter,
755    PaymentId,
756    PaymentMethod,
757    PaymentMethodAP,
758    PaymentMethodType,
759    PaymentRun,
760    PaymentRunFilter,
761    PaymentRunStatus,
762    PaymentStatus,
763    PaymentStatusAP,
764    PaymentTerms,
765    PaymentTransactionStatus,
766    PeriodStatus,
767    PickStatus,
768    PickTask,
769    PickTaskFilter,
770    PlaceCreditHold,
771    PlanStatus,
772    Product,
773    ProductAttribute,
774    ProductFilter,
775    ProductId,
776    ProductPerformance,
777    ProductStatus,
778    ProductTaxCategory,
779    ProductType,
780    ProductVariant,
781    Promotion,
782    PromotionCondition,
783    PromotionFilter,
784    PromotionLineItem,
785    PromotionStatus,
786    PromotionTarget,
787    PromotionTrigger,
788    PromotionType,
789    PromotionUsage,
790    PurchaseOrder,
791    PurchaseOrderFilter,
792    PurchaseOrderItem,
793    PurchaseOrderStatus,
794    PurchaseStatus,
795    PutAway,
796    PutAwayFilter,
797    PutAwayStatus,
798    QualityHold,
799    QualityHoldFilter,
800    QuoteItem,
801    QuoteStatus,
802    QuotedItem,
803    Receipt,
804    ReceiptFilter,
805    ReceiptItem,
806    ReceiptItemStatus,
807    ReceiptStatus,
808    ReceiptType,
809    ReceiveItemLine,
810    ReceiveItems,
811    ReceivePurchaseOrderItems,
812    RecordCostVariance,
813    RecordCreditTransaction,
814    RecordCycleCountLine,
815    RecordInspectionResult,
816    RecordInvoicePayment,
817    Refund,
818    RefundStatus,
819    RejectedPromotion,
820    RejectionReason,
821    ReleaseCreditHold,
822    ReleaseQualityHold,
823    RequestQuoteInput,
824    RequestQuoteOutput,
825    ReservationStatus,
826    ReserveInventory,
827    ReserveLot,
828    ReserveSerialNumber,
829    Result,
830    Return,
831    ReturnFilter,
832    ReturnId,
833    ReturnItem,
834    ReturnMetrics,
835    ReturnReason,
836    ReturnReasonCount,
837    ReturnStatus,
838    RevenueByPeriod,
839    RevenueForecast,
840    ReviewCreditApplication,
841    RiskRating,
842    RoundingMode,
843    SalesSummary,
844    SegmentType,
845    SellerInfo,
846    SeoMetadata,
847    SerialEventType,
848    SerialFilter,
849    SerialHistory,
850    SerialHistoryFilter,
851    SerialLookupResult,
852    SerialNumber,
853    SerialReservation,
854    SerialStatus,
855    SerialValidation,
856    SetCartPayment,
857    SetCartShipping,
858    SetExchangeRate,
859    SetItemCost,
860    Severity,
861    ShipStatus,
862    ShipTask,
863    ShipTaskFilter,
864    Shipment,
865    ShipmentEvent,
866    ShipmentFilter,
867    ShipmentId,
868    ShipmentItem,
869    ShipmentStatus,
870    ShippingCarrier,
871    ShippingMethod,
872    ShippingRate,
873    SignX402PaymentIntent,
874    SkillQuote,
875    SkillQuoteFilter,
876    SkipBillingCycle,
877    SkuBackorderSummary,
878    SkuCostSummary,
879    SplitLot,
880    StackingBehavior,
881    StatementLineItem,
882    StatementTransactionType,
883    StockLevel,
884    StoreCreditReason,
885    StoreCurrencySettings,
886    SubmitCreditApplication,
887    Subscription,
888    SubscriptionEvent,
889    SubscriptionEventType,
890    SubscriptionFilter,
891    SubscriptionItem,
892    SubscriptionPlan,
893    SubscriptionPlanFilter,
894    SubscriptionPlanItem,
895    SubscriptionStatus,
896    Supplier,
897    SupplierApSummary,
898    SupplierFilter,
899    TaskStatus,
900    TaxAddress,
901    TaxBreakdown,
902    TaxCalculationMethod,
903    TaxCalculationRequest,
904    TaxCalculationResult,
905    TaxCompoundMethod,
906    TaxDetail,
907    TaxExemption,
908    TaxJurisdiction,
909    TaxJurisdictionFilter,
910    TaxLineItem,
911    TaxRate,
912    TaxRateFilter,
913    TaxSettings,
914    TaxType,
915    TimeGranularity,
916    TimePeriod,
917    TopCustomer,
918    TopProduct,
919    TopReturnedProduct,
920    TraceNode,
921    TraceNodeType,
922    TraceabilityResult,
923    TransactionType,
924    TransferLot,
925    TransferSerialOwnership,
926    Trend,
927    TrialBalance,
928    TrialBalanceLine,
929    TrustLevel,
930    UpdateAgentCard,
931    UpdateAgentIdentity,
932    UpdateBackorder,
933    UpdateBill,
934    UpdateBom,
935    UpdateCart,
936    UpdateCartItem,
937    UpdateCreditAccount,
938    UpdateCustomObject,
939    UpdateCustomObjectType,
940    UpdateCustomer,
941    UpdateGlAccount,
942    UpdateInspection,
943    UpdateInvoice,
944    UpdateLocation,
945    UpdateLot,
946    UpdateNonConformance,
947    UpdateOrder,
948    UpdatePayment,
949    UpdateProduct,
950    UpdatePromotion,
951    UpdatePurchaseOrder,
952    UpdateReceipt,
953    UpdateReturn,
954    UpdateSerialNumber,
955    UpdateShipment,
956    UpdateSubscription,
957    UpdateSubscriptionPlan,
958    UpdateSupplier,
959    UpdateWarehouse,
960    UpdateWarranty,
961    UpdateWarrantyClaim,
962    UpdateWorkOrder,
963    UpdateWorkOrderTask,
964    UpdateZone,
965    UsStateTaxInfo,
966    ValidationSummary,
967    VarianceType,
968    VariantOption,
969    Warehouse,
970    WarehouseAddress,
971    WarehouseFilter,
972    WarehouseType,
973    Warranty,
974    WarrantyClaim,
975    WarrantyClaimFilter,
976    WarrantyFilter,
977    WarrantyLookupStatus,
978    WarrantyStatus,
979    WarrantyType,
980    Wave,
981    WaveFilter,
982    WaveStatus,
983    WaveType,
984    WorkOrder,
985    WorkOrderFilter,
986    WorkOrderMaterial,
987    WorkOrderPriority,
988    WorkOrderStatus,
989    WorkOrderTask,
990    WriteOff,
991    WriteOffFilter,
992    WriteOffReason,
993    X402_DEFAULT_VALIDITY_SECONDS,
994    X402_DOMAIN_SEPARATOR,
995    X402_MAX_VALIDITY_SECONDS,
996    X402_VERSION,
997    X402Asset,
998    X402BatchStatus,
999    X402CreditAccount,
1000    X402CreditAdjustment,
1001    X402CreditDirection,
1002    X402CreditTransaction,
1003    X402CreditTransactionFilter,
1004    X402CryptoError,
1005    X402IntentStatus,
1006    X402Network,
1007    X402PaymentBatch,
1008    X402PaymentIntent,
1009    X402PaymentIntentFilter,
1010    X402PaymentReceipt,
1011    X402PaymentRequired,
1012    Zone,
1013    from_smallest_unit,
1014    generate_ap_payment_number,
1015    generate_backorder_number,
1016    generate_bill_number,
1017    generate_claim_number,
1018    generate_cost_adjustment_number,
1019    generate_coupon_code,
1020    generate_credit_application_number,
1021    generate_credit_memo_number,
1022    generate_invoice_number,
1023    generate_journal_entry_number,
1024    generate_payment_number,
1025    generate_payment_run_number,
1026    generate_plan_code,
1027    generate_po_number,
1028    generate_promotion_code,
1029    generate_refund_number,
1030    generate_subscription_number,
1031    generate_warranty_number,
1032    generate_write_off_number,
1033    generate_x402_intent_id,
1034    get_canadian_tax_info,
1035    get_eu_vat_info,
1036    get_us_state_tax_info,
1037    is_eu_member,
1038    to_smallest_unit,
1039    validate_currency_code,
1040    validate_custom_object_type_input,
1041    // Validation utilities
1042    validate_email,
1043    validate_phone,
1044    validate_postal_code,
1045    validate_price,
1046    validate_quantity,
1047    validate_sku,
1048};
1049
1050// Vector search types (feature-gated)
1051#[cfg(feature = "vector")]
1052pub use stateset_core::{
1053    EmbeddingConfig, EmbeddingMetadata, EmbeddingStats, EntityType, VectorSearchQuery,
1054    VectorSearchResult,
1055};
1056
1057/// Compiles the code examples in `README.md` as doctests, so the crates.io
1058/// landing page can never drift from the real API.
1059#[cfg(doctest)]
1060#[doc = include_str!("../README.md")]
1061struct ReadmeDoctests;