hey-pharmacist-ecommerce 1.0.4 → 1.0.6
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.
- package/README.md +107 -1
- package/dist/index.d.mts +3636 -316
- package/dist/index.d.ts +3636 -316
- package/dist/index.js +6802 -3865
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +6756 -3817
- package/dist/index.mjs.map +1 -1
- package/package.json +17 -14
- package/src/components/AddressFormModal.tsx +171 -0
- package/src/components/CartItem.tsx +17 -12
- package/src/components/FilterChips.tsx +195 -0
- package/src/components/Header.tsx +121 -71
- package/src/components/OrderCard.tsx +18 -25
- package/src/components/ProductCard.tsx +209 -72
- package/src/components/ui/Button.tsx +13 -5
- package/src/components/ui/Card.tsx +46 -0
- package/src/hooks/useAddresses.ts +83 -0
- package/src/hooks/useOrders.ts +37 -19
- package/src/hooks/useProducts.ts +55 -63
- package/src/hooks/useWishlistProducts.ts +75 -0
- package/src/index.ts +3 -19
- package/src/lib/Apis/api.ts +1 -0
- package/src/lib/Apis/apis/cart-api.ts +3 -3
- package/src/lib/Apis/apis/inventory-api.ts +0 -108
- package/src/lib/Apis/apis/stores-api.ts +70 -0
- package/src/lib/Apis/apis/wishlist-api.ts +447 -0
- package/src/lib/Apis/models/cart-item-populated.ts +0 -1
- package/src/lib/Apis/models/create-single-variant-product-dto.ts +3 -10
- package/src/lib/Apis/models/create-variant-dto.ts +26 -33
- package/src/lib/Apis/models/extended-product-dto.ts +20 -24
- package/src/lib/Apis/models/index.ts +2 -1
- package/src/lib/Apis/models/order-time-line-dto.ts +49 -0
- package/src/lib/Apis/models/order.ts +3 -8
- package/src/lib/Apis/models/populated-order.ts +3 -8
- package/src/lib/Apis/models/product-variant.ts +29 -0
- package/src/lib/Apis/models/update-product-variant-dto.ts +16 -23
- package/src/lib/Apis/models/wishlist.ts +51 -0
- package/src/lib/Apis/wrapper.ts +18 -7
- package/src/lib/api-adapter/index.ts +0 -12
- package/src/lib/types/index.ts +16 -61
- package/src/lib/utils/colors.ts +7 -4
- package/src/lib/utils/format.ts +1 -1
- package/src/lib/validations/address.ts +14 -0
- package/src/providers/AuthProvider.tsx +61 -31
- package/src/providers/CartProvider.tsx +18 -28
- package/src/providers/EcommerceProvider.tsx +7 -0
- package/src/providers/FavoritesProvider.tsx +86 -0
- package/src/providers/ThemeProvider.tsx +16 -1
- package/src/providers/WishlistProvider.tsx +174 -0
- package/src/screens/AddressesScreen.tsx +484 -0
- package/src/screens/CartScreen.tsx +120 -84
- package/src/screens/CategoriesScreen.tsx +120 -0
- package/src/screens/CheckoutScreen.tsx +919 -241
- package/src/screens/CurrentOrdersScreen.tsx +125 -61
- package/src/screens/HomeScreen.tsx +209 -0
- package/src/screens/LoginScreen.tsx +133 -88
- package/src/screens/NewAddressScreen.tsx +187 -0
- package/src/screens/OrdersScreen.tsx +162 -50
- package/src/screens/ProductDetailScreen.tsx +641 -190
- package/src/screens/ProfileScreen.tsx +192 -116
- package/src/screens/RegisterScreen.tsx +193 -144
- package/src/screens/SearchResultsScreen.tsx +165 -0
- package/src/screens/ShopScreen.tsx +1110 -146
- package/src/screens/WishlistScreen.tsx +428 -0
- package/src/lib/Apis/models/inventory-paginated-response.ts +0 -75
- package/src/lib/api/auth.ts +0 -81
- package/src/lib/api/cart.ts +0 -42
- package/src/lib/api/orders.ts +0 -53
- package/src/lib/api/products.ts +0 -51
- package/src/lib/api-adapter/auth-adapter.ts +0 -196
- package/src/lib/api-adapter/cart-adapter.ts +0 -193
- package/src/lib/api-adapter/mappers.ts +0 -147
- package/src/lib/api-adapter/orders-adapter.ts +0 -195
- package/src/lib/api-adapter/products-adapter.ts +0 -194
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/utils/colors.ts","../src/providers/ThemeProvider.tsx","../src/lib/Apis/configuration.ts","../src/lib/api-adapter/config.ts","../src/lib/Apis/base.ts","../src/lib/Apis/apis/auth-api.ts","../src/lib/Apis/apis/users-api.ts","../src/lib/api-adapter/mappers.ts","../src/lib/api-adapter/auth-adapter.ts","../src/lib/Apis/apis/products-api.ts","../src/lib/Apis/apis/categories-api.ts","../src/lib/api-adapter/products-adapter.ts","../src/lib/Apis/apis/cart-api.ts","../src/lib/api-adapter/cart-adapter.ts","../src/lib/Apis/apis/orders-api.ts","../src/lib/api-adapter/orders-adapter.ts","../src/lib/api/auth.ts","../src/lib/api/client.ts","../src/providers/AuthProvider.tsx","../src/lib/api/cart.ts","../src/providers/CartProvider.tsx","../src/providers/EcommerceProvider.tsx","../src/lib/utils/format.ts","../src/components/ProductCard.tsx","../src/components/ui/Skeleton.tsx","../src/components/ui/Button.tsx","../src/components/EmptyState.tsx","../src/components/ui/Input.tsx","../src/lib/api/products.ts","../src/hooks/useProducts.ts","../src/screens/ShopScreen.tsx","../src/components/ui/Badge.tsx","../src/screens/ProductDetailScreen.tsx","../src/components/CartItem.tsx","../src/screens/CartScreen.tsx","../src/lib/api/orders.ts","../src/screens/CheckoutScreen.tsx","../src/screens/LoginScreen.tsx","../src/screens/RegisterScreen.tsx","../src/screens/ProfileScreen.tsx","../src/components/OrderCard.tsx","../src/hooks/useOrders.ts","../src/screens/OrdersScreen.tsx","../src/screens/CurrentOrdersScreen.tsx","../src/components/Header.tsx","../src/components/Footer.tsx","../src/components/ui/Modal.tsx"],"names":["createContext","useContext","useEffect","React","axios","globalAxios","authApi","productsApi","cartApi","ordersApi","TOKEN_KEY","getAuthToken","useState","useCallback","toast","Toaster","motion","Image","Heart","ShoppingCart","forwardRef","useRouter","Search","SlidersHorizontal","Package","Star","Check","Minus","Plus","Truck","Shield","CartItem","Trash2","ShoppingBag","ArrowRight","z","useForm","zodResolver","CreditCard","Lock","useSearchParams","EyeOff","Eye","Link","UserPlus","LogOut","Calendar","ExternalLink","ChevronLeft","ChevronRight","User","X","Menu","AnimatePresence","Mail","Phone","MapPin","Facebook","Twitter","Instagram"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Convert hex color to RGB array\n */\nexport function hexToRgb(hex: string): [number, number, number] {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result\n ? [\n parseInt(result[1], 16),\n parseInt(result[2], 16),\n parseInt(result[3], 16),\n ]\n : [0, 0, 0];\n}\n\n/**\n * Generate color shades from a base color\n */\nexport function generateColorShades(baseColor: string) {\n const [r, g, b] = hexToRgb(baseColor);\n \n const shades = {\n 50: lighten(r, g, b, 0.95),\n 100: lighten(r, g, b, 0.9),\n 200: lighten(r, g, b, 0.75),\n 300: lighten(r, g, b, 0.6),\n 400: lighten(r, g, b, 0.3),\n 500: `${r}, ${g}, ${b}`,\n 600: darken(r, g, b, 0.1),\n 700: darken(r, g, b, 0.2),\n 800: darken(r, g, b, 0.3),\n 900: darken(r, g, b, 0.4),\n 950: darken(r, g, b, 0.5),\n };\n \n return shades;\n}\n\nfunction lighten(r: number, g: number, b: number, amount: number): string {\n const newR = Math.round(r + (255 - r) * amount);\n const newG = Math.round(g + (255 - g) * amount);\n const newB = Math.round(b + (255 - b) * amount);\n return `${newR}, ${newG}, ${newB}`;\n}\n\nfunction darken(r: number, g: number, b: number, amount: number): string {\n const newR = Math.round(r * (1 - amount));\n const newG = Math.round(g * (1 - amount));\n const newB = Math.round(b * (1 - amount));\n return `${newR}, ${newG}, ${newB}`;\n}\n\n","'use client';\n\nimport React, { createContext, useContext, useEffect } from 'react';\nimport { EcommerceConfig } from '@/lib/types';\nimport { generateColorShades } from '@/lib/utils/colors';\n\ninterface ThemeContextValue {\n config: EcommerceConfig;\n}\n\nconst ThemeContext = createContext<ThemeContextValue | undefined>(undefined);\n\nexport function useTheme() {\n const context = useContext(ThemeContext);\n if (!context) {\n throw new Error('useTheme must be used within ThemeProvider');\n }\n return context;\n}\n\ninterface ThemeProviderProps {\n config: EcommerceConfig;\n children: React.ReactNode;\n}\n\nexport function ThemeProvider({ config, children }: ThemeProviderProps) {\n useEffect(() => {\n // Generate color shades and set CSS variables\n const primaryShades = generateColorShades(config.colors.primary);\n const secondaryShades = generateColorShades(config.colors.secondary);\n const accentShades = generateColorShades(config.colors.accent);\n\n const root = document.documentElement;\n\n // Set primary color variables\n Object.entries(primaryShades).forEach(([shade, rgb]) => {\n root.style.setProperty(`--color-primary-${shade}`, rgb);\n });\n\n // Set secondary color variables\n Object.entries(secondaryShades).forEach(([shade, rgb]) => {\n root.style.setProperty(`--color-secondary-${shade}`, rgb);\n });\n\n // Set accent color variables\n Object.entries(accentShades).forEach(([shade, rgb]) => {\n root.style.setProperty(`--color-accent-${shade}`, rgb);\n });\n }, [config.colors]);\n\n return (\n <ThemeContext.Provider value={{ config }}>\n {children}\n </ThemeContext.Provider>\n );\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Hey Pharamcist API\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\n *\n * OpenAPI spec version: 1.0\n * \n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nexport interface ConfigurationParameters {\n _id?: string;\n apiKey?: string | Promise<string> | ((name: string) => string) | ((name: string) => Promise<string>);\n username?: string;\n password?: string;\n accessToken?: string | Promise<string> | ((name?: string, scopes?: string[]) => string) | ((name?: string, scopes?: string[]) => Promise<string>);\n basePath?: string;\n baseOptions?: any;\n}\n\nexport class Configuration {\n /**\n * parameter for apiKey security\n * @param name security name\n * @memberof Configuration\n */\n apiKey?: string | Promise<string> | ((name: string) => string) | ((name: string) => Promise<string>);\n /**\n * parameter for basic security\n *\n * @type {string}\n * @memberof Configuration\n */\n username?: string;\n /**\n * parameter for basic security\n *\n * @type {string}\n * @memberof Configuration\n */\n password?: string;\n /**\n * parameter for oauth2 security\n * @param name security name\n * @param scopes oauth2 scope\n * @memberof Configuration\n */\n accessToken?: string | Promise<string> | ((name?: string, scopes?: string[]) => string) | ((name?: string, scopes?: string[]) => Promise<string>);\n /**\n * override base path\n *\n * @type {string}\n * @memberof Configuration\n */\n basePath?: string;\n /**\n * base options for axios calls\n *\n * @type {any}\n * @memberof Configuration\n */\n baseOptions?: any;\n\n constructor(param: ConfigurationParameters = {}) {\n this.apiKey = param.apiKey;\n this.username = param.username;\n this.password = param.password;\n this.accessToken = param.accessToken;\n this.basePath = param.basePath;\n this.baseOptions = param.baseOptions;\n }\n}\n","/**\n * API Adapter Configuration\n * Bridges the frontend components with the real backend APIs\n */\n\nimport { Configuration } from '../Apis/configuration';\nimport { EcommerceConfig } from '../types';\n\nlet apiConfiguration: Configuration | null = null;\nlet currentConfig: EcommerceConfig | null = null;\n\n/**\n * Initialize the API configuration with store settings\n */\nexport function initializeApiAdapter(config: EcommerceConfig): Configuration {\n currentConfig = config;\n \n apiConfiguration = new Configuration({\n basePath: config.apiBaseUrl,\n apiKey: () => config.storeId, // x-store-key header\n accessToken: () => getAuthToken() || '', // Bearer token\n });\n\n return apiConfiguration;\n}\n\n/**\n * Get the current API configuration\n */\nexport function getApiConfiguration(): Configuration {\n if (!apiConfiguration) {\n throw new Error('API adapter not initialized. Call initializeApiAdapter first.');\n }\n return apiConfiguration;\n}\n\n/**\n * Get the current ecommerce config\n */\nexport function getCurrentConfig(): EcommerceConfig {\n if (!currentConfig) {\n throw new Error('API adapter not initialized.');\n }\n return currentConfig;\n}\n\n// Token management\nconst TOKEN_KEY = 'ecommerce_access_token';\n\nexport function setAuthToken(token: string): void {\n if (typeof window !== 'undefined') {\n localStorage.setItem(TOKEN_KEY, token);\n // Update the configuration with new token\n if (apiConfiguration) {\n apiConfiguration.accessToken = () => token;\n }\n }\n}\n\nexport function getAuthToken(): string | null {\n if (typeof window !== 'undefined') {\n return localStorage.getItem(TOKEN_KEY);\n }\n return null;\n}\n\nexport function clearAuthToken(): void {\n if (typeof window !== 'undefined') {\n localStorage.removeItem(TOKEN_KEY);\n // Clear from configuration\n if (apiConfiguration) {\n apiConfiguration.accessToken = () => '';\n }\n }\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Hey Pharamcist API\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\n *\n * OpenAPI spec version: 1.0\n * \n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Configuration } from \"./configuration\";\n// Some imports not used depending on template conditions\n// @ts-ignore\nimport globalAxios, { AxiosRequestConfig, AxiosInstance } from 'axios';\n\nexport const BASE_PATH = \"/\".replace(/\\/+$/, \"\");\n\n/**\n *\n * @export\n */\nexport const COLLECTION_FORMATS = {\n csv: \",\",\n ssv: \" \",\n tsv: \"\\t\",\n pipes: \"|\",\n};\n\n/**\n *\n * @export\n * @interface RequestArgs\n */\nexport interface RequestArgs {\n _id?: string;\n url: string;\n options: AxiosRequestConfig;\n}\n\n/**\n *\n * @export\n * @class BaseAPI\n */\nexport class BaseAPI {\n protected configuration: Configuration | undefined;\n\n constructor(configuration?: Configuration, protected basePath: string = BASE_PATH, protected axios: AxiosInstance = globalAxios) {\n if (configuration) {\n this.configuration = configuration;\n this.basePath = configuration.basePath || this.basePath;\n }\n }\n};\n\n/**\n *\n * @export\n * @class RequiredError\n * @extends {Error}\n */\nexport class RequiredError extends Error {\n name: \"RequiredError\" = \"RequiredError\";\n constructor(public field: string, msg?: string) {\n super(msg);\n }\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Hey Pharamcist API\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\n *\n * OpenAPI spec version: 1.0\n * \n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport globalAxios, { AxiosResponse, AxiosInstance, AxiosRequestConfig } from 'axios';\nimport { Configuration } from '../configuration';\n// Some imports not used depending on template conditions\n// @ts-ignore\nimport { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '../base';\nimport { CreateUserDto } from '../models';\nimport { ForgetPassword } from '../models';\nimport { LoginDto } from '../models';\nimport { RegisterOrLoginWithGmail } from '../models';\nimport { TAdminSessionData } from '../models';\nimport { TUserSessionData } from '../models';\nimport { UserEntity } from '../models';\nimport { VerifyEmailDTO } from '../models';\n/**\n * AuthApi - axios parameter creator\n * @export\n */\nexport const AuthApiAxiosParamCreator = function (configuration?: Configuration) {\n return {\n /**\n * \n * @summary Change Email for user\n * @param {ForgetPassword} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n changeEmail: async (body: ForgetPassword, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling changeEmail.');\n }\n const localVarPath = `/auth/change-email`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Change user password\n * @param {string} oldPassword \n * @param {string} newPassword \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n changePassword: async (oldPassword: string, newPassword: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'oldPassword' is not null or undefined\n if (oldPassword === null || oldPassword === undefined) {\n throw new RequiredError('oldPassword','Required parameter oldPassword was null or undefined when calling changePassword.');\n }\n // verify required parameter 'newPassword' is not null or undefined\n if (newPassword === null || newPassword === undefined) {\n throw new RequiredError('newPassword','Required parameter newPassword was null or undefined when calling changePassword.');\n }\n const localVarPath = `/auth/change-password`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n if (oldPassword !== undefined && oldPassword !== null) {\n localVarHeaderParameter['oldPassword'] = String(oldPassword);\n }\n\n if (newPassword !== undefined && newPassword !== null) {\n localVarHeaderParameter['newPassword'] = String(newPassword);\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Signin to dashboard\n * @param {LoginDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n dashboardLogin: async (body: LoginDto, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling dashboardLogin.');\n }\n const localVarPath = `/auth/dash/signin`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Reset user password\n * @param {string} newPassword \n * @param {string} token \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n resetPassword: async (newPassword: string, token: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'newPassword' is not null or undefined\n if (newPassword === null || newPassword === undefined) {\n throw new RequiredError('newPassword','Required parameter newPassword was null or undefined when calling resetPassword.');\n }\n // verify required parameter 'token' is not null or undefined\n if (token === null || token === undefined) {\n throw new RequiredError('token','Required parameter token was null or undefined when calling resetPassword.');\n }\n const localVarPath = `/auth/reset-password`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n if (newPassword !== undefined && newPassword !== null) {\n localVarHeaderParameter['newPassword'] = String(newPassword);\n }\n\n if (token !== undefined && token !== null) {\n localVarHeaderParameter['token'] = String(token);\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Send forget password email\n * @param {ForgetPassword} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n sendForgetPasswordEmail: async (body: ForgetPassword, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling sendForgetPasswordEmail.');\n }\n const localVarPath = `/auth/forget-password`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Signin to store\n * @param {LoginDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n signin: async (body: LoginDto, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling signin.');\n }\n const localVarPath = `/auth/signin`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Signin with gmail\n * @param {RegisterOrLoginWithGmail} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n signinWithGmail: async (body: RegisterOrLoginWithGmail, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling signinWithGmail.');\n }\n const localVarPath = `/auth/signin/gmail`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Register new user\n * @param {CreateUserDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n signup: async (body: CreateUserDto, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling signup.');\n }\n const localVarPath = `/auth/signup`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Register new user with gmail\n * @param {RegisterOrLoginWithGmail} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n signupWithGmail: async (body: RegisterOrLoginWithGmail, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling signupWithGmail.');\n }\n const localVarPath = `/auth/signup/gmail`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Verify user email\n * @param {VerifyEmailDTO} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n verifyUserEmail: async (body: VerifyEmailDTO, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling verifyUserEmail.');\n }\n const localVarPath = `/auth/verify-user`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n }\n};\n\n/**\n * AuthApi - functional programming interface\n * @export\n */\nexport const AuthApiFp = function(configuration?: Configuration) {\n return {\n /**\n * \n * @summary Change Email for user\n * @param {ForgetPassword} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async changeEmail(body: ForgetPassword, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<UserEntity>>> {\n const localVarAxiosArgs = await AuthApiAxiosParamCreator(configuration).changeEmail(body, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Change user password\n * @param {string} oldPassword \n * @param {string} newPassword \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async changePassword(oldPassword: string, newPassword: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {\n const localVarAxiosArgs = await AuthApiAxiosParamCreator(configuration).changePassword(oldPassword, newPassword, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Signin to dashboard\n * @param {LoginDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async dashboardLogin(body: LoginDto, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<TAdminSessionData>>> {\n const localVarAxiosArgs = await AuthApiAxiosParamCreator(configuration).dashboardLogin(body, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Reset user password\n * @param {string} newPassword \n * @param {string} token \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async resetPassword(newPassword: string, token: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {\n const localVarAxiosArgs = await AuthApiAxiosParamCreator(configuration).resetPassword(newPassword, token, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Send forget password email\n * @param {ForgetPassword} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async sendForgetPasswordEmail(body: ForgetPassword, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {\n const localVarAxiosArgs = await AuthApiAxiosParamCreator(configuration).sendForgetPasswordEmail(body, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Signin to store\n * @param {LoginDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async signin(body: LoginDto, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<TUserSessionData>>> {\n const localVarAxiosArgs = await AuthApiAxiosParamCreator(configuration).signin(body, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Signin with gmail\n * @param {RegisterOrLoginWithGmail} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async signinWithGmail(body: RegisterOrLoginWithGmail, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<TUserSessionData>>> {\n const localVarAxiosArgs = await AuthApiAxiosParamCreator(configuration).signinWithGmail(body, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Register new user\n * @param {CreateUserDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async signup(body: CreateUserDto, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<TUserSessionData>>> {\n const localVarAxiosArgs = await AuthApiAxiosParamCreator(configuration).signup(body, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Register new user with gmail\n * @param {RegisterOrLoginWithGmail} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async signupWithGmail(body: RegisterOrLoginWithGmail, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<TUserSessionData>>> {\n const localVarAxiosArgs = await AuthApiAxiosParamCreator(configuration).signupWithGmail(body, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Verify user email\n * @param {VerifyEmailDTO} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async verifyUserEmail(body: VerifyEmailDTO, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<TUserSessionData>>> {\n const localVarAxiosArgs = await AuthApiAxiosParamCreator(configuration).verifyUserEmail(body, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n }\n};\n\n/**\n * AuthApi - factory interface\n * @export\n */\nexport const AuthApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {\n return {\n /**\n * \n * @summary Change Email for user\n * @param {ForgetPassword} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async changeEmail(body: ForgetPassword, options?: AxiosRequestConfig): Promise<AxiosResponse<UserEntity>> {\n return AuthApiFp(configuration).changeEmail(body, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Change user password\n * @param {string} oldPassword \n * @param {string} newPassword \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async changePassword(oldPassword: string, newPassword: string, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {\n return AuthApiFp(configuration).changePassword(oldPassword, newPassword, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Signin to dashboard\n * @param {LoginDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async dashboardLogin(body: LoginDto, options?: AxiosRequestConfig): Promise<AxiosResponse<TAdminSessionData>> {\n return AuthApiFp(configuration).dashboardLogin(body, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Reset user password\n * @param {string} newPassword \n * @param {string} token \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async resetPassword(newPassword: string, token: string, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {\n return AuthApiFp(configuration).resetPassword(newPassword, token, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Send forget password email\n * @param {ForgetPassword} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async sendForgetPasswordEmail(body: ForgetPassword, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {\n return AuthApiFp(configuration).sendForgetPasswordEmail(body, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Signin to store\n * @param {LoginDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async signin(body: LoginDto, options?: AxiosRequestConfig): Promise<AxiosResponse<TUserSessionData>> {\n return AuthApiFp(configuration).signin(body, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Signin with gmail\n * @param {RegisterOrLoginWithGmail} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async signinWithGmail(body: RegisterOrLoginWithGmail, options?: AxiosRequestConfig): Promise<AxiosResponse<TUserSessionData>> {\n return AuthApiFp(configuration).signinWithGmail(body, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Register new user\n * @param {CreateUserDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async signup(body: CreateUserDto, options?: AxiosRequestConfig): Promise<AxiosResponse<TUserSessionData>> {\n return AuthApiFp(configuration).signup(body, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Register new user with gmail\n * @param {RegisterOrLoginWithGmail} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async signupWithGmail(body: RegisterOrLoginWithGmail, options?: AxiosRequestConfig): Promise<AxiosResponse<TUserSessionData>> {\n return AuthApiFp(configuration).signupWithGmail(body, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Verify user email\n * @param {VerifyEmailDTO} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async verifyUserEmail(body: VerifyEmailDTO, options?: AxiosRequestConfig): Promise<AxiosResponse<TUserSessionData>> {\n return AuthApiFp(configuration).verifyUserEmail(body, options).then((request) => request(axios, basePath));\n },\n };\n};\n\n/**\n * AuthApi - object-oriented interface\n * @export\n * @class AuthApi\n * @extends {BaseAPI}\n */\nexport class AuthApi extends BaseAPI {\n /**\n * \n * @summary Change Email for user\n * @param {ForgetPassword} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AuthApi\n */\n public async changeEmail(body: ForgetPassword, options?: AxiosRequestConfig) : Promise<AxiosResponse<UserEntity>> {\n return AuthApiFp(this.configuration).changeEmail(body, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Change user password\n * @param {string} oldPassword \n * @param {string} newPassword \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AuthApi\n */\n public async changePassword(oldPassword: string, newPassword: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {\n return AuthApiFp(this.configuration).changePassword(oldPassword, newPassword, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Signin to dashboard\n * @param {LoginDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AuthApi\n */\n public async dashboardLogin(body: LoginDto, options?: AxiosRequestConfig) : Promise<AxiosResponse<TAdminSessionData>> {\n return AuthApiFp(this.configuration).dashboardLogin(body, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Reset user password\n * @param {string} newPassword \n * @param {string} token \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AuthApi\n */\n public async resetPassword(newPassword: string, token: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {\n return AuthApiFp(this.configuration).resetPassword(newPassword, token, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Send forget password email\n * @param {ForgetPassword} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AuthApi\n */\n public async sendForgetPasswordEmail(body: ForgetPassword, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {\n return AuthApiFp(this.configuration).sendForgetPasswordEmail(body, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Signin to store\n * @param {LoginDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AuthApi\n */\n public async signin(body: LoginDto, options?: AxiosRequestConfig) : Promise<AxiosResponse<TUserSessionData>> {\n return AuthApiFp(this.configuration).signin(body, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Signin with gmail\n * @param {RegisterOrLoginWithGmail} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AuthApi\n */\n public async signinWithGmail(body: RegisterOrLoginWithGmail, options?: AxiosRequestConfig) : Promise<AxiosResponse<TUserSessionData>> {\n return AuthApiFp(this.configuration).signinWithGmail(body, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Register new user\n * @param {CreateUserDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AuthApi\n */\n public async signup(body: CreateUserDto, options?: AxiosRequestConfig) : Promise<AxiosResponse<TUserSessionData>> {\n return AuthApiFp(this.configuration).signup(body, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Register new user with gmail\n * @param {RegisterOrLoginWithGmail} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AuthApi\n */\n public async signupWithGmail(body: RegisterOrLoginWithGmail, options?: AxiosRequestConfig) : Promise<AxiosResponse<TUserSessionData>> {\n return AuthApiFp(this.configuration).signupWithGmail(body, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Verify user email\n * @param {VerifyEmailDTO} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AuthApi\n */\n public async verifyUserEmail(body: VerifyEmailDTO, options?: AxiosRequestConfig) : Promise<AxiosResponse<TUserSessionData>> {\n return AuthApiFp(this.configuration).verifyUserEmail(body, options).then((request) => request(this.axios, this.basePath));\n }\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Hey Pharamcist API\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\n *\n * OpenAPI spec version: 1.0\n * \n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport globalAxios, { AxiosResponse, AxiosInstance, AxiosRequestConfig } from 'axios';\nimport { Configuration } from '../configuration';\n// Some imports not used depending on template conditions\n// @ts-ignore\nimport { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '../base';\nimport { AllowUserCreditDto } from '../models';\nimport { ChangeUserEmailDto } from '../models';\nimport { CreateUserDto } from '../models';\nimport { UpdateUserDto } from '../models';\nimport { UserEntity } from '../models';\nimport { UserInsightsDto } from '../models';\nimport { UsersPaginatedResponse } from '../models';\n/**\n * UsersApi - axios parameter creator\n * @export\n */\nexport const UsersApiAxiosParamCreator = function (configuration?: Configuration) {\n return {\n /**\n * \n * @summary Allow user credit\n * @param {AllowUserCreditDto} body \n * @param {string} userId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n allowUserCredit: async (body: AllowUserCreditDto, userId: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling allowUserCredit.');\n }\n // verify required parameter 'userId' is not null or undefined\n if (userId === null || userId === undefined) {\n throw new RequiredError('userId','Required parameter userId was null or undefined when calling allowUserCredit.');\n }\n const localVarPath = `/users/allow-user-credit/{userId}`\n .replace(`{${\"userId\"}}`, encodeURIComponent(String(userId)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'PATCH', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Change Email\n * @param {ChangeUserEmailDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n changeUserEmail: async (body: ChangeUserEmailDto, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling changeUserEmail.');\n }\n const localVarPath = `/users/change-email`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Create a new user to be used from the dashboard\n * @param {CreateUserDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n createUser: async (body: CreateUserDto, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling createUser.');\n }\n const localVarPath = `/users`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Deletes a single user\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteMyProfile: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n const localVarPath = `/users/deleteMyProfile`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'DELETE', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Deletes a single user\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteUser: async (id: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'id' is not null or undefined\n if (id === null || id === undefined) {\n throw new RequiredError('id','Required parameter id was null or undefined when calling deleteUser.');\n }\n const localVarPath = `/users/{id}`\n .replace(`{${\"id\"}}`, encodeURIComponent(String(id)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'DELETE', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Disable user credit\n * @param {string} userId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n disableUserCredit: async (userId: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'userId' is not null or undefined\n if (userId === null || userId === undefined) {\n throw new RequiredError('userId','Required parameter userId was null or undefined when calling disableUserCredit.');\n }\n const localVarPath = `/users/disable-user-credit/{userId}`\n .replace(`{${\"userId\"}}`, encodeURIComponent(String(userId)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'PATCH', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get all users for a store\n * @param {string} [role] \n * @param {string} [sortingOrder] \n * @param {string} [sortingColumn] \n * @param {Date} [createdBefore] Filter users registered before a specific date\n * @param {Date} [createdAfter] Filter users registered after a specific date\n * @param {string} [search] Search by user first name, last name, email, phone number or id\n * @param {number} [limit] \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getAllUsers: async (role?: string, sortingOrder?: string, sortingColumn?: string, createdBefore?: Date, createdAfter?: Date, search?: string, limit?: number, page?: number, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n const localVarPath = `/users`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n if (role !== undefined) {\n localVarQueryParameter['role'] = role;\n }\n\n if (sortingOrder !== undefined) {\n localVarQueryParameter['sortingOrder'] = sortingOrder;\n }\n\n if (sortingColumn !== undefined) {\n localVarQueryParameter['sortingColumn'] = sortingColumn;\n }\n\n if (createdBefore !== undefined) {\n localVarQueryParameter['createdBefore'] = (createdBefore as any instanceof Date) ?\n (createdBefore as any).toISOString() :\n createdBefore;\n }\n\n if (createdAfter !== undefined) {\n localVarQueryParameter['createdAfter'] = (createdAfter as any instanceof Date) ?\n (createdAfter as any).toISOString() :\n createdAfter;\n }\n\n if (search !== undefined) {\n localVarQueryParameter['search'] = search;\n }\n\n if (limit !== undefined) {\n localVarQueryParameter['limit'] = limit;\n }\n\n if (page !== undefined) {\n localVarQueryParameter['page'] = page;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get user insights\n * @param {string} [groupId] Id of the group to get insights for, if null, get for all Users\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getInsights: async (groupId?: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n const localVarPath = `/users/insights`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n if (groupId !== undefined) {\n localVarQueryParameter['groupId'] = groupId;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * This request uses the Token that is sent in the header to retrieve the user information ... this request is used to handle the user session in the store and the dashboard \n * @summary Get my profile\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getMyProfile: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n const localVarPath = `/users/mine`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get a single user\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getSingleUser: async (id: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'id' is not null or undefined\n if (id === null || id === undefined) {\n throw new RequiredError('id','Required parameter id was null or undefined when calling getSingleUser.');\n }\n const localVarPath = `/users/{id}`\n .replace(`{${\"id\"}}`, encodeURIComponent(String(id)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Send OTP to user\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n sendOTP: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n const localVarPath = `/users/send-otp`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Update a user\n * @param {UpdateUserDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n updateMyProfile: async (body: UpdateUserDto, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling updateMyProfile.');\n }\n const localVarPath = `/users/updateMyProfile`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'PATCH', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Update a user\n * @param {UpdateUserDto} body \n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n updateUser: async (body: UpdateUserDto, id: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling updateUser.');\n }\n // verify required parameter 'id' is not null or undefined\n if (id === null || id === undefined) {\n throw new RequiredError('id','Required parameter id was null or undefined when calling updateUser.');\n }\n const localVarPath = `/users/{id}`\n .replace(`{${\"id\"}}`, encodeURIComponent(String(id)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'PATCH', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Verify OTP\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n verifyOTP: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n const localVarPath = `/users/verify-otp`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n }\n};\n\n/**\n * UsersApi - functional programming interface\n * @export\n */\nexport const UsersApiFp = function(configuration?: Configuration) {\n return {\n /**\n * \n * @summary Allow user credit\n * @param {AllowUserCreditDto} body \n * @param {string} userId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async allowUserCredit(body: AllowUserCreditDto, userId: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<UserEntity>>> {\n const localVarAxiosArgs = await UsersApiAxiosParamCreator(configuration).allowUserCredit(body, userId, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Change Email\n * @param {ChangeUserEmailDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async changeUserEmail(body: ChangeUserEmailDto, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {\n const localVarAxiosArgs = await UsersApiAxiosParamCreator(configuration).changeUserEmail(body, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Create a new user to be used from the dashboard\n * @param {CreateUserDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async createUser(body: CreateUserDto, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<UserEntity>>> {\n const localVarAxiosArgs = await UsersApiAxiosParamCreator(configuration).createUser(body, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Deletes a single user\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async deleteMyProfile(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {\n const localVarAxiosArgs = await UsersApiAxiosParamCreator(configuration).deleteMyProfile(options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Deletes a single user\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async deleteUser(id: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {\n const localVarAxiosArgs = await UsersApiAxiosParamCreator(configuration).deleteUser(id, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Disable user credit\n * @param {string} userId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async disableUserCredit(userId: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<UserEntity>>> {\n const localVarAxiosArgs = await UsersApiAxiosParamCreator(configuration).disableUserCredit(userId, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get all users for a store\n * @param {string} [role] \n * @param {string} [sortingOrder] \n * @param {string} [sortingColumn] \n * @param {Date} [createdBefore] Filter users registered before a specific date\n * @param {Date} [createdAfter] Filter users registered after a specific date\n * @param {string} [search] Search by user first name, last name, email, phone number or id\n * @param {number} [limit] \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getAllUsers(role?: string, sortingOrder?: string, sortingColumn?: string, createdBefore?: Date, createdAfter?: Date, search?: string, limit?: number, page?: number, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<UsersPaginatedResponse>>> {\n const localVarAxiosArgs = await UsersApiAxiosParamCreator(configuration).getAllUsers(role, sortingOrder, sortingColumn, createdBefore, createdAfter, search, limit, page, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get user insights\n * @param {string} [groupId] Id of the group to get insights for, if null, get for all Users\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getInsights(groupId?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<UserInsightsDto>>> {\n const localVarAxiosArgs = await UsersApiAxiosParamCreator(configuration).getInsights(groupId, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * This request uses the Token that is sent in the header to retrieve the user information ... this request is used to handle the user session in the store and the dashboard \n * @summary Get my profile\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getMyProfile(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<UserEntity>>> {\n const localVarAxiosArgs = await UsersApiAxiosParamCreator(configuration).getMyProfile(options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get a single user\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getSingleUser(id: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<UserEntity>>> {\n const localVarAxiosArgs = await UsersApiAxiosParamCreator(configuration).getSingleUser(id, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Send OTP to user\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async sendOTP(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {\n const localVarAxiosArgs = await UsersApiAxiosParamCreator(configuration).sendOTP(options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Update a user\n * @param {UpdateUserDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async updateMyProfile(body: UpdateUserDto, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<UserEntity>>> {\n const localVarAxiosArgs = await UsersApiAxiosParamCreator(configuration).updateMyProfile(body, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Update a user\n * @param {UpdateUserDto} body \n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async updateUser(body: UpdateUserDto, id: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<UserEntity>>> {\n const localVarAxiosArgs = await UsersApiAxiosParamCreator(configuration).updateUser(body, id, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Verify OTP\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async verifyOTP(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {\n const localVarAxiosArgs = await UsersApiAxiosParamCreator(configuration).verifyOTP(options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n }\n};\n\n/**\n * UsersApi - factory interface\n * @export\n */\nexport const UsersApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {\n return {\n /**\n * \n * @summary Allow user credit\n * @param {AllowUserCreditDto} body \n * @param {string} userId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async allowUserCredit(body: AllowUserCreditDto, userId: string, options?: AxiosRequestConfig): Promise<AxiosResponse<UserEntity>> {\n return UsersApiFp(configuration).allowUserCredit(body, userId, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Change Email\n * @param {ChangeUserEmailDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async changeUserEmail(body: ChangeUserEmailDto, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {\n return UsersApiFp(configuration).changeUserEmail(body, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Create a new user to be used from the dashboard\n * @param {CreateUserDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async createUser(body: CreateUserDto, options?: AxiosRequestConfig): Promise<AxiosResponse<UserEntity>> {\n return UsersApiFp(configuration).createUser(body, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Deletes a single user\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async deleteMyProfile(options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {\n return UsersApiFp(configuration).deleteMyProfile(options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Deletes a single user\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async deleteUser(id: string, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {\n return UsersApiFp(configuration).deleteUser(id, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Disable user credit\n * @param {string} userId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async disableUserCredit(userId: string, options?: AxiosRequestConfig): Promise<AxiosResponse<UserEntity>> {\n return UsersApiFp(configuration).disableUserCredit(userId, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get all users for a store\n * @param {string} [role] \n * @param {string} [sortingOrder] \n * @param {string} [sortingColumn] \n * @param {Date} [createdBefore] Filter users registered before a specific date\n * @param {Date} [createdAfter] Filter users registered after a specific date\n * @param {string} [search] Search by user first name, last name, email, phone number or id\n * @param {number} [limit] \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getAllUsers(role?: string, sortingOrder?: string, sortingColumn?: string, createdBefore?: Date, createdAfter?: Date, search?: string, limit?: number, page?: number, options?: AxiosRequestConfig): Promise<AxiosResponse<UsersPaginatedResponse>> {\n return UsersApiFp(configuration).getAllUsers(role, sortingOrder, sortingColumn, createdBefore, createdAfter, search, limit, page, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get user insights\n * @param {string} [groupId] Id of the group to get insights for, if null, get for all Users\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getInsights(groupId?: string, options?: AxiosRequestConfig): Promise<AxiosResponse<UserInsightsDto>> {\n return UsersApiFp(configuration).getInsights(groupId, options).then((request) => request(axios, basePath));\n },\n /**\n * This request uses the Token that is sent in the header to retrieve the user information ... this request is used to handle the user session in the store and the dashboard \n * @summary Get my profile\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getMyProfile(options?: AxiosRequestConfig): Promise<AxiosResponse<UserEntity>> {\n return UsersApiFp(configuration).getMyProfile(options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get a single user\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getSingleUser(id: string, options?: AxiosRequestConfig): Promise<AxiosResponse<UserEntity>> {\n return UsersApiFp(configuration).getSingleUser(id, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Send OTP to user\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async sendOTP(options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {\n return UsersApiFp(configuration).sendOTP(options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Update a user\n * @param {UpdateUserDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async updateMyProfile(body: UpdateUserDto, options?: AxiosRequestConfig): Promise<AxiosResponse<UserEntity>> {\n return UsersApiFp(configuration).updateMyProfile(body, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Update a user\n * @param {UpdateUserDto} body \n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async updateUser(body: UpdateUserDto, id: string, options?: AxiosRequestConfig): Promise<AxiosResponse<UserEntity>> {\n return UsersApiFp(configuration).updateUser(body, id, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Verify OTP\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async verifyOTP(options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {\n return UsersApiFp(configuration).verifyOTP(options).then((request) => request(axios, basePath));\n },\n };\n};\n\n/**\n * UsersApi - object-oriented interface\n * @export\n * @class UsersApi\n * @extends {BaseAPI}\n */\nexport class UsersApi extends BaseAPI {\n /**\n * \n * @summary Allow user credit\n * @param {AllowUserCreditDto} body \n * @param {string} userId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof UsersApi\n */\n public async allowUserCredit(body: AllowUserCreditDto, userId: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<UserEntity>> {\n return UsersApiFp(this.configuration).allowUserCredit(body, userId, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Change Email\n * @param {ChangeUserEmailDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof UsersApi\n */\n public async changeUserEmail(body: ChangeUserEmailDto, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {\n return UsersApiFp(this.configuration).changeUserEmail(body, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Create a new user to be used from the dashboard\n * @param {CreateUserDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof UsersApi\n */\n public async createUser(body: CreateUserDto, options?: AxiosRequestConfig) : Promise<AxiosResponse<UserEntity>> {\n return UsersApiFp(this.configuration).createUser(body, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Deletes a single user\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof UsersApi\n */\n public async deleteMyProfile(options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {\n return UsersApiFp(this.configuration).deleteMyProfile(options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Deletes a single user\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof UsersApi\n */\n public async deleteUser(id: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {\n return UsersApiFp(this.configuration).deleteUser(id, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Disable user credit\n * @param {string} userId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof UsersApi\n */\n public async disableUserCredit(userId: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<UserEntity>> {\n return UsersApiFp(this.configuration).disableUserCredit(userId, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get all users for a store\n * @param {string} [role] \n * @param {string} [sortingOrder] \n * @param {string} [sortingColumn] \n * @param {Date} [createdBefore] Filter users registered before a specific date\n * @param {Date} [createdAfter] Filter users registered after a specific date\n * @param {string} [search] Search by user first name, last name, email, phone number or id\n * @param {number} [limit] \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof UsersApi\n */\n public async getAllUsers(role?: string, sortingOrder?: string, sortingColumn?: string, createdBefore?: Date, createdAfter?: Date, search?: string, limit?: number, page?: number, options?: AxiosRequestConfig) : Promise<AxiosResponse<UsersPaginatedResponse>> {\n return UsersApiFp(this.configuration).getAllUsers(role, sortingOrder, sortingColumn, createdBefore, createdAfter, search, limit, page, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get user insights\n * @param {string} [groupId] Id of the group to get insights for, if null, get for all Users\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof UsersApi\n */\n public async getInsights(groupId?: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<UserInsightsDto>> {\n return UsersApiFp(this.configuration).getInsights(groupId, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * This request uses the Token that is sent in the header to retrieve the user information ... this request is used to handle the user session in the store and the dashboard \n * @summary Get my profile\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof UsersApi\n */\n public async getMyProfile(options?: AxiosRequestConfig) : Promise<AxiosResponse<UserEntity>> {\n return UsersApiFp(this.configuration).getMyProfile(options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get a single user\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof UsersApi\n */\n public async getSingleUser(id: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<UserEntity>> {\n return UsersApiFp(this.configuration).getSingleUser(id, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Send OTP to user\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof UsersApi\n */\n public async sendOTP(options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {\n return UsersApiFp(this.configuration).sendOTP(options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Update a user\n * @param {UpdateUserDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof UsersApi\n */\n public async updateMyProfile(body: UpdateUserDto, options?: AxiosRequestConfig) : Promise<AxiosResponse<UserEntity>> {\n return UsersApiFp(this.configuration).updateMyProfile(body, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Update a user\n * @param {UpdateUserDto} body \n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof UsersApi\n */\n public async updateUser(body: UpdateUserDto, id: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<UserEntity>> {\n return UsersApiFp(this.configuration).updateUser(body, id, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Verify OTP\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof UsersApi\n */\n public async verifyOTP(options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {\n return UsersApiFp(this.configuration).verifyOTP(options).then((request) => request(this.axios, this.basePath));\n }\n}\n","/**\n * Data Mappers\n * Convert backend models to frontend types\n */\n\nimport { UserEntity, TUserSessionData } from '../Apis/models';\nimport { ExtendedProductDTO } from '../Apis/models';\nimport { CartResponseDto } from '../Apis/models';\nimport { PopulatedOrder } from '../Apis/models';\nimport { User, Product, Cart, Order, OrderStatus, CartItem } from '../types';\n\n/**\n * Map backend UserEntity to frontend User\n */\nexport function mapUser(backendUser: UserEntity): User {\n return {\n id: backendUser.id || backendUser._id || '',\n email: backendUser.email || '',\n firstName: backendUser.firstname || '',\n lastName: backendUser.lastname || '',\n phone: backendUser.phoneNumber,\n avatar: backendUser.avatar,\n createdAt: backendUser.createdAt ? backendUser.createdAt.toString() : new Date().toISOString(),\n };\n}\n\n/**\n * Map backend session data to user and token\n */\nexport function mapSessionData(sessionData: TUserSessionData): { user: User; token: string } {\n return {\n user: mapUser(sessionData.userData),\n token: sessionData.authToken,\n };\n}\n\n/**\n * Map backend product to frontend Product\n */\nexport function mapProduct(backendProduct: ExtendedProductDTO): Product {\n const images = backendProduct.productMedia?.map((media) => media.file) || [];\n \n return {\n id: backendProduct.id || backendProduct._id || '',\n name: backendProduct.name || '',\n description: backendProduct.description || '',\n price: backendProduct.finalPrice || 0,\n compareAtPrice: backendProduct.isDiscounted ? backendProduct.priceBeforeDiscount : undefined,\n images: images.filter(Boolean),\n category: backendProduct.parentCategories?.[0] || '',\n inStock: (backendProduct.inventoryCount || 0) > 0,\n stock: backendProduct.inventoryCount,\n sku: backendProduct.sku,\n tags: backendProduct.tags || [],\n createdAt: backendProduct.createdAt ? backendProduct.createdAt.toString() : new Date().toISOString(),\n updatedAt: backendProduct.updatedAt ? backendProduct.updatedAt.toString() : new Date().toISOString(),\n };\n}\n\n/**\n * Map backend cart to frontend Cart\n */\nexport function mapCart(backendCart: CartResponseDto): Cart {\n const items: CartItem[] = [];\n \n // Map cart body items\n if (backendCart.cartBody?.items) {\n backendCart.cartBody.items.forEach((item: any) => {\n if (item.productVariantData) {\n // Extract product info from variant data\n const productData = item.productVariantData.product || item.productVariantData;\n items.push({\n productId: productData.id || productData._id || '',\n quantity: item.quantity || 0,\n product: mapProduct(productData),\n });\n }\n });\n }\n\n return {\n items,\n total: backendCart.total || 0,\n itemCount: items.reduce((sum, item) => sum + item.quantity, 0),\n };\n}\n\n/**\n * Map backend order status to frontend OrderStatus\n */\nexport function mapOrderStatus(backendStatus: string): OrderStatus {\n const statusMap: Record<string, OrderStatus> = {\n 'pending': OrderStatus.PENDING,\n 'processing': OrderStatus.PROCESSING,\n 'shipped': OrderStatus.SHIPPED,\n 'delivered': OrderStatus.DELIVERED,\n 'cancelled': OrderStatus.CANCELLED,\n };\n \n return statusMap[backendStatus.toLowerCase()] || OrderStatus.PENDING;\n}\n\n/**\n * Map backend order to frontend Order\n */\nexport function mapOrder(backendOrder: PopulatedOrder): Order {\n return {\n id: backendOrder.id || backendOrder._id || '',\n orderNumber: backendOrder.stringId || backendOrder.id || backendOrder._id || '',\n items: backendOrder.items?.map((item: any) => ({\n id: item.id || item._id || '',\n productId: item.productVariantData?.product?.id || item.productVariantData?.id || '',\n productName: item.productVariantData?.product?.name || item.productVariantData?.name || '',\n productImage: item.productVariantData?.product?.productMedia?.[0]?.url || \n item.productVariantData?.productMedia?.[0]?.url || '',\n quantity: item.quantity || 0,\n price: item.productVariantData?.finalPrice || 0,\n })) || [],\n total: backendOrder.grandTotal || 0,\n status: mapOrderStatus(backendOrder.orderStatus || 'pending'),\n shippingAddress: backendOrder.shippingInfo?.addressTo ? {\n fullName: backendOrder.shippingInfo.addressTo.name || '',\n addressLine1: backendOrder.shippingInfo.addressTo.street1 || '',\n addressLine2: backendOrder.shippingInfo.addressTo.street2 || '',\n city: backendOrder.shippingInfo.addressTo.city || '',\n state: backendOrder.shippingInfo.addressTo.state || '',\n zipCode: backendOrder.shippingInfo.addressTo.zip || '',\n country: backendOrder.shippingInfo.addressTo.country || '',\n phone: backendOrder.shippingInfo.addressTo.phone || '',\n } : {} as any,\n billingAddress: backendOrder.shippingInfo?.addressTo ? {\n fullName: backendOrder.shippingInfo.addressTo.name || '',\n addressLine1: backendOrder.shippingInfo.addressTo.street1 || '',\n addressLine2: backendOrder.shippingInfo.addressTo.street2 || '',\n city: backendOrder.shippingInfo.addressTo.city || '',\n state: backendOrder.shippingInfo.addressTo.state || '',\n zipCode: backendOrder.shippingInfo.addressTo.zip || '',\n country: backendOrder.shippingInfo.addressTo.country || '',\n phone: backendOrder.shippingInfo.addressTo.phone || '',\n } : {} as any,\n paymentStatus: (backendOrder.payment?.paymentStatus?.toLowerCase() || 'unpaid') as any,\n stripeCheckoutUrl: backendOrder.payment?.hostedInvoiceUrl,\n createdAt: backendOrder.createdAt ? backendOrder.createdAt.toString() : new Date().toISOString(),\n updatedAt: backendOrder.updatedAt ? backendOrder.updatedAt.toString() : new Date().toISOString(),\n };\n}\n\n","/**\n * Auth API Adapter\n * Connects frontend auth to real backend auth APIs\n */\n\nimport { AuthApi } from '../Apis/apis/auth-api';\nimport { UsersApi } from '../Apis/apis/users-api';\nimport { LoginDto, CreateUserDto } from '../Apis/models';\nimport { getApiConfiguration, setAuthToken, clearAuthToken } from './config';\nimport { mapSessionData, mapUser } from './mappers';\nimport { User, LoginCredentials, RegisterData, ApiResponse } from '../types';\n\nexport const authAdapter = {\n /**\n * Register a new user\n */\n async register(data: RegisterData): Promise<ApiResponse<{ user: User; token: string }>> {\n try {\n const authApi = new AuthApi(getApiConfiguration());\n \n // Note: CreateUserDto doesn't include password\n // Password is sent via LoginDto in signup endpoint\n const loginDto: LoginDto = {\n email: data.email,\n password: data.password,\n };\n\n // Try signing up - backend signup uses email/password in LoginDto format\n const response = await authApi.signup(loginDto as any);\n const { user, token } = mapSessionData(response.data);\n \n setAuthToken(token);\n \n return {\n success: true,\n data: { user, token },\n };\n } catch (error: any) {\n return {\n success: false,\n message: error.response?.data?.message || 'Registration failed',\n data: { user: {} as User, token: '' },\n };\n }\n },\n\n /**\n * Login user\n */\n async login(credentials: LoginCredentials): Promise<ApiResponse<{ user: User; token: string }>> {\n try {\n const authApi = new AuthApi(getApiConfiguration());\n \n const loginDto: LoginDto = {\n email: credentials.email,\n password: credentials.password,\n };\n\n const response = await authApi.signin(loginDto);\n const { user, token } = mapSessionData(response.data);\n \n setAuthToken(token);\n \n return {\n success: true,\n data: { user, token },\n };\n } catch (error: any) {\n return {\n success: false,\n message: error.response?.data?.message || 'Login failed',\n data: { user: {} as User, token: '' },\n };\n }\n },\n\n /**\n * Logout user\n */\n async logout(): Promise<void> {\n clearAuthToken();\n },\n\n /**\n * Get current user\n */\n async getCurrentUser(): Promise<ApiResponse<User>> {\n try {\n const usersApi = new UsersApi(getApiConfiguration());\n const response = await usersApi.getMyProfile();\n \n return {\n success: true,\n data: mapUser(response.data),\n };\n } catch (error: any) {\n return {\n success: false,\n message: error.response?.data?.message || 'Failed to get user',\n data: {} as User,\n };\n }\n },\n\n /**\n * Update user profile\n */\n async updateProfile(data: Partial<User>): Promise<ApiResponse<User>> {\n try {\n const usersApi = new UsersApi(getApiConfiguration());\n \n const updateData: any = {};\n if (data.firstName) updateData.firstname = data.firstName;\n if (data.lastName) updateData.lastname = data.lastName;\n if (data.phone) updateData.phoneNumber = data.phone;\n if (data.email) updateData.email = data.email;\n \n const response = await usersApi.updateMyProfile(updateData);\n \n return {\n success: true,\n data: mapUser(response.data),\n };\n } catch (error: any) {\n return {\n success: false,\n message: error.response?.data?.message || 'Failed to update profile',\n data: {} as User,\n };\n }\n },\n\n /**\n * Change password\n */\n async changePassword(currentPassword: string, newPassword: string): Promise<ApiResponse<void>> {\n try {\n const authApi = new AuthApi(getApiConfiguration());\n await authApi.changePassword(currentPassword, newPassword);\n \n return {\n success: true,\n data: undefined,\n };\n } catch (error: any) {\n return {\n success: false,\n message: error.response?.data?.message || 'Failed to change password',\n data: undefined,\n };\n }\n },\n\n /**\n * Request password reset\n */\n async forgotPassword(email: string): Promise<ApiResponse<void>> {\n try {\n const authApi = new AuthApi(getApiConfiguration());\n await authApi.sendForgetPasswordEmail({ email });\n \n return {\n success: true,\n data: undefined,\n };\n } catch (error: any) {\n return {\n success: false,\n message: error.response?.data?.message || 'Failed to send reset email',\n data: undefined,\n };\n }\n },\n\n /**\n * Reset password with token\n */\n async resetPassword(token: string, newPassword: string): Promise<ApiResponse<void>> {\n try {\n const authApi = new AuthApi(getApiConfiguration());\n await authApi.resetPassword(newPassword, token);\n \n return {\n success: true,\n data: undefined,\n };\n } catch (error: any) {\n return {\n success: false,\n message: error.response?.data?.message || 'Failed to reset password',\n data: undefined,\n };\n }\n },\n};\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Hey Pharamcist API\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\n *\n * OpenAPI spec version: 1.0\n * \n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport globalAxios, { AxiosResponse, AxiosInstance, AxiosRequestConfig } from 'axios';\nimport { Configuration } from '../configuration';\n// Some imports not used depending on template conditions\n// @ts-ignore\nimport { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '../base';\nimport { CategoryFilters } from '../models';\nimport { CreateProductDto } from '../models';\nimport { CreateSingleVariantProductDTO } from '../models';\nimport { ExtendedProductDTO } from '../models';\nimport { PaginatedProductsDto } from '../models';\nimport { ProductsInsightsDto } from '../models';\nimport { UpdateProductDto } from '../models';\n/**\n * ProductsApi - axios parameter creator\n * @export\n */\nexport const ProductsApiAxiosParamCreator = function (configuration?: Configuration) {\n return {\n /**\n * \n * @summary Create a product\n * @param {CreateProductDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n createProduct: async (body: CreateProductDto, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling createProduct.');\n }\n const localVarPath = `/products/create`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Create a Product that has a single variant\n * @param {CreateSingleVariantProductDTO} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n createSingleVariantProduct: async (body: CreateSingleVariantProductDTO, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling createSingleVariantProduct.');\n }\n const localVarPath = `/products/create-single-variant`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Delete a product\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteProduct: async (id: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'id' is not null or undefined\n if (id === null || id === undefined) {\n throw new RequiredError('id','Required parameter id was null or undefined when calling deleteProduct.');\n }\n const localVarPath = `/products/{id}`\n .replace(`{${\"id\"}}`, encodeURIComponent(String(id)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'DELETE', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get all products of a specific category\n * @param {string} categoryId Category ID\n * @param {string} [searchTerm] OpenAI Search Query\n * @param {any} [attributes] Send any key-value pairs as query parameters (value is comma separated string)\n * @param {number} [maxPrice] highest price to filter with\n * @param {number} [minPrice] lowest price to filter with\n * @param {string} [brandFilter] brands to filter with (comma separated string)\n * @param {string} [availability] specifies whether to show available products or out of stock ones\n * @param {string} [sort] specifies which attribute to sort with\n * @param {boolean} [includeNoVariantProducts] \n * @param {boolean} [isActive] \n * @param {number} [limit] \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getAllCategoryProducts: async (categoryId: string, searchTerm?: string, attributes?: any, maxPrice?: number, minPrice?: number, brandFilter?: string, availability?: string, sort?: string, includeNoVariantProducts?: boolean, isActive?: boolean, limit?: number, page?: number, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'categoryId' is not null or undefined\n if (categoryId === null || categoryId === undefined) {\n throw new RequiredError('categoryId','Required parameter categoryId was null or undefined when calling getAllCategoryProducts.');\n }\n const localVarPath = `/products/allCategoryProducts/{categoryId}`\n .replace(`{${\"categoryId\"}}`, encodeURIComponent(String(categoryId)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n if (searchTerm !== undefined) {\n localVarQueryParameter['searchTerm'] = searchTerm;\n }\n\n if (attributes !== undefined) {\n localVarQueryParameter['attributes'] = attributes;\n }\n\n if (maxPrice !== undefined) {\n localVarQueryParameter['maxPrice'] = maxPrice;\n }\n\n if (minPrice !== undefined) {\n localVarQueryParameter['minPrice'] = minPrice;\n }\n\n if (brandFilter !== undefined) {\n localVarQueryParameter['brandFilter'] = brandFilter;\n }\n\n if (availability !== undefined) {\n localVarQueryParameter['availability'] = availability;\n }\n\n if (sort !== undefined) {\n localVarQueryParameter['sort'] = sort;\n }\n\n if (includeNoVariantProducts !== undefined) {\n localVarQueryParameter['includeNoVariantProducts'] = includeNoVariantProducts;\n }\n\n if (isActive !== undefined) {\n localVarQueryParameter['isActive'] = isActive;\n }\n\n if (limit !== undefined) {\n localVarQueryParameter['limit'] = limit;\n }\n\n if (page !== undefined) {\n localVarQueryParameter['page'] = page;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get all filters for products\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getAllFilters: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n const localVarPath = `/products/allFilters`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get all products of a specific sub category\n * @param {string} subCategoryId Sub Category ID\n * @param {string} [searchTerm] OpenAI Search Query\n * @param {number} [maxPrice] highest price to filter with\n * @param {number} [minPrice] lowest price to filter with\n * @param {string} [brandFilter] brands to filter with (comma separated string)\n * @param {string} [availability] specifies whether to show available products or out of stock ones\n * @param {string} [sort] specifies which attribute to sort with\n * @param {boolean} [includeNoVariantProducts] \n * @param {boolean} [isActive] \n * @param {number} [limit] \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getAllProducts: async (subCategoryId: string, searchTerm?: string, maxPrice?: number, minPrice?: number, brandFilter?: string, availability?: string, sort?: string, includeNoVariantProducts?: boolean, isActive?: boolean, limit?: number, page?: number, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'subCategoryId' is not null or undefined\n if (subCategoryId === null || subCategoryId === undefined) {\n throw new RequiredError('subCategoryId','Required parameter subCategoryId was null or undefined when calling getAllProducts.');\n }\n const localVarPath = `/products/allProducts/{subCategoryId}`\n .replace(`{${\"subCategoryId\"}}`, encodeURIComponent(String(subCategoryId)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n if (searchTerm !== undefined) {\n localVarQueryParameter['searchTerm'] = searchTerm;\n }\n\n if (maxPrice !== undefined) {\n localVarQueryParameter['maxPrice'] = maxPrice;\n }\n\n if (minPrice !== undefined) {\n localVarQueryParameter['minPrice'] = minPrice;\n }\n\n if (brandFilter !== undefined) {\n localVarQueryParameter['brandFilter'] = brandFilter;\n }\n\n if (availability !== undefined) {\n localVarQueryParameter['availability'] = availability;\n }\n\n if (sort !== undefined) {\n localVarQueryParameter['sort'] = sort;\n }\n\n if (includeNoVariantProducts !== undefined) {\n localVarQueryParameter['includeNoVariantProducts'] = includeNoVariantProducts;\n }\n\n if (isActive !== undefined) {\n localVarQueryParameter['isActive'] = isActive;\n }\n\n if (limit !== undefined) {\n localVarQueryParameter['limit'] = limit;\n }\n\n if (page !== undefined) {\n localVarQueryParameter['page'] = page;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get all products\n * @param {string} [searchTerm] OpenAI Search Query\n * @param {string} [productType] Product Type\n * @param {string} [categoryId] Category ID\n * @param {number} [maxPrice] highest price to filter with\n * @param {number} [minPrice] lowest price to filter with\n * @param {string} [brandFilter] brands to filter with (comma separated string)\n * @param {string} [availability] specifies whether to show available products or out of stock ones\n * @param {string} [sort] specifies which attribute to sort with\n * @param {boolean} [includeNoVariantProducts] \n * @param {boolean} [isActive] \n * @param {number} [limit] \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getAllProductsForStore: async (searchTerm?: string, productType?: string, categoryId?: string, maxPrice?: number, minPrice?: number, brandFilter?: string, availability?: string, sort?: string, includeNoVariantProducts?: boolean, isActive?: boolean, limit?: number, page?: number, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n const localVarPath = `/products/all`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n if (searchTerm !== undefined) {\n localVarQueryParameter['searchTerm'] = searchTerm;\n }\n\n if (productType !== undefined) {\n localVarQueryParameter['productType'] = productType;\n }\n\n if (categoryId !== undefined) {\n localVarQueryParameter['categoryId'] = categoryId;\n }\n\n if (maxPrice !== undefined) {\n localVarQueryParameter['maxPrice'] = maxPrice;\n }\n\n if (minPrice !== undefined) {\n localVarQueryParameter['minPrice'] = minPrice;\n }\n\n if (brandFilter !== undefined) {\n localVarQueryParameter['brandFilter'] = brandFilter;\n }\n\n if (availability !== undefined) {\n localVarQueryParameter['availability'] = availability;\n }\n\n if (sort !== undefined) {\n localVarQueryParameter['sort'] = sort;\n }\n\n if (includeNoVariantProducts !== undefined) {\n localVarQueryParameter['includeNoVariantProducts'] = includeNoVariantProducts;\n }\n\n if (isActive !== undefined) {\n localVarQueryParameter['isActive'] = isActive;\n }\n\n if (limit !== undefined) {\n localVarQueryParameter['limit'] = limit;\n }\n\n if (page !== undefined) {\n localVarQueryParameter['page'] = page;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get insights on store Products\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getProductsInsights: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n const localVarPath = `/products/insights`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get related products\n * @param {string} productId Product ID\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getRelatedProducts: async (productId: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'productId' is not null or undefined\n if (productId === null || productId === undefined) {\n throw new RequiredError('productId','Required parameter productId was null or undefined when calling getRelatedProducts.');\n }\n const localVarPath = `/products/relatedProducts/{productId}`\n .replace(`{${\"productId\"}}`, encodeURIComponent(String(productId)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get a single product\n * @param {string} id Product ID\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getSingleProduct: async (id: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'id' is not null or undefined\n if (id === null || id === undefined) {\n throw new RequiredError('id','Required parameter id was null or undefined when calling getSingleProduct.');\n }\n const localVarPath = `/products/singleProduct/{id}`\n .replace(`{${\"id\"}}`, encodeURIComponent(String(id)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get top selling products\n * @param {number} [limit] \n * @param {number} [page] \n * @param {boolean} [isActive] \n * @param {boolean} [includeNoVariantProducts] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getTopSellingProducts: async (limit?: number, page?: number, isActive?: boolean, includeNoVariantProducts?: boolean, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n const localVarPath = `/products/top-selling`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n if (limit !== undefined) {\n localVarQueryParameter['limit'] = limit;\n }\n\n if (page !== undefined) {\n localVarQueryParameter['page'] = page;\n }\n\n if (isActive !== undefined) {\n localVarQueryParameter['isActive'] = isActive;\n }\n\n if (includeNoVariantProducts !== undefined) {\n localVarQueryParameter['includeNoVariantProducts'] = includeNoVariantProducts;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Update a product\n * @param {UpdateProductDto} body \n * @param {string} id Product ID\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n updateProduct: async (body: UpdateProductDto, id: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling updateProduct.');\n }\n // verify required parameter 'id' is not null or undefined\n if (id === null || id === undefined) {\n throw new RequiredError('id','Required parameter id was null or undefined when calling updateProduct.');\n }\n const localVarPath = `/products/{id}`\n .replace(`{${\"id\"}}`, encodeURIComponent(String(id)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'PATCH', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n }\n};\n\n/**\n * ProductsApi - functional programming interface\n * @export\n */\nexport const ProductsApiFp = function(configuration?: Configuration) {\n return {\n /**\n * \n * @summary Create a product\n * @param {CreateProductDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async createProduct(body: CreateProductDto, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<ExtendedProductDTO>>> {\n const localVarAxiosArgs = await ProductsApiAxiosParamCreator(configuration).createProduct(body, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Create a Product that has a single variant\n * @param {CreateSingleVariantProductDTO} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async createSingleVariantProduct(body: CreateSingleVariantProductDTO, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<ExtendedProductDTO>>> {\n const localVarAxiosArgs = await ProductsApiAxiosParamCreator(configuration).createSingleVariantProduct(body, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Delete a product\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async deleteProduct(id: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {\n const localVarAxiosArgs = await ProductsApiAxiosParamCreator(configuration).deleteProduct(id, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get all products of a specific category\n * @param {string} categoryId Category ID\n * @param {string} [searchTerm] OpenAI Search Query\n * @param {any} [attributes] Send any key-value pairs as query parameters (value is comma separated string)\n * @param {number} [maxPrice] highest price to filter with\n * @param {number} [minPrice] lowest price to filter with\n * @param {string} [brandFilter] brands to filter with (comma separated string)\n * @param {string} [availability] specifies whether to show available products or out of stock ones\n * @param {string} [sort] specifies which attribute to sort with\n * @param {boolean} [includeNoVariantProducts] \n * @param {boolean} [isActive] \n * @param {number} [limit] \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getAllCategoryProducts(categoryId: string, searchTerm?: string, attributes?: any, maxPrice?: number, minPrice?: number, brandFilter?: string, availability?: string, sort?: string, includeNoVariantProducts?: boolean, isActive?: boolean, limit?: number, page?: number, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<PaginatedProductsDto>>> {\n const localVarAxiosArgs = await ProductsApiAxiosParamCreator(configuration).getAllCategoryProducts(categoryId, searchTerm, attributes, maxPrice, minPrice, brandFilter, availability, sort, includeNoVariantProducts, isActive, limit, page, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get all filters for products\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getAllFilters(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<CategoryFilters>>> {\n const localVarAxiosArgs = await ProductsApiAxiosParamCreator(configuration).getAllFilters(options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get all products of a specific sub category\n * @param {string} subCategoryId Sub Category ID\n * @param {string} [searchTerm] OpenAI Search Query\n * @param {number} [maxPrice] highest price to filter with\n * @param {number} [minPrice] lowest price to filter with\n * @param {string} [brandFilter] brands to filter with (comma separated string)\n * @param {string} [availability] specifies whether to show available products or out of stock ones\n * @param {string} [sort] specifies which attribute to sort with\n * @param {boolean} [includeNoVariantProducts] \n * @param {boolean} [isActive] \n * @param {number} [limit] \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getAllProducts(subCategoryId: string, searchTerm?: string, maxPrice?: number, minPrice?: number, brandFilter?: string, availability?: string, sort?: string, includeNoVariantProducts?: boolean, isActive?: boolean, limit?: number, page?: number, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<PaginatedProductsDto>>> {\n const localVarAxiosArgs = await ProductsApiAxiosParamCreator(configuration).getAllProducts(subCategoryId, searchTerm, maxPrice, minPrice, brandFilter, availability, sort, includeNoVariantProducts, isActive, limit, page, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get all products\n * @param {string} [searchTerm] OpenAI Search Query\n * @param {string} [productType] Product Type\n * @param {string} [categoryId] Category ID\n * @param {number} [maxPrice] highest price to filter with\n * @param {number} [minPrice] lowest price to filter with\n * @param {string} [brandFilter] brands to filter with (comma separated string)\n * @param {string} [availability] specifies whether to show available products or out of stock ones\n * @param {string} [sort] specifies which attribute to sort with\n * @param {boolean} [includeNoVariantProducts] \n * @param {boolean} [isActive] \n * @param {number} [limit] \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getAllProductsForStore(searchTerm?: string, productType?: string, categoryId?: string, maxPrice?: number, minPrice?: number, brandFilter?: string, availability?: string, sort?: string, includeNoVariantProducts?: boolean, isActive?: boolean, limit?: number, page?: number, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<PaginatedProductsDto>>> {\n const localVarAxiosArgs = await ProductsApiAxiosParamCreator(configuration).getAllProductsForStore(searchTerm, productType, categoryId, maxPrice, minPrice, brandFilter, availability, sort, includeNoVariantProducts, isActive, limit, page, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get insights on store Products\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getProductsInsights(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<ProductsInsightsDto>>> {\n const localVarAxiosArgs = await ProductsApiAxiosParamCreator(configuration).getProductsInsights(options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get related products\n * @param {string} productId Product ID\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getRelatedProducts(productId: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<Array<ExtendedProductDTO>>>> {\n const localVarAxiosArgs = await ProductsApiAxiosParamCreator(configuration).getRelatedProducts(productId, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get a single product\n * @param {string} id Product ID\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getSingleProduct(id: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<ExtendedProductDTO>>> {\n const localVarAxiosArgs = await ProductsApiAxiosParamCreator(configuration).getSingleProduct(id, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get top selling products\n * @param {number} [limit] \n * @param {number} [page] \n * @param {boolean} [isActive] \n * @param {boolean} [includeNoVariantProducts] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getTopSellingProducts(limit?: number, page?: number, isActive?: boolean, includeNoVariantProducts?: boolean, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<PaginatedProductsDto>>> {\n const localVarAxiosArgs = await ProductsApiAxiosParamCreator(configuration).getTopSellingProducts(limit, page, isActive, includeNoVariantProducts, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Update a product\n * @param {UpdateProductDto} body \n * @param {string} id Product ID\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async updateProduct(body: UpdateProductDto, id: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<ExtendedProductDTO>>> {\n const localVarAxiosArgs = await ProductsApiAxiosParamCreator(configuration).updateProduct(body, id, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n }\n};\n\n/**\n * ProductsApi - factory interface\n * @export\n */\nexport const ProductsApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {\n return {\n /**\n * \n * @summary Create a product\n * @param {CreateProductDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async createProduct(body: CreateProductDto, options?: AxiosRequestConfig): Promise<AxiosResponse<ExtendedProductDTO>> {\n return ProductsApiFp(configuration).createProduct(body, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Create a Product that has a single variant\n * @param {CreateSingleVariantProductDTO} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async createSingleVariantProduct(body: CreateSingleVariantProductDTO, options?: AxiosRequestConfig): Promise<AxiosResponse<ExtendedProductDTO>> {\n return ProductsApiFp(configuration).createSingleVariantProduct(body, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Delete a product\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async deleteProduct(id: string, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {\n return ProductsApiFp(configuration).deleteProduct(id, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get all products of a specific category\n * @param {string} categoryId Category ID\n * @param {string} [searchTerm] OpenAI Search Query\n * @param {any} [attributes] Send any key-value pairs as query parameters (value is comma separated string)\n * @param {number} [maxPrice] highest price to filter with\n * @param {number} [minPrice] lowest price to filter with\n * @param {string} [brandFilter] brands to filter with (comma separated string)\n * @param {string} [availability] specifies whether to show available products or out of stock ones\n * @param {string} [sort] specifies which attribute to sort with\n * @param {boolean} [includeNoVariantProducts] \n * @param {boolean} [isActive] \n * @param {number} [limit] \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getAllCategoryProducts(categoryId: string, searchTerm?: string, attributes?: any, maxPrice?: number, minPrice?: number, brandFilter?: string, availability?: string, sort?: string, includeNoVariantProducts?: boolean, isActive?: boolean, limit?: number, page?: number, options?: AxiosRequestConfig): Promise<AxiosResponse<PaginatedProductsDto>> {\n return ProductsApiFp(configuration).getAllCategoryProducts(categoryId, searchTerm, attributes, maxPrice, minPrice, brandFilter, availability, sort, includeNoVariantProducts, isActive, limit, page, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get all filters for products\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getAllFilters(options?: AxiosRequestConfig): Promise<AxiosResponse<CategoryFilters>> {\n return ProductsApiFp(configuration).getAllFilters(options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get all products of a specific sub category\n * @param {string} subCategoryId Sub Category ID\n * @param {string} [searchTerm] OpenAI Search Query\n * @param {number} [maxPrice] highest price to filter with\n * @param {number} [minPrice] lowest price to filter with\n * @param {string} [brandFilter] brands to filter with (comma separated string)\n * @param {string} [availability] specifies whether to show available products or out of stock ones\n * @param {string} [sort] specifies which attribute to sort with\n * @param {boolean} [includeNoVariantProducts] \n * @param {boolean} [isActive] \n * @param {number} [limit] \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getAllProducts(subCategoryId: string, searchTerm?: string, maxPrice?: number, minPrice?: number, brandFilter?: string, availability?: string, sort?: string, includeNoVariantProducts?: boolean, isActive?: boolean, limit?: number, page?: number, options?: AxiosRequestConfig): Promise<AxiosResponse<PaginatedProductsDto>> {\n return ProductsApiFp(configuration).getAllProducts(subCategoryId, searchTerm, maxPrice, minPrice, brandFilter, availability, sort, includeNoVariantProducts, isActive, limit, page, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get all products\n * @param {string} [searchTerm] OpenAI Search Query\n * @param {string} [productType] Product Type\n * @param {string} [categoryId] Category ID\n * @param {number} [maxPrice] highest price to filter with\n * @param {number} [minPrice] lowest price to filter with\n * @param {string} [brandFilter] brands to filter with (comma separated string)\n * @param {string} [availability] specifies whether to show available products or out of stock ones\n * @param {string} [sort] specifies which attribute to sort with\n * @param {boolean} [includeNoVariantProducts] \n * @param {boolean} [isActive] \n * @param {number} [limit] \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getAllProductsForStore(searchTerm?: string, productType?: string, categoryId?: string, maxPrice?: number, minPrice?: number, brandFilter?: string, availability?: string, sort?: string, includeNoVariantProducts?: boolean, isActive?: boolean, limit?: number, page?: number, options?: AxiosRequestConfig): Promise<AxiosResponse<PaginatedProductsDto>> {\n return ProductsApiFp(configuration).getAllProductsForStore(searchTerm, productType, categoryId, maxPrice, minPrice, brandFilter, availability, sort, includeNoVariantProducts, isActive, limit, page, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get insights on store Products\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getProductsInsights(options?: AxiosRequestConfig): Promise<AxiosResponse<ProductsInsightsDto>> {\n return ProductsApiFp(configuration).getProductsInsights(options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get related products\n * @param {string} productId Product ID\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getRelatedProducts(productId: string, options?: AxiosRequestConfig): Promise<AxiosResponse<Array<ExtendedProductDTO>>> {\n return ProductsApiFp(configuration).getRelatedProducts(productId, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get a single product\n * @param {string} id Product ID\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getSingleProduct(id: string, options?: AxiosRequestConfig): Promise<AxiosResponse<ExtendedProductDTO>> {\n return ProductsApiFp(configuration).getSingleProduct(id, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get top selling products\n * @param {number} [limit] \n * @param {number} [page] \n * @param {boolean} [isActive] \n * @param {boolean} [includeNoVariantProducts] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getTopSellingProducts(limit?: number, page?: number, isActive?: boolean, includeNoVariantProducts?: boolean, options?: AxiosRequestConfig): Promise<AxiosResponse<PaginatedProductsDto>> {\n return ProductsApiFp(configuration).getTopSellingProducts(limit, page, isActive, includeNoVariantProducts, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Update a product\n * @param {UpdateProductDto} body \n * @param {string} id Product ID\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async updateProduct(body: UpdateProductDto, id: string, options?: AxiosRequestConfig): Promise<AxiosResponse<ExtendedProductDTO>> {\n return ProductsApiFp(configuration).updateProduct(body, id, options).then((request) => request(axios, basePath));\n },\n };\n};\n\n/**\n * ProductsApi - object-oriented interface\n * @export\n * @class ProductsApi\n * @extends {BaseAPI}\n */\nexport class ProductsApi extends BaseAPI {\n /**\n * \n * @summary Create a product\n * @param {CreateProductDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof ProductsApi\n */\n public async createProduct(body: CreateProductDto, options?: AxiosRequestConfig) : Promise<AxiosResponse<ExtendedProductDTO>> {\n return ProductsApiFp(this.configuration).createProduct(body, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Create a Product that has a single variant\n * @param {CreateSingleVariantProductDTO} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof ProductsApi\n */\n public async createSingleVariantProduct(body: CreateSingleVariantProductDTO, options?: AxiosRequestConfig) : Promise<AxiosResponse<ExtendedProductDTO>> {\n return ProductsApiFp(this.configuration).createSingleVariantProduct(body, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Delete a product\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof ProductsApi\n */\n public async deleteProduct(id: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {\n return ProductsApiFp(this.configuration).deleteProduct(id, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get all products of a specific category\n * @param {string} categoryId Category ID\n * @param {string} [searchTerm] OpenAI Search Query\n * @param {any} [attributes] Send any key-value pairs as query parameters (value is comma separated string)\n * @param {number} [maxPrice] highest price to filter with\n * @param {number} [minPrice] lowest price to filter with\n * @param {string} [brandFilter] brands to filter with (comma separated string)\n * @param {string} [availability] specifies whether to show available products or out of stock ones\n * @param {string} [sort] specifies which attribute to sort with\n * @param {boolean} [includeNoVariantProducts] \n * @param {boolean} [isActive] \n * @param {number} [limit] \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof ProductsApi\n */\n public async getAllCategoryProducts(categoryId: string, searchTerm?: string, attributes?: any, maxPrice?: number, minPrice?: number, brandFilter?: string, availability?: string, sort?: string, includeNoVariantProducts?: boolean, isActive?: boolean, limit?: number, page?: number, options?: AxiosRequestConfig) : Promise<AxiosResponse<PaginatedProductsDto>> {\n return ProductsApiFp(this.configuration).getAllCategoryProducts(categoryId, searchTerm, attributes, maxPrice, minPrice, brandFilter, availability, sort, includeNoVariantProducts, isActive, limit, page, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get all filters for products\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof ProductsApi\n */\n public async getAllFilters(options?: AxiosRequestConfig) : Promise<AxiosResponse<CategoryFilters>> {\n return ProductsApiFp(this.configuration).getAllFilters(options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get all products of a specific sub category\n * @param {string} subCategoryId Sub Category ID\n * @param {string} [searchTerm] OpenAI Search Query\n * @param {number} [maxPrice] highest price to filter with\n * @param {number} [minPrice] lowest price to filter with\n * @param {string} [brandFilter] brands to filter with (comma separated string)\n * @param {string} [availability] specifies whether to show available products or out of stock ones\n * @param {string} [sort] specifies which attribute to sort with\n * @param {boolean} [includeNoVariantProducts] \n * @param {boolean} [isActive] \n * @param {number} [limit] \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof ProductsApi\n */\n public async getAllProducts(subCategoryId: string, searchTerm?: string, maxPrice?: number, minPrice?: number, brandFilter?: string, availability?: string, sort?: string, includeNoVariantProducts?: boolean, isActive?: boolean, limit?: number, page?: number, options?: AxiosRequestConfig) : Promise<AxiosResponse<PaginatedProductsDto>> {\n return ProductsApiFp(this.configuration).getAllProducts(subCategoryId, searchTerm, maxPrice, minPrice, brandFilter, availability, sort, includeNoVariantProducts, isActive, limit, page, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get all products\n * @param {string} [searchTerm] OpenAI Search Query\n * @param {string} [productType] Product Type\n * @param {string} [categoryId] Category ID\n * @param {number} [maxPrice] highest price to filter with\n * @param {number} [minPrice] lowest price to filter with\n * @param {string} [brandFilter] brands to filter with (comma separated string)\n * @param {string} [availability] specifies whether to show available products or out of stock ones\n * @param {string} [sort] specifies which attribute to sort with\n * @param {boolean} [includeNoVariantProducts] \n * @param {boolean} [isActive] \n * @param {number} [limit] \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof ProductsApi\n */\n public async getAllProductsForStore(searchTerm?: string, productType?: string, categoryId?: string, maxPrice?: number, minPrice?: number, brandFilter?: string, availability?: string, sort?: string, includeNoVariantProducts?: boolean, isActive?: boolean, limit?: number, page?: number, options?: AxiosRequestConfig) : Promise<AxiosResponse<PaginatedProductsDto>> {\n return ProductsApiFp(this.configuration).getAllProductsForStore(searchTerm, productType, categoryId, maxPrice, minPrice, brandFilter, availability, sort, includeNoVariantProducts, isActive, limit, page, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get insights on store Products\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof ProductsApi\n */\n public async getProductsInsights(options?: AxiosRequestConfig) : Promise<AxiosResponse<ProductsInsightsDto>> {\n return ProductsApiFp(this.configuration).getProductsInsights(options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get related products\n * @param {string} productId Product ID\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof ProductsApi\n */\n public async getRelatedProducts(productId: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<Array<ExtendedProductDTO>>> {\n return ProductsApiFp(this.configuration).getRelatedProducts(productId, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get a single product\n * @param {string} id Product ID\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof ProductsApi\n */\n public async getSingleProduct(id: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<ExtendedProductDTO>> {\n return ProductsApiFp(this.configuration).getSingleProduct(id, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get top selling products\n * @param {number} [limit] \n * @param {number} [page] \n * @param {boolean} [isActive] \n * @param {boolean} [includeNoVariantProducts] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof ProductsApi\n */\n public async getTopSellingProducts(limit?: number, page?: number, isActive?: boolean, includeNoVariantProducts?: boolean, options?: AxiosRequestConfig) : Promise<AxiosResponse<PaginatedProductsDto>> {\n return ProductsApiFp(this.configuration).getTopSellingProducts(limit, page, isActive, includeNoVariantProducts, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Update a product\n * @param {UpdateProductDto} body \n * @param {string} id Product ID\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof ProductsApi\n */\n public async updateProduct(body: UpdateProductDto, id: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<ExtendedProductDTO>> {\n return ProductsApiFp(this.configuration).updateProduct(body, id, options).then((request) => request(this.axios, this.basePath));\n }\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Hey Pharamcist API\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\n *\n * OpenAPI spec version: 1.0\n * \n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport globalAxios, { AxiosResponse, AxiosInstance, AxiosRequestConfig } from 'axios';\nimport { Configuration } from '../configuration';\n// Some imports not used depending on template conditions\n// @ts-ignore\nimport { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '../base';\nimport { CategoriesPaginatedResponseDTO } from '../models';\nimport { Category } from '../models';\nimport { CategoryFilters } from '../models';\nimport { CategoryPopulated } from '../models';\nimport { CategorysHeadlinesResponseDTO } from '../models';\nimport { CreateCategoryDto } from '../models';\nimport { UpdateCategoryDto } from '../models';\n/**\n * CategoriesApi - axios parameter creator\n * @export\n */\nexport const CategoriesApiAxiosParamCreator = function (configuration?: Configuration) {\n return {\n /**\n * \n * @summary Create a new category\n * @param {CreateCategoryDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n createCategory: async (body: CreateCategoryDto, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling createCategory.');\n }\n const localVarPath = `/categories`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Delete category by id\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteCategory: async (id: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'id' is not null or undefined\n if (id === null || id === undefined) {\n throw new RequiredError('id','Required parameter id was null or undefined when calling deleteCategory.');\n }\n const localVarPath = `/categories/{id}`\n .replace(`{${\"id\"}}`, encodeURIComponent(String(id)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'DELETE', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get all categories for specific store\n * @param {string} [search] \n * @param {number} [limit] \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getAllCategories: async (search?: string, limit?: number, page?: number, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n const localVarPath = `/categories`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n if (search !== undefined) {\n localVarQueryParameter['search'] = search;\n }\n\n if (limit !== undefined) {\n localVarQueryParameter['limit'] = limit;\n }\n\n if (page !== undefined) {\n localVarQueryParameter['page'] = page;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get all categories for specific store and their subcategories and their products (as headlines and numbers only) \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getCategoreisAndSubCategories: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n const localVarPath = `/categories/headlines`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get category filters by id\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getCategoryFilters: async (id: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'id' is not null or undefined\n if (id === null || id === undefined) {\n throw new RequiredError('id','Required parameter id was null or undefined when calling getCategoryFilters.');\n }\n const localVarPath = `/categories/filters/{id}`\n .replace(`{${\"id\"}}`, encodeURIComponent(String(id)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get single category by id\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getSingleCategory: async (id: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'id' is not null or undefined\n if (id === null || id === undefined) {\n throw new RequiredError('id','Required parameter id was null or undefined when calling getSingleCategory.');\n }\n const localVarPath = `/categories/{id}`\n .replace(`{${\"id\"}}`, encodeURIComponent(String(id)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Update category by id\n * @param {UpdateCategoryDto} body \n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n updateCategory: async (body: UpdateCategoryDto, id: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling updateCategory.');\n }\n // verify required parameter 'id' is not null or undefined\n if (id === null || id === undefined) {\n throw new RequiredError('id','Required parameter id was null or undefined when calling updateCategory.');\n }\n const localVarPath = `/categories/{id}`\n .replace(`{${\"id\"}}`, encodeURIComponent(String(id)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'PATCH', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n }\n};\n\n/**\n * CategoriesApi - functional programming interface\n * @export\n */\nexport const CategoriesApiFp = function(configuration?: Configuration) {\n return {\n /**\n * \n * @summary Create a new category\n * @param {CreateCategoryDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async createCategory(body: CreateCategoryDto, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<Category>>> {\n const localVarAxiosArgs = await CategoriesApiAxiosParamCreator(configuration).createCategory(body, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Delete category by id\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async deleteCategory(id: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {\n const localVarAxiosArgs = await CategoriesApiAxiosParamCreator(configuration).deleteCategory(id, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get all categories for specific store\n * @param {string} [search] \n * @param {number} [limit] \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getAllCategories(search?: string, limit?: number, page?: number, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<CategoriesPaginatedResponseDTO>>> {\n const localVarAxiosArgs = await CategoriesApiAxiosParamCreator(configuration).getAllCategories(search, limit, page, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get all categories for specific store and their subcategories and their products (as headlines and numbers only) \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getCategoreisAndSubCategories(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<Array<CategorysHeadlinesResponseDTO>>>> {\n const localVarAxiosArgs = await CategoriesApiAxiosParamCreator(configuration).getCategoreisAndSubCategories(options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get category filters by id\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getCategoryFilters(id: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<CategoryFilters>>> {\n const localVarAxiosArgs = await CategoriesApiAxiosParamCreator(configuration).getCategoryFilters(id, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get single category by id\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getSingleCategory(id: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<CategoryPopulated>>> {\n const localVarAxiosArgs = await CategoriesApiAxiosParamCreator(configuration).getSingleCategory(id, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Update category by id\n * @param {UpdateCategoryDto} body \n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async updateCategory(body: UpdateCategoryDto, id: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<Category>>> {\n const localVarAxiosArgs = await CategoriesApiAxiosParamCreator(configuration).updateCategory(body, id, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n }\n};\n\n/**\n * CategoriesApi - factory interface\n * @export\n */\nexport const CategoriesApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {\n return {\n /**\n * \n * @summary Create a new category\n * @param {CreateCategoryDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async createCategory(body: CreateCategoryDto, options?: AxiosRequestConfig): Promise<AxiosResponse<Category>> {\n return CategoriesApiFp(configuration).createCategory(body, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Delete category by id\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async deleteCategory(id: string, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {\n return CategoriesApiFp(configuration).deleteCategory(id, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get all categories for specific store\n * @param {string} [search] \n * @param {number} [limit] \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getAllCategories(search?: string, limit?: number, page?: number, options?: AxiosRequestConfig): Promise<AxiosResponse<CategoriesPaginatedResponseDTO>> {\n return CategoriesApiFp(configuration).getAllCategories(search, limit, page, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get all categories for specific store and their subcategories and their products (as headlines and numbers only) \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getCategoreisAndSubCategories(options?: AxiosRequestConfig): Promise<AxiosResponse<Array<CategorysHeadlinesResponseDTO>>> {\n return CategoriesApiFp(configuration).getCategoreisAndSubCategories(options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get category filters by id\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getCategoryFilters(id: string, options?: AxiosRequestConfig): Promise<AxiosResponse<CategoryFilters>> {\n return CategoriesApiFp(configuration).getCategoryFilters(id, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get single category by id\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getSingleCategory(id: string, options?: AxiosRequestConfig): Promise<AxiosResponse<CategoryPopulated>> {\n return CategoriesApiFp(configuration).getSingleCategory(id, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Update category by id\n * @param {UpdateCategoryDto} body \n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async updateCategory(body: UpdateCategoryDto, id: string, options?: AxiosRequestConfig): Promise<AxiosResponse<Category>> {\n return CategoriesApiFp(configuration).updateCategory(body, id, options).then((request) => request(axios, basePath));\n },\n };\n};\n\n/**\n * CategoriesApi - object-oriented interface\n * @export\n * @class CategoriesApi\n * @extends {BaseAPI}\n */\nexport class CategoriesApi extends BaseAPI {\n /**\n * \n * @summary Create a new category\n * @param {CreateCategoryDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof CategoriesApi\n */\n public async createCategory(body: CreateCategoryDto, options?: AxiosRequestConfig) : Promise<AxiosResponse<Category>> {\n return CategoriesApiFp(this.configuration).createCategory(body, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Delete category by id\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof CategoriesApi\n */\n public async deleteCategory(id: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {\n return CategoriesApiFp(this.configuration).deleteCategory(id, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get all categories for specific store\n * @param {string} [search] \n * @param {number} [limit] \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof CategoriesApi\n */\n public async getAllCategories(search?: string, limit?: number, page?: number, options?: AxiosRequestConfig) : Promise<AxiosResponse<CategoriesPaginatedResponseDTO>> {\n return CategoriesApiFp(this.configuration).getAllCategories(search, limit, page, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get all categories for specific store and their subcategories and their products (as headlines and numbers only) \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof CategoriesApi\n */\n public async getCategoreisAndSubCategories(options?: AxiosRequestConfig) : Promise<AxiosResponse<Array<CategorysHeadlinesResponseDTO>>> {\n return CategoriesApiFp(this.configuration).getCategoreisAndSubCategories(options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get category filters by id\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof CategoriesApi\n */\n public async getCategoryFilters(id: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<CategoryFilters>> {\n return CategoriesApiFp(this.configuration).getCategoryFilters(id, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get single category by id\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof CategoriesApi\n */\n public async getSingleCategory(id: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<CategoryPopulated>> {\n return CategoriesApiFp(this.configuration).getSingleCategory(id, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Update category by id\n * @param {UpdateCategoryDto} body \n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof CategoriesApi\n */\n public async updateCategory(body: UpdateCategoryDto, id: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<Category>> {\n return CategoriesApiFp(this.configuration).updateCategory(body, id, options).then((request) => request(this.axios, this.basePath));\n }\n}\n","/**\n * Products API Adapter\n * Connects frontend products to real backend products APIs\n */\n\nimport { ProductsApi } from '../Apis/apis/products-api';\nimport { CategoriesApi } from '../Apis/apis/categories-api';\nimport { getApiConfiguration } from './config';\nimport { mapProduct } from './mappers';\nimport { Product, ApiResponse, PaginatedResponse, ProductFilters, Category } from '../types';\n\nexport const productsAdapter = {\n /**\n * Get all products with optional filters and pagination\n */\n async getProducts(\n filters?: ProductFilters,\n page: number = 1,\n limit: number = 20\n ): Promise<PaginatedResponse<Product>> {\n try {\n const productsApi = new ProductsApi(getApiConfiguration());\n \n const response = await productsApi.getAllProductsForStore(\n filters?.search,\n undefined, // productType\n filters?.category,\n filters?.maxPrice,\n filters?.minPrice,\n undefined, // brandFilter\n filters?.inStock !== undefined ? (filters.inStock ? 'in-stock' : 'out-of-stock') : undefined,\n undefined, // sort\n true, // includeNoVariantProducts\n true, // isActive\n limit,\n page\n );\n\n const products = response.data.data?.map(mapProduct) || [];\n \n return {\n data: products,\n pagination: {\n page: response.data.currentPage || page,\n limit: response.data.limit || limit,\n total: response.data.totalItems || products.length,\n totalPages: response.data.totalPages || 1,\n },\n };\n } catch (error: any) {\n console.error('Failed to get products:', error);\n return {\n data: [],\n pagination: { page, limit, total: 0, totalPages: 0 },\n };\n }\n },\n\n /**\n * Get a single product by ID\n */\n async getProduct(id: string): Promise<ApiResponse<Product>> {\n try {\n const productsApi = new ProductsApi(getApiConfiguration());\n const response = await productsApi.getSingleProduct(id);\n \n return {\n success: true,\n data: mapProduct(response.data),\n };\n } catch (error: any) {\n return {\n success: false,\n message: error.response?.data?.message || 'Failed to get product',\n data: {} as Product,\n };\n }\n },\n\n /**\n * Get featured/top selling products\n */\n async getFeaturedProducts(limit: number = 8): Promise<ApiResponse<Product[]>> {\n try {\n const productsApi = new ProductsApi(getApiConfiguration());\n const response = await productsApi.getTopSellingProducts(limit, 1, true, true);\n \n const products = response.data.data?.map(mapProduct) || [];\n \n return {\n success: true,\n data: products,\n };\n } catch (error: any) {\n return {\n success: false,\n message: error.response?.data?.message || 'Failed to get featured products',\n data: [],\n };\n }\n },\n\n /**\n * Get related products\n */\n async getRelatedProducts(productId: string, limit: number = 4): Promise<ApiResponse<Product[]>> {\n try {\n const productsApi = new ProductsApi(getApiConfiguration());\n const response = await productsApi.getRelatedProducts(productId);\n \n const products = (response.data || [])\n .map(mapProduct)\n .slice(0, limit);\n \n return {\n success: true,\n data: products,\n };\n } catch (error: any) {\n return {\n success: false,\n message: error.response?.data?.message || 'Failed to get related products',\n data: [],\n };\n }\n },\n\n /**\n * Get all categories\n */\n async getCategories(): Promise<ApiResponse<Category[]>> {\n try {\n const categoriesApi = new CategoriesApi(getApiConfiguration());\n const response = await categoriesApi.getAllCategories();\n \n const categories: Category[] = (response.data.data || []).map((cat: any) => ({\n id: cat.id || cat._id || '',\n name: cat.name || '',\n slug: cat.slug || cat.name?.toLowerCase().replace(/\\s+/g, '-') || '',\n description: cat.description,\n image: cat.image,\n productCount: cat.productCount || 0,\n }));\n \n return {\n success: true,\n data: categories,\n };\n } catch (error: any) {\n return {\n success: false,\n message: error.response?.data?.message || 'Failed to get categories',\n data: [],\n };\n }\n },\n\n /**\n * Search products\n */\n async searchProducts(query: string, limit: number = 10): Promise<ApiResponse<Product[]>> {\n try {\n const productsApi = new ProductsApi(getApiConfiguration());\n const response = await productsApi.getAllProductsForStore(\n query, // searchTerm\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n true,\n true,\n limit,\n 1\n );\n \n const products = response.data.data?.map(mapProduct) || [];\n \n return {\n success: true,\n data: products,\n };\n } catch (error: any) {\n return {\n success: false,\n message: error.response?.data?.message || 'Failed to search products',\n data: [],\n };\n }\n },\n};\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Hey Pharamcist API\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\n *\n * OpenAPI spec version: 1.0\n * \n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport globalAxios, { AxiosResponse, AxiosInstance, AxiosRequestConfig } from 'axios';\nimport { Configuration } from '../configuration';\n// Some imports not used depending on template conditions\n// @ts-ignore\nimport { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '../base';\nimport { CartBodyDTO } from '../models';\nimport { CartResponseDto } from '../models';\nimport { ManualOrderDTO } from '../models';\n/**\n * CartApi - axios parameter creator\n * @export\n */\nexport const CartApiAxiosParamCreator = function (configuration?: Configuration) {\n return {\n /**\n * \n * @summary Clears the cart\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n clearCart: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n const localVarPath = `/cart/clearCart`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get the user cart\n * @param {string} [rateId] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getUserCart: async (rateId?: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n const localVarPath = `/cart/user/mine`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n if (rateId !== undefined) {\n localVarQueryParameter['rateId'] = rateId;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Update the user cart\n * @param {CartBodyDTO} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n handleUserCart: async (body: CartBodyDTO, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling handleUserCart.');\n }\n const localVarPath = `/cart/user/update`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'PATCH', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * this endpoint is used to calculate the cart for a visitor or for a manual order in the dashboard, it calculates the cart prices, discounts, taxes, shipping prices, and totals.\n * @summary to be used for visitor cart calculation and also dashboard manual order cart calculation\n * @param {ManualOrderDTO} body \n * @param {boolean} isDelivery \n * @param {string} [userId] \n * @param {string} [rateId] \n * @param {string} [addressId] The desired address id for the store location for the pickup\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n handleVisitorCart: async (body: ManualOrderDTO, isDelivery: boolean, userId?: string, rateId?: string, addressId?: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling handleVisitorCart.');\n }\n // verify required parameter 'isDelivery' is not null or undefined\n if (isDelivery === null || isDelivery === undefined) {\n throw new RequiredError('isDelivery','Required parameter isDelivery was null or undefined when calling handleVisitorCart.');\n }\n const localVarPath = `/cart/onspot/calculate`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n if (userId !== undefined) {\n localVarQueryParameter['userId'] = userId;\n }\n\n if (isDelivery !== undefined) {\n localVarQueryParameter['isDelivery'] = isDelivery;\n }\n\n if (rateId !== undefined) {\n localVarQueryParameter['rateId'] = rateId;\n }\n\n if (addressId !== undefined) {\n localVarQueryParameter['addressId'] = addressId;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n }\n};\n\n/**\n * CartApi - functional programming interface\n * @export\n */\nexport const CartApiFp = function(configuration?: Configuration) {\n return {\n /**\n * \n * @summary Clears the cart\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async clearCart(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {\n const localVarAxiosArgs = await CartApiAxiosParamCreator(configuration).clearCart(options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get the user cart\n * @param {string} [rateId] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getUserCart(rateId?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<CartResponseDto>>> {\n const localVarAxiosArgs = await CartApiAxiosParamCreator(configuration).getUserCart(rateId, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Update the user cart\n * @param {CartBodyDTO} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async handleUserCart(body: CartBodyDTO, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {\n const localVarAxiosArgs = await CartApiAxiosParamCreator(configuration).handleUserCart(body, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * this endpoint is used to calculate the cart for a visitor or for a manual order in the dashboard, it calculates the cart prices, discounts, taxes, shipping prices, and totals.\n * @summary to be used for visitor cart calculation and also dashboard manual order cart calculation\n * @param {ManualOrderDTO} body \n * @param {boolean} isDelivery \n * @param {string} [userId] \n * @param {string} [rateId] \n * @param {string} [addressId] The desired address id for the store location for the pickup\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async handleVisitorCart(body: ManualOrderDTO, isDelivery: boolean, userId?: string, rateId?: string, addressId?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<CartResponseDto>>> {\n const localVarAxiosArgs = await CartApiAxiosParamCreator(configuration).handleVisitorCart(body, isDelivery, userId, rateId, addressId, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n }\n};\n\n/**\n * CartApi - factory interface\n * @export\n */\nexport const CartApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {\n return {\n /**\n * \n * @summary Clears the cart\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async clearCart(options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {\n return CartApiFp(configuration).clearCart(options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get the user cart\n * @param {string} [rateId] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getUserCart(rateId?: string, options?: AxiosRequestConfig): Promise<AxiosResponse<CartResponseDto>> {\n return CartApiFp(configuration).getUserCart(rateId, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Update the user cart\n * @param {CartBodyDTO} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async handleUserCart(body: CartBodyDTO, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {\n return CartApiFp(configuration).handleUserCart(body, options).then((request) => request(axios, basePath));\n },\n /**\n * this endpoint is used to calculate the cart for a visitor or for a manual order in the dashboard, it calculates the cart prices, discounts, taxes, shipping prices, and totals.\n * @summary to be used for visitor cart calculation and also dashboard manual order cart calculation\n * @param {ManualOrderDTO} body \n * @param {boolean} isDelivery \n * @param {string} [userId] \n * @param {string} [rateId] \n * @param {string} [addressId] The desired address id for the store location for the pickup\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async handleVisitorCart(body: ManualOrderDTO, isDelivery: boolean, userId?: string, rateId?: string, addressId?: string, options?: AxiosRequestConfig): Promise<AxiosResponse<CartResponseDto>> {\n return CartApiFp(configuration).handleVisitorCart(body, isDelivery, userId, rateId, addressId, options).then((request) => request(axios, basePath));\n },\n };\n};\n\n/**\n * CartApi - object-oriented interface\n * @export\n * @class CartApi\n * @extends {BaseAPI}\n */\nexport class CartApi extends BaseAPI {\n /**\n * \n * @summary Clears the cart\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof CartApi\n */\n public async clearCart(options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {\n return CartApiFp(this.configuration).clearCart(options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get the user cart\n * @param {string} [rateId] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof CartApi\n */\n public async getUserCart(rateId?: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<CartResponseDto>> {\n return CartApiFp(this.configuration).getUserCart(rateId, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Update the user cart\n * @param {CartBodyDTO} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof CartApi\n */\n public async handleUserCart(body: CartBodyDTO, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {\n return CartApiFp(this.configuration).handleUserCart(body, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * this endpoint is used to calculate the cart for a visitor or for a manual order in the dashboard, it calculates the cart prices, discounts, taxes, shipping prices, and totals.\n * @summary to be used for visitor cart calculation and also dashboard manual order cart calculation\n * @param {ManualOrderDTO} body \n * @param {boolean} isDelivery \n * @param {string} [userId] \n * @param {string} [rateId] \n * @param {string} [addressId] The desired address id for the store location for the pickup\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof CartApi\n */\n public async handleVisitorCart(body: ManualOrderDTO, isDelivery: boolean, userId?: string, rateId?: string, addressId?: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<CartResponseDto>> {\n return CartApiFp(this.configuration).handleVisitorCart(body, isDelivery, userId, rateId, addressId, options).then((request) => request(this.axios, this.basePath));\n }\n}\n","/**\n * Cart API Adapter\n * Connects frontend cart to real backend cart APIs\n */\n\nimport { CartApi } from '../Apis/apis/cart-api';\nimport { CartBodyDTO } from '../Apis/models';\nimport { getApiConfiguration } from './config';\nimport { mapCart } from './mappers';\nimport { Cart, ApiResponse } from '../types';\n\nexport const cartAdapter = {\n /**\n * Get user's cart\n */\n async getCart(): Promise<ApiResponse<Cart>> {\n try {\n const cartApi = new CartApi(getApiConfiguration());\n const response = await cartApi.getUserCart();\n \n return {\n success: true,\n data: mapCart(response.data),\n };\n } catch (error: any) {\n return {\n success: false,\n message: error.response?.data?.message || 'Failed to get cart',\n data: { items: [], total: 0, itemCount: 0 },\n };\n }\n },\n\n /**\n * Add item to cart\n * In your backend, cart is updated as a whole, not individual items\n */\n async addToCart(productId: string, variantId: string, quantity: number = 1): Promise<ApiResponse<Cart>> {\n try {\n const cartApi = new CartApi(getApiConfiguration());\n \n // First get current cart\n const currentCartResponse = await cartApi.getUserCart();\n const currentCart = currentCartResponse.data;\n \n // Build updated cart body\n const existingItems = currentCart.cartBody?.items || [];\n const existingIndex = existingItems.findIndex(\n (p: any) => p.productVariantId === variantId\n );\n \n let updatedItems;\n if (existingIndex >= 0) {\n // Update existing item\n updatedItems = [...existingItems];\n updatedItems[existingIndex] = {\n ...updatedItems[existingIndex],\n quantity: updatedItems[existingIndex].quantity + quantity,\n };\n } else {\n // Add new item\n updatedItems = [\n ...existingItems,\n {\n productVariantId: variantId,\n quantity,\n },\n ];\n }\n \n const cartBodyDTO: CartBodyDTO = {\n items: updatedItems,\n };\n \n await cartApi.handleUserCart(cartBodyDTO);\n \n // Get updated cart\n const updatedCartResponse = await cartApi.getUserCart();\n \n return {\n success: true,\n data: mapCart(updatedCartResponse.data),\n };\n } catch (error: any) {\n return {\n success: false,\n message: error.response?.data?.message || 'Failed to add to cart',\n data: { items: [], total: 0, itemCount: 0 },\n };\n }\n },\n\n /**\n * Update cart item quantity\n */\n async updateCartItem(productId: string, variantId: string, quantity: number): Promise<ApiResponse<Cart>> {\n try {\n const cartApi = new CartApi(getApiConfiguration());\n \n // Get current cart\n const currentCartResponse = await cartApi.getUserCart();\n const currentCart = currentCartResponse.data;\n \n // Update the specific item\n const updatedItems = (currentCart.cartBody?.items || []).map((p: any) => {\n if (p.productVariantId === variantId) {\n return { ...p, quantity };\n }\n return p;\n });\n \n const cartBodyDTO: CartBodyDTO = {\n items: updatedItems,\n };\n \n await cartApi.handleUserCart(cartBodyDTO);\n \n // Get updated cart\n const updatedCartResponse = await cartApi.getUserCart();\n \n return {\n success: true,\n data: mapCart(updatedCartResponse.data),\n };\n } catch (error: any) {\n return {\n success: false,\n message: error.response?.data?.message || 'Failed to update cart',\n data: { items: [], total: 0, itemCount: 0 },\n };\n }\n },\n\n /**\n * Remove item from cart\n */\n async removeFromCart(productId: string, variantId: string): Promise<ApiResponse<Cart>> {\n try {\n const cartApi = new CartApi(getApiConfiguration());\n \n // Get current cart\n const currentCartResponse = await cartApi.getUserCart();\n const currentCart = currentCartResponse.data;\n \n // Filter out the item\n const updatedItems = (currentCart.cartBody?.items || []).filter(\n (p: any) => p.productVariantId !== variantId\n );\n \n const cartBodyDTO: CartBodyDTO = {\n items: updatedItems,\n };\n \n await cartApi.handleUserCart(cartBodyDTO);\n \n // Get updated cart\n const updatedCartResponse = await cartApi.getUserCart();\n \n return {\n success: true,\n data: mapCart(updatedCartResponse.data),\n };\n } catch (error: any) {\n return {\n success: false,\n message: error.response?.data?.message || 'Failed to remove from cart',\n data: { items: [], total: 0, itemCount: 0 },\n };\n }\n },\n\n /**\n * Clear cart\n */\n async clearCart(): Promise<ApiResponse<void>> {\n try {\n const cartApi = new CartApi(getApiConfiguration());\n await cartApi.clearCart();\n \n return {\n success: true,\n data: undefined,\n };\n } catch (error: any) {\n return {\n success: false,\n message: error.response?.data?.message || 'Failed to clear cart',\n data: undefined,\n };\n }\n },\n};\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Hey Pharamcist API\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\n *\n * OpenAPI spec version: 1.0\n * \n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport globalAxios, { AxiosResponse, AxiosInstance, AxiosRequestConfig } from 'axios';\nimport { Configuration } from '../configuration';\n// Some imports not used depending on template conditions\n// @ts-ignore\nimport { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '../base';\nimport { EmailInvoiceDto } from '../models';\nimport { ManualOrderDTO } from '../models';\nimport { OrderPaginatedResponse } from '../models';\nimport { OrdersInsightsDto } from '../models';\nimport { PopulatedOrder } from '../models';\n/**\n * OrdersApi - axios parameter creator\n * @export\n */\nexport const OrdersApiAxiosParamCreator = function (configuration?: Configuration) {\n return {\n /**\n * \n * @summary Add payment method to Order\n * @param {string} orderId \n * @param {string} paymentMethod \n * @param {string} [billingAddressId] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n assignPaymentMethod: async (orderId: string, paymentMethod: string, billingAddressId?: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'orderId' is not null or undefined\n if (orderId === null || orderId === undefined) {\n throw new RequiredError('orderId','Required parameter orderId was null or undefined when calling assignPaymentMethod.');\n }\n // verify required parameter 'paymentMethod' is not null or undefined\n if (paymentMethod === null || paymentMethod === undefined) {\n throw new RequiredError('paymentMethod','Required parameter paymentMethod was null or undefined when calling assignPaymentMethod.');\n }\n const localVarPath = `/orders/assign-payment-method/{orderId}`\n .replace(`{${\"orderId\"}}`, encodeURIComponent(String(orderId)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n if (paymentMethod !== undefined) {\n localVarQueryParameter['paymentMethod'] = paymentMethod;\n }\n\n if (billingAddressId !== undefined) {\n localVarQueryParameter['billingAddressId'] = billingAddressId;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Cancel an order\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n cancelOrder: async (id: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'id' is not null or undefined\n if (id === null || id === undefined) {\n throw new RequiredError('id','Required parameter id was null or undefined when calling cancelOrder.');\n }\n const localVarPath = `/orders/cancel/{id}`\n .replace(`{${\"id\"}}`, encodeURIComponent(String(id)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'PATCH', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Create an Order\n * @param {ManualOrderDTO} body \n * @param {boolean} isDelivery \n * @param {string} [userId] \n * @param {string} [rateId] \n * @param {string} [billingAddressId] The desired address id for the billing address in case of paying by card\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n createCheckout: async (body: ManualOrderDTO, isDelivery: boolean, userId?: string, rateId?: string, billingAddressId?: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling createCheckout.');\n }\n // verify required parameter 'isDelivery' is not null or undefined\n if (isDelivery === null || isDelivery === undefined) {\n throw new RequiredError('isDelivery','Required parameter isDelivery was null or undefined when calling createCheckout.');\n }\n const localVarPath = `/orders/createOrder`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n if (userId !== undefined) {\n localVarQueryParameter['userId'] = userId;\n }\n\n if (isDelivery !== undefined) {\n localVarQueryParameter['isDelivery'] = isDelivery;\n }\n\n if (rateId !== undefined) {\n localVarQueryParameter['rateId'] = rateId;\n }\n\n if (billingAddressId !== undefined) {\n localVarQueryParameter['billingAddressId'] = billingAddressId;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Delete an order\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteOrder: async (id: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'id' is not null or undefined\n if (id === null || id === undefined) {\n throw new RequiredError('id','Required parameter id was null or undefined when calling deleteOrder.');\n }\n const localVarPath = `/orders/{id}`\n .replace(`{${\"id\"}}`, encodeURIComponent(String(id)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'DELETE', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get all orders\n * @param {string} [paymentStatus] \n * @param {string} [orderStatus] \n * @param {number} [page] \n * @param {number} [limit] \n * @param {string} [search] \n * @param {Date} [createdAfter] \n * @param {Date} [createdBefore] \n * @param {Date} [userId] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getAllOrders: async (paymentStatus?: string, orderStatus?: string, page?: number, limit?: number, search?: string, createdAfter?: Date, createdBefore?: Date, userId?: Date, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n const localVarPath = `/orders`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n if (paymentStatus !== undefined) {\n localVarQueryParameter['paymentStatus'] = paymentStatus;\n }\n\n if (orderStatus !== undefined) {\n localVarQueryParameter['orderStatus'] = orderStatus;\n }\n\n if (page !== undefined) {\n localVarQueryParameter['page'] = page;\n }\n\n if (limit !== undefined) {\n localVarQueryParameter['limit'] = limit;\n }\n\n if (search !== undefined) {\n localVarQueryParameter['search'] = search;\n }\n\n if (createdAfter !== undefined) {\n localVarQueryParameter['createdAfter'] = (createdAfter as any instanceof Date) ?\n (createdAfter as any).toISOString() :\n createdAfter;\n }\n\n if (createdBefore !== undefined) {\n localVarQueryParameter['createdBefore'] = (createdBefore as any instanceof Date) ?\n (createdBefore as any).toISOString() :\n createdBefore;\n }\n\n if (userId !== undefined) {\n localVarQueryParameter['userId'] = (userId as any instanceof Date) ?\n (userId as any).toISOString() :\n userId;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get an order by id\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getSingleOrder: async (id: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'id' is not null or undefined\n if (id === null || id === undefined) {\n throw new RequiredError('id','Required parameter id was null or undefined when calling getSingleOrder.');\n }\n const localVarPath = `/orders/{id}`\n .replace(`{${\"id\"}}`, encodeURIComponent(String(id)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get the insights for each type of orders\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getStoreOrderInsights: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n const localVarPath = `/orders/insights`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get all orders for the current user\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getUserOrders: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n const localVarPath = `/orders/user`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Pay for an Order\n * @param {string} orderId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n payOrder: async (orderId: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'orderId' is not null or undefined\n if (orderId === null || orderId === undefined) {\n throw new RequiredError('orderId','Required parameter orderId was null or undefined when calling payOrder.');\n }\n const localVarPath = `/orders/pay/{orderId}`\n .replace(`{${\"orderId\"}}`, encodeURIComponent(String(orderId)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Send an Invoice to email\n * @param {EmailInvoiceDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n sendOrderEmail: async (body: EmailInvoiceDto, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling sendOrderEmail.');\n }\n const localVarPath = `/orders/email`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Update an order\n * @param {ManualOrderDTO} body \n * @param {boolean} isDelivery \n * @param {string} id \n * @param {string} [paymentMethod] \n * @param {string} [userId] \n * @param {string} [rateId] \n * @param {string} [addressId] The desired address id for the store location for the pickup\n * @param {string} [billingAddressId] The desired address id for the billing address in case of paying by card\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n updateOrder: async (body: ManualOrderDTO, isDelivery: boolean, id: string, paymentMethod?: string, userId?: string, rateId?: string, addressId?: string, billingAddressId?: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling updateOrder.');\n }\n // verify required parameter 'isDelivery' is not null or undefined\n if (isDelivery === null || isDelivery === undefined) {\n throw new RequiredError('isDelivery','Required parameter isDelivery was null or undefined when calling updateOrder.');\n }\n // verify required parameter 'id' is not null or undefined\n if (id === null || id === undefined) {\n throw new RequiredError('id','Required parameter id was null or undefined when calling updateOrder.');\n }\n const localVarPath = `/orders/{id}`\n .replace(`{${\"id\"}}`, encodeURIComponent(String(id)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'PATCH', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n if (paymentMethod !== undefined) {\n localVarQueryParameter['paymentMethod'] = paymentMethod;\n }\n\n if (userId !== undefined) {\n localVarQueryParameter['userId'] = userId;\n }\n\n if (isDelivery !== undefined) {\n localVarQueryParameter['isDelivery'] = isDelivery;\n }\n\n if (rateId !== undefined) {\n localVarQueryParameter['rateId'] = rateId;\n }\n\n if (addressId !== undefined) {\n localVarQueryParameter['addressId'] = addressId;\n }\n\n if (billingAddressId !== undefined) {\n localVarQueryParameter['billingAddressId'] = billingAddressId;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Update an order status\n * @param {string} id \n * @param {string} orderStatus \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n updateOrderStatus: async (id: string, orderStatus: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'id' is not null or undefined\n if (id === null || id === undefined) {\n throw new RequiredError('id','Required parameter id was null or undefined when calling updateOrderStatus.');\n }\n // verify required parameter 'orderStatus' is not null or undefined\n if (orderStatus === null || orderStatus === undefined) {\n throw new RequiredError('orderStatus','Required parameter orderStatus was null or undefined when calling updateOrderStatus.');\n }\n const localVarPath = `/orders/{id}/status`\n .replace(`{${\"id\"}}`, encodeURIComponent(String(id)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'PATCH', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n if (orderStatus !== undefined) {\n localVarQueryParameter['orderStatus'] = orderStatus;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n }\n};\n\n/**\n * OrdersApi - functional programming interface\n * @export\n */\nexport const OrdersApiFp = function(configuration?: Configuration) {\n return {\n /**\n * \n * @summary Add payment method to Order\n * @param {string} orderId \n * @param {string} paymentMethod \n * @param {string} [billingAddressId] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async assignPaymentMethod(orderId: string, paymentMethod: string, billingAddressId?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<PopulatedOrder>>> {\n const localVarAxiosArgs = await OrdersApiAxiosParamCreator(configuration).assignPaymentMethod(orderId, paymentMethod, billingAddressId, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Cancel an order\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async cancelOrder(id: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<PopulatedOrder>>> {\n const localVarAxiosArgs = await OrdersApiAxiosParamCreator(configuration).cancelOrder(id, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Create an Order\n * @param {ManualOrderDTO} body \n * @param {boolean} isDelivery \n * @param {string} [userId] \n * @param {string} [rateId] \n * @param {string} [billingAddressId] The desired address id for the billing address in case of paying by card\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async createCheckout(body: ManualOrderDTO, isDelivery: boolean, userId?: string, rateId?: string, billingAddressId?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<PopulatedOrder>>> {\n const localVarAxiosArgs = await OrdersApiAxiosParamCreator(configuration).createCheckout(body, isDelivery, userId, rateId, billingAddressId, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Delete an order\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async deleteOrder(id: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {\n const localVarAxiosArgs = await OrdersApiAxiosParamCreator(configuration).deleteOrder(id, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get all orders\n * @param {string} [paymentStatus] \n * @param {string} [orderStatus] \n * @param {number} [page] \n * @param {number} [limit] \n * @param {string} [search] \n * @param {Date} [createdAfter] \n * @param {Date} [createdBefore] \n * @param {Date} [userId] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getAllOrders(paymentStatus?: string, orderStatus?: string, page?: number, limit?: number, search?: string, createdAfter?: Date, createdBefore?: Date, userId?: Date, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<OrderPaginatedResponse>>> {\n const localVarAxiosArgs = await OrdersApiAxiosParamCreator(configuration).getAllOrders(paymentStatus, orderStatus, page, limit, search, createdAfter, createdBefore, userId, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get an order by id\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getSingleOrder(id: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<PopulatedOrder>>> {\n const localVarAxiosArgs = await OrdersApiAxiosParamCreator(configuration).getSingleOrder(id, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get the insights for each type of orders\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getStoreOrderInsights(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<OrdersInsightsDto>>> {\n const localVarAxiosArgs = await OrdersApiAxiosParamCreator(configuration).getStoreOrderInsights(options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get all orders for the current user\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getUserOrders(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<Array<PopulatedOrder>>>> {\n const localVarAxiosArgs = await OrdersApiAxiosParamCreator(configuration).getUserOrders(options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Pay for an Order\n * @param {string} orderId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async payOrder(orderId: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<PopulatedOrder>>> {\n const localVarAxiosArgs = await OrdersApiAxiosParamCreator(configuration).payOrder(orderId, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Send an Invoice to email\n * @param {EmailInvoiceDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async sendOrderEmail(body: EmailInvoiceDto, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<string>>> {\n const localVarAxiosArgs = await OrdersApiAxiosParamCreator(configuration).sendOrderEmail(body, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Update an order\n * @param {ManualOrderDTO} body \n * @param {boolean} isDelivery \n * @param {string} id \n * @param {string} [paymentMethod] \n * @param {string} [userId] \n * @param {string} [rateId] \n * @param {string} [addressId] The desired address id for the store location for the pickup\n * @param {string} [billingAddressId] The desired address id for the billing address in case of paying by card\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async updateOrder(body: ManualOrderDTO, isDelivery: boolean, id: string, paymentMethod?: string, userId?: string, rateId?: string, addressId?: string, billingAddressId?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<PopulatedOrder>>> {\n const localVarAxiosArgs = await OrdersApiAxiosParamCreator(configuration).updateOrder(body, isDelivery, id, paymentMethod, userId, rateId, addressId, billingAddressId, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Update an order status\n * @param {string} id \n * @param {string} orderStatus \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async updateOrderStatus(id: string, orderStatus: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<PopulatedOrder>>> {\n const localVarAxiosArgs = await OrdersApiAxiosParamCreator(configuration).updateOrderStatus(id, orderStatus, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n }\n};\n\n/**\n * OrdersApi - factory interface\n * @export\n */\nexport const OrdersApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {\n return {\n /**\n * \n * @summary Add payment method to Order\n * @param {string} orderId \n * @param {string} paymentMethod \n * @param {string} [billingAddressId] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async assignPaymentMethod(orderId: string, paymentMethod: string, billingAddressId?: string, options?: AxiosRequestConfig): Promise<AxiosResponse<PopulatedOrder>> {\n return OrdersApiFp(configuration).assignPaymentMethod(orderId, paymentMethod, billingAddressId, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Cancel an order\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async cancelOrder(id: string, options?: AxiosRequestConfig): Promise<AxiosResponse<PopulatedOrder>> {\n return OrdersApiFp(configuration).cancelOrder(id, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Create an Order\n * @param {ManualOrderDTO} body \n * @param {boolean} isDelivery \n * @param {string} [userId] \n * @param {string} [rateId] \n * @param {string} [billingAddressId] The desired address id for the billing address in case of paying by card\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async createCheckout(body: ManualOrderDTO, isDelivery: boolean, userId?: string, rateId?: string, billingAddressId?: string, options?: AxiosRequestConfig): Promise<AxiosResponse<PopulatedOrder>> {\n return OrdersApiFp(configuration).createCheckout(body, isDelivery, userId, rateId, billingAddressId, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Delete an order\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async deleteOrder(id: string, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {\n return OrdersApiFp(configuration).deleteOrder(id, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get all orders\n * @param {string} [paymentStatus] \n * @param {string} [orderStatus] \n * @param {number} [page] \n * @param {number} [limit] \n * @param {string} [search] \n * @param {Date} [createdAfter] \n * @param {Date} [createdBefore] \n * @param {Date} [userId] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getAllOrders(paymentStatus?: string, orderStatus?: string, page?: number, limit?: number, search?: string, createdAfter?: Date, createdBefore?: Date, userId?: Date, options?: AxiosRequestConfig): Promise<AxiosResponse<OrderPaginatedResponse>> {\n return OrdersApiFp(configuration).getAllOrders(paymentStatus, orderStatus, page, limit, search, createdAfter, createdBefore, userId, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get an order by id\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getSingleOrder(id: string, options?: AxiosRequestConfig): Promise<AxiosResponse<PopulatedOrder>> {\n return OrdersApiFp(configuration).getSingleOrder(id, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get the insights for each type of orders\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getStoreOrderInsights(options?: AxiosRequestConfig): Promise<AxiosResponse<OrdersInsightsDto>> {\n return OrdersApiFp(configuration).getStoreOrderInsights(options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get all orders for the current user\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getUserOrders(options?: AxiosRequestConfig): Promise<AxiosResponse<Array<PopulatedOrder>>> {\n return OrdersApiFp(configuration).getUserOrders(options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Pay for an Order\n * @param {string} orderId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async payOrder(orderId: string, options?: AxiosRequestConfig): Promise<AxiosResponse<PopulatedOrder>> {\n return OrdersApiFp(configuration).payOrder(orderId, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Send an Invoice to email\n * @param {EmailInvoiceDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async sendOrderEmail(body: EmailInvoiceDto, options?: AxiosRequestConfig): Promise<AxiosResponse<string>> {\n return OrdersApiFp(configuration).sendOrderEmail(body, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Update an order\n * @param {ManualOrderDTO} body \n * @param {boolean} isDelivery \n * @param {string} id \n * @param {string} [paymentMethod] \n * @param {string} [userId] \n * @param {string} [rateId] \n * @param {string} [addressId] The desired address id for the store location for the pickup\n * @param {string} [billingAddressId] The desired address id for the billing address in case of paying by card\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async updateOrder(body: ManualOrderDTO, isDelivery: boolean, id: string, paymentMethod?: string, userId?: string, rateId?: string, addressId?: string, billingAddressId?: string, options?: AxiosRequestConfig): Promise<AxiosResponse<PopulatedOrder>> {\n return OrdersApiFp(configuration).updateOrder(body, isDelivery, id, paymentMethod, userId, rateId, addressId, billingAddressId, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Update an order status\n * @param {string} id \n * @param {string} orderStatus \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async updateOrderStatus(id: string, orderStatus: string, options?: AxiosRequestConfig): Promise<AxiosResponse<PopulatedOrder>> {\n return OrdersApiFp(configuration).updateOrderStatus(id, orderStatus, options).then((request) => request(axios, basePath));\n },\n };\n};\n\n/**\n * OrdersApi - object-oriented interface\n * @export\n * @class OrdersApi\n * @extends {BaseAPI}\n */\nexport class OrdersApi extends BaseAPI {\n /**\n * \n * @summary Add payment method to Order\n * @param {string} orderId \n * @param {string} paymentMethod \n * @param {string} [billingAddressId] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof OrdersApi\n */\n public async assignPaymentMethod(orderId: string, paymentMethod: string, billingAddressId?: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<PopulatedOrder>> {\n return OrdersApiFp(this.configuration).assignPaymentMethod(orderId, paymentMethod, billingAddressId, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Cancel an order\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof OrdersApi\n */\n public async cancelOrder(id: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<PopulatedOrder>> {\n return OrdersApiFp(this.configuration).cancelOrder(id, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Create an Order\n * @param {ManualOrderDTO} body \n * @param {boolean} isDelivery \n * @param {string} [userId] \n * @param {string} [rateId] \n * @param {string} [billingAddressId] The desired address id for the billing address in case of paying by card\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof OrdersApi\n */\n public async createCheckout(body: ManualOrderDTO, isDelivery: boolean, userId?: string, rateId?: string, billingAddressId?: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<PopulatedOrder>> {\n return OrdersApiFp(this.configuration).createCheckout(body, isDelivery, userId, rateId, billingAddressId, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Delete an order\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof OrdersApi\n */\n public async deleteOrder(id: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {\n return OrdersApiFp(this.configuration).deleteOrder(id, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get all orders\n * @param {string} [paymentStatus] \n * @param {string} [orderStatus] \n * @param {number} [page] \n * @param {number} [limit] \n * @param {string} [search] \n * @param {Date} [createdAfter] \n * @param {Date} [createdBefore] \n * @param {Date} [userId] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof OrdersApi\n */\n public async getAllOrders(paymentStatus?: string, orderStatus?: string, page?: number, limit?: number, search?: string, createdAfter?: Date, createdBefore?: Date, userId?: Date, options?: AxiosRequestConfig) : Promise<AxiosResponse<OrderPaginatedResponse>> {\n return OrdersApiFp(this.configuration).getAllOrders(paymentStatus, orderStatus, page, limit, search, createdAfter, createdBefore, userId, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get an order by id\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof OrdersApi\n */\n public async getSingleOrder(id: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<PopulatedOrder>> {\n return OrdersApiFp(this.configuration).getSingleOrder(id, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get the insights for each type of orders\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof OrdersApi\n */\n public async getStoreOrderInsights(options?: AxiosRequestConfig) : Promise<AxiosResponse<OrdersInsightsDto>> {\n return OrdersApiFp(this.configuration).getStoreOrderInsights(options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get all orders for the current user\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof OrdersApi\n */\n public async getUserOrders(options?: AxiosRequestConfig) : Promise<AxiosResponse<Array<PopulatedOrder>>> {\n return OrdersApiFp(this.configuration).getUserOrders(options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Pay for an Order\n * @param {string} orderId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof OrdersApi\n */\n public async payOrder(orderId: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<PopulatedOrder>> {\n return OrdersApiFp(this.configuration).payOrder(orderId, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Send an Invoice to email\n * @param {EmailInvoiceDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof OrdersApi\n */\n public async sendOrderEmail(body: EmailInvoiceDto, options?: AxiosRequestConfig) : Promise<AxiosResponse<string>> {\n return OrdersApiFp(this.configuration).sendOrderEmail(body, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Update an order\n * @param {ManualOrderDTO} body \n * @param {boolean} isDelivery \n * @param {string} id \n * @param {string} [paymentMethod] \n * @param {string} [userId] \n * @param {string} [rateId] \n * @param {string} [addressId] The desired address id for the store location for the pickup\n * @param {string} [billingAddressId] The desired address id for the billing address in case of paying by card\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof OrdersApi\n */\n public async updateOrder(body: ManualOrderDTO, isDelivery: boolean, id: string, paymentMethod?: string, userId?: string, rateId?: string, addressId?: string, billingAddressId?: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<PopulatedOrder>> {\n return OrdersApiFp(this.configuration).updateOrder(body, isDelivery, id, paymentMethod, userId, rateId, addressId, billingAddressId, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Update an order status\n * @param {string} id \n * @param {string} orderStatus \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof OrdersApi\n */\n public async updateOrderStatus(id: string, orderStatus: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<PopulatedOrder>> {\n return OrdersApiFp(this.configuration).updateOrderStatus(id, orderStatus, options).then((request) => request(this.axios, this.basePath));\n }\n}\n","/**\n * Orders API Adapter\n * Connects frontend orders to real backend orders APIs\n */\n\nimport { OrdersApi } from '../Apis/apis/orders-api';\nimport { ManualOrderDTO } from '../Apis/models';\nimport { getApiConfiguration } from './config';\nimport { mapOrder } from './mappers';\nimport { Order, ApiResponse, PaginatedResponse, Address } from '../types';\n\nexport interface CreateOrderData {\n shippingAddress: Address;\n billingAddress: Address;\n sameAsShipping?: boolean;\n paymentMethod?: string;\n}\n\nexport const ordersAdapter = {\n /**\n * Get user's orders with pagination\n */\n async getOrders(page: number = 1, limit: number = 10): Promise<PaginatedResponse<Order>> {\n try {\n const ordersApi = new OrdersApi(getApiConfiguration());\n const response = await ordersApi.getAllOrders(\n undefined, // paymentStatus\n undefined, // orderStatus\n page,\n limit,\n undefined, // search\n undefined, // createdAfter\n undefined, // createdBefore\n undefined // userId\n );\n \n const orders = response.data.data?.map(mapOrder) || [];\n \n return {\n data: orders,\n pagination: {\n page: response.data.page || page,\n limit: response.data.limit || limit,\n total: response.data.total || orders.length,\n totalPages: response.data.totalPages || 1,\n },\n };\n } catch (error: any) {\n console.error('Failed to get orders:', error);\n return {\n data: [],\n pagination: { page, limit, total: 0, totalPages: 0 },\n };\n }\n },\n\n /**\n * Get current/active orders\n * Orders that are not delivered or cancelled\n */\n async getCurrentOrders(): Promise<ApiResponse<Order[]>> {\n try {\n const ordersApi = new OrdersApi(getApiConfiguration());\n const response = await ordersApi.getUserOrders();\n \n const orders = (response.data || [])\n .map((order: any) => mapOrder(order))\n .filter((order: Order) => \n order.status !== 'delivered' && \n order.status !== 'cancelled'\n );\n \n return {\n success: true,\n data: orders,\n };\n } catch (error: any) {\n return {\n success: false,\n message: error.response?.data?.message || 'Failed to get current orders',\n data: [],\n };\n }\n },\n\n /**\n * Get a single order by ID\n */\n async getOrder(id: string): Promise<ApiResponse<Order>> {\n try {\n const ordersApi = new OrdersApi(getApiConfiguration());\n const response = await ordersApi.getSingleOrder(id);\n \n return {\n success: true,\n data: mapOrder(response.data),\n };\n } catch (error: any) {\n return {\n success: false,\n message: error.response?.data?.message || 'Failed to get order',\n data: {} as Order,\n };\n }\n },\n\n /**\n * Create a new order\n */\n async createOrder(data: CreateOrderData): Promise<ApiResponse<Order>> {\n try {\n const ordersApi = new OrdersApi(getApiConfiguration());\n \n // Build the order DTO\n // Note: Cart items are handled automatically by backend\n const orderDTO: ManualOrderDTO = {\n items: [], // Will be populated from user's cart by backend\n paymentMethod: 'Card' as any, // Card for Stripe, Cash for COD\n orderStatus: 'Pending' as any,\n manualDiscount: {} as any,\n discountId: '',\n manualShipping: {} as any,\n paymentDueDate: new Date(),\n chargeTax: true,\n orderRemindingDates: [],\n };\n \n const response = await ordersApi.createCheckout(\n orderDTO,\n true, // isDelivery\n undefined, // userId (from token)\n undefined, // rateId\n undefined // billingAddressId\n );\n \n return {\n success: true,\n data: mapOrder(response.data),\n };\n } catch (error: any) {\n return {\n success: false,\n message: error.response?.data?.message || 'Failed to create order',\n data: {} as Order,\n };\n }\n },\n\n /**\n * Cancel an order\n */\n async cancelOrder(id: string): Promise<ApiResponse<Order>> {\n try {\n const ordersApi = new OrdersApi(getApiConfiguration());\n const response = await ordersApi.cancelOrder(id);\n \n return {\n success: true,\n data: mapOrder(response.data),\n };\n } catch (error: any) {\n return {\n success: false,\n message: error.response?.data?.message || 'Failed to cancel order',\n data: {} as Order,\n };\n }\n },\n\n /**\n * Get order tracking information\n */\n async getOrderTracking(id: string): Promise<ApiResponse<any>> {\n try {\n const ordersApi = new OrdersApi(getApiConfiguration());\n const response = await ordersApi.getSingleOrder(id);\n \n return {\n success: true,\n data: {\n orderStatus: response.data.orderStatus,\n orderTimeLine: response.data.orderTimeLine,\n shippingInfo: response.data.shippingInfo,\n },\n };\n } catch (error: any) {\n return {\n success: false,\n message: error.response?.data?.message || 'Failed to get tracking',\n data: {},\n };\n }\n },\n};\n\n","import { authAdapter } from '@/lib/api-adapter';\nimport { User, ApiResponse, LoginCredentials, RegisterData, AuthTokens } from '@/lib/types';\n\nexport const authApi = {\n /**\n * Register a new user\n */\n async register(data: RegisterData): Promise<ApiResponse<{ user: User; tokens: AuthTokens }>> {\n const response = await authAdapter.register(data);\n return {\n ...response,\n data: {\n user: response.data.user,\n tokens: {\n accessToken: response.data.token,\n refreshToken: response.data.token, // Backend uses single token\n },\n },\n };\n },\n\n /**\n * Login user\n */\n async login(credentials: LoginCredentials): Promise<ApiResponse<{ user: User; tokens: AuthTokens }>> {\n const response = await authAdapter.login(credentials);\n return {\n ...response,\n data: {\n user: response.data.user,\n tokens: {\n accessToken: response.data.token,\n refreshToken: response.data.token, // Backend uses single token\n },\n },\n };\n },\n\n /**\n * Logout user\n */\n async logout(): Promise<void> {\n await authAdapter.logout();\n },\n\n /**\n * Get current user\n */\n async getCurrentUser(): Promise<ApiResponse<User>> {\n return await authAdapter.getCurrentUser();\n },\n\n /**\n * Update user profile\n */\n async updateProfile(data: Partial<User>): Promise<ApiResponse<User>> {\n return await authAdapter.updateProfile(data);\n },\n\n /**\n * Change password\n */\n async changePassword(currentPassword: string, newPassword: string): Promise<ApiResponse<void>> {\n return await authAdapter.changePassword(currentPassword, newPassword);\n },\n\n /**\n * Request password reset\n */\n async forgotPassword(email: string): Promise<ApiResponse<void>> {\n return await authAdapter.forgotPassword(email);\n },\n\n /**\n * Reset password with token\n */\n async resetPassword(token: string, newPassword: string): Promise<ApiResponse<void>> {\n return await authAdapter.resetPassword(token, newPassword);\n },\n};\n\n","import axios, { AxiosInstance, AxiosRequestConfig } from 'axios';\nimport { EcommerceConfig } from '@/lib/types';\n\nlet apiClient: AxiosInstance | null = null;\nlet currentConfig: EcommerceConfig | null = null;\n\nexport function initializeApiClient(config: EcommerceConfig): AxiosInstance {\n currentConfig = config;\n \n apiClient = axios.create({\n baseURL: config.apiBaseUrl,\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n\n // Request interceptor to add auth token and storeId\n apiClient.interceptors.request.use(\n (config) => {\n // Add storeId to all requests\n if (currentConfig) {\n config.headers['X-Store-Id'] = currentConfig.storeId;\n }\n\n // Add auth token if available\n const token = getAuthToken();\n if (token) {\n config.headers.Authorization = `Bearer ${token}`;\n }\n\n return config;\n },\n (error) => {\n return Promise.reject(error);\n }\n );\n\n // Response interceptor for error handling\n apiClient.interceptors.response.use(\n (response) => response,\n async (error) => {\n if (error.response?.status === 401) {\n // Token expired, try to refresh\n const refreshToken = getRefreshToken();\n if (refreshToken) {\n try {\n const response = await axios.post(`${currentConfig?.apiBaseUrl}/auth/refresh`, {\n refreshToken,\n });\n \n const { accessToken } = response.data;\n setAuthToken(accessToken);\n \n // Retry the original request\n error.config.headers.Authorization = `Bearer ${accessToken}`;\n return apiClient!(error.config);\n } catch (refreshError) {\n // Refresh failed, clear tokens and redirect to login\n clearAuthTokens();\n window.location.href = '/login';\n }\n } else {\n clearAuthTokens();\n window.location.href = '/login';\n }\n }\n \n return Promise.reject(error);\n }\n );\n\n return apiClient;\n}\n\nexport function getApiClient(): AxiosInstance {\n if (!apiClient) {\n throw new Error('API client not initialized. Call initializeApiClient first.');\n }\n return apiClient;\n}\n\n// Token management utilities\nconst TOKEN_KEY = 'ecommerce_access_token';\nconst REFRESH_TOKEN_KEY = 'ecommerce_refresh_token';\n\nexport function setAuthToken(token: string): void {\n if (typeof window !== 'undefined') {\n localStorage.setItem(TOKEN_KEY, token);\n }\n}\n\nexport function setRefreshToken(token: string): void {\n if (typeof window !== 'undefined') {\n localStorage.setItem(REFRESH_TOKEN_KEY, token);\n }\n}\n\nexport function getAuthToken(): string | null {\n if (typeof window !== 'undefined') {\n return localStorage.getItem(TOKEN_KEY);\n }\n return null;\n}\n\nexport function getRefreshToken(): string | null {\n if (typeof window !== 'undefined') {\n return localStorage.getItem(REFRESH_TOKEN_KEY);\n }\n return null;\n}\n\nexport function clearAuthTokens(): void {\n if (typeof window !== 'undefined') {\n localStorage.removeItem(TOKEN_KEY);\n localStorage.removeItem(REFRESH_TOKEN_KEY);\n }\n}\n\n","'use client';\n\nimport React, { createContext, useContext, useState, useEffect, useCallback } from 'react';\nimport { User, LoginCredentials, RegisterData } from '@/lib/types';\nimport { authApi } from '@/lib/api/auth';\nimport { getAuthToken } from '@/lib/api/client';\n\ninterface AuthContextValue {\n user: User | null;\n isAuthenticated: boolean;\n isLoading: boolean;\n login: (credentials: LoginCredentials) => Promise<void>;\n register: (data: RegisterData) => Promise<void>;\n logout: () => Promise<void>;\n updateUser: (data: Partial<User>) => Promise<void>;\n refreshUser: () => Promise<void>;\n}\n\nconst AuthContext = createContext<AuthContextValue | undefined>(undefined);\n\nexport function useAuth() {\n const context = useContext(AuthContext);\n if (!context) {\n throw new Error('useAuth must be used within AuthProvider');\n }\n return context;\n}\n\ninterface AuthProviderProps {\n children: React.ReactNode;\n}\n\nexport function AuthProvider({ children }: AuthProviderProps) {\n const [user, setUser] = useState<User | null>(null);\n const [isLoading, setIsLoading] = useState(true);\n\n const refreshUser = useCallback(async () => {\n try {\n const token = getAuthToken();\n if (token) {\n const response = await authApi.getCurrentUser();\n if (response.success) {\n setUser(response.data);\n }\n }\n } catch (error) {\n console.error('Failed to refresh user:', error);\n setUser(null);\n } finally {\n setIsLoading(false);\n }\n }, []);\n\n useEffect(() => {\n refreshUser();\n }, [refreshUser]);\n\n const login = async (credentials: LoginCredentials) => {\n setIsLoading(true);\n try {\n const response = await authApi.login(credentials);\n if (response.success) {\n setUser(response.data.user);\n }\n } finally {\n setIsLoading(false);\n }\n };\n\n const register = async (data: RegisterData) => {\n setIsLoading(true);\n try {\n const response = await authApi.register(data);\n if (response.success) {\n setUser(response.data.user);\n }\n } finally {\n setIsLoading(false);\n }\n };\n\n const logout = async () => {\n setIsLoading(true);\n try {\n await authApi.logout();\n setUser(null);\n } finally {\n setIsLoading(false);\n }\n };\n\n const updateUser = async (data: Partial<User>) => {\n try {\n const response = await authApi.updateProfile(data);\n if (response.success) {\n setUser(response.data);\n }\n } catch (error) {\n console.error('Failed to update user:', error);\n throw error;\n }\n };\n\n const value: AuthContextValue = {\n user,\n isAuthenticated: !!user,\n isLoading,\n login,\n register,\n logout,\n updateUser,\n refreshUser,\n };\n\n return <AuthContext.Provider value={value}>{children}</AuthContext.Provider>;\n}\n\n","import { cartAdapter } from '@/lib/api-adapter';\nimport { Cart, ApiResponse } from '@/lib/types';\n\nexport const cartApi = {\n /**\n * Get user's cart\n */\n async getCart(): Promise<ApiResponse<Cart>> {\n return await cartAdapter.getCart();\n },\n\n /**\n * Add item to cart\n * Note: Backend uses product variants. If variant ID not provided, uses product ID as variant\n */\n async addToCart(productId: string, quantity: number = 1): Promise<ApiResponse<Cart>> {\n // Use product ID as variant ID for simplified products\n return await cartAdapter.addToCart(productId, productId, quantity);\n },\n\n /**\n * Update cart item quantity\n */\n async updateCartItem(productId: string, quantity: number): Promise<ApiResponse<Cart>> {\n return await cartAdapter.updateCartItem(productId, productId, quantity);\n },\n\n /**\n * Remove item from cart\n */\n async removeFromCart(productId: string): Promise<ApiResponse<Cart>> {\n return await cartAdapter.removeFromCart(productId, productId);\n },\n\n /**\n * Clear cart\n */\n async clearCart(): Promise<ApiResponse<void>> {\n return await cartAdapter.clearCart();\n },\n};\n\n","'use client';\n\nimport React, { createContext, useContext, useState, useEffect, useCallback } from 'react';\nimport { Cart, CartItem } from '@/lib/types';\nimport { cartApi } from '@/lib/api/cart';\nimport { useAuth } from './AuthProvider';\nimport { toast } from 'sonner';\n\ninterface CartContextValue {\n cart: Cart | null;\n isLoading: boolean;\n addToCart: (productId: string, quantity?: number) => Promise<void>;\n updateQuantity: (productId: string, quantity: number) => Promise<void>;\n removeFromCart: (productId: string) => Promise<void>;\n clearCart: () => Promise<void>;\n refreshCart: () => Promise<void>;\n}\n\nconst CartContext = createContext<CartContextValue | undefined>(undefined);\n\nexport function useCart() {\n const context = useContext(CartContext);\n if (!context) {\n throw new Error('useCart must be used within CartProvider');\n }\n return context;\n}\n\ninterface CartProviderProps {\n children: React.ReactNode;\n}\n\nexport function CartProvider({ children }: CartProviderProps) {\n const [cart, setCart] = useState<Cart | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const { isAuthenticated } = useAuth();\n\n const refreshCart = useCallback(async () => {\n if (!isAuthenticated) {\n setCart(null);\n return;\n }\n\n try {\n const response = await cartApi.getCart();\n if (response.success) {\n setCart(response.data);\n }\n } catch (error) {\n console.error('Failed to fetch cart:', error);\n }\n }, [isAuthenticated]);\n\n useEffect(() => {\n refreshCart();\n }, [refreshCart]);\n\n const addToCart = async (productId: string, quantity: number = 1) => {\n setIsLoading(true);\n try {\n const response = await cartApi.addToCart(productId, quantity);\n if (response.success) {\n setCart(response.data);\n toast.success('Added to cart!');\n }\n } catch (error: any) {\n toast.error(error.response?.data?.message || 'Failed to add to cart');\n throw error;\n } finally {\n setIsLoading(false);\n }\n };\n\n const updateQuantity = async (productId: string, quantity: number) => {\n setIsLoading(true);\n try {\n const response = await cartApi.updateCartItem(productId, quantity);\n if (response.success) {\n setCart(response.data);\n }\n } catch (error: any) {\n toast.error(error.response?.data?.message || 'Failed to update cart');\n throw error;\n } finally {\n setIsLoading(false);\n }\n };\n\n const removeFromCart = async (productId: string) => {\n setIsLoading(true);\n try {\n const response = await cartApi.removeFromCart(productId);\n if (response.success) {\n setCart(response.data);\n toast.success('Removed from cart');\n }\n } catch (error: any) {\n toast.error(error.response?.data?.message || 'Failed to remove from cart');\n throw error;\n } finally {\n setIsLoading(false);\n }\n };\n\n const clearCart = async () => {\n setIsLoading(true);\n try {\n await cartApi.clearCart();\n setCart({ items: [], total: 0, itemCount: 0 });\n toast.success('Cart cleared');\n } catch (error: any) {\n toast.error(error.response?.data?.message || 'Failed to clear cart');\n throw error;\n } finally {\n setIsLoading(false);\n }\n };\n\n const value: CartContextValue = {\n cart,\n isLoading,\n addToCart,\n updateQuantity,\n removeFromCart,\n clearCart,\n refreshCart,\n };\n\n return <CartContext.Provider value={value}>{children}</CartContext.Provider>;\n}\n\n","'use client';\n\nimport React, { useEffect } from 'react';\nimport { EcommerceConfig } from '@/lib/types';\nimport { ThemeProvider } from './ThemeProvider';\nimport { AuthProvider } from './AuthProvider';\nimport { CartProvider } from './CartProvider';\nimport { initializeApiAdapter } from '@/lib/api-adapter';\nimport { Toaster } from 'sonner';\n\ninterface EcommerceProviderProps {\n config: EcommerceConfig;\n children: React.ReactNode;\n}\n\nexport function EcommerceProvider({ config, children }: EcommerceProviderProps) {\n useEffect(() => {\n // Initialize API adapter with store configuration\n // This sets up the real backend APIs with proper authentication and store ID\n initializeApiAdapter(config);\n }, [config]);\n\n return (\n <ThemeProvider config={config}>\n <AuthProvider>\n <CartProvider>\n {children}\n <Toaster position=\"top-right\" richColors />\n </CartProvider>\n </AuthProvider>\n </ThemeProvider>\n );\n}\n\n","/**\n * Format price with currency symbol\n */\nexport function formatPrice(price: number, currency: string = 'USD'): string {\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency,\n }).format(price);\n}\n\n/**\n * Format date\n */\nexport function formatDate(date: string | Date, format: 'short' | 'long' = 'short'): string {\n const d = typeof date === 'string' ? new Date(date) : date;\n \n if (format === 'long') {\n return new Intl.DateTimeFormat('en-US', {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n }).format(d);\n }\n \n return new Intl.DateTimeFormat('en-US', {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n }).format(d);\n}\n\n/**\n * Truncate text with ellipsis\n */\nexport function truncate(text: string, maxLength: number): string {\n if (text.length <= maxLength) return text;\n return text.slice(0, maxLength) + '...';\n}\n\n/**\n * Generate initials from name\n */\nexport function getInitials(firstName: string, lastName: string): string {\n return `${firstName.charAt(0)}${lastName.charAt(0)}`.toUpperCase();\n}\n\n","'use client';\n\nimport React, { useState } from 'react';\nimport { motion } from 'framer-motion';\nimport { ShoppingCart, Heart } from 'lucide-react';\nimport { Product } from '@/lib/types';\nimport { formatPrice } from '@/lib/utils/format';\nimport { useCart } from '@/providers/CartProvider';\nimport Image from 'next/image';\n\ninterface ProductCardProps {\n product: Product;\n onClickProduct?: (product: Product) => void;\n}\n\nexport function ProductCard({ product, onClickProduct }: ProductCardProps) {\n const { addToCart } = useCart();\n const [isAdding, setIsAdding] = useState(false);\n const [isFavorited, setIsFavorited] = useState(false);\n\n const handleAddToCart = async (e: React.MouseEvent) => {\n e.stopPropagation();\n setIsAdding(true);\n try {\n await addToCart(product.id);\n } finally {\n setIsAdding(false);\n }\n };\n\n const handleFavorite = (e: React.MouseEvent) => {\n e.stopPropagation();\n setIsFavorited(!isFavorited);\n };\n\n const discount = product.compareAtPrice \n ? Math.round(((product.compareAtPrice - product.price) / product.compareAtPrice) * 100)\n : 0;\n\n return (\n <motion.div\n whileHover={{ y: -8 }}\n className=\"group bg-white rounded-2xl overflow-hidden shadow-sm hover:shadow-2xl transition-all duration-300 cursor-pointer\"\n onClick={() => onClickProduct?.(product)}\n >\n {/* Image Container */}\n <div className=\"relative aspect-square overflow-hidden bg-gray-100\">\n <Image\n src={product.images[0] || '/placeholder-product.jpg'}\n alt={product.name}\n fill\n className=\"object-cover group-hover:scale-110 transition-transform duration-500\"\n />\n \n {/* Badges */}\n <div className=\"absolute top-4 left-4 flex flex-col gap-2\">\n {discount > 0 && (\n <span className=\"bg-red-500 text-white px-3 py-1 rounded-full text-sm font-bold\">\n -{discount}%\n </span>\n )}\n {!product.inStock && (\n <span className=\"bg-gray-900 text-white px-3 py-1 rounded-full text-sm font-bold\">\n Out of Stock\n </span>\n )}\n </div>\n\n {/* Favorite Button */}\n <button\n onClick={handleFavorite}\n className=\"absolute top-4 right-4 p-2 bg-white/90 backdrop-blur-sm rounded-full shadow-lg opacity-0 group-hover:opacity-100 transition-all duration-300 hover:scale-110\"\n >\n <Heart\n className={`w-5 h-5 ${isFavorited ? 'fill-red-500 text-red-500' : 'text-gray-700'}`}\n />\n </button>\n\n {/* Quick Add Button - Shows on hover */}\n {product.inStock && (\n <motion.button\n onClick={handleAddToCart}\n disabled={isAdding}\n className=\"absolute bottom-4 left-4 right-4 bg-primary-600 text-white py-3 rounded-xl font-medium opacity-0 group-hover:opacity-100 transition-all duration-300 hover:bg-primary-700 flex items-center justify-center gap-2 shadow-lg\"\n whileTap={{ scale: 0.95 }}\n >\n <ShoppingCart className=\"w-5 h-5\" />\n {isAdding ? 'Adding...' : 'Quick Add'}\n </motion.button>\n )}\n </div>\n\n {/* Content */}\n <div className=\"p-4\">\n {/* Category */}\n {product.category && (\n <p className=\"text-xs text-gray-500 uppercase tracking-wider mb-2\">\n {product.category}\n </p>\n )}\n\n {/* Product Name */}\n <h3 className=\"text-lg font-semibold text-gray-900 mb-2 line-clamp-2 group-hover:text-primary-600 transition-colors\">\n {product.name}\n </h3>\n\n {/* Price */}\n <div className=\"flex items-baseline gap-2\">\n <span className=\"text-2xl font-bold text-gray-900\">\n {formatPrice(product.price)}\n </span>\n {product.compareAtPrice && (\n <span className=\"text-sm text-gray-500 line-through\">\n {formatPrice(product.compareAtPrice)}\n </span>\n )}\n </div>\n </div>\n </motion.div>\n );\n}\n\n","import React from 'react';\n\ninterface SkeletonProps {\n className?: string;\n}\n\nexport function Skeleton({ className = '' }: SkeletonProps) {\n return (\n <div className={`animate-pulse bg-gradient-to-r from-gray-200 via-gray-300 to-gray-200 bg-[length:200%_100%] rounded ${className}`} />\n );\n}\n\nexport function ProductCardSkeleton() {\n return (\n <div className=\"bg-white rounded-2xl overflow-hidden shadow-sm\">\n <Skeleton className=\"h-64 w-full\" />\n <div className=\"p-4 space-y-3\">\n <Skeleton className=\"h-6 w-3/4\" />\n <Skeleton className=\"h-4 w-1/2\" />\n <div className=\"flex justify-between items-center pt-2\">\n <Skeleton className=\"h-8 w-24\" />\n <Skeleton className=\"h-10 w-10 rounded-full\" />\n </div>\n </div>\n </div>\n );\n}\n\nexport function OrderCardSkeleton() {\n return (\n <div className=\"bg-white rounded-2xl p-6 shadow-sm\">\n <div className=\"flex justify-between items-start mb-4\">\n <div className=\"space-y-2 flex-1\">\n <Skeleton className=\"h-6 w-32\" />\n <Skeleton className=\"h-4 w-48\" />\n </div>\n <Skeleton className=\"h-6 w-20 rounded-full\" />\n </div>\n <div className=\"space-y-3\">\n <Skeleton className=\"h-4 w-full\" />\n <Skeleton className=\"h-4 w-2/3\" />\n </div>\n </div>\n );\n}\n\n","import React from 'react';\nimport { motion } from 'framer-motion';\n\ninterface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: 'primary' | 'secondary' | 'outline' | 'ghost';\n size?: 'sm' | 'md' | 'lg';\n isLoading?: boolean;\n children: React.ReactNode;\n}\n\nexport function Button({\n variant = 'primary',\n size = 'md',\n isLoading = false,\n disabled,\n className = '',\n children,\n ...props\n}: ButtonProps) {\n const baseStyles = 'font-medium rounded-lg transition-all duration-200 inline-flex items-center justify-center gap-2 disabled:opacity-50 disabled:cursor-not-allowed';\n \n const variants = {\n primary: 'bg-primary-600 text-white hover:bg-primary-700 shadow-lg shadow-primary-500/30 hover:shadow-xl hover:shadow-primary-500/40',\n secondary: 'bg-secondary-600 text-white hover:bg-secondary-700 shadow-lg shadow-secondary-500/30 hover:shadow-xl hover:shadow-secondary-500/40',\n outline: 'border-2 border-primary-600 text-primary-600 hover:bg-primary-50',\n ghost: 'text-gray-700 hover:bg-gray-100',\n };\n \n const sizes = {\n sm: 'px-4 py-2 text-sm',\n md: 'px-6 py-3 text-base',\n lg: 'px-8 py-4 text-lg',\n };\n\n return (\n <motion.div\n whileHover={{ scale: 1.02 }}\n whileTap={{ scale: 0.98 }}\n className=\"inline-block\"\n >\n <button\n className={`${baseStyles} ${variants[variant]} ${sizes[size]} ${className}`}\n disabled={disabled || isLoading}\n {...props}\n >\n {isLoading ? (\n <>\n <svg className=\"animate-spin h-5 w-5\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\"></circle>\n <path className=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"></path>\n </svg>\n Loading...\n </>\n ) : (\n children\n )}\n </button>\n </motion.div>\n );\n}\n\n","import React from 'react';\nimport { LucideIcon } from 'lucide-react';\nimport { Button } from './ui/Button';\n\ninterface EmptyStateProps {\n icon: LucideIcon;\n title: string;\n description: string;\n actionLabel?: string;\n onAction?: () => void;\n}\n\nexport function EmptyState({ icon: Icon, title, description, actionLabel, onAction }: EmptyStateProps) {\n return (\n <div className=\"flex flex-col items-center justify-center py-16 px-4\">\n <div className=\"w-24 h-24 bg-gray-100 rounded-full flex items-center justify-center mb-6\">\n <Icon className=\"w-12 h-12 text-gray-400\" />\n </div>\n <h3 className=\"text-2xl font-bold text-gray-900 mb-2\">{title}</h3>\n <p className=\"text-gray-600 text-center max-w-md mb-8\">{description}</p>\n {actionLabel && onAction && (\n <Button onClick={onAction}>{actionLabel}</Button>\n )}\n </div>\n );\n}\n\n","import React, { forwardRef } from 'react';\n\ninterface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {\n label?: string;\n error?: string;\n helperText?: string;\n}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n ({ label, error, helperText, className = '', ...props }, ref) => {\n return (\n <div className=\"w-full\">\n {label && (\n <label className=\"block text-sm font-medium text-gray-700 mb-2\">\n {label}\n </label>\n )}\n <input\n ref={ref}\n className={`\n w-full px-4 py-3 rounded-lg border-2 transition-all duration-200\n ${error \n ? 'border-red-500 focus:border-red-600 focus:ring-red-500/20' \n : 'border-gray-200 focus:border-primary-500 focus:ring-primary-500/20'\n }\n focus:outline-none focus:ring-4\n placeholder:text-gray-400\n disabled:bg-gray-50 disabled:cursor-not-allowed\n ${className}\n `}\n {...props}\n />\n {error && (\n <p className=\"mt-2 text-sm text-red-600\">{error}</p>\n )}\n {helperText && !error && (\n <p className=\"mt-2 text-sm text-gray-500\">{helperText}</p>\n )}\n </div>\n );\n }\n);\n\nInput.displayName = 'Input';\n\n","import { productsAdapter } from '@/lib/api-adapter';\nimport { Product, ApiResponse, PaginatedResponse, ProductFilters, Category } from '@/lib/types';\n\nexport const productsApi = {\n /**\n * Get all products with optional filters and pagination\n */\n async getProducts(\n filters?: ProductFilters,\n page: number = 1,\n limit: number = 20\n ): Promise<PaginatedResponse<Product>> {\n return await productsAdapter.getProducts(filters, page, limit);\n },\n\n /**\n * Get a single product by ID\n */\n async getProduct(id: string): Promise<ApiResponse<Product>> {\n return await productsAdapter.getProduct(id);\n },\n\n /**\n * Get featured products\n */\n async getFeaturedProducts(limit: number = 8): Promise<ApiResponse<Product[]>> {\n return await productsAdapter.getFeaturedProducts(limit);\n },\n\n /**\n * Get related products\n */\n async getRelatedProducts(productId: string, limit: number = 4): Promise<ApiResponse<Product[]>> {\n return await productsAdapter.getRelatedProducts(productId, limit);\n },\n\n /**\n * Get all categories\n */\n async getCategories(): Promise<ApiResponse<Category[]>> {\n return await productsAdapter.getCategories();\n },\n\n /**\n * Search products\n */\n async searchProducts(query: string, limit: number = 10): Promise<ApiResponse<Product[]>> {\n return await productsAdapter.searchProducts(query, limit);\n },\n};\n\n","import { useState, useEffect, useCallback } from 'react';\nimport { Product, ProductFilters, Category } from '@/lib/types';\nimport { productsApi } from '@/lib/api/products';\n\nexport function useProducts(filters?: ProductFilters, page: number = 1, limit: number = 20) {\n const [products, setProducts] = useState<Product[]>([]);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n const [pagination, setPagination] = useState({\n page: 1,\n limit: 20,\n total: 0,\n totalPages: 0,\n });\n\n const fetchProducts = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n const response = await productsApi.getProducts(filters, page, limit);\n setProducts(response.data);\n setPagination(response.pagination);\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsLoading(false);\n }\n }, [filters, page, limit]);\n\n useEffect(() => {\n fetchProducts();\n }, [fetchProducts]);\n\n return {\n products,\n isLoading,\n error,\n pagination,\n refetch: fetchProducts,\n };\n}\n\nexport function useProduct(id: string) {\n const [product, setProduct] = useState<Product | null>(null);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n useEffect(() => {\n const fetchProduct = async () => {\n setIsLoading(true);\n setError(null);\n try {\n const response = await productsApi.getProduct(id);\n if (response.success) {\n setProduct(response.data);\n }\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsLoading(false);\n }\n };\n\n if (id) {\n fetchProduct();\n }\n }, [id]);\n\n return { product, isLoading, error };\n}\n\nexport function useFeaturedProducts(limit: number = 8) {\n const [products, setProducts] = useState<Product[]>([]);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n useEffect(() => {\n const fetchFeaturedProducts = async () => {\n setIsLoading(true);\n setError(null);\n try {\n const response = await productsApi.getFeaturedProducts(limit);\n if (response.success) {\n setProducts(response.data);\n }\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsLoading(false);\n }\n };\n\n fetchFeaturedProducts();\n }, [limit]);\n\n return { products, isLoading, error };\n}\n\nexport function useCategories() {\n const [categories, setCategories] = useState<Category[]>([]);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n useEffect(() => {\n const fetchCategories = async () => {\n setIsLoading(true);\n setError(null);\n try {\n const response = await productsApi.getCategories();\n if (response.success) {\n setCategories(response.data);\n }\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsLoading(false);\n }\n };\n\n fetchCategories();\n }, []);\n\n return { categories, isLoading, error };\n}\n\n","'use client';\n\nimport React, { useState } from 'react';\nimport { motion } from 'framer-motion';\nimport { Search, SlidersHorizontal, X } from 'lucide-react';\nimport { ProductCard } from '@/components/ProductCard';\nimport { ProductCardSkeleton } from '@/components/ui/Skeleton';\nimport { EmptyState } from '@/components/EmptyState';\nimport { Button } from '@/components/ui/Button';\nimport { Input } from '@/components/ui/Input';\nimport { useProducts, useCategories } from '@/hooks/useProducts';\nimport { ProductFilters } from '@/lib/types';\nimport { Package } from 'lucide-react';\nimport { useRouter } from 'next/navigation';\n\nexport function ShopScreen() {\n const router = useRouter();\n const [filters, setFilters] = useState<ProductFilters>({});\n const [page, setPage] = useState(1);\n const [showFilters, setShowFilters] = useState(false);\n const [searchQuery, setSearchQuery] = useState('');\n\n const { products, isLoading, pagination } = useProducts(filters, page, 20);\n const { categories } = useCategories();\n\n const handleSearch = (e: React.FormEvent) => {\n e.preventDefault();\n setFilters({ ...filters, search: searchQuery });\n setPage(1);\n };\n\n const handleCategoryChange = (category: string) => {\n setFilters({ ...filters, category: category === filters.category ? undefined : category });\n setPage(1);\n };\n\n const handleClearFilters = () => {\n setFilters({});\n setSearchQuery('');\n setPage(1);\n };\n\n const hasActiveFilters = Object.keys(filters).length > 0;\n\n return (\n <div className=\"min-h-screen bg-gray-50\">\n {/* Hero Section */}\n <section className=\"bg-gradient-to-br from-primary-600 via-primary-700 to-secondary-600 text-white py-20\">\n <div className=\"container mx-auto px-4\">\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n className=\"max-w-3xl mx-auto text-center\"\n >\n <h1 className=\"text-5xl md:text-6xl font-bold mb-6\">\n Discover Amazing Products\n </h1>\n <p className=\"text-xl text-primary-100 mb-8\">\n Browse our curated collection of quality products at great prices\n </p>\n\n {/* Search Bar */}\n <form onSubmit={handleSearch} className=\"max-w-2xl mx-auto\">\n <div className=\"relative\">\n <Input\n type=\"search\"\n placeholder=\"Search for products...\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n className=\"pr-12 text-lg\"\n />\n <button\n type=\"submit\"\n className=\"absolute right-2 top-1/2 -translate-y-1/2 p-2 bg-primary-600 text-white rounded-lg hover:bg-primary-700 transition-colors\"\n >\n <Search className=\"w-5 h-5\" />\n </button>\n </div>\n </form>\n </motion.div>\n </div>\n </section>\n\n {/* Main Content */}\n <div className=\"container mx-auto px-4 py-12\">\n <div className=\"flex gap-8\">\n {/* Sidebar Filters - Desktop */}\n <aside className=\"hidden lg:block w-64 flex-shrink-0\">\n <div className=\"bg-white rounded-2xl p-6 shadow-sm sticky top-24\">\n <div className=\"flex items-center justify-between mb-6\">\n <h3 className=\"text-lg font-bold text-gray-900\">Filters</h3>\n {hasActiveFilters && (\n <button\n onClick={handleClearFilters}\n className=\"text-sm text-primary-600 hover:text-primary-700 font-medium\"\n >\n Clear All\n </button>\n )}\n </div>\n\n {/* Categories */}\n <div className=\"space-y-4\">\n <h4 className=\"font-semibold text-gray-900\">Categories</h4>\n <div className=\"space-y-2\">\n {categories.map((category) => (\n <label\n key={category.id}\n className=\"flex items-center gap-3 cursor-pointer hover:bg-gray-50 p-2 rounded-lg transition-colors\"\n >\n <input\n type=\"checkbox\"\n checked={filters.category === category.slug}\n onChange={() => handleCategoryChange(category.slug)}\n className=\"w-5 h-5 text-primary-600 rounded\"\n />\n <span className=\"text-gray-700\">{category.name}</span>\n <span className=\"ml-auto text-sm text-gray-500\">\n ({category.productCount})\n </span>\n </label>\n ))}\n </div>\n </div>\n\n {/* Stock Status */}\n <div className=\"space-y-4 mt-8\">\n <h4 className=\"font-semibold text-gray-900\">Availability</h4>\n <label className=\"flex items-center gap-3 cursor-pointer hover:bg-gray-50 p-2 rounded-lg transition-colors\">\n <input\n type=\"checkbox\"\n checked={filters.inStock === true}\n onChange={(e) =>\n setFilters({ ...filters, inStock: e.target.checked ? true : undefined })\n }\n className=\"w-5 h-5 text-primary-600 rounded\"\n />\n <span className=\"text-gray-700\">In Stock Only</span>\n </label>\n </div>\n </div>\n </aside>\n\n {/* Products Grid */}\n <div className=\"flex-1\">\n {/* Mobile Filter Button */}\n <div className=\"lg:hidden mb-6\">\n <Button\n variant=\"outline\"\n onClick={() => setShowFilters(!showFilters)}\n className=\"w-full\"\n >\n <SlidersHorizontal className=\"w-5 h-5\" />\n Filters\n {hasActiveFilters && (\n <span className=\"ml-2 px-2 py-0.5 bg-primary-600 text-white text-xs rounded-full\">\n Active\n </span>\n )}\n </Button>\n </div>\n\n {/* Results Header */}\n <div className=\"flex items-center justify-between mb-6\">\n <p className=\"text-gray-600\">\n {isLoading ? (\n 'Loading...'\n ) : (\n <>\n Showing {products.length} of {pagination.total} products\n </>\n )}\n </p>\n </div>\n\n {/* Products Grid */}\n {isLoading ? (\n <div className=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6\">\n {Array.from({ length: 6 }).map((_, i) => (\n <ProductCardSkeleton key={i} />\n ))}\n </div>\n ) : products.length > 0 ? (\n <>\n <div className=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6\">\n {products.map((product) => (\n <ProductCard\n key={product.id}\n product={product}\n onClickProduct={(p) => router.push(`/products/${p.id}`)}\n />\n ))}\n </div>\n\n {/* Pagination */}\n {pagination.totalPages > 1 && (\n <div className=\"flex justify-center items-center gap-2 mt-12\">\n <Button\n variant=\"outline\"\n onClick={() => setPage(page - 1)}\n disabled={page === 1}\n >\n Previous\n </Button>\n <span className=\"px-4 text-gray-700\">\n Page {page} of {pagination.totalPages}\n </span>\n <Button\n variant=\"outline\"\n onClick={() => setPage(page + 1)}\n disabled={page === pagination.totalPages}\n >\n Next\n </Button>\n </div>\n )}\n </>\n ) : (\n <EmptyState\n icon={Package}\n title=\"No products found\"\n description=\"Try adjusting your filters or search query\"\n actionLabel={hasActiveFilters ? 'Clear Filters' : undefined}\n onAction={hasActiveFilters ? handleClearFilters : undefined}\n />\n )}\n </div>\n </div>\n </div>\n </div>\n );\n}\n\n","import React from 'react';\n\ninterface BadgeProps {\n children: React.ReactNode;\n variant?: 'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'gray';\n size?: 'sm' | 'md';\n className?: string;\n}\n\nexport function Badge({ children, variant = 'primary', size = 'md', className = '' }: BadgeProps) {\n const variants = {\n primary: 'bg-primary-100 text-primary-700 border-primary-200',\n secondary: 'bg-secondary-100 text-secondary-700 border-secondary-200',\n success: 'bg-green-100 text-green-700 border-green-200',\n warning: 'bg-yellow-100 text-yellow-700 border-yellow-200',\n danger: 'bg-red-100 text-red-700 border-red-200',\n gray: 'bg-gray-100 text-gray-700 border-gray-200',\n };\n \n const sizes = {\n sm: 'px-2 py-1 text-xs',\n md: 'px-3 py-1 text-sm',\n };\n\n return (\n <span className={`inline-flex items-center font-medium rounded-full border ${variants[variant]} ${sizes[size]} ${className}`}>\n {children}\n </span>\n );\n}\n\n","'use client';\n\nimport React, { useState } from 'react';\nimport { motion } from 'framer-motion';\nimport { ShoppingCart, Heart, Minus, Plus, Star, Check, Truck, Shield } from 'lucide-react';\nimport { Button } from '@/components/ui/Button';\nimport { Badge } from '@/components/ui/Badge';\nimport { ProductCard } from '@/components/ProductCard';\nimport { useProduct } from '@/hooks/useProducts';\nimport { useCart } from '@/providers/CartProvider';\nimport { formatPrice } from '@/lib/utils/format';\nimport { productsApi } from '@/lib/api/products';\nimport Image from 'next/image';\nimport { toast } from 'sonner';\n\ninterface ProductDetailScreenProps {\n productId: string;\n}\n\nexport function ProductDetailScreen({ productId }: ProductDetailScreenProps) {\n const { product, isLoading } = useProduct(productId);\n const { addToCart } = useCart();\n const [selectedImage, setSelectedImage] = useState(0);\n const [quantity, setQuantity] = useState(1);\n const [isAddingToCart, setIsAddingToCart] = useState(false);\n const [isFavorited, setIsFavorited] = useState(false);\n const [relatedProducts, setRelatedProducts] = useState<any[]>([]);\n\n React.useEffect(() => {\n if (product) {\n productsApi.getRelatedProducts(product.id).then((res) => {\n if (res.success) {\n setRelatedProducts(res.data);\n }\n });\n }\n }, [product]);\n\n const handleAddToCart = async () => {\n if (!product) return;\n setIsAddingToCart(true);\n try {\n await addToCart(product.id, quantity);\n } finally {\n setIsAddingToCart(false);\n }\n };\n\n if (isLoading) {\n return <div className=\"container mx-auto px-4 py-12\">Loading...</div>;\n }\n\n if (!product) {\n return <div className=\"container mx-auto px-4 py-12\">Product not found</div>;\n }\n\n const discount = product.compareAtPrice\n ? Math.round(((product.compareAtPrice - product.price) / product.compareAtPrice) * 100)\n : 0;\n\n return (\n <div className=\"min-h-screen bg-gray-50 py-12\">\n <div className=\"container mx-auto px-4\">\n {/* Breadcrumbs */}\n <div className=\"flex items-center gap-2 text-sm text-gray-600 mb-8\">\n <a href=\"/\" className=\"hover:text-primary-600\">Home</a>\n <span>/</span>\n <a href=\"/shop\" className=\"hover:text-primary-600\">Shop</a>\n <span>/</span>\n <span className=\"text-gray-900\">{product.name}</span>\n </div>\n\n {/* Product Content */}\n <div className=\"grid lg:grid-cols-2 gap-12 mb-16\">\n {/* Images */}\n <div>\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n className=\"bg-white rounded-2xl overflow-hidden shadow-sm mb-4\"\n >\n <div className=\"relative aspect-square\">\n <Image\n src={product.images[selectedImage] || '/placeholder-product.jpg'}\n alt={product.name}\n fill\n className=\"object-cover\"\n />\n {discount > 0 && (\n <Badge variant=\"danger\" className=\"absolute top-4 left-4\">\n -{discount}%\n </Badge>\n )}\n </div>\n </motion.div>\n\n {/* Thumbnail Images */}\n {product.images.length > 1 && (\n <div className=\"grid grid-cols-4 gap-4\">\n {product.images.map((image, index) => (\n <button\n key={index}\n onClick={() => setSelectedImage(index)}\n className={`relative aspect-square rounded-lg overflow-hidden border-2 transition-all ${\n selectedImage === index\n ? 'border-primary-600 ring-2 ring-primary-600/20'\n : 'border-gray-200 hover:border-gray-300'\n }`}\n >\n <Image src={image} alt=\"\" fill className=\"object-cover\" />\n </button>\n ))}\n </div>\n )}\n </div>\n\n {/* Product Info */}\n <div>\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: 0.1 }}\n >\n {/* Category */}\n <p className=\"text-sm text-gray-500 uppercase tracking-wider mb-2\">\n {product.category}\n </p>\n\n {/* Title */}\n <h1 className=\"text-4xl font-bold text-gray-900 mb-4\">{product.name}</h1>\n\n {/* Rating */}\n <div className=\"flex items-center gap-2 mb-6\">\n <div className=\"flex items-center\">\n {[...Array(5)].map((_, i) => (\n <Star\n key={i}\n className=\"w-5 h-5 fill-yellow-400 text-yellow-400\"\n />\n ))}\n </div>\n <span className=\"text-gray-600\">(4.8) • 127 reviews</span>\n </div>\n\n {/* Price */}\n <div className=\"flex items-baseline gap-3 mb-6\">\n <span className=\"text-4xl font-bold text-gray-900\">\n {formatPrice(product.price)}\n </span>\n {product.compareAtPrice && (\n <span className=\"text-xl text-gray-500 line-through\">\n {formatPrice(product.compareAtPrice)}\n </span>\n )}\n </div>\n\n {/* Stock Status */}\n <div className=\"mb-6\">\n {product.inStock ? (\n <div className=\"flex items-center gap-2 text-green-600\">\n <Check className=\"w-5 h-5\" />\n <span className=\"font-medium\">In Stock</span>\n {product.stock && <span className=\"text-gray-500\">({product.stock} available)</span>}\n </div>\n ) : (\n <div className=\"text-red-600 font-medium\">Out of Stock</div>\n )}\n </div>\n\n {/* Description */}\n <div className=\"mb-8\">\n <p className=\"text-gray-700 leading-relaxed\">{product.description}</p>\n </div>\n\n {/* Quantity Selector */}\n {product.inStock && (\n <div className=\"mb-6\">\n <label className=\"block text-sm font-medium text-gray-700 mb-2\">\n Quantity\n </label>\n <div className=\"flex items-center border-2 border-gray-200 rounded-lg w-fit\">\n <button\n onClick={() => setQuantity(Math.max(1, quantity - 1))}\n className=\"p-3 hover:bg-gray-100 transition-colors\"\n >\n <Minus className=\"w-5 h-5\" />\n </button>\n <span className=\"px-6 font-medium min-w-[4rem] text-center\">\n {quantity}\n </span>\n <button\n onClick={() => setQuantity(quantity + 1)}\n className=\"p-3 hover:bg-gray-100 transition-colors\"\n >\n <Plus className=\"w-5 h-5\" />\n </button>\n </div>\n </div>\n )}\n\n {/* Actions */}\n <div className=\"flex gap-4 mb-8\">\n <Button\n size=\"lg\"\n onClick={handleAddToCart}\n isLoading={isAddingToCart}\n disabled={!product.inStock}\n className=\"flex-1\"\n >\n <ShoppingCart className=\"w-5 h-5\" />\n Add to Cart\n </Button>\n <Button\n size=\"lg\"\n variant=\"outline\"\n onClick={() => setIsFavorited(!isFavorited)}\n className=\"px-6\"\n >\n <Heart\n className={`w-5 h-5 ${isFavorited ? 'fill-red-500 text-red-500' : ''}`}\n />\n </Button>\n </div>\n\n {/* Features */}\n <div className=\"space-y-4 border-t border-gray-200 pt-6\">\n <div className=\"flex items-center gap-3 text-gray-700\">\n <Truck className=\"w-5 h-5 text-primary-600\" />\n <span>Free shipping on orders over $50</span>\n </div>\n <div className=\"flex items-center gap-3 text-gray-700\">\n <Shield className=\"w-5 h-5 text-primary-600\" />\n <span>30-day money-back guarantee</span>\n </div>\n </div>\n </motion.div>\n </div>\n </div>\n\n {/* Related Products */}\n {relatedProducts.length > 0 && (\n <div>\n <h2 className=\"text-3xl font-bold text-gray-900 mb-8\">You May Also Like</h2>\n <div className=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6\">\n {relatedProducts.map((relatedProduct) => (\n <ProductCard key={relatedProduct.id} product={relatedProduct} />\n ))}\n </div>\n </div>\n )}\n </div>\n </div>\n );\n}\n\n","'use client';\n\nimport React, { useState } from 'react';\nimport { motion } from 'framer-motion';\nimport { Minus, Plus, Trash2 } from 'lucide-react';\nimport { CartItem as CartItemType } from '@/lib/types';\nimport { formatPrice } from '@/lib/utils/format';\nimport { useCart } from '@/providers/CartProvider';\nimport Image from 'next/image';\n\ninterface CartItemProps {\n item: CartItemType;\n}\n\nexport function CartItem({ item }: CartItemProps) {\n const { updateQuantity, removeFromCart } = useCart();\n const [isUpdating, setIsUpdating] = useState(false);\n\n const handleUpdateQuantity = async (newQuantity: number) => {\n if (newQuantity < 1) return;\n setIsUpdating(true);\n try {\n await updateQuantity(item.productId, newQuantity);\n } finally {\n setIsUpdating(false);\n }\n };\n\n const handleRemove = async () => {\n await removeFromCart(item.productId);\n };\n\n const itemTotal = item.product.price * item.quantity;\n\n return (\n <motion.div\n layout\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, x: -100 }}\n className=\"flex gap-4 bg-white p-4 rounded-xl border border-gray-200 hover:border-primary-300 transition-colors\"\n >\n {/* Product Image */}\n <div className=\"relative w-24 h-24 rounded-lg overflow-hidden flex-shrink-0 bg-gray-100\">\n <Image\n src={item.product.images[0] || '/placeholder-product.jpg'}\n alt={item.product.name}\n fill\n className=\"object-cover\"\n />\n </div>\n\n {/* Product Info */}\n <div className=\"flex-1 min-w-0\">\n <h3 className=\"text-lg font-semibold text-gray-900 truncate\">\n {item.product.name}\n </h3>\n <p className=\"text-sm text-gray-500 mt-1\">\n {formatPrice(item.product.price)} each\n </p>\n\n {/* Quantity Controls */}\n <div className=\"flex items-center gap-3 mt-3\">\n <div className=\"flex items-center border-2 border-gray-200 rounded-lg\">\n <button\n onClick={() => handleUpdateQuantity(item.quantity - 1)}\n disabled={isUpdating || item.quantity <= 1}\n className=\"p-2 hover:bg-gray-100 disabled:opacity-50 disabled:cursor-not-allowed transition-colors\"\n >\n <Minus className=\"w-4 h-4\" />\n </button>\n <span className=\"px-4 font-medium min-w-[3rem] text-center\">\n {item.quantity}\n </span>\n <button\n onClick={() => handleUpdateQuantity(item.quantity + 1)}\n disabled={isUpdating}\n className=\"p-2 hover:bg-gray-100 disabled:opacity-50 disabled:cursor-not-allowed transition-colors\"\n >\n <Plus className=\"w-4 h-4\" />\n </button>\n </div>\n\n <button\n onClick={handleRemove}\n className=\"p-2 text-red-600 hover:bg-red-50 rounded-lg transition-colors\"\n aria-label=\"Remove item\"\n >\n <Trash2 className=\"w-5 h-5\" />\n </button>\n </div>\n </div>\n\n {/* Item Total */}\n <div className=\"text-right\">\n <p className=\"text-xl font-bold text-gray-900\">\n {formatPrice(itemTotal)}\n </p>\n </div>\n </motion.div>\n );\n}\n\n","'use client';\n\nimport React from 'react';\nimport { motion } from 'framer-motion';\nimport { ShoppingBag, ArrowRight } from 'lucide-react';\nimport { CartItem } from '@/components/CartItem';\nimport { EmptyState } from '@/components/EmptyState';\nimport { Button } from '@/components/ui/Button';\nimport { useCart } from '@/providers/CartProvider';\nimport { formatPrice } from '@/lib/utils/format';\nimport { useRouter } from 'next/navigation';\n\nexport function CartScreen() {\n const router = useRouter();\n const { cart, isLoading } = useCart();\n\n if (isLoading) {\n return (\n <div className=\"min-h-screen bg-gray-50 py-12\">\n <div className=\"container mx-auto px-4\">\n <p>Loading cart...</p>\n </div>\n </div>\n );\n }\n\n if (!cart || cart.items.length === 0) {\n return (\n <div className=\"min-h-screen bg-gray-50 py-12\">\n <div className=\"container mx-auto px-4\">\n <EmptyState\n icon={ShoppingBag}\n title=\"Your cart is empty\"\n description=\"Add some products to your cart and they will appear here\"\n actionLabel=\"Continue Shopping\"\n onAction={() => router.push('/shop')}\n />\n </div>\n </div>\n );\n }\n\n const subtotal = cart.total;\n const shipping = subtotal > 50 ? 0 : 10;\n const tax = subtotal * 0.1; // 10% tax\n const total = subtotal + shipping + tax;\n\n return (\n <div className=\"min-h-screen bg-gray-50 py-12\">\n <div className=\"container mx-auto px-4\">\n {/* Header */}\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n className=\"mb-8\"\n >\n <h1 className=\"text-4xl font-bold text-gray-900 mb-2\">Shopping Cart</h1>\n <p className=\"text-gray-600\">{cart.itemCount} items in your cart</p>\n </motion.div>\n\n <div className=\"grid lg:grid-cols-3 gap-8\">\n {/* Cart Items */}\n <div className=\"lg:col-span-2\">\n <div className=\"space-y-4\">\n {cart.items.map((item) => (\n <CartItem key={item.productId} item={item} />\n ))}\n </div>\n </div>\n\n {/* Order Summary */}\n <div className=\"lg:col-span-1\">\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: 0.1 }}\n className=\"bg-white rounded-2xl p-6 shadow-sm sticky top-24\"\n >\n <h2 className=\"text-2xl font-bold text-gray-900 mb-6\">Order Summary</h2>\n\n <div className=\"space-y-4 mb-6\">\n <div className=\"flex justify-between text-gray-700\">\n <span>Subtotal</span>\n <span className=\"font-medium\">{formatPrice(subtotal)}</span>\n </div>\n <div className=\"flex justify-between text-gray-700\">\n <span>Shipping</span>\n <span className=\"font-medium\">\n {shipping === 0 ? (\n <span className=\"text-green-600\">FREE</span>\n ) : (\n formatPrice(shipping)\n )}\n </span>\n </div>\n <div className=\"flex justify-between text-gray-700\">\n <span>Tax (10%)</span>\n <span className=\"font-medium\">{formatPrice(tax)}</span>\n </div>\n <div className=\"border-t border-gray-200 pt-4\">\n <div className=\"flex justify-between\">\n <span className=\"text-xl font-bold text-gray-900\">Total</span>\n <span className=\"text-2xl font-bold text-gray-900\">\n {formatPrice(total)}\n </span>\n </div>\n </div>\n </div>\n\n {shipping > 0 && (\n <div className=\"bg-blue-50 border border-blue-200 rounded-lg p-4 mb-6\">\n <p className=\"text-sm text-blue-800\">\n Add {formatPrice(50 - subtotal)} more to get FREE shipping!\n </p>\n </div>\n )}\n\n <Button\n size=\"lg\"\n onClick={() => router.push('/checkout')}\n className=\"w-full\"\n >\n Proceed to Checkout\n <ArrowRight className=\"w-5 h-5\" />\n </Button>\n\n <button\n onClick={() => router.push('/shop')}\n className=\"w-full mt-4 text-primary-600 hover:text-primary-700 font-medium transition-colors\"\n >\n Continue Shopping\n </button>\n </motion.div>\n </div>\n </div>\n </div>\n </div>\n );\n}\n\n","import { ordersAdapter, CreateOrderData as AdapterCreateOrderData } from '@/lib/api-adapter';\nimport { Order, ApiResponse, PaginatedResponse, Address } from '@/lib/types';\n\nexport interface CreateOrderData {\n shippingAddress: Address;\n billingAddress: Address;\n sameAsShipping?: boolean;\n}\n\nexport const ordersApi = {\n /**\n * Get user's orders with pagination\n */\n async getOrders(page: number = 1, limit: number = 10): Promise<PaginatedResponse<Order>> {\n return await ordersAdapter.getOrders(page, limit);\n },\n\n /**\n * Get current/active orders\n */\n async getCurrentOrders(): Promise<ApiResponse<Order[]>> {\n return await ordersAdapter.getCurrentOrders();\n },\n\n /**\n * Get a single order by ID\n */\n async getOrder(id: string): Promise<ApiResponse<Order>> {\n return await ordersAdapter.getOrder(id);\n },\n\n /**\n * Create a new order\n */\n async createOrder(data: CreateOrderData): Promise<ApiResponse<Order>> {\n return await ordersAdapter.createOrder(data);\n },\n\n /**\n * Cancel an order\n */\n async cancelOrder(id: string): Promise<ApiResponse<Order>> {\n return await ordersAdapter.cancelOrder(id);\n },\n\n /**\n * Get order tracking information\n */\n async getOrderTracking(id: string): Promise<ApiResponse<any>> {\n return await ordersAdapter.getOrderTracking(id);\n },\n};\n\n","'use client';\n\nimport React, { useState } from 'react';\nimport { motion } from 'framer-motion';\nimport { useForm } from 'react-hook-form';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { z } from 'zod';\nimport { Lock, CreditCard } from 'lucide-react';\nimport { Button } from '@/components/ui/Button';\nimport { Input } from '@/components/ui/Input';\nimport { useCart } from '@/providers/CartProvider';\nimport { useAuth } from '@/providers/AuthProvider';\nimport { ordersApi, CreateOrderData } from '@/lib/api/orders';\nimport { formatPrice } from '@/lib/utils/format';\nimport { useRouter } from 'next/navigation';\nimport { toast } from 'sonner';\n\nconst addressSchema = z.object({\n fullName: z.string().min(2, 'Full name is required'),\n addressLine1: z.string().min(5, 'Address is required'),\n addressLine2: z.string().optional(),\n city: z.string().min(2, 'City is required'),\n state: z.string().min(2, 'State is required'),\n zipCode: z.string().min(5, 'ZIP code is required'),\n country: z.string().min(2, 'Country is required'),\n phone: z.string().min(10, 'Phone number is required'),\n});\n\nconst checkoutSchema = z.object({\n shipping: addressSchema,\n billing: addressSchema,\n sameAsShipping: z.boolean(),\n});\n\ntype CheckoutFormData = z.infer<typeof checkoutSchema>;\n\nexport function CheckoutScreen() {\n const router = useRouter();\n const { cart } = useCart();\n const { isAuthenticated, user } = useAuth();\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [sameAsShipping, setSameAsShipping] = useState(true);\n\n const {\n register,\n handleSubmit,\n formState: { errors },\n } = useForm<CheckoutFormData>({\n resolver: zodResolver(checkoutSchema),\n defaultValues: {\n sameAsShipping: true,\n shipping: {\n fullName: user ? `${user.firstName} ${user.lastName}` : '',\n phone: user?.phone || '',\n country: 'United States',\n },\n billing: {\n fullName: user ? `${user.firstName} ${user.lastName}` : '',\n phone: user?.phone || '',\n country: 'United States',\n },\n },\n });\n\n const onSubmit = async (data: CheckoutFormData) => {\n if (!isAuthenticated) {\n toast.error('Please login to continue');\n router.push('/login?redirect=/checkout');\n return;\n }\n\n setIsSubmitting(true);\n try {\n const orderData: CreateOrderData = {\n shippingAddress: data.shipping,\n billingAddress: sameAsShipping ? data.shipping : data.billing,\n sameAsShipping,\n };\n\n const response = await ordersApi.createOrder(orderData);\n \n if (response.success && response.data.stripeCheckoutUrl) {\n // Redirect to Stripe checkout\n window.location.href = response.data.stripeCheckoutUrl;\n } else {\n toast.success('Order placed successfully!');\n router.push(`/orders/${response.data.id}`);\n }\n } catch (error: any) {\n toast.error(error.response?.data?.message || 'Failed to place order');\n } finally {\n setIsSubmitting(false);\n }\n };\n\n if (!cart || cart.items.length === 0) {\n router.push('/cart');\n return null;\n }\n\n const subtotal = cart.total;\n const shipping = subtotal > 50 ? 0 : 10;\n const tax = subtotal * 0.1;\n const total = subtotal + shipping + tax;\n\n return (\n <div className=\"min-h-screen bg-gray-50 py-12\">\n <div className=\"container mx-auto px-4 max-w-6xl\">\n {/* Header */}\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n className=\"mb-8\"\n >\n <h1 className=\"text-4xl font-bold text-gray-900 mb-2\">Checkout</h1>\n <p className=\"text-gray-600\">Complete your order</p>\n </motion.div>\n\n <form onSubmit={handleSubmit(onSubmit)}>\n <div className=\"grid lg:grid-cols-3 gap-8\">\n {/* Forms */}\n <div className=\"lg:col-span-2 space-y-6\">\n {/* Shipping Address */}\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: 0.1 }}\n className=\"bg-white rounded-2xl p-6 shadow-sm\"\n >\n <h2 className=\"text-2xl font-bold text-gray-900 mb-6\">\n Shipping Address\n </h2>\n <div className=\"grid grid-cols-2 gap-4\">\n <div className=\"col-span-2\">\n <Input\n label=\"Full Name\"\n {...register('shipping.fullName')}\n error={errors.shipping?.fullName?.message}\n />\n </div>\n <div className=\"col-span-2\">\n <Input\n label=\"Address Line 1\"\n {...register('shipping.addressLine1')}\n error={errors.shipping?.addressLine1?.message}\n />\n </div>\n <div className=\"col-span-2\">\n <Input\n label=\"Address Line 2 (Optional)\"\n {...register('shipping.addressLine2')}\n />\n </div>\n <Input\n label=\"City\"\n {...register('shipping.city')}\n error={errors.shipping?.city?.message}\n />\n <Input\n label=\"State\"\n {...register('shipping.state')}\n error={errors.shipping?.state?.message}\n />\n <Input\n label=\"ZIP Code\"\n {...register('shipping.zipCode')}\n error={errors.shipping?.zipCode?.message}\n />\n <Input\n label=\"Country\"\n {...register('shipping.country')}\n error={errors.shipping?.country?.message}\n />\n <div className=\"col-span-2\">\n <Input\n label=\"Phone Number\"\n {...register('shipping.phone')}\n error={errors.shipping?.phone?.message}\n />\n </div>\n </div>\n </motion.div>\n\n {/* Billing Address */}\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: 0.2 }}\n className=\"bg-white rounded-2xl p-6 shadow-sm\"\n >\n <h2 className=\"text-2xl font-bold text-gray-900 mb-6\">\n Billing Address\n </h2>\n \n <label className=\"flex items-center gap-3 mb-6 cursor-pointer\">\n <input\n type=\"checkbox\"\n checked={sameAsShipping}\n onChange={(e) => setSameAsShipping(e.target.checked)}\n className=\"w-5 h-5 text-primary-600 rounded\"\n />\n <span className=\"text-gray-700\">Same as shipping address</span>\n </label>\n\n {!sameAsShipping && (\n <div className=\"grid grid-cols-2 gap-4\">\n <div className=\"col-span-2\">\n <Input\n label=\"Full Name\"\n {...register('billing.fullName')}\n error={errors.billing?.fullName?.message}\n />\n </div>\n <div className=\"col-span-2\">\n <Input\n label=\"Address Line 1\"\n {...register('billing.addressLine1')}\n error={errors.billing?.addressLine1?.message}\n />\n </div>\n <div className=\"col-span-2\">\n <Input\n label=\"Address Line 2 (Optional)\"\n {...register('billing.addressLine2')}\n />\n </div>\n <Input\n label=\"City\"\n {...register('billing.city')}\n error={errors.billing?.city?.message}\n />\n <Input\n label=\"State\"\n {...register('billing.state')}\n error={errors.billing?.state?.message}\n />\n <Input\n label=\"ZIP Code\"\n {...register('billing.zipCode')}\n error={errors.billing?.zipCode?.message}\n />\n <Input\n label=\"Country\"\n {...register('billing.country')}\n error={errors.billing?.country?.message}\n />\n <div className=\"col-span-2\">\n <Input\n label=\"Phone Number\"\n {...register('billing.phone')}\n error={errors.billing?.phone?.message}\n />\n </div>\n </div>\n )}\n </motion.div>\n </div>\n\n {/* Order Summary */}\n <div className=\"lg:col-span-1\">\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: 0.3 }}\n className=\"bg-white rounded-2xl p-6 shadow-sm sticky top-24\"\n >\n <h2 className=\"text-2xl font-bold text-gray-900 mb-6\">\n Order Summary\n </h2>\n\n {/* Items */}\n <div className=\"space-y-4 mb-6 max-h-64 overflow-y-auto\">\n {cart.items.map((item) => (\n <div key={item.productId} className=\"flex gap-3\">\n <div className=\"w-16 h-16 rounded-lg bg-gray-100 flex-shrink-0\" />\n <div className=\"flex-1 min-w-0\">\n <p className=\"font-medium text-gray-900 text-sm truncate\">\n {item.product.name}\n </p>\n <p className=\"text-sm text-gray-500\">Qty: {item.quantity}</p>\n </div>\n <p className=\"font-medium text-gray-900 text-sm\">\n {formatPrice(item.product.price * item.quantity)}\n </p>\n </div>\n ))}\n </div>\n\n <div className=\"space-y-3 border-t border-gray-200 pt-4 mb-6\">\n <div className=\"flex justify-between text-gray-700\">\n <span>Subtotal</span>\n <span className=\"font-medium\">{formatPrice(subtotal)}</span>\n </div>\n <div className=\"flex justify-between text-gray-700\">\n <span>Shipping</span>\n <span className=\"font-medium\">\n {shipping === 0 ? (\n <span className=\"text-green-600\">FREE</span>\n ) : (\n formatPrice(shipping)\n )}\n </span>\n </div>\n <div className=\"flex justify-between text-gray-700\">\n <span>Tax</span>\n <span className=\"font-medium\">{formatPrice(tax)}</span>\n </div>\n <div className=\"border-t border-gray-200 pt-3\">\n <div className=\"flex justify-between\">\n <span className=\"text-xl font-bold text-gray-900\">Total</span>\n <span className=\"text-2xl font-bold text-gray-900\">\n {formatPrice(total)}\n </span>\n </div>\n </div>\n </div>\n\n <Button\n type=\"submit\"\n size=\"lg\"\n isLoading={isSubmitting}\n className=\"w-full\"\n >\n <CreditCard className=\"w-5 h-5\" />\n Place Order\n </Button>\n\n <div className=\"flex items-center justify-center gap-2 text-sm text-gray-500 mt-4\">\n <Lock className=\"w-4 h-4\" />\n <span>Secure checkout powered by Stripe</span>\n </div>\n </motion.div>\n </div>\n </div>\n </form>\n </div>\n </div>\n );\n}\n\n","'use client';\n\nimport React, { useState } from 'react';\nimport { motion } from 'framer-motion';\nimport { useForm } from 'react-hook-form';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { z } from 'zod';\nimport { Lock, Mail, Eye, EyeOff } from 'lucide-react';\nimport { Button } from '@/components/ui/Button';\nimport { Input } from '@/components/ui/Input';\nimport { useAuth } from '@/providers/AuthProvider';\nimport { useRouter, useSearchParams } from 'next/navigation';\nimport { toast } from 'sonner';\nimport Link from 'next/link';\n\nconst loginSchema = z.object({\n email: z.string().email('Invalid email address'),\n password: z.string().min(6, 'Password must be at least 6 characters'),\n});\n\ntype LoginFormData = z.infer<typeof loginSchema>;\n\nexport function LoginScreen() {\n const router = useRouter();\n const searchParams = useSearchParams();\n const redirectUrl = searchParams?.get('redirect') || '/';\n const { login } = useAuth();\n const [showPassword, setShowPassword] = useState(false);\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const {\n register,\n handleSubmit,\n formState: { errors },\n } = useForm<LoginFormData>({\n resolver: zodResolver(loginSchema),\n });\n\n const onSubmit = async (data: LoginFormData) => {\n setIsSubmitting(true);\n try {\n await login(data);\n toast.success('Welcome back!');\n router.push(redirectUrl);\n } catch (error: any) {\n toast.error(error.response?.data?.message || 'Invalid credentials');\n } finally {\n setIsSubmitting(false);\n }\n };\n\n return (\n <div className=\"min-h-screen bg-gradient-to-br from-primary-600 via-primary-700 to-secondary-600 flex items-center justify-center p-4\">\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n className=\"w-full max-w-md\"\n >\n <div className=\"bg-white rounded-3xl shadow-2xl p-8\">\n {/* Header */}\n <div className=\"text-center mb-8\">\n <div className=\"w-16 h-16 bg-primary-100 rounded-full flex items-center justify-center mx-auto mb-4\">\n <Lock className=\"w-8 h-8 text-primary-600\" />\n </div>\n <h1 className=\"text-3xl font-bold text-gray-900 mb-2\">Welcome Back</h1>\n <p className=\"text-gray-600\">Sign in to your account to continue</p>\n </div>\n\n {/* Form */}\n <form onSubmit={handleSubmit(onSubmit)} className=\"space-y-6\">\n <div>\n <Input\n type=\"email\"\n label=\"Email Address\"\n placeholder=\"you@example.com\"\n {...register('email')}\n error={errors.email?.message}\n />\n </div>\n\n <div className=\"relative\">\n <Input\n type={showPassword ? 'text' : 'password'}\n label=\"Password\"\n placeholder=\"••••••••\"\n {...register('password')}\n error={errors.password?.message}\n />\n <button\n type=\"button\"\n onClick={() => setShowPassword(!showPassword)}\n className=\"absolute right-3 top-[42px] text-gray-500 hover:text-gray-700\"\n >\n {showPassword ? (\n <EyeOff className=\"w-5 h-5\" />\n ) : (\n <Eye className=\"w-5 h-5\" />\n )}\n </button>\n </div>\n\n <div className=\"flex items-center justify-between\">\n <label className=\"flex items-center gap-2 cursor-pointer\">\n <input\n type=\"checkbox\"\n className=\"w-4 h-4 text-primary-600 rounded\"\n />\n <span className=\"text-sm text-gray-700\">Remember me</span>\n </label>\n <Link\n href=\"/forgot-password\"\n className=\"text-sm text-primary-600 hover:text-primary-700 font-medium\"\n >\n Forgot password?\n </Link>\n </div>\n\n <Button\n type=\"submit\"\n size=\"lg\"\n isLoading={isSubmitting}\n className=\"w-full\"\n >\n Sign In\n </Button>\n </form>\n\n {/* Divider */}\n <div className=\"relative my-8\">\n <div className=\"absolute inset-0 flex items-center\">\n <div className=\"w-full border-t border-gray-200\"></div>\n </div>\n <div className=\"relative flex justify-center text-sm\">\n <span className=\"px-4 bg-white text-gray-500\">New to our store?</span>\n </div>\n </div>\n\n {/* Register Link */}\n <Link href=\"/register\">\n <Button variant=\"outline\" size=\"lg\" className=\"w-full\">\n Create an Account\n </Button>\n </Link>\n </div>\n </motion.div>\n </div>\n );\n}\n\n","'use client';\n\nimport React, { useState } from 'react';\nimport { motion } from 'framer-motion';\nimport { useForm } from 'react-hook-form';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { z } from 'zod';\nimport { UserPlus, Eye, EyeOff } from 'lucide-react';\nimport { Button } from '@/components/ui/Button';\nimport { Input } from '@/components/ui/Input';\nimport { useAuth } from '@/providers/AuthProvider';\nimport { useRouter } from 'next/navigation';\nimport { toast } from 'sonner';\nimport Link from 'next/link';\n\nconst registerSchema = z.object({\n firstName: z.string().min(2, 'First name is required'),\n lastName: z.string().min(2, 'Last name is required'),\n email: z.string().email('Invalid email address'),\n phone: z.string().optional(),\n password: z.string().min(6, 'Password must be at least 6 characters'),\n confirmPassword: z.string(),\n}).refine((data) => data.password === data.confirmPassword, {\n message: \"Passwords don't match\",\n path: ['confirmPassword'],\n});\n\ntype RegisterFormData = z.infer<typeof registerSchema>;\n\nexport function RegisterScreen() {\n const router = useRouter();\n const { register: registerUser } = useAuth();\n const [showPassword, setShowPassword] = useState(false);\n const [showConfirmPassword, setShowConfirmPassword] = useState(false);\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const {\n register,\n handleSubmit,\n formState: { errors },\n } = useForm<RegisterFormData>({\n resolver: zodResolver(registerSchema),\n });\n\n const onSubmit = async (data: RegisterFormData) => {\n setIsSubmitting(true);\n try {\n const { confirmPassword, ...registerData } = data;\n await registerUser(registerData);\n toast.success('Account created successfully!');\n router.push('/');\n } catch (error: any) {\n toast.error(error.response?.data?.message || 'Failed to create account');\n } finally {\n setIsSubmitting(false);\n }\n };\n\n return (\n <div className=\"min-h-screen bg-gradient-to-br from-primary-600 via-primary-700 to-secondary-600 flex items-center justify-center p-4\">\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n className=\"w-full max-w-md\"\n >\n <div className=\"bg-white rounded-3xl shadow-2xl p-8\">\n {/* Header */}\n <div className=\"text-center mb-8\">\n <div className=\"w-16 h-16 bg-primary-100 rounded-full flex items-center justify-center mx-auto mb-4\">\n <UserPlus className=\"w-8 h-8 text-primary-600\" />\n </div>\n <h1 className=\"text-3xl font-bold text-gray-900 mb-2\">Create Account</h1>\n <p className=\"text-gray-600\">Join us and start shopping</p>\n </div>\n\n {/* Form */}\n <form onSubmit={handleSubmit(onSubmit)} className=\"space-y-5\">\n <div className=\"grid grid-cols-2 gap-4\">\n <Input\n label=\"First Name\"\n placeholder=\"John\"\n {...register('firstName')}\n error={errors.firstName?.message}\n />\n <Input\n label=\"Last Name\"\n placeholder=\"Doe\"\n {...register('lastName')}\n error={errors.lastName?.message}\n />\n </div>\n\n <Input\n type=\"email\"\n label=\"Email Address\"\n placeholder=\"you@example.com\"\n {...register('email')}\n error={errors.email?.message}\n />\n\n <Input\n type=\"tel\"\n label=\"Phone Number (Optional)\"\n placeholder=\"+1 (555) 000-0000\"\n {...register('phone')}\n error={errors.phone?.message}\n />\n\n <div className=\"relative\">\n <Input\n type={showPassword ? 'text' : 'password'}\n label=\"Password\"\n placeholder=\"••••••••\"\n {...register('password')}\n error={errors.password?.message}\n />\n <button\n type=\"button\"\n onClick={() => setShowPassword(!showPassword)}\n className=\"absolute right-3 top-[42px] text-gray-500 hover:text-gray-700\"\n >\n {showPassword ? (\n <EyeOff className=\"w-5 h-5\" />\n ) : (\n <Eye className=\"w-5 h-5\" />\n )}\n </button>\n </div>\n\n <div className=\"relative\">\n <Input\n type={showConfirmPassword ? 'text' : 'password'}\n label=\"Confirm Password\"\n placeholder=\"••••••••\"\n {...register('confirmPassword')}\n error={errors.confirmPassword?.message}\n />\n <button\n type=\"button\"\n onClick={() => setShowConfirmPassword(!showConfirmPassword)}\n className=\"absolute right-3 top-[42px] text-gray-500 hover:text-gray-700\"\n >\n {showConfirmPassword ? (\n <EyeOff className=\"w-5 h-5\" />\n ) : (\n <Eye className=\"w-5 h-5\" />\n )}\n </button>\n </div>\n\n <div className=\"flex items-start gap-2\">\n <input\n type=\"checkbox\"\n required\n className=\"w-4 h-4 text-primary-600 rounded mt-1\"\n />\n <label className=\"text-sm text-gray-700\">\n I agree to the{' '}\n <Link href=\"/terms\" className=\"text-primary-600 hover:text-primary-700\">\n Terms of Service\n </Link>{' '}\n and{' '}\n <Link href=\"/privacy\" className=\"text-primary-600 hover:text-primary-700\">\n Privacy Policy\n </Link>\n </label>\n </div>\n\n <Button\n type=\"submit\"\n size=\"lg\"\n isLoading={isSubmitting}\n className=\"w-full\"\n >\n Create Account\n </Button>\n </form>\n\n {/* Divider */}\n <div className=\"relative my-8\">\n <div className=\"absolute inset-0 flex items-center\">\n <div className=\"w-full border-t border-gray-200\"></div>\n </div>\n <div className=\"relative flex justify-center text-sm\">\n <span className=\"px-4 bg-white text-gray-500\">Already have an account?</span>\n </div>\n </div>\n\n {/* Login Link */}\n <Link href=\"/login\">\n <Button variant=\"outline\" size=\"lg\" className=\"w-full\">\n Sign In\n </Button>\n </Link>\n </div>\n </motion.div>\n </div>\n );\n}\n\n","'use client';\n\nimport React, { useState } from 'react';\nimport { motion } from 'framer-motion';\nimport { useForm } from 'react-hook-form';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { z } from 'zod';\nimport { User, Mail, Phone, LogOut, Package, Heart } from 'lucide-react';\nimport { Button } from '@/components/ui/Button';\nimport { Input } from '@/components/ui/Input';\nimport { useAuth } from '@/providers/AuthProvider';\nimport { useRouter } from 'next/navigation';\nimport { toast } from 'sonner';\nimport { getInitials } from '@/lib/utils/format';\nimport Link from 'next/link';\n\nconst profileSchema = z.object({\n firstName: z.string().min(2, 'First name is required'),\n lastName: z.string().min(2, 'Last name is required'),\n email: z.string().email('Invalid email address'),\n phone: z.string().optional(),\n});\n\ntype ProfileFormData = z.infer<typeof profileSchema>;\n\nexport function ProfileScreen() {\n const router = useRouter();\n const { user, updateUser, logout } = useAuth();\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const {\n register,\n handleSubmit,\n formState: { errors },\n } = useForm<ProfileFormData>({\n resolver: zodResolver(profileSchema),\n defaultValues: {\n firstName: user?.firstName || '',\n lastName: user?.lastName || '',\n email: user?.email || '',\n phone: user?.phone || '',\n },\n });\n\n const onSubmit = async (data: ProfileFormData) => {\n setIsSubmitting(true);\n try {\n await updateUser(data);\n toast.success('Profile updated successfully!');\n } catch (error: any) {\n toast.error(error.response?.data?.message || 'Failed to update profile');\n } finally {\n setIsSubmitting(false);\n }\n };\n\n const handleLogout = async () => {\n await logout();\n toast.success('Logged out successfully');\n router.push('/');\n };\n\n if (!user) {\n router.push('/login');\n return null;\n }\n\n const menuItems = [\n {\n icon: Package,\n label: 'My Orders',\n href: '/orders',\n description: 'View and track your orders',\n },\n {\n icon: Heart,\n label: 'Wishlist',\n href: '/wishlist',\n description: 'Your saved products',\n },\n ];\n\n return (\n <div className=\"min-h-screen bg-gray-50 py-12\">\n <div className=\"container mx-auto px-4 max-w-4xl\">\n {/* Header */}\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n className=\"mb-8\"\n >\n <h1 className=\"text-4xl font-bold text-gray-900 mb-2\">My Account</h1>\n <p className=\"text-gray-600\">Manage your profile and preferences</p>\n </motion.div>\n\n <div className=\"grid md:grid-cols-3 gap-8\">\n {/* Sidebar */}\n <div className=\"md:col-span-1\">\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: 0.1 }}\n className=\"bg-white rounded-2xl p-6 shadow-sm\"\n >\n {/* Avatar */}\n <div className=\"flex flex-col items-center mb-6\">\n <div className=\"w-24 h-24 bg-gradient-to-br from-primary-500 to-secondary-500 rounded-full flex items-center justify-center text-white text-3xl font-bold mb-4\">\n {getInitials(user.firstName, user.lastName)}\n </div>\n <h3 className=\"text-xl font-bold text-gray-900\">\n {user.firstName} {user.lastName}\n </h3>\n <p className=\"text-gray-600\">{user.email}</p>\n </div>\n\n {/* Menu Items */}\n <nav className=\"space-y-2\">\n {menuItems.map((item) => (\n <Link\n key={item.href}\n href={item.href}\n className=\"flex items-start gap-3 p-3 rounded-lg hover:bg-gray-50 transition-colors group\"\n >\n <item.icon className=\"w-5 h-5 text-gray-500 group-hover:text-primary-600 mt-0.5\" />\n <div>\n <p className=\"font-medium text-gray-900 group-hover:text-primary-600\">\n {item.label}\n </p>\n <p className=\"text-sm text-gray-500\">{item.description}</p>\n </div>\n </Link>\n ))}\n </nav>\n\n {/* Logout Button */}\n <button\n onClick={handleLogout}\n className=\"w-full mt-6 flex items-center justify-center gap-2 p-3 text-red-600 hover:bg-red-50 rounded-lg transition-colors font-medium\"\n >\n <LogOut className=\"w-5 h-5\" />\n Logout\n </button>\n </motion.div>\n </div>\n\n {/* Main Content */}\n <div className=\"md:col-span-2\">\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: 0.2 }}\n className=\"bg-white rounded-2xl p-8 shadow-sm\"\n >\n <h2 className=\"text-2xl font-bold text-gray-900 mb-6\">\n Personal Information\n </h2>\n\n <form onSubmit={handleSubmit(onSubmit)} className=\"space-y-6\">\n <div className=\"grid grid-cols-2 gap-4\">\n <Input\n label=\"First Name\"\n {...register('firstName')}\n error={errors.firstName?.message}\n />\n <Input\n label=\"Last Name\"\n {...register('lastName')}\n error={errors.lastName?.message}\n />\n </div>\n\n <Input\n type=\"email\"\n label=\"Email Address\"\n {...register('email')}\n error={errors.email?.message}\n />\n\n <Input\n type=\"tel\"\n label=\"Phone Number\"\n {...register('phone')}\n error={errors.phone?.message}\n />\n\n <div className=\"flex gap-4\">\n <Button\n type=\"submit\"\n size=\"lg\"\n isLoading={isSubmitting}\n >\n Save Changes\n </Button>\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"lg\"\n onClick={() => router.push('/account/change-password')}\n >\n Change Password\n </Button>\n </div>\n </form>\n </motion.div>\n </div>\n </div>\n </div>\n </div>\n );\n}\n\n","'use client';\n\nimport React from 'react';\nimport { motion } from 'framer-motion';\nimport { Package, Calendar, CreditCard, ExternalLink } from 'lucide-react';\nimport { Order, OrderStatus } from '@/lib/types';\nimport { formatPrice, formatDate } from '@/lib/utils/format';\nimport { Badge } from './ui/Badge';\nimport Link from 'next/link';\n\ninterface OrderCardProps {\n order: Order;\n}\n\nconst statusConfig: Record<OrderStatus, { variant: 'success' | 'warning' | 'primary' | 'danger' | 'gray', label: string }> = {\n [OrderStatus.PENDING]: { variant: 'warning', label: 'Pending' },\n [OrderStatus.PROCESSING]: { variant: 'primary', label: 'Processing' },\n [OrderStatus.SHIPPED]: { variant: 'primary', label: 'Shipped' },\n [OrderStatus.DELIVERED]: { variant: 'success', label: 'Delivered' },\n [OrderStatus.CANCELLED]: { variant: 'danger', label: 'Cancelled' },\n};\n\nexport function OrderCard({ order }: OrderCardProps) {\n const config = statusConfig[order.status];\n\n return (\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n whileHover={{ y: -4 }}\n className=\"bg-white rounded-2xl p-6 shadow-sm hover:shadow-xl transition-all duration-300 border border-gray-100\"\n >\n {/* Header */}\n <div className=\"flex justify-between items-start mb-4\">\n <div>\n <h3 className=\"text-lg font-bold text-gray-900 flex items-center gap-2\">\n <Package className=\"w-5 h-5 text-primary-600\" />\n Order #{order.orderNumber}\n </h3>\n <p className=\"text-sm text-gray-500 mt-1 flex items-center gap-2\">\n <Calendar className=\"w-4 h-4\" />\n {formatDate(order.createdAt, 'long')}\n </p>\n </div>\n <Badge variant={config.variant}>{config.label}</Badge>\n </div>\n\n {/* Items Preview */}\n <div className=\"space-y-2 mb-4\">\n {order.items.slice(0, 2).map((item) => (\n <div key={item.id} className=\"flex items-center gap-3 text-sm\">\n <div className=\"w-12 h-12 rounded-lg bg-gray-100 flex-shrink-0\" />\n <div className=\"flex-1 min-w-0\">\n <p className=\"font-medium text-gray-900 truncate\">{item.productName}</p>\n <p className=\"text-gray-500\">Qty: {item.quantity}</p>\n </div>\n <p className=\"font-semibold text-gray-900\">{formatPrice(item.price)}</p>\n </div>\n ))}\n {order.items.length > 2 && (\n <p className=\"text-sm text-gray-500 pl-15\">\n +{order.items.length - 2} more item{order.items.length - 2 > 1 ? 's' : ''}\n </p>\n )}\n </div>\n\n {/* Footer */}\n <div className=\"flex justify-between items-center pt-4 border-t border-gray-200\">\n <div>\n <p className=\"text-sm text-gray-500\">Total Amount</p>\n <p className=\"text-2xl font-bold text-gray-900\">{formatPrice(order.total)}</p>\n </div>\n \n <div className=\"flex gap-2\">\n {order.stripeCheckoutUrl && order.paymentStatus !== 'paid' && (\n <a\n href={order.stripeCheckoutUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"inline-flex items-center gap-2 px-4 py-2 bg-primary-600 text-white rounded-lg hover:bg-primary-700 transition-colors\"\n >\n <CreditCard className=\"w-4 h-4\" />\n Pay Now\n </a>\n )}\n <Link\n href={`/orders/${order.id}`}\n className=\"inline-flex items-center gap-2 px-4 py-2 border-2 border-gray-300 text-gray-700 rounded-lg hover:bg-gray-50 transition-colors\"\n >\n View Details\n <ExternalLink className=\"w-4 h-4\" />\n </Link>\n </div>\n </div>\n </motion.div>\n );\n}\n\n","import { useState, useEffect, useCallback } from 'react';\nimport { Order } from '@/lib/types';\nimport { ordersApi } from '@/lib/api/orders';\n\nexport function useOrders(page: number = 1, limit: number = 10) {\n const [orders, setOrders] = useState<Order[]>([]);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n const [pagination, setPagination] = useState({\n page: 1,\n limit: 10,\n total: 0,\n totalPages: 0,\n });\n\n const fetchOrders = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n const response = await ordersApi.getOrders(page, limit);\n setOrders(response.data);\n setPagination(response.pagination);\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsLoading(false);\n }\n }, [page, limit]);\n\n useEffect(() => {\n fetchOrders();\n }, [fetchOrders]);\n\n return {\n orders,\n isLoading,\n error,\n pagination,\n refetch: fetchOrders,\n };\n}\n\nexport function useOrder(id: string) {\n const [order, setOrder] = useState<Order | null>(null);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n const fetchOrder = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n const response = await ordersApi.getOrder(id);\n if (response.success) {\n setOrder(response.data);\n }\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsLoading(false);\n }\n }, [id]);\n\n useEffect(() => {\n if (id) {\n fetchOrder();\n }\n }, [id, fetchOrder]);\n\n return { order, isLoading, error, refetch: fetchOrder };\n}\n\nexport function useCurrentOrders() {\n const [orders, setOrders] = useState<Order[]>([]);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n const fetchCurrentOrders = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n const response = await ordersApi.getCurrentOrders();\n if (response.success) {\n setOrders(response.data);\n }\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsLoading(false);\n }\n }, []);\n\n useEffect(() => {\n fetchCurrentOrders();\n }, [fetchCurrentOrders]);\n\n return { orders, isLoading, error, refetch: fetchCurrentOrders };\n}\n\n","'use client';\n\nimport React, { useState } from 'react';\nimport { motion } from 'framer-motion';\nimport { Package, ChevronLeft, ChevronRight } from 'lucide-react';\nimport { OrderCard } from '@/components/OrderCard';\nimport { OrderCardSkeleton } from '@/components/ui/Skeleton';\nimport { EmptyState } from '@/components/EmptyState';\nimport { Button } from '@/components/ui/Button';\nimport { useOrders } from '@/hooks/useOrders';\nimport { useRouter } from 'next/navigation';\n\nexport function OrdersScreen() {\n const router = useRouter();\n const [page, setPage] = useState(1);\n const { orders, isLoading, pagination } = useOrders(page, 10);\n\n return (\n <div className=\"min-h-screen bg-gray-50 py-12\">\n <div className=\"container mx-auto px-4 max-w-5xl\">\n {/* Header */}\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n className=\"mb-8\"\n >\n <h1 className=\"text-4xl font-bold text-gray-900 mb-2\">Order History</h1>\n <p className=\"text-gray-600\">\n View and manage all your past orders\n </p>\n </motion.div>\n\n {/* Orders List */}\n {isLoading ? (\n <div className=\"space-y-4\">\n {Array.from({ length: 3 }).map((_, i) => (\n <OrderCardSkeleton key={i} />\n ))}\n </div>\n ) : orders.length > 0 ? (\n <>\n <div className=\"space-y-4 mb-8\">\n {orders.map((order) => (\n <OrderCard key={order.id} order={order} />\n ))}\n </div>\n\n {/* Pagination */}\n {pagination.totalPages > 1 && (\n <div className=\"flex justify-center items-center gap-4\">\n <Button\n variant=\"outline\"\n onClick={() => setPage(page - 1)}\n disabled={page === 1}\n >\n <ChevronLeft className=\"w-5 h-5\" />\n Previous\n </Button>\n <span className=\"text-gray-700\">\n Page {page} of {pagination.totalPages}\n </span>\n <Button\n variant=\"outline\"\n onClick={() => setPage(page + 1)}\n disabled={page === pagination.totalPages}\n >\n Next\n <ChevronRight className=\"w-5 h-5\" />\n </Button>\n </div>\n )}\n </>\n ) : (\n <EmptyState\n icon={Package}\n title=\"No orders yet\"\n description=\"Start shopping and your orders will appear here\"\n actionLabel=\"Start Shopping\"\n onAction={() => router.push('/shop')}\n />\n )}\n </div>\n </div>\n );\n}\n\n","'use client';\n\nimport React from 'react';\nimport { motion } from 'framer-motion';\nimport { Truck, Package } from 'lucide-react';\nimport { OrderCard } from '@/components/OrderCard';\nimport { OrderCardSkeleton } from '@/components/ui/Skeleton';\nimport { EmptyState } from '@/components/EmptyState';\nimport { useCurrentOrders } from '@/hooks/useOrders';\nimport { useRouter } from 'next/navigation';\nimport Link from 'next/link';\n\nexport function CurrentOrdersScreen() {\n const router = useRouter();\n const { orders, isLoading } = useCurrentOrders();\n\n return (\n <div className=\"min-h-screen bg-gray-50 py-12\">\n <div className=\"container mx-auto px-4 max-w-5xl\">\n {/* Header */}\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n className=\"mb-8\"\n >\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-4xl font-bold text-gray-900 mb-2 flex items-center gap-3\">\n <Truck className=\"w-10 h-10 text-primary-600\" />\n Current Orders\n </h1>\n <p className=\"text-gray-600\">\n Track your active orders and deliveries\n </p>\n </div>\n <Link\n href=\"/orders\"\n className=\"text-primary-600 hover:text-primary-700 font-medium\"\n >\n View All Orders →\n </Link>\n </div>\n </motion.div>\n\n {/* Info Banner */}\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: 0.1 }}\n className=\"bg-blue-50 border border-blue-200 rounded-2xl p-6 mb-8\"\n >\n <h3 className=\"font-semibold text-blue-900 mb-2\">Track Your Orders</h3>\n <p className=\"text-blue-700 text-sm\">\n Stay updated on your orders' status. You'll receive notifications when your order is\n being prepared, shipped, and delivered.\n </p>\n </motion.div>\n\n {/* Orders List */}\n {isLoading ? (\n <div className=\"space-y-4\">\n {Array.from({ length: 2 }).map((_, i) => (\n <OrderCardSkeleton key={i} />\n ))}\n </div>\n ) : orders.length > 0 ? (\n <div className=\"space-y-4\">\n {orders.map((order) => (\n <OrderCard key={order.id} order={order} />\n ))}\n </div>\n ) : (\n <EmptyState\n icon={Package}\n title=\"No active orders\"\n description=\"You don't have any orders in progress right now\"\n actionLabel=\"Start Shopping\"\n onAction={() => router.push('/shop')}\n />\n )}\n </div>\n </div>\n );\n}\n\n","'use client';\n\nimport React, { useState } from 'react';\nimport { motion, AnimatePresence } from 'framer-motion';\nimport { ShoppingCart, User, Menu, X, Search, Heart } from 'lucide-react';\nimport { useAuth } from '@/providers/AuthProvider';\nimport { useCart } from '@/providers/CartProvider';\nimport { useTheme } from '@/providers/ThemeProvider';\nimport Link from 'next/link';\nimport Image from 'next/image';\n\nexport function Header() {\n const { config } = useTheme();\n const { user, isAuthenticated } = useAuth();\n const { cart } = useCart();\n const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);\n\n const navLinks = [\n { href: '/shop', label: 'Shop' },\n { href: '/categories', label: 'Categories' },\n { href: '/about', label: 'About' },\n { href: '/contact', label: 'Contact' },\n ];\n\n return (\n <header className=\"sticky top-0 z-40 bg-white/80 backdrop-blur-xl border-b border-gray-200 shadow-sm\">\n <div className=\"container mx-auto px-4\">\n <div className=\"flex items-center justify-between h-20\">\n {/* Logo */}\n <Link href=\"/\" className=\"flex items-center gap-3\">\n <div className=\"relative w-12 h-12\">\n <Image\n src={config.logo}\n alt={config.storeName}\n fill\n className=\"object-contain\"\n />\n </div>\n <span className=\"text-2xl font-bold text-gray-900 hidden sm:block\">\n {config.storeName}\n </span>\n </Link>\n\n {/* Desktop Navigation */}\n <nav className=\"hidden lg:flex items-center gap-8\">\n {navLinks.map((link) => (\n <Link\n key={link.href}\n href={link.href}\n className=\"text-gray-700 hover:text-primary-600 font-medium transition-colors relative group\"\n >\n {link.label}\n <span className=\"absolute bottom-0 left-0 w-0 h-0.5 bg-primary-600 group-hover:w-full transition-all duration-300\" />\n </Link>\n ))}\n </nav>\n\n {/* Actions */}\n <div className=\"flex items-center gap-4\">\n {/* Search */}\n <button className=\"p-2 hover:bg-gray-100 rounded-lg transition-colors\">\n <Search className=\"w-5 h-5 text-gray-700\" />\n </button>\n\n {/* Favorites */}\n <button className=\"p-2 hover:bg-gray-100 rounded-lg transition-colors relative\">\n <Heart className=\"w-5 h-5 text-gray-700\" />\n </button>\n\n {/* Cart */}\n <Link\n href=\"/cart\"\n className=\"p-2 hover:bg-gray-100 rounded-lg transition-colors relative\"\n >\n <ShoppingCart className=\"w-5 h-5 text-gray-700\" />\n {cart && cart.itemCount > 0 && (\n <span className=\"absolute -top-1 -right-1 w-5 h-5 bg-primary-600 text-white text-xs font-bold rounded-full flex items-center justify-center\">\n {cart.itemCount}\n </span>\n )}\n </Link>\n\n {/* User Menu */}\n {isAuthenticated ? (\n <Link\n href=\"/account\"\n className=\"p-2 hover:bg-gray-100 rounded-lg transition-colors\"\n >\n <User className=\"w-5 h-5 text-gray-700\" />\n </Link>\n ) : (\n <Link\n href=\"/login\"\n className=\"hidden sm:block px-4 py-2 bg-primary-600 text-white rounded-lg hover:bg-primary-700 transition-colors font-medium\"\n >\n Sign In\n </Link>\n )}\n\n {/* Mobile Menu Button */}\n <button\n onClick={() => setIsMobileMenuOpen(!isMobileMenuOpen)}\n className=\"lg:hidden p-2 hover:bg-gray-100 rounded-lg transition-colors\"\n >\n {isMobileMenuOpen ? (\n <X className=\"w-6 h-6\" />\n ) : (\n <Menu className=\"w-6 h-6\" />\n )}\n </button>\n </div>\n </div>\n\n {/* Mobile Menu */}\n <AnimatePresence>\n {isMobileMenuOpen && (\n <motion.div\n initial={{ height: 0, opacity: 0 }}\n animate={{ height: 'auto', opacity: 1 }}\n exit={{ height: 0, opacity: 0 }}\n className=\"lg:hidden overflow-hidden border-t border-gray-200\"\n >\n <nav className=\"py-4 space-y-2\">\n {navLinks.map((link) => (\n <Link\n key={link.href}\n href={link.href}\n onClick={() => setIsMobileMenuOpen(false)}\n className=\"block px-4 py-3 hover:bg-gray-50 rounded-lg text-gray-700 font-medium\"\n >\n {link.label}\n </Link>\n ))}\n {!isAuthenticated && (\n <Link\n href=\"/login\"\n onClick={() => setIsMobileMenuOpen(false)}\n className=\"block px-4 py-3 bg-primary-600 text-white rounded-lg text-center font-medium\"\n >\n Sign In\n </Link>\n )}\n </nav>\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n </header>\n );\n}\n\n","'use client';\n\nimport React from 'react';\nimport { Mail, Phone, MapPin, Facebook, Twitter, Instagram } from 'lucide-react';\nimport { useTheme } from '@/providers/ThemeProvider';\nimport Link from 'next/link';\n\nexport function Footer() {\n const { config } = useTheme();\n\n const footerLinks = {\n shop: [\n { label: 'All Products', href: '/shop' },\n { label: 'Categories', href: '/categories' },\n { label: 'Featured', href: '/featured' },\n { label: 'New Arrivals', href: '/new' },\n ],\n account: [\n { label: 'My Account', href: '/account' },\n { label: 'Orders', href: '/orders' },\n { label: 'Wishlist', href: '/wishlist' },\n { label: 'Cart', href: '/cart' },\n ],\n support: [\n { label: 'Contact Us', href: '/contact' },\n { label: 'FAQs', href: '/faqs' },\n { label: 'Shipping Info', href: '/shipping' },\n { label: 'Returns', href: '/returns' },\n ],\n legal: [\n { label: 'Privacy Policy', href: '/privacy' },\n { label: 'Terms of Service', href: '/terms' },\n { label: 'Cookie Policy', href: '/cookies' },\n ],\n };\n\n return (\n <footer className=\"bg-gray-900 text-gray-300\">\n <div className=\"container mx-auto px-4 py-16\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-5 gap-12\">\n {/* Brand Column */}\n <div className=\"lg:col-span-2\">\n <h3 className=\"text-2xl font-bold text-white mb-4\">{config.storeName}</h3>\n <p className=\"text-gray-400 mb-6 max-w-md\">\n Your trusted online store for quality products. We deliver excellence with every order.\n </p>\n <div className=\"space-y-3\">\n <div className=\"flex items-center gap-3\">\n <Mail className=\"w-5 h-5 text-primary-500\" />\n <span>support@{config.storeName.toLowerCase().replace(/\\s+/g, '')}.com</span>\n </div>\n <div className=\"flex items-center gap-3\">\n <Phone className=\"w-5 h-5 text-primary-500\" />\n <span>+1 (555) 123-4567</span>\n </div>\n <div className=\"flex items-center gap-3\">\n <MapPin className=\"w-5 h-5 text-primary-500\" />\n <span>123 Store Street, City, Country</span>\n </div>\n </div>\n </div>\n\n {/* Shop Links */}\n <div>\n <h4 className=\"text-lg font-semibold text-white mb-4\">Shop</h4>\n <ul className=\"space-y-2\">\n {footerLinks.shop.map((link) => (\n <li key={link.href}>\n <Link\n href={link.href}\n className=\"hover:text-primary-500 transition-colors\"\n >\n {link.label}\n </Link>\n </li>\n ))}\n </ul>\n </div>\n\n {/* Account Links */}\n <div>\n <h4 className=\"text-lg font-semibold text-white mb-4\">Account</h4>\n <ul className=\"space-y-2\">\n {footerLinks.account.map((link) => (\n <li key={link.href}>\n <Link\n href={link.href}\n className=\"hover:text-primary-500 transition-colors\"\n >\n {link.label}\n </Link>\n </li>\n ))}\n </ul>\n </div>\n\n {/* Support Links */}\n <div>\n <h4 className=\"text-lg font-semibold text-white mb-4\">Support</h4>\n <ul className=\"space-y-2\">\n {footerLinks.support.map((link) => (\n <li key={link.href}>\n <Link\n href={link.href}\n className=\"hover:text-primary-500 transition-colors\"\n >\n {link.label}\n </Link>\n </li>\n ))}\n </ul>\n </div>\n </div>\n\n {/* Bottom Bar */}\n <div className=\"border-t border-gray-800 mt-12 pt-8 flex flex-col md:flex-row justify-between items-center gap-4\">\n <p className=\"text-gray-400 text-sm\">\n © {new Date().getFullYear()} {config.storeName}. All rights reserved.\n </p>\n \n {/* Social Links */}\n <div className=\"flex items-center gap-4\">\n <a\n href=\"#\"\n className=\"w-10 h-10 bg-gray-800 hover:bg-primary-600 rounded-full flex items-center justify-center transition-colors\"\n >\n <Facebook className=\"w-5 h-5\" />\n </a>\n <a\n href=\"#\"\n className=\"w-10 h-10 bg-gray-800 hover:bg-primary-600 rounded-full flex items-center justify-center transition-colors\"\n >\n <Twitter className=\"w-5 h-5\" />\n </a>\n <a\n href=\"#\"\n className=\"w-10 h-10 bg-gray-800 hover:bg-primary-600 rounded-full flex items-center justify-center transition-colors\"\n >\n <Instagram className=\"w-5 h-5\" />\n </a>\n </div>\n </div>\n </div>\n </footer>\n );\n}\n\n","'use client';\n\nimport React, { useEffect } from 'react';\nimport { motion, AnimatePresence } from 'framer-motion';\nimport { X } from 'lucide-react';\n\ninterface ModalProps {\n isOpen: boolean;\n onClose: () => void;\n title?: string;\n children: React.ReactNode;\n size?: 'sm' | 'md' | 'lg' | 'xl';\n}\n\nexport function Modal({ isOpen, onClose, title, children, size = 'md' }: ModalProps) {\n useEffect(() => {\n if (isOpen) {\n document.body.style.overflow = 'hidden';\n } else {\n document.body.style.overflow = 'unset';\n }\n return () => {\n document.body.style.overflow = 'unset';\n };\n }, [isOpen]);\n\n const sizes = {\n sm: 'max-w-md',\n md: 'max-w-lg',\n lg: 'max-w-2xl',\n xl: 'max-w-4xl',\n };\n\n return (\n <AnimatePresence>\n {isOpen && (\n <>\n {/* Backdrop */}\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n onClick={onClose}\n className=\"fixed inset-0 bg-black/50 backdrop-blur-sm z-50\"\n />\n \n {/* Modal */}\n <div className=\"fixed inset-0 z-50 flex items-center justify-center p-4\">\n <motion.div\n initial={{ opacity: 0, scale: 0.95, y: 20 }}\n animate={{ opacity: 1, scale: 1, y: 0 }}\n exit={{ opacity: 0, scale: 0.95, y: 20 }}\n className={`bg-white rounded-2xl shadow-2xl w-full ${sizes[size]} max-h-[90vh] overflow-hidden flex flex-col`}\n >\n {/* Header */}\n {title && (\n <div className=\"flex items-center justify-between p-6 border-b border-gray-200\">\n <h2 className=\"text-2xl font-bold text-gray-900\">{title}</h2>\n <button\n onClick={onClose}\n className=\"p-2 hover:bg-gray-100 rounded-lg transition-colors\"\n >\n <X className=\"w-5 h-5\" />\n </button>\n </div>\n )}\n \n {/* Content */}\n <div className=\"flex-1 overflow-y-auto p-6\">\n {children}\n </div>\n </motion.div>\n </div>\n </>\n )}\n </AnimatePresence>\n );\n}\n\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/lib/utils/colors.ts","../src/providers/ThemeProvider.tsx","../src/lib/Apis/configuration.ts","../src/lib/api-adapter/config.ts","../src/lib/Apis/base.ts","../src/lib/Apis/apis/users-api.ts","../src/lib/Apis/apis/auth-api.ts","../src/providers/AuthProvider.tsx","../src/lib/Apis/apis/addresses-api.ts","../src/lib/Apis/apis/cart-api.ts","../src/lib/Apis/apis/categories-api.ts","../src/lib/Apis/apis/orders-api.ts","../src/lib/Apis/apis/products-api.ts","../src/lib/Apis/apis/shipping-api.ts","../src/lib/Apis/models/manual-order-dto.ts","../src/lib/Apis/models/payment.ts","../src/providers/CartProvider.tsx","../src/providers/EcommerceProvider.tsx","../src/lib/utils/format.ts","../src/lib/Apis/wrapper.ts","../src/providers/WishlistProvider.tsx","../src/components/ProductCard.tsx","../src/components/ui/Skeleton.tsx","../src/components/ui/Button.tsx","../src/components/EmptyState.tsx","../src/components/ui/Input.tsx","../src/hooks/useProducts.ts","../src/screens/ShopScreen.tsx","../src/components/ui/Badge.tsx","../src/screens/ProductDetailScreen.tsx","../src/components/CartItem.tsx","../src/screens/CartScreen.tsx","../src/hooks/useAddresses.ts","../src/components/ui/Card.tsx","../src/components/ui/Modal.tsx","../src/lib/validations/address.ts","../src/components/AddressFormModal.tsx","../src/screens/CheckoutScreen.tsx","../src/screens/LoginScreen.tsx","../src/screens/RegisterScreen.tsx","../src/screens/ProfileScreen.tsx","../src/components/OrderCard.tsx","../src/hooks/useOrders.ts","../src/components/FilterChips.tsx","../src/screens/OrdersScreen.tsx","../src/screens/CurrentOrdersScreen.tsx","../src/screens/AddressesScreen.tsx","../src/components/Header.tsx","../src/components/Footer.tsx"],"names":["createContext","useContext","useEffect","React","globalAxios","useState","useCallback","ManualOrderDTOOrderStatusEnum","PaymentPaymentStatusEnum","toast","QueryClient","QueryClientProvider","Toaster","useRouter","useMemo","motion","AnimatePresence","Image","Heart","dynamic","forwardRef","newArrivals","Sparkles","ShieldCheck","TrendingUp","ChevronDown","Search","ArrowUpDown","LayoutGrid","LayoutList","SlidersHorizontal","X","Clock","Package","Link","Truck","Award","ArrowLeft","ChevronRight","Shield","Star","Check","Minus","Plus","ShoppingCart","Trash2","ShoppingBag","HeartPulse","BadgePercent","ArrowRight","z","useForm","zodResolver","CreditCard","PackageCheck","Edit3","e","MapPin","CheckIcon","Lock","useSearchParams","EyeOff","Eye","CheckCircle2","UserPlus","Mail","Phone","LogOut","Calendar","useRef","CalendarDays","Filter","ChevronLeft","ArrowUpRight","Warehouse","BellRing","Home","Globe","error","Crown","User","Menu","Facebook","Twitter","Instagram"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Convert hex color to RGB array\n */\nexport function hexToRgb(hex: string): [number, number, number] {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result\n ? [\n parseInt(result[1], 16),\n parseInt(result[2], 16),\n parseInt(result[3], 16),\n ]\n : [0, 0, 0];\n}\n\n/**\n * Generate color shades from a base color\n */\nexport function generateColorShades(baseColor: string) {\n const [r, g, b] = hexToRgb(baseColor);\n \n const shades = {\n 50: lighten(r, g, b, 0.95),\n 100: lighten(r, g, b, 0.9),\n 200: lighten(r, g, b, 0.75),\n 300: lighten(r, g, b, 0.6),\n 400: lighten(r, g, b, 0.3),\n 500: formatRgb(r, g, b),\n 600: darken(r, g, b, 0.1),\n 700: darken(r, g, b, 0.2),\n 800: darken(r, g, b, 0.3),\n 900: darken(r, g, b, 0.4),\n 950: darken(r, g, b, 0.5),\n };\n \n return shades;\n}\n\nfunction formatRgb(r: number, g: number, b: number): string {\n return `${r} ${g} ${b}`;\n}\n\nfunction lighten(r: number, g: number, b: number, amount: number): string {\n const newR = Math.round(r + (255 - r) * amount);\n const newG = Math.round(g + (255 - g) * amount);\n const newB = Math.round(b + (255 - b) * amount);\n return formatRgb(newR, newG, newB);\n}\n\nfunction darken(r: number, g: number, b: number, amount: number): string {\n const newR = Math.round(r * (1 - amount));\n const newG = Math.round(g * (1 - amount));\n const newB = Math.round(b * (1 - amount));\n return formatRgb(newR, newG, newB);\n}\n","'use client';\n\nimport React, { createContext, useContext, useEffect } from 'react';\nimport { EcommerceConfig } from '@/lib/types';\nimport { generateColorShades, hexToRgb } from '@/lib/utils/colors';\n\ninterface ThemeContextValue {\n config: EcommerceConfig;\n}\n\nconst ThemeContext = createContext<ThemeContextValue | undefined>(undefined);\n\nexport function useTheme() {\n const context = useContext(ThemeContext);\n if (!context) {\n throw new Error('useTheme must be used within ThemeProvider');\n }\n return context;\n}\n\ninterface ThemeProviderProps {\n config: EcommerceConfig;\n children: React.ReactNode;\n}\n\nexport function ThemeProvider({ config, children }: ThemeProviderProps) {\n useEffect(() => {\n // Generate color shades and set CSS variables\n const primaryShades = generateColorShades(config.colors.primary);\n const secondaryShades = generateColorShades(config.colors.secondary);\n const accentShades = generateColorShades(config.colors.accent);\n\n const root = document.documentElement;\n\n // Set primary color variables\n Object.entries(primaryShades).forEach(([shade, rgb]) => {\n root.style.setProperty(`--color-primary-${shade}`, rgb);\n });\n\n // Set secondary color variables\n Object.entries(secondaryShades).forEach(([shade, rgb]) => {\n root.style.setProperty(`--color-secondary-${shade}`, rgb);\n });\n\n // Set accent color variables\n Object.entries(accentShades).forEach(([shade, rgb]) => {\n root.style.setProperty(`--color-accent-${shade}`, rgb);\n });\n\n // Header gradient variables (rgb triplets)\n if (config.headerGradient) {\n const [fr, fg, fb] = hexToRgb(config.headerGradient.from);\n const [vr, vg, vb] = hexToRgb(config.headerGradient.via);\n const [tr, tg, tb] = hexToRgb(config.headerGradient.to);\n root.style.setProperty(`--header-from`, `${fr} ${fg} ${fb}`);\n root.style.setProperty(`--header-via`, `${vr} ${vg} ${vb}`);\n root.style.setProperty(`--header-to`, `${tr} ${tg} ${tb}`);\n } else {\n // Fallback to theme shades matching existing design\n root.style.setProperty(`--header-from`, primaryShades[700]);\n root.style.setProperty(`--header-via`, primaryShades[600]);\n root.style.setProperty(`--header-to`, secondaryShades[600]);\n }\n }, [config.colors]);\n\n return (\n <ThemeContext.Provider value={{ config }}>\n {children}\n </ThemeContext.Provider>\n );\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Hey Pharamcist API\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\n *\n * OpenAPI spec version: 1.0\n * \n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nexport interface ConfigurationParameters {\n _id?: string;\n apiKey?: string | Promise<string> | ((name: string) => string) | ((name: string) => Promise<string>);\n username?: string;\n password?: string;\n accessToken?: string | Promise<string> | ((name?: string, scopes?: string[]) => string) | ((name?: string, scopes?: string[]) => Promise<string>);\n basePath?: string;\n baseOptions?: any;\n}\n\nexport class Configuration {\n /**\n * parameter for apiKey security\n * @param name security name\n * @memberof Configuration\n */\n apiKey?: string | Promise<string> | ((name: string) => string) | ((name: string) => Promise<string>);\n /**\n * parameter for basic security\n *\n * @type {string}\n * @memberof Configuration\n */\n username?: string;\n /**\n * parameter for basic security\n *\n * @type {string}\n * @memberof Configuration\n */\n password?: string;\n /**\n * parameter for oauth2 security\n * @param name security name\n * @param scopes oauth2 scope\n * @memberof Configuration\n */\n accessToken?: string | Promise<string> | ((name?: string, scopes?: string[]) => string) | ((name?: string, scopes?: string[]) => Promise<string>);\n /**\n * override base path\n *\n * @type {string}\n * @memberof Configuration\n */\n basePath?: string;\n /**\n * base options for axios calls\n *\n * @type {any}\n * @memberof Configuration\n */\n baseOptions?: any;\n\n constructor(param: ConfigurationParameters = {}) {\n this.apiKey = param.apiKey;\n this.username = param.username;\n this.password = param.password;\n this.accessToken = param.accessToken;\n this.basePath = param.basePath;\n this.baseOptions = param.baseOptions;\n }\n}\n","/**\n * API Adapter Configuration\n * Bridges the frontend components with the real backend APIs\n */\n\nimport { Configuration } from '../Apis/configuration';\nimport { EcommerceConfig } from '../types';\n\nlet apiConfiguration: Configuration | null = null;\nlet currentConfig: EcommerceConfig | null = null;\n\n/**\n * Initialize the API configuration with store settings\n */\nexport function initializeApiAdapter(config: EcommerceConfig): Configuration {\n currentConfig = config;\n \n apiConfiguration = new Configuration({\n basePath: config.apiBaseUrl,\n apiKey: () => config.storeId, // x-store-key header\n accessToken: () => getAuthToken() || '', // Bearer token\n });\n\n return apiConfiguration;\n}\n\n/**\n * Get the current API configuration\n */\nexport function getApiConfiguration(): Configuration {\n if (!apiConfiguration) {\n throw new Error('API adapter not initialized. Call initializeApiAdapter first.');\n }\n return apiConfiguration;\n}\n\n/**\n * Get the current ecommerce config\n */\nexport function getCurrentConfig(): EcommerceConfig {\n if (!currentConfig) {\n throw new Error('API adapter not initialized.');\n }\n return currentConfig;\n}\n\n// Token management\nconst TOKEN_KEY = 'ecommerce_access_token';\n\nexport function setAuthToken(token: string): void {\n if (typeof window !== 'undefined') {\n localStorage.setItem(TOKEN_KEY, token);\n // Update the configuration with new token\n if (apiConfiguration) {\n apiConfiguration.accessToken = () => token;\n }\n }\n}\n\nexport function getAuthToken(): string | null {\n if (typeof window !== 'undefined') {\n return localStorage.getItem(TOKEN_KEY);\n }\n return null;\n}\n\nexport function clearAuthToken(): void {\n if (typeof window !== 'undefined') {\n localStorage.removeItem(TOKEN_KEY);\n // Clear from configuration\n if (apiConfiguration) {\n apiConfiguration.accessToken = () => '';\n }\n }\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Hey Pharamcist API\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\n *\n * OpenAPI spec version: 1.0\n * \n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { Configuration } from \"./configuration\";\n// Some imports not used depending on template conditions\n// @ts-ignore\nimport globalAxios, { AxiosRequestConfig, AxiosInstance } from 'axios';\n\nexport const BASE_PATH = \"/\".replace(/\\/+$/, \"\");\n\n/**\n *\n * @export\n */\nexport const COLLECTION_FORMATS = {\n csv: \",\",\n ssv: \" \",\n tsv: \"\\t\",\n pipes: \"|\",\n};\n\n/**\n *\n * @export\n * @interface RequestArgs\n */\nexport interface RequestArgs {\n _id?: string;\n url: string;\n options: AxiosRequestConfig;\n}\n\n/**\n *\n * @export\n * @class BaseAPI\n */\nexport class BaseAPI {\n protected configuration: Configuration | undefined;\n\n constructor(configuration?: Configuration, protected basePath: string = BASE_PATH, protected axios: AxiosInstance = globalAxios) {\n if (configuration) {\n this.configuration = configuration;\n this.basePath = configuration.basePath || this.basePath;\n }\n }\n};\n\n/**\n *\n * @export\n * @class RequiredError\n * @extends {Error}\n */\nexport class RequiredError extends Error {\n name: \"RequiredError\" = \"RequiredError\";\n constructor(public field: string, msg?: string) {\n super(msg);\n }\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Hey Pharamcist API\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\n *\n * OpenAPI spec version: 1.0\n * \n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport globalAxios, { AxiosResponse, AxiosInstance, AxiosRequestConfig } from 'axios';\nimport { Configuration } from '../configuration';\n// Some imports not used depending on template conditions\n// @ts-ignore\nimport { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '../base';\nimport { AllowUserCreditDto } from '../models';\nimport { ChangeUserEmailDto } from '../models';\nimport { CreateUserDto } from '../models';\nimport { UpdateUserDto } from '../models';\nimport { UserEntity } from '../models';\nimport { UserInsightsDto } from '../models';\nimport { UsersPaginatedResponse } from '../models';\n/**\n * UsersApi - axios parameter creator\n * @export\n */\nexport const UsersApiAxiosParamCreator = function (configuration?: Configuration) {\n return {\n /**\n * \n * @summary Allow user credit\n * @param {AllowUserCreditDto} body \n * @param {string} userId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n allowUserCredit: async (body: AllowUserCreditDto, userId: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling allowUserCredit.');\n }\n // verify required parameter 'userId' is not null or undefined\n if (userId === null || userId === undefined) {\n throw new RequiredError('userId','Required parameter userId was null or undefined when calling allowUserCredit.');\n }\n const localVarPath = `/users/allow-user-credit/{userId}`\n .replace(`{${\"userId\"}}`, encodeURIComponent(String(userId)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'PATCH', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Change Email\n * @param {ChangeUserEmailDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n changeUserEmail: async (body: ChangeUserEmailDto, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling changeUserEmail.');\n }\n const localVarPath = `/users/change-email`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Create a new user to be used from the dashboard\n * @param {CreateUserDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n createUser: async (body: CreateUserDto, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling createUser.');\n }\n const localVarPath = `/users`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Deletes a single user\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteMyProfile: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n const localVarPath = `/users/deleteMyProfile`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'DELETE', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Deletes a single user\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteUser: async (id: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'id' is not null or undefined\n if (id === null || id === undefined) {\n throw new RequiredError('id','Required parameter id was null or undefined when calling deleteUser.');\n }\n const localVarPath = `/users/{id}`\n .replace(`{${\"id\"}}`, encodeURIComponent(String(id)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'DELETE', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Disable user credit\n * @param {string} userId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n disableUserCredit: async (userId: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'userId' is not null or undefined\n if (userId === null || userId === undefined) {\n throw new RequiredError('userId','Required parameter userId was null or undefined when calling disableUserCredit.');\n }\n const localVarPath = `/users/disable-user-credit/{userId}`\n .replace(`{${\"userId\"}}`, encodeURIComponent(String(userId)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'PATCH', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get all users for a store\n * @param {string} [role] \n * @param {string} [sortingOrder] \n * @param {string} [sortingColumn] \n * @param {Date} [createdBefore] Filter users registered before a specific date\n * @param {Date} [createdAfter] Filter users registered after a specific date\n * @param {string} [search] Search by user first name, last name, email, phone number or id\n * @param {number} [limit] \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getAllUsers: async (role?: string, sortingOrder?: string, sortingColumn?: string, createdBefore?: Date, createdAfter?: Date, search?: string, limit?: number, page?: number, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n const localVarPath = `/users`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n if (role !== undefined) {\n localVarQueryParameter['role'] = role;\n }\n\n if (sortingOrder !== undefined) {\n localVarQueryParameter['sortingOrder'] = sortingOrder;\n }\n\n if (sortingColumn !== undefined) {\n localVarQueryParameter['sortingColumn'] = sortingColumn;\n }\n\n if (createdBefore !== undefined) {\n localVarQueryParameter['createdBefore'] = (createdBefore as any instanceof Date) ?\n (createdBefore as any).toISOString() :\n createdBefore;\n }\n\n if (createdAfter !== undefined) {\n localVarQueryParameter['createdAfter'] = (createdAfter as any instanceof Date) ?\n (createdAfter as any).toISOString() :\n createdAfter;\n }\n\n if (search !== undefined) {\n localVarQueryParameter['search'] = search;\n }\n\n if (limit !== undefined) {\n localVarQueryParameter['limit'] = limit;\n }\n\n if (page !== undefined) {\n localVarQueryParameter['page'] = page;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get user insights\n * @param {string} [groupId] Id of the group to get insights for, if null, get for all Users\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getInsights: async (groupId?: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n const localVarPath = `/users/insights`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n if (groupId !== undefined) {\n localVarQueryParameter['groupId'] = groupId;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * This request uses the Token that is sent in the header to retrieve the user information ... this request is used to handle the user session in the store and the dashboard \n * @summary Get my profile\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getMyProfile: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n const localVarPath = `/users/mine`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get a single user\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getSingleUser: async (id: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'id' is not null or undefined\n if (id === null || id === undefined) {\n throw new RequiredError('id','Required parameter id was null or undefined when calling getSingleUser.');\n }\n const localVarPath = `/users/{id}`\n .replace(`{${\"id\"}}`, encodeURIComponent(String(id)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Send OTP to user\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n sendOTP: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n const localVarPath = `/users/send-otp`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Update a user\n * @param {UpdateUserDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n updateMyProfile: async (body: UpdateUserDto, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling updateMyProfile.');\n }\n const localVarPath = `/users/updateMyProfile`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'PATCH', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Update a user\n * @param {UpdateUserDto} body \n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n updateUser: async (body: UpdateUserDto, id: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling updateUser.');\n }\n // verify required parameter 'id' is not null or undefined\n if (id === null || id === undefined) {\n throw new RequiredError('id','Required parameter id was null or undefined when calling updateUser.');\n }\n const localVarPath = `/users/{id}`\n .replace(`{${\"id\"}}`, encodeURIComponent(String(id)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'PATCH', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Verify OTP\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n verifyOTP: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n const localVarPath = `/users/verify-otp`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n }\n};\n\n/**\n * UsersApi - functional programming interface\n * @export\n */\nexport const UsersApiFp = function(configuration?: Configuration) {\n return {\n /**\n * \n * @summary Allow user credit\n * @param {AllowUserCreditDto} body \n * @param {string} userId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async allowUserCredit(body: AllowUserCreditDto, userId: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<UserEntity>>> {\n const localVarAxiosArgs = await UsersApiAxiosParamCreator(configuration).allowUserCredit(body, userId, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Change Email\n * @param {ChangeUserEmailDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async changeUserEmail(body: ChangeUserEmailDto, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {\n const localVarAxiosArgs = await UsersApiAxiosParamCreator(configuration).changeUserEmail(body, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Create a new user to be used from the dashboard\n * @param {CreateUserDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async createUser(body: CreateUserDto, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<UserEntity>>> {\n const localVarAxiosArgs = await UsersApiAxiosParamCreator(configuration).createUser(body, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Deletes a single user\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async deleteMyProfile(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {\n const localVarAxiosArgs = await UsersApiAxiosParamCreator(configuration).deleteMyProfile(options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Deletes a single user\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async deleteUser(id: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {\n const localVarAxiosArgs = await UsersApiAxiosParamCreator(configuration).deleteUser(id, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Disable user credit\n * @param {string} userId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async disableUserCredit(userId: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<UserEntity>>> {\n const localVarAxiosArgs = await UsersApiAxiosParamCreator(configuration).disableUserCredit(userId, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get all users for a store\n * @param {string} [role] \n * @param {string} [sortingOrder] \n * @param {string} [sortingColumn] \n * @param {Date} [createdBefore] Filter users registered before a specific date\n * @param {Date} [createdAfter] Filter users registered after a specific date\n * @param {string} [search] Search by user first name, last name, email, phone number or id\n * @param {number} [limit] \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getAllUsers(role?: string, sortingOrder?: string, sortingColumn?: string, createdBefore?: Date, createdAfter?: Date, search?: string, limit?: number, page?: number, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<UsersPaginatedResponse>>> {\n const localVarAxiosArgs = await UsersApiAxiosParamCreator(configuration).getAllUsers(role, sortingOrder, sortingColumn, createdBefore, createdAfter, search, limit, page, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get user insights\n * @param {string} [groupId] Id of the group to get insights for, if null, get for all Users\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getInsights(groupId?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<UserInsightsDto>>> {\n const localVarAxiosArgs = await UsersApiAxiosParamCreator(configuration).getInsights(groupId, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * This request uses the Token that is sent in the header to retrieve the user information ... this request is used to handle the user session in the store and the dashboard \n * @summary Get my profile\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getMyProfile(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<UserEntity>>> {\n const localVarAxiosArgs = await UsersApiAxiosParamCreator(configuration).getMyProfile(options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get a single user\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getSingleUser(id: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<UserEntity>>> {\n const localVarAxiosArgs = await UsersApiAxiosParamCreator(configuration).getSingleUser(id, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Send OTP to user\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async sendOTP(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {\n const localVarAxiosArgs = await UsersApiAxiosParamCreator(configuration).sendOTP(options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Update a user\n * @param {UpdateUserDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async updateMyProfile(body: UpdateUserDto, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<UserEntity>>> {\n const localVarAxiosArgs = await UsersApiAxiosParamCreator(configuration).updateMyProfile(body, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Update a user\n * @param {UpdateUserDto} body \n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async updateUser(body: UpdateUserDto, id: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<UserEntity>>> {\n const localVarAxiosArgs = await UsersApiAxiosParamCreator(configuration).updateUser(body, id, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Verify OTP\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async verifyOTP(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {\n const localVarAxiosArgs = await UsersApiAxiosParamCreator(configuration).verifyOTP(options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n }\n};\n\n/**\n * UsersApi - factory interface\n * @export\n */\nexport const UsersApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {\n return {\n /**\n * \n * @summary Allow user credit\n * @param {AllowUserCreditDto} body \n * @param {string} userId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async allowUserCredit(body: AllowUserCreditDto, userId: string, options?: AxiosRequestConfig): Promise<AxiosResponse<UserEntity>> {\n return UsersApiFp(configuration).allowUserCredit(body, userId, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Change Email\n * @param {ChangeUserEmailDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async changeUserEmail(body: ChangeUserEmailDto, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {\n return UsersApiFp(configuration).changeUserEmail(body, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Create a new user to be used from the dashboard\n * @param {CreateUserDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async createUser(body: CreateUserDto, options?: AxiosRequestConfig): Promise<AxiosResponse<UserEntity>> {\n return UsersApiFp(configuration).createUser(body, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Deletes a single user\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async deleteMyProfile(options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {\n return UsersApiFp(configuration).deleteMyProfile(options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Deletes a single user\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async deleteUser(id: string, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {\n return UsersApiFp(configuration).deleteUser(id, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Disable user credit\n * @param {string} userId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async disableUserCredit(userId: string, options?: AxiosRequestConfig): Promise<AxiosResponse<UserEntity>> {\n return UsersApiFp(configuration).disableUserCredit(userId, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get all users for a store\n * @param {string} [role] \n * @param {string} [sortingOrder] \n * @param {string} [sortingColumn] \n * @param {Date} [createdBefore] Filter users registered before a specific date\n * @param {Date} [createdAfter] Filter users registered after a specific date\n * @param {string} [search] Search by user first name, last name, email, phone number or id\n * @param {number} [limit] \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getAllUsers(role?: string, sortingOrder?: string, sortingColumn?: string, createdBefore?: Date, createdAfter?: Date, search?: string, limit?: number, page?: number, options?: AxiosRequestConfig): Promise<AxiosResponse<UsersPaginatedResponse>> {\n return UsersApiFp(configuration).getAllUsers(role, sortingOrder, sortingColumn, createdBefore, createdAfter, search, limit, page, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get user insights\n * @param {string} [groupId] Id of the group to get insights for, if null, get for all Users\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getInsights(groupId?: string, options?: AxiosRequestConfig): Promise<AxiosResponse<UserInsightsDto>> {\n return UsersApiFp(configuration).getInsights(groupId, options).then((request) => request(axios, basePath));\n },\n /**\n * This request uses the Token that is sent in the header to retrieve the user information ... this request is used to handle the user session in the store and the dashboard \n * @summary Get my profile\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getMyProfile(options?: AxiosRequestConfig): Promise<AxiosResponse<UserEntity>> {\n return UsersApiFp(configuration).getMyProfile(options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get a single user\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getSingleUser(id: string, options?: AxiosRequestConfig): Promise<AxiosResponse<UserEntity>> {\n return UsersApiFp(configuration).getSingleUser(id, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Send OTP to user\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async sendOTP(options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {\n return UsersApiFp(configuration).sendOTP(options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Update a user\n * @param {UpdateUserDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async updateMyProfile(body: UpdateUserDto, options?: AxiosRequestConfig): Promise<AxiosResponse<UserEntity>> {\n return UsersApiFp(configuration).updateMyProfile(body, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Update a user\n * @param {UpdateUserDto} body \n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async updateUser(body: UpdateUserDto, id: string, options?: AxiosRequestConfig): Promise<AxiosResponse<UserEntity>> {\n return UsersApiFp(configuration).updateUser(body, id, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Verify OTP\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async verifyOTP(options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {\n return UsersApiFp(configuration).verifyOTP(options).then((request) => request(axios, basePath));\n },\n };\n};\n\n/**\n * UsersApi - object-oriented interface\n * @export\n * @class UsersApi\n * @extends {BaseAPI}\n */\nexport class UsersApi extends BaseAPI {\n /**\n * \n * @summary Allow user credit\n * @param {AllowUserCreditDto} body \n * @param {string} userId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof UsersApi\n */\n public async allowUserCredit(body: AllowUserCreditDto, userId: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<UserEntity>> {\n return UsersApiFp(this.configuration).allowUserCredit(body, userId, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Change Email\n * @param {ChangeUserEmailDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof UsersApi\n */\n public async changeUserEmail(body: ChangeUserEmailDto, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {\n return UsersApiFp(this.configuration).changeUserEmail(body, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Create a new user to be used from the dashboard\n * @param {CreateUserDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof UsersApi\n */\n public async createUser(body: CreateUserDto, options?: AxiosRequestConfig) : Promise<AxiosResponse<UserEntity>> {\n return UsersApiFp(this.configuration).createUser(body, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Deletes a single user\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof UsersApi\n */\n public async deleteMyProfile(options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {\n return UsersApiFp(this.configuration).deleteMyProfile(options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Deletes a single user\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof UsersApi\n */\n public async deleteUser(id: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {\n return UsersApiFp(this.configuration).deleteUser(id, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Disable user credit\n * @param {string} userId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof UsersApi\n */\n public async disableUserCredit(userId: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<UserEntity>> {\n return UsersApiFp(this.configuration).disableUserCredit(userId, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get all users for a store\n * @param {string} [role] \n * @param {string} [sortingOrder] \n * @param {string} [sortingColumn] \n * @param {Date} [createdBefore] Filter users registered before a specific date\n * @param {Date} [createdAfter] Filter users registered after a specific date\n * @param {string} [search] Search by user first name, last name, email, phone number or id\n * @param {number} [limit] \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof UsersApi\n */\n public async getAllUsers(role?: string, sortingOrder?: string, sortingColumn?: string, createdBefore?: Date, createdAfter?: Date, search?: string, limit?: number, page?: number, options?: AxiosRequestConfig) : Promise<AxiosResponse<UsersPaginatedResponse>> {\n return UsersApiFp(this.configuration).getAllUsers(role, sortingOrder, sortingColumn, createdBefore, createdAfter, search, limit, page, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get user insights\n * @param {string} [groupId] Id of the group to get insights for, if null, get for all Users\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof UsersApi\n */\n public async getInsights(groupId?: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<UserInsightsDto>> {\n return UsersApiFp(this.configuration).getInsights(groupId, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * This request uses the Token that is sent in the header to retrieve the user information ... this request is used to handle the user session in the store and the dashboard \n * @summary Get my profile\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof UsersApi\n */\n public async getMyProfile(options?: AxiosRequestConfig) : Promise<AxiosResponse<UserEntity>> {\n return UsersApiFp(this.configuration).getMyProfile(options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get a single user\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof UsersApi\n */\n public async getSingleUser(id: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<UserEntity>> {\n return UsersApiFp(this.configuration).getSingleUser(id, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Send OTP to user\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof UsersApi\n */\n public async sendOTP(options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {\n return UsersApiFp(this.configuration).sendOTP(options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Update a user\n * @param {UpdateUserDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof UsersApi\n */\n public async updateMyProfile(body: UpdateUserDto, options?: AxiosRequestConfig) : Promise<AxiosResponse<UserEntity>> {\n return UsersApiFp(this.configuration).updateMyProfile(body, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Update a user\n * @param {UpdateUserDto} body \n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof UsersApi\n */\n public async updateUser(body: UpdateUserDto, id: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<UserEntity>> {\n return UsersApiFp(this.configuration).updateUser(body, id, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Verify OTP\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof UsersApi\n */\n public async verifyOTP(options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {\n return UsersApiFp(this.configuration).verifyOTP(options).then((request) => request(this.axios, this.basePath));\n }\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Hey Pharamcist API\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\n *\n * OpenAPI spec version: 1.0\n * \n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport globalAxios, { AxiosResponse, AxiosInstance, AxiosRequestConfig } from 'axios';\nimport { Configuration } from '../configuration';\n// Some imports not used depending on template conditions\n// @ts-ignore\nimport { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '../base';\nimport { CreateUserDto } from '../models';\nimport { ForgetPassword } from '../models';\nimport { LoginDto } from '../models';\nimport { RegisterOrLoginWithGmail } from '../models';\nimport { TAdminSessionData } from '../models';\nimport { TUserSessionData } from '../models';\nimport { UserEntity } from '../models';\nimport { VerifyEmailDTO } from '../models';\n/**\n * AuthApi - axios parameter creator\n * @export\n */\nexport const AuthApiAxiosParamCreator = function (configuration?: Configuration) {\n return {\n /**\n * \n * @summary Change Email for user\n * @param {ForgetPassword} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n changeEmail: async (body: ForgetPassword, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling changeEmail.');\n }\n const localVarPath = `/auth/change-email`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Change user password\n * @param {string} oldPassword \n * @param {string} newPassword \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n changePassword: async (oldPassword: string, newPassword: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'oldPassword' is not null or undefined\n if (oldPassword === null || oldPassword === undefined) {\n throw new RequiredError('oldPassword','Required parameter oldPassword was null or undefined when calling changePassword.');\n }\n // verify required parameter 'newPassword' is not null or undefined\n if (newPassword === null || newPassword === undefined) {\n throw new RequiredError('newPassword','Required parameter newPassword was null or undefined when calling changePassword.');\n }\n const localVarPath = `/auth/change-password`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n if (oldPassword !== undefined && oldPassword !== null) {\n localVarHeaderParameter['oldPassword'] = String(oldPassword);\n }\n\n if (newPassword !== undefined && newPassword !== null) {\n localVarHeaderParameter['newPassword'] = String(newPassword);\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Signin to dashboard\n * @param {LoginDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n dashboardLogin: async (body: LoginDto, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling dashboardLogin.');\n }\n const localVarPath = `/auth/dash/signin`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Reset user password\n * @param {string} newPassword \n * @param {string} token \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n resetPassword: async (newPassword: string, token: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'newPassword' is not null or undefined\n if (newPassword === null || newPassword === undefined) {\n throw new RequiredError('newPassword','Required parameter newPassword was null or undefined when calling resetPassword.');\n }\n // verify required parameter 'token' is not null or undefined\n if (token === null || token === undefined) {\n throw new RequiredError('token','Required parameter token was null or undefined when calling resetPassword.');\n }\n const localVarPath = `/auth/reset-password`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n if (newPassword !== undefined && newPassword !== null) {\n localVarHeaderParameter['newPassword'] = String(newPassword);\n }\n\n if (token !== undefined && token !== null) {\n localVarHeaderParameter['token'] = String(token);\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Send forget password email\n * @param {ForgetPassword} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n sendForgetPasswordEmail: async (body: ForgetPassword, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling sendForgetPasswordEmail.');\n }\n const localVarPath = `/auth/forget-password`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Signin to store\n * @param {LoginDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n signin: async (body: LoginDto, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling signin.');\n }\n const localVarPath = `/auth/signin`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Signin with gmail\n * @param {RegisterOrLoginWithGmail} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n signinWithGmail: async (body: RegisterOrLoginWithGmail, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling signinWithGmail.');\n }\n const localVarPath = `/auth/signin/gmail`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Register new user\n * @param {CreateUserDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n signup: async (body: CreateUserDto, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling signup.');\n }\n const localVarPath = `/auth/signup`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Register new user with gmail\n * @param {RegisterOrLoginWithGmail} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n signupWithGmail: async (body: RegisterOrLoginWithGmail, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling signupWithGmail.');\n }\n const localVarPath = `/auth/signup/gmail`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Verify user email\n * @param {VerifyEmailDTO} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n verifyUserEmail: async (body: VerifyEmailDTO, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling verifyUserEmail.');\n }\n const localVarPath = `/auth/verify-user`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n }\n};\n\n/**\n * AuthApi - functional programming interface\n * @export\n */\nexport const AuthApiFp = function(configuration?: Configuration) {\n return {\n /**\n * \n * @summary Change Email for user\n * @param {ForgetPassword} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async changeEmail(body: ForgetPassword, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<UserEntity>>> {\n const localVarAxiosArgs = await AuthApiAxiosParamCreator(configuration).changeEmail(body, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Change user password\n * @param {string} oldPassword \n * @param {string} newPassword \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async changePassword(oldPassword: string, newPassword: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {\n const localVarAxiosArgs = await AuthApiAxiosParamCreator(configuration).changePassword(oldPassword, newPassword, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Signin to dashboard\n * @param {LoginDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async dashboardLogin(body: LoginDto, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<TAdminSessionData>>> {\n const localVarAxiosArgs = await AuthApiAxiosParamCreator(configuration).dashboardLogin(body, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Reset user password\n * @param {string} newPassword \n * @param {string} token \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async resetPassword(newPassword: string, token: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {\n const localVarAxiosArgs = await AuthApiAxiosParamCreator(configuration).resetPassword(newPassword, token, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Send forget password email\n * @param {ForgetPassword} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async sendForgetPasswordEmail(body: ForgetPassword, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {\n const localVarAxiosArgs = await AuthApiAxiosParamCreator(configuration).sendForgetPasswordEmail(body, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Signin to store\n * @param {LoginDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async signin(body: LoginDto, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<TUserSessionData>>> {\n const localVarAxiosArgs = await AuthApiAxiosParamCreator(configuration).signin(body, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Signin with gmail\n * @param {RegisterOrLoginWithGmail} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async signinWithGmail(body: RegisterOrLoginWithGmail, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<TUserSessionData>>> {\n const localVarAxiosArgs = await AuthApiAxiosParamCreator(configuration).signinWithGmail(body, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Register new user\n * @param {CreateUserDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async signup(body: CreateUserDto, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<TUserSessionData>>> {\n const localVarAxiosArgs = await AuthApiAxiosParamCreator(configuration).signup(body, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Register new user with gmail\n * @param {RegisterOrLoginWithGmail} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async signupWithGmail(body: RegisterOrLoginWithGmail, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<TUserSessionData>>> {\n const localVarAxiosArgs = await AuthApiAxiosParamCreator(configuration).signupWithGmail(body, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Verify user email\n * @param {VerifyEmailDTO} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async verifyUserEmail(body: VerifyEmailDTO, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<TUserSessionData>>> {\n const localVarAxiosArgs = await AuthApiAxiosParamCreator(configuration).verifyUserEmail(body, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n }\n};\n\n/**\n * AuthApi - factory interface\n * @export\n */\nexport const AuthApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {\n return {\n /**\n * \n * @summary Change Email for user\n * @param {ForgetPassword} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async changeEmail(body: ForgetPassword, options?: AxiosRequestConfig): Promise<AxiosResponse<UserEntity>> {\n return AuthApiFp(configuration).changeEmail(body, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Change user password\n * @param {string} oldPassword \n * @param {string} newPassword \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async changePassword(oldPassword: string, newPassword: string, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {\n return AuthApiFp(configuration).changePassword(oldPassword, newPassword, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Signin to dashboard\n * @param {LoginDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async dashboardLogin(body: LoginDto, options?: AxiosRequestConfig): Promise<AxiosResponse<TAdminSessionData>> {\n return AuthApiFp(configuration).dashboardLogin(body, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Reset user password\n * @param {string} newPassword \n * @param {string} token \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async resetPassword(newPassword: string, token: string, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {\n return AuthApiFp(configuration).resetPassword(newPassword, token, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Send forget password email\n * @param {ForgetPassword} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async sendForgetPasswordEmail(body: ForgetPassword, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {\n return AuthApiFp(configuration).sendForgetPasswordEmail(body, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Signin to store\n * @param {LoginDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async signin(body: LoginDto, options?: AxiosRequestConfig): Promise<AxiosResponse<TUserSessionData>> {\n return AuthApiFp(configuration).signin(body, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Signin with gmail\n * @param {RegisterOrLoginWithGmail} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async signinWithGmail(body: RegisterOrLoginWithGmail, options?: AxiosRequestConfig): Promise<AxiosResponse<TUserSessionData>> {\n return AuthApiFp(configuration).signinWithGmail(body, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Register new user\n * @param {CreateUserDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async signup(body: CreateUserDto, options?: AxiosRequestConfig): Promise<AxiosResponse<TUserSessionData>> {\n return AuthApiFp(configuration).signup(body, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Register new user with gmail\n * @param {RegisterOrLoginWithGmail} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async signupWithGmail(body: RegisterOrLoginWithGmail, options?: AxiosRequestConfig): Promise<AxiosResponse<TUserSessionData>> {\n return AuthApiFp(configuration).signupWithGmail(body, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Verify user email\n * @param {VerifyEmailDTO} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async verifyUserEmail(body: VerifyEmailDTO, options?: AxiosRequestConfig): Promise<AxiosResponse<TUserSessionData>> {\n return AuthApiFp(configuration).verifyUserEmail(body, options).then((request) => request(axios, basePath));\n },\n };\n};\n\n/**\n * AuthApi - object-oriented interface\n * @export\n * @class AuthApi\n * @extends {BaseAPI}\n */\nexport class AuthApi extends BaseAPI {\n /**\n * \n * @summary Change Email for user\n * @param {ForgetPassword} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AuthApi\n */\n public async changeEmail(body: ForgetPassword, options?: AxiosRequestConfig) : Promise<AxiosResponse<UserEntity>> {\n return AuthApiFp(this.configuration).changeEmail(body, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Change user password\n * @param {string} oldPassword \n * @param {string} newPassword \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AuthApi\n */\n public async changePassword(oldPassword: string, newPassword: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {\n return AuthApiFp(this.configuration).changePassword(oldPassword, newPassword, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Signin to dashboard\n * @param {LoginDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AuthApi\n */\n public async dashboardLogin(body: LoginDto, options?: AxiosRequestConfig) : Promise<AxiosResponse<TAdminSessionData>> {\n return AuthApiFp(this.configuration).dashboardLogin(body, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Reset user password\n * @param {string} newPassword \n * @param {string} token \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AuthApi\n */\n public async resetPassword(newPassword: string, token: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {\n return AuthApiFp(this.configuration).resetPassword(newPassword, token, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Send forget password email\n * @param {ForgetPassword} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AuthApi\n */\n public async sendForgetPasswordEmail(body: ForgetPassword, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {\n return AuthApiFp(this.configuration).sendForgetPasswordEmail(body, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Signin to store\n * @param {LoginDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AuthApi\n */\n public async signin(body: LoginDto, options?: AxiosRequestConfig) : Promise<AxiosResponse<TUserSessionData>> {\n return AuthApiFp(this.configuration).signin(body, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Signin with gmail\n * @param {RegisterOrLoginWithGmail} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AuthApi\n */\n public async signinWithGmail(body: RegisterOrLoginWithGmail, options?: AxiosRequestConfig) : Promise<AxiosResponse<TUserSessionData>> {\n return AuthApiFp(this.configuration).signinWithGmail(body, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Register new user\n * @param {CreateUserDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AuthApi\n */\n public async signup(body: CreateUserDto, options?: AxiosRequestConfig) : Promise<AxiosResponse<TUserSessionData>> {\n return AuthApiFp(this.configuration).signup(body, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Register new user with gmail\n * @param {RegisterOrLoginWithGmail} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AuthApi\n */\n public async signupWithGmail(body: RegisterOrLoginWithGmail, options?: AxiosRequestConfig) : Promise<AxiosResponse<TUserSessionData>> {\n return AuthApiFp(this.configuration).signupWithGmail(body, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Verify user email\n * @param {VerifyEmailDTO} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AuthApi\n */\n public async verifyUserEmail(body: VerifyEmailDTO, options?: AxiosRequestConfig) : Promise<AxiosResponse<TUserSessionData>> {\n return AuthApiFp(this.configuration).verifyUserEmail(body, options).then((request) => request(this.axios, this.basePath));\n }\n}\n","'use client';\n\nimport React, { createContext, useContext, useState, useEffect, useCallback } from 'react';\nimport { getAuthToken, setAuthToken, clearAuthToken, getApiConfiguration } from '@/lib/api-adapter/config';\nimport { CreateUserDto, LoginDto, TUserSessionData, UpdateUserDto, UserEntity } from '@/lib/Apis/models';\nimport { UsersApi } from '@/lib/Apis/apis/users-api';\nimport { AuthApi } from '@/lib/Apis/apis/auth-api';\n\ninterface AuthContextValue {\n user: UserEntity | null;\n isAuthenticated: boolean;\n isLoading: boolean;\n login: (credentials: LoginDto) => Promise<TUserSessionData>;\n register: (data: CreateUserDto) => Promise<TUserSessionData>;\n logout: () => Promise<void>;\n updateUser: (data: UpdateUserDto) => Promise<UserEntity>;\n refreshUser: () => Promise<void>;\n}\n\nconst AuthContext = createContext<AuthContextValue | undefined>(undefined);\n\nexport function useAuth() {\n const context = useContext(AuthContext);\n if (!context) {\n throw new Error('useAuth must be used within AuthProvider');\n }\n return context;\n}\n\ninterface AuthProviderProps {\n children: React.ReactNode;\n}\n\nexport function AuthProvider({ children }: AuthProviderProps) {\n const [user, setUser] = useState<UserEntity | null>(null);\n const [isLoading, setIsLoading] = useState(true);\n const USER_KEY = 'ecommerce_user';\n\n const refreshUser = useCallback(async () => {\n try {\n const token = getAuthToken();\n if (token) {\n const response = await new UsersApi(getApiConfiguration()).getMyProfile();\n setUser(response.data);\n }\n } catch (error) {\n console.error('Failed to refresh user:', error);\n setUser(null);\n } finally {\n setIsLoading(false);\n }\n }, []);\n\n useEffect(() => {\n // Hydrate user instantly from localStorage for fast UI, then validate in background\n if (typeof window !== 'undefined') {\n try {\n const cached = localStorage.getItem(USER_KEY);\n if (cached) {\n const parsed: UserEntity = JSON.parse(cached);\n setUser(parsed);\n setIsLoading(false);\n }\n } catch (_) {\n // ignore cache parse errors\n }\n }\n // Always attempt to refresh actual profile\n refreshUser();\n }, [refreshUser]);\n\n const login = async (credentials: LoginDto): Promise<TUserSessionData> => {\n setIsLoading(true);\n try {\n const response = await new AuthApi(getApiConfiguration()).signin(credentials);\n // Persist access token and update user\n if (response.data?.authToken) {\n setAuthToken(response.data.authToken);\n }\n setUser(response.data.userData);\n if (typeof window !== 'undefined') {\n localStorage.setItem(USER_KEY, JSON.stringify(response.data.userData));\n }\n return response.data;\n } finally {\n setIsLoading(false);\n }\n };\n\n const register = async (data: CreateUserDto): Promise<TUserSessionData> => {\n setIsLoading(true);\n try {\n const response = await new AuthApi(getApiConfiguration()).signup(data);\n if (response.data?.authToken) {\n setAuthToken(response.data.authToken);\n }\n setUser(response.data.userData);\n if (typeof window !== 'undefined') {\n localStorage.setItem(USER_KEY, JSON.stringify(response.data.userData));\n }\n return response.data;\n } finally {\n setIsLoading(false);\n }\n };\n\n const logout = async () => {\n setIsLoading(true);\n try {\n clearAuthToken();\n setUser(null);\n if (typeof window !== 'undefined') {\n localStorage.removeItem(USER_KEY);\n }\n } finally {\n setIsLoading(false);\n }\n };\n\n const updateUser = async (data: UpdateUserDto): Promise<UserEntity> => {\n setIsLoading(true);\n try {\n const response = await new UsersApi(getApiConfiguration()).updateMyProfile(data);\n setUser(response.data);\n return response.data;\n } catch (error) {\n console.error('Failed to update user:', error);\n throw error;\n } finally {\n setIsLoading(false);\n }\n };\n\n const value: AuthContextValue = {\n user,\n isAuthenticated: !!user,\n isLoading,\n login: login as unknown as (credentials: LoginDto) => Promise<TUserSessionData>,\n register: register as unknown as (data: CreateUserDto) => Promise<TUserSessionData>,\n logout: logout as () => Promise<void>,\n updateUser: updateUser as unknown as (data: UpdateUserDto) => Promise<UserEntity>,\n refreshUser: refreshUser as () => Promise<void>,\n };\n\n return <AuthContext.Provider value={value}>{children}</AuthContext.Provider>;\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Hey Pharamcist API\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\n *\n * OpenAPI spec version: 1.0\n * \n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport globalAxios, { AxiosResponse, AxiosInstance, AxiosRequestConfig } from 'axios';\nimport { Configuration } from '../configuration';\n// Some imports not used depending on template conditions\n// @ts-ignore\nimport { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '../base';\nimport { Address } from '../models';\nimport { CreateAddressDto } from '../models';\nimport { CreateStoreAddressDto } from '../models';\nimport { UpdateAddressDto } from '../models';\n/**\n * AddressesApi - axios parameter creator\n * @export\n */\nexport const AddressesApiAxiosParamCreator = function (configuration?: Configuration) {\n return {\n /**\n * \n * @summary Create address for user\n * @param {CreateAddressDto} body \n * @param {string} userId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n adminCreateAddressForUser: async (body: CreateAddressDto, userId: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling adminCreateAddressForUser.');\n }\n // verify required parameter 'userId' is not null or undefined\n if (userId === null || userId === undefined) {\n throw new RequiredError('userId','Required parameter userId was null or undefined when calling adminCreateAddressForUser.');\n }\n const localVarPath = `/addresses/create-by-admin/{userId}`\n .replace(`{${\"userId\"}}`, encodeURIComponent(String(userId)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Delete address\n * @param {string} addressId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n adminDeleteUserAddress: async (addressId: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'addressId' is not null or undefined\n if (addressId === null || addressId === undefined) {\n throw new RequiredError('addressId','Required parameter addressId was null or undefined when calling adminDeleteUserAddress.');\n }\n const localVarPath = `/addresses/delete-by-admin/{addressId}`\n .replace(`{${\"addressId\"}}`, encodeURIComponent(String(addressId)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'DELETE', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get all addresses for user\n * @param {string} userId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n adminGetSingleUserAddresses: async (userId: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'userId' is not null or undefined\n if (userId === null || userId === undefined) {\n throw new RequiredError('userId','Required parameter userId was null or undefined when calling adminGetSingleUserAddresses.');\n }\n const localVarPath = `/addresses/getSingleUserAddresses/{userId}`\n .replace(`{${\"userId\"}}`, encodeURIComponent(String(userId)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Update address\n * @param {UpdateAddressDto} body \n * @param {string} addressId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n adminUpdateUserAddress: async (body: UpdateAddressDto, addressId: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling adminUpdateUserAddress.');\n }\n // verify required parameter 'addressId' is not null or undefined\n if (addressId === null || addressId === undefined) {\n throw new RequiredError('addressId','Required parameter addressId was null or undefined when calling adminUpdateUserAddress.');\n }\n const localVarPath = `/addresses/update-by-admin/{addressId}`\n .replace(`{${\"addressId\"}}`, encodeURIComponent(String(addressId)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'PATCH', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Create address for store\n * @param {CreateStoreAddressDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n createAddressForStore: async (body: CreateStoreAddressDto, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling createAddressForStore.');\n }\n const localVarPath = `/addresses/store`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Create address for user\n * @param {CreateAddressDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n createAddressForUser: async (body: CreateAddressDto, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling createAddressForUser.');\n }\n const localVarPath = `/addresses`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Delete address\n * @param {string} addressId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteUserAddress: async (addressId: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'addressId' is not null or undefined\n if (addressId === null || addressId === undefined) {\n throw new RequiredError('addressId','Required parameter addressId was null or undefined when calling deleteUserAddress.');\n }\n const localVarPath = `/addresses/{addressId}`\n .replace(`{${\"addressId\"}}`, encodeURIComponent(String(addressId)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'DELETE', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get all addresses for store\n * @param {string} storeId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getAllStoreAddresses: async (storeId: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'storeId' is not null or undefined\n if (storeId === null || storeId === undefined) {\n throw new RequiredError('storeId','Required parameter storeId was null or undefined when calling getAllStoreAddresses.');\n }\n const localVarPath = `/addresses/stores/{storeId}`\n .replace(`{${\"storeId\"}}`, encodeURIComponent(String(storeId)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get all addresses for user\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getAllUserAddresses: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n const localVarPath = `/addresses`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get all addresses for user\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getMyAddresses: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n const localVarPath = `/addresses/mine`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get default address for user\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getMyDefaultAddress: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n const localVarPath = `/addresses/defaultAddress`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get single address\n * @param {string} addressId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getSingleAddress: async (addressId: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'addressId' is not null or undefined\n if (addressId === null || addressId === undefined) {\n throw new RequiredError('addressId','Required parameter addressId was null or undefined when calling getSingleAddress.');\n }\n const localVarPath = `/addresses/single/{addressId}`\n .replace(`{${\"addressId\"}}`, encodeURIComponent(String(addressId)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Set new default shipping address\n * @param {string} userId \n * @param {string} addressId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n setDefaultShippingAddress: async (userId: string, addressId: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'userId' is not null or undefined\n if (userId === null || userId === undefined) {\n throw new RequiredError('userId','Required parameter userId was null or undefined when calling setDefaultShippingAddress.');\n }\n // verify required parameter 'addressId' is not null or undefined\n if (addressId === null || addressId === undefined) {\n throw new RequiredError('addressId','Required parameter addressId was null or undefined when calling setDefaultShippingAddress.');\n }\n const localVarPath = `/addresses/user/{userId}/set-default-shipping/{addressId}`\n .replace(`{${\"userId\"}}`, encodeURIComponent(String(userId)))\n .replace(`{${\"addressId\"}}`, encodeURIComponent(String(addressId)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'PATCH', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Update default address for user\n * @param {string} addressId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n updateDefaultAddress: async (addressId: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'addressId' is not null or undefined\n if (addressId === null || addressId === undefined) {\n throw new RequiredError('addressId','Required parameter addressId was null or undefined when calling updateDefaultAddress.');\n }\n const localVarPath = `/addresses/updateDefault/{addressId}`\n .replace(`{${\"addressId\"}}`, encodeURIComponent(String(addressId)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Update address\n * @param {UpdateAddressDto} body \n * @param {string} addressId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n updateUserAddress: async (body: UpdateAddressDto, addressId: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling updateUserAddress.');\n }\n // verify required parameter 'addressId' is not null or undefined\n if (addressId === null || addressId === undefined) {\n throw new RequiredError('addressId','Required parameter addressId was null or undefined when calling updateUserAddress.');\n }\n const localVarPath = `/addresses/{addressId}`\n .replace(`{${\"addressId\"}}`, encodeURIComponent(String(addressId)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'PATCH', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n }\n};\n\n/**\n * AddressesApi - functional programming interface\n * @export\n */\nexport const AddressesApiFp = function(configuration?: Configuration) {\n return {\n /**\n * \n * @summary Create address for user\n * @param {CreateAddressDto} body \n * @param {string} userId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async adminCreateAddressForUser(body: CreateAddressDto, userId: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<Address>>> {\n const localVarAxiosArgs = await AddressesApiAxiosParamCreator(configuration).adminCreateAddressForUser(body, userId, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Delete address\n * @param {string} addressId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async adminDeleteUserAddress(addressId: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {\n const localVarAxiosArgs = await AddressesApiAxiosParamCreator(configuration).adminDeleteUserAddress(addressId, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get all addresses for user\n * @param {string} userId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async adminGetSingleUserAddresses(userId: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<Array<Address>>>> {\n const localVarAxiosArgs = await AddressesApiAxiosParamCreator(configuration).adminGetSingleUserAddresses(userId, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Update address\n * @param {UpdateAddressDto} body \n * @param {string} addressId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async adminUpdateUserAddress(body: UpdateAddressDto, addressId: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<Address>>> {\n const localVarAxiosArgs = await AddressesApiAxiosParamCreator(configuration).adminUpdateUserAddress(body, addressId, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Create address for store\n * @param {CreateStoreAddressDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async createAddressForStore(body: CreateStoreAddressDto, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<Address>>> {\n const localVarAxiosArgs = await AddressesApiAxiosParamCreator(configuration).createAddressForStore(body, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Create address for user\n * @param {CreateAddressDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async createAddressForUser(body: CreateAddressDto, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<Address>>> {\n const localVarAxiosArgs = await AddressesApiAxiosParamCreator(configuration).createAddressForUser(body, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Delete address\n * @param {string} addressId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async deleteUserAddress(addressId: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {\n const localVarAxiosArgs = await AddressesApiAxiosParamCreator(configuration).deleteUserAddress(addressId, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get all addresses for store\n * @param {string} storeId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getAllStoreAddresses(storeId: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<Array<Address>>>> {\n const localVarAxiosArgs = await AddressesApiAxiosParamCreator(configuration).getAllStoreAddresses(storeId, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get all addresses for user\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getAllUserAddresses(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<Array<Address>>>> {\n const localVarAxiosArgs = await AddressesApiAxiosParamCreator(configuration).getAllUserAddresses(options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get all addresses for user\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getMyAddresses(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<Array<Address>>>> {\n const localVarAxiosArgs = await AddressesApiAxiosParamCreator(configuration).getMyAddresses(options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get default address for user\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getMyDefaultAddress(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<Address>>> {\n const localVarAxiosArgs = await AddressesApiAxiosParamCreator(configuration).getMyDefaultAddress(options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get single address\n * @param {string} addressId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getSingleAddress(addressId: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<Address>>> {\n const localVarAxiosArgs = await AddressesApiAxiosParamCreator(configuration).getSingleAddress(addressId, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Set new default shipping address\n * @param {string} userId \n * @param {string} addressId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async setDefaultShippingAddress(userId: string, addressId: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {\n const localVarAxiosArgs = await AddressesApiAxiosParamCreator(configuration).setDefaultShippingAddress(userId, addressId, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Update default address for user\n * @param {string} addressId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async updateDefaultAddress(addressId: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<Address>>> {\n const localVarAxiosArgs = await AddressesApiAxiosParamCreator(configuration).updateDefaultAddress(addressId, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Update address\n * @param {UpdateAddressDto} body \n * @param {string} addressId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async updateUserAddress(body: UpdateAddressDto, addressId: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<Address>>> {\n const localVarAxiosArgs = await AddressesApiAxiosParamCreator(configuration).updateUserAddress(body, addressId, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n }\n};\n\n/**\n * AddressesApi - factory interface\n * @export\n */\nexport const AddressesApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {\n return {\n /**\n * \n * @summary Create address for user\n * @param {CreateAddressDto} body \n * @param {string} userId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async adminCreateAddressForUser(body: CreateAddressDto, userId: string, options?: AxiosRequestConfig): Promise<AxiosResponse<Address>> {\n return AddressesApiFp(configuration).adminCreateAddressForUser(body, userId, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Delete address\n * @param {string} addressId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async adminDeleteUserAddress(addressId: string, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {\n return AddressesApiFp(configuration).adminDeleteUserAddress(addressId, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get all addresses for user\n * @param {string} userId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async adminGetSingleUserAddresses(userId: string, options?: AxiosRequestConfig): Promise<AxiosResponse<Array<Address>>> {\n return AddressesApiFp(configuration).adminGetSingleUserAddresses(userId, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Update address\n * @param {UpdateAddressDto} body \n * @param {string} addressId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async adminUpdateUserAddress(body: UpdateAddressDto, addressId: string, options?: AxiosRequestConfig): Promise<AxiosResponse<Address>> {\n return AddressesApiFp(configuration).adminUpdateUserAddress(body, addressId, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Create address for store\n * @param {CreateStoreAddressDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async createAddressForStore(body: CreateStoreAddressDto, options?: AxiosRequestConfig): Promise<AxiosResponse<Address>> {\n return AddressesApiFp(configuration).createAddressForStore(body, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Create address for user\n * @param {CreateAddressDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async createAddressForUser(body: CreateAddressDto, options?: AxiosRequestConfig): Promise<AxiosResponse<Address>> {\n return AddressesApiFp(configuration).createAddressForUser(body, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Delete address\n * @param {string} addressId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async deleteUserAddress(addressId: string, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {\n return AddressesApiFp(configuration).deleteUserAddress(addressId, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get all addresses for store\n * @param {string} storeId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getAllStoreAddresses(storeId: string, options?: AxiosRequestConfig): Promise<AxiosResponse<Array<Address>>> {\n return AddressesApiFp(configuration).getAllStoreAddresses(storeId, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get all addresses for user\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getAllUserAddresses(options?: AxiosRequestConfig): Promise<AxiosResponse<Array<Address>>> {\n return AddressesApiFp(configuration).getAllUserAddresses(options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get all addresses for user\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getMyAddresses(options?: AxiosRequestConfig): Promise<AxiosResponse<Array<Address>>> {\n return AddressesApiFp(configuration).getMyAddresses(options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get default address for user\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getMyDefaultAddress(options?: AxiosRequestConfig): Promise<AxiosResponse<Address>> {\n return AddressesApiFp(configuration).getMyDefaultAddress(options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get single address\n * @param {string} addressId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getSingleAddress(addressId: string, options?: AxiosRequestConfig): Promise<AxiosResponse<Address>> {\n return AddressesApiFp(configuration).getSingleAddress(addressId, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Set new default shipping address\n * @param {string} userId \n * @param {string} addressId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async setDefaultShippingAddress(userId: string, addressId: string, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {\n return AddressesApiFp(configuration).setDefaultShippingAddress(userId, addressId, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Update default address for user\n * @param {string} addressId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async updateDefaultAddress(addressId: string, options?: AxiosRequestConfig): Promise<AxiosResponse<Address>> {\n return AddressesApiFp(configuration).updateDefaultAddress(addressId, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Update address\n * @param {UpdateAddressDto} body \n * @param {string} addressId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async updateUserAddress(body: UpdateAddressDto, addressId: string, options?: AxiosRequestConfig): Promise<AxiosResponse<Address>> {\n return AddressesApiFp(configuration).updateUserAddress(body, addressId, options).then((request) => request(axios, basePath));\n },\n };\n};\n\n/**\n * AddressesApi - object-oriented interface\n * @export\n * @class AddressesApi\n * @extends {BaseAPI}\n */\nexport class AddressesApi extends BaseAPI {\n /**\n * \n * @summary Create address for user\n * @param {CreateAddressDto} body \n * @param {string} userId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AddressesApi\n */\n public async adminCreateAddressForUser(body: CreateAddressDto, userId: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<Address>> {\n return AddressesApiFp(this.configuration).adminCreateAddressForUser(body, userId, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Delete address\n * @param {string} addressId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AddressesApi\n */\n public async adminDeleteUserAddress(addressId: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {\n return AddressesApiFp(this.configuration).adminDeleteUserAddress(addressId, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get all addresses for user\n * @param {string} userId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AddressesApi\n */\n public async adminGetSingleUserAddresses(userId: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<Array<Address>>> {\n return AddressesApiFp(this.configuration).adminGetSingleUserAddresses(userId, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Update address\n * @param {UpdateAddressDto} body \n * @param {string} addressId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AddressesApi\n */\n public async adminUpdateUserAddress(body: UpdateAddressDto, addressId: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<Address>> {\n return AddressesApiFp(this.configuration).adminUpdateUserAddress(body, addressId, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Create address for store\n * @param {CreateStoreAddressDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AddressesApi\n */\n public async createAddressForStore(body: CreateStoreAddressDto, options?: AxiosRequestConfig) : Promise<AxiosResponse<Address>> {\n return AddressesApiFp(this.configuration).createAddressForStore(body, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Create address for user\n * @param {CreateAddressDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AddressesApi\n */\n public async createAddressForUser(body: CreateAddressDto, options?: AxiosRequestConfig) : Promise<AxiosResponse<Address>> {\n return AddressesApiFp(this.configuration).createAddressForUser(body, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Delete address\n * @param {string} addressId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AddressesApi\n */\n public async deleteUserAddress(addressId: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {\n return AddressesApiFp(this.configuration).deleteUserAddress(addressId, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get all addresses for store\n * @param {string} storeId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AddressesApi\n */\n public async getAllStoreAddresses(storeId: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<Array<Address>>> {\n return AddressesApiFp(this.configuration).getAllStoreAddresses(storeId, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get all addresses for user\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AddressesApi\n */\n public async getAllUserAddresses(options?: AxiosRequestConfig) : Promise<AxiosResponse<Array<Address>>> {\n return AddressesApiFp(this.configuration).getAllUserAddresses(options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get all addresses for user\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AddressesApi\n */\n public async getMyAddresses(options?: AxiosRequestConfig) : Promise<AxiosResponse<Array<Address>>> {\n return AddressesApiFp(this.configuration).getMyAddresses(options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get default address for user\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AddressesApi\n */\n public async getMyDefaultAddress(options?: AxiosRequestConfig) : Promise<AxiosResponse<Address>> {\n return AddressesApiFp(this.configuration).getMyDefaultAddress(options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get single address\n * @param {string} addressId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AddressesApi\n */\n public async getSingleAddress(addressId: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<Address>> {\n return AddressesApiFp(this.configuration).getSingleAddress(addressId, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Set new default shipping address\n * @param {string} userId \n * @param {string} addressId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AddressesApi\n */\n public async setDefaultShippingAddress(userId: string, addressId: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {\n return AddressesApiFp(this.configuration).setDefaultShippingAddress(userId, addressId, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Update default address for user\n * @param {string} addressId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AddressesApi\n */\n public async updateDefaultAddress(addressId: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<Address>> {\n return AddressesApiFp(this.configuration).updateDefaultAddress(addressId, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Update address\n * @param {UpdateAddressDto} body \n * @param {string} addressId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof AddressesApi\n */\n public async updateUserAddress(body: UpdateAddressDto, addressId: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<Address>> {\n return AddressesApiFp(this.configuration).updateUserAddress(body, addressId, options).then((request) => request(this.axios, this.basePath));\n }\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Hey Pharamcist API\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\n *\n * OpenAPI spec version: 1.0\n * \n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport globalAxios, { AxiosResponse, AxiosInstance, AxiosRequestConfig } from 'axios';\nimport { Configuration } from '../configuration';\n// Some imports not used depending on template conditions\n// @ts-ignore\nimport { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '../base';\nimport { CartBodyDTO } from '../models';\nimport { CartResponseDto } from '../models';\nimport { ManualOrderDTO } from '../models';\n/**\n * CartApi - axios parameter creator\n * @export\n */\nexport const CartApiAxiosParamCreator = function (configuration?: Configuration) {\n return {\n /**\n * \n * @summary Clears the cart\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n clearCart: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n const localVarPath = `/cart/clearCart`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get the user cart\n * @param {string} [rateId] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getUserCart: async (rateId?: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n const localVarPath = `/cart/user/mine`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n if (rateId !== undefined) {\n localVarQueryParameter['rateId'] = rateId;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Update the user cart\n * @param {CartBodyDTO} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n handleUserCart: async (body: CartBodyDTO, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling handleUserCart.');\n }\n const localVarPath = `/cart/user/update`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'PATCH', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * this endpoint is used to calculate the cart for a visitor or for a manual order in the dashboard, it calculates the cart prices, discounts, taxes, shipping prices, and totals.\n * @summary to be used for visitor cart calculation and also dashboard manual order cart calculation\n * @param {ManualOrderDTO} body \n * @param {boolean} isDelivery \n * @param {string} [userId] \n * @param {string} [rateId] \n * @param {string} [addressId] The desired address id for the store location for the pickup\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n handleVisitorCart: async (body: ManualOrderDTO, isDelivery: boolean, userId?: string, rateId?: string, addressId?: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling handleVisitorCart.');\n }\n // verify required parameter 'isDelivery' is not null or undefined\n if (isDelivery === null || isDelivery === undefined) {\n throw new RequiredError('isDelivery','Required parameter isDelivery was null or undefined when calling handleVisitorCart.');\n }\n const localVarPath = `/cart/onspot/calculate`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n if (userId !== undefined) {\n localVarQueryParameter['userId'] = userId;\n }\n\n if (isDelivery !== undefined) {\n localVarQueryParameter['isDelivery'] = isDelivery;\n }\n\n if (rateId !== undefined) {\n localVarQueryParameter['rateId'] = rateId;\n }\n\n if (addressId !== undefined) {\n localVarQueryParameter['addressId'] = addressId;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n }\n};\n\n/**\n * CartApi - functional programming interface\n * @export\n */\nexport const CartApiFp = function(configuration?: Configuration) {\n return {\n /**\n * \n * @summary Clears the cart\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async clearCart(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {\n const localVarAxiosArgs = await CartApiAxiosParamCreator(configuration).clearCart(options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get the user cart\n * @param {string} [rateId] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getUserCart(rateId?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<CartResponseDto>>> {\n const localVarAxiosArgs = await CartApiAxiosParamCreator(configuration).getUserCart(rateId, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Update the user cart\n * @param {CartBodyDTO} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async handleUserCart(body: CartBodyDTO, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<CartResponseDto>>> {\n const localVarAxiosArgs = await CartApiAxiosParamCreator(configuration).handleUserCart(body, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * this endpoint is used to calculate the cart for a visitor or for a manual order in the dashboard, it calculates the cart prices, discounts, taxes, shipping prices, and totals.\n * @summary to be used for visitor cart calculation and also dashboard manual order cart calculation\n * @param {ManualOrderDTO} body \n * @param {boolean} isDelivery \n * @param {string} [userId] \n * @param {string} [rateId] \n * @param {string} [addressId] The desired address id for the store location for the pickup\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async handleVisitorCart(body: ManualOrderDTO, isDelivery: boolean, userId?: string, rateId?: string, addressId?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<CartResponseDto>>> {\n const localVarAxiosArgs = await CartApiAxiosParamCreator(configuration).handleVisitorCart(body, isDelivery, userId, rateId, addressId, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n }\n};\n\n/**\n * CartApi - factory interface\n * @export\n */\nexport const CartApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {\n return {\n /**\n * \n * @summary Clears the cart\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async clearCart(options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {\n return CartApiFp(configuration).clearCart(options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get the user cart\n * @param {string} [rateId] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getUserCart(rateId?: string, options?: AxiosRequestConfig): Promise<AxiosResponse<CartResponseDto>> {\n return CartApiFp(configuration).getUserCart(rateId, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Update the user cart\n * @param {CartBodyDTO} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async handleUserCart(body: CartBodyDTO, options?: AxiosRequestConfig): Promise<AxiosResponse<CartResponseDto>> {\n return CartApiFp(configuration).handleUserCart(body, options).then((request) => request(axios, basePath));\n },\n /**\n * this endpoint is used to calculate the cart for a visitor or for a manual order in the dashboard, it calculates the cart prices, discounts, taxes, shipping prices, and totals.\n * @summary to be used for visitor cart calculation and also dashboard manual order cart calculation\n * @param {ManualOrderDTO} body \n * @param {boolean} isDelivery \n * @param {string} [userId] \n * @param {string} [rateId] \n * @param {string} [addressId] The desired address id for the store location for the pickup\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async handleVisitorCart(body: ManualOrderDTO, isDelivery: boolean, userId?: string, rateId?: string, addressId?: string, options?: AxiosRequestConfig): Promise<AxiosResponse<CartResponseDto>> {\n return CartApiFp(configuration).handleVisitorCart(body, isDelivery, userId, rateId, addressId, options).then((request) => request(axios, basePath));\n },\n };\n};\n\n/**\n * CartApi - object-oriented interface\n * @export\n * @class CartApi\n * @extends {BaseAPI}\n */\nexport class CartApi extends BaseAPI {\n /**\n * \n * @summary Clears the cart\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof CartApi\n */\n public async clearCart(options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {\n return CartApiFp(this.configuration).clearCart(options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get the user cart\n * @param {string} [rateId] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof CartApi\n */\n public async getUserCart(rateId?: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<CartResponseDto>> {\n return CartApiFp(this.configuration).getUserCart(rateId, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Update the user cart\n * @param {CartBodyDTO} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof CartApi\n */\n public async handleUserCart(body: CartBodyDTO, options?: AxiosRequestConfig) : Promise<AxiosResponse<CartResponseDto>> {\n return CartApiFp(this.configuration).handleUserCart(body, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * this endpoint is used to calculate the cart for a visitor or for a manual order in the dashboard, it calculates the cart prices, discounts, taxes, shipping prices, and totals.\n * @summary to be used for visitor cart calculation and also dashboard manual order cart calculation\n * @param {ManualOrderDTO} body \n * @param {boolean} isDelivery \n * @param {string} [userId] \n * @param {string} [rateId] \n * @param {string} [addressId] The desired address id for the store location for the pickup\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof CartApi\n */\n public async handleVisitorCart(body: ManualOrderDTO, isDelivery: boolean, userId?: string, rateId?: string, addressId?: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<CartResponseDto>> {\n return CartApiFp(this.configuration).handleVisitorCart(body, isDelivery, userId, rateId, addressId, options).then((request) => request(this.axios, this.basePath));\n }\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Hey Pharamcist API\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\n *\n * OpenAPI spec version: 1.0\n * \n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport globalAxios, { AxiosResponse, AxiosInstance, AxiosRequestConfig } from 'axios';\nimport { Configuration } from '../configuration';\n// Some imports not used depending on template conditions\n// @ts-ignore\nimport { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '../base';\nimport { CategoriesPaginatedResponseDTO } from '../models';\nimport { Category } from '../models';\nimport { CategoryFilters } from '../models';\nimport { CategoryPopulated } from '../models';\nimport { CategorysHeadlinesResponseDTO } from '../models';\nimport { CreateCategoryDto } from '../models';\nimport { UpdateCategoryDto } from '../models';\n/**\n * CategoriesApi - axios parameter creator\n * @export\n */\nexport const CategoriesApiAxiosParamCreator = function (configuration?: Configuration) {\n return {\n /**\n * \n * @summary Create a new category\n * @param {CreateCategoryDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n createCategory: async (body: CreateCategoryDto, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling createCategory.');\n }\n const localVarPath = `/categories`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Delete category by id\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteCategory: async (id: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'id' is not null or undefined\n if (id === null || id === undefined) {\n throw new RequiredError('id','Required parameter id was null or undefined when calling deleteCategory.');\n }\n const localVarPath = `/categories/{id}`\n .replace(`{${\"id\"}}`, encodeURIComponent(String(id)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'DELETE', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get all categories for specific store\n * @param {string} [search] \n * @param {number} [limit] \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getAllCategories: async (search?: string, limit?: number, page?: number, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n const localVarPath = `/categories`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n if (search !== undefined) {\n localVarQueryParameter['search'] = search;\n }\n\n if (limit !== undefined) {\n localVarQueryParameter['limit'] = limit;\n }\n\n if (page !== undefined) {\n localVarQueryParameter['page'] = page;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get all categories for specific store and their subcategories and their products (as headlines and numbers only) \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getCategoreisAndSubCategories: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n const localVarPath = `/categories/headlines`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get category filters by id\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getCategoryFilters: async (id: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'id' is not null or undefined\n if (id === null || id === undefined) {\n throw new RequiredError('id','Required parameter id was null or undefined when calling getCategoryFilters.');\n }\n const localVarPath = `/categories/filters/{id}`\n .replace(`{${\"id\"}}`, encodeURIComponent(String(id)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get single category by id\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getSingleCategory: async (id: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'id' is not null or undefined\n if (id === null || id === undefined) {\n throw new RequiredError('id','Required parameter id was null or undefined when calling getSingleCategory.');\n }\n const localVarPath = `/categories/{id}`\n .replace(`{${\"id\"}}`, encodeURIComponent(String(id)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Update category by id\n * @param {UpdateCategoryDto} body \n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n updateCategory: async (body: UpdateCategoryDto, id: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling updateCategory.');\n }\n // verify required parameter 'id' is not null or undefined\n if (id === null || id === undefined) {\n throw new RequiredError('id','Required parameter id was null or undefined when calling updateCategory.');\n }\n const localVarPath = `/categories/{id}`\n .replace(`{${\"id\"}}`, encodeURIComponent(String(id)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'PATCH', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n }\n};\n\n/**\n * CategoriesApi - functional programming interface\n * @export\n */\nexport const CategoriesApiFp = function(configuration?: Configuration) {\n return {\n /**\n * \n * @summary Create a new category\n * @param {CreateCategoryDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async createCategory(body: CreateCategoryDto, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<Category>>> {\n const localVarAxiosArgs = await CategoriesApiAxiosParamCreator(configuration).createCategory(body, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Delete category by id\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async deleteCategory(id: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {\n const localVarAxiosArgs = await CategoriesApiAxiosParamCreator(configuration).deleteCategory(id, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get all categories for specific store\n * @param {string} [search] \n * @param {number} [limit] \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getAllCategories(search?: string, limit?: number, page?: number, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<CategoriesPaginatedResponseDTO>>> {\n const localVarAxiosArgs = await CategoriesApiAxiosParamCreator(configuration).getAllCategories(search, limit, page, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get all categories for specific store and their subcategories and their products (as headlines and numbers only) \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getCategoreisAndSubCategories(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<Array<CategorysHeadlinesResponseDTO>>>> {\n const localVarAxiosArgs = await CategoriesApiAxiosParamCreator(configuration).getCategoreisAndSubCategories(options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get category filters by id\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getCategoryFilters(id: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<CategoryFilters>>> {\n const localVarAxiosArgs = await CategoriesApiAxiosParamCreator(configuration).getCategoryFilters(id, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get single category by id\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getSingleCategory(id: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<CategoryPopulated>>> {\n const localVarAxiosArgs = await CategoriesApiAxiosParamCreator(configuration).getSingleCategory(id, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Update category by id\n * @param {UpdateCategoryDto} body \n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async updateCategory(body: UpdateCategoryDto, id: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<Category>>> {\n const localVarAxiosArgs = await CategoriesApiAxiosParamCreator(configuration).updateCategory(body, id, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n }\n};\n\n/**\n * CategoriesApi - factory interface\n * @export\n */\nexport const CategoriesApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {\n return {\n /**\n * \n * @summary Create a new category\n * @param {CreateCategoryDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async createCategory(body: CreateCategoryDto, options?: AxiosRequestConfig): Promise<AxiosResponse<Category>> {\n return CategoriesApiFp(configuration).createCategory(body, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Delete category by id\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async deleteCategory(id: string, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {\n return CategoriesApiFp(configuration).deleteCategory(id, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get all categories for specific store\n * @param {string} [search] \n * @param {number} [limit] \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getAllCategories(search?: string, limit?: number, page?: number, options?: AxiosRequestConfig): Promise<AxiosResponse<CategoriesPaginatedResponseDTO>> {\n return CategoriesApiFp(configuration).getAllCategories(search, limit, page, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get all categories for specific store and their subcategories and their products (as headlines and numbers only) \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getCategoreisAndSubCategories(options?: AxiosRequestConfig): Promise<AxiosResponse<Array<CategorysHeadlinesResponseDTO>>> {\n return CategoriesApiFp(configuration).getCategoreisAndSubCategories(options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get category filters by id\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getCategoryFilters(id: string, options?: AxiosRequestConfig): Promise<AxiosResponse<CategoryFilters>> {\n return CategoriesApiFp(configuration).getCategoryFilters(id, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get single category by id\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getSingleCategory(id: string, options?: AxiosRequestConfig): Promise<AxiosResponse<CategoryPopulated>> {\n return CategoriesApiFp(configuration).getSingleCategory(id, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Update category by id\n * @param {UpdateCategoryDto} body \n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async updateCategory(body: UpdateCategoryDto, id: string, options?: AxiosRequestConfig): Promise<AxiosResponse<Category>> {\n return CategoriesApiFp(configuration).updateCategory(body, id, options).then((request) => request(axios, basePath));\n },\n };\n};\n\n/**\n * CategoriesApi - object-oriented interface\n * @export\n * @class CategoriesApi\n * @extends {BaseAPI}\n */\nexport class CategoriesApi extends BaseAPI {\n /**\n * \n * @summary Create a new category\n * @param {CreateCategoryDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof CategoriesApi\n */\n public async createCategory(body: CreateCategoryDto, options?: AxiosRequestConfig) : Promise<AxiosResponse<Category>> {\n return CategoriesApiFp(this.configuration).createCategory(body, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Delete category by id\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof CategoriesApi\n */\n public async deleteCategory(id: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {\n return CategoriesApiFp(this.configuration).deleteCategory(id, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get all categories for specific store\n * @param {string} [search] \n * @param {number} [limit] \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof CategoriesApi\n */\n public async getAllCategories(search?: string, limit?: number, page?: number, options?: AxiosRequestConfig) : Promise<AxiosResponse<CategoriesPaginatedResponseDTO>> {\n return CategoriesApiFp(this.configuration).getAllCategories(search, limit, page, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get all categories for specific store and their subcategories and their products (as headlines and numbers only) \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof CategoriesApi\n */\n public async getCategoreisAndSubCategories(options?: AxiosRequestConfig) : Promise<AxiosResponse<Array<CategorysHeadlinesResponseDTO>>> {\n return CategoriesApiFp(this.configuration).getCategoreisAndSubCategories(options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get category filters by id\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof CategoriesApi\n */\n public async getCategoryFilters(id: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<CategoryFilters>> {\n return CategoriesApiFp(this.configuration).getCategoryFilters(id, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get single category by id\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof CategoriesApi\n */\n public async getSingleCategory(id: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<CategoryPopulated>> {\n return CategoriesApiFp(this.configuration).getSingleCategory(id, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Update category by id\n * @param {UpdateCategoryDto} body \n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof CategoriesApi\n */\n public async updateCategory(body: UpdateCategoryDto, id: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<Category>> {\n return CategoriesApiFp(this.configuration).updateCategory(body, id, options).then((request) => request(this.axios, this.basePath));\n }\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Hey Pharamcist API\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\n *\n * OpenAPI spec version: 1.0\n * \n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport globalAxios, { AxiosResponse, AxiosInstance, AxiosRequestConfig } from 'axios';\nimport { Configuration } from '../configuration';\n// Some imports not used depending on template conditions\n// @ts-ignore\nimport { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '../base';\nimport { EmailInvoiceDto } from '../models';\nimport { ManualOrderDTO } from '../models';\nimport { OrderPaginatedResponse } from '../models';\nimport { OrdersInsightsDto } from '../models';\nimport { PopulatedOrder } from '../models';\n/**\n * OrdersApi - axios parameter creator\n * @export\n */\nexport const OrdersApiAxiosParamCreator = function (configuration?: Configuration) {\n return {\n /**\n * \n * @summary Add payment method to Order\n * @param {string} orderId \n * @param {string} paymentMethod \n * @param {string} [billingAddressId] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n assignPaymentMethod: async (orderId: string, paymentMethod: string, billingAddressId?: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'orderId' is not null or undefined\n if (orderId === null || orderId === undefined) {\n throw new RequiredError('orderId','Required parameter orderId was null or undefined when calling assignPaymentMethod.');\n }\n // verify required parameter 'paymentMethod' is not null or undefined\n if (paymentMethod === null || paymentMethod === undefined) {\n throw new RequiredError('paymentMethod','Required parameter paymentMethod was null or undefined when calling assignPaymentMethod.');\n }\n const localVarPath = `/orders/assign-payment-method/{orderId}`\n .replace(`{${\"orderId\"}}`, encodeURIComponent(String(orderId)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n if (paymentMethod !== undefined) {\n localVarQueryParameter['paymentMethod'] = paymentMethod;\n }\n\n if (billingAddressId !== undefined) {\n localVarQueryParameter['billingAddressId'] = billingAddressId;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Cancel an order\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n cancelOrder: async (id: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'id' is not null or undefined\n if (id === null || id === undefined) {\n throw new RequiredError('id','Required parameter id was null or undefined when calling cancelOrder.');\n }\n const localVarPath = `/orders/cancel/{id}`\n .replace(`{${\"id\"}}`, encodeURIComponent(String(id)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'PATCH', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Create an Order\n * @param {ManualOrderDTO} body \n * @param {boolean} isDelivery \n * @param {string} [userId] \n * @param {string} [rateId] \n * @param {string} [billingAddressId] The desired address id for the billing address in case of paying by card\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n createCheckout: async (body: ManualOrderDTO, isDelivery: boolean, userId?: string, rateId?: string, billingAddressId?: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling createCheckout.');\n }\n // verify required parameter 'isDelivery' is not null or undefined\n if (isDelivery === null || isDelivery === undefined) {\n throw new RequiredError('isDelivery','Required parameter isDelivery was null or undefined when calling createCheckout.');\n }\n const localVarPath = `/orders/createOrder`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n if (userId !== undefined) {\n localVarQueryParameter['userId'] = userId;\n }\n\n if (isDelivery !== undefined) {\n localVarQueryParameter['isDelivery'] = isDelivery;\n }\n\n if (rateId !== undefined) {\n localVarQueryParameter['rateId'] = rateId;\n }\n\n if (billingAddressId !== undefined) {\n localVarQueryParameter['billingAddressId'] = billingAddressId;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Delete an order\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteOrder: async (id: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'id' is not null or undefined\n if (id === null || id === undefined) {\n throw new RequiredError('id','Required parameter id was null or undefined when calling deleteOrder.');\n }\n const localVarPath = `/orders/{id}`\n .replace(`{${\"id\"}}`, encodeURIComponent(String(id)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'DELETE', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get all orders\n * @param {string} [paymentStatus] \n * @param {string} [orderStatus] \n * @param {number} [page] \n * @param {number} [limit] \n * @param {string} [search] \n * @param {Date} [createdAfter] \n * @param {Date} [createdBefore] \n * @param {Date} [userId] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getAllOrders: async (paymentStatus?: string, orderStatus?: string, page?: number, limit?: number, search?: string, createdAfter?: Date, createdBefore?: Date, userId?: Date, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n const localVarPath = `/orders`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n if (paymentStatus !== undefined) {\n localVarQueryParameter['paymentStatus'] = paymentStatus;\n }\n\n if (orderStatus !== undefined) {\n localVarQueryParameter['orderStatus'] = orderStatus;\n }\n\n if (page !== undefined) {\n localVarQueryParameter['page'] = page;\n }\n\n if (limit !== undefined) {\n localVarQueryParameter['limit'] = limit;\n }\n\n if (search !== undefined) {\n localVarQueryParameter['search'] = search;\n }\n\n if (createdAfter !== undefined) {\n localVarQueryParameter['createdAfter'] = (createdAfter as any instanceof Date) ?\n (createdAfter as any).toISOString() :\n createdAfter;\n }\n\n if (createdBefore !== undefined) {\n localVarQueryParameter['createdBefore'] = (createdBefore as any instanceof Date) ?\n (createdBefore as any).toISOString() :\n createdBefore;\n }\n\n if (userId !== undefined) {\n localVarQueryParameter['userId'] = (userId as any instanceof Date) ?\n (userId as any).toISOString() :\n userId;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get an order by id\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getSingleOrder: async (id: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'id' is not null or undefined\n if (id === null || id === undefined) {\n throw new RequiredError('id','Required parameter id was null or undefined when calling getSingleOrder.');\n }\n const localVarPath = `/orders/{id}`\n .replace(`{${\"id\"}}`, encodeURIComponent(String(id)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get the insights for each type of orders\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getStoreOrderInsights: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n const localVarPath = `/orders/insights`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get all orders for the current user\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getUserOrders: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n const localVarPath = `/orders/user`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Pay for an Order\n * @param {string} orderId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n payOrder: async (orderId: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'orderId' is not null or undefined\n if (orderId === null || orderId === undefined) {\n throw new RequiredError('orderId','Required parameter orderId was null or undefined when calling payOrder.');\n }\n const localVarPath = `/orders/pay/{orderId}`\n .replace(`{${\"orderId\"}}`, encodeURIComponent(String(orderId)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Send an Invoice to email\n * @param {EmailInvoiceDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n sendOrderEmail: async (body: EmailInvoiceDto, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling sendOrderEmail.');\n }\n const localVarPath = `/orders/email`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Update an order\n * @param {ManualOrderDTO} body \n * @param {boolean} isDelivery \n * @param {string} id \n * @param {string} [paymentMethod] \n * @param {string} [userId] \n * @param {string} [rateId] \n * @param {string} [addressId] The desired address id for the store location for the pickup\n * @param {string} [billingAddressId] The desired address id for the billing address in case of paying by card\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n updateOrder: async (body: ManualOrderDTO, isDelivery: boolean, id: string, paymentMethod?: string, userId?: string, rateId?: string, addressId?: string, billingAddressId?: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling updateOrder.');\n }\n // verify required parameter 'isDelivery' is not null or undefined\n if (isDelivery === null || isDelivery === undefined) {\n throw new RequiredError('isDelivery','Required parameter isDelivery was null or undefined when calling updateOrder.');\n }\n // verify required parameter 'id' is not null or undefined\n if (id === null || id === undefined) {\n throw new RequiredError('id','Required parameter id was null or undefined when calling updateOrder.');\n }\n const localVarPath = `/orders/{id}`\n .replace(`{${\"id\"}}`, encodeURIComponent(String(id)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'PATCH', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n if (paymentMethod !== undefined) {\n localVarQueryParameter['paymentMethod'] = paymentMethod;\n }\n\n if (userId !== undefined) {\n localVarQueryParameter['userId'] = userId;\n }\n\n if (isDelivery !== undefined) {\n localVarQueryParameter['isDelivery'] = isDelivery;\n }\n\n if (rateId !== undefined) {\n localVarQueryParameter['rateId'] = rateId;\n }\n\n if (addressId !== undefined) {\n localVarQueryParameter['addressId'] = addressId;\n }\n\n if (billingAddressId !== undefined) {\n localVarQueryParameter['billingAddressId'] = billingAddressId;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Update an order status\n * @param {string} id \n * @param {string} orderStatus \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n updateOrderStatus: async (id: string, orderStatus: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'id' is not null or undefined\n if (id === null || id === undefined) {\n throw new RequiredError('id','Required parameter id was null or undefined when calling updateOrderStatus.');\n }\n // verify required parameter 'orderStatus' is not null or undefined\n if (orderStatus === null || orderStatus === undefined) {\n throw new RequiredError('orderStatus','Required parameter orderStatus was null or undefined when calling updateOrderStatus.');\n }\n const localVarPath = `/orders/{id}/status`\n .replace(`{${\"id\"}}`, encodeURIComponent(String(id)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'PATCH', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n if (orderStatus !== undefined) {\n localVarQueryParameter['orderStatus'] = orderStatus;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n }\n};\n\n/**\n * OrdersApi - functional programming interface\n * @export\n */\nexport const OrdersApiFp = function(configuration?: Configuration) {\n return {\n /**\n * \n * @summary Add payment method to Order\n * @param {string} orderId \n * @param {string} paymentMethod \n * @param {string} [billingAddressId] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async assignPaymentMethod(orderId: string, paymentMethod: string, billingAddressId?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<PopulatedOrder>>> {\n const localVarAxiosArgs = await OrdersApiAxiosParamCreator(configuration).assignPaymentMethod(orderId, paymentMethod, billingAddressId, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Cancel an order\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async cancelOrder(id: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<PopulatedOrder>>> {\n const localVarAxiosArgs = await OrdersApiAxiosParamCreator(configuration).cancelOrder(id, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Create an Order\n * @param {ManualOrderDTO} body \n * @param {boolean} isDelivery \n * @param {string} [userId] \n * @param {string} [rateId] \n * @param {string} [billingAddressId] The desired address id for the billing address in case of paying by card\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async createCheckout(body: ManualOrderDTO, isDelivery: boolean, userId?: string, rateId?: string, billingAddressId?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<PopulatedOrder>>> {\n const localVarAxiosArgs = await OrdersApiAxiosParamCreator(configuration).createCheckout(body, isDelivery, userId, rateId, billingAddressId, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Delete an order\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async deleteOrder(id: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {\n const localVarAxiosArgs = await OrdersApiAxiosParamCreator(configuration).deleteOrder(id, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get all orders\n * @param {string} [paymentStatus] \n * @param {string} [orderStatus] \n * @param {number} [page] \n * @param {number} [limit] \n * @param {string} [search] \n * @param {Date} [createdAfter] \n * @param {Date} [createdBefore] \n * @param {Date} [userId] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getAllOrders(paymentStatus?: string, orderStatus?: string, page?: number, limit?: number, search?: string, createdAfter?: Date, createdBefore?: Date, userId?: Date, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<OrderPaginatedResponse>>> {\n const localVarAxiosArgs = await OrdersApiAxiosParamCreator(configuration).getAllOrders(paymentStatus, orderStatus, page, limit, search, createdAfter, createdBefore, userId, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get an order by id\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getSingleOrder(id: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<PopulatedOrder>>> {\n const localVarAxiosArgs = await OrdersApiAxiosParamCreator(configuration).getSingleOrder(id, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get the insights for each type of orders\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getStoreOrderInsights(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<OrdersInsightsDto>>> {\n const localVarAxiosArgs = await OrdersApiAxiosParamCreator(configuration).getStoreOrderInsights(options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get all orders for the current user\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getUserOrders(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<Array<PopulatedOrder>>>> {\n const localVarAxiosArgs = await OrdersApiAxiosParamCreator(configuration).getUserOrders(options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Pay for an Order\n * @param {string} orderId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async payOrder(orderId: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<PopulatedOrder>>> {\n const localVarAxiosArgs = await OrdersApiAxiosParamCreator(configuration).payOrder(orderId, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Send an Invoice to email\n * @param {EmailInvoiceDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async sendOrderEmail(body: EmailInvoiceDto, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<string>>> {\n const localVarAxiosArgs = await OrdersApiAxiosParamCreator(configuration).sendOrderEmail(body, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Update an order\n * @param {ManualOrderDTO} body \n * @param {boolean} isDelivery \n * @param {string} id \n * @param {string} [paymentMethod] \n * @param {string} [userId] \n * @param {string} [rateId] \n * @param {string} [addressId] The desired address id for the store location for the pickup\n * @param {string} [billingAddressId] The desired address id for the billing address in case of paying by card\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async updateOrder(body: ManualOrderDTO, isDelivery: boolean, id: string, paymentMethod?: string, userId?: string, rateId?: string, addressId?: string, billingAddressId?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<PopulatedOrder>>> {\n const localVarAxiosArgs = await OrdersApiAxiosParamCreator(configuration).updateOrder(body, isDelivery, id, paymentMethod, userId, rateId, addressId, billingAddressId, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Update an order status\n * @param {string} id \n * @param {string} orderStatus \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async updateOrderStatus(id: string, orderStatus: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<PopulatedOrder>>> {\n const localVarAxiosArgs = await OrdersApiAxiosParamCreator(configuration).updateOrderStatus(id, orderStatus, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n }\n};\n\n/**\n * OrdersApi - factory interface\n * @export\n */\nexport const OrdersApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {\n return {\n /**\n * \n * @summary Add payment method to Order\n * @param {string} orderId \n * @param {string} paymentMethod \n * @param {string} [billingAddressId] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async assignPaymentMethod(orderId: string, paymentMethod: string, billingAddressId?: string, options?: AxiosRequestConfig): Promise<AxiosResponse<PopulatedOrder>> {\n return OrdersApiFp(configuration).assignPaymentMethod(orderId, paymentMethod, billingAddressId, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Cancel an order\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async cancelOrder(id: string, options?: AxiosRequestConfig): Promise<AxiosResponse<PopulatedOrder>> {\n return OrdersApiFp(configuration).cancelOrder(id, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Create an Order\n * @param {ManualOrderDTO} body \n * @param {boolean} isDelivery \n * @param {string} [userId] \n * @param {string} [rateId] \n * @param {string} [billingAddressId] The desired address id for the billing address in case of paying by card\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async createCheckout(body: ManualOrderDTO, isDelivery: boolean, userId?: string, rateId?: string, billingAddressId?: string, options?: AxiosRequestConfig): Promise<AxiosResponse<PopulatedOrder>> {\n return OrdersApiFp(configuration).createCheckout(body, isDelivery, userId, rateId, billingAddressId, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Delete an order\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async deleteOrder(id: string, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {\n return OrdersApiFp(configuration).deleteOrder(id, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get all orders\n * @param {string} [paymentStatus] \n * @param {string} [orderStatus] \n * @param {number} [page] \n * @param {number} [limit] \n * @param {string} [search] \n * @param {Date} [createdAfter] \n * @param {Date} [createdBefore] \n * @param {Date} [userId] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getAllOrders(paymentStatus?: string, orderStatus?: string, page?: number, limit?: number, search?: string, createdAfter?: Date, createdBefore?: Date, userId?: Date, options?: AxiosRequestConfig): Promise<AxiosResponse<OrderPaginatedResponse>> {\n return OrdersApiFp(configuration).getAllOrders(paymentStatus, orderStatus, page, limit, search, createdAfter, createdBefore, userId, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get an order by id\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getSingleOrder(id: string, options?: AxiosRequestConfig): Promise<AxiosResponse<PopulatedOrder>> {\n return OrdersApiFp(configuration).getSingleOrder(id, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get the insights for each type of orders\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getStoreOrderInsights(options?: AxiosRequestConfig): Promise<AxiosResponse<OrdersInsightsDto>> {\n return OrdersApiFp(configuration).getStoreOrderInsights(options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get all orders for the current user\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getUserOrders(options?: AxiosRequestConfig): Promise<AxiosResponse<Array<PopulatedOrder>>> {\n return OrdersApiFp(configuration).getUserOrders(options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Pay for an Order\n * @param {string} orderId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async payOrder(orderId: string, options?: AxiosRequestConfig): Promise<AxiosResponse<PopulatedOrder>> {\n return OrdersApiFp(configuration).payOrder(orderId, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Send an Invoice to email\n * @param {EmailInvoiceDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async sendOrderEmail(body: EmailInvoiceDto, options?: AxiosRequestConfig): Promise<AxiosResponse<string>> {\n return OrdersApiFp(configuration).sendOrderEmail(body, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Update an order\n * @param {ManualOrderDTO} body \n * @param {boolean} isDelivery \n * @param {string} id \n * @param {string} [paymentMethod] \n * @param {string} [userId] \n * @param {string} [rateId] \n * @param {string} [addressId] The desired address id for the store location for the pickup\n * @param {string} [billingAddressId] The desired address id for the billing address in case of paying by card\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async updateOrder(body: ManualOrderDTO, isDelivery: boolean, id: string, paymentMethod?: string, userId?: string, rateId?: string, addressId?: string, billingAddressId?: string, options?: AxiosRequestConfig): Promise<AxiosResponse<PopulatedOrder>> {\n return OrdersApiFp(configuration).updateOrder(body, isDelivery, id, paymentMethod, userId, rateId, addressId, billingAddressId, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Update an order status\n * @param {string} id \n * @param {string} orderStatus \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async updateOrderStatus(id: string, orderStatus: string, options?: AxiosRequestConfig): Promise<AxiosResponse<PopulatedOrder>> {\n return OrdersApiFp(configuration).updateOrderStatus(id, orderStatus, options).then((request) => request(axios, basePath));\n },\n };\n};\n\n/**\n * OrdersApi - object-oriented interface\n * @export\n * @class OrdersApi\n * @extends {BaseAPI}\n */\nexport class OrdersApi extends BaseAPI {\n /**\n * \n * @summary Add payment method to Order\n * @param {string} orderId \n * @param {string} paymentMethod \n * @param {string} [billingAddressId] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof OrdersApi\n */\n public async assignPaymentMethod(orderId: string, paymentMethod: string, billingAddressId?: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<PopulatedOrder>> {\n return OrdersApiFp(this.configuration).assignPaymentMethod(orderId, paymentMethod, billingAddressId, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Cancel an order\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof OrdersApi\n */\n public async cancelOrder(id: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<PopulatedOrder>> {\n return OrdersApiFp(this.configuration).cancelOrder(id, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Create an Order\n * @param {ManualOrderDTO} body \n * @param {boolean} isDelivery \n * @param {string} [userId] \n * @param {string} [rateId] \n * @param {string} [billingAddressId] The desired address id for the billing address in case of paying by card\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof OrdersApi\n */\n public async createCheckout(body: ManualOrderDTO, isDelivery: boolean, userId?: string, rateId?: string, billingAddressId?: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<PopulatedOrder>> {\n return OrdersApiFp(this.configuration).createCheckout(body, isDelivery, userId, rateId, billingAddressId, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Delete an order\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof OrdersApi\n */\n public async deleteOrder(id: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {\n return OrdersApiFp(this.configuration).deleteOrder(id, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get all orders\n * @param {string} [paymentStatus] \n * @param {string} [orderStatus] \n * @param {number} [page] \n * @param {number} [limit] \n * @param {string} [search] \n * @param {Date} [createdAfter] \n * @param {Date} [createdBefore] \n * @param {Date} [userId] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof OrdersApi\n */\n public async getAllOrders(paymentStatus?: string, orderStatus?: string, page?: number, limit?: number, search?: string, createdAfter?: Date, createdBefore?: Date, userId?: Date, options?: AxiosRequestConfig) : Promise<AxiosResponse<OrderPaginatedResponse>> {\n return OrdersApiFp(this.configuration).getAllOrders(paymentStatus, orderStatus, page, limit, search, createdAfter, createdBefore, userId, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get an order by id\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof OrdersApi\n */\n public async getSingleOrder(id: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<PopulatedOrder>> {\n return OrdersApiFp(this.configuration).getSingleOrder(id, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get the insights for each type of orders\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof OrdersApi\n */\n public async getStoreOrderInsights(options?: AxiosRequestConfig) : Promise<AxiosResponse<OrdersInsightsDto>> {\n return OrdersApiFp(this.configuration).getStoreOrderInsights(options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get all orders for the current user\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof OrdersApi\n */\n public async getUserOrders(options?: AxiosRequestConfig) : Promise<AxiosResponse<Array<PopulatedOrder>>> {\n return OrdersApiFp(this.configuration).getUserOrders(options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Pay for an Order\n * @param {string} orderId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof OrdersApi\n */\n public async payOrder(orderId: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<PopulatedOrder>> {\n return OrdersApiFp(this.configuration).payOrder(orderId, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Send an Invoice to email\n * @param {EmailInvoiceDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof OrdersApi\n */\n public async sendOrderEmail(body: EmailInvoiceDto, options?: AxiosRequestConfig) : Promise<AxiosResponse<string>> {\n return OrdersApiFp(this.configuration).sendOrderEmail(body, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Update an order\n * @param {ManualOrderDTO} body \n * @param {boolean} isDelivery \n * @param {string} id \n * @param {string} [paymentMethod] \n * @param {string} [userId] \n * @param {string} [rateId] \n * @param {string} [addressId] The desired address id for the store location for the pickup\n * @param {string} [billingAddressId] The desired address id for the billing address in case of paying by card\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof OrdersApi\n */\n public async updateOrder(body: ManualOrderDTO, isDelivery: boolean, id: string, paymentMethod?: string, userId?: string, rateId?: string, addressId?: string, billingAddressId?: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<PopulatedOrder>> {\n return OrdersApiFp(this.configuration).updateOrder(body, isDelivery, id, paymentMethod, userId, rateId, addressId, billingAddressId, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Update an order status\n * @param {string} id \n * @param {string} orderStatus \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof OrdersApi\n */\n public async updateOrderStatus(id: string, orderStatus: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<PopulatedOrder>> {\n return OrdersApiFp(this.configuration).updateOrderStatus(id, orderStatus, options).then((request) => request(this.axios, this.basePath));\n }\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Hey Pharamcist API\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\n *\n * OpenAPI spec version: 1.0\n * \n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport globalAxios, { AxiosResponse, AxiosInstance, AxiosRequestConfig } from 'axios';\nimport { Configuration } from '../configuration';\n// Some imports not used depending on template conditions\n// @ts-ignore\nimport { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '../base';\nimport { CategoryFilters } from '../models';\nimport { CreateProductDto } from '../models';\nimport { CreateSingleVariantProductDTO } from '../models';\nimport { ExtendedProductDTO } from '../models';\nimport { PaginatedProductsDto } from '../models';\nimport { ProductsInsightsDto } from '../models';\nimport { UpdateProductDto } from '../models';\n/**\n * ProductsApi - axios parameter creator\n * @export\n */\nexport const ProductsApiAxiosParamCreator = function (configuration?: Configuration) {\n return {\n /**\n * \n * @summary Create a product\n * @param {CreateProductDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n createProduct: async (body: CreateProductDto, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling createProduct.');\n }\n const localVarPath = `/products/create`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Create a Product that has a single variant\n * @param {CreateSingleVariantProductDTO} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n createSingleVariantProduct: async (body: CreateSingleVariantProductDTO, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling createSingleVariantProduct.');\n }\n const localVarPath = `/products/create-single-variant`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Delete a product\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n deleteProduct: async (id: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'id' is not null or undefined\n if (id === null || id === undefined) {\n throw new RequiredError('id','Required parameter id was null or undefined when calling deleteProduct.');\n }\n const localVarPath = `/products/{id}`\n .replace(`{${\"id\"}}`, encodeURIComponent(String(id)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'DELETE', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get all products of a specific category\n * @param {string} categoryId Category ID\n * @param {string} [searchTerm] OpenAI Search Query\n * @param {any} [attributes] Send any key-value pairs as query parameters (value is comma separated string)\n * @param {number} [maxPrice] highest price to filter with\n * @param {number} [minPrice] lowest price to filter with\n * @param {string} [brandFilter] brands to filter with (comma separated string)\n * @param {string} [availability] specifies whether to show available products or out of stock ones\n * @param {string} [sort] specifies which attribute to sort with\n * @param {boolean} [includeNoVariantProducts] \n * @param {boolean} [isActive] \n * @param {number} [limit] \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getAllCategoryProducts: async (categoryId: string, searchTerm?: string, attributes?: any, maxPrice?: number, minPrice?: number, brandFilter?: string, availability?: string, sort?: string, includeNoVariantProducts?: boolean, isActive?: boolean, limit?: number, page?: number, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'categoryId' is not null or undefined\n if (categoryId === null || categoryId === undefined) {\n throw new RequiredError('categoryId','Required parameter categoryId was null or undefined when calling getAllCategoryProducts.');\n }\n const localVarPath = `/products/allCategoryProducts/{categoryId}`\n .replace(`{${\"categoryId\"}}`, encodeURIComponent(String(categoryId)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n if (searchTerm !== undefined) {\n localVarQueryParameter['searchTerm'] = searchTerm;\n }\n\n if (attributes !== undefined) {\n localVarQueryParameter['attributes'] = attributes;\n }\n\n if (maxPrice !== undefined) {\n localVarQueryParameter['maxPrice'] = maxPrice;\n }\n\n if (minPrice !== undefined) {\n localVarQueryParameter['minPrice'] = minPrice;\n }\n\n if (brandFilter !== undefined) {\n localVarQueryParameter['brandFilter'] = brandFilter;\n }\n\n if (availability !== undefined) {\n localVarQueryParameter['availability'] = availability;\n }\n\n if (sort !== undefined) {\n localVarQueryParameter['sort'] = sort;\n }\n\n if (includeNoVariantProducts !== undefined) {\n localVarQueryParameter['includeNoVariantProducts'] = includeNoVariantProducts;\n }\n\n if (isActive !== undefined) {\n localVarQueryParameter['isActive'] = isActive;\n }\n\n if (limit !== undefined) {\n localVarQueryParameter['limit'] = limit;\n }\n\n if (page !== undefined) {\n localVarQueryParameter['page'] = page;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get all filters for products\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getAllFilters: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n const localVarPath = `/products/allFilters`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get all products of a specific sub category\n * @param {string} subCategoryId Sub Category ID\n * @param {string} [searchTerm] OpenAI Search Query\n * @param {number} [maxPrice] highest price to filter with\n * @param {number} [minPrice] lowest price to filter with\n * @param {string} [brandFilter] brands to filter with (comma separated string)\n * @param {string} [availability] specifies whether to show available products or out of stock ones\n * @param {string} [sort] specifies which attribute to sort with\n * @param {boolean} [includeNoVariantProducts] \n * @param {boolean} [isActive] \n * @param {number} [limit] \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getAllProducts: async (subCategoryId: string, searchTerm?: string, maxPrice?: number, minPrice?: number, brandFilter?: string, availability?: string, sort?: string, includeNoVariantProducts?: boolean, isActive?: boolean, limit?: number, page?: number, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'subCategoryId' is not null or undefined\n if (subCategoryId === null || subCategoryId === undefined) {\n throw new RequiredError('subCategoryId','Required parameter subCategoryId was null or undefined when calling getAllProducts.');\n }\n const localVarPath = `/products/allProducts/{subCategoryId}`\n .replace(`{${\"subCategoryId\"}}`, encodeURIComponent(String(subCategoryId)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n if (searchTerm !== undefined) {\n localVarQueryParameter['searchTerm'] = searchTerm;\n }\n\n if (maxPrice !== undefined) {\n localVarQueryParameter['maxPrice'] = maxPrice;\n }\n\n if (minPrice !== undefined) {\n localVarQueryParameter['minPrice'] = minPrice;\n }\n\n if (brandFilter !== undefined) {\n localVarQueryParameter['brandFilter'] = brandFilter;\n }\n\n if (availability !== undefined) {\n localVarQueryParameter['availability'] = availability;\n }\n\n if (sort !== undefined) {\n localVarQueryParameter['sort'] = sort;\n }\n\n if (includeNoVariantProducts !== undefined) {\n localVarQueryParameter['includeNoVariantProducts'] = includeNoVariantProducts;\n }\n\n if (isActive !== undefined) {\n localVarQueryParameter['isActive'] = isActive;\n }\n\n if (limit !== undefined) {\n localVarQueryParameter['limit'] = limit;\n }\n\n if (page !== undefined) {\n localVarQueryParameter['page'] = page;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get all products\n * @param {string} [searchTerm] OpenAI Search Query\n * @param {string} [productType] Product Type\n * @param {string} [categoryId] Category ID\n * @param {number} [maxPrice] highest price to filter with\n * @param {number} [minPrice] lowest price to filter with\n * @param {string} [brandFilter] brands to filter with (comma separated string)\n * @param {string} [availability] specifies whether to show available products or out of stock ones\n * @param {string} [sort] specifies which attribute to sort with\n * @param {boolean} [includeNoVariantProducts] \n * @param {boolean} [isActive] \n * @param {number} [limit] \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getAllProductsForStore: async (searchTerm?: string, productType?: string, categoryId?: string, maxPrice?: number, minPrice?: number, brandFilter?: string, availability?: string, sort?: string, includeNoVariantProducts?: boolean, isActive?: boolean, limit?: number, page?: number, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n const localVarPath = `/products/all`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n if (searchTerm !== undefined) {\n localVarQueryParameter['searchTerm'] = searchTerm;\n }\n\n if (productType !== undefined) {\n localVarQueryParameter['productType'] = productType;\n }\n\n if (categoryId !== undefined) {\n localVarQueryParameter['categoryId'] = categoryId;\n }\n\n if (maxPrice !== undefined) {\n localVarQueryParameter['maxPrice'] = maxPrice;\n }\n\n if (minPrice !== undefined) {\n localVarQueryParameter['minPrice'] = minPrice;\n }\n\n if (brandFilter !== undefined) {\n localVarQueryParameter['brandFilter'] = brandFilter;\n }\n\n if (availability !== undefined) {\n localVarQueryParameter['availability'] = availability;\n }\n\n if (sort !== undefined) {\n localVarQueryParameter['sort'] = sort;\n }\n\n if (includeNoVariantProducts !== undefined) {\n localVarQueryParameter['includeNoVariantProducts'] = includeNoVariantProducts;\n }\n\n if (isActive !== undefined) {\n localVarQueryParameter['isActive'] = isActive;\n }\n\n if (limit !== undefined) {\n localVarQueryParameter['limit'] = limit;\n }\n\n if (page !== undefined) {\n localVarQueryParameter['page'] = page;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get insights on store Products\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getProductsInsights: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n const localVarPath = `/products/insights`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get related products\n * @param {string} productId Product ID\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getRelatedProducts: async (productId: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'productId' is not null or undefined\n if (productId === null || productId === undefined) {\n throw new RequiredError('productId','Required parameter productId was null or undefined when calling getRelatedProducts.');\n }\n const localVarPath = `/products/relatedProducts/{productId}`\n .replace(`{${\"productId\"}}`, encodeURIComponent(String(productId)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get a single product\n * @param {string} id Product ID\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getSingleProduct: async (id: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'id' is not null or undefined\n if (id === null || id === undefined) {\n throw new RequiredError('id','Required parameter id was null or undefined when calling getSingleProduct.');\n }\n const localVarPath = `/products/singleProduct/{id}`\n .replace(`{${\"id\"}}`, encodeURIComponent(String(id)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get top selling products\n * @param {number} [limit] \n * @param {number} [page] \n * @param {boolean} [isActive] \n * @param {boolean} [includeNoVariantProducts] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getTopSellingProducts: async (limit?: number, page?: number, isActive?: boolean, includeNoVariantProducts?: boolean, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n const localVarPath = `/products/top-selling`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n if (limit !== undefined) {\n localVarQueryParameter['limit'] = limit;\n }\n\n if (page !== undefined) {\n localVarQueryParameter['page'] = page;\n }\n\n if (isActive !== undefined) {\n localVarQueryParameter['isActive'] = isActive;\n }\n\n if (includeNoVariantProducts !== undefined) {\n localVarQueryParameter['includeNoVariantProducts'] = includeNoVariantProducts;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Update a product\n * @param {UpdateProductDto} body \n * @param {string} id Product ID\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n updateProduct: async (body: UpdateProductDto, id: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling updateProduct.');\n }\n // verify required parameter 'id' is not null or undefined\n if (id === null || id === undefined) {\n throw new RequiredError('id','Required parameter id was null or undefined when calling updateProduct.');\n }\n const localVarPath = `/products/{id}`\n .replace(`{${\"id\"}}`, encodeURIComponent(String(id)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'PATCH', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n }\n};\n\n/**\n * ProductsApi - functional programming interface\n * @export\n */\nexport const ProductsApiFp = function(configuration?: Configuration) {\n return {\n /**\n * \n * @summary Create a product\n * @param {CreateProductDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async createProduct(body: CreateProductDto, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<ExtendedProductDTO>>> {\n const localVarAxiosArgs = await ProductsApiAxiosParamCreator(configuration).createProduct(body, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Create a Product that has a single variant\n * @param {CreateSingleVariantProductDTO} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async createSingleVariantProduct(body: CreateSingleVariantProductDTO, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<ExtendedProductDTO>>> {\n const localVarAxiosArgs = await ProductsApiAxiosParamCreator(configuration).createSingleVariantProduct(body, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Delete a product\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async deleteProduct(id: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {\n const localVarAxiosArgs = await ProductsApiAxiosParamCreator(configuration).deleteProduct(id, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get all products of a specific category\n * @param {string} categoryId Category ID\n * @param {string} [searchTerm] OpenAI Search Query\n * @param {any} [attributes] Send any key-value pairs as query parameters (value is comma separated string)\n * @param {number} [maxPrice] highest price to filter with\n * @param {number} [minPrice] lowest price to filter with\n * @param {string} [brandFilter] brands to filter with (comma separated string)\n * @param {string} [availability] specifies whether to show available products or out of stock ones\n * @param {string} [sort] specifies which attribute to sort with\n * @param {boolean} [includeNoVariantProducts] \n * @param {boolean} [isActive] \n * @param {number} [limit] \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getAllCategoryProducts(categoryId: string, searchTerm?: string, attributes?: any, maxPrice?: number, minPrice?: number, brandFilter?: string, availability?: string, sort?: string, includeNoVariantProducts?: boolean, isActive?: boolean, limit?: number, page?: number, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<PaginatedProductsDto>>> {\n const localVarAxiosArgs = await ProductsApiAxiosParamCreator(configuration).getAllCategoryProducts(categoryId, searchTerm, attributes, maxPrice, minPrice, brandFilter, availability, sort, includeNoVariantProducts, isActive, limit, page, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get all filters for products\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getAllFilters(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<CategoryFilters>>> {\n const localVarAxiosArgs = await ProductsApiAxiosParamCreator(configuration).getAllFilters(options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get all products of a specific sub category\n * @param {string} subCategoryId Sub Category ID\n * @param {string} [searchTerm] OpenAI Search Query\n * @param {number} [maxPrice] highest price to filter with\n * @param {number} [minPrice] lowest price to filter with\n * @param {string} [brandFilter] brands to filter with (comma separated string)\n * @param {string} [availability] specifies whether to show available products or out of stock ones\n * @param {string} [sort] specifies which attribute to sort with\n * @param {boolean} [includeNoVariantProducts] \n * @param {boolean} [isActive] \n * @param {number} [limit] \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getAllProducts(subCategoryId: string, searchTerm?: string, maxPrice?: number, minPrice?: number, brandFilter?: string, availability?: string, sort?: string, includeNoVariantProducts?: boolean, isActive?: boolean, limit?: number, page?: number, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<PaginatedProductsDto>>> {\n const localVarAxiosArgs = await ProductsApiAxiosParamCreator(configuration).getAllProducts(subCategoryId, searchTerm, maxPrice, minPrice, brandFilter, availability, sort, includeNoVariantProducts, isActive, limit, page, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get all products\n * @param {string} [searchTerm] OpenAI Search Query\n * @param {string} [productType] Product Type\n * @param {string} [categoryId] Category ID\n * @param {number} [maxPrice] highest price to filter with\n * @param {number} [minPrice] lowest price to filter with\n * @param {string} [brandFilter] brands to filter with (comma separated string)\n * @param {string} [availability] specifies whether to show available products or out of stock ones\n * @param {string} [sort] specifies which attribute to sort with\n * @param {boolean} [includeNoVariantProducts] \n * @param {boolean} [isActive] \n * @param {number} [limit] \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getAllProductsForStore(searchTerm?: string, productType?: string, categoryId?: string, maxPrice?: number, minPrice?: number, brandFilter?: string, availability?: string, sort?: string, includeNoVariantProducts?: boolean, isActive?: boolean, limit?: number, page?: number, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<PaginatedProductsDto>>> {\n const localVarAxiosArgs = await ProductsApiAxiosParamCreator(configuration).getAllProductsForStore(searchTerm, productType, categoryId, maxPrice, minPrice, brandFilter, availability, sort, includeNoVariantProducts, isActive, limit, page, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get insights on store Products\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getProductsInsights(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<ProductsInsightsDto>>> {\n const localVarAxiosArgs = await ProductsApiAxiosParamCreator(configuration).getProductsInsights(options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get related products\n * @param {string} productId Product ID\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getRelatedProducts(productId: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<Array<ExtendedProductDTO>>>> {\n const localVarAxiosArgs = await ProductsApiAxiosParamCreator(configuration).getRelatedProducts(productId, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get a single product\n * @param {string} id Product ID\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getSingleProduct(id: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<ExtendedProductDTO>>> {\n const localVarAxiosArgs = await ProductsApiAxiosParamCreator(configuration).getSingleProduct(id, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get top selling products\n * @param {number} [limit] \n * @param {number} [page] \n * @param {boolean} [isActive] \n * @param {boolean} [includeNoVariantProducts] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getTopSellingProducts(limit?: number, page?: number, isActive?: boolean, includeNoVariantProducts?: boolean, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<PaginatedProductsDto>>> {\n const localVarAxiosArgs = await ProductsApiAxiosParamCreator(configuration).getTopSellingProducts(limit, page, isActive, includeNoVariantProducts, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Update a product\n * @param {UpdateProductDto} body \n * @param {string} id Product ID\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async updateProduct(body: UpdateProductDto, id: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<ExtendedProductDTO>>> {\n const localVarAxiosArgs = await ProductsApiAxiosParamCreator(configuration).updateProduct(body, id, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n }\n};\n\n/**\n * ProductsApi - factory interface\n * @export\n */\nexport const ProductsApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {\n return {\n /**\n * \n * @summary Create a product\n * @param {CreateProductDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async createProduct(body: CreateProductDto, options?: AxiosRequestConfig): Promise<AxiosResponse<ExtendedProductDTO>> {\n return ProductsApiFp(configuration).createProduct(body, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Create a Product that has a single variant\n * @param {CreateSingleVariantProductDTO} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async createSingleVariantProduct(body: CreateSingleVariantProductDTO, options?: AxiosRequestConfig): Promise<AxiosResponse<ExtendedProductDTO>> {\n return ProductsApiFp(configuration).createSingleVariantProduct(body, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Delete a product\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async deleteProduct(id: string, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {\n return ProductsApiFp(configuration).deleteProduct(id, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get all products of a specific category\n * @param {string} categoryId Category ID\n * @param {string} [searchTerm] OpenAI Search Query\n * @param {any} [attributes] Send any key-value pairs as query parameters (value is comma separated string)\n * @param {number} [maxPrice] highest price to filter with\n * @param {number} [minPrice] lowest price to filter with\n * @param {string} [brandFilter] brands to filter with (comma separated string)\n * @param {string} [availability] specifies whether to show available products or out of stock ones\n * @param {string} [sort] specifies which attribute to sort with\n * @param {boolean} [includeNoVariantProducts] \n * @param {boolean} [isActive] \n * @param {number} [limit] \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getAllCategoryProducts(categoryId: string, searchTerm?: string, attributes?: any, maxPrice?: number, minPrice?: number, brandFilter?: string, availability?: string, sort?: string, includeNoVariantProducts?: boolean, isActive?: boolean, limit?: number, page?: number, options?: AxiosRequestConfig): Promise<AxiosResponse<PaginatedProductsDto>> {\n return ProductsApiFp(configuration).getAllCategoryProducts(categoryId, searchTerm, attributes, maxPrice, minPrice, brandFilter, availability, sort, includeNoVariantProducts, isActive, limit, page, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get all filters for products\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getAllFilters(options?: AxiosRequestConfig): Promise<AxiosResponse<CategoryFilters>> {\n return ProductsApiFp(configuration).getAllFilters(options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get all products of a specific sub category\n * @param {string} subCategoryId Sub Category ID\n * @param {string} [searchTerm] OpenAI Search Query\n * @param {number} [maxPrice] highest price to filter with\n * @param {number} [minPrice] lowest price to filter with\n * @param {string} [brandFilter] brands to filter with (comma separated string)\n * @param {string} [availability] specifies whether to show available products or out of stock ones\n * @param {string} [sort] specifies which attribute to sort with\n * @param {boolean} [includeNoVariantProducts] \n * @param {boolean} [isActive] \n * @param {number} [limit] \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getAllProducts(subCategoryId: string, searchTerm?: string, maxPrice?: number, minPrice?: number, brandFilter?: string, availability?: string, sort?: string, includeNoVariantProducts?: boolean, isActive?: boolean, limit?: number, page?: number, options?: AxiosRequestConfig): Promise<AxiosResponse<PaginatedProductsDto>> {\n return ProductsApiFp(configuration).getAllProducts(subCategoryId, searchTerm, maxPrice, minPrice, brandFilter, availability, sort, includeNoVariantProducts, isActive, limit, page, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get all products\n * @param {string} [searchTerm] OpenAI Search Query\n * @param {string} [productType] Product Type\n * @param {string} [categoryId] Category ID\n * @param {number} [maxPrice] highest price to filter with\n * @param {number} [minPrice] lowest price to filter with\n * @param {string} [brandFilter] brands to filter with (comma separated string)\n * @param {string} [availability] specifies whether to show available products or out of stock ones\n * @param {string} [sort] specifies which attribute to sort with\n * @param {boolean} [includeNoVariantProducts] \n * @param {boolean} [isActive] \n * @param {number} [limit] \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getAllProductsForStore(searchTerm?: string, productType?: string, categoryId?: string, maxPrice?: number, minPrice?: number, brandFilter?: string, availability?: string, sort?: string, includeNoVariantProducts?: boolean, isActive?: boolean, limit?: number, page?: number, options?: AxiosRequestConfig): Promise<AxiosResponse<PaginatedProductsDto>> {\n return ProductsApiFp(configuration).getAllProductsForStore(searchTerm, productType, categoryId, maxPrice, minPrice, brandFilter, availability, sort, includeNoVariantProducts, isActive, limit, page, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get insights on store Products\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getProductsInsights(options?: AxiosRequestConfig): Promise<AxiosResponse<ProductsInsightsDto>> {\n return ProductsApiFp(configuration).getProductsInsights(options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get related products\n * @param {string} productId Product ID\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getRelatedProducts(productId: string, options?: AxiosRequestConfig): Promise<AxiosResponse<Array<ExtendedProductDTO>>> {\n return ProductsApiFp(configuration).getRelatedProducts(productId, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get a single product\n * @param {string} id Product ID\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getSingleProduct(id: string, options?: AxiosRequestConfig): Promise<AxiosResponse<ExtendedProductDTO>> {\n return ProductsApiFp(configuration).getSingleProduct(id, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get top selling products\n * @param {number} [limit] \n * @param {number} [page] \n * @param {boolean} [isActive] \n * @param {boolean} [includeNoVariantProducts] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getTopSellingProducts(limit?: number, page?: number, isActive?: boolean, includeNoVariantProducts?: boolean, options?: AxiosRequestConfig): Promise<AxiosResponse<PaginatedProductsDto>> {\n return ProductsApiFp(configuration).getTopSellingProducts(limit, page, isActive, includeNoVariantProducts, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Update a product\n * @param {UpdateProductDto} body \n * @param {string} id Product ID\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async updateProduct(body: UpdateProductDto, id: string, options?: AxiosRequestConfig): Promise<AxiosResponse<ExtendedProductDTO>> {\n return ProductsApiFp(configuration).updateProduct(body, id, options).then((request) => request(axios, basePath));\n },\n };\n};\n\n/**\n * ProductsApi - object-oriented interface\n * @export\n * @class ProductsApi\n * @extends {BaseAPI}\n */\nexport class ProductsApi extends BaseAPI {\n /**\n * \n * @summary Create a product\n * @param {CreateProductDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof ProductsApi\n */\n public async createProduct(body: CreateProductDto, options?: AxiosRequestConfig) : Promise<AxiosResponse<ExtendedProductDTO>> {\n return ProductsApiFp(this.configuration).createProduct(body, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Create a Product that has a single variant\n * @param {CreateSingleVariantProductDTO} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof ProductsApi\n */\n public async createSingleVariantProduct(body: CreateSingleVariantProductDTO, options?: AxiosRequestConfig) : Promise<AxiosResponse<ExtendedProductDTO>> {\n return ProductsApiFp(this.configuration).createSingleVariantProduct(body, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Delete a product\n * @param {string} id \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof ProductsApi\n */\n public async deleteProduct(id: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {\n return ProductsApiFp(this.configuration).deleteProduct(id, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get all products of a specific category\n * @param {string} categoryId Category ID\n * @param {string} [searchTerm] OpenAI Search Query\n * @param {any} [attributes] Send any key-value pairs as query parameters (value is comma separated string)\n * @param {number} [maxPrice] highest price to filter with\n * @param {number} [minPrice] lowest price to filter with\n * @param {string} [brandFilter] brands to filter with (comma separated string)\n * @param {string} [availability] specifies whether to show available products or out of stock ones\n * @param {string} [sort] specifies which attribute to sort with\n * @param {boolean} [includeNoVariantProducts] \n * @param {boolean} [isActive] \n * @param {number} [limit] \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof ProductsApi\n */\n public async getAllCategoryProducts(categoryId: string, searchTerm?: string, attributes?: any, maxPrice?: number, minPrice?: number, brandFilter?: string, availability?: string, sort?: string, includeNoVariantProducts?: boolean, isActive?: boolean, limit?: number, page?: number, options?: AxiosRequestConfig) : Promise<AxiosResponse<PaginatedProductsDto>> {\n return ProductsApiFp(this.configuration).getAllCategoryProducts(categoryId, searchTerm, attributes, maxPrice, minPrice, brandFilter, availability, sort, includeNoVariantProducts, isActive, limit, page, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get all filters for products\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof ProductsApi\n */\n public async getAllFilters(options?: AxiosRequestConfig) : Promise<AxiosResponse<CategoryFilters>> {\n return ProductsApiFp(this.configuration).getAllFilters(options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get all products of a specific sub category\n * @param {string} subCategoryId Sub Category ID\n * @param {string} [searchTerm] OpenAI Search Query\n * @param {number} [maxPrice] highest price to filter with\n * @param {number} [minPrice] lowest price to filter with\n * @param {string} [brandFilter] brands to filter with (comma separated string)\n * @param {string} [availability] specifies whether to show available products or out of stock ones\n * @param {string} [sort] specifies which attribute to sort with\n * @param {boolean} [includeNoVariantProducts] \n * @param {boolean} [isActive] \n * @param {number} [limit] \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof ProductsApi\n */\n public async getAllProducts(subCategoryId: string, searchTerm?: string, maxPrice?: number, minPrice?: number, brandFilter?: string, availability?: string, sort?: string, includeNoVariantProducts?: boolean, isActive?: boolean, limit?: number, page?: number, options?: AxiosRequestConfig) : Promise<AxiosResponse<PaginatedProductsDto>> {\n return ProductsApiFp(this.configuration).getAllProducts(subCategoryId, searchTerm, maxPrice, minPrice, brandFilter, availability, sort, includeNoVariantProducts, isActive, limit, page, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get all products\n * @param {string} [searchTerm] OpenAI Search Query\n * @param {string} [productType] Product Type\n * @param {string} [categoryId] Category ID\n * @param {number} [maxPrice] highest price to filter with\n * @param {number} [minPrice] lowest price to filter with\n * @param {string} [brandFilter] brands to filter with (comma separated string)\n * @param {string} [availability] specifies whether to show available products or out of stock ones\n * @param {string} [sort] specifies which attribute to sort with\n * @param {boolean} [includeNoVariantProducts] \n * @param {boolean} [isActive] \n * @param {number} [limit] \n * @param {number} [page] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof ProductsApi\n */\n public async getAllProductsForStore(searchTerm?: string, productType?: string, categoryId?: string, maxPrice?: number, minPrice?: number, brandFilter?: string, availability?: string, sort?: string, includeNoVariantProducts?: boolean, isActive?: boolean, limit?: number, page?: number, options?: AxiosRequestConfig) : Promise<AxiosResponse<PaginatedProductsDto>> {\n return ProductsApiFp(this.configuration).getAllProductsForStore(searchTerm, productType, categoryId, maxPrice, minPrice, brandFilter, availability, sort, includeNoVariantProducts, isActive, limit, page, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get insights on store Products\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof ProductsApi\n */\n public async getProductsInsights(options?: AxiosRequestConfig) : Promise<AxiosResponse<ProductsInsightsDto>> {\n return ProductsApiFp(this.configuration).getProductsInsights(options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get related products\n * @param {string} productId Product ID\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof ProductsApi\n */\n public async getRelatedProducts(productId: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<Array<ExtendedProductDTO>>> {\n return ProductsApiFp(this.configuration).getRelatedProducts(productId, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get a single product\n * @param {string} id Product ID\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof ProductsApi\n */\n public async getSingleProduct(id: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<ExtendedProductDTO>> {\n return ProductsApiFp(this.configuration).getSingleProduct(id, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get top selling products\n * @param {number} [limit] \n * @param {number} [page] \n * @param {boolean} [isActive] \n * @param {boolean} [includeNoVariantProducts] \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof ProductsApi\n */\n public async getTopSellingProducts(limit?: number, page?: number, isActive?: boolean, includeNoVariantProducts?: boolean, options?: AxiosRequestConfig) : Promise<AxiosResponse<PaginatedProductsDto>> {\n return ProductsApiFp(this.configuration).getTopSellingProducts(limit, page, isActive, includeNoVariantProducts, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Update a product\n * @param {UpdateProductDto} body \n * @param {string} id Product ID\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof ProductsApi\n */\n public async updateProduct(body: UpdateProductDto, id: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<ExtendedProductDTO>> {\n return ProductsApiFp(this.configuration).updateProduct(body, id, options).then((request) => request(this.axios, this.basePath));\n }\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Hey Pharamcist API\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\n *\n * OpenAPI spec version: 1.0\n * \n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport globalAxios, { AxiosResponse, AxiosInstance, AxiosRequestConfig } from 'axios';\nimport { Configuration } from '../configuration';\n// Some imports not used depending on template conditions\n// @ts-ignore\nimport { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '../base';\nimport { CartBodyDTO } from '../models';\nimport { CreateZoneDto } from '../models';\nimport { Shipment } from '../models';\nimport { ShipmentWithOrder } from '../models';\nimport { UpdateZoneDto } from '../models';\nimport { Zone } from '../models';\n/**\n * ShippingApi - axios parameter creator\n * @export\n */\nexport const ShippingApiAxiosParamCreator = function (configuration?: Configuration) {\n return {\n /**\n * \n * @summary Create zone\n * @param {CreateZoneDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n createZone: async (body: CreateZoneDto, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling createZone.');\n }\n const localVarPath = `/shipping/zones/create`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get all shipments\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getAllShipments: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n const localVarPath = `/shipping/shipments`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get all user shipments\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getAllUserShipments: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n const localVarPath = `/shipping/user/shipments`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get order shipment\n * @param {string} orderId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getOrderShipment: async (orderId: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'orderId' is not null or undefined\n if (orderId === null || orderId === undefined) {\n throw new RequiredError('orderId','Required parameter orderId was null or undefined when calling getOrderShipment.');\n }\n const localVarPath = `/shipping/order/shipment/{orderId}`\n .replace(`{${\"orderId\"}}`, encodeURIComponent(String(orderId)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get shipping rates\n * @param {CartBodyDTO} body \n * @param {string} addressId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getShippingRates: async (body: CartBodyDTO, addressId: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling getShippingRates.');\n }\n // verify required parameter 'addressId' is not null or undefined\n if (addressId === null || addressId === undefined) {\n throw new RequiredError('addressId','Required parameter addressId was null or undefined when calling getShippingRates.');\n }\n const localVarPath = `/shipping/rates/{addressId}`\n .replace(`{${\"addressId\"}}`, encodeURIComponent(String(addressId)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Get zones\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n getZones: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n const localVarPath = `/shipping/zones`;\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n /**\n * \n * @summary Update zone\n * @param {UpdateZoneDto} body \n * @param {string} zoneId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n updateZone: async (body: UpdateZoneDto, zoneId: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {\n // verify required parameter 'body' is not null or undefined\n if (body === null || body === undefined) {\n throw new RequiredError('body','Required parameter body was null or undefined when calling updateZone.');\n }\n // verify required parameter 'zoneId' is not null or undefined\n if (zoneId === null || zoneId === undefined) {\n throw new RequiredError('zoneId','Required parameter zoneId was null or undefined when calling updateZone.');\n }\n const localVarPath = `/shipping/zones/{zoneId}`\n .replace(`{${\"zoneId\"}}`, encodeURIComponent(String(zoneId)));\n // use dummy base URL string because the URL constructor only accepts absolute URLs.\n const localVarUrlObj = new URL(localVarPath, 'https://example.com');\n let baseOptions;\n if (configuration) {\n baseOptions = configuration.baseOptions;\n }\n const localVarRequestOptions :AxiosRequestConfig = { method: 'PUT', ...baseOptions, ...options};\n const localVarHeaderParameter = {} as any;\n const localVarQueryParameter = {} as any;\n\n // authentication bearer required\n // http bearer authentication required\n if (configuration && configuration.accessToken) {\n const accessToken = typeof configuration.accessToken === 'function'\n ? await configuration.accessToken()\n : await configuration.accessToken;\n localVarHeaderParameter[\"Authorization\"] = \"Bearer \" + accessToken;\n }\n\n // authentication x-store-key required\n if (configuration && configuration.apiKey) {\n const localVarApiKeyValue = typeof configuration.apiKey === 'function'\n ? await configuration.apiKey(\"x-store-key\")\n : await configuration.apiKey;\n localVarHeaderParameter[\"x-store-key\"] = localVarApiKeyValue;\n }\n\n localVarHeaderParameter['Content-Type'] = 'application/json';\n\n const query = new URLSearchParams(localVarUrlObj.search);\n for (const key in localVarQueryParameter) {\n query.set(key, localVarQueryParameter[key]);\n }\n for (const key in options.params) {\n query.set(key, options.params[key]);\n }\n localVarUrlObj.search = (new URLSearchParams(query)).toString();\n let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};\n const needsSerialization = (typeof body !== \"string\") || (localVarRequestOptions.headers ||= {})['Content-Type'] === 'application/json';\n localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || \"\");\n\n return {\n url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,\n options: localVarRequestOptions,\n };\n },\n }\n};\n\n/**\n * ShippingApi - functional programming interface\n * @export\n */\nexport const ShippingApiFp = function(configuration?: Configuration) {\n return {\n /**\n * \n * @summary Create zone\n * @param {CreateZoneDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async createZone(body: CreateZoneDto, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<Zone>>> {\n const localVarAxiosArgs = await ShippingApiAxiosParamCreator(configuration).createZone(body, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get all shipments\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getAllShipments(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<Array<ShipmentWithOrder>>>> {\n const localVarAxiosArgs = await ShippingApiAxiosParamCreator(configuration).getAllShipments(options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get all user shipments\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getAllUserShipments(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<Array<Shipment>>>> {\n const localVarAxiosArgs = await ShippingApiAxiosParamCreator(configuration).getAllUserShipments(options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get order shipment\n * @param {string} orderId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getOrderShipment(orderId: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<Shipment>>> {\n const localVarAxiosArgs = await ShippingApiAxiosParamCreator(configuration).getOrderShipment(orderId, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get shipping rates\n * @param {CartBodyDTO} body \n * @param {string} addressId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getShippingRates(body: CartBodyDTO, addressId: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {\n const localVarAxiosArgs = await ShippingApiAxiosParamCreator(configuration).getShippingRates(body, addressId, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Get zones\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getZones(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<Array<Zone>>>> {\n const localVarAxiosArgs = await ShippingApiAxiosParamCreator(configuration).getZones(options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n /**\n * \n * @summary Update zone\n * @param {UpdateZoneDto} body \n * @param {string} zoneId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async updateZone(body: UpdateZoneDto, zoneId: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<Zone>>> {\n const localVarAxiosArgs = await ShippingApiAxiosParamCreator(configuration).updateZone(body, zoneId, options);\n return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {\n const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};\n return axios.request(axiosRequestArgs);\n };\n },\n }\n};\n\n/**\n * ShippingApi - factory interface\n * @export\n */\nexport const ShippingApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {\n return {\n /**\n * \n * @summary Create zone\n * @param {CreateZoneDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async createZone(body: CreateZoneDto, options?: AxiosRequestConfig): Promise<AxiosResponse<Zone>> {\n return ShippingApiFp(configuration).createZone(body, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get all shipments\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getAllShipments(options?: AxiosRequestConfig): Promise<AxiosResponse<Array<ShipmentWithOrder>>> {\n return ShippingApiFp(configuration).getAllShipments(options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get all user shipments\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getAllUserShipments(options?: AxiosRequestConfig): Promise<AxiosResponse<Array<Shipment>>> {\n return ShippingApiFp(configuration).getAllUserShipments(options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get order shipment\n * @param {string} orderId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getOrderShipment(orderId: string, options?: AxiosRequestConfig): Promise<AxiosResponse<Shipment>> {\n return ShippingApiFp(configuration).getOrderShipment(orderId, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get shipping rates\n * @param {CartBodyDTO} body \n * @param {string} addressId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getShippingRates(body: CartBodyDTO, addressId: string, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {\n return ShippingApiFp(configuration).getShippingRates(body, addressId, options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Get zones\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async getZones(options?: AxiosRequestConfig): Promise<AxiosResponse<Array<Zone>>> {\n return ShippingApiFp(configuration).getZones(options).then((request) => request(axios, basePath));\n },\n /**\n * \n * @summary Update zone\n * @param {UpdateZoneDto} body \n * @param {string} zoneId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n */\n async updateZone(body: UpdateZoneDto, zoneId: string, options?: AxiosRequestConfig): Promise<AxiosResponse<Zone>> {\n return ShippingApiFp(configuration).updateZone(body, zoneId, options).then((request) => request(axios, basePath));\n },\n };\n};\n\n/**\n * ShippingApi - object-oriented interface\n * @export\n * @class ShippingApi\n * @extends {BaseAPI}\n */\nexport class ShippingApi extends BaseAPI {\n /**\n * \n * @summary Create zone\n * @param {CreateZoneDto} body \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof ShippingApi\n */\n public async createZone(body: CreateZoneDto, options?: AxiosRequestConfig) : Promise<AxiosResponse<Zone>> {\n return ShippingApiFp(this.configuration).createZone(body, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get all shipments\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof ShippingApi\n */\n public async getAllShipments(options?: AxiosRequestConfig) : Promise<AxiosResponse<Array<ShipmentWithOrder>>> {\n return ShippingApiFp(this.configuration).getAllShipments(options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get all user shipments\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof ShippingApi\n */\n public async getAllUserShipments(options?: AxiosRequestConfig) : Promise<AxiosResponse<Array<Shipment>>> {\n return ShippingApiFp(this.configuration).getAllUserShipments(options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get order shipment\n * @param {string} orderId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof ShippingApi\n */\n public async getOrderShipment(orderId: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<Shipment>> {\n return ShippingApiFp(this.configuration).getOrderShipment(orderId, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get shipping rates\n * @param {CartBodyDTO} body \n * @param {string} addressId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof ShippingApi\n */\n public async getShippingRates(body: CartBodyDTO, addressId: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {\n return ShippingApiFp(this.configuration).getShippingRates(body, addressId, options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Get zones\n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof ShippingApi\n */\n public async getZones(options?: AxiosRequestConfig) : Promise<AxiosResponse<Array<Zone>>> {\n return ShippingApiFp(this.configuration).getZones(options).then((request) => request(this.axios, this.basePath));\n }\n /**\n * \n * @summary Update zone\n * @param {UpdateZoneDto} body \n * @param {string} zoneId \n * @param {*} [options] Override http request option.\n * @throws {RequiredError}\n * @memberof ShippingApi\n */\n public async updateZone(body: UpdateZoneDto, zoneId: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<Zone>> {\n return ShippingApiFp(this.configuration).updateZone(body, zoneId, options).then((request) => request(this.axios, this.basePath));\n }\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Hey Pharamcist API\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\n *\n * OpenAPI spec version: 1.0\n * \n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { CartItem } from './cart-item';\nimport { CustomProductDto } from './custom-product-dto';\nimport { ManualDiscount } from './manual-discount';\nimport { ManualShippingDto } from './manual-shipping-dto';\n/**\n * \n * @export\n * @interface ManualOrderDTO\n */\nexport interface ManualOrderDTO {\n _id?: string;\n /**\n * \n * @type {Array<CartItem>}\n * @memberof ManualOrderDTO\n */\n items?: Array<CartItem>;\n /**\n * \n * @type {string}\n * @memberof ManualOrderDTO\n */\n notes?: string;\n /**\n * \n * @type {ManualDiscount}\n * @memberof ManualOrderDTO\n */\n manualDiscount: ManualDiscount;\n /**\n * \n * @type {string}\n * @memberof ManualOrderDTO\n */\n discountId: string;\n /**\n * \n * @type {ManualShippingDto}\n * @memberof ManualOrderDTO\n */\n manualShipping: ManualShippingDto;\n /**\n * \n * @type {Date}\n * @memberof ManualOrderDTO\n */\n paymentDueDate: Date;\n /**\n * \n * @type {boolean}\n * @memberof ManualOrderDTO\n */\n chargeTax: boolean;\n /**\n * \n * @type {Array<string>}\n * @memberof ManualOrderDTO\n */\n orderRemindingDates: Array<string>;\n /**\n * \n * @type {Array<CustomProductDto>}\n * @memberof ManualOrderDTO\n */\n customProducts?: Array<CustomProductDto>;\n /**\n * \n * @type {string}\n * @memberof ManualOrderDTO\n */\n paymentMethod: ManualOrderDTOPaymentMethodEnum;\n /**\n * \n * @type {string}\n * @memberof ManualOrderDTO\n */\n orderStatus: ManualOrderDTOOrderStatusEnum;\n /**\n * \n * @type {string}\n * @memberof ManualOrderDTO\n */\n paymentStatus?: ManualOrderDTOPaymentStatusEnum;\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum ManualOrderDTOPaymentMethodEnum {\n Cash = 'Cash',\n Credit = 'Credit',\n Card = 'Card'\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum ManualOrderDTOOrderStatusEnum {\n Pending = 'Pending',\n PickingPacking = 'Picking & Packing',\n ReadyForPickup = 'Ready for Pickup',\n Delivered = 'Delivered',\n OutForDelivery = 'Out for Delivery',\n PickedUp = 'Picked Up',\n Fulfilled = 'Fulfilled',\n Unfulfilled = 'Unfulfilled',\n OnHold = 'On Hold',\n Cancelled = 'Cancelled',\n InFulfillment = 'In Fulfillment'\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum ManualOrderDTOPaymentStatusEnum {\n Paid = 'Paid',\n Unpaid = 'Unpaid'\n}\n\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * Hey Pharamcist API\n * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)\n *\n * OpenAPI spec version: 1.0\n * \n *\n * NOTE: This class is auto generated by the swagger code generator program.\n * https://github.com/swagger-api/swagger-codegen.git\n * Do not edit the class manually.\n */\nimport { PaymentMethod } from './payment-method';\nimport { PaymentTimeLineDTO } from './payment-time-line-dto';\nimport { UserWithNoId } from './user-with-no-id';\n/**\n * \n * @export\n * @interface Payment\n */\nexport interface Payment {\n _id?: string;\n /**\n * \n * @type {Date}\n * @memberof Payment\n */\n createdAt: Date;\n /**\n * \n * @type {Date}\n * @memberof Payment\n */\n updatedAt: Date;\n /**\n * \n * @type {string}\n * @memberof Payment\n */\n id: string;\n /**\n * \n * @type {string}\n * @memberof Payment\n */\n userId: string;\n /**\n * \n * @type {string}\n * @memberof Payment\n */\n storeId: string;\n /**\n * \n * @type {string}\n * @memberof Payment\n */\n billingAddress: string;\n /**\n * \n * @type {string}\n * @memberof Payment\n */\n orderId: string;\n /**\n * \n * @type {PaymentMethod}\n * @memberof Payment\n */\n paymentCardDetails: PaymentMethod;\n /**\n * \n * @type {UserWithNoId}\n * @memberof Payment\n */\n userData: UserWithNoId;\n /**\n * \n * @type {string}\n * @memberof Payment\n */\n paymentStatus: PaymentPaymentStatusEnum;\n /**\n * \n * @type {any}\n * @memberof Payment\n */\n paymentIntent: any;\n /**\n * \n * @type {number}\n * @memberof Payment\n */\n total: number;\n /**\n * \n * @type {string}\n * @memberof Payment\n */\n transactionId: string;\n /**\n * \n * @type {string}\n * @memberof Payment\n */\n hostedInvoiceUrl: string;\n /**\n * \n * @type {Date}\n * @memberof Payment\n */\n invoiceDueDate: Date;\n /**\n * \n * @type {string}\n * @memberof Payment\n */\n refundReason: string;\n /**\n * \n * @type {string}\n * @memberof Payment\n */\n invoicePdf: string;\n /**\n * \n * @type {number}\n * @memberof Payment\n */\n refundAmount: number;\n /**\n * \n * @type {string}\n * @memberof Payment\n */\n paymentType: string;\n /**\n * \n * @type {Array<PaymentTimeLineDTO>}\n * @memberof Payment\n */\n paymentTimeLine: Array<PaymentTimeLineDTO>;\n /**\n * \n * @type {string}\n * @memberof Payment\n */\n paymentMethod: PaymentPaymentMethodEnum;\n}\n\n/**\n * @export\n * @enum {string}\n */\nexport enum PaymentPaymentStatusEnum {\n Paid = 'Paid',\n Unpaid = 'Unpaid',\n Refunded = 'Refunded',\n PartiallyRefunded = 'Partially Refunded',\n PastDue = 'Past Due',\n Processing = 'Processing',\n PaymentFailed = 'Payment Failed',\n PaymentCreated = 'Payment Created',\n PaymentCanceled = 'Payment Canceled',\n PaymentUpdated = 'Payment Updated',\n Cancelled = 'Cancelled',\n RefundRequested = 'Refund Requested',\n RefundProcessing = 'Refund Processing',\n RefundFailed = 'Refund Failed',\n RefundRejected = 'Refund Rejected'\n}\n/**\n * @export\n * @enum {string}\n */\nexport enum PaymentPaymentMethodEnum {\n Cash = 'Cash',\n Credit = 'Credit',\n Card = 'Card'\n}\n\n","'use client';\n\nimport React, { createContext, useContext, useState, useEffect, useCallback } from 'react';\nimport { useAuth } from './AuthProvider';\nimport { toast } from 'sonner';\nimport { CartResponseDto } from '@/lib/Apis/models';\nimport { CartApi } from '@/lib/Apis';\nimport { getApiConfiguration } from '@/lib/api-adapter';\n\ninterface CartContextValue {\n cart: CartResponseDto | null;\n isLoading: boolean;\n addToCart: (productId: string, quantity?: number, variantId?: string) => Promise<void>;\n updateQuantity: (productId: string, quantity: number) => Promise<void>;\n removeFromCart: (productId: string) => Promise<void>;\n clearCart: () => Promise<void>;\n refreshCart: () => Promise<void>;\n}\n\nconst CartContext = createContext<CartContextValue | undefined>(undefined);\n\nexport function useCart() {\n const context = useContext(CartContext);\n if (!context) {\n throw new Error('useCart must be used within CartProvider');\n }\n return context;\n}\n\ninterface CartProviderProps {\n children: React.ReactNode;\n}\n\nexport function CartProvider({ children }: CartProviderProps) {\n const [cart, setCart] = useState<CartResponseDto | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const { isAuthenticated } = useAuth();\n\n const refreshCart = useCallback(async () => {\n if (!isAuthenticated) {\n setCart(null);\n return;\n }\n\n try {\n const response = await new CartApi(getApiConfiguration()).getUserCart();\n setCart(response.data);\n } catch (error) {\n console.error('Failed to fetch cart:', error);\n }\n }, [isAuthenticated]);\n\n useEffect(() => {\n refreshCart();\n }, [refreshCart]);\n\n const addToCart = async (productId: string, quantity: number = 1, variantId?: string) => {\n setIsLoading(true);\n try {\n const response = await new CartApi(getApiConfiguration()).handleUserCart({ items: [{ productVariantId: variantId || productId, quantity }] });\n setCart(response.data);\n toast.success('Added to cart!');\n } catch (error: any) {\n toast.error(error.response?.data?.message || 'Failed to add to cart');\n throw error;\n } finally {\n setIsLoading(false);\n }\n };\n\n const updateQuantity = async (productId: string, quantity: number) => {\n setIsLoading(true);\n try {\n const response = await new CartApi(getApiConfiguration()).handleUserCart({ items: [{ productVariantId: productId, quantity }] });\n setCart(response.data);\n } catch (error: any) {\n toast.error(error.response?.data?.message || 'Failed to update cart');\n throw error;\n } finally {\n setIsLoading(false);\n }\n };\n\n const removeFromCart = async (productId: string) => {\n setIsLoading(true);\n try {\n const response = await new CartApi(getApiConfiguration()).handleUserCart({ items: [{ productVariantId: productId, quantity: 0 }] });\n setCart(response.data);\n } catch (error: any) {\n toast.error(error.response?.data?.message || 'Failed to remove from cart');\n throw error;\n } finally {\n setIsLoading(false);\n }\n };\n\n const clearCart = async () => {\n setIsLoading(true);\n try {\n const response = await new CartApi(getApiConfiguration()).clearCart();\n setCart(null);\n } catch (error: any) {\n toast.error(error.response?.data?.message || 'Failed to clear cart');\n throw error;\n } finally {\n setIsLoading(false);\n }\n };\n const value: CartContextValue = {\n cart,\n isLoading,\n addToCart,\n updateQuantity,\n removeFromCart,\n clearCart,\n refreshCart,\n };\n\n return <CartContext.Provider value={value}>{children}</CartContext.Provider>;\n}\n\n","'use client';\n\nimport React, { useEffect } from 'react';\nimport { EcommerceConfig } from '@/lib/types';\nimport { ThemeProvider } from './ThemeProvider';\nimport { AuthProvider } from './AuthProvider';\nimport { CartProvider } from './CartProvider';\nimport { initializeApiAdapter } from '@/lib/api-adapter';\nimport { Toaster } from 'sonner';\nimport { QueryClientProvider } from '@tanstack/react-query';\nimport { QueryClient } from '@tanstack/react-query';\n\ninterface EcommerceProviderProps {\n config: EcommerceConfig;\n children: React.ReactNode;\n}\n\nexport function EcommerceProvider({ config, children }: EcommerceProviderProps) {\n useEffect(() => {\n // Initialize API adapter with store configuration\n // This sets up the real backend APIs with proper authentication and store ID\n initializeApiAdapter(config);\n }, [config]);\n\n const [client] = React.useState(\n new QueryClient({ defaultOptions: { queries: { staleTime: 5000 } } })\n );\n return (\n <QueryClientProvider client={client}>\n <ThemeProvider config={config}>\n <AuthProvider>\n <CartProvider>\n {children}\n <Toaster position=\"top-right\" richColors />\n </CartProvider>\n </AuthProvider>\n </ThemeProvider>\n </QueryClientProvider>\n );\n}\n\n","/**\n * Format price with currency symbol\n */\nexport function formatPrice(price: number, currency: string = 'USD'): string {\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency,\n }).format(price);\n}\n\n/**\n * Format date\n */\nexport function formatDate(date: string | Date, format: 'short' | 'long' = 'short'): string {\n const d = typeof date === 'string' ? new Date(date) : date;\n \n if (format === 'long') {\n return new Intl.DateTimeFormat('en-US', {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n }).format(d);\n }\n \n return new Intl.DateTimeFormat('en-US', {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n }).format(d);\n}\n\n/**\n * Truncate text with ellipsis\n */\nexport function truncate(text: string, maxLength: number): string {\n if (text.length <= maxLength) return text;\n return text.slice(0, maxLength) + '...';\n}\n\n/**\n * Generate initials from name\n */\nexport function getInitials(firstName: string, lastName: string): string {\n return `${firstName?.charAt(0)}${lastName?.charAt(0)}`.toUpperCase();\n}\n\n","import globalAxios from \"axios\";\nimport { Configuration } from \"./configuration\";\nimport { getCurrentConfig } from '../api-adapter/config';\nimport { getAuthToken } from '../api-adapter/config';\n\n\n// export const BaseUrl = \"http://localhost:3333\"; // local\nexport const BaseUrl = \"https://api.heypharmacist.com\"; // Prod\n\nglobalAxios.interceptors.request.use(async (config) => {\n\n if (!config?.headers) {\n throw new Error(\n `Expected 'config' and 'config.headers' not to be undefined`\n );\n }\n\n if (typeof window !== 'undefined') {\n try {\n // Get storeId from configuration instead of cookies\n const ecommerceConfig = getCurrentConfig();\n const token = getAuthToken();\n \n if (token) {\n config.headers.Authorization = `Bearer ${token}`;\n }\n \n if (ecommerceConfig?.storeId) {\n config.headers[\"X-Store-Key\"] = ecommerceConfig.storeId;\n }\n } catch (error) {\n // Configuration not initialized yet, skip adding headers\n console.warn('API configuration not initialized yet:', error);\n }\n }\n\n return config;\n});\n\nconst ABORT_CONTROLLER = new AbortController();\n\nexport const AXIOS_CONFIG = new Configuration({\n basePath: BaseUrl,\n baseOptions: {\n signal: ABORT_CONTROLLER.signal,\n timeout: 20000,\n },\n});\n","'use client';\n\nimport React, { createContext, useContext, useState, useEffect, ReactNode, useCallback } from 'react';\nimport { WishlistApi } from '@/lib/Apis/apis/wishlist-api';\nimport { AXIOS_CONFIG } from '@/lib/Apis/wrapper';\nimport { useAuth } from './AuthProvider';\nimport { toast } from 'sonner';\nimport { useMemo } from 'react';\nimport { Wishlist } from '@/lib/Apis';\nimport { Product } from '@/lib/Apis/models';\n\n\ninterface WishlistContextType extends Wishlist {\n addToWishlist: (product: Product) => Promise<void>;\n removeFromWishlist: (productId: string) => Promise<void>;\n isInWishlist: (productId: string) => boolean;\n getWishlistCount: () => number;\n refreshWishlist: () => Promise<void>;\n clearWishlist: () => Promise<void>;\n}\n\nconst WishlistContext = createContext<WishlistContextType | undefined>(undefined);\n\nexport function WishlistProvider({ children }: { children: ReactNode }) {\n const [state, setState] = useState<Wishlist>({\n _id: '',\n createdAt: new Date(),\n updatedAt: new Date(),\n userId: '',\n products: [],\n } as unknown as Wishlist);\n\n const { isAuthenticated } = useAuth() || {};\n const wishlistApi = useMemo(() => new WishlistApi(AXIOS_CONFIG), []);\n\n const fetchWishlist = useCallback(async () => {\n if (!isAuthenticated) {\n setState(prev => ({\n ...prev,\n isLoading: false,\n products: [],\n }));\n return;\n }\n\n setState(prev => ({ ...prev, isLoading: true, error: null }));\n\n try {\n const response = await wishlistApi.getWishlist();\n const responseData = response?.data;\n\n setState({\n _id: responseData._id,\n createdAt: responseData.createdAt,\n updatedAt: responseData.updatedAt,\n userId: responseData.userId,\n products: responseData.products,\n } as unknown as Wishlist);\n } catch (error) {\n console.error('Error fetching wishlist:', error);\n setState(prev => ({\n ...prev,\n isLoading: false,\n error: error instanceof Error ? error.message : 'Failed to load wishlist',\n }));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isAuthenticated]);\n\n\n useEffect(() => {\n fetchWishlist();\n }, [fetchWishlist]);\n\n const addToWishlist = async (product: Product) => {\n if (!isAuthenticated) {\n toast.error('Please sign in to add items to your wishlist');\n return;\n }\n\n try {\n // First check if the item is already in the wishlist\n if (isInWishlist(product?._id || '')) {\n toast.info('This item is already in your wishlist');\n return;\n }\n\n // Make the API call\n await wishlistApi.addToWishlist(product?._id || '');\n\n // Instead of updating state directly, refresh the entire wishlist from the server\n // This ensures we're in sync with the server and prevents duplicates\n await fetchWishlist();\n\n toast.success('Added to wishlist');\n } catch (error) {\n console.error('Error adding to wishlist:', error);\n toast.error('Failed to add to wishlist');\n throw error;\n }\n };\n\n const removeFromWishlist = async (productId: string) => {\n try {\n await wishlistApi.removeFromWishlist(productId);\n\n setState(prev => {\n const newProducts = prev.products.filter((product: any) => product?._id !== productId);\n return {\n ...prev,\n products: newProducts,\n };\n\n });\n\n toast.success('Removed from wishlist');\n } catch (error) {\n console.error('Error removing from wishlist:', error);\n toast.error('Failed to remove from wishlist');\n throw error;\n }\n };\n\n const clearWishlist = async () => {\n try {\n await wishlistApi.clearWishlist();\n setState(prev => ({\n ...prev,\n products: [],\n }));\n toast.success('Wishlist cleared');\n } catch (error) {\n console.error('Error clearing wishlist:', error);\n toast.error('Failed to clear wishlist');\n throw error;\n }\n };\n\n const isInWishlist = (productId: string): boolean => {\n return state.products.some((product: any) => product?._id === productId);\n };\n\n const getWishlistCount = (): number => {\n return state.products.length;\n };\n\n const refreshWishlist = async () => {\n await fetchWishlist();\n };\n\n return (\n <WishlistContext.Provider\n value={{\n ...state,\n addToWishlist,\n removeFromWishlist,\n isInWishlist,\n getWishlistCount,\n refreshWishlist,\n clearWishlist,\n }}\n >\n {children}\n </WishlistContext.Provider>\n );\n}\n\nexport const useWishlist = (): WishlistContextType => {\n const context = useContext(WishlistContext);\n if (context === undefined) {\n throw new Error('useWishlist must be used within a WishlistProvider');\n }\n return context;\n};\n","'use client';\n\nimport React, { useState, useEffect, useMemo, useCallback } from 'react';\nimport { motion, AnimatePresence } from 'framer-motion';\nimport { Heart } from 'lucide-react';\nimport { ExtendedProductDTO, Product } from '@/lib/Apis';\nimport { formatPrice } from '@/lib/utils/format';\nimport { useWishlist } from '@/providers/WishlistProvider';\nimport Image from 'next/image';\nimport { toast } from 'sonner';\nimport { useRouter } from 'next/navigation';\n\n\ninterface ProductCardProps {\n product: ExtendedProductDTO;\n onClickProduct?: (product: ExtendedProductDTO) => void;\n onFavorite?: (product: ExtendedProductDTO) => void;\n isFavorited?: boolean;\n showFavoriteButton?: boolean;\n}\n\nexport function ProductCard({\n product,\n onClickProduct,\n onFavorite,\n isFavorited = false,\n showFavoriteButton = true,\n className\n}: ProductCardProps & { className?: string }) {\n const router = useRouter();\n const [isFavorite, setIsFavorite] = useState(isFavorited);\n const { addToWishlist, removeFromWishlist, isInWishlist } = useWishlist();\n const [isHovered, setIsHovered] = useState(false);\n const [isImageLoaded, setIsImageLoaded] = useState(false);\n\n // Handle image load state\n const handleImageLoad = useCallback(() => {\n setIsImageLoaded(true);\n }, []);\n\n // Handle card click\n const handleCardClick = useCallback((e: React.MouseEvent) => {\n if (onClickProduct) {\n e.preventDefault();\n onClickProduct(product);\n }\n }, [onClickProduct, product]);\n\n\n const handleFavorite = async (e: React.MouseEvent) => {\n e.stopPropagation();\n try {\n if (isInWishlist(product?._id || '')) {\n await removeFromWishlist(product?._id || '');\n setIsFavorite(false);\n toast.success('Removed from wishlist');\n } else {\n await addToWishlist(product as unknown as Product);\n setIsFavorite(true);\n toast.success('Added to wishlist');\n }\n onFavorite?.(product);\n } catch (error) {\n console.error('Error updating wishlist:', error);\n toast.error('Failed to update wishlist');\n }\n };\n\n // Update favorite state when props or wishlist changes\n useEffect(() => {\n setIsFavorite(isInWishlist(product?._id || '') || isFavorited);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isFavorited, isInWishlist, product?._id]);\n\n // Handle keyboard navigation\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleCardClick(e as any);\n }\n };\n\n\n const imageSource = useMemo(() => {\n return {\n src: product.productMedia?.[0]?.file || '/placeholder-product.jpg',\n alt: product.name || 'Product image'\n };\n }, [product.productMedia, product.name]);\n\n\n\n return (\n <motion.article\n className=\n \"relative group bg-white rounded-xl overflow-hidden shadow-sm hover:shadow-md transition-all duration-300 border border-gray-100 hover:border-gray-200 flex h-[420px] flex-col\"\n\n whileHover={{ y: -4 }}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n aria-labelledby={`product-${product.id}-title`}\n role=\"article\"\n tabIndex={0}\n onClick={handleCardClick}\n onKeyDown={handleKeyDown}\n >\n {/* Image Container */}\n <div className=\"relative h-48 w-full overflow-hidden bg-gray-50\">\n <AnimatePresence>\n {!isImageLoaded && (\n <motion.div\n className=\"absolute inset-0 bg-gray-200 animate-pulse\"\n initial={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n transition={{ duration: 0.2 }}\n />\n )}\n </AnimatePresence>\n\n {product.productMedia?.[0]?.file && (\n <Image\n src={product.productMedia?.[0]?.file || '/placeholder-product.jpg'}\n alt={product.name || 'Product image'}\n fill\n className={`h-full w-full object-cover object-center transition-opacity duration-300 ${product.inventoryCount === 0 ? 'opacity-60' : ''\n } ${isImageLoaded ? 'opacity-100' : 'opacity-0'}`}\n sizes=\"(max-width: 640px) 100vw, (max-width: 768px) 50vw, 33vw\"\n priority={false}\n onLoad={handleImageLoad}\n />\n )}\n\n {/* Badges */}\n <div className=\"absolute top-3 left-3 flex flex-col gap-2 z-10\">\n {product.isDiscounted && (\n <motion.span\n initial={{ scale: 0.9, opacity: 0 }}\n animate={{ scale: 1, opacity: 1 }}\n className=\"inline-flex items-center justify-center px-2.5 py-1 rounded-full text-xs font-bold text-white bg-green-600 shadow-md\"\n >\n -{product.discountAmount}%\n </motion.span>\n )}\n\n {product.inventoryCount === 0 && (\n <motion.span\n initial={{ scale: 0.9, opacity: 0 }}\n animate={{ scale: 1, opacity: 1 }}\n className=\"inline-flex items-center justify-center px-2.5 py-1 rounded-full text-xs font-bold text-white bg-red-600\"\n >\n Out of Stock\n </motion.span>\n )}\n </div>\n\n {/* Favorite Button */}\n {showFavoriteButton && (\n <motion.button\n type=\"button\"\n onClick={handleFavorite}\n className={\n `absolute top-2 right-2 p-2 rounded-full z-10 transition-colors bg-white/90 backdrop-blur-sm shadow-md hover:shadow-lg ${isFavorite ? 'text-red-500' : 'text-primary-600 hover:text-red-500'} ${isHovered || isFavorite ? 'opacity-100' : 'opacity-0 group-hover:opacity-100'}`\n }\n whileHover={{ scale: 1.1 }}\n whileTap={{ scale: 0.95 }}\n aria-label={isFavorite ? 'Remove from wishlist' : 'Add to wishlist'}\n >\n <Heart className={`w-5 h-5 ${isFavorite ? 'fill-current' : ''}`} />\n </motion.button>\n )}\n\n </div>\n <div className=\"absolute top-4 left-4 flex flex-col gap-2\">\n {product.inventoryCount === 0 && (\n <span className=\"px-3 py-1 rounded-full text-sm font-bold bg-red-100 text-red-800\">\n Out of Stock\n </span>\n )}\n </div>\n\n {/* Favorite Button */}\n {showFavoriteButton && (\n <button\n type=\"button\"\n onClick={handleFavorite}\n className={`absolute top-2 right-2 p-2 rounded-full transition-colors ${isFavorite ? 'text-red-500' : 'text-gray-400 hover:text-red-500'\n }`}\n aria-label={isFavorite ? 'Remove from wishlist' : 'Add to wishlist'}\n >\n <Heart className={`w-5 h-5 ${isFavorite ? 'fill-current' : ''}`} />\n </button>\n )}\n\n <div className=\"p-4\">\n {/* Category */}\n {product.parentCategories && product.parentCategories?.length > 0 && (\n <p className=\"text-xs text-gray-500 uppercase tracking-wider mb-2\">\n {product.parentCategories?.map((category) => category?.name).join(', ') || 'No categories'}\n </p>\n )}\n\n {/* Product Name and Variant */}\n <div className=\"mb-2\">\n <h3 className=\"text-lg font-semibold text-gray-900 line-clamp-1 group-hover:text-primary-600 transition-colors\">\n {product.name}\n </h3>\n {product?.sku && (\n <p className=\"text-xs text-gray-400 mt-1\">SKU: {product.sku}</p>\n )}\n </div>\n\n {/* Price */}\n <div className=\"flex items-baseline gap-2\">\n <div className=\"flex flex-col\">\n <span className=\"text-2xl font-bold text-gray-900\">\n {formatPrice(product.finalPrice)}\n </span>\n {product.inventoryCount > 0 && (\n <span className=\"text-xs text-gray-500\">\n {product.inventoryCount > 0 ? \"In Stock\" : \"Out of Stock\"}\n </span>\n )}\n </div>\n {product.priceBeforeDiscount && product.priceBeforeDiscount > product.finalPrice && (\n <span className=\"text-sm text-gray-500 line-through\">\n {formatPrice(product.priceBeforeDiscount)}\n </span>\n )}\n </div>\n </div>\n <div className=\"mt-auto p-4 pt-0\">\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n router.push(`/products/${product._id}`);\n }}\n className={`w-full flex items-center justify-center rounded-md px-3 py-2 text-sm font-medium bg-primary-600 hover:bg-primary-700 text-white`}\n >\n View Product\n </button>\n\n {showFavoriteButton && (\n <button\n type=\"button\"\n onClick={handleFavorite}\n className=\"mt-2 w-full flex items-center justify-center rounded-md border border-gray-300 bg-white px-3 py-2 text-sm font-medium text-primary-600 hover:bg-gray-50\"\n aria-label={isFavorite ? 'Remove from wishlist' : 'Add to wishlist'}\n >\n <Heart\n className={`mr-2 h-4 w-4 ${isFavorite ? 'fill-red-500 text-red-500' : 'text-primary-600'}`}\n />\n {isFavorite ? 'Saved' : 'Save for later'}\n </button>\n )}\n </div>\n </motion.article>\n );\n}\n","import React from 'react';\n\ninterface SkeletonProps {\n className?: string;\n}\n\nexport function Skeleton({ className = '' }: SkeletonProps) {\n return (\n <div className={`animate-pulse bg-gradient-to-r from-gray-200 via-gray-300 to-gray-200 bg-[length:200%_100%] rounded ${className}`} />\n );\n}\n\nexport function ProductCardSkeleton() {\n return (\n <div className=\"bg-white rounded-2xl overflow-hidden shadow-sm\">\n <Skeleton className=\"h-64 w-full\" />\n <div className=\"p-4 space-y-3\">\n <Skeleton className=\"h-6 w-3/4\" />\n <Skeleton className=\"h-4 w-1/2\" />\n <div className=\"flex justify-between items-center pt-2\">\n <Skeleton className=\"h-8 w-24\" />\n <Skeleton className=\"h-10 w-10 rounded-full\" />\n </div>\n </div>\n </div>\n );\n}\n\nexport function OrderCardSkeleton() {\n return (\n <div className=\"bg-white rounded-2xl p-6 shadow-sm\">\n <div className=\"flex justify-between items-start mb-4\">\n <div className=\"space-y-2 flex-1\">\n <Skeleton className=\"h-6 w-32\" />\n <Skeleton className=\"h-4 w-48\" />\n </div>\n <Skeleton className=\"h-6 w-20 rounded-full\" />\n </div>\n <div className=\"space-y-3\">\n <Skeleton className=\"h-4 w-full\" />\n <Skeleton className=\"h-4 w-2/3\" />\n </div>\n </div>\n );\n}\n\n","'use client';\n\nimport React from 'react';\nimport dynamic from 'next/dynamic';\n\nconst MotionDiv = dynamic(() => import('framer-motion').then((mod) => mod.motion.div), {\n ssr: false,\n});\n\ninterface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: 'primary' | 'secondary' | 'outline' | 'ghost';\n size?: 'sm' | 'md' | 'lg';\n isLoading?: boolean;\n children: React.ReactNode;\n}\n\nexport function Button({\n variant = 'primary',\n size = 'md',\n isLoading = false,\n disabled,\n className = '',\n children,\n ...props\n}: ButtonProps) {\n const baseStyles = 'font-medium rounded-lg transition-all duration-200 inline-flex items-center justify-center gap-2 disabled:opacity-50 disabled:cursor-not-allowed focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-primary-500';\n \n const variants = {\n primary: 'bg-primary-600 text-white hover:bg-primary-700 shadow-lg shadow-primary-500/30 hover:shadow-xl hover:shadow-primary-500/40',\n secondary: 'bg-secondary-600 text-white hover:bg-secondary-700 shadow-lg shadow-secondary-500/30 hover:shadow-xl hover:shadow-secondary-500/40',\n outline: 'border-2 border-primary-600 text-primary-600 hover:bg-primary-50',\n ghost: 'text-gray-700 hover:bg-gray-100',\n };\n \n const sizes = {\n sm: 'px-4 py-2 text-sm',\n md: 'px-6 py-3 text-base',\n lg: 'px-8 py-4 text-lg',\n };\n\n return (\n <MotionDiv\n whileHover={{ scale: 1.02 }}\n whileTap={{ scale: 0.98 }}\n className=\"inline-block\"\n >\n <button\n className={`${baseStyles} ${variants[variant]} ${sizes[size]} ${className}`}\n disabled={disabled || isLoading}\n aria-disabled={disabled || isLoading}\n aria-busy={isLoading}\n {...props}\n >\n {isLoading ? (\n <>\n <svg className=\"animate-spin h-5 w-5\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\"></circle>\n <path className=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"></path>\n </svg>\n Loading...\n </>\n ) : (\n children\n )}\n </button>\n </MotionDiv>\n );\n}\n\n","import React from 'react';\nimport { LucideIcon } from 'lucide-react';\nimport { Button } from './ui/Button';\n\ninterface EmptyStateProps {\n icon: LucideIcon;\n title: string;\n description: string;\n actionLabel?: string;\n onAction?: () => void;\n}\n\nexport function EmptyState({ icon: Icon, title, description, actionLabel, onAction }: EmptyStateProps) {\n return (\n <div className=\"flex flex-col items-center justify-center py-16 px-4\">\n <div className=\"w-24 h-24 bg-gray-100 rounded-full flex items-center justify-center mb-6\">\n <Icon className=\"w-12 h-12 text-gray-400\" />\n </div>\n <h3 className=\"text-2xl font-bold text-gray-900 mb-2\">{title}</h3>\n <p className=\"text-gray-600 text-center max-w-md mb-8\">{description}</p>\n {actionLabel && onAction && (\n <Button onClick={onAction}>{actionLabel}</Button>\n )}\n </div>\n );\n}\n\n","import React, { forwardRef } from 'react';\n\ninterface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {\n label?: string;\n error?: string;\n helperText?: string;\n}\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n ({ label, error, helperText, className = '', ...props }, ref) => {\n return (\n <div className=\"w-full\">\n {label && (\n <label className=\"block text-sm font-medium text-gray-700 mb-2\">\n {label}\n </label>\n )}\n <input\n ref={ref}\n className={`\n w-full px-4 py-3 rounded-lg border-2 transition-all duration-200\n ${error \n ? 'border-red-500 focus:border-red-600 focus:ring-red-500/20' \n : 'border-gray-200 focus:border-primary-500 focus:ring-primary-500/20'\n }\n focus:outline-none focus:ring-4\n placeholder:text-gray-400\n disabled:bg-gray-50 disabled:cursor-not-allowed\n ${className}\n `}\n {...props}\n />\n {error && (\n <p className=\"mt-2 text-sm text-red-600\">{error}</p>\n )}\n {helperText && !error && (\n <p className=\"mt-2 text-sm text-gray-500\">{helperText}</p>\n )}\n </div>\n );\n }\n);\n\nInput.displayName = 'Input';\n\n","import { useState, useEffect, useCallback } from 'react';\nimport { AXIOS_CONFIG } from '@/lib/Apis/wrapper';\nimport { CategoriesApi, CategoryPopulated, ExtendedProductDTO, ProductsApi } from '@/lib/Apis';\nimport { ProductFilters } from '@/lib/types';\n\nexport function useProducts(filters?: ProductFilters, page: number = 1, limit: number = 20) {\n const [products, setProducts] = useState<ExtendedProductDTO[]>([]);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n const [pagination, setPagination] = useState({\n page: 1,\n limit: 20,\n total: 0,\n totalPages: 0,\n });\n\n const fetchProducts = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n let response;\n if (filters?.subCategory) {\n response = await new ProductsApi(AXIOS_CONFIG).getAllProducts(\n filters.subCategory,\n filters?.search,\n filters?.maxPrice,\n filters?.minPrice,\n undefined, // brandFilter\n filters?.inStock !== undefined ? (filters.inStock ? 'in-stock' : 'out-of-stock') : undefined,\n undefined, // sort\n true, // includeNoVariantProducts\n true, // isActive\n limit,\n page\n );\n } else {\n response = await new ProductsApi(AXIOS_CONFIG).getAllProductsForStore(\n filters?.search,\n undefined, // productType\n filters?.category,\n filters?.maxPrice,\n filters?.minPrice,\n undefined, // brandFilter\n filters?.inStock !== undefined ? (filters.inStock ? 'in-stock' : 'out-of-stock') : undefined,\n undefined, // sort\n true, // includeNoVariantProducts\n true, // isActive\n limit,\n page\n );\n }\n setProducts(response.data.data || []);\n setPagination({\n page: response.data.currentPage || page,\n limit: response.data.limit || limit,\n total: response.data.totalItems || products.length,\n totalPages: response.data.totalPages || 1,\n });\n } catch (err) {\n setError(err as Error);\n }\n setIsLoading(false);\n }, [filters, page, limit]);\n\n useEffect(() => {\n fetchProducts();\n }, [fetchProducts]);\n\n return { products, isLoading, error, pagination };\n}\n\nexport function useProduct(id: string) {\n const [product, setProduct] = useState<ExtendedProductDTO | null>(null);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n useEffect(() => {\n const fetchProduct = async () => {\n setIsLoading(true);\n setError(null);\n try {\n const response = await new ProductsApi(AXIOS_CONFIG).getSingleProduct(id);\n setProduct(response.data);\n } catch (err) {\n setError(err as Error);\n }\n setIsLoading(false);\n };\n fetchProduct();\n }, [id]);\n\n return { product, isLoading, error };\n}\n\nexport function useCategories() {\n const [categories, setCategories] = useState<CategoryPopulated[]>([]);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n useEffect(() => {\n const fetchCategories = async () => {\n try {\n setIsLoading(true);\n setError(null);\n const response = await new CategoriesApi(AXIOS_CONFIG).getAllCategories();\n setCategories(response.data?.data || []);\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsLoading(false);\n }\n };\n fetchCategories();\n }, []);\n\n return { categories, isLoading, error };\n}","'use client';\n\nimport React, {\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport { AnimatePresence, motion } from 'framer-motion';\nimport {\n ArrowUpDown,\n ChevronDown,\n Clock,\n LayoutGrid,\n LayoutList,\n Package,\n Search,\n ShieldCheck,\n SlidersHorizontal,\n Sparkles,\n TrendingUp,\n X,\n} from 'lucide-react';\nimport Image from 'next/image';\nimport { useRouter } from 'next/navigation';\nimport { ProductCard } from '@/components/ProductCard';\nimport { ProductCardSkeleton } from '@/components/ui/Skeleton';\nimport { EmptyState } from '@/components/EmptyState';\nimport { Button } from '@/components/ui/Button';\nimport { Input } from '@/components/ui/Input';\nimport { useProducts, useCategories } from '@/hooks/useProducts';\nimport { ProductFilters } from '@/lib/types';\nimport { formatPrice } from '@/lib/utils/format';\n\ntype SortOption = 'featured' | 'price-low-high' | 'price-high-low' | 'newest';\ntype ViewMode = 'grid' | 'list';\n\ninterface ShopScreenProps {\n initialFilters?: ProductFilters;\n categoryName?: string;\n}\n\nexport function ShopScreen({ initialFilters = {}, categoryName }: ShopScreenProps) {\n const router = useRouter();\n const [filters, setFilters] = useState<ProductFilters>(initialFilters);\n const [page, setPage] = useState(1);\n const [showFilters, setShowFilters] = useState(false);\n const [searchQuery, setSearchQuery] = useState('');\n const [isSearching, setIsSearching] = useState(false);\n const [sortOption, setSortOption] = useState<SortOption>('featured');\n const [viewMode, setViewMode] = useState<ViewMode>('grid');\n const [selectedPriceRange, setSelectedPriceRange] = useState<string | null>(null);\n const [customPrice, setCustomPrice] = useState<{ min: string; max: string }>({\n min: '',\n max: '',\n });\n const [expandedCategories, setExpandedCategories] = useState<Record<string, boolean>>({});\n\n const { products, isLoading, pagination } = useProducts(filters, page, 20);\n const { categories } = useCategories();\n\n const handleSearch = (e: React.FormEvent) => {\n e.preventDefault();\n if (searchQuery.trim()) {\n setIsSearching(true);\n router.push(`/search?q=${encodeURIComponent(searchQuery.trim())}`);\n }\n };\n\n // Handle search input changes\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setSearchQuery(e.target.value);\n };\n\n // Handle search when pressing Enter\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter' && searchQuery.trim()) {\n e.preventDefault();\n setIsSearching(true);\n router.push(`/search?q=${encodeURIComponent(searchQuery.trim())}`);\n }\n };\n\n const priceRanges = useMemo(\n () => [\n { label: `Under ${formatPrice(25)}`, value: 'under-25', min: undefined, max: 25 },\n { label: `${formatPrice(25)} - ${formatPrice(50)}`, value: '25-50', min: 25, max: 50 },\n { label: `${formatPrice(50)} - ${formatPrice(100)}`, value: '50-100', min: 50, max: 100 },\n { label: `Over ${formatPrice(100)}`, value: 'over-100', min: 100, max: undefined },\n ],\n []\n );\n\n useEffect(() => {\n setCustomPrice({\n min: filters.minPrice !== undefined ? String(filters.minPrice) : '',\n max: filters.maxPrice !== undefined ? String(filters.maxPrice) : '',\n });\n }, [filters.minPrice, filters.maxPrice]);\n\n // Auto-expand active category or parent of active subcategory\n useEffect(() => {\n const updates: Record<string, boolean> = {};\n if (filters.category) updates[filters.category] = true;\n if (filters.subCategory) {\n const parent = categories.find((c) =>\n c.categorySubCategories?.some((sc) => sc.id === filters.subCategory)\n );\n if (parent?.id) updates[parent.id] = true;\n }\n if (Object.keys(updates).length) {\n setExpandedCategories((prev) => ({ ...prev, ...updates }));\n }\n }, [filters.category, filters.subCategory, categories]);\n\n const toggleCategoryExpand = useCallback((id: string) => {\n setExpandedCategories((prev) => ({ ...prev, [id]: !prev[id] }));\n }, []);\n\n const sortedCategories = useMemo(\n () => [...categories].sort((a, b) => a.name?.localeCompare(b.name ?? '') ?? 0),\n [categories]\n );\n\n const topCategories = useMemo(\n () =>\n [...categories]\n .sort((a, b) => (b.productCount ?? 0) - (a.productCount ?? 0))\n .slice(0, 6),\n [categories]\n );\n\n const productInsights = useMemo(() => {\n if (!products.length) {\n return { newArrivals: 0, inStockCount: 0 };\n }\n\n const monthAgo = Date.now() - 30 * 24 * 60 * 60 * 1000;\n let newArrivals = 0;\n let inStockCount = 0;\n\n products.forEach((product) => {\n if (product.inventoryCount > 0) inStockCount += 1;\n if (new Date(product.createdAt).getTime() >= monthAgo) newArrivals += 1;\n });\n\n return { newArrivals, inStockCount };\n }, [products]);\n const insightCards = useMemo(\n () => [\n {\n id: 'new',\n label: 'New arrivals',\n value: productInsights.newArrivals\n ? productInsights.newArrivals.toLocaleString()\n : isLoading\n ? '...'\n : '0',\n helper: filters.newArrivals ? 'Filter active: showing last 30 days' : 'Click to show last 30 days',\n icon: Sparkles,\n },\n {\n id: 'stock',\n label: 'Available now',\n value: productInsights.inStockCount\n ? productInsights.inStockCount.toLocaleString()\n : isLoading\n ? '...'\n : '0',\n helper: 'Ready to ship today',\n icon: ShieldCheck,\n },\n {\n id: 'catalogue',\n label: 'Total products',\n value:\n pagination.total || products.length\n ? (pagination.total || products.length).toLocaleString()\n : isLoading\n ? '...'\n : '0',\n helper: 'Across all categories',\n icon: TrendingUp,\n },\n ],\n [\n isLoading,\n pagination.total,\n productInsights.inStockCount,\n productInsights.newArrivals,\n products.length,\n filters.newArrivals,\n ]\n );\n\n const filteredProducts = useMemo(() => {\n if (isLoading) return products;\n let items = [...products];\n if (filters.tags?.length) {\n items = items.filter((p) => Array.isArray(p.tags) && p.tags.some((t) => filters.tags!.includes(t)));\n }\n if (filters.newArrivals) {\n const thirtyDaysAgo = Date.now() - 30 * 24 * 60 * 60 * 1000;\n items = items.filter((p) => new Date(p.createdAt).getTime() >= thirtyDaysAgo);\n }\n return items;\n }, [isLoading, products, filters.tags, filters.newArrivals]);\n\n const sortedProducts = useMemo(() => {\n if (isLoading) {\n return filteredProducts;\n }\n\n const items = [...filteredProducts];\n\n switch (sortOption) {\n case 'price-low-high':\n return items.sort((a, b) => a.finalPrice - b.finalPrice);\n case 'price-high-low':\n return items.sort((a, b) => b.finalPrice - a.finalPrice);\n case 'newest':\n return items.sort(\n (a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime()\n );\n default:\n return items;\n }\n }, [isLoading, filteredProducts, sortOption]);\n\n const displayedProducts = sortedProducts;\n\n const quickSearches = useMemo(() => {\n const counts = new Map<string, number>();\n products.forEach((p) => {\n (p.tags || []).forEach((t) => counts.set(t, (counts.get(t) || 0) + 1));\n });\n return Array.from(counts.entries())\n .sort((a, b) => b[1] - a[1])\n .slice(0, 4)\n .map(([tag]) => tag);\n }, [products]);\n\n const handleQuickSearch = useCallback((term: string) => {\n setSearchQuery('');\n setFilters((current) => ({\n ...current,\n search: undefined,\n tags: [term],\n }));\n setPage(1);\n }, []);\n\n const handleCategoryChange = useCallback(\n (categorySlug: string) => {\n setFilters((current) => {\n if (current.category === categorySlug) {\n const { category, subCategory, ...rest } = current;\n return rest;\n }\n const next = { ...current, category: categorySlug } as ProductFilters;\n // clear subCategory when switching parent category\n if (next.subCategory) {\n delete (next as any).subCategory;\n }\n return next;\n });\n setPage(1);\n },\n []\n );\n\n const handleSubCategoryChange = useCallback((parentCategoryId: string, subCategoryId: string) => {\n setFilters((current) => {\n if (current.subCategory === subCategoryId) {\n const { subCategory, ...rest } = current as any;\n return rest as ProductFilters;\n }\n return { ...current, category: parentCategoryId, subCategory: subCategoryId } as ProductFilters;\n });\n setPage(1);\n }, []);\n\n const handleToggleStock = useCallback(() => {\n setFilters((current) => {\n if (current.inStock) {\n const { inStock, ...rest } = current;\n return rest;\n }\n return { ...current, inStock: true };\n });\n setPage(1);\n }, []);\n\n const handleToggleNewArrivals = useCallback(() => {\n setFilters((current) => {\n if (current.newArrivals) {\n const { newArrivals, ...rest } = current;\n return rest as typeof current;\n }\n return { ...current, newArrivals: true };\n });\n setPage(1);\n }, []);\n\n const handleClearFilters = useCallback(() => {\n setFilters({});\n setSearchQuery('');\n setSelectedPriceRange(null);\n setCustomPrice({ min: '', max: '' });\n setPage(1);\n }, []);\n\n const handleRemoveCategory = useCallback(() => {\n setFilters((current) => {\n const { category, subCategory, ...rest } = current as any;\n return rest;\n });\n setPage(1);\n }, []);\n\n const handleRemoveSubCategory = useCallback(() => {\n setFilters((current) => {\n const next = { ...current } as any;\n delete next.subCategory;\n return next as ProductFilters;\n });\n setPage(1);\n }, []);\n\n const handleRemoveSearch = useCallback(() => {\n setFilters((current) => {\n const { search, ...rest } = current;\n return rest;\n });\n setSearchQuery('');\n setPage(1);\n }, []);\n\n const handleRemoveInStock = useCallback(() => {\n setFilters((current) => {\n const { inStock, ...rest } = current;\n return rest;\n });\n setPage(1);\n }, []);\n\n const handleRemovePrice = useCallback(() => {\n setFilters((current) => {\n const next = { ...current };\n delete next.minPrice;\n delete next.maxPrice;\n return next;\n });\n setSelectedPriceRange(null);\n setCustomPrice({ min: '', max: '' });\n setPage(1);\n }, []);\n\n const handleRemoveTag = useCallback((tag: string) => {\n setFilters((current) => {\n if (!current.tags) return current;\n const updated = current.tags.filter((item) => item !== tag);\n const next = { ...current };\n if (updated.length) {\n next.tags = updated;\n } else {\n delete next.tags;\n }\n return next;\n });\n setPage(1);\n }, []);\n\n const handlePriceRangeSelect = useCallback(\n (value: string) => {\n const range = priceRanges.find((item) => item.value === value);\n\n if (selectedPriceRange === value) {\n setSelectedPriceRange(null);\n setFilters((current) => {\n const next = { ...current };\n delete next.minPrice;\n delete next.maxPrice;\n return next;\n });\n setCustomPrice({ min: '', max: '' });\n setPage(1);\n return;\n }\n\n if (!range) return;\n\n setSelectedPriceRange(value);\n setFilters((current) => {\n const next = { ...current };\n if (range.min !== undefined) {\n next.minPrice = range.min;\n } else {\n delete next.minPrice;\n }\n if (range.max !== undefined) {\n next.maxPrice = range.max;\n } else {\n delete next.maxPrice;\n }\n return next;\n });\n setCustomPrice({\n min: range.min !== undefined ? String(range.min) : '',\n max: range.max !== undefined ? String(range.max) : '',\n });\n setPage(1);\n },\n [priceRanges, selectedPriceRange]\n );\n\n const applyCustomPrice = useCallback(() => {\n const rawMin = customPrice.min.trim();\n const rawMax = customPrice.max.trim();\n\n const minValue = rawMin !== '' ? Number(rawMin) : undefined;\n const maxValue = rawMax !== '' ? Number(rawMax) : undefined;\n\n let normalizedMin = minValue;\n let normalizedMax = maxValue;\n\n if (\n normalizedMin !== undefined &&\n normalizedMax !== undefined &&\n !Number.isNaN(normalizedMin) &&\n !Number.isNaN(normalizedMax) &&\n normalizedMin > normalizedMax\n ) {\n [normalizedMin, normalizedMax] = [normalizedMax, normalizedMin];\n }\n\n setSelectedPriceRange(null);\n setFilters((current) => {\n const next = { ...current };\n\n if (normalizedMin !== undefined && !Number.isNaN(normalizedMin)) {\n next.minPrice = normalizedMin;\n } else {\n delete next.minPrice;\n }\n\n if (normalizedMax !== undefined && !Number.isNaN(normalizedMax)) {\n next.maxPrice = normalizedMax;\n } else {\n delete next.maxPrice;\n }\n\n return next;\n });\n setPage(1);\n }, [customPrice]);\n\n const {\n search: searchFilter,\n category: categoryFilter,\n subCategory: subCategoryFilter,\n inStock: inStockOnly,\n minPrice,\n maxPrice,\n tags,\n newArrivals,\n } = filters;\n\n const activeFilterChips = useMemo(() => {\n const chips: { key: string; label: string; onRemove: () => void }[] = [];\n\n if (searchFilter) {\n chips.push({\n key: 'search',\n label: `Search: \"${searchFilter}\"`,\n onRemove: handleRemoveSearch,\n });\n }\n\n if (subCategoryFilter) {\n let subName: string | undefined;\n let parentName: string | undefined;\n categories.forEach((cat) => {\n const found = cat.categorySubCategories?.find((sc) => sc.id === subCategoryFilter);\n if (found) {\n subName = found.name;\n parentName = cat.name;\n }\n });\n chips.push({\n key: 'subcategory',\n label: `Subcategory: ${subName ?? subCategoryFilter}`,\n onRemove: handleRemoveSubCategory,\n });\n if (categoryFilter) {\n const catObj = categories.find((c) => c.id === categoryFilter);\n chips.push({\n key: 'category',\n label: `Category: ${catObj?.name ?? parentName ?? categoryFilter}`,\n onRemove: handleRemoveCategory,\n });\n }\n } else if (categoryFilter) {\n const category = categories.find((cat) => cat.id === categoryFilter);\n chips.push({\n key: 'category',\n label: `Category: ${category?.name ?? categoryFilter}`,\n onRemove: handleRemoveCategory,\n });\n }\n\n if (inStockOnly) {\n chips.push({\n key: 'stock',\n label: 'In stock',\n onRemove: handleRemoveInStock,\n });\n }\n\n if (minPrice !== undefined || maxPrice !== undefined) {\n const minLabel = minPrice !== undefined ? formatPrice(minPrice) : 'Any';\n const maxLabel = maxPrice !== undefined ? formatPrice(maxPrice) : 'Any';\n chips.push({\n key: 'price',\n label: `Price: ${minLabel} - ${maxLabel}`,\n onRemove: handleRemovePrice,\n });\n }\n\n if (tags?.length) {\n tags.forEach((tag) => {\n chips.push({\n key: `tag-${tag}`,\n label: `Tag: ${tag}`,\n onRemove: () => handleRemoveTag(tag),\n });\n });\n }\n\n if (newArrivals) {\n chips.push({\n key: 'new-arrivals',\n label: 'New arrivals',\n onRemove: handleToggleNewArrivals,\n });\n }\n\n return chips;\n }, [\n categories,\n categoryFilter,\n subCategoryFilter,\n handleRemoveCategory,\n handleRemoveSubCategory,\n handleRemoveInStock,\n handleRemovePrice,\n handleRemoveSearch,\n handleRemoveTag,\n inStockOnly,\n maxPrice,\n minPrice,\n searchFilter,\n tags,\n newArrivals,\n ]);\n\n const hasActiveFilters = activeFilterChips.length > 0;\n\n const isCustomPriceDirty =\n customPrice.min.trim() !== '' || customPrice.max.trim() !== '';\n\n const renderFiltersPanel = () => (\n <>\n <div className=\"space-y-8\">\n <div className=\"space-y-8\">\n <div className=\"flex items-start justify-between gap-3\">\n <div>\n <h3 className=\"text-lg font-semibold text-gray-900\">Refine results</h3>\n <p className=\"mt-1 text-sm text-gray-500\">\n Filter by category, price, and availability to find the perfect fit faster.\n </p>\n </div>\n {hasActiveFilters && (\n <button\n type=\"button\"\n onClick={handleClearFilters}\n className=\"text-sm font-semibold text-primary-600 hover:text-primary-700\"\n >\n Clear all\n </button>\n )}\n </div>\n\n <div className=\"space-y-6\">\n <div className=\"space-y-3\">\n <h4 className=\"text-xs font-semibold uppercase tracking-[0.2em] text-gray-500\">Categories</h4>\n <div className=\"space-y-2\">\n {sortedCategories.length === 0 && (\n <span className=\"text-sm text-gray-500\">No categories available yet.</span>\n )}\n {sortedCategories.map((category) => {\n const isCategoryActive = categoryFilter === category.id;\n const isExpanded = !!expandedCategories[category.id as string];\n return (\n <div key={category.id} className=\"rounded-xl border-gray-100 bg-white/50\">\n <div\n role=\"button\"\n tabIndex={0}\n onClick={() => {\n // Selecting a category also expands it for quick access to subcategories\n if (!isExpanded) toggleCategoryExpand(category.id ?? '');\n handleCategoryChange(category.id ?? '');\n }}\n className={`flex w-full items-center justify-between rounded-xl px-3 py-2 text-sm font-medium transition ${\n isCategoryActive\n ? 'text-primary-700 bg-primary-50'\n : 'text-gray-700 hover:text-primary-700 hover:bg-primary-50/50'\n }`}\n >\n <span className=\"flex items-center gap-2\">\n <span className='font-medium'>{category.name}</span>\n {category.productCount > 0 && (\n <span className={`ml-1 rounded-full bg-gray-100 px-2 py-0.5 text-xs ${isCategoryActive ? 'text-primary-700' : 'text-gray-500'}`}>\n {category.productCount}\n </span>\n )}\n </span>\n <button\n type=\"button\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n toggleCategoryExpand(category.id ?? '');\n }}\n className=\"rounded-md p-1 hover:bg-gray-100\"\n aria-label={isExpanded ? 'Collapse' : 'Expand'}\n >\n <ChevronDown className={`h-4 w-4 transition-transform ${isExpanded ? 'rotate-180 text-primary-600' : 'rotate-0 text-gray-400'}`} />\n </button>\n </div>\n {isExpanded && Array.isArray(category.categorySubCategories) && category.categorySubCategories.length > 0 && (\n <div className=\"mt-1 border-gray-100 px-2 pb-2 pl-4\">\n <div className=\"divide-y divide-gray-100\">\n {category.categorySubCategories.map((sub) => {\n const isSubActive = subCategoryFilter === sub.id;\n return (\n <button\n key={sub.id}\n type=\"button\"\n onClick={() => handleSubCategoryChange(category.id ?? '', sub.id)}\n className={`block w-full px-2 py-2 text-sm text-start transition ${\n isSubActive\n ? 'text-primary-700'\n : 'text-gray-600 hover:text-primary-700 '\n }`}\n >\n {sub.name}\n </button>\n );\n })}\n </div>\n </div>\n )}\n </div>\n );\n })}\n </div>\n </div>\n </div>\n </div>\n\n <div className=\"space-y-4\">\n <h4 className=\"text-xs font-semibold uppercase tracking-[0.2em] text-gray-500\">\n Price\n </h4>\n <div className=\"flex flex-wrap gap-2\">\n {priceRanges.map((range) => {\n const isActive = selectedPriceRange === range.value;\n return (\n <button\n type=\"button\"\n key={range.value}\n onClick={() => handlePriceRangeSelect(range.value)}\n className={`rounded-full border px-3 py-1.5 text-sm font-medium transition ${\n isActive\n ? 'border-secondary-600 bg-secondary-600 text-white shadow-lg shadow-secondary-500/30'\n : 'border-gray-200 bg-white text-gray-600 hover:border-secondary-300 hover:text-secondary-600'\n }`}\n >\n {range.label}\n </button>\n );\n })}\n </div>\n <div className=\"grid grid-cols-2 gap-3\">\n <Input\n type=\"number\"\n min=\"0\"\n placeholder=\"Custom min\"\n value={customPrice.min}\n onChange={(event) =>\n setCustomPrice((current) => ({ ...current, min: event.target.value }))\n }\n />\n <Input\n type=\"number\"\n min=\"0\"\n placeholder=\"Custom max\"\n value={customPrice.max}\n onChange={(event) =>\n setCustomPrice((current) => ({ ...current, max: event.target.value }))\n }\n />\n </div>\n <button\n type=\"button\"\n onClick={applyCustomPrice}\n disabled={!isCustomPriceDirty}\n className=\"w-full rounded-xl border border-primary-500 bg-primary-500/10 px-4 py-2.5 text-sm font-semibold text-primary-700 transition hover:bg-primary-500/20 disabled:cursor-not-allowed disabled:border-gray-200 disabled:text-gray-400\"\n >\n Apply price range\n </button>\n </div>\n\n <div className=\"space-y-3\">\n <h4 className=\"text-xs font-semibold uppercase tracking-[0.2em] text-gray-500\">\n Availability\n </h4>\n <button\n type=\"button\"\n onClick={handleToggleStock}\n className={`flex w-full items-center justify-between rounded-xl border px-4 py-3 text-sm font-medium transition ${\n inStockOnly\n ? 'border-primary-500 bg-primary-50 text-primary-700'\n : 'border-gray-200 bg-white text-gray-600 hover:border-primary-300 hover:text-primary-600'\n }`}\n >\n <span>In stock only</span>\n <Sparkles className=\"h-4 w-4 text-primary-500\" />\n </button>\n <button\n type=\"button\"\n onClick={handleToggleNewArrivals}\n className={`mt-2 flex w-full items-center justify-between rounded-xl border px-4 py-3 text-sm font-medium transition ${\n newArrivals\n ? 'border-secondary-500 bg-secondary-50 text-secondary-700'\n : 'border-gray-200 bg-white text-gray-600 hover:border-secondary-300 hover:text-secondary-600'\n }`}\n >\n <span>New arrivals (last 30 days)</span>\n <Sparkles className=\"h-4 w-4 text-secondary-500\" />\n </button>\n </div>\n </div>\n </>\n );\n\n return (\n <div className=\"min-h-screen bg-slate-50\">\n <section className=\"relative overflow-hidden bg-gradient-to-br from-[rgb(var(--header-from))] via-[rgb(var(--header-via))] to-[rgb(var(--header-to))] text-white\">\n <div\n className=\"absolute inset-0 bg-[radial-gradient(circle_at_top_left,_rgba(255,255,255,0.35),_transparent_60%)]\"\n aria-hidden=\"true\"\n />\n <div className=\"absolute inset-0 bg-[radial-gradient(circle_at_bottom_right,_rgba(94,234,212,0.35),_transparent_55%)] opacity-60\" />\n <div className=\"relative container mx-auto px-4 py-24\">\n <motion.div\n initial={{ opacity: 0, y: 24 }}\n animate={{ opacity: 1, y: 0 }}\n className=\"max-w-3xl space-y-8 text-center md:mx-auto md:text-left\"\n >\n <span className=\"inline-flex items-center gap-2 rounded-full bg-white/10 px-4 py-2 text-sm font-semibold tracking-wide text-white/80 backdrop-blur\">\n <Sparkles className=\"h-4 w-4\" />\n Wellness products, curated for you\n </span>\n <h1 className=\"text-4xl font-bold leading-tight md:text-6xl\">\n Find pharmacy favorites crafted to keep your family thriving\n </h1>\n <p className=\"text-lg text-white/80 md:text-xl\">\n Explore a modern storefront with real-time inventory, smart filters, and rich\n product details designed to make healthier choices easier.\n </p>\n <form\n onSubmit={handleSearch}\n className=\"mx-auto max-w-2xl md:mx-0\"\n >\n <div className=\"relative w-full\">\n <input\n type=\"search\"\n placeholder=\"Search for products, categories, or symptoms...\"\n value={searchQuery}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n className=\"flex h-12 w-full rounded-xl border border-white/20 bg-white/10 px-4 py-2 pr-14 text-lg text-white placeholder-white/60 shadow-2xl shadow-primary-900/20 backdrop-blur focus:border-white/30 focus:outline-none focus:ring-2 focus:ring-white/20 disabled:opacity-50\"\n disabled={isSearching}\n />\n <button\n type=\"submit\"\n className=\"absolute right-2 top-1/2 -translate-y-1/2 rounded-xl bg-white/20 p-3 text-white transition hover:bg-white/30 disabled:opacity-50\"\n disabled={!searchQuery.trim() || isSearching}\n >\n {isSearching ? (\n <div className=\"h-5 w-5 animate-spin rounded-full border-2 border-white border-t-transparent\" />\n ) : (\n <Search className=\"h-5 w-5\" />\n )}\n </button>\n </div>\n </form>\n </motion.div>\n\n <motion.div\n initial={{ opacity: 0, y: 24 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: 0.15 }}\n className=\"mt-12 flex flex-col gap-6 rounded-3xl border border-white/20 bg-white/10 p-6 backdrop-blur md:flex-row md:items-center md:justify-between\"\n >\n <div className=\"space-y-3\">\n <p className=\"text-sm font-semibold uppercase tracking-[0.3em] text-white/60\">\n Explore popular searches\n </p>\n <div className=\"flex flex-wrap gap-2\">\n {quickSearches.map((term) => (\n <button\n key={term}\n type=\"button\"\n onClick={() => handleQuickSearch(term)}\n className=\"rounded-full border border-white/30 bg-white/10 px-4 py-2 text-sm font-medium text-white transition hover:border-white/50 hover:bg-white/20\"\n >\n {term}\n </button>\n ))}\n </div>\n </div>\n {topCategories.length > 0 && (\n <div className=\"space-y-3 md:text-right\">\n <p className=\"text-sm font-semibold uppercase tracking-[0.3em] text-white/60\">\n Trending categories\n </p>\n <div className=\"flex flex-wrap justify-start gap-2 md:justify-end\">\n {topCategories.map((category) => (\n <button\n key={category.id}\n type=\"button\"\n onClick={() => handleCategoryChange(category.id ?? '')}\n className=\"rounded-full bg-white/15 px-3 py-1.5 text-sm font-medium text-white transition hover:bg-white/25\"\n >\n {category.name}\n </button>\n ))}\n </div>\n </div>\n )}\n </motion.div>\n\n <div className=\"mt-10 grid gap-4 md:grid-cols-3\">\n {insightCards.map((card, index) => {\n const Icon = card.icon;\n return (\n <motion.div\n key={card.id}\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: 0.2 + index * 0.05 }}\n className={`rounded-2xl border p-5 backdrop-blur ${\n card.id === 'new' && newArrivals\n ? 'border-white/40 bg-white/25 ring-2 ring-white/30'\n : 'border-white/20 bg-white/15'\n } ${card.id === 'new' ? 'cursor-pointer hover:bg-white/20' : ''}`}\n onClick={card.id === 'new' ? handleToggleNewArrivals : undefined}\n role={card.id === 'new' ? 'button' : undefined}\n aria-pressed={card.id === 'new' ? (newArrivals ? 'true' : 'false') : undefined}\n title={card.id === 'new' ? (newArrivals ? 'Filter active: showing products from the last 30 days' : 'Click to filter products from the last 30 days') : undefined}\n >\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"text-sm font-semibold uppercase tracking-[0.3em] text-white/60\">\n {card.label}\n </p>\n <p className=\"mt-2 text-3xl font-semibold text-white\">{card.value}</p>\n </div>\n <span className=\"rounded-full bg-white/20 p-3 text-white\">\n <Icon className=\"h-5 w-5\" />\n </span>\n </div>\n <p className=\"mt-3 text-sm text-white/70\">{card.helper}</p>\n </motion.div>\n );\n })}\n </div>\n </div>\n </section>\n\n <div className=\"relative z-10 -mt-12 pb-16\">\n <div className=\"container mx-auto px-4\">\n <div className=\"flex flex-col gap-8 lg:flex-row\">\n <aside className=\"hidden w-72 flex-shrink-0 lg:block\">\n <div className=\"sticky top-24 rounded-3xl border border-gray-100 bg-white p-6 shadow-xl shadow-gray-200/40\">\n {renderFiltersPanel()}\n </div>\n </aside>\n\n <main className=\"flex-1 space-y-6\">\n <div className=\"rounded-3xl border border-gray-100 bg-white p-6 shadow-sm\">\n <div className=\"flex flex-col gap-6 md:flex-row md:items-center md:justify-between\">\n <div>\n <h2 className=\"text-2xl font-bold text-gray-900\">All products</h2>\n <p className=\"mt-1 text-sm text-gray-500\">\n Browse a pharmacy-grade catalogue with smart merchandising and modern UI.\n </p>\n </div>\n <div className=\"flex flex-col gap-3 md:flex-row md:items-center\">\n <div className=\"relative\">\n <ArrowUpDown className=\"pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-gray-400\" />\n <select\n value={sortOption}\n onChange={(event) => {\n setSortOption(event.target.value as SortOption);\n }}\n className=\"appearance-none rounded-xl border border-gray-200 bg-white py-2.5 pl-10 pr-9 text-sm font-medium text-gray-700 shadow-sm transition focus:border-primary-500 focus:outline-none focus:ring-2 focus:ring-primary-500/30\"\n >\n <option value=\"featured\">Featured products</option>\n <option value=\"price-low-high\">Price: low to high</option>\n <option value=\"price-high-low\">Price: high to low</option>\n <option value=\"newest\">Newest arrivals</option>\n </select>\n <ChevronDown className=\"pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 h-4 w-4 text-gray-400\" />\n </div>\n <div className=\"flex items-center rounded-xl border border-gray-200 bg-white shadow-sm\">\n <button\n type=\"button\"\n onClick={() => setViewMode('grid')}\n className={`flex items-center gap-2 rounded-l-xl px-4 py-2 text-sm font-medium transition ${\n viewMode === 'grid'\n ? 'bg-primary-50 text-primary-600'\n : 'text-gray-500 hover:text-gray-700'\n }`}\n aria-pressed={viewMode === 'grid'}\n >\n <LayoutGrid className=\"h-4 w-4\" />\n Grid\n </button>\n <button\n type=\"button\"\n onClick={() => setViewMode('list')}\n className={`flex items-center gap-2 rounded-r-xl px-4 py-2 text-sm font-medium transition ${\n viewMode === 'list'\n ? 'bg-primary-50 text-primary-600'\n : 'text-gray-500 hover:text-gray-700'\n }`}\n aria-pressed={viewMode === 'list'}\n >\n <LayoutList className=\"h-4 w-4\" />\n List\n </button>\n </div>\n </div>\n </div>\n\n <div className=\"mt-4 md:hidden\">\n <Button\n variant=\"outline\"\n className=\"w-full\"\n onClick={() => setShowFilters(true)}\n >\n <SlidersHorizontal className=\"h-5 w-5\" />\n Filters\n {hasActiveFilters && (\n <span className=\"ml-2 rounded-full bg-primary-600 px-2 py-0.5 text-xs font-semibold text-white\">\n {activeFilterChips.length}\n </span>\n )}\n </Button>\n </div>\n\n {hasActiveFilters && (\n <div className=\"mt-6 flex flex-wrap items-center gap-2 border-t border-gray-100 pt-4\">\n {activeFilterChips.map((chip) => (\n <button\n key={chip.key}\n type=\"button\"\n onClick={chip.onRemove}\n className=\"group flex items-center gap-2 rounded-full bg-primary-50 px-3 py-1.5 text-sm font-medium text-primary-700 transition hover:bg-primary-100\"\n >\n {chip.label}\n <X className=\"h-4 w-4 text-primary-500 group-hover:text-primary-700\" />\n </button>\n ))}\n <button\n type=\"button\"\n onClick={handleClearFilters}\n className=\"text-sm font-semibold text-gray-500 hover:text-gray-700\"\n >\n Reset all\n </button>\n </div>\n )}\n </div>\n\n <div className=\"rounded-3xl border border-gray-100 bg-white p-6 shadow-sm\">\n <div className=\"flex flex-col gap-3 text-sm text-gray-600 md:flex-row md:items-center md:justify-between\">\n <span>\n {isLoading\n ? 'Loading products...'\n : `Showing ${displayedProducts.length} of ${pagination.total || displayedProducts.length} products`}\n </span>\n <span className=\"inline-flex items-center gap-2 text-gray-400\">\n <Clock className=\"h-4 w-4\" />\n Updated a moment ago\n </span>\n </div>\n\n <div className=\"mt-6\">\n {isLoading ? (\n <div className=\"grid grid-cols-1 gap-6 sm:grid-cols-2 xl:grid-cols-3\">\n {Array.from({ length: 6 }).map((_, index) => (\n <ProductCardSkeleton key={index} />\n ))}\n </div>\n ) : displayedProducts.length > 0 ? (\n viewMode === 'grid' ? (\n <div className=\"grid grid-cols-1 gap-6 sm:grid-cols-2 xl:grid-cols-3\">\n {displayedProducts.map((product) => (\n <div key={product.id} className=\"h-full\">\n <ProductCard\n product={product}\n onClickProduct={(item) => {\n const productData = encodeURIComponent(JSON.stringify(item));\n router.push(`/products/${item.id}?product=${productData}`);\n }}\n />\n </div>\n ))}\n </div>\n ) : (\n <div className=\"space-y-4\">\n {displayedProducts.map((product) => {\n const discount =\n product.priceBeforeDiscount && product.priceBeforeDiscount > product.finalPrice\n ? Math.round(\n ((product.priceBeforeDiscount - product.finalPrice) /\n product.priceBeforeDiscount) *\n 100\n )\n : 0;\n\n return (\n <motion.div\n key={product.id}\n whileHover={{ y: -4 }}\n className=\"group flex cursor-pointer flex-col gap-6 rounded-2xl border border-gray-100 bg-white p-5 shadow-sm transition hover:shadow-xl md:flex-row md:items-start\"\n onClick={() => router.push(`/products/${product.id}`)}\n >\n <div className=\"relative h-48 w-full overflow-hidden rounded-2xl bg-gray-100 md:h-40 md:w-40\">\n <Image\n src={product.productMedia[0]?.file || '/placeholder-product.jpg'}\n alt={product.name}\n fill\n className=\"object-cover transition duration-500 group-hover:scale-105\"\n />\n </div>\n\n <div className=\"flex-1 space-y-3\">\n <div className=\"flex flex-wrap items-center gap-2 text-xs font-semibold uppercase tracking-wide text-primary-600\">\n {product.parentCategories.length > 0 && (\n <span className=\"rounded-full bg-primary-50 px-3 py-1 text-primary-700\">\n {product.parentCategories.map((category) => category?.name).join(', ')}\n </span>\n )}\n {product.tags?.slice(0, 3).map((tag) => (\n <span\n key={tag}\n className=\"rounded-full bg-slate-100 px-3 py-1 text-gray-600\"\n >\n {tag}\n </span>\n ))}\n </div>\n <h3 className=\"text-xl font-semibold text-gray-900\">\n {product.name}\n </h3>\n {/* {product.description && (\n <p className=\"text-sm leading-relaxed text-gray-600 line-clamp-2\">\n {product.description}\n </p>\n )} */}\n <div className=\"flex flex-wrap items-center gap-4 text-sm text-gray-500\">\n <span className=\"inline-flex items-center gap-2 font-medium text-primary-600\">\n <ShieldCheck className=\"h-4 w-4\" />\n {product.inventoryCount > 0 ? 'In stock & ready to ship' : 'Restocking soon'}\n </span>\n <span className=\"inline-flex items-center gap-2\">\n <Clock className=\"h-4 w-4 text-primary-500\" />\n Added {new Date(product.createdAt).toLocaleDateString()}\n </span>\n </div>\n </div>\n\n <div className=\"flex w-full flex-col items-end gap-3 md:w-auto\">\n <div className=\"text-right\">\n <p className=\"text-3xl font-semibold text-gray-900\">\n {formatPrice(product.finalPrice)}\n </p>\n {product.priceBeforeDiscount && (\n <p className=\"text-sm text-gray-400 line-through\">\n {formatPrice(product.priceBeforeDiscount)}\n </p>\n )}\n </div>\n <Button\n size=\"sm\"\n onClick={(event) => {\n event.stopPropagation();\n router.push(`/products/${product._id}`);\n }}\n >\n View product\n </Button>\n </div>\n </motion.div>\n );\n })}\n </div>\n )\n ) : (\n <EmptyState\n icon={Package}\n title=\"No products found\"\n description=\"Try adjusting your filters or search terms to uncover more results.\"\n actionLabel={hasActiveFilters ? 'Clear filters' : undefined}\n onAction={hasActiveFilters ? handleClearFilters : undefined}\n />\n )}\n </div>\n\n {pagination.totalPages > 1 && (\n <div className=\"mt-10 flex flex-wrap items-center justify-center gap-3\">\n <Button\n variant=\"outline\"\n onClick={() => setPage((current) => Math.max(1, current - 1))}\n disabled={page === 1}\n >\n Previous\n </Button>\n <span className=\"text-sm font-semibold text-gray-600\">\n Page {page} of {pagination.totalPages}\n </span>\n <Button\n variant=\"outline\"\n onClick={() =>\n setPage((current) => Math.min(pagination.totalPages, current + 1))\n }\n disabled={page === pagination.totalPages}\n >\n Next\n </Button>\n </div>\n )}\n </div>\n </main>\n </div>\n </div>\n </div>\n\n <AnimatePresence>\n {showFilters && (\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n className=\"fixed inset-0 z-50 bg-black/40 backdrop-blur-sm lg:hidden\"\n >\n <motion.div\n initial={{ y: '100%' }}\n animate={{ y: 0 }}\n exit={{ y: '100%' }}\n transition={{ type: 'spring', stiffness: 260, damping: 26 }}\n className=\"absolute inset-x-0 bottom-0 max-h-[85vh] overflow-y-auto rounded-t-3xl bg-white p-6 shadow-2xl\"\n >\n <div className=\"mb-6 flex items-center justify-between\">\n <h3 className=\"text-lg font-semibold text-gray-900\">Filters</h3>\n <button\n type=\"button\"\n onClick={() => setShowFilters(false)}\n className=\"rounded-full border border-gray-200 p-2 text-gray-500 hover:text-gray-700\"\n >\n <X className=\"h-4 w-4\" />\n </button>\n </div>\n {renderFiltersPanel()}\n </motion.div>\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n );\n}\n","import React from 'react';\n\ninterface BadgeProps {\n children: React.ReactNode;\n variant?: 'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'gray';\n size?: 'sm' | 'md';\n className?: string;\n}\n\nexport function Badge({ children, variant = 'primary', size = 'md', className = '' }: BadgeProps) {\n const variants = {\n primary: 'bg-primary-100 text-primary-700 border-primary-200',\n secondary: 'bg-secondary-100 text-secondary-700 border-secondary-200',\n success: 'bg-green-100 text-green-700 border-green-200',\n warning: 'bg-yellow-100 text-yellow-700 border-yellow-200',\n danger: 'bg-red-100 text-red-700 border-red-200',\n gray: 'bg-gray-100 text-gray-700 border-gray-200',\n };\n \n const sizes = {\n sm: 'px-2 py-1 text-xs',\n md: 'px-3 py-1 text-sm',\n };\n\n return (\n <span className={`inline-flex items-center font-medium rounded-full border ${variants[variant]} ${sizes[size]} ${className}`}>\n {children}\n </span>\n );\n}\n\n","'use client';\n\nimport React, { useEffect, useState, useMemo } from 'react';\nimport { motion } from 'framer-motion';\nimport {\n ArrowLeft,\n Award,\n Check,\n ChevronRight,\n Heart,\n Minus,\n Package,\n Plus,\n Shield,\n ShieldCheck,\n ShoppingCart,\n Sparkles,\n Star,\n Truck,\n} from 'lucide-react';\nimport Link from 'next/link';\nimport Image from 'next/image';\nimport { Button } from '@/components/ui/Button';\nimport { Badge } from '@/components/ui/Badge';\nimport { ProductCard } from '@/components/ProductCard';\nimport { useProduct } from '@/hooks/useProducts';\nimport { useCart } from '@/providers/CartProvider';\nimport { formatDate, formatPrice } from '@/lib/utils/format';\nimport { toast } from 'sonner';\nimport { useRouter } from 'next/navigation';\nimport { ProductVariantsApi } from '@/lib/Apis/apis/product-variants-api';\nimport { AXIOS_CONFIG } from '@/lib/Apis/wrapper';\nimport { useWishlist } from '@/providers/WishlistProvider';\nimport { ProductsApi, ProductVariant, ProductVariantInventoryStatusEnum } from '@/lib/Apis';\n\nconst safeFormatDate = (date?: Date | string, format: 'long' | 'short' = 'long'): string => {\n if (!date) return 'N/A';\n try {\n const dateObj = typeof date === 'string' ? new Date(date) : date;\n return formatDate(dateObj, format);\n } catch (error) {\n console.error('Error formatting date:', error);\n return 'N/A';\n }\n};\n\ninterface ProductDetailScreenProps {\n productId: string;\n}\n\nexport function ProductDetailScreen({ productId }: ProductDetailScreenProps) {\n // Hooks and state at the top level\n const router = useRouter();\n const { product: productData, isLoading } = useProduct(productId);\n const { addToCart } = useCart();\n\n // State declarations\n const [selectedVariant, setSelectedVariant] = useState<ProductVariant | null>(null);\n const [quantity, setQuantity] = useState(1);\n const [isAddingToCart, setIsAddingToCart] = useState(false);\n const [isFavorited, setIsFavorited] = useState(false);\n const [relatedProducts, setRelatedProducts] = useState<any[]>([]);\n const [initialProductData, setInitialProductData] = useState<any>(null);\n const [activeImageIndex, setActiveImageIndex] = useState(0);\n\n\n useEffect(() => {\n setActiveImageIndex(0);\n }, [selectedVariant]);\n\n const product = useMemo(() => {\n if (initialProductData && !productData) {\n return initialProductData;\n }\n\n if (!productData) return null;\n\n if (productData.productVariants?.length && selectedVariant) {\n return {\n ...productData,\n price: selectedVariant.finalPrice,\n inStock: selectedVariant.isActive,\n sku: selectedVariant.sku || productData.sku,\n variantId: selectedVariant.id,\n variantName: selectedVariant.name\n };\n }\n\n return productData;\n }, [productData, selectedVariant, initialProductData]);\n\n const getVariantImages = () => {\n if (selectedVariant?.productMedia?.length) {\n return selectedVariant.productMedia.map((media: any) => ({\n src: media.file,\n width: 800,\n height: 1000,\n alt: product?.name || 'Product image',\n ...media,\n url: media.file,\n }));\n }\n\n if (product?.images?.length) {\n return product.images.map((image: string) => ({\n src: image,\n width: 800,\n height: 1000,\n alt: product?.name || 'Product image',\n url: image,\n file: image,\n type: 'image' as const\n }));\n }\n\n return [];\n };\n\n const currentVariant = selectedVariant || product?.productVariants?.[0] || product;\n const variantImages = getVariantImages();\n\n // Use only the selected variant's prices for discount calculation\n const variantPrice = selectedVariant?.finalPrice || currentVariant?.finalPrice || product?.price || 0;\n const variantComparePrice = selectedVariant?.retailPrice ||\n (currentVariant && 'retailPrice' in currentVariant ? currentVariant.retailPrice : null) ||\n product?.compareAtPrice;\n\n // Only show discount if we have both prices and the compare price is higher\n const discount = variantComparePrice && variantPrice && variantComparePrice > variantPrice\n ? Math.round(((variantComparePrice - variantPrice) / variantComparePrice) * 100)\n : 0;\n const lastUpdatedLabel = safeFormatDate(\n (currentVariant && 'updatedAt' in currentVariant && currentVariant.updatedAt)\n ? currentVariant.updatedAt\n : product?.updatedAt\n );\n const variantSku = currentVariant?.sku || product?.sku || 'N/A';\n // const variantInStock = currentVariant && 'inStock' in currentVariant\n // ? currentVariant.inStock\n // : product?.inStock;\n\n const variantInStock = currentVariant?.inventoryCount > 0;\n\n\n useEffect(() => {\n if (typeof window === 'undefined') return;\n\n const searchParams = new URLSearchParams(window.location.search);\n const productParam = searchParams.get('product');\n\n if (productParam) {\n try {\n const decodedProduct = JSON.parse(decodeURIComponent(productParam));\n setInitialProductData(decodedProduct);\n } catch (error) {\n console.error('Failed to parse product data from URL', error);\n }\n }\n }, []);\n\n\n\n useEffect(() => {\n if (product?.productVariants?.length > 0) {\n const newVariant = product?.productVariants?.[0];\n setSelectedVariant(newVariant);\n }\n }, [product?.productVariants]);\n\n useEffect(() => {\n if (!product?.id) return;\n\n let isMounted = true;\n const fetchRelated = async () => {\n try {\n const response = await new ProductsApi(AXIOS_CONFIG).getRelatedProducts(product.id, {\n params: {\n limit: 4\n }\n });\n setRelatedProducts(response.data || []);\n } catch (error: any) {\n console.error('Failed to fetch related products', error);\n }\n };\n fetchRelated();\n return () => {\n isMounted = false;\n };\n }, [product?.id]);\n\n\n const handleVariantSelect = async (variant: ProductVariant) => {\n setSelectedVariant(variant);\n };\n\n const handleAddToCart = async () => {\n if (!product || !selectedVariant) return;\n\n setIsAddingToCart(true);\n try {\n await addToCart(\n product.id,\n quantity,\n selectedVariant.id\n );\n toast.success('Added to cart', {\n description: `${quantity} × ${product.name}${selectedVariant.name ? ` (${selectedVariant.name})` : ''}`,\n });\n } catch (error) {\n console.error('Failed to add to cart', error);\n toast.error('Could not add to cart. Please try again.');\n } finally {\n setIsAddingToCart(false);\n }\n };\n\n const { addToWishlist, removeFromWishlist, isInWishlist } = useWishlist();\n\n // Initialize isFavorited based on whether the product is in the wishlist\n useEffect(() => {\n if (product) {\n setIsFavorited(isInWishlist(product.id));\n }\n }, [product, isInWishlist]);\n\n const handleToggleFavorite = async () => {\n if (!product) return;\n\n try {\n if (isFavorited) {\n await removeFromWishlist(product.id);\n toast.info('Removed from saved items');\n } else {\n await addToWishlist(product);\n toast.success('Saved to your favorites');\n }\n // Update the local state after successful API call\n setIsFavorited(!isFavorited);\n } catch (error) {\n console.error('Error updating wishlist:', error);\n toast.error('Failed to update wishlist');\n }\n };\n\n if (isLoading) {\n return (\n <div className=\"min-h-screen bg-slate-50\">\n <div className=\"container mx-auto px-4 py-16\">\n <div className=\"grid gap-10 lg:grid-cols-[minmax(0,2fr)_minmax(0,1fr)]\">\n <div className=\"space-y-6\">\n <div className=\"h-[520px] animate-pulse rounded-3xl bg-slate-200\" />\n <div className=\"grid grid-cols-3 gap-4\">\n {Array.from({ length: 3 }).map((_, index) => (\n <div key={index} className=\"h-32 animate-pulse rounded-2xl bg-slate-200\" />\n ))}\n </div>\n </div>\n <div className=\"space-y-4 rounded-3xl bg-white p-6 shadow-sm\">\n <div className=\"h-8 w-32 animate-pulse rounded-full bg-slate-200\" />\n <div className=\"h-10 w-48 animate-pulse rounded-full bg-slate-200\" />\n <div className=\"h-6 w-full animate-pulse rounded-full bg-slate-200\" />\n <div className=\"h-12 w-full animate-pulse rounded-2xl bg-slate-200\" />\n <div className=\"h-12 w-full animate-pulse rounded-2xl bg-slate-200\" />\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n if (!product) {\n return (\n <div className=\"min-h-screen bg-slate-50\">\n <div className=\"container mx-auto px-4 py-16\">\n <div className=\"rounded-3xl bg-white p-10 text-center shadow-sm\">\n <Sparkles className=\"mx-auto h-10 w-10 text-primary-500\" />\n <h1 className=\"mt-6 text-2xl font-semibold text-gray-900\">Product not found</h1>\n <p className=\"mt-2 text-gray-600\">\n It may have been removed or is temporarily unavailable. Discover other pharmacy\n essentials in our catalogue.\n </p>\n <div className=\"mt-6\">\n <Link href=\"/shop\" className=\"inline-block\">\n <Button>Browse products</Button>\n </Link>\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n const benefitPills =\n product.tags && product.tags.length > 0\n ? product.tags.slice(0, 6)\n : ['Pharmacist approved', 'Gentle on daily routines', 'Backed by real customers'];\n\n const highlightCards = [\n {\n icon: ShieldCheck,\n title: 'Pharmacy grade assurance',\n description: 'Sourced from trusted suppliers and reviewed by licensed professionals.',\n },\n {\n icon: Truck,\n title: 'Fast, cold-chain ready shipping',\n description: 'Carefully packed and dispatched within 24 hours on business days.',\n },\n {\n icon: Award,\n title: 'Loved by patients',\n description: 'Average rating 4.8/5 with over 120 verified customer experiences.',\n },\n ];\n\n\n\n return (\n <div className=\"min-h-screen bg-slate-50\">\n <section className=\"relative overflow-hidden bg-gradient-to-br from-[rgb(var(--header-from))] via-[rgb(var(--header-via))] to-[rgb(var(--header-to))] text-white mb-8\">\n <div\n className=\"absolute inset-0 bg-[radial-gradient(circle_at_top_left,_rgba(255,255,255,0.35),_transparent_60%)]\"\n aria-hidden=\"true\"\n />\n <div className=\"absolute inset-0 bg-[radial-gradient(circle_at_bottom_right,_rgba(255,255,255,0.25),_transparent_55%)] opacity-70\" />\n <div className=\"relative container mx-auto px-4 py-16\">\n <div className=\"flex flex-col gap-6\">\n <div className=\"flex items-center justify-between\">\n <Button\n variant=\"ghost\"\n className=\"text-white hover:bg-white/10\"\n onClick={() => router.push('/shop')}\n >\n <ArrowLeft className=\"h-5 w-5\" />\n Continue shopping\n </Button>\n <div className=\"hidden items-center gap-3 text-sm text-white/80 md:flex\">\n <Link href=\"/\" className=\"transition hover:text-white\">\n Home\n </Link>\n <ChevronRight className=\"h-4 w-4\" />\n <Link href=\"/shop\" className=\"transition hover:text-white\">\n Shop\n </Link>\n <ChevronRight className=\"h-4 w-4\" />\n <span className=\"truncate font-medium text-white\">{product.name}</span>\n </div>\n </div>\n <motion.div\n initial={{ opacity: 0, y: 24 }}\n animate={{ opacity: 1, y: 0 }}\n className=\"max-w-3xl space-y-4\"\n >\n {product.category && (\n <Badge\n variant=\"secondary\"\n className=\"bg-white/15 text-white backdrop-blur-sm\"\n >\n {product.category}\n </Badge>\n )}\n <h1 className=\"text-4xl font-bold leading-tight md:text-5xl\">{product.name}</h1>\n <div className=\"flex flex-wrap items-center gap-3 text-sm text-white/80\">\n <span className=\"inline-flex items-center gap-2 rounded-full bg-white/10 px-3 py-1 font-medium text-white\">\n <Sparkles className=\"h-4 w-4\" />\n Ready to ship today\n </span>\n <span className=\"inline-flex items-center gap-2 rounded-full bg-white/10 px-3 py-1 font-medium text-white\">\n <Shield className=\"h-4 w-4\" />\n 30-day happiness guarantee\n </span>\n </div>\n </motion.div>\n </div>\n </div>\n </section>\n\n <div className=\"relative -mt-16 pb-20\">\n <div className=\"container mx-auto px-4\">\n <div className=\"grid gap-10 lg:grid-cols-[minmax(0,2fr)_minmax(0,1fr)]\">\n <div className=\"space-y-10\">\n <section className=\"rounded-3xl border border-white bg-white/70 p-6 shadow-xl shadow-primary-100/40 backdrop-blur\">\n <div className=\"grid gap-6 lg:grid-cols-[minmax(0,1fr)_220px]\">\n <motion.div\n key={variantImages[activeImageIndex]}\n initial={{ opacity: 0.4, scale: 0.98 }}\n animate={{ opacity: 1, scale: 1 }}\n transition={{ duration: 0.35 }}\n className=\"relative overflow-hidden rounded-3xl bg-slate-100 h-[420px] md:h-[560px]\"\n >\n <Image\n src={variantImages[activeImageIndex]}\n alt={currentVariant.name || product.name}\n fill\n priority\n sizes=\"(max-width: 1024px) 100vw, 800px\"\n className=\"object-contain\"\n />\n {discount > 0 && (\n <Badge\n variant=\"danger\"\n className=\"absolute left-6 top-6 shadow-lg shadow-red-500/20\"\n >\n Save {discount}%\n </Badge>\n )}\n {!variantInStock && (\n <Badge\n variant=\"secondary\"\n className=\"absolute right-6 top-6 bg-white/90 text-slate-700 shadow-lg border-slate-200\"\n >\n Out of Stock\n </Badge>\n )}\n </motion.div>\n\n <div className=\"flex flex-col gap-4\">\n {product?.productVariants?.length > 0 && (\n <div className=\"rounded-2xl border border-slate-200 bg-white p-4 shadow-sm\">\n <p className=\"mb-2 text-sm font-semibold uppercase tracking-[0.25em] text-slate-400\">\n Variant\n </p>\n <div className=\"flex flex-wrap gap-2\">\n {product?.productVariants?.map((variant: ProductVariant, index: number) => (\n <button\n key={variant.id}\n type=\"button\"\n onClick={() => handleVariantSelect(variant)}\n className={`rounded-full px-4 py-2 text-sm font-medium transition ${selectedVariant?.id === variant.id\n ? 'bg-primary-600 text-white'\n : 'bg-slate-100 text-slate-700 hover:bg-slate-200'\n }`}\n >\n {variant.name}\n </button>\n ))}\n </div>\n </div>\n )}\n\n <div className=\"grid grid-cols-3 gap-3\">\n {variantImages.map((image: { src: string; alt?: string }, index: number) => (\n <button\n key={image.src + index}\n type=\"button\"\n onClick={() => setActiveImageIndex(index)}\n className={`relative aspect-square overflow-hidden rounded-2xl border transition ${activeImageIndex === index\n ? 'border-primary-500 shadow-lg shadow-primary-200/60'\n : 'border-transparent hover:border-primary-200'\n }`}\n >\n <Image\n src={image.src}\n alt={image.alt || `Product image ${index + 1}`}\n className=\"h-full w-full object-cover object-center\"\n width={200}\n height={200}\n unoptimized={true}\n />\n </button>\n ))}\n </div>\n </div>\n </div>\n </section>\n\n <section className=\"grid gap-6 lg:grid-cols-3\">\n {highlightCards.map((card) => {\n const Icon = card.icon;\n return (\n <div\n key={card.title}\n className=\"rounded-3xl border border-slate-100 bg-white p-6 shadow-sm transition hover:-translate-y-1 hover:shadow-lg\"\n >\n <div className=\"flex items-center gap-3\">\n <span className=\"rounded-2xl bg-primary-50 p-3 text-primary-600\">\n <Icon className=\"h-5 w-5\" />\n </span>\n <h3 className=\"text-base font-semibold text-slate-900\">{card.title}</h3>\n </div>\n <p className=\"mt-3 text-sm leading-relaxed text-slate-600\">{card.description}</p>\n </div>\n );\n })}\n </section>\n\n <section className=\"grid gap-6 lg:grid-cols-[minmax(0,2fr)_minmax(0,1fr)]\">\n <div className=\"rounded-3xl border border-slate-100 bg-white p-8 shadow-sm\">\n <div className=\"flex flex-wrap items-center gap-4 pb-6\">\n <div className=\"flex items-center gap-1 text-amber-500\">\n {Array.from({ length: 5 }).map((_, index) => (\n <Star key={index} className=\"h-4 w-4 fill-current\" />\n ))}\n </div>\n <span className=\"text-sm font-medium text-slate-500\">\n Rated 4.8 • Patients love the results\n </span>\n </div>\n <div className=\"space-y-8\">\n {product.description && (\n <div className=\"space-y-3\">\n <h3 className=\"text-lg font-semibold text-slate-900\">Description</h3>\n <p className=\"text-base leading-relaxed text-slate-600\" dangerouslySetInnerHTML={{ __html: product.description }} />\n </div>\n )}\n </div>\n </div>\n <div className=\"h-full rounded-3xl border border-slate-100 bg-gradient-to-br from-primary-50 via-white to-secondary-50 p-8 shadow-sm\">\n <h3 className=\"text-sm font-semibold uppercase tracking-[0.3em] text-primary-500\">\n Care tips\n </h3>\n <div className=\"mt-4 space-y-4 text-sm text-slate-600\">\n <p className=\"leading-relaxed\">\n Store in a cool, dry place away from direct sunlight. Check packaging for\n allergen statements.\n </p>\n <p className=\"leading-relaxed\">\n Consult with your local pharmacist if you are combining with other treatments\n or have chronic conditions.\n </p>\n <p className=\"rounded-2xl bg-white/60 p-4 leading-relaxed text-primary-700\">\n Questions? Our care team is on standby — reach us via chat for tailored\n support before you checkout.\n </p>\n </div>\n </div>\n </section>\n\n <section className=\"rounded-3xl border border-slate-100 bg-white p-8 shadow-sm\">\n <h2 className=\"text-xl font-semibold text-slate-900\">Product insights</h2>\n <div className=\"mt-6 grid gap-6 md:grid-cols-2\">\n <div className=\"rounded-2xl border border-slate-200 bg-slate-50/60 p-5\">\n <p className=\"text-xs font-semibold uppercase tracking-[0.3em] text-slate-500\">\n Availability\n </p>\n <div className=\"mt-3 flex items-center gap-2 text-sm text-slate-600\">\n <Check className=\"h-4 w-4 text-primary-500\" />\n {product.inStock ? 'Available for dispatch today' : 'Currently restocking'}\n </div>\n {product.stock !== undefined && (\n <p className=\"mt-2 text-xs text-slate-500\">\n {product.stock > 0\n ? `${product.stock} units remaining in inventory`\n : 'Join the waitlist to be notified first'}\n </p>\n )}\n </div>\n <div className=\"rounded-2xl border border-slate-200 bg-slate-50/60 p-5\">\n <p className=\"text-xs font-semibold uppercase tracking-[0.3em] text-slate-500\">\n Product details\n </p>\n <div className=\"mt-3 space-y-2 text-sm text-slate-600\">\n <p>\n <span className=\"font-medium text-slate-700\">Variant:</span> {currentVariant.name}\n </p>\n <p>\n <span className=\"font-medium text-slate-700\">SKU:</span> {variantSku}\n </p>\n <p>\n <span className=\"font-medium text-slate-700\">Status:</span>{' '}\n <span className={variantInStock ? 'text-green-600' : 'text-amber-600'}>\n {variantInStock ? 'In Stock' : 'Out of Stock'}\n </span>\n </p>\n <p>\n <span className=\"font-medium text-slate-700\">Last updated:</span>{' '}\n {lastUpdatedLabel}\n </p>\n <p>\n <span className=\"font-medium text-slate-700\">Ships from:</span> Local\n pharmacy distribution center\n </p>\n </div>\n </div>\n </div>\n </section>\n </div>\n\n <aside className=\"space-y-6 lg:sticky lg:top-24\">\n <div className=\"rounded-3xl border border-slate-100 bg-white p-8 shadow-lg shadow-primary-100/40\">\n <div className=\"flex items-baseline gap-3\">\n <p className=\"text-3xl font-bold text-slate-900\">\n {selectedVariant ? formatPrice(selectedVariant.finalPrice) : formatPrice(product.price)}\n </p>\n {variantComparePrice && variantComparePrice > variantPrice && (\n <p className=\"text-base text-slate-400 line-through\">\n {formatPrice(variantComparePrice)}\n </p>\n )}\n {discount > 0 && (\n <Badge variant=\"danger\" size=\"sm\">\n -{discount}%\n </Badge>\n )}\n </div>\n\n <div className=\"mt-6 space-y-4\">\n <div className=\"flex items-center gap-3 rounded-2xl bg-primary-50/80 px-4 py-3 text-sm font-medium text-primary-700\">\n <ShieldCheck className=\"h-4 w-4\" />\n Pharmacist verified product\n </div>\n\n <div className=\"flex items-center justify-between rounded-2xl border border-slate-200 px-4 py-3\">\n <span className=\"text-sm font-medium text-slate-600\">Qty</span>\n <div className=\"flex items-center rounded-full border border-slate-200 bg-slate-50\">\n <button\n type=\"button\"\n onClick={() => setQuantity((current) => Math.max(1, current - 1))}\n className=\"rounded-l-full p-2 hover:bg-primary-100/60\"\n aria-label=\"Decrease quantity\"\n >\n <Minus className=\"h-4 w-4\" />\n </button>\n <span className=\"w-12 text-center text-sm font-semibold text-slate-700\">\n {quantity}\n </span>\n <button\n type=\"button\"\n onClick={() => setQuantity((current) => current + 1)}\n className=\"rounded-r-full p-2 hover:bg-primary-100/60\"\n aria-label=\"Increase quantity\"\n >\n <Plus className=\"h-4 w-4\" />\n </button>\n </div>\n </div>\n </div>\n\n {selectedVariant && (\n <div className=\"mt-4 text-sm\">\n {selectedVariant.inventoryStatus === ProductVariantInventoryStatusEnum.OUTOFSTOCK ||\n selectedVariant.inventoryStatus === ProductVariantInventoryStatusEnum.LOWSTOCK ? (\n <div className=\"text-red-600 font-medium\">Out of Stock</div>\n ) : <div className=\"text-green-600 font-medium\">In Stock</div>\n }\n </div>\n )}\n <div className=\"mt-6 space-x-3\">\n <Button\n size=\"lg\"\n className=\"w-full\"\n onClick={handleAddToCart}\n isLoading={isAddingToCart}\n disabled={!selectedVariant || selectedVariant.inventoryStatus === ProductVariantInventoryStatusEnum.OUTOFSTOCK}\n >\n <ShoppingCart className=\"h-5 w-5\" />\n {!selectedVariant\n ? 'Select a variant'\n : selectedVariant.inventoryStatus === ProductVariantInventoryStatusEnum.OUTOFSTOCK\n ? 'Out of Stock'\n : `Add to Cart`}\n </Button>\n <Button\n size=\"lg\"\n variant=\"outline\"\n className=\"w-full\"\n onClick={handleToggleFavorite}\n >\n <Heart\n className={`h-5 w-5 ${isFavorited ? 'fill-red-500 text-red-500' : 'text-slate-500'\n }`}\n />\n {isFavorited ? 'Saved' : 'Save for later'}\n </Button>\n </div>\n\n </div>\n\n <div className=\"rounded-3xl border border-primary-100 bg-primary-50/70 p-6 text-sm text-primary-700 shadow-sm\">\n <p className=\"font-semibold uppercase tracking-[0.25em]\">Need advice?</p>\n <p className=\"mt-2 leading-relaxed\">\n Chat with a pharmacist in real time before completing your purchase. We will help\n you choose supporting supplements and answer dosing questions.\n </p>\n </div>\n </aside>\n </div>\n\n {relatedProducts.length > 0 && (\n <section className=\"mt-20\">\n <div className=\"flex items-center justify-between\">\n <div>\n <h2 className=\"text-2xl font-semibold text-slate-900\">You may also like</h2>\n <p className=\"mt-1 text-sm text-slate-500\">\n Hand-picked recommendations that pair nicely with this product.\n </p>\n </div>\n <Link href=\"/shop\" className=\"hidden md:inline-flex\">\n <Button variant=\"ghost\" className=\"text-primary-600\">\n View all products\n </Button>\n </Link>\n </div>\n <div className=\"mt-6 grid gap-6 sm:grid-cols-2 lg:grid-cols-4\">\n {relatedProducts?.map((relatedProduct) => (\n <ProductCard key={relatedProduct.id} product={relatedProduct} />\n ))}\n </div>\n </section>\n )}\n </div>\n </div>\n </div>\n );\n}","'use client';\n\nimport React, { useState } from 'react';\nimport { motion } from 'framer-motion';\nimport { Minus, Plus, Trash2 } from 'lucide-react';\nimport { formatPrice } from '@/lib/utils/format';\nimport { useCart } from '@/providers/CartProvider';\nimport Image from 'next/image';\nimport { CartItemPopulated } from '@/lib/Apis';\n\n\ninterface CartItemProps {\n item: CartItemPopulated;\n}\n\nexport function CartItem({ item }: CartItemProps) {\n const { updateQuantity, removeFromCart } = useCart();\n const [isUpdating, setIsUpdating] = useState(false);\n\n const handleUpdateQuantity = async (newQuantity: number) => {\n if (newQuantity < 1) return;\n setIsUpdating(true);\n try {\n await updateQuantity(item.productVariantId, newQuantity);\n } finally {\n setIsUpdating(false);\n }\n };\n\n const handleRemove = async () => {\n await removeFromCart(item.productVariantId);\n };\n\n const itemTotal = item.productVariantData.finalPrice * item.quantity;\n\n return (\n <motion.div\n layout\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, x: -100 }}\n className=\"flex gap-4 bg-white p-4 rounded-xl border border-gray-200 hover:border-primary-300 transition-colors\"\n >\n {/* Product Image */}\n <div className=\"relative w-24 h-24 rounded-lg overflow-hidden flex-shrink-0 bg-gray-100\">\n <Image\n src={item.productVariantData.productMedia[0]?.file || '/placeholder-product.jpg'}\n alt={item.productVariantData.name}\n fill\n className=\"object-cover\"\n />\n </div>\n\n {/* Product Info */}\n <div className=\"flex-1 min-w-0\">\n <h3 className=\"text-lg font-semibold text-gray-900 truncate\">\n {item.productVariantData.name}\n </h3>\n <p className=\"text-sm text-gray-500 mt-1\">\n {formatPrice(item.productVariantData.finalPrice)} each\n </p>\n\n {/* Quantity Controls */}\n <div className=\"flex items-center gap-3 mt-3\">\n <div className=\"flex items-center border-2 border-gray-200 rounded-lg\">\n <button\n onClick={() => handleUpdateQuantity(item.quantity - 1)}\n disabled={isUpdating || item.quantity <= 0}\n className=\"p-2 hover:bg-gray-100 disabled:opacity-50 disabled:cursor-not-allowed transition-colors\"\n >\n <Minus className=\"w-4 h-4\" />\n </button>\n <span className=\"px-4 font-medium min-w-[3rem] text-center\">\n {isUpdating ? (\n <span className=\"inline-block h-4 w-4 align-middle animate-spin rounded-full border-2 border-gray-300 border-t-gray-600\" />\n ) : (\n item.quantity\n )}\n </span>\n <button\n onClick={() => handleUpdateQuantity(item.quantity + 1)}\n disabled={isUpdating || item.quantity >= item.productVariantData.inventoryCount}\n className=\"p-2 hover:bg-gray-100 disabled:opacity-50 disabled:cursor-not-allowed transition-colors\"\n >\n <Plus className=\"w-4 h-4\" />\n </button>\n </div>\n\n <button\n onClick={handleRemove}\n className=\"p-2 text-red-600 hover:bg-red-50 rounded-lg transition-colors\"\n aria-label=\"Remove item\"\n >\n <Trash2 className=\"w-5 h-5\" />\n </button>\n </div>\n </div>\n\n {/* Item Total */}\n <div className=\"text-right\">\n <p className=\"text-xl font-bold text-gray-900\">\n {formatPrice(itemTotal)}\n </p>\n </div>\n </motion.div>\n );\n}\n\n","'use client';\n\nimport React from 'react';\nimport { motion } from 'framer-motion';\nimport {\n ArrowRight,\n BadgePercent,\n HeartPulse,\n ShieldCheck,\n ShoppingBag,\n} from 'lucide-react';\nimport { CartItem } from '@/components/CartItem';\nimport { EmptyState } from '@/components/EmptyState';\nimport { Button } from '@/components/ui/Button';\nimport { useCart } from '@/providers/CartProvider';\nimport { formatPrice } from '@/lib/utils/format';\nimport { useRouter } from 'next/navigation';\nimport { CartItemPopulated } from '@/lib/Apis';\n\n\nexport function CartScreen() {\n const router = useRouter();\n const { cart, isLoading } = useCart();\n\n if (!cart || cart.cartBody.items.length === 0) {\n return (\n <div className=\"min-h-screen bg-gradient-to-br from-primary-700 via-primary-600 to-secondary-600 flex items-center justify-center\">\n <div className=\"mx-auto px-20 py-5 bg-white rounded-3xl\">\n <EmptyState\n icon={ShoppingBag}\n title=\"Your bag feels a little empty\"\n description=\"Add pharmacy favorites to unlock quick shipping, curated bundles, and personalized recommendations.\"\n actionLabel=\"Discover products\"\n onAction={() => router.push('/shop')}\n />\n </div>\n </div>\n );\n }\n\n const subtotal = cart.total;\n const shipping = 0;\n const tax = 0;\n const total = subtotal + shipping + tax;\n \n\n return (\n <div className=\"min-h-screen bg-slate-50\">\n <section className=\"relative overflow-hidden bg-gradient-to-br from-[rgb(var(--header-from))] via-[rgb(var(--header-via))] to-[rgb(var(--header-to))] text-white\">\n <div className=\"absolute inset-0 bg-[radial-gradient(circle_at_top_left,_rgba(255,255,255,0.35),_transparent_60%)]\" />\n <div className=\"relative container mx-auto px-4 py-16 mb-8\">\n <motion.div\n initial={{ opacity: 0, y: 24 }}\n animate={{ opacity: 1, y: 0 }}\n className=\"flex flex-col gap-6 md:flex-row md:items-center md:justify-between\"\n >\n <div className=\"max-w-2xl space-y-4\">\n <span className=\"inline-flex items-center gap-2 rounded-full bg-white/15 px-3 py-1 text-sm font-semibold tracking-wide text-white/80 backdrop-blur\">\n <HeartPulse className=\"h-4 w-4\" />\n Wellness essentials, ready when you are\n </span>\n <h1 className=\"text-4xl font-bold md:text-5xl\">Your curated cart</h1>\n <p className=\"text-white/75 md:text-lg\">\n Review your selections, unlock exclusive perks, and check out with pharmacist-backed\n confidence.\n </p>\n </div>\n <div className=\"rounded-3xl bg-white/15 p-6 backdrop-blur-md\">\n <p className=\"text-sm font-semibold uppercase tracking-[0.35em] text-white/70\">\n Cart summary\n </p>\n <p className=\"mt-4 text-4xl font-semibold\">{formatPrice(total)}</p>\n <p className=\"text-sm text-white/70\">Taxes and shipping calculated below</p>\n </div>\n </motion.div>\n </div>\n </section>\n\n <div className=\"relative -mt-16 pb-20\">\n <div className=\"container mx-auto px-4\">\n <div className=\"grid gap-10 lg:grid-cols-[minmax(0,2fr)_minmax(0,1fr)]\">\n <motion.section\n initial={{ opacity: 0, y: 24 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: 0.05 }}\n className=\"space-y-6 rounded-3xl border border-slate-100 bg-white p-6 shadow-lg shadow-primary-50\"\n >\n <div className=\"flex flex-wrap items-center justify-between gap-4\">\n <h2 className=\"text-xl font-semibold text-slate-900\">\n Items ({cart.cartBody.items.length})\n </h2>\n <div className=\"inline-flex items-center gap-2 rounded-full bg-primary-50 px-3 py-1 text-xs font-semibold uppercase tracking-wide text-primary-700\">\n <ShieldCheck className=\"h-4 w-4\" />\n Guaranteed cold-chain handling\n </div>\n </div>\n {isLoading && (\n <div className=\"flex items-center gap-2 rounded-xl border border-slate-200 bg-slate-50 px-3 py-2 text-sm text-slate-600\">\n <span className=\"inline-block h-3 w-3 animate-spin rounded-full border-2 border-slate-300 border-t-slate-600\" />\n Updating cart…\n </div>\n )}\n <div className=\"space-y-5\">\n {cart.cartBody.items.map((item: CartItemPopulated) => (\n <CartItem key={item.productVariantId} item={item} />\n ))}\n </div>\n </motion.section>\n\n <motion.aside\n initial={{ opacity: 0, y: 24 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: 0.1 }}\n className=\"space-y-6 lg:sticky lg:top-28\"\n >\n <div className=\"rounded-3xl border border-slate-100 bg-white p-6 shadow-lg shadow-primary-50\">\n <div className=\"flex items-center justify-between\">\n <h2 className=\"text-xl font-semibold text-slate-900\">Checkout summary</h2>\n <span className=\"inline-flex items-center gap-1 rounded-full bg-primary-50 px-3 py-1 text-xs font-semibold text-primary-700\">\n <BadgePercent className=\"h-4 w-4\" />\n Savings applied\n </span>\n </div>\n <div className=\"mt-6 space-y-4 text-sm text-slate-600\">\n <div className=\"flex items-center justify-between\">\n <span>Subtotal</span>\n <span className=\"font-semibold text-slate-900\">{formatPrice(subtotal)}</span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span>Shipping</span>\n <span className=\"font-semibold\">\n Will be calculated at checkout\n </span>\n </div>\n <div className=\"rounded-2xl bg-slate-50 p-4\">\n <div className=\"flex items-center justify-between text-base font-semibold text-slate-900\">\n <span>Order total</span>\n <span>{formatPrice(total)}</span>\n </div>\n <p className=\"mt-2 text-xs text-slate-500\">\n Prices include pharmacy-grade quality control and packaging.\n </p>\n </div>\n </div>\n <Button\n size=\"lg\"\n className=\"mt-6 w-full\"\n onClick={() => router.push('/checkout')}\n >\n Secure checkout\n <ArrowRight className=\"h-5 w-5\" />\n </Button>\n <button\n type=\"button\"\n onClick={() => router.push('/shop')}\n className=\"mt-4 w-full text-sm font-semibold text-primary-600 transition hover:text-primary-700\"\n >\n Continue shopping\n </button>\n </div>\n\n <div className=\"rounded-3xl border border-primary-100 bg-primary-50/70 p-6 text-sm text-primary-700 shadow-sm\">\n <p className=\"font-semibold uppercase tracking-[0.3em]\">Need help?</p>\n <p className=\"mt-2 leading-relaxed\">\n Chat with a pharmacist to optimize your regimen or discuss substitutions before you\n check out.\n </p>\n </div>\n </motion.aside>\n </div>\n </div>\n </div>\n </div>\n );\n}\n\n","import { useCallback, useEffect, useMemo, useState } from 'react';\nimport { Address, AddressesApi, CreateAddressDto, UpdateAddressDto } from '@/lib/Apis';\nimport { AXIOS_CONFIG } from '@/lib/Apis/wrapper';\n\ninterface UseAddressesReturn {\n addresses: Address[];\n defaultAddress: Address | null;\n isLoading: boolean;\n error: Error | null;\n refresh: () => Promise<void>;\n addAddress: (payload: CreateAddressDto) => Promise<Address>;\n updateAddress: (id: string, payload: UpdateAddressDto) => Promise<Address>;\n removeAddress: (id: string) => Promise<void>;\n markAsDefault: (id: string) => Promise<Address>;\n}\n\nexport function useAddresses(): UseAddressesReturn {\n const [addresses, setAddresses] = useState<Address[]>([]);\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [error, setError] = useState<Error | null>(null);\n\n const refresh = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n const response = await new AddressesApi(AXIOS_CONFIG).getMyAddresses();\n setAddresses(response.data || []);\n setIsLoading(false);\n }, []);\n\n useEffect(() => {\n refresh();\n }, [refresh]);\n\n const sortedAddresses = useMemo(() => {\n return [...addresses].sort((a, b) => {\n if (a.isDefault === b.isDefault) {\n return (b.updatedAt.toISOString() || '').localeCompare(a.updatedAt.toISOString() || '');\n }\n return a.isDefault ? -1 : 1;\n });\n }, [addresses]);\n\n const defaultAddress = useMemo(\n () => sortedAddresses.find((address) => address.isDefault) || null,\n [sortedAddresses]\n );\n\n const addAddress = useCallback(async (payload: CreateAddressDto) => {\n const response = await new AddressesApi(AXIOS_CONFIG).createAddressForUser(payload);\n setAddresses((prev) => [...prev, response.data]);\n return response.data;\n }, []);\n\n const updateAddress = useCallback(async (id: string, payload: UpdateAddressDto) => {\n const response = await new AddressesApi(AXIOS_CONFIG).updateUserAddress(payload, id);\n setAddresses((prev) => prev.map((address) => address.id === id ? response.data : address));\n return response.data;\n }, []);\n\n const removeAddress = useCallback(async (id: string) => {\n await new AddressesApi(AXIOS_CONFIG).deleteUserAddress(id);\n setAddresses((prev) => prev.filter((address) => address.id !== id));\n return\n }, []);\n\n const markAsDefault = useCallback(async (id: string) => {\n const response = await new AddressesApi(AXIOS_CONFIG).updateDefaultAddress(id);\n setAddresses((prev) => prev.map((address) => address.id === id ? response.data : address));\n return response.data;\n }, []);\n\n return {\n addresses: sortedAddresses,\n defaultAddress,\n isLoading,\n error,\n refresh,\n addAddress,\n updateAddress,\n removeAddress,\n markAsDefault,\n };\n}\n","import React from 'react';\n\n// Base card component\ninterface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode;\n}\n\nexport function Card({ className = '', ...props }: CardProps) {\n return (\n <div\n className={`rounded-lg border bg-white shadow-sm ${className}`}\n {...props}\n />\n );\n}\n\n// Card Header component\ninterface CardHeaderProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport function CardHeader({ className = '', ...props }: CardHeaderProps) {\n return (\n <div\n className={`flex flex-col space-y-1.5 p-6 ${className}`}\n {...props}\n />\n );\n}\n\n// Card Title component\ninterface CardTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {}\n\nexport function CardTitle({ className = '', ...props }: CardTitleProps) {\n return (\n <h3\n className={`text-2xl font-semibold leading-none tracking-tight ${className}`}\n {...props}\n />\n );\n}\n\n// Card Content component\ninterface CardContentProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport function CardContent({ className = '', ...props }: CardContentProps) {\n return <div className={`p-6 pt-0 ${className}`} {...props} />;\n}","'use client';\n\nimport React, { useEffect } from 'react';\nimport { motion, AnimatePresence } from 'framer-motion';\nimport { X } from 'lucide-react';\n\ninterface ModalProps {\n isOpen: boolean;\n onClose: () => void;\n title?: string;\n children: React.ReactNode;\n size?: 'sm' | 'md' | 'lg' | 'xl';\n}\n\nexport function Modal({ isOpen, onClose, title, children, size = 'md' }: ModalProps) {\n useEffect(() => {\n if (isOpen) {\n document.body.style.overflow = 'hidden';\n } else {\n document.body.style.overflow = 'unset';\n }\n return () => {\n document.body.style.overflow = 'unset';\n };\n }, [isOpen]);\n\n const sizes = {\n sm: 'max-w-md',\n md: 'max-w-lg',\n lg: 'max-w-2xl',\n xl: 'max-w-4xl',\n };\n\n return (\n <AnimatePresence>\n {isOpen && (\n <>\n {/* Backdrop */}\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n onClick={onClose}\n className=\"fixed inset-0 bg-black/50 backdrop-blur-sm z-50\"\n />\n \n {/* Modal */}\n <div className=\"fixed inset-0 z-50 flex items-center justify-center p-4\">\n <motion.div\n initial={{ opacity: 0, scale: 0.95, y: 20 }}\n animate={{ opacity: 1, scale: 1, y: 0 }}\n exit={{ opacity: 0, scale: 0.95, y: 20 }}\n className={`bg-white rounded-2xl shadow-2xl w-full ${sizes[size]} max-h-[90vh] overflow-hidden flex flex-col`}\n >\n {/* Header */}\n {title && (\n <div className=\"flex items-center justify-between p-6 border-b border-gray-200\">\n <h2 className=\"text-2xl font-bold text-gray-900\">{title}</h2>\n <button\n onClick={onClose}\n className=\"p-2 hover:bg-gray-100 rounded-lg transition-colors\"\n >\n <X className=\"w-5 h-5\" />\n </button>\n </div>\n )}\n \n {/* Content */}\n <div className=\"flex-1 overflow-y-auto p-6\">\n {children}\n </div>\n </motion.div>\n </div>\n </>\n )}\n </AnimatePresence>\n );\n}\n\n","import { z } from 'zod';\n\nexport const addressSchema = z.object({\n name: z.string().min(2, 'Full name is required'),\n street1: z.string().min(5, 'Address is required'),\n street2: z.string().optional(),\n city: z.string().min(2, 'City is required'),\n state: z.string().min(2, 'State is required'),\n zip: z.string().min(4, 'ZIP code is required'),\n country: z.string().min(2, 'Country is required'),\n phone: z.string().min(10, 'Phone number is required'),\n});\n\nexport type AddressFormData = z.infer<typeof addressSchema>;","import { useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { Button } from '@/components/ui/Button';\nimport { Input } from '@/components/ui/Input';\nimport { Modal } from '@/components/ui/Modal';\nimport { addressSchema, type AddressFormData } from '@/lib/validations/address';\nimport { AddressesApi } from '@/lib/Apis/apis/addresses-api';\nimport { Address } from '@/lib/Apis';\nimport { AXIOS_CONFIG } from '@/lib/Apis/wrapper';\nimport { toast } from 'sonner';\n\ninterface AddressFormModalProps {\n isOpen: boolean;\n onClose: () => void;\n onAddressAdded?: (address: any) => void;\n onAddressUpdated?: (address: any) => void;\n initialAddress?: Address | null;\n}\n\nexport function AddressFormModal({ isOpen, onClose, onAddressAdded, onAddressUpdated, initialAddress }: AddressFormModalProps) {\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const {\n register,\n handleSubmit,\n reset,\n formState: { errors }\n } = useForm<AddressFormData>({\n resolver: zodResolver(addressSchema),\n defaultValues: {\n name: initialAddress?.name || '',\n phone: initialAddress?.phone || '',\n street1: initialAddress?.street1 || '',\n street2: initialAddress?.street2 || '',\n city: initialAddress?.city || '',\n state: initialAddress?.state || '',\n zip: initialAddress?.zip || '',\n country: initialAddress?.country || 'United States',\n }\n });\n\n // Reset form when switching between create/edit\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useState(() => {\n // Using useState initializer to avoid extra render; react-hook-form defaultValues handle initial load\n });\n\n const onSubmit = async (data: AddressFormData) => {\n setIsSubmitting(true);\n try {\n const api = new AddressesApi(AXIOS_CONFIG);\n if (initialAddress?.id) {\n const response = await api.updateUserAddress({\n name: data.name,\n street1: data.street1,\n street2: data.street2,\n city: data.city,\n state: data.state,\n zip: data.zip,\n country: data.country,\n phone: data.phone,\n }, initialAddress.id);\n toast.success('Address updated successfully');\n reset();\n onClose();\n if (onAddressUpdated) onAddressUpdated(response.data);\n } else {\n const response = await api.createAddressForUser({\n name: data.name,\n street1: data.street1,\n street2: data.street2,\n city: data.city,\n state: data.state,\n zip: data.zip,\n country: data.country,\n phone: data.phone,\n });\n if (response.status === 201) {\n toast.success('Address added successfully');\n reset();\n onClose();\n if (onAddressAdded) onAddressAdded(response.data);\n } else {\n toast.error('Failed to add address');\n }\n }\n } catch (error) {\n toast.error('Failed to add address');\n } finally {\n setIsSubmitting(false);\n }\n };\n\n return (\n <Modal\n isOpen={isOpen}\n onClose={onClose}\n title={initialAddress ? 'Edit Address' : 'Add New Address'}\n size=\"lg\"\n >\n <form onSubmit={handleSubmit(onSubmit)} className=\"space-y-6\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <Input\n label=\"Full name\"\n placeholder=\"John Doe\"\n {...register('name')}\n error={errors.name?.message}\n />\n <Input\n label=\"Phone number\"\n placeholder=\"+1 (555) 123-4567\"\n {...register('phone')}\n error={errors.phone?.message}\n />\n <div className=\"md:col-span-2\">\n <Input\n label=\"Address line 1\"\n placeholder=\"123 Main St\"\n {...register('street1')}\n error={errors.street1?.message}\n />\n </div>\n <div className=\"md:col-span-2\">\n <Input\n label=\"Address line 2 (optional)\"\n placeholder=\"Apt 4B\"\n {...register('street2')}\n />\n </div>\n <Input\n label=\"City\"\n placeholder=\"New York\"\n {...register('city')}\n error={errors.city?.message}\n />\n <Input\n label=\"State\"\n placeholder=\"NY\"\n {...register('state')}\n error={errors.state?.message}\n />\n <Input\n label=\"ZIP code\"\n placeholder=\"10001\"\n {...register('zip')}\n error={errors.zip?.message}\n />\n <Input\n label=\"Country\"\n placeholder=\"United States\"\n {...register('country')}\n error={errors.country?.message}\n />\n </div>\n <div className=\"flex justify-end gap-4\">\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={onClose}\n >\n Cancel\n </Button>\n <Button type=\"submit\" disabled={isSubmitting}>\n {isSubmitting ? 'Adding Address...' : 'Add Address'}\n </Button>\n </div>\n </form>\n </Modal>\n );\n}","'use client';\n\nimport React, { useState, useEffect } from 'react';\nimport { motion } from 'framer-motion';\nimport { useForm } from 'react-hook-form';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { z } from 'zod';\nimport {\n Check as CheckIcon,\n CreditCard,\n Lock,\n MapPin,\n PackageCheck,\n Plus,\n ShieldCheck,\n Truck,\n} from 'lucide-react';\nimport { Button } from '@/components/ui/Button';\nimport { Input } from '@/components/ui/Input';\nimport { useCart } from '@/providers/CartProvider';\nimport { useAuth } from '@/providers/AuthProvider';\nimport { OrdersApi } from '@/lib/Apis/apis/orders-api';\nimport { ShippingApi } from '@/lib/Apis/apis/shipping-api';\nimport { useAddresses } from '@/hooks/useAddresses';\nimport { formatPrice } from '@/lib/utils/format';\nimport { useRouter } from 'next/navigation';\nimport { toast } from 'sonner';\nimport { AXIOS_CONFIG } from '@/lib/Apis/wrapper';\nimport { Card } from '@/components/ui/Card';\nimport { AddressFormModal } from '@/components/AddressFormModal';\nimport { Edit3, Trash2 } from 'lucide-react';\n\nimport { addressSchema } from '@/lib/validations/address';\nimport Image from 'next/image';\n\nconst checkoutSchema = z.object({\n shipping: addressSchema,\n billing: addressSchema,\n sameAsShipping: z.boolean().default(true),\n});\n\ntype CheckoutFormData = z.infer<typeof checkoutSchema>;\n\n\nconst SHIPPING_THRESHOLD = 100;\nconst TAX_RATE = 0.08;\n\n// Add enums for payment methods\nconst PAYMENT_METHODS = [\n {\n label: 'Card',\n value: 'Card',\n icon: <CreditCard className=\"w-5 h-5\" />,\n description: 'Pay securely with your credit or debit card',\n className: 'border-blue-500 hover:bg-blue-50',\n activeClass: 'bg-blue-50 border-blue-500 text-blue-700',\n },\n {\n label: 'Cash',\n value: 'Cash',\n icon: <PackageCheck className=\"w-5 h-5\" />,\n description: 'Pay with cash on delivery or at pickup',\n className: 'border-amber-500 hover:bg-amber-50',\n activeClass: 'bg-amber-50 border-amber-500 text-amber-700',\n },\n {\n label: 'Credit',\n value: 'Credit',\n icon: <ShieldCheck className=\"w-5 h-5\" />,\n description: 'Use your account credit',\n className: 'border-emerald-500 hover:bg-emerald-50',\n activeClass: 'bg-emerald-50 border-emerald-500 text-emerald-700',\n },\n];\n\nexport function CheckoutScreen() {\n const router = useRouter();\n const { cart, clearCart } = useCart();\n const { isAuthenticated, user } = useAuth();\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [isDelivery, setIsDelivery] = useState(true); // delivery or pickup\n const [paymentMethod, setPaymentMethod] = useState('Card');\n const [error, setError] = useState<string | null>(null);\n const [selectedAddressId, setSelectedAddressId] = useState<string | null>(null);\n const [selectedStoreAddressId, setSelectedStoreAddressId] = useState<string | null>(null);\n const [storeAddresses, setStoreAddresses] = useState<any[]>([]); // For pickup selection\n const [isAddressModalOpen, setIsAddressModalOpen] = useState(false);\n const [editingAddress, setEditingAddress] = useState<any | null>(null);\n const [shippingPrice, setShippingPrice] = useState(0);\n\n\n // Use the addresses hook\n const {\n addresses: userAddresses,\n defaultAddress\n } = useAddresses();\n const [selectedShippingRateId, setSelectedShippingRateId] = useState<string | null>(null);\n const [shippingRates, setShippingRates] = useState<any[]>([]);\n const [shippingRatesLoading, setShippingRatesLoading] = useState(false);\n const [shippingRatesError, setShippingRatesError] = useState<string | null>(null);\n const [storeData, setStoreData] = useState<any>(null); // Simulate store data if needed\n const { addresses, isLoading, refresh, removeAddress } = useAddresses();\n const {\n register,\n handleSubmit,\n formState: { errors },\n watch,\n setValue,\n } = useForm<CheckoutFormData>({\n resolver: zodResolver(checkoutSchema),\n defaultValues: {\n sameAsShipping: true,\n shipping: {\n name: user ? `${user.firstname} ${user.lastname}` : '',\n phone: user?.phoneNumber || undefined,\n country: 'United States',\n },\n billing: {\n name: user ? `${user.firstname} ${user.lastname}` : '',\n phone: user?.phoneNumber || undefined,\n country: 'United States',\n },\n },\n });\n\n const sameAsShipping = watch('sameAsShipping', true);\n\n // Sync billing address with shipping address when 'Billing same as shipping' is checked\n useEffect(() => {\n if (sameAsShipping) {\n setValue('billing.name', watch('shipping.name'));\n setValue('billing.phone', watch('shipping.phone'));\n setValue('billing.street1', watch('shipping.street1'));\n setValue('billing.street2', watch('shipping.street2'));\n setValue('billing.city', watch('shipping.city'));\n setValue('billing.state', watch('shipping.state'));\n setValue('billing.zip', watch('shipping.zip'));\n setValue('billing.country', watch('shipping.country'));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [sameAsShipping, watch('shipping.name'), watch('shipping.phone'), watch('shipping.street1'), watch('shipping.street2'), watch('shipping.city'), watch('shipping.state'), watch('shipping.zip'), watch('shipping.country')]);\n\n // const handleAddressAdded = async (address: any) => {\n // await refresh();\n // };\n\n useEffect(() => {\n if (defaultAddress && !selectedAddressId) {\n setSelectedAddressId(defaultAddress.id);\n // Update form with default address\n setValue('shipping.name', defaultAddress.name);\n setValue('shipping.phone', defaultAddress.phone || (undefined as unknown as string));\n setValue('shipping.street1', defaultAddress.street1);\n setValue('shipping.street2', defaultAddress.street2 || '');\n setValue('shipping.city', defaultAddress.city);\n setValue('shipping.state', defaultAddress.state);\n setValue('shipping.zip', defaultAddress.zip);\n setValue('shipping.country', defaultAddress.country);\n }\n }, [defaultAddress, selectedAddressId, setValue]);\n\n // Handle shipping rates response and errors\n const handleShippingResponse = (response: any) => {\n if (!response?.data) {\n setShippingRatesError('Unable to calculate shipping rates');\n setShippingRates([]);\n setSelectedShippingRateId(null);\n return;\n }\n\n const rates = response.data.rates || [];\n if (rates.length > 0) {\n setShippingRates(rates);\n setShippingRatesError(null);\n setSelectedShippingRateId(rates[0].objectId); // Select first rate by default\n return;\n }\n\n // If no rates, show the most relevant error message from messages\n const messages = response.data.messages || [];\n // Prefer messages that mention 'shipping', 'service area', or are from USPS\n const relevantMessage = messages.find((msg: any) =>\n msg.text.toLowerCase().includes('shipping') ||\n msg.text.toLowerCase().includes('service area') ||\n msg.source === 'USPS'\n ) || messages[0];\n setShippingRatesError(relevantMessage?.text || 'Shipping is not available to this address');\n setShippingRates([]);\n setSelectedShippingRateId(null);\n };\n\n // Define shipping message types\n interface ShippingMessage {\n source: string;\n code: string;\n text: string;\n }\n\n interface ShippingRate {\n objectId: string;\n provider: string;\n servicelevel: {\n name: string;\n token: string;\n };\n amount: string;\n amountLocal: string;\n currency: string;\n currencyLocal: string;\n durationTerms?: string;\n estimatedDays?: number;\n providerImage75?: string;\n attributes?: string[];\n test?: boolean;\n }\n\n interface ShippingResponse {\n data?: {\n messages: ShippingMessage[];\n rates: ShippingRate[];\n status: string;\n };\n }\n\n\n useEffect(() => {\n if (!isDelivery || !selectedAddressId || !cart || cart?.cartBody?.items?.length === 0 || !cart?.cartBody?.items) {\n setShippingRates([]);\n setSelectedShippingRateId(null);\n return;\n }\n setShippingRatesLoading(true);\n setShippingRatesError(null);\n (async () => {\n try {\n const api = new ShippingApi(AXIOS_CONFIG);\n const cartBody = {\n items: cart?.cartBody?.items?.map((item: any) => ({\n productVariantId: String(item.productVariantId),\n quantity: typeof item.quantity === 'number' ? item.quantity : 1,\n })),\n discount: undefined,\n };\n const res = await api.getShippingRates(cartBody, selectedAddressId);\n handleShippingResponse(res);\n } catch (e: any) {\n setShippingRates([]);\n setSelectedShippingRateId(null);\n setShippingRatesError(e?.message || 'Failed to fetch shipping rates');\n } finally {\n setShippingRatesLoading(false);\n }\n })();\n }, [isDelivery, selectedAddressId, cart]);\n\n // Simulate fetching store addresses for pickup (replace with real API if available)\n useEffect(() => {\n if (!isDelivery) {\n // Simulate store addresses\n const stores = [\n { id: 'store1', name: 'Main Pharmacy', street1: '123 Main St', city: 'Seattle' },\n { id: 'store2', name: 'Eastside Pickup', street1: '456 East Ave', city: 'Bellevue' },\n ];\n setStoreAddresses(stores);\n setSelectedStoreAddressId(stores[0].id);\n // Pickup mode: no shipping cost\n setShippingPrice(0);\n } else {\n setStoreAddresses([]);\n setSelectedStoreAddressId(null);\n }\n }, [isDelivery]);\n\n const checkoutSteps = [\n { id: 1, label: 'Cart', status: 'complete' as const },\n { id: 2, label: 'Details', status: 'current' as const },\n { id: 3, label: 'Payment', status: 'upcoming' as const },\n ];\n\n // Unified checkout handler (admin-style)\n const onSubmit = async (data: CheckoutFormData) => {\n setError(null);\n if (!isAuthenticated) {\n toast.error('Please login to continue');\n setTimeout(() => router.push('/login?redirect=/checkout'), 50);\n return;\n }\n if (!cart || cart?.cartBody?.items?.length === 0 || !cart?.cartBody?.items) {\n setError('Your cart is empty. Please add items to your cart.');\n return;\n }\n if (!paymentMethod) {\n setError('Please select a payment method.');\n return;\n }\n if (isDelivery) {\n if (!selectedAddressId) {\n setError('Please select a shipping address.');\n return;\n }\n if (!selectedShippingRateId) {\n setError('Please select a shipping method.');\n return;\n }\n // Validate shipping address fields\n const requiredFields = ['name', 'street1', 'city', 'zip', 'country'];\n for (const field of requiredFields) {\n if (!data.shipping[field as keyof typeof data.shipping]) {\n setError(`Please fill in the shipping address: ${field}.`);\n return;\n }\n }\n } else {\n if (!selectedStoreAddressId) {\n setError('Please select a pickup location.');\n return;\n }\n if (storeAddresses.length === 0) {\n setError('Store pickup location is not available.');\n return;\n }\n if (paymentMethod === 'Card' && userAddresses.length === 0) {\n setError('Card payments require a billing address. Please add an address to your account or choose a different payment method.');\n return;\n }\n }\n if (!sameAsShipping) {\n const requiredBillingFields = ['fullName', 'addressLine1', 'city', 'zipCode', 'country'];\n for (const field of requiredBillingFields) {\n if (!data.billing[field as keyof typeof data.billing]) {\n setError(`Please fill in the billing address: ${field}.`);\n return;\n }\n }\n }\n\n setIsSubmitting(true);\n toast('Submitting order...', { icon: <CreditCard className=\"h-4 w-4\" /> });\n try {\n // Prepare items array for backend\n const items = (cart?.cartBody?.items || []).map((item: any) => ({\n productVariantId: String(item.productVariantId),\n quantity: typeof item.quantity === 'number' ? item.quantity : 1,\n })).filter((item: any) => item.productVariantId);\n\n // Determine billing address ID for card payments (admin-style)\n let billingAddressId: string | undefined = undefined;\n if (isDelivery) {\n billingAddressId = selectedAddressId || undefined;\n } else if (paymentMethod === 'Card') {\n billingAddressId = userAddresses.length > 0 ? userAddresses[0].id : undefined;\n }\n\n // Prepare order DTO (admin-style)\n const orderDTO: any = {\n items,\n paymentMethod,\n orderStatus: 'Pending',\n chargeTax: true,\n orderRemindingDates: [],\n shippingAddress: data.shipping,\n billingAddress: sameAsShipping ? data.shipping : data.billing,\n pickupStoreId: !isDelivery ? selectedStoreAddressId : undefined,\n };\n\n const api = new OrdersApi(AXIOS_CONFIG);\n const response = await api.createCheckout(\n orderDTO,\n isDelivery,\n user?.id,\n isDelivery ? (selectedShippingRateId || undefined) : undefined,\n billingAddressId\n );\n // Handle insufficient credit error (fallback: check for error message)\n if (response?.data?.payment && response.data.payment.hostedInvoiceUrl === 'INSUFFICIENT_CREDIT') {\n setError('You have insufficient credit to complete this order.');\n toast.error('You have insufficient credit to complete this order.');\n return;\n }\n if (paymentMethod === 'Card') {\n const paymentUrl = response?.data?.payment?.hostedInvoiceUrl;\n if (paymentUrl && paymentUrl !== 'INSUFFICIENT_CREDIT') {\n window.open(paymentUrl, '_blank');\n await clearCart();\n\n return;\n }\n toast.success('Order placed successfully!');\n await clearCart();\n router.push(`/orders/${response.data?.id}`);\n } else {\n toast.success('Order placed successfully!');\n await clearCart();\n router.push(`/orders/${response.data?.id}`);\n }\n } catch (err: any) {\n const msg = err?.message || (err?.response?.data?.message) || 'Failed to place order';\n setError(msg);\n toast.error(msg);\n } finally {\n setIsSubmitting(false);\n }\n };\n\n if (!cart || cart?.cartBody?.items?.length === 0 || !cart?.cartBody?.items) {\n router.push('/cart');\n return null;\n }\n const subtotal = cart.total;\n const tax = 0;\n const total = subtotal + shippingPrice + tax;\n\n return (\n <div className=\"min-h-screen bg-slate-50\">\n <section className=\"relative overflow-hidden bg-gradient-to-br from-[rgb(var(--header-from))] via-[rgb(var(--header-via))] to-[rgb(var(--header-to))] text-white\">\n <div className=\"absolute inset-0 bg-[radial-gradient(circle_at_top_left,_rgba(255,255,255,0.35),_transparent_60%)]\" />\n <div className=\"relative container mx-auto px-4 py-16\">\n <div className=\"grid gap-10 lg:grid-cols-[minmax(0,2fr)_minmax(0,1fr)]\">\n <motion.div\n initial={{ opacity: 0, y: 24 }}\n animate={{ opacity: 1, y: 0 }}\n className=\"space-y-6\"\n >\n <span className=\"inline-flex items-center gap-2 rounded-full bg-white/15 px-3 py-1 text-sm font-semibold uppercase tracking-[0.35em] text-white/70 backdrop-blur\">\n <ShieldCheck className=\"h-4 w-4\" />\n Secure checkout\n </span>\n <h1 className=\"text-4xl font-bold md:text-5xl\">\n Provide delivery details\n </h1>\n <p className=\"text-white/75 md:text-lg\">\n Our pharmacists handle every package with care. Share your shipping and billing\n information so we can dispatch your order within the next 12 hours.\n </p>\n <div className=\"flex flex-wrap gap-3\">\n {checkoutSteps.map((step) => (\n <div\n key={step.id}\n className={`flex items-center gap-3 rounded-2xl px-4 py-2 text-sm font-semibold ${step.status === 'complete'\n ? 'bg-white/20 text-white'\n : step.status === 'current'\n ? 'bg-white text-primary-700'\n : 'bg-white/10 text-white/60'\n }`}\n >\n <span className=\"flex h-7 w-7 items-center justify-center rounded-full bg-white/20 text-xs font-bold\">\n {step.id}\n </span>\n {step.label}\n </div>\n ))}\n </div>\n </motion.div>\n </div>\n </div>\n </section>\n\n <form onSubmit={handleSubmit(onSubmit)}>\n {error && <div className=\"mb-4 text-red-600 font-semibold\">{error}</div>}\n <div className=\"pt-12 container mx-auto grid gap-10 px-4 lg:grid-cols-[minmax(0,2fr)_minmax(0,1fr)]\">\n <motion.div\n initial={{ opacity: 0, y: 24 }}\n animate={{ opacity: 1, y: 0 }}\n className=\"space-y-8\"\n >\n <section className=\"rounded-3xl border border-slate-100 bg-white p-6 shadow-lg shadow-primary-50\">\n <div className=\"flex flex-wrap items-center justify-between gap-4\">\n <div>\n <h2 className=\"text-xl font-semibold text-slate-900\">\n Shipping information\n </h2>\n <p className=\"text-sm text-slate-500\">\n We use temperature-aware packaging and real-time tracking on every shipment.\n </p>\n </div>\n <span className=\"inline-flex items-center gap-2 rounded-full bg-primary-50 px-3 py-1 text-xs font-semibold uppercase tracking-wide text-primary-700\">\n <Truck className=\"h-4 w-4\" />\n Dispatch in 12h\n </span>\n </div>\n\n <div className=\"mt-6 grid grid-cols-1 gap-4 md:grid-cols-2\">\n {/* Address selection for delivery */}\n {isDelivery && (\n <div className=\"md:col-span-2 space-y-4\">\n <div className=\"flex items-center justify-between\">\n <label className=\"block font-semibold\">Select Address</label>\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={() => { setEditingAddress(null); setIsAddressModalOpen(true); }}\n >\n <Plus className=\"h-4 w-4 mr-2\" />\n Add New Address\n </Button>\n </div>\n\n {userAddresses.length > 0 ? (\n <div className=\"grid gap-4\">\n {userAddresses.map(addr => (\n <label\n key={addr.id}\n className={`group relative flex items-start gap-3 p-4 rounded-2xl border ${selectedAddressId === addr.id\n ? 'border-primary-500 bg-primary-50 shadow-sm'\n : 'border-slate-200 bg-white'\n } cursor-pointer hover:border-primary-300 transition-colors`}\n >\n <input\n type=\"radio\"\n name=\"selectedAddress\"\n value={addr.id}\n checked={selectedAddressId === addr.id}\n onChange={() => {\n setSelectedAddressId(addr.id);\n // Update form with selected address\n setValue('shipping.name', addr.name);\n setValue('shipping.phone', addr.phone || (undefined as unknown as string));\n setValue('shipping.street1', addr.street1);\n setValue('shipping.street2', addr.street2 || '');\n setValue('shipping.city', addr.city);\n setValue('shipping.state', addr.state);\n setValue('shipping.zip', addr.zip);\n setValue('shipping.country', addr.country);\n }}\n className=\"mt-1\"\n />\n <div className=\"flex-1\">\n <p className=\"font-semibold text-slate-900\">{addr.name}</p>\n <p className=\"text-sm text-slate-600\">{addr.street1}</p>\n {addr.street2 && (\n <p className=\"text-sm text-slate-600\">{addr.street2}</p>\n )}\n <p className=\"text-sm text-slate-600\">\n {addr.city}, {addr.state} {addr.zip}\n </p>\n <p className=\"text-sm text-slate-600\">{addr.country}</p>\n {addr.phone && (\n <p className=\"text-sm text-slate-600 mt-1\">{addr.phone}</p>\n )}\n <div className=\"mt-3 flex items-center gap-2\">\n {addr.isDefault && (\n <span className=\"inline-flex items-center gap-1 rounded-full bg-primary-100 px-2.5 py-0.5 text-xs font-semibold text-primary-700\">\n Default\n </span>\n )}\n <button\n type=\"button\"\n onClick={(e) => { e.preventDefault(); setEditingAddress(addr); setIsAddressModalOpen(true); }}\n className=\"inline-flex items-center gap-1 rounded-full border border-slate-200 px-2.5 py-0.5 text-xs font-medium text-slate-600 hover:border-primary-300 hover:text-primary-600\"\n >\n <Edit3 className=\"h-3.5 w-3.5\" /> Edit\n </button>\n <button\n type=\"button\"\n onClick={async (e) => {\n e.preventDefault();\n const yes = window.confirm('Delete this address?');\n if (!yes) return;\n try {\n await removeAddress(addr.id);\n if (selectedAddressId === addr.id) setSelectedAddressId(null);\n toast.success('Address deleted');\n } catch (e) {\n toast.error('Failed to delete address');\n }\n }}\n className=\"inline-flex items-center gap-1 rounded-full border border-red-200 px-2.5 py-0.5 text-xs font-semibold text-red-600 hover:border-red-300 hover:text-red-700\"\n >\n <Trash2 className=\"h-3.5 w-3.5\" /> Delete\n </button>\n </div>\n </div>\n </label>\n ))}\n </div>\n ) : (\n <div className=\"text-center py-8 bg-slate-50 rounded-lg\">\n <MapPin className=\"h-12 w-12 mx-auto text-slate-400\" />\n <p className=\"mt-2 text-slate-600\">No addresses found</p>\n <p className=\"text-sm text-slate-500\">Add a new address to continue</p>\n </div>\n )}\n </div>\n )}\n {/* Store address selection for pickup */}\n {!isDelivery && storeAddresses.length > 0 && (\n <div className=\"md:col-span-2\">\n <label className=\"block mb-2 font-semibold\">Select Pickup Location</label>\n <select\n className=\"w-full border rounded p-2\"\n value={selectedStoreAddressId || ''}\n onChange={e => setSelectedStoreAddressId(e.target.value)}\n >\n {storeAddresses.map(addr => (\n <option key={addr.id} value={addr.id}>{addr.name} - {addr.street1}, {addr.city}</option>\n ))}\n </select>\n </div>\n )}\n </div>\n </section>\n\n {/* Shipping Options - Only show if there's a shipping cost */}\n {isDelivery && selectedAddressId && (\n <Card className=\"p-6 border border-gray-200 rounded-xl shadow-sm\">\n <div className=\"flex items-center gap-3 text-xl font-semibold text-gray-900 pb-4 mb-6 border-b\">\n <Truck className=\"text-accent w-6 h-6\" />\n <span>Shipping Options</span>\n </div>\n\n {shippingRatesLoading ? (\n <div className=\"flex items-center justify-center py-12\">\n <div className=\"animate-spin rounded-full h-8 w-8 border-b-2 border-accent\"></div>\n <span className=\"ml-3 text-gray-600\">Loading shipping options...</span>\n </div>\n ) : shippingRatesError ? (\n <div className=\"text-center py-12\">\n <div className=\"w-16 h-16 mx-auto mb-4 bg-red-100 rounded-full flex items-center justify-center\">\n <svg className=\"w-8 h-8 text-red-400\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\" d=\"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\" />\n </svg>\n </div>\n <p className=\"text-red-500 text-lg font-medium\">Error loading shipping options</p>\n <p className=\"text-red-400 text-sm mt-1\">\n {shippingRatesError}\n </p>\n </div>\n ) : shippingRates && shippingRates.length > 0 ? (\n <div className=\"space-y-4\">\n {shippingRates.map((rate) => {\n const isSelected = !!selectedShippingRateId && selectedShippingRateId === rate.objectId;\n const isTest = rate.test;\n const hasAttributes = rate.attributes && rate.attributes.length > 0;\n\n return (\n <div\n key={rate.objectId}\n onClick={() => setSelectedShippingRateId(rate.objectId)}\n onMouseEnter={() => setShippingPrice(parseFloat(rate.amount))}\n onMouseLeave={() => setShippingPrice(parseFloat(rate.amountLocal))}\n className={`relative p-5 border-2 rounded-xl cursor-pointer transition-all duration-200 hover:shadow-md ${isSelected\n ? 'border-primary-500 bg-primary-50 ring-2 ring-primary-200'\n : 'border-gray-200 hover:border-gray-300'\n }`}\n >\n <div className=\"flex items-start justify-between\">\n <div className=\"flex items-start gap-4 flex-1\">\n {/* Provider Logo */}\n <div className=\"flex-shrink-0\">\n <Image\n src={rate.providerImage75 || '/placeholder-product.jpg'}\n alt={rate.provider}\n className=\"w-12 h-12 rounded-lg object-contain bg-white border border-gray-200 p-1\"\n onError={(e: any) => {\n const target = e.target as HTMLImageElement;\n target.style.display = 'none';\n }}\n width={48}\n height={48}\n />\n </div>\n\n {/* Main Content */}\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-2 mb-2\">\n <h3 className=\"text-lg font-semibold text-gray-900\">\n {rate.provider} {rate.servicelevel?.name}\n </h3>\n {isTest && (\n <span className=\"px-2 py-1 text-xs font-medium bg-orange-100 text-orange-800 rounded-full\">\n TEST\n </span>\n )}\n </div>\n\n {/* Attributes */}\n {hasAttributes && (\n <div className=\"flex flex-wrap gap-2 mb-3\">\n {rate.attributes.map((attr: string) => (\n <span\n key={attr}\n className={`px-2 py-1 text-xs font-medium rounded-full ${attr === 'FASTEST'\n ? 'bg-green-100 text-green-800'\n : attr === 'BESTVALUE'\n ? 'bg-blue-100 text-blue-800'\n : attr === 'CHEAPEST'\n ? 'bg-purple-100 text-purple-800'\n : 'bg-gray-100 text-gray-800'\n }`}\n >\n {attr}\n </span>\n ))}\n </div>\n )}\n\n {/* Delivery Info */}\n <div className=\"space-y-1 text-sm text-gray-600\">\n {rate.durationTerms && (\n <div className=\"flex items-center gap-2\">\n <svg className=\"w-4 h-4 text-gray-400\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\" d=\"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z\" />\n </svg>\n <span>{rate.durationTerms}</span>\n </div>\n )}\n\n {rate.estimatedDays && (\n <div className=\"flex items-center gap-2\">\n <svg className=\"w-4 h-4 text-gray-400\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\" d=\"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z\" />\n </svg>\n <span>Estimated {rate.estimatedDays} day{rate.estimatedDays !== 1 ? 's' : ''}</span>\n </div>\n )}\n\n <div className=\"flex items-center gap-2\">\n <svg className=\"w-4 h-4 text-gray-400\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\" d=\"M9 5H7a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\" />\n </svg>\n <span>Carrier: {rate.provider}</span>\n </div>\n\n <div className=\"flex items-center gap-2\">\n <svg className=\"w-4 h-4 text-gray-400\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth=\"2\" d=\"M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3 .895 3 2-1.343 2-3 2m0-8c1.11 0 2.08.402 2.599 1M12 8V7m0 1v8m0 0v1m0-1c-1.11 0-2.08-.402-2.599-1\" />\n </svg>\n <span>Currency: {rate.currency}</span>\n </div>\n </div>\n </div>\n </div>\n\n {/* Price */}\n <div className=\"flex flex-col items-end\">\n <div className=\"text-2xl font-bold text-gray-900\">\n {formatPrice(parseFloat(rate.amount))}\n </div>\n {rate.amount !== rate.amountLocal && (\n <div className=\"text-sm text-gray-500\">\n {rate.amountLocal} {rate.currencyLocal}\n </div>\n )}\n </div>\n </div>\n\n {/* Selection Indicator */}\n {isSelected && (\n <div className=\"absolute top-3 right-3\">\n <div className=\"w-6 h-6 bg-primary-500 rounded-full flex items-center justify-center\">\n <CheckIcon className=\"w-4 h-4 text-white\" />\n </div>\n </div>\n )}\n </div>\n );\n })}\n </div>\n ) : (\n <div className=\"text-center py-12\">\n <div className=\"w-16 h-16 mx-auto mb-4 bg-gray-100 rounded-full flex items-center justify-center\">\n <Truck className=\"w-8 h-8 text-gray-400\" />\n </div>\n <p className=\"text-gray-500 text-lg font-medium\">No shipping options available</p>\n <p className=\"text-gray-400 text-sm mt-1\">Please check the shipping address or try a different location.</p>\n </div>\n )}\n\n </Card>\n )}\n </motion.div>\n\n <motion.aside\n initial={{ opacity: 0, y: 32 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.5, ease: 'easeOut', delay: 0.1 }}\n className=\"space-y-10 lg:sticky lg:top-24\"\n >\n {/* Order Summary */}\n <div className=\"rounded-3xl border border-slate-100 bg-white p-6 shadow-xl shadow-primary-50/50 transition hover:shadow-primary-100/60\">\n <h2 className=\"text-2xl font-semibold text-slate-900\">Order Summary</h2>\n\n {/* Delivery Method */}\n <section className=\"mt-6 space-y-4\">\n <h3 className=\"text-xs font-semibold text-slate-700 uppercase tracking-wider\">\n Delivery Method\n </h3>\n <div className=\"grid grid-cols-1 gap-3\">\n {[\n {\n label: 'Delivery',\n icon: <Truck className=\"w-5 h-5\" />,\n value: true,\n desc: 'Shipped to your address',\n },\n {\n label: 'Pickup',\n icon: <MapPin className=\"w-5 h-5\" />,\n value: false,\n desc: 'Collect from pharmacy',\n },\n ].map((option) => {\n const active = isDelivery === option.value\n return (\n <button\n key={option.label}\n type=\"button\"\n onClick={() => setIsDelivery(option.value)}\n aria-pressed={active}\n className={`relative flex w-full items-center justify-between rounded-xl border-2 p-3 transition-all duration-200 focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-400 focus-visible:ring-offset-2 ${active\n ? 'border-primary-500 bg-primary-50 shadow-sm'\n : 'border-slate-200 bg-white hover:border-primary-200 hover:bg-primary-50/40'\n }`}\n >\n <div className=\"flex items-center gap-3\">\n <div\n className={`p-2 rounded-lg ${active\n ? 'bg-primary-100 text-primary-600'\n : 'bg-slate-100 text-slate-600 group-hover:bg-slate-50'\n }`}\n >\n {option.icon}\n </div>\n <div className=\"text-left\">\n <div className=\"font-medium text-slate-900\">\n {option.label}\n </div>\n <p className=\"text-xs text-slate-500\">{option.desc}</p>\n </div>\n </div>\n {active && (\n <div className=\"w-5 h-5 rounded-full bg-primary-500 flex items-center justify-center text-white shadow-sm\">\n <CheckIcon className=\"w-3 h-3\" />\n </div>\n )}\n </button>\n )\n })}\n </div>\n </section>\n\n {/* Payment Method */}\n <section className=\"mt-8 space-y-4\">\n <h3 className=\"text-xs font-semibold text-slate-700 uppercase tracking-wider\">\n Payment Method\n </h3>\n <div className=\"space-y-3\">\n {PAYMENT_METHODS.map((pm) => {\n const active = paymentMethod === pm.value\n return (\n <button\n key={pm.value}\n type=\"button\"\n onClick={() => setPaymentMethod(pm.value)}\n className={`w-full flex items-center justify-between rounded-xl border-2 p-3 transition-all duration-200 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 ${active\n ? `${pm.activeClass} border-current shadow-sm`\n : `${pm.className} border-slate-200 hover:border-primary-200 hover:shadow-sm`\n }`}\n >\n <div className=\"flex items-center gap-3\">\n <div\n className={`p-1.5 rounded-md ${pm.value === 'Card'\n ? 'bg-blue-100 text-blue-600'\n : pm.value === 'Cash'\n ? 'bg-amber-100 text-amber-600'\n : 'bg-emerald-100 text-emerald-600'\n } ${active ? 'bg-opacity-30' : 'bg-opacity-100'}`}\n >\n {pm.icon}\n </div>\n <span className=\"text-sm font-medium text-slate-900\">\n {pm.label}\n </span>\n </div>\n {active && (\n <div className=\"w-4 h-4 rounded-full bg-primary-500 flex items-center justify-center text-white shadow-sm\">\n <CheckIcon className=\"w-2.5 h-2.5\" />\n </div>\n )}\n </button>\n )\n })}\n </div>\n <p className=\"text-xs text-slate-500 mt-2 pl-1 leading-relaxed\">\n {paymentMethod === 'Card' &&\n 'You will be redirected to a secure payment page.'}\n {paymentMethod === 'Cash' &&\n 'Pay with cash at the time of delivery or pickup.'}\n {paymentMethod === 'Credit' &&\n 'Use your available account credit for this order.'}\n </p>\n </section>\n\n {/* Cart Summary */}\n <section className=\"mt-8 pt-6 border-t border-slate-100\">\n <div className=\"max-h-60 space-y-4 overflow-y-auto pr-2 scrollbar-thin scrollbar-thumb-slate-200 hover:scrollbar-thumb-slate-300\">\n {cart?.cartBody?.items?.map((item: any) => (\n <div\n key={item.productId}\n className=\"flex gap-4 rounded-2xl border border-slate-100 p-4 hover:bg-slate-50/50 transition\"\n >\n <div className=\"flex h-16 w-16 items-center justify-center rounded-xl bg-slate-100 text-slate-400\">\n <Image src={item.productVariantData.productMedia?.[0]?.file || '/placeholder-product.jpg'}\n alt={item.productVariantData.name} width={64} height={64} className=\"object-contain\" />\n </div>\n\n <div className=\"flex-1\">\n <p className=\"text-sm font-semibold text-slate-900\">\n {item?.productVariantData?.name}\n </p>\n <p className=\"text-xs text-slate-500\">Qty {item.quantity}</p>\n </div>\n <p className=\"text-sm font-semibold text-slate-900\">\n {formatPrice(item.productVariantData.finalPrice * item.quantity)}\n </p>\n </div>\n ))}\n </div>\n\n {/* Totals */}\n <div className=\"mt-6 space-y-3 text-sm text-slate-600\">\n <div className=\"flex items-center justify-between\">\n <span>Subtotal</span>\n <span className=\"font-semibold text-slate-900\">\n {formatPrice(subtotal)}\n </span>\n </div>\n {isDelivery && (\n <div className=\"flex items-center justify-between\">\n <span>Shipping</span>\n <span className=\"font-semibold\">\n {formatPrice(shippingPrice)}\n </span>\n </div>\n )}\n <div className=\"flex items-center justify-between\">\n <span>Estimated tax</span>\n <span className=\"font-semibold\">{formatPrice(tax)}</span>\n </div>\n <div className=\"rounded-2xl bg-slate-50 p-4\">\n <div className=\"flex items-center justify-between text-base font-semibold text-slate-900\">\n <span>Total Due</span>\n <span>{formatPrice(total)}</span>\n </div>\n <p className=\"mt-1 text-xs text-slate-500\">\n Tax is estimated. Final amount confirmed after payment.\n </p>\n </div>\n </div>\n </section>\n\n {/* Checkout Button */}\n <Button\n type=\"submit\"\n size=\"lg\"\n isLoading={isSubmitting}\n className=\"mt-6 w-full transition-transform hover:scale-[1.02] active:scale-[0.99]\"\n >\n <CreditCard className=\"h-5 w-5\" />\n {isSubmitting ? 'Placing order...' : 'Place Secure Order'}\n </Button>\n\n <p className=\"mt-4 flex items-center justify-center gap-2 text-xs text-slate-500\">\n <Lock className=\"h-4 w-4\" />\n Fully encrypted checkout — cancel anytime before shipment.\n </p>\n </div>\n\n {/* Why Patients Choose Us */}\n <div className=\"rounded-3xl border border-primary-100 bg-primary-50/80 p-6 text-sm text-primary-700 shadow-sm hover:shadow-md transition-shadow\">\n <p className=\"font-semibold uppercase tracking-[0.3em] text-primary-800\">\n Why Patients Choose Us\n </p>\n <ul className=\"mt-4 space-y-3 text-primary-700 leading-relaxed\">\n <li className=\"flex items-start gap-3\">\n <PackageCheck className=\"mt-0.5 h-4 w-4 shrink-0\" />\n <span>Pharmacy-grade verification on every order.</span>\n </li>\n <li className=\"flex items-start gap-3\">\n <ShieldCheck className=\"mt-0.5 h-4 w-4 shrink-0\" />\n <span>Cold-chain logistics for sensitive medications.</span>\n </li>\n <li className=\"flex items-start gap-3\">\n <Truck className=\"mt-0.5 h-4 w-4 shrink-0\" />\n <span>Real-time tracking and SMS updates from prep to delivery.</span>\n </li>\n </ul>\n </div>\n </motion.aside>\n\n </div>\n </form>\n <AddressFormModal\n isOpen={isAddressModalOpen}\n onClose={() => setIsAddressModalOpen(false)}\n initialAddress={editingAddress}\n onAddressAdded={(addr) => {\n refresh().then(() => {\n setSelectedAddressId(addr.id);\n setValue('shipping.name', addr.name);\n setValue('shipping.phone', addr.phone || (undefined as unknown as string));\n setValue('shipping.street1', addr.street1);\n setValue('shipping.street2', addr.street2 || '');\n setValue('shipping.city', addr.city);\n setValue('shipping.state', addr.state);\n setValue('shipping.zip', addr.zip);\n setValue('shipping.country', addr.country);\n });\n }}\n onAddressUpdated={() => {\n refresh();\n }}\n />\n {/* </div> */}\n </div>\n );\n}\n","'use client';\n\nimport React, { useState } from 'react';\nimport { motion } from 'framer-motion';\nimport { useForm } from 'react-hook-form';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { z } from 'zod';\nimport { useRouter, useSearchParams } from 'next/navigation';\nimport Link from 'next/link';\nimport {\n ArrowRight,\n Eye,\n EyeOff,\n HeartPulse,\n Lock,\n ShieldCheck,\n Sparkles,\n} from 'lucide-react';\nimport { Input } from '@/components/ui/Input';\nimport { Button } from '@/components/ui/Button';\nimport { useAuth } from '@/providers/AuthProvider';\nimport { toast } from 'sonner';\n\nconst loginSchema = z.object({\n email: z.string().email('Enter a valid email address'),\n password: z.string().min(6, 'Password must be at least 6 characters'),\n});\n\ntype LoginFormData = z.infer<typeof loginSchema>;\n\nexport function LoginScreen() {\n const router = useRouter();\n const searchParams = useSearchParams();\n const redirectUrl = searchParams?.get('redirect') || '/';\n const { login } = useAuth();\n const [showPassword, setShowPassword] = useState(false);\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const {\n register,\n handleSubmit,\n formState: { errors },\n } = useForm<LoginFormData>({\n resolver: zodResolver(loginSchema),\n });\n\n const onSubmit = async (data: LoginFormData) => {\n setIsSubmitting(true);\n try {\n await login(data);\n toast.success('Welcome back!');\n router.push(redirectUrl);\n } catch (error: any) {\n toast.error(error.response?.data?.message || 'Invalid credentials');\n } finally {\n setIsSubmitting(false);\n }\n };\n\n return (\n <div className=\"min-h-screen bg-slate-50\">\n <div className=\"grid min-h-screen overflow-hidden bg-white lg:grid-cols-[1.1fr_0.9fr]\">\n <motion.section\n initial={{ opacity: 0, x: -24 }}\n animate={{ opacity: 1, x: 0 }}\n transition={{ duration: 0.4 }}\n className=\"relative flex flex-col justify-between bg-gradient-to-br from-[rgb(var(--header-from))] via-[rgb(var(--header-via))] to-[rgb(var(--header-to))] px-10 py-14 text-white\"\n >\n <div className=\"space-y-6\">\n <span className=\"inline-flex items-center gap-2 rounded-full bg-white/15 px-3 py-1 text-sm font-semibold uppercase tracking-[0.35em] text-white/70 backdrop-blur\">\n <HeartPulse className=\"h-4 w-4\" />\n Hey Pharmacist\n </span>\n <h1 className=\"text-4xl font-bold leading-tight lg:text-5xl\">\n Pharmacy-grade care for your household\n </h1>\n <p className=\"max-w-xl text-white/80\">\n Log in to unlock personalized regimens, pharmacist support, and fast delivery on\n wellness essentials curated just for you.\n </p>\n </div>\n\n <div className=\"grid gap-4 rounded-3xl bg-white/10 p-6 backdrop-blur\">\n <div className=\"flex items-center gap-3\">\n <ShieldCheck className=\"h-5 w-5 text-white\" />\n <p className=\"text-sm text-white/80\">\n HIPAA-compliant security keeps your health information protected.\n </p>\n </div>\n <div className=\"flex items-center gap-3\">\n <Sparkles className=\"h-5 w-5 text-white\" />\n <p className=\"text-sm text-white/80\">\n Pharmacists ready to chat in under 10 minutes for medication support.\n </p>\n </div>\n </div>\n\n <div className=\"flex items-center gap-6 text-sm text-white/80\">\n <span>Need an account?</span>\n <Link\n href=\"/register\"\n className=\"inline-flex items-center gap-2 rounded-full bg-white/15 px-4 py-2 font-semibold transition hover:bg-white/25\"\n >\n Create one now\n <ArrowRight className=\"h-4 w-4\" />\n </Link>\n </div>\n </motion.section>\n\n <motion.section\n initial={{ opacity: 0, x: 24 }}\n animate={{ opacity: 1, x: 0 }}\n transition={{ duration: 0.4 }}\n className=\"flex items-center justify-center px-6 py-12 lg:px-16\"\n >\n <div className=\"w-full max-w-md space-y-10\">\n <div className=\"space-y-2\">\n <h2 className=\"text-3xl font-bold text-slate-900\">Sign in</h2>\n <p className=\"text-sm text-slate-500\">\n Welcome back! Enter your details to continue your personalized care plan.\n </p>\n </div>\n\n <form onSubmit={handleSubmit(onSubmit)} className=\"space-y-6 rounded-3xl border border-slate-100 bg-white p-8 shadow-lg shadow-primary-50\">\n <div>\n <Input\n type=\"email\"\n label=\"Email address\"\n placeholder=\"you@example.com\"\n {...register('email')}\n error={errors.email?.message}\n />\n </div>\n <div className=\"relative\">\n <Input\n type={showPassword ? 'text' : 'password'}\n label=\"Password\"\n placeholder=\"••••••••\"\n {...register('password')}\n error={errors.password?.message}\n />\n <button\n type=\"button\"\n onClick={() => setShowPassword((prev) => !prev)}\n className=\"absolute right-3 top-[42px] text-slate-400 transition hover:text-slate-600\"\n >\n {showPassword ? <EyeOff className=\"h-5 w-5\" /> : <Eye className=\"h-5 w-5\" />}\n </button>\n </div>\n\n <div className=\"flex items-center justify-between text-sm\">\n <label className=\"flex items-center gap-2 text-slate-600\">\n <input\n type=\"checkbox\"\n className=\"h-4 w-4 rounded border-slate-300 text-primary-600 focus:ring-primary-500\"\n />\n Remember me\n </label>\n <Link\n href=\"/forgot-password\"\n className=\"font-medium text-primary-600 transition hover:text-primary-700\"\n >\n Forgot password?\n </Link>\n </div>\n\n <Button\n type=\"submit\"\n size=\"lg\"\n isLoading={isSubmitting}\n className=\"w-full\"\n >\n Sign in securely\n </Button>\n </form>\n\n <div className=\"rounded-3xl border border-slate-100 bg-slate-50 p-6 text-sm text-slate-600\">\n <div className=\"flex items-start gap-3\">\n <Lock className=\"mt-0.5 h-5 w-5 text-primary-500\" />\n <div>\n <p className=\"font-semibold text-slate-800\">Secure by design</p>\n <p>\n Encrypted sessions, multi-factor ready, and privacy-first policies keep your\n personal data safe.\n </p>\n </div>\n </div>\n </div>\n </div>\n </motion.section>\n </div>\n </div>\n );\n}\n","'use client';\n\nimport React, { useState } from 'react';\nimport { motion } from 'framer-motion';\nimport { useForm } from 'react-hook-form';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { z } from 'zod';\nimport Link from 'next/link';\nimport { useRouter } from 'next/navigation';\nimport {\n CheckCircle2,\n Eye,\n EyeOff,\n Heart,\n HeartPulse,\n Shield,\n UserPlus,\n} from 'lucide-react';\nimport { Input } from '@/components/ui/Input';\nimport { Button } from '@/components/ui/Button';\nimport { useAuth } from '@/providers/AuthProvider';\nimport { toast } from 'sonner';\nimport { CreateUserDtoCustomerTypeEnum, CreateUserDtoRoleEnum } from '@/lib/Apis/models';\n\nconst registerSchema = z\n .object({\n firstName: z.string().min(2, 'First name is required'),\n lastName: z.string().min(2, 'Last name is required'),\n email: z.string().email('Enter a valid email'),\n phone: z.string().optional(),\n password: z.string().min(6, 'Password must be at least 6 characters'),\n confirmPassword: z.string(),\n })\n .refine((data) => data.password === data.confirmPassword, {\n message: \"Passwords don't match\",\n path: ['confirmPassword'],\n });\n\ntype RegisterFormData = z.infer<typeof registerSchema>;\n\nconst BENEFITS = [\n 'Personalized care plans from licensed pharmacists',\n 'Express delivery with cold-chain handling',\n 'Automatic refills and refill reminders',\n];\n\nexport function RegisterScreen() {\n const router = useRouter();\n const { register: registerUser } = useAuth();\n const [showPassword, setShowPassword] = useState(false);\n const [showConfirmPassword, setShowConfirmPassword] = useState(false);\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const {\n register,\n handleSubmit,\n formState: { errors },\n } = useForm<RegisterFormData>({\n resolver: zodResolver(registerSchema),\n });\n\n const onSubmit = async (data: RegisterFormData) => {\n setIsSubmitting(true);\n try {\n const { confirmPassword, ...registerData } = data;\n await registerUser({\n ...registerData,\n addresses: [],\n customerType: CreateUserDtoCustomerTypeEnum.Regular,\n role: CreateUserDtoRoleEnum.User,\n });\n toast.success('Account created successfully!');\n router.push('/');\n } catch (error: any) {\n toast.error(error.response?.data?.message || 'Failed to create account');\n } finally {\n setIsSubmitting(false);\n }\n };\n\n return (\n <div className=\"min-h-screen bg-slate-50\">\n <div className=\"grid min-h-screen overflow-hidden bg-white lg:grid-cols-[0.95fr_1.05fr]\">\n <motion.section\n initial={{ opacity: 0, x: -24 }}\n animate={{ opacity: 1, x: 0 }}\n transition={{ duration: 0.4 }}\n className=\"flex flex-col justify-between bg-gradient-to-br from-[rgb(var(--header-from))] via-[rgb(var(--header-via))] to-[rgb(var(--header-to))] px-10 py-14 text-white\"\n >\n <div className=\"space-y-6\">\n <span className=\"inline-flex items-center gap-2 rounded-full bg-white/15 px-3 py-1 text-sm font-semibold uppercase tracking-[0.35em] text-white/70 backdrop-blur\">\n <HeartPulse className=\"h-4 w-4\" />\n Join Hey Pharmacist\n </span>\n <h1 className=\"text-4xl font-bold leading-tight lg:text-5xl\">\n Create your wellness account\n </h1>\n <p className=\"max-w-xl text-white/80\">\n Unlock concierge-level pharmacy support, curated product recommendations, and smarter\n refills designed for busy families.\n </p>\n </div>\n\n <div className=\"space-y-4 rounded-3xl bg-white/10 p-6 backdrop-blur\">\n {BENEFITS.map((benefit) => (\n <div key={benefit} className=\"flex items-center gap-3\">\n <CheckCircle2 className=\"h-5 w-5 text-white\" />\n <p className=\"text-sm text-white/85\">{benefit}</p>\n </div>\n ))}\n </div>\n\n <div className=\"flex items-center gap-6 text-sm text-white/80\">\n <span>Already part of the community?</span>\n <Link\n href=\"/login\"\n className=\"inline-flex items-center gap-2 rounded-full bg-white/15 px-4 py-2 font-semibold transition hover:bg-white/25\"\n >\n Sign in\n </Link>\n </div>\n </motion.section>\n\n <motion.section\n initial={{ opacity: 0, x: 24 }}\n animate={{ opacity: 1, x: 0 }}\n transition={{ duration: 0.4 }}\n className=\"flex items-center justify-center px-6 py-12 lg:px-16\"\n >\n <div className=\"w-full max-w-lg space-y-10\">\n <div className=\"space-y-3\">\n <h2 className=\"text-3xl font-bold text-slate-900\">Create an account</h2>\n <p className=\"text-sm text-slate-500\">\n Start your personalized care journey with pharmacist-backed guidance.\n </p>\n </div>\n\n <form\n onSubmit={handleSubmit(onSubmit)}\n className=\"space-y-6 rounded-3xl border border-slate-100 bg-white p-8 shadow-lg shadow-primary-50\"\n >\n <div className=\"grid gap-4 md:grid-cols-2\">\n <Input\n label=\"First name\"\n placeholder=\"Alex\"\n {...register('firstName')}\n error={errors.firstName?.message}\n />\n <Input\n label=\"Last name\"\n placeholder=\"Morgan\"\n {...register('lastName')}\n error={errors.lastName?.message}\n />\n </div>\n <Input\n type=\"email\"\n label=\"Email address\"\n placeholder=\"you@example.com\"\n {...register('email')}\n error={errors.email?.message}\n />\n <Input\n type=\"tel\"\n label=\"Phone number (optional)\"\n placeholder=\"+1 (555) 123-4567\"\n {...register('phone')}\n error={errors.phone?.message}\n />\n <div className=\"relative\">\n <Input\n type={showPassword ? 'text' : 'password'}\n label=\"Password\"\n placeholder=\"••••••••\"\n {...register('password')}\n error={errors.password?.message}\n />\n <button\n type=\"button\"\n onClick={() => setShowPassword((prev) => !prev)}\n className=\"absolute right-3 top-[42px] text-slate-400 transition hover:text-slate-600\"\n >\n {showPassword ? <EyeOff className=\"h-5 w-5\" /> : <Eye className=\"h-5 w-5\" />}\n </button>\n </div>\n <div className=\"relative\">\n <Input\n type={showConfirmPassword ? 'text' : 'password'}\n label=\"Confirm password\"\n placeholder=\"••••••••\"\n {...register('confirmPassword')}\n error={errors.confirmPassword?.message}\n />\n <button\n type=\"button\"\n onClick={() => setShowConfirmPassword((prev) => !prev)}\n className=\"absolute right-3 top-[42px] text-slate-400 transition hover:text-slate-600\"\n >\n {showConfirmPassword ? <EyeOff className=\"h-5 w-5\" /> : <Eye className=\"h-5 w-5\" />}\n </button>\n </div>\n\n <div className=\"flex items-start gap-3 rounded-2xl bg-slate-50 p-4 text-sm text-slate-600\">\n <Shield className=\"mt-0.5 h-5 w-5 text-primary-500\" />\n <span>\n By creating an account, you agree to our{' '}\n <Link href=\"/terms\" className=\"font-semibold text-primary-600 hover:text-primary-700\">\n Terms of Service\n </Link>{' '}\n and{' '}\n <Link\n href=\"/privacy\"\n className=\"font-semibold text-primary-600 hover:text-primary-700\"\n >\n Privacy Policy\n </Link>\n . We protect your information with bank-level encryption.\n </span>\n </div>\n\n <Button\n type=\"submit\"\n size=\"lg\"\n isLoading={isSubmitting}\n className=\"w-full\"\n >\n <UserPlus className=\"h-5 w-5\" />\n Create my account\n </Button>\n </form>\n\n <div className=\"rounded-3xl border border-slate-100 bg-slate-50 p-6 text-sm text-slate-600\">\n <div className=\"flex items-start gap-3\">\n <Heart className=\"mt-0.5 h-5 w-5 text-primary-500\" />\n <div>\n <p className=\"font-semibold text-slate-800\">Members love us</p>\n <p>\n 92% of patients report improved adherence after receiving pharmacist touchpoints\n through their Hey Pharmacist account.\n </p>\n </div>\n </div>\n </div>\n </div>\n </motion.section>\n </div>\n </div>\n );\n}\n","'use client';\n\nimport React, { useState } from 'react';\nimport { motion } from 'framer-motion';\nimport { useForm } from 'react-hook-form';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { z } from 'zod';\nimport Link from 'next/link';\nimport { useRouter } from 'next/navigation';\nimport {\n Heart,\n HeartPulse,\n LogOut,\n Mail,\n MapPin,\n Package,\n Phone,\n ShieldCheck,\n Sparkles,\n User,\n} from 'lucide-react';\nimport { Button } from '@/components/ui/Button';\nimport { Input } from '@/components/ui/Input';\nimport { useAuth } from '@/providers/AuthProvider';\nimport { toast } from 'sonner';\nimport { getInitials } from '@/lib/utils/format';\n\nconst profileSchema = z.object({\n firstName: z.string().min(2, 'First name is required'),\n lastName: z.string().min(2, 'Last name is required'),\n email: z.string().email('Enter a valid email address'),\n phone: z.string().optional(),\n});\n\ntype ProfileFormData = z.infer<typeof profileSchema>;\n\nexport function ProfileScreen() {\n const router = useRouter();\n const { user, updateUser, logout } = useAuth();\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const {\n register,\n handleSubmit,\n formState: { errors },\n } = useForm<ProfileFormData>({\n resolver: zodResolver(profileSchema),\n defaultValues: {\n firstName: user?.firstname || '',\n lastName: user?.lastname || '',\n email: user?.email || '',\n phone: user?.phoneNumber || '',\n },\n });\n\n const onSubmit = async (data: ProfileFormData) => {\n setIsSubmitting(true);\n try {\n await updateUser(data);\n toast.success('Profile updated successfully!');\n } catch (error: any) {\n toast.error(error.response?.data?.message || 'Failed to update profile');\n } finally {\n setIsSubmitting(false);\n }\n };\n\n const handleLogout = async () => {\n await logout();\n toast.success('Logged out successfully');\n router.push('/');\n };\n\n if (!user) {\n router.push('/login');\n return null;\n }\n\n const quickLinks = [\n {\n icon: Package,\n label: 'Order history',\n description: 'Track shipments and download invoices',\n href: '/orders',\n },\n {\n icon: Heart,\n label: 'Wishlist',\n description: 'Curate go-to remedies and favorites',\n href: '/wishlist',\n },\n {\n icon: MapPin,\n label: 'Delivery addresses',\n description: 'Manage saved delivery locations',\n href: '/account/addresses',\n },\n ];\n\n return (\n <div className=\"min-h-screen bg-slate-50\">\n <section className=\"relative overflow-hidden bg-gradient-to-br from-[rgb(var(--header-from))] via-[rgb(var(--header-via))] to-[rgb(var(--header-to))] text-white mb-8\">\n <div className=\"absolute inset-0 bg-[radial-gradient(circle_at_top_left,_rgba(255,255,255,0.35),_transparent_60%)]\" />\n <div className=\"relative container mx-auto px-4 py-16\">\n <motion.div\n initial={{ opacity: 0, y: 24 }}\n animate={{ opacity: 1, y: 0 }}\n className=\"flex flex-col gap-8 md:flex-row md:items-center md:justify-between\"\n >\n <div className=\"space-y-5\">\n <span className=\"inline-flex items-center gap-2 rounded-full bg-white/15 px-3 py-1 text-sm font-semibold uppercase tracking-[0.35em] text-white/70 backdrop-blur\">\n <HeartPulse className=\"h-4 w-4\" />\n My account\n </span>\n <h1 className=\"text-4xl font-bold md:text-5xl\">\n Hello, {user.firstname} {user.lastname}\n </h1>\n <p className=\"max-w-2xl text-white/80 md:text-lg\">\n Manage profile details, shipping preferences, and personalized recommendations. Our\n pharmacists keep your care plan up to date.\n </p>\n <div className=\"flex flex-wrap items-center gap-4 text-sm text-white/80\">\n <span className=\"inline-flex items-center gap-2 rounded-full bg-white/15 px-4 py-2\">\n <ShieldCheck className=\"h-4 w-4\" />\n Account secured with multi-factor ready login\n </span>\n </div>\n </div>\n <div className=\"flex flex-col items-center gap-4 rounded-3xl bg-white/15 p-6 text-center backdrop-blur\">\n <div className=\"flex h-24 w-24 items-center justify-center rounded-full bg-white/20 text-3xl font-bold text-white\">\n {getInitials(user?.firstname || '', user?.lastname || '') || ''}\n </div>\n <p className=\"text-sm text-white/80\">{user.email}</p>\n <Button\n variant=\"ghost\"\n className=\"text-white hover:bg-white/20\"\n onClick={() => router.push('/account/change-password')}\n >\n Change password\n </Button>\n </div>\n </motion.div>\n </div>\n </section>\n\n <div className=\"relative -mt-16 pb-20\">\n <div className=\"container mx-auto px-4\">\n <div className=\"grid gap-10 lg:grid-cols-[minmax(0,1.1fr)_minmax(0,0.9fr)]\">\n <motion.div\n initial={{ opacity: 0, y: 24 }}\n animate={{ opacity: 1, y: 0 }}\n className=\"space-y-6\"\n >\n <section className=\"rounded-3xl border border-slate-100 bg-white p-8 shadow-lg shadow-primary-50\">\n <div className=\"flex items-center justify-between\">\n <h2 className=\"text-xl font-semibold text-slate-900\">\n Personal information\n </h2>\n <Sparkles className=\"h-5 w-5 text-primary-500\" />\n </div>\n\n <form onSubmit={handleSubmit(onSubmit)} className=\"mt-6 space-y-6\">\n <div className=\"grid gap-4 md:grid-cols-2\">\n <Input\n label=\"First name\"\n placeholder=\"Taylor\"\n {...register('firstName')}\n error={errors.firstName?.message}\n />\n <Input\n label=\"Last name\"\n placeholder=\"Reed\"\n {...register('lastName')}\n error={errors.lastName?.message}\n />\n </div>\n\n <div className=\"relative\">\n <Input\n type=\"email\"\n label=\"Email address\"\n placeholder=\"you@example.com\"\n className=\"pl-10\"\n {...register('email')}\n error={errors.email?.message}\n />\n <Mail className=\"absolute left-3 top-[38px] h-4 w-4 text-slate-400\" />\n </div>\n\n <div className=\"relative\">\n <Input\n type=\"tel\"\n label=\"Phone number\"\n placeholder=\"+1 (555) 123-4567\"\n className=\"pl-10\"\n {...register('phone')}\n error={errors.phone?.message}\n />\n <Phone className=\"absolute left-3 top-[38px] h-4 w-4 text-slate-400\" />\n </div>\n\n <div className=\"flex flex-wrap gap-4\">\n <Button\n type=\"submit\"\n size=\"lg\"\n isLoading={isSubmitting}\n >\n Save changes\n </Button>\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"lg\"\n onClick={() => router.push('/orders')}\n >\n View recent orders\n </Button>\n </div>\n </form>\n </section>\n\n <section className=\"grid gap-4 md:grid-cols-2\">\n {quickLinks.map((item) => (\n <Link\n key={item.href}\n href={item.href}\n className=\"group rounded-3xl border border-slate-100 bg-white p-6 shadow-sm transition hover:-translate-y-1 hover:shadow-lg\"\n >\n <div className=\"flex items-center gap-3\">\n <span className=\"rounded-2xl bg-primary-50 p-3 text-primary-600\">\n <item.icon className=\"h-5 w-5\" />\n </span>\n <div>\n <p className=\"text-base font-semibold text-slate-900 group-hover:text-primary-600\">\n {item.label}\n </p>\n <p className=\"text-sm text-slate-500\">{item.description}</p>\n </div>\n </div>\n </Link>\n ))}\n </section>\n </motion.div>\n\n <motion.aside\n initial={{ opacity: 0, y: 24 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: 0.1 }}\n className=\"space-y-6\"\n >\n <div className=\"rounded-3xl border border-slate-100 bg-white p-6 shadow-lg shadow-primary-50\">\n <h3 className=\"text-lg font-semibold text-slate-900\">Care preferences</h3>\n <p className=\"mt-3 text-sm text-slate-600\">\n Customize how we support you. Set refill reminders or manage communication\n preferences to stay aligned with your wellness goals.\n </p>\n <Button\n variant=\"outline\"\n className=\"mt-4 w-full\"\n onClick={() => router.push('/account/preferences')}\n >\n Manage preferences\n </Button>\n </div>\n\n <div className=\"rounded-3xl border border-primary-100 bg-primary-50/70 p-6 text-sm text-primary-700 shadow-sm\">\n <p className=\"font-semibold uppercase tracking-[0.3em]\">Pharmacist tip</p>\n <p className=\"mt-3 leading-relaxed\">\n Keep your phone number current so pharmacists can reach you quickly with dosage\n advice or time-sensitive updates about your order.\n </p>\n </div>\n\n <button\n onClick={handleLogout}\n className=\"flex w-full items-center justify-center gap-2 rounded-3xl border border-red-200 bg-red-50 px-4 py-3 text-sm font-semibold text-red-600 transition hover:bg-red-100\"\n >\n <LogOut className=\"h-4 w-4\" />\n Log out\n </button>\n </motion.aside>\n </div>\n </div>\n </div>\n </div>\n );\n}\n","'use client';\n\nimport React from 'react';\nimport { motion } from 'framer-motion';\nimport { Package, Calendar, CreditCard, ExternalLink } from 'lucide-react';\nimport { PaymentPaymentMethodEnum, PaymentPaymentStatusEnum, PopulatedOrder } from '@/lib/Apis';\nimport { formatPrice, formatDate } from '@/lib/utils/format';\nimport { Badge } from './ui/Badge';\nimport Link from 'next/link';\nimport Image from 'next/image';\n\ninterface OrderCardProps {\n order: PopulatedOrder;\n}\n\nexport function OrderCard({ order }: OrderCardProps) {\n const config = order.orderStatus;\n\n return (\n <motion.div\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n whileHover={{ y: -4 }}\n className=\"bg-white rounded-2xl p-6 shadow-sm hover:shadow-xl transition-all duration-300 border border-gray-100\"\n >\n {/* Header */}\n <div className=\"flex justify-between items-start mb-4\">\n <div>\n <h3 className=\"text-lg font-bold text-gray-900 flex items-center gap-2\">\n <Package className=\"w-5 h-5 text-primary-600\" />\n Order #{order?._id?.slice(0, 6) || ''}\n </h3>\n <p className=\"text-sm text-gray-500 mt-1 flex items-center gap-2\">\n <Calendar className=\"w-4 h-4\" />\n {formatDate(order.createdAt || new Date(), 'long')}\n </p>\n </div>\n <Badge variant={config as 'success' | 'warning' | 'primary' | 'danger' | 'gray'}>{config}</Badge>\n </div>\n\n {/* Items Preview */}\n <div className=\"space-y-2 mb-4\">\n {order.items?.slice(0, 2).map((item) => (\n <div key={item.productVariantId} className=\"flex items-center gap-3 text-sm\">\n <Image src={item?.productVariantData?.productMedia?.[0]?.file || '/placeholder-product.jpg'} alt={item?.productVariantData?.name || 'Product image'} width={48} height={48} className=\"w-12 h-12 rounded-lg bg-gray-100 flex-shrink-0\" />\n <div className=\"flex-1 min-w-0\">\n <p className=\"font-medium text-gray-900 truncate\">{item.productVariantData.name}</p>\n <p className=\"text-gray-500\">Qty: {item.quantity}</p>\n </div>\n <p className=\"font-semibold text-gray-900\">{formatPrice(item.productVariantData.finalPrice)}</p>\n </div>\n ))}\n {order.items?.length && order.items?.length > 2 && (\n <p className=\"text-sm text-gray-500 pl-15\">\n +{order.items.length - 2} more item{order.items.length - 2 > 1 ? 's' : ''}\n </p>\n )}\n </div>\n\n {/* Footer */}\n <div className=\"flex justify-between items-center pt-4 border-t border-gray-200\">\n <div>\n <p className=\"text-sm text-gray-500\">Total Amount</p>\n <p className=\"text-2xl font-bold text-gray-900\">{formatPrice(order.grandTotal || 0)}</p>\n </div>\n \n <div className=\"flex gap-2\">\n {order.payment.paymentStatus !== PaymentPaymentStatusEnum.Paid && order.payment.paymentMethod === PaymentPaymentMethodEnum.Card && (\n <a\n href={order?.payment?.paymentIntent?.hostedInvoiceUrl || ''}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"inline-flex items-center gap-2 px-4 py-2 bg-primary-600 text-white rounded-lg hover:bg-primary-700 transition-colors\"\n >\n <CreditCard className=\"w-4 h-4\" />\n Pay Now\n </a>\n )}\n {/* <Link\n href={`/orders/${order.id}`}\n className=\"inline-flex items-center gap-2 px-4 py-2 border-2 border-gray-300 text-gray-700 rounded-lg hover:bg-gray-50 transition-colors\"\n >\n View Details\n <ExternalLink className=\"w-4 h-4\" />\n </Link> */}\n </div>\n </div>\n </motion.div>\n );\n}\n\n","import { useState, useEffect, useCallback } from 'react';\nimport { OrdersApi } from '@/lib/Apis';\nimport { getApiConfiguration } from '@/lib/api-adapter';\nimport { PopulatedOrder } from '@/lib/Apis/models';\nimport { useAuth } from '@/providers/AuthProvider';\n\nexport function useOrders(\n page: number = 1,\n limit: number = 10,\n orderStatus?: string,\n paymentStatus?: string\n) {\n const [orders, setOrders] = useState<PopulatedOrder[]>([]);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n const [pagination, setPagination] = useState({\n page: 1,\n limit: 10,\n total: 0,\n totalPages: 0,\n });\n const { user } = useAuth();\n const resolvedUserId = (user as any)?._id || (user as any)?.id;\n\n const fetchOrders = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n const response = await new OrdersApi(getApiConfiguration()).getAllOrders(\n paymentStatus && paymentStatus !== 'All' ? paymentStatus : undefined,\n orderStatus && orderStatus !== 'All' ? orderStatus : undefined,\n page,\n limit,\n undefined,\n undefined,\n undefined,\n resolvedUserId\n );\n setOrders(response.data.data || []);\n setPagination({\n page: response.data.page || page,\n limit: response.data.limit || limit,\n total: response.data.total ?? 0,\n totalPages: response.data.totalPages || 1,\n });\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsLoading(false);\n }\n }, [page, limit, resolvedUserId, orderStatus, paymentStatus]);\n\n useEffect(() => {\n fetchOrders();\n }, [fetchOrders]);\n\n return {\n orders,\n isLoading,\n error,\n pagination,\n refetch: fetchOrders,\n };\n}\n\nexport function useOrder(id: string) {\n const [order, setOrder] = useState<PopulatedOrder | null>(null);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n const fetchOrder = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n const response = await new OrdersApi(getApiConfiguration()).getSingleOrder(id);\n setOrder(response.data);\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsLoading(false);\n }\n }, [id]);\n\n useEffect(() => {\n if (id) {\n fetchOrder();\n }\n }, [id, fetchOrder]);\n\n return { order, isLoading, error, refetch: fetchOrder };\n}\n\nexport function useCurrentOrders() {\n const [orders, setOrders] = useState<PopulatedOrder[]>([]);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n const fetchCurrentOrders = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n const response = await new OrdersApi(getApiConfiguration()).getUserOrders();\n setOrders(response.data || []);\n } catch (err) {\n setError(err as Error);\n } finally {\n setIsLoading(false);\n }\n }, []);\n\n useEffect(() => {\n fetchCurrentOrders();\n }, [fetchCurrentOrders]);\n\n return { orders, isLoading, error, refetch: fetchCurrentOrders };\n}\n","import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { Check, Search } from 'lucide-react';\n\ninterface FilterChipsProps {\n label: string;\n icon: React.ComponentType<{ className?: string }>;\n filters: string[];\n selected: string;\n onSelect: (value: string) => void;\n maxVisible?: number;\n variant?: 'primary' | 'secondary';\n}\n\nexport function FilterChips({\n label,\n icon: Icon,\n filters,\n selected,\n onSelect,\n maxVisible = 4,\n variant = 'primary',\n}: FilterChipsProps) {\n const [isOverflowOpen, setIsOverflowOpen] = useState(false);\n const [filterSearchTerm, setFilterSearchTerm] = useState('');\n const overflowMenuRef = useRef<HTMLDivElement | null>(null);\n\n const color = variant === 'primary' ? 'primary' : 'secondary';\n\n const { visibleFilters, overflowFilters } = useMemo(() => {\n const basePrimary = filters.slice(0, maxVisible);\n\n if (basePrimary.includes(selected)) {\n return {\n visibleFilters: basePrimary,\n overflowFilters: filters.filter((filter) => !basePrimary.includes(filter)),\n };\n }\n\n const adjustedPrimary = [\n ...basePrimary.slice(0, maxVisible - 1),\n selected,\n ];\n\n const uniquePrimary = adjustedPrimary.filter(\n (filter, index, self) => self.indexOf(filter) === index\n );\n\n return {\n visibleFilters: uniquePrimary,\n overflowFilters: filters.filter((filter) => !uniquePrimary.includes(filter)),\n };\n }, [filters, maxVisible, selected]);\n\n const filteredOverflowFilters = useMemo(() => {\n if (!filterSearchTerm.trim()) return overflowFilters;\n return overflowFilters.filter((filter) =>\n filter.toLowerCase().includes(filterSearchTerm.toLowerCase())\n );\n }, [filterSearchTerm, overflowFilters]);\n\n useEffect(() => {\n if (!isOverflowOpen) {\n setFilterSearchTerm('');\n }\n }, [isOverflowOpen]);\n\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (overflowMenuRef.current && !overflowMenuRef.current.contains(event.target as Node)) {\n setIsOverflowOpen(false);\n }\n }\n\n if (isOverflowOpen) {\n document.addEventListener('mousedown', handleClickOutside);\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [isOverflowOpen]);\n\n return (\n <div className=\"flex flex-col gap-3 md:flex-row md:items-center md:gap-4\">\n <span className=\"inline-flex items-center gap-2 rounded-full border border-slate-200 bg-slate-50 px-3 py-1 text-xs font-semibold uppercase tracking-wide text-slate-600\">\n <Icon className=\"h-4 w-4\" />\n {label}\n </span>\n <div className=\"flex flex-col gap-2 md:flex-row md:items-center md:gap-3\">\n <div className=\"flex flex-wrap gap-2\">\n {visibleFilters.map((filter) => (\n <button\n key={filter}\n type=\"button\"\n onClick={() => onSelect(filter)}\n className={`rounded-full border px-3 py-1 text-sm font-medium transition ${\n selected === filter\n ? `border-${color}-600 bg-${color}-600 text-white shadow-lg shadow-${color}-500/30`\n : `border-slate-200 bg-slate-50 text-slate-600 hover:border-${color}-300 hover:text-${color}-600`\n }`}\n >\n {filter}\n </button>\n ))}\n </div>\n\n {overflowFilters.length > 0 && (\n <div className=\"relative\" ref={overflowMenuRef}>\n <button\n type=\"button\"\n onClick={() => setIsOverflowOpen((prev) => !prev)}\n className={`flex items-center gap-2 rounded-full border px-3 py-1 text-sm font-medium transition ${\n overflowFilters.includes(selected)\n ? `border-${color}-600 bg-${color}-50 text-${color}-700 shadow-lg shadow-${color}-500/20`\n : 'border-slate-200 bg-white text-slate-600 hover:border-slate-300'\n }`}\n >\n <span>{overflowFilters.includes(selected) ? selected : 'More'}</span>\n <span className={`inline-flex h-5 min-w-[1.5rem] items-center justify-center rounded-full bg-${color}-100 px-1 text-xs font-semibold text-${color}-600`}>\n {overflowFilters.length}\n </span>\n </button>\n\n <AnimatePresence>\n {isOverflowOpen && (\n <motion.div\n initial={{ opacity: 0, y: 8 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: 8 }}\n transition={{ duration: 0.15 }}\n className=\"absolute right-0 z-50 mt-2 w-64 rounded-2xl border border-slate-100 bg-white shadow-xl shadow-primary-50\"\n >\n <div className=\"border-b border-slate-100 px-4 py-3\">\n <div className=\"relative\">\n <Search className=\"pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-slate-400\" />\n <input\n type=\"text\"\n placeholder={`Search ${label.toLowerCase()}`}\n value={filterSearchTerm}\n onChange={(event) => setFilterSearchTerm(event.target.value)}\n className=\"w-full rounded-full border border-slate-200 bg-slate-50 py-2 pl-9 pr-3 text-sm text-slate-600 outline-none transition focus:border-primary-300 focus:bg-white focus:ring-2 focus:ring-primary-200\"\n />\n </div>\n </div>\n <div className=\"max-h-60 overflow-y-auto px-2 py-2\">\n {filteredOverflowFilters.length > 0 ? (\n filteredOverflowFilters.map((filter) => (\n <button\n key={filter}\n type=\"button\"\n onClick={() => {\n onSelect(filter);\n setIsOverflowOpen(false);\n }}\n className={`flex w-full items-center justify-between rounded-xl px-3 py-2 text-sm font-medium transition ${\n selected === filter\n ? `bg-${color}-600 text-white shadow-lg shadow-${color}-500/30`\n : 'text-slate-600 hover:bg-slate-100'\n }`}\n >\n <span>{filter}</span>\n {selected === filter && <Check className=\"h-4 w-4\" />}\n </button>\n ))\n ) : (\n <p className=\"px-3 py-4 text-sm text-slate-500\">No items found.</p>\n )}\n </div>\n <div className=\"flex items-center justify-between gap-2 border-t border-slate-100 px-4 py-3\">\n <span className=\"text-xs font-semibold uppercase tracking-wide text-slate-400\">\n Quick actions\n </span>\n <button\n type=\"button\"\n onClick={() => {\n onSelect('All');\n setIsOverflowOpen(false);\n }}\n className=\"text-xs font-semibold uppercase tracking-wide text-primary-600 hover:text-primary-700\"\n >\n Reset to All\n </button>\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n )}\n </div>\n </div>\n );\n}\n\n\n","'use client';\n\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { CalendarDays, ChevronLeft, ChevronRight, CreditCard, Filter, Package, Sparkles } from 'lucide-react';\nimport { OrderCard } from '@/components/OrderCard';\nimport { OrderCardSkeleton } from '@/components/ui/Skeleton';\nimport { EmptyState } from '@/components/EmptyState';\nimport { Button } from '@/components/ui/Button';\nimport { useOrders } from '@/hooks/useOrders';\nimport { FilterChips } from '@/components/FilterChips';\nimport { useRouter } from 'next/navigation';\nimport { ManualOrderDTOOrderStatusEnum, PaymentPaymentStatusEnum } from '@/lib/Apis';\n\nconst STATUS_FILTERS = ['All', ...Object.values(ManualOrderDTOOrderStatusEnum)];\nconst PAYMENT_FILTERS = ['All', ...Object.values(PaymentPaymentStatusEnum)];\ntype StatusFilterType = (typeof STATUS_FILTERS)[number];\ntype PaymentFilterType = (typeof PAYMENT_FILTERS)[number];\n\nexport function OrdersScreen() {\n const router = useRouter();\n const [page, setPage] = useState(1);\n const [selectedFilter, setSelectedFilter] = useState<StatusFilterType>('All');\n const [selectedPaymentFilter, setSelectedPaymentFilter] = useState<PaymentFilterType>('All');\n const { orders, isLoading, pagination } = useOrders(\n page,\n 10,\n selectedFilter,\n selectedPaymentFilter\n );\n const [isOverflowOpen, setIsOverflowOpen] = useState(false);\n const [filterSearchTerm, setFilterSearchTerm] = useState('');\n const overflowMenuRef = useRef<HTMLDivElement | null>(null);\n\n const filteredOrders = useMemo(() => {\n return orders.filter((order) => {\n const matchesStatus =\n selectedFilter === 'All' ||\n order?.orderStatus?.toLowerCase() === selectedFilter.toLowerCase();\n const matchesPayment =\n selectedPaymentFilter === 'All' ||\n order?.payment?.paymentStatus?.toLowerCase() === selectedPaymentFilter.toLowerCase();\n\n return matchesStatus && matchesPayment;\n });\n }, [orders, selectedFilter, selectedPaymentFilter]);\n\n const hasOrders = filteredOrders.length > 0;\n const MAX_VISIBLE_FILTERS = 4;\n\n // Removed local overflow/search logic in favor of reusable FilterChips\n\n useEffect(() => {\n if (!isOverflowOpen) {\n setFilterSearchTerm('');\n }\n }, [isOverflowOpen]);\n\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (overflowMenuRef.current && !overflowMenuRef.current.contains(event.target as Node)) {\n setIsOverflowOpen(false);\n }\n }\n\n if (isOverflowOpen) {\n document.addEventListener('mousedown', handleClickOutside);\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [isOverflowOpen]);\n\n return (\n <div className=\"min-h-screen bg-slate-50\">\n <section className=\"relative overflow-hidden bg-gradient-to-br from-[rgb(var(--header-from))] via-[rgb(var(--header-via))] to-[rgb(var(--header-to))] text-white mb-8\">\n <div className=\"absolute inset-0 bg-[radial-gradient(circle_at_top_left,_rgba(255,255,255,0.35),_transparent_60%)]\" />\n <div className=\"relative container mx-auto px-4 py-16\">\n <motion.div\n initial={{ opacity: 0, y: 24 }}\n animate={{ opacity: 1, y: 0 }}\n className=\"space-y-6\"\n >\n <span className=\"inline-flex items-center gap-2 rounded-full bg-white/15 px-3 py-1 text-sm font-semibold uppercase tracking-[0.35em] text-white/70 backdrop-blur\">\n <CalendarDays className=\"h-4 w-4\" />\n Order history\n </span>\n <div className=\"flex flex-col gap-4 md:flex-row md:items-center md:justify-between\">\n <div className=\"space-y-4\">\n <h1 className=\"text-4xl font-bold md:text-5xl\">All of your pharmacy orders</h1>\n <p className=\"max-w-2xl text-white/80 md:text-lg\">\n Access receipts, shipping statuses, and reorder suggestions in one organized\n timeline curated by our pharmacists.\n </p>\n </div>\n <div className=\"rounded-3xl bg-white/15 p-6 backdrop-blur\">\n <p className=\"text-sm font-semibold uppercase tracking-[0.35em] text-white/70\">\n Quick tip\n </p>\n <p className=\"mt-3 text-sm text-white/80\">\n Use filters to review previous prescriptions, reorder favorites, or download\n invoices for insurance claims.\n </p>\n </div>\n </div>\n </motion.div>\n </div>\n </section>\n\n <div className=\"relative -mt-16 pb-16 container mx-auto px-4\">\n <div className=\"container mx-auto px-4\">\n <motion.div\n initial={{ opacity: 0, y: 24 }}\n animate={{ opacity: 1, y: 0 }}\n className=\"rounded-3xl border border-slate-100 bg-white p-6 shadow-lg shadow-primary-50\"\n >\n <div className=\"flex flex-col gap-4 md:flex-row md:items-center md:justify-between\">\n <div className=\"flex items-center gap-3 text-sm text-slate-500\">\n <Sparkles className=\"h-4 w-4 text-primary-500\" />\n <span>Explore your complete order archive with pharmacist notes.</span>\n </div>\n <div className=\"flex flex-col gap-4 md:items-end\">\n <FilterChips\n label=\"Status filters\"\n icon={Filter}\n filters={STATUS_FILTERS}\n selected={selectedFilter}\n onSelect={(value) => {\n setSelectedFilter(value as any);\n setPage(1);\n }}\n maxVisible={MAX_VISIBLE_FILTERS}\n variant=\"primary\"\n />\n\n <FilterChips\n label=\"Payment status\"\n icon={CreditCard}\n filters={PAYMENT_FILTERS}\n selected={selectedPaymentFilter}\n onSelect={(value) => {\n setSelectedPaymentFilter(value as any);\n setPage(1);\n }}\n maxVisible={MAX_VISIBLE_FILTERS}\n variant=\"primary\"\n />\n </div>\n </div>\n\n <div className=\"mt-6 space-y-4\">\n {isLoading ? (\n Array.from({ length: 3 }).map((_, index) => <OrderCardSkeleton key={index} />)\n ) : hasOrders ? (\n filteredOrders.map((order) => <OrderCard key={order.id} order={order} />)\n ) : (\n <EmptyState\n icon={Package}\n title=\"No orders found for these filters\"\n description=\"Adjust the status or payment filters, or browse the shop for new essentials.\"\n actionLabel=\"Shop products\"\n onAction={() => router.push('/shop')}\n />\n )}\n </div>\n\n {!isLoading && pagination.totalPages > 1 && hasOrders && (\n <div className=\"mt-10 flex flex-wrap items-center justify-center gap-4\">\n <Button\n variant=\"outline\"\n onClick={() => setPage((current) => Math.max(1, current - 1))}\n disabled={page === 1}\n >\n <ChevronLeft className=\"h-5 w-5\" />\n Previous\n </Button>\n <span className=\"text-sm font-semibold text-slate-600\">\n Page {page} of {pagination.totalPages}\n </span>\n <Button\n variant=\"outline\"\n onClick={() =>\n setPage((current) => Math.min(pagination.totalPages, current + 1))\n }\n disabled={page === pagination.totalPages}\n >\n Next\n <ChevronRight className=\"h-5 w-5\" />\n </Button>\n </div>\n )}\n </motion.div>\n </div>\n </div>\n </div>\n );\n}\n","'use client';\n\nimport React from 'react';\nimport { motion } from 'framer-motion';\nimport { EmptyState } from '@/components/EmptyState';\nimport { OrderCard } from '@/components/OrderCard';\nimport { OrderCardSkeleton } from '@/components/ui/Skeleton';\nimport { useCurrentOrders } from '@/hooks/useOrders';\nimport { useRouter } from 'next/navigation';\nimport Link from 'next/link';\nimport {\n ArrowUpRight,\n BellRing,\n PackageCheck,\n Truck,\n Warehouse,\n} from 'lucide-react';\n\nexport function CurrentOrdersScreen() {\n const router = useRouter();\n const { orders, isLoading } = useCurrentOrders();\n\n const hasOrders = orders.length > 0;\n\n return (\n <div className=\"min-h-screen bg-slate-50\">\n <section className=\"relative overflow-hidden bg-gradient-to-br from-[rgb(var(--header-from))] via-[rgb(var(--header-via))] to-[rgb(var(--header-to))] text-white\">\n <div className=\"absolute inset-0 bg-[radial-gradient(circle_at_top_left,_rgba(255,255,255,0.35),_transparent_60%)]\" />\n <div className=\"relative container mx-auto px-4 py-16\">\n <div className=\"flex flex-col gap-6 md:flex-row md:items-center md:justify-between\">\n <motion.div\n initial={{ opacity: 0, y: 24 }}\n animate={{ opacity: 1, y: 0 }}\n className=\"space-y-4\"\n >\n <span className=\"inline-flex items-center gap-2 rounded-full bg-white/15 px-3 py-1 text-sm font-semibold uppercase tracking-[0.35em] text-white/70 backdrop-blur\">\n <Truck className=\"h-4 w-4\" />\n Live order tracking\n </span>\n <h1 className=\"text-4xl font-bold md:text-5xl\">Current orders</h1>\n <p className=\"max-w-2xl text-white/80 md:text-lg\">\n Follow your pharmacy orders from preparation to delivery. Real-time updates, SMS\n alerts, and pharmacist oversight come standard.\n </p>\n </motion.div>\n <motion.div\n initial={{ opacity: 0, y: 24 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: 0.1 }}\n className=\"rounded-3xl bg-white/15 p-6 backdrop-blur\"\n >\n <p className=\"text-sm font-semibold uppercase tracking-[0.35em] text-white/70\">\n Quick actions\n </p>\n <div className=\"mt-4 space-y-3 text-sm text-white/80\">\n <Link\n href=\"/orders\"\n className=\"flex items-center justify-between rounded-2xl bg-white/10 px-4 py-3 transition hover:bg-white/20\"\n >\n <span className=\"font-semibold text-white\">View order history</span>\n <ArrowUpRight className=\"h-4 w-4\" />\n </Link>\n <p>\n Need help fast? Chat with a pharmacist and we will triage your request in under 10\n minutes.\n </p>\n </div>\n </motion.div>\n </div>\n </div>\n </section>\n\n <div className=\"relative -mt-16 pb-16\">\n <div className=\"container mx-auto px-4\">\n <motion.section\n initial={{ opacity: 0, y: 24 }}\n animate={{ opacity: 1, y: 0 }}\n className=\"grid gap-6 lg:grid-cols-[minmax(0,2fr)_minmax(0,1fr)]\"\n >\n <div className=\"space-y-6\">\n {isLoading ? (\n <div className=\"space-y-4\">\n {Array.from({ length: 3 }).map((_, index) => (\n <OrderCardSkeleton key={index} />\n ))}\n </div>\n ) : hasOrders ? (\n <div className=\"space-y-4\">\n {orders.map((order) => (\n <OrderCard key={order.id} order={order} />\n ))}\n </div>\n ) : (\n <div className=\"rounded-3xl border border-slate-100 bg-white p-10 shadow-sm\">\n <EmptyState\n icon={PackageCheck}\n title=\"No active orders\"\n description=\"Start a new order to see live preparation, packing, and delivery updates here.\"\n actionLabel=\"Shop wellness essentials\"\n onAction={() => router.push('/shop')}\n />\n </div>\n )}\n </div>\n\n <aside className=\"space-y-6\">\n <div className=\"rounded-3xl border border-slate-100 bg-white p-6 shadow-lg shadow-primary-50\">\n <h2 className=\"text-lg font-semibold text-slate-900\">\n Real-time milestones\n </h2>\n <div className=\"mt-4 space-y-4 text-sm text-slate-600\">\n <div className=\"flex items-start gap-3 rounded-2xl bg-slate-50 p-4\">\n <Warehouse className=\"h-5 w-5 text-primary-500\" />\n <div>\n <p className=\"font-semibold text-slate-800\">Preparation</p>\n <p>Our pharmacists verify ingredients and pack thermo-sensitive items.</p>\n </div>\n </div>\n <div className=\"flex items-start gap-3 rounded-2xl bg-slate-50 p-4\">\n <Truck className=\"h-5 w-5 text-primary-500\" />\n <div>\n <p className=\"font-semibold text-slate-800\">In transit</p>\n <p>Track live courier location with ETA updates tailored to your delivery window.</p>\n </div>\n </div>\n <div className=\"flex items-start gap-3 rounded-2xl bg-slate-50 p-4\">\n <BellRing className=\"h-5 w-5 text-primary-500\" />\n <div>\n <p className=\"font-semibold text-slate-800\">Arrival alerts</p>\n <p>Receive SMS and email notifications when parcels are out for delivery.</p>\n </div>\n </div>\n </div>\n </div>\n\n <div className=\"rounded-3xl border border-primary-100 bg-primary-50/70 p-6 text-sm text-primary-700 shadow-sm\">\n <p className=\"font-semibold uppercase tracking-[0.3em]\">Need support?</p>\n <p className=\"mt-3 leading-relaxed\">\n Our fulfillment team is online 7 days a week. Message us if you need to adjust\n delivery instructions or review dosage guidance.\n </p>\n </div>\n </aside>\n </motion.section>\n </div>\n </div>\n </div>\n );\n}\n","'use client';\n\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { motion } from 'framer-motion';\nimport { useForm } from 'react-hook-form';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { z } from 'zod';\nimport {\n Crown,\n Edit3,\n Globe,\n Home,\n MapPin,\n Phone,\n Plus,\n Sparkles,\n Star,\n Trash2,\n User,\n} from 'lucide-react';\nimport { Button } from '@/components/ui/Button';\nimport { Input } from '@/components/ui/Input';\nimport { Modal } from '@/components/ui/Modal';\nimport { EmptyState } from '@/components/EmptyState';\nimport { useAddresses } from '@/hooks/useAddresses';\nimport { toast } from 'sonner';\nimport { Address, AddressAddressTypeEnum, CreateAddressDtoAddressTypeEnum, UpdateAddressDto, UpdateAddressDtoAddressTypeEnum } from '@/lib/Apis';\n\nconst addressFormSchema = z.object({\n fullName: z.string().min(2, 'Please enter a full name'),\n phone: z.string().min(7, 'Please enter a valid phone number'),\n addressLine1: z.string().min(4, 'Address line 1 is required'),\n addressLine2: z.string().optional(),\n city: z.string().min(2, 'City is required'),\n state: z.string().min(2, 'State / Region is required'),\n zipCode: z.string().min(3, 'Postal code is required'),\n country: z.string().min(2, 'Country is required'),\n addressType: z.enum(['Billing', 'Shipping', 'Both']).default('Shipping'),\n isDefault: z.boolean().optional(),\n});\n\ntype AddressFormValues = z.infer<typeof addressFormSchema>;\n\nconst FORM_DEFAULTS: AddressFormValues = {\n fullName: '',\n phone: '',\n addressLine1: '',\n addressLine2: '',\n city: '',\n state: '',\n zipCode: '',\n country: 'United States',\n addressType: 'Shipping',\n isDefault: false,\n};\n\nfunction formatAddressSnippet(address: Address) {\n return [address.street1, address.street2, `${address.city}, ${address.state} ${address.zip}`, address.country]\n .filter(Boolean)\n .join(' • ');\n}\n\nfunction getAddressTypeCopy(type?: AddressAddressTypeEnum) {\n switch (type) {\n case 'Billing':\n return { label: 'Billing', icon: <Home className=\"h-4 w-4\" /> };\n case 'Both':\n return { label: 'Billing & Shipping', icon: <Globe className=\"h-4 w-4\" /> };\n case 'Shipping':\n default:\n return { label: 'Shipping', icon: <MapPin className=\"h-4 w-4\" /> };\n }\n}\n\nexport function AddressesScreen() {\n const {\n addresses,\n defaultAddress,\n isLoading,\n error,\n addAddress,\n updateAddress,\n removeAddress,\n markAsDefault,\n } = useAddresses();\n\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [editingAddress, setEditingAddress] = useState<Address | null>(null);\n\n const {\n register,\n handleSubmit,\n reset,\n formState: { errors, isSubmitting },\n } = useForm<AddressFormValues>({\n resolver: zodResolver(addressFormSchema),\n defaultValues: FORM_DEFAULTS,\n });\n\n useEffect(() => {\n if (editingAddress) {\n reset({\n fullName: editingAddress.name,\n phone: editingAddress.phone,\n addressLine1: editingAddress.street1,\n addressLine2: editingAddress.street2,\n city: editingAddress.city,\n state: editingAddress.state,\n zipCode: editingAddress.zip,\n country: editingAddress.country,\n addressType: editingAddress.addressType as AddressAddressTypeEnum,\n isDefault: editingAddress.isDefault ?? false,\n });\n } else {\n reset(FORM_DEFAULTS);\n }\n }, [editingAddress, reset]);\n\n const openCreateModal = () => {\n setEditingAddress(null);\n setIsModalOpen(true);\n };\n\n const openEditModal = (address: Address) => {\n setEditingAddress(address);\n setIsModalOpen(true);\n };\n\n const closeModal = () => {\n setIsModalOpen(false);\n };\n\n const onSubmit = async (values: AddressFormValues) => {\n const payload: UpdateAddressDto = {\n name: values.fullName,\n phone: values.phone,\n street1: values.addressLine1,\n street2: values.addressLine2 || '',\n city: values.city,\n state: values.state,\n zip: values.zipCode,\n country: values.country,\n isDefault: values.isDefault ?? false,\n addressType: values.addressType as UpdateAddressDtoAddressTypeEnum,\n };\n\n if (editingAddress) {\n const response = await updateAddress(editingAddress.id, payload);\n if (response) {\n toast.success('Address updated');\n closeModal();\n } else {\n toast.error('Unable to update address');\n }\n } else {\n const response = await addAddress({\n name: values.fullName,\n phone: values.phone,\n street1: values.addressLine1,\n street2: values.addressLine2 || '',\n city: values.city,\n state: values.state,\n zip: values.zipCode,\n country: values.country,\n addressType: values.addressType as CreateAddressDtoAddressTypeEnum,\n });\n if (response) {\n toast.success('Address added successfu lly');\n closeModal();\n } else {\n toast.error('Failed to add address');\n }\n }\n };\n\n const handleDelete = async (address: Address) => {\n const confirmDelete = window.confirm(\n `Remove ${address.name}'s address?\\nYou can add it back at any time.`\n );\n if (!confirmDelete) return;\n\n try {\n await removeAddress(address.id);\n toast.success('Address removed successfully');\n } catch (error) {\n toast.error('Failed to remove address', {\n description: error instanceof Error ? error.message : 'An unexpected error occurred',\n });\n }\n };\n\n const handleSetDefault = async (address: Address) => {\n try {\n await markAsDefault(address.id);\n toast.success(`${address.name} is now your default address`);\n } catch (error) {\n toast.error('Failed to set default address', {\n description: error instanceof Error ? error.message : 'An unexpected error occurred',\n });\n }\n };\n\n const stats = useMemo(() => {\n const shippingCount = addresses.filter((address) => address.addressType !== 'Billing').length;\n const billingCount = addresses.filter((address) => address.addressType !== 'Shipping').length;\n return [\n {\n id: 'total',\n label: 'Saved addresses',\n value: addresses.length,\n helper: 'All delivery and billing locations',\n },\n {\n id: 'shipping',\n label: 'Shipping ready',\n value: shippingCount,\n helper: 'Optimized for fast dispatch',\n },\n {\n id: 'billing',\n label: 'Billing profiles',\n value: billingCount,\n helper: 'Simplifies checkout',\n },\n ];\n }, [addresses]);\n\n return (\n <div className=\"min-h-screen bg-slate-50\">\n <section className=\"relative overflow-hidden bg-gradient-to-br from-[rgb(var(--header-from))] via-[rgb(var(--header-via))] to-[rgb(var(--header-to))] text-white mb-8\">\n <div className=\"absolute inset-0 bg-[radial-gradient(circle_at_top_left,_rgba(255,255,255,0.3),_transparent_60%)]\" />\n <div className=\"relative container mx-auto px-4 py-16\">\n <div className=\"flex flex-col gap-6 md:flex-row md:items-center md:justify-between\">\n <motion.div\n initial={{ opacity: 0, y: 24 }}\n animate={{ opacity: 1, y: 0 }}\n className=\"space-y-5\"\n >\n <span className=\"inline-flex items-center gap-2 rounded-full bg-white/15 px-3 py-1 text-sm font-semibold uppercase tracking-[0.35em] text-white/70 backdrop-blur\">\n <MapPin className=\"h-4 w-4\" />\n Address book\n </span>\n <h1 className=\"text-4xl font-bold md:text-5xl\">\n Manage where your care arrives\n </h1>\n <p className=\"max-w-2xl text-white/80 md:text-lg\">\n Add home, office, or loved ones' addresses and toggle a default for lightning-fast\n checkout and delivery.\n </p>\n <div className=\"flex flex-wrap items-center gap-3 text-sm text-white/75\">\n <span className=\"inline-flex items-center gap-2 rounded-full bg-white/10 px-3 py-1\">\n <Sparkles className=\"h-4 w-4 text-white\" />\n Default address: {defaultAddress ? defaultAddress.name : 'Not set'}\n </span>\n <Button variant=\"ghost\" className=\"text-white hover:bg-white/10\" onClick={openCreateModal}>\n <Plus className=\"h-5 w-5\" />\n Add address\n </Button>\n </div>\n </motion.div>\n\n <motion.div\n initial={{ opacity: 0, y: 24 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ delay: 0.1 }}\n className=\"grid gap-4 rounded-3xl bg-white/15 p-6 text-sm text-white/80 backdrop-blur\"\n >\n {stats.map((stat) => (\n <div key={stat.id} className=\"flex items-center justify-between\">\n <div>\n <p className=\"text-xs font-semibold uppercase tracking-[0.3em] text-white/70\">\n {stat.label}\n </p>\n <p className=\"text-white\">{stat.helper}</p>\n </div>\n <span className=\"text-3xl font-semibold text-white\">{stat.value}</span>\n </div>\n ))}\n </motion.div>\n </div>\n </div>\n </section>\n\n <div className=\"relative -mt-16 pb-20\">\n <div className=\"container mx-auto px-4\">\n\n\n {isLoading ? (\n <div className=\"grid gap-4 sm:grid-cols-2 xl:grid-cols-3\">\n {Array.from({ length: 3 }).map((_, index) => (\n <div\n key={index}\n className=\"h-56 animate-pulse rounded-3xl border border-slate-100 bg-white\"\n />\n ))}\n </div>\n ) : error ? (\n <div className=\"rounded-3xl border border-red-100 bg-red-50 p-6 text-sm text-red-700\">\n {error.message}\n </div>\n ) : addresses.length === 0 ? (\n <div className=\"rounded-3xl border border-slate-100 bg-white p-12 shadow-sm\">\n <EmptyState\n icon={MapPin}\n title=\"No addresses yet\"\n description=\"Save a shipping or billing address to speed through checkout the next time you order.\"\n actionLabel=\"Add your first address\"\n onAction={openCreateModal}\n />\n </div>\n ) : (\n <div className=\"grid gap-4 sm:grid-cols-2 xl:grid-cols-3\">\n {addresses.map((address) => {\n const typeCopy = getAddressTypeCopy(address.addressType);\n return (\n <motion.div\n key={address.id}\n initial={{ opacity: 0, y: 24 }}\n animate={{ opacity: 1, y: 0 }}\n className=\"group relative flex h-full flex-col rounded-3xl border border-slate-100 bg-white p-6 shadow-sm transition hover:-translate-y-1 hover:shadow-xl\"\n >\n {address.isDefault && (\n <span className=\"absolute right-6 top-6 inline-flex items-center gap-2 rounded-full bg-amber-100 px-3 py-1 text-xs font-semibold text-amber-700\">\n <Crown className=\"h-4 w-4\" />\n Default\n </span>\n )}\n <div className=\"flex items-center gap-3\">\n <span className=\"rounded-full bg-primary-50 p-3 text-primary-600\">\n <User className=\"h-5 w-5\" />\n </span>\n <div>\n <p className=\"text-base font-semibold text-slate-900\">\n {address.name}\n </p>\n <p className=\"text-xs uppercase tracking-[0.3em] text-slate-400\">\n {typeCopy.label}\n </p>\n </div>\n </div>\n\n <div className=\"mt-6 flex flex-1 flex-col gap-3 text-sm text-slate-600\">\n <p>{formatAddressSnippet(address)}</p>\n <p className=\"inline-flex items-center gap-2 text-slate-500\">\n <Phone className=\"h-4 w-4 text-slate-400\" />\n {address.phone || 'Not provided'}\n </p>\n </div>\n\n <div className=\"mt-6 flex items-center justify-between gap-3\">\n <button\n type=\"button\"\n onClick={() => openEditModal(address)}\n className=\"inline-flex items-center gap-2 rounded-full border border-slate-200 px-3 py-1 text-sm font-medium text-slate-600 transition hover:border-primary-300 hover:text-primary-600\"\n >\n <Edit3 className=\"h-4 w-4\" />\n Edit\n </button>\n <div className=\"flex items-center gap-2\">\n {!address.isDefault && (\n <button\n type=\"button\"\n onClick={() => handleSetDefault(address)}\n className=\"inline-flex items-center gap-2 rounded-full border border-amber-200 px-3 py-1 text-sm font-semibold text-amber-600 transition hover:border-amber-300 hover:text-amber-700\"\n >\n <Star className=\"h-4 w-4\" />\n Make default\n </button>\n )}\n <button\n type=\"button\"\n onClick={() => handleDelete(address)}\n className=\"inline-flex items-center gap-2 rounded-full border border-red-200 px-3 py-1 text-sm font-semibold text-red-600 transition hover:border-red-300 hover:text-red-700\"\n >\n <Trash2 className=\"h-4 w-4\" />\n Delete\n </button>\n </div>\n </div>\n </motion.div>\n );\n })}\n </div>\n )}\n </div>\n </div>\n\n <Modal\n isOpen={isModalOpen}\n onClose={closeModal}\n title={editingAddress ? 'Edit address' : 'Add new address'}\n size=\"lg\"\n >\n <form onSubmit={handleSubmit(onSubmit)} className=\"space-y-6\">\n <div className=\"grid gap-4 md:grid-cols-2\">\n <Input\n label=\"Full name\"\n placeholder=\"Taylor Pharmacist\"\n {...register('fullName')}\n error={errors.fullName?.message}\n />\n <Input\n label=\"Phone number\"\n placeholder=\"+1 (555) 123-4567\"\n {...register('phone')}\n error={errors.phone?.message}\n />\n </div>\n <Input\n label=\"Address line 1\"\n placeholder=\"123 Wellness Avenue\"\n {...register('addressLine1')}\n error={errors.addressLine1?.message}\n />\n <Input\n label=\"Address line 2 (optional)\"\n placeholder=\"Suite, apartment, etc.\"\n {...register('addressLine2')}\n error={errors.addressLine2?.message}\n />\n <div className=\"grid gap-4 md:grid-cols-2\">\n <Input\n label=\"City\"\n placeholder=\"Seattle\"\n {...register('city')}\n error={errors.city?.message}\n />\n <Input\n label=\"State / Region\"\n placeholder=\"Washington\"\n {...register('state')}\n error={errors.state?.message}\n />\n </div>\n <div className=\"grid gap-4 md:grid-cols-2\">\n <Input\n label=\"Postal code\"\n placeholder=\"98101\"\n {...register('zipCode')}\n error={errors.zipCode?.message}\n />\n <Input\n label=\"Country\"\n placeholder=\"United States\"\n {...register('country')}\n error={errors.country?.message}\n />\n </div>\n\n <div className=\"grid gap-4 md:grid-cols-2\">\n <label className=\"flex flex-col gap-2 rounded-2xl border border-slate-200 p-4\">\n <span className=\"text-sm font-semibold text-slate-700\">Address type</span>\n <select\n {...register('addressType')}\n className=\"rounded-xl border border-slate-200 px-3 py-2 text-sm text-slate-700 focus:border-primary-400 focus:outline-none focus:ring-2 focus:ring-primary-500/20\"\n >\n <option value=\"Shipping\">Shipping</option>\n <option value=\"Billing\">Billing</option>\n <option value=\"Both\">Billing & Shipping</option>\n </select>\n </label>\n <label className=\"flex items-center justify-between gap-4 rounded-2xl border border-slate-200 bg-slate-50 px-4 py-3 text-sm font-medium text-slate-700\">\n <span>Set as default address</span>\n <input\n type=\"checkbox\"\n {...register('isDefault')}\n className=\"h-4 w-4 rounded border-primary-300 text-primary-600 focus:ring-primary-500\"\n />\n </label>\n </div>\n\n <div className=\"flex items-center justify-end gap-3\">\n <Button type=\"button\" variant=\"outline\" onClick={closeModal}>\n Cancel\n </Button>\n <Button type=\"submit\" isLoading={isSubmitting}>\n {editingAddress ? 'Save changes' : 'Save address'}\n </Button>\n </div>\n </form>\n </Modal>\n </div>\n );\n}\n","'use client';\n\nimport React, { useState } from 'react';\nimport { motion, AnimatePresence } from 'framer-motion';\nimport { ShoppingCart, User, Menu, X, Search, Heart } from 'lucide-react';\nimport { useAuth } from '@/providers/AuthProvider';\nimport { useCart } from '@/providers/CartProvider';\nimport { useTheme } from '@/providers/ThemeProvider';\nimport { useWishlist } from '@/providers/WishlistProvider';\nimport Link from 'next/link';\nimport Image from 'next/image';\n\nexport function Header() {\n const { config } = useTheme();\n const { user, isAuthenticated } = useAuth();\n const { cart } = useCart() || { cart: { itemCount: 0 } };\n const { getWishlistCount } = useWishlist();\n const wishlistCount = getWishlistCount?.() || 0;\n const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);\n const [isSearchOpen, setIsSearchOpen] = useState(false);\n const [searchQuery, setSearchQuery] = useState('');\n\n const navLinks = [\n { href: '/shop', label: 'Shop' },\n { href: '/categories', label: 'Categories' },\n { href: '/orders', label: 'Orders' },\n { href: '/about', label: 'About' },\n { href: '/contact', label: 'Contact' },\n ];\n\n return (\n <header className=\"sticky top-0 z-40 bg-white/80 backdrop-blur-xl border-b border-gray-200 shadow-sm\">\n <div className=\"container mx-auto px-4\">\n <div className=\"flex items-center justify-between h-20\">\n {/* Logo */}\n <Link href=\"/\" className=\"flex items-center gap-3\">\n <div className=\"relative w-12 h-12\">\n <Image\n src={config.logo}\n alt={config.storeName}\n fill\n className=\"object-contain\"\n />\n </div>\n <span className=\"text-2xl font-bold text-gray-900 hidden sm:block\">\n {config.storeName}\n </span>\n </Link>\n\n {/* Desktop Navigation */}\n <nav className=\"hidden lg:flex items-center gap-8\">\n {navLinks.map((link) => (\n <Link\n key={link.href}\n href={link.href}\n className=\"text-gray-700 hover:text-primary-600 font-medium transition-colors relative group\"\n >\n {link.label}\n <span className=\"absolute bottom-0 left-0 w-0 h-0.5 bg-primary-600 group-hover:w-full transition-all duration-300\" />\n </Link>\n ))}\n </nav>\n\n {/* Actions */}\n <div className=\"flex items-center gap-4\">\n {/* Search */}\n <div className=\"relative\">\n <button\n onClick={() => setIsSearchOpen(!isSearchOpen)}\n className=\"p-2 hover:bg-gray-100 rounded-lg transition-colors\"\n aria-label=\"Search\"\n >\n <Search className=\"w-5 h-5 text-gray-700\" />\n </button>\n\n <AnimatePresence>\n {isSearchOpen && (\n <motion.div\n initial={{ opacity: 0, width: 0 }}\n animate={{ opacity: 1, width: 'auto' }}\n exit={{ opacity: 0, width: 0 }}\n className=\"absolute right-0 top-full mt-2 bg-white rounded-lg shadow-lg overflow-hidden\"\n >\n <div className=\"flex items-center p-2 w-64\">\n <Search className=\"w-5 h-5 text-gray-400 mr-2\" />\n <input\n type=\"text\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' && searchQuery.trim()) {\n window.location.href = `/search?q=${encodeURIComponent(searchQuery.trim())}`;\n }\n }}\n placeholder=\"Search products...\"\n className=\"w-full outline-none text-gray-700\"\n autoFocus\n />\n {searchQuery && (\n <button\n onClick={() => setSearchQuery('')}\n className=\"text-gray-400 hover:text-gray-600\"\n >\n <X className=\"w-4 h-4\" />\n </button>\n )}\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n\n {/* Wishlist and Cart */}\n <div className=\"flex items-center gap-4\">\n <Link href=\"/wishlist\" className=\"relative p-2 text-gray-700 hover:text-red-500 transition-colors\">\n <Heart className=\"w-6 h-6\" />\n {wishlistCount > 0 && (\n <span className=\"absolute -top-1 -right-1 bg-red-500 text-white text-xs font-bold rounded-full w-5 h-5 flex items-center justify-center\">\n {wishlistCount}\n </span>\n )}\n </Link>\n\n <Link href=\"/cart\" className=\"relative p-2 text-gray-700 hover:text-primary-600 transition-colors\">\n <ShoppingCart className=\"w-6 h-6\" />\n {cart?.cartBody?.items?.length && cart.cartBody?.items?.length > 0 ? (\n <span className=\"absolute -top-1 -right-1 bg-red-500 text-white text-xs font-bold rounded-full w-5 h-5 flex items-center justify-center\">\n {cart.cartBody?.items?.length}\n </span>\n ) : null}\n </Link>\n\n {/* User Menu */}\n {isAuthenticated ? (\n <Link\n href=\"/account\"\n className=\"p-2 hover:bg-gray-100 rounded-lg transition-colors\"\n >\n <User className=\"w-6 h-6 text-gray-700\" />\n </Link>\n ) : (\n <Link\n href=\"/login\"\n className=\"hidden sm:block px-4 py-2 bg-primary-600 text-white rounded-lg hover:bg-primary-700 transition-colors font-medium\"\n >\n Sign In\n </Link>\n )}\n </div>\n\n {/* Mobile Menu Button */}\n <button\n className=\"lg:hidden p-2 hover:bg-gray-100 rounded-lg transition-colors\"\n onClick={() => setIsMobileMenuOpen(!isMobileMenuOpen)}\n >\n {isMobileMenuOpen ? (\n <X className=\"w-6 h-6\" />\n ) : (\n <Menu className=\"w-6 h-6\" />\n )}\n </button>\n </div>\n\n {/* Mobile Menu */}\n <AnimatePresence>\n {isMobileMenuOpen && (\n <motion.div\n initial={{ opacity: 0, height: 0 }}\n animate={{ opacity: 1, height: 'auto' }}\n exit={{ opacity: 0, height: 0 }}\n className=\"lg:hidden overflow-hidden border-t border-gray-200\"\n >\n <nav className=\"flex flex-col gap-1 py-2\">\n {navLinks.map((link) => (\n <Link\n key={link.href}\n href={link.href}\n className=\"px-4 py-3 text-gray-700 hover:bg-gray-50 rounded-lg font-medium\"\n onClick={() => setIsMobileMenuOpen(false)}\n >\n {link.label}\n </Link>\n ))}\n {!isAuthenticated && (\n <Link\n href=\"/login\"\n onClick={() => setIsMobileMenuOpen(false)}\n className=\"px-4 py-3 text-primary-600 hover:bg-gray-50 rounded-lg font-medium\"\n >\n Sign In\n </Link>\n )}\n </nav>\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n </div>\n </header>\n );\n}\n","'use client';\n\nimport React from 'react';\nimport { Mail, Phone, MapPin, Facebook, Twitter, Instagram } from 'lucide-react';\nimport { useTheme } from '@/providers/ThemeProvider';\nimport Link from 'next/link';\n\nexport function Footer() {\n const { config } = useTheme();\n\n const footerLinks = {\n shop: [\n { label: 'All Products', href: '/shop' },\n { label: 'Categories', href: '/categories' },\n { label: 'Featured', href: '/featured' },\n { label: 'New Arrivals', href: '/new' },\n ],\n account: [\n { label: 'My Account', href: '/account' },\n { label: 'Orders', href: '/orders' },\n { label: 'Wishlist', href: '/wishlist' },\n { label: 'Cart', href: '/cart' },\n ],\n support: [\n { label: 'Contact Us', href: '/contact' },\n { label: 'FAQs', href: '/faqs' },\n { label: 'Shipping Info', href: '/shipping' },\n { label: 'Returns', href: '/returns' },\n ],\n legal: [\n { label: 'Privacy Policy', href: '/privacy' },\n { label: 'Terms of Service', href: '/terms' },\n { label: 'Cookie Policy', href: '/cookies' },\n ],\n };\n\n return (\n <footer className=\"bg-gray-900 text-gray-300\">\n <div className=\"container mx-auto px-4 py-16\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-5 gap-12\">\n {/* Brand Column */}\n <div className=\"lg:col-span-2\">\n <h3 className=\"text-2xl font-bold text-white mb-4\">{config.storeName}</h3>\n <p className=\"text-gray-400 mb-6 max-w-md\">\n Your trusted online store for quality products. We deliver excellence with every order.\n </p>\n <div className=\"space-y-3\">\n <div className=\"flex items-center gap-3\">\n <Mail className=\"w-5 h-5 text-primary-500\" />\n <span>support@{config.storeName.toLowerCase().replace(/\\s+/g, '')}.com</span>\n </div>\n <div className=\"flex items-center gap-3\">\n <Phone className=\"w-5 h-5 text-primary-500\" />\n <span>+1 (555) 123-4567</span>\n </div>\n <div className=\"flex items-center gap-3\">\n <MapPin className=\"w-5 h-5 text-primary-500\" />\n <span>123 Store Street, City, Country</span>\n </div>\n </div>\n </div>\n\n {/* Shop Links */}\n <div>\n <h4 className=\"text-lg font-semibold text-white mb-4\">Shop</h4>\n <ul className=\"space-y-2\">\n {footerLinks.shop.map((link) => (\n <li key={link.href}>\n <Link\n href={link.href}\n className=\"hover:text-primary-500 transition-colors\"\n >\n {link.label}\n </Link>\n </li>\n ))}\n </ul>\n </div>\n\n {/* Account Links */}\n <div>\n <h4 className=\"text-lg font-semibold text-white mb-4\">Account</h4>\n <ul className=\"space-y-2\">\n {footerLinks.account.map((link) => (\n <li key={link.href}>\n <Link\n href={link.href}\n className=\"hover:text-primary-500 transition-colors\"\n >\n {link.label}\n </Link>\n </li>\n ))}\n </ul>\n </div>\n\n {/* Support Links */}\n <div>\n <h4 className=\"text-lg font-semibold text-white mb-4\">Support</h4>\n <ul className=\"space-y-2\">\n {footerLinks.support.map((link) => (\n <li key={link.href}>\n <Link\n href={link.href}\n className=\"hover:text-primary-500 transition-colors\"\n >\n {link.label}\n </Link>\n </li>\n ))}\n </ul>\n </div>\n </div>\n\n {/* Bottom Bar */}\n <div className=\"border-t border-gray-800 mt-12 pt-8 flex flex-col md:flex-row justify-between items-center gap-4\">\n <p className=\"text-gray-400 text-sm\">\n © {new Date().getFullYear()} {config.storeName}. All rights reserved.\n </p>\n \n {/* Social Links */}\n <div className=\"flex items-center gap-4\">\n <a\n href=\"#\"\n className=\"w-10 h-10 bg-gray-800 hover:bg-primary-600 rounded-full flex items-center justify-center transition-colors\"\n >\n <Facebook className=\"w-5 h-5\" />\n </a>\n <a\n href=\"#\"\n className=\"w-10 h-10 bg-gray-800 hover:bg-primary-600 rounded-full flex items-center justify-center transition-colors\"\n >\n <Twitter className=\"w-5 h-5\" />\n </a>\n <a\n href=\"#\"\n className=\"w-10 h-10 bg-gray-800 hover:bg-primary-600 rounded-full flex items-center justify-center transition-colors\"\n >\n <Instagram className=\"w-5 h-5\" />\n </a>\n </div>\n </div>\n </div>\n </footer>\n );\n}\n\n"]}
|