@classytic/commerce-sdk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of @classytic/commerce-sdk might be problematic. Click here for more details.

Files changed (131) hide show
  1. package/LICENSE +14 -0
  2. package/README.md +104 -0
  3. package/dist/adjustment-DTSLM7AN.js +5 -0
  4. package/dist/adjustment-DTSLM7AN.js.map +1 -0
  5. package/dist/analytics/index.d.ts +27 -0
  6. package/dist/analytics/index.js +6 -0
  7. package/dist/analytics/index.js.map +1 -0
  8. package/dist/analytics-DMcD-o8w.d.ts +76 -0
  9. package/dist/api-factory-B_h4RKBm.d.ts +280 -0
  10. package/dist/auth/index.d.ts +39 -0
  11. package/dist/auth/index.js +5 -0
  12. package/dist/auth/index.js.map +1 -0
  13. package/dist/catalog/index.d.ts +479 -0
  14. package/dist/catalog/index.js +9 -0
  15. package/dist/catalog/index.js.map +1 -0
  16. package/dist/chunk-4ZQK3FFN.js +40 -0
  17. package/dist/chunk-4ZQK3FFN.js.map +1 -0
  18. package/dist/chunk-5L6EXDGH.js +465 -0
  19. package/dist/chunk-5L6EXDGH.js.map +1 -0
  20. package/dist/chunk-5ZFW3FEI.js +183 -0
  21. package/dist/chunk-5ZFW3FEI.js.map +1 -0
  22. package/dist/chunk-66OQAZSL.js +94 -0
  23. package/dist/chunk-66OQAZSL.js.map +1 -0
  24. package/dist/chunk-6RYGA6MF.js +123 -0
  25. package/dist/chunk-6RYGA6MF.js.map +1 -0
  26. package/dist/chunk-B6MPVOV7.js +328 -0
  27. package/dist/chunk-B6MPVOV7.js.map +1 -0
  28. package/dist/chunk-BDA2WSJA.js +148 -0
  29. package/dist/chunk-BDA2WSJA.js.map +1 -0
  30. package/dist/chunk-EIVYT3HM.js +126 -0
  31. package/dist/chunk-EIVYT3HM.js.map +1 -0
  32. package/dist/chunk-EPQN7ZKZ.js +27 -0
  33. package/dist/chunk-EPQN7ZKZ.js.map +1 -0
  34. package/dist/chunk-FA7QFJ2G.js +177 -0
  35. package/dist/chunk-FA7QFJ2G.js.map +1 -0
  36. package/dist/chunk-I5TIKUIQ.js +261 -0
  37. package/dist/chunk-I5TIKUIQ.js.map +1 -0
  38. package/dist/chunk-ILQUH444.js +135 -0
  39. package/dist/chunk-ILQUH444.js.map +1 -0
  40. package/dist/chunk-IXMWZJLV.js +616 -0
  41. package/dist/chunk-IXMWZJLV.js.map +1 -0
  42. package/dist/chunk-KZIGRIQG.js +75 -0
  43. package/dist/chunk-KZIGRIQG.js.map +1 -0
  44. package/dist/chunk-OF5M6R2S.js +769 -0
  45. package/dist/chunk-OF5M6R2S.js.map +1 -0
  46. package/dist/chunk-PYYLHUV6.js +3 -0
  47. package/dist/chunk-PYYLHUV6.js.map +1 -0
  48. package/dist/chunk-QO5AGZFP.js +159 -0
  49. package/dist/chunk-QO5AGZFP.js.map +1 -0
  50. package/dist/chunk-QUMTBLNE.js +76 -0
  51. package/dist/chunk-QUMTBLNE.js.map +1 -0
  52. package/dist/chunk-R5Z7NYLH.js +126 -0
  53. package/dist/chunk-R5Z7NYLH.js.map +1 -0
  54. package/dist/chunk-SZYWG5IB.js +75 -0
  55. package/dist/chunk-SZYWG5IB.js.map +1 -0
  56. package/dist/chunk-U3XT35GZ.js +202 -0
  57. package/dist/chunk-U3XT35GZ.js.map +1 -0
  58. package/dist/chunk-UGELTUIZ.js +830 -0
  59. package/dist/chunk-UGELTUIZ.js.map +1 -0
  60. package/dist/chunk-VR36QVX2.js +122 -0
  61. package/dist/chunk-VR36QVX2.js.map +1 -0
  62. package/dist/chunk-WUOQK7BO.js +13 -0
  63. package/dist/chunk-WUOQK7BO.js.map +1 -0
  64. package/dist/chunk-X6PV5MHG.js +582 -0
  65. package/dist/chunk-X6PV5MHG.js.map +1 -0
  66. package/dist/chunk-ZWLMFLLH.js +534 -0
  67. package/dist/chunk-ZWLMFLLH.js.map +1 -0
  68. package/dist/content/index.d.ts +309 -0
  69. package/dist/content/index.js +6 -0
  70. package/dist/content/index.js.map +1 -0
  71. package/dist/core/index.d.ts +107 -0
  72. package/dist/core/index.js +5 -0
  73. package/dist/core/index.js.map +1 -0
  74. package/dist/core/react.d.ts +107 -0
  75. package/dist/core/react.js +5 -0
  76. package/dist/core/react.js.map +1 -0
  77. package/dist/coupon-CHFcw7cd.d.ts +632 -0
  78. package/dist/coupon-zGkvO-Xx.d.ts +129 -0
  79. package/dist/crud.factory-DyKaPHcU.d.ts +181 -0
  80. package/dist/finance/index.d.ts +81 -0
  81. package/dist/finance/index.js +5 -0
  82. package/dist/finance/index.js.map +1 -0
  83. package/dist/finance-BJdfKRw0.d.ts +135 -0
  84. package/dist/index.d.ts +31 -0
  85. package/dist/index.js +29 -0
  86. package/dist/index.js.map +1 -0
  87. package/dist/inventory/index.d.ts +512 -0
  88. package/dist/inventory/index.js +16 -0
  89. package/dist/inventory/index.js.map +1 -0
  90. package/dist/inventory-DCiIZh8P.d.ts +742 -0
  91. package/dist/logistics/index.d.ts +226 -0
  92. package/dist/logistics/index.js +7 -0
  93. package/dist/logistics/index.js.map +1 -0
  94. package/dist/logistics-V8a9lUN3.d.ts +428 -0
  95. package/dist/media-CNLJK93J.d.ts +721 -0
  96. package/dist/movement-7MV3ADY5.js +5 -0
  97. package/dist/movement-7MV3ADY5.js.map +1 -0
  98. package/dist/payment-BRboLqvU.d.ts +127 -0
  99. package/dist/payments/index.d.ts +55 -0
  100. package/dist/payments/index.js +6 -0
  101. package/dist/payments/index.js.map +1 -0
  102. package/dist/platform/index.d.ts +645 -0
  103. package/dist/platform/index.js +8 -0
  104. package/dist/platform/index.js.map +1 -0
  105. package/dist/pos-D1jkkFl0.d.ts +885 -0
  106. package/dist/product-p09zXkXB.d.ts +260 -0
  107. package/dist/purchase-24BGT2HA.js +5 -0
  108. package/dist/purchase-24BGT2HA.js.map +1 -0
  109. package/dist/request-652PS6VR.js +5 -0
  110. package/dist/request-652PS6VR.js.map +1 -0
  111. package/dist/sales/index.d.ts +585 -0
  112. package/dist/sales/index.js +9 -0
  113. package/dist/sales/index.js.map +1 -0
  114. package/dist/server.d.ts +120 -0
  115. package/dist/server.js +27 -0
  116. package/dist/server.js.map +1 -0
  117. package/dist/size-guide-DgjzjM5P.d.ts +554 -0
  118. package/dist/stock-DEApGC-w.d.ts +632 -0
  119. package/dist/stock-OOUW57VQ.js +5 -0
  120. package/dist/stock-OOUW57VQ.js.map +1 -0
  121. package/dist/supplier-OC6JAWV6.js +5 -0
  122. package/dist/supplier-OC6JAWV6.js.map +1 -0
  123. package/dist/transaction/index.d.ts +104 -0
  124. package/dist/transaction/index.js +8 -0
  125. package/dist/transaction/index.js.map +1 -0
  126. package/dist/transaction-BTmoHpWh.d.ts +428 -0
  127. package/dist/transaction-u5oaNuav.d.ts +84 -0
  128. package/dist/transfer-7SYSH3RG.js +5 -0
  129. package/dist/transfer-7SYSH3RG.js.map +1 -0
  130. package/dist/user-data-DdLjAGwO.d.ts +132 -0
  131. package/package.json +146 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/platform/api/config.ts","../src/platform/api/branch.ts","../src/platform/api/user.ts","../src/platform/api/coupon.ts","../src/platform/api/webhook.ts","../src/platform/api/export.ts","../src/platform/types/branch.ts","../src/platform/hooks/config.ts","../src/platform/hooks/branch.ts","../src/platform/hooks/user.ts","../src/platform/hooks/coupon.ts"],"names":[],"mappings":"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","file":"chunk-OF5M6R2S.js","sourcesContent":["/**\r\n * Platform Configuration API\r\n *\r\n * Singleton platform configuration - stores all platform-wide settings.\r\n *\r\n * Endpoints:\r\n * - GET /api/v1/platform/config - Get platform config (supports field selection)\r\n * - PATCH /api/v1/platform/config - Update platform config (admin only)\r\n *\r\n * Field Selection:\r\n * - ?select=paymentMethods\r\n * - ?select=checkout,vat\r\n * - ?select=policies\r\n */\r\n\r\nimport { handleApiRequest } from \"../../core/api-handler\";\r\nimport type { ApiResponse } from \"../../core/api-factory\";\r\nimport type { PlatformConfig, UpdatePlatformConfigPayload } from \"../types\";\r\n\r\nclass PlatformConfigApi {\r\n readonly baseUrl = \"/api/v1/platform\";\r\n\r\n /**\r\n * Get platform configuration\r\n *\r\n * @param options.token - Optional access token (public without, authenticated with)\r\n * @param options.select - Optional field selection (e.g., \"paymentMethods\", \"checkout,vat\")\r\n * @returns Platform configuration (full or selected fields)\r\n *\r\n * @example\r\n * // Full config (public)\r\n * const config = await platformConfigApi.getConfig({});\r\n *\r\n * // Selected fields (public)\r\n * const config = await platformConfigApi.getConfig({ select: \"paymentMethods\" });\r\n *\r\n * // Authenticated (admin sees more fields)\r\n * const config = await platformConfigApi.getConfig({ token, select: \"checkout,vat\" });\r\n */\r\n async getConfig({\r\n token,\r\n select,\r\n }: {\r\n token?: string | null;\r\n select?: string | null;\r\n } = {}): Promise<ApiResponse<PlatformConfig>> {\r\n const queryParams = select ? `?select=${select}` : \"\";\r\n\r\n return handleApiRequest(\"GET\", `${this.baseUrl}/config${queryParams}`, {\r\n token: token ?? undefined,\r\n cache: token ? \"no-store\" : \"force-cache\",\r\n revalidate: token ? undefined : 3600, // 1 hour for public\r\n tags: [\"platform-config\"],\r\n });\r\n }\r\n\r\n /**\r\n * Update platform configuration\r\n *\r\n * @param options.token - Admin access token (required)\r\n * @param options.data - Configuration data to update (partial update)\r\n * @returns Updated platform configuration\r\n *\r\n * @example\r\n * // Update payment methods\r\n * await platformConfigApi.updateConfig({\r\n * token,\r\n * data: {\r\n * paymentMethods: [\r\n * { type: 'cash', name: 'Cash on Delivery', isActive: true },\r\n * { type: 'mfs', provider: 'bkash', name: 'bKash', walletNumber: '01712345678' },\r\n * ]\r\n * }\r\n * });\r\n *\r\n * // Update checkout settings\r\n * await platformConfigApi.updateConfig({\r\n * token,\r\n * data: {\r\n * checkout: {\r\n * freeDeliveryThreshold: 2000,\r\n * deliveryZones: [\r\n * { name: 'Dhaka', region: 'dhaka', price: 60, estimatedDays: 2, isActive: true }\r\n * ]\r\n * }\r\n * }\r\n * });\r\n */\r\n async updateConfig({\r\n token,\r\n data,\r\n }: {\r\n token: string;\r\n data: UpdatePlatformConfigPayload;\r\n }): Promise<ApiResponse<PlatformConfig>> {\r\n if (!token) {\r\n throw new Error(\"Authentication required to update platform config\");\r\n }\r\n\r\n return handleApiRequest(\"PATCH\", `${this.baseUrl}/config`, {\r\n token,\r\n body: data,\r\n tags: [\"platform-config\"],\r\n });\r\n }\r\n\r\n /**\r\n * Get payment methods only\r\n * Convenience method for checkout/POS\r\n *\r\n * @param options.token - Optional access token\r\n * @returns Platform config with only paymentMethods field\r\n */\r\n async getPaymentMethods({\r\n token,\r\n }: {\r\n token?: string | null;\r\n } = {}): Promise<ApiResponse<Pick<PlatformConfig, \"paymentMethods\">>> {\r\n return this.getConfig({ token, select: \"paymentMethods\" });\r\n }\r\n\r\n /**\r\n * Get checkout settings only\r\n * Convenience method for checkout flow\r\n *\r\n * @param options.token - Optional access token\r\n * @returns Platform config with only checkout field\r\n */\r\n async getCheckoutSettings({\r\n token,\r\n }: {\r\n token?: string | null;\r\n } = {}): Promise<ApiResponse<Pick<PlatformConfig, \"checkout\">>> {\r\n return this.getConfig({ token, select: \"checkout\" });\r\n }\r\n\r\n /**\r\n * Get delivery zones\r\n * Convenience method for delivery selection\r\n *\r\n * @param options.token - Optional access token\r\n * @returns Platform config with checkout.deliveryZones\r\n */\r\n async getDeliveryZones({\r\n token,\r\n }: {\r\n token?: string | null;\r\n } = {}): Promise<ApiResponse<Pick<PlatformConfig, \"checkout\">>> {\r\n return this.getConfig({ token, select: \"checkout\" });\r\n }\r\n\r\n /**\r\n * Get VAT configuration\r\n * Convenience method for invoice/tax calculations\r\n *\r\n * @param options.token - Optional access token\r\n * @returns Platform config with only vat field\r\n */\r\n async getVatConfig({\r\n token,\r\n }: {\r\n token?: string | null;\r\n } = {}): Promise<ApiResponse<Pick<PlatformConfig, \"vat\">>> {\r\n return this.getConfig({ token, select: \"vat\" });\r\n }\r\n\r\n /**\r\n * Get membership configuration\r\n * Convenience method for loyalty programs\r\n *\r\n * @param options.token - Optional access token\r\n * @returns Platform config with only membership field\r\n */\r\n async getMembershipConfig({\r\n token,\r\n }: {\r\n token?: string | null;\r\n } = {}): Promise<ApiResponse<Pick<PlatformConfig, \"membership\">>> {\r\n return this.getConfig({ token, select: \"membership\" });\r\n }\r\n}\r\n\r\n// Create and export singleton instance\r\nexport const platformConfigApi = new PlatformConfigApi();\r\n\r\n// Export class for custom configurations\r\nexport { PlatformConfigApi };\r\n\r\n// Legacy export for backwards compatibility\r\nexport const platformApi = platformConfigApi;\r\nexport const businessApi = platformConfigApi;\r\n","/**\r\n * Branch API - CRUD + Custom Endpoints\r\n *\r\n * Standard CRUD (inherited from BaseApi):\r\n * - getAll({ token, params }) - list with filtering/pagination\r\n * - getById({ token, id }) - get by ID\r\n * - create({ token, data }) - create (admin only)\r\n * - update({ token, id, data }) - update (admin only)\r\n * - delete({ token, id }) - delete (admin only)\r\n *\r\n * Custom endpoints:\r\n * - getByCode({ token, code }) - GET /branches/code/:code\r\n * - getDefault({ token }) - GET /branches/default (auto-creates if none)\r\n * - setDefault({ token, id }) - POST /branches/:id/set-default\r\n *\r\n * For active branches: getAll({ token, params: { isActive: true } })\r\n */\r\n\r\nimport { BaseApi, type ApiResponse, type RequestOptions } from \"../../core/api-factory\";\r\nimport { handleApiRequest } from \"../../core/api-handler\";\r\nimport type { Branch, CreateBranchPayload, UpdateBranchPayload } from \"../types\";\r\n\r\ntype FetchOptions = Omit<RequestOptions, 'token' | 'organizationId'>;\r\n\r\nclass BranchApi extends BaseApi<Branch, CreateBranchPayload, UpdateBranchPayload> {\r\n constructor(config = {}) {\r\n super('branches', config);\r\n }\r\n\r\n /**\r\n * Get branch by code\r\n * GET /branches/code/:code\r\n *\r\n * @example\r\n * branchApi.getByCode({ token, code: 'DHK-1' })\r\n */\r\n async getByCode({\r\n token,\r\n code,\r\n options = {},\r\n }: {\r\n token: string;\r\n code: string;\r\n options?: FetchOptions;\r\n }): Promise<ApiResponse<Branch>> {\r\n if (!code) {\r\n throw new Error('Branch code is required');\r\n }\r\n\r\n return handleApiRequest('GET', `${this.baseUrl}/code/${code}`, {\r\n token,\r\n cache: this.config.cache,\r\n ...options,\r\n });\r\n }\r\n\r\n /**\r\n * Get default branch (auto-creates if none exists)\r\n * GET /branches/default\r\n *\r\n * @example\r\n * branchApi.getDefault({ token })\r\n */\r\n async getDefault({\r\n token,\r\n options = {},\r\n }: {\r\n token: string;\r\n options?: FetchOptions;\r\n }): Promise<ApiResponse<Branch>> {\r\n return handleApiRequest('GET', `${this.baseUrl}/default`, {\r\n token,\r\n cache: this.config.cache,\r\n ...options,\r\n });\r\n }\r\n\r\n // For active branches, use: getAll({ token, params: { isActive: true } })\r\n\r\n /**\r\n * Set a branch as the default\r\n * POST /branches/:id/set-default\r\n *\r\n * @example\r\n * branchApi.setDefault({ token, id: '507f1f77bcf86cd799439011' })\r\n */\r\n async setDefault({\r\n token,\r\n id,\r\n options = {},\r\n }: {\r\n token: string;\r\n id: string;\r\n options?: FetchOptions;\r\n }): Promise<ApiResponse<Branch>> {\r\n if (!id) {\r\n throw new Error('Branch ID is required');\r\n }\r\n\r\n return handleApiRequest('POST', `${this.baseUrl}/${id}/set-default`, {\r\n token,\r\n ...options,\r\n });\r\n }\r\n}\r\n\r\n// Create and export a singleton instance\r\nexport const branchApi = new BranchApi();\r\n\r\n// Export class for custom configurations\r\nexport { BranchApi };\r\n","/**\r\n * User API - Admin User Management (CRUD)\r\n *\r\n * Standard CRUD (inherited from BaseApi):\r\n * - getAll({ token, params }) - list users with filtering/pagination\r\n * - getById({ token, id }) - get user by ID\r\n * - create({ token, data }) - create user (admin only)\r\n * - update({ token, id, data }) - update user (admin only)\r\n * - delete({ token, id }) - delete user (admin only)\r\n *\r\n * Query examples:\r\n * - List all users: getAll({ token, params: { page: 1, limit: 10 } })\r\n * - Filter by role: getAll({ token, params: { roles: 'admin' } })\r\n * - Search by name: getAll({ token, params: { 'name[contains]': 'john' } })\r\n * - Filter by branch: getAll({ token, params: { 'branches.branchId': 'branch_123' } })\r\n * - Active users only: getAll({ token, params: { isActive: true } })\r\n */\r\n\r\nimport { BaseApi } from \"../../core/api-factory\";\r\nimport type { User, CreateUserPayload, UpdateUserPayload } from \"../types\";\r\n\r\nclass UserApi extends BaseApi<User, CreateUserPayload, UpdateUserPayload> {\r\n constructor(config = {}) {\r\n super('users', config);\r\n }\r\n}\r\n\r\n// Create and export a singleton instance\r\nexport const userApi = new UserApi();\r\n\r\n// Export class for custom configurations\r\nexport { UserApi };\r\n","/**\r\n * Coupon API - CRUD + validate\r\n *\r\n * Standard CRUD (inherited from BaseApi):\r\n * - getAll({ token, params }) - list coupons with filtering/pagination\r\n * - getById({ token, id }) - get coupon by ID\r\n * - create({ token, data }) - create coupon (admin only)\r\n * - update({ token, id, data }) - update coupon (admin only)\r\n * - delete({ token, id }) - delete coupon (admin only)\r\n *\r\n * Custom endpoints:\r\n * - validateCoupon({ code, data }) - POST /coupons/validate/:code\r\n */\r\n\r\nimport { BaseApi, type ApiResponse, type RequestOptions } from \"../../core/api-factory\";\r\nimport { handleApiRequest } from \"../../core/api-handler\";\r\nimport type {\r\n Coupon,\r\n CreateCouponPayload,\r\n UpdateCouponPayload,\r\n CouponValidationResult,\r\n ValidateCouponPayload,\r\n} from \"../types\";\r\n\r\ntype FetchOptions = Omit<RequestOptions, \"token\" | \"organizationId\">;\r\n\r\nclass CouponApi extends BaseApi<Coupon, CreateCouponPayload, UpdateCouponPayload> {\r\n constructor(config = {}) {\r\n super(\"coupons\", config);\r\n }\r\n\r\n /**\r\n * Validate coupon by code with order amount\r\n * POST /coupons/validate/:code\r\n *\r\n * @example\r\n * const result = await couponApi.validateCoupon({\r\n * code: 'SUMMER20',\r\n * data: { orderAmount: 1500 }\r\n * });\r\n *\r\n * if (result.data?.valid) {\r\n * console.log('Discount:', result.data.discountAmount);\r\n * }\r\n */\r\n async validateCoupon({\r\n code,\r\n data,\r\n options = {},\r\n }: {\r\n code: string;\r\n data: ValidateCouponPayload;\r\n options?: FetchOptions;\r\n }): Promise<ApiResponse<CouponValidationResult>> {\r\n return handleApiRequest(\"POST\", `${this.baseUrl}/validate/${code}`, {\r\n cache: this.config.cache,\r\n body: data,\r\n ...options,\r\n });\r\n }\r\n}\r\n\r\n// Create and export a singleton instance\r\nexport const couponApi = new CouponApi();\r\n\r\n// Export class for custom configurations\r\nexport { CouponApi };\r\n","/**\r\n * Payment Webhook API\r\n *\r\n * Handles manual payment verification/rejection for superadmins.\r\n *\r\n * Routes:\r\n * - POST /webhooks/payments/manual/verify - Verify manual payment (superadmin)\r\n * - POST /webhooks/payments/manual/reject - Reject manual payment (superadmin)\r\n *\r\n * Note: Provider webhooks (POST /webhooks/payments/:provider) are called\r\n * directly by payment providers (Stripe, SSLCommerz, etc.) and don't need\r\n * a frontend client method.\r\n */\r\n\r\nimport { handleApiRequest } from \"../../core/api-handler\";\r\nimport type { ApiResponse } from \"../../core/api-factory\";\r\nimport type {\r\n ManualVerifyPayload,\r\n ManualRejectPayload,\r\n ManualVerifyResponseData,\r\n ManualRejectResponseData,\r\n} from \"../types\";\r\n\r\ntype FetchOptions = Omit<RequestInit, 'body' | 'method'>;\r\n\r\nclass WebhookApi {\r\n private baseUrl: string;\r\n\r\n constructor() {\r\n this.baseUrl = \"/webhooks/payments\";\r\n }\r\n\r\n /**\r\n * Verify a manual payment (superadmin only)\r\n * POST /webhooks/payments/manual/verify\r\n *\r\n * Flow:\r\n * 1. Customer places order with manual payment (cash, bKash, Nagad, bank)\r\n * 2. Customer pays and provides transaction reference\r\n * 3. Admin verifies payment via this endpoint\r\n * 4. Transaction status -> 'verified'\r\n * 5. Order payment status -> 'verified', order status -> 'confirmed'\r\n *\r\n * @param params.transactionId - Transaction ID to verify\r\n * @param params.notes - Optional verification notes\r\n * @param params.token - Auth token (superadmin required)\r\n * @param params.options - Additional fetch options\r\n * @returns Verification result with transaction details\r\n *\r\n * @example\r\n * ```typescript\r\n * const result = await webhookApi.verifyPayment({\r\n * token: adminToken,\r\n * transactionId: '507f1f77bcf86cd799439011',\r\n * notes: 'Verified bKash TrxID via app',\r\n * });\r\n * ```\r\n */\r\n async verifyPayment({\r\n token,\r\n transactionId,\r\n notes,\r\n options = {},\r\n }: {\r\n token: string;\r\n transactionId: string;\r\n notes?: string;\r\n options?: FetchOptions;\r\n }): Promise<ApiResponse<ManualVerifyResponseData>> {\r\n if (!transactionId) throw new Error(\"Transaction ID is required\");\r\n if (!token) throw new Error(\"Authentication required\");\r\n\r\n const body: ManualVerifyPayload = { transactionId };\r\n if (notes) body.notes = notes;\r\n\r\n return handleApiRequest(\"POST\", `${this.baseUrl}/manual/verify`, {\r\n token,\r\n body,\r\n cache: \"no-store\",\r\n ...options,\r\n });\r\n }\r\n\r\n /**\r\n * Reject a manual payment (superadmin only)\r\n * POST /webhooks/payments/manual/reject\r\n *\r\n * Flow:\r\n * 1. Customer claims to have paid but admin finds issue\r\n * 2. Admin rejects payment with reason via this endpoint\r\n * 3. Transaction status -> 'failed', failureReason recorded\r\n * 4. Order payment status -> 'failed'\r\n *\r\n * Common rejection reasons:\r\n * - Invalid transaction reference\r\n * - Amount mismatch\r\n * - Duplicate claim\r\n * - Suspected fraud\r\n * - Payment not received\r\n *\r\n * @param params.transactionId - Transaction ID to reject\r\n * @param params.reason - Rejection reason (required)\r\n * @param params.token - Auth token (superadmin required)\r\n * @param params.options - Additional fetch options\r\n * @returns Rejection result with failure details\r\n *\r\n * @example\r\n * ```typescript\r\n * const result = await webhookApi.rejectPayment({\r\n * token: adminToken,\r\n * transactionId: '507f1f77bcf86cd799439011',\r\n * reason: 'Invalid bKash TrxID - no matching transaction found',\r\n * });\r\n * ```\r\n */\r\n async rejectPayment({\r\n token,\r\n transactionId,\r\n reason,\r\n options = {},\r\n }: {\r\n token: string;\r\n transactionId: string;\r\n reason: string;\r\n options?: FetchOptions;\r\n }): Promise<ApiResponse<ManualRejectResponseData>> {\r\n if (!transactionId) throw new Error(\"Transaction ID is required\");\r\n if (!reason) throw new Error(\"Rejection reason is required\");\r\n if (!token) throw new Error(\"Authentication required\");\r\n\r\n const body: ManualRejectPayload = { transactionId, reason };\r\n\r\n return handleApiRequest(\"POST\", `${this.baseUrl}/manual/reject`, {\r\n token,\r\n body,\r\n cache: \"no-store\",\r\n ...options,\r\n });\r\n }\r\n\r\n /**\r\n * Alias for verifyPayment - more explicit naming\r\n * @deprecated Use verifyPayment instead\r\n */\r\n async verifyManualPayment(\r\n params: Parameters<typeof this.verifyPayment>[0]\r\n ): Promise<ApiResponse<ManualVerifyResponseData>> {\r\n return this.verifyPayment(params);\r\n }\r\n\r\n /**\r\n * Alias for rejectPayment - more explicit naming\r\n * @deprecated Use rejectPayment instead\r\n */\r\n async rejectManualPayment(\r\n params: Parameters<typeof this.rejectPayment>[0]\r\n ): Promise<ApiResponse<ManualRejectResponseData>> {\r\n return this.rejectPayment(params);\r\n }\r\n}\r\n\r\n// Create and export singleton instance\r\nexport const webhookApi = new WebhookApi();\r\n\r\n// Export class for custom configurations\r\nexport { WebhookApi };\r\n","/**\r\n * Export API - Data Export Operations\r\n *\r\n * Consolidated API for exporting data to CSV/XLSX formats.\r\n *\r\n * Routes:\r\n * - GET /export/csv?collection=xxx&select=yyy&filter=zzz\r\n * - GET /export/xlsx?collection=xxx&select=yyy&filter=zzz\r\n *\r\n * Features:\r\n * - MongoKit repository-based exports (secure, role-filtered)\r\n * - Role-based field filtering (hides sensitive data like costPrice)\r\n * - CSV and XLSX formats\r\n * - Direct download or programmatic handling\r\n * - Filter support with MongoDB query syntax\r\n *\r\n * Supported Collections:\r\n * - product: Product catalog with pricing\r\n * - order: Order history\r\n * - customer: Customer list\r\n * - transaction: Financial transactions\r\n * - stockEntry: Current inventory levels\r\n * - stockMovement: Inventory movement history\r\n *\r\n * Usage Examples:\r\n * ```ts\r\n * // Export all products to CSV\r\n * const blob = await exportApi.toCSV({ token, collection: 'product' });\r\n *\r\n * // Export orders with filters\r\n * const blob = await exportApi.toXLSX({\r\n * token,\r\n * collection: 'order',\r\n * filter: { status: 'delivered' },\r\n * select: 'orderNumber,customer,totalAmount,createdAt'\r\n * });\r\n *\r\n * // Trigger browser download\r\n * exportApi.downloadFile(blob, 'orders.xlsx');\r\n * ```\r\n */\r\n\r\nimport { handleApiRequest, type BlobResponse } from \"../../core/api-handler\";\r\nimport type { RequestOptions } from \"../../core/api-factory\";\r\nimport type { ExportFormat, ExportCollection } from \"../types\";\r\n\r\ntype FetchOptions = Omit<RequestOptions, 'token' | 'organizationId'>;\r\n\r\nclass ExportApi {\r\n private readonly basePath: string;\r\n\r\n constructor() {\r\n this.basePath = '/api/v1/export';\r\n }\r\n\r\n /**\r\n * Build query string from export parameters\r\n */\r\n private buildQueryString(params: {\r\n select?: string;\r\n filter?: string | Record<string, unknown>;\r\n }): string {\r\n const searchParams = new URLSearchParams();\r\n\r\n if (params.select) {\r\n searchParams.append('select', params.select);\r\n }\r\n\r\n if (params.filter) {\r\n const filterString =\r\n typeof params.filter === 'string'\r\n ? params.filter\r\n : JSON.stringify(params.filter);\r\n searchParams.append('filter', filterString);\r\n }\r\n\r\n return searchParams.toString();\r\n }\r\n\r\n /**\r\n * Export data to CSV format\r\n * GET /export/csv\r\n *\r\n * Returns CSV file as blob for download or processing.\r\n *\r\n * @example\r\n * // Export all products\r\n * const blob = await exportApi.toCSV({ token, collection: 'product' });\r\n *\r\n * // Export filtered transactions\r\n * const blob = await exportApi.toCSV({\r\n * token,\r\n * collection: 'transaction',\r\n * filter: { status: 'verified' },\r\n * select: 'amount,method,status,createdAt'\r\n * });\r\n */\r\n async toCSV({\r\n token,\r\n collection,\r\n filter,\r\n select,\r\n options = {},\r\n }: {\r\n token: string;\r\n collection: ExportCollection;\r\n filter?: Record<string, unknown> | string;\r\n select?: string;\r\n options?: FetchOptions;\r\n }): Promise<Blob> {\r\n const params = this.buildQueryString({ filter, select });\r\n const url = `${this.basePath}/csv?collection=${collection}${params ? `&${params}` : ''}`;\r\n\r\n const response = await handleApiRequest<BlobResponse>('GET', url, {\r\n token,\r\n cache: 'no-store',\r\n ...options,\r\n });\r\n\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Export data to XLSX (Excel) format\r\n * GET /export/xlsx\r\n *\r\n * Returns Excel file as blob for download or processing.\r\n *\r\n * @example\r\n * // Export stock movements\r\n * const blob = await exportApi.toXLSX({\r\n * token,\r\n * collection: 'stockMovement',\r\n * filter: { type: 'sale', createdAt: { $gte: '2024-01-01' } }\r\n * });\r\n */\r\n async toXLSX({\r\n token,\r\n collection,\r\n filter,\r\n select,\r\n options = {},\r\n }: {\r\n token: string;\r\n collection: ExportCollection;\r\n filter?: Record<string, unknown> | string;\r\n select?: string;\r\n options?: FetchOptions;\r\n }): Promise<Blob> {\r\n const params = this.buildQueryString({ filter, select });\r\n const url = `${this.basePath}/xlsx?collection=${collection}${params ? `&${params}` : ''}`;\r\n\r\n const response = await handleApiRequest<BlobResponse>('GET', url, {\r\n token,\r\n cache: 'no-store',\r\n ...options,\r\n });\r\n\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Export data with specified format\r\n * Convenience method for format-agnostic exports\r\n *\r\n * @example\r\n * const format = userPreference.exportFormat; // 'csv' | 'xlsx'\r\n * const blob = await exportApi.export({\r\n * token,\r\n * format,\r\n * collection: 'customer',\r\n * select: 'name,phone,email'\r\n * });\r\n */\r\n async export({\r\n token,\r\n format,\r\n collection,\r\n filter,\r\n select,\r\n options = {},\r\n }: {\r\n token: string;\r\n format: ExportFormat;\r\n collection: ExportCollection;\r\n filter?: Record<string, unknown> | string;\r\n select?: string;\r\n options?: FetchOptions;\r\n }): Promise<Blob> {\r\n if (format === 'csv') {\r\n return this.toCSV({ token, collection, filter, select, options });\r\n } else {\r\n return this.toXLSX({ token, collection, filter, select, options });\r\n }\r\n }\r\n\r\n /**\r\n * Trigger browser download of blob\r\n * Creates temporary link and clicks it to download file\r\n *\r\n * @example\r\n * const blob = await exportApi.toCSV({ token, collection: 'product' });\r\n * exportApi.downloadFile(blob, 'products.csv');\r\n */\r\n downloadFile(blob: Blob, filename: string): void {\r\n const url = window.URL.createObjectURL(blob);\r\n const link = document.createElement('a');\r\n link.href = url;\r\n link.download = filename;\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n window.URL.revokeObjectURL(url);\r\n }\r\n\r\n /**\r\n * Get suggested filename based on collection and format\r\n *\r\n * @example\r\n * const filename = exportApi.getSuggestedFilename('product', 'csv');\r\n * // Returns: 'products-2024-12-11.csv'\r\n */\r\n getSuggestedFilename(collection: ExportCollection, format: ExportFormat): string {\r\n const date = new Date().toISOString().split('T')[0]; // YYYY-MM-DD\r\n const collectionPlural = collection.endsWith('y')\r\n ? collection.slice(0, -1) + 'ies'\r\n : collection + 's';\r\n return `${collectionPlural}-${date}.${format}`;\r\n }\r\n}\r\n\r\n// Create and export a singleton instance\r\nexport const exportApi = new ExportApi();\r\n\r\n// Export class for custom configurations\r\nexport { ExportApi };\r\n\r\n// ==================== Utility Functions ====================\r\n\r\n/**\r\n * Export and download in one call\r\n * Convenience wrapper for common use case\r\n *\r\n * @example\r\n * await exportAndDownload({\r\n * token,\r\n * format: 'xlsx',\r\n * collection: 'order',\r\n * filter: { status: 'delivered' }\r\n * });\r\n */\r\nexport async function exportAndDownload({\r\n token,\r\n format,\r\n collection,\r\n filter,\r\n select,\r\n filename,\r\n}: {\r\n token: string;\r\n format: ExportFormat;\r\n collection: ExportCollection;\r\n filter?: Record<string, unknown> | string;\r\n select?: string;\r\n filename?: string;\r\n}): Promise<void> {\r\n const blob = await exportApi.export({ token, format, collection, filter, select });\r\n const finalFilename = filename || exportApi.getSuggestedFilename(collection, format);\r\n exportApi.downloadFile(blob, finalFilename);\r\n}\r\n\r\n/**\r\n * Read CSV blob as text\r\n * Useful for preview or parsing\r\n *\r\n * @example\r\n * const blob = await exportApi.toCSV({ token, collection: 'customer' });\r\n * const csvText = await readCSVBlob(blob);\r\n * console.log('First 100 chars:', csvText.slice(0, 100));\r\n */\r\nexport async function readCSVBlob(blob: Blob): Promise<string> {\r\n return blob.text();\r\n}\r\n\r\n/**\r\n * Parse CSV text to array of objects\r\n * Simple CSV parser for client-side processing\r\n *\r\n * @example\r\n * const csvText = await readCSVBlob(blob);\r\n * const data = parseCSV(csvText);\r\n * console.log('First row:', data[0]);\r\n */\r\nexport function parseCSV(csvText: string): Array<Record<string, string>> {\r\n const lines = csvText.trim().split('\\n');\r\n if (lines.length < 2) return [];\r\n\r\n const headers = lines[0].split(',').map(h => h.trim());\r\n const data: Array<Record<string, string>> = [];\r\n\r\n for (let i = 1; i < lines.length; i++) {\r\n const values = lines[i].split(',').map(v => v.trim());\r\n const row: Record<string, string> = {};\r\n headers.forEach((header, index) => {\r\n row[header] = values[index] || '';\r\n });\r\n data.push(row);\r\n }\r\n\r\n return data;\r\n}\r\n\r\n/**\r\n * Common filter builders for exports\r\n */\r\nexport const ExportFilters = {\r\n /** Orders by date range */\r\n ordersByDateRange: (startDate: string, endDate: string) => ({\r\n createdAt: { $gte: startDate, $lte: endDate },\r\n }),\r\n\r\n /** Orders by status */\r\n ordersByStatus: (status: string | string[]) =>\r\n Array.isArray(status) ? { status: { $in: status } } : { status },\r\n\r\n /** Transactions by date and status */\r\n transactionsByDate: (startDate: string, endDate: string, status?: string) => ({\r\n transactionDate: { $gte: startDate, $lte: endDate },\r\n ...(status && { status }),\r\n }),\r\n\r\n /** Stock movements by type and date */\r\n movementsByType: (type: string, startDate?: string, endDate?: string) => ({\r\n type,\r\n ...(startDate && endDate && { createdAt: { $gte: startDate, $lte: endDate } }),\r\n }),\r\n\r\n /** Products by category */\r\n productsByCategory: (category: string | string[]) =>\r\n Array.isArray(category) ? { category: { $in: category } } : { category },\r\n\r\n /** Customers with orders */\r\n customersWithOrders: () => ({\r\n 'stats.totalOrders': { $gt: 0 },\r\n }),\r\n};\r\n\r\n/**\r\n * Common field selections for exports\r\n */\r\nexport const ExportFields = {\r\n /** Product essentials */\r\n productBasic: 'name,sku,basePrice,quantity,category',\r\n productFull: 'name,sku,barcode,basePrice,costPrice,quantity,category,isActive',\r\n\r\n /** Order essentials */\r\n orderBasic: 'orderNumber,customer,status,totalAmount,createdAt',\r\n orderFull: 'orderNumber,customer,items,totalAmount,status,paymentStatus,deliveryMethod,createdAt',\r\n\r\n /** Customer essentials */\r\n customerBasic: 'name,phone,email',\r\n customerFull: 'name,phone,email,stats,addresses,createdAt',\r\n\r\n /** Transaction essentials */\r\n transactionBasic: 'amount,method,status,transactionDate',\r\n transactionFull: 'amount,type,method,status,referenceModel,referenceId,transactionDate',\r\n\r\n /** Stock essentials */\r\n stockBasic: 'product,branch,quantity,reorderPoint',\r\n stockFull: 'product,variantSku,branch,quantity,reservedQuantity,costPrice,reorderPoint',\r\n\r\n /** Movement essentials */\r\n movementBasic: 'product,branch,type,quantity,balanceAfter,createdAt',\r\n movementFull: 'product,variantSku,branch,type,quantity,balanceAfter,costPerUnit,reference,actor,createdAt',\r\n};\r\n","/**\r\n * Branch Types\r\n *\r\n * Type definitions for store/warehouse locations.\r\n * Separated from inventory types for better organization and single responsibility.\r\n */\r\n\r\n// ============================================\r\n// BRANCH TYPES\r\n// ============================================\r\n\r\nexport type BranchType = 'store' | 'warehouse' | 'outlet' | 'franchise';\r\n\r\n/**\r\n * Branch Hierarchy Role\r\n * Determines the branch's position in the inventory flow hierarchy.\r\n *\r\n * - head_office: Central warehouse/HQ that receives purchases and distributes to sub-branches\r\n * - sub_branch: Store/outlet that receives stock from head office\r\n */\r\nexport type BranchRole = 'head_office' | 'sub_branch';\r\n\r\nexport interface BranchAddress {\r\n line1?: string;\r\n line2?: string;\r\n city?: string;\r\n state?: string;\r\n postalCode?: string;\r\n country?: string;\r\n}\r\n\r\n/**\r\n * Branch (Store/Warehouse Location)\r\n *\r\n * Represents a physical location for inventory tracking and POS operations.\r\n * Every deployment must have at least one branch (default branch).\r\n *\r\n * Branch Hierarchy:\r\n * - One branch must be designated as head_office (typically the default branch)\r\n * - All other branches are sub_branch by default\r\n * - Stock flows: Suppliers -> Head Office -> Sub-branches\r\n */\r\nexport interface Branch {\r\n _id: string;\r\n /** URL-friendly slug (auto-generated from name) */\r\n slug: string;\r\n /** Unique branch code (e.g., \"DHK-1\", \"CTG-MAIN\") - uppercase, stable */\r\n code: string;\r\n /** Display name */\r\n name: string;\r\n /** Branch type (store, warehouse, outlet, franchise) */\r\n type: BranchType;\r\n /**\r\n * Branch role in inventory hierarchy\r\n * - head_office: Receives purchases, distributes to sub-branches\r\n * - sub_branch: Receives stock from head office only\r\n */\r\n role: BranchRole;\r\n /** Physical address */\r\n address?: BranchAddress;\r\n /** Contact phone */\r\n phone?: string;\r\n /** Contact email */\r\n email?: string;\r\n /** Operating hours (simple format, e.g., \"10:00 AM - 10:00 PM\") */\r\n operatingHours?: string;\r\n /** Whether this is the default branch (only one can be default) */\r\n isDefault: boolean;\r\n /** Whether this branch is active */\r\n isActive: boolean;\r\n /** Manager user ID reference */\r\n manager?: string;\r\n /** Admin notes (admin-only field) */\r\n notes?: string;\r\n createdAt: string;\r\n updatedAt: string;\r\n}\r\n\r\n/**\r\n * Create Branch Payload\r\n */\r\nexport interface CreateBranchPayload {\r\n code: string;\r\n name: string;\r\n type?: BranchType;\r\n /** Branch hierarchy role (defaults to 'sub_branch') */\r\n role?: BranchRole;\r\n address?: BranchAddress;\r\n phone?: string;\r\n email?: string;\r\n operatingHours?: string;\r\n isDefault?: boolean;\r\n}\r\n\r\n/**\r\n * Update Branch Payload\r\n */\r\nexport interface UpdateBranchPayload extends Partial<CreateBranchPayload> {\r\n isActive?: boolean;\r\n notes?: string;\r\n}\r\n\r\n/**\r\n * Branch Summary (for dropdowns, lists)\r\n */\r\nexport interface BranchSummary {\r\n _id: string;\r\n code: string;\r\n name: string;\r\n role: BranchRole;\r\n isDefault: boolean;\r\n}\r\n\r\n// ============================================\r\n// HELPER FUNCTIONS\r\n// ============================================\r\n\r\n/**\r\n * Check if branch is head office\r\n */\r\nexport function isHeadOffice(branch: Branch | BranchSummary): boolean {\r\n return branch.role === 'head_office';\r\n}\r\n\r\n/**\r\n * Check if branch is sub-branch\r\n */\r\nexport function isSubBranch(branch: Branch | BranchSummary): boolean {\r\n return branch.role === 'sub_branch';\r\n}\r\n","\"use client\";\n\n/**\n * Platform Config Hooks\n *\n * React hooks for platform configuration management.\n */\n\nimport { useQuery, useMutation, useQueryClient } from \"@tanstack/react-query\";\nimport { platformConfigApi } from \"../api/config\";\nimport { getToastHandler } from \"../../core/react/mutation.factory\";\nimport { createQueryKeys } from \"../../core/react\";\nimport type {\n PlatformConfig,\n UpdatePlatformConfigPayload,\n CheckoutSettings,\n MembershipConfig,\n PaymentMethodConfig,\n} from \"../types\";\n\n// ============================================\n// Query Keys\n// ============================================\n\nexport const PLATFORM_KEYS = createQueryKeys(\"platform-config\");\n\n// ============================================\n// Types\n// ============================================\n\nexport interface UsePlatformConfigReturn {\n config: PlatformConfig | undefined;\n isLoading: boolean;\n isError: boolean;\n error: Error | null;\n refetch: () => void;\n}\n\nexport interface UsePaymentMethodsReturn {\n paymentMethods: PaymentMethodConfig[];\n isLoading: boolean;\n isError: boolean;\n error: Error | null;\n refetch: () => void;\n}\n\nexport interface UseDeliveryZonesReturn {\n deliveryZones: CheckoutSettings[\"deliveryZones\"];\n freeDeliveryThreshold: number;\n allowStorePickup: boolean;\n pickupBranches: CheckoutSettings[\"pickupBranches\"];\n isLoading: boolean;\n isError: boolean;\n error: Error | null;\n refetch: () => void;\n}\n\nexport interface UseMembershipConfigReturn {\n membership: MembershipConfig | null | undefined;\n isLoading: boolean;\n isError: boolean;\n error: Error | null;\n refetch: () => void;\n}\n\nexport interface UseUpdatePlatformConfigReturn {\n updateConfig: (data: UpdatePlatformConfigPayload) => Promise<PlatformConfig | undefined>;\n isUpdating: boolean;\n error: Error | null;\n}\n\n// ============================================\n// Hooks\n// ============================================\n\n/**\n * Hook to fetch platform configuration\n *\n * @param token - Optional auth token (public access without, authenticated with)\n * @param select - Optional field selection (e.g., \"paymentMethods\", \"checkout,vat\")\n * @returns Platform config with loading/error states\n */\nexport function usePlatformConfig(\n token: string | null = null,\n select: string | null = null\n): UsePlatformConfigReturn {\n const queryResult = useQuery<PlatformConfig>({\n queryKey: [...PLATFORM_KEYS.all, select],\n queryFn: async () => {\n const response = await platformConfigApi.getConfig({ token, select });\n if (response.success && response.data) {\n return response.data;\n }\n throw new Error(response.message || \"Failed to fetch platform config\");\n },\n staleTime: token ? 0 : 5 * 60 * 1000, // 5 minutes for public, 0 for authenticated\n gcTime: 10 * 60 * 1000, // 10 minutes\n });\n\n return {\n config: queryResult.data,\n isLoading: queryResult.isLoading,\n isError: queryResult.isError,\n error: queryResult.error,\n refetch: queryResult.refetch,\n };\n}\n\n/**\n * Hook to update platform configuration\n *\n * @param token - Admin auth token (required)\n * @returns Mutation function with loading state\n */\nexport function useUpdatePlatformConfig(token: string): UseUpdatePlatformConfigReturn {\n const queryClient = useQueryClient();\n const toast = getToastHandler();\n\n const mutation = useMutation({\n mutationFn: async (data: UpdatePlatformConfigPayload) => {\n if (!token) {\n throw new Error(\"Authentication required\");\n }\n\n const response = await platformConfigApi.updateConfig({ token, data });\n if (response.success) {\n return response.data;\n }\n throw new Error(response.message || \"Failed to update platform config\");\n },\n onSuccess: () => {\n // Invalidate all platform-config queries\n queryClient.invalidateQueries({ queryKey: PLATFORM_KEYS.all });\n toast.success(\"Configuration updated successfully\");\n },\n onError: (error: Error) => {\n toast.error(error.message || \"Failed to update configuration\");\n },\n });\n\n return {\n updateConfig: mutation.mutateAsync,\n isUpdating: mutation.isPending,\n error: mutation.error,\n };\n}\n\n/**\n * Hook to fetch payment methods only\n * Convenience hook for checkout/POS\n *\n * @param token - Optional auth token\n * @returns Payment methods with loading state\n */\nexport function usePaymentMethods(token: string | null = null): UsePaymentMethodsReturn {\n const queryResult = useQuery<PaymentMethodConfig[]>({\n queryKey: [...PLATFORM_KEYS.all, \"paymentMethods\"],\n queryFn: async () => {\n const response = await platformConfigApi.getPaymentMethods({ token });\n if (response.success) {\n return response.data?.paymentMethods || [];\n }\n throw new Error(response.message || \"Failed to fetch payment methods\");\n },\n staleTime: 5 * 60 * 1000,\n gcTime: 10 * 60 * 1000,\n });\n\n return {\n paymentMethods: queryResult.data || [],\n isLoading: queryResult.isLoading,\n isError: queryResult.isError,\n error: queryResult.error,\n refetch: queryResult.refetch,\n };\n}\n\n/**\n * Hook to fetch delivery zones and checkout settings\n * Convenience hook for checkout flow\n *\n * @param token - Optional auth token\n * @returns Delivery zones and checkout settings\n */\nexport function useDeliveryZones(token: string | null = null): UseDeliveryZonesReturn {\n const queryResult = useQuery<CheckoutSettings>({\n queryKey: [...PLATFORM_KEYS.all, \"checkout\"],\n queryFn: async () => {\n const response = await platformConfigApi.getCheckoutSettings({ token });\n if (response.success) {\n return response.data?.checkout || ({} as CheckoutSettings);\n }\n throw new Error(response.message || \"Failed to fetch checkout settings\");\n },\n staleTime: 5 * 60 * 1000,\n gcTime: 10 * 60 * 1000,\n });\n\n const checkout = queryResult.data;\n\n return {\n deliveryZones: checkout?.deliveryZones || [],\n freeDeliveryThreshold: checkout?.freeDeliveryThreshold || 0,\n allowStorePickup: checkout?.allowStorePickup || false,\n pickupBranches: checkout?.pickupBranches || [],\n isLoading: queryResult.isLoading,\n isError: queryResult.isError,\n error: queryResult.error,\n refetch: queryResult.refetch,\n };\n}\n\n/**\n * Hook to fetch membership config only\n * Convenience hook for loyalty programs\n *\n * @param token - Optional auth token\n * @returns Membership configuration\n */\nexport function useMembershipConfig(token: string | null = null): UseMembershipConfigReturn {\n const queryResult = useQuery<MembershipConfig | null>({\n queryKey: [...PLATFORM_KEYS.all, \"membership\"],\n queryFn: async () => {\n const response = await platformConfigApi.getMembershipConfig({ token });\n if (response.success) {\n return response.data?.membership || null;\n }\n throw new Error(response.message || \"Failed to fetch membership config\");\n },\n staleTime: 5 * 60 * 1000,\n gcTime: 10 * 60 * 1000,\n });\n\n return {\n membership: queryResult.data,\n isLoading: queryResult.isLoading,\n isError: queryResult.isError,\n error: queryResult.error,\n refetch: queryResult.refetch,\n };\n}\n","\"use client\";\n\n/**\n * Branch Hooks\n *\n * React hooks for branch CRUD operations using the factory pattern.\n */\n\nimport { createCrudHooks, type CrudApi } from \"../../core/react\";\nimport { branchApi } from \"../api/branch\";\nimport type { Branch, CreateBranchPayload, UpdateBranchPayload } from \"../types\";\n\n// Type helper for API compatibility\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyApi = CrudApi<any, any, any>;\n\n/**\n * Branch hooks using createCrudHooks factory\n *\n * Provides:\n * - useBranches: List branches with filtering/pagination\n * - useBranchDetail: Get single branch\n * - useBranchActions: Create, update, delete mutations\n * - useBranchNavigation: Navigation between branches\n */\nexport const branchHooks = createCrudHooks<Branch, CreateBranchPayload, UpdateBranchPayload>({\n api: branchApi as AnyApi,\n entityKey: \"branches\",\n singular: \"Branch\",\n plural: \"Branches\",\n defaults: {\n staleTime: 15 * 60 * 1000, // 15 minutes (branches rarely change)\n },\n});\n\nexport const {\n KEYS: BRANCH_KEYS,\n useList: useBranches,\n useDetail: useBranchDetail,\n useActions: useBranchActions,\n useNavigation: useBranchNavigation,\n} = branchHooks;\n","\"use client\";\n\n/**\n * User Hooks\n *\n * React hooks for user CRUD operations using the factory pattern.\n */\n\nimport { createCrudHooks, type CrudApi } from \"../../core/react\";\nimport { userApi } from \"../api/user\";\nimport type { User, CreateUserPayload, UpdateUserPayload } from \"../types\";\n\n// Type helper for API compatibility\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyApi = CrudApi<any, any, any>;\n\n/**\n * User hooks using createCrudHooks factory\n *\n * Provides:\n * - useUsers: List users with filtering/pagination\n * - useUserDetail: Get single user\n * - useUserActions: Create, update, delete mutations\n * - useUserNavigation: Navigation between users\n */\nexport const userHooks = createCrudHooks<User, CreateUserPayload, UpdateUserPayload>({\n api: userApi as AnyApi,\n entityKey: \"users\",\n singular: \"User\",\n plural: \"Users\",\n});\n\nexport const {\n KEYS: USER_KEYS,\n useList: useUsers,\n useDetail: useUserDetail,\n useActions: useUserActions,\n useNavigation: useUserNavigation,\n} = userHooks;\n","\"use client\";\n\n/**\n * Coupon Hooks\n *\n * React hooks for coupon CRUD operations using the factory pattern.\n */\n\nimport { createCrudHooks, type CrudApi } from \"../../core/react\";\nimport { couponApi } from \"../api/coupon\";\nimport type { Coupon, CreateCouponPayload, UpdateCouponPayload } from \"../types\";\n\n// Type helper for API compatibility\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyApi = CrudApi<any, any, any>;\n\n/**\n * Coupon hooks using createCrudHooks factory\n *\n * Provides:\n * - useCoupons: List coupons with filtering/pagination\n * - useCouponDetail: Get single coupon\n * - useCouponActions: Create, update, delete mutations\n * - useCouponNavigation: Navigation between coupons\n */\nexport const couponHooks = createCrudHooks<Coupon, CreateCouponPayload, UpdateCouponPayload>({\n api: couponApi as AnyApi,\n entityKey: \"coupons\",\n singular: \"Coupon\",\n plural: \"Coupons\",\n});\n\nexport const {\n KEYS: COUPON_KEYS,\n useList: useCoupons,\n useDetail: useCouponDetail,\n useActions: useCouponActions,\n useNavigation: useCouponNavigation,\n} = couponHooks;\n"]}
