@devlider001/washlab-backend 1.0.4 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/convex/_generated/api.d.ts +2 -0
  2. package/convex/audit.d.ts +39 -0
  3. package/convex/notifications.d.ts +170 -0
  4. package/convex/schema.d.ts +51 -0
  5. package/dist/convex/admin.d.ts +377 -0
  6. package/dist/convex/admin.d.ts.map +1 -0
  7. package/dist/convex/admin.js +959 -0
  8. package/dist/convex/admin.js.map +1 -0
  9. package/dist/convex/analytics.d.ts +87 -0
  10. package/dist/convex/analytics.d.ts.map +1 -0
  11. package/dist/convex/analytics.js +361 -0
  12. package/dist/convex/analytics.js.map +1 -0
  13. package/dist/convex/attendants.d.ts +140 -0
  14. package/dist/convex/attendants.d.ts.map +1 -0
  15. package/dist/convex/attendants.js +337 -0
  16. package/dist/convex/attendants.js.map +1 -0
  17. package/dist/convex/audit.d.ts +158 -0
  18. package/dist/convex/audit.d.ts.map +1 -0
  19. package/dist/convex/audit.js +184 -0
  20. package/dist/convex/audit.js.map +1 -0
  21. package/dist/convex/clerk.d.ts +53 -0
  22. package/dist/convex/clerk.d.ts.map +1 -0
  23. package/dist/convex/clerk.js +316 -0
  24. package/dist/convex/clerk.js.map +1 -0
  25. package/dist/convex/customers.d.ts +224 -0
  26. package/dist/convex/customers.d.ts.map +1 -0
  27. package/dist/convex/customers.js +504 -0
  28. package/dist/convex/customers.js.map +1 -0
  29. package/dist/convex/http.d.ts +3 -0
  30. package/dist/convex/http.d.ts.map +1 -0
  31. package/dist/convex/http.js +115 -0
  32. package/dist/convex/http.js.map +1 -0
  33. package/dist/convex/lib/audit.d.ts +36 -0
  34. package/dist/convex/lib/audit.d.ts.map +1 -0
  35. package/dist/convex/lib/audit.js +59 -0
  36. package/dist/convex/lib/audit.js.map +1 -0
  37. package/dist/convex/lib/auth.d.ts +96 -0
  38. package/dist/convex/lib/auth.d.ts.map +1 -0
  39. package/dist/convex/lib/auth.js +94 -0
  40. package/dist/convex/lib/auth.js.map +1 -0
  41. package/dist/convex/lib/utils.d.ts +38 -0
  42. package/dist/convex/lib/utils.d.ts.map +1 -0
  43. package/dist/convex/lib/utils.js +71 -0
  44. package/dist/convex/lib/utils.js.map +1 -0
  45. package/dist/convex/loyalty.d.ts +82 -0
  46. package/dist/convex/loyalty.d.ts.map +1 -0
  47. package/dist/convex/loyalty.js +286 -0
  48. package/dist/convex/loyalty.js.map +1 -0
  49. package/dist/convex/orders.d.ts +326 -0
  50. package/dist/convex/orders.d.ts.map +1 -0
  51. package/dist/convex/orders.js +570 -0
  52. package/dist/convex/orders.js.map +1 -0
  53. package/dist/convex/payments.d.ts +134 -0
  54. package/dist/convex/payments.d.ts.map +1 -0
  55. package/dist/convex/payments.js +360 -0
  56. package/dist/convex/payments.js.map +1 -0
  57. package/dist/convex/resources.d.ts +119 -0
  58. package/dist/convex/resources.d.ts.map +1 -0
  59. package/dist/convex/resources.js +283 -0
  60. package/dist/convex/resources.js.map +1 -0
  61. package/dist/convex/schema.d.ts +450 -0
  62. package/dist/convex/schema.d.ts.map +1 -0
  63. package/dist/convex/schema.js +347 -0
  64. package/dist/convex/schema.js.map +1 -0
  65. package/dist/convex/vouchers.d.ts +187 -0
  66. package/dist/convex/vouchers.d.ts.map +1 -0
  67. package/dist/convex/vouchers.js +464 -0
  68. package/dist/convex/vouchers.js.map +1 -0
  69. package/dist/src/index.d.ts +9 -0
  70. package/dist/src/index.d.ts.map +1 -0
  71. package/dist/src/index.js +9 -0
  72. package/dist/src/index.js.map +1 -0
  73. package/package.json +3 -3
