@axova/shared 1.0.2 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.js +2 -0
  3. package/dist/lib/db.d.ts +34406 -1
  4. package/dist/lib/db.js +21 -1
  5. package/dist/middleware/storeOwnership.js +22 -3
  6. package/dist/middleware/storeValidationMiddleware.js +16 -39
  7. package/dist/schemas/admin/admin-schema.d.ts +2 -2
  8. package/dist/schemas/ai-moderation/ai-moderation-schema.d.ts +6 -6
  9. package/dist/schemas/common/common-schemas.d.ts +71 -71
  10. package/dist/schemas/compliance/compliance-schema.d.ts +20 -20
  11. package/dist/schemas/compliance/kyc-schema.d.ts +8 -8
  12. package/dist/schemas/customer/customer-schema.d.ts +18 -18
  13. package/dist/schemas/index.d.ts +28 -0
  14. package/dist/schemas/index.js +134 -3
  15. package/dist/schemas/inventory/inventory-tables.d.ts +188 -188
  16. package/dist/schemas/inventory/lot-tables.d.ts +102 -102
  17. package/dist/schemas/order/cart-schema.d.ts +2865 -0
  18. package/dist/schemas/order/cart-schema.js +396 -0
  19. package/dist/schemas/order/order-schema.d.ts +19 -19
  20. package/dist/schemas/order/order-schema.js +8 -2
  21. package/dist/schemas/product/discount-schema.d.ts +3 -3
  22. package/dist/schemas/product/product-schema.d.ts +3 -3
  23. package/dist/schemas/store/store-audit-schema.d.ts +20 -20
  24. package/dist/schemas/store/store-schema.d.ts +182 -2
  25. package/dist/schemas/store/store-schema.js +19 -0
  26. package/dist/schemas/store/storefront-config-schema.d.ts +434 -823
  27. package/dist/schemas/store/storefront-config-schema.js +35 -62
  28. package/dist/utils/subdomain.d.ts +1 -1
  29. package/dist/utils/subdomain.js +10 -15
  30. package/package.json +1 -1
  31. package/src/configs/index.ts +654 -654
  32. package/src/index.ts +26 -23
  33. package/src/interfaces/customer-events.ts +106 -106
  34. package/src/interfaces/inventory-events.ts +545 -545
  35. package/src/interfaces/inventory-types.ts +1004 -1004
  36. package/src/interfaces/order-events.ts +381 -381
  37. package/src/lib/auditLogger.ts +1117 -1117
  38. package/src/lib/authOrganization.ts +153 -153
  39. package/src/lib/db.ts +84 -64
  40. package/src/middleware/serviceAuth.ts +328 -328
  41. package/src/middleware/storeOwnership.ts +199 -181
  42. package/src/middleware/storeValidationMiddleware.ts +17 -50
  43. package/src/middleware/userAuth.ts +248 -248
  44. package/src/schemas/admin/admin-schema.ts +208 -208
  45. package/src/schemas/ai-moderation/ai-moderation-schema.ts +180 -180
  46. package/src/schemas/common/common-schemas.ts +108 -108
  47. package/src/schemas/compliance/compliance-schema.ts +927 -0
  48. package/src/schemas/compliance/kyc-schema.ts +649 -0
  49. package/src/schemas/customer/customer-schema.ts +576 -0
  50. package/src/schemas/index.ts +202 -3
  51. package/src/schemas/inventory/inventory-tables.ts +1927 -0
  52. package/src/schemas/inventory/lot-tables.ts +799 -0
  53. package/src/schemas/order/cart-schema.ts +652 -0
  54. package/src/schemas/order/order-schema.ts +1406 -0
  55. package/src/schemas/product/discount-relations.ts +44 -0
  56. package/src/schemas/product/discount-schema.ts +464 -0
  57. package/src/schemas/product/product-relations.ts +187 -0
  58. package/src/schemas/product/product-schema.ts +955 -0
  59. package/src/schemas/store/ethiopian_business_api.md.resolved +212 -0
  60. package/src/schemas/store/store-audit-schema.ts +1257 -0
  61. package/src/schemas/store/store-schema.ts +682 -0
  62. package/src/schemas/store/store-settings-schema.ts +231 -0
  63. package/src/schemas/store/storefront-config-schema.ts +382 -0
  64. package/src/schemas/types.ts +67 -67
  65. package/src/types/events.ts +646 -646
  66. package/src/utils/errorHandler.ts +44 -44
  67. package/src/utils/subdomain.ts +19 -23
  68. package/tsconfig.json +21 -21
