hey-pharmacist-ecommerce 1.0.3 → 1.0.5

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.
@@ -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":["React","axios","globalAxios","authApi","productsApi","cartApi","ordersApi","TOKEN_KEY","getAuthToken","createContext","useContext","useEffect","useState","useCallback","Image","motion","ShoppingCart","Heart","CartItem","Minus","Plus","useRouter","toast","z","useForm","zodResolver","Lock","Link","EyeOff","Eye","Package","CreditCard","Truck","Search","User","X","Mail","Phone","AnimatePresence"],"mappings":"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","file":"index.mjs","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/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":["React","axios","globalAxios","authApi","productsApi","cartApi","ordersApi","TOKEN_KEY","getAuthToken","createContext","useContext","useEffect","useState","useCallback","Image","motion","ShoppingCart","Heart","CartItem","Minus","Plus","useRouter","toast","z","useForm","zodResolver","Lock","Link","EyeOff","Eye","Package","CreditCard","Truck","Search","User","X","Mail","Phone","AnimatePresence"],"mappings":"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","file":"index.mjs","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 // Extract category name from the parentCategories object\n const categoryName = typeof backendProduct.parentCategories?.[0] === 'object'\n ? (backendProduct.parentCategories[0] as any)?.name || ''\n : backendProduct.parentCategories?.[0] || '';\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: categoryName,\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"]}