erp-pos-ecommerce-shared 0.2.21 → 0.2.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/hooks.d.ts +10 -3
- package/dist/hooks.js +60 -1
- package/dist/hooks.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.js +56 -1
- package/dist/index.js.map +1 -1
- package/dist/queries.d.ts +24 -4
- package/dist/queries.js +46 -1
- package/dist/queries.js.map +1 -1
- package/dist/services.d.ts +1 -1
- package/dist/services.js +11 -1
- package/dist/services.js.map +1 -1
- package/dist/{shift.queries-CaMY7FWd.d.ts → shift.queries-MPSeGMrR.d.ts} +1 -1
- package/dist/{warehouse.service-CV2UDqAD.d.ts → warehouse.service-D5fHR5E3.d.ts} +7 -1
- package/package.json +1 -1
package/dist/services.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AxiosInstance } from 'axios';
|
|
2
2
|
import { I as IAttribute, d as IAttributeValue, c as IAttributeResponse, a as IAttributeFilter, g as ICategory, i as ICategoryResponse, l as IProduct, m as IProductDetails, n as IProductDetailsResponse, k as IFilterType, o as IProductResponse } from './filters.interface-BwMi9FRP.js';
|
|
3
|
-
export { C as ChangeProductRequest, a as ChangeProductResponse, G as GetReturnsByOrderIdResponse, I as IExchange, b as IExchangeResponse, c as IUpdatePermission, L as LocationResponse,
|
|
3
|
+
export { C as ChangeProductRequest, a as ChangeProductResponse, G as GetReturnsByOrderIdResponse, I as IExchange, b as IExchangeResponse, c as IUpdatePermission, d as IUserSettings, L as LocationResponse, e as LoginResponse, M as MaterialResponse, P as PaymentType, f as PrintQRResponse, Q as QRBaseUrlResponse, R as Response, S as StateResponse, U as UpdateBatchData, W as WarehouseResponse, g as changeOrderProduct, h as closeShift, i as createBatch, j as createBatchAndUpdateOtherBatches, k as createExchangeRate, l as createLocation, m as createMaterial, n as createReturn, o as createWareHouse, p as deleteLocation, q as deleteMaterial, r as deleteWarehouse, s as getAllLocations, t as getAllMaterials, u as getAllPermissions, v as getAllStates, w as getBatchById, x as getBatches, y as getBatchesForSelect, z as getExchangeRate, A as getExchangeRates, B as getLocationById, D as getLocations, E as getLocationsForSelect, F as getMatchedBatches, H as getMaterialById, J as getMaterials, K as getMaterialsForSelect, N as getOrderById, O as getOrders, T as getOrdersStatusForSelect, V as getPaymentTypes, X as getPermissionRoleByRoleID, Y as getQRBaseUrl, Z as getReturnsByOrderId, _ as getUserSettings, $ as getWarehouseById, a0 as getWarehouses, a1 as getWarehousesForSelect, a2 as login, a3 as makeNewCashMovement, a4 as printQR, a5 as restoreLocation, a6 as restoreWarehouse, a7 as setNewShift, a8 as undeleteMaterial, a9 as updateBatch, aa as updateLocation, ab as updateMaterial, ac as updatePermission, ad as updateUserSettings, ae as updateWarehouse } from './warehouse.service-D5fHR5E3.js';
|
|
4
4
|
import { e as IBankTerminalForm, d as IBankTerminal, a as BankTerminalResponse, B as BankTerminalQuery, g as IBankTerminalResponse, j as IClientRequest, k as IClientResponse, l as IClientResponseById, h as IClient, m as IGender, r as IModule, x as IPaymentMethod, y as IPaymentMethodAmountExpected, w as IPayment, ab as PricePerGramResponse, az as UpdatePriceRequest, E as IPricePerGramHistory, ag as SchedulePriceRequest, C as CalculatePriceRequest, a9 as PriceCalculationResponse, F as IPriceType, G as IPriceTypeResponse, Y as ITag, H as IPromotion, J as IPromotionResponse, K as IPromotionType, N as IProviderRequest, O as IProviderResponse, L as IProvider, M as IProviderForSelect, Q as IReportInventory, c as ComparisonBy, P as IReportComparisonByTimeFrame, R as IReportX, S as IReportZ, V as IStockByWarehouseReport, U as IRole, W as IStockMovement, X as IStockMovementResponse, Z as ITax, a0 as IUserForm, A as AgentResponse, $ as IUser, aA as UserResponse } from './warehouse.interface-S5seQY-_.js';
|
|
5
5
|
import { I as IRequest } from './util.interface-AOzOjHR0.js';
|
|
6
6
|
|
package/dist/services.js
CHANGED
|
@@ -1273,6 +1273,16 @@ var restoreUser = async ({ userId }) => {
|
|
|
1273
1273
|
await api.patch(`user/${userId}`);
|
|
1274
1274
|
};
|
|
1275
1275
|
|
|
1276
|
+
// src/services/userSettings.service.ts
|
|
1277
|
+
var getUserSettings = async () => {
|
|
1278
|
+
const { data } = await api.get("user-settings");
|
|
1279
|
+
return data.data;
|
|
1280
|
+
};
|
|
1281
|
+
var updateUserSettings = async (settings) => {
|
|
1282
|
+
const { data } = await api.put("user-settings", settings);
|
|
1283
|
+
return data.data;
|
|
1284
|
+
};
|
|
1285
|
+
|
|
1276
1286
|
// src/services/warehouse.service.ts
|
|
1277
1287
|
var getWarehousesForSelect = async () => {
|
|
1278
1288
|
const { data } = await api.get("warehouse/warehousesForSelect");
|
|
@@ -1324,6 +1334,6 @@ var restoreWarehouse = async ({
|
|
|
1324
1334
|
await api.patch(`/warehouse/${warehouseId}`);
|
|
1325
1335
|
};
|
|
1326
1336
|
|
|
1327
|
-
export { api, changeOrderProduct, checkPendingReportZ, closeShift, configureApi, createAttribute, createAttributeValue, createAttributesForCategory, createAttributesValuesBatch, createBankTerminal, createBatch, createBatchAndUpdateOtherBatches, createCategory, createClient, createExchangeRate, createLocation, createMaterial, createMovement, createPriceType, createProduct, createProductVariant, createProductVariants, createPromotion, createProvider, createReturn, createRole, createUser, createWareHouse, deleteAttribute, deleteBankTerminal, deleteCategory, deleteClient, deleteImageFromProduct, deleteLocation, deleteMaterial, deletePriceType, deleteProduct, deleteProductVariant, deleteProvider, deleteRole, deleteUser, deleteWarehouse, getAllAgents, getAllBankTerminals, getAllCategories, getAllClients, getAllGenders, getAllLocations, getAllMaterials, getAllModules, getAllPermissions, getAllPriceTypes, getAllProviders, getAllStates, getAllTags, getAttributeById, getAttributeValues, getAttributes, getAttributesByCategoryID, getAttributesByProductID, getAttributesForSelect, getAttributesTable, getBankTerminalById, getBankTerminals, getBankTerminalsForSelect, getBatchById, getBatches, getBatchesForSelect, getCategories, getCategoriesForSelect, getCategoryById, getClientById, getClientsForSelect, getExchangeRate, getExchangeRates, getLocationById, getLocations, getLocationsForSelect, getMatchedBatches, getMaterialById, getMaterials, getMaterialsForSelect, getMovements, getOrderById, getOrders, getOrdersStatusForSelect, getPaymentMethods, getPaymentMethodsWithAmountExpected, getPaymentTypes, getPermissionRoleByRoleID, getPriceTypeById, getPriceTypesForSelect, getProductById, getProductVariantById, getProductVariants, getProductVariantsForSelect, getProducts, getProductsByCategory, getProductsForSelect, getProductsTable, getPromotionById, getPromotions, getPromotionsTypeForSelect, getProviderById, getProvidersForSelect, getQRBaseUrl, getReportByInventory, getReportComparisonByTimeFrame, getReportX, getReportZ, getReturnsByOrderId, getRoleByID, getRoles, getSellersOfDayForSelect, getSellersWithShift, getStockByWarehouseReport, getTaxesForSelect, getUserById, getUsers, getWarehouseById, getWarehouses, getWarehousesForSelect, healthService, isAValidDiscountCode, login, makeNewCashMovement, pricePerGramService, printProductTag, printQR, printReportX, printReportZ, restoreBankTerminal, restoreCategory, restoreClient, restoreLocation, restoreProduct, restoreProductVariant, restoreProvider, restoreUser, restoreWarehouse, sendCreditPaymentData, sendPaymentData, setNewShift, undeleteAttribute, undeleteMaterial, undeletePriceType, updateAttribute, updateAttributesForCategory, updateBankTerminal, updateBatch, updateCategory, updateClient, updateLocation, updateMaterial, updatePermission, updatePriceType, updateProduct, updateProductVariant, updatePromotion, updateProvider, updateRole, updateUser, updateWarehouse };
|
|
1337
|
+
export { api, changeOrderProduct, checkPendingReportZ, closeShift, configureApi, createAttribute, createAttributeValue, createAttributesForCategory, createAttributesValuesBatch, createBankTerminal, createBatch, createBatchAndUpdateOtherBatches, createCategory, createClient, createExchangeRate, createLocation, createMaterial, createMovement, createPriceType, createProduct, createProductVariant, createProductVariants, createPromotion, createProvider, createReturn, createRole, createUser, createWareHouse, deleteAttribute, deleteBankTerminal, deleteCategory, deleteClient, deleteImageFromProduct, deleteLocation, deleteMaterial, deletePriceType, deleteProduct, deleteProductVariant, deleteProvider, deleteRole, deleteUser, deleteWarehouse, getAllAgents, getAllBankTerminals, getAllCategories, getAllClients, getAllGenders, getAllLocations, getAllMaterials, getAllModules, getAllPermissions, getAllPriceTypes, getAllProviders, getAllStates, getAllTags, getAttributeById, getAttributeValues, getAttributes, getAttributesByCategoryID, getAttributesByProductID, getAttributesForSelect, getAttributesTable, getBankTerminalById, getBankTerminals, getBankTerminalsForSelect, getBatchById, getBatches, getBatchesForSelect, getCategories, getCategoriesForSelect, getCategoryById, getClientById, getClientsForSelect, getExchangeRate, getExchangeRates, getLocationById, getLocations, getLocationsForSelect, getMatchedBatches, getMaterialById, getMaterials, getMaterialsForSelect, getMovements, getOrderById, getOrders, getOrdersStatusForSelect, getPaymentMethods, getPaymentMethodsWithAmountExpected, getPaymentTypes, getPermissionRoleByRoleID, getPriceTypeById, getPriceTypesForSelect, getProductById, getProductVariantById, getProductVariants, getProductVariantsForSelect, getProducts, getProductsByCategory, getProductsForSelect, getProductsTable, getPromotionById, getPromotions, getPromotionsTypeForSelect, getProviderById, getProvidersForSelect, getQRBaseUrl, getReportByInventory, getReportComparisonByTimeFrame, getReportX, getReportZ, getReturnsByOrderId, getRoleByID, getRoles, getSellersOfDayForSelect, getSellersWithShift, getStockByWarehouseReport, getTaxesForSelect, getUserById, getUserSettings, getUsers, getWarehouseById, getWarehouses, getWarehousesForSelect, healthService, isAValidDiscountCode, login, makeNewCashMovement, pricePerGramService, printProductTag, printQR, printReportX, printReportZ, restoreBankTerminal, restoreCategory, restoreClient, restoreLocation, restoreProduct, restoreProductVariant, restoreProvider, restoreUser, restoreWarehouse, sendCreditPaymentData, sendPaymentData, setNewShift, undeleteAttribute, undeleteMaterial, undeletePriceType, updateAttribute, updateAttributesForCategory, updateBankTerminal, updateBatch, updateCategory, updateClient, updateLocation, updateMaterial, updatePermission, updatePriceType, updateProduct, updateProductVariant, updatePromotion, updateProvider, updateRole, updateUser, updateUserSettings, updateWarehouse };
|
|
1328
1338
|
//# sourceMappingURL=services.js.map
|
|
1329
1339
|
//# sourceMappingURL=services.js.map
|
package/dist/services.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/services/config.ts","../src/services/attributes.service.ts","../src/services/auth.service.ts","../src/services/bankTerminal.service.ts","../src/services/batch.service.ts","../src/services/category.service.ts","../src/services/client.service.ts","../src/services/exchange.service.ts","../src/services/gender.service.ts","../src/services/health.service.ts","../src/services/location.service.ts","../src/services/material.service.ts","../src/services/module.service.ts","../src/services/order.service.ts","../src/services/payment.service.ts","../src/services/permission.service.ts","../src/services/pricePerGram.service.ts","../src/services/priceType.service.ts","../src/services/product.service.ts","../src/services/productTags.service.ts","../src/services/promotion.service.ts","../src/services/provider.service.ts","../src/services/qr.service.ts","../src/services/report.service.ts","../src/services/return.service.ts","../src/services/role.service.ts","../src/services/stockmovement.service.ts","../src/services/shift.service.ts","../src/services/state.service.ts","../src/services/tax.service.ts","../src/services/user.service.ts","../src/services/warehouse.service.ts"],"names":[],"mappings":"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","file":"services.js","sourcesContent":["import axios, { type AxiosInstance } from 'axios'\n\n/**\n * Configuration for the shared API client.\n * Each consuming app must call configureApi() with its own baseURL and auth.\n */\nexport interface IApiConfig {\n /** Backend base URL (e.g. \"http://localhost:4000/\" or \"https://api.myapp.com/\") */\n baseURL: string\n /** Returns the current auth token for request headers */\n getToken: () => string | undefined\n /** Called when a new token is received after refresh (e.g. update your store) */\n onTokenRefresh?: (newToken: string) => void\n /** Called when refresh fails (e.g. clear session, redirect to login) */\n onUnauthorized?: () => void\n}\n\n// Default instance; replaced when configureApi() is called by the consuming app\nlet api: AxiosInstance = axios.create({\n baseURL: '',\n headers: { 'Content-Type': 'application/json' }\n})\n\n/**\n * Configure the shared API client. Must be called by the consuming app before using any service.\n * @example\n * // In your app (e.g. main.tsx or before first API call):\n * import { configureApi } from 'erp-pos-ecommerce-shared'\n * import { useAuthStore } from './store/authStore'\n *\n * configureApi({\n * baseURL: import.meta.env.VITE_API_URL ?? 'http://localhost:4000/',\n * getToken: () => useAuthStore.getState().token,\n * onTokenRefresh: (newToken) => useAuthStore.setState({ token: newToken }),\n * onUnauthorized: () => { useAuthStore.setState({ token: undefined }); redirectToLogin() }\n * })\n */\nexport function configureApi(config: IApiConfig): AxiosInstance {\n const { baseURL, getToken, onTokenRefresh, onUnauthorized } = config\n\n const newApi = axios.create({\n baseURL,\n headers: {\n 'Content-Type': 'application/json',\n ...(getToken() && { Authorization: `Bearer ${getToken()}` })\n }\n })\n\n newApi.interceptors.request.use((reqConfig) => {\n const token = getToken()\n if (token) {\n reqConfig.headers.Authorization = `Bearer ${token}`\n }\n return reqConfig\n })\n\n const refreshAxios = axios.create({ baseURL })\n\n newApi.interceptors.response.use(\n (response) => response,\n async (error) => {\n const originalRequest = error.config\n\n if (error.response?.status === 401 && !originalRequest._retry && onTokenRefresh && onUnauthorized) {\n originalRequest._retry = true\n\n try {\n const response = await refreshAxios.get('/auth/refresh', {\n headers: getToken() ? { Authorization: `Bearer ${getToken()}` } : {}\n })\n const newToken = response.data?.token\n if (newToken) {\n onTokenRefresh(newToken)\n originalRequest.headers.Authorization = `Bearer ${newToken}`\n return newApi(originalRequest)\n }\n } catch {\n onUnauthorized()\n return Promise.reject(error)\n }\n }\n\n return Promise.reject(error)\n }\n )\n\n api = newApi\n return api\n}\n\n/**\n * Shared axios instance used by all services.\n * Valid only after the consuming app has called configureApi().\n */\nexport { api }\n","import type {\n IAttribute,\n IAttributeFilter,\n IAttributeResponse,\n IAttributeValue\n} from '../interfaces/attribute.interface'\nimport { api } from './config'\n\nexport const getAttributes = async ({\n skip,\n limit,\n query\n}: {\n skip: number\n limit: number\n query: string\n}): Promise<IAttributeResponse> => {\n const { data } = await api.get('/attribute/category', { params: { skip, limit, query } })\n return data\n}\n\nexport const getAttributesForSelect = async (): Promise<IAttribute[]> => {\n const { data } = await api.get('/attribute/select')\n return data\n}\n\nexport const getAttributesTable = async ({\n skip,\n limit,\n filters\n}: {\n skip?: number\n limit?: number\n filters?: IAttributeFilter\n}): Promise<IAttributeResponse> => {\n const queryParams = new URLSearchParams({\n skip: skip?.toString() ?? \"\",\n limit: limit?.toString() ?? \"\",\n ...(filters?.query && { query: filters.query }),\n ...(filters?.categoryId && { categoryId: filters.categoryId.toString() }),\n ...(filters?.productId && { productId: filters.productId.toString() }),\n ...(filters?.materialId && { materialId: filters.materialId.toString() }),\n })\n const { data } = await api.get(`/attribute?${queryParams}`)\n return data\n}\n\nexport const getAttributeById = async ({\n attributeId\n}: {\n attributeId: string\n}): Promise<IAttribute> => {\n const { data } = await api.get(`/attribute/${attributeId}`)\n return data\n}\n\nexport const getAttributesByProductID = async ({\n productId\n}: {\n productId: string\n}): Promise<IAttribute[]> => {\n const { data } = await api.get(`/attribute/${productId}/product`)\n return data\n}\n\nexport const getAttributesByCategoryID = async ({\n categoryID\n}: {\n categoryID: string\n}): Promise<IAttribute[]> => {\n const { data } = await api.get(`/attribute/${categoryID}/category/`)\n return data\n}\n\nexport const getAttributeValues = async ({\n attributeId\n}: {\n attributeId: string\n}): Promise<IAttributeValue[]> => {\n const { data } = await api.get(`/attribute/${attributeId}/values`)\n return data\n}\n\nexport const createAttribute = async ({\n attribute\n}: {\n attribute: {\n name: string\n values: string[]\n productId: number\n }\n}): Promise<IAttribute> => {\n const { data } = await api.post('/attribute', {\n name: attribute.name,\n values: attribute.values,\n productID: attribute.productId,\n })\n return data\n}\n\nexport const createAttributesValuesBatch = async ({\n productId,\n attributeValues,\n}: {\n productId: number;\n attributeValues: {\n attribute: string;\n values: string[];\n }[];\n}): Promise<IAttributeValue[]> => {\n const { data } = await api.post(`/attribute/batch`, {\n productId,\n attributeValues,\n });\n return data;\n};\n\nexport const createAttributesForCategory = async ({\n attributes\n}: {\n attributes: {\n categoryId: string\n attributes: {\n name: string\n values: string[]\n pricePerGram?: number | null\n }[]\n }\n}): Promise<IAttribute> => {\n const { data } = await api.post(`/attribute/category/`, {\n categoryID: attributes.categoryId,\n attributes: attributes.attributes\n })\n return data\n}\n\nexport const updateAttribute = async ({\n attributeId,\n attribute\n}: {\n attributeId: string\n attribute: IAttribute\n}): Promise<IAttribute> => {\n const { data } = await api.put(`/attribute/${attributeId}`, attribute)\n return data\n}\n\nexport const updateAttributesForCategory = async ({\n categoryId,\n attributes\n}: {\n categoryId: string\n attributes: {\n attributes: string[]\n }\n}): Promise<IAttribute> => {\n const { data } = await api.put(`/attribute/category/${categoryId}`, attributes)\n return data\n}\n\nexport const deleteAttribute = async ({\n attributeId\n}: {\n attributeId: string\n}): Promise<IAttribute> => {\n const { data } = await api.delete(`/attribute/${attributeId}`)\n return data\n}\n\nexport const undeleteAttribute = async ({\n attributeId\n}: {\n attributeId: string\n}): Promise<IAttribute> => {\n const { data } = await api.patch(`/attribute/${attributeId}`)\n return data\n}\n\n//create attribute value\nexport const createAttributeValue = async ({\n attributeId,\n value\n}: {\n attributeId: number\n value: string\n}): Promise<IAttributeValue> => {\n const { data } = await api.post(`/attribute/${attributeId}/values`, {\n attributeID: attributeId,\n value\n })\n return data\n}\n","import type { IUser } from '../interfaces/user.interface'\nimport { api } from './config'\n\nexport interface LoginResponse {\n user: IUser\n token: string\n}\n\nexport const login = async ({\n email,\n password\n}: {\n email: string\n password: string\n}): Promise<LoginResponse> => {\n const { data } = await api.post<LoginResponse>('auth/login', { email, password })\n return data\n}\n","import type {\n IBankTerminal,\n IBankTerminalResponse,\n IBankTerminalForm,\n BankTerminalQuery,\n BankTerminalResponse\n} from '../interfaces/bankTerminal.interface'\nimport { api } from './config'\n\nexport const getBankTerminalsForSelect = async (): Promise<BankTerminalResponse[]> => {\n const { data } = await api.get<BankTerminalResponse[]>('bank-terminals/bankTerminalsSelect')\n return data\n}\n\nexport const getAllBankTerminals = async (): Promise<BankTerminalResponse[]> => {\n const { data } = await api.get<BankTerminalResponse[]>('bank-terminals/')\n return data\n}\n\nexport const getBankTerminals = async ({\n skip = 0,\n limit = 10,\n query = ''\n}: BankTerminalQuery): Promise<IBankTerminalResponse> => {\n const { data } = await api.get<IBankTerminalResponse>(\n `bank-terminals/bankTerminalsTable/?skip=${skip}&limit=${limit}&query=${query}`\n )\n\n return data\n}\n\nexport const getBankTerminalById = async ({\n terminalId\n}: {\n terminalId: number\n}): Promise<IBankTerminal> => {\n const { data } = await api.get(`/bank-terminals/${terminalId}`)\n return data.data\n}\n\nexport const updateBankTerminal = async ({\n terminalId,\n terminal\n}: {\n terminalId: number\n terminal: IBankTerminalForm\n}): Promise<IBankTerminal> => {\n const { data } = await api.put<IBankTerminal>(`/bank-terminals/${terminalId}`, terminal)\n return data\n}\n\nexport const createBankTerminal = async ({\n terminal\n}: {\n terminal: IBankTerminalForm\n}): Promise<IBankTerminal> => {\n const { data } = await api.post<IBankTerminal>('bank-terminals/', terminal)\n return data\n}\n\nexport const deleteBankTerminal = async ({ terminalId }: { terminalId: number }): Promise<void> => {\n await api.delete(`/bank-terminals/${terminalId}`)\n}\n\nexport const restoreBankTerminal = async ({\n terminalId\n}: {\n terminalId: number\n}): Promise<void> => {\n await api.patch(`/bank-terminals/${terminalId}`)\n}\n","import type { IBatch, IBatchResponse } from '../interfaces/batch.interface'\nimport { api } from './config'\n\ninterface BatchQuery {\n skip?: number\n limit?: number\n query?: string\n productId?: number\n}\n\nexport const getBatchesForSelect = async (): Promise<IBatch[]> => {\n const { data } = await api.get<IBatch[]>('batch/batches-for-select')\n return data\n}\n\nexport const getBatches = async ({\n skip = 0,\n limit = 10,\n query = '',\n productId = 0\n}: BatchQuery): Promise<IBatchResponse> => {\n const { data } = await api.get<IBatchResponse>(\n `batch?skip=${skip}&limit=${limit}&query=${query}&productID=${productId}`\n )\n return data\n}\n\nexport const createBatch = async (batch: FormData): Promise<IBatch> => {\n const { data } = await api.post<IBatch>('batch/', batch)\n return data\n}\n\nexport const createBatchAndUpdateOtherBatches = async (batch: FormData): Promise<IBatch> => {\n const { data } = await api.post<IBatch>('batch/create-batch-and-update-other-batches', batch)\n return data\n}\n\nexport const getBatchById = async (batchId: number): Promise<IBatch> => {\n const { data } = await api.get<IBatch>(`batch/${batchId}`)\n return data\n}\n\nexport const getMatchedBatches = async ({\n productDetailId\n}: {\n productDetailId: number\n}): Promise<IBatch[]> => {\n const { data } = await api.get<IBatch[]>(\n `batch/matched-batches?productDetailID=${productDetailId}`\n )\n return data\n}\n\nexport interface UpdateBatchData {\n unitCost?: number\n unitSellingPrice?: number\n profitPercentage?: number\n}\n\nexport const updateBatch = async ({\n batchId,\n batchData\n}: {\n batchId: number\n batchData: UpdateBatchData\n}): Promise<IBatch> => {\n const { data } = await api.put<IBatch>(`batch/${batchId}`, batchData)\n return data\n}\n","import type {\n ICategory,\n ICategoryResponse,\n} from '../interfaces/category.interface'\nimport { api } from './config'\n\ninterface CategoryQuery {\n skip?: number\n limit?: number\n query?: string\n}\n\nexport const getCategoriesForSelect = async (): Promise<ICategory[]> => {\n const { data } = await api.get<ICategory[]>('category/categoriesSelect')\n return data\n}\n\nexport const getAllCategories = async (): Promise<ICategory[]> => {\n const { data } = await api.get<ICategory[]>('category/')\n return data\n}\n\nexport const getCategories = async ({\n skip = 0,\n limit = 10,\n query = ''\n}: CategoryQuery): Promise<ICategoryResponse> => {\n const { data } = await api.get<ICategoryResponse>(\n `category/categoriesTable?skip=${skip}&limit=${limit}&query=${query}`\n )\n\n return data\n}\n\nexport const getCategoryById = async ({\n categoryId\n}: {\n categoryId: number\n}): Promise<ICategory> => {\n const { data } = await api.get(`/category/${categoryId}`)\n return data.data\n}\n\nexport const updateCategory = async ({\n categoryId,\n category\n}: {\n categoryId: number\n category: ICategory\n}): Promise<ICategory> => {\n const { data } = await api.put<ICategory>(`/category/${categoryId}`, category)\n return data\n}\n\nexport const createCategory = async ({ category }: { category: ICategory }): Promise<ICategory> => {\n const { data } = await api.post<ICategory>('category/', category)\n return data\n}\n\nexport const deleteCategory = async ({ categoryId }: { categoryId: number }): Promise<void> => {\n await api.delete(`/category/${categoryId}`)\n}\n\nexport const restoreCategory = async ({ categoryId }: { categoryId: number }): Promise<void> => {\n await api.patch(`/category/${categoryId}`)\n}\n","import type {\n IClient,\n IClientRequest,\n IClientResponse,\n IClientResponseById\n} from '../interfaces/client.interface'\nimport { api } from './config'\n\nexport const getAllClients = async ({\n skip = 0,\n limit = 10,\n query = ''\n}: {\n skip: number\n limit: number\n query?: string\n}): Promise<IClientResponse> => {\n const { data } = await api.get<IClientResponse>(\n `client/?skip=${skip}&limit=${limit}&query=${query}`\n )\n return data\n}\n\nexport const getClientsForSelect = async (): Promise<IClient[]> => {\n const { data } = await api.get<IClient[]>('client/select')\n return data\n}\n\nexport const getClientById = async ({\n clientId\n}: {\n clientId: number\n}): Promise<IClientResponseById> => {\n const { data } = await api.get<IClientResponseById>(`client/${clientId}`)\n return data\n}\n\nexport const createClient = async (client: IClientRequest): Promise<IClientResponse> => {\n const { data } = await api.post<IClientResponse>('client/', client)\n return data\n}\n\nexport const updateClient = async ({\n client,\n id\n}: {\n id: string\n client: IClient\n}): Promise<IClientResponse> => {\n const { data } = await api.put<IClientResponse>(`client/${id}`, client)\n return data\n}\n\nexport const deleteClient = async ({\n clientId\n}: {\n clientId: number\n}): Promise<IClientResponse> => {\n const { data } = await api.delete<IClientResponse>(`client/${clientId}`)\n return data\n}\n\nexport const restoreClient = async ({\n clientId\n}: {\n clientId: number\n}): Promise<IClientResponse> => {\n const { data } = await api.patch<IClientResponse>(`client/${clientId}`)\n return data\n}\n","import { api } from './config'\n\ninterface ExchangeQuery {\n skip?: number\n limit?: number\n query?: string\n}\n\nexport interface IExchange {\n exchangeRateID: number\n valorEnPesos: number\n fromDate: string\n toDate: string\n syncStatusID: number\n masterCodeID: null\n savedBy: null\n savedDate: null\n deletedBy: null\n deletedDate: null\n}\n\nexport interface PaymentType {\n value: number\n label: string\n}\n\nexport interface IExchangeResponse {\n total: number\n data: IExchange[]\n skip: number\n limit: number\n}\n\nexport const getPaymentTypes = async (): Promise<PaymentType[]> => {\n const { data } = await api.get<PaymentType[]>('exchange/getPaymentTypes')\n return data\n}\n\nexport const getExchangeRates = async ({\n skip = 0,\n limit = 10,\n query = ''\n}: ExchangeQuery): Promise<IExchangeResponse> => {\n const { data } = await api.get<IExchangeResponse>(\n `exchange/exchangesTable?skip=${skip}&limit=${limit}&query=${query}`\n )\n\n return data\n}\n\n//obtener el exchange rate mediante fehca y hora\nexport const getExchangeRate = async (): Promise<IExchange> => {\n const { data } = await api.get<IExchange>('exchange/getExchangeRate')\n return data\n}\n\nexport const createExchangeRate = async ({\n exchangeRate\n}: {\n exchangeRate: IExchange\n}): Promise<IExchange> => {\n const { data } = await api.post<IExchange>('exchange/', exchangeRate)\n return data\n}\n","import type { IGender } from '../interfaces/gender.interface'\nimport { api } from './config'\n\ninterface GenderResponse {\n data: IGender[]\n}\n\nexport const getAllGenders = async (): Promise<GenderResponse> => {\n const { data } = await api.get('gender/')\n return data\n}\n","import { api } from './config'\n\ninterface HealthCheckResponse {\n status: string\n timestamp: string\n services: {\n backend: {\n status: string\n message?: string\n }\n database: {\n status: string\n message?: string\n }\n }\n}\n\nconst HEALTH_CHECK_TIMEOUT_MS = 10000\n\nexport const healthService = {\n async check(): Promise<HealthCheckResponse> {\n try {\n const response = await api.get<HealthCheckResponse>('/api/health', {\n timeout: HEALTH_CHECK_TIMEOUT_MS\n })\n return response.data\n } catch (error) {\n const isTimeoutError =\n error instanceof Error &&\n (error.message.includes('timeout') || error.message.includes('Network Error'))\n\n return {\n status: 'error',\n timestamp: new Date().toISOString(),\n services: {\n backend: {\n status: 'error',\n message: isTimeoutError\n ? 'No se pudo conectar con el backend. Verifica que el servidor esté corriendo y la URL configurada.'\n : error instanceof Error\n ? error.message\n : 'Error de conexión con el backend'\n },\n database: {\n status: 'unknown',\n message: 'No se puede verificar la base de datos porque el backend no responde'\n }\n }\n }\n }\n }\n}\n","import type { ILocation, ILocationResponse } from '../interfaces/location.interface'\nimport { api } from './config'\n\ninterface LocationQuery {\n skip?: number\n limit?: number\n query?: string\n}\n\nexport interface LocationResponse {\n physicalLocationID: number\n name: string\n addressID: number\n isOpen: boolean\n syncStatusID: number\n masterCodeID: null\n savedBy: null\n savedDate: null\n deletedBy: null\n deletedDate: null\n}\n\nexport const getAllLocations = async (): Promise<LocationResponse[]> => {\n const { data } = await api.get<LocationResponse[]>('location/')\n return data\n}\n\nexport const getLocationsForSelect = async (): Promise<LocationResponse[]> => {\n const { data } = await api.get<LocationResponse[]>('location/locationsForSelect')\n return data\n}\n\nexport const getLocations = async ({\n skip = 0,\n limit = 10,\n query = ''\n}: LocationQuery): Promise<ILocationResponse> => {\n const { data } = await api.get<ILocationResponse>(\n `location/locations?skip=${skip}&limit=${limit}&query=${query}`\n )\n return data\n}\n\nexport const getLocationById = async ({\n locationId\n}: {\n locationId: number\n}): Promise<ILocation> => {\n const { data } = await api.get(`/location/${locationId}`)\n return data.data\n}\n\nexport const updateLocation = async ({\n locationId,\n location\n}: {\n locationId: number\n location: FormData\n}): Promise<ILocation> => {\n const { data } = await api.put<ILocation>(`/location/${locationId}`, location, {\n headers: {\n 'Content-Type': 'multipart/form-data'\n }\n })\n return data\n}\n\nexport const createLocation = async (location: FormData): Promise<ILocation> => {\n const { data } = await api.post<ILocation>('location/', location, {\n headers: {\n 'Content-Type': 'multipart/form-data'\n }\n })\n return data\n}\n\nexport const deleteLocation = async ({\n physicalLocationId\n}: {\n physicalLocationId: number\n}): Promise<void> => {\n await api.delete(`/location/${physicalLocationId}`)\n}\n\nexport const restoreLocation = async ({\n physicalLocationId\n}: {\n physicalLocationId: number\n}): Promise<void> => {\n await api.patch(`/location/${physicalLocationId}`)\n}\n","import type { IMaterial } from '../interfaces/material.interface'\nimport { api } from './config'\n\nexport interface MaterialResponse {\n data: IMaterial[]\n total: number\n skip: number\n limit: number\n}\n\ninterface MaterialQuery {\n skip?: number\n limit?: number\n query?: string\n}\n\nexport const getAllMaterials = async (): Promise<IMaterial[]> => {\n const { data } = await api.get<IMaterial[]>('material/')\n return data\n}\n\nexport const getMaterials = async ({\n skip = 0,\n limit = 10,\n query = ''\n}: MaterialQuery): Promise<MaterialResponse> => {\n const { data } = await api.get<MaterialResponse>(\n `material/materialsTable?skip=${skip}&limit=${limit}&query=${query}`\n )\n return data\n}\n\nexport const getMaterialById = async ({\n materialId\n}: {\n materialId: number\n}): Promise<IMaterial> => {\n const { data } = await api.get(`material/${materialId}`)\n return data.data\n}\n\nexport const getMaterialsForSelect = async (): Promise<IMaterial[]> => {\n const { data } = await api.get<IMaterial[]>('material/select')\n return data\n}\n\nexport const createMaterial = async ({ material }: { material: IMaterial }): Promise<IMaterial> => {\n const { data } = await api.post<IMaterial>('material/', material)\n return data\n}\n\nexport const updateMaterial = async ({\n materialId,\n material\n}: {\n materialId: number\n material: IMaterial\n}): Promise<IMaterial> => {\n const { data } = await api.put<IMaterial>(`material/${materialId}`, material)\n return data\n}\n\nexport const deleteMaterial = async ({ materialId }: { materialId: number }): Promise<void> => {\n await api.delete(`material/${materialId}`)\n}\nexport const undeleteMaterial = async ({ materialId }: { materialId: number }): Promise<void> => {\n await api.patch(`material/${materialId}`)\n}\n","import type { IModule } from '../interfaces/module.interface'\nimport { api } from './config'\n\nexport const getAllModules = async (): Promise<IModule[]> => {\n const { data } = await api.get<IModule[]>('module/')\n return data\n}\n","import type { IOrder, IOrderResponse, TblOrderStatus } from '../interfaces/order.interface'\nimport { api } from './config'\n\nexport const getOrders = async ({\n skip = 0,\n limit = 10,\n query = '',\n commissionedBy = '',\n orderStatus = [],\n startDate = '',\n endDate = '',\n showOnlyReturns = false\n}: {\n skip?: number\n limit?: number\n query?: string\n commissionedBy?: string\n orderStatus?: string[]\n startDate?: string | null\n endDate?: string | null\n showOnlyReturns?: boolean\n}): Promise<IOrderResponse> => {\n const { data } = await api.get<IOrderResponse>('order', {\n params: { skip, limit, query, commissionedBy, orderStatus, startDate, endDate, showOnlyReturns }\n })\n return data\n}\n\nexport const getOrderById = async ({ orderId }: { orderId: number }): Promise<IOrder> => {\n const { data } = await api.get<IOrder>(`order/${orderId}`)\n return data\n}\n\nexport const getOrdersStatusForSelect = async (): Promise<TblOrderStatus[]> => {\n const { data } = await api.get<TblOrderStatus[]>('order/status')\n return data\n}\n\nexport interface ChangeProductRequest {\n orderID: number\n oldOrderDetailID: number\n newProductDetailID: number\n quantity: number\n reason?: string\n}\n\nexport interface ChangeProductResponse {\n success: boolean\n message: string\n priceDifference: number\n requiresAdditionalPayment: boolean\n requiresRefund: boolean\n order: IOrder\n}\n\nexport const changeOrderProduct = async (\n changeData: ChangeProductRequest\n): Promise<ChangeProductResponse> => {\n const { data } = await api.post<ChangeProductResponse>('order/change-product', changeData)\n return data\n}\n","import { api } from './config'\nimport type {\n IPayment,\n IPaymentMethod,\n IPaymentMethodAmountExpected\n} from '../interfaces/payment.interface'\n\nexport const sendPaymentData = async ({ payment }: { payment: IPayment }): Promise<IPayment> => {\n const { data } = await api.post<IPayment>(\n 'payment/applypayment',\n {\n ...payment\n },\n {\n headers: {\n 'Content-Type': 'application/json'\n }\n }\n )\n return data\n}\n\n//metodo para llamar a la api y obtener los metodos de pago\nexport const getPaymentMethods = async (): Promise<IPaymentMethod[]> => {\n const { data } = await api.get('payment/getpaymentmethods')\n return data\n}\n\n//metodo para llamar a la api y obtener los metodos de pago\nexport const getPaymentMethodsWithAmountExpected = async (): Promise<\n IPaymentMethodAmountExpected[]\n> => {\n const { data } = await api.get('payment/getpaymentmethodswithamountexpected')\n return data\n}\n\nexport const sendCreditPaymentData = async ({\n payment,\n orderId\n}: {\n payment: IPayment\n orderId: number\n}): Promise<IPayment> => {\n const { data } = await api.post<IPayment>(\n 'payment/applycreditpayment',\n {\n ...payment,\n orderID: orderId\n },\n {\n headers: {\n 'Content-Type': 'application/json'\n }\n }\n )\n return data\n}\n","import type { IPermissionRole, PermissionRole } from '../interfaces/permission.interface'\nimport { api } from './config'\n\nexport interface IUpdatePermission {\n id: number\n hasPermission: boolean\n}\n\nexport const getAllPermissions = async (): Promise<IPermissionRole> => {\n const response = await api.get<IPermissionRole>('/permission-role/')\n return response.data\n}\n\nexport const updatePermission = async (\n permission: IUpdatePermission\n): Promise<IUpdatePermission> => {\n const response = await api.put<IUpdatePermission>('/permission-role', permission)\n return response.data\n}\n\nexport const getPermissionRoleByRoleID = async ({\n roleId\n}: {\n roleId: number\n}): Promise<PermissionRole[]> => {\n const { data } = await api.get<PermissionRole[]>(`permission-role/${roleId}`)\n return data\n}\n","import type {\n PricePerGramResponse,\n PriceCalculationResponse,\n UpdatePriceRequest,\n SchedulePriceRequest,\n CalculatePriceRequest,\n IPricePerGramHistory\n} from '../interfaces/pricePerGram.interface'\nimport { api } from './config'\n\nconst BASE_URL = 'price-per-gram'\n\nexport const pricePerGramService = {\n // 1. Obtener precio con fallback\n async getPrice(params: {\n productDetailId?: number\n productId?: number\n materialId?: number\n }): Promise<PricePerGramResponse> {\n const queryParams = new URLSearchParams()\n\n if (params.productDetailId)\n queryParams.append('productDetailID', params.productDetailId.toString())\n if (params.productId) queryParams.append('productID', params.productId.toString())\n if (params.materialId) queryParams.append('materialID', params.materialId.toString())\n\n const { data } = await api.get<PricePerGramResponse>(\n `${BASE_URL}/price?${queryParams.toString()}`\n )\n return data\n },\n\n // 2. Actualizar precio (crea histórico automáticamente)\n async updatePrice(request: UpdatePriceRequest): Promise<void> {\n await api.put(`${BASE_URL}/price`, request)\n },\n\n // 3. Ver histórico de precios\n async getHistory({\n entityType,\n entityId,\n limit\n }: {\n entityType: 'material' | 'product' | 'productDetail'\n entityId: number\n limit?: number\n }): Promise<IPricePerGramHistory[]> {\n const queryParams = new URLSearchParams()\n if (limit) queryParams.append('limit', limit.toString())\n\n const { data } = await api.get<{ success: boolean; data: IPricePerGramHistory[] }>(\n `${BASE_URL}/history/${entityType}/${entityId}?${queryParams.toString()}`\n )\n console.log('response data:', data)\n return data.data || []\n },\n\n // 4. Programar precio futuro\n async schedulePrice(request: SchedulePriceRequest): Promise<void> {\n await api.post(`${BASE_URL}/scheduled`, request)\n },\n\n // 5. Calcular precio para venta\n async calculatePrice(request: CalculatePriceRequest): Promise<PriceCalculationResponse> {\n const { data } = await api.post<PriceCalculationResponse>(`${BASE_URL}/calculate`, request)\n return data\n },\n\n // 6. Eliminar precio programado\n async deleteFuturePrice({\n historyId\n }: {\n historyId: number\n }): Promise<void> {\n await api.delete(`${BASE_URL}/scheduled/${historyId}`)\n },\n\n // 7. Actualizar precio programado\n async updateFuturePrice({\n historyId,\n request\n }: {\n historyId: number\n request: SchedulePriceRequest\n }): Promise<void> {\n await api.put(`${BASE_URL}/scheduled/${historyId}`, request)\n },\n\n // Verificar si un producto se vende por peso\n async isWeightBased({\n productDetailId\n }: {\n productDetailId: number\n }): Promise<boolean> {\n try {\n const priceInfo = await this.getPrice({ productDetailId })\n return priceInfo.pricePerGram !== null\n } catch (error) {\n console.error('Error verificando si es por peso:', error)\n return false\n }\n }\n}\n","import type { IPriceType, IPriceTypeResponse } from '../interfaces/priceType.interface'\nimport { api } from './config'\nimport type { IRequest } from '../interfaces/util.interface'\n\nexport const getPriceTypesForSelect = async (): Promise<IPriceType[]> => {\n const { data } = await api.get<IPriceType[]>('price-type/select')\n return data\n}\n\nexport const getAllPriceTypes = async ({\n skip = 0,\n limit = 10,\n query = ''\n}: IRequest): Promise<IPriceTypeResponse> => {\n const { data } = await api.get<IPriceTypeResponse>(\n `price-type/?skip=${skip}&limit=${limit}&query=${query}`\n )\n return data\n}\n\nexport const createPriceType = async ({\n priceType\n}: {\n priceType: IPriceType\n}): Promise<IPriceType> => {\n const { data } = await api.post<IPriceType>('price-type/', priceType)\n return data\n}\n\nexport const getPriceTypeById = async ({\n priceTypeId\n}: {\n priceTypeId: number\n}): Promise<IPriceType> => {\n const { data } = await api.get<IPriceType>(`price-type/${priceTypeId}`)\n return data\n}\n\nexport const updatePriceType = async ({\n priceTypeId,\n priceType\n}: {\n priceTypeId: number\n priceType: IPriceType\n}): Promise<IPriceType> => {\n const { data } = await api.put<IPriceType>(`price-type/${priceTypeId}`, priceType)\n return data\n}\n\nexport const deletePriceType = async ({ priceTypeId }: { priceTypeId: number }): Promise<void> => {\n await api.delete<void>(`price-type/${priceTypeId}`)\n}\n\nexport const undeletePriceType = async ({\n priceTypeId\n}: {\n priceTypeId: number\n}): Promise<void> => {\n await api.patch<void>(`price-type/${priceTypeId}`)\n}\n","import type { IFilterType } from '../interfaces/filters.interface'\nimport type {\n IProductResponse,\n IProduct,\n IProductDetailsResponse,\n IProductDetails\n} from '../interfaces/product.interface'\nimport { api } from './config'\n\ninterface ProductQuery {\n skip?: number\n limit?: number\n filters?: IFilterType\n}\n\ninterface CategoryQuery {\n category: number\n skip?: number\n limit?: number\n filters?: IFilterType\n}\n\nexport const getProductsForSelect = async (): Promise<IProduct[]> => {\n const { data } = await api.get<IProduct[]>('/product/select')\n return data\n}\n\nexport const getProducts = async ({\n skip = 0,\n limit = 16,\n filters\n}: ProductQuery): Promise<IProductDetailsResponse> => {\n const queryParams = new URLSearchParams({\n skip: skip.toString(),\n limit: limit.toString(),\n ...(filters?.query && { query: filters.query }),\n ...(filters?.batchId && { batchId: filters.batchId }),\n ...(filters?.categoryId && { categoryId: filters.categoryId.toString() }),\n ...(filters?.supplierId && { supplierId: filters.supplierId.toString() }),\n ...(filters?.warehouseId && { warehouseId: filters.warehouseId.toString() }),\n ...(filters?.priceRangeMin && { minPrice: filters.priceRangeMin.toString() }),\n ...(filters?.priceRangeMax && { maxPrice: filters.priceRangeMax.toString() })\n })\n\n const { data } = await api.get<IProductDetailsResponse>(`product?${queryParams}`)\n return data\n}\n\nexport const getProductsTable = async ({\n skip = 0,\n limit = 16,\n filters\n}: ProductQuery): Promise<IProductResponse> => {\n const queryParams = new URLSearchParams({\n skip: skip.toString(),\n limit: limit.toString(),\n ...(filters?.query && { query: filters.query }),\n ...(filters?.batchId && { batchId: filters.batchId }),\n ...(filters?.categoryId && { categoryId: filters.categoryId.toString() }),\n ...(filters?.supplierId && { supplierId: filters.supplierId.toString() }),\n ...(filters?.warehouseId && { warehouseId: filters.warehouseId.toString() }),\n ...(filters?.priceRangeMin && { minPrice: filters.priceRangeMin.toString() }),\n ...(filters?.priceRangeMax && { maxPrice: filters.priceRangeMax.toString() })\n })\n\n const { data } = await api.get<IProductResponse>(`product/table?${queryParams}`)\n return data\n}\n\nexport const getProductById = async ({\n productId\n}: {\n productId: number\n}): Promise<IProduct> => {\n const { data } = await api.get(`product/${productId}`)\n return data.data\n}\n\nexport const getProductVariants = async ({\n productId,\n skip = 0,\n limit = 10,\n query = ''\n}: {\n productId: number\n skip?: number\n limit?: number\n query?: string\n}): Promise<IProductDetailsResponse> => {\n const { data } = await api.get<IProductDetailsResponse>(`/product/variants/${productId}`, {\n params: {\n skip: skip.toString(),\n limit: limit.toString(),\n ...(query && { query })\n }\n })\n return data\n}\n\nexport const getProductVariantsForSelect = async ({\n productId\n}: {\n productId: number\n}): Promise<IProductDetails[]> => {\n const { data } = await api.get<IProductDetails[]>(`/product/variants/select/${productId}`)\n return data\n}\n\nexport const getProductVariantById = async ({\n productDetailId\n}: {\n productDetailId: number\n}): Promise<IProductDetails> => {\n const { data } = await api.get<IProductDetails>(`/product/variants/variant/${productDetailId}`)\n return data\n}\n\nexport const createProductVariant = async (variant: FormData): Promise<IProductDetails> => {\n const { data } = await api.post<IProductDetails>('product/variants', variant, {\n headers: {\n 'Content-Type': 'multipart/form-data'\n }\n })\n return data\n}\n\nexport const createProductVariants = async (formData: FormData): Promise<IProductDetails[]> => {\n const { data } = await api.post<IProductDetails[]>('product/variants', formData, {\n headers: {\n 'Content-Type': 'multipart/form-data'\n }\n })\n return data\n}\n\nexport const updateProductVariant = async (data: FormData): Promise<IProductDetails> => {\n const { data: response } = await api.put<IProductDetails>(\n `product/variants/update/${data.get('productDetailID')}`,\n data,\n {\n headers: {\n 'Content-Type': 'multipart/form-data'\n }\n }\n )\n return response\n}\n\nexport const deleteProductVariant = async ({\n productDetailId\n}: {\n productDetailId: number\n}): Promise<void> => {\n await api.delete(`/product/variants/${productDetailId}`)\n}\n\nexport const restoreProductVariant = async ({\n productDetailId\n}: {\n productDetailId: number\n}): Promise<void> => {\n await api.patch(`/product/variants/${productDetailId}`)\n}\n\nexport const createProduct = async (product: FormData): Promise<IProduct> => {\n const { data } = await api.post<IProduct>('product/', product, {\n headers: {\n 'Content-Type': 'multipart/form-data'\n }\n })\n return data\n}\n\nexport const updateProduct = async ({\n productId,\n product\n}: {\n productId: number\n product: FormData\n}): Promise<IProduct> => {\n const { data } = await api.put<IProduct>(`/product/${productId}`, product, {\n headers: {\n 'Content-Type': 'multipart/form-data'\n }\n })\n return data\n}\n\nexport const deleteImageFromProduct = async ({\n imageId\n}: {\n imageId: number\n}): Promise<void> => {\n await api.delete(`/product/images/${imageId}`)\n}\n\nexport const deleteProduct = async ({ productId }: { productId: number }): Promise<void> => {\n await api.delete(`/product/${productId}`)\n}\n\nexport const restoreProduct = async ({ productId }: { productId: number }): Promise<void> => {\n await api.patch(`/product/${productId}`)\n}\n\nexport const getProductsByCategory = async ({\n category,\n skip = 0,\n limit = 10,\n filters\n}: CategoryQuery): Promise<IProductResponse> => {\n const queryParams = new URLSearchParams({\n skip: skip.toString(),\n limit: limit.toString(),\n ...(filters?.query && { query: filters.query }),\n ...(filters?.batchId && { batchId: filters.batchId }),\n ...(filters?.supplierId && { supplierId: filters.supplierId.toString() }),\n ...(filters?.warehouseId && { warehouseId: filters.warehouseId.toString() }),\n ...(filters?.priceRangeMin && { minPrice: filters.priceRangeMin.toString() }),\n ...(filters?.priceRangeMax && { maxPrice: filters.priceRangeMax.toString() })\n })\n\n const { data } = await api.get<IProductResponse>(`product/category/${category}?${queryParams}`)\n return data\n}\n\nexport interface PrintProductTagResponse {\n message?: string\n [key: string]: unknown\n}\n\nexport const printProductTag = async ({\n stockId,\n productId,\n isSmall\n}: {\n stockId: number\n productId: number\n isSmall: boolean\n}): Promise<PrintProductTagResponse> => {\n const { data } = await api.post<PrintProductTagResponse>(`/product/printproducttag/`, {\n stockID: stockId,\n productID: productId,\n isSmall\n })\n return data\n}\n","import type { ITag } from '../interfaces/tag.interface'\nimport { api } from './config'\n\nexport const getAllTags = async (): Promise<ITag[]> => {\n const { data } = await api.get<{ data: ITag[] }>('/product-tag')\n return data.data\n}\n","import type {\n IPromotion,\n IPromotionResponse,\n IPromotionType\n} from '../interfaces/promotion.interface'\nimport { api } from './config'\n\nexport const isAValidDiscountCode = async ({\n discountCode\n}: {\n discountCode: string\n}): Promise<boolean> => {\n const { data } = await api.post('promotion/discount-code', { discountCode })\n return data.isValid\n}\n\ninterface PromotionQuery {\n skip?: number\n limit?: number\n query?: string\n}\n\nexport const getPromotions = async ({\n skip = 0,\n limit = 10,\n query = ''\n}: PromotionQuery): Promise<IPromotionResponse> => {\n const queryParams = new URLSearchParams({\n skip: skip.toString(),\n limit: limit.toString(),\n query: query\n })\n const { data } = await api.get(`promotion?${queryParams}`)\n return data\n}\n\nexport const getPromotionsTypeForSelect = async (): Promise<IPromotionType[]> => {\n const { data } = await api.get('promotion/promotions-type/select')\n return data\n}\n\nexport const createPromotion = async (promotion: IPromotion): Promise<IPromotion> => {\n const { data } = await api.post('promotion', promotion)\n return data\n}\n\nexport const getPromotionById = async ({ id }: { id: string }): Promise<IPromotion> => {\n const { data } = await api.get(`promotion/${id}`)\n return data\n}\n\nexport const updatePromotion = async ({\n id,\n promotion\n}: {\n id: string\n promotion: IPromotion\n}): Promise<IPromotion> => {\n const { data } = await api.put(`promotion/${id}`, promotion)\n return data\n}\n","import type {\n IProvider,\n IProviderForSelect,\n IProviderRequest,\n IProviderResponse\n} from '../interfaces/provider.interface'\nimport { api } from './config'\n\nexport const getAllProviders = async ({\n skip = 0,\n limit = 10,\n query = ''\n}: {\n skip: number\n limit: number\n query?: string\n}): Promise<IProviderResponse> => {\n const { data } = await api.get<IProviderResponse>(\n `provider/?skip=${skip}&limit=${limit}&query=${query}`\n )\n return data\n}\n\nexport const getProviderById = async ({\n providerId\n}: {\n providerId: number\n}): Promise<IProvider> => {\n const { data } = await api.get<IProvider>(`provider/${providerId}`)\n return data\n}\n\nexport const getProvidersForSelect = async (): Promise<IProviderForSelect[]> => {\n const { data } = await api.get<IProviderForSelect[]>('provider/providersForSelect')\n return data\n}\n\nexport const createProvider = async (provider: IProviderRequest): Promise<IProviderResponse> => {\n const { data } = await api.post<IProviderResponse>('provider/', provider)\n return data\n}\n\nexport const updateProvider = async ({\n providerId,\n provider\n}: {\n providerId: string\n provider: IProvider\n}): Promise<IProviderResponse> => {\n const { data } = await api.put<IProviderResponse>(`provider/${providerId}`, provider)\n return data\n}\n\nexport const deleteProvider = async ({\n providerId\n}: {\n providerId: number\n}): Promise<IProviderResponse> => {\n const { data } = await api.delete<IProviderResponse>(`provider/${providerId}`)\n return data\n}\n\nexport const restoreProvider = async ({\n providerId\n}: {\n providerId: number\n}): Promise<IProviderResponse> => {\n const { data } = await api.patch<IProviderResponse>(`provider/${providerId}`)\n return data\n}\n","import { api } from './config'\n\nexport interface QRBaseUrlResponse {\n success: boolean\n baseUrl: string\n}\n\nexport interface PrintQRResponse {\n success?: boolean\n message?: string\n data?: {\n url?: string\n productDetailID?: number\n printerResult?: boolean\n }\n [key: string]: unknown\n}\n\n/**\n * Obtiene la URL base configurada para los códigos QR (QR_BASE_URL del backend).\n */\nexport const getQRBaseUrl = async (): Promise<string> => {\n const { data } = await api.get<QRBaseUrlResponse>('/qr/base-url')\n return data?.baseUrl ?? ''\n}\n\n/**\n * Imprime un código QR en la impresora térmica.\n * El backend construye la URL: {QR_BASE_URL}/producto/{productDetailID}\n */\nexport const printQR = async ({\n productDetailId,\n printerName = '4BARCODE'\n}: {\n productDetailId: number\n printerName?: string\n}): Promise<PrintQRResponse> => {\n const { data } = await api.post<PrintQRResponse>('/qr/print', {\n productDetailID: productDetailId,\n printerName\n })\n return data\n}\n","import type {\n ComparisonBy,\n IReportComparisonByTimeFrame,\n IReportInventory,\n IReportX,\n IReportZ,\n IStockByWarehouseReport\n} from '../interfaces/report.interface'\nimport { api } from './config'\n\nexport const getStockByWarehouseReport = async ({\n limit = 2,\n allWarehouses = false\n}: {\n limit: number\n allWarehouses: boolean\n}): Promise<IStockByWarehouseReport[]> => {\n const response = await api.get(`/report?limit=${limit}&allWarehouses=${allWarehouses}`)\n return response.data\n}\n\nexport const getReportX = async ({\n startDate,\n sellerID,\n isShiftChange = false\n}: {\n startDate: string\n sellerID: number\n isShiftChange: boolean\n}): Promise<IReportX> => {\n const response = await api.get(\n `/report/report-x?startDate=${startDate}&sellerID=${sellerID}&isShiftChange=${isShiftChange}`\n )\n return response.data\n}\n\nexport const printReportX = async ({\n startDate,\n sellerID\n}: {\n startDate: string\n sellerID: number\n}): Promise<boolean> => {\n const response = await api.get(\n `/report/printReport-x?startDate=${startDate}&sellerID=${sellerID}`\n )\n return response.data\n}\n\nexport const getReportComparisonByTimeFrame = async ({\n startDate,\n endDate,\n comparisonBy,\n productIds\n}: {\n startDate: Date\n endDate: Date\n comparisonBy: ComparisonBy\n productIds: string[]\n}): Promise<IReportComparisonByTimeFrame> => {\n const response = await api.get(\n `/report/comparison?startDate=${startDate.toISOString()}&endDate=${endDate.toISOString()}&comparisonBy=${comparisonBy}&productIds=${productIds}`\n )\n return response.data\n}\n\nexport const getReportByInventory = async ({\n productIDs,\n categoryIDs,\n warehouseIDs,\n providerIDs\n}: {\n productIDs: number[] | null\n categoryIDs: number[] | null\n warehouseIDs: number[] | null\n providerIDs: number[] | null\n}): Promise<IReportInventory[]> => {\n const params = new URLSearchParams()\n \n if (productIDs && productIDs.length > 0) {\n params.append('productIDs', productIDs.join(','))\n }\n if (categoryIDs && categoryIDs.length > 0) {\n params.append('categoryIDs', categoryIDs.join(','))\n }\n if (warehouseIDs && warehouseIDs.length > 0) {\n params.append('warehouseIDs', warehouseIDs.join(','))\n }\n if (providerIDs && providerIDs.length > 0) {\n params.append('providerIDs', providerIDs.join(','))\n }\n\n const queryString = params.toString()\n const url = `/report/inventory${queryString ? `?${queryString}` : ''}`\n \n const response = await api.get(url)\n return response.data\n}\n\nexport const getReportZ = async ({\n startDate,\n sellerID,\n isShiftChange = false\n}: {\n startDate: string\n sellerID: number\n isShiftChange: boolean\n}): Promise<IReportZ> => {\n const response = await api.get(\n `/report/report-z?startDate=${startDate}&sellerID=${sellerID}&isShiftChange=${isShiftChange}`\n )\n return response.data\n}\n\nexport const printReportZ = async ({\n startDate,\n sellerID\n}: {\n startDate: string\n sellerID: number\n}): Promise<boolean> => {\n const response = await api.get(\n `/report/printReport-z?startDate=${startDate}&sellerID=${sellerID}`\n )\n return response.data\n}\n\nexport const checkPendingReportZ = async (): Promise<Date[]> => {\n const response = await api.get('/report/pending-report-z')\n return response.data\n}\n","import type { TblOrderDetail, TblReturn } from '../interfaces/order.interface'\nimport { api } from './config'\n\nexport const createReturn = async ({\n orderId,\n returnReason,\n orderDetails,\n warehouseDestinationID\n}: {\n orderId: number\n returnReason: string\n orderDetails: TblOrderDetail[]\n warehouseDestinationID: number\n}): Promise<void> => {\n const response = await api.post(`/returns`, {\n orderId,\n returnReason,\n orderDetails,\n warehouseDestinationID\n })\n return response.data\n}\n\nexport interface GetReturnsByOrderIdResponse {\n message: string\n data: TblReturn[]\n}\n\nexport const getReturnsByOrderId = async ({\n orderId\n}: {\n orderId: number\n}): Promise<GetReturnsByOrderIdResponse> => {\n const response = await api.get(`/returns/order/${orderId}`)\n return response.data\n}\n","import type { IRole } from '../interfaces/role.interface'\nimport { api } from './config'\n\nexport const getRoles = async (): Promise<IRole[]> => {\n const response = await api.get('/role')\n return response.data\n}\n\nexport const getRoleByID = async ({\n roleId\n}: {\n roleId: number\n}): Promise<IRole> => {\n const response = await api.get(`/role/${roleId}`)\n return response.data\n}\n\nexport const createRole = async (role: IRole): Promise<IRole> => {\n const response = await api.post('/role', role)\n return response.data\n}\n\nexport const updateRole = async ({\n roleId,\n role\n}: {\n roleId: number\n role: IRole\n}): Promise<IRole> => {\n const response = await api.put(`/role/${roleId}`, role)\n return response.data\n}\n\nexport const deleteRole = async ({\n roleId\n}: {\n roleId: number\n}): Promise<void> => {\n await api.delete(`/role/${roleId}`)\n}\n","import type { IStockMovement, IStockMovementResponse } from '../interfaces/stockmovement.interface'\nimport { api } from './config'\n\ninterface MovementQuery {\n skip?: number\n limit?: number\n query?: string\n movementType?: number\n}\n\nexport interface MovementResponse {\n stockMovementID: number\n quantity: number\n addressID: number\n isOpen: boolean\n syncStatusID: number\n masterCodeID: null\n savedBy: null\n savedDate: null\n deletedBy: null\n deletedDate: null\n}\n\nexport const createMovement = async (movement: FormData): Promise<IStockMovement> => {\n const { data } = await api.post<IStockMovement>('movement/', movement, {\n headers: {\n 'Content-Type': 'multipart/form-data'\n }\n })\n return data\n}\n\n// export const getAllLocations = async (): Promise<LocationResponse[]> => {\n// const { data } = await api.get<LocationResponse[]>('location/')\n// return data\n// }\n\n// export const getLocationsForSelect = async (): Promise<LocationResponse[]> => {\n// const { data } = await api.get<LocationResponse[]>('location/locationsForSelect')\n// return data\n// }\n\nexport const getMovements = async ({\n skip = 0,\n limit = 10,\n query = '',\n movementType = 1\n}: MovementQuery): Promise<IStockMovementResponse> => {\n const { data } = await api.get<IStockMovementResponse>(\n `movement/movements?skip=${skip}&limit=${limit}&query=${query}&movementTypeID=${movementType}`\n )\n return data\n}","import { api } from './config'\n\nexport interface Response {\n status: boolean\n httpStatus: number\n message: string\n data: unknown\n}\n\ninterface CloseShiftData {\n sellerID: number\n date: string\n paymentMethods: {\n paymentMethodId: number\n amount: number\n }[]\n cashBreakdown?: {\n coinsTotal: number\n bills: {\n denomination: number\n quantity: number\n }[]\n }\n}\n\nexport const closeShift = async (data: CloseShiftData): Promise<Response> => {\n const response = await api.post<Response>('/shift/close', data, {\n headers: {\n 'Content-Type': 'application/json'\n }\n })\n return response.data\n}\n\nexport const makeNewCashMovement = async ({\n userID,\n amount,\n comment,\n isWithdrawal\n}: {\n userID: number | undefined\n amount: number\n comment?: string\n isWithdrawal: boolean\n}): Promise<Response> => {\n const { data } = await api.post<Response>(\n 'shift/cashmovement',\n {\n userID,\n amount,\n comment,\n isWithdrawal\n },\n {\n headers: {\n 'Content-Type': 'application/json'\n }\n }\n )\n return data\n}\n\nexport const setNewShift = async ({\n userID,\n initialCash\n}: {\n userID: number | undefined\n initialCash: number\n}): Promise<Response> => {\n const { data } = await api.post<Response>(\n 'shift/',\n {\n userID,\n initialCash\n },\n {\n headers: {\n 'Content-Type': 'application/json'\n }\n }\n )\n return data\n}\n","import { api } from './config'\n\nexport interface StateResponse {\n stateID: number\n state: string\n syncStatusID: number\n masterCodeID: null\n savedBy: null\n savedDate: null\n deletedBy: null\n deletedDate: null\n}\n\nexport const getAllStates = async (): Promise<StateResponse[]> => {\n const { data } = await api.get<StateResponse[]>('state/')\n return data\n}\n","import type { ITax } from '../interfaces/tax.interface'\nimport { api } from './config'\n\nexport const getTaxesForSelect = async (): Promise<ITax[]> => {\n const { data } = await api.get<ITax[]>('tax/taxesForSelect')\n return data\n}\n","import type { AgentResponse, IUser, IUserForm, UserResponse } from '../interfaces/user.interface'\nimport { api } from './config'\n\ninterface UserQuery {\n skip?: number\n limit?: number\n query?: string\n roleId?: string\n}\n\nexport const getSellersWithShift = async (): Promise<AgentResponse> => {\n const { data } = await api.get<AgentResponse>(`user/getSellersWithShift/`)\n return data\n}\n\nexport const getSellersOfDayForSelect = async ({\n date\n}: {\n date: string\n}): Promise<AgentResponse> => {\n const { data } = await api.get<AgentResponse>(`user/getSellersOfDayForSelect/${date}`)\n return data\n}\n\nexport const getAllAgents = async (): Promise<AgentResponse> => {\n const { data } = await api.get<AgentResponse>('user/getallagents')\n return data\n}\n\nexport const getUsers = async ({\n skip = 0,\n limit = 10,\n query = '',\n roleId,\n}: UserQuery): Promise<UserResponse> => {\n const params = new URLSearchParams({\n skip: String(skip),\n limit: String(limit),\n ...(query && { query }),\n ...(roleId && { roleId }),\n });\n const { data } = await api.get<UserResponse>(`user/?${params}`)\n return data\n}\n\nexport const getUserById = async ({ userId }: { userId: number }): Promise<IUser> => {\n const { data } = await api.get<IUser>(`user/${userId}`)\n return data\n}\n\nexport const createUser = async ({ user }: { user: IUserForm }): Promise<void> => {\n await api.post('user/', user)\n}\n\nexport const updateUser = async ({\n userId,\n user\n}: {\n userId: number\n user: IUserForm\n}): Promise<void> => {\n await api.put(`user/${userId}`, user)\n}\n\nexport const deleteUser = async ({ userId }: { userId: number }): Promise<void> => {\n await api.delete(`user/${userId}`)\n}\nexport const restoreUser = async ({ userId }: { userId: number }): Promise<void> => {\n await api.patch(`user/${userId}`)\n}\n","import type { IWareHouse, IWareHouseResponse } from '../interfaces/warehouse.interface'\nimport { api } from './config'\n\ninterface WareHouseQuery {\n skip?: number\n limit?: number\n query?: string\n}\n\nexport interface WarehouseResponse {\n wareHouseID: number\n wareHouse: string\n wareHouseWithLocation: string\n physicialLocationID: number\n isShowroom: boolean\n syncStatusID: number\n masterCodeID: null\n savedBy: null\n savedDate: null\n deletedBy: null\n deletedDate: null\n}\n\nexport const getWarehousesForSelect = async (): Promise<WarehouseResponse[]> => {\n const { data } = await api.get<WarehouseResponse[]>('warehouse/warehousesForSelect')\n return data\n}\n\nexport const getWarehouses = async ({\n skip = 0,\n limit = 10,\n query = ''\n}: WareHouseQuery): Promise<IWareHouseResponse> => {\n const { data } = await api.get<IWareHouseResponse>(\n `warehouse/warehouses?skip=${skip}&limit=${limit}&query=${query}`\n )\n return data\n}\n\nexport const getWarehouseById = async ({\n warehouseId\n}: {\n warehouseId: number\n}): Promise<IWareHouse> => {\n const { data } = await api.get(`/warehouse/${warehouseId}`)\n return data.data\n}\n\nexport const updateWarehouse = async ({\n warehouseId,\n warehouse\n}: {\n warehouseId: number\n warehouse: FormData\n}): Promise<IWareHouse> => {\n const { data } = await api.put<IWareHouse>(`/warehouse/${warehouseId}`, warehouse, {\n headers: {\n 'Content-Type': 'multipart/form-data'\n }\n })\n return data\n}\n\nexport const createWareHouse = async (warehouse: FormData): Promise<IWareHouse> => {\n const { data } = await api.post<IWareHouse>('warehouse/', warehouse, {\n headers: {\n 'Content-Type': 'multipart/form-data'\n }\n })\n return data\n}\n\nexport const deleteWarehouse = async ({\n warehouseId\n}: {\n warehouseId: number\n}): Promise<void> => {\n await api.delete(`/warehouse/${warehouseId}`)\n}\n\nexport const restoreWarehouse = async ({\n warehouseId\n}: {\n warehouseId: number\n}): Promise<void> => {\n await api.patch(`/warehouse/${warehouseId}`)\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/services/config.ts","../src/services/attributes.service.ts","../src/services/auth.service.ts","../src/services/bankTerminal.service.ts","../src/services/batch.service.ts","../src/services/category.service.ts","../src/services/client.service.ts","../src/services/exchange.service.ts","../src/services/gender.service.ts","../src/services/health.service.ts","../src/services/location.service.ts","../src/services/material.service.ts","../src/services/module.service.ts","../src/services/order.service.ts","../src/services/payment.service.ts","../src/services/permission.service.ts","../src/services/pricePerGram.service.ts","../src/services/priceType.service.ts","../src/services/product.service.ts","../src/services/productTags.service.ts","../src/services/promotion.service.ts","../src/services/provider.service.ts","../src/services/qr.service.ts","../src/services/report.service.ts","../src/services/return.service.ts","../src/services/role.service.ts","../src/services/stockmovement.service.ts","../src/services/shift.service.ts","../src/services/state.service.ts","../src/services/tax.service.ts","../src/services/user.service.ts","../src/services/userSettings.service.ts","../src/services/warehouse.service.ts"],"names":[],"mappings":";;;AAkBA,IAAI,GAAA,GAAqB,MAAM,MAAA,CAAO;AAAA,EACpC,OAAA,EAAS,EAAA;AAAA,EACT,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAA;AAC7B,CAAC;AAgBM,SAAS,aAAa,MAAA,EAAmC;AAC9D,EAAA,MAAM,EAAE,OAAA,EAAS,QAAA,EAAU,cAAA,EAAgB,gBAAe,GAAI,MAAA;AAE9D,EAAA,MAAM,MAAA,GAAS,MAAM,MAAA,CAAO;AAAA,IAC1B,OAAA;AAAA,IACA,OAAA,EAAS;AAAA,MACP,cAAA,EAAgB,kBAAA;AAAA,MAChB,GAAI,UAAS,IAAK,EAAE,eAAe,CAAA,OAAA,EAAU,QAAA,EAAU,CAAA,CAAA;AAAG;AAC5D,GACD,CAAA;AAED,EAAA,MAAA,CAAO,YAAA,CAAa,OAAA,CAAQ,GAAA,CAAI,CAAC,SAAA,KAAc;AAC7C,IAAA,MAAM,QAAQ,QAAA,EAAS;AACvB,IAAA,IAAI,KAAA,EAAO;AACT,MAAA,SAAA,CAAU,OAAA,CAAQ,aAAA,GAAgB,CAAA,OAAA,EAAU,KAAK,CAAA,CAAA;AAAA,IACnD;AACA,IAAA,OAAO,SAAA;AAAA,EACT,CAAC,CAAA;AAED,EAAA,MAAM,YAAA,GAAe,KAAA,CAAM,MAAA,CAAO,EAAE,SAAS,CAAA;AAE7C,EAAA,MAAA,CAAO,aAAa,QAAA,CAAS,GAAA;AAAA,IAC3B,CAAC,QAAA,KAAa,QAAA;AAAA,IACd,OAAO,KAAA,KAAU;AACf,MAAA,MAAM,kBAAkB,KAAA,CAAM,MAAA;AAE9B,MAAA,IAAI,KAAA,CAAM,UAAU,MAAA,KAAW,GAAA,IAAO,CAAC,eAAA,CAAgB,MAAA,IAAU,kBAAkB,cAAA,EAAgB;AACjG,QAAA,eAAA,CAAgB,MAAA,GAAS,IAAA;AAEzB,QAAA,IAAI;AACF,UAAA,MAAM,QAAA,GAAW,MAAM,YAAA,CAAa,GAAA,CAAI,eAAA,EAAiB;AAAA,YACvD,OAAA,EAAS,QAAA,EAAS,GAAI,EAAE,aAAA,EAAe,UAAU,QAAA,EAAU,CAAA,CAAA,EAAG,GAAI;AAAC,WACpE,CAAA;AACD,UAAA,MAAM,QAAA,GAAW,SAAS,IAAA,EAAM,KAAA;AAChC,UAAA,IAAI,QAAA,EAAU;AACZ,YAAA,cAAA,CAAe,QAAQ,CAAA;AACvB,YAAA,eAAA,CAAgB,OAAA,CAAQ,aAAA,GAAgB,CAAA,OAAA,EAAU,QAAQ,CAAA,CAAA;AAC1D,YAAA,OAAO,OAAO,eAAe,CAAA;AAAA,UAC/B;AAAA,QACF,CAAA,CAAA,MAAQ;AACN,UAAA,cAAA,EAAe;AACf,UAAA,OAAO,OAAA,CAAQ,OAAO,KAAK,CAAA;AAAA,QAC7B;AAAA,MACF;AAEA,MAAA,OAAO,OAAA,CAAQ,OAAO,KAAK,CAAA;AAAA,IAC7B;AAAA,GACF;AAEA,EAAA,GAAA,GAAM,MAAA;AACN,EAAA,OAAO,GAAA;AACT;;;AChFO,IAAM,gBAAgB,OAAO;AAAA,EAClC,IAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,KAImC;AACjC,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,IAAI,GAAA,CAAI,qBAAA,EAAuB,EAAE,MAAA,EAAQ,EAAE,IAAA,EAAM,KAAA,EAAO,KAAA,IAAS,CAAA;AACxF,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,yBAAyB,YAAmC;AACvE,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAI,mBAAmB,CAAA;AAClD,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,qBAAqB,OAAO;AAAA,EACvC,IAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,KAImC;AACjC,EAAA,MAAM,WAAA,GAAc,IAAI,eAAA,CAAgB;AAAA,IACtC,IAAA,EAAM,IAAA,EAAM,QAAA,EAAS,IAAK,EAAA;AAAA,IAC1B,KAAA,EAAO,KAAA,EAAO,QAAA,EAAS,IAAK,EAAA;AAAA,IAC5B,GAAI,OAAA,EAAS,KAAA,IAAS,EAAE,KAAA,EAAO,QAAQ,KAAA,EAAM;AAAA,IAC7C,GAAI,SAAS,UAAA,IAAc,EAAE,YAAY,OAAA,CAAQ,UAAA,CAAW,UAAS,EAAE;AAAA,IACvE,GAAI,SAAS,SAAA,IAAa,EAAE,WAAW,OAAA,CAAQ,SAAA,CAAU,UAAS,EAAE;AAAA,IACpE,GAAI,SAAS,UAAA,IAAc,EAAE,YAAY,OAAA,CAAQ,UAAA,CAAW,UAAS;AAAE,GACxE,CAAA;AACD,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAAI,CAAA,WAAA,EAAc,WAAW,CAAA,CAAE,CAAA;AAC1D,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,mBAAmB,OAAO;AAAA,EACrC;AACF,CAAA,KAE2B;AACzB,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAAI,CAAA,WAAA,EAAc,WAAW,CAAA,CAAE,CAAA;AAC1D,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,2BAA2B,OAAO;AAAA,EAC7C;AACF,CAAA,KAE6B;AAC3B,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAAI,CAAA,WAAA,EAAc,SAAS,CAAA,QAAA,CAAU,CAAA;AAChE,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,4BAA4B,OAAO;AAAA,EAC9C;AACF,CAAA,KAE6B;AAC3B,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAAI,CAAA,WAAA,EAAc,UAAU,CAAA,UAAA,CAAY,CAAA;AACnE,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,qBAAqB,OAAO;AAAA,EACvC;AACF,CAAA,KAEkC;AAChC,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAAI,CAAA,WAAA,EAAc,WAAW,CAAA,OAAA,CAAS,CAAA;AACjE,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,kBAAkB,OAAO;AAAA,EACpC;AACF,CAAA,KAM2B;AACzB,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,KAAK,YAAA,EAAc;AAAA,IAC5C,MAAM,SAAA,CAAU,IAAA;AAAA,IAChB,QAAQ,SAAA,CAAU,MAAA;AAAA,IAClB,WAAW,SAAA,CAAU;AAAA,GACtB,CAAA;AACD,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,8BAA8B,OAAO;AAAA,EAChD,SAAA;AAAA,EACA;AACF,CAAA,KAMkC;AAChC,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,KAAK,CAAA,gBAAA,CAAA,EAAoB;AAAA,IAClD,SAAA;AAAA,IACA;AAAA,GACD,CAAA;AACD,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,8BAA8B,OAAO;AAAA,EAChD;AACF,CAAA,KAS2B;AACzB,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,KAAK,CAAA,oBAAA,CAAA,EAAwB;AAAA,IACtD,YAAY,UAAA,CAAW,UAAA;AAAA,IACvB,YAAY,UAAA,CAAW;AAAA,GACxB,CAAA;AACD,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,kBAAkB,OAAO;AAAA,EACpC,WAAA;AAAA,EACA;AACF,CAAA,KAG2B;AACzB,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAAI,CAAA,WAAA,EAAc,WAAW,CAAA,CAAA,EAAI,SAAS,CAAA;AACrE,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,8BAA8B,OAAO;AAAA,EAChD,UAAA;AAAA,EACA;AACF,CAAA,KAK2B;AACzB,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAAI,CAAA,oBAAA,EAAuB,UAAU,CAAA,CAAA,EAAI,UAAU,CAAA;AAC9E,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,kBAAkB,OAAO;AAAA,EACpC;AACF,CAAA,KAE2B;AACzB,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,MAAA,CAAO,CAAA,WAAA,EAAc,WAAW,CAAA,CAAE,CAAA;AAC7D,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,oBAAoB,OAAO;AAAA,EACtC;AACF,CAAA,KAE2B;AACzB,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,KAAA,CAAM,CAAA,WAAA,EAAc,WAAW,CAAA,CAAE,CAAA;AAC5D,EAAA,OAAO,IAAA;AACT;AAGO,IAAM,uBAAuB,OAAO;AAAA,EACzC,WAAA;AAAA,EACA;AACF,CAAA,KAGgC;AAC9B,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,IAAA,CAAK,CAAA,WAAA,EAAc,WAAW,CAAA,OAAA,CAAA,EAAW;AAAA,IAClE,WAAA,EAAa,WAAA;AAAA,IACb;AAAA,GACD,CAAA;AACD,EAAA,OAAO,IAAA;AACT;;;ACvLO,IAAM,QAAQ,OAAO;AAAA,EAC1B,KAAA;AAAA,EACA;AACF,CAAA,KAG8B;AAC5B,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,KAAoB,YAAA,EAAc,EAAE,KAAA,EAAO,QAAA,EAAU,CAAA;AAChF,EAAA,OAAO,IAAA;AACT;;;ACRO,IAAM,4BAA4B,YAA6C;AACpF,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAA4B,oCAAoC,CAAA;AAC3F,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,sBAAsB,YAA6C;AAC9E,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAA4B,iBAAiB,CAAA;AACxE,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,mBAAmB,OAAO;AAAA,EACrC,IAAA,GAAO,CAAA;AAAA,EACP,KAAA,GAAQ,EAAA;AAAA,EACR,KAAA,GAAQ;AACV,CAAA,KAAyD;AACvD,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,GAAA;AAAA,IACzB,CAAA,wCAAA,EAA2C,IAAI,CAAA,OAAA,EAAU,KAAK,UAAU,KAAK,CAAA;AAAA,GAC/E;AAEA,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,sBAAsB,OAAO;AAAA,EACxC;AACF,CAAA,KAE8B;AAC5B,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAAI,CAAA,gBAAA,EAAmB,UAAU,CAAA,CAAE,CAAA;AAC9D,EAAA,OAAO,IAAA,CAAK,IAAA;AACd;AAEO,IAAM,qBAAqB,OAAO;AAAA,EACvC,UAAA;AAAA,EACA;AACF,CAAA,KAG8B;AAC5B,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAAmB,CAAA,gBAAA,EAAmB,UAAU,CAAA,CAAA,EAAI,QAAQ,CAAA;AACvF,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,qBAAqB,OAAO;AAAA,EACvC;AACF,CAAA,KAE8B;AAC5B,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAA,CAAoB,mBAAmB,QAAQ,CAAA;AAC1E,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,kBAAA,GAAqB,OAAO,EAAE,UAAA,EAAW,KAA6C;AACjG,EAAA,MAAM,GAAA,CAAI,MAAA,CAAO,CAAA,gBAAA,EAAmB,UAAU,CAAA,CAAE,CAAA;AAClD;AAEO,IAAM,sBAAsB,OAAO;AAAA,EACxC;AACF,CAAA,KAEqB;AACnB,EAAA,MAAM,GAAA,CAAI,KAAA,CAAM,CAAA,gBAAA,EAAmB,UAAU,CAAA,CAAE,CAAA;AACjD;;;AC5DO,IAAM,sBAAsB,YAA+B;AAChE,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAc,0BAA0B,CAAA;AACnE,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,aAAa,OAAO;AAAA,EAC/B,IAAA,GAAO,CAAA;AAAA,EACP,KAAA,GAAQ,EAAA;AAAA,EACR,KAAA,GAAQ,EAAA;AAAA,EACR,SAAA,GAAY;AACd,CAAA,KAA2C;AACzC,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,GAAA;AAAA,IACzB,cAAc,IAAI,CAAA,OAAA,EAAU,KAAK,CAAA,OAAA,EAAU,KAAK,cAAc,SAAS,CAAA;AAAA,GACzE;AACA,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,WAAA,GAAc,OAAO,KAAA,KAAqC;AACrE,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAA,CAAa,UAAU,KAAK,CAAA;AACvD,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,gCAAA,GAAmC,OAAO,KAAA,KAAqC;AAC1F,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAA,CAAa,+CAA+C,KAAK,CAAA;AAC5F,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,YAAA,GAAe,OAAO,OAAA,KAAqC;AACtE,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAAY,CAAA,MAAA,EAAS,OAAO,CAAA,CAAE,CAAA;AACzD,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,oBAAoB,OAAO;AAAA,EACtC;AACF,CAAA,KAEyB;AACvB,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,GAAA;AAAA,IACzB,yCAAyC,eAAe,CAAA;AAAA,GAC1D;AACA,EAAA,OAAO,IAAA;AACT;AAQO,IAAM,cAAc,OAAO;AAAA,EAChC,OAAA;AAAA,EACA;AACF,CAAA,KAGuB;AACrB,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAAY,CAAA,MAAA,EAAS,OAAO,CAAA,CAAA,EAAI,SAAS,CAAA;AACpE,EAAA,OAAO,IAAA;AACT;;;ACxDO,IAAM,yBAAyB,YAAkC;AACtE,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAiB,2BAA2B,CAAA;AACvE,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,mBAAmB,YAAkC;AAChE,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAiB,WAAW,CAAA;AACvD,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,gBAAgB,OAAO;AAAA,EAClC,IAAA,GAAO,CAAA;AAAA,EACP,KAAA,GAAQ,EAAA;AAAA,EACR,KAAA,GAAQ;AACV,CAAA,KAAiD;AAC/C,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,GAAA;AAAA,IACzB,CAAA,8BAAA,EAAiC,IAAI,CAAA,OAAA,EAAU,KAAK,UAAU,KAAK,CAAA;AAAA,GACrE;AAEA,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,kBAAkB,OAAO;AAAA,EACpC;AACF,CAAA,KAE0B;AACxB,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAAI,CAAA,UAAA,EAAa,UAAU,CAAA,CAAE,CAAA;AACxD,EAAA,OAAO,IAAA,CAAK,IAAA;AACd;AAEO,IAAM,iBAAiB,OAAO;AAAA,EACnC,UAAA;AAAA,EACA;AACF,CAAA,KAG0B;AACxB,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAAe,CAAA,UAAA,EAAa,UAAU,CAAA,CAAA,EAAI,QAAQ,CAAA;AAC7E,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,cAAA,GAAiB,OAAO,EAAE,QAAA,EAAS,KAAmD;AACjG,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAA,CAAgB,aAAa,QAAQ,CAAA;AAChE,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,cAAA,GAAiB,OAAO,EAAE,UAAA,EAAW,KAA6C;AAC7F,EAAA,MAAM,GAAA,CAAI,MAAA,CAAO,CAAA,UAAA,EAAa,UAAU,CAAA,CAAE,CAAA;AAC5C;AAEO,IAAM,eAAA,GAAkB,OAAO,EAAE,UAAA,EAAW,KAA6C;AAC9F,EAAA,MAAM,GAAA,CAAI,KAAA,CAAM,CAAA,UAAA,EAAa,UAAU,CAAA,CAAE,CAAA;AAC3C;;;ACzDO,IAAM,gBAAgB,OAAO;AAAA,EAClC,IAAA,GAAO,CAAA;AAAA,EACP,KAAA,GAAQ,EAAA;AAAA,EACR,KAAA,GAAQ;AACV,CAAA,KAIgC;AAC9B,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,GAAA;AAAA,IACzB,CAAA,aAAA,EAAgB,IAAI,CAAA,OAAA,EAAU,KAAK,UAAU,KAAK,CAAA;AAAA,GACpD;AACA,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,sBAAsB,YAAgC;AACjE,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAe,eAAe,CAAA;AACzD,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,gBAAgB,OAAO;AAAA,EAClC;AACF,CAAA,KAEoC;AAClC,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAAyB,CAAA,OAAA,EAAU,QAAQ,CAAA,CAAE,CAAA;AACxE,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,YAAA,GAAe,OAAO,MAAA,KAAqD;AACtF,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAA,CAAsB,WAAW,MAAM,CAAA;AAClE,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,eAAe,OAAO;AAAA,EACjC,MAAA;AAAA,EACA;AACF,CAAA,KAGgC;AAC9B,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAAqB,CAAA,OAAA,EAAU,EAAE,CAAA,CAAA,EAAI,MAAM,CAAA;AACtE,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,eAAe,OAAO;AAAA,EACjC;AACF,CAAA,KAEgC;AAC9B,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,MAAA,CAAwB,CAAA,OAAA,EAAU,QAAQ,CAAA,CAAE,CAAA;AACvE,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,gBAAgB,OAAO;AAAA,EAClC;AACF,CAAA,KAEgC;AAC9B,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,KAAA,CAAuB,CAAA,OAAA,EAAU,QAAQ,CAAA,CAAE,CAAA;AACtE,EAAA,OAAO,IAAA;AACT;;;ACpCO,IAAM,kBAAkB,YAAoC;AACjE,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAmB,0BAA0B,CAAA;AACxE,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,mBAAmB,OAAO;AAAA,EACrC,IAAA,GAAO,CAAA;AAAA,EACP,KAAA,GAAQ,EAAA;AAAA,EACR,KAAA,GAAQ;AACV,CAAA,KAAiD;AAC/C,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,GAAA;AAAA,IACzB,CAAA,6BAAA,EAAgC,IAAI,CAAA,OAAA,EAAU,KAAK,UAAU,KAAK,CAAA;AAAA,GACpE;AAEA,EAAA,OAAO,IAAA;AACT;AAGO,IAAM,kBAAkB,YAAgC;AAC7D,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAe,0BAA0B,CAAA;AACpE,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,qBAAqB,OAAO;AAAA,EACvC;AACF,CAAA,KAE0B;AACxB,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAA,CAAgB,aAAa,YAAY,CAAA;AACpE,EAAA,OAAO,IAAA;AACT;;;ACxDO,IAAM,gBAAgB,YAAqC;AAChE,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAI,SAAS,CAAA;AACxC,EAAA,OAAO,IAAA;AACT;;;ACOA,IAAM,uBAAA,GAA0B,GAAA;AAEzB,IAAM,aAAA,GAAgB;AAAA,EAC3B,MAAM,KAAA,GAAsC;AAC1C,IAAA,IAAI;AACF,MAAA,MAAM,QAAA,GAAW,MAAM,GAAA,CAAI,GAAA,CAAyB,aAAA,EAAe;AAAA,QACjE,OAAA,EAAS;AAAA,OACV,CAAA;AACD,MAAA,OAAO,QAAA,CAAS,IAAA;AAAA,IAClB,SAAS,KAAA,EAAO;AACd,MAAA,MAAM,cAAA,GACJ,KAAA,YAAiB,KAAA,KAChB,KAAA,CAAM,OAAA,CAAQ,QAAA,CAAS,SAAS,CAAA,IAAK,KAAA,CAAM,OAAA,CAAQ,QAAA,CAAS,eAAe,CAAA,CAAA;AAE9E,MAAA,OAAO;AAAA,QACL,MAAA,EAAQ,OAAA;AAAA,QACR,SAAA,EAAA,iBAAW,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY;AAAA,QAClC,QAAA,EAAU;AAAA,UACR,OAAA,EAAS;AAAA,YACP,MAAA,EAAQ,OAAA;AAAA,YACR,SAAS,cAAA,GACL,sGAAA,GACA,KAAA,YAAiB,KAAA,GACf,MAAM,OAAA,GACN;AAAA,WACR;AAAA,UACA,QAAA,EAAU;AAAA,YACR,MAAA,EAAQ,SAAA;AAAA,YACR,OAAA,EAAS;AAAA;AACX;AACF,OACF;AAAA,IACF;AAAA,EACF;AACF;;;AC7BO,IAAM,kBAAkB,YAAyC;AACtE,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAwB,WAAW,CAAA;AAC9D,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,wBAAwB,YAAyC;AAC5E,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAwB,6BAA6B,CAAA;AAChF,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,eAAe,OAAO;AAAA,EACjC,IAAA,GAAO,CAAA;AAAA,EACP,KAAA,GAAQ,EAAA;AAAA,EACR,KAAA,GAAQ;AACV,CAAA,KAAiD;AAC/C,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,GAAA;AAAA,IACzB,CAAA,wBAAA,EAA2B,IAAI,CAAA,OAAA,EAAU,KAAK,UAAU,KAAK,CAAA;AAAA,GAC/D;AACA,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,kBAAkB,OAAO;AAAA,EACpC;AACF,CAAA,KAE0B;AACxB,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAAI,CAAA,UAAA,EAAa,UAAU,CAAA,CAAE,CAAA;AACxD,EAAA,OAAO,IAAA,CAAK,IAAA;AACd;AAEO,IAAM,iBAAiB,OAAO;AAAA,EACnC,UAAA;AAAA,EACA;AACF,CAAA,KAG0B;AACxB,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAAe,CAAA,UAAA,EAAa,UAAU,CAAA,CAAA,EAAI,QAAA,EAAU;AAAA,IAC7E,OAAA,EAAS;AAAA,MACP,cAAA,EAAgB;AAAA;AAClB,GACD,CAAA;AACD,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,cAAA,GAAiB,OAAO,QAAA,KAA2C;AAC9E,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAA,CAAgB,aAAa,QAAA,EAAU;AAAA,IAChE,OAAA,EAAS;AAAA,MACP,cAAA,EAAgB;AAAA;AAClB,GACD,CAAA;AACD,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,iBAAiB,OAAO;AAAA,EACnC;AACF,CAAA,KAEqB;AACnB,EAAA,MAAM,GAAA,CAAI,MAAA,CAAO,CAAA,UAAA,EAAa,kBAAkB,CAAA,CAAE,CAAA;AACpD;AAEO,IAAM,kBAAkB,OAAO;AAAA,EACpC;AACF,CAAA,KAEqB;AACnB,EAAA,MAAM,GAAA,CAAI,KAAA,CAAM,CAAA,UAAA,EAAa,kBAAkB,CAAA,CAAE,CAAA;AACnD;;;AC1EO,IAAM,kBAAkB,YAAkC;AAC/D,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAiB,WAAW,CAAA;AACvD,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,eAAe,OAAO;AAAA,EACjC,IAAA,GAAO,CAAA;AAAA,EACP,KAAA,GAAQ,EAAA;AAAA,EACR,KAAA,GAAQ;AACV,CAAA,KAAgD;AAC9C,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,GAAA;AAAA,IACzB,CAAA,6BAAA,EAAgC,IAAI,CAAA,OAAA,EAAU,KAAK,UAAU,KAAK,CAAA;AAAA,GACpE;AACA,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,kBAAkB,OAAO;AAAA,EACpC;AACF,CAAA,KAE0B;AACxB,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAAI,CAAA,SAAA,EAAY,UAAU,CAAA,CAAE,CAAA;AACvD,EAAA,OAAO,IAAA,CAAK,IAAA;AACd;AAEO,IAAM,wBAAwB,YAAkC;AACrE,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAiB,iBAAiB,CAAA;AAC7D,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,cAAA,GAAiB,OAAO,EAAE,QAAA,EAAS,KAAmD;AACjG,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAA,CAAgB,aAAa,QAAQ,CAAA;AAChE,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,iBAAiB,OAAO;AAAA,EACnC,UAAA;AAAA,EACA;AACF,CAAA,KAG0B;AACxB,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAAe,CAAA,SAAA,EAAY,UAAU,CAAA,CAAA,EAAI,QAAQ,CAAA;AAC5E,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,cAAA,GAAiB,OAAO,EAAE,UAAA,EAAW,KAA6C;AAC7F,EAAA,MAAM,GAAA,CAAI,MAAA,CAAO,CAAA,SAAA,EAAY,UAAU,CAAA,CAAE,CAAA;AAC3C;AACO,IAAM,gBAAA,GAAmB,OAAO,EAAE,UAAA,EAAW,KAA6C;AAC/F,EAAA,MAAM,GAAA,CAAI,KAAA,CAAM,CAAA,SAAA,EAAY,UAAU,CAAA,CAAE,CAAA;AAC1C;;;AChEO,IAAM,gBAAgB,YAAgC;AAC3D,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAe,SAAS,CAAA;AACnD,EAAA,OAAO,IAAA;AACT;;;ACHO,IAAM,YAAY,OAAO;AAAA,EAC9B,IAAA,GAAO,CAAA;AAAA,EACP,KAAA,GAAQ,EAAA;AAAA,EACR,KAAA,GAAQ,EAAA;AAAA,EACR,cAAA,GAAiB,EAAA;AAAA,EACjB,cAAc,EAAC;AAAA,EACf,SAAA,GAAY,EAAA;AAAA,EACZ,OAAA,GAAU,EAAA;AAAA,EACV,eAAA,GAAkB;AACpB,CAAA,KAS+B;AAC7B,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAoB,OAAA,EAAS;AAAA,IACtD,MAAA,EAAQ,EAAE,IAAA,EAAM,KAAA,EAAO,OAAO,cAAA,EAAgB,WAAA,EAAa,SAAA,EAAW,OAAA,EAAS,eAAA;AAAgB,GAChG,CAAA;AACD,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,YAAA,GAAe,OAAO,EAAE,OAAA,EAAQ,KAA4C;AACvF,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAAY,CAAA,MAAA,EAAS,OAAO,CAAA,CAAE,CAAA;AACzD,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,2BAA2B,YAAuC;AAC7E,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAsB,cAAc,CAAA;AAC/D,EAAA,OAAO,IAAA;AACT;AAmBO,IAAM,kBAAA,GAAqB,OAChC,UAAA,KACmC;AACnC,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAA,CAA4B,wBAAwB,UAAU,CAAA;AACzF,EAAA,OAAO,IAAA;AACT;;;ACrDO,IAAM,eAAA,GAAkB,OAAO,EAAE,OAAA,EAAQ,KAAgD;AAC9F,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAA;AAAA,IACzB,sBAAA;AAAA,IACA;AAAA,MACE,GAAG;AAAA,KACL;AAAA,IACA;AAAA,MACE,OAAA,EAAS;AAAA,QACP,cAAA,EAAgB;AAAA;AAClB;AACF,GACF;AACA,EAAA,OAAO,IAAA;AACT;AAGO,IAAM,oBAAoB,YAAuC;AACtE,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAI,2BAA2B,CAAA;AAC1D,EAAA,OAAO,IAAA;AACT;AAGO,IAAM,sCAAsC,YAE9C;AACH,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAI,6CAA6C,CAAA;AAC5E,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,wBAAwB,OAAO;AAAA,EAC1C,OAAA;AAAA,EACA;AACF,CAAA,KAGyB;AACvB,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAA;AAAA,IACzB,4BAAA;AAAA,IACA;AAAA,MACE,GAAG,OAAA;AAAA,MACH,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,MACE,OAAA,EAAS;AAAA,QACP,cAAA,EAAgB;AAAA;AAClB;AACF,GACF;AACA,EAAA,OAAO,IAAA;AACT;;;AChDO,IAAM,oBAAoB,YAAsC;AACrE,EAAA,MAAM,QAAA,GAAW,MAAM,GAAA,CAAI,GAAA,CAAqB,mBAAmB,CAAA;AACnE,EAAA,OAAO,QAAA,CAAS,IAAA;AAClB;AAEO,IAAM,gBAAA,GAAmB,OAC9B,UAAA,KAC+B;AAC/B,EAAA,MAAM,QAAA,GAAW,MAAM,GAAA,CAAI,GAAA,CAAuB,oBAAoB,UAAU,CAAA;AAChF,EAAA,OAAO,QAAA,CAAS,IAAA;AAClB;AAEO,IAAM,4BAA4B,OAAO;AAAA,EAC9C;AACF,CAAA,KAEiC;AAC/B,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAAsB,CAAA,gBAAA,EAAmB,MAAM,CAAA,CAAE,CAAA;AAC5E,EAAA,OAAO,IAAA;AACT;;;ACjBA,IAAM,QAAA,GAAW,gBAAA;AAEV,IAAM,mBAAA,GAAsB;AAAA;AAAA,EAEjC,MAAM,SAAS,MAAA,EAImB;AAChC,IAAA,MAAM,WAAA,GAAc,IAAI,eAAA,EAAgB;AAExC,IAAA,IAAI,MAAA,CAAO,eAAA;AACT,MAAA,WAAA,CAAY,MAAA,CAAO,iBAAA,EAAmB,MAAA,CAAO,eAAA,CAAgB,UAAU,CAAA;AACzE,IAAA,IAAI,MAAA,CAAO,WAAW,WAAA,CAAY,MAAA,CAAO,aAAa,MAAA,CAAO,SAAA,CAAU,UAAU,CAAA;AACjF,IAAA,IAAI,MAAA,CAAO,YAAY,WAAA,CAAY,MAAA,CAAO,cAAc,MAAA,CAAO,UAAA,CAAW,UAAU,CAAA;AAEpF,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,GAAA;AAAA,MACzB,CAAA,EAAG,QAAQ,CAAA,OAAA,EAAU,WAAA,CAAY,UAAU,CAAA;AAAA,KAC7C;AACA,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAAA;AAAA,EAGA,MAAM,YAAY,OAAA,EAA4C;AAC5D,IAAA,MAAM,GAAA,CAAI,GAAA,CAAI,CAAA,EAAG,QAAQ,UAAU,OAAO,CAAA;AAAA,EAC5C,CAAA;AAAA;AAAA,EAGA,MAAM,UAAA,CAAW;AAAA,IACf,UAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACF,EAIoC;AAClC,IAAA,MAAM,WAAA,GAAc,IAAI,eAAA,EAAgB;AACxC,IAAA,IAAI,OAAO,WAAA,CAAY,MAAA,CAAO,OAAA,EAAS,KAAA,CAAM,UAAU,CAAA;AAEvD,IAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,GAAA;AAAA,MACzB,CAAA,EAAG,QAAQ,CAAA,SAAA,EAAY,UAAU,IAAI,QAAQ,CAAA,CAAA,EAAI,WAAA,CAAY,QAAA,EAAU,CAAA;AAAA,KACzE;AACA,IAAA,OAAA,CAAQ,GAAA,CAAI,kBAAkB,IAAI,CAAA;AAClC,IAAA,OAAO,IAAA,CAAK,QAAQ,EAAC;AAAA,EACvB,CAAA;AAAA;AAAA,EAGA,MAAM,cAAc,OAAA,EAA8C;AAChE,IAAA,MAAM,GAAA,CAAI,IAAA,CAAK,CAAA,EAAG,QAAQ,cAAc,OAAO,CAAA;AAAA,EACjD,CAAA;AAAA;AAAA,EAGA,MAAM,eAAe,OAAA,EAAmE;AACtF,IAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,IAAA,CAA+B,CAAA,EAAG,QAAQ,CAAA,UAAA,CAAA,EAAc,OAAO,CAAA;AAC1F,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAAA;AAAA,EAGA,MAAM,iBAAA,CAAkB;AAAA,IACtB;AAAA,GACF,EAEkB;AAChB,IAAA,MAAM,IAAI,MAAA,CAAO,CAAA,EAAG,QAAQ,CAAA,WAAA,EAAc,SAAS,CAAA,CAAE,CAAA;AAAA,EACvD,CAAA;AAAA;AAAA,EAGA,MAAM,iBAAA,CAAkB;AAAA,IACtB,SAAA;AAAA,IACA;AAAA,GACF,EAGkB;AAChB,IAAA,MAAM,IAAI,GAAA,CAAI,CAAA,EAAG,QAAQ,CAAA,WAAA,EAAc,SAAS,IAAI,OAAO,CAAA;AAAA,EAC7D,CAAA;AAAA;AAAA,EAGA,MAAM,aAAA,CAAc;AAAA,IAClB;AAAA,GACF,EAEqB;AACnB,IAAA,IAAI;AACF,MAAA,MAAM,YAAY,MAAM,IAAA,CAAK,QAAA,CAAS,EAAE,iBAAiB,CAAA;AACzD,MAAA,OAAO,UAAU,YAAA,KAAiB,IAAA;AAAA,IACpC,SAAS,KAAA,EAAO;AACd,MAAA,OAAA,CAAQ,KAAA,CAAM,qCAAqC,KAAK,CAAA;AACxD,MAAA,OAAO,KAAA;AAAA,IACT;AAAA,EACF;AACF;;;AClGO,IAAM,yBAAyB,YAAmC;AACvE,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAkB,mBAAmB,CAAA;AAChE,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,mBAAmB,OAAO;AAAA,EACrC,IAAA,GAAO,CAAA;AAAA,EACP,KAAA,GAAQ,EAAA;AAAA,EACR,KAAA,GAAQ;AACV,CAAA,KAA6C;AAC3C,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,GAAA;AAAA,IACzB,CAAA,iBAAA,EAAoB,IAAI,CAAA,OAAA,EAAU,KAAK,UAAU,KAAK,CAAA;AAAA,GACxD;AACA,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,kBAAkB,OAAO;AAAA,EACpC;AACF,CAAA,KAE2B;AACzB,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAA,CAAiB,eAAe,SAAS,CAAA;AACpE,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,mBAAmB,OAAO;AAAA,EACrC;AACF,CAAA,KAE2B;AACzB,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAAgB,CAAA,WAAA,EAAc,WAAW,CAAA,CAAE,CAAA;AACtE,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,kBAAkB,OAAO;AAAA,EACpC,WAAA;AAAA,EACA;AACF,CAAA,KAG2B;AACzB,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAAgB,CAAA,WAAA,EAAc,WAAW,CAAA,CAAA,EAAI,SAAS,CAAA;AACjF,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,eAAA,GAAkB,OAAO,EAAE,WAAA,EAAY,KAA8C;AAChG,EAAA,MAAM,GAAA,CAAI,MAAA,CAAa,CAAA,WAAA,EAAc,WAAW,CAAA,CAAE,CAAA;AACpD;AAEO,IAAM,oBAAoB,OAAO;AAAA,EACtC;AACF,CAAA,KAEqB;AACnB,EAAA,MAAM,GAAA,CAAI,KAAA,CAAY,CAAA,WAAA,EAAc,WAAW,CAAA,CAAE,CAAA;AACnD;;;ACrCO,IAAM,uBAAuB,YAAiC;AACnE,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAgB,iBAAiB,CAAA;AAC5D,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,cAAc,OAAO;AAAA,EAChC,IAAA,GAAO,CAAA;AAAA,EACP,KAAA,GAAQ,EAAA;AAAA,EACR;AACF,CAAA,KAAsD;AACpD,EAAA,MAAM,WAAA,GAAc,IAAI,eAAA,CAAgB;AAAA,IACtC,IAAA,EAAM,KAAK,QAAA,EAAS;AAAA,IACpB,KAAA,EAAO,MAAM,QAAA,EAAS;AAAA,IACtB,GAAI,OAAA,EAAS,KAAA,IAAS,EAAE,KAAA,EAAO,QAAQ,KAAA,EAAM;AAAA,IAC7C,GAAI,OAAA,EAAS,OAAA,IAAW,EAAE,OAAA,EAAS,QAAQ,OAAA,EAAQ;AAAA,IACnD,GAAI,SAAS,UAAA,IAAc,EAAE,YAAY,OAAA,CAAQ,UAAA,CAAW,UAAS,EAAE;AAAA,IACvE,GAAI,SAAS,UAAA,IAAc,EAAE,YAAY,OAAA,CAAQ,UAAA,CAAW,UAAS,EAAE;AAAA,IACvE,GAAI,SAAS,WAAA,IAAe,EAAE,aAAa,OAAA,CAAQ,WAAA,CAAY,UAAS,EAAE;AAAA,IAC1E,GAAI,SAAS,aAAA,IAAiB,EAAE,UAAU,OAAA,CAAQ,aAAA,CAAc,UAAS,EAAE;AAAA,IAC3E,GAAI,SAAS,aAAA,IAAiB,EAAE,UAAU,OAAA,CAAQ,aAAA,CAAc,UAAS;AAAE,GAC5E,CAAA;AAED,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAA6B,CAAA,QAAA,EAAW,WAAW,CAAA,CAAE,CAAA;AAChF,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,mBAAmB,OAAO;AAAA,EACrC,IAAA,GAAO,CAAA;AAAA,EACP,KAAA,GAAQ,EAAA;AAAA,EACR;AACF,CAAA,KAA+C;AAC7C,EAAA,MAAM,WAAA,GAAc,IAAI,eAAA,CAAgB;AAAA,IACtC,IAAA,EAAM,KAAK,QAAA,EAAS;AAAA,IACpB,KAAA,EAAO,MAAM,QAAA,EAAS;AAAA,IACtB,GAAI,OAAA,EAAS,KAAA,IAAS,EAAE,KAAA,EAAO,QAAQ,KAAA,EAAM;AAAA,IAC7C,GAAI,OAAA,EAAS,OAAA,IAAW,EAAE,OAAA,EAAS,QAAQ,OAAA,EAAQ;AAAA,IACnD,GAAI,SAAS,UAAA,IAAc,EAAE,YAAY,OAAA,CAAQ,UAAA,CAAW,UAAS,EAAE;AAAA,IACvE,GAAI,SAAS,UAAA,IAAc,EAAE,YAAY,OAAA,CAAQ,UAAA,CAAW,UAAS,EAAE;AAAA,IACvE,GAAI,SAAS,WAAA,IAAe,EAAE,aAAa,OAAA,CAAQ,WAAA,CAAY,UAAS,EAAE;AAAA,IAC1E,GAAI,SAAS,aAAA,IAAiB,EAAE,UAAU,OAAA,CAAQ,aAAA,CAAc,UAAS,EAAE;AAAA,IAC3E,GAAI,SAAS,aAAA,IAAiB,EAAE,UAAU,OAAA,CAAQ,aAAA,CAAc,UAAS;AAAE,GAC5E,CAAA;AAED,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAAsB,CAAA,cAAA,EAAiB,WAAW,CAAA,CAAE,CAAA;AAC/E,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,iBAAiB,OAAO;AAAA,EACnC;AACF,CAAA,KAEyB;AACvB,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAAI,CAAA,QAAA,EAAW,SAAS,CAAA,CAAE,CAAA;AACrD,EAAA,OAAO,IAAA,CAAK,IAAA;AACd;AAEO,IAAM,qBAAqB,OAAO;AAAA,EACvC,SAAA;AAAA,EACA,IAAA,GAAO,CAAA;AAAA,EACP,KAAA,GAAQ,EAAA;AAAA,EACR,KAAA,GAAQ;AACV,CAAA,KAKwC;AACtC,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAA6B,CAAA,kBAAA,EAAqB,SAAS,CAAA,CAAA,EAAI;AAAA,IACxF,MAAA,EAAQ;AAAA,MACN,IAAA,EAAM,KAAK,QAAA,EAAS;AAAA,MACpB,KAAA,EAAO,MAAM,QAAA,EAAS;AAAA,MACtB,GAAI,KAAA,IAAS,EAAE,KAAA;AAAM;AACvB,GACD,CAAA;AACD,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,8BAA8B,OAAO;AAAA,EAChD;AACF,CAAA,KAEkC;AAChC,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAAuB,CAAA,yBAAA,EAA4B,SAAS,CAAA,CAAE,CAAA;AACzF,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,wBAAwB,OAAO;AAAA,EAC1C;AACF,CAAA,KAEgC;AAC9B,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAAqB,CAAA,0BAAA,EAA6B,eAAe,CAAA,CAAE,CAAA;AAC9F,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,oBAAA,GAAuB,OAAO,OAAA,KAAgD;AACzF,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAA,CAAsB,oBAAoB,OAAA,EAAS;AAAA,IAC5E,OAAA,EAAS;AAAA,MACP,cAAA,EAAgB;AAAA;AAClB,GACD,CAAA;AACD,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,qBAAA,GAAwB,OAAO,QAAA,KAAmD;AAC7F,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAA,CAAwB,oBAAoB,QAAA,EAAU;AAAA,IAC/E,OAAA,EAAS;AAAA,MACP,cAAA,EAAgB;AAAA;AAClB,GACD,CAAA;AACD,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,oBAAA,GAAuB,OAAO,IAAA,KAA6C;AACtF,EAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAS,GAAI,MAAM,GAAA,CAAI,GAAA;AAAA,IACnC,CAAA,wBAAA,EAA2B,IAAA,CAAK,GAAA,CAAI,iBAAiB,CAAC,CAAA,CAAA;AAAA,IACtD,IAAA;AAAA,IACA;AAAA,MACE,OAAA,EAAS;AAAA,QACP,cAAA,EAAgB;AAAA;AAClB;AACF,GACF;AACA,EAAA,OAAO,QAAA;AACT;AAEO,IAAM,uBAAuB,OAAO;AAAA,EACzC;AACF,CAAA,KAEqB;AACnB,EAAA,MAAM,GAAA,CAAI,MAAA,CAAO,CAAA,kBAAA,EAAqB,eAAe,CAAA,CAAE,CAAA;AACzD;AAEO,IAAM,wBAAwB,OAAO;AAAA,EAC1C;AACF,CAAA,KAEqB;AACnB,EAAA,MAAM,GAAA,CAAI,KAAA,CAAM,CAAA,kBAAA,EAAqB,eAAe,CAAA,CAAE,CAAA;AACxD;AAEO,IAAM,aAAA,GAAgB,OAAO,OAAA,KAAyC;AAC3E,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAA,CAAe,YAAY,OAAA,EAAS;AAAA,IAC7D,OAAA,EAAS;AAAA,MACP,cAAA,EAAgB;AAAA;AAClB,GACD,CAAA;AACD,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,gBAAgB,OAAO;AAAA,EAClC,SAAA;AAAA,EACA;AACF,CAAA,KAGyB;AACvB,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAAc,CAAA,SAAA,EAAY,SAAS,CAAA,CAAA,EAAI,OAAA,EAAS;AAAA,IACzE,OAAA,EAAS;AAAA,MACP,cAAA,EAAgB;AAAA;AAClB,GACD,CAAA;AACD,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,yBAAyB,OAAO;AAAA,EAC3C;AACF,CAAA,KAEqB;AACnB,EAAA,MAAM,GAAA,CAAI,MAAA,CAAO,CAAA,gBAAA,EAAmB,OAAO,CAAA,CAAE,CAAA;AAC/C;AAEO,IAAM,aAAA,GAAgB,OAAO,EAAE,SAAA,EAAU,KAA4C;AAC1F,EAAA,MAAM,GAAA,CAAI,MAAA,CAAO,CAAA,SAAA,EAAY,SAAS,CAAA,CAAE,CAAA;AAC1C;AAEO,IAAM,cAAA,GAAiB,OAAO,EAAE,SAAA,EAAU,KAA4C;AAC3F,EAAA,MAAM,GAAA,CAAI,KAAA,CAAM,CAAA,SAAA,EAAY,SAAS,CAAA,CAAE,CAAA;AACzC;AAEO,IAAM,wBAAwB,OAAO;AAAA,EAC1C,QAAA;AAAA,EACA,IAAA,GAAO,CAAA;AAAA,EACP,KAAA,GAAQ,EAAA;AAAA,EACR;AACF,CAAA,KAAgD;AAC9C,EAAA,MAAM,WAAA,GAAc,IAAI,eAAA,CAAgB;AAAA,IACtC,IAAA,EAAM,KAAK,QAAA,EAAS;AAAA,IACpB,KAAA,EAAO,MAAM,QAAA,EAAS;AAAA,IACtB,GAAI,OAAA,EAAS,KAAA,IAAS,EAAE,KAAA,EAAO,QAAQ,KAAA,EAAM;AAAA,IAC7C,GAAI,OAAA,EAAS,OAAA,IAAW,EAAE,OAAA,EAAS,QAAQ,OAAA,EAAQ;AAAA,IACnD,GAAI,SAAS,UAAA,IAAc,EAAE,YAAY,OAAA,CAAQ,UAAA,CAAW,UAAS,EAAE;AAAA,IACvE,GAAI,SAAS,WAAA,IAAe,EAAE,aAAa,OAAA,CAAQ,WAAA,CAAY,UAAS,EAAE;AAAA,IAC1E,GAAI,SAAS,aAAA,IAAiB,EAAE,UAAU,OAAA,CAAQ,aAAA,CAAc,UAAS,EAAE;AAAA,IAC3E,GAAI,SAAS,aAAA,IAAiB,EAAE,UAAU,OAAA,CAAQ,aAAA,CAAc,UAAS;AAAE,GAC5E,CAAA;AAED,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAsB,CAAA,iBAAA,EAAoB,QAAQ,CAAA,CAAA,EAAI,WAAW,CAAA,CAAE,CAAA;AAC9F,EAAA,OAAO,IAAA;AACT;AAOO,IAAM,kBAAkB,OAAO;AAAA,EACpC,OAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,KAIwC;AACtC,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,KAA8B,CAAA,yBAAA,CAAA,EAA6B;AAAA,IACpF,OAAA,EAAS,OAAA;AAAA,IACT,SAAA,EAAW,SAAA;AAAA,IACX;AAAA,GACD,CAAA;AACD,EAAA,OAAO,IAAA;AACT;;;AClPO,IAAM,aAAa,YAA6B;AACrD,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAsB,cAAc,CAAA;AAC/D,EAAA,OAAO,IAAA,CAAK,IAAA;AACd;;;ACCO,IAAM,uBAAuB,OAAO;AAAA,EACzC;AACF,CAAA,KAEwB;AACtB,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,IAAA,CAAK,yBAAA,EAA2B,EAAE,YAAA,EAAc,CAAA;AAC3E,EAAA,OAAO,IAAA,CAAK,OAAA;AACd;AAQO,IAAM,gBAAgB,OAAO;AAAA,EAClC,IAAA,GAAO,CAAA;AAAA,EACP,KAAA,GAAQ,EAAA;AAAA,EACR,KAAA,GAAQ;AACV,CAAA,KAAmD;AACjD,EAAA,MAAM,WAAA,GAAc,IAAI,eAAA,CAAgB;AAAA,IACtC,IAAA,EAAM,KAAK,QAAA,EAAS;AAAA,IACpB,KAAA,EAAO,MAAM,QAAA,EAAS;AAAA,IACtB;AAAA,GACD,CAAA;AACD,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAAI,CAAA,UAAA,EAAa,WAAW,CAAA,CAAE,CAAA;AACzD,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,6BAA6B,YAAuC;AAC/E,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAI,kCAAkC,CAAA;AACjE,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,eAAA,GAAkB,OAAO,SAAA,KAA+C;AACnF,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAA,CAAK,aAAa,SAAS,CAAA;AACtD,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,gBAAA,GAAmB,OAAO,EAAE,EAAA,EAAG,KAA2C;AACrF,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAAI,CAAA,UAAA,EAAa,EAAE,CAAA,CAAE,CAAA;AAChD,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,kBAAkB,OAAO;AAAA,EACpC,EAAA;AAAA,EACA;AACF,CAAA,KAG2B;AACzB,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAAI,CAAA,UAAA,EAAa,EAAE,CAAA,CAAA,EAAI,SAAS,CAAA;AAC3D,EAAA,OAAO,IAAA;AACT;;;ACpDO,IAAM,kBAAkB,OAAO;AAAA,EACpC,IAAA,GAAO,CAAA;AAAA,EACP,KAAA,GAAQ,EAAA;AAAA,EACR,KAAA,GAAQ;AACV,CAAA,KAIkC;AAChC,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,GAAA;AAAA,IACzB,CAAA,eAAA,EAAkB,IAAI,CAAA,OAAA,EAAU,KAAK,UAAU,KAAK,CAAA;AAAA,GACtD;AACA,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,kBAAkB,OAAO;AAAA,EACpC;AACF,CAAA,KAE0B;AACxB,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAAe,CAAA,SAAA,EAAY,UAAU,CAAA,CAAE,CAAA;AAClE,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,wBAAwB,YAA2C;AAC9E,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAA0B,6BAA6B,CAAA;AAClF,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,cAAA,GAAiB,OAAO,QAAA,KAA2D;AAC9F,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAA,CAAwB,aAAa,QAAQ,CAAA;AACxE,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,iBAAiB,OAAO;AAAA,EACnC,UAAA;AAAA,EACA;AACF,CAAA,KAGkC;AAChC,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAAuB,CAAA,SAAA,EAAY,UAAU,CAAA,CAAA,EAAI,QAAQ,CAAA;AACpF,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,iBAAiB,OAAO;AAAA,EACnC;AACF,CAAA,KAEkC;AAChC,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,MAAA,CAA0B,CAAA,SAAA,EAAY,UAAU,CAAA,CAAE,CAAA;AAC7E,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,kBAAkB,OAAO;AAAA,EACpC;AACF,CAAA,KAEkC;AAChC,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,KAAA,CAAyB,CAAA,SAAA,EAAY,UAAU,CAAA,CAAE,CAAA;AAC5E,EAAA,OAAO,IAAA;AACT;;;AChDO,IAAM,eAAe,YAA6B;AACvD,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAuB,cAAc,CAAA;AAChE,EAAA,OAAO,MAAM,OAAA,IAAW,EAAA;AAC1B;AAMO,IAAM,UAAU,OAAO;AAAA,EAC5B,eAAA;AAAA,EACA,WAAA,GAAc;AAChB,CAAA,KAGgC;AAC9B,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,KAAsB,WAAA,EAAa;AAAA,IAC5D,eAAA,EAAiB,eAAA;AAAA,IACjB;AAAA,GACD,CAAA;AACD,EAAA,OAAO,IAAA;AACT;;;AChCO,IAAM,4BAA4B,OAAO;AAAA,EAC9C,KAAA,GAAQ,CAAA;AAAA,EACR,aAAA,GAAgB;AAClB,CAAA,KAG0C;AACxC,EAAA,MAAM,QAAA,GAAW,MAAM,GAAA,CAAI,GAAA,CAAI,iBAAiB,KAAK,CAAA,eAAA,EAAkB,aAAa,CAAA,CAAE,CAAA;AACtF,EAAA,OAAO,QAAA,CAAS,IAAA;AAClB;AAEO,IAAM,aAAa,OAAO;AAAA,EAC/B,SAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA,GAAgB;AAClB,CAAA,KAIyB;AACvB,EAAA,MAAM,QAAA,GAAW,MAAM,GAAA,CAAI,GAAA;AAAA,IACzB,CAAA,2BAAA,EAA8B,SAAS,CAAA,UAAA,EAAa,QAAQ,kBAAkB,aAAa,CAAA;AAAA,GAC7F;AACA,EAAA,OAAO,QAAA,CAAS,IAAA;AAClB;AAEO,IAAM,eAAe,OAAO;AAAA,EACjC,SAAA;AAAA,EACA;AACF,CAAA,KAGwB;AACtB,EAAA,MAAM,QAAA,GAAW,MAAM,GAAA,CAAI,GAAA;AAAA,IACzB,CAAA,gCAAA,EAAmC,SAAS,CAAA,UAAA,EAAa,QAAQ,CAAA;AAAA,GACnE;AACA,EAAA,OAAO,QAAA,CAAS,IAAA;AAClB;AAEO,IAAM,iCAAiC,OAAO;AAAA,EACnD,SAAA;AAAA,EACA,OAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,KAK6C;AAC3C,EAAA,MAAM,QAAA,GAAW,MAAM,GAAA,CAAI,GAAA;AAAA,IACzB,CAAA,6BAAA,EAAgC,SAAA,CAAU,WAAA,EAAa,CAAA,SAAA,EAAY,OAAA,CAAQ,WAAA,EAAa,CAAA,cAAA,EAAiB,YAAY,CAAA,YAAA,EAAe,UAAU,CAAA;AAAA,GAChJ;AACA,EAAA,OAAO,QAAA,CAAS,IAAA;AAClB;AAEO,IAAM,uBAAuB,OAAO;AAAA,EACzC,UAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,KAKmC;AACjC,EAAA,MAAM,MAAA,GAAS,IAAI,eAAA,EAAgB;AAEnC,EAAA,IAAI,UAAA,IAAc,UAAA,CAAW,MAAA,GAAS,CAAA,EAAG;AACvC,IAAA,MAAA,CAAO,MAAA,CAAO,YAAA,EAAc,UAAA,CAAW,IAAA,CAAK,GAAG,CAAC,CAAA;AAAA,EAClD;AACA,EAAA,IAAI,WAAA,IAAe,WAAA,CAAY,MAAA,GAAS,CAAA,EAAG;AACzC,IAAA,MAAA,CAAO,MAAA,CAAO,aAAA,EAAe,WAAA,CAAY,IAAA,CAAK,GAAG,CAAC,CAAA;AAAA,EACpD;AACA,EAAA,IAAI,YAAA,IAAgB,YAAA,CAAa,MAAA,GAAS,CAAA,EAAG;AAC3C,IAAA,MAAA,CAAO,MAAA,CAAO,cAAA,EAAgB,YAAA,CAAa,IAAA,CAAK,GAAG,CAAC,CAAA;AAAA,EACtD;AACA,EAAA,IAAI,WAAA,IAAe,WAAA,CAAY,MAAA,GAAS,CAAA,EAAG;AACzC,IAAA,MAAA,CAAO,MAAA,CAAO,aAAA,EAAe,WAAA,CAAY,IAAA,CAAK,GAAG,CAAC,CAAA;AAAA,EACpD;AAEA,EAAA,MAAM,WAAA,GAAc,OAAO,QAAA,EAAS;AACpC,EAAA,MAAM,MAAM,CAAA,iBAAA,EAAoB,WAAA,GAAc,CAAA,CAAA,EAAI,WAAW,KAAK,EAAE,CAAA,CAAA;AAEpE,EAAA,MAAM,QAAA,GAAW,MAAM,GAAA,CAAI,GAAA,CAAI,GAAG,CAAA;AAClC,EAAA,OAAO,QAAA,CAAS,IAAA;AAClB;AAEO,IAAM,aAAa,OAAO;AAAA,EAC/B,SAAA;AAAA,EACA,QAAA;AAAA,EACA,aAAA,GAAgB;AAClB,CAAA,KAIyB;AACvB,EAAA,MAAM,QAAA,GAAW,MAAM,GAAA,CAAI,GAAA;AAAA,IACzB,CAAA,2BAAA,EAA8B,SAAS,CAAA,UAAA,EAAa,QAAQ,kBAAkB,aAAa,CAAA;AAAA,GAC7F;AACA,EAAA,OAAO,QAAA,CAAS,IAAA;AAClB;AAEO,IAAM,eAAe,OAAO;AAAA,EACjC,SAAA;AAAA,EACA;AACF,CAAA,KAGwB;AACtB,EAAA,MAAM,QAAA,GAAW,MAAM,GAAA,CAAI,GAAA;AAAA,IACzB,CAAA,gCAAA,EAAmC,SAAS,CAAA,UAAA,EAAa,QAAQ,CAAA;AAAA,GACnE;AACA,EAAA,OAAO,QAAA,CAAS,IAAA;AAClB;AAEO,IAAM,sBAAsB,YAA6B;AAC9D,EAAA,MAAM,QAAA,GAAW,MAAM,GAAA,CAAI,GAAA,CAAI,0BAA0B,CAAA;AACzD,EAAA,OAAO,QAAA,CAAS,IAAA;AAClB;;;AC/HO,IAAM,eAAe,OAAO;AAAA,EACjC,OAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,KAKqB;AACnB,EAAA,MAAM,QAAA,GAAW,MAAM,GAAA,CAAI,IAAA,CAAK,CAAA,QAAA,CAAA,EAAY;AAAA,IAC1C,OAAA;AAAA,IACA,YAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,GACD,CAAA;AACD,EAAA,OAAO,QAAA,CAAS,IAAA;AAClB;AAOO,IAAM,sBAAsB,OAAO;AAAA,EACxC;AACF,CAAA,KAE4C;AAC1C,EAAA,MAAM,WAAW,MAAM,GAAA,CAAI,GAAA,CAAI,CAAA,eAAA,EAAkB,OAAO,CAAA,CAAE,CAAA;AAC1D,EAAA,OAAO,QAAA,CAAS,IAAA;AAClB;;;AChCO,IAAM,WAAW,YAA8B;AACpD,EAAA,MAAM,QAAA,GAAW,MAAM,GAAA,CAAI,GAAA,CAAI,OAAO,CAAA;AACtC,EAAA,OAAO,QAAA,CAAS,IAAA;AAClB;AAEO,IAAM,cAAc,OAAO;AAAA,EAChC;AACF,CAAA,KAEsB;AACpB,EAAA,MAAM,WAAW,MAAM,GAAA,CAAI,GAAA,CAAI,CAAA,MAAA,EAAS,MAAM,CAAA,CAAE,CAAA;AAChD,EAAA,OAAO,QAAA,CAAS,IAAA;AAClB;AAEO,IAAM,UAAA,GAAa,OAAO,IAAA,KAAgC;AAC/D,EAAA,MAAM,QAAA,GAAW,MAAM,GAAA,CAAI,IAAA,CAAK,SAAS,IAAI,CAAA;AAC7C,EAAA,OAAO,QAAA,CAAS,IAAA;AAClB;AAEO,IAAM,aAAa,OAAO;AAAA,EAC/B,MAAA;AAAA,EACA;AACF,CAAA,KAGsB;AACpB,EAAA,MAAM,WAAW,MAAM,GAAA,CAAI,IAAI,CAAA,MAAA,EAAS,MAAM,IAAI,IAAI,CAAA;AACtD,EAAA,OAAO,QAAA,CAAS,IAAA;AAClB;AAEO,IAAM,aAAa,OAAO;AAAA,EAC/B;AACF,CAAA,KAEqB;AACnB,EAAA,MAAM,GAAA,CAAI,MAAA,CAAO,CAAA,MAAA,EAAS,MAAM,CAAA,CAAE,CAAA;AACpC;;;AChBO,IAAM,cAAA,GAAiB,OAAO,QAAA,KAAgD;AACnF,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAA,CAAqB,aAAa,QAAA,EAAU;AAAA,IACrE,OAAA,EAAS;AAAA,MACP,cAAA,EAAgB;AAAA;AAClB,GACD,CAAA;AACD,EAAA,OAAO,IAAA;AACT;AAYO,IAAM,eAAe,OAAO;AAAA,EACjC,IAAA,GAAO,CAAA;AAAA,EACP,KAAA,GAAQ,EAAA;AAAA,EACR,KAAA,GAAQ,EAAA;AAAA,EACR,YAAA,GAAe;AACjB,CAAA,KAAsD;AACpD,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,GAAA;AAAA,IACzB,2BAA2B,IAAI,CAAA,OAAA,EAAU,KAAK,CAAA,OAAA,EAAU,KAAK,mBAAmB,YAAY,CAAA;AAAA,GAC9F;AACA,EAAA,OAAO,IAAA;AACT;;;AC3BO,IAAM,UAAA,GAAa,OAAO,IAAA,KAA4C;AAC3E,EAAA,MAAM,QAAA,GAAW,MAAM,GAAA,CAAI,IAAA,CAAe,gBAAgB,IAAA,EAAM;AAAA,IAC9D,OAAA,EAAS;AAAA,MACP,cAAA,EAAgB;AAAA;AAClB,GACD,CAAA;AACD,EAAA,OAAO,QAAA,CAAS,IAAA;AAClB;AAEO,IAAM,sBAAsB,OAAO;AAAA,EACxC,MAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,KAKyB;AACvB,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAA;AAAA,IACzB,oBAAA;AAAA,IACA;AAAA,MACE,MAAA;AAAA,MACA,MAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA;AAAA,MACE,OAAA,EAAS;AAAA,QACP,cAAA,EAAgB;AAAA;AAClB;AACF,GACF;AACA,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,cAAc,OAAO;AAAA,EAChC,MAAA;AAAA,EACA;AACF,CAAA,KAGyB;AACvB,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAA;AAAA,IACzB,QAAA;AAAA,IACA;AAAA,MACE,MAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA;AAAA,MACE,OAAA,EAAS;AAAA,QACP,cAAA,EAAgB;AAAA;AAClB;AACF,GACF;AACA,EAAA,OAAO,IAAA;AACT;;;ACrEO,IAAM,eAAe,YAAsC;AAChE,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAqB,QAAQ,CAAA;AACxD,EAAA,OAAO,IAAA;AACT;;;ACbO,IAAM,oBAAoB,YAA6B;AAC5D,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAY,oBAAoB,CAAA;AAC3D,EAAA,OAAO,IAAA;AACT;;;ACIO,IAAM,sBAAsB,YAAoC;AACrE,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAmB,CAAA,yBAAA,CAA2B,CAAA;AACzE,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,2BAA2B,OAAO;AAAA,EAC7C;AACF,CAAA,KAE8B;AAC5B,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAAmB,CAAA,8BAAA,EAAiC,IAAI,CAAA,CAAE,CAAA;AACrF,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,eAAe,YAAoC;AAC9D,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAmB,mBAAmB,CAAA;AACjE,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,WAAW,OAAO;AAAA,EAC7B,IAAA,GAAO,CAAA;AAAA,EACP,KAAA,GAAQ,EAAA;AAAA,EACR,KAAA,GAAQ,EAAA;AAAA,EACR;AACF,CAAA,KAAwC;AACtC,EAAA,MAAM,MAAA,GAAS,IAAI,eAAA,CAAgB;AAAA,IACjC,IAAA,EAAM,OAAO,IAAI,CAAA;AAAA,IACjB,KAAA,EAAO,OAAO,KAAK,CAAA;AAAA,IACnB,GAAI,KAAA,IAAS,EAAE,KAAA,EAAM;AAAA,IACrB,GAAI,MAAA,IAAU,EAAE,MAAA;AAAO,GACxB,CAAA;AACD,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAAkB,CAAA,MAAA,EAAS,MAAM,CAAA,CAAE,CAAA;AAC9D,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,WAAA,GAAc,OAAO,EAAE,MAAA,EAAO,KAA0C;AACnF,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAAW,CAAA,KAAA,EAAQ,MAAM,CAAA,CAAE,CAAA;AACtD,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,UAAA,GAAa,OAAO,EAAE,IAAA,EAAK,KAA0C;AAChF,EAAA,MAAM,GAAA,CAAI,IAAA,CAAK,OAAA,EAAS,IAAI,CAAA;AAC9B;AAEO,IAAM,aAAa,OAAO;AAAA,EAC/B,MAAA;AAAA,EACA;AACF,CAAA,KAGqB;AACnB,EAAA,MAAM,GAAA,CAAI,GAAA,CAAI,CAAA,KAAA,EAAQ,MAAM,IAAI,IAAI,CAAA;AACtC;AAEO,IAAM,UAAA,GAAa,OAAO,EAAE,MAAA,EAAO,KAAyC;AACjF,EAAA,MAAM,GAAA,CAAI,MAAA,CAAO,CAAA,KAAA,EAAQ,MAAM,CAAA,CAAE,CAAA;AACnC;AACO,IAAM,WAAA,GAAc,OAAO,EAAE,MAAA,EAAO,KAAyC;AAClF,EAAA,MAAM,GAAA,CAAI,KAAA,CAAM,CAAA,KAAA,EAAQ,MAAM,CAAA,CAAE,CAAA;AAClC;;;AC1DO,IAAM,kBAAkB,YAAoC;AACjE,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAA0B,eAAe,CAAA;AACpE,EAAA,OAAO,IAAA,CAAK,IAAA;AACd;AAEO,IAAM,kBAAA,GAAqB,OAChC,QAAA,KAC2B;AAC3B,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,GAAA,CAA0B,iBAAiB,QAAQ,CAAA;AAC9E,EAAA,OAAO,IAAA,CAAK,IAAA;AACd;;;ACEO,IAAM,yBAAyB,YAA0C;AAC9E,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAyB,+BAA+B,CAAA;AACnF,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,gBAAgB,OAAO;AAAA,EAClC,IAAA,GAAO,CAAA;AAAA,EACP,KAAA,GAAQ,EAAA;AAAA,EACR,KAAA,GAAQ;AACV,CAAA,KAAmD;AACjD,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,GAAA;AAAA,IACzB,CAAA,0BAAA,EAA6B,IAAI,CAAA,OAAA,EAAU,KAAK,UAAU,KAAK,CAAA;AAAA,GACjE;AACA,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,mBAAmB,OAAO;AAAA,EACrC;AACF,CAAA,KAE2B;AACzB,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAAI,CAAA,WAAA,EAAc,WAAW,CAAA,CAAE,CAAA;AAC1D,EAAA,OAAO,IAAA,CAAK,IAAA;AACd;AAEO,IAAM,kBAAkB,OAAO;AAAA,EACpC,WAAA;AAAA,EACA;AACF,CAAA,KAG2B;AACzB,EAAA,MAAM,EAAE,MAAK,GAAI,MAAM,IAAI,GAAA,CAAgB,CAAA,WAAA,EAAc,WAAW,CAAA,CAAA,EAAI,SAAA,EAAW;AAAA,IACjF,OAAA,EAAS;AAAA,MACP,cAAA,EAAgB;AAAA;AAClB,GACD,CAAA;AACD,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,eAAA,GAAkB,OAAO,SAAA,KAA6C;AACjF,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,MAAM,GAAA,CAAI,IAAA,CAAiB,cAAc,SAAA,EAAW;AAAA,IACnE,OAAA,EAAS;AAAA,MACP,cAAA,EAAgB;AAAA;AAClB,GACD,CAAA;AACD,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,kBAAkB,OAAO;AAAA,EACpC;AACF,CAAA,KAEqB;AACnB,EAAA,MAAM,GAAA,CAAI,MAAA,CAAO,CAAA,WAAA,EAAc,WAAW,CAAA,CAAE,CAAA;AAC9C;AAEO,IAAM,mBAAmB,OAAO;AAAA,EACrC;AACF,CAAA,KAEqB;AACnB,EAAA,MAAM,GAAA,CAAI,KAAA,CAAM,CAAA,WAAA,EAAc,WAAW,CAAA,CAAE,CAAA;AAC7C","file":"services.js","sourcesContent":["import axios, { type AxiosInstance } from 'axios'\n\n/**\n * Configuration for the shared API client.\n * Each consuming app must call configureApi() with its own baseURL and auth.\n */\nexport interface IApiConfig {\n /** Backend base URL (e.g. \"http://localhost:4000/\" or \"https://api.myapp.com/\") */\n baseURL: string\n /** Returns the current auth token for request headers */\n getToken: () => string | undefined\n /** Called when a new token is received after refresh (e.g. update your store) */\n onTokenRefresh?: (newToken: string) => void\n /** Called when refresh fails (e.g. clear session, redirect to login) */\n onUnauthorized?: () => void\n}\n\n// Default instance; replaced when configureApi() is called by the consuming app\nlet api: AxiosInstance = axios.create({\n baseURL: '',\n headers: { 'Content-Type': 'application/json' }\n})\n\n/**\n * Configure the shared API client. Must be called by the consuming app before using any service.\n * @example\n * // In your app (e.g. main.tsx or before first API call):\n * import { configureApi } from 'erp-pos-ecommerce-shared'\n * import { useAuthStore } from './store/authStore'\n *\n * configureApi({\n * baseURL: import.meta.env.VITE_API_URL ?? 'http://localhost:4000/',\n * getToken: () => useAuthStore.getState().token,\n * onTokenRefresh: (newToken) => useAuthStore.setState({ token: newToken }),\n * onUnauthorized: () => { useAuthStore.setState({ token: undefined }); redirectToLogin() }\n * })\n */\nexport function configureApi(config: IApiConfig): AxiosInstance {\n const { baseURL, getToken, onTokenRefresh, onUnauthorized } = config\n\n const newApi = axios.create({\n baseURL,\n headers: {\n 'Content-Type': 'application/json',\n ...(getToken() && { Authorization: `Bearer ${getToken()}` })\n }\n })\n\n newApi.interceptors.request.use((reqConfig) => {\n const token = getToken()\n if (token) {\n reqConfig.headers.Authorization = `Bearer ${token}`\n }\n return reqConfig\n })\n\n const refreshAxios = axios.create({ baseURL })\n\n newApi.interceptors.response.use(\n (response) => response,\n async (error) => {\n const originalRequest = error.config\n\n if (error.response?.status === 401 && !originalRequest._retry && onTokenRefresh && onUnauthorized) {\n originalRequest._retry = true\n\n try {\n const response = await refreshAxios.get('/auth/refresh', {\n headers: getToken() ? { Authorization: `Bearer ${getToken()}` } : {}\n })\n const newToken = response.data?.token\n if (newToken) {\n onTokenRefresh(newToken)\n originalRequest.headers.Authorization = `Bearer ${newToken}`\n return newApi(originalRequest)\n }\n } catch {\n onUnauthorized()\n return Promise.reject(error)\n }\n }\n\n return Promise.reject(error)\n }\n )\n\n api = newApi\n return api\n}\n\n/**\n * Shared axios instance used by all services.\n * Valid only after the consuming app has called configureApi().\n */\nexport { api }\n","import type {\n IAttribute,\n IAttributeFilter,\n IAttributeResponse,\n IAttributeValue\n} from '../interfaces/attribute.interface'\nimport { api } from './config'\n\nexport const getAttributes = async ({\n skip,\n limit,\n query\n}: {\n skip: number\n limit: number\n query: string\n}): Promise<IAttributeResponse> => {\n const { data } = await api.get('/attribute/category', { params: { skip, limit, query } })\n return data\n}\n\nexport const getAttributesForSelect = async (): Promise<IAttribute[]> => {\n const { data } = await api.get('/attribute/select')\n return data\n}\n\nexport const getAttributesTable = async ({\n skip,\n limit,\n filters\n}: {\n skip?: number\n limit?: number\n filters?: IAttributeFilter\n}): Promise<IAttributeResponse> => {\n const queryParams = new URLSearchParams({\n skip: skip?.toString() ?? \"\",\n limit: limit?.toString() ?? \"\",\n ...(filters?.query && { query: filters.query }),\n ...(filters?.categoryId && { categoryId: filters.categoryId.toString() }),\n ...(filters?.productId && { productId: filters.productId.toString() }),\n ...(filters?.materialId && { materialId: filters.materialId.toString() }),\n })\n const { data } = await api.get(`/attribute?${queryParams}`)\n return data\n}\n\nexport const getAttributeById = async ({\n attributeId\n}: {\n attributeId: string\n}): Promise<IAttribute> => {\n const { data } = await api.get(`/attribute/${attributeId}`)\n return data\n}\n\nexport const getAttributesByProductID = async ({\n productId\n}: {\n productId: string\n}): Promise<IAttribute[]> => {\n const { data } = await api.get(`/attribute/${productId}/product`)\n return data\n}\n\nexport const getAttributesByCategoryID = async ({\n categoryID\n}: {\n categoryID: string\n}): Promise<IAttribute[]> => {\n const { data } = await api.get(`/attribute/${categoryID}/category/`)\n return data\n}\n\nexport const getAttributeValues = async ({\n attributeId\n}: {\n attributeId: string\n}): Promise<IAttributeValue[]> => {\n const { data } = await api.get(`/attribute/${attributeId}/values`)\n return data\n}\n\nexport const createAttribute = async ({\n attribute\n}: {\n attribute: {\n name: string\n values: string[]\n productId: number\n }\n}): Promise<IAttribute> => {\n const { data } = await api.post('/attribute', {\n name: attribute.name,\n values: attribute.values,\n productID: attribute.productId,\n })\n return data\n}\n\nexport const createAttributesValuesBatch = async ({\n productId,\n attributeValues,\n}: {\n productId: number;\n attributeValues: {\n attribute: string;\n values: string[];\n }[];\n}): Promise<IAttributeValue[]> => {\n const { data } = await api.post(`/attribute/batch`, {\n productId,\n attributeValues,\n });\n return data;\n};\n\nexport const createAttributesForCategory = async ({\n attributes\n}: {\n attributes: {\n categoryId: string\n attributes: {\n name: string\n values: string[]\n pricePerGram?: number | null\n }[]\n }\n}): Promise<IAttribute> => {\n const { data } = await api.post(`/attribute/category/`, {\n categoryID: attributes.categoryId,\n attributes: attributes.attributes\n })\n return data\n}\n\nexport const updateAttribute = async ({\n attributeId,\n attribute\n}: {\n attributeId: string\n attribute: IAttribute\n}): Promise<IAttribute> => {\n const { data } = await api.put(`/attribute/${attributeId}`, attribute)\n return data\n}\n\nexport const updateAttributesForCategory = async ({\n categoryId,\n attributes\n}: {\n categoryId: string\n attributes: {\n attributes: string[]\n }\n}): Promise<IAttribute> => {\n const { data } = await api.put(`/attribute/category/${categoryId}`, attributes)\n return data\n}\n\nexport const deleteAttribute = async ({\n attributeId\n}: {\n attributeId: string\n}): Promise<IAttribute> => {\n const { data } = await api.delete(`/attribute/${attributeId}`)\n return data\n}\n\nexport const undeleteAttribute = async ({\n attributeId\n}: {\n attributeId: string\n}): Promise<IAttribute> => {\n const { data } = await api.patch(`/attribute/${attributeId}`)\n return data\n}\n\n//create attribute value\nexport const createAttributeValue = async ({\n attributeId,\n value\n}: {\n attributeId: number\n value: string\n}): Promise<IAttributeValue> => {\n const { data } = await api.post(`/attribute/${attributeId}/values`, {\n attributeID: attributeId,\n value\n })\n return data\n}\n","import type { IUser } from '../interfaces/user.interface'\nimport { api } from './config'\n\nexport interface LoginResponse {\n user: IUser\n token: string\n}\n\nexport const login = async ({\n email,\n password\n}: {\n email: string\n password: string\n}): Promise<LoginResponse> => {\n const { data } = await api.post<LoginResponse>('auth/login', { email, password })\n return data\n}\n","import type {\n IBankTerminal,\n IBankTerminalResponse,\n IBankTerminalForm,\n BankTerminalQuery,\n BankTerminalResponse\n} from '../interfaces/bankTerminal.interface'\nimport { api } from './config'\n\nexport const getBankTerminalsForSelect = async (): Promise<BankTerminalResponse[]> => {\n const { data } = await api.get<BankTerminalResponse[]>('bank-terminals/bankTerminalsSelect')\n return data\n}\n\nexport const getAllBankTerminals = async (): Promise<BankTerminalResponse[]> => {\n const { data } = await api.get<BankTerminalResponse[]>('bank-terminals/')\n return data\n}\n\nexport const getBankTerminals = async ({\n skip = 0,\n limit = 10,\n query = ''\n}: BankTerminalQuery): Promise<IBankTerminalResponse> => {\n const { data } = await api.get<IBankTerminalResponse>(\n `bank-terminals/bankTerminalsTable/?skip=${skip}&limit=${limit}&query=${query}`\n )\n\n return data\n}\n\nexport const getBankTerminalById = async ({\n terminalId\n}: {\n terminalId: number\n}): Promise<IBankTerminal> => {\n const { data } = await api.get(`/bank-terminals/${terminalId}`)\n return data.data\n}\n\nexport const updateBankTerminal = async ({\n terminalId,\n terminal\n}: {\n terminalId: number\n terminal: IBankTerminalForm\n}): Promise<IBankTerminal> => {\n const { data } = await api.put<IBankTerminal>(`/bank-terminals/${terminalId}`, terminal)\n return data\n}\n\nexport const createBankTerminal = async ({\n terminal\n}: {\n terminal: IBankTerminalForm\n}): Promise<IBankTerminal> => {\n const { data } = await api.post<IBankTerminal>('bank-terminals/', terminal)\n return data\n}\n\nexport const deleteBankTerminal = async ({ terminalId }: { terminalId: number }): Promise<void> => {\n await api.delete(`/bank-terminals/${terminalId}`)\n}\n\nexport const restoreBankTerminal = async ({\n terminalId\n}: {\n terminalId: number\n}): Promise<void> => {\n await api.patch(`/bank-terminals/${terminalId}`)\n}\n","import type { IBatch, IBatchResponse } from '../interfaces/batch.interface'\nimport { api } from './config'\n\ninterface BatchQuery {\n skip?: number\n limit?: number\n query?: string\n productId?: number\n}\n\nexport const getBatchesForSelect = async (): Promise<IBatch[]> => {\n const { data } = await api.get<IBatch[]>('batch/batches-for-select')\n return data\n}\n\nexport const getBatches = async ({\n skip = 0,\n limit = 10,\n query = '',\n productId = 0\n}: BatchQuery): Promise<IBatchResponse> => {\n const { data } = await api.get<IBatchResponse>(\n `batch?skip=${skip}&limit=${limit}&query=${query}&productID=${productId}`\n )\n return data\n}\n\nexport const createBatch = async (batch: FormData): Promise<IBatch> => {\n const { data } = await api.post<IBatch>('batch/', batch)\n return data\n}\n\nexport const createBatchAndUpdateOtherBatches = async (batch: FormData): Promise<IBatch> => {\n const { data } = await api.post<IBatch>('batch/create-batch-and-update-other-batches', batch)\n return data\n}\n\nexport const getBatchById = async (batchId: number): Promise<IBatch> => {\n const { data } = await api.get<IBatch>(`batch/${batchId}`)\n return data\n}\n\nexport const getMatchedBatches = async ({\n productDetailId\n}: {\n productDetailId: number\n}): Promise<IBatch[]> => {\n const { data } = await api.get<IBatch[]>(\n `batch/matched-batches?productDetailID=${productDetailId}`\n )\n return data\n}\n\nexport interface UpdateBatchData {\n unitCost?: number\n unitSellingPrice?: number\n profitPercentage?: number\n}\n\nexport const updateBatch = async ({\n batchId,\n batchData\n}: {\n batchId: number\n batchData: UpdateBatchData\n}): Promise<IBatch> => {\n const { data } = await api.put<IBatch>(`batch/${batchId}`, batchData)\n return data\n}\n","import type {\n ICategory,\n ICategoryResponse,\n} from '../interfaces/category.interface'\nimport { api } from './config'\n\ninterface CategoryQuery {\n skip?: number\n limit?: number\n query?: string\n}\n\nexport const getCategoriesForSelect = async (): Promise<ICategory[]> => {\n const { data } = await api.get<ICategory[]>('category/categoriesSelect')\n return data\n}\n\nexport const getAllCategories = async (): Promise<ICategory[]> => {\n const { data } = await api.get<ICategory[]>('category/')\n return data\n}\n\nexport const getCategories = async ({\n skip = 0,\n limit = 10,\n query = ''\n}: CategoryQuery): Promise<ICategoryResponse> => {\n const { data } = await api.get<ICategoryResponse>(\n `category/categoriesTable?skip=${skip}&limit=${limit}&query=${query}`\n )\n\n return data\n}\n\nexport const getCategoryById = async ({\n categoryId\n}: {\n categoryId: number\n}): Promise<ICategory> => {\n const { data } = await api.get(`/category/${categoryId}`)\n return data.data\n}\n\nexport const updateCategory = async ({\n categoryId,\n category\n}: {\n categoryId: number\n category: ICategory\n}): Promise<ICategory> => {\n const { data } = await api.put<ICategory>(`/category/${categoryId}`, category)\n return data\n}\n\nexport const createCategory = async ({ category }: { category: ICategory }): Promise<ICategory> => {\n const { data } = await api.post<ICategory>('category/', category)\n return data\n}\n\nexport const deleteCategory = async ({ categoryId }: { categoryId: number }): Promise<void> => {\n await api.delete(`/category/${categoryId}`)\n}\n\nexport const restoreCategory = async ({ categoryId }: { categoryId: number }): Promise<void> => {\n await api.patch(`/category/${categoryId}`)\n}\n","import type {\n IClient,\n IClientRequest,\n IClientResponse,\n IClientResponseById\n} from '../interfaces/client.interface'\nimport { api } from './config'\n\nexport const getAllClients = async ({\n skip = 0,\n limit = 10,\n query = ''\n}: {\n skip: number\n limit: number\n query?: string\n}): Promise<IClientResponse> => {\n const { data } = await api.get<IClientResponse>(\n `client/?skip=${skip}&limit=${limit}&query=${query}`\n )\n return data\n}\n\nexport const getClientsForSelect = async (): Promise<IClient[]> => {\n const { data } = await api.get<IClient[]>('client/select')\n return data\n}\n\nexport const getClientById = async ({\n clientId\n}: {\n clientId: number\n}): Promise<IClientResponseById> => {\n const { data } = await api.get<IClientResponseById>(`client/${clientId}`)\n return data\n}\n\nexport const createClient = async (client: IClientRequest): Promise<IClientResponse> => {\n const { data } = await api.post<IClientResponse>('client/', client)\n return data\n}\n\nexport const updateClient = async ({\n client,\n id\n}: {\n id: string\n client: IClient\n}): Promise<IClientResponse> => {\n const { data } = await api.put<IClientResponse>(`client/${id}`, client)\n return data\n}\n\nexport const deleteClient = async ({\n clientId\n}: {\n clientId: number\n}): Promise<IClientResponse> => {\n const { data } = await api.delete<IClientResponse>(`client/${clientId}`)\n return data\n}\n\nexport const restoreClient = async ({\n clientId\n}: {\n clientId: number\n}): Promise<IClientResponse> => {\n const { data } = await api.patch<IClientResponse>(`client/${clientId}`)\n return data\n}\n","import { api } from './config'\n\ninterface ExchangeQuery {\n skip?: number\n limit?: number\n query?: string\n}\n\nexport interface IExchange {\n exchangeRateID: number\n valorEnPesos: number\n fromDate: string\n toDate: string\n syncStatusID: number\n masterCodeID: null\n savedBy: null\n savedDate: null\n deletedBy: null\n deletedDate: null\n}\n\nexport interface PaymentType {\n value: number\n label: string\n}\n\nexport interface IExchangeResponse {\n total: number\n data: IExchange[]\n skip: number\n limit: number\n}\n\nexport const getPaymentTypes = async (): Promise<PaymentType[]> => {\n const { data } = await api.get<PaymentType[]>('exchange/getPaymentTypes')\n return data\n}\n\nexport const getExchangeRates = async ({\n skip = 0,\n limit = 10,\n query = ''\n}: ExchangeQuery): Promise<IExchangeResponse> => {\n const { data } = await api.get<IExchangeResponse>(\n `exchange/exchangesTable?skip=${skip}&limit=${limit}&query=${query}`\n )\n\n return data\n}\n\n//obtener el exchange rate mediante fehca y hora\nexport const getExchangeRate = async (): Promise<IExchange> => {\n const { data } = await api.get<IExchange>('exchange/getExchangeRate')\n return data\n}\n\nexport const createExchangeRate = async ({\n exchangeRate\n}: {\n exchangeRate: IExchange\n}): Promise<IExchange> => {\n const { data } = await api.post<IExchange>('exchange/', exchangeRate)\n return data\n}\n","import type { IGender } from '../interfaces/gender.interface'\nimport { api } from './config'\n\ninterface GenderResponse {\n data: IGender[]\n}\n\nexport const getAllGenders = async (): Promise<GenderResponse> => {\n const { data } = await api.get('gender/')\n return data\n}\n","import { api } from './config'\n\ninterface HealthCheckResponse {\n status: string\n timestamp: string\n services: {\n backend: {\n status: string\n message?: string\n }\n database: {\n status: string\n message?: string\n }\n }\n}\n\nconst HEALTH_CHECK_TIMEOUT_MS = 10000\n\nexport const healthService = {\n async check(): Promise<HealthCheckResponse> {\n try {\n const response = await api.get<HealthCheckResponse>('/api/health', {\n timeout: HEALTH_CHECK_TIMEOUT_MS\n })\n return response.data\n } catch (error) {\n const isTimeoutError =\n error instanceof Error &&\n (error.message.includes('timeout') || error.message.includes('Network Error'))\n\n return {\n status: 'error',\n timestamp: new Date().toISOString(),\n services: {\n backend: {\n status: 'error',\n message: isTimeoutError\n ? 'No se pudo conectar con el backend. Verifica que el servidor esté corriendo y la URL configurada.'\n : error instanceof Error\n ? error.message\n : 'Error de conexión con el backend'\n },\n database: {\n status: 'unknown',\n message: 'No se puede verificar la base de datos porque el backend no responde'\n }\n }\n }\n }\n }\n}\n","import type { ILocation, ILocationResponse } from '../interfaces/location.interface'\nimport { api } from './config'\n\ninterface LocationQuery {\n skip?: number\n limit?: number\n query?: string\n}\n\nexport interface LocationResponse {\n physicalLocationID: number\n name: string\n addressID: number\n isOpen: boolean\n syncStatusID: number\n masterCodeID: null\n savedBy: null\n savedDate: null\n deletedBy: null\n deletedDate: null\n}\n\nexport const getAllLocations = async (): Promise<LocationResponse[]> => {\n const { data } = await api.get<LocationResponse[]>('location/')\n return data\n}\n\nexport const getLocationsForSelect = async (): Promise<LocationResponse[]> => {\n const { data } = await api.get<LocationResponse[]>('location/locationsForSelect')\n return data\n}\n\nexport const getLocations = async ({\n skip = 0,\n limit = 10,\n query = ''\n}: LocationQuery): Promise<ILocationResponse> => {\n const { data } = await api.get<ILocationResponse>(\n `location/locations?skip=${skip}&limit=${limit}&query=${query}`\n )\n return data\n}\n\nexport const getLocationById = async ({\n locationId\n}: {\n locationId: number\n}): Promise<ILocation> => {\n const { data } = await api.get(`/location/${locationId}`)\n return data.data\n}\n\nexport const updateLocation = async ({\n locationId,\n location\n}: {\n locationId: number\n location: FormData\n}): Promise<ILocation> => {\n const { data } = await api.put<ILocation>(`/location/${locationId}`, location, {\n headers: {\n 'Content-Type': 'multipart/form-data'\n }\n })\n return data\n}\n\nexport const createLocation = async (location: FormData): Promise<ILocation> => {\n const { data } = await api.post<ILocation>('location/', location, {\n headers: {\n 'Content-Type': 'multipart/form-data'\n }\n })\n return data\n}\n\nexport const deleteLocation = async ({\n physicalLocationId\n}: {\n physicalLocationId: number\n}): Promise<void> => {\n await api.delete(`/location/${physicalLocationId}`)\n}\n\nexport const restoreLocation = async ({\n physicalLocationId\n}: {\n physicalLocationId: number\n}): Promise<void> => {\n await api.patch(`/location/${physicalLocationId}`)\n}\n","import type { IMaterial } from '../interfaces/material.interface'\nimport { api } from './config'\n\nexport interface MaterialResponse {\n data: IMaterial[]\n total: number\n skip: number\n limit: number\n}\n\ninterface MaterialQuery {\n skip?: number\n limit?: number\n query?: string\n}\n\nexport const getAllMaterials = async (): Promise<IMaterial[]> => {\n const { data } = await api.get<IMaterial[]>('material/')\n return data\n}\n\nexport const getMaterials = async ({\n skip = 0,\n limit = 10,\n query = ''\n}: MaterialQuery): Promise<MaterialResponse> => {\n const { data } = await api.get<MaterialResponse>(\n `material/materialsTable?skip=${skip}&limit=${limit}&query=${query}`\n )\n return data\n}\n\nexport const getMaterialById = async ({\n materialId\n}: {\n materialId: number\n}): Promise<IMaterial> => {\n const { data } = await api.get(`material/${materialId}`)\n return data.data\n}\n\nexport const getMaterialsForSelect = async (): Promise<IMaterial[]> => {\n const { data } = await api.get<IMaterial[]>('material/select')\n return data\n}\n\nexport const createMaterial = async ({ material }: { material: IMaterial }): Promise<IMaterial> => {\n const { data } = await api.post<IMaterial>('material/', material)\n return data\n}\n\nexport const updateMaterial = async ({\n materialId,\n material\n}: {\n materialId: number\n material: IMaterial\n}): Promise<IMaterial> => {\n const { data } = await api.put<IMaterial>(`material/${materialId}`, material)\n return data\n}\n\nexport const deleteMaterial = async ({ materialId }: { materialId: number }): Promise<void> => {\n await api.delete(`material/${materialId}`)\n}\nexport const undeleteMaterial = async ({ materialId }: { materialId: number }): Promise<void> => {\n await api.patch(`material/${materialId}`)\n}\n","import type { IModule } from '../interfaces/module.interface'\nimport { api } from './config'\n\nexport const getAllModules = async (): Promise<IModule[]> => {\n const { data } = await api.get<IModule[]>('module/')\n return data\n}\n","import type { IOrder, IOrderResponse, TblOrderStatus } from '../interfaces/order.interface'\nimport { api } from './config'\n\nexport const getOrders = async ({\n skip = 0,\n limit = 10,\n query = '',\n commissionedBy = '',\n orderStatus = [],\n startDate = '',\n endDate = '',\n showOnlyReturns = false\n}: {\n skip?: number\n limit?: number\n query?: string\n commissionedBy?: string\n orderStatus?: string[]\n startDate?: string | null\n endDate?: string | null\n showOnlyReturns?: boolean\n}): Promise<IOrderResponse> => {\n const { data } = await api.get<IOrderResponse>('order', {\n params: { skip, limit, query, commissionedBy, orderStatus, startDate, endDate, showOnlyReturns }\n })\n return data\n}\n\nexport const getOrderById = async ({ orderId }: { orderId: number }): Promise<IOrder> => {\n const { data } = await api.get<IOrder>(`order/${orderId}`)\n return data\n}\n\nexport const getOrdersStatusForSelect = async (): Promise<TblOrderStatus[]> => {\n const { data } = await api.get<TblOrderStatus[]>('order/status')\n return data\n}\n\nexport interface ChangeProductRequest {\n orderID: number\n oldOrderDetailID: number\n newProductDetailID: number\n quantity: number\n reason?: string\n}\n\nexport interface ChangeProductResponse {\n success: boolean\n message: string\n priceDifference: number\n requiresAdditionalPayment: boolean\n requiresRefund: boolean\n order: IOrder\n}\n\nexport const changeOrderProduct = async (\n changeData: ChangeProductRequest\n): Promise<ChangeProductResponse> => {\n const { data } = await api.post<ChangeProductResponse>('order/change-product', changeData)\n return data\n}\n","import { api } from './config'\nimport type {\n IPayment,\n IPaymentMethod,\n IPaymentMethodAmountExpected\n} from '../interfaces/payment.interface'\n\nexport const sendPaymentData = async ({ payment }: { payment: IPayment }): Promise<IPayment> => {\n const { data } = await api.post<IPayment>(\n 'payment/applypayment',\n {\n ...payment\n },\n {\n headers: {\n 'Content-Type': 'application/json'\n }\n }\n )\n return data\n}\n\n//metodo para llamar a la api y obtener los metodos de pago\nexport const getPaymentMethods = async (): Promise<IPaymentMethod[]> => {\n const { data } = await api.get('payment/getpaymentmethods')\n return data\n}\n\n//metodo para llamar a la api y obtener los metodos de pago\nexport const getPaymentMethodsWithAmountExpected = async (): Promise<\n IPaymentMethodAmountExpected[]\n> => {\n const { data } = await api.get('payment/getpaymentmethodswithamountexpected')\n return data\n}\n\nexport const sendCreditPaymentData = async ({\n payment,\n orderId\n}: {\n payment: IPayment\n orderId: number\n}): Promise<IPayment> => {\n const { data } = await api.post<IPayment>(\n 'payment/applycreditpayment',\n {\n ...payment,\n orderID: orderId\n },\n {\n headers: {\n 'Content-Type': 'application/json'\n }\n }\n )\n return data\n}\n","import type { IPermissionRole, PermissionRole } from '../interfaces/permission.interface'\nimport { api } from './config'\n\nexport interface IUpdatePermission {\n id: number\n hasPermission: boolean\n}\n\nexport const getAllPermissions = async (): Promise<IPermissionRole> => {\n const response = await api.get<IPermissionRole>('/permission-role/')\n return response.data\n}\n\nexport const updatePermission = async (\n permission: IUpdatePermission\n): Promise<IUpdatePermission> => {\n const response = await api.put<IUpdatePermission>('/permission-role', permission)\n return response.data\n}\n\nexport const getPermissionRoleByRoleID = async ({\n roleId\n}: {\n roleId: number\n}): Promise<PermissionRole[]> => {\n const { data } = await api.get<PermissionRole[]>(`permission-role/${roleId}`)\n return data\n}\n","import type {\n PricePerGramResponse,\n PriceCalculationResponse,\n UpdatePriceRequest,\n SchedulePriceRequest,\n CalculatePriceRequest,\n IPricePerGramHistory\n} from '../interfaces/pricePerGram.interface'\nimport { api } from './config'\n\nconst BASE_URL = 'price-per-gram'\n\nexport const pricePerGramService = {\n // 1. Obtener precio con fallback\n async getPrice(params: {\n productDetailId?: number\n productId?: number\n materialId?: number\n }): Promise<PricePerGramResponse> {\n const queryParams = new URLSearchParams()\n\n if (params.productDetailId)\n queryParams.append('productDetailID', params.productDetailId.toString())\n if (params.productId) queryParams.append('productID', params.productId.toString())\n if (params.materialId) queryParams.append('materialID', params.materialId.toString())\n\n const { data } = await api.get<PricePerGramResponse>(\n `${BASE_URL}/price?${queryParams.toString()}`\n )\n return data\n },\n\n // 2. Actualizar precio (crea histórico automáticamente)\n async updatePrice(request: UpdatePriceRequest): Promise<void> {\n await api.put(`${BASE_URL}/price`, request)\n },\n\n // 3. Ver histórico de precios\n async getHistory({\n entityType,\n entityId,\n limit\n }: {\n entityType: 'material' | 'product' | 'productDetail'\n entityId: number\n limit?: number\n }): Promise<IPricePerGramHistory[]> {\n const queryParams = new URLSearchParams()\n if (limit) queryParams.append('limit', limit.toString())\n\n const { data } = await api.get<{ success: boolean; data: IPricePerGramHistory[] }>(\n `${BASE_URL}/history/${entityType}/${entityId}?${queryParams.toString()}`\n )\n console.log('response data:', data)\n return data.data || []\n },\n\n // 4. Programar precio futuro\n async schedulePrice(request: SchedulePriceRequest): Promise<void> {\n await api.post(`${BASE_URL}/scheduled`, request)\n },\n\n // 5. Calcular precio para venta\n async calculatePrice(request: CalculatePriceRequest): Promise<PriceCalculationResponse> {\n const { data } = await api.post<PriceCalculationResponse>(`${BASE_URL}/calculate`, request)\n return data\n },\n\n // 6. Eliminar precio programado\n async deleteFuturePrice({\n historyId\n }: {\n historyId: number\n }): Promise<void> {\n await api.delete(`${BASE_URL}/scheduled/${historyId}`)\n },\n\n // 7. Actualizar precio programado\n async updateFuturePrice({\n historyId,\n request\n }: {\n historyId: number\n request: SchedulePriceRequest\n }): Promise<void> {\n await api.put(`${BASE_URL}/scheduled/${historyId}`, request)\n },\n\n // Verificar si un producto se vende por peso\n async isWeightBased({\n productDetailId\n }: {\n productDetailId: number\n }): Promise<boolean> {\n try {\n const priceInfo = await this.getPrice({ productDetailId })\n return priceInfo.pricePerGram !== null\n } catch (error) {\n console.error('Error verificando si es por peso:', error)\n return false\n }\n }\n}\n","import type { IPriceType, IPriceTypeResponse } from '../interfaces/priceType.interface'\nimport { api } from './config'\nimport type { IRequest } from '../interfaces/util.interface'\n\nexport const getPriceTypesForSelect = async (): Promise<IPriceType[]> => {\n const { data } = await api.get<IPriceType[]>('price-type/select')\n return data\n}\n\nexport const getAllPriceTypes = async ({\n skip = 0,\n limit = 10,\n query = ''\n}: IRequest): Promise<IPriceTypeResponse> => {\n const { data } = await api.get<IPriceTypeResponse>(\n `price-type/?skip=${skip}&limit=${limit}&query=${query}`\n )\n return data\n}\n\nexport const createPriceType = async ({\n priceType\n}: {\n priceType: IPriceType\n}): Promise<IPriceType> => {\n const { data } = await api.post<IPriceType>('price-type/', priceType)\n return data\n}\n\nexport const getPriceTypeById = async ({\n priceTypeId\n}: {\n priceTypeId: number\n}): Promise<IPriceType> => {\n const { data } = await api.get<IPriceType>(`price-type/${priceTypeId}`)\n return data\n}\n\nexport const updatePriceType = async ({\n priceTypeId,\n priceType\n}: {\n priceTypeId: number\n priceType: IPriceType\n}): Promise<IPriceType> => {\n const { data } = await api.put<IPriceType>(`price-type/${priceTypeId}`, priceType)\n return data\n}\n\nexport const deletePriceType = async ({ priceTypeId }: { priceTypeId: number }): Promise<void> => {\n await api.delete<void>(`price-type/${priceTypeId}`)\n}\n\nexport const undeletePriceType = async ({\n priceTypeId\n}: {\n priceTypeId: number\n}): Promise<void> => {\n await api.patch<void>(`price-type/${priceTypeId}`)\n}\n","import type { IFilterType } from '../interfaces/filters.interface'\nimport type {\n IProductResponse,\n IProduct,\n IProductDetailsResponse,\n IProductDetails\n} from '../interfaces/product.interface'\nimport { api } from './config'\n\ninterface ProductQuery {\n skip?: number\n limit?: number\n filters?: IFilterType\n}\n\ninterface CategoryQuery {\n category: number\n skip?: number\n limit?: number\n filters?: IFilterType\n}\n\nexport const getProductsForSelect = async (): Promise<IProduct[]> => {\n const { data } = await api.get<IProduct[]>('/product/select')\n return data\n}\n\nexport const getProducts = async ({\n skip = 0,\n limit = 16,\n filters\n}: ProductQuery): Promise<IProductDetailsResponse> => {\n const queryParams = new URLSearchParams({\n skip: skip.toString(),\n limit: limit.toString(),\n ...(filters?.query && { query: filters.query }),\n ...(filters?.batchId && { batchId: filters.batchId }),\n ...(filters?.categoryId && { categoryId: filters.categoryId.toString() }),\n ...(filters?.supplierId && { supplierId: filters.supplierId.toString() }),\n ...(filters?.warehouseId && { warehouseId: filters.warehouseId.toString() }),\n ...(filters?.priceRangeMin && { minPrice: filters.priceRangeMin.toString() }),\n ...(filters?.priceRangeMax && { maxPrice: filters.priceRangeMax.toString() })\n })\n\n const { data } = await api.get<IProductDetailsResponse>(`product?${queryParams}`)\n return data\n}\n\nexport const getProductsTable = async ({\n skip = 0,\n limit = 16,\n filters\n}: ProductQuery): Promise<IProductResponse> => {\n const queryParams = new URLSearchParams({\n skip: skip.toString(),\n limit: limit.toString(),\n ...(filters?.query && { query: filters.query }),\n ...(filters?.batchId && { batchId: filters.batchId }),\n ...(filters?.categoryId && { categoryId: filters.categoryId.toString() }),\n ...(filters?.supplierId && { supplierId: filters.supplierId.toString() }),\n ...(filters?.warehouseId && { warehouseId: filters.warehouseId.toString() }),\n ...(filters?.priceRangeMin && { minPrice: filters.priceRangeMin.toString() }),\n ...(filters?.priceRangeMax && { maxPrice: filters.priceRangeMax.toString() })\n })\n\n const { data } = await api.get<IProductResponse>(`product/table?${queryParams}`)\n return data\n}\n\nexport const getProductById = async ({\n productId\n}: {\n productId: number\n}): Promise<IProduct> => {\n const { data } = await api.get(`product/${productId}`)\n return data.data\n}\n\nexport const getProductVariants = async ({\n productId,\n skip = 0,\n limit = 10,\n query = ''\n}: {\n productId: number\n skip?: number\n limit?: number\n query?: string\n}): Promise<IProductDetailsResponse> => {\n const { data } = await api.get<IProductDetailsResponse>(`/product/variants/${productId}`, {\n params: {\n skip: skip.toString(),\n limit: limit.toString(),\n ...(query && { query })\n }\n })\n return data\n}\n\nexport const getProductVariantsForSelect = async ({\n productId\n}: {\n productId: number\n}): Promise<IProductDetails[]> => {\n const { data } = await api.get<IProductDetails[]>(`/product/variants/select/${productId}`)\n return data\n}\n\nexport const getProductVariantById = async ({\n productDetailId\n}: {\n productDetailId: number\n}): Promise<IProductDetails> => {\n const { data } = await api.get<IProductDetails>(`/product/variants/variant/${productDetailId}`)\n return data\n}\n\nexport const createProductVariant = async (variant: FormData): Promise<IProductDetails> => {\n const { data } = await api.post<IProductDetails>('product/variants', variant, {\n headers: {\n 'Content-Type': 'multipart/form-data'\n }\n })\n return data\n}\n\nexport const createProductVariants = async (formData: FormData): Promise<IProductDetails[]> => {\n const { data } = await api.post<IProductDetails[]>('product/variants', formData, {\n headers: {\n 'Content-Type': 'multipart/form-data'\n }\n })\n return data\n}\n\nexport const updateProductVariant = async (data: FormData): Promise<IProductDetails> => {\n const { data: response } = await api.put<IProductDetails>(\n `product/variants/update/${data.get('productDetailID')}`,\n data,\n {\n headers: {\n 'Content-Type': 'multipart/form-data'\n }\n }\n )\n return response\n}\n\nexport const deleteProductVariant = async ({\n productDetailId\n}: {\n productDetailId: number\n}): Promise<void> => {\n await api.delete(`/product/variants/${productDetailId}`)\n}\n\nexport const restoreProductVariant = async ({\n productDetailId\n}: {\n productDetailId: number\n}): Promise<void> => {\n await api.patch(`/product/variants/${productDetailId}`)\n}\n\nexport const createProduct = async (product: FormData): Promise<IProduct> => {\n const { data } = await api.post<IProduct>('product/', product, {\n headers: {\n 'Content-Type': 'multipart/form-data'\n }\n })\n return data\n}\n\nexport const updateProduct = async ({\n productId,\n product\n}: {\n productId: number\n product: FormData\n}): Promise<IProduct> => {\n const { data } = await api.put<IProduct>(`/product/${productId}`, product, {\n headers: {\n 'Content-Type': 'multipart/form-data'\n }\n })\n return data\n}\n\nexport const deleteImageFromProduct = async ({\n imageId\n}: {\n imageId: number\n}): Promise<void> => {\n await api.delete(`/product/images/${imageId}`)\n}\n\nexport const deleteProduct = async ({ productId }: { productId: number }): Promise<void> => {\n await api.delete(`/product/${productId}`)\n}\n\nexport const restoreProduct = async ({ productId }: { productId: number }): Promise<void> => {\n await api.patch(`/product/${productId}`)\n}\n\nexport const getProductsByCategory = async ({\n category,\n skip = 0,\n limit = 10,\n filters\n}: CategoryQuery): Promise<IProductResponse> => {\n const queryParams = new URLSearchParams({\n skip: skip.toString(),\n limit: limit.toString(),\n ...(filters?.query && { query: filters.query }),\n ...(filters?.batchId && { batchId: filters.batchId }),\n ...(filters?.supplierId && { supplierId: filters.supplierId.toString() }),\n ...(filters?.warehouseId && { warehouseId: filters.warehouseId.toString() }),\n ...(filters?.priceRangeMin && { minPrice: filters.priceRangeMin.toString() }),\n ...(filters?.priceRangeMax && { maxPrice: filters.priceRangeMax.toString() })\n })\n\n const { data } = await api.get<IProductResponse>(`product/category/${category}?${queryParams}`)\n return data\n}\n\nexport interface PrintProductTagResponse {\n message?: string\n [key: string]: unknown\n}\n\nexport const printProductTag = async ({\n stockId,\n productId,\n isSmall\n}: {\n stockId: number\n productId: number\n isSmall: boolean\n}): Promise<PrintProductTagResponse> => {\n const { data } = await api.post<PrintProductTagResponse>(`/product/printproducttag/`, {\n stockID: stockId,\n productID: productId,\n isSmall\n })\n return data\n}\n","import type { ITag } from '../interfaces/tag.interface'\nimport { api } from './config'\n\nexport const getAllTags = async (): Promise<ITag[]> => {\n const { data } = await api.get<{ data: ITag[] }>('/product-tag')\n return data.data\n}\n","import type {\n IPromotion,\n IPromotionResponse,\n IPromotionType\n} from '../interfaces/promotion.interface'\nimport { api } from './config'\n\nexport const isAValidDiscountCode = async ({\n discountCode\n}: {\n discountCode: string\n}): Promise<boolean> => {\n const { data } = await api.post('promotion/discount-code', { discountCode })\n return data.isValid\n}\n\ninterface PromotionQuery {\n skip?: number\n limit?: number\n query?: string\n}\n\nexport const getPromotions = async ({\n skip = 0,\n limit = 10,\n query = ''\n}: PromotionQuery): Promise<IPromotionResponse> => {\n const queryParams = new URLSearchParams({\n skip: skip.toString(),\n limit: limit.toString(),\n query: query\n })\n const { data } = await api.get(`promotion?${queryParams}`)\n return data\n}\n\nexport const getPromotionsTypeForSelect = async (): Promise<IPromotionType[]> => {\n const { data } = await api.get('promotion/promotions-type/select')\n return data\n}\n\nexport const createPromotion = async (promotion: IPromotion): Promise<IPromotion> => {\n const { data } = await api.post('promotion', promotion)\n return data\n}\n\nexport const getPromotionById = async ({ id }: { id: string }): Promise<IPromotion> => {\n const { data } = await api.get(`promotion/${id}`)\n return data\n}\n\nexport const updatePromotion = async ({\n id,\n promotion\n}: {\n id: string\n promotion: IPromotion\n}): Promise<IPromotion> => {\n const { data } = await api.put(`promotion/${id}`, promotion)\n return data\n}\n","import type {\n IProvider,\n IProviderForSelect,\n IProviderRequest,\n IProviderResponse\n} from '../interfaces/provider.interface'\nimport { api } from './config'\n\nexport const getAllProviders = async ({\n skip = 0,\n limit = 10,\n query = ''\n}: {\n skip: number\n limit: number\n query?: string\n}): Promise<IProviderResponse> => {\n const { data } = await api.get<IProviderResponse>(\n `provider/?skip=${skip}&limit=${limit}&query=${query}`\n )\n return data\n}\n\nexport const getProviderById = async ({\n providerId\n}: {\n providerId: number\n}): Promise<IProvider> => {\n const { data } = await api.get<IProvider>(`provider/${providerId}`)\n return data\n}\n\nexport const getProvidersForSelect = async (): Promise<IProviderForSelect[]> => {\n const { data } = await api.get<IProviderForSelect[]>('provider/providersForSelect')\n return data\n}\n\nexport const createProvider = async (provider: IProviderRequest): Promise<IProviderResponse> => {\n const { data } = await api.post<IProviderResponse>('provider/', provider)\n return data\n}\n\nexport const updateProvider = async ({\n providerId,\n provider\n}: {\n providerId: string\n provider: IProvider\n}): Promise<IProviderResponse> => {\n const { data } = await api.put<IProviderResponse>(`provider/${providerId}`, provider)\n return data\n}\n\nexport const deleteProvider = async ({\n providerId\n}: {\n providerId: number\n}): Promise<IProviderResponse> => {\n const { data } = await api.delete<IProviderResponse>(`provider/${providerId}`)\n return data\n}\n\nexport const restoreProvider = async ({\n providerId\n}: {\n providerId: number\n}): Promise<IProviderResponse> => {\n const { data } = await api.patch<IProviderResponse>(`provider/${providerId}`)\n return data\n}\n","import { api } from './config'\n\nexport interface QRBaseUrlResponse {\n success: boolean\n baseUrl: string\n}\n\nexport interface PrintQRResponse {\n success?: boolean\n message?: string\n data?: {\n url?: string\n productDetailID?: number\n printerResult?: boolean\n }\n [key: string]: unknown\n}\n\n/**\n * Obtiene la URL base configurada para los códigos QR (QR_BASE_URL del backend).\n */\nexport const getQRBaseUrl = async (): Promise<string> => {\n const { data } = await api.get<QRBaseUrlResponse>('/qr/base-url')\n return data?.baseUrl ?? ''\n}\n\n/**\n * Imprime un código QR en la impresora térmica.\n * El backend construye la URL: {QR_BASE_URL}/producto/{productDetailID}\n */\nexport const printQR = async ({\n productDetailId,\n printerName = '4BARCODE'\n}: {\n productDetailId: number\n printerName?: string\n}): Promise<PrintQRResponse> => {\n const { data } = await api.post<PrintQRResponse>('/qr/print', {\n productDetailID: productDetailId,\n printerName\n })\n return data\n}\n","import type {\n ComparisonBy,\n IReportComparisonByTimeFrame,\n IReportInventory,\n IReportX,\n IReportZ,\n IStockByWarehouseReport\n} from '../interfaces/report.interface'\nimport { api } from './config'\n\nexport const getStockByWarehouseReport = async ({\n limit = 2,\n allWarehouses = false\n}: {\n limit: number\n allWarehouses: boolean\n}): Promise<IStockByWarehouseReport[]> => {\n const response = await api.get(`/report?limit=${limit}&allWarehouses=${allWarehouses}`)\n return response.data\n}\n\nexport const getReportX = async ({\n startDate,\n sellerID,\n isShiftChange = false\n}: {\n startDate: string\n sellerID: number\n isShiftChange: boolean\n}): Promise<IReportX> => {\n const response = await api.get(\n `/report/report-x?startDate=${startDate}&sellerID=${sellerID}&isShiftChange=${isShiftChange}`\n )\n return response.data\n}\n\nexport const printReportX = async ({\n startDate,\n sellerID\n}: {\n startDate: string\n sellerID: number\n}): Promise<boolean> => {\n const response = await api.get(\n `/report/printReport-x?startDate=${startDate}&sellerID=${sellerID}`\n )\n return response.data\n}\n\nexport const getReportComparisonByTimeFrame = async ({\n startDate,\n endDate,\n comparisonBy,\n productIds\n}: {\n startDate: Date\n endDate: Date\n comparisonBy: ComparisonBy\n productIds: string[]\n}): Promise<IReportComparisonByTimeFrame> => {\n const response = await api.get(\n `/report/comparison?startDate=${startDate.toISOString()}&endDate=${endDate.toISOString()}&comparisonBy=${comparisonBy}&productIds=${productIds}`\n )\n return response.data\n}\n\nexport const getReportByInventory = async ({\n productIDs,\n categoryIDs,\n warehouseIDs,\n providerIDs\n}: {\n productIDs: number[] | null\n categoryIDs: number[] | null\n warehouseIDs: number[] | null\n providerIDs: number[] | null\n}): Promise<IReportInventory[]> => {\n const params = new URLSearchParams()\n \n if (productIDs && productIDs.length > 0) {\n params.append('productIDs', productIDs.join(','))\n }\n if (categoryIDs && categoryIDs.length > 0) {\n params.append('categoryIDs', categoryIDs.join(','))\n }\n if (warehouseIDs && warehouseIDs.length > 0) {\n params.append('warehouseIDs', warehouseIDs.join(','))\n }\n if (providerIDs && providerIDs.length > 0) {\n params.append('providerIDs', providerIDs.join(','))\n }\n\n const queryString = params.toString()\n const url = `/report/inventory${queryString ? `?${queryString}` : ''}`\n \n const response = await api.get(url)\n return response.data\n}\n\nexport const getReportZ = async ({\n startDate,\n sellerID,\n isShiftChange = false\n}: {\n startDate: string\n sellerID: number\n isShiftChange: boolean\n}): Promise<IReportZ> => {\n const response = await api.get(\n `/report/report-z?startDate=${startDate}&sellerID=${sellerID}&isShiftChange=${isShiftChange}`\n )\n return response.data\n}\n\nexport const printReportZ = async ({\n startDate,\n sellerID\n}: {\n startDate: string\n sellerID: number\n}): Promise<boolean> => {\n const response = await api.get(\n `/report/printReport-z?startDate=${startDate}&sellerID=${sellerID}`\n )\n return response.data\n}\n\nexport const checkPendingReportZ = async (): Promise<Date[]> => {\n const response = await api.get('/report/pending-report-z')\n return response.data\n}\n","import type { TblOrderDetail, TblReturn } from '../interfaces/order.interface'\nimport { api } from './config'\n\nexport const createReturn = async ({\n orderId,\n returnReason,\n orderDetails,\n warehouseDestinationID\n}: {\n orderId: number\n returnReason: string\n orderDetails: TblOrderDetail[]\n warehouseDestinationID: number\n}): Promise<void> => {\n const response = await api.post(`/returns`, {\n orderId,\n returnReason,\n orderDetails,\n warehouseDestinationID\n })\n return response.data\n}\n\nexport interface GetReturnsByOrderIdResponse {\n message: string\n data: TblReturn[]\n}\n\nexport const getReturnsByOrderId = async ({\n orderId\n}: {\n orderId: number\n}): Promise<GetReturnsByOrderIdResponse> => {\n const response = await api.get(`/returns/order/${orderId}`)\n return response.data\n}\n","import type { IRole } from '../interfaces/role.interface'\nimport { api } from './config'\n\nexport const getRoles = async (): Promise<IRole[]> => {\n const response = await api.get('/role')\n return response.data\n}\n\nexport const getRoleByID = async ({\n roleId\n}: {\n roleId: number\n}): Promise<IRole> => {\n const response = await api.get(`/role/${roleId}`)\n return response.data\n}\n\nexport const createRole = async (role: IRole): Promise<IRole> => {\n const response = await api.post('/role', role)\n return response.data\n}\n\nexport const updateRole = async ({\n roleId,\n role\n}: {\n roleId: number\n role: IRole\n}): Promise<IRole> => {\n const response = await api.put(`/role/${roleId}`, role)\n return response.data\n}\n\nexport const deleteRole = async ({\n roleId\n}: {\n roleId: number\n}): Promise<void> => {\n await api.delete(`/role/${roleId}`)\n}\n","import type { IStockMovement, IStockMovementResponse } from '../interfaces/stockmovement.interface'\nimport { api } from './config'\n\ninterface MovementQuery {\n skip?: number\n limit?: number\n query?: string\n movementType?: number\n}\n\nexport interface MovementResponse {\n stockMovementID: number\n quantity: number\n addressID: number\n isOpen: boolean\n syncStatusID: number\n masterCodeID: null\n savedBy: null\n savedDate: null\n deletedBy: null\n deletedDate: null\n}\n\nexport const createMovement = async (movement: FormData): Promise<IStockMovement> => {\n const { data } = await api.post<IStockMovement>('movement/', movement, {\n headers: {\n 'Content-Type': 'multipart/form-data'\n }\n })\n return data\n}\n\n// export const getAllLocations = async (): Promise<LocationResponse[]> => {\n// const { data } = await api.get<LocationResponse[]>('location/')\n// return data\n// }\n\n// export const getLocationsForSelect = async (): Promise<LocationResponse[]> => {\n// const { data } = await api.get<LocationResponse[]>('location/locationsForSelect')\n// return data\n// }\n\nexport const getMovements = async ({\n skip = 0,\n limit = 10,\n query = '',\n movementType = 1\n}: MovementQuery): Promise<IStockMovementResponse> => {\n const { data } = await api.get<IStockMovementResponse>(\n `movement/movements?skip=${skip}&limit=${limit}&query=${query}&movementTypeID=${movementType}`\n )\n return data\n}","import { api } from './config'\n\nexport interface Response {\n status: boolean\n httpStatus: number\n message: string\n data: unknown\n}\n\ninterface CloseShiftData {\n sellerID: number\n date: string\n paymentMethods: {\n paymentMethodId: number\n amount: number\n }[]\n cashBreakdown?: {\n coinsTotal: number\n bills: {\n denomination: number\n quantity: number\n }[]\n }\n}\n\nexport const closeShift = async (data: CloseShiftData): Promise<Response> => {\n const response = await api.post<Response>('/shift/close', data, {\n headers: {\n 'Content-Type': 'application/json'\n }\n })\n return response.data\n}\n\nexport const makeNewCashMovement = async ({\n userID,\n amount,\n comment,\n isWithdrawal\n}: {\n userID: number | undefined\n amount: number\n comment?: string\n isWithdrawal: boolean\n}): Promise<Response> => {\n const { data } = await api.post<Response>(\n 'shift/cashmovement',\n {\n userID,\n amount,\n comment,\n isWithdrawal\n },\n {\n headers: {\n 'Content-Type': 'application/json'\n }\n }\n )\n return data\n}\n\nexport const setNewShift = async ({\n userID,\n initialCash\n}: {\n userID: number | undefined\n initialCash: number\n}): Promise<Response> => {\n const { data } = await api.post<Response>(\n 'shift/',\n {\n userID,\n initialCash\n },\n {\n headers: {\n 'Content-Type': 'application/json'\n }\n }\n )\n return data\n}\n","import { api } from './config'\n\nexport interface StateResponse {\n stateID: number\n state: string\n syncStatusID: number\n masterCodeID: null\n savedBy: null\n savedDate: null\n deletedBy: null\n deletedDate: null\n}\n\nexport const getAllStates = async (): Promise<StateResponse[]> => {\n const { data } = await api.get<StateResponse[]>('state/')\n return data\n}\n","import type { ITax } from '../interfaces/tax.interface'\nimport { api } from './config'\n\nexport const getTaxesForSelect = async (): Promise<ITax[]> => {\n const { data } = await api.get<ITax[]>('tax/taxesForSelect')\n return data\n}\n","import type { AgentResponse, IUser, IUserForm, UserResponse } from '../interfaces/user.interface'\nimport { api } from './config'\n\ninterface UserQuery {\n skip?: number\n limit?: number\n query?: string\n roleId?: string\n}\n\nexport const getSellersWithShift = async (): Promise<AgentResponse> => {\n const { data } = await api.get<AgentResponse>(`user/getSellersWithShift/`)\n return data\n}\n\nexport const getSellersOfDayForSelect = async ({\n date\n}: {\n date: string\n}): Promise<AgentResponse> => {\n const { data } = await api.get<AgentResponse>(`user/getSellersOfDayForSelect/${date}`)\n return data\n}\n\nexport const getAllAgents = async (): Promise<AgentResponse> => {\n const { data } = await api.get<AgentResponse>('user/getallagents')\n return data\n}\n\nexport const getUsers = async ({\n skip = 0,\n limit = 10,\n query = '',\n roleId,\n}: UserQuery): Promise<UserResponse> => {\n const params = new URLSearchParams({\n skip: String(skip),\n limit: String(limit),\n ...(query && { query }),\n ...(roleId && { roleId }),\n });\n const { data } = await api.get<UserResponse>(`user/?${params}`)\n return data\n}\n\nexport const getUserById = async ({ userId }: { userId: number }): Promise<IUser> => {\n const { data } = await api.get<IUser>(`user/${userId}`)\n return data\n}\n\nexport const createUser = async ({ user }: { user: IUserForm }): Promise<void> => {\n await api.post('user/', user)\n}\n\nexport const updateUser = async ({\n userId,\n user\n}: {\n userId: number\n user: IUserForm\n}): Promise<void> => {\n await api.put(`user/${userId}`, user)\n}\n\nexport const deleteUser = async ({ userId }: { userId: number }): Promise<void> => {\n await api.delete(`user/${userId}`)\n}\nexport const restoreUser = async ({ userId }: { userId: number }): Promise<void> => {\n await api.patch(`user/${userId}`)\n}\n","import { api } from './config'\n\nexport interface IUserSettings {\n lowStockThreshold: number\n}\n\ninterface UserSettingsResponse {\n data: IUserSettings\n message?: string\n}\n\nexport const getUserSettings = async (): Promise<IUserSettings> => {\n const { data } = await api.get<UserSettingsResponse>('user-settings')\n return data.data\n}\n\nexport const updateUserSettings = async (\n settings: Partial<IUserSettings>,\n): Promise<IUserSettings> => {\n const { data } = await api.put<UserSettingsResponse>('user-settings', settings)\n return data.data\n}\n","import type { IWareHouse, IWareHouseResponse } from '../interfaces/warehouse.interface'\nimport { api } from './config'\n\ninterface WareHouseQuery {\n skip?: number\n limit?: number\n query?: string\n}\n\nexport interface WarehouseResponse {\n wareHouseID: number\n wareHouse: string\n wareHouseWithLocation: string\n physicialLocationID: number\n isShowroom: boolean\n syncStatusID: number\n masterCodeID: null\n savedBy: null\n savedDate: null\n deletedBy: null\n deletedDate: null\n}\n\nexport const getWarehousesForSelect = async (): Promise<WarehouseResponse[]> => {\n const { data } = await api.get<WarehouseResponse[]>('warehouse/warehousesForSelect')\n return data\n}\n\nexport const getWarehouses = async ({\n skip = 0,\n limit = 10,\n query = ''\n}: WareHouseQuery): Promise<IWareHouseResponse> => {\n const { data } = await api.get<IWareHouseResponse>(\n `warehouse/warehouses?skip=${skip}&limit=${limit}&query=${query}`\n )\n return data\n}\n\nexport const getWarehouseById = async ({\n warehouseId\n}: {\n warehouseId: number\n}): Promise<IWareHouse> => {\n const { data } = await api.get(`/warehouse/${warehouseId}`)\n return data.data\n}\n\nexport const updateWarehouse = async ({\n warehouseId,\n warehouse\n}: {\n warehouseId: number\n warehouse: FormData\n}): Promise<IWareHouse> => {\n const { data } = await api.put<IWareHouse>(`/warehouse/${warehouseId}`, warehouse, {\n headers: {\n 'Content-Type': 'multipart/form-data'\n }\n })\n return data\n}\n\nexport const createWareHouse = async (warehouse: FormData): Promise<IWareHouse> => {\n const { data } = await api.post<IWareHouse>('warehouse/', warehouse, {\n headers: {\n 'Content-Type': 'multipart/form-data'\n }\n })\n return data\n}\n\nexport const deleteWarehouse = async ({\n warehouseId\n}: {\n warehouseId: number\n}): Promise<void> => {\n await api.delete(`/warehouse/${warehouseId}`)\n}\n\nexport const restoreWarehouse = async ({\n warehouseId\n}: {\n warehouseId: number\n}): Promise<void> => {\n await api.patch(`/warehouse/${warehouseId}`)\n}\n"]}
|
|
@@ -3,7 +3,7 @@ import * as _tanstack_react_query from '@tanstack/react-query';
|
|
|
3
3
|
import { QueryClient, UseMutationOptions } from '@tanstack/react-query';
|
|
4
4
|
import { k as IFilterType, n as IProductDetailsResponse, o as IProductResponse, l as IProduct, m as IProductDetails } from './filters.interface-BwMi9FRP.js';
|
|
5
5
|
import { v as IOrderResponse, u as IOrder, am as TblOrderStatus, m as IGender } from './warehouse.interface-S5seQY-_.js';
|
|
6
|
-
import { a as ChangeProductResponse, C as ChangeProductRequest, R as Response } from './warehouse.service-
|
|
6
|
+
import { a as ChangeProductResponse, C as ChangeProductRequest, R as Response } from './warehouse.service-D5fHR5E3.js';
|
|
7
7
|
|
|
8
8
|
interface ProductQueryParams {
|
|
9
9
|
skip?: number;
|
|
@@ -261,6 +261,12 @@ interface StateResponse {
|
|
|
261
261
|
}
|
|
262
262
|
declare const getAllStates: () => Promise<StateResponse[]>;
|
|
263
263
|
|
|
264
|
+
interface IUserSettings {
|
|
265
|
+
lowStockThreshold: number;
|
|
266
|
+
}
|
|
267
|
+
declare const getUserSettings: () => Promise<IUserSettings>;
|
|
268
|
+
declare const updateUserSettings: (settings: Partial<IUserSettings>) => Promise<IUserSettings>;
|
|
269
|
+
|
|
264
270
|
interface WareHouseQuery {
|
|
265
271
|
skip?: number;
|
|
266
272
|
limit?: number;
|
|
@@ -296,4 +302,4 @@ declare const restoreWarehouse: ({ warehouseId }: {
|
|
|
296
302
|
warehouseId: number;
|
|
297
303
|
}) => Promise<void>;
|
|
298
304
|
|
|
299
|
-
export {
|
|
305
|
+
export { getWarehouseById as $, getExchangeRates as A, getLocationById as B, type ChangeProductRequest as C, getLocations as D, getLocationsForSelect as E, getMatchedBatches as F, type GetReturnsByOrderIdResponse as G, getMaterialById as H, type IExchange as I, getMaterials as J, getMaterialsForSelect as K, type LocationResponse as L, type MaterialResponse as M, getOrderById as N, getOrders as O, type PaymentType as P, type QRBaseUrlResponse as Q, type Response as R, type StateResponse as S, getOrdersStatusForSelect as T, type UpdateBatchData as U, getPaymentTypes as V, type WarehouseResponse as W, getPermissionRoleByRoleID as X, getQRBaseUrl as Y, getReturnsByOrderId as Z, getUserSettings as _, type ChangeProductResponse as a, getWarehouses as a0, getWarehousesForSelect as a1, login as a2, makeNewCashMovement as a3, printQR as a4, restoreLocation as a5, restoreWarehouse as a6, setNewShift as a7, undeleteMaterial as a8, updateBatch as a9, updateLocation as aa, updateMaterial as ab, updatePermission as ac, updateUserSettings as ad, updateWarehouse as ae, type IExchangeResponse as b, type IUpdatePermission as c, type IUserSettings as d, type LoginResponse as e, type PrintQRResponse as f, changeOrderProduct as g, closeShift as h, createBatch as i, createBatchAndUpdateOtherBatches as j, createExchangeRate as k, createLocation as l, createMaterial as m, createReturn as n, createWareHouse as o, deleteLocation as p, deleteMaterial as q, deleteWarehouse as r, getAllLocations as s, getAllMaterials as t, getAllPermissions as u, getAllStates as v, getBatchById as w, getBatches as x, getBatchesForSelect as y, getExchangeRate as z };
|