@@ -0,0 +1,3 @@
1
+
2
+ //# sourceMappingURL=chunk-PYYLHUV6.js.map
3
+ //# sourceMappingURL=chunk-PYYLHUV6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-PYYLHUV6.js"}
@@ -0,0 +1,159 @@
1
+ import { BaseApi } from './chunk-I5TIKUIQ.js';
2
+ import { handleApiRequest } from './chunk-VR36QVX2.js';
3
+
4
+ // src/inventory/api/request.ts
5
+ var RequestApi = class extends BaseApi {
6
+ constructor(config = {}) {
7
+ super("inventory/requests", config);
8
+ }
9
+ /**
10
+ * List stock requests
11
+ * GET /inventory/requests
12
+ */
13
+ async list({
14
+ token,
15
+ params = {},
16
+ options = {}
17
+ }) {
18
+ const processedParams = this.prepareParams(params);
19
+ const queryString = this.createQueryString(processedParams);
20
+ return handleApiRequest("GET", `${this.baseUrl}?${queryString}`, {
21
+ token,
22
+ cache: this.config.cache,
23
+ ...options
24
+ });
25
+ }
26
+ /**
27
+ * List pending stock requests
28
+ * GET /inventory/requests?status=pending
29
+ */
30
+ async listPending({
31
+ token,
32
+ options = {}
33
+ }) {
34
+ return this.list({ token, params: { status: "pending" }, options });
35
+ }
36
+ /**
37
+ * Get stock request by ID
38
+ * GET /inventory/requests/:id
39
+ */
40
+ async getById({
41
+ token,
42
+ id,
43
+ options = {}
44
+ }) {
45
+ if (!id) {
46
+ throw new Error("Request ID is required");
47
+ }
48
+ return handleApiRequest("GET", `${this.baseUrl}/${id}`, {
49
+ token,
50
+ cache: this.config.cache,
51
+ ...options
52
+ });
53
+ }
54
+ /**
55
+ * Create a stock request
56
+ * POST /inventory/requests
57
+ */
58
+ async create({
59
+ token,
60
+ data,
61
+ options = {}
62
+ }) {
63
+ return handleApiRequest("POST", this.baseUrl, {
64
+ token,
65
+ body: data,
66
+ cache: this.config.cache,
67
+ ...options
68
+ });
69
+ }
70
+ // ==================== Stock Request Actions ====================
71
+ /**
72
+ * Generic action endpoint
73
+ * POST /inventory/requests/:id/action
74
+ */
75
+ async action({
76
+ token,
77
+ id,
78
+ action,
79
+ data = {},
80
+ options = {}
81
+ }) {
82
+ if (!id) {
83
+ throw new Error("Request ID is required");
84
+ }
85
+ return handleApiRequest("POST", `${this.baseUrl}/${id}/action`, {
86
+ token,
87
+ body: { action, ...data },
88
+ cache: this.config.cache,
89
+ ...options
90
+ });
91
+ }
92
+ /**
93
+ * Approve a stock request
94
+ */
95
+ async approve({
96
+ token,
97
+ id,
98
+ items,
99
+ reviewNotes,
100
+ notes,
101
+ options = {}
102
+ }) {
103
+ return this.action({
104
+ token,
105
+ id,
106
+ action: "approve",
107
+ data: { items, reviewNotes: reviewNotes ?? notes },
108
+ options
109
+ });
110
+ }
111
+ /**
112
+ * Reject a stock request
113
+ */
114
+ async reject({
115
+ token,
116
+ id,
117
+ reason,
118
+ options = {}
119
+ }) {
120
+ return this.action({ token, id, action: "reject", data: { reason }, options });
121
+ }
122
+ /**
123
+ * Fulfill a stock request (creates a transfer)
124
+ * Head office assigns carton numbers here for label printing
125
+ */
126
+ async fulfill({
127
+ token,
128
+ id,
129
+ remarks,
130
+ documentType,
131
+ items,
132
+ transport,
133
+ options = {}
134
+ }) {
135
+ return this.action({
136
+ token,
137
+ id,
138
+ action: "fulfill",
139
+ data: { remarks, documentType, items, transport },
140
+ options
141
+ });
142
+ }
143
+ /**
144
+ * Cancel a stock request
145
+ */
146
+ async cancel({
147
+ token,
148
+ id,
149
+ reason,
150
+ options = {}
151
+ }) {
152
+ return this.action({ token, id, action: "cancel", data: { reason }, options });
153
+ }
154
+ };
155
+ var requestApi = new RequestApi();
156
+
157
+ export { RequestApi, requestApi };
158
+ //# sourceMappingURL=chunk-QO5AGZFP.js.map
159
+ //# sourceMappingURL=chunk-QO5AGZFP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/inventory/api/request.ts"],"names":[],"mappings":"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","file":"chunk-QO5AGZFP.js","sourcesContent":["/**\r\n * Stock Request API - Sub-branch -> Head Office requests\r\n *\r\n * Handles stock requests from sub-branches following the Stripe action-based pattern.\r\n * Status flow: pending -> approved -> fulfilled (or rejected/cancelled)\r\n */\r\n\r\nimport { BaseApi, type ApiResponse, type PaginatedResponse, type RequestOptions } from \"../../core/api-factory\";\r\nimport { handleApiRequest } from \"../../core/api-handler\";\r\nimport type {\r\n StockRequest,\r\n CreateStockRequestPayload,\r\n} from \"../types\";\r\n\r\ntype FetchOptions = Omit<RequestOptions, \"token\" | \"organizationId\">;\r\n\r\nclass RequestApi extends BaseApi<StockRequest, CreateStockRequestPayload> {\r\n constructor(config = {}) {\r\n super(\"inventory/requests\", config);\r\n }\r\n\r\n /**\r\n * List stock requests\r\n * GET /inventory/requests\r\n */\r\n async list({\r\n token,\r\n params = {},\r\n options = {},\r\n }: {\r\n token: string;\r\n params?: Record<string, unknown>;\r\n options?: FetchOptions;\r\n }): Promise<PaginatedResponse<StockRequest>> {\r\n const processedParams = this.prepareParams(params);\r\n const queryString = this.createQueryString(processedParams);\r\n\r\n return handleApiRequest(\"GET\", `${this.baseUrl}?${queryString}`, {\r\n token,\r\n cache: this.config.cache,\r\n ...options,\r\n });\r\n }\r\n\r\n /**\r\n * List pending stock requests\r\n * GET /inventory/requests?status=pending\r\n */\r\n async listPending({\r\n token,\r\n options = {},\r\n }: {\r\n token: string;\r\n options?: FetchOptions;\r\n }): Promise<PaginatedResponse<StockRequest>> {\r\n return this.list({ token, params: { status: \"pending\" }, options });\r\n }\r\n\r\n /**\r\n * Get stock request by ID\r\n * GET /inventory/requests/:id\r\n */\r\n async getById({\r\n token,\r\n id,\r\n options = {},\r\n }: {\r\n token: string;\r\n id: string;\r\n options?: FetchOptions;\r\n }): Promise<ApiResponse<StockRequest>> {\r\n if (!id) {\r\n throw new Error(\"Request ID is required\");\r\n }\r\n\r\n return handleApiRequest(\"GET\", `${this.baseUrl}/${id}`, {\r\n token,\r\n cache: this.config.cache,\r\n ...options,\r\n });\r\n }\r\n\r\n /**\r\n * Create a stock request\r\n * POST /inventory/requests\r\n */\r\n async create({\r\n token,\r\n data,\r\n options = {},\r\n }: {\r\n token: string;\r\n data: CreateStockRequestPayload;\r\n options?: FetchOptions;\r\n }): Promise<ApiResponse<StockRequest>> {\r\n return handleApiRequest(\"POST\", this.baseUrl, {\r\n token,\r\n body: data,\r\n cache: this.config.cache,\r\n ...options,\r\n });\r\n }\r\n\r\n // ==================== Stock Request Actions ====================\r\n\r\n /**\r\n * Generic action endpoint\r\n * POST /inventory/requests/:id/action\r\n */\r\n async action({\r\n token,\r\n id,\r\n action,\r\n data = {},\r\n options = {},\r\n }: {\r\n token: string;\r\n id: string;\r\n action: \"approve\" | \"reject\" | \"fulfill\" | \"cancel\";\r\n data?: Record<string, unknown>;\r\n options?: FetchOptions;\r\n }): Promise<ApiResponse<StockRequest>> {\r\n if (!id) {\r\n throw new Error(\"Request ID is required\");\r\n }\r\n\r\n return handleApiRequest(\"POST\", `${this.baseUrl}/${id}/action`, {\r\n token,\r\n body: { action, ...data },\r\n cache: this.config.cache,\r\n ...options,\r\n });\r\n }\r\n\r\n /**\r\n * Approve a stock request\r\n */\r\n async approve({\r\n token,\r\n id,\r\n items,\r\n reviewNotes,\r\n notes,\r\n options = {},\r\n }: {\r\n token: string;\r\n id: string;\r\n items?: { productId: string; variantSku?: string; quantityApproved: number }[];\r\n reviewNotes?: string;\r\n notes?: string;\r\n options?: FetchOptions;\r\n }): Promise<ApiResponse<StockRequest>> {\r\n return this.action({\r\n token,\r\n id,\r\n action: \"approve\",\r\n data: { items, reviewNotes: reviewNotes ?? notes },\r\n options,\r\n });\r\n }\r\n\r\n /**\r\n * Reject a stock request\r\n */\r\n async reject({\r\n token,\r\n id,\r\n reason,\r\n options = {},\r\n }: {\r\n token: string;\r\n id: string;\r\n reason: string;\r\n options?: FetchOptions;\r\n }): Promise<ApiResponse<StockRequest>> {\r\n return this.action({ token, id, action: \"reject\", data: { reason }, options });\r\n }\r\n\r\n /**\r\n * Fulfill a stock request (creates a transfer)\r\n * Head office assigns carton numbers here for label printing\r\n */\r\n async fulfill({\r\n token,\r\n id,\r\n remarks,\r\n documentType,\r\n items,\r\n transport,\r\n options = {},\r\n }: {\r\n token: string;\r\n id: string;\r\n remarks?: string;\r\n documentType?: string;\r\n items?: { productId: string; variantSku?: string; quantity: number; cartonNumber?: string }[];\r\n transport?: { vehicleNumber?: string; driverName?: string; driverPhone?: string };\r\n options?: FetchOptions;\r\n }): Promise<ApiResponse<StockRequest>> {\r\n return this.action({\r\n token,\r\n id,\r\n action: \"fulfill\",\r\n data: { remarks, documentType, items, transport },\r\n options,\r\n });\r\n }\r\n\r\n /**\r\n * Cancel a stock request\r\n */\r\n async cancel({\r\n token,\r\n id,\r\n reason,\r\n options = {},\r\n }: {\r\n token: string;\r\n id: string;\r\n reason?: string;\r\n options?: FetchOptions;\r\n }): Promise<ApiResponse<StockRequest>> {\r\n return this.action({ token, id, action: \"cancel\", data: { reason }, options });\r\n }\r\n}\r\n\r\nexport const requestApi = new RequestApi();\r\nexport { RequestApi };\r\n"]}
@@ -0,0 +1,76 @@
1
+ import { logisticsApi } from './chunk-5L6EXDGH.js';
2
+ import { financeApi } from './chunk-EIVYT3HM.js';
3
+ import { transactionApi } from './chunk-5ZFW3FEI.js';
4
+ import { updateCmsPage, getCmsPage, mediaApi } from './chunk-ZWLMFLLH.js';
5
+ import { platformConfigApi, branchApi, userApi, couponApi } from './chunk-OF5M6R2S.js';
6
+ import { paymentApi } from './chunk-ILQUH444.js';
7
+ import { authApi } from './chunk-BDA2WSJA.js';
8
+ import { sizeGuideApi, categoryApi, productApi } from './chunk-X6PV5MHG.js';
9
+ import { customerApi, orderApi, cartApi } from './chunk-UGELTUIZ.js';
10
+ import { purchaseApi } from './chunk-6RYGA6MF.js';
11
+ import { transferApi } from './chunk-FA7QFJ2G.js';
12
+ import { requestApi } from './chunk-QO5AGZFP.js';
13
+ import { movementApi } from './chunk-SZYWG5IB.js';
14
+ import { adjustmentApi } from './chunk-R5Z7NYLH.js';
15
+ import { supplierApi } from './chunk-WUOQK7BO.js';
16
+ import { stockApi } from './chunk-KZIGRIQG.js';
17
+ import { posApi } from './chunk-66OQAZSL.js';
18
+ import { configureSDK } from './chunk-VR36QVX2.js';
19
+
20
+ // src/client.ts
21
+ var cmsApi = {
22
+ getPage: getCmsPage,
23
+ updatePage: updateCmsPage
24
+ };
25
+ function createCommerceSDK(config) {
26
+ configureSDK(config);
27
+ return {
28
+ // Auth
29
+ auth: authApi,
30
+ // Product & Catalog
31
+ product: productApi,
32
+ category: categoryApi,
33
+ sizeGuide: sizeGuideApi,
34
+ // Cart & Checkout
35
+ cart: cartApi,
36
+ order: orderApi,
37
+ coupon: couponApi,
38
+ // Customer & Users
39
+ customer: customerApi,
40
+ user: userApi,
41
+ // Branch & Location
42
+ branch: branchApi,
43
+ // Media
44
+ media: mediaApi,
45
+ // Payment & Finance
46
+ payment: paymentApi,
47
+ transaction: transactionApi,
48
+ finance: financeApi,
49
+ // Logistics & Shipping
50
+ logistics: logisticsApi,
51
+ // Platform Configuration
52
+ platform: platformConfigApi,
53
+ // CMS
54
+ cms: cmsApi,
55
+ // POS
56
+ pos: posApi,
57
+ // Inventory (grouped)
58
+ inventory: {
59
+ stock: stockApi,
60
+ purchase: purchaseApi,
61
+ transfer: transferApi,
62
+ adjustment: adjustmentApi,
63
+ movement: movementApi,
64
+ request: requestApi,
65
+ supplier: supplierApi
66
+ }
67
+ };
68
+ }
69
+ function initCommerceSDK(config) {
70
+ configureSDK(config);
71
+ }
72
+ var client_default = createCommerceSDK;
73
+
74
+ export { client_default, createCommerceSDK, initCommerceSDK };
75
+ //# sourceMappingURL=chunk-QUMTBLNE.js.map
76
+ //# sourceMappingURL=chunk-QUMTBLNE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAiBA,IAAM,MAAA,GAAS;AAAA,EACb,OAAA,EAAS,UAAA;AAAA,EACT,UAAA,EAAY;AACd,CAAA;AA2GO,SAAS,kBACd,MAAA,EACmB;AAEnB,EAAA,YAAA,CAAa,MAAmB,CAAA;AAGhC,EAAA,OAAO;AAAA;AAAA,IAEL,IAAA,EAAM,OAAA;AAAA;AAAA,IAGN,OAAA,EAAS,UAAA;AAAA,IACT,QAAA,EAAU,WAAA;AAAA,IACV,SAAA,EAAW,YAAA;AAAA;AAAA,IAGX,IAAA,EAAM,OAAA;AAAA,IACN,KAAA,EAAO,QAAA;AAAA,IACP,MAAA,EAAQ,SAAA;AAAA;AAAA,IAGR,QAAA,EAAU,WAAA;AAAA,IACV,IAAA,EAAM,OAAA;AAAA;AAAA,IAGN,MAAA,EAAQ,SAAA;AAAA;AAAA,IAGR,KAAA,EAAO,QAAA;AAAA;AAAA,IAGP,OAAA,EAAS,UAAA;AAAA,IACT,WAAA,EAAa,cAAA;AAAA,IACb,OAAA,EAAS,UAAA;AAAA;AAAA,IAGT,SAAA,EAAW,YAAA;AAAA;AAAA,IAGX,QAAA,EAAU,iBAAA;AAAA;AAAA,IAGV,GAAA,EAAK,MAAA;AAAA;AAAA,IAGL,GAAA,EAAK,MAAA;AAAA;AAAA,IAGL,SAAA,EAAW;AAAA,MACT,KAAA,EAAO,QAAA;AAAA,MACP,QAAA,EAAU,WAAA;AAAA,MACV,QAAA,EAAU,WAAA;AAAA,MACV,UAAA,EAAY,aAAA;AAAA,MACZ,QAAA,EAAU,WAAA;AAAA,MACV,OAAA,EAAS,UAAA;AAAA,MACT,QAAA,EAAU;AAAA;AACZ,GACF;AACF;AAqBO,SAAS,gBAAgB,MAAA,EAAiC;AAC/D,EAAA,YAAA,CAAa,MAAmB,CAAA;AAClC;AAEA,IAAO,cAAA,GAAQ","file":"chunk-QUMTBLNE.js","sourcesContent":["/**\r\n * @classytic/commerce-sdk - SDK Client Factory\r\n *\r\n * Create a configured SDK client instance for use in Next.js applications.\r\n */\r\n\r\nimport { configureSDK, type SDKConfig } from \"./core/api-handler\";\r\n\r\n// Import APIs from domain modules\r\nimport { authApi } from \"./auth\";\r\nimport { productApi, categoryApi, sizeGuideApi } from \"./catalog\";\r\nimport { cartApi, orderApi, customerApi, posApi } from \"./sales\";\r\nimport { transactionApi } from \"./transaction\";\r\nimport { couponApi, userApi, branchApi, platformConfigApi } from \"./platform\";\r\nimport { mediaApi, getCmsPage, updateCmsPage } from \"./content\";\r\n\r\n// Create CMS API wrapper\r\nconst cmsApi = {\r\n getPage: getCmsPage,\r\n updatePage: updateCmsPage,\r\n};\r\nimport { paymentApi } from \"./payments\";\r\nimport { financeApi } from \"./finance\";\r\nimport { logisticsApi } from \"./logistics\";\r\nimport {\r\n stockApi,\r\n purchaseApi,\r\n transferApi,\r\n adjustmentApi,\r\n movementApi,\r\n requestApi,\r\n supplierApi,\r\n} from \"./inventory\";\r\n\r\n/**\r\n * SDK Client Configuration Options\r\n */\r\nexport interface CommerceSDKConfig {\r\n /** Base URL for API requests (e.g., \"https://api.example.com\") */\r\n baseUrl: string;\r\n /** Default organization ID for multi-tenant support */\r\n organizationId?: string;\r\n /** Function to get current auth token */\r\n getToken?: () => string | null | Promise<string | null>;\r\n /** Default request cache mode */\r\n cache?: RequestCache;\r\n /** Default headers to include in all requests */\r\n headers?: Record<string, string>;\r\n}\r\n\r\n/**\r\n * Commerce SDK Client\r\n *\r\n * Provides typed access to all commerce APIs.\r\n */\r\nexport interface CommerceSDKClient {\r\n // Auth\r\n auth: typeof authApi;\r\n\r\n // Product & Catalog\r\n product: typeof productApi;\r\n category: typeof categoryApi;\r\n sizeGuide: typeof sizeGuideApi;\r\n\r\n // Cart & Checkout\r\n cart: typeof cartApi;\r\n order: typeof orderApi;\r\n coupon: typeof couponApi;\r\n\r\n // Customer & Users\r\n customer: typeof customerApi;\r\n user: typeof userApi;\r\n\r\n // Branch & Location\r\n branch: typeof branchApi;\r\n\r\n // Media\r\n media: typeof mediaApi;\r\n\r\n // Payment & Finance\r\n payment: typeof paymentApi;\r\n transaction: typeof transactionApi;\r\n finance: typeof financeApi;\r\n\r\n // Logistics & Shipping\r\n logistics: typeof logisticsApi;\r\n\r\n // Platform Configuration\r\n platform: typeof platformConfigApi;\r\n\r\n // CMS\r\n cms: typeof cmsApi;\r\n\r\n // POS\r\n pos: typeof posApi;\r\n\r\n // Inventory\r\n inventory: {\r\n stock: typeof stockApi;\r\n purchase: typeof purchaseApi;\r\n transfer: typeof transferApi;\r\n adjustment: typeof adjustmentApi;\r\n movement: typeof movementApi;\r\n request: typeof requestApi;\r\n supplier: typeof supplierApi;\r\n };\r\n}\r\n\r\n/**\r\n * Create a configured Commerce SDK client\r\n *\r\n * @example\r\n * ```typescript\r\n * // In your app initialization\r\n * import { createCommerceSDK } from '@classytic/commerce-sdk';\r\n *\r\n * const sdk = createCommerceSDK({\r\n * baseUrl: process.env.NEXT_PUBLIC_API_URL!,\r\n * getToken: () => getCookie('token'),\r\n * organizationId: 'org_123',\r\n * });\r\n *\r\n * // Use the SDK\r\n * const products = await sdk.product.getAll({ params: { page: 1 } });\r\n * const order = await sdk.order.create({ token, data: orderData });\r\n * ```\r\n */\r\nexport function createCommerceSDK(\r\n config: CommerceSDKConfig\r\n): CommerceSDKClient {\r\n // Configure the global SDK settings\r\n configureSDK(config as SDKConfig);\r\n\r\n // Return the client with all APIs\r\n return {\r\n // Auth\r\n auth: authApi,\r\n\r\n // Product & Catalog\r\n product: productApi,\r\n category: categoryApi,\r\n sizeGuide: sizeGuideApi,\r\n\r\n // Cart & Checkout\r\n cart: cartApi,\r\n order: orderApi,\r\n coupon: couponApi,\r\n\r\n // Customer & Users\r\n customer: customerApi,\r\n user: userApi,\r\n\r\n // Branch & Location\r\n branch: branchApi,\r\n\r\n // Media\r\n media: mediaApi,\r\n\r\n // Payment & Finance\r\n payment: paymentApi,\r\n transaction: transactionApi,\r\n finance: financeApi,\r\n\r\n // Logistics & Shipping\r\n logistics: logisticsApi,\r\n\r\n // Platform Configuration\r\n platform: platformConfigApi,\r\n\r\n // CMS\r\n cms: cmsApi,\r\n\r\n // POS\r\n pos: posApi,\r\n\r\n // Inventory (grouped)\r\n inventory: {\r\n stock: stockApi,\r\n purchase: purchaseApi,\r\n transfer: transferApi,\r\n adjustment: adjustmentApi,\r\n movement: movementApi,\r\n request: requestApi,\r\n supplier: supplierApi,\r\n },\r\n };\r\n}\r\n\r\n/**\r\n * Initialize SDK configuration without creating a client\r\n *\r\n * Useful when you want to configure the SDK globally and use\r\n * individual API instances directly.\r\n *\r\n * @example\r\n * ```typescript\r\n * import { initCommerceSDK, productApi } from '@classytic/commerce-sdk';\r\n *\r\n * // Initialize once at app startup\r\n * initCommerceSDK({\r\n * baseUrl: process.env.NEXT_PUBLIC_API_URL!,\r\n * });\r\n *\r\n * // Use APIs directly\r\n * const products = await productApi.getAll({ params: { page: 1 } });\r\n * ```\r\n */\r\nexport function initCommerceSDK(config: CommerceSDKConfig): void {\r\n configureSDK(config as SDKConfig);\r\n}\r\n\r\nexport default createCommerceSDK;\r\n"]}
@@ -0,0 +1,126 @@
1
+ import { BaseApi } from './chunk-I5TIKUIQ.js';
2
+ import { handleApiRequest } from './chunk-VR36QVX2.js';
3
+
4
+ // src/inventory/api/adjustment.ts
5
+ var AdjustmentApi = class extends BaseApi {
6
+ constructor(config = {}) {
7
+ super("inventory/adjustments", config);
8
+ }
9
+ /**
10
+ * Create a manual stock adjustment
11
+ * POST /inventory/adjustments
12
+ *
13
+ * @example Single item adjustment
14
+ * adjustmentApi.create({
15
+ * token,
16
+ * data: {
17
+ * productId: '...',
18
+ * variantSku: 'SKU-RED-M',
19
+ * quantity: 5,
20
+ * mode: 'remove',
21
+ * reason: 'damaged',
22
+ * lostAmount: 2500 // Creates expense transaction (opt-in)
23
+ * }
24
+ * })
25
+ *
26
+ * @example Bulk adjustment
27
+ * adjustmentApi.create({
28
+ * token,
29
+ * data: {
30
+ * adjustments: [
31
+ * { productId: '...', quantity: 5, mode: 'add' },
32
+ * { productId: '...', quantity: 3, mode: 'remove' }
33
+ * ],
34
+ * reason: 'inventory recount'
35
+ * }
36
+ * })
37
+ */
38
+ async create({
39
+ token,
40
+ data,
41
+ options = {}
42
+ }) {
43
+ return handleApiRequest("POST", this.baseUrl, {
44
+ token,
45
+ body: data,
46
+ cache: this.config.cache,
47
+ ...options
48
+ });
49
+ }
50
+ /**
51
+ * Adjust stock (single item, POS format)
52
+ * POST /inventory/adjustments
53
+ */
54
+ async adjustStock({
55
+ token,
56
+ data,
57
+ options = {}
58
+ }) {
59
+ return handleApiRequest("POST", this.baseUrl, {
60
+ token,
61
+ body: data,
62
+ cache: this.config.cache,
63
+ ...options
64
+ });
65
+ }
66
+ /**
67
+ * Add stock to a product
68
+ */
69
+ async addStock({
70
+ token,
71
+ productId,
72
+ variantSku,
73
+ quantity,
74
+ branchId,
75
+ reason,
76
+ options = {}
77
+ }) {
78
+ return this.adjustStock({
79
+ token,
80
+ data: { productId, variantSku, quantity, mode: "add", branchId, reason },
81
+ options
82
+ });
83
+ }
84
+ /**
85
+ * Remove stock from a product
86
+ */
87
+ async removeStock({
88
+ token,
89
+ productId,
90
+ variantSku,
91
+ quantity,
92
+ branchId,
93
+ reason,
94
+ lostAmount,
95
+ options = {}
96
+ }) {
97
+ return this.create({
98
+ token,
99
+ data: { productId, variantSku, quantity, mode: "remove", branchId, reason, lostAmount },
100
+ options
101
+ });
102
+ }
103
+ /**
104
+ * Set stock to a specific quantity
105
+ */
106
+ async setStock({
107
+ token,
108
+ productId,
109
+ variantSku,
110
+ quantity,
111
+ branchId,
112
+ reason,
113
+ options = {}
114
+ }) {
115
+ return this.adjustStock({
116
+ token,
117
+ data: { productId, variantSku, quantity, mode: "set", branchId, reason },
118
+ options
119
+ });
120
+ }
121
+ };
122
+ var adjustmentApi = new AdjustmentApi();
123
+
124
+ export { AdjustmentApi, adjustmentApi };
125
+ //# sourceMappingURL=chunk-R5Z7NYLH.js.map
126
+ //# sourceMappingURL=chunk-R5Z7NYLH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/inventory/api/adjustment.ts"],"names":[],"mappings":";;;;AAiBA,IAAM,aAAA,GAAN,cAA4B,OAAA,CAAoD;AAAA,EAC9E,WAAA,CAAY,MAAA,GAAS,EAAC,EAAG;AACvB,IAAA,KAAA,CAAM,yBAAyB,MAAM,CAAA;AAAA,EACvC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA+BA,MAAM,MAAA,CAAO;AAAA,IACX,KAAA;AAAA,IACA,IAAA;AAAA,IACA,UAAU;AAAC,GACb,EAI4C;AAC1C,IAAA,OAAO,gBAAA,CAAiB,MAAA,EAAQ,IAAA,CAAK,OAAA,EAAS;AAAA,MAC5C,KAAA;AAAA,MACA,IAAA,EAAM,IAAA;AAAA,MACN,KAAA,EAAO,KAAK,MAAA,CAAO,KAAA;AAAA,MACnB,GAAG;AAAA,KACJ,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,WAAA,CAAY;AAAA,IAChB,KAAA;AAAA,IACA,IAAA;AAAA,IACA,UAAU;AAAC,GACb,EAI4C;AAC1C,IAAA,OAAO,gBAAA,CAAiB,MAAA,EAAQ,IAAA,CAAK,OAAA,EAAS;AAAA,MAC5C,KAAA;AAAA,MACA,IAAA,EAAM,IAAA;AAAA,MACN,KAAA,EAAO,KAAK,MAAA,CAAO,KAAA;AAAA,MACnB,GAAG;AAAA,KACJ,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,QAAA,CAAS;AAAA,IACb,KAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA,UAAU;AAAC,GACb,EAQ4C;AAC1C,IAAA,OAAO,KAAK,WAAA,CAAY;AAAA,MACtB,KAAA;AAAA,MACA,IAAA,EAAM,EAAE,SAAA,EAAW,UAAA,EAAY,UAAU,IAAA,EAAM,KAAA,EAAO,UAAU,MAAA,EAAO;AAAA,MACvE;AAAA,KACD,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,WAAA,CAAY;AAAA,IAChB,KAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAU;AAAC,GACb,EAS4C;AAC1C,IAAA,OAAO,KAAK,MAAA,CAAO;AAAA,MACjB,KAAA;AAAA,MACA,IAAA,EAAM,EAAE,SAAA,EAAW,UAAA,EAAY,UAAU,IAAA,EAAM,QAAA,EAAU,QAAA,EAAU,MAAA,EAAQ,UAAA,EAAW;AAAA,MACtF;AAAA,KACD,CAAA;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,QAAA,CAAS;AAAA,IACb,KAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA,UAAU;AAAC,GACb,EAQ4C;AAC1C,IAAA,OAAO,KAAK,WAAA,CAAY;AAAA,MACtB,KAAA;AAAA,MACA,IAAA,EAAM,EAAE,SAAA,EAAW,UAAA,EAAY,UAAU,IAAA,EAAM,KAAA,EAAO,UAAU,MAAA,EAAO;AAAA,MACvE;AAAA,KACD,CAAA;AAAA,EACH;AACF;AAEO,IAAM,aAAA,GAAgB,IAAI,aAAA","file":"chunk-R5Z7NYLH.js","sourcesContent":["/**\r\n * Adjustment API - Manual Stock Corrections\r\n *\r\n * Handles manual stock adjustments (add, remove, set).\r\n * Creates adjustment movements and optionally expense transactions.\r\n */\r\n\r\nimport { BaseApi, type ApiResponse, type RequestOptions } from \"../../core/api-factory\";\r\nimport { handleApiRequest } from \"../../core/api-handler\";\r\nimport type {\r\n CreateAdjustmentPayload,\r\n AdjustStockPayload,\r\n AdjustStockResult,\r\n} from \"../types\";\r\n\r\ntype FetchOptions = Omit<RequestOptions, \"token\" | \"organizationId\">;\r\n\r\nclass AdjustmentApi extends BaseApi<AdjustStockResult, CreateAdjustmentPayload> {\r\n constructor(config = {}) {\r\n super(\"inventory/adjustments\", config);\r\n }\r\n\r\n /**\r\n * Create a manual stock adjustment\r\n * POST /inventory/adjustments\r\n *\r\n * @example Single item adjustment\r\n * adjustmentApi.create({\r\n * token,\r\n * data: {\r\n * productId: '...',\r\n * variantSku: 'SKU-RED-M',\r\n * quantity: 5,\r\n * mode: 'remove',\r\n * reason: 'damaged',\r\n * lostAmount: 2500 // Creates expense transaction (opt-in)\r\n * }\r\n * })\r\n *\r\n * @example Bulk adjustment\r\n * adjustmentApi.create({\r\n * token,\r\n * data: {\r\n * adjustments: [\r\n * { productId: '...', quantity: 5, mode: 'add' },\r\n * { productId: '...', quantity: 3, mode: 'remove' }\r\n * ],\r\n * reason: 'inventory recount'\r\n * }\r\n * })\r\n */\r\n async create({\r\n token,\r\n data,\r\n options = {},\r\n }: {\r\n token: string;\r\n data: CreateAdjustmentPayload;\r\n options?: FetchOptions;\r\n }): Promise<ApiResponse<AdjustStockResult>> {\r\n return handleApiRequest(\"POST\", this.baseUrl, {\r\n token,\r\n body: data,\r\n cache: this.config.cache,\r\n ...options,\r\n });\r\n }\r\n\r\n /**\r\n * Adjust stock (single item, POS format)\r\n * POST /inventory/adjustments\r\n */\r\n async adjustStock({\r\n token,\r\n data,\r\n options = {},\r\n }: {\r\n token: string;\r\n data: AdjustStockPayload;\r\n options?: FetchOptions;\r\n }): Promise<ApiResponse<AdjustStockResult>> {\r\n return handleApiRequest(\"POST\", this.baseUrl, {\r\n token,\r\n body: data,\r\n cache: this.config.cache,\r\n ...options,\r\n });\r\n }\r\n\r\n /**\r\n * Add stock to a product\r\n */\r\n async addStock({\r\n token,\r\n productId,\r\n variantSku,\r\n quantity,\r\n branchId,\r\n reason,\r\n options = {},\r\n }: {\r\n token: string;\r\n productId: string;\r\n variantSku?: string;\r\n quantity: number;\r\n branchId?: string;\r\n reason?: string;\r\n options?: FetchOptions;\r\n }): Promise<ApiResponse<AdjustStockResult>> {\r\n return this.adjustStock({\r\n token,\r\n data: { productId, variantSku, quantity, mode: \"add\", branchId, reason },\r\n options,\r\n });\r\n }\r\n\r\n /**\r\n * Remove stock from a product\r\n */\r\n async removeStock({\r\n token,\r\n productId,\r\n variantSku,\r\n quantity,\r\n branchId,\r\n reason,\r\n lostAmount,\r\n options = {},\r\n }: {\r\n token: string;\r\n productId: string;\r\n variantSku?: string;\r\n quantity: number;\r\n branchId?: string;\r\n reason?: string;\r\n lostAmount?: number;\r\n options?: FetchOptions;\r\n }): Promise<ApiResponse<AdjustStockResult>> {\r\n return this.create({\r\n token,\r\n data: { productId, variantSku, quantity, mode: \"remove\", branchId, reason, lostAmount },\r\n options,\r\n });\r\n }\r\n\r\n /**\r\n * Set stock to a specific quantity\r\n */\r\n async setStock({\r\n token,\r\n productId,\r\n variantSku,\r\n quantity,\r\n branchId,\r\n reason,\r\n options = {},\r\n }: {\r\n token: string;\r\n productId: string;\r\n variantSku?: string;\r\n quantity: number;\r\n branchId?: string;\r\n reason?: string;\r\n options?: FetchOptions;\r\n }): Promise<ApiResponse<AdjustStockResult>> {\r\n return this.adjustStock({\r\n token,\r\n data: { productId, variantSku, quantity, mode: \"set\", branchId, reason },\r\n options,\r\n });\r\n }\r\n}\r\n\r\nexport const adjustmentApi = new AdjustmentApi();\r\nexport { AdjustmentApi };\r\n"]}
@@ -0,0 +1,75 @@
1
+ import { BaseApi } from './chunk-I5TIKUIQ.js';
2
+ import { handleApiRequest } from './chunk-VR36QVX2.js';
3
+
4
+ // src/inventory/api/movement.ts
5
+ var MovementApi = class extends BaseApi {
6
+ constructor(config = {}) {
7
+ super("inventory/movements", config);
8
+ }
9
+ /**
10
+ * Get stock movements (audit trail)
11
+ * GET /inventory/movements
12
+ *
13
+ * @param params - Filters (productId, branchId, type, startDate, endDate, page, limit, sort, after/cursor)
14
+ */
15
+ async list({
16
+ token,
17
+ params = {},
18
+ options = {}
19
+ }) {
20
+ const processedParams = this.prepareParams(params);
21
+ const queryString = this.createQueryString(processedParams);
22
+ return handleApiRequest("GET", `${this.baseUrl}?${queryString}`, {
23
+ token,
24
+ cache: this.config.cache,
25
+ ...options
26
+ });
27
+ }
28
+ /**
29
+ * Get movements by type
30
+ * GET /inventory/movements?type=<type>
31
+ */
32
+ async listByType({
33
+ token,
34
+ type,
35
+ params = {},
36
+ options = {}
37
+ }) {
38
+ return this.list({ token, params: { ...params, type }, options });
39
+ }
40
+ /**
41
+ * Get movements for a specific product
42
+ * GET /inventory/movements?productId=<id>
43
+ */
44
+ async listByProduct({
45
+ token,
46
+ productId,
47
+ params = {},
48
+ options = {}
49
+ }) {
50
+ return this.list({ token, params: { ...params, productId }, options });
51
+ }
52
+ /**
53
+ * Get low stock items
54
+ * GET /inventory/low-stock
55
+ */
56
+ async lowStock({
57
+ token,
58
+ params = {},
59
+ options = {}
60
+ }) {
61
+ const processedParams = this.prepareParams(params);
62
+ const queryString = this.createQueryString(processedParams);
63
+ const baseUrl = this.baseUrl.replace("/movements", "/low-stock");
64
+ return handleApiRequest("GET", `${baseUrl}?${queryString}`, {
65
+ token,
66
+ cache: this.config.cache,
67
+ ...options
68
+ });
69
+ }
70
+ };
71
+ var movementApi = new MovementApi();
72
+
73
+ export { MovementApi, movementApi };
74
+ //# sourceMappingURL=chunk-SZYWG5IB.js.map
75
+ //# sourceMappingURL=chunk-SZYWG5IB.js.map