@@ -0,0 +1,450 @@
1
+ /**
2
+ * WashLab Database Schema
3
+ *
4
+ * This schema defines all database tables for the WashLab laundry management system.
5
+ * All authentication is handled by Clerk - clerkUserId fields link Clerk users to our data.
6
+ */
7
+ declare const _default: import("convex/server").SchemaDefinition<{
8
+ users: import("convex/server").TableDefinition<import("convex/values").VObject<{
9
+ email?: string | undefined;
10
+ clerkUserId?: string | undefined;
11
+ statusNote?: string | undefined;
12
+ statusChangedBy?: import("convex/values").GenericId<"admins"> | undefined;
13
+ statusChangedAt?: number | undefined;
14
+ lastLoginAt?: number | undefined;
15
+ preferredBranchId?: import("convex/values").GenericId<"branches"> | undefined;
16
+ phoneNumber: string;
17
+ name: string;
18
+ isRegistered: boolean;
19
+ isVerified: boolean;
20
+ status: "active" | "blocked" | "suspended" | "restricted";
21
+ createdAt: number;
22
+ isDeleted: boolean;
23
+ }, {
24
+ phoneNumber: import("convex/values").VString<string, "required">;
25
+ email: import("convex/values").VString<string | undefined, "optional">;
26
+ name: import("convex/values").VString<string, "required">;
27
+ clerkUserId: import("convex/values").VString<string | undefined, "optional">;
28
+ isRegistered: import("convex/values").VBoolean<boolean, "required">;
29
+ isVerified: import("convex/values").VBoolean<boolean, "required">;
30
+ status: import("convex/values").VUnion<"active" | "blocked" | "suspended" | "restricted", [import("convex/values").VLiteral<"active", "required">, import("convex/values").VLiteral<"blocked", "required">, import("convex/values").VLiteral<"suspended", "required">, import("convex/values").VLiteral<"restricted", "required">], "required", never>;
31
+ statusNote: import("convex/values").VString<string | undefined, "optional">;
32
+ statusChangedBy: import("convex/values").VId<import("convex/values").GenericId<"admins"> | undefined, "optional">;
33
+ statusChangedAt: import("convex/values").VFloat64<number | undefined, "optional">;
34
+ createdAt: import("convex/values").VFloat64<number, "required">;
35
+ lastLoginAt: import("convex/values").VFloat64<number | undefined, "optional">;
36
+ preferredBranchId: import("convex/values").VId<import("convex/values").GenericId<"branches"> | undefined, "optional">;
37
+ isDeleted: import("convex/values").VBoolean<boolean, "required">;
38
+ }, "required", "phoneNumber" | "email" | "name" | "clerkUserId" | "isRegistered" | "isVerified" | "status" | "statusNote" | "statusChangedBy" | "statusChangedAt" | "createdAt" | "lastLoginAt" | "preferredBranchId" | "isDeleted">, {
39
+ by_phone: ["phoneNumber", "_creationTime"];
40
+ by_email: ["email", "_creationTime"];
41
+ by_clerk_user: ["clerkUserId", "_creationTime"];
42
+ by_status: ["status", "_creationTime"];
43
+ }, {}, {}>;
44
+ attendants: import("convex/server").TableDefinition<import("convex/values").VObject<{
45
+ lastLoginAt?: number | undefined;
46
+ passcode?: string | undefined;
47
+ phoneNumber: string;
48
+ email: string;
49
+ name: string;
50
+ clerkUserId: string;
51
+ createdAt: number;
52
+ isDeleted: boolean;
53
+ branchId: import("convex/values").GenericId<"branches">;
54
+ isActive: boolean;
55
+ }, {
56
+ name: import("convex/values").VString<string, "required">;
57
+ email: import("convex/values").VString<string, "required">;
58
+ phoneNumber: import("convex/values").VString<string, "required">;
59
+ clerkUserId: import("convex/values").VString<string, "required">;
60
+ passcode: import("convex/values").VString<string | undefined, "optional">;
61
+ branchId: import("convex/values").VId<import("convex/values").GenericId<"branches">, "required">;
62
+ isActive: import("convex/values").VBoolean<boolean, "required">;
63
+ createdAt: import("convex/values").VFloat64<number, "required">;
64
+ lastLoginAt: import("convex/values").VFloat64<number | undefined, "optional">;
65
+ isDeleted: import("convex/values").VBoolean<boolean, "required">;
66
+ }, "required", "phoneNumber" | "email" | "name" | "clerkUserId" | "createdAt" | "lastLoginAt" | "isDeleted" | "passcode" | "branchId" | "isActive">, {
67
+ by_branch: ["branchId", "_creationTime"];
68
+ by_email: ["email", "_creationTime"];
69
+ by_phone: ["phoneNumber", "_creationTime"];
70
+ by_clerk_user: ["clerkUserId", "_creationTime"];
71
+ }, {}, {}>;
72
+ admins: import("convex/server").TableDefinition<import("convex/values").VObject<{
73
+ lastLoginAt?: number | undefined;
74
+ email: string;
75
+ name: string;
76
+ clerkUserId: string;
77
+ createdAt: number;
78
+ isDeleted: boolean;
79
+ role: "super_admin" | "admin";
80
+ }, {
81
+ name: import("convex/values").VString<string, "required">;
82
+ email: import("convex/values").VString<string, "required">;
83
+ clerkUserId: import("convex/values").VString<string, "required">;
84
+ role: import("convex/values").VUnion<"super_admin" | "admin", [import("convex/values").VLiteral<"super_admin", "required">, import("convex/values").VLiteral<"admin", "required">], "required", never>;
85
+ createdAt: import("convex/values").VFloat64<number, "required">;
86
+ lastLoginAt: import("convex/values").VFloat64<number | undefined, "optional">;
87
+ isDeleted: import("convex/values").VBoolean<boolean, "required">;
88
+ }, "required", "email" | "name" | "clerkUserId" | "createdAt" | "lastLoginAt" | "isDeleted" | "role">, {
89
+ by_email: ["email", "_creationTime"];
90
+ by_clerk_user: ["clerkUserId", "_creationTime"];
91
+ }, {}, {}>;
92
+ branches: import("convex/server").TableDefinition<import("convex/values").VObject<{
93
+ email?: string | undefined;
94
+ phoneNumber: string;
95
+ name: string;
96
+ createdAt: number;
97
+ isDeleted: boolean;
98
+ isActive: boolean;
99
+ code: string;
100
+ address: string;
101
+ city: string;
102
+ country: string;
103
+ pricingPerKg: number;
104
+ deliveryFee: number;
105
+ createdBy: import("convex/values").GenericId<"admins">;
106
+ }, {
107
+ name: import("convex/values").VString<string, "required">;
108
+ code: import("convex/values").VString<string, "required">;
109
+ address: import("convex/values").VString<string, "required">;
110
+ city: import("convex/values").VString<string, "required">;
111
+ country: import("convex/values").VString<string, "required">;
112
+ phoneNumber: import("convex/values").VString<string, "required">;
113
+ email: import("convex/values").VString<string | undefined, "optional">;
114
+ pricingPerKg: import("convex/values").VFloat64<number, "required">;
115
+ deliveryFee: import("convex/values").VFloat64<number, "required">;
116
+ isActive: import("convex/values").VBoolean<boolean, "required">;
117
+ createdAt: import("convex/values").VFloat64<number, "required">;
118
+ createdBy: import("convex/values").VId<import("convex/values").GenericId<"admins">, "required">;
119
+ isDeleted: import("convex/values").VBoolean<boolean, "required">;
120
+ }, "required", "phoneNumber" | "email" | "name" | "createdAt" | "isDeleted" | "isActive" | "code" | "address" | "city" | "country" | "pricingPerKg" | "deliveryFee" | "createdBy">, {
121
+ by_city: ["city", "_creationTime"];
122
+ by_active: ["isActive", "_creationTime"];
123
+ by_code: ["code", "_creationTime"];
124
+ }, {}, {}>;
125
+ orders: import("convex/server").TableDefinition<import("convex/values").VObject<{
126
+ createdBy?: import("convex/values").GenericId<"attendants"> | undefined;
127
+ estimatedWeight?: number | undefined;
128
+ actualWeight?: number | undefined;
129
+ itemCount?: number | undefined;
130
+ estimatedLoads?: number | undefined;
131
+ whitesSeparate?: boolean | undefined;
132
+ bagCardNumber?: string | undefined;
133
+ notes?: string | undefined;
134
+ deliveryAddress?: string | undefined;
135
+ deliveryPhoneNumber?: string | undefined;
136
+ deliveryHall?: string | undefined;
137
+ deliveryRoom?: string | undefined;
138
+ paymentMethod?: "mobile_money" | "card" | "cash" | undefined;
139
+ paymentId?: import("convex/values").GenericId<"payments"> | undefined;
140
+ fulfilledBy?: import("convex/values").GenericId<"attendants"> | undefined;
141
+ status: "pending" | "in_progress" | "ready_for_pickup" | "delivered" | "completed" | "cancelled";
142
+ createdAt: number;
143
+ isDeleted: boolean;
144
+ branchId: import("convex/values").GenericId<"branches">;
145
+ deliveryFee: number;
146
+ customerId: import("convex/values").GenericId<"users">;
147
+ customerPhoneNumber: string;
148
+ orderNumber: string;
149
+ orderType: "walk_in" | "online";
150
+ serviceType: "wash_only" | "wash_and_dry" | "dry_only";
151
+ isDelivery: boolean;
152
+ basePrice: number;
153
+ totalPrice: number;
154
+ finalPrice: number;
155
+ paymentStatus: "pending" | "paid" | "failed" | "refunded";
156
+ updatedAt: number;
157
+ statusHistory: {
158
+ notes?: string | undefined;
159
+ status: string;
160
+ changedAt: number;
161
+ changedBy: import("convex/values").GenericId<"attendants">;
162
+ }[];
163
+ }, {
164
+ customerId: import("convex/values").VId<import("convex/values").GenericId<"users">, "required">;
165
+ customerPhoneNumber: import("convex/values").VString<string, "required">;
166
+ branchId: import("convex/values").VId<import("convex/values").GenericId<"branches">, "required">;
167
+ orderNumber: import("convex/values").VString<string, "required">;
168
+ orderType: import("convex/values").VUnion<"walk_in" | "online", [import("convex/values").VLiteral<"walk_in", "required">, import("convex/values").VLiteral<"online", "required">], "required", never>;
169
+ serviceType: import("convex/values").VUnion<"wash_only" | "wash_and_dry" | "dry_only", [import("convex/values").VLiteral<"wash_only", "required">, import("convex/values").VLiteral<"wash_and_dry", "required">, import("convex/values").VLiteral<"dry_only", "required">], "required", never>;
170
+ estimatedWeight: import("convex/values").VFloat64<number | undefined, "optional">;
171
+ actualWeight: import("convex/values").VFloat64<number | undefined, "optional">;
172
+ itemCount: import("convex/values").VFloat64<number | undefined, "optional">;
173
+ estimatedLoads: import("convex/values").VFloat64<number | undefined, "optional">;
174
+ whitesSeparate: import("convex/values").VBoolean<boolean | undefined, "optional">;
175
+ bagCardNumber: import("convex/values").VString<string | undefined, "optional">;
176
+ notes: import("convex/values").VString<string | undefined, "optional">;
177
+ isDelivery: import("convex/values").VBoolean<boolean, "required">;
178
+ deliveryAddress: import("convex/values").VString<string | undefined, "optional">;
179
+ deliveryPhoneNumber: import("convex/values").VString<string | undefined, "optional">;
180
+ deliveryHall: import("convex/values").VString<string | undefined, "optional">;
181
+ deliveryRoom: import("convex/values").VString<string | undefined, "optional">;
182
+ basePrice: import("convex/values").VFloat64<number, "required">;
183
+ deliveryFee: import("convex/values").VFloat64<number, "required">;
184
+ totalPrice: import("convex/values").VFloat64<number, "required">;
185
+ finalPrice: import("convex/values").VFloat64<number, "required">;
186
+ status: import("convex/values").VUnion<"pending" | "in_progress" | "ready_for_pickup" | "delivered" | "completed" | "cancelled", [import("convex/values").VLiteral<"pending", "required">, import("convex/values").VLiteral<"in_progress", "required">, import("convex/values").VLiteral<"ready_for_pickup", "required">, import("convex/values").VLiteral<"delivered", "required">, import("convex/values").VLiteral<"completed", "required">, import("convex/values").VLiteral<"cancelled", "required">], "required", never>;
187
+ paymentStatus: import("convex/values").VUnion<"pending" | "paid" | "failed" | "refunded", [import("convex/values").VLiteral<"pending", "required">, import("convex/values").VLiteral<"paid", "required">, import("convex/values").VLiteral<"failed", "required">, import("convex/values").VLiteral<"refunded", "required">], "required", never>;
188
+ paymentMethod: import("convex/values").VUnion<"mobile_money" | "card" | "cash" | undefined, [import("convex/values").VLiteral<"mobile_money", "required">, import("convex/values").VLiteral<"card", "required">, import("convex/values").VLiteral<"cash", "required">], "optional", never>;
189
+ paymentId: import("convex/values").VId<import("convex/values").GenericId<"payments"> | undefined, "optional">;
190
+ createdAt: import("convex/values").VFloat64<number, "required">;
191
+ updatedAt: import("convex/values").VFloat64<number, "required">;
192
+ createdBy: import("convex/values").VId<import("convex/values").GenericId<"attendants"> | undefined, "optional">;
193
+ fulfilledBy: import("convex/values").VId<import("convex/values").GenericId<"attendants"> | undefined, "optional">;
194
+ statusHistory: import("convex/values").VArray<{
195
+ notes?: string | undefined;
196
+ status: string;
197
+ changedAt: number;
198
+ changedBy: import("convex/values").GenericId<"attendants">;
199
+ }[], import("convex/values").VObject<{
200
+ notes?: string | undefined;
201
+ status: string;
202
+ changedAt: number;
203
+ changedBy: import("convex/values").GenericId<"attendants">;
204
+ }, {
205
+ status: import("convex/values").VString<string, "required">;
206
+ changedAt: import("convex/values").VFloat64<number, "required">;
207
+ changedBy: import("convex/values").VId<import("convex/values").GenericId<"attendants">, "required">;
208
+ notes: import("convex/values").VString<string | undefined, "optional">;
209
+ }, "required", "status" | "notes" | "changedAt" | "changedBy">, "required">;
210
+ isDeleted: import("convex/values").VBoolean<boolean, "required">;
211
+ }, "required", "status" | "createdAt" | "isDeleted" | "branchId" | "deliveryFee" | "createdBy" | "customerId" | "customerPhoneNumber" | "orderNumber" | "orderType" | "serviceType" | "estimatedWeight" | "actualWeight" | "itemCount" | "estimatedLoads" | "whitesSeparate" | "bagCardNumber" | "notes" | "isDelivery" | "deliveryAddress" | "deliveryPhoneNumber" | "deliveryHall" | "deliveryRoom" | "basePrice" | "totalPrice" | "finalPrice" | "paymentStatus" | "paymentMethod" | "paymentId" | "updatedAt" | "fulfilledBy" | "statusHistory">, {
212
+ by_customer: ["customerId", "_creationTime"];
213
+ by_branch: ["branchId", "_creationTime"];
214
+ by_status: ["status", "_creationTime"];
215
+ by_phone: ["customerPhoneNumber", "_creationTime"];
216
+ by_order_number: ["orderNumber", "_creationTime"];
217
+ by_created: ["createdAt", "_creationTime"];
218
+ by_fulfilled_by: ["fulfilledBy", "_creationTime"];
219
+ }, {}, {}>;
220
+ payments: import("convex/server").TableDefinition<import("convex/values").VObject<{
221
+ gatewayTransactionId?: string | undefined;
222
+ gatewayResponse?: string | undefined;
223
+ completedAt?: number | undefined;
224
+ processedBy?: import("convex/values").GenericId<"attendants"> | undefined;
225
+ status: "pending" | "completed" | "failed" | "refunded" | "processing";
226
+ createdAt: number;
227
+ isDeleted: boolean;
228
+ customerId: import("convex/values").GenericId<"users">;
229
+ paymentMethod: "mobile_money" | "card" | "cash";
230
+ orderId: import("convex/values").GenericId<"orders">;
231
+ amount: number;
232
+ currency: string;
233
+ }, {
234
+ orderId: import("convex/values").VId<import("convex/values").GenericId<"orders">, "required">;
235
+ customerId: import("convex/values").VId<import("convex/values").GenericId<"users">, "required">;
236
+ amount: import("convex/values").VFloat64<number, "required">;
237
+ currency: import("convex/values").VString<string, "required">;
238
+ paymentMethod: import("convex/values").VUnion<"mobile_money" | "card" | "cash", [import("convex/values").VLiteral<"mobile_money", "required">, import("convex/values").VLiteral<"card", "required">, import("convex/values").VLiteral<"cash", "required">], "required", never>;
239
+ status: import("convex/values").VUnion<"pending" | "completed" | "failed" | "refunded" | "processing", [import("convex/values").VLiteral<"pending", "required">, import("convex/values").VLiteral<"processing", "required">, import("convex/values").VLiteral<"completed", "required">, import("convex/values").VLiteral<"failed", "required">, import("convex/values").VLiteral<"refunded", "required">], "required", never>;
240
+ gatewayTransactionId: import("convex/values").VString<string | undefined, "optional">;
241
+ gatewayResponse: import("convex/values").VString<string | undefined, "optional">;
242
+ createdAt: import("convex/values").VFloat64<number, "required">;
243
+ completedAt: import("convex/values").VFloat64<number | undefined, "optional">;
244
+ processedBy: import("convex/values").VId<import("convex/values").GenericId<"attendants"> | undefined, "optional">;
245
+ isDeleted: import("convex/values").VBoolean<boolean, "required">;
246
+ }, "required", "status" | "createdAt" | "isDeleted" | "customerId" | "paymentMethod" | "orderId" | "amount" | "currency" | "gatewayTransactionId" | "gatewayResponse" | "completedAt" | "processedBy">, {
247
+ by_order: ["orderId", "_creationTime"];
248
+ by_customer: ["customerId", "_creationTime"];
249
+ by_status: ["status", "_creationTime"];
250
+ by_created: ["createdAt", "_creationTime"];
251
+ }, {}, {}>;
252
+ loyaltyPoints: import("convex/server").TableDefinition<import("convex/values").VObject<{
253
+ lastEarnedAt?: number | undefined;
254
+ lastRedeemedAt?: number | undefined;
255
+ isDeleted: boolean;
256
+ customerId: import("convex/values").GenericId<"users">;
257
+ points: number;
258
+ totalEarned: number;
259
+ totalRedeemed: number;
260
+ }, {
261
+ customerId: import("convex/values").VId<import("convex/values").GenericId<"users">, "required">;
262
+ points: import("convex/values").VFloat64<number, "required">;
263
+ totalEarned: import("convex/values").VFloat64<number, "required">;
264
+ totalRedeemed: import("convex/values").VFloat64<number, "required">;
265
+ lastEarnedAt: import("convex/values").VFloat64<number | undefined, "optional">;
266
+ lastRedeemedAt: import("convex/values").VFloat64<number | undefined, "optional">;
267
+ isDeleted: import("convex/values").VBoolean<boolean, "required">;
268
+ }, "required", "isDeleted" | "customerId" | "points" | "totalEarned" | "totalRedeemed" | "lastEarnedAt" | "lastRedeemedAt">, {
269
+ by_customer: ["customerId", "_creationTime"];
270
+ }, {}, {}>;
271
+ loyaltyTransactions: import("convex/server").TableDefinition<import("convex/values").VObject<{
272
+ createdBy?: import("convex/values").GenericId<"admins"> | undefined;
273
+ orderId?: import("convex/values").GenericId<"orders"> | undefined;
274
+ description?: string | undefined;
275
+ type: "earned" | "redeemed" | "expired" | "adjusted";
276
+ createdAt: number;
277
+ isDeleted: boolean;
278
+ customerId: import("convex/values").GenericId<"users">;
279
+ points: number;
280
+ balanceAfter: number;
281
+ }, {
282
+ customerId: import("convex/values").VId<import("convex/values").GenericId<"users">, "required">;
283
+ orderId: import("convex/values").VId<import("convex/values").GenericId<"orders"> | undefined, "optional">;
284
+ type: import("convex/values").VUnion<"earned" | "redeemed" | "expired" | "adjusted", [import("convex/values").VLiteral<"earned", "required">, import("convex/values").VLiteral<"redeemed", "required">, import("convex/values").VLiteral<"expired", "required">, import("convex/values").VLiteral<"adjusted", "required">], "required", never>;
285
+ points: import("convex/values").VFloat64<number, "required">;
286
+ balanceAfter: import("convex/values").VFloat64<number, "required">;
287
+ description: import("convex/values").VString<string | undefined, "optional">;
288
+ createdAt: import("convex/values").VFloat64<number, "required">;
289
+ createdBy: import("convex/values").VId<import("convex/values").GenericId<"admins"> | undefined, "optional">;
290
+ isDeleted: import("convex/values").VBoolean<boolean, "required">;
291
+ }, "required", "type" | "createdAt" | "isDeleted" | "createdBy" | "customerId" | "orderId" | "points" | "balanceAfter" | "description">, {
292
+ by_customer: ["customerId", "_creationTime"];
293
+ by_order: ["orderId", "_creationTime"];
294
+ by_created: ["createdAt", "_creationTime"];
295
+ }, {}, {}>;
296
+ attendanceLogs: import("convex/server").TableDefinition<import("convex/values").VObject<{
297
+ clockOutAt?: number | undefined;
298
+ deviceId?: string | undefined;
299
+ deviceInfo?: string | undefined;
300
+ isDeleted: boolean;
301
+ branchId: import("convex/values").GenericId<"branches">;
302
+ isActive: boolean;
303
+ attendantId: import("convex/values").GenericId<"attendants">;
304
+ clockInAt: number;
305
+ }, {
306
+ attendantId: import("convex/values").VId<import("convex/values").GenericId<"attendants">, "required">;
307
+ branchId: import("convex/values").VId<import("convex/values").GenericId<"branches">, "required">;
308
+ clockInAt: import("convex/values").VFloat64<number, "required">;
309
+ clockOutAt: import("convex/values").VFloat64<number | undefined, "optional">;
310
+ deviceId: import("convex/values").VString<string | undefined, "optional">;
311
+ deviceInfo: import("convex/values").VString<string | undefined, "optional">;
312
+ isActive: import("convex/values").VBoolean<boolean, "required">;
313
+ isDeleted: import("convex/values").VBoolean<boolean, "required">;
314
+ }, "required", "isDeleted" | "branchId" | "isActive" | "attendantId" | "clockInAt" | "clockOutAt" | "deviceId" | "deviceInfo">, {
315
+ by_attendant: ["attendantId", "_creationTime"];
316
+ by_branch: ["branchId", "_creationTime"];
317
+ by_clock_in: ["clockInAt", "_creationTime"];
318
+ by_active: ["isActive", "_creationTime"];
319
+ }, {}, {}>;
320
+ resourceUsageLogs: import("convex/server").TableDefinition<import("convex/values").VObject<{
321
+ notes?: string | undefined;
322
+ waterCycles?: number | undefined;
323
+ isDeleted: boolean;
324
+ branchId: import("convex/values").GenericId<"branches">;
325
+ attendantId: import("convex/values").GenericId<"attendants">;
326
+ date: string;
327
+ detergentUnits: number;
328
+ tokensUsed: number;
329
+ loggedAt: number;
330
+ }, {
331
+ branchId: import("convex/values").VId<import("convex/values").GenericId<"branches">, "required">;
332
+ attendantId: import("convex/values").VId<import("convex/values").GenericId<"attendants">, "required">;
333
+ date: import("convex/values").VString<string, "required">;
334
+ detergentUnits: import("convex/values").VFloat64<number, "required">;
335
+ tokensUsed: import("convex/values").VFloat64<number, "required">;
336
+ waterCycles: import("convex/values").VFloat64<number | undefined, "optional">;
337
+ loggedAt: import("convex/values").VFloat64<number, "required">;
338
+ notes: import("convex/values").VString<string | undefined, "optional">;
339
+ isDeleted: import("convex/values").VBoolean<boolean, "required">;
340
+ }, "required", "isDeleted" | "branchId" | "notes" | "attendantId" | "date" | "detergentUnits" | "tokensUsed" | "waterCycles" | "loggedAt">, {
341
+ by_branch: ["branchId", "_creationTime"];
342
+ by_date: ["date", "_creationTime"];
343
+ by_attendant: ["attendantId", "_creationTime"];
344
+ by_branch_date: ["branchId", "date", "_creationTime"];
345
+ }, {}, {}>;
346
+ auditLogs: import("convex/server").TableDefinition<import("convex/values").VObject<{
347
+ branchId?: import("convex/values").GenericId<"branches"> | undefined;
348
+ deviceId?: string | undefined;
349
+ entityId?: string | undefined;
350
+ ipAddress?: string | undefined;
351
+ details?: string | undefined;
352
+ oldValue?: string | undefined;
353
+ newValue?: string | undefined;
354
+ actorId: string;
355
+ actorType: "admin" | "customer" | "attendant";
356
+ actorRole: string;
357
+ action: string;
358
+ entityType: string;
359
+ timestamp: number;
360
+ }, {
361
+ actorId: import("convex/values").VString<string, "required">;
362
+ actorType: import("convex/values").VUnion<"admin" | "customer" | "attendant", [import("convex/values").VLiteral<"customer", "required">, import("convex/values").VLiteral<"attendant", "required">, import("convex/values").VLiteral<"admin", "required">], "required", never>;
363
+ actorRole: import("convex/values").VString<string, "required">;
364
+ action: import("convex/values").VString<string, "required">;
365
+ entityType: import("convex/values").VString<string, "required">;
366
+ entityId: import("convex/values").VString<string | undefined, "optional">;
367
+ branchId: import("convex/values").VId<import("convex/values").GenericId<"branches"> | undefined, "optional">;
368
+ deviceId: import("convex/values").VString<string | undefined, "optional">;
369
+ ipAddress: import("convex/values").VString<string | undefined, "optional">;
370
+ details: import("convex/values").VString<string | undefined, "optional">;
371
+ oldValue: import("convex/values").VString<string | undefined, "optional">;
372
+ newValue: import("convex/values").VString<string | undefined, "optional">;
373
+ timestamp: import("convex/values").VFloat64<number, "required">;
374
+ }, "required", "branchId" | "deviceId" | "actorId" | "actorType" | "actorRole" | "action" | "entityType" | "entityId" | "ipAddress" | "details" | "oldValue" | "newValue" | "timestamp">, {
375
+ by_actor: ["actorId", "actorType", "_creationTime"];
376
+ by_action: ["action", "_creationTime"];
377
+ by_entity: ["entityType", "entityId", "_creationTime"];
378
+ by_timestamp: ["timestamp", "_creationTime"];
379
+ by_branch: ["branchId", "_creationTime"];
380
+ }, {}, {}>;
381
+ vouchers: import("convex/server").TableDefinition<import("convex/values").VObject<{
382
+ name?: string | undefined;
383
+ description?: string | undefined;
384
+ maxUsesPerCustomer?: number | undefined;
385
+ validFrom?: number | undefined;
386
+ validUntil?: number | undefined;
387
+ minOrderValue?: number | undefined;
388
+ applicableBranches?: import("convex/values").GenericId<"branches">[] | undefined;
389
+ applicableServiceTypes?: ("wash_only" | "wash_and_dry" | "dry_only")[] | undefined;
390
+ createdAt: number;
391
+ isDeleted: boolean;
392
+ isActive: boolean;
393
+ code: string;
394
+ createdBy: import("convex/values").GenericId<"admins">;
395
+ discountType: "percentage" | "fixed" | "free_wash";
396
+ discountValue: number;
397
+ usageLimit: number;
398
+ usedCount: number;
399
+ }, {
400
+ code: import("convex/values").VString<string, "required">;
401
+ name: import("convex/values").VString<string | undefined, "optional">;
402
+ discountType: import("convex/values").VUnion<"percentage" | "fixed" | "free_wash", [import("convex/values").VLiteral<"percentage", "required">, import("convex/values").VLiteral<"fixed", "required">, import("convex/values").VLiteral<"free_wash", "required">], "required", never>;
403
+ discountValue: import("convex/values").VFloat64<number, "required">;
404
+ usageLimit: import("convex/values").VFloat64<number, "required">;
405
+ usedCount: import("convex/values").VFloat64<number, "required">;
406
+ maxUsesPerCustomer: import("convex/values").VFloat64<number | undefined, "optional">;
407
+ isActive: import("convex/values").VBoolean<boolean, "required">;
408
+ validFrom: import("convex/values").VFloat64<number | undefined, "optional">;
409
+ validUntil: import("convex/values").VFloat64<number | undefined, "optional">;
410
+ minOrderValue: import("convex/values").VFloat64<number | undefined, "optional">;
411
+ applicableBranches: import("convex/values").VArray<import("convex/values").GenericId<"branches">[] | undefined, import("convex/values").VId<import("convex/values").GenericId<"branches">, "required">, "optional">;
412
+ applicableServiceTypes: import("convex/values").VArray<("wash_only" | "wash_and_dry" | "dry_only")[] | undefined, import("convex/values").VUnion<"wash_only" | "wash_and_dry" | "dry_only", [import("convex/values").VLiteral<"wash_only", "required">, import("convex/values").VLiteral<"wash_and_dry", "required">, import("convex/values").VLiteral<"dry_only", "required">], "required", never>, "optional">;
413
+ createdAt: import("convex/values").VFloat64<number, "required">;
414
+ createdBy: import("convex/values").VId<import("convex/values").GenericId<"admins">, "required">;
415
+ description: import("convex/values").VString<string | undefined, "optional">;
416
+ isDeleted: import("convex/values").VBoolean<boolean, "required">;
417
+ }, "required", "name" | "createdAt" | "isDeleted" | "isActive" | "code" | "createdBy" | "description" | "discountType" | "discountValue" | "usageLimit" | "usedCount" | "maxUsesPerCustomer" | "validFrom" | "validUntil" | "minOrderValue" | "applicableBranches" | "applicableServiceTypes">, {
418
+ by_code: ["code", "_creationTime"];
419
+ by_active: ["isActive", "_creationTime"];
420
+ by_created: ["createdAt", "_creationTime"];
421
+ }, {}, {}>;
422
+ voucherUsages: import("convex/server").TableDefinition<import("convex/values").VObject<{
423
+ usedBy?: import("convex/values").GenericId<"attendants"> | undefined;
424
+ isDeleted: boolean;
425
+ customerId: import("convex/values").GenericId<"users">;
426
+ orderId: import("convex/values").GenericId<"orders">;
427
+ voucherId: import("convex/values").GenericId<"vouchers">;
428
+ discountAmount: number;
429
+ orderTotalBefore: number;
430
+ orderTotalAfter: number;
431
+ usedAt: number;
432
+ }, {
433
+ voucherId: import("convex/values").VId<import("convex/values").GenericId<"vouchers">, "required">;
434
+ orderId: import("convex/values").VId<import("convex/values").GenericId<"orders">, "required">;
435
+ customerId: import("convex/values").VId<import("convex/values").GenericId<"users">, "required">;
436
+ discountAmount: import("convex/values").VFloat64<number, "required">;
437
+ orderTotalBefore: import("convex/values").VFloat64<number, "required">;
438
+ orderTotalAfter: import("convex/values").VFloat64<number, "required">;
439
+ usedAt: import("convex/values").VFloat64<number, "required">;
440
+ usedBy: import("convex/values").VId<import("convex/values").GenericId<"attendants"> | undefined, "optional">;
441
+ isDeleted: import("convex/values").VBoolean<boolean, "required">;
442
+ }, "required", "isDeleted" | "customerId" | "orderId" | "voucherId" | "discountAmount" | "orderTotalBefore" | "orderTotalAfter" | "usedAt" | "usedBy">, {
443
+ by_voucher: ["voucherId", "_creationTime"];
444
+ by_order: ["orderId", "_creationTime"];
445
+ by_customer: ["customerId", "_creationTime"];
446
+ by_used_at: ["usedAt", "_creationTime"];
447
+ }, {}, {}>;
448
+ }, true>;
449
+ export default _default;
450
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../convex/schema.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACH,wBA2bG"}