@@ -103,7 +103,7 @@ export declare const storeAuditLogs: import("drizzle-orm/pg-core").PgTableWithCo
103
103
  tableName: "store_audit_logs";
104
104
  dataType: "string";
105
105
  columnType: "PgVarchar";
106
- data: "CREATE" | "UPDATE" | "DELETE" | "LOGIN" | "LOGOUT" | "ACCESS" | "PERMISSION_CHANGE" | "SYSTEM_ACTION" | "COMPLIANCE_ACTION" | "SECURITY_EVENT" | "IMPORT" | "READ" | "UPLOAD" | "DOWNLOAD" | "EXPORT" | "CONFIGURATION_CHANGE" | "BULK_OPERATION";
106
+ data: "CREATE" | "UPDATE" | "DELETE" | "LOGIN" | "LOGOUT" | "ACCESS" | "PERMISSION_CHANGE" | "SYSTEM_ACTION" | "COMPLIANCE_ACTION" | "SECURITY_EVENT" | "READ" | "UPLOAD" | "DOWNLOAD" | "EXPORT" | "IMPORT" | "CONFIGURATION_CHANGE" | "BULK_OPERATION";
107
107
  driverParam: string;
108
108
  notNull: true;
109
109
  hasDefault: false;
@@ -116,7 +116,7 @@ export declare const storeAuditLogs: import("drizzle-orm/pg-core").PgTableWithCo
116
116
  generated: undefined;
117
117
  }, {}, {
118
118
  length: 30;
119
- $type: "CREATE" | "UPDATE" | "DELETE" | "LOGIN" | "LOGOUT" | "ACCESS" | "PERMISSION_CHANGE" | "SYSTEM_ACTION" | "COMPLIANCE_ACTION" | "SECURITY_EVENT" | "IMPORT" | "READ" | "UPLOAD" | "DOWNLOAD" | "EXPORT" | "CONFIGURATION_CHANGE" | "BULK_OPERATION";
119
+ $type: "CREATE" | "UPDATE" | "DELETE" | "LOGIN" | "LOGOUT" | "ACCESS" | "PERMISSION_CHANGE" | "SYSTEM_ACTION" | "COMPLIANCE_ACTION" | "SECURITY_EVENT" | "READ" | "UPLOAD" | "DOWNLOAD" | "EXPORT" | "IMPORT" | "CONFIGURATION_CHANGE" | "BULK_OPERATION";
120
120
  }>;
121
121
  eventCategory: import("drizzle-orm/pg-core").PgColumn<{
122
122
  name: "event_category";
@@ -215,7 +215,7 @@ export declare const storeAuditLogs: import("drizzle-orm/pg-core").PgTableWithCo
215
215
  tableName: "store_audit_logs";
216
216
  dataType: "string";
217
217
  columnType: "PgVarchar";
218
- data: "USER" | "STORE" | "PRODUCT" | "ORDER" | "NOTIFICATION" | "WEBHOOK" | "SHIPPING" | "CATEGORY" | "PAYMENT" | "PROMOTION" | "BLOG" | "CONTACT" | "BUSINESS_DETAILS" | "SOCIAL_PROFILE" | "FILE" | "MEDIA" | "ANALYTICS" | "CONFIGURATION" | "INTEGRATION" | "INVENTORY" | "REVIEW" | "ATTRIBUTE" | "THEME" | "PLUGIN";
218
+ data: "USER" | "STORE" | "PRODUCT" | "ORDER" | "NOTIFICATION" | "WEBHOOK" | "BLOG" | "CONTACT" | "BUSINESS_DETAILS" | "SOCIAL_PROFILE" | "FILE" | "MEDIA" | "ANALYTICS" | "CONFIGURATION" | "INTEGRATION" | "PAYMENT" | "SHIPPING" | "INVENTORY" | "PROMOTION" | "REVIEW" | "CATEGORY" | "ATTRIBUTE" | "THEME" | "PLUGIN";
219
219
  driverParam: string;
220
220
  notNull: false;
221
221
  hasDefault: false;
@@ -228,7 +228,7 @@ export declare const storeAuditLogs: import("drizzle-orm/pg-core").PgTableWithCo
228
228
  generated: undefined;
229
229
  }, {}, {
230
230
  length: 30;
231
- $type: "USER" | "STORE" | "PRODUCT" | "ORDER" | "NOTIFICATION" | "WEBHOOK" | "SHIPPING" | "CATEGORY" | "PAYMENT" | "PROMOTION" | "BLOG" | "CONTACT" | "BUSINESS_DETAILS" | "SOCIAL_PROFILE" | "FILE" | "MEDIA" | "ANALYTICS" | "CONFIGURATION" | "INTEGRATION" | "INVENTORY" | "REVIEW" | "ATTRIBUTE" | "THEME" | "PLUGIN";
231
+ $type: "USER" | "STORE" | "PRODUCT" | "ORDER" | "NOTIFICATION" | "WEBHOOK" | "BLOG" | "CONTACT" | "BUSINESS_DETAILS" | "SOCIAL_PROFILE" | "FILE" | "MEDIA" | "ANALYTICS" | "CONFIGURATION" | "INTEGRATION" | "PAYMENT" | "SHIPPING" | "INVENTORY" | "PROMOTION" | "REVIEW" | "CATEGORY" | "ATTRIBUTE" | "THEME" | "PLUGIN";
232
232
  }>;
