@ecomiq/storefront 0.1.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.
@@ -0,0 +1,1044 @@
1
+ import { GeoItem } from './core.js';
2
+ export { CartAddressesRequest, CartAddressesRequestSchema, CartBuyerRequest, CartBuyerRequestSchema, CartCheckoutPayment, CartCheckoutPaymentAction, CartCheckoutPaymentActionSchema, CartCheckoutPaymentSchema, CartCheckoutReadResponse, CartCheckoutReadResponseSchema, CartCheckoutRequest, CartCheckoutRequestSchema, CartCheckoutResponse, CartCheckoutResponseSchema, CartCouponRequest, CartCouponRequestSchema, CartCreateRequest, CartCreateRequestSchema, CartItemModifierRequest, CartItemModifierRequestSchema, CartItemRequest, CartItemRequestSchema, CartPaymentMethod, CartPaymentMethodSchema, CartPaymentMethodsResponse, CartPaymentMethodsResponseSchema, CartPaymentReceiptResponse, CartPaymentReceiptResponseSchema, CartResponse, CartResponseBundleItemSchema, CartResponseItemSchema, CartResponseSchema, CartShippingMethodPutRequest, CartShippingMethodPutRequestSchema, CustomerAddressUpsertInput, CustomerOrderDetail, CustomerOrderLineItem, CustomerOrderListItem, CustomerOrderShippingAddress, CustomerProfile, CustomerProfilePatch, CustomerSavedAddress, STOREFRONT_API_PATH_PREFIX, STOREFRONT_ECOMIQ_OAUTH_COOKIE_NAME, STOREFRONT_ECOMIQ_OAUTH_COOKIE_PATH, ShippingOptionGroup, ShippingOptionGroupSchema, ShippingOptionsResponse, ShippingOptionsResponseSchema, ShippingRate, ShippingRateSchema, StoreTheme, StorefrontPageBlock, StorefrontPageDetail, StorefrontPageDetailSchema, StorefrontPageListItem, StorefrontPageListItemSchema, StorefrontPageSection, ThemeComponentName, ThemeComponentsMap, ThemeName, apiClient, cartService, collectionService, countryCurrency, customerOrderStatusTone, fetchStorefrontGeoDistricts, fetchStorefrontGeoProvinces, formatCurrency, formatCustomerOrderStatus, formatOrderDate, formatOrderDateTime, loadStorefrontGeoDepartments, pageService, productService, resolveIneiCodesFromLabels, storeService, toGeoItems } from './core.js';
3
+ import { P as ProductsFilters, d as StorefrontProductsParamsInput } from './store-CYBCpY6v.js';
4
+ export { e as Product, t as ProductSchema, f as ProductVariant, u as ProductVariantSchema, w as ProductsFiltersSchema, g as ProductsResponse, v as ProductsResponseSchema, m as StorefrontBundleItem, C as StorefrontBundleItemSchema, I as StorefrontCheckoutSettingsSchema, r as StorefrontCmsPage, q as StorefrontCmsSettings, c as StorefrontCollection, o as StorefrontCollectionDetail, F as StorefrontCollectionDetailSchema, D as StorefrontCollectionSchema, n as StorefrontCollectionsResponse, E as StorefrontCollectionsResponseSchema, l as StorefrontPriceTier, B as StorefrontPriceTierSchema, a as StorefrontProduct, b as StorefrontProductDetail, A as StorefrontProductDetailSchema, k as StorefrontProductImage, x as StorefrontProductSchema, z as StorefrontProductsParamsSchema, h as StorefrontProductsResponse, y as StorefrontProductsResponseSchema, S as StorefrontSettings, s as StorefrontSettingsLegacyFlat, J as StorefrontSettingsLegacyFlatSchema, G as StorefrontSettingsSchema, p as StorefrontStore, H as StorefrontStoreSchema, i as StorefrontVariant, j as StorefrontVariantOption, N as normalizeStorefrontSettingsPayload, L as storefrontFaviconUrl, M as storefrontOgImageUrl, K as storefrontStoreRecord } from './store-CYBCpY6v.js';
5
+ import * as react from 'react';
6
+ import react__default, { ReactNode } from 'react';
7
+ import * as _tanstack_react_query from '@tanstack/react-query';
8
+ import { DehydratedState } from '@tanstack/react-query';
9
+ import * as better_auth_react from 'better-auth/react';
10
+ import { createAuthClient } from 'better-auth/react';
11
+ import * as better_auth from 'better-auth';
12
+ import { BetterAuthPlugin } from 'better-auth';
13
+ import * as zod from 'zod';
14
+ import { UseFormReturn } from 'react-hook-form';
15
+ import { C as CmsSectionsRendererProps } from './find-storefront-cms-page-Bo0-G1FK.js';
16
+ export { b as CmsLinkProps, d as CmsProduct, e as CmsRenderBlock, h as CmsRenderSection, i as CmsRenderSettings, j as CmsSectionData, D as DEFAULT_CMS_IMAGE_URL, O as OptionGroup, P as ProductVariantSelector, k as ProductVariantSelectorProps, m as ProductVariantSelectorRenderProps, S as SafeThemeInjector, l as SelectedOptions, c as canonicalSectionType, f as findStorefrontCmsPageBySlug, g as getCmsSectionKey, p as productSortValue, s as sanitizeHtml, a as storefrontHref, u as useStore } from './find-storefront-cms-page-Bo0-G1FK.js';
17
+ import * as zustand_middleware from 'zustand/middleware';
18
+ import * as zustand from 'zustand';
19
+ import { BetterAuthClientPlugin } from 'better-auth/client';
20
+ import 'axios';
21
+ import '@ecomiq/storefront/react';
22
+
23
+ interface QueryProviderProps {
24
+ children: ReactNode;
25
+ dehydratedState?: DehydratedState;
26
+ }
27
+ declare function QueryProvider({ children, dehydratedState }: QueryProviderProps): react.JSX.Element;
28
+
29
+ /** Instancia de `createAuthClient` (better-auth/react) con los plugins de la app. */
30
+ type StorefrontAuthClientInstance = ReturnType<typeof createAuthClient>;
31
+ declare function StorefrontAuthProvider({ authClient, children, }: {
32
+ authClient: StorefrontAuthClientInstance;
33
+ children: react__default.ReactNode;
34
+ }): react__default.JSX.Element;
35
+ declare function useStorefrontAuthClient(): StorefrontAuthClientInstance;
36
+ type StorefrontSessionUser = {
37
+ id: string;
38
+ email: string;
39
+ firstName: string;
40
+ lastName: string;
41
+ name?: string;
42
+ phone?: string;
43
+ };
44
+ /** Caducidad alineada con OAuth/`expires_in` (skew en ms). El bearer ya no viene en JSON de sesión. */
45
+ declare function storefrontSessionEndsSoon(expiresAt: Date | undefined, skewMs?: number): boolean;
46
+ /** @deprecated Usar `storefrontSessionEndsSoon` */
47
+ declare const storefrontAccessTokenNeedsRefresh: typeof storefrontSessionEndsSoon;
48
+ /**
49
+ * Sesión Better Auth + usuario mapeado para UI (headers, drawer).
50
+ */
51
+ declare function useStorefrontSession(): {
52
+ session: {
53
+ data: {
54
+ user: better_auth.StripEmptyObjects<{
55
+ id: string;
56
+ createdAt: Date;
57
+ updatedAt: Date;
58
+ email: string;
59
+ emailVerified: boolean;
60
+ name: string;
61
+ image?: string | null | undefined;
62
+ }>;
63
+ session: better_auth.StripEmptyObjects<{
64
+ id: string;
65
+ createdAt: Date;
66
+ updatedAt: Date;
67
+ userId: string;
68
+ expiresAt: Date;
69
+ token: string;
70
+ ipAddress?: string | null | undefined;
71
+ userAgent?: string | null | undefined;
72
+ }>;
73
+ } | null;
74
+ isPending: boolean;
75
+ isRefetching: boolean;
76
+ error: better_auth_react.BetterFetchError | null;
77
+ refetch: (queryParams?: {
78
+ query?: better_auth.SessionQueryParams;
79
+ } | undefined) => Promise<void>;
80
+ };
81
+ user: StorefrontSessionUser | null;
82
+ sessionExpiresAt: Date | undefined;
83
+ isAuthenticated: boolean;
84
+ isPending: boolean;
85
+ error: better_auth_react.BetterFetchError | null;
86
+ refetch: (queryParams?: {
87
+ query?: better_auth.SessionQueryParams;
88
+ } | undefined) => Promise<void>;
89
+ signOut: () => Promise<{
90
+ data: {
91
+ success: boolean;
92
+ };
93
+ error: null;
94
+ } | {
95
+ data: null;
96
+ error: {
97
+ code?: string | undefined | undefined;
98
+ message?: string | undefined | undefined;
99
+ status: number;
100
+ statusText: string;
101
+ };
102
+ }>;
103
+ };
104
+
105
+ declare function useUser(): {};
106
+
107
+ declare function useConfig(): {};
108
+
109
+ declare const useProducts: (storeId?: string) => {
110
+ useProductsList: (filters?: ProductsFilters) => _tanstack_react_query.UseQueryResult<{
111
+ items: {
112
+ id: string;
113
+ name: string;
114
+ slug: string;
115
+ images: {
116
+ url: string;
117
+ name?: string | undefined;
118
+ isPrimary?: boolean | undefined;
119
+ }[];
120
+ description?: string | undefined;
121
+ basePrice?: number | undefined;
122
+ salePrice?: number | undefined;
123
+ categories?: {
124
+ id: string;
125
+ name: string;
126
+ slug: string;
127
+ logo?: string | undefined;
128
+ icon?: string | undefined;
129
+ }[] | undefined;
130
+ tags?: string[] | undefined;
131
+ inStock?: boolean | undefined;
132
+ variants?: {
133
+ id: string;
134
+ name: string;
135
+ storeId: string;
136
+ productId: string;
137
+ weight: number | null;
138
+ order: number | null;
139
+ status?: string | null | undefined;
140
+ updatedOn?: string | null | undefined;
141
+ createdOn?: string | null | undefined;
142
+ basePrice?: number | null | undefined;
143
+ comparePrice?: number | null | undefined;
144
+ originalPrice?: number | null | undefined;
145
+ costPrice?: number | null | undefined;
146
+ isDefault?: boolean | null | undefined;
147
+ reserveStock?: number | null | undefined;
148
+ width?: number | null | undefined;
149
+ height?: number | null | undefined;
150
+ unitOfMeasure?: string | null | undefined;
151
+ sku?: string | null | undefined;
152
+ stock?: number | null | undefined;
153
+ leadTime?: string | null | undefined;
154
+ barCode?: string | null | undefined;
155
+ shippingWeight?: number | null | undefined;
156
+ images?: string[] | null | undefined;
157
+ attributes?: string[] | null | undefined;
158
+ variantStatus?: string | null | undefined;
159
+ deletedOn?: string | null | undefined;
160
+ }[] | undefined;
161
+ }[];
162
+ meta: {
163
+ total: number;
164
+ page: number;
165
+ pageSize: number;
166
+ hasNextPage: boolean;
167
+ };
168
+ }, Error>;
169
+ useInfiniteProducts: (filters?: Omit<ProductsFilters, "page">) => _tanstack_react_query.UseInfiniteQueryResult<_tanstack_react_query.InfiniteData<{
170
+ items: {
171
+ id: string;
172
+ name: string;
173
+ slug: string;
174
+ images: {
175
+ url: string;
176
+ name?: string | undefined;
177
+ isPrimary?: boolean | undefined;
178
+ }[];
179
+ description?: string | undefined;
180
+ basePrice?: number | undefined;
181
+ salePrice?: number | undefined;
182
+ categories?: {
183
+ id: string;
184
+ name: string;
185
+ slug: string;
186
+ logo?: string | undefined;
187
+ icon?: string | undefined;
188
+ }[] | undefined;
189
+ tags?: string[] | undefined;
190
+ inStock?: boolean | undefined;
191
+ variants?: {
192
+ id: string;
193
+ name: string;
194
+ storeId: string;
195
+ productId: string;
196
+ weight: number | null;
197
+ order: number | null;
198
+ status?: string | null | undefined;
199
+ updatedOn?: string | null | undefined;
200
+ createdOn?: string | null | undefined;
201
+ basePrice?: number | null | undefined;
202
+ comparePrice?: number | null | undefined;
203
+ originalPrice?: number | null | undefined;
204
+ costPrice?: number | null | undefined;
205
+ isDefault?: boolean | null | undefined;
206
+ reserveStock?: number | null | undefined;
207
+ width?: number | null | undefined;
208
+ height?: number | null | undefined;
209
+ unitOfMeasure?: string | null | undefined;
210
+ sku?: string | null | undefined;
211
+ stock?: number | null | undefined;
212
+ leadTime?: string | null | undefined;
213
+ barCode?: string | null | undefined;
214
+ shippingWeight?: number | null | undefined;
215
+ images?: string[] | null | undefined;
216
+ attributes?: string[] | null | undefined;
217
+ variantStatus?: string | null | undefined;
218
+ deletedOn?: string | null | undefined;
219
+ }[] | undefined;
220
+ }[];
221
+ meta: {
222
+ total: number;
223
+ page: number;
224
+ pageSize: number;
225
+ hasNextPage: boolean;
226
+ };
227
+ }, unknown>, Error>;
228
+ useProduct: (id: string) => _tanstack_react_query.UseQueryResult<{
229
+ id: string;
230
+ name: string;
231
+ slug: string;
232
+ images: {
233
+ url: string;
234
+ name?: string | undefined;
235
+ isPrimary?: boolean | undefined;
236
+ }[];
237
+ description?: string | undefined;
238
+ basePrice?: number | undefined;
239
+ salePrice?: number | undefined;
240
+ categories?: {
241
+ id: string;
242
+ name: string;
243
+ slug: string;
244
+ logo?: string | undefined;
245
+ icon?: string | undefined;
246
+ }[] | undefined;
247
+ tags?: string[] | undefined;
248
+ inStock?: boolean | undefined;
249
+ variants?: {
250
+ id: string;
251
+ name: string;
252
+ storeId: string;
253
+ productId: string;
254
+ weight: number | null;
255
+ order: number | null;
256
+ status?: string | null | undefined;
257
+ updatedOn?: string | null | undefined;
258
+ createdOn?: string | null | undefined;
259
+ basePrice?: number | null | undefined;
260
+ comparePrice?: number | null | undefined;
261
+ originalPrice?: number | null | undefined;
262
+ costPrice?: number | null | undefined;
263
+ isDefault?: boolean | null | undefined;
264
+ reserveStock?: number | null | undefined;
265
+ width?: number | null | undefined;
266
+ height?: number | null | undefined;
267
+ unitOfMeasure?: string | null | undefined;
268
+ sku?: string | null | undefined;
269
+ stock?: number | null | undefined;
270
+ leadTime?: string | null | undefined;
271
+ barCode?: string | null | undefined;
272
+ shippingWeight?: number | null | undefined;
273
+ images?: string[] | null | undefined;
274
+ attributes?: string[] | null | undefined;
275
+ variantStatus?: string | null | undefined;
276
+ deletedOn?: string | null | undefined;
277
+ }[] | undefined;
278
+ }, Error>;
279
+ useProductBySlug: (slug: string) => _tanstack_react_query.UseQueryResult<{
280
+ id: string;
281
+ name: string;
282
+ slug: string;
283
+ images: {
284
+ url: string;
285
+ name?: string | undefined;
286
+ isPrimary?: boolean | undefined;
287
+ }[];
288
+ description?: string | undefined;
289
+ basePrice?: number | undefined;
290
+ salePrice?: number | undefined;
291
+ categories?: {
292
+ id: string;
293
+ name: string;
294
+ slug: string;
295
+ logo?: string | undefined;
296
+ icon?: string | undefined;
297
+ }[] | undefined;
298
+ tags?: string[] | undefined;
299
+ inStock?: boolean | undefined;
300
+ variants?: {
301
+ id: string;
302
+ name: string;
303
+ storeId: string;
304
+ productId: string;
305
+ weight: number | null;
306
+ order: number | null;
307
+ status?: string | null | undefined;
308
+ updatedOn?: string | null | undefined;
309
+ createdOn?: string | null | undefined;
310
+ basePrice?: number | null | undefined;
311
+ comparePrice?: number | null | undefined;
312
+ originalPrice?: number | null | undefined;
313
+ costPrice?: number | null | undefined;
314
+ isDefault?: boolean | null | undefined;
315
+ reserveStock?: number | null | undefined;
316
+ width?: number | null | undefined;
317
+ height?: number | null | undefined;
318
+ unitOfMeasure?: string | null | undefined;
319
+ sku?: string | null | undefined;
320
+ stock?: number | null | undefined;
321
+ leadTime?: string | null | undefined;
322
+ barCode?: string | null | undefined;
323
+ shippingWeight?: number | null | undefined;
324
+ images?: string[] | null | undefined;
325
+ attributes?: string[] | null | undefined;
326
+ variantStatus?: string | null | undefined;
327
+ deletedOn?: string | null | undefined;
328
+ }[] | undefined;
329
+ }, Error>;
330
+ useSearchProducts: (query: string, filters?: Omit<ProductsFilters, "search">) => _tanstack_react_query.UseQueryResult<{
331
+ items: {
332
+ id: string;
333
+ name: string;
334
+ slug: string;
335
+ images: {
336
+ url: string;
337
+ name?: string | undefined;
338
+ isPrimary?: boolean | undefined;
339
+ }[];
340
+ description?: string | undefined;
341
+ basePrice?: number | undefined;
342
+ salePrice?: number | undefined;
343
+ categories?: {
344
+ id: string;
345
+ name: string;
346
+ slug: string;
347
+ logo?: string | undefined;
348
+ icon?: string | undefined;
349
+ }[] | undefined;
350
+ tags?: string[] | undefined;
351
+ inStock?: boolean | undefined;
352
+ variants?: {
353
+ id: string;
354
+ name: string;
355
+ storeId: string;
356
+ productId: string;
357
+ weight: number | null;
358
+ order: number | null;
359
+ status?: string | null | undefined;
360
+ updatedOn?: string | null | undefined;
361
+ createdOn?: string | null | undefined;
362
+ basePrice?: number | null | undefined;
363
+ comparePrice?: number | null | undefined;
364
+ originalPrice?: number | null | undefined;
365
+ costPrice?: number | null | undefined;
366
+ isDefault?: boolean | null | undefined;
367
+ reserveStock?: number | null | undefined;
368
+ width?: number | null | undefined;
369
+ height?: number | null | undefined;
370
+ unitOfMeasure?: string | null | undefined;
371
+ sku?: string | null | undefined;
372
+ stock?: number | null | undefined;
373
+ leadTime?: string | null | undefined;
374
+ barCode?: string | null | undefined;
375
+ shippingWeight?: number | null | undefined;
376
+ images?: string[] | null | undefined;
377
+ attributes?: string[] | null | undefined;
378
+ variantStatus?: string | null | undefined;
379
+ deletedOn?: string | null | undefined;
380
+ }[] | undefined;
381
+ }[];
382
+ meta: {
383
+ total: number;
384
+ page: number;
385
+ pageSize: number;
386
+ hasNextPage: boolean;
387
+ };
388
+ }, Error>;
389
+ useProductsByCategory: (category: string, filters?: Omit<ProductsFilters, "category">) => _tanstack_react_query.UseQueryResult<{
390
+ items: {
391
+ id: string;
392
+ name: string;
393
+ slug: string;
394
+ images: {
395
+ url: string;
396
+ name?: string | undefined;
397
+ isPrimary?: boolean | undefined;
398
+ }[];
399
+ description?: string | undefined;
400
+ basePrice?: number | undefined;
401
+ salePrice?: number | undefined;
402
+ categories?: {
403
+ id: string;
404
+ name: string;
405
+ slug: string;
406
+ logo?: string | undefined;
407
+ icon?: string | undefined;
408
+ }[] | undefined;
409
+ tags?: string[] | undefined;
410
+ inStock?: boolean | undefined;
411
+ variants?: {
412
+ id: string;
413
+ name: string;
414
+ storeId: string;
415
+ productId: string;
416
+ weight: number | null;
417
+ order: number | null;
418
+ status?: string | null | undefined;
419
+ updatedOn?: string | null | undefined;
420
+ createdOn?: string | null | undefined;
421
+ basePrice?: number | null | undefined;
422
+ comparePrice?: number | null | undefined;
423
+ originalPrice?: number | null | undefined;
424
+ costPrice?: number | null | undefined;
425
+ isDefault?: boolean | null | undefined;
426
+ reserveStock?: number | null | undefined;
427
+ width?: number | null | undefined;
428
+ height?: number | null | undefined;
429
+ unitOfMeasure?: string | null | undefined;
430
+ sku?: string | null | undefined;
431
+ stock?: number | null | undefined;
432
+ leadTime?: string | null | undefined;
433
+ barCode?: string | null | undefined;
434
+ shippingWeight?: number | null | undefined;
435
+ images?: string[] | null | undefined;
436
+ attributes?: string[] | null | undefined;
437
+ variantStatus?: string | null | undefined;
438
+ deletedOn?: string | null | undefined;
439
+ }[] | undefined;
440
+ }[];
441
+ meta: {
442
+ total: number;
443
+ page: number;
444
+ pageSize: number;
445
+ hasNextPage: boolean;
446
+ };
447
+ }, Error>;
448
+ useProductsOnSale: (filters?: Omit<ProductsFilters, "minPrice" | "maxPrice">) => _tanstack_react_query.UseQueryResult<{
449
+ items: {
450
+ id: string;
451
+ name: string;
452
+ slug: string;
453
+ images: {
454
+ url: string;
455
+ name?: string | undefined;
456
+ isPrimary?: boolean | undefined;
457
+ }[];
458
+ description?: string | undefined;
459
+ basePrice?: number | undefined;
460
+ salePrice?: number | undefined;
461
+ categories?: {
462
+ id: string;
463
+ name: string;
464
+ slug: string;
465
+ logo?: string | undefined;
466
+ icon?: string | undefined;
467
+ }[] | undefined;
468
+ tags?: string[] | undefined;
469
+ inStock?: boolean | undefined;
470
+ variants?: {
471
+ id: string;
472
+ name: string;
473
+ storeId: string;
474
+ productId: string;
475
+ weight: number | null;
476
+ order: number | null;
477
+ status?: string | null | undefined;
478
+ updatedOn?: string | null | undefined;
479
+ createdOn?: string | null | undefined;
480
+ basePrice?: number | null | undefined;
481
+ comparePrice?: number | null | undefined;
482
+ originalPrice?: number | null | undefined;
483
+ costPrice?: number | null | undefined;
484
+ isDefault?: boolean | null | undefined;
485
+ reserveStock?: number | null | undefined;
486
+ width?: number | null | undefined;
487
+ height?: number | null | undefined;
488
+ unitOfMeasure?: string | null | undefined;
489
+ sku?: string | null | undefined;
490
+ stock?: number | null | undefined;
491
+ leadTime?: string | null | undefined;
492
+ barCode?: string | null | undefined;
493
+ shippingWeight?: number | null | undefined;
494
+ images?: string[] | null | undefined;
495
+ attributes?: string[] | null | undefined;
496
+ variantStatus?: string | null | undefined;
497
+ deletedOn?: string | null | undefined;
498
+ }[] | undefined;
499
+ }[];
500
+ meta: {
501
+ total: number;
502
+ page: number;
503
+ pageSize: number;
504
+ hasNextPage: boolean;
505
+ };
506
+ }, Error>;
507
+ useProductsInStock: (filters?: Omit<ProductsFilters, "inStock">) => _tanstack_react_query.UseQueryResult<{
508
+ items: {
509
+ id: string;
510
+ name: string;
511
+ slug: string;
512
+ images: {
513
+ url: string;
514
+ name?: string | undefined;
515
+ isPrimary?: boolean | undefined;
516
+ }[];
517
+ description?: string | undefined;
518
+ basePrice?: number | undefined;
519
+ salePrice?: number | undefined;
520
+ categories?: {
521
+ id: string;
522
+ name: string;
523
+ slug: string;
524
+ logo?: string | undefined;
525
+ icon?: string | undefined;
526
+ }[] | undefined;
527
+ tags?: string[] | undefined;
528
+ inStock?: boolean | undefined;
529
+ variants?: {
530
+ id: string;
531
+ name: string;
532
+ storeId: string;
533
+ productId: string;
534
+ weight: number | null;
535
+ order: number | null;
536
+ status?: string | null | undefined;
537
+ updatedOn?: string | null | undefined;
538
+ createdOn?: string | null | undefined;
539
+ basePrice?: number | null | undefined;
540
+ comparePrice?: number | null | undefined;
541
+ originalPrice?: number | null | undefined;
542
+ costPrice?: number | null | undefined;
543
+ isDefault?: boolean | null | undefined;
544
+ reserveStock?: number | null | undefined;
545
+ width?: number | null | undefined;
546
+ height?: number | null | undefined;
547
+ unitOfMeasure?: string | null | undefined;
548
+ sku?: string | null | undefined;
549
+ stock?: number | null | undefined;
550
+ leadTime?: string | null | undefined;
551
+ barCode?: string | null | undefined;
552
+ shippingWeight?: number | null | undefined;
553
+ images?: string[] | null | undefined;
554
+ attributes?: string[] | null | undefined;
555
+ variantStatus?: string | null | undefined;
556
+ deletedOn?: string | null | undefined;
557
+ }[] | undefined;
558
+ }[];
559
+ meta: {
560
+ total: number;
561
+ page: number;
562
+ pageSize: number;
563
+ hasNextPage: boolean;
564
+ };
565
+ }, Error>;
566
+ useRefreshProducts: () => _tanstack_react_query.UseMutationResult<unknown, Error, void, unknown>;
567
+ useStorefrontProductsList: (params?: StorefrontProductsParamsInput) => _tanstack_react_query.UseQueryResult<{
568
+ categories: {
569
+ value: string;
570
+ count: number;
571
+ }[];
572
+ pageSize: number;
573
+ pageIndex: number;
574
+ totalCount: number;
575
+ totalPages: number;
576
+ products: {
577
+ id: string;
578
+ name: string;
579
+ slug: string;
580
+ price: number;
581
+ variantCount: number;
582
+ isAvailable: boolean;
583
+ totalInventory: number;
584
+ bundleItemsCount: number;
585
+ status?: string | null | undefined;
586
+ tags?: string[] | null | undefined;
587
+ category?: string | null | undefined;
588
+ productType?: string | null | undefined;
589
+ imageUrl?: string | null | undefined;
590
+ compareAtPrice?: number | null | undefined;
591
+ brand?: string | null | undefined;
592
+ }[];
593
+ brands: {
594
+ value: string;
595
+ count: number;
596
+ }[];
597
+ minPrice?: number | null | undefined;
598
+ maxPrice?: number | null | undefined;
599
+ }, Error>;
600
+ useStorefrontInfiniteProducts: (params?: Omit<StorefrontProductsParamsInput, "page">) => _tanstack_react_query.UseInfiniteQueryResult<_tanstack_react_query.InfiniteData<{
601
+ categories: {
602
+ value: string;
603
+ count: number;
604
+ }[];
605
+ pageSize: number;
606
+ pageIndex: number;
607
+ totalCount: number;
608
+ totalPages: number;
609
+ products: {
610
+ id: string;
611
+ name: string;
612
+ slug: string;
613
+ price: number;
614
+ variantCount: number;
615
+ isAvailable: boolean;
616
+ totalInventory: number;
617
+ bundleItemsCount: number;
618
+ status?: string | null | undefined;
619
+ tags?: string[] | null | undefined;
620
+ category?: string | null | undefined;
621
+ productType?: string | null | undefined;
622
+ imageUrl?: string | null | undefined;
623
+ compareAtPrice?: number | null | undefined;
624
+ brand?: string | null | undefined;
625
+ }[];
626
+ brands: {
627
+ value: string;
628
+ count: number;
629
+ }[];
630
+ minPrice?: number | null | undefined;
631
+ maxPrice?: number | null | undefined;
632
+ }, unknown>, Error>;
633
+ useRefreshStorefrontProducts: () => _tanstack_react_query.UseMutationResult<{
634
+ categories: {
635
+ value: string;
636
+ count: number;
637
+ }[];
638
+ pageSize: number;
639
+ pageIndex: number;
640
+ totalCount: number;
641
+ totalPages: number;
642
+ products: {
643
+ id: string;
644
+ name: string;
645
+ slug: string;
646
+ price: number;
647
+ variantCount: number;
648
+ isAvailable: boolean;
649
+ totalInventory: number;
650
+ bundleItemsCount: number;
651
+ status?: string | null | undefined;
652
+ tags?: string[] | null | undefined;
653
+ category?: string | null | undefined;
654
+ productType?: string | null | undefined;
655
+ imageUrl?: string | null | undefined;
656
+ compareAtPrice?: number | null | undefined;
657
+ brand?: string | null | undefined;
658
+ }[];
659
+ brands: {
660
+ value: string;
661
+ count: number;
662
+ }[];
663
+ minPrice?: number | null | undefined;
664
+ maxPrice?: number | null | undefined;
665
+ }, Error, {
666
+ sort?: "price_asc" | "price_desc" | "name_asc" | "name_desc" | "newest" | undefined;
667
+ sellerId?: string | undefined;
668
+ search?: string | undefined;
669
+ inStock?: boolean | undefined;
670
+ page?: number | undefined;
671
+ pageSize?: number | undefined;
672
+ category?: string | undefined;
673
+ minPrice?: number | undefined;
674
+ maxPrice?: number | undefined;
675
+ productType?: string | undefined;
676
+ brand?: string | undefined;
677
+ collection?: string | undefined;
678
+ } | undefined, unknown>;
679
+ };
680
+
681
+ declare const useCollections: (storeId?: string) => {
682
+ useStorefrontCollectionsList: () => _tanstack_react_query.UseQueryResult<{
683
+ id: string;
684
+ name: string;
685
+ slug: string;
686
+ type: string;
687
+ productCount: number;
688
+ description?: string | null | undefined;
689
+ imageUrl?: string | null | undefined;
690
+ }[], Error>;
691
+ useStorefrontCollectionBySlug: (slug: string) => _tanstack_react_query.UseQueryResult<{
692
+ id: string;
693
+ name: string;
694
+ slug: string;
695
+ type: string;
696
+ productCount: number;
697
+ description?: string | null | undefined;
698
+ imageUrl?: string | null | undefined;
699
+ }, Error>;
700
+ useRefreshStorefrontCollections: () => _tanstack_react_query.UseMutationResult<{
701
+ id: string;
702
+ name: string;
703
+ slug: string;
704
+ type: string;
705
+ productCount: number;
706
+ description?: string | null | undefined;
707
+ imageUrl?: string | null | undefined;
708
+ }[], Error, void, unknown>;
709
+ };
710
+
711
+ declare const usePages: (storeId?: string) => {
712
+ usePagesList: () => _tanstack_react_query.UseQueryResult<{
713
+ id: string;
714
+ name: string;
715
+ slug: string;
716
+ layout: string;
717
+ }[], Error>;
718
+ usePageBySlug: (slug: string) => _tanstack_react_query.UseQueryResult<{
719
+ id: string;
720
+ name: string;
721
+ slug: string;
722
+ layout: string;
723
+ settings?: zod.objectOutputType<{
724
+ seo: zod.ZodOptional<zod.ZodObject<{
725
+ title: zod.ZodOptional<zod.ZodString>;
726
+ description: zod.ZodOptional<zod.ZodString>;
727
+ }, "strip", zod.ZodTypeAny, {
728
+ description?: string | undefined;
729
+ title?: string | undefined;
730
+ }, {
731
+ description?: string | undefined;
732
+ title?: string | undefined;
733
+ }>>;
734
+ html: zod.ZodOptional<zod.ZodString>;
735
+ title: zod.ZodOptional<zod.ZodString>;
736
+ }, zod.ZodUnknown, "strip"> | undefined;
737
+ sections?: {
738
+ id: string;
739
+ type: string;
740
+ order: number;
741
+ blocks: {
742
+ id: string;
743
+ type: string;
744
+ order: number;
745
+ settings?: Record<string, unknown> | undefined;
746
+ }[];
747
+ settings?: Record<string, unknown> | undefined;
748
+ }[] | undefined;
749
+ }, Error>;
750
+ useRefreshPages: () => _tanstack_react_query.UseMutationResult<{
751
+ id: string;
752
+ name: string;
753
+ slug: string;
754
+ layout: string;
755
+ }[], Error, void, unknown>;
756
+ };
757
+
758
+ declare const useCartAddresses: () => _tanstack_react_query.UseMutationResult<{
759
+ id: string;
760
+ items: {
761
+ id: string;
762
+ quantity: number;
763
+ variantId: string;
764
+ unitPrice: number;
765
+ bundleItems: {
766
+ productId: string;
767
+ quantity: number;
768
+ variantId: string;
769
+ productName: string;
770
+ sku?: string | null | undefined;
771
+ imageUrl?: string | null | undefined;
772
+ brand?: string | null | undefined;
773
+ variantName?: string | null | undefined;
774
+ }[];
775
+ title: string;
776
+ variantLabel?: string | null | undefined;
777
+ thumbnail?: string | null | undefined;
778
+ variantSku?: string | null | undefined;
779
+ }[];
780
+ currencyCode: string;
781
+ metadata: Record<string, unknown>;
782
+ promotionCodes: string[];
783
+ shippingMethods: unknown[];
784
+ totals: {
785
+ total: number;
786
+ subtotal: number;
787
+ discountTotal: number;
788
+ shippingTotal: number;
789
+ taxTotal: number;
790
+ warrantyTotal: number;
791
+ };
792
+ phone?: string | null | undefined;
793
+ email?: string | null | undefined;
794
+ firstName?: string | null | undefined;
795
+ lastName?: string | null | undefined;
796
+ salesChannelId?: string | null | undefined;
797
+ shippingAddress?: unknown;
798
+ billingAddress?: unknown;
799
+ regionId?: string | null | undefined;
800
+ completedAt?: string | null | undefined;
801
+ }, Error, {
802
+ shippingAddress: {
803
+ name: string;
804
+ address1: string;
805
+ city: string;
806
+ countryCode: string;
807
+ phone?: string | null | undefined;
808
+ company?: string | null | undefined;
809
+ address2?: string | null | undefined;
810
+ province?: string | null | undefined;
811
+ postalCode?: string | null | undefined;
812
+ district?: string | null | undefined;
813
+ latitude?: number | null | undefined;
814
+ longitude?: number | null | undefined;
815
+ geo?: {
816
+ departmentCode?: string | null | undefined;
817
+ provinceCode?: string | null | undefined;
818
+ districtCode?: string | null | undefined;
819
+ } | null | undefined;
820
+ };
821
+ billingAddress: {
822
+ name: string;
823
+ address1: string;
824
+ city: string;
825
+ countryCode: string;
826
+ phone?: string | null | undefined;
827
+ company?: string | null | undefined;
828
+ address2?: string | null | undefined;
829
+ province?: string | null | undefined;
830
+ postalCode?: string | null | undefined;
831
+ district?: string | null | undefined;
832
+ latitude?: number | null | undefined;
833
+ longitude?: number | null | undefined;
834
+ geo?: {
835
+ departmentCode?: string | null | undefined;
836
+ provinceCode?: string | null | undefined;
837
+ districtCode?: string | null | undefined;
838
+ } | null | undefined;
839
+ };
840
+ }, unknown>;
841
+
842
+ declare const useCartGet: () => _tanstack_react_query.UseQueryResult<{
843
+ id: string;
844
+ items: {
845
+ id: string;
846
+ quantity: number;
847
+ variantId: string;
848
+ unitPrice: number;
849
+ bundleItems: {
850
+ productId: string;
851
+ quantity: number;
852
+ variantId: string;
853
+ productName: string;
854
+ sku?: string | null | undefined;
855
+ imageUrl?: string | null | undefined;
856
+ brand?: string | null | undefined;
857
+ variantName?: string | null | undefined;
858
+ }[];
859
+ title: string;
860
+ variantLabel?: string | null | undefined;
861
+ thumbnail?: string | null | undefined;
862
+ variantSku?: string | null | undefined;
863
+ }[];
864
+ currencyCode: string;
865
+ metadata: Record<string, unknown>;
866
+ promotionCodes: string[];
867
+ shippingMethods: unknown[];
868
+ totals: {
869
+ total: number;
870
+ subtotal: number;
871
+ discountTotal: number;
872
+ shippingTotal: number;
873
+ taxTotal: number;
874
+ warrantyTotal: number;
875
+ };
876
+ phone?: string | null | undefined;
877
+ email?: string | null | undefined;
878
+ firstName?: string | null | undefined;
879
+ lastName?: string | null | undefined;
880
+ salesChannelId?: string | null | undefined;
881
+ shippingAddress?: unknown;
882
+ billingAddress?: unknown;
883
+ regionId?: string | null | undefined;
884
+ completedAt?: string | null | undefined;
885
+ }, Error>;
886
+
887
+ declare const useCartCreate: () => _tanstack_react_query.UseMutationResult<{
888
+ id: string;
889
+ items: {
890
+ id: string;
891
+ quantity: number;
892
+ variantId: string;
893
+ unitPrice: number;
894
+ bundleItems: {
895
+ productId: string;
896
+ quantity: number;
897
+ variantId: string;
898
+ productName: string;
899
+ sku?: string | null | undefined;
900
+ imageUrl?: string | null | undefined;
901
+ brand?: string | null | undefined;
902
+ variantName?: string | null | undefined;
903
+ }[];
904
+ title: string;
905
+ variantLabel?: string | null | undefined;
906
+ thumbnail?: string | null | undefined;
907
+ variantSku?: string | null | undefined;
908
+ }[];
909
+ currencyCode: string;
910
+ metadata: Record<string, unknown>;
911
+ promotionCodes: string[];
912
+ shippingMethods: unknown[];
913
+ totals: {
914
+ total: number;
915
+ subtotal: number;
916
+ discountTotal: number;
917
+ shippingTotal: number;
918
+ taxTotal: number;
919
+ warrantyTotal: number;
920
+ };
921
+ phone?: string | null | undefined;
922
+ email?: string | null | undefined;
923
+ firstName?: string | null | undefined;
924
+ lastName?: string | null | undefined;
925
+ salesChannelId?: string | null | undefined;
926
+ shippingAddress?: unknown;
927
+ billingAddress?: unknown;
928
+ regionId?: string | null | undefined;
929
+ completedAt?: string | null | undefined;
930
+ }, Error, {
931
+ email: string;
932
+ currencyCode: string;
933
+ salesChannelId: string;
934
+ }, unknown>;
935
+
936
+ /** Campos mínimos que el hook sincroniza (checkout y direcciones de cuenta). */
937
+ type GeoIneiFormFields = {
938
+ countryCode: string;
939
+ departmentCode: string;
940
+ departmentName: string;
941
+ provinceCode: string;
942
+ provinceName: string;
943
+ districtCode: string;
944
+ districtName: string;
945
+ };
946
+ declare function useStorefrontGeoInei<T extends GeoIneiFormFields>(storeId: string, form: Pick<UseFormReturn<T>, "watch" | "setValue">): {
947
+ departments: GeoItem[];
948
+ provinces: GeoItem[];
949
+ districts: GeoItem[];
950
+ loadingDepartments: boolean;
951
+ loadingProvinces: boolean;
952
+ loadingDistricts: boolean;
953
+ departmentCode: string;
954
+ provinceCode: string;
955
+ districtCode: string;
956
+ selectedDepartment: GeoItem | undefined;
957
+ selectedProvince: GeoItem | undefined;
958
+ selectedDistrict: GeoItem | undefined;
959
+ storeRequestHeaders: {
960
+ readonly "X-Store-Id": string;
961
+ } | null;
962
+ };
963
+
964
+ type CartItemVariant = {
965
+ /** Identifier of the selected variant (if any) */
966
+ variantId?: string;
967
+ /** Optional SKU of the variant */
968
+ variantSku?: string;
969
+ /** Human readable label for the variant (e.g. "Color: Black • Size: M") */
970
+ variantLabel?: string;
971
+ };
972
+ type CartItem = CartItemVariant & {
973
+ id: string;
974
+ title: string;
975
+ image: string;
976
+ /** Backwards‑compatible size field; usually covered by variantLabel */
977
+ size: string;
978
+ price: number;
979
+ quantity: number;
980
+ };
981
+ type CheckoutStep = 'customer' | 'shipping' | 'shippingOptions' | 'payment';
982
+ type CheckoutCustomerLocal = {
983
+ email: string;
984
+ firstName: string;
985
+ lastName: string;
986
+ phone: string;
987
+ };
988
+ type CartState = {
989
+ count: number;
990
+ cart: CartItem[];
991
+ /** Token/id del carrito en backend (ownerId) */
992
+ cartTokenId: string | null;
993
+ setCartTokenId: (token: string | null) => void;
994
+ checkoutStep: CheckoutStep | null;
995
+ setCheckoutStep: (step: CheckoutStep | null) => void;
996
+ /**
997
+ * Customer guardado localmente para poder recrear el carrito si el backend
998
+ * devuelve 404 por token inválido.
999
+ */
1000
+ checkoutCustomerLocal: {
1001
+ cartTokenId: string;
1002
+ customer: CheckoutCustomerLocal;
1003
+ } | null;
1004
+ setCheckoutCustomerLocal: (customer: CheckoutCustomerLocal) => void;
1005
+ clearCheckoutCustomerLocal: () => void;
1006
+ addCart: (item: CartItem) => void;
1007
+ removeCart: (id: string) => void;
1008
+ /** Carrito/token inválido en servidor (ej. eliminado): limpia estado local y checkout. */
1009
+ clearCartSession: () => void;
1010
+ };
1011
+ declare const useCart: zustand.UseBoundStore<Omit<zustand.StoreApi<CartState>, "setState" | "persist"> & {
1012
+ setState(partial: CartState | Partial<CartState> | ((state: CartState) => CartState | Partial<CartState>), replace?: false | undefined): unknown;
1013
+ setState(state: CartState | ((state: CartState) => CartState), replace: true): unknown;
1014
+ persist: {
1015
+ setOptions: (options: Partial<zustand_middleware.PersistOptions<CartState, CartState, unknown>>) => void;
1016
+ clearStorage: () => void;
1017
+ rehydrate: () => Promise<void> | void;
1018
+ hasHydrated: () => boolean;
1019
+ onHydrate: (fn: (state: CartState) => void) => () => void;
1020
+ onFinishHydration: (fn: (state: CartState) => void) => () => void;
1021
+ getOptions: () => Partial<zustand_middleware.PersistOptions<CartState, CartState, unknown>>;
1022
+ };
1023
+ }>;
1024
+
1025
+ /**
1026
+ * Inicia sesión contra el OAuth (resource owner password), obtiene el perfil por userinfo
1027
+ * y crea/actualiza el usuario en Better Auth.
1028
+ * La caducidad de la sesión Better Auth sigue `expires_in` de Ecomiq (sin `refresh_token`).
1029
+ * El bearer OAuth solo va en cookie HttpOnly acotada a `/api/store` (no en JSON de sesión).
1030
+ */
1031
+ declare function ecomiqOAuthPassword(): BetterAuthPlugin;
1032
+
1033
+ /**
1034
+ * Cliente Better Auth para el plugin `ecomiqOAuthPassword`.
1035
+ * Tras añadirlo a `createAuthClient`, refresca la sesión al llamar al sign-in.
1036
+ *
1037
+ * Ejemplo:
1038
+ * `authClient.$fetch("/ecomiq-oauth/sign-in", { method: "POST", headers, body: { email, password } })`
1039
+ */
1040
+ declare function ecomiqOAuthPasswordClient(): BetterAuthClientPlugin;
1041
+
1042
+ declare function CmsSectionsRenderer({ sections, sectionData, linkComponent, currency, preview, wrap, }: CmsSectionsRendererProps): react.JSX.Element;
1043
+
1044
+ export { type CartItem, type CheckoutCustomerLocal, CmsSectionsRenderer, CmsSectionsRendererProps, type GeoIneiFormFields, GeoItem, ProductsFilters, QueryProvider, type StorefrontAuthClientInstance, StorefrontAuthProvider, StorefrontProductsParamsInput, type StorefrontSessionUser, ecomiqOAuthPassword, ecomiqOAuthPasswordClient, storefrontAccessTokenNeedsRefresh, storefrontSessionEndsSoon, useCart, useCartAddresses, useCartCreate, useCartGet, useCollections, useConfig, usePages, useProducts, useStorefrontAuthClient, useStorefrontGeoInei, useStorefrontSession, useUser };