@sixtyninecommerce/client 0.3.0 → 0.4.1

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 (127) hide show
  1. package/README.md +117 -1
  2. package/dist/client.d.ts.map +1 -1
  3. package/dist/client.js +5 -1
  4. package/dist/client.js.map +1 -1
  5. package/dist/commerce/branding.d.ts +6 -0
  6. package/dist/commerce/branding.d.ts.map +1 -0
  7. package/dist/commerce/branding.js +138 -0
  8. package/dist/commerce/branding.js.map +1 -0
  9. package/dist/commerce/checkout.d.ts +4 -1
  10. package/dist/commerce/checkout.d.ts.map +1 -1
  11. package/dist/commerce/checkout.js +24 -2
  12. package/dist/commerce/checkout.js.map +1 -1
  13. package/dist/commerce/customer.d.ts +6 -1
  14. package/dist/commerce/customer.d.ts.map +1 -1
  15. package/dist/commerce/customer.js +31 -1
  16. package/dist/commerce/customer.js.map +1 -1
  17. package/dist/commerce/index.d.ts +2 -2
  18. package/dist/commerce/index.d.ts.map +1 -1
  19. package/dist/commerce/index.js +13 -1
  20. package/dist/commerce/index.js.map +1 -1
  21. package/dist/commerce/payments.d.ts +8 -0
  22. package/dist/commerce/payments.d.ts.map +1 -0
  23. package/dist/commerce/payments.js +30 -0
  24. package/dist/commerce/payments.js.map +1 -0
  25. package/dist/commerce/pickup-location-parser.d.ts +6 -0
  26. package/dist/commerce/pickup-location-parser.d.ts.map +1 -0
  27. package/dist/commerce/pickup-location-parser.js +97 -0
  28. package/dist/commerce/pickup-location-parser.js.map +1 -0
  29. package/dist/commerce/products.d.ts.map +1 -1
  30. package/dist/commerce/products.js +67 -6
  31. package/dist/commerce/products.js.map +1 -1
  32. package/dist/commerce/queries.d.ts +27 -15
  33. package/dist/commerce/queries.d.ts.map +1 -1
  34. package/dist/commerce/queries.js +259 -112
  35. package/dist/commerce/queries.js.map +1 -1
  36. package/dist/commerce/quotes.d.ts +10 -0
  37. package/dist/commerce/quotes.d.ts.map +1 -0
  38. package/dist/commerce/quotes.js +33 -0
  39. package/dist/commerce/quotes.js.map +1 -0
  40. package/dist/commerce/reviews.d.ts +2 -1
  41. package/dist/commerce/reviews.d.ts.map +1 -1
  42. package/dist/commerce/reviews.js +9 -0
  43. package/dist/commerce/reviews.js.map +1 -1
  44. package/dist/commerce/stock-notifications.d.ts +7 -0
  45. package/dist/commerce/stock-notifications.d.ts.map +1 -0
  46. package/dist/commerce/stock-notifications.js +48 -0
  47. package/dist/commerce/stock-notifications.js.map +1 -0
  48. package/dist/commerce/subscriptions.d.ts +6 -0
  49. package/dist/commerce/subscriptions.d.ts.map +1 -1
  50. package/dist/commerce/subscriptions.js +41 -13
  51. package/dist/commerce/subscriptions.js.map +1 -1
  52. package/dist/constants.d.ts +2 -0
  53. package/dist/constants.d.ts.map +1 -1
  54. package/dist/constants.js +12 -0
  55. package/dist/constants.js.map +1 -1
  56. package/dist/content/items.d.ts +2 -1
  57. package/dist/content/items.d.ts.map +1 -1
  58. package/dist/content/items.js +20 -0
  59. package/dist/content/items.js.map +1 -1
  60. package/dist/content/menus.d.ts.map +1 -1
  61. package/dist/content/menus.js +25 -7
  62. package/dist/content/menus.js.map +1 -1
  63. package/dist/credit/credit-status.d.ts +6 -0
  64. package/dist/credit/credit-status.d.ts.map +1 -0
  65. package/dist/credit/credit-status.js +26 -0
  66. package/dist/credit/credit-status.js.map +1 -0
  67. package/dist/credit/index.d.ts +4 -0
  68. package/dist/credit/index.d.ts.map +1 -0
  69. package/dist/credit/index.js +5 -0
  70. package/dist/credit/index.js.map +1 -0
  71. package/dist/index.d.ts +3 -2
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/index.js +1 -1
  74. package/dist/index.js.map +1 -1
  75. package/dist/media/video.d.ts +4 -1
  76. package/dist/media/video.d.ts.map +1 -1
  77. package/dist/media/video.js +20 -1
  78. package/dist/media/video.js.map +1 -1
  79. package/dist/navigation/routes.js +2 -2
  80. package/dist/navigation/routes.js.map +1 -1
  81. package/dist/seo/ai.d.ts +17 -0
  82. package/dist/seo/ai.d.ts.map +1 -0
  83. package/dist/seo/ai.js +32 -0
  84. package/dist/seo/ai.js.map +1 -0
  85. package/dist/seo/alternates.d.ts +4 -0
  86. package/dist/seo/alternates.d.ts.map +1 -0
  87. package/dist/seo/alternates.js +29 -0
  88. package/dist/seo/alternates.js.map +1 -0
  89. package/dist/seo/canonical.d.ts +4 -0
  90. package/dist/seo/canonical.d.ts.map +1 -0
  91. package/dist/seo/canonical.js +49 -0
  92. package/dist/seo/canonical.js.map +1 -0
  93. package/dist/seo/index.d.ts +9 -0
  94. package/dist/seo/index.d.ts.map +1 -0
  95. package/dist/seo/index.js +54 -0
  96. package/dist/seo/index.js.map +1 -0
  97. package/dist/seo/json-ld.d.ts +25 -0
  98. package/dist/seo/json-ld.d.ts.map +1 -0
  99. package/dist/seo/json-ld.js +113 -0
  100. package/dist/seo/json-ld.js.map +1 -0
  101. package/dist/seo/meta-tags.d.ts +58 -0
  102. package/dist/seo/meta-tags.d.ts.map +1 -0
  103. package/dist/seo/meta-tags.js +194 -0
  104. package/dist/seo/meta-tags.js.map +1 -0
  105. package/dist/seo/metadata-parser.d.ts +31 -0
  106. package/dist/seo/metadata-parser.d.ts.map +1 -0
  107. package/dist/seo/metadata-parser.js +180 -0
  108. package/dist/seo/metadata-parser.js.map +1 -0
  109. package/dist/seo/metadata-types.d.ts +63 -0
  110. package/dist/seo/metadata-types.d.ts.map +1 -0
  111. package/dist/seo/metadata-types.js +2 -0
  112. package/dist/seo/metadata-types.js.map +1 -0
  113. package/dist/seo/robots.d.ts +21 -0
  114. package/dist/seo/robots.d.ts.map +1 -0
  115. package/dist/seo/robots.js +39 -0
  116. package/dist/seo/robots.js.map +1 -0
  117. package/dist/seo/types.d.ts +54 -0
  118. package/dist/seo/types.d.ts.map +1 -0
  119. package/dist/seo/types.js +2 -0
  120. package/dist/seo/types.js.map +1 -0
  121. package/dist/seo/url-builder.d.ts +11 -0
  122. package/dist/seo/url-builder.d.ts.map +1 -0
  123. package/dist/seo/url-builder.js +40 -0
  124. package/dist/seo/url-builder.js.map +1 -0
  125. package/dist/types.d.ts +397 -7
  126. package/dist/types.d.ts.map +1 -1
  127. package/package.json +11 -9