233
233
  resourceName: import("drizzle-orm/pg-core").PgColumn<{
234
234
  name: "resource_name";
@@ -307,7 +307,7 @@ export declare const storeAuditLogs: import("drizzle-orm/pg-core").PgTableWithCo
307
307
  tableName: "store_audit_logs";
308
308
  dataType: "string";
309
309
  columnType: "PgVarchar";
310
- data: "USER" | "ADMIN" | "SYSTEM" | "SERVICE" | "AI" | "AUTOMATION" | "ANONYMOUS" | "WEBHOOK" | "CRON_JOB" | "STORE_MANAGER" | "STORE_EMPLOYEE" | "CUSTOMER" | "INTEGRATION" | "STORE_OWNER" | "API_CLIENT";
310
+ data: "USER" | "ADMIN" | "SYSTEM" | "SERVICE" | "AI" | "AUTOMATION" | "ANONYMOUS" | "WEBHOOK" | "CRON_JOB" | "INTEGRATION" | "STORE_OWNER" | "STORE_MANAGER" | "STORE_EMPLOYEE" | "CUSTOMER" | "API_CLIENT";
311
311
  driverParam: string;
312
312
  notNull: true;
313
313
  hasDefault: false;
@@ -320,7 +320,7 @@ export declare const storeAuditLogs: import("drizzle-orm/pg-core").PgTableWithCo
320
320
  generated: undefined;
321
321
  }, {}, {
322
322
  length: 20;
323
- $type: "USER" | "ADMIN" | "SYSTEM" | "SERVICE" | "AI" | "AUTOMATION" | "ANONYMOUS" | "WEBHOOK" | "CRON_JOB" | "STORE_MANAGER" | "STORE_EMPLOYEE" | "CUSTOMER" | "INTEGRATION" | "STORE_OWNER" | "API_CLIENT";
323
+ $type: "USER" | "ADMIN" | "SYSTEM" | "SERVICE" | "AI" | "AUTOMATION" | "ANONYMOUS" | "WEBHOOK" | "CRON_JOB" | "INTEGRATION" | "STORE_OWNER" | "STORE_MANAGER" | "STORE_EMPLOYEE" | "CUSTOMER" | "API_CLIENT";
324
324
  }>;
