@cimplify/sdk 0.19.0 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/advanced.d.mts +2 -2
  2. package/dist/advanced.d.ts +2 -2
  3. package/dist/advanced.js +21 -21
  4. package/dist/advanced.mjs +2 -2
  5. package/dist/{chunk-RYQ5IPWX.js → chunk-2BSYTQAY.js} +18 -28
  6. package/dist/{chunk-AFEE43MQ.mjs → chunk-676BJ3EU.mjs} +43 -8
  7. package/dist/{chunk-7ACYNCNM.mjs → chunk-7KH2XJIW.mjs} +55 -12
  8. package/dist/{chunk-B2RTVYJR.js → chunk-AVVLN353.js} +76 -40
  9. package/dist/{chunk-FTL2SXCG.mjs → chunk-HG7GG3TT.mjs} +18 -28
  10. package/dist/{chunk-6SRY4DPY.js → chunk-KSN3RJFL.js} +74 -30
  11. package/dist/{client-FNZzXO_v.d.ts → client-D4E9aJy7.d.mts} +139 -7
  12. package/dist/{client-B3payjUV.d.mts → client-VyO6Bqz2.d.ts} +139 -7
  13. package/dist/index.d.mts +38 -5
  14. package/dist/index.d.ts +38 -5
  15. package/dist/index.js +101 -97
  16. package/dist/index.mjs +3 -3
  17. package/dist/{payment-CO2tRThu.d.mts → payment-CKqMU4xT.d.mts} +1051 -943
  18. package/dist/{payment-CO2tRThu.d.ts → payment-CKqMU4xT.d.ts} +1051 -943
  19. package/dist/{price-Bp6JlVzW.d.ts → price-BqV_DjjQ.d.mts} +1 -1
  20. package/dist/{price-Dg7MJEsL.d.mts → price-e4beObLZ.d.ts} +1 -1
  21. package/dist/react.d.mts +463 -11
  22. package/dist/react.d.ts +463 -11
  23. package/dist/react.js +1630 -113
  24. package/dist/react.mjs +1566 -65
  25. package/dist/styles.css +1 -1
  26. package/dist/utils.d.mts +2 -2
  27. package/dist/utils.d.ts +2 -2
  28. package/dist/utils.js +28 -28
  29. package/dist/utils.mjs +1 -1
  30. package/package.json +2 -2
  31. package/registry/availability-badge.json +1 -1
  32. package/registry/booking-page.json +1 -1
  33. package/registry/bundle-selector.json +1 -1
  34. package/registry/cart-summary.json +1 -1
  35. package/registry/composite-selector.json +1 -1
  36. package/registry/order-summary.json +1 -1
  37. package/registry/product-customizer.json +1 -1
  38. package/registry/search-input.json +1 -1
  39. package/registry/service-card.json +1 -1
  40. package/registry/variant-selector.json +1 -1
@@ -84,1128 +84,1236 @@ declare function enrichError(error: CimplifyError, options?: {
84
84
  }): CimplifyError;
85
85
  declare function isRetryableError(error: unknown): boolean;
86
86
 