package/dist/types.d.ts CHANGED
@@ -17,13 +17,119 @@ export interface StorefrontClientConfig {
17
17
  onAuthExpired?: () => void;
18
18
  retry?: RetryConfig;
19
19
  }
20
+ export interface ChannelCustomFields {
21
+ maintenanceMode?: boolean;
22
+ cdnDomain?: string | null;
23
+ storefrontUrl?: string;
24
+ urlLocaleStrategy?: 'path-prefix' | 'subdomain' | 'none';
25
+ urlLocalePrefixDefault?: boolean;
26
+ businessName?: string | null;
27
+ businessDescription?: string | null;
28
+ logoAssetId?: string | null;
29
+ darkLogoAssetId?: string | null;
30
+ coverAssetId?: string | null;
31
+ faviconAssetId?: string | null;
32
+ websiteUrl?: string | null;
33
+ primaryColor?: string | null;
34
+ contactEmail?: string | null;
35
+ contactPhone?: string | null;
36
+ legalName?: string | null;
37
+ vatNumber?: string | null;
38
+ registrationNumber?: string | null;
39
+ addressLine1?: string | null;
40
+ addressLine2?: string | null;
41
+ city?: string | null;
42
+ postalCode?: string | null;
43
+ province?: string | null;
44
+ country?: string | null;
45
+ socialLinks?: string | null;
46
+ commercePathPrefix?: string | null;
47
+ commercePathPrefixTranslations?: string | null;
48
+ twitterHandle?: string | null;
49
+ defaultOgImageId?: string | null;
50
+ llmsTxtEnabled?: boolean;
51
+ [key: string]: unknown;
52
+ }
53
+ export interface BrandingAssetRef {
54
+ id: string;
55
+ url: string;
56
+ preview?: string | null;
57
+ mimeType?: string | null;
58
+ }
59
+ export interface BrandingFontResource {
60
+ id: string;
61
+ identifier: string;
62
+ kind: 'google' | 'self_hosted';
63
+ family: string;
64
+ weights: number[];
65
+ files: BrandingAssetRef[];
66
+ }
67
+ export interface BrandingSocialLinks {
68
+ facebook?: string | null;
69
+ instagram?: string | null;
70
+ twitter?: string | null;
71
+ linkedin?: string | null;
72
+ youtube?: string | null;
73
+ tiktok?: string | null;
74
+ }
75
+ export interface BrandingIdentity {
76
+ storeCode: string;
77
+ businessName: string | null;
78
+ businessDescription: string | null;
79
+ websiteUrl: string | null;
80
+ logoLight: BrandingAssetRef | null;
81
+ logoDark: BrandingAssetRef | null;
82
+ cover: BrandingAssetRef | null;
83
+ favicon: BrandingAssetRef | null;
84
+ }
85
+ export interface BrandingTheme {
86
+ primaryColor: string | null;
87
+ }
88
+ export interface BrandingContact {
89
+ email: string | null;
90
+ phone: string | null;
91
+ }
92
+ export interface BrandingLegalAddress {
93
+ line1: string | null;
94
+ line2: string | null;
95
+ city: string | null;
96
+ postalCode: string | null;
97
+ province: string | null;
98
+ country: string | null;
99
+ }
100
+ export interface BrandingLegal {
101
+ name: string | null;
102
+ vatNumber: string | null;
103
+ registrationNumber: string | null;
104
+ address: BrandingLegalAddress;
105
+ }
106
+ export interface BrandingStorefrontConfig {
107
+ url: string | null;
108
+ cdnUrl: string;
109
+ urlLocaleStrategy: 'path-prefix' | 'subdomain' | 'none';
110
+ urlLocalePrefixDefault: boolean;
111
+ commercePathPrefix: string | null;
112
+ commercePathPrefixTranslations: Record<string, string> | null;
113
+ maintenanceMode: boolean;
114
+ defaultLanguage: string;
115
+ defaultCurrency: string;
116
+ }
117
+ export interface BrandingInfo {
118
+ identity: BrandingIdentity;
119
+ theme: BrandingTheme;
120
+ fonts: BrandingFontResource[];
121
+ contact: BrandingContact;
122
+ legal: BrandingLegal;
123
+ social: BrandingSocialLinks;
124
+ storefront: BrandingStorefrontConfig;
125
+ }
20
126
  export interface ChannelInfo {
21
127
  id: string;
22
128
  code: string;
23
129
  token: string;
24
130
  defaultLanguageCode: string;
25
131
  defaultCurrencyCode: string;
26
- customFields: Record<string, unknown>;
132
+ customFields: ChannelCustomFields;
27
133
  }