325
325
  performedByName: import("drizzle-orm/pg-core").PgColumn<{
326
326
  name: "performed_by_name";
@@ -365,7 +365,7 @@ export declare const storeAuditLogs: import("drizzle-orm/pg-core").PgTableWithCo
365
365
  tableName: "store_audit_logs";
366
366
  dataType: "string";
367
367
  columnType: "PgVarchar";
368
- data: "SUPER_ADMIN" | "STORE_ADMIN" | "STORE_MANAGER" | "STORE_EMPLOYEE" | "CUSTOMER" | "CUSTOMER_SERVICE" | "STORE_OWNER" | "CONTENT_CREATOR" | "VIEWER" | "GUEST";
368
+ data: "STORE_OWNER" | "STORE_MANAGER" | "STORE_EMPLOYEE" | "CUSTOMER" | "SUPER_ADMIN" | "STORE_ADMIN" | "CONTENT_CREATOR" | "CUSTOMER_SERVICE" | "VIEWER" | "GUEST";
369
369
  driverParam: string;
370
370
  notNull: false;
371
371
  hasDefault: false;
@@ -378,7 +378,7 @@ export declare const storeAuditLogs: import("drizzle-orm/pg-core").PgTableWithCo
378
378
  generated: undefined;
379
379
  }, {}, {
380
380
  length: 50;
381
- $type: "SUPER_ADMIN" | "STORE_ADMIN" | "STORE_MANAGER" | "STORE_EMPLOYEE" | "CUSTOMER" | "CUSTOMER_SERVICE" | "STORE_OWNER" | "CONTENT_CREATOR" | "VIEWER" | "GUEST";
381
+ $type: "STORE_OWNER" | "STORE_MANAGER" | "STORE_EMPLOYEE" | "CUSTOMER" | "SUPER_ADMIN" | "STORE_ADMIN" | "CONTENT_CREATOR" | "CUSTOMER_SERVICE" | "VIEWER" | "GUEST";
382
382
  }>;
383
383
  userPermissions: import("drizzle-orm/pg-core").PgColumn<{
384
384
  name: "user_permissions";
@@ -1323,7 +1323,7 @@ export declare const storeAuditLogs: import("drizzle-orm/pg-core").PgTableWithCo
1323
1323
  tableName: "store_audit_logs";
1324
1324
  dataType: "string";
1325
1325
  columnType: "PgVarchar";
1326
- data: "INTERNAL" | "PUBLIC" | "CONFIDENTIAL" | "RESTRICTED";
1326
+ data: "PUBLIC" | "INTERNAL" | "CONFIDENTIAL" | "RESTRICTED";
1327
1327
  driverParam: string;
1328
1328
  notNull: false;
1329
1329
  hasDefault: true;
@@ -1336,7 +1336,7 @@ export declare const storeAuditLogs: import("drizzle-orm/pg-core").PgTableWithCo
1336
1336
  generated: undefined;
1337
1337
  }, {}, {
1338
1338
  length: 20;
1339
- $type: "INTERNAL" | "PUBLIC" | "CONFIDENTIAL" | "RESTRICTED";
1339
+ $type: "PUBLIC" | "INTERNAL" | "CONFIDENTIAL" | "RESTRICTED";
1340
1340
  }>;
1341
1341
  riskLevel: import("drizzle-orm/pg-core").PgColumn<{
1342
1342
  name: "risk_level";
@@ -1580,7 +1580,7 @@ export declare const storeAuditLogs: import("drizzle-orm/pg-core").PgTableWithCo
1580
1580
  tableName: "store_audit_logs";
1581
1581
  dataType: "string";
1582
1582
  columnType: "PgVarchar";
1583
- data: "IN_PROGRESS" | "COMPLETED" | "CANCELLED" | "FAILED" | "SUSPENDED" | "INITIATED";
1583
+ data: "FAILED" | "IN_PROGRESS" | "INITIATED" | "COMPLETED" | "CANCELLED" | "SUSPENDED";
1584
1584
  driverParam: string;
1585
1585
  notNull: false;
1586
1586
  hasDefault: false;
@@ -1593,7 +1593,7 @@ export declare const storeAuditLogs: import("drizzle-orm/pg-core").PgTableWithCo
1593
1593
  generated: undefined;
1594
1594
  }, {}, {
1595
1595
  length: 30;
1596
- $type: "IN_PROGRESS" | "COMPLETED" | "CANCELLED" | "FAILED" | "SUSPENDED" | "INITIATED";
1596
+ $type: "FAILED" | "IN_PROGRESS" | "INITIATED" | "COMPLETED" | "CANCELLED" | "SUSPENDED";
1597
1597
  }>;
