@burdenoff/microfe-kadaikodi 2026.719.1 → 2026.719.3
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/kadaikodi/hooks/useKadaikodiApi.d.ts +36 -0
- package/dist/kadaikodi/hooks/useKadaikodiApi.d.ts.map +1 -1
- package/dist/kadaikodi/hooks/useKadaikodiApi.js +131 -19
- package/dist/kadaikodi/hooks/useKadaikodiApi.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CheckoutPage.d.ts.map +1 -1
- package/dist/kadaikodi/pages/customer/CheckoutPage.js +235 -219
- package/dist/kadaikodi/pages/customer/CheckoutPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/PaymentMethodsPage.d.ts +4 -0
- package/dist/kadaikodi/pages/customer/PaymentMethodsPage.d.ts.map +1 -1
- package/dist/kadaikodi/pages/customer/PaymentMethodsPage.js +209 -192
- package/dist/kadaikodi/pages/customer/PaymentMethodsPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/SavedAddressesPage.d.ts +3 -1
- package/dist/kadaikodi/pages/customer/SavedAddressesPage.d.ts.map +1 -1
- package/dist/kadaikodi/pages/customer/SavedAddressesPage.js +195 -173
- package/dist/kadaikodi/pages/customer/SavedAddressesPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/shared.d.ts +1 -2
- package/dist/kadaikodi/pages/customer/shared.d.ts.map +1 -1
- package/dist/kadaikodi/pages/customer/shared.js +15 -37
- package/dist/kadaikodi/pages/customer/shared.js.map +1 -1
- package/package.json +1 -1
|
@@ -28,6 +28,26 @@ export interface KadaikodiReviewRow {
|
|
|
28
28
|
createdAt: string;
|
|
29
29
|
updatedAt: string;
|
|
30
30
|
}
|
|
31
|
+
export interface KadaikodiCustomerAddressRow {
|
|
32
|
+
id: string;
|
|
33
|
+
type: 'HOME' | 'OFFICE' | 'OTHER';
|
|
34
|
+
nickname?: string | null;
|
|
35
|
+
addressLine1: string;
|
|
36
|
+
addressLine2?: string | null;
|
|
37
|
+
city: string;
|
|
38
|
+
state: string;
|
|
39
|
+
zipCode: string;
|
|
40
|
+
isDefault: boolean;
|
|
41
|
+
usageCount: number;
|
|
42
|
+
lastUsedAt?: string | null;
|
|
43
|
+
}
|
|
44
|
+
export interface KadaikodiCustomerPaymentMethodRow {
|
|
45
|
+
id: string;
|
|
46
|
+
type: 'UPI' | 'CARD' | 'WALLET';
|
|
47
|
+
label: string;
|
|
48
|
+
detail: string;
|
|
49
|
+
isDefault: boolean;
|
|
50
|
+
}
|
|
31
51
|
export interface KadaikodiProviderWorkerRow {
|
|
32
52
|
id: string;
|
|
33
53
|
providerId: string;
|
|
@@ -54,6 +74,22 @@ export declare const useProviderWorkers: (providerId?: string) => import('@tanst
|
|
|
54
74
|
export declare const useWorkerTasks: (workerId: string) => import('@tanstack/react-query').UseQueryResult<NoInfer<WorkerTask[]>, Error>;
|
|
55
75
|
export declare const useWorkerStats: (workerId: string) => import('@tanstack/react-query').UseQueryResult<NoInfer<WorkerStats>, Error>;
|
|
56
76
|
export declare const useWorkerSchedules: (workerId: string) => import('@tanstack/react-query').UseQueryResult<NoInfer<WorkerSchedule[]>, Error>;
|
|
77
|
+
export declare const useMyAddresses: () => import('@tanstack/react-query').UseQueryResult<NoInfer<KadaikodiCustomerAddressRow[]>, Error>;
|
|
78
|
+
export declare const useAddAddress: () => import('@tanstack/react-query').UseMutationResult<KadaikodiCustomerAddressRow, Error, Record<string, unknown>, unknown>;
|
|
79
|
+
export declare const useUpdateAddress: () => import('@tanstack/react-query').UseMutationResult<KadaikodiCustomerAddressRow, Error, {
|
|
80
|
+
id: string;
|
|
81
|
+
input: Record<string, unknown>;
|
|
82
|
+
}, unknown>;
|
|
83
|
+
export declare const useDeleteAddress: () => import('@tanstack/react-query').UseMutationResult<boolean, Error, string, unknown>;
|
|
84
|
+
export declare const useSetDefaultAddress: () => import('@tanstack/react-query').UseMutationResult<KadaikodiCustomerAddressRow, Error, string, unknown>;
|
|
85
|
+
export declare const useMyPaymentMethods: () => import('@tanstack/react-query').UseQueryResult<NoInfer<KadaikodiCustomerPaymentMethodRow[]>, Error>;
|
|
86
|
+
export declare const useAddPaymentMethod: () => import('@tanstack/react-query').UseMutationResult<KadaikodiCustomerPaymentMethodRow, Error, Record<string, unknown>, unknown>;
|
|
87
|
+
export declare const useRemovePaymentMethod: () => import('@tanstack/react-query').UseMutationResult<boolean, Error, string, unknown>;
|
|
88
|
+
export declare const useSetDefaultPaymentMethod: () => import('@tanstack/react-query').UseMutationResult<KadaikodiCustomerPaymentMethodRow, Error, string, unknown>;
|
|
89
|
+
export declare const useMyFavoriteProviderIds: () => import('@tanstack/react-query').UseQueryResult<NoInfer<string[]>, Error>;
|
|
90
|
+
export declare const useToggleFavorite: () => import('@tanstack/react-query').UseMutationResult<boolean, Error, string, {
|
|
91
|
+
previous: string[] | undefined;
|
|
92
|
+
}>;
|
|
57
93
|
export declare const useReviews: (providerId: string) => import('@tanstack/react-query').UseQueryResult<NoInfer<KadaikodiReviewRow[]>, Error>;
|
|
58
94
|
export declare const usePlaceOrder: () => import('@tanstack/react-query').UseMutationResult<{
|
|
59
95
|
id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useKadaikodiApi.d.ts","sourceRoot":"","sources":["../../../src/kadaikodi/hooks/useKadaikodiApi.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,QAAQ,EACR,SAAS,EAMT,qBAAqB,EACrB,UAAU,EACV,cAAc,EACd,cAAc,EACd,UAAU,EACV,cAAc,EACd,WAAW,EACZ,MAAM,UAAU,CAAC;AAyDlB,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC1C,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CACzB;AAkED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,0BAA0B;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC3C;AAyLD,eAAO,MAAM,YAAY,GAAI,QAAQ,MAAM,+EAiB1C,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,KAAK,MAAM,oFAkBtC,CAAC;AAMF,eAAO,MAAM,YAAY,GAAI,aAAa,MAAM,2FAkB/C,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,KAAK,MAAM,gGAkBtC,CAAC;AAMF,eAAO,MAAM,SAAS,GAAI,QAAO;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,gFAiBjF,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,KAAK,MAAM,qFAkBnC,CAAC;AAMF,eAAO,MAAM,iBAAiB,sFAa7B,CAAC;AAEF,eAAO,MAAM,iBAAiB,sFAa7B,CAAC;AAMF,eAAO,MAAM,0BAA0B,+
|
|
1
|
+
{"version":3,"file":"useKadaikodiApi.d.ts","sourceRoot":"","sources":["../../../src/kadaikodi/hooks/useKadaikodiApi.ts"],"names":[],"mappings":"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"}
|
|
@@ -216,7 +216,7 @@ var o = async (e, t, n) => {
|
|
|
216
216
|
let { apiGatewayUrl: t } = e();
|
|
217
217
|
return r({
|
|
218
218
|
queryKey: ["kadaikodi", "investment-opportunities"],
|
|
219
|
-
queryFn: async () => (await o("query Opportunities {\n kadaikodiListInvestmentOpportunities(
|
|
219
|
+
queryFn: async () => (await o("query Opportunities($pagination: KadaikodiPaginationInput) {\n kadaikodiListInvestmentOpportunities(pagination: $pagination) {\n id providerId title description targetAmount raisedAmount minimumInvestment expectedReturnsPct lockInMonths riskLevel status expiresAt terms businessMetrics createdAt\n provider { name }\n }\n }", { pagination: { limit: 200 } }, t)).kadaikodiListInvestmentOpportunities.map(d)
|
|
220
220
|
});
|
|
221
221
|
}, E = (t) => {
|
|
222
222
|
let { apiGatewayUrl: n } = e();
|
|
@@ -273,7 +273,119 @@ var o = async (e, t, n) => {
|
|
|
273
273
|
queryFn: async () => (await o("query WorkerSchedules {\n kadaikodiListWorkerSchedules {\n id date startTime endTime providerId status tasksCompleted totalEarnings\n provider { name }\n }\n }", {}, n)).kadaikodiListWorkerSchedules.map(m),
|
|
274
274
|
enabled: !!t
|
|
275
275
|
});
|
|
276
|
-
}, j = (
|
|
276
|
+
}, j = "\n id type nickname addressLine1 addressLine2 city state zipCode isDefault usageCount lastUsedAt\n", M = "\n id type label detail isDefault\n", N = () => {
|
|
277
|
+
let { apiGatewayUrl: t, currentUser: n } = e();
|
|
278
|
+
return r({
|
|
279
|
+
queryKey: ["kadaikodi", "my-addresses"],
|
|
280
|
+
queryFn: async () => (await o(`query MyAddresses($pagination: KadaikodiPaginationInput) {
|
|
281
|
+
kadaikodiMyAddresses(pagination: $pagination) {
|
|
282
|
+
${j}
|
|
283
|
+
}
|
|
284
|
+
}`, { pagination: { limit: 100 } }, t)).kadaikodiMyAddresses,
|
|
285
|
+
enabled: !!n?.id
|
|
286
|
+
});
|
|
287
|
+
}, P = () => {
|
|
288
|
+
let t = i(), { apiGatewayUrl: r } = e();
|
|
289
|
+
return n({
|
|
290
|
+
mutationFn: async (e) => (await o(`mutation AddAddress($input: KadaikodiAddAddressInput!) {
|
|
291
|
+
kadaikodiAddAddress(input: $input) { ${j} }
|
|
292
|
+
}`, { input: e }, r)).kadaikodiAddAddress,
|
|
293
|
+
onSuccess: () => {
|
|
294
|
+
t.invalidateQueries({ queryKey: ["kadaikodi", "my-addresses"] });
|
|
295
|
+
}
|
|
296
|
+
});
|
|
297
|
+
}, F = () => {
|
|
298
|
+
let t = i(), { apiGatewayUrl: r } = e();
|
|
299
|
+
return n({
|
|
300
|
+
mutationFn: async ({ id: e, input: t }) => (await o(`mutation UpdateAddress($id: ID!, $input: KadaikodiUpdateAddressInput!) {
|
|
301
|
+
kadaikodiUpdateAddress(id: $id, input: $input) { ${j} }
|
|
302
|
+
}`, {
|
|
303
|
+
id: e,
|
|
304
|
+
input: t
|
|
305
|
+
}, r)).kadaikodiUpdateAddress,
|
|
306
|
+
onSuccess: () => {
|
|
307
|
+
t.invalidateQueries({ queryKey: ["kadaikodi", "my-addresses"] });
|
|
308
|
+
}
|
|
309
|
+
});
|
|
310
|
+
}, I = () => {
|
|
311
|
+
let t = i(), { apiGatewayUrl: r } = e();
|
|
312
|
+
return n({
|
|
313
|
+
mutationFn: async (e) => (await o("mutation DeleteAddress($id: ID!) { kadaikodiDeleteAddress(id: $id) }", { id: e }, r)).kadaikodiDeleteAddress,
|
|
314
|
+
onSuccess: () => {
|
|
315
|
+
t.invalidateQueries({ queryKey: ["kadaikodi", "my-addresses"] });
|
|
316
|
+
}
|
|
317
|
+
});
|
|
318
|
+
}, L = () => {
|
|
319
|
+
let t = i(), { apiGatewayUrl: r } = e();
|
|
320
|
+
return n({
|
|
321
|
+
mutationFn: async (e) => (await o(`mutation SetDefaultAddress($id: ID!) { kadaikodiSetDefaultAddress(id: $id) { ${j} } }`, { id: e }, r)).kadaikodiSetDefaultAddress,
|
|
322
|
+
onSuccess: () => {
|
|
323
|
+
t.invalidateQueries({ queryKey: ["kadaikodi", "my-addresses"] });
|
|
324
|
+
}
|
|
325
|
+
});
|
|
326
|
+
}, ee = () => {
|
|
327
|
+
let { apiGatewayUrl: t, currentUser: n } = e();
|
|
328
|
+
return r({
|
|
329
|
+
queryKey: ["kadaikodi", "my-payment-methods"],
|
|
330
|
+
queryFn: async () => (await o(`query MyPaymentMethods($pagination: KadaikodiPaginationInput) {
|
|
331
|
+
kadaikodiMyPaymentMethods(pagination: $pagination) {
|
|
332
|
+
${M}
|
|
333
|
+
}
|
|
334
|
+
}`, { pagination: { limit: 100 } }, t)).kadaikodiMyPaymentMethods,
|
|
335
|
+
enabled: !!n?.id
|
|
336
|
+
});
|
|
337
|
+
}, R = () => {
|
|
338
|
+
let t = i(), { apiGatewayUrl: r } = e();
|
|
339
|
+
return n({
|
|
340
|
+
mutationFn: async (e) => (await o(`mutation AddPaymentMethod($input: KadaikodiAddPaymentMethodInput!) {
|
|
341
|
+
kadaikodiAddPaymentMethod(input: $input) { ${M} }
|
|
342
|
+
}`, { input: e }, r)).kadaikodiAddPaymentMethod,
|
|
343
|
+
onSuccess: () => {
|
|
344
|
+
t.invalidateQueries({ queryKey: ["kadaikodi", "my-payment-methods"] });
|
|
345
|
+
}
|
|
346
|
+
});
|
|
347
|
+
}, z = () => {
|
|
348
|
+
let t = i(), { apiGatewayUrl: r } = e();
|
|
349
|
+
return n({
|
|
350
|
+
mutationFn: async (e) => (await o("mutation RemovePaymentMethod($id: ID!) { kadaikodiRemovePaymentMethod(id: $id) }", { id: e }, r)).kadaikodiRemovePaymentMethod,
|
|
351
|
+
onSuccess: () => {
|
|
352
|
+
t.invalidateQueries({ queryKey: ["kadaikodi", "my-payment-methods"] });
|
|
353
|
+
}
|
|
354
|
+
});
|
|
355
|
+
}, B = () => {
|
|
356
|
+
let t = i(), { apiGatewayUrl: r } = e();
|
|
357
|
+
return n({
|
|
358
|
+
mutationFn: async (e) => (await o(`mutation SetDefaultPaymentMethod($id: ID!) {
|
|
359
|
+
kadaikodiSetDefaultPaymentMethod(id: $id) { ${M} }
|
|
360
|
+
}`, { id: e }, r)).kadaikodiSetDefaultPaymentMethod,
|
|
361
|
+
onSuccess: () => {
|
|
362
|
+
t.invalidateQueries({ queryKey: ["kadaikodi", "my-payment-methods"] });
|
|
363
|
+
}
|
|
364
|
+
});
|
|
365
|
+
}, V = () => {
|
|
366
|
+
let { apiGatewayUrl: t, currentUser: n } = e();
|
|
367
|
+
return r({
|
|
368
|
+
queryKey: ["kadaikodi", "my-favorite-provider-ids"],
|
|
369
|
+
queryFn: async () => (await o("query MyFavoriteProviderIds { kadaikodiMyFavoriteProviderIds }", {}, t)).kadaikodiMyFavoriteProviderIds,
|
|
370
|
+
enabled: !!n?.id
|
|
371
|
+
});
|
|
372
|
+
}, H = () => {
|
|
373
|
+
let t = i(), { apiGatewayUrl: r } = e();
|
|
374
|
+
return n({
|
|
375
|
+
mutationFn: async (e) => (await o("mutation ToggleFavorite($providerId: String!) { kadaikodiToggleFavorite(providerId: $providerId) }", { providerId: e }, r)).kadaikodiToggleFavorite,
|
|
376
|
+
onMutate: async (e) => {
|
|
377
|
+
await t.cancelQueries({ queryKey: ["kadaikodi", "my-favorite-provider-ids"] });
|
|
378
|
+
let n = t.getQueryData(["kadaikodi", "my-favorite-provider-ids"]);
|
|
379
|
+
return t.setQueryData(["kadaikodi", "my-favorite-provider-ids"], (t = []) => t.includes(e) ? t.filter((t) => t !== e) : [...t, e]), { previous: n };
|
|
380
|
+
},
|
|
381
|
+
onError: (e, n, r) => {
|
|
382
|
+
r?.previous && t.setQueryData(["kadaikodi", "my-favorite-provider-ids"], r.previous);
|
|
383
|
+
},
|
|
384
|
+
onSettled: () => {
|
|
385
|
+
t.invalidateQueries({ queryKey: ["kadaikodi", "my-favorite-provider-ids"] });
|
|
386
|
+
}
|
|
387
|
+
});
|
|
388
|
+
}, U = (t) => {
|
|
277
389
|
let { apiGatewayUrl: n } = e();
|
|
278
390
|
return r({
|
|
279
391
|
queryKey: [
|
|
@@ -284,7 +396,7 @@ var o = async (e, t, n) => {
|
|
|
284
396
|
queryFn: async () => (await o("query Reviews($providerId: String!) {\n kadaikodiListReviews(providerId: $providerId) {\n id providerId customerId rating review response createdAt updatedAt\n }\n }", { providerId: t }, n)).kadaikodiListReviews,
|
|
285
397
|
enabled: !!t
|
|
286
398
|
});
|
|
287
|
-
},
|
|
399
|
+
}, W = () => {
|
|
288
400
|
let t = i(), { apiGatewayUrl: r } = e();
|
|
289
401
|
return n({
|
|
290
402
|
mutationFn: async (e) => (await o("mutation PlaceOrder($input: KadaikodiPlaceOrderInput!) {\n kadaikodiPlaceOrder(input: $input) {\n id orderNumber status total createdAt\n }\n }", { input: e }, r)).kadaikodiPlaceOrder,
|
|
@@ -292,7 +404,7 @@ var o = async (e, t, n) => {
|
|
|
292
404
|
t.invalidateQueries({ queryKey: ["kadaikodi", "orders"] }), t.invalidateQueries({ queryKey: ["kadaikodi", "dashboard-stats"] });
|
|
293
405
|
}
|
|
294
406
|
});
|
|
295
|
-
},
|
|
407
|
+
}, G = () => {
|
|
296
408
|
let t = i(), { apiGatewayUrl: r } = e();
|
|
297
409
|
return n({
|
|
298
410
|
mutationFn: async ({ id: e, status: t }) => (await o("mutation UpdateOrderStatus($id: ID!, $status: KadaikodiOrderStatus!) {\n kadaikodiUpdateOrderStatus(id: $id, status: $status) {\n id status\n }\n }", {
|
|
@@ -303,7 +415,7 @@ var o = async (e, t, n) => {
|
|
|
303
415
|
t.invalidateQueries({ queryKey: ["kadaikodi", "orders"] }), t.invalidateQueries({ queryKey: ["kadaikodi", "order"] }), t.invalidateQueries({ queryKey: ["kadaikodi", "dashboard-stats"] });
|
|
304
416
|
}
|
|
305
417
|
});
|
|
306
|
-
},
|
|
418
|
+
}, K = () => {
|
|
307
419
|
let t = i(), { apiGatewayUrl: r } = e();
|
|
308
420
|
return n({
|
|
309
421
|
mutationFn: async (e) => (await o(`mutation CreateOffering($input: KadaikodiCreateOfferingInput!) {
|
|
@@ -315,7 +427,7 @@ var o = async (e, t, n) => {
|
|
|
315
427
|
t.invalidateQueries({ queryKey: ["kadaikodi", "offerings"] });
|
|
316
428
|
}
|
|
317
429
|
});
|
|
318
|
-
},
|
|
430
|
+
}, q = () => {
|
|
319
431
|
let t = i(), { apiGatewayUrl: r } = e();
|
|
320
432
|
return n({
|
|
321
433
|
mutationFn: async ({ id: e, input: t }) => (await o(`mutation UpdateOffering($id: ID!, $input: KadaikodiUpdateOfferingInput!) {
|
|
@@ -330,7 +442,7 @@ var o = async (e, t, n) => {
|
|
|
330
442
|
t.invalidateQueries({ queryKey: ["kadaikodi", "offerings"] }), t.invalidateQueries({ queryKey: ["kadaikodi", "offering"] });
|
|
331
443
|
}
|
|
332
444
|
});
|
|
333
|
-
},
|
|
445
|
+
}, J = () => {
|
|
334
446
|
let t = i(), { apiGatewayUrl: r } = e();
|
|
335
447
|
return n({
|
|
336
448
|
mutationFn: async (e) => (await o("mutation Invest($input: KadaikodiInvestInput!) {\n kadaikodiInvest(input: $input) {\n id amount currentValue status investedAt\n }\n }", { input: e }, r)).kadaikodiInvest,
|
|
@@ -338,7 +450,7 @@ var o = async (e, t, n) => {
|
|
|
338
450
|
t.invalidateQueries({ queryKey: ["kadaikodi", "investments"] }), t.invalidateQueries({ queryKey: ["kadaikodi", "investment-opportunities"] });
|
|
339
451
|
}
|
|
340
452
|
});
|
|
341
|
-
},
|
|
453
|
+
}, Y = () => {
|
|
342
454
|
let t = i(), { apiGatewayUrl: r } = e();
|
|
343
455
|
return n({
|
|
344
456
|
mutationFn: async (e) => (await o("mutation CreateProvider($input: KadaikodiCreateServiceProviderInput!) {\n kadaikodiCreateServiceProvider(input: $input) {\n id name slug status category location rating\n }\n }", { input: e }, r)).kadaikodiCreateServiceProvider,
|
|
@@ -346,7 +458,7 @@ var o = async (e, t, n) => {
|
|
|
346
458
|
t.invalidateQueries({ queryKey: ["kadaikodi", "providers"] }), t.invalidateQueries({ queryKey: ["kadaikodi", "dashboard-stats"] });
|
|
347
459
|
}
|
|
348
460
|
});
|
|
349
|
-
},
|
|
461
|
+
}, X = () => {
|
|
350
462
|
let t = i(), { apiGatewayUrl: r } = e();
|
|
351
463
|
return n({
|
|
352
464
|
mutationFn: async (e) => (await o("mutation CreateProviderWorker($input: KadaikodiCreateProviderWorkerInput!) {\n kadaikodiCreateProviderWorker(input: $input) {\n id providerId workerId name role status metadata\n }\n }", { input: e }, r)).kadaikodiCreateProviderWorker,
|
|
@@ -354,7 +466,7 @@ var o = async (e, t, n) => {
|
|
|
354
466
|
t.invalidateQueries({ queryKey: ["kadaikodi", "provider-workers"] });
|
|
355
467
|
}
|
|
356
468
|
});
|
|
357
|
-
},
|
|
469
|
+
}, Z = () => {
|
|
358
470
|
let t = i(), { apiGatewayUrl: r } = e();
|
|
359
471
|
return n({
|
|
360
472
|
mutationFn: async ({ taskId: e, status: t }) => (await o("mutation UpdateTaskStatus($taskId: String!, $status: KadaikodiWorkerTaskStatus!) {\n kadaikodiUpdateWorkerTaskStatus(taskId: $taskId, status: $status) {\n id status\n }\n }", {
|
|
@@ -365,7 +477,7 @@ var o = async (e, t, n) => {
|
|
|
365
477
|
t.invalidateQueries({ queryKey: ["kadaikodi", "worker-tasks"] }), t.invalidateQueries({ queryKey: ["kadaikodi", "worker-stats"] });
|
|
366
478
|
}
|
|
367
479
|
});
|
|
368
|
-
},
|
|
480
|
+
}, Q = () => {
|
|
369
481
|
let t = i(), { apiGatewayUrl: r } = e();
|
|
370
482
|
return n({
|
|
371
483
|
mutationFn: async ({ workerId: e, action: t }) => (await o("mutation ClockInOut($workerId: String!, $action: KadaikodiClockAction!) {\n kadaikodiWorkerClockInOut(workerId: $workerId, action: $action) {\n success message\n }\n }", {
|
|
@@ -376,7 +488,7 @@ var o = async (e, t, n) => {
|
|
|
376
488
|
t.invalidateQueries({ queryKey: ["kadaikodi", "worker-schedules"] });
|
|
377
489
|
}
|
|
378
490
|
});
|
|
379
|
-
},
|
|
491
|
+
}, $ = () => {
|
|
380
492
|
let t = i(), { apiGatewayUrl: r } = e();
|
|
381
493
|
return n({
|
|
382
494
|
mutationFn: async (e) => (await o("mutation CreateOpportunity($input: KadaikodiCreateInvestmentOpportunityInput!) {\n kadaikodiCreateInvestmentOpportunity(input: $input) { id title targetAmount status }\n }", { input: e }, r)).kadaikodiCreateInvestmentOpportunity,
|
|
@@ -384,7 +496,7 @@ var o = async (e, t, n) => {
|
|
|
384
496
|
t.invalidateQueries({ queryKey: ["kadaikodi", "investment-opportunities"] });
|
|
385
497
|
}
|
|
386
498
|
});
|
|
387
|
-
},
|
|
499
|
+
}, te = () => {
|
|
388
500
|
let t = i(), { apiGatewayUrl: r } = e();
|
|
389
501
|
return n({
|
|
390
502
|
mutationFn: async (e) => (await o("mutation CreateReview($input: KadaikodiCreateReviewInput!) {\n kadaikodiCreateReview(input: $input) { id rating review createdAt }\n }", { input: e }, r)).kadaikodiCreateReview,
|
|
@@ -392,7 +504,7 @@ var o = async (e, t, n) => {
|
|
|
392
504
|
t.invalidateQueries({ queryKey: ["kadaikodi", "reviews"] }), t.invalidateQueries({ queryKey: ["kadaikodi", "providers"] });
|
|
393
505
|
}
|
|
394
506
|
});
|
|
395
|
-
},
|
|
507
|
+
}, ne = () => {
|
|
396
508
|
let t = i(), { apiGatewayUrl: r } = e();
|
|
397
509
|
return n({
|
|
398
510
|
mutationFn: async ({ id: e, input: t }) => (await o("mutation UpdateProvider($id: ID!, $input: KadaikodiUpdateServiceProviderInput!) {\n kadaikodiUpdateServiceProvider(id: $id, input: $input) {\n id name slug status category location businessHours serviceTypes rating\n }\n }", {
|
|
@@ -403,7 +515,7 @@ var o = async (e, t, n) => {
|
|
|
403
515
|
t.invalidateQueries({ queryKey: ["kadaikodi", "providers"] }), t.invalidateQueries({ queryKey: ["kadaikodi", "provider"] }), t.invalidateQueries({ queryKey: ["kadaikodi", "dashboard-stats"] });
|
|
404
516
|
}
|
|
405
517
|
});
|
|
406
|
-
},
|
|
518
|
+
}, re = () => {
|
|
407
519
|
let t = i(), { apiGatewayUrl: r } = e();
|
|
408
520
|
return n({
|
|
409
521
|
mutationFn: async (e) => (await o("mutation DeleteOffering($id: ID!) { kadaikodiDeleteOffering(id: $id) }", { id: e }, r)).kadaikodiDeleteOffering,
|
|
@@ -411,7 +523,7 @@ var o = async (e, t, n) => {
|
|
|
411
523
|
t.invalidateQueries({ queryKey: ["kadaikodi", "offerings"] });
|
|
412
524
|
}
|
|
413
525
|
});
|
|
414
|
-
},
|
|
526
|
+
}, ie = () => {
|
|
415
527
|
let t = i(), { apiGatewayUrl: r } = e();
|
|
416
528
|
return n({
|
|
417
529
|
mutationFn: async ({ taskId: e, status: t, notes: n }) => (await o("mutation UpdateWorkerTask($taskId: String!, $status: KadaikodiWorkerTaskStatus, $notes: String) {\n kadaikodiUpdateWorkerTask(taskId: $taskId, status: $status, notes: $notes) { id status }\n }", {
|
|
@@ -423,7 +535,7 @@ var o = async (e, t, n) => {
|
|
|
423
535
|
t.invalidateQueries({ queryKey: ["kadaikodi", "worker-tasks"] }), t.invalidateQueries({ queryKey: ["kadaikodi", "worker-stats"] });
|
|
424
536
|
}
|
|
425
537
|
});
|
|
426
|
-
},
|
|
538
|
+
}, ae = () => {
|
|
427
539
|
let t = i(), { apiGatewayUrl: r } = e();
|
|
428
540
|
return n({
|
|
429
541
|
mutationFn: async ({ id: e, metadata: t }) => (await o("mutation UpdateProviderWorker($id: ID!, $metadata: JSON!) {\n kadaikodiUpdateProviderWorker(id: $id, metadata: $metadata) { id name metadata }\n }", {
|
|
@@ -434,7 +546,7 @@ var o = async (e, t, n) => {
|
|
|
434
546
|
t.invalidateQueries({ queryKey: ["kadaikodi", "provider-workers"] }), t.invalidateQueries({ queryKey: ["kadaikodi", "worker-schedules"] });
|
|
435
547
|
}
|
|
436
548
|
});
|
|
437
|
-
},
|
|
549
|
+
}, oe = () => {
|
|
438
550
|
let { currentUser: n } = e(), r = v(), i = x({ customerId: n?.id }), a = C(), o = T(), s = E(n?.id || "");
|
|
439
551
|
return t(() => ({
|
|
440
552
|
providers: r,
|
|
@@ -451,6 +563,6 @@ var o = async (e, t, n) => {
|
|
|
451
563
|
]);
|
|
452
564
|
};
|
|
453
565
|
//#endregion
|
|
454
|
-
export { w as useAdminAnalytics,
|
|
566
|
+
export { P as useAddAddress, R as useAddPaymentMethod, w as useAdminAnalytics, $ as useCreateInvestmentOpportunity, K as useCreateOffering, Y as useCreateProvider, X as useCreateProviderWorker, te as useCreateReview, C as useDashboardStats, I as useDeleteAddress, re as useDeleteOffering, J as useInvest, T as useInvestmentOpportunities, E as useInvestments, oe as useKadaikodiApi, N as useMyAddresses, V as useMyFavoriteProviderIds, ee as useMyPaymentMethods, b as useOfferings, S as useOrder, x as useOrders, W as usePlaceOrder, y as useProvider, D as useProviderWorkers, v as useProviders, z as useRemovePaymentMethod, U as useReviews, L as useSetDefaultAddress, B as useSetDefaultPaymentMethod, H as useToggleFavorite, F as useUpdateAddress, q as useUpdateOffering, G as useUpdateOrderStatus, ne as useUpdateProvider, ae as useUpdateProviderWorker, ie as useUpdateWorkerTask, Z as useUpdateWorkerTaskStatus, Q as useWorkerClockInOut, A as useWorkerSchedules, k as useWorkerStats, O as useWorkerTasks };
|
|
455
567
|
|
|
456
568
|
//# sourceMappingURL=useKadaikodiApi.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useKadaikodiApi.js","names":[],"sources":["../../../src/kadaikodi/hooks/useKadaikodiApi.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\n\nimport { graphqlFetch } from '@burdenoff/fe-libs/shared/graphql';\n\nimport { useKadaikodi } from '../context';\nimport type {\n MockCart,\n MockOrder,\n OrderItem,\n OrderStatus,\n PaymentStatus,\n OrderTimelineEvent,\n DeliveryAddress,\n InvestmentOpportunity,\n Investment,\n DashboardStats,\n AdminAnalytics,\n WorkerTask,\n WorkerSchedule,\n WorkerStats,\n} from '../types';\n\n// ============================================================================\n// Low-level fetch helper\n// ============================================================================\n\nconst kadaikodiQuery = async <TData>(\n query: string,\n variables: Record<string, unknown>,\n baseUrl?: string\n): Promise<TData> => {\n const response = await graphqlFetch<TData>({\n gateway: 'workspace',\n baseUrl,\n query,\n variables,\n workspaceToken: true,\n });\n\n if (response.errors?.length) {\n throw new Error(response.errors[0]?.message ?? 'GraphQL request failed');\n }\n\n if (!response.data) {\n throw new Error('GraphQL response did not include data');\n }\n\n return response.data;\n};\n\n// ============================================================================\n// Raw GraphQL row shapes (explicit — no `any`)\n// ============================================================================\n\ninterface RawLocation {\n address?: string | null;\n latitude?: number | null;\n longitude?: number | null;\n coordinates?: { lat?: number | null; lng?: number | null } | null;\n}\n\ninterface ProviderRow {\n id: string;\n name: string;\n slug: string;\n category: string;\n status: string;\n ownerId: string;\n rating: number;\n totalRatings: number;\n averageOrderValue: number;\n serviceTypes: string[];\n location: RawLocation | null;\n businessHours?: MockCart['businessHours'];\n createdAt: string;\n}\n\nexport interface KadaikodiOfferingRow {\n id: string;\n providerId: string;\n kind: string;\n name: string;\n slug: string;\n category: string;\n description?: string | null;\n price: number;\n originalPrice?: number | null;\n stock?: number | null;\n durationMinutes?: number | null;\n serviceType?: string | null;\n tags: string[];\n isAvailable: boolean;\n metadata?: Record<string, unknown> | null;\n media?: string[] | null;\n}\n\ninterface OrderItemRow {\n id: string;\n offeringId?: string | null;\n name: string;\n quantity: number;\n unitPrice: number;\n totalPrice: number;\n customizations?: string[] | null;\n}\n\ninterface OrderRow {\n id: string;\n orderNumber: string;\n providerId: string;\n customerId: string;\n status: string;\n paymentStatus: string;\n fulfillmentType: string;\n subtotal: number;\n tax: number;\n deliveryFee: number;\n discount: number;\n total: number;\n notes?: string | null;\n timeline?: OrderTimelineEvent[] | null;\n paymentMethod?: string | null;\n deliveryAddress?: Partial<DeliveryAddress> | null;\n createdAt: string;\n provider?: { name?: string | null } | null;\n items: OrderItemRow[];\n}\n\ninterface InvestmentOpportunityRow {\n id: string;\n providerId: string;\n title: string;\n description?: string | null;\n targetAmount: number;\n raisedAmount: number;\n minimumInvestment: number;\n expectedReturnsPct: number;\n lockInMonths: number;\n riskLevel: string;\n status: string;\n expiresAt?: string | null;\n terms?: Record<string, unknown> | null;\n businessMetrics?: Record<string, unknown> | null;\n createdAt: string;\n provider?: { name?: string | null } | null;\n}\n\ninterface InvestmentRow {\n id: string;\n opportunityId: string;\n amount: number;\n currentValue: number;\n expectedReturnsPct: number;\n status: string;\n investedAt: string;\n maturedAt?: string | null;\n realizedReturns: number;\n opportunity?: { provider?: { name?: string | null } | null } | null;\n}\n\nexport interface KadaikodiReviewRow {\n id: string;\n providerId: string;\n customerId: string;\n rating: number;\n review?: string | null;\n response?: string | null;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface KadaikodiProviderWorkerRow {\n id: string;\n providerId: string;\n workerId: string;\n name: string;\n role: string;\n status: string;\n metadata?: Record<string, unknown> | null;\n}\n\ninterface WorkerTaskRow {\n id: string;\n orderId?: string | null;\n providerId?: string | null;\n type: string;\n description?: string | null;\n priority: string;\n status: string;\n assignedAt?: string | null;\n dueAt?: string | null;\n completedAt?: string | null;\n customerName?: string | null;\n customerPhone?: string | null;\n earnings?: number | null;\n distance?: number | null;\n notes?: string | null;\n provider?: { name?: string | null } | null;\n order?: { deliveryAddress?: Partial<DeliveryAddress> | null } | null;\n}\n\ninterface WorkerScheduleRow {\n id: string;\n date: string;\n startTime: string;\n endTime?: string | null;\n providerId: string;\n status: string;\n tasksCompleted: number;\n totalEarnings: number;\n provider?: { name?: string | null } | null;\n}\n\n// ============================================================================\n// Mappers\n// ============================================================================\n\nconst toCartLocation = (loc: RawLocation | null | undefined): MockCart['location'] => ({\n address: loc?.address ?? '',\n coordinates: {\n lat: loc?.coordinates?.lat ?? loc?.latitude ?? 0,\n lng: loc?.coordinates?.lng ?? loc?.longitude ?? 0,\n },\n});\n\nconst toDeliveryAddress = (raw: Partial<DeliveryAddress> | null | undefined): DeliveryAddress => ({\n street: raw?.street ?? '',\n area: raw?.area ?? '',\n city: raw?.city ?? '',\n pincode: raw?.pincode ?? '',\n landmark: raw?.landmark,\n});\n\nconst mapProvider = (p: ProviderRow): MockCart => ({\n id: p.id,\n name: p.name,\n category: p.category,\n ownerId: p.ownerId,\n rating: p.rating,\n totalRatings: p.totalRatings,\n isOpen: p.status === 'ACTIVE' || p.status === 'VERIFIED',\n isVerified: p.status === 'VERIFIED',\n location: toCartLocation(p.location),\n averageOrderValue: p.averageOrderValue,\n serviceTypes: p.serviceTypes,\n businessHours: p.businessHours,\n createdAt: p.createdAt,\n // image/images/distance/estimatedTime intentionally omitted — no fabricated data.\n});\n\nconst mapOrder = (o: OrderRow): MockOrder => ({\n id: o.id,\n cartId: o.providerId,\n cartName: o.provider?.name ?? 'Unknown Cart',\n // cartImage intentionally omitted — no fabricated data.\n items: o.items.map((i): OrderItem => ({\n id: i.id,\n name: i.name,\n quantity: i.quantity,\n price: i.unitPrice,\n customizations: i.customizations ?? undefined,\n })),\n total: o.total,\n subtotal: o.subtotal,\n taxes: o.tax,\n deliveryFee: o.deliveryFee,\n discount: o.discount,\n status: o.status.toLowerCase() as OrderStatus,\n orderDate: o.createdAt,\n deliveryAddress: toDeliveryAddress(o.deliveryAddress),\n paymentMethod: o.paymentMethod ?? 'Cash',\n paymentStatus: o.paymentStatus.toLowerCase() as PaymentStatus,\n timeline: o.timeline ?? [],\n});\n\nconst mapInvestmentOpportunity = (o: InvestmentOpportunityRow): InvestmentOpportunity => ({\n id: o.id,\n cartId: o.providerId,\n cartName: o.provider?.name ?? 'Unknown Cart',\n businessOwner: '',\n targetAmount: o.targetAmount,\n raisedAmount: o.raisedAmount,\n minimumInvestment: o.minimumInvestment,\n expectedReturns: o.expectedReturnsPct,\n investmentPeriod: o.lockInMonths,\n riskLevel: o.riskLevel.toLowerCase() as InvestmentOpportunity['riskLevel'],\n description: o.description ?? '',\n businessPlan: '',\n financialProjections: [],\n documents: [],\n investors: [],\n status: o.status.toLowerCase() as InvestmentOpportunity['status'],\n createdAt: o.createdAt,\n expiresAt: o.expiresAt ?? '',\n});\n\nconst mapInvestment = (i: InvestmentRow): Investment => ({\n id: i.id,\n opportunityId: i.opportunityId,\n cartName: i.opportunity?.provider?.name ?? 'Unknown Cart',\n investedAmount: i.amount,\n currentValue: i.currentValue,\n returns: i.realizedReturns,\n returnsPercentage: i.expectedReturnsPct,\n investmentDate: i.investedAt,\n status: i.status.toLowerCase() as Investment['status'],\n});\n\nconst mapWorkerTask = (t: WorkerTaskRow): WorkerTask => ({\n id: t.id,\n orderId: t.orderId ?? '',\n cartId: t.providerId ?? '',\n cartName: t.provider?.name ?? 'Unknown Cart',\n type: t.type.toLowerCase() as WorkerTask['type'],\n description: t.description ?? '',\n priority: t.priority.toLowerCase() as WorkerTask['priority'],\n status: t.status.toLowerCase() as WorkerTask['status'],\n assignedAt: t.assignedAt ?? '',\n dueAt: t.dueAt ?? '',\n completedAt: t.completedAt ?? undefined,\n customerName: t.customerName ?? '',\n customerPhone: t.customerPhone ?? '',\n deliveryAddress: t.order?.deliveryAddress\n ? toDeliveryAddress(t.order.deliveryAddress)\n : undefined,\n earnings: t.earnings ?? 0,\n distance: t.distance ?? undefined,\n notes: t.notes ?? undefined,\n});\n\nconst mapWorkerSchedule = (s: WorkerScheduleRow): WorkerSchedule => ({\n id: s.id,\n date: s.date,\n startTime: s.startTime,\n endTime: s.endTime ?? '',\n cartId: s.providerId,\n cartName: s.provider?.name ?? 'Unknown Cart',\n status: s.status.toLowerCase() as WorkerSchedule['status'],\n tasksCompleted: s.tasksCompleted,\n totalEarnings: s.totalEarnings,\n});\n\n// ============================================================================\n// GraphQL selection fragments (kept as string constants for reuse)\n// ============================================================================\n\nconst PROVIDER_FIELDS = `\n id name slug category status ownerId rating totalRatings averageOrderValue serviceTypes location businessHours createdAt\n`;\n\nconst ORDER_FIELDS = `\n id orderNumber providerId customerId status paymentStatus fulfillmentType subtotal tax deliveryFee discount total notes timeline paymentMethod deliveryAddress createdAt\n provider { name }\n items { id offeringId name quantity unitPrice totalPrice customizations }\n`;\n\nconst OFFERING_FIELDS = `\n id providerId kind name slug category description price originalPrice stock durationMinutes serviceType tags isAvailable metadata media\n`;\n\n// ============================================================================\n// Service Providers (Carts)\n// ============================================================================\n\nexport const useProviders = (query?: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'providers', query],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiListServiceProviders: ProviderRow[] }>(\n `query Providers($filter: KadaikodiProviderFilterInput) {\n kadaikodiListServiceProviders(filter: $filter, limit: 200) {\n ${PROVIDER_FIELDS}\n }\n }`,\n { filter: query ? { query } : undefined },\n apiGatewayUrl\n );\n return result.kadaikodiListServiceProviders.map(mapProvider);\n },\n });\n};\n\nexport const useProvider = (id?: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'provider', id],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiServiceProvider: ProviderRow | null }>(\n `query Provider($id: ID!) {\n kadaikodiServiceProvider(id: $id) {\n ${PROVIDER_FIELDS}\n }\n }`,\n { id },\n apiGatewayUrl\n );\n return result.kadaikodiServiceProvider ? mapProvider(result.kadaikodiServiceProvider) : null;\n },\n enabled: Boolean(id),\n });\n};\n\n// ============================================================================\n// Offerings\n// ============================================================================\n\nexport const useOfferings = (providerId?: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'offerings', providerId],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiListOfferings: KadaikodiOfferingRow[] }>(\n `query Offerings($providerId: String) {\n kadaikodiListOfferings(providerId: $providerId, limit: 300) {\n ${OFFERING_FIELDS}\n }\n }`,\n { providerId },\n apiGatewayUrl\n );\n return result.kadaikodiListOfferings;\n },\n enabled: Boolean(providerId),\n });\n};\n\nexport const useOffering = (id?: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'offering', id],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiOffering: KadaikodiOfferingRow | null }>(\n `query Offering($id: ID!) {\n kadaikodiOffering(id: $id) {\n ${OFFERING_FIELDS}\n }\n }`,\n { id },\n apiGatewayUrl\n );\n return result.kadaikodiOffering;\n },\n enabled: Boolean(id),\n });\n};\n\n// ============================================================================\n// Orders\n// ============================================================================\n\nexport const useOrders = (input: { providerId?: string; customerId?: string } = {}) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'orders', input.providerId, input.customerId],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiListOrders: OrderRow[] }>(\n `query Orders($providerId: String, $customerId: String) {\n kadaikodiListOrders(providerId: $providerId, customerId: $customerId, limit: 200) {\n ${ORDER_FIELDS}\n }\n }`,\n input,\n apiGatewayUrl\n );\n return result.kadaikodiListOrders.map(mapOrder);\n },\n });\n};\n\nexport const useOrder = (id?: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'order', id],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiOrder: OrderRow | null }>(\n `query Order($id: ID!) {\n kadaikodiOrder(id: $id) {\n ${ORDER_FIELDS}\n }\n }`,\n { id },\n apiGatewayUrl\n );\n return result.kadaikodiOrder ? mapOrder(result.kadaikodiOrder) : null;\n },\n enabled: Boolean(id),\n });\n};\n\n// ============================================================================\n// Analytics & Stats\n// ============================================================================\n\nexport const useDashboardStats = () => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'dashboard-stats'],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiDashboardStats: DashboardStats }>(\n `query DashboardStats { kadaikodiDashboardStats { totalOrders totalRevenue activeProviders activeCustomers avgRating pendingOrders } }`,\n {},\n apiGatewayUrl\n );\n return result.kadaikodiDashboardStats;\n },\n });\n};\n\nexport const useAdminAnalytics = () => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'admin-analytics'],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiAdminAnalytics: AdminAnalytics }>(\n `query AdminAnalytics { kadaikodiAdminAnalytics { revenueByCategory orderTrends topProviders customerGrowth categoryDistribution } }`,\n {},\n apiGatewayUrl\n );\n return result.kadaikodiAdminAnalytics;\n },\n });\n};\n\n// ============================================================================\n// Investments\n// ============================================================================\n\nexport const useInvestmentOpportunities = () => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'investment-opportunities'],\n queryFn: async () => {\n const result = await kadaikodiQuery<{\n kadaikodiListInvestmentOpportunities: InvestmentOpportunityRow[];\n }>(\n `query Opportunities {\n kadaikodiListInvestmentOpportunities(limit: 200) {\n id providerId title description targetAmount raisedAmount minimumInvestment expectedReturnsPct lockInMonths riskLevel status expiresAt terms businessMetrics createdAt\n provider { name }\n }\n }`,\n {},\n apiGatewayUrl\n );\n return result.kadaikodiListInvestmentOpportunities.map(mapInvestmentOpportunity);\n },\n });\n};\n\nexport const useInvestments = (investorId: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'investments', investorId],\n queryFn: async () => {\n // Self-scoped on the backend: the resolver always uses the calling actor's own id\n // (ctx.actor.id), never a caller-supplied investorId — see kadaikodi.gql.\n const result = await kadaikodiQuery<{ kadaikodiListInvestments: InvestmentRow[] }>(\n `query Investments {\n kadaikodiListInvestments {\n id opportunityId amount currentValue expectedReturnsPct status investedAt maturedAt realizedReturns\n opportunity { provider { name } }\n }\n }`,\n {},\n apiGatewayUrl\n );\n return result.kadaikodiListInvestments.map(mapInvestment);\n },\n enabled: Boolean(investorId),\n });\n};\n\n// ============================================================================\n// Provider Workers\n// ============================================================================\n\nexport const useProviderWorkers = (providerId?: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'provider-workers', providerId],\n queryFn: async () => {\n const result = await kadaikodiQuery<{\n kadaikodiListProviderWorkers: KadaikodiProviderWorkerRow[];\n }>(\n `query ProviderWorkers($providerId: String!) {\n kadaikodiListProviderWorkers(providerId: $providerId) {\n id providerId workerId name role status metadata\n }\n }`,\n { providerId },\n apiGatewayUrl\n );\n return result.kadaikodiListProviderWorkers;\n },\n enabled: Boolean(providerId),\n });\n};\n\n// ============================================================================\n// Workers & Tasks\n// ============================================================================\n\nexport const useWorkerTasks = (workerId: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'worker-tasks', workerId],\n queryFn: async () => {\n // Self-scoped on the backend: the resolver always uses the calling actor's own id\n // (ctx.actor.id), never a caller-supplied workerId — see kadaikodi.gql.\n const result = await kadaikodiQuery<{ kadaikodiWorkerTasks: WorkerTaskRow[] }>(\n `query WorkerTasks($pagination: KadaikodiPaginationInput) {\n kadaikodiWorkerTasks(pagination: $pagination) {\n id orderId providerId type description priority status assignedAt dueAt completedAt customerName customerPhone earnings distance notes\n provider { name }\n order { deliveryAddress }\n }\n }`,\n { pagination: { limit: 100 } },\n apiGatewayUrl\n );\n return result.kadaikodiWorkerTasks.map(mapWorkerTask);\n },\n enabled: Boolean(workerId),\n });\n};\n\nexport const useWorkerStats = (workerId: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'worker-stats', workerId],\n queryFn: async () => {\n // Self-scoped on the backend: the resolver always uses the calling actor's own id\n // (ctx.actor.id), never a caller-supplied workerId — see kadaikodi.gql.\n const result = await kadaikodiQuery<{ kadaikodiWorkerStats: WorkerStats }>(\n `query WorkerStats {\n kadaikodiWorkerStats {\n totalDeliveries totalEarnings averageRating completionRate todayTasks todayEarnings\n }\n }`,\n {},\n apiGatewayUrl\n );\n return result.kadaikodiWorkerStats;\n },\n enabled: Boolean(workerId),\n });\n};\n\nexport const useWorkerSchedules = (workerId: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'worker-schedules', workerId],\n queryFn: async () => {\n // Self-scoped on the backend: the resolver always uses the calling actor's own id\n // (ctx.actor.id), never a caller-supplied workerId — see kadaikodi.gql.\n const result = await kadaikodiQuery<{ kadaikodiListWorkerSchedules: WorkerScheduleRow[] }>(\n `query WorkerSchedules {\n kadaikodiListWorkerSchedules {\n id date startTime endTime providerId status tasksCompleted totalEarnings\n provider { name }\n }\n }`,\n {},\n apiGatewayUrl\n );\n return result.kadaikodiListWorkerSchedules.map(mapWorkerSchedule);\n },\n enabled: Boolean(workerId),\n });\n};\n\n// ============================================================================\n// Reviews\n// ============================================================================\n\nexport const useReviews = (providerId: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'reviews', providerId],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiListReviews: KadaikodiReviewRow[] }>(\n `query Reviews($providerId: String!) {\n kadaikodiListReviews(providerId: $providerId) {\n id providerId customerId rating review response createdAt updatedAt\n }\n }`,\n { providerId },\n apiGatewayUrl\n );\n return result.kadaikodiListReviews;\n },\n enabled: Boolean(providerId),\n });\n};\n\n// ============================================================================\n// Mutations\n// ============================================================================\n\nexport const usePlaceOrder = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async (input: Record<string, unknown>) => {\n const result = await kadaikodiQuery<{\n kadaikodiPlaceOrder: {\n id: string;\n orderNumber: string;\n status: string;\n total: number;\n createdAt: string;\n };\n }>(\n `mutation PlaceOrder($input: KadaikodiPlaceOrderInput!) {\n kadaikodiPlaceOrder(input: $input) {\n id orderNumber status total createdAt\n }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.kadaikodiPlaceOrder;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'orders'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'dashboard-stats'] });\n },\n });\n};\n\nexport const useUpdateOrderStatus = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async ({ id, status }: { id: string; status: string }) => {\n const result = await kadaikodiQuery<{\n kadaikodiUpdateOrderStatus: { id: string; status: string };\n }>(\n `mutation UpdateOrderStatus($id: ID!, $status: KadaikodiOrderStatus!) {\n kadaikodiUpdateOrderStatus(id: $id, status: $status) {\n id status\n }\n }`,\n { id, status },\n apiGatewayUrl\n );\n return result.kadaikodiUpdateOrderStatus;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'orders'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'order'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'dashboard-stats'] });\n },\n });\n};\n\nexport const useCreateOffering = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async (input: Record<string, unknown>) => {\n const result = await kadaikodiQuery<{ kadaikodiCreateOffering: KadaikodiOfferingRow }>(\n `mutation CreateOffering($input: KadaikodiCreateOfferingInput!) {\n kadaikodiCreateOffering(input: $input) {\n ${OFFERING_FIELDS}\n }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.kadaikodiCreateOffering;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'offerings'] });\n },\n });\n};\n\nexport const useUpdateOffering = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async ({ id, input }: { id: string; input: Record<string, unknown> }) => {\n const result = await kadaikodiQuery<{ kadaikodiUpdateOffering: KadaikodiOfferingRow }>(\n `mutation UpdateOffering($id: ID!, $input: KadaikodiUpdateOfferingInput!) {\n kadaikodiUpdateOffering(id: $id, input: $input) {\n ${OFFERING_FIELDS}\n }\n }`,\n { id, input },\n apiGatewayUrl\n );\n return result.kadaikodiUpdateOffering;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'offerings'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'offering'] });\n },\n });\n};\n\nexport const useInvest = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async (input: { amount: number; investorId: string; opportunityId: string }) => {\n const result = await kadaikodiQuery<{\n kadaikodiInvest: {\n id: string;\n amount: number;\n currentValue: number;\n status: string;\n investedAt: string;\n };\n }>(\n `mutation Invest($input: KadaikodiInvestInput!) {\n kadaikodiInvest(input: $input) {\n id amount currentValue status investedAt\n }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.kadaikodiInvest;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'investments'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'investment-opportunities'] });\n },\n });\n};\n\nexport const useCreateProvider = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async (input: Record<string, unknown>) => {\n const result = await kadaikodiQuery<{\n kadaikodiCreateServiceProvider: { id: string; name: string; slug: string; status: string };\n }>(\n `mutation CreateProvider($input: KadaikodiCreateServiceProviderInput!) {\n kadaikodiCreateServiceProvider(input: $input) {\n id name slug status category location rating\n }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.kadaikodiCreateServiceProvider;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'providers'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'dashboard-stats'] });\n },\n });\n};\n\nexport const useCreateProviderWorker = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async (input: Record<string, unknown>) => {\n const result = await kadaikodiQuery<{\n kadaikodiCreateProviderWorker: KadaikodiProviderWorkerRow;\n }>(\n `mutation CreateProviderWorker($input: KadaikodiCreateProviderWorkerInput!) {\n kadaikodiCreateProviderWorker(input: $input) {\n id providerId workerId name role status metadata\n }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.kadaikodiCreateProviderWorker;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'provider-workers'] });\n },\n });\n};\n\nexport const useCreateWorkerTask = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async (input: Record<string, unknown>) => {\n const result = await kadaikodiQuery<{ kadaikodiCreateWorkerTask: WorkerTaskRow }>(\n `mutation CreateWorkerTask($input: KadaikodiCreateWorkerTaskInput!) {\n kadaikodiCreateWorkerTask(input: $input) {\n id orderId providerId type description priority status assignedAt dueAt completedAt customerName customerPhone earnings distance notes\n }\n }`,\n { input },\n apiGatewayUrl\n );\n return mapWorkerTask(result.kadaikodiCreateWorkerTask);\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'worker-tasks'] });\n },\n });\n};\n\nexport const useUpdateWorkerTaskStatus = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async ({ taskId, status }: { taskId: string; status: string }) => {\n const result = await kadaikodiQuery<{\n kadaikodiUpdateWorkerTaskStatus: { id: string; status: string };\n }>(\n `mutation UpdateTaskStatus($taskId: String!, $status: KadaikodiWorkerTaskStatus!) {\n kadaikodiUpdateWorkerTaskStatus(taskId: $taskId, status: $status) {\n id status\n }\n }`,\n { taskId, status },\n apiGatewayUrl\n );\n return result.kadaikodiUpdateWorkerTaskStatus;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'worker-tasks'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'worker-stats'] });\n },\n });\n};\n\nexport const useWorkerClockInOut = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async ({\n workerId,\n action,\n }: {\n workerId: string;\n action: 'CLOCK_IN' | 'CLOCK_OUT';\n }) => {\n const result = await kadaikodiQuery<{\n kadaikodiWorkerClockInOut: { success: boolean; message: string };\n }>(\n `mutation ClockInOut($workerId: String!, $action: KadaikodiClockAction!) {\n kadaikodiWorkerClockInOut(workerId: $workerId, action: $action) {\n success message\n }\n }`,\n { workerId, action },\n apiGatewayUrl\n );\n return result.kadaikodiWorkerClockInOut;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'worker-schedules'] });\n },\n });\n};\n\nexport const useCreateInvestmentOpportunity = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n return useMutation({\n mutationFn: async (input: {\n providerId: string;\n title: string;\n description?: string;\n targetAmount: number;\n minimumInvestment: number;\n expectedReturnsPct: number;\n lockInMonths: number;\n riskLevel?: string;\n }) => {\n const result = await kadaikodiQuery<{\n kadaikodiCreateInvestmentOpportunity: { id: string; title: string };\n }>(\n `mutation CreateOpportunity($input: KadaikodiCreateInvestmentOpportunityInput!) {\n kadaikodiCreateInvestmentOpportunity(input: $input) { id title targetAmount status }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.kadaikodiCreateInvestmentOpportunity;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'investment-opportunities'] });\n },\n });\n};\n\nexport const useCreateReview = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n return useMutation({\n mutationFn: async (input: {\n providerId: string;\n orderId?: string;\n customerId: string;\n rating: number;\n review?: string;\n }) => {\n const result = await kadaikodiQuery<{\n kadaikodiCreateReview: { id: string; rating: number };\n }>(\n `mutation CreateReview($input: KadaikodiCreateReviewInput!) {\n kadaikodiCreateReview(input: $input) { id rating review createdAt }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.kadaikodiCreateReview;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'reviews'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'providers'] });\n },\n });\n};\n\nexport const useRespondToReview = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n return useMutation({\n mutationFn: async ({ id, response }: { id: string; response: string }) => {\n const result = await kadaikodiQuery<{\n kadaikodiRespondToReview: { id: string; response: string };\n }>(\n `mutation RespondToReview($id: ID!, $response: String!) {\n kadaikodiRespondToReview(id: $id, response: $response) { id response }\n }`,\n { id, response },\n apiGatewayUrl\n );\n return result.kadaikodiRespondToReview;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'reviews'] });\n },\n });\n};\n\nexport const useUpdateProvider = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n return useMutation({\n mutationFn: async ({ id, input }: { id: string; input: Record<string, unknown> }) => {\n const result = await kadaikodiQuery<{\n kadaikodiUpdateServiceProvider: { id: string; status: string };\n }>(\n `mutation UpdateProvider($id: ID!, $input: KadaikodiUpdateServiceProviderInput!) {\n kadaikodiUpdateServiceProvider(id: $id, input: $input) {\n id name slug status category location businessHours serviceTypes rating\n }\n }`,\n { id, input },\n apiGatewayUrl\n );\n return result.kadaikodiUpdateServiceProvider;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'providers'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'provider'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'dashboard-stats'] });\n },\n });\n};\n\nexport const useDeleteOffering = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n return useMutation({\n mutationFn: async (id: string) => {\n const result = await kadaikodiQuery<{ kadaikodiDeleteOffering: boolean }>(\n `mutation DeleteOffering($id: ID!) { kadaikodiDeleteOffering(id: $id) }`,\n { id },\n apiGatewayUrl\n );\n return result.kadaikodiDeleteOffering;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'offerings'] });\n },\n });\n};\n\nexport const useUpdateWorkerTask = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n return useMutation({\n mutationFn: async ({\n taskId,\n status,\n notes,\n }: {\n taskId: string;\n status?: string;\n notes?: string;\n }) => {\n const result = await kadaikodiQuery<{\n kadaikodiUpdateWorkerTask: { id: string; status: string };\n }>(\n `mutation UpdateWorkerTask($taskId: String!, $status: KadaikodiWorkerTaskStatus, $notes: String) {\n kadaikodiUpdateWorkerTask(taskId: $taskId, status: $status, notes: $notes) { id status }\n }`,\n { taskId, status, notes },\n apiGatewayUrl\n );\n return result.kadaikodiUpdateWorkerTask;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'worker-tasks'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'worker-stats'] });\n },\n });\n};\n\nexport const useUpdateProviderWorker = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n return useMutation({\n mutationFn: async ({ id, metadata }: { id: string; metadata: Record<string, unknown> }) => {\n const result = await kadaikodiQuery<{ kadaikodiUpdateProviderWorker: { id: string } }>(\n `mutation UpdateProviderWorker($id: ID!, $metadata: JSON!) {\n kadaikodiUpdateProviderWorker(id: $id, metadata: $metadata) { id name metadata }\n }`,\n { id, metadata },\n apiGatewayUrl\n );\n return result.kadaikodiUpdateProviderWorker;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'provider-workers'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'worker-schedules'] });\n },\n });\n};\n\n// ============================================================================\n// Main Hook\n// ============================================================================\n\nexport const useKadaikodiApi = () => {\n const { currentUser } = useKadaikodi();\n const providers = useProviders();\n const orders = useOrders({ customerId: currentUser?.id });\n const dashboardStats = useDashboardStats();\n const investmentOpportunities = useInvestmentOpportunities();\n const investments = useInvestments(currentUser?.id || '');\n\n return useMemo(\n () => ({\n providers,\n orders,\n dashboardStats,\n investmentOpportunities,\n investments,\n }),\n [providers, orders, dashboardStats, investmentOpportunities, investments]\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useKadaikodiApi.js","names":[],"sources":["../../../src/kadaikodi/hooks/useKadaikodiApi.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\n\nimport { graphqlFetch } from '@burdenoff/fe-libs/shared/graphql';\n\nimport { useKadaikodi } from '../context';\nimport type {\n MockCart,\n MockOrder,\n OrderItem,\n OrderStatus,\n PaymentStatus,\n OrderTimelineEvent,\n DeliveryAddress,\n InvestmentOpportunity,\n Investment,\n DashboardStats,\n AdminAnalytics,\n WorkerTask,\n WorkerSchedule,\n WorkerStats,\n} from '../types';\n\n// ============================================================================\n// Low-level fetch helper\n// ============================================================================\n\nconst kadaikodiQuery = async <TData>(\n query: string,\n variables: Record<string, unknown>,\n baseUrl?: string\n): Promise<TData> => {\n const response = await graphqlFetch<TData>({\n gateway: 'workspace',\n baseUrl,\n query,\n variables,\n workspaceToken: true,\n });\n\n if (response.errors?.length) {\n throw new Error(response.errors[0]?.message ?? 'GraphQL request failed');\n }\n\n if (!response.data) {\n throw new Error('GraphQL response did not include data');\n }\n\n return response.data;\n};\n\n// ============================================================================\n// Raw GraphQL row shapes (explicit — no `any`)\n// ============================================================================\n\ninterface RawLocation {\n address?: string | null;\n latitude?: number | null;\n longitude?: number | null;\n coordinates?: { lat?: number | null; lng?: number | null } | null;\n}\n\ninterface ProviderRow {\n id: string;\n name: string;\n slug: string;\n category: string;\n status: string;\n ownerId: string;\n rating: number;\n totalRatings: number;\n averageOrderValue: number;\n serviceTypes: string[];\n location: RawLocation | null;\n businessHours?: MockCart['businessHours'];\n createdAt: string;\n}\n\nexport interface KadaikodiOfferingRow {\n id: string;\n providerId: string;\n kind: string;\n name: string;\n slug: string;\n category: string;\n description?: string | null;\n price: number;\n originalPrice?: number | null;\n stock?: number | null;\n durationMinutes?: number | null;\n serviceType?: string | null;\n tags: string[];\n isAvailable: boolean;\n metadata?: Record<string, unknown> | null;\n media?: string[] | null;\n}\n\ninterface OrderItemRow {\n id: string;\n offeringId?: string | null;\n name: string;\n quantity: number;\n unitPrice: number;\n totalPrice: number;\n customizations?: string[] | null;\n}\n\ninterface OrderRow {\n id: string;\n orderNumber: string;\n providerId: string;\n customerId: string;\n status: string;\n paymentStatus: string;\n fulfillmentType: string;\n subtotal: number;\n tax: number;\n deliveryFee: number;\n discount: number;\n total: number;\n notes?: string | null;\n timeline?: OrderTimelineEvent[] | null;\n paymentMethod?: string | null;\n deliveryAddress?: Partial<DeliveryAddress> | null;\n createdAt: string;\n provider?: { name?: string | null } | null;\n items: OrderItemRow[];\n}\n\ninterface InvestmentOpportunityRow {\n id: string;\n providerId: string;\n title: string;\n description?: string | null;\n targetAmount: number;\n raisedAmount: number;\n minimumInvestment: number;\n expectedReturnsPct: number;\n lockInMonths: number;\n riskLevel: string;\n status: string;\n expiresAt?: string | null;\n terms?: Record<string, unknown> | null;\n businessMetrics?: Record<string, unknown> | null;\n createdAt: string;\n provider?: { name?: string | null } | null;\n}\n\ninterface InvestmentRow {\n id: string;\n opportunityId: string;\n amount: number;\n currentValue: number;\n expectedReturnsPct: number;\n status: string;\n investedAt: string;\n maturedAt?: string | null;\n realizedReturns: number;\n opportunity?: { provider?: { name?: string | null } | null } | null;\n}\n\nexport interface KadaikodiReviewRow {\n id: string;\n providerId: string;\n customerId: string;\n rating: number;\n review?: string | null;\n response?: string | null;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface KadaikodiCustomerAddressRow {\n id: string;\n type: 'HOME' | 'OFFICE' | 'OTHER';\n nickname?: string | null;\n addressLine1: string;\n addressLine2?: string | null;\n city: string;\n state: string;\n zipCode: string;\n isDefault: boolean;\n usageCount: number;\n lastUsedAt?: string | null;\n}\n\nexport interface KadaikodiCustomerPaymentMethodRow {\n id: string;\n type: 'UPI' | 'CARD' | 'WALLET';\n label: string;\n detail: string;\n isDefault: boolean;\n}\n\nexport interface KadaikodiProviderWorkerRow {\n id: string;\n providerId: string;\n workerId: string;\n name: string;\n role: string;\n status: string;\n metadata?: Record<string, unknown> | null;\n}\n\ninterface WorkerTaskRow {\n id: string;\n orderId?: string | null;\n providerId?: string | null;\n type: string;\n description?: string | null;\n priority: string;\n status: string;\n assignedAt?: string | null;\n dueAt?: string | null;\n completedAt?: string | null;\n customerName?: string | null;\n customerPhone?: string | null;\n earnings?: number | null;\n distance?: number | null;\n notes?: string | null;\n provider?: { name?: string | null } | null;\n order?: { deliveryAddress?: Partial<DeliveryAddress> | null } | null;\n}\n\ninterface WorkerScheduleRow {\n id: string;\n date: string;\n startTime: string;\n endTime?: string | null;\n providerId: string;\n status: string;\n tasksCompleted: number;\n totalEarnings: number;\n provider?: { name?: string | null } | null;\n}\n\n// ============================================================================\n// Mappers\n// ============================================================================\n\nconst toCartLocation = (loc: RawLocation | null | undefined): MockCart['location'] => ({\n address: loc?.address ?? '',\n coordinates: {\n lat: loc?.coordinates?.lat ?? loc?.latitude ?? 0,\n lng: loc?.coordinates?.lng ?? loc?.longitude ?? 0,\n },\n});\n\nconst toDeliveryAddress = (raw: Partial<DeliveryAddress> | null | undefined): DeliveryAddress => ({\n street: raw?.street ?? '',\n area: raw?.area ?? '',\n city: raw?.city ?? '',\n pincode: raw?.pincode ?? '',\n landmark: raw?.landmark,\n});\n\nconst mapProvider = (p: ProviderRow): MockCart => ({\n id: p.id,\n name: p.name,\n category: p.category,\n ownerId: p.ownerId,\n rating: p.rating,\n totalRatings: p.totalRatings,\n isOpen: p.status === 'ACTIVE' || p.status === 'VERIFIED',\n isVerified: p.status === 'VERIFIED',\n location: toCartLocation(p.location),\n averageOrderValue: p.averageOrderValue,\n serviceTypes: p.serviceTypes,\n businessHours: p.businessHours,\n createdAt: p.createdAt,\n // image/images/distance/estimatedTime intentionally omitted — no fabricated data.\n});\n\nconst mapOrder = (o: OrderRow): MockOrder => ({\n id: o.id,\n cartId: o.providerId,\n cartName: o.provider?.name ?? 'Unknown Cart',\n // cartImage intentionally omitted — no fabricated data.\n items: o.items.map((i): OrderItem => ({\n id: i.id,\n name: i.name,\n quantity: i.quantity,\n price: i.unitPrice,\n customizations: i.customizations ?? undefined,\n })),\n total: o.total,\n subtotal: o.subtotal,\n taxes: o.tax,\n deliveryFee: o.deliveryFee,\n discount: o.discount,\n status: o.status.toLowerCase() as OrderStatus,\n orderDate: o.createdAt,\n deliveryAddress: toDeliveryAddress(o.deliveryAddress),\n paymentMethod: o.paymentMethod ?? 'Cash',\n paymentStatus: o.paymentStatus.toLowerCase() as PaymentStatus,\n timeline: o.timeline ?? [],\n});\n\nconst mapInvestmentOpportunity = (o: InvestmentOpportunityRow): InvestmentOpportunity => ({\n id: o.id,\n cartId: o.providerId,\n cartName: o.provider?.name ?? 'Unknown Cart',\n businessOwner: '',\n targetAmount: o.targetAmount,\n raisedAmount: o.raisedAmount,\n minimumInvestment: o.minimumInvestment,\n expectedReturns: o.expectedReturnsPct,\n investmentPeriod: o.lockInMonths,\n riskLevel: o.riskLevel.toLowerCase() as InvestmentOpportunity['riskLevel'],\n description: o.description ?? '',\n businessPlan: '',\n financialProjections: [],\n documents: [],\n investors: [],\n status: o.status.toLowerCase() as InvestmentOpportunity['status'],\n createdAt: o.createdAt,\n expiresAt: o.expiresAt ?? '',\n});\n\nconst mapInvestment = (i: InvestmentRow): Investment => ({\n id: i.id,\n opportunityId: i.opportunityId,\n cartName: i.opportunity?.provider?.name ?? 'Unknown Cart',\n investedAmount: i.amount,\n currentValue: i.currentValue,\n returns: i.realizedReturns,\n returnsPercentage: i.expectedReturnsPct,\n investmentDate: i.investedAt,\n status: i.status.toLowerCase() as Investment['status'],\n});\n\nconst mapWorkerTask = (t: WorkerTaskRow): WorkerTask => ({\n id: t.id,\n orderId: t.orderId ?? '',\n cartId: t.providerId ?? '',\n cartName: t.provider?.name ?? 'Unknown Cart',\n type: t.type.toLowerCase() as WorkerTask['type'],\n description: t.description ?? '',\n priority: t.priority.toLowerCase() as WorkerTask['priority'],\n status: t.status.toLowerCase() as WorkerTask['status'],\n assignedAt: t.assignedAt ?? '',\n dueAt: t.dueAt ?? '',\n completedAt: t.completedAt ?? undefined,\n customerName: t.customerName ?? '',\n customerPhone: t.customerPhone ?? '',\n deliveryAddress: t.order?.deliveryAddress\n ? toDeliveryAddress(t.order.deliveryAddress)\n : undefined,\n earnings: t.earnings ?? 0,\n distance: t.distance ?? undefined,\n notes: t.notes ?? undefined,\n});\n\nconst mapWorkerSchedule = (s: WorkerScheduleRow): WorkerSchedule => ({\n id: s.id,\n date: s.date,\n startTime: s.startTime,\n endTime: s.endTime ?? '',\n cartId: s.providerId,\n cartName: s.provider?.name ?? 'Unknown Cart',\n status: s.status.toLowerCase() as WorkerSchedule['status'],\n tasksCompleted: s.tasksCompleted,\n totalEarnings: s.totalEarnings,\n});\n\n// ============================================================================\n// GraphQL selection fragments (kept as string constants for reuse)\n// ============================================================================\n\nconst PROVIDER_FIELDS = `\n id name slug category status ownerId rating totalRatings averageOrderValue serviceTypes location businessHours createdAt\n`;\n\nconst ORDER_FIELDS = `\n id orderNumber providerId customerId status paymentStatus fulfillmentType subtotal tax deliveryFee discount total notes timeline paymentMethod deliveryAddress createdAt\n provider { name }\n items { id offeringId name quantity unitPrice totalPrice customizations }\n`;\n\nconst OFFERING_FIELDS = `\n id providerId kind name slug category description price originalPrice stock durationMinutes serviceType tags isAvailable metadata media\n`;\n\n// ============================================================================\n// Service Providers (Carts)\n// ============================================================================\n\nexport const useProviders = (query?: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'providers', query],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiListServiceProviders: ProviderRow[] }>(\n `query Providers($filter: KadaikodiProviderFilterInput) {\n kadaikodiListServiceProviders(filter: $filter, limit: 200) {\n ${PROVIDER_FIELDS}\n }\n }`,\n { filter: query ? { query } : undefined },\n apiGatewayUrl\n );\n return result.kadaikodiListServiceProviders.map(mapProvider);\n },\n });\n};\n\nexport const useProvider = (id?: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'provider', id],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiServiceProvider: ProviderRow | null }>(\n `query Provider($id: ID!) {\n kadaikodiServiceProvider(id: $id) {\n ${PROVIDER_FIELDS}\n }\n }`,\n { id },\n apiGatewayUrl\n );\n return result.kadaikodiServiceProvider ? mapProvider(result.kadaikodiServiceProvider) : null;\n },\n enabled: Boolean(id),\n });\n};\n\n// ============================================================================\n// Offerings\n// ============================================================================\n\nexport const useOfferings = (providerId?: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'offerings', providerId],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiListOfferings: KadaikodiOfferingRow[] }>(\n `query Offerings($providerId: String) {\n kadaikodiListOfferings(providerId: $providerId, limit: 300) {\n ${OFFERING_FIELDS}\n }\n }`,\n { providerId },\n apiGatewayUrl\n );\n return result.kadaikodiListOfferings;\n },\n enabled: Boolean(providerId),\n });\n};\n\nexport const useOffering = (id?: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'offering', id],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiOffering: KadaikodiOfferingRow | null }>(\n `query Offering($id: ID!) {\n kadaikodiOffering(id: $id) {\n ${OFFERING_FIELDS}\n }\n }`,\n { id },\n apiGatewayUrl\n );\n return result.kadaikodiOffering;\n },\n enabled: Boolean(id),\n });\n};\n\n// ============================================================================\n// Orders\n// ============================================================================\n\nexport const useOrders = (input: { providerId?: string; customerId?: string } = {}) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'orders', input.providerId, input.customerId],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiListOrders: OrderRow[] }>(\n `query Orders($providerId: String, $customerId: String) {\n kadaikodiListOrders(providerId: $providerId, customerId: $customerId, limit: 200) {\n ${ORDER_FIELDS}\n }\n }`,\n input,\n apiGatewayUrl\n );\n return result.kadaikodiListOrders.map(mapOrder);\n },\n });\n};\n\nexport const useOrder = (id?: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'order', id],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiOrder: OrderRow | null }>(\n `query Order($id: ID!) {\n kadaikodiOrder(id: $id) {\n ${ORDER_FIELDS}\n }\n }`,\n { id },\n apiGatewayUrl\n );\n return result.kadaikodiOrder ? mapOrder(result.kadaikodiOrder) : null;\n },\n enabled: Boolean(id),\n });\n};\n\n// ============================================================================\n// Analytics & Stats\n// ============================================================================\n\nexport const useDashboardStats = () => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'dashboard-stats'],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiDashboardStats: DashboardStats }>(\n `query DashboardStats { kadaikodiDashboardStats { totalOrders totalRevenue activeProviders activeCustomers avgRating pendingOrders } }`,\n {},\n apiGatewayUrl\n );\n return result.kadaikodiDashboardStats;\n },\n });\n};\n\nexport const useAdminAnalytics = () => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'admin-analytics'],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiAdminAnalytics: AdminAnalytics }>(\n `query AdminAnalytics { kadaikodiAdminAnalytics { revenueByCategory orderTrends topProviders customerGrowth categoryDistribution } }`,\n {},\n apiGatewayUrl\n );\n return result.kadaikodiAdminAnalytics;\n },\n });\n};\n\n// ============================================================================\n// Investments\n// ============================================================================\n\nexport const useInvestmentOpportunities = () => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'investment-opportunities'],\n queryFn: async () => {\n // Pre-existing bug fix: the schema takes `pagination: KadaikodiPaginationInput`,\n // not a bare `limit` arg — the old query failed GRAPHQL_VALIDATION_FAILED\n // (\"Unknown argument \\\"limit\\\"\") on every load (caught live in prod while\n // verifying BOFF-3269).\n const result = await kadaikodiQuery<{\n kadaikodiListInvestmentOpportunities: InvestmentOpportunityRow[];\n }>(\n `query Opportunities($pagination: KadaikodiPaginationInput) {\n kadaikodiListInvestmentOpportunities(pagination: $pagination) {\n id providerId title description targetAmount raisedAmount minimumInvestment expectedReturnsPct lockInMonths riskLevel status expiresAt terms businessMetrics createdAt\n provider { name }\n }\n }`,\n { pagination: { limit: 200 } },\n apiGatewayUrl\n );\n return result.kadaikodiListInvestmentOpportunities.map(mapInvestmentOpportunity);\n },\n });\n};\n\nexport const useInvestments = (investorId: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'investments', investorId],\n queryFn: async () => {\n // Self-scoped on the backend: the resolver always uses the calling actor's own id\n // (ctx.actor.id), never a caller-supplied investorId — see kadaikodi.gql.\n const result = await kadaikodiQuery<{ kadaikodiListInvestments: InvestmentRow[] }>(\n `query Investments {\n kadaikodiListInvestments {\n id opportunityId amount currentValue expectedReturnsPct status investedAt maturedAt realizedReturns\n opportunity { provider { name } }\n }\n }`,\n {},\n apiGatewayUrl\n );\n return result.kadaikodiListInvestments.map(mapInvestment);\n },\n enabled: Boolean(investorId),\n });\n};\n\n// ============================================================================\n// Provider Workers\n// ============================================================================\n\nexport const useProviderWorkers = (providerId?: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'provider-workers', providerId],\n queryFn: async () => {\n const result = await kadaikodiQuery<{\n kadaikodiListProviderWorkers: KadaikodiProviderWorkerRow[];\n }>(\n `query ProviderWorkers($providerId: String!) {\n kadaikodiListProviderWorkers(providerId: $providerId) {\n id providerId workerId name role status metadata\n }\n }`,\n { providerId },\n apiGatewayUrl\n );\n return result.kadaikodiListProviderWorkers;\n },\n enabled: Boolean(providerId),\n });\n};\n\n// ============================================================================\n// Workers & Tasks\n// ============================================================================\n\nexport const useWorkerTasks = (workerId: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'worker-tasks', workerId],\n queryFn: async () => {\n // Self-scoped on the backend: the resolver always uses the calling actor's own id\n // (ctx.actor.id), never a caller-supplied workerId — see kadaikodi.gql.\n const result = await kadaikodiQuery<{ kadaikodiWorkerTasks: WorkerTaskRow[] }>(\n `query WorkerTasks($pagination: KadaikodiPaginationInput) {\n kadaikodiWorkerTasks(pagination: $pagination) {\n id orderId providerId type description priority status assignedAt dueAt completedAt customerName customerPhone earnings distance notes\n provider { name }\n order { deliveryAddress }\n }\n }`,\n { pagination: { limit: 100 } },\n apiGatewayUrl\n );\n return result.kadaikodiWorkerTasks.map(mapWorkerTask);\n },\n enabled: Boolean(workerId),\n });\n};\n\nexport const useWorkerStats = (workerId: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'worker-stats', workerId],\n queryFn: async () => {\n // Self-scoped on the backend: the resolver always uses the calling actor's own id\n // (ctx.actor.id), never a caller-supplied workerId — see kadaikodi.gql.\n const result = await kadaikodiQuery<{ kadaikodiWorkerStats: WorkerStats }>(\n `query WorkerStats {\n kadaikodiWorkerStats {\n totalDeliveries totalEarnings averageRating completionRate todayTasks todayEarnings\n }\n }`,\n {},\n apiGatewayUrl\n );\n return result.kadaikodiWorkerStats;\n },\n enabled: Boolean(workerId),\n });\n};\n\nexport const useWorkerSchedules = (workerId: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'worker-schedules', workerId],\n queryFn: async () => {\n // Self-scoped on the backend: the resolver always uses the calling actor's own id\n // (ctx.actor.id), never a caller-supplied workerId — see kadaikodi.gql.\n const result = await kadaikodiQuery<{ kadaikodiListWorkerSchedules: WorkerScheduleRow[] }>(\n `query WorkerSchedules {\n kadaikodiListWorkerSchedules {\n id date startTime endTime providerId status tasksCompleted totalEarnings\n provider { name }\n }\n }`,\n {},\n apiGatewayUrl\n );\n return result.kadaikodiListWorkerSchedules.map(mapWorkerSchedule);\n },\n enabled: Boolean(workerId),\n });\n};\n\n// ============================================================================\n// Customer self-service: saved addresses, payment methods, favorites\n// ============================================================================\n\nconst ADDRESS_FIELDS = `\n id type nickname addressLine1 addressLine2 city state zipCode isDefault usageCount lastUsedAt\n`;\n\nconst PAYMENT_METHOD_FIELDS = `\n id type label detail isDefault\n`;\n\nexport const useMyAddresses = () => {\n const { apiGatewayUrl, currentUser } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'my-addresses'],\n queryFn: async () => {\n // Self-scoped on the backend: the resolver always uses the calling actor's own id\n // (ctx.actor.id), never a caller-supplied identity arg — see kadaikodi.gql.\n const result = await kadaikodiQuery<{ kadaikodiMyAddresses: KadaikodiCustomerAddressRow[] }>(\n `query MyAddresses($pagination: KadaikodiPaginationInput) {\n kadaikodiMyAddresses(pagination: $pagination) {\n ${ADDRESS_FIELDS}\n }\n }`,\n { pagination: { limit: 100 } },\n apiGatewayUrl\n );\n return result.kadaikodiMyAddresses;\n },\n enabled: Boolean(currentUser?.id),\n });\n};\n\nexport const useAddAddress = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n return useMutation({\n mutationFn: async (input: Record<string, unknown>) => {\n const result = await kadaikodiQuery<{ kadaikodiAddAddress: KadaikodiCustomerAddressRow }>(\n `mutation AddAddress($input: KadaikodiAddAddressInput!) {\n kadaikodiAddAddress(input: $input) { ${ADDRESS_FIELDS} }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.kadaikodiAddAddress;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'my-addresses'] });\n },\n });\n};\n\nexport const useUpdateAddress = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n return useMutation({\n mutationFn: async ({ id, input }: { id: string; input: Record<string, unknown> }) => {\n const result = await kadaikodiQuery<{ kadaikodiUpdateAddress: KadaikodiCustomerAddressRow }>(\n `mutation UpdateAddress($id: ID!, $input: KadaikodiUpdateAddressInput!) {\n kadaikodiUpdateAddress(id: $id, input: $input) { ${ADDRESS_FIELDS} }\n }`,\n { id, input },\n apiGatewayUrl\n );\n return result.kadaikodiUpdateAddress;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'my-addresses'] });\n },\n });\n};\n\nexport const useDeleteAddress = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n return useMutation({\n mutationFn: async (id: string) => {\n const result = await kadaikodiQuery<{ kadaikodiDeleteAddress: boolean }>(\n `mutation DeleteAddress($id: ID!) { kadaikodiDeleteAddress(id: $id) }`,\n { id },\n apiGatewayUrl\n );\n return result.kadaikodiDeleteAddress;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'my-addresses'] });\n },\n });\n};\n\nexport const useSetDefaultAddress = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n return useMutation({\n mutationFn: async (id: string) => {\n const result = await kadaikodiQuery<{\n kadaikodiSetDefaultAddress: KadaikodiCustomerAddressRow;\n }>(\n `mutation SetDefaultAddress($id: ID!) { kadaikodiSetDefaultAddress(id: $id) { ${ADDRESS_FIELDS} } }`,\n { id },\n apiGatewayUrl\n );\n return result.kadaikodiSetDefaultAddress;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'my-addresses'] });\n },\n });\n};\n\nexport const useMyPaymentMethods = () => {\n const { apiGatewayUrl, currentUser } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'my-payment-methods'],\n queryFn: async () => {\n // Self-scoped on the backend — see kadaikodi.gql.\n const result = await kadaikodiQuery<{\n kadaikodiMyPaymentMethods: KadaikodiCustomerPaymentMethodRow[];\n }>(\n `query MyPaymentMethods($pagination: KadaikodiPaginationInput) {\n kadaikodiMyPaymentMethods(pagination: $pagination) {\n ${PAYMENT_METHOD_FIELDS}\n }\n }`,\n { pagination: { limit: 100 } },\n apiGatewayUrl\n );\n return result.kadaikodiMyPaymentMethods;\n },\n enabled: Boolean(currentUser?.id),\n });\n};\n\nexport const useAddPaymentMethod = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n return useMutation({\n mutationFn: async (input: Record<string, unknown>) => {\n const result = await kadaikodiQuery<{\n kadaikodiAddPaymentMethod: KadaikodiCustomerPaymentMethodRow;\n }>(\n `mutation AddPaymentMethod($input: KadaikodiAddPaymentMethodInput!) {\n kadaikodiAddPaymentMethod(input: $input) { ${PAYMENT_METHOD_FIELDS} }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.kadaikodiAddPaymentMethod;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'my-payment-methods'] });\n },\n });\n};\n\nexport const useRemovePaymentMethod = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n return useMutation({\n mutationFn: async (id: string) => {\n const result = await kadaikodiQuery<{ kadaikodiRemovePaymentMethod: boolean }>(\n `mutation RemovePaymentMethod($id: ID!) { kadaikodiRemovePaymentMethod(id: $id) }`,\n { id },\n apiGatewayUrl\n );\n return result.kadaikodiRemovePaymentMethod;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'my-payment-methods'] });\n },\n });\n};\n\nexport const useSetDefaultPaymentMethod = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n return useMutation({\n mutationFn: async (id: string) => {\n const result = await kadaikodiQuery<{\n kadaikodiSetDefaultPaymentMethod: KadaikodiCustomerPaymentMethodRow;\n }>(\n `mutation SetDefaultPaymentMethod($id: ID!) {\n kadaikodiSetDefaultPaymentMethod(id: $id) { ${PAYMENT_METHOD_FIELDS} }\n }`,\n { id },\n apiGatewayUrl\n );\n return result.kadaikodiSetDefaultPaymentMethod;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'my-payment-methods'] });\n },\n });\n};\n\nexport const useMyFavoriteProviderIds = () => {\n const { apiGatewayUrl, currentUser } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'my-favorite-provider-ids'],\n queryFn: async () => {\n // Self-scoped on the backend — see kadaikodi.gql.\n const result = await kadaikodiQuery<{ kadaikodiMyFavoriteProviderIds: string[] }>(\n `query MyFavoriteProviderIds { kadaikodiMyFavoriteProviderIds }`,\n {},\n apiGatewayUrl\n );\n return result.kadaikodiMyFavoriteProviderIds;\n },\n enabled: Boolean(currentUser?.id),\n });\n};\n\nexport const useToggleFavorite = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n return useMutation({\n mutationFn: async (providerId: string) => {\n const result = await kadaikodiQuery<{ kadaikodiToggleFavorite: boolean }>(\n `mutation ToggleFavorite($providerId: String!) { kadaikodiToggleFavorite(providerId: $providerId) }`,\n { providerId },\n apiGatewayUrl\n );\n return result.kadaikodiToggleFavorite;\n },\n // Optimistic toggle so the heart icon flips instantly across pages sharing this cache key.\n onMutate: async (providerId: string) => {\n await queryClient.cancelQueries({ queryKey: ['kadaikodi', 'my-favorite-provider-ids'] });\n const previous = queryClient.getQueryData<string[]>([\n 'kadaikodi',\n 'my-favorite-provider-ids',\n ]);\n queryClient.setQueryData<string[]>(['kadaikodi', 'my-favorite-provider-ids'], (ids = []) =>\n ids.includes(providerId) ? ids.filter((id) => id !== providerId) : [...ids, providerId]\n );\n return { previous };\n },\n onError: (_err, _providerId, context) => {\n if (context?.previous) {\n queryClient.setQueryData(['kadaikodi', 'my-favorite-provider-ids'], context.previous);\n }\n },\n onSettled: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'my-favorite-provider-ids'] });\n },\n });\n};\n\n// ============================================================================\n// Reviews\n// ============================================================================\n\nexport const useReviews = (providerId: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'reviews', providerId],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiListReviews: KadaikodiReviewRow[] }>(\n `query Reviews($providerId: String!) {\n kadaikodiListReviews(providerId: $providerId) {\n id providerId customerId rating review response createdAt updatedAt\n }\n }`,\n { providerId },\n apiGatewayUrl\n );\n return result.kadaikodiListReviews;\n },\n enabled: Boolean(providerId),\n });\n};\n\n// ============================================================================\n// Mutations\n// ============================================================================\n\nexport const usePlaceOrder = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async (input: Record<string, unknown>) => {\n const result = await kadaikodiQuery<{\n kadaikodiPlaceOrder: {\n id: string;\n orderNumber: string;\n status: string;\n total: number;\n createdAt: string;\n };\n }>(\n `mutation PlaceOrder($input: KadaikodiPlaceOrderInput!) {\n kadaikodiPlaceOrder(input: $input) {\n id orderNumber status total createdAt\n }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.kadaikodiPlaceOrder;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'orders'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'dashboard-stats'] });\n },\n });\n};\n\nexport const useUpdateOrderStatus = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async ({ id, status }: { id: string; status: string }) => {\n const result = await kadaikodiQuery<{\n kadaikodiUpdateOrderStatus: { id: string; status: string };\n }>(\n `mutation UpdateOrderStatus($id: ID!, $status: KadaikodiOrderStatus!) {\n kadaikodiUpdateOrderStatus(id: $id, status: $status) {\n id status\n }\n }`,\n { id, status },\n apiGatewayUrl\n );\n return result.kadaikodiUpdateOrderStatus;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'orders'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'order'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'dashboard-stats'] });\n },\n });\n};\n\nexport const useCreateOffering = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async (input: Record<string, unknown>) => {\n const result = await kadaikodiQuery<{ kadaikodiCreateOffering: KadaikodiOfferingRow }>(\n `mutation CreateOffering($input: KadaikodiCreateOfferingInput!) {\n kadaikodiCreateOffering(input: $input) {\n ${OFFERING_FIELDS}\n }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.kadaikodiCreateOffering;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'offerings'] });\n },\n });\n};\n\nexport const useUpdateOffering = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async ({ id, input }: { id: string; input: Record<string, unknown> }) => {\n const result = await kadaikodiQuery<{ kadaikodiUpdateOffering: KadaikodiOfferingRow }>(\n `mutation UpdateOffering($id: ID!, $input: KadaikodiUpdateOfferingInput!) {\n kadaikodiUpdateOffering(id: $id, input: $input) {\n ${OFFERING_FIELDS}\n }\n }`,\n { id, input },\n apiGatewayUrl\n );\n return result.kadaikodiUpdateOffering;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'offerings'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'offering'] });\n },\n });\n};\n\nexport const useInvest = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async (input: { amount: number; investorId: string; opportunityId: string }) => {\n const result = await kadaikodiQuery<{\n kadaikodiInvest: {\n id: string;\n amount: number;\n currentValue: number;\n status: string;\n investedAt: string;\n };\n }>(\n `mutation Invest($input: KadaikodiInvestInput!) {\n kadaikodiInvest(input: $input) {\n id amount currentValue status investedAt\n }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.kadaikodiInvest;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'investments'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'investment-opportunities'] });\n },\n });\n};\n\nexport const useCreateProvider = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async (input: Record<string, unknown>) => {\n const result = await kadaikodiQuery<{\n kadaikodiCreateServiceProvider: { id: string; name: string; slug: string; status: string };\n }>(\n `mutation CreateProvider($input: KadaikodiCreateServiceProviderInput!) {\n kadaikodiCreateServiceProvider(input: $input) {\n id name slug status category location rating\n }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.kadaikodiCreateServiceProvider;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'providers'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'dashboard-stats'] });\n },\n });\n};\n\nexport const useCreateProviderWorker = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async (input: Record<string, unknown>) => {\n const result = await kadaikodiQuery<{\n kadaikodiCreateProviderWorker: KadaikodiProviderWorkerRow;\n }>(\n `mutation CreateProviderWorker($input: KadaikodiCreateProviderWorkerInput!) {\n kadaikodiCreateProviderWorker(input: $input) {\n id providerId workerId name role status metadata\n }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.kadaikodiCreateProviderWorker;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'provider-workers'] });\n },\n });\n};\n\nexport const useCreateWorkerTask = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async (input: Record<string, unknown>) => {\n const result = await kadaikodiQuery<{ kadaikodiCreateWorkerTask: WorkerTaskRow }>(\n `mutation CreateWorkerTask($input: KadaikodiCreateWorkerTaskInput!) {\n kadaikodiCreateWorkerTask(input: $input) {\n id orderId providerId type description priority status assignedAt dueAt completedAt customerName customerPhone earnings distance notes\n }\n }`,\n { input },\n apiGatewayUrl\n );\n return mapWorkerTask(result.kadaikodiCreateWorkerTask);\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'worker-tasks'] });\n },\n });\n};\n\nexport const useUpdateWorkerTaskStatus = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async ({ taskId, status }: { taskId: string; status: string }) => {\n const result = await kadaikodiQuery<{\n kadaikodiUpdateWorkerTaskStatus: { id: string; status: string };\n }>(\n `mutation UpdateTaskStatus($taskId: String!, $status: KadaikodiWorkerTaskStatus!) {\n kadaikodiUpdateWorkerTaskStatus(taskId: $taskId, status: $status) {\n id status\n }\n }`,\n { taskId, status },\n apiGatewayUrl\n );\n return result.kadaikodiUpdateWorkerTaskStatus;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'worker-tasks'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'worker-stats'] });\n },\n });\n};\n\nexport const useWorkerClockInOut = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async ({\n workerId,\n action,\n }: {\n workerId: string;\n action: 'CLOCK_IN' | 'CLOCK_OUT';\n }) => {\n const result = await kadaikodiQuery<{\n kadaikodiWorkerClockInOut: { success: boolean; message: string };\n }>(\n `mutation ClockInOut($workerId: String!, $action: KadaikodiClockAction!) {\n kadaikodiWorkerClockInOut(workerId: $workerId, action: $action) {\n success message\n }\n }`,\n { workerId, action },\n apiGatewayUrl\n );\n return result.kadaikodiWorkerClockInOut;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'worker-schedules'] });\n },\n });\n};\n\nexport const useCreateInvestmentOpportunity = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n return useMutation({\n mutationFn: async (input: {\n providerId: string;\n title: string;\n description?: string;\n targetAmount: number;\n minimumInvestment: number;\n expectedReturnsPct: number;\n lockInMonths: number;\n riskLevel?: string;\n }) => {\n const result = await kadaikodiQuery<{\n kadaikodiCreateInvestmentOpportunity: { id: string; title: string };\n }>(\n `mutation CreateOpportunity($input: KadaikodiCreateInvestmentOpportunityInput!) {\n kadaikodiCreateInvestmentOpportunity(input: $input) { id title targetAmount status }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.kadaikodiCreateInvestmentOpportunity;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'investment-opportunities'] });\n },\n });\n};\n\nexport const useCreateReview = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n return useMutation({\n mutationFn: async (input: {\n providerId: string;\n orderId?: string;\n customerId: string;\n rating: number;\n review?: string;\n }) => {\n const result = await kadaikodiQuery<{\n kadaikodiCreateReview: { id: string; rating: number };\n }>(\n `mutation CreateReview($input: KadaikodiCreateReviewInput!) {\n kadaikodiCreateReview(input: $input) { id rating review createdAt }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.kadaikodiCreateReview;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'reviews'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'providers'] });\n },\n });\n};\n\nexport const useRespondToReview = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n return useMutation({\n mutationFn: async ({ id, response }: { id: string; response: string }) => {\n const result = await kadaikodiQuery<{\n kadaikodiRespondToReview: { id: string; response: string };\n }>(\n `mutation RespondToReview($id: ID!, $response: String!) {\n kadaikodiRespondToReview(id: $id, response: $response) { id response }\n }`,\n { id, response },\n apiGatewayUrl\n );\n return result.kadaikodiRespondToReview;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'reviews'] });\n },\n });\n};\n\nexport const useUpdateProvider = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n return useMutation({\n mutationFn: async ({ id, input }: { id: string; input: Record<string, unknown> }) => {\n const result = await kadaikodiQuery<{\n kadaikodiUpdateServiceProvider: { id: string; status: string };\n }>(\n `mutation UpdateProvider($id: ID!, $input: KadaikodiUpdateServiceProviderInput!) {\n kadaikodiUpdateServiceProvider(id: $id, input: $input) {\n id name slug status category location businessHours serviceTypes rating\n }\n }`,\n { id, input },\n apiGatewayUrl\n );\n return result.kadaikodiUpdateServiceProvider;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'providers'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'provider'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'dashboard-stats'] });\n },\n });\n};\n\nexport const useDeleteOffering = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n return useMutation({\n mutationFn: async (id: string) => {\n const result = await kadaikodiQuery<{ kadaikodiDeleteOffering: boolean }>(\n `mutation DeleteOffering($id: ID!) { kadaikodiDeleteOffering(id: $id) }`,\n { id },\n apiGatewayUrl\n );\n return result.kadaikodiDeleteOffering;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'offerings'] });\n },\n });\n};\n\nexport const useUpdateWorkerTask = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n return useMutation({\n mutationFn: async ({\n taskId,\n status,\n notes,\n }: {\n taskId: string;\n status?: string;\n notes?: string;\n }) => {\n const result = await kadaikodiQuery<{\n kadaikodiUpdateWorkerTask: { id: string; status: string };\n }>(\n `mutation UpdateWorkerTask($taskId: String!, $status: KadaikodiWorkerTaskStatus, $notes: String) {\n kadaikodiUpdateWorkerTask(taskId: $taskId, status: $status, notes: $notes) { id status }\n }`,\n { taskId, status, notes },\n apiGatewayUrl\n );\n return result.kadaikodiUpdateWorkerTask;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'worker-tasks'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'worker-stats'] });\n },\n });\n};\n\nexport const useUpdateProviderWorker = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n return useMutation({\n mutationFn: async ({ id, metadata }: { id: string; metadata: Record<string, unknown> }) => {\n const result = await kadaikodiQuery<{ kadaikodiUpdateProviderWorker: { id: string } }>(\n `mutation UpdateProviderWorker($id: ID!, $metadata: JSON!) {\n kadaikodiUpdateProviderWorker(id: $id, metadata: $metadata) { id name metadata }\n }`,\n { id, metadata },\n apiGatewayUrl\n );\n return result.kadaikodiUpdateProviderWorker;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'provider-workers'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'worker-schedules'] });\n },\n });\n};\n\n// ============================================================================\n// Main Hook\n// ============================================================================\n\nexport const useKadaikodiApi = () => {\n const { currentUser } = useKadaikodi();\n const providers = useProviders();\n const orders = useOrders({ customerId: currentUser?.id });\n const dashboardStats = useDashboardStats();\n const investmentOpportunities = useInvestmentOpportunities();\n const investments = useInvestments(currentUser?.id || '');\n\n return useMemo(\n () => ({\n providers,\n orders,\n dashboardStats,\n investmentOpportunities,\n investments,\n }),\n [providers, orders, dashboardStats, investmentOpportunities, investments]\n );\n};\n"],"mappings":";;;;;;AA2BA,IAAM,IAAiB,OACrB,GACA,GACA,MACmB;CACnB,IAAM,IAAW,MAAM,EAAoB;EACzC,SAAS;EACT;EACA;EACA;EACA,gBAAgB;EACjB,CAAC;AAEF,KAAI,EAAS,QAAQ,OACnB,OAAU,MAAM,EAAS,OAAO,IAAI,WAAW,yBAAyB;AAG1E,KAAI,CAAC,EAAS,KACZ,OAAU,MAAM,wCAAwC;AAG1D,QAAO,EAAS;GAgMZ,KAAkB,OAA+D;CACrF,SAAS,GAAK,WAAW;CACzB,aAAa;EACX,KAAK,GAAK,aAAa,OAAO,GAAK,YAAY;EAC/C,KAAK,GAAK,aAAa,OAAO,GAAK,aAAa;EACjD;CACF,GAEK,KAAqB,OAAuE;CAChG,QAAQ,GAAK,UAAU;CACvB,MAAM,GAAK,QAAQ;CACnB,MAAM,GAAK,QAAQ;CACnB,SAAS,GAAK,WAAW;CACzB,UAAU,GAAK;CAChB,GAEK,KAAe,OAA8B;CACjD,IAAI,EAAE;CACN,MAAM,EAAE;CACR,UAAU,EAAE;CACZ,SAAS,EAAE;CACX,QAAQ,EAAE;CACV,cAAc,EAAE;CAChB,QAAQ,EAAE,WAAW,YAAY,EAAE,WAAW;CAC9C,YAAY,EAAE,WAAW;CACzB,UAAU,EAAe,EAAE,SAAS;CACpC,mBAAmB,EAAE;CACrB,cAAc,EAAE;CAChB,eAAe,EAAE;CACjB,WAAW,EAAE;CAEd,GAEK,KAAY,OAA4B;CAC5C,IAAI,EAAE;CACN,QAAQ,EAAE;CACV,UAAU,EAAE,UAAU,QAAQ;CAE9B,OAAO,EAAE,MAAM,KAAK,OAAkB;EACpC,IAAI,EAAE;EACN,MAAM,EAAE;EACR,UAAU,EAAE;EACZ,OAAO,EAAE;EACT,gBAAgB,EAAE,kBAAkB,KAAA;EACrC,EAAE;CACH,OAAO,EAAE;CACT,UAAU,EAAE;CACZ,OAAO,EAAE;CACT,aAAa,EAAE;CACf,UAAU,EAAE;CACZ,QAAQ,EAAE,OAAO,aAAa;CAC9B,WAAW,EAAE;CACb,iBAAiB,EAAkB,EAAE,gBAAgB;CACrD,eAAe,EAAE,iBAAiB;CAClC,eAAe,EAAE,cAAc,aAAa;CAC5C,UAAU,EAAE,YAAY,EAAE;CAC3B,GAEK,KAA4B,OAAwD;CACxF,IAAI,EAAE;CACN,QAAQ,EAAE;CACV,UAAU,EAAE,UAAU,QAAQ;CAC9B,eAAe;CACf,cAAc,EAAE;CAChB,cAAc,EAAE;CAChB,mBAAmB,EAAE;CACrB,iBAAiB,EAAE;CACnB,kBAAkB,EAAE;CACpB,WAAW,EAAE,UAAU,aAAa;CACpC,aAAa,EAAE,eAAe;CAC9B,cAAc;CACd,sBAAsB,EAAE;CACxB,WAAW,EAAE;CACb,WAAW,EAAE;CACb,QAAQ,EAAE,OAAO,aAAa;CAC9B,WAAW,EAAE;CACb,WAAW,EAAE,aAAa;CAC3B,GAEK,KAAiB,OAAkC;CACvD,IAAI,EAAE;CACN,eAAe,EAAE;CACjB,UAAU,EAAE,aAAa,UAAU,QAAQ;CAC3C,gBAAgB,EAAE;CAClB,cAAc,EAAE;CAChB,SAAS,EAAE;CACX,mBAAmB,EAAE;CACrB,gBAAgB,EAAE;CAClB,QAAQ,EAAE,OAAO,aAAa;CAC/B,GAEK,KAAiB,OAAkC;CACvD,IAAI,EAAE;CACN,SAAS,EAAE,WAAW;CACtB,QAAQ,EAAE,cAAc;CACxB,UAAU,EAAE,UAAU,QAAQ;CAC9B,MAAM,EAAE,KAAK,aAAa;CAC1B,aAAa,EAAE,eAAe;CAC9B,UAAU,EAAE,SAAS,aAAa;CAClC,QAAQ,EAAE,OAAO,aAAa;CAC9B,YAAY,EAAE,cAAc;CAC5B,OAAO,EAAE,SAAS;CAClB,aAAa,EAAE,eAAe,KAAA;CAC9B,cAAc,EAAE,gBAAgB;CAChC,eAAe,EAAE,iBAAiB;CAClC,iBAAiB,EAAE,OAAO,kBACtB,EAAkB,EAAE,MAAM,gBAAgB,GAC1C,KAAA;CACJ,UAAU,EAAE,YAAY;CACxB,UAAU,EAAE,YAAY,KAAA;CACxB,OAAO,EAAE,SAAS,KAAA;CACnB,GAEK,KAAqB,OAA0C;CACnE,IAAI,EAAE;CACN,MAAM,EAAE;CACR,WAAW,EAAE;CACb,SAAS,EAAE,WAAW;CACtB,QAAQ,EAAE;CACV,UAAU,EAAE,UAAU,QAAQ;CAC9B,QAAQ,EAAE,OAAO,aAAa;CAC9B,gBAAgB,EAAE;CAClB,eAAe,EAAE;CAClB,GAMK,IAAkB,kIAIlB,IAAe,oRAMf,IAAkB,iJAQX,KAAgB,MAAmB;CAC9C,IAAM,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAS;EACd,UAAU;GAAC;GAAa;GAAa;GAAM;EAC3C,SAAS,aACQ,MAAM,EACnB;;cAEM,EAAgB;;YAGtB,EAAE,QAAQ,IAAQ,EAAE,UAAO,GAAG,KAAA,GAAW,EACzC,EACD,EACa,8BAA8B,IAAI,EAAY;EAE/D,CAAC;GAGS,KAAe,MAAgB;CAC1C,IAAM,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAS;EACd,UAAU;GAAC;GAAa;GAAY;GAAG;EACvC,SAAS,YAAY;GACnB,IAAM,IAAS,MAAM,EACnB;;cAEM,EAAgB;;YAGtB,EAAE,OAAI,EACN,EACD;AACD,UAAO,EAAO,2BAA2B,EAAY,EAAO,yBAAyB,GAAG;;EAE1F,SAAS,EAAQ;EAClB,CAAC;GAOS,KAAgB,MAAwB;CACnD,IAAM,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAS;EACd,UAAU;GAAC;GAAa;GAAa;GAAW;EAChD,SAAS,aACQ,MAAM,EACnB;;cAEM,EAAgB;;YAGtB,EAAE,eAAY,EACd,EACD,EACa;EAEhB,SAAS,EAAQ;EAClB,CAAC;GA2BS,KAAa,IAAsD,EAAE,KAAK;CACrF,IAAM,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAS;EACd,UAAU;GAAC;GAAa;GAAU,EAAM;GAAY,EAAM;GAAW;EACrE,SAAS,aACQ,MAAM,EACnB;;cAEM,EAAa;;YAGnB,GACA,EACD,EACa,oBAAoB,IAAI,EAAS;EAElD,CAAC;GAGS,KAAY,MAAgB;CACvC,IAAM,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAS;EACd,UAAU;GAAC;GAAa;GAAS;GAAG;EACpC,SAAS,YAAY;GACnB,IAAM,IAAS,MAAM,EACnB;;cAEM,EAAa;;YAGnB,EAAE,OAAI,EACN,EACD;AACD,UAAO,EAAO,iBAAiB,EAAS,EAAO,eAAe,GAAG;;EAEnE,SAAS,EAAQ;EAClB,CAAC;GAOS,UAA0B;CACrC,IAAM,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAS;EACd,UAAU,CAAC,aAAa,kBAAkB;EAC1C,SAAS,aACQ,MAAM,EACnB,yIACA,EAAE,EACF,EACD,EACa;EAEjB,CAAC;GAGS,UAA0B;CACrC,IAAM,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAS;EACd,UAAU,CAAC,aAAa,kBAAkB;EAC1C,SAAS,aACQ,MAAM,EACnB,uIACA,EAAE,EACF,EACD,EACa;EAEjB,CAAC;GAOS,UAAmC;CAC9C,IAAM,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAS;EACd,UAAU,CAAC,aAAa,2BAA2B;EACnD,SAAS,aAKQ,MAAM,EAGnB,sXAMA,EAAE,YAAY,EAAE,OAAO,KAAK,EAAE,EAC9B,EACD,EACa,qCAAqC,IAAI,EAAyB;EAEnF,CAAC;GAGS,KAAkB,MAAuB;CACpD,IAAM,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAS;EACd,UAAU;GAAC;GAAa;GAAe;GAAW;EAClD,SAAS,aAGQ,MAAM,EACnB,qPAMA,EAAE,EACF,EACD,EACa,yBAAyB,IAAI,EAAc;EAE3D,SAAS,EAAQ;EAClB,CAAC;GAOS,KAAsB,MAAwB;CACzD,IAAM,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAS;EACd,UAAU;GAAC;GAAa;GAAoB;GAAW;EACvD,SAAS,aACQ,MAAM,EAGnB,0MAKA,EAAE,eAAY,EACd,EACD,EACa;EAEhB,SAAS,EAAQ;EAClB,CAAC;GAOS,KAAkB,MAAqB;CAClD,IAAM,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAS;EACd,UAAU;GAAC;GAAa;GAAgB;GAAS;EACjD,SAAS,aAGQ,MAAM,EACnB,2WAOA,EAAE,YAAY,EAAE,OAAO,KAAK,EAAE,EAC9B,EACD,EACa,qBAAqB,IAAI,EAAc;EAEvD,SAAS,EAAQ;EAClB,CAAC;GAGS,KAAkB,MAAqB;CAClD,IAAM,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAS;EACd,UAAU;GAAC;GAAa;GAAgB;GAAS;EACjD,SAAS,aAGQ,MAAM,EACnB,kLAKA,EAAE,EACF,EACD,EACa;EAEhB,SAAS,EAAQ;EAClB,CAAC;GAGS,KAAsB,MAAqB;CACtD,IAAM,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAS;EACd,UAAU;GAAC;GAAa;GAAoB;GAAS;EACrD,SAAS,aAGQ,MAAM,EACnB,kNAMA,EAAE,EACF,EACD,EACa,6BAA6B,IAAI,EAAkB;EAEnE,SAAS,EAAQ;EAClB,CAAC;GAOE,IAAiB,uGAIjB,IAAwB,wCAIjB,UAAuB;CAClC,IAAM,EAAE,kBAAe,mBAAgB,GAAc;AACrD,QAAO,EAAS;EACd,UAAU,CAAC,aAAa,eAAe;EACvC,SAAS,aAGQ,MAAM,EACnB;;cAEM,EAAe;;YAGrB,EAAE,YAAY,EAAE,OAAO,KAAK,EAAE,EAC9B,EACD,EACa;EAEhB,SAAS,EAAQ,GAAa;EAC/B,CAAC;GAGS,UAAsB;CACjC,IAAM,IAAc,GAAgB,EAC9B,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAY;EACjB,YAAY,OAAO,OACF,MAAM,EACnB;iDACyC,EAAe;YAExD,EAAE,UAAO,EACT,EACD,EACa;EAEhB,iBAAiB;AACV,KAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,eAAe,EAAE,CAAC;;EAElF,CAAC;GAGS,UAAyB;CACpC,IAAM,IAAc,GAAgB,EAC9B,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAY;EACjB,YAAY,OAAO,EAAE,OAAI,gBACR,MAAM,EACnB;6DACqD,EAAe;YAEpE;GAAE;GAAI;GAAO,EACb,EACD,EACa;EAEhB,iBAAiB;AACV,KAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,eAAe,EAAE,CAAC;;EAElF,CAAC;GAGS,UAAyB;CACpC,IAAM,IAAc,GAAgB,EAC9B,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAY;EACjB,YAAY,OAAO,OACF,MAAM,EACnB,wEACA,EAAE,OAAI,EACN,EACD,EACa;EAEhB,iBAAiB;AACV,KAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,eAAe,EAAE,CAAC;;EAElF,CAAC;GAGS,UAA6B;CACxC,IAAM,IAAc,GAAgB,EAC9B,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAY;EACjB,YAAY,OAAO,OACF,MAAM,EAGnB,gFAAgF,EAAe,OAC/F,EAAE,OAAI,EACN,EACD,EACa;EAEhB,iBAAiB;AACV,KAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,eAAe,EAAE,CAAC;;EAElF,CAAC;GAGS,WAA4B;CACvC,IAAM,EAAE,kBAAe,mBAAgB,GAAc;AACrD,QAAO,EAAS;EACd,UAAU,CAAC,aAAa,qBAAqB;EAC7C,SAAS,aAEQ,MAAM,EAGnB;;cAEM,EAAsB;;YAG5B,EAAE,YAAY,EAAE,OAAO,KAAK,EAAE,EAC9B,EACD,EACa;EAEhB,SAAS,EAAQ,GAAa;EAC/B,CAAC;GAGS,UAA4B;CACvC,IAAM,IAAc,GAAgB,EAC9B,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAY;EACjB,YAAY,OAAO,OACF,MAAM,EAGnB;uDAC+C,EAAsB;YAErE,EAAE,UAAO,EACT,EACD,EACa;EAEhB,iBAAiB;AACV,KAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,qBAAqB,EAAE,CAAC;;EAExF,CAAC;GAGS,UAA+B;CAC1C,IAAM,IAAc,GAAgB,EAC9B,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAY;EACjB,YAAY,OAAO,OACF,MAAM,EACnB,oFACA,EAAE,OAAI,EACN,EACD,EACa;EAEhB,iBAAiB;AACV,KAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,qBAAqB,EAAE,CAAC;;EAExF,CAAC;GAGS,UAAmC;CAC9C,IAAM,IAAc,GAAgB,EAC9B,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAY;EACjB,YAAY,OAAO,OACF,MAAM,EAGnB;wDACgD,EAAsB;YAEtE,EAAE,OAAI,EACN,EACD,EACa;EAEhB,iBAAiB;AACV,KAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,qBAAqB,EAAE,CAAC;;EAExF,CAAC;GAGS,UAAiC;CAC5C,IAAM,EAAE,kBAAe,mBAAgB,GAAc;AACrD,QAAO,EAAS;EACd,UAAU,CAAC,aAAa,2BAA2B;EACnD,SAAS,aAEQ,MAAM,EACnB,kEACA,EAAE,EACF,EACD,EACa;EAEhB,SAAS,EAAQ,GAAa;EAC/B,CAAC;GAGS,UAA0B;CACrC,IAAM,IAAc,GAAgB,EAC9B,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAY;EACjB,YAAY,OAAO,OACF,MAAM,EACnB,sGACA,EAAE,eAAY,EACd,EACD,EACa;EAGhB,UAAU,OAAO,MAAuB;AACtC,SAAM,EAAY,cAAc,EAAE,UAAU,CAAC,aAAa,2BAA2B,EAAE,CAAC;GACxF,IAAM,IAAW,EAAY,aAAuB,CAClD,aACA,2BACD,CAAC;AAIF,UAHA,EAAY,aAAuB,CAAC,aAAa,2BAA2B,GAAG,IAAM,EAAE,KACrF,EAAI,SAAS,EAAW,GAAG,EAAI,QAAQ,MAAO,MAAO,EAAW,GAAG,CAAC,GAAG,GAAK,EAAW,CACxF,EACM,EAAE,aAAU;;EAErB,UAAU,GAAM,GAAa,MAAY;AACvC,GAAI,GAAS,YACX,EAAY,aAAa,CAAC,aAAa,2BAA2B,EAAE,EAAQ,SAAS;;EAGzF,iBAAiB;AACV,KAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,2BAA2B,EAAE,CAAC;;EAE9F,CAAC;GAOS,KAAc,MAAuB;CAChD,IAAM,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAS;EACd,UAAU;GAAC;GAAa;GAAW;GAAW;EAC9C,SAAS,aACQ,MAAM,EACnB,6MAKA,EAAE,eAAY,EACd,EACD,EACa;EAEhB,SAAS,EAAQ;EAClB,CAAC;GAOS,UAAsB;CACjC,IAAM,IAAc,GAAgB,EAC9B,EAAE,qBAAkB,GAAc;AAExC,QAAO,EAAY;EACjB,YAAY,OAAO,OACF,MAAM,EASnB,uLAKA,EAAE,UAAO,EACT,EACD,EACa;EAEhB,iBAAiB;AAEV,GADA,EAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,SAAS,EAAE,CAAC,EACpE,EAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,kBAAkB,EAAE,CAAC;;EAErF,CAAC;GAGS,UAA6B;CACxC,IAAM,IAAc,GAAgB,EAC9B,EAAE,qBAAkB,GAAc;AAExC,QAAO,EAAY;EACjB,YAAY,OAAO,EAAE,OAAI,iBACR,MAAM,EAGnB,2LAKA;GAAE;GAAI;GAAQ,EACd,EACD,EACa;EAEhB,iBAAiB;AAGV,GAFA,EAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,SAAS,EAAE,CAAC,EACpE,EAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,QAAQ,EAAE,CAAC,EACnE,EAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,kBAAkB,EAAE,CAAC;;EAErF,CAAC;GAGS,UAA0B;CACrC,IAAM,IAAc,GAAgB,EAC9B,EAAE,qBAAkB,GAAc;AAExC,QAAO,EAAY;EACjB,YAAY,OAAO,OACF,MAAM,EACnB;;cAEM,EAAgB;;YAGtB,EAAE,UAAO,EACT,EACD,EACa;EAEhB,iBAAiB;AACV,KAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,YAAY,EAAE,CAAC;;EAE/E,CAAC;GAGS,UAA0B;CACrC,IAAM,IAAc,GAAgB,EAC9B,EAAE,qBAAkB,GAAc;AAExC,QAAO,EAAY;EACjB,YAAY,OAAO,EAAE,OAAI,gBACR,MAAM,EACnB;;cAEM,EAAgB;;YAGtB;GAAE;GAAI;GAAO,EACb,EACD,EACa;EAEhB,iBAAiB;AAEV,GADA,EAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,YAAY,EAAE,CAAC,EACvE,EAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,WAAW,EAAE,CAAC;;EAE9E,CAAC;GAGS,UAAkB;CAC7B,IAAM,IAAc,GAAgB,EAC9B,EAAE,qBAAkB,GAAc;AAExC,QAAO,EAAY;EACjB,YAAY,OAAO,OACF,MAAM,EASnB,8KAKA,EAAE,UAAO,EACT,EACD,EACa;EAEhB,iBAAiB;AAEV,GADA,EAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,cAAc,EAAE,CAAC,EACzE,EAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,2BAA2B,EAAE,CAAC;;EAE9F,CAAC;GAGS,UAA0B;CACrC,IAAM,IAAc,GAAgB,EAC9B,EAAE,qBAAkB,GAAc;AAExC,QAAO,EAAY;EACjB,YAAY,OAAO,OACF,MAAM,EAGnB,wNAKA,EAAE,UAAO,EACT,EACD,EACa;EAEhB,iBAAiB;AAEV,GADA,EAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,YAAY,EAAE,CAAC,EACvE,EAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,kBAAkB,EAAE,CAAC;;EAErF,CAAC;GAGS,UAAgC;CAC3C,IAAM,IAAc,GAAgB,EAC9B,EAAE,qBAAkB,GAAc;AAExC,QAAO,EAAY;EACjB,YAAY,OAAO,OACF,MAAM,EAGnB,gOAKA,EAAE,UAAO,EACT,EACD,EACa;EAEhB,iBAAiB;AACV,KAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,mBAAmB,EAAE,CAAC;;EAEtF,CAAC;GA0BS,UAAkC;CAC7C,IAAM,IAAc,GAAgB,EAC9B,EAAE,qBAAkB,GAAc;AAExC,QAAO,EAAY;EACjB,YAAY,OAAO,EAAE,WAAQ,iBACZ,MAAM,EAGnB,oNAKA;GAAE;GAAQ;GAAQ,EAClB,EACD,EACa;EAEhB,iBAAiB;AAEV,GADA,EAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,eAAe,EAAE,CAAC,EAC1E,EAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,eAAe,EAAE,CAAC;;EAElF,CAAC;GAGS,UAA4B;CACvC,IAAM,IAAc,GAAgB,EAC9B,EAAE,qBAAkB,GAAc;AAExC,QAAO,EAAY;EACjB,YAAY,OAAO,EACjB,aACA,iBAKe,MAAM,EAGnB,+MAKA;GAAE;GAAU;GAAQ,EACpB,EACD,EACa;EAEhB,iBAAiB;AACV,KAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,mBAAmB,EAAE,CAAC;;EAEtF,CAAC;GAGS,UAAuC;CAClD,IAAM,IAAc,GAAgB,EAC9B,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAY;EACjB,YAAY,OAAO,OAUF,MAAM,EAGnB,+LAGA,EAAE,UAAO,EACT,EACD,EACa;EAEhB,iBAAiB;AACV,KAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,2BAA2B,EAAE,CAAC;;EAE9F,CAAC;GAGS,WAAwB;CACnC,IAAM,IAAc,GAAgB,EAC9B,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAY;EACjB,YAAY,OAAO,OAOF,MAAM,EAGnB,0JAGA,EAAE,UAAO,EACT,EACD,EACa;EAEhB,iBAAiB;AAEV,GADA,EAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,UAAU,EAAE,CAAC,EACrE,EAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,YAAY,EAAE,CAAC;;EAE/E,CAAC;GAyBS,WAA0B;CACrC,IAAM,IAAc,GAAgB,EAC9B,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAY;EACjB,YAAY,OAAO,EAAE,OAAI,gBACR,MAAM,EAGnB,sQAKA;GAAE;GAAI;GAAO,EACb,EACD,EACa;EAEhB,iBAAiB;AAGV,GAFA,EAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,YAAY,EAAE,CAAC,EACvE,EAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,WAAW,EAAE,CAAC,EACtE,EAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,kBAAkB,EAAE,CAAC;;EAErF,CAAC;GAGS,WAA0B;CACrC,IAAM,IAAc,GAAgB,EAC9B,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAY;EACjB,YAAY,OAAO,OACF,MAAM,EACnB,0EACA,EAAE,OAAI,EACN,EACD,EACa;EAEhB,iBAAiB;AACV,KAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,YAAY,EAAE,CAAC;;EAE/E,CAAC;GAGS,WAA4B;CACvC,IAAM,IAAc,GAAgB,EAC9B,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAY;EACjB,YAAY,OAAO,EACjB,WACA,WACA,gBAMe,MAAM,EAGnB,oNAGA;GAAE;GAAQ;GAAQ;GAAO,EACzB,EACD,EACa;EAEhB,iBAAiB;AAEV,GADA,EAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,eAAe,EAAE,CAAC,EAC1E,EAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,eAAe,EAAE,CAAC;;EAElF,CAAC;GAGS,WAAgC;CAC3C,IAAM,IAAc,GAAgB,EAC9B,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAY;EACjB,YAAY,OAAO,EAAE,OAAI,mBACR,MAAM,EACnB,sKAGA;GAAE;GAAI;GAAU,EAChB,EACD,EACa;EAEhB,iBAAiB;AAEV,GADA,EAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,mBAAmB,EAAE,CAAC,EAC9E,EAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,mBAAmB,EAAE,CAAC;;EAEtF,CAAC;GAOS,WAAwB;CACnC,IAAM,EAAE,mBAAgB,GAAc,EAChC,IAAY,GAAc,EAC1B,IAAS,EAAU,EAAE,YAAY,GAAa,IAAI,CAAC,EACnD,IAAiB,GAAmB,EACpC,IAA0B,GAA4B,EACtD,IAAc,EAAe,GAAa,MAAM,GAAG;AAEzD,QAAO,SACE;EACL;EACA;EACA;EACA;EACA;EACD,GACD;EAAC;EAAW;EAAQ;EAAgB;EAAyB;EAAY,CAC1E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CheckoutPage.d.ts","sourceRoot":"","sources":["../../../../src/kadaikodi/pages/customer/CheckoutPage.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"CheckoutPage.d.ts","sourceRoot":"","sources":["../../../../src/kadaikodi/pages/customer/CheckoutPage.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAmEH,wBAAgB,YAAY,gCAimB3B"}
|