28
134
  export interface StoreContext {
29
135
  channel: ChannelInfo;
@@ -109,6 +215,11 @@ export interface PriceTier {
109
215
  priceWithTax: number;
110
216
  discountLabel: string | null;
111
217
  }
218
+ export interface VariantLocationAvailability {
219
+ locationId: string;
220
+ locationName: string;
221
+ inStock: boolean;
222
+ }
112
223
  export interface ProductOption {
113
224
  id: string;
114
225
  code: string;
@@ -131,12 +242,14 @@ export interface ProductVariant {
131
242
  retailPrice: number | null;
132
243
  retailPriceWithTax: number | null;
133
244
  priceTiers: PriceTier[] | null;
245
+ availabilityByLocation: VariantLocationAvailability[];
134
246
  options: ProductOption[];
135
247
  featuredAsset: Asset | null;
136
248
  assets: Asset[];
137
249
  customFields: {
138
250
  minOrderQuantity: number | null;
139
251
  salesUnit: number | null;
252
+ position: number | null;
140
253
  };
141
254
  }
142
255
  export interface FacetValue {
@@ -153,6 +266,25 @@ export interface CollectionRef {
153
266
  id: string;
154
267
  name: string;
155
268
  slug: string;
269
+ position?: number;
270
+ parent?: {
271
+ id: string;
272
+ } | null;
273
+ translations?: Array<{
274
+ languageCode: string;
275
+ name: string;
276
+ slug: string;
277
+ }>;
278
+ customFields?: {
279
+ isRoutable?: boolean | null;
280
+ isCanonical?: boolean | null;
281
+ } | null;
282
+ }
283
+ export interface ProductTranslation {
284
+ languageCode: string;
285
+ name: string;
286
+ slug: string;
287
+ description?: string;
156
288
  }
157
289
  export interface OptionGroup {
158
290
  id: string;
@@ -164,6 +296,17 @@ export interface OptionGroup {
164
296
  code: string;
165
297
  }>;
166
298
  }
299
+ export interface PublicProductDocument {
300
+ id: string;
301
+ position: number;
302
+ title: string;
303
+ description: string | null;
304
+ fileUrl: string;
305
+ fileMimeType: string;
306
+ fileSize: number;
307
+ fileName: string;
308
+ requiresAuth: boolean;
309
+ }
167
310
  export interface Product {
168
311
  id: string;
169
312
  name: string;
@@ -175,6 +318,9 @@ export interface Product {
175
318
  optionGroups: OptionGroup[];
176
319
  facetValues: FacetValue[];
177
320
  collections: CollectionRef[];
321
+ translations?: ProductTranslation[];
322
+ documents?: PublicProductDocument[];
323
+ metadata?: import('./seo/metadata-types.js').ProductMetadata | null;
178
324
  }
179
325
  export interface RecommendedProductGroup {
180
326
  groupName: string;
@@ -195,9 +341,7 @@ export interface ProductSummary {
195
341
  priceWithTax: number;
196
342
  currencyCode: string;
197
343
  stockLevel: string;
198
- b2bGroupName: string | null;
199
- b2bRetailPrice: number | null;
200
- b2bRetailPriceWithTax: number | null;
344
+ availabilityByLocation?: VariantLocationAvailability[];
201
345
  }>;
202
346
  facetValues?: FacetValue[];
203
347
  collections?: CollectionRef[];
@@ -239,14 +383,37 @@ export interface CollectionDetail extends Collection {
239
383
  priceListName: string | null;
240
384
  retailPrice: number | null;
241
385
  retailPriceWithTax: number | null;
386
+ priceTiers: PriceTier[] | null;
387
+ availabilityByLocation: VariantLocationAvailability[];
242
388
  customFields: {
243
389
  minOrderQuantity: number | null;
244
390
  salesUnit: number | null;
391
+ position: number | null;
245
392
  };
246
393
  }>;
247
394
  totalItems: number;
248
395
  };
249
396
  }
397
+ export type AdjustmentType = 'PROMOTION' | 'DISTRIBUTED_ORDER_PROMOTION' | 'OTHER';
398
+ export interface Discount {
399
+ adjustmentSource: string;
400
+ type: AdjustmentType | string;
401
+ description: string;
402
+ amount: number;
403
+ amountWithTax: number;
404
+ }
405
+ export interface OrderTaxSummary {
406
+ description: string;
407
+ taxRate: number;
408
+ taxBase: number;
409
+ taxTotal: number;
410
+ }
411
+ export interface OrderPromotion {
412
+ id: string;
413
+ name: string;
414
+ description: string;
415
+ couponCode: string | null;
416
+ }
250
417
  export interface OrderLine {
251
418
  id: string;
252
419
  quantity: number;
@@ -254,6 +421,9 @@ export interface OrderLine {
254
421
  unitPriceWithTax: number;
255
422
  linePrice: number;
256
423
  linePriceWithTax: number;
424
+ discountedLinePrice: number;
425
+ discountedLinePriceWithTax: number;
426
+ discounts: Discount[];
257
427
  productVariant: {
258
428
  id: string;
259
429
  name: string;
@@ -296,6 +466,9 @@ export interface Order {
296
466
  totalWithTax: number;
297
467
  currencyCode: string;
298
468
  lines: OrderLine[];
469
+ discounts: Discount[];
470
+ taxSummary: OrderTaxSummary[];
471
+ promotions: OrderPromotion[];
299
472
  shippingAddress?: OrderAddress;
300
473
  customer?: {
301
474
  id: string;
@@ -362,6 +535,17 @@ export interface OrderSummary {
362
535
  };
363
536
  }>;
364
537
  }
538
+ export interface ReorderSkipped {
539
+ variantId: string;
540
+ quantity: number;
541
+ errorCode: string;
542
+ message: string;
543
+ }
544
+ export interface ReorderResult {
545
+ order: Order;
546
+ addedLines: number;
547
+ skipped: ReorderSkipped[];
548
+ }
365
549
  export interface CustomerInput {
366
550
  firstName: string;
367
551
  lastName: string;
@@ -383,6 +567,38 @@ export interface PaymentInput {
383
567
  method: string;
384
568
  metadata?: Record<string, unknown>;
385
569
  }
570
+ export interface StripePaymentIntentResult {
571
+ clientSecret: string;
572
+ }
573
+ export interface MolliePaymentMethodsInput {
574
+ paymentMethodCode: string;
575
+ }
576
+ export interface MolliePaymentMethodAmount {
577
+ value: number;
578
+ currency: string;
579
+ }
580
+ export interface MolliePaymentMethod {
581
+ id: string;
582
+ code: string;
583
+ description: string;
584
+ minimumAmount: MolliePaymentMethodAmount;
585
+ maximumAmount: MolliePaymentMethodAmount | null;
586
+ image: {
587
+ size1x: string;
588
+ size2x: string;
589
+ svg: string;
590
+ };
591
+ }
592
+ export interface CreateMolliePaymentIntentInput {
593
+ paymentMethodCode: string;
594
+ redirectUrl?: string;
595
+ molliePaymentMethodCode?: string;
596
+ locale?: string;
597
+ immediateCapture?: boolean;
598
+ }
599
+ export interface MolliePaymentIntentResult {
600
+ url: string;
601
+ }
386
602
  export interface RegisterInput {
387
603
  firstName: string;
388
604
  lastName: string;
@@ -422,7 +638,7 @@ export interface ActiveChannel {
422
638
  availableLanguageCodes: string[];
423
639
  defaultCurrencyCode: string;
424
640
  availableCurrencyCodes: string[];
425
- customFields: Record<string, unknown>;
641
+ customFields: ChannelCustomFields;
426
642
  }
427
643
  export interface FacetValueFilterInput {
428
644
  and?: string;
@@ -465,6 +681,7 @@ export interface SearchResultItem {
465
681
  };
466
682
  } | null;
467
683
  collectionIds: string[];
684
+ inStock: boolean;
468
685
  }
469
686
  export interface SearchFacetValue {
470
687
  facetValue: {
@@ -514,6 +731,7 @@ export interface FavoriteVariant {
514
731
  retailPrice: number | null;
515
732
  retailPriceWithTax: number | null;
516
733
  priceTiers: PriceTier[] | null;
734
+ availabilityByLocation: VariantLocationAvailability[];
517
735
  product: {
518
736
  id: string;
519
737
  name: string;
@@ -530,6 +748,7 @@ export interface FavoriteVariant {
530
748
  customFields: {
531
749
  minOrderQuantity: number | null;
532
750
  salesUnit: number | null;
751
+ position: number | null;
533
752
  };
534
753
  }
535
754
  export interface FavoriteItem {
@@ -538,6 +757,12 @@ export interface FavoriteItem {
538
757
  createdAt: string;
539
758
  productVariant: FavoriteVariant | null;
540
759
  }
760
+ export interface StockNotificationSubscriptionResult {
761
+ id: string;
762
+ productVariantId: string;
763
+ emailAddress: string;
764
+ createdAt: string;
765
+ }
541
766
  export interface PaginatedList<T> {
542
767
  items: T[];
543
768
  totalItems: number;
@@ -568,6 +793,38 @@ export interface ContentItemSummary {
568
793
  collection_title_field_slug: string | null;
569
794
  title: string | null;
570
795
  }
796
+ export interface ContentSearchQuery {
797
+ q?: string;
798
+ collectionId?: string;
799
+ collectionSlug?: string;
800
+ parentId?: string;
801
+ limit?: number;
802
+ offset?: number;
803
+ sort?: string;
804
+ languageCode?: string;
805
+ }
806
+ export interface ContentSearchHit {
807
+ id: string;
808
+ channel_id: string;
809
+ collection_id: string;
810
+ collection_slug: string;
811
+ slug: string | null;
812
+ path: string | null;
813
+ parent_id: string | null;
814
+ position: number;
815
+ status: string;
816
+ created_at: number;
817
+ updated_at: number;
818
+ published_at: number | null;
819
+ [fieldSlug: string]: unknown;
820
+ }
821
+ export interface ContentSearchResult {
822
+ hits: ContentSearchHit[];
823
+ total: number;
824
+ limit: number;
825
+ offset: number;
826
+ processing_time_ms: number;
827
+ }
571
828
  export interface ContentItemWithFields {
572
829
  id: string;
573
830
  title: string | null;
@@ -652,11 +909,17 @@ export interface RouteEntry {
652
909
  id: string;
653
910
  title: string;
654
911
  slug?: string;
655
- updatedAt?: string;
912
+ updated_at?: string;
656
913
  source?: string;
657
914
  }
915
+ export interface RoutesMetadata {
916
+ default_language: string;
917
+ available_languages: string[];
918
+ generated_at: string;
919
+ }
658
920
  export interface RoutesResponse {
659
- routes: Record<string, RouteEntry[]>;
921
+ data: Record<string, RouteEntry[]>;
922
+ metadata: RoutesMetadata;
660
923
  }
661
924
  export interface ExchangeRate {
662
925
  baseCurrency: string;
@@ -735,6 +998,13 @@ export interface PropertyConfig {
735
998
  maxLength?: number;
736
999
  allowedCollectionIds?: string[];
737
1000
  filterableFieldSlugs?: string[];
1001
+ productFilter?: {
1002
+ filters?: Array<{
1003
+ property_slug: string;
1004
+ facet_value_ids: string[];
1005
+ }>;
1006
+ collection_id?: string | null;
1007
+ };
738
1008
  }
739
1009
  export interface Property {
740
1010
  id: string;
@@ -857,6 +1127,11 @@ export interface ReviewListOptions {
857
1127
  sort?: 'NEWEST' | 'OLDEST' | 'HIGHEST_RATING' | 'LOWEST_RATING' | 'MOST_HELPFUL';
858
1128
  rating?: number;
859
1129
  }
1130
+ export interface RecentReviewsOptions {
1131
+ limit?: number;
1132
+ minRating?: number;
1133
+ languageCode?: string;
1134
+ }
860
1135
  export interface CreateReviewResult {
861
1136
  review: ProductReview;
862
1137
  requiresModeration: boolean;
@@ -880,6 +1155,60 @@ export interface CustomerSubscription {
880
1155
  cancelAtPeriodEnd: boolean;
881
1156
  createdAt: string;
882
1157
  }
1158
+ export type QuoteStatus = 'draft' | 'requested' | 'in_review' | 'approved' | 'declined' | 'expired' | 'converted_to_order' | 'cancelled';
1159
+ export interface QuoteLine {
1160
+ id: string;
1161
+ productVariantId: string;
1162
+ quantity: number;
1163
+ unitPrice: number | null;
1164
+ discountLabel: string | null;
1165
+ position: number;
1166
+ createdAt: string;
1167
+ updatedAt: string;
1168
+ }
1169
+ export interface Quote {
1170
+ id: string;
1171
+ code: string;
1172
+ channelId: string;
1173
+ customerId: string;
1174
+ currencyCode: string;
1175
+ status: QuoteStatus;
1176
+ expiresAt: string | null;
1177
+ salesRepUserId: string | null;
1178
+ customerNotes: string | null;
1179
+ convertedOrderId: string | null;
1180
+ lines: QuoteLine[];
1181
+ createdAt: string;
1182
+ updatedAt: string;
1183
+ }
1184
+ export interface QuoteList {
1185
+ items: Quote[];
1186
+ totalItems: number;
1187
+ }
1188
+ export interface QuoteListOptions {
1189
+ take?: number;
1190
+ skip?: number;
1191
+ status?: QuoteStatus;
1192
+ }
1193
+ export interface CreateQuoteRequestInput {
1194
+ items: Array<{
1195
+ productVariantId: string;
1196
+ quantity: number;
1197
+ }>;
1198
+ customerNotes?: string;
1199
+ }
1200
+ export interface B2bCreditStatus {
1201
+ customerId: string;
1202
+ currencyCode: string;
1203
+ balance: number;
1204
+ uninvoicedOrdersTotal: number;
1205
+ exposure: number;
1206
+ creditLimit: number | null;
1207
+ available: number | null;
1208
+ overdueInvoiceCount: number;
1209
+ overLimit: boolean;
1210
+ hasOverdue: boolean;
1211
+ }
883
1212
  export interface VatValidationResult {
884
1213
  status: string;
885
1214
  vatNumber: string;
@@ -931,6 +1260,39 @@ export interface DeliveryOption {
931
1260
  date: string;
932
1261
  time: DeliveryTimeFrame[];
933
1262
  }
1263
+ export interface PickupLocationAddress {
1264
+ streetLine1: string;
1265
+ number: string;
1266
+ postalCode: string;
1267
+ city: string;
1268
+ countryCode: string;
1269
+ region?: string;
1270
+ }
1271
+ export interface PickupLocationOpeningHours {
1272
+ weekday: number;
1273
+ open: string;
1274
+ close: string;
1275
+ }
1276
+ export interface PickupLocation {
1277
+ provider: string;
1278
+ carrier: number;
1279
+ locationCode: string;
1280
+ name: string;
1281
+ address: PickupLocationAddress;
1282
+ openingHours?: PickupLocationOpeningHours[];
1283
+ details?: Record<string, unknown>;
1284
+ }
1285
+ export interface PickupLocationSearchInput {
1286
+ countryCode: string;
1287
+ postalCode: string;
1288
+ carrierId: number;
1289
+ city?: string;
1290
+ street?: string;
1291
+ number?: string;
1292
+ latitude?: number;
1293
+ longitude?: number;
1294
+ distance?: number;
1295
+ }
934
1296
  export interface ShipmentTrackingHistoryEntry {
935
1297
  status: number;
936
1298
  time: string;
@@ -965,6 +1327,9 @@ export interface CommerceModule {
965
1327
  getEligiblePaymentMethods(): Promise<PaymentMethod[]>;
966
1328
  transitionToArrangingPayment(): Promise<Order>;
967
1329
  addPayment(input: PaymentInput): Promise<Order>;
1330
+ createStripePaymentIntent(options?: RequestOptions): Promise<StripePaymentIntentResult>;
1331
+ getMolliePaymentMethods(input: MolliePaymentMethodsInput, options?: RequestOptions): Promise<MolliePaymentMethod[]>;
1332
+ createMolliePaymentIntent(input: CreateMolliePaymentIntentInput, options?: RequestOptions): Promise<MolliePaymentIntentResult>;
968
1333
  login(email: string, password: string): Promise<{
969
1334
  id: string;
970
1335
  identifier: string;
@@ -975,6 +1340,7 @@ export interface CommerceModule {
975
1340
  logout(): Promise<void>;
976
1341
  getCurrentCustomer(): Promise<Customer | null>;
977
1342
  getCustomerOrders(options?: OrderListOptions): Promise<PaginatedList<OrderSummary>>;
1343
+ reorder(orderCode: string): Promise<ReorderResult>;
978
1344
  getCollections(listOptions?: CollectionListOptions, options?: RequestOptions): Promise<Collection[]>;
979
1345
  getCollection(slug: string, options?: RequestOptions): Promise<CollectionDetail>;
980
1346
  updateCustomer(input: UpdateCustomerInput): Promise<Customer>;
@@ -1006,6 +1372,8 @@ export interface CommerceModule {
1006
1372
  }): Promise<PaginatedList<FavoriteItem>>;
1007
1373
  toggleFavorite(productVariantId: string): Promise<boolean>;
1008
1374
  removeFavorite(productVariantId: string): Promise<boolean>;
1375
+ subscribeToStockNotification(productVariantId: string, emailAddress?: string): Promise<StockNotificationSubscriptionResult>;
1376
+ unsubscribeFromStockNotification(token: string): Promise<boolean>;
1009
1377
  getProductRecommendations(productId: string, groupSlug?: string): Promise<RecommendedProductGroup[]>;
1010
1378
  getAgeVerificationStatus(): Promise<AgeVerificationStatus>;
1011
1379
  submitDateOfBirth(dateOfBirth: string): Promise<AgeVerificationStatus>;
@@ -1015,6 +1383,7 @@ export interface CommerceModule {
1015
1383
  totalItems: number;
1016
1384
  nextCursor: string | null;
1017
1385
  }>;
1386
+ getRecentProductReviews(options?: RecentReviewsOptions): Promise<ProductReview[]>;
1018
1387
  getReviewRatingSummary(productId: string): Promise<ReviewRatingSummary>;
1019
1388
  getReviewAttributeAggregations(productId: string): Promise<ReviewAttributeAggregation[]>;
1020
1389
  getReviewAttributes(productId?: string): Promise<ReviewAttribute[]>;
@@ -1027,16 +1396,32 @@ export interface CommerceModule {
1027
1396
  reportReview(reviewId: string, reason: string): Promise<boolean>;
1028
1397
  uploadReviewMedia(files: File[]): Promise<ReviewMediaUploadResult[]>;
1029
1398
  getMySubscriptions(): Promise<CustomerSubscription[]>;
1399
+ pauseMySubscription(id: string, reason?: string): Promise<CustomerSubscription>;
1400
+ resumeMySubscription(id: string): Promise<CustomerSubscription>;
1401
+ cancelMySubscription(id: string, options?: {
1402
+ reason?: string;
1403
+ immediate?: boolean;
1404
+ }): Promise<CustomerSubscription>;
1405
+ getMyQuotes(options?: QuoteListOptions): Promise<QuoteList>;
1406
+ getMyQuote(id: string): Promise<Quote | null>;
1407
+ createQuoteRequest(input: CreateQuoteRequestInput): Promise<Quote>;
1408
+ acceptQuote(id: string): Promise<Order>;
1409
+ cancelMyQuote(id: string, reason?: string): Promise<Quote>;
1030
1410
  getMyVatValidationStatus(): Promise<VatValidationResult | null>;
1031
1411
  setMyVatNumber(vatNumber: string): Promise<VatValidationResult>;
1032
1412
  clearMyVatNumber(): Promise<boolean>;
1033
1413
  getDropOffPoints(input: DropOffPointInput): Promise<DropOffPoint[]>;
1034
1414
  getDeliveryOptions(input: DeliveryOptionsInput): Promise<DeliveryOption[]>;
1035
1415
  trackShipment(barcode: string, postalCode: string): Promise<ShipmentTrackingInfo | null>;
1416
+ findPickupLocations(input: PickupLocationSearchInput): Promise<PickupLocation[]>;
1417
+ selectPickupLocation(location: PickupLocation): Promise<Order>;
1418
+ getActivePickupLocation(): Promise<PickupLocation | null>;
1419
+ getBranding(options?: RequestOptions): Promise<BrandingInfo>;
1036
1420
  }
1037
1421
  export interface ContentModule {
1038
1422
  resolvePath(path: string, locale?: string, options?: RequestOptions): Promise<ResolvedContent>;
1039
1423
  getContent(queryOptions: ContentQueryOptions, options?: RequestOptions): Promise<Record<string, unknown>>;
1424
+ searchContent(query: ContentSearchQuery, options?: RequestOptions): Promise<ContentSearchResult>;
1040
1425
  getAsset(id: string, options?: RequestOptions): Promise<CmsAsset>;
1041
1426
  lookupAssets(ids: string[], options?: RequestOptions): Promise<CmsAsset[]>;
1042
1427
  lookupVendureAssetDescriptions(vendureAssetIds: string[], options?: RequestOptions): Promise<Record<string, VendureAssetDescriptionTranslation[]>>;
@@ -1077,6 +1462,9 @@ export interface CurrencyModule {
1077
1462
  getExchangeRates(): Promise<ExchangeRate[]>;
1078
1463
  convertCurrency(amount: string, fromCurrency: string, toCurrency: string): Promise<ConvertedAmount>;
1079
1464
  }
1465
+ export interface CreditModule {
1466
+ getCreditStatus(options?: RequestOptions): Promise<B2bCreditStatus | null>;
1467
+ }
1080
1468
  export interface StorefrontClient {
1081
1469
  readonly context: StoreContext;
1082
1470
  readonly commerce: CommerceModule;
@@ -1085,6 +1473,8 @@ export interface StorefrontClient {
1085
1473
  readonly pricing: PricingModule;
1086
1474
  readonly media: MediaModule;
1087
1475
  readonly currency: CurrencyModule;
1476
+ readonly credit: CreditModule;
1477
+ readonly seo: import('./seo/types.js').SeoModule;
1088
1478
  readonly maintenanceMode: boolean;
1089
1479
  setLanguage(code: string): void;
1090
1480
  getLanguage(): string;