1598
1598
  parentEventId: import("drizzle-orm/pg-core").PgColumn<{
1599
1599
  name: "parent_event_id";
@@ -2070,7 +2070,7 @@ export declare const storeAuditAggregations: import("drizzle-orm/pg-core").PgTab
2070
2070
  tableName: "store_audit_aggregations";
2071
2071
  dataType: "string";
2072
2072
  columnType: "PgVarchar";
2073
- data: "WEEKLY" | "MONTHLY" | "QUARTERLY" | "DAILY" | "YEARLY" | "HOURLY";
2073
+ data: "HOURLY" | "DAILY" | "WEEKLY" | "MONTHLY" | "QUARTERLY" | "YEARLY";
2074
2074
  driverParam: string;
2075
2075
  notNull: true;
2076
2076
  hasDefault: false;
@@ -2083,7 +2083,7 @@ export declare const storeAuditAggregations: import("drizzle-orm/pg-core").PgTab
2083
2083
  generated: undefined;
2084
2084
  }, {}, {
2085
2085
  length: 20;
2086
- $type: "WEEKLY" | "MONTHLY" | "QUARTERLY" | "DAILY" | "YEARLY" | "HOURLY";
2086
+ $type: "HOURLY" | "DAILY" | "WEEKLY" | "MONTHLY" | "QUARTERLY" | "YEARLY";
2087
2087
  }>;
2088
2088
  aggregationDate: import("drizzle-orm/pg-core").PgColumn<{
2089
2089
  name: "aggregation_date";
@@ -3275,7 +3275,7 @@ export declare const storeAuditTrails: import("drizzle-orm/pg-core").PgTableWith
3275
3275
  tableName: "store_audit_trails";
3276
3276
  dataType: "string";
3277
3277
  columnType: "PgVarchar";
3278
- data: "COMPLIANCE_AUDIT" | "STORE_SETUP" | "PRODUCT_LIFECYCLE" | "ORDER_PROCESSING" | "CUSTOMER_JOURNEY" | "CONTENT_CREATION" | "PAYMENT_PROCESSING" | "INVENTORY_MANAGEMENT" | "MARKETING_CAMPAIGN" | "SECURITY_INVESTIGATION" | "DATA_MIGRATION" | "INTEGRATION_SETUP" | "BUSINESS_WORKFLOW" | "SYSTEM_MAINTENANCE";
3278
+ data: "STORE_SETUP" | "PRODUCT_LIFECYCLE" | "ORDER_PROCESSING" | "CUSTOMER_JOURNEY" | "CONTENT_CREATION" | "PAYMENT_PROCESSING" | "INVENTORY_MANAGEMENT" | "MARKETING_CAMPAIGN" | "COMPLIANCE_AUDIT" | "SECURITY_INVESTIGATION" | "DATA_MIGRATION" | "INTEGRATION_SETUP" | "BUSINESS_WORKFLOW" | "SYSTEM_MAINTENANCE";
3279
3279
  driverParam: string;
3280
3280
  notNull: true;
3281
3281
  hasDefault: false;
@@ -3288,7 +3288,7 @@ export declare const storeAuditTrails: import("drizzle-orm/pg-core").PgTableWith
3288
3288
  generated: undefined;
3289
3289
  }, {}, {
3290
3290
  length: 30;
3291
- $type: "COMPLIANCE_AUDIT" | "STORE_SETUP" | "PRODUCT_LIFECYCLE" | "ORDER_PROCESSING" | "CUSTOMER_JOURNEY" | "CONTENT_CREATION" | "PAYMENT_PROCESSING" | "INVENTORY_MANAGEMENT" | "MARKETING_CAMPAIGN" | "SECURITY_INVESTIGATION" | "DATA_MIGRATION" | "INTEGRATION_SETUP" | "BUSINESS_WORKFLOW" | "SYSTEM_MAINTENANCE";
3291
+ $type: "STORE_SETUP" | "PRODUCT_LIFECYCLE" | "ORDER_PROCESSING" | "CUSTOMER_JOURNEY" | "CONTENT_CREATION" | "PAYMENT_PROCESSING" | "INVENTORY_MANAGEMENT" | "MARKETING_CAMPAIGN" | "COMPLIANCE_AUDIT" | "SECURITY_INVESTIGATION" | "DATA_MIGRATION" | "INTEGRATION_SETUP" | "BUSINESS_WORKFLOW" | "SYSTEM_MAINTENANCE";
3292
3292
  }>;