87
- type ProductType = "product" | "service" | "digital" | "bundle" | "composite";
88
- type ProductRenderHint = "food" | "physical" | "general";
89
- type DisplayMode = "card" | "page";
90
- type InventoryType = "one_to_one" | "composition" | "none";
91
- type VariantStrategy = "fetch_all" | "use_axes";
92
- type DigitalProductType = "download" | "license" | "event_ticket" | "access_pass" | "gift_code";
93
- type DepositType = "none" | "fixed" | "percentage";
94
- type SalesChannel = "pos" | "online" | "marketplace" | "partners";
95
- type AttributeType = "text" | "textarea" | "number" | "currency" | "boolean" | "single_select" | "multi_select" | "radio" | "date" | "url" | "color" | "image" | "file";
96
- type AttributeAppliesTo = "product" | "variant" | "both";
97
- interface CustomAttributeDefinition {
98
- id: string;
99
- business_id: string;
100
- name: string;
101
- slug: string;
102
- description?: string;
103
- attribute_type: AttributeType;
104
- options?: string[];
105
- unit?: string;
106
- is_required: boolean;
107
- is_filterable: boolean;
108
- is_visible: boolean;
109
- display_order: number;
110
- group_name?: string;
111
- applies_to: AttributeAppliesTo;
112
- created_at: string;
113
- updated_at: string;
114
- }
115
- interface CustomAttributeValue {
116
- definition_id: string;
117
- name: string;
118
- slug: string;
119
- attribute_type: AttributeType;
120
- group_name?: string;
121
- unit?: string;
122
- value: string | number | boolean | string[] | null;
123
- is_filterable: boolean;
124
- }
125
- type PropertySource = "attribute" | "variant";
126
- interface ProductProperty {
127
- name: string;
128
- slug: string;
129
- source: PropertySource;
130
- value_type: string;
131
- values: (string | number | boolean | null)[];
132
- group_name?: string;
133
- unit?: string;
134
- is_filterable: boolean;
135
- }
136
- interface PropertyFacet {
137
- name: string;
138
- slug: string;
139
- source: string;
140
- values: FacetValue[];
141
- }
142
- interface FacetValue {
143
- value: string;
144
- count: number;
145
- }
146
- interface TaxonomyAttributeTemplate {
147
- id: string;
148
- taxonomy_id: string;
149
- name: string;
150
- slug: string;
151
- attribute_type: "boolean" | "single_select";
152
- options?: string[];
153
- is_required: boolean;
154
- display_order: number;
155
- gpc_attribute_code?: number;
156
- created_at: string;
157
- }
158
- interface KnowledgeArticle {
159
- id: string;
160
- title: string;
161
- slug: string;
162
- content: string;
163
- category?: string;
164
- tags: string[];
165
- created_at: string;
166
- updated_at: string;
167
- }
168
- interface Product {
169
- id: string;
170
- business_id: string;
171
- category_id?: string;
172
- name: string;
173
- slug: string;
174
- description?: string;
175
- image_url?: string;
176
- default_price: Money;
177
- type: ProductType;
178
- render_hint?: ProductRenderHint;
179
- display_mode?: DisplayMode;
180
- inventory_type: InventoryType;
181
- variant_strategy: VariantStrategy;
182
- inventory_status?: {
183
- in_stock: boolean;
184
- stock_level?: number;
185
- low_stock: boolean;
87
+ type CartStatus = "active" | "converting" | "converted" | "expired" | "abandoned";
88
+ type CartChannel = "qr" | "taker" | "staff" | "web" | "dashboard" | "tap" | "chat";
89
+ type PriceSource = "default_item" | "custom" | {
90
+ location_specific: string;
91
+ } | {
92
+ variant: string;
93
+ } | {
94
+ composite: string;
95
+ } | {
96
+ bundle: string;
97
+ };
98
+ type AdjustmentType = "time_based" | {
99
+ location_based: string;
100
+ } | {
101
+ variant_based: string;
102
+ } | {
103
+ customer_segment: string;
104
+ } | {
105
+ customer_loyalty: string;
106
+ } | {
107
+ channel_markup: string;
108
+ } | {
109
+ discount: string;
110
+ } | {
111
+ bundle: string;
112
+ } | {
113
+ manual: string;
114
+ } | {
115
+ time_limited_promotion: {
116
+ promotion_id: string;
117
+ valid_until: string;
186
118
  };
187
- is_active: boolean;
188
- created_at: string;
189
- updated_at: string;
190
- metadata?: Record<string, unknown>;
191
- tags?: string[];
192
- images?: string[];
193
- calories?: number;
194
- allergies?: string[];
195
- recipe?: Record<string, unknown>;
196
- sku?: string;
197
- barcode?: string;
198
- ean?: string;
199
- upc?: string;
200
- is_trackable?: boolean;
201
- is_tracked?: boolean;
202
- is_tracked_in_store?: boolean;
203
- is_tracked_in_warehouse?: boolean;
204
- inventory_threshold?: number;
205
- external_id?: string;
206
- external_source?: string;
207
- download_url?: string;
208
- digital_type?: DigitalProductType;
209
- max_downloads?: number;
210
- license_key_required?: boolean;
211
- file_size_mb?: number;
212
- file_hash?: string;
213
- file_type?: string;
214
- version?: string;
215
- download_expires_days?: number;
216
- license_key_format?: string;
217
- max_activations?: number;
218
- validity_days?: number;
219
- event_id?: string;
220
- event_date?: string;
221
- venue?: string;
222
- ticket_type?: string;
223
- seat_info?: Record<string, unknown>;
224
- access_type?: string;
225
- access_level?: string;
226
- access_duration_days?: number;
227
- code_type?: string;
228
- code_value?: Money;
229
- code_currency?: CurrencyCode;
230
- duration_minutes?: number;
231
- preparation_time_minutes?: number;
232
- staff_required_count?: number;
233
- buffer_before_minutes?: number;
234
- buffer_after_minutes?: number;
235
- general_service_capacity?: number;
236
- deposit_type?: DepositType;
237
- deposit_amount?: Money;
238
- cancellation_window_minutes?: number;
239
- no_show_fee?: Money;
240
- requires_specific_staff?: boolean;
241
- requires_specific_resource?: boolean;
242
- hs_code?: string;
243
- mid_code?: string;
244
- material?: string;
245
- allow_backorder?: boolean;
246
- item_condition?: string;
247
- vendor?: string;
248
- length_mm?: number;
249
- width_mm?: number;
250
- height_mm?: number;
251
- channels?: SalesChannel[];
252
- meta_title?: string;
253
- meta_description?: string;
254
- is_discountable?: boolean;
255
- taxonomy_id?: string;
256
- bundle_price?: Money;
257
- discount_value?: Money;
258
- pricing_type?: BundlePriceType;
259
- components?: BundleComponentView[];
260
- composite_id?: string;
261
- groups?: CompositeGroupView[];
262
- custom_attributes?: CustomAttributeValue[];
263
- properties?: ProductProperty[];
264
- }
265
- interface ProductWithDetails extends Product {
266
- category?: Category;
267
- variants?: ProductVariant[];
268
- add_ons?: AddOnWithOptions[];
269
- variant_axes?: VariantAxisWithValues[];
270
- location_prices?: LocationProductPrice[];
271
- location_availability?: ProductAvailability[];
272
- time_profiles?: ProductTimeProfile[];
273
- }
274
- interface ProductVariant {
275
- id: string;
276
- name?: string;
277
- business_id: string;
278
- product_id: string;
279
- component_multiplier: Money;
280
- price_adjustment: Money;
281
- is_default: boolean;
282
- created_at: string;
283
- updated_at: string;
284
- is_active?: boolean;
285
- is_archived?: boolean;
286
- is_deleted?: boolean;
287
- inventory_threshold?: number;
288
- images?: string[];
289
- external_id?: string;
290
- external_source?: string;
291
- ean?: string;
292
- upc?: string;
293
- is_trackable?: boolean;
294
- is_tracked?: boolean;
295
- is_tracked_in_store?: boolean;
296
- is_tracked_in_warehouse?: boolean;
297
- sku?: string;
298
- barcode?: string;
299
- download_url?: string;
300
- metadata?: Record<string, unknown>;
301
- duration_minutes?: number;
302
- max_downloads?: number;
303
- license_key?: string;
304
- display_attributes?: VariantDisplayAttribute[];
305
- }
306
- interface VariantDisplayAttribute {
307
- axis_id: string;
308
- axis_name: string;
309
- value_id: string;
310
- value_name: string;
119
+ };
120
+ interface PriceAdjustment {
121
+ adjustment_type: AdjustmentType;
122
+ amount: Money;
123
+ percentage?: Money;
124
+ reason: string;
125
+ applied_at: string;
311
126
  }
312
- interface VariantAxis {
313
- id: string;
314
- business_id: string;
315
- product_id: string;
127
+ interface TaxPathComponent {
316
128
  name: string;
317
- display_order: number;
318
- affects_recipe: boolean;
319
- created_at: string;
320
- updated_at: string;
321
- metadata?: Record<string, unknown>;
322
- }
323
- interface VariantAxisWithValues extends VariantAxis {
324
- values: VariantAxisValue[];
129
+ rate: Money;
325
130
  }
326
- interface VariantAxisValue {
327
- id: string;
328
- business_id: string;
329
- axis_id: string;
330
- name: string;
331
- display_order: number;
332
- created_at: string;
333
- updated_at: string;
334
- metadata?: Record<string, unknown>;
131
+ interface PricePathTaxInfo {
132
+ tax_rate: Money;
133
+ tax_amount: Money;
134
+ is_inclusive: boolean;
135
+ components: TaxPathComponent[];
335
136
  }
336
- interface ProductVariantValue {
337
- variant_id: string;
338
- axis_value_id: string;
339
- business_id: string;
340
- created_at: string;
341
- updated_at: string;
342
- metadata?: Record<string, unknown>;
137
+ interface PriceDecisionPath {
138
+ base_price_source: PriceSource;
139
+ adjustments: PriceAdjustment[];
140
+ context?: Record<string, unknown>;
343
141
  }
344
- interface VariantLocationAvailability {
345
- id: string;
346
- variant_id: string;
347
- location_id: string;
348
- business_id: string;
349
- is_available: boolean;
350
- is_in_stock: boolean;
351
- created_at: string;
352
- updated_at: string;
353
- metadata?: Record<string, unknown>;
142
+ interface ChosenPrice {
143
+ base_price: Money;
144
+ final_price: Money;
145
+ markup_percentage: Money;
146
+ markup_amount: Money;
147
+ markup_discount_percentage: Money;
148
+ markup_discount_amount: Money;
149
+ currency?: CurrencyCode;
150
+ custom_fields?: Record<string, unknown>;
151
+ decision_path?: PriceDecisionPath;
152
+ tax_info?: PricePathTaxInfo;
153
+ pre_tax_price?: Money;
354
154
  }
355
- interface VariantAxisSelection {
356
- [axisName: string]: string;
155
+ type BenefitType = "percentage" | "fixed" | "points" | "free_item" | "buy_x_get_y_free";
156
+ interface AppliedDiscount {
157
+ discount_id: string;
158
+ discount_code?: string;
159
+ discount_type: BenefitType;
160
+ discount_value: Money;
161
+ discount_amount: Money;
162
+ applied_at: string;
163
+ targeted_item_ids?: string[];
357
164
  }
358
- interface AddOn {
359
- id: string;
360
- business_id: string;
361
- name: string;
362
- is_multiple_allowed: boolean;
363
- is_required: boolean;
364
- is_mutually_exclusive: boolean;
365
- min_selections?: number;
366
- max_selections?: number;
367
- created_at: string;
368
- updated_at: string;
369
- metadata?: Record<string, unknown>;
165
+ interface DiscountBreakdown {
166
+ item_discounts: Record<string, AppliedDiscount[]>;
167
+ order_discounts: AppliedDiscount[];
370
168
  }
371
- interface AddOnWithOptions extends AddOn {
372
- options: AddOnOption[];
169
+ interface DiscountDetails {
170
+ discounts: AppliedDiscount[];
171
+ total_discount_amount: Money;
172
+ breakdown: DiscountBreakdown;
373
173
  }
374
- interface AddOnOption {
375
- id: string;
174
+ interface SelectedAddOnOption {
175
+ option_id: string;
376
176
  add_on_id: string;
377
- business_id: string;
378
177
  name: string;
379
- option_sku?: string;
380
- default_price?: Money;
381
- description?: string;
178
+ price: Money;
179
+ quantity: number;
382
180
  is_required: boolean;
383
- is_mutually_exclusive: boolean;
384
- created_at: string;
385
- updated_at: string;
386
- metadata?: Record<string, unknown>;
181
+ selected_at: string;
182
+ price_info?: ChosenPrice;
387
183
  }
388
- interface AddOnOptionPrice {
389
- id: string;
390
- add_on_option_id: string;
391
- location_id: string;
392
- business_id: string;
393
- price: Money;
394
- created_at: string;
395
- updated_at: string;
396
- metadata?: Record<string, unknown>;
184
+ interface AddOnDetails {
185
+ selected_options: SelectedAddOnOption[];
186
+ total_add_on_price: Money;
187
+ add_ons: CartAddOn[];
397
188
  }
398
- interface ProductAddOn {
399
- id: string;
400
- business_id: string;
401
- product_id: string;
189
+ interface CartAddOn {
402
190
  add_on_id: string;
403
- created_at: string;
404
- updated_at: string;
405
- metadata?: Record<string, unknown>;
406
- }
407
- interface Category {
408
- id: string;
409
- business_id: string;
410
191
  name: string;
411
- slug: string;
412
- description?: string;
413
- product_count?: number;
414
- created_at: string;
415
- updated_at: string;
416
- metadata?: Record<string, unknown>;
192
+ min_selections: number;
193
+ max_selections: number;
194
+ selected_options: string[];
195
+ is_required: boolean;
417
196
  }
418
- interface CategorySummary extends Category {
419
- product_count: number;
197
+ interface VariantDetails {
198
+ variant_id: string;
199
+ sku?: string;
200
+ properties: Record<string, string>;
420
201
  }
421
- interface Collection {
422
- id: string;
423
- business_id: string;
424
- name: string;
425
- slug: string;
426
- description?: string;
427
- tags?: string[];
428
- image_url?: string;
429
- channels?: SalesChannel[];
430
- product_count?: number;
431
- created_at: string;
432
- updated_at: string;
433
- metadata?: Record<string, unknown>;
202
+ interface BundleSelectionInput {
203
+ component_id: string;
204
+ variant_id?: string;
205
+ quantity: number;
206
+ scheduled_start?: string;
207
+ scheduled_end?: string;
434
208
  }
435
- interface CollectionSummary extends Collection {
436
- product_count: number;
209
+ interface ComponentSchedulingData {
210
+ scheduled_start?: string;
211
+ scheduled_end?: string;
212
+ service_status: string;
213
+ confirmation_code?: string;
214
+ appointment_id?: string;
437
215
  }
438
- interface CollectionProduct {
439
- id: string;
440
- collection_id: string;
216
+ interface BundleStoredSelection {
217
+ component_id: string;
441
218
  product_id: string;
442
- display_order?: number;
443
- created_at: string;
444
- updated_at: string;
445
- metadata?: Record<string, unknown>;
219
+ product_name: string;
220
+ variant_id?: string;
221
+ variant_name?: string;
222
+ quantity: number;
223
+ unit_price: Money;
224
+ product_type?: ProductType;
225
+ scheduling?: ComponentSchedulingData;
446
226
  }
447
- type BundlePriceType = "fixed" | "percentage_discount" | "fixed_discount";
448
- interface Bundle {
227
+ interface BundleSelectionData {
228
+ bundle_id: string;
229
+ selections: BundleStoredSelection[];
230
+ }
231
+ interface CompositeStoredSelection {
232
+ component_id: string;
233
+ component_name: string;
234
+ quantity: number;
235
+ group_id: string;
236
+ source_type: "product" | "stock" | "add_on" | "standalone";
237
+ source_product_id?: string;
238
+ source_stock_id?: string;
239
+ unit_price: Money;
240
+ product_type?: ProductType;
241
+ scheduling?: ComponentSchedulingData;
242
+ }
243
+ interface CompositePriceBreakdown {
244
+ base_price: Money;
245
+ components_total: Money;
246
+ tier_applied?: string;
247
+ final_price: Money;
248
+ }
249
+ interface CompositeSelectionData {
250
+ composite_id: string;
251
+ selections: CompositeStoredSelection[];
252
+ breakdown: CompositePriceBreakdown;
253
+ }
254
+
255
+ type LineConfiguration = {
256
+ type: "simple";
257
+ variant?: VariantDetails;
258
+ add_ons?: AddOnDetails;
259
+ } | {
260
+ type: "service";
261
+ variant?: VariantDetails;
262
+ add_ons?: AddOnDetails;
263
+ scheduled_start?: string;
264
+ scheduled_end?: string;
265
+ confirmation_code?: string;
266
+ service_status?: string;
267
+ primary_staff_id?: string;
268
+ scheduling_metadata?: Record<string, unknown>;
269
+ } | {
270
+ type: "bundle";
271
+ variant?: VariantDetails;
272
+ input: BundleSelectionInput[];
273
+ resolved?: BundleSelectionData;
274
+ add_ons?: AddOnDetails;
275
+ } | {
276
+ type: "composite";
277
+ variant?: VariantDetails;
278
+ input: ComponentSelectionInput[];
279
+ resolved?: CompositeSelectionData;
280
+ add_ons?: AddOnDetails;
281
+ } | {
282
+ type: "digital";
283
+ variant?: VariantDetails;
284
+ add_ons?: AddOnDetails;
285
+ digital_type?: string;
286
+ fulfillment_id?: string;
287
+ };
288
+ interface Cart {
449
289
  id: string;
450
290
  business_id: string;
451
- product_id: string;
452
- name: string;
453
- slug: string;
454
- description?: string;
455
- image_url?: string;
456
- pricing_type: BundlePriceType;
457
- bundle_price?: Money;
458
- discount_value?: Money;
459
- product_count?: number;
291
+ customer_id?: string;
292
+ session_id?: string;
293
+ location_id?: string;
460
294
  created_at: string;
461
295
  updated_at: string;
296
+ expires_at: string;
297
+ subtotal: Money;
298
+ tax_amount: Money;
299
+ service_charge: Money;
300
+ total_discounts: Money;
301
+ total_price: Money;
302
+ delivery_fee: Money;
303
+ total_items: number;
304
+ tax_rate?: Money;
305
+ service_charge_rate?: Money;
306
+ price_info: ChosenPrice;
307
+ applied_discount_ids: string[];
308
+ applied_discount_codes: string[];
309
+ discount_details?: DiscountDetails;
310
+ currency: CurrencyCode;
311
+ customer_name?: string;
312
+ customer_email?: string;
313
+ customer_phone?: string;
314
+ customer_address?: string;
315
+ source: string;
316
+ status: CartStatus;
317
+ channel: string;
318
+ order_id?: string;
462
319
  metadata?: Record<string, unknown>;
320
+ items: CartItem[];
463
321
  }
464
- interface BundleSummary extends Bundle {
465
- product_count: number;
466
- }
467
- interface BundleProduct {
322
+ interface CartItem {
468
323
  id: string;
469
- bundle_id: string;
470
- product_id: string;
471
- variant_id?: string;
472
- allow_variant_choice: boolean;
324
+ cart_id: string;
325
+ item_id: string;
473
326
  quantity: number;
327
+ line_key: string;
328
+ configuration: LineConfiguration;
329
+ price: Money;
330
+ add_ons_price: Money;
331
+ price_info: ChosenPrice;
332
+ applied_discount_ids: string[];
333
+ item_discount_amount: Money;
334
+ discount_details?: DiscountDetails;
474
335
  created_at: string;
475
336
  updated_at: string;
476
337
  metadata?: Record<string, unknown>;
477
338
  }
478
- interface BundleWithDetails extends Bundle {
479
- product: Product;
480
- components: BundleComponentData[];
481
- schedules?: ProductTimeProfile[];
482
- availability?: Record<string, ProductAvailability>;
483
- }
484
- interface BundleComponentData {
485
- component: BundleProduct;
486
- product: Product;
487
- variants: ProductVariant[];
488
- variant_axes: VariantAxis[];
489
- variant_axis_values: VariantAxisValue[];
490
- product_variant_values: ProductVariantValue[];
339
+ interface CartTotals {
340
+ subtotal: Money;
341
+ tax_amount: Money;
342
+ service_charge: Money;
343
+ total_discounts: Money;
344
+ total_price: Money;
345
+ tax_rate?: Money;
346
+ service_charge_rate?: Money;
347
+ applied_discount_ids: string[];
348
+ applied_discount_codes: string[];
349
+ discount_details?: DiscountDetails;
491
350
  }
492
- interface BundleComponentInfo {
351
+ interface DisplayCart {
493
352
  id: string;
494
- product_id: string;
495
- variant_id?: string;
496
- quantity: number;
353
+ business_id: string;
354
+ customer_id?: string;
355
+ session_id?: string;
356
+ location_id?: string;
357
+ subtotal: Money;
358
+ tax_amount: Money;
359
+ service_charge: Money;
360
+ total_discounts: Money;
361
+ total_price: Money;
362
+ delivery_fee: Money;
363
+ total_items: number;
364
+ tax_rate?: Money;
365
+ service_charge_rate?: Money;
366
+ currency: CurrencyCode;
367
+ channel: string;
368
+ status: string;
369
+ business_name: string;
370
+ business_logo?: string;
371
+ location_name?: string;
372
+ customer_name?: string;
373
+ customer_email?: string;
374
+ customer_phone?: string;
375
+ customer_address?: string;
376
+ items: DisplayCartItem[];
377
+ applied_discount_codes: string[];
378
+ discount_details?: DiscountDetails;
497
379
  }
498
- interface BundleComponentView {
380
+ interface DisplayCartItem {
499
381
  id: string;
500
- product_id: string;
501
- product_name: string;
502
- product_description?: string;
503
- product_image_url?: string;
504
- effective_price: Money;
382
+ cart_id: string;
383
+ item_id: string;
505
384
  quantity: number;
506
- variant_id?: string;
507
- allow_variant_choice: boolean;
508
- available_variants: BundleComponentVariantView[];
509
- variant_axes?: VariantAxisView[];
385
+ name: string;
386
+ description?: string;
387
+ image_url?: string;
388
+ category_name?: string;
389
+ is_available: boolean;
390
+ preparation_time?: number;
391
+ unit_price: Money;
392
+ total_price: Money;
393
+ add_ons_price: Money;
394
+ price_info: ChosenPrice;
395
+ item_discount_amount: Money;
396
+ discount_details?: DiscountDetails;
397
+ add_ons: DisplayAddOn[];
398
+ special_instructions?: string;
510
399
  }
511
- interface BundleComponentVariantView {
400
+ interface DisplayAddOn {
512
401
  id: string;
513
- is_default: boolean;
514
- display_name: string;
515
- price_adjustment: Money;
402
+ name: string;
403
+ min_selections: number;
404
+ max_selections: number;
405
+ is_required: boolean;
406
+ selected_options: DisplayAddOnOption[];
516
407
  }
517
- interface VariantAxisView {
408
+ interface DisplayAddOnOption {
518
409
  id: string;
519
410
  name: string;
520
- values: VariantAxisValueView[];
411
+ price: Money;
412
+ quantity: number;
413
+ image_url?: string;
414
+ description?: string;
521
415
  }
522
- interface VariantAxisValueView {
523
- id: string;
524
- value: string;
416
+ interface UICartBusiness {
417
+ name: string;
418
+ logo_url?: string;
419
+ contact_email?: string;
420
+ contact_phone?: string;
525
421
  }
526
- type CompositePricingMode = "additive" | "highest_per_group" | "highest_overall" | "tiered";
527
- type GroupPricingBehavior = "additive" | "first_n_free" | "flat_fee" | "highest_only";
528
- type ComponentSourceType = "product" | "stock" | "add_on" | "standalone";
529
- interface Composite {
530
- id: string;
531
- business_id: string;
532
- product_id: string;
533
- base_price: Money;
534
- pricing_mode: CompositePricingMode;
535
- min_order_quantity?: number;
536
- max_order_quantity?: number;
537
- created_at: string;
538
- updated_at: string;
539
- metadata?: Record<string, unknown>;
422
+ interface UICartLocation {
423
+ id?: string;
424
+ name?: string;
540
425
  }
541
- interface CompositeWithDetails extends Composite {
542
- product: Product;
543
- groups: ComponentGroupWithComponents[];
426
+ interface UICartCustomer {
427
+ id?: string;
428
+ name?: string;
429
+ email?: string;
430
+ phone?: string;
431
+ address?: string;
544
432
  }
545
- interface ComponentGroup {
433
+ interface UICartPricing {
434
+ subtotal: Money;
435
+ tax_amount: Money;
436
+ service_charge: Money;
437
+ total_discounts: Money;
438
+ total_price: Money;
439
+ tax_rate?: Money;
440
+ service_charge_rate?: Money;
441
+ currency: CurrencyCode;
442
+ }
443
+ interface AddOnOptionDetails {
546
444
  id: string;
547
- composite_id: string;
548
445
  name: string;
446
+ price?: Money;
447
+ is_required: boolean;
549
448
  description?: string;
550
- display_order: number;
551
- min_selections: number;
552
- max_selections?: number;
553
- allow_quantity: boolean;
554
- max_quantity_per_component?: number;
555
- pricing_behavior: GroupPricingBehavior;
556
- pricing_behavior_config?: Record<string, unknown>;
557
- icon?: string;
558
- color?: string;
559
- created_at: string;
560
- updated_at: string;
561
- }
562
- interface ComponentGroupWithComponents extends ComponentGroup {
563
- components: CompositeComponent[];
449
+ image_url?: string;
564
450
  }
565
- interface CompositeGroupView {
451
+ interface AddOnGroupDetails {
566
452
  id: string;
567
453
  name: string;
568
- description?: string;
454
+ is_multiple_allowed: boolean;
569
455
  min_selections: number;
570
456
  max_selections: number;
571
- allow_quantity: boolean;
572
- max_quantity_per_component?: number;
573
- display_order: number;
574
- components: CompositeComponentView[];
457
+ required: boolean;
458
+ options: AddOnOptionDetails[];
575
459
  }
576
- interface CompositeComponentView {
460
+ interface VariantDetailsDTO {
577
461
  id: string;
578
- display_name?: string;
579
- display_description?: string;
580
- display_image_url?: string;
462
+ name: string;
581
463
  price: Money;
582
- calories?: number;
583
- display_order: number;
584
- is_popular: boolean;
585
- is_premium: boolean;
586
- is_available: boolean;
587
- is_archived: boolean;
464
+ price_adjustment: Money;
465
+ is_default: boolean;
588
466
  }
589
- interface CompositeComponent {
467
+ interface CartItemDetails {
590
468
  id: string;
591
- group_id: string;
592
- product_id?: string;
593
- variant_id?: string;
594
- stock_id?: string;
595
- add_on_id?: string;
596
- add_on_option_id?: string;
597
- display_name?: string;
598
- display_description?: string;
599
- display_image_url?: string;
600
- price: Money;
601
- price_per_additional?: Money;
602
- quantity_per_selection?: Money;
603
- waste_percentage?: Money;
604
- calories?: number;
605
- allergens?: string[];
606
- display_order: number;
607
- is_popular: boolean;
608
- is_premium: boolean;
609
- is_available: boolean;
610
- is_archived: boolean;
611
- created_at: string;
612
- updated_at: string;
613
- }
614
- interface ComponentSelectionInput {
615
- component_id: string;
469
+ cart_id: string;
470
+ item_id: string;
616
471
  quantity: number;
472
+ line_key: string;
473
+ line_type: "simple" | "service" | "bundle" | "composite" | "digital";
474
+ name: string;
475
+ description?: string;
476
+ image_url?: string;
477
+ category_id?: string;
478
+ category_name?: string;
479
+ is_available: boolean;
617
480
  variant_id?: string;
618
- add_on_option_id?: string;
619
- }
620
- interface CompositePriceResult {
481
+ variant_details?: VariantDetails;
482
+ variant_name?: string;
483
+ variant_info?: VariantDetailsDTO;
621
484
  base_price: Money;
622
- components_total: Money;
623
- tier_applied?: string;
624
- final_price: Money;
625
- breakdown: ComponentPriceBreakdown[];
626
- }
627
- interface ComponentPriceBreakdown {
628
- component_id: string;
629
- component_name: string;
630
- quantity: number;
631
- unit_price: Money;
485
+ add_ons_price: Money;
632
486
  total_price: Money;
633
- group_id: string;
634
- source_type: ComponentSourceType;
635
- source_product_id?: string;
636
- source_stock_id?: string;
637
- }
638
- type PriceEntryType = "base" | "location" | "time" | "channel";
639
- interface Price {
640
- id: string;
641
- product_id: string;
642
- location_id: string;
643
- business_id: string;
644
- price: Money;
645
- entry_type: PriceEntryType;
487
+ item_discount_amount: Money;
488
+ price_info: ChosenPrice;
489
+ add_on_option_ids: string[];
490
+ add_on_ids: string[];
491
+ add_on_details: AddOnDetails;
492
+ add_on_options: AddOnOptionDetails[];
493
+ add_ons: AddOnGroupDetails[];
494
+ special_instructions?: string;
495
+ scheduled_start?: string;
496
+ scheduled_end?: string;
497
+ confirmation_code?: string;
498
+ service_status?: string;
499
+ staff_id?: string;
500
+ scheduling_metadata?: Record<string, unknown>;
501
+ bundle_selections?: BundleSelectionInput[];
502
+ bundle_resolved?: BundleSelectionData;
503
+ composite_selections?: ComponentSelectionInput[];
504
+ composite_resolved?: CompositeSelectionData;
505
+ applied_discount_ids: string[];
506
+ discount_details?: DiscountDetails;
646
507
  created_at: string;
647
508
  updated_at: string;
648
509
  metadata?: Record<string, unknown>;
649
510
  }
650
- type LocationProductPrice = Price;
651
- interface ProductAvailability {
511
+ interface UICart {
652
512
  id: string;
653
513
  business_id: string;
654
- location_id: string;
655
- product_id: string;
656
- is_available: boolean;
657
- is_in_stock: boolean;
514
+ session_id?: string;
515
+ customer_id?: string;
516
+ location_id?: string;
658
517
  created_at: string;
659
518
  updated_at: string;
519
+ expires_at: string;
520
+ status: string;
521
+ source: string;
522
+ channel: string;
523
+ business_details?: UICartBusiness;
524
+ location_details?: UICartLocation;
525
+ customer_info: UICartCustomer;
526
+ items: CartItemDetails[];
527
+ pricing: UICartPricing;
660
528
  metadata?: Record<string, unknown>;
661
529
  }
662
- interface ProductTimeProfile {
530
+ interface UICartResponse {
531
+ cart: UICart;
532
+ cart_count: number;
533
+ message?: string | null;
534
+ }
535
+ interface AddToCartInput {
536
+ item_id: string;
537
+ quantity?: number;
538
+ variant_id?: string;
539
+ quote_id?: string;
540
+ add_on_options?: string[];
541
+ special_instructions?: string;
542
+ bundle_selections?: BundleSelectionInput[];
543
+ composite_selections?: ComponentSelectionInput[];
544
+ scheduled_start?: string;
545
+ scheduled_end?: string;
546
+ staff_id?: string;
547
+ }
548
+ interface UpdateCartItemInput {
549
+ quantity?: number;
550
+ variant_id?: string;
551
+ add_on_options?: string[];
552
+ notes?: string;
553
+ bundle_selections?: BundleSelectionInput[];
554
+ composite_selections?: ComponentSelectionInput[];
555
+ scheduled_start?: string;
556
+ scheduled_end?: string;
557
+ staff_id?: string;
558
+ }
559
+ interface CartSummary {
560
+ item_count: number;
561
+ total_items: number;
562
+ subtotal: Money;
563
+ discount_amount: Money;
564
+ tax_amount: Money;
565
+ total: Money;
566
+ currency: CurrencyCode;
567
+ }
568
+
569
+ type BillingFrequency = "weekly" | "monthly" | "quarterly" | "annually";
570
+ type BillingPlanType = "subscription" | "installment";
571
+ type BillingMarkupType = "fixed" | "percentage";
572
+ interface ProductBillingPlan {
663
573
  id: string;
664
- business_id: string;
665
574
  product_id: string;
666
- day_of_week: number;
667
- start_time: string;
668
- end_time: string;
575
+ business_id: string;
576
+ frequency: BillingFrequency;
577
+ fulfillment_frequency?: BillingFrequency | null;
578
+ plan_type: BillingPlanType;
579
+ installment_periods?: number | null;
580
+ trial_days: number;
581
+ setup_fee: number;
582
+ markup_type?: BillingMarkupType | null;
583
+ markup_amount?: number | null;
584
+ customer_group_id?: string | null;
585
+ min_quantity?: number | null;
586
+ min_order_value?: number | null;
587
+ max_cycles?: number | null;
588
+ is_active: boolean;
669
589
  created_at: string;
670
590
  updated_at: string;
671
591
  metadata?: Record<string, unknown>;
672
592
  }
673
- interface ProductTaxonomy {
593
+ interface EligiblePlansQuery {
594
+ customer_id?: string;
595
+ quantity?: number;
596
+ order_value?: number;
597
+ }
598
+ interface FormattedPlanOption {
599
+ plan: ProductBillingPlan;
600
+ label: string;
601
+ pricePerPeriod: number;
602
+ totalPrice?: number;
603
+ }
604
+
605
+ type ProductType = "product" | "service" | "digital" | "bundle" | "composite";
606
+ type ProductRenderHint = "food" | "physical" | "general";
607
+ type DisplayMode = "card" | "page";
608
+ type InventoryType = "one_to_one" | "composition" | "none";
609
+ type VariantStrategy = "fetch_all" | "use_axes";
610
+ type DigitalProductType = "download" | "license" | "event_ticket" | "access_pass" | "gift_code";
611
+ type DepositType = "none" | "fixed" | "percentage";
612
+ type DurationUnit = "minutes" | "hours" | "days" | "nights" | "weeks" | "months" | "years";
613
+ type SalesChannel = "pos" | "online" | "marketplace" | "partners";
614
+ type AttributeType = "text" | "textarea" | "number" | "currency" | "boolean" | "single_select" | "multi_select" | "radio" | "date" | "url" | "color" | "image" | "file" | "product_reference" | "category_reference" | "collection_reference" | "variant_reference" | "list_text" | "list_number" | "list_date" | "dimension" | "weight" | "volume";
615
+ type AttributeAppliesTo = "product" | "variant" | "both" | "category" | "collection" | "all";
616
+ type AttributeVisibility = "admin_only" | "storefront_read" | "public";
617
+ type MeasurementValue = {
618
+ value: number;
619
+ unit: string;
620
+ };
621
+ interface AttributeValidationRules {
622
+ min_length?: number;
623
+ max_length?: number;
624
+ regex?: string;
625
+ min?: number | string;
626
+ max?: number | string;
627
+ max_precision?: number;
628
+ min_selections?: number;
629
+ max_selections?: number;
630
+ }
631
+ interface CustomAttributeDefinition {
674
632
  id: string;
675
- code: string;
633
+ business_id: string;
634
+ namespace: string;
676
635
  name: string;
636
+ slug: string;
677
637
  description?: string;
678
- parent_id?: string;
679
- level: number;
680
- is_active: boolean;
638
+ attribute_type: AttributeType;
639
+ options?: string[];
640
+ unit?: string;
641
+ validation?: AttributeValidationRules | null;
642
+ is_required: boolean;
643
+ is_filterable: boolean;
644
+ visibility: AttributeVisibility;
645
+ display_order: number;
646
+ group_name?: string;
647
+ applies_to: AttributeAppliesTo;
681
648
  created_at: string;
682
649
  updated_at: string;
683
650
  }
684
- interface TaxonomyWithChildren extends ProductTaxonomy {
685
- children: ProductTaxonomy[];
686
- }
687
- interface ProductAvailabilityNow {
688
- is_available: boolean;
689
- schedules_today: ProductTimeProfile[];
651
+ interface CustomAttributeValue {
652
+ definition_id: string;
653
+ namespace: string;
654
+ name: string;
655
+ slug: string;
656
+ attribute_type: AttributeType;
657
+ group_name?: string;
658
+ unit?: string;
659
+ value: string | number | boolean | string[] | MeasurementValue | null;
660
+ is_filterable: boolean;
661
+ visibility: AttributeVisibility;
690
662
  }
691
- type DealBenefitType = "percentage" | "fixed" | "free_item" | "buy_x_get_y_free" | "points";
692
- interface Deal {
693
- id: string;
694
- description: string;
695
- benefit_type: DealBenefitType;
696
- value: Money;
697
- min_order_value?: Money;
698
- buy_quantity?: number;
699
- get_quantity?: number;
700
- stackable: boolean;
701
- starts_at: string;
702
- ends_at: string;
703
- product_ids: string[];
704
- category_ids: string[];
705
- collection_ids: string[];
663
+ type PropertySource = "attribute" | "variant";
664
+ interface ProductProperty {
665
+ name: string;
666
+ slug: string;
667
+ source: PropertySource;
668
+ value_type: string;
669
+ values: (string | number | boolean | null)[];
670
+ group_name?: string;
671
+ unit?: string;
672
+ is_filterable: boolean;
706
673
  }
707
- interface ProductDealInfo {
708
- product_id: string;
709
- deal_id: string;
710
- deal_name: string;
711
- benefit_type: DealBenefitType;
712
- value: Money;
713
- label: string;
674
+ interface PropertyFacet {
675
+ name: string;
676
+ slug: string;
677
+ source: string;
678
+ values: FacetValue[];
714
679
  }
715
- interface DiscountValidation {
716
- is_eligible: boolean;
717
- discount_amount?: Money;
718
- deal?: Deal;
719
- ineligibility_reason?: string;
680
+ interface FacetValue {
681
+ value: string;
682
+ count: number;
720
683
  }
721
- interface Tag {
684
+ interface TaxonomyAttributeTemplate {
722
685
  id: string;
686
+ taxonomy_id: string;
723
687
  name: string;
724
688
  slug: string;
725
- color?: string;
726
- icon?: string;
727
- description?: string;
728
- tag_group?: string;
729
- sort_order: number;
730
- usage_count: number;
689
+ attribute_type: "boolean" | "single_select";
690
+ options?: string[];
691
+ is_required: boolean;
692
+ display_order: number;
693
+ gpc_attribute_code?: number;
731
694
  created_at: string;
732
- updated_at: string;
733
695
  }
734
- interface TagsResponse {
735
- items: Tag[];
736
- total: number;
737
- limit: number;
738
- offset: number;
696
+ interface KnowledgeArticle {
697
+ id: string;
698
+ title: string;
699
+ slug: string;
700
+ content: string;
701
+ category?: string;
702
+ tags: string[];
703
+ created_at: string;
704
+ updated_at: string;
739
705
  }
740
-
741
- type CartStatus = "active" | "converting" | "converted" | "expired" | "abandoned";
742
- type CartChannel = "qr" | "taker" | "staff" | "web" | "dashboard";
743
- type PriceSource = "default_item" | "custom" | {
744
- location_specific: string;
745
- } | {
746
- variant: string;
747
- } | {
748
- composite: string;
749
- } | {
750
- bundle: string;
751
- };
752
- type AdjustmentType = "time_based" | {
753
- location_based: string;
754
- } | {
755
- variant_based: string;
756
- } | {
757
- customer_segment: string;
758
- } | {
759
- customer_loyalty: string;
760
- } | {
761
- channel_markup: string;
762
- } | {
763
- discount: string;
764
- } | {
765
- bundle: string;
766
- } | {
767
- manual: string;
768
- } | {
769
- time_limited_promotion: {
770
- promotion_id: string;
771
- valid_until: string;
706
+ interface Product {
707
+ id: string;
708
+ business_id: string;
709
+ category_id?: string;
710
+ name: string;
711
+ slug: string;
712
+ description?: string;
713
+ image_url?: string;
714
+ default_price: Money;
715
+ type: ProductType;
716
+ render_hint?: ProductRenderHint;
717
+ display_mode?: DisplayMode;
718
+ inventory_type: InventoryType;
719
+ variant_strategy: VariantStrategy;
720
+ inventory_status?: {
721
+ in_stock: boolean;
722
+ stock_level?: number;
723
+ low_stock: boolean;
772
724
  };
773
- };
774
- interface PriceAdjustment {
775
- adjustment_type: AdjustmentType;
776
- amount: Money;
777
- percentage?: Money;
778
- reason: string;
779
- applied_at: string;
725
+ is_active: boolean;
726
+ created_at: string;
727
+ updated_at: string;
728
+ metadata?: Record<string, unknown>;
729
+ tags?: string[];
730
+ images?: string[];
731
+ calories?: number;
732
+ allergies?: string[];
733
+ recipe?: Record<string, unknown>;
734
+ sku?: string;
735
+ barcode?: string;
736
+ ean?: string;
737
+ upc?: string;
738
+ is_trackable?: boolean;
739
+ is_tracked?: boolean;
740
+ is_tracked_in_store?: boolean;
741
+ is_tracked_in_warehouse?: boolean;
742
+ inventory_threshold?: number;
743
+ external_id?: string;
744
+ external_source?: string;
745
+ download_url?: string;
746
+ digital_type?: DigitalProductType;
747
+ max_downloads?: number;
748
+ license_key_required?: boolean;
749
+ file_size_mb?: number;
750
+ file_hash?: string;
751
+ file_type?: string;
752
+ version?: string;
753
+ download_expires_days?: number;
754
+ license_key_format?: string;
755
+ max_activations?: number;
756
+ validity_days?: number;
757
+ event_id?: string;
758
+ event_date?: string;
759
+ venue?: string;
760
+ ticket_type?: string;
761
+ seat_info?: Record<string, unknown>;
762
+ access_type?: string;
763
+ access_level?: string;
764
+ access_duration_days?: number;
765
+ code_type?: string;
766
+ code_value?: Money;
767
+ code_currency?: CurrencyCode;
768
+ duration_minutes?: number;
769
+ duration_unit?: DurationUnit;
770
+ preparation_time_minutes?: number;
771
+ staff_required_count?: number;
772
+ buffer_before_minutes?: number;
773
+ buffer_after_minutes?: number;
774
+ general_service_capacity?: number;
775
+ deposit_type?: DepositType;
776
+ deposit_amount?: Money;
777
+ cancellation_window_minutes?: number;
778
+ no_show_fee?: Money;
779
+ requires_specific_staff?: boolean;
780
+ requires_specific_resource?: boolean;
781
+ hs_code?: string;
782
+ mid_code?: string;
783
+ material?: string;
784
+ allow_backorder?: boolean;
785
+ item_condition?: string;
786
+ vendor?: string;
787
+ length_mm?: number;
788
+ width_mm?: number;
789
+ height_mm?: number;
790
+ channels?: SalesChannel[];
791
+ meta_title?: string;
792
+ meta_description?: string;
793
+ is_discountable?: boolean;
794
+ taxonomy_id?: string;
795
+ bundle_price?: Money;
796
+ discount_value?: Money;
797
+ pricing_type?: BundlePriceType;
798
+ components?: BundleComponentView[];
799
+ composite_id?: string;
800
+ groups?: CompositeGroupView[];
801
+ custom_attributes?: CustomAttributeValue[];
802
+ properties?: ProductProperty[];
803
+ billing_plans?: ProductBillingPlan[];
804
+ upsells?: RelatedProductView[];
805
+ cross_sells?: RelatedProductView[];
780
806
  }
781
- interface TaxPathComponent {
807
+ interface RelatedProductView {
808
+ product_id: string;
782
809
  name: string;
783
- rate: Money;
784
- }
785
- interface PricePathTaxInfo {
786
- tax_rate: Money;
787
- tax_amount: Money;
788
- is_inclusive: boolean;
789
- components: TaxPathComponent[];
790
- }
791
- interface PriceDecisionPath {
792
- base_price_source: PriceSource;
793
- adjustments: PriceAdjustment[];
794
- context?: Record<string, unknown>;
810
+ slug: string;
811
+ image_url?: string;
812
+ price: Money;
813
+ source: string;
795
814
  }
796
- interface ChosenPrice {
797
- base_price: Money;
798
- final_price: Money;
799
- markup_percentage: Money;
800
- markup_amount: Money;
801
- markup_discount_percentage: Money;
802
- markup_discount_amount: Money;
803
- currency?: CurrencyCode;
804
- custom_fields?: Record<string, unknown>;
805
- decision_path?: PriceDecisionPath;
806
- tax_info?: PricePathTaxInfo;
807
- pre_tax_price?: Money;
815
+ interface ProductWithDetails extends Product {
816
+ category?: Category;
817
+ variants?: VariantView[];
818
+ add_ons?: AddOnWithOptions[];
819
+ variant_axes?: VariantAxisWithValues[];
820
+ location_prices?: LocationProductPrice[];
821
+ location_availability?: ProductAvailability[];
822
+ time_profiles?: ProductTimeProfile[];
808
823
  }
809
- type BenefitType = "percentage" | "fixed" | "points" | "free_item" | "buy_x_get_y_free";
810
- interface AppliedDiscount {
811
- discount_id: string;
812
- discount_code?: string;
813
- discount_type: BenefitType;
814
- discount_value: Money;
815
- discount_amount: Money;
816
- applied_at: string;
817
- targeted_item_ids?: string[];
824
+ interface VariantView {
825
+ id: string;
826
+ name: string;
827
+ is_default: boolean;
828
+ price_adjustment: Money;
829
+ location_prices?: Record<string, ChosenPrice>;
830
+ axis_selections?: Record<string, string>;
831
+ display_attributes?: VariantDisplayAttribute[];
832
+ images?: string[];
833
+ duration_minutes?: number;
834
+ duration_unit?: DurationUnit;
835
+ skill_level_required?: string;
836
+ staff_count_override?: number;
837
+ capacity_override?: number;
818
838
  }
819
- interface DiscountBreakdown {
820
- item_discounts: Record<string, AppliedDiscount[]>;
821
- order_discounts: AppliedDiscount[];
839
+ interface ProductVariant {
840
+ id: string;
841
+ name?: string;
842
+ business_id: string;
843
+ product_id: string;
844
+ component_multiplier: Money;
845
+ price_adjustment: Money;
846
+ is_default: boolean;
847
+ created_at: string;
848
+ updated_at: string;
849
+ is_active?: boolean;
850
+ is_archived?: boolean;
851
+ is_deleted?: boolean;
852
+ inventory_threshold?: number;
853
+ images?: string[];
854
+ external_id?: string;
855
+ external_source?: string;
856
+ ean?: string;
857
+ upc?: string;
858
+ is_trackable?: boolean;
859
+ is_tracked?: boolean;
860
+ is_tracked_in_store?: boolean;
861
+ is_tracked_in_warehouse?: boolean;
862
+ sku?: string;
863
+ barcode?: string;
864
+ download_url?: string;
865
+ metadata?: Record<string, unknown>;
866
+ duration_minutes?: number;
867
+ duration_unit?: DurationUnit;
868
+ max_downloads?: number;
869
+ license_key?: string;
870
+ display_attributes?: VariantDisplayAttribute[];
822
871
  }
823
- interface DiscountDetails {
824
- discounts: AppliedDiscount[];
825
- total_discount_amount: Money;
826
- breakdown: DiscountBreakdown;
872
+ interface VariantDisplayAttribute {
873
+ axis_id: string;
874
+ axis_name: string;
875
+ value_id: string;
876
+ value_name: string;
827
877
  }
828
- interface SelectedAddOnOption {
829
- option_id: string;
830
- add_on_id: string;
878
+ interface VariantAxis {
879
+ id: string;
880
+ business_id: string;
881
+ product_id: string;
831
882
  name: string;
832
- price: Money;
833
- quantity: number;
834
- is_required: boolean;
835
- selected_at: string;
836
- price_info?: ChosenPrice;
883
+ display_order: number;
884
+ affects_recipe: boolean;
885
+ created_at: string;
886
+ updated_at: string;
887
+ metadata?: Record<string, unknown>;
837
888
  }
838
- interface AddOnDetails {
839
- selected_options: SelectedAddOnOption[];
840
- total_add_on_price: Money;
841
- add_ons: CartAddOn[];
889
+ interface VariantAxisWithValues extends VariantAxis {
890
+ values: VariantAxisValue[];
842
891
  }
843
- interface CartAddOn {
844
- add_on_id: string;
892
+ interface VariantAxisValue {
893
+ id: string;
894
+ business_id: string;
895
+ axis_id: string;
845
896
  name: string;
846
- min_selections: number;
847
- max_selections: number;
848
- selected_options: string[];
849
- is_required: boolean;
897
+ display_order: number;
898
+ color_hex?: string;
899
+ image_url?: string;
900
+ created_at: string;
901
+ updated_at: string;
902
+ metadata?: Record<string, unknown>;
850
903
  }
851
- interface VariantDetails {
904
+ interface ProductVariantValue {
852
905
  variant_id: string;
853
- sku?: string;
854
- properties: Record<string, string>;
855
- }
856
- interface BundleSelectionInput {
857
- component_id: string;
858
- variant_id?: string;
859
- quantity: number;
860
- }
861
- interface BundleStoredSelection {
862
- component_id: string;
863
- product_id: string;
864
- product_name: string;
865
- variant_id?: string;
866
- variant_name?: string;
867
- quantity: number;
868
- unit_price: Money;
906
+ axis_value_id: string;
907
+ business_id: string;
908
+ created_at: string;
909
+ updated_at: string;
910
+ metadata?: Record<string, unknown>;
869
911
  }
870
- interface BundleSelectionData {
871
- bundle_id: string;
872
- selections: BundleStoredSelection[];
912
+ interface VariantLocationAvailability {
913
+ id: string;
914
+ variant_id: string;
915
+ location_id: string;
916
+ business_id: string;
917
+ is_available: boolean;
918
+ is_in_stock: boolean;
919
+ created_at: string;
920
+ updated_at: string;
921
+ metadata?: Record<string, unknown>;
873
922
  }
874
- interface CompositeStoredSelection {
875
- component_id: string;
876
- component_name: string;
877
- quantity: number;
878
- group_id: string;
879
- source_type: "product" | "stock" | "add_on" | "standalone";
880
- source_product_id?: string;
881
- source_stock_id?: string;
882
- unit_price: Money;
923
+ interface VariantAxisSelection {
924
+ [axisName: string]: string;
883
925
  }
884
- interface CompositePriceBreakdown {
885
- base_price: Money;
886
- components_total: Money;
887
- tier_applied?: string;
888
- final_price: Money;
926
+ interface AddOn {
927
+ id: string;
928
+ business_id: string;
929
+ name: string;
930
+ is_multiple_allowed: boolean;
931
+ is_required: boolean;
932
+ is_mutually_exclusive: boolean;
933
+ min_selections?: number;
934
+ max_selections?: number;
935
+ created_at: string;
936
+ updated_at: string;
937
+ metadata?: Record<string, unknown>;
889
938
  }
890
- interface CompositeSelectionData {
891
- composite_id: string;
892
- selections: CompositeStoredSelection[];
893
- breakdown: CompositePriceBreakdown;
939
+ interface AddOnWithOptions extends AddOn {
940
+ options: AddOnOption[];
894
941
  }
895
-
896
- type LineConfiguration = {
897
- type: "simple";
898
- variant?: VariantDetails;
899
- add_ons?: AddOnDetails;
900
- } | {
901
- type: "service";
902
- variant?: VariantDetails;
903
- add_ons?: AddOnDetails;
904
- scheduled_start?: string;
905
- scheduled_end?: string;
906
- confirmation_code?: string;
907
- service_status?: string;
908
- primary_staff_id?: string;
909
- scheduling_metadata?: Record<string, unknown>;
910
- } | {
911
- type: "bundle";
912
- variant?: VariantDetails;
913
- input: BundleSelectionInput[];
914
- resolved?: BundleSelectionData;
915
- add_ons?: AddOnDetails;
916
- } | {
917
- type: "composite";
918
- variant?: VariantDetails;
919
- input: ComponentSelectionInput[];
920
- resolved?: CompositeSelectionData;
921
- add_ons?: AddOnDetails;
922
- } | {
923
- type: "digital";
924
- variant?: VariantDetails;
925
- add_ons?: AddOnDetails;
926
- digital_type?: string;
927
- fulfillment_id?: string;
928
- };
929
- interface Cart {
942
+ interface AddOnOption {
930
943
  id: string;
944
+ add_on_id: string;
931
945
  business_id: string;
932
- customer_id?: string;
933
- session_id?: string;
934
- location_id?: string;
946
+ name: string;
947
+ option_sku?: string;
948
+ default_price?: Money;
949
+ description?: string;
950
+ is_required: boolean;
951
+ is_mutually_exclusive: boolean;
935
952
  created_at: string;
936
953
  updated_at: string;
937
- expires_at: string;
938
- subtotal: Money;
939
- tax_amount: Money;
940
- service_charge: Money;
941
- total_discounts: Money;
942
- total_price: Money;
943
- total_items: number;
944
- tax_rate?: Money;
945
- service_charge_rate?: Money;
946
- price_info: ChosenPrice;
947
- applied_discount_ids: string[];
948
- applied_discount_codes: string[];
949
- discount_details?: DiscountDetails;
950
- currency: CurrencyCode;
951
- customer_name?: string;
952
- customer_email?: string;
953
- customer_phone?: string;
954
- customer_address?: string;
955
- source: string;
956
- status: CartStatus;
957
- channel: string;
958
- order_id?: string;
959
954
  metadata?: Record<string, unknown>;
960
- items: CartItem[];
961
955
  }
962
- interface CartItem {
956
+ interface AddOnOptionPrice {
963
957
  id: string;
964
- cart_id: string;
965
- item_id: string;
966
- quantity: number;
967
- line_key: string;
968
- configuration: LineConfiguration;
958
+ add_on_option_id: string;
959
+ location_id: string;
960
+ business_id: string;
969
961
  price: Money;
970
- add_ons_price: Money;
971
- price_info: ChosenPrice;
972
- applied_discount_ids: string[];
973
- item_discount_amount: Money;
974
- discount_details?: DiscountDetails;
975
962
  created_at: string;
976
963
  updated_at: string;
977
964
  metadata?: Record<string, unknown>;
978
965
  }
979
- interface CartTotals {
980
- subtotal: Money;
981
- tax_amount: Money;
982
- service_charge: Money;
983
- total_discounts: Money;
984
- total_price: Money;
985
- tax_rate?: Money;
986
- service_charge_rate?: Money;
987
- applied_discount_ids: string[];
988
- applied_discount_codes: string[];
989
- discount_details?: DiscountDetails;
966
+ interface ProductAddOn {
967
+ id: string;
968
+ business_id: string;
969
+ product_id: string;
970
+ add_on_id: string;
971
+ created_at: string;
972
+ updated_at: string;
973
+ metadata?: Record<string, unknown>;
990
974
  }
991
- interface DisplayCart {
975
+ interface Category {
992
976
  id: string;
993
977
  business_id: string;
994
- customer_id?: string;
995
- session_id?: string;
996
- location_id?: string;
997
- subtotal: Money;
998
- tax_amount: Money;
999
- service_charge: Money;
1000
- total_discounts: Money;
1001
- total_price: Money;
1002
- total_items: number;
1003
- tax_rate?: Money;
1004
- service_charge_rate?: Money;
1005
- currency: CurrencyCode;
1006
- channel: string;
1007
- status: string;
1008
- business_name: string;
1009
- business_logo?: string;
1010
- location_name?: string;
1011
- customer_name?: string;
1012
- customer_email?: string;
1013
- customer_phone?: string;
1014
- customer_address?: string;
1015
- items: DisplayCartItem[];
1016
- applied_discount_codes: string[];
1017
- discount_details?: DiscountDetails;
978
+ name: string;
979
+ slug: string;
980
+ description?: string;
981
+ product_count?: number;
982
+ created_at: string;
983
+ updated_at: string;
984
+ metadata?: Record<string, unknown>;
1018
985
  }
1019
- interface DisplayCartItem {
986
+ interface CategorySummary extends Category {
987
+ product_count: number;
988
+ }
989
+ interface Collection {
1020
990
  id: string;
1021
- cart_id: string;
1022
- item_id: string;
1023
- quantity: number;
991
+ business_id: string;
1024
992
  name: string;
993
+ slug: string;
1025
994
  description?: string;
995
+ tags?: string[];
1026
996
  image_url?: string;
1027
- category_name?: string;
1028
- is_available: boolean;
1029
- preparation_time?: number;
1030
- unit_price: Money;
1031
- total_price: Money;
1032
- add_ons_price: Money;
1033
- price_info: ChosenPrice;
1034
- item_discount_amount: Money;
1035
- discount_details?: DiscountDetails;
1036
- add_ons: DisplayAddOn[];
1037
- special_instructions?: string;
997
+ channels?: SalesChannel[];
998
+ product_count?: number;
999
+ created_at: string;
1000
+ updated_at: string;
1001
+ metadata?: Record<string, unknown>;
1038
1002
  }
1039
- interface DisplayAddOn {
1003
+ interface CollectionSummary extends Collection {
1004
+ product_count: number;
1005
+ }
1006
+ interface CollectionProduct {
1040
1007
  id: string;
1041
- name: string;
1042
- min_selections: number;
1043
- max_selections: number;
1044
- is_required: boolean;
1045
- selected_options: DisplayAddOnOption[];
1008
+ collection_id: string;
1009
+ product_id: string;
1010
+ display_order?: number;
1011
+ created_at: string;
1012
+ updated_at: string;
1013
+ metadata?: Record<string, unknown>;
1046
1014
  }
1047
- interface DisplayAddOnOption {
1015
+ type BundlePriceType = "fixed" | "percentage_discount" | "fixed_discount";
1016
+ interface Bundle {
1048
1017
  id: string;
1018
+ business_id: string;
1019
+ product_id: string;
1049
1020
  name: string;
1050
- price: Money;
1051
- quantity: number;
1052
- image_url?: string;
1021
+ slug: string;
1053
1022
  description?: string;
1023
+ image_url?: string;
1024
+ pricing_type: BundlePriceType;
1025
+ bundle_price?: Money;
1026
+ discount_value?: Money;
1027
+ product_count?: number;
1028
+ created_at: string;
1029
+ updated_at: string;
1030
+ metadata?: Record<string, unknown>;
1054
1031
  }
1055
- interface UICartBusiness {
1056
- name: string;
1057
- logo_url?: string;
1058
- contact_email?: string;
1059
- contact_phone?: string;
1032
+ interface BundleSummary extends Bundle {
1033
+ product_count: number;
1060
1034
  }
1061
- interface UICartLocation {
1062
- id?: string;
1063
- name?: string;
1035
+ interface BundleProduct {
1036
+ id: string;
1037
+ bundle_id: string;
1038
+ product_id: string;
1039
+ variant_id?: string;
1040
+ allow_variant_choice: boolean;
1041
+ quantity: number;
1042
+ created_at: string;
1043
+ updated_at: string;
1044
+ metadata?: Record<string, unknown>;
1064
1045
  }
1065
- interface UICartCustomer {
1066
- id?: string;
1067
- name?: string;
1068
- email?: string;
1069
- phone?: string;
1070
- address?: string;
1046
+ interface BundleWithDetails extends Bundle {
1047
+ product: Product;
1048
+ components: BundleComponentData[];
1049
+ schedules?: ProductTimeProfile[];
1050
+ availability?: Record<string, ProductAvailability>;
1071
1051
  }
1072
- interface UICartPricing {
1073
- subtotal: Money;
1074
- tax_amount: Money;
1075
- service_charge: Money;
1076
- total_discounts: Money;
1077
- total_price: Money;
1078
- tax_rate?: Money;
1079
- service_charge_rate?: Money;
1080
- currency: CurrencyCode;
1052
+ interface BundleComponentData {
1053
+ component: BundleProduct;
1054
+ product: Product;
1055
+ variants: ProductVariant[];
1056
+ variant_axes: VariantAxis[];
1057
+ variant_axis_values: VariantAxisValue[];
1058
+ product_variant_values: ProductVariantValue[];
1081
1059
  }
1082
- interface AddOnOptionDetails {
1060
+ interface BundleComponentInfo {
1061
+ id: string;
1062
+ product_id: string;
1063
+ variant_id?: string;
1064
+ quantity: number;
1065
+ }
1066
+ interface BundleComponentView {
1067
+ id: string;
1068
+ product_id: string;
1069
+ product_name: string;
1070
+ product_description?: string;
1071
+ product_image_url?: string;
1072
+ product_type?: ProductType;
1073
+ effective_price: Money;
1074
+ quantity: number;
1075
+ variant_id?: string;
1076
+ allow_variant_choice: boolean;
1077
+ available_variants: BundleComponentVariantView[];
1078
+ variant_axes?: VariantAxisView[];
1079
+ duration_minutes?: number;
1080
+ duration_unit?: DurationUnit;
1081
+ }
1082
+ interface BundleComponentVariantView {
1083
+ id: string;
1084
+ is_default: boolean;
1085
+ display_name: string;
1086
+ price_adjustment: Money;
1087
+ }
1088
+ interface VariantAxisView {
1083
1089
  id: string;
1084
1090
  name: string;
1085
- price?: Money;
1086
- is_required: boolean;
1091
+ values: VariantAxisValueView[];
1092
+ }
1093
+ interface VariantAxisValueView {
1094
+ id: string;
1095
+ value: string;
1096
+ }
1097
+ type CompositePricingMode = "additive" | "highest_per_group" | "highest_overall" | "tiered";
1098
+ type GroupPricingBehavior = "additive" | "first_n_free" | "flat_fee" | "highest_only";
1099
+ type ComponentSourceType = "product" | "stock" | "add_on" | "standalone";
1100
+ interface Composite {
1101
+ id: string;
1102
+ business_id: string;
1103
+ product_id: string;
1104
+ base_price: Money;
1105
+ pricing_mode: CompositePricingMode;
1106
+ min_order_quantity?: number;
1107
+ max_order_quantity?: number;
1108
+ created_at: string;
1109
+ updated_at: string;
1110
+ metadata?: Record<string, unknown>;
1111
+ }
1112
+ interface CompositeWithDetails extends Composite {
1113
+ product: Product;
1114
+ groups: ComponentGroupWithComponents[];
1115
+ }
1116
+ interface ComponentGroup {
1117
+ id: string;
1118
+ composite_id: string;
1119
+ name: string;
1087
1120
  description?: string;
1088
- image_url?: string;
1121
+ display_order: number;
1122
+ min_selections: number;
1123
+ max_selections?: number;
1124
+ allow_quantity: boolean;
1125
+ max_quantity_per_component?: number;
1126
+ pricing_behavior: GroupPricingBehavior;
1127
+ pricing_behavior_config?: Record<string, unknown>;
1128
+ icon?: string;
1129
+ color?: string;
1130
+ created_at: string;
1131
+ updated_at: string;
1089
1132
  }
1090
- interface AddOnGroupDetails {
1133
+ interface ComponentGroupWithComponents extends ComponentGroup {
1134
+ components: CompositeComponent[];
1135
+ }
1136
+ interface CompositeGroupView {
1091
1137
  id: string;
1092
1138
  name: string;
1093
- is_multiple_allowed: boolean;
1139
+ description?: string;
1094
1140
  min_selections: number;
1095
1141
  max_selections: number;
1096
- required: boolean;
1097
- options: AddOnOptionDetails[];
1142
+ allow_quantity: boolean;
1143
+ max_quantity_per_component?: number;
1144
+ display_order: number;
1145
+ components: CompositeComponentView[];
1098
1146
  }
1099
- interface VariantDetailsDTO {
1147
+ interface CompositeComponentView {
1100
1148
  id: string;
1101
- name: string;
1149
+ display_name?: string;
1150
+ display_description?: string;
1151
+ display_image_url?: string;
1102
1152
  price: Money;
1103
- price_adjustment: Money;
1104
- is_default: boolean;
1153
+ calories?: number;
1154
+ display_order: number;
1155
+ is_popular: boolean;
1156
+ is_premium: boolean;
1157
+ is_available: boolean;
1158
+ is_archived: boolean;
1159
+ product_type?: ProductType;
1160
+ source_type?: ComponentSourceType;
1105
1161
  }
1106
- interface CartItemDetails {
1162
+ interface CompositeComponent {
1107
1163
  id: string;
1108
- cart_id: string;
1109
- item_id: string;
1110
- quantity: number;
1111
- line_key: string;
1112
- line_type: "simple" | "service" | "bundle" | "composite" | "digital";
1113
- name: string;
1114
- description?: string;
1115
- image_url?: string;
1116
- category_id?: string;
1117
- category_name?: string;
1164
+ group_id: string;
1165
+ product_id?: string;
1166
+ variant_id?: string;
1167
+ stock_id?: string;
1168
+ add_on_id?: string;
1169
+ add_on_option_id?: string;
1170
+ display_name?: string;
1171
+ display_description?: string;
1172
+ display_image_url?: string;
1173
+ price: Money;
1174
+ price_per_additional?: Money;
1175
+ quantity_per_selection?: Money;
1176
+ waste_percentage?: Money;
1177
+ calories?: number;
1178
+ allergens?: string[];
1179
+ display_order: number;
1180
+ is_popular: boolean;
1181
+ is_premium: boolean;
1118
1182
  is_available: boolean;
1183
+ is_archived: boolean;
1184
+ created_at: string;
1185
+ updated_at: string;
1186
+ }
1187
+ interface ComponentSelectionInput {
1188
+ component_id: string;
1189
+ quantity: number;
1119
1190
  variant_id?: string;
1120
- variant_details?: VariantDetails;
1121
- variant_name?: string;
1122
- variant_info?: VariantDetailsDTO;
1123
- base_price: Money;
1124
- add_ons_price: Money;
1125
- total_price: Money;
1126
- item_discount_amount: Money;
1127
- price_info: ChosenPrice;
1128
- add_on_option_ids: string[];
1129
- add_on_ids: string[];
1130
- add_on_details: AddOnDetails;
1131
- add_on_options: AddOnOptionDetails[];
1132
- add_ons: AddOnGroupDetails[];
1133
- special_instructions?: string;
1191
+ add_on_option_id?: string;
1134
1192
  scheduled_start?: string;
1135
1193
  scheduled_end?: string;
1136
- confirmation_code?: string;
1137
- service_status?: string;
1138
- staff_id?: string;
1139
- scheduling_metadata?: Record<string, unknown>;
1140
- bundle_selections?: BundleSelectionInput[];
1141
- bundle_resolved?: BundleSelectionData;
1142
- composite_selections?: ComponentSelectionInput[];
1143
- composite_resolved?: CompositeSelectionData;
1144
- applied_discount_ids: string[];
1145
- discount_details?: DiscountDetails;
1194
+ }
1195
+ interface CompositePriceResult {
1196
+ base_price: Money;
1197
+ components_total: Money;
1198
+ tier_applied?: string;
1199
+ final_price: Money;
1200
+ breakdown: ComponentPriceBreakdown[];
1201
+ }
1202
+ interface ComponentPriceBreakdown {
1203
+ component_id: string;
1204
+ component_name: string;
1205
+ quantity: number;
1206
+ unit_price: Money;
1207
+ total_price: Money;
1208
+ group_id: string;
1209
+ source_type: ComponentSourceType;
1210
+ source_product_id?: string;
1211
+ source_stock_id?: string;
1212
+ }
1213
+ type PriceEntryType = "base" | "location" | "time" | "channel";
1214
+ interface Price {
1215
+ id: string;
1216
+ product_id: string;
1217
+ location_id: string;
1218
+ business_id: string;
1219
+ price: Money;
1220
+ entry_type: PriceEntryType;
1146
1221
  created_at: string;
1147
1222
  updated_at: string;
1148
1223
  metadata?: Record<string, unknown>;
1149
1224
  }
1150
- interface UICart {
1225
+ type LocationProductPrice = Price;
1226
+ interface ProductAvailability {
1151
1227
  id: string;
1152
1228
  business_id: string;
1153
- session_id?: string;
1154
- customer_id?: string;
1155
- location_id?: string;
1229
+ location_id: string;
1230
+ product_id: string;
1231
+ is_available: boolean;
1232
+ is_in_stock: boolean;
1156
1233
  created_at: string;
1157
1234
  updated_at: string;
1158
- expires_at: string;
1159
- status: string;
1160
- source: string;
1161
- channel: string;
1162
- business_details?: UICartBusiness;
1163
- location_details?: UICartLocation;
1164
- customer_info: UICartCustomer;
1165
- items: CartItemDetails[];
1166
- pricing: UICartPricing;
1167
1235
  metadata?: Record<string, unknown>;
1168
1236
  }
1169
- interface UICartResponse {
1170
- cart: UICart;
1171
- cart_count: number;
1172
- message?: string | null;
1237
+ interface ProductTimeProfile {
1238
+ id: string;
1239
+ business_id: string;
1240
+ product_id: string;
1241
+ day_of_week: number;
1242
+ start_time: string;
1243
+ end_time: string;
1244
+ created_at: string;
1245
+ updated_at: string;
1246
+ metadata?: Record<string, unknown>;
1173
1247
  }
1174
- interface AddToCartInput {
1175
- item_id: string;
1176
- quantity?: number;
1177
- variant_id?: string;
1178
- quote_id?: string;
1179
- add_on_options?: string[];
1180
- special_instructions?: string;
1181
- bundle_selections?: BundleSelectionInput[];
1182
- composite_selections?: ComponentSelectionInput[];
1183
- scheduled_start?: string;
1184
- scheduled_end?: string;
1185
- staff_id?: string;
1248
+ interface ProductTaxonomy {
1249
+ id: string;
1250
+ code: string;
1251
+ name: string;
1252
+ description?: string;
1253
+ parent_id?: string;
1254
+ level: number;
1255
+ is_active: boolean;
1256
+ created_at: string;
1257
+ updated_at: string;
1186
1258
  }
1187
- interface UpdateCartItemInput {
1188
- quantity?: number;
1189
- variant_id?: string;
1190
- add_on_options?: string[];
1191
- notes?: string;
1192
- bundle_selections?: BundleSelectionInput[];
1193
- composite_selections?: ComponentSelectionInput[];
1194
- scheduled_start?: string;
1195
- scheduled_end?: string;
1196
- staff_id?: string;
1259
+ interface TaxonomyWithChildren extends ProductTaxonomy {
1260
+ children: ProductTaxonomy[];
1197
1261
  }
1198
- interface CartSummary {
1199
- item_count: number;
1200
- total_items: number;
1201
- subtotal: Money;
1202
- discount_amount: Money;
1203
- tax_amount: Money;
1204
- total: Money;
1205
- currency: CurrencyCode;
1262
+ interface ProductAvailabilityNow {
1263
+ is_available: boolean;
1264
+ schedules_today: ProductTimeProfile[];
1265
+ }
1266
+ type DealBenefitType = "percentage" | "fixed" | "free_item" | "buy_x_get_y_free" | "points";
1267
+ interface Deal {
1268
+ id: string;
1269
+ description: string;
1270
+ benefit_type: DealBenefitType;
1271
+ value: Money;
1272
+ min_order_value?: Money;
1273
+ buy_quantity?: number;
1274
+ get_quantity?: number;
1275
+ stackable: boolean;
1276
+ starts_at: string;
1277
+ ends_at: string;
1278
+ product_ids: string[];
1279
+ category_ids: string[];
1280
+ collection_ids: string[];
1281
+ }
1282
+ interface ProductDealInfo {
1283
+ product_id: string;
1284
+ deal_id: string;
1285
+ deal_name: string;
1286
+ benefit_type: DealBenefitType;
1287
+ value: Money;
1288
+ label: string;
1289
+ }
1290
+ interface DiscountValidation {
1291
+ is_eligible: boolean;
1292
+ discount_amount?: Money;
1293
+ deal?: Deal;
1294
+ ineligibility_reason?: string;
1295
+ }
1296
+ interface Tag {
1297
+ id: string;
1298
+ name: string;
1299
+ slug: string;
1300
+ color?: string;
1301
+ icon?: string;
1302
+ description?: string;
1303
+ tag_group?: string;
1304
+ sort_order: number;
1305
+ usage_count: number;
1306
+ created_at: string;
1307
+ updated_at: string;
1308
+ }
1309
+ interface TagsResponse {
1310
+ items: Tag[];
1311
+ total: number;
1312
+ limit: number;
1313
+ offset: number;
1206
1314
  }
1207
1315
 
1208
- type PaymentStatus = "initialized" | "pending" | "processing" | "authorized" | "captured" | "failed" | "cancelled" | "refunded" | "unknown" | "voided" | "requires_action" | "abandoned" | "reversed" | "disputed" | "refund_pending" | "created" | "pending_confirmation" | "success" | "succeeded" | "declined" | "partially_refunded" | "partially_paid" | "paid" | "unpaid" | "requires_payment_method" | "requires_capture" | "completed" | "error";
1316
+ type PaymentStatus = "initialized" | "pending" | "processing" | "authorized" | "captured" | "failed" | "cancelled" | "refunded" | "unknown" | "voided" | "requires_action" | "abandoned" | "reversed" | "disputed" | "refund_pending";
1209
1317
  type PaymentProvider = "stripe" | "paystack" | "cellulant" | "mtnmomo" | "offline" | "mtn" | "vodafone" | "airtel" | "cash" | "manual";
1210
1318
  type PaymentMethodType = "card" | "bank_transfer" | "cash" | {
1211
1319
  mobile_money: {
@@ -1315,4 +1423,4 @@ interface SubmitAuthorizationInput {
1315
1423
  value: string;
1316
1424
  }
1317
1425
 
1318
- export { type CategorySummary as $, type ApiError as A, type ProductVariant as B, type CurrencyCode as C, type DisplayMode as D, ErrorCode as E, type FacetValue as F, type VariantDisplayAttribute as G, type VariantAxis as H, type InventoryType as I, type VariantAxisWithValues as J, type KnowledgeArticle as K, type VariantAxisValue as L, type Money as M, type ProductVariantValue as N, type VariantLocationAvailability as O, type PaginationParams as P, type VariantAxisSelection as Q, type AddOn as R, type SalesChannel as S, type TaxonomyAttributeTemplate as T, type AddOnWithOptions as U, type VariantStrategy as V, type AddOnOption as W, type AddOnOptionPrice as X, type ProductAddOn as Y, ZERO as Z, type Category as _, moneyFromNumber as a, type CompositeSelectionData as a$, type Collection as a0, type CollectionSummary as a1, type CollectionProduct as a2, type BundlePriceType as a3, type Bundle as a4, type BundleSummary as a5, type BundleProduct as a6, type BundleWithDetails as a7, type BundleComponentData as a8, type BundleComponentInfo as a9, type Deal as aA, type ProductDealInfo as aB, type DiscountValidation as aC, type Tag as aD, type TagsResponse as aE, type CartStatus as aF, type CartChannel as aG, type PriceSource as aH, type AdjustmentType as aI, type PriceAdjustment as aJ, type TaxPathComponent as aK, type PricePathTaxInfo as aL, type PriceDecisionPath as aM, type ChosenPrice as aN, type BenefitType as aO, type AppliedDiscount as aP, type DiscountBreakdown as aQ, type DiscountDetails as aR, type SelectedAddOnOption as aS, type AddOnDetails as aT, type CartAddOn as aU, type VariantDetails as aV, type BundleSelectionInput as aW, type BundleStoredSelection as aX, type BundleSelectionData as aY, type CompositeStoredSelection as aZ, type CompositePriceBreakdown as a_, type BundleComponentView as aa, type BundleComponentVariantView as ab, type VariantAxisView as ac, type VariantAxisValueView as ad, type CompositePricingMode as ae, type GroupPricingBehavior as af, type ComponentSourceType as ag, type Composite as ah, type CompositeWithDetails as ai, type ComponentGroup as aj, type ComponentGroupWithComponents as ak, type CompositeGroupView as al, type CompositeComponentView as am, type CompositeComponent as an, type ComponentSelectionInput as ao, type CompositePriceResult as ap, type ComponentPriceBreakdown as aq, type PriceEntryType as ar, type Price as as, type LocationProductPrice as at, type ProductAvailability as au, type ProductTimeProfile as av, type ProductTaxonomy as aw, type TaxonomyWithChildren as ax, type ProductAvailabilityNow as ay, type DealBenefitType as az, type Pagination as b, type LineConfiguration as b0, type Cart as b1, type CartItem as b2, type CartTotals as b3, type DisplayCart as b4, type DisplayCartItem as b5, type DisplayAddOn as b6, type DisplayAddOnOption as b7, type UICartBusiness as b8, type UICartLocation as b9, type UICartCustomer as ba, type UICartPricing as bb, type AddOnOptionDetails as bc, type AddOnGroupDetails as bd, type VariantDetailsDTO as be, type CartItemDetails as bf, type UICart as bg, type UICartResponse as bh, type AddToCartInput as bi, type UpdateCartItemInput as bj, type CartSummary as bk, type PaymentStatus as bl, type PaymentProvider as bm, type PaymentMethodType as bn, type AddressAuthorizationData as bo, type AuthorizationType as bp, type PaymentProcessingState as bq, type PaymentMethod as br, type Payment as bs, type InitializePaymentResult as bt, type PaymentResponse as bu, type PaymentStatusResponse as bv, type PaymentErrorDetails as bw, type SubmitAuthorizationInput as bx, currencyCode as c, type ErrorCodeType as d, type ErrorHint as e, ERROR_HINTS as f, CimplifyError as g, isCimplifyError as h, isSupportedCurrency as i, getErrorHint as j, enrichError as k, isRetryableError as l, money as m, type ProductType as n, type ProductRenderHint as o, type DigitalProductType as p, type DepositType as q, type AttributeType as r, type AttributeAppliesTo as s, type CustomAttributeDefinition as t, type CustomAttributeValue as u, type PropertySource as v, type ProductProperty as w, type PropertyFacet as x, type Product as y, type ProductWithDetails as z };
1426
+ export { type VariantAxisSelection as $, type ApiError as A, type PropertySource as B, type ChosenPrice as C, type DisplayMode as D, ErrorCode as E, type ProductProperty as F, type PropertyFacet as G, type FacetValue as H, type InventoryType as I, type Product as J, type KnowledgeArticle as K, type ProductWithDetails as L, type Money as M, type VariantView as N, type ProductVariant as O, type PaginationParams as P, type VariantDisplayAttribute as Q, type RelatedProductView as R, type SalesChannel as S, type TaxonomyAttributeTemplate as T, type VariantAxis as U, type VariantStrategy as V, type VariantAxisWithValues as W, type VariantAxisValue as X, type ProductVariantValue as Y, ZERO as Z, type VariantLocationAvailability as _, type CurrencyCode as a, type VariantDetails as a$, type AddOn as a0, type AddOnWithOptions as a1, type AddOnOption as a2, type AddOnOptionPrice as a3, type ProductAddOn as a4, type Category as a5, type CategorySummary as a6, type Collection as a7, type CollectionSummary as a8, type CollectionProduct as a9, type LocationProductPrice as aA, type ProductAvailability as aB, type ProductTimeProfile as aC, type ProductTaxonomy as aD, type TaxonomyWithChildren as aE, type ProductAvailabilityNow as aF, type DealBenefitType as aG, type Deal as aH, type ProductDealInfo as aI, type DiscountValidation as aJ, type Tag as aK, type TagsResponse as aL, type CartStatus as aM, type CartChannel as aN, type PriceSource as aO, type AdjustmentType as aP, type PriceAdjustment as aQ, type TaxPathComponent as aR, type PricePathTaxInfo as aS, type PriceDecisionPath as aT, type BenefitType as aU, type AppliedDiscount as aV, type DiscountBreakdown as aW, type DiscountDetails as aX, type SelectedAddOnOption as aY, type AddOnDetails as aZ, type CartAddOn as a_, type BundlePriceType as aa, type Bundle as ab, type BundleSummary as ac, type BundleProduct as ad, type BundleWithDetails as ae, type BundleComponentData as af, type BundleComponentInfo as ag, type BundleComponentView as ah, type BundleComponentVariantView as ai, type VariantAxisView as aj, type VariantAxisValueView as ak, type CompositePricingMode as al, type GroupPricingBehavior as am, type ComponentSourceType as an, type Composite as ao, type CompositeWithDetails as ap, type ComponentGroup as aq, type ComponentGroupWithComponents as ar, type CompositeGroupView as as, type CompositeComponentView as at, type CompositeComponent as au, type ComponentSelectionInput as av, type CompositePriceResult as aw, type ComponentPriceBreakdown as ax, type PriceEntryType as ay, type Price as az, moneyFromNumber as b, type BundleSelectionInput as b0, type ComponentSchedulingData as b1, type BundleStoredSelection as b2, type BundleSelectionData as b3, type CompositeStoredSelection as b4, type CompositePriceBreakdown as b5, type CompositeSelectionData as b6, type LineConfiguration as b7, type Cart as b8, type CartItem as b9, type InitializePaymentResult as bA, type PaymentResponse as bB, type PaymentStatusResponse as bC, type PaymentErrorDetails as bD, type SubmitAuthorizationInput as bE, type BillingFrequency as bF, type BillingPlanType as bG, type BillingMarkupType as bH, type ProductBillingPlan as bI, type EligiblePlansQuery as bJ, type FormattedPlanOption as bK, type CartTotals as ba, type DisplayCart as bb, type DisplayCartItem as bc, type DisplayAddOn as bd, type DisplayAddOnOption as be, type UICartBusiness as bf, type UICartLocation as bg, type UICartCustomer as bh, type UICartPricing as bi, type AddOnOptionDetails as bj, type AddOnGroupDetails as bk, type VariantDetailsDTO as bl, type CartItemDetails as bm, type UICart as bn, type UICartResponse as bo, type AddToCartInput as bp, type UpdateCartItemInput as bq, type CartSummary as br, type PaymentStatus as bs, type PaymentProvider as bt, type PaymentMethodType as bu, type AddressAuthorizationData as bv, type AuthorizationType as bw, type PaymentProcessingState as bx, type PaymentMethod as by, type Payment as bz, currencyCode as c, type Pagination as d, type ErrorCodeType as e, type ErrorHint as f, ERROR_HINTS as g, CimplifyError as h, isSupportedCurrency as i, isCimplifyError as j, getErrorHint as k, enrichError as l, money as m, isRetryableError as n, type ProductType as o, type ProductRenderHint as p, type DigitalProductType as q, type DepositType as r, type DurationUnit as s, type AttributeType as t, type AttributeAppliesTo as u, type AttributeVisibility as v, type MeasurementValue as w, type AttributeValidationRules as x, type CustomAttributeDefinition as y, type CustomAttributeValue as z };