3293
3293
  trailDescription: import("drizzle-orm/pg-core").PgColumn<{
3294
3294
  name: "trail_description";
@@ -3312,7 +3312,7 @@ export declare const storeAuditTrails: import("drizzle-orm/pg-core").PgTableWith
3312
3312
  tableName: "store_audit_trails";
3313
3313
  dataType: "string";
3314
3314
  columnType: "PgVarchar";
3315
- data: "USER" | "STORE" | "PRODUCT" | "ORDER" | "CUSTOMER" | "INTEGRATION" | "CAMPAIGN" | "PROCESS";
3315
+ data: "USER" | "STORE" | "PRODUCT" | "ORDER" | "INTEGRATION" | "CUSTOMER" | "CAMPAIGN" | "PROCESS";
3316
3316
  driverParam: string;
3317
3317
  notNull: false;
3318
3318
  hasDefault: false;
@@ -3325,7 +3325,7 @@ export declare const storeAuditTrails: import("drizzle-orm/pg-core").PgTableWith
3325
3325
  generated: undefined;
3326
3326
  }, {}, {
3327
3327
  length: 30;
3328
- $type: "USER" | "STORE" | "PRODUCT" | "ORDER" | "CUSTOMER" | "INTEGRATION" | "CAMPAIGN" | "PROCESS";
3328
+ $type: "USER" | "STORE" | "PRODUCT" | "ORDER" | "INTEGRATION" | "CUSTOMER" | "CAMPAIGN" | "PROCESS";
3329
3329
  }>;
3330
3330
  subjectId: import("drizzle-orm/pg-core").PgColumn<{
3331
3331
  name: "subject_id";
@@ -3368,7 +3368,7 @@ export declare const storeAuditTrails: import("drizzle-orm/pg-core").PgTableWith
3368
3368
  tableName: "store_audit_trails";
3369
3369
  dataType: "string";
3370
3370
  columnType: "PgVarchar";
3371
- data: "PENDING" | "COMPLETED" | "CANCELLED" | "FAILED" | "ACTIVE" | "ARCHIVED" | "SUSPENDED";
3371
+ data: "PENDING" | "FAILED" | "COMPLETED" | "CANCELLED" | "SUSPENDED" | "ACTIVE" | "ARCHIVED";
3372
3372
  driverParam: string;
3373
3373
  notNull: true;
3374
3374
  hasDefault: true;
@@ -3381,7 +3381,7 @@ export declare const storeAuditTrails: import("drizzle-orm/pg-core").PgTableWith
3381
3381
  generated: undefined;
3382
3382
  }, {}, {
3383
3383
  length: 20;
3384
- $type: "PENDING" | "COMPLETED" | "CANCELLED" | "FAILED" | "ACTIVE" | "ARCHIVED" | "SUSPENDED";
3384
+ $type: "PENDING" | "FAILED" | "COMPLETED" | "CANCELLED" | "SUSPENDED" | "ACTIVE" | "ARCHIVED";
3385
3385
  }>;
3386
3386
  startedAt: import("drizzle-orm/pg-core").PgColumn<{
3387
3387
  name: "started_at";
@@ -341,6 +341,186 @@ export declare const stores: import("drizzle-orm/pg-core").PgTableWithColumns<{
341
341
  }, {}, {
342
342
  $type: string[];
343
343
  }>;
344
+ tinVerificationStatus: import("drizzle-orm/pg-core").PgColumn<{
345
+ name: "tin_verification_status";
346
+ tableName: "stores";
347
+ dataType: "string";
348
+ columnType: "PgVarchar";
349
+ data: "UNVERIFIED" | "PENDING" | "VERIFIED" | "FAILED" | "EXPIRED";
350
+ driverParam: string;
351
+ notNull: false;
352
+ hasDefault: true;
353
+ isPrimaryKey: false;
354
+ isAutoincrement: false;
355
+ hasRuntimeDefault: false;
356
+ enumValues: [string, ...string[]];
357
+ baseColumn: never;
358
+ identity: undefined;
359
+ generated: undefined;
360
+ }, {}, {
361
+ length: 30;
362
+ $type: "UNVERIFIED" | "PENDING" | "VERIFIED" | "FAILED" | "EXPIRED";
363
+ }>;
364
+ tinVerifiedAt: import("drizzle-orm/pg-core").PgColumn<{
365
+ name: "tin_verified_at";
366
+ tableName: "stores";
367
+ dataType: "date";
368
+ columnType: "PgTimestamp";
369
+ data: Date;
370
+ driverParam: string;
371
+ notNull: false;
372
+ hasDefault: false;
373
+ isPrimaryKey: false;
374
+ isAutoincrement: false;
375
+ hasRuntimeDefault: false;
376
+ enumValues: undefined;
377
+ baseColumn: never;
378
+ identity: undefined;
379
+ generated: undefined;
380
+ }, {}, {}>;
381
+ tinVerifiedBy: import("drizzle-orm/pg-core").PgColumn<{
382
+ name: "tin_verified_by";
383
+ tableName: "stores";
384
+ dataType: "string";
385
+ columnType: "PgText";
386
+ data: string;
387
+ driverParam: string;
388
+ notNull: false;
389
+ hasDefault: false;
390
+ isPrimaryKey: false;
391
+ isAutoincrement: false;
392
+ hasRuntimeDefault: false;
393
+ enumValues: [string, ...string[]];
394
+ baseColumn: never;
395
+ identity: undefined;
396
+ generated: undefined;
397
+ }, {}, {}>;
398
+ tinVerificationData: import("drizzle-orm/pg-core").PgColumn<{
399
+ name: "tin_verification_data";
400
+ tableName: "stores";
401
+ dataType: "json";
402
+ columnType: "PgJsonb";
403
+ data: Record<string, unknown>;
404
+ driverParam: unknown;
405
+ notNull: false;
406
+ hasDefault: true;
407
+ isPrimaryKey: false;
408
+ isAutoincrement: false;
409
+ hasRuntimeDefault: false;
410
+ enumValues: undefined;
411
+ baseColumn: never;
412
+ identity: undefined;
413
+ generated: undefined;
414
+ }, {}, {
415
+ $type: Record<string, unknown>;
416
+ }>;
417
+ tinVerificationErrors: import("drizzle-orm/pg-core").PgColumn<{
418
+ name: "tin_verification_errors";
419
+ tableName: "stores";
420
+ dataType: "json";
421
+ columnType: "PgJsonb";
422
+ data: string[];
423
+ driverParam: unknown;
424
+ notNull: false;
425
+ hasDefault: true;
426
+ isPrimaryKey: false;
427
+ isAutoincrement: false;
428
+ hasRuntimeDefault: false;
429
+ enumValues: undefined;
430
+ baseColumn: never;
431
+ identity: undefined;
432
+ generated: undefined;
433
+ }, {}, {
434
+ $type: string[];
435
+ }>;
436
+ tinLastChecked: import("drizzle-orm/pg-core").PgColumn<{
437
+ name: "tin_last_checked";
438
+ tableName: "stores";
439
+ dataType: "date";
440
+ columnType: "PgTimestamp";
441
+ data: Date;
442
+ driverParam: string;
443
+ notNull: false;
444
+ hasDefault: false;
445
+ isPrimaryKey: false;
446
+ isAutoincrement: false;
447
+ hasRuntimeDefault: false;
448
+ enumValues: undefined;
449
+ baseColumn: never;
450
+ identity: undefined;
451
+ generated: undefined;
452
+ }, {}, {}>;
453
+ businessTypeChangedAt: import("drizzle-orm/pg-core").PgColumn<{
454
+ name: "business_type_changed_at";
455
+ tableName: "stores";
456
+ dataType: "date";
457
+ columnType: "PgTimestamp";
458
+ data: Date;
459
+ driverParam: string;
460
+ notNull: false;
461
+ hasDefault: false;
462
+ isPrimaryKey: false;
463
+ isAutoincrement: false;
464
+ hasRuntimeDefault: false;
465
+ enumValues: undefined;
466
+ baseColumn: never;
467
+ identity: undefined;
468
+ generated: undefined;
469
+ }, {}, {}>;
470
+ businessTypeChangedBy: import("drizzle-orm/pg-core").PgColumn<{
471
+ name: "business_type_changed_by";
472
+ tableName: "stores";
473
+ dataType: "string";
474
+ columnType: "PgText";
475
+ data: string;
476
+ driverParam: string;
477
+ notNull: false;
478
+ hasDefault: false;
479
+ isPrimaryKey: false;
480
+ isAutoincrement: false;
481
+ hasRuntimeDefault: false;
482
+ enumValues: [string, ...string[]];
483
+ baseColumn: never;
484
+ identity: undefined;
485
+ generated: undefined;
486
+ }, {}, {}>;
487
+ businessTypeChangeReason: import("drizzle-orm/pg-core").PgColumn<{
488
+ name: "business_type_change_reason";
489
+ tableName: "stores";
490
+ dataType: "string";
491
+ columnType: "PgText";
492
+ data: string;
493
+ driverParam: string;
494
+ notNull: false;
495
+ hasDefault: false;
496
+ isPrimaryKey: false;
497
+ isAutoincrement: false;
498
+ hasRuntimeDefault: false;
499
+ enumValues: [string, ...string[]];
500
+ baseColumn: never;
501
+ identity: undefined;
502
+ generated: undefined;
503
+ }, {}, {}>;
504
+ previousBusinessType: import("drizzle-orm/pg-core").PgColumn<{
505
+ name: "previous_business_type";
506
+ tableName: "stores";
507
+ dataType: "string";
508
+ columnType: "PgVarchar";
509
+ data: "starter" | "business_owner";
510
+ driverParam: string;
511
+ notNull: false;
512
+ hasDefault: false;
513
+ isPrimaryKey: false;
514
+ isAutoincrement: false;
515
+ hasRuntimeDefault: false;
516
+ enumValues: [string, ...string[]];
517
+ baseColumn: never;
518
+ identity: undefined;
519
+ generated: undefined;
520
+ }, {}, {
521
+ length: 20;
522
+ $type: "starter" | "business_owner";
523
+ }>;
344
524
  attributes: import("drizzle-orm/pg-core").PgColumn<{
345
525
  name: "attributes";
346
526
  tableName: "stores";
@@ -1006,7 +1186,7 @@ export declare const storeBusinessDetails: import("drizzle-orm/pg-core").PgTable
1006
1186
  tableName: "store_business_details";
1007
1187
  dataType: "string";
1008
1188
  columnType: "PgVarchar";
1009
- data: "REJECTED" | "PENDING" | "IN_PROGRESS" | "VERIFIED" | "REQUIRES_UPDATE";
1189
+ data: "REJECTED" | "PENDING" | "VERIFIED" | "IN_PROGRESS" | "REQUIRES_UPDATE";
1010
1190
  driverParam: string;
1011
1191
  notNull: true;
1012
1192
  hasDefault: true;
@@ -1019,7 +1199,7 @@ export declare const storeBusinessDetails: import("drizzle-orm/pg-core").PgTable
1019
1199
  generated: undefined;
1020
1200
  }, {}, {
1021
1201
  length: 30;
1022
- $type: "REJECTED" | "PENDING" | "IN_PROGRESS" | "VERIFIED" | "REQUIRES_UPDATE";
1202
+ $type: "REJECTED" | "PENDING" | "VERIFIED" | "IN_PROGRESS" | "REQUIRES_UPDATE";
1023
1203
  }>;
1024
1204
  verificationDocuments: import("drizzle-orm/pg-core").PgColumn<{
1025
1205
  name: "verification_documents";
@@ -37,6 +37,25 @@ exports.stores = (0, pg_core_1.pgTable)("stores", {
37
37
  woreda: (0, pg_core_1.varchar)("woreda", { length: 100 }),
38
38
  houseNumber: (0, pg_core_1.varchar)("house_number", { length: 50 }),
39
39
  tradeNames: (0, pg_core_1.jsonb)("trade_names").$type().default([]),
40
+ // TIN Verification Status Tracking
41
+ tinVerificationStatus: (0, pg_core_1.varchar)("tin_verification_status", { length: 30 })
42
+ .$type()
43
+ .default("UNVERIFIED"),
44
+ tinVerifiedAt: (0, pg_core_1.timestamp)("tin_verified_at", { withTimezone: true }),
45
+ tinVerifiedBy: (0, pg_core_1.text)("tin_verified_by"),
46
+ tinVerificationData: (0, pg_core_1.jsonb)("tin_verification_data")
47
+ .$type()
48
+ .default({}),
49
+ tinVerificationErrors: (0, pg_core_1.jsonb)("tin_verification_errors")
50
+ .$type()
51
+ .default([]),
52
+ tinLastChecked: (0, pg_core_1.timestamp)("tin_last_checked", { withTimezone: true }),
53
+ // Business Type Change Tracking
54
+ businessTypeChangedAt: (0, pg_core_1.timestamp)("business_type_changed_at", { withTimezone: true }),
55
+ businessTypeChangedBy: (0, pg_core_1.text)("business_type_changed_by"),
56
+ businessTypeChangeReason: (0, pg_core_1.text)("business_type_change_reason"),
57
+ previousBusinessType: (0, pg_core_1.varchar)("previous_business_type", { length: 20 })
58
+ .$type(),
40
59
  // Store Additional Details
41
60
  attributes: (0, pg_core_1.jsonb)("attributes")
42
61
  .$type()