@novha/anlia-core-lib 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (233) hide show
  1. package/cdk/bin/infrastructure.ts +18 -0
  2. package/cdk/bin/project-names.ts +7 -0
  3. package/cdk/lib/infrastructure.ts +37 -0
  4. package/cdk.json +70 -0
  5. package/dist/cdk/bin/infrastructure.d.ts +1 -0
  6. package/dist/cdk/bin/infrastructure.js +20 -0
  7. package/dist/cdk/bin/project-names.d.ts +6 -0
  8. package/dist/cdk/bin/project-names.js +4 -0
  9. package/dist/cdk/lib/infrastructure.d.ts +6 -0
  10. package/dist/cdk/lib/infrastructure.js +32 -0
  11. package/dist/src/enums/domain/DayOfWeek.d.ts +9 -0
  12. package/dist/src/enums/domain/DayOfWeek.js +13 -0
  13. package/dist/src/enums/domain/Delivery.d.ts +19 -0
  14. package/dist/src/enums/domain/Delivery.js +24 -0
  15. package/dist/src/enums/domain/Employee.d.ts +12 -0
  16. package/dist/src/enums/domain/Employee.js +16 -0
  17. package/dist/src/enums/domain/Ingredient.d.ts +31 -0
  18. package/dist/src/enums/domain/Ingredient.js +37 -0
  19. package/dist/src/enums/domain/Inventory.d.ts +29 -0
  20. package/dist/src/enums/domain/Inventory.js +36 -0
  21. package/dist/src/enums/domain/Kitchen.d.ts +49 -0
  22. package/dist/src/enums/domain/Kitchen.js +59 -0
  23. package/dist/src/enums/domain/Menu.d.ts +13 -0
  24. package/dist/src/enums/domain/Menu.js +18 -0
  25. package/dist/src/enums/domain/Payments.d.ts +21 -0
  26. package/dist/src/enums/domain/Payments.js +26 -0
  27. package/dist/src/enums/domain/Recipe.d.ts +14 -0
  28. package/dist/src/enums/domain/Recipe.js +19 -0
  29. package/dist/src/enums/domain/Reservation.d.ts +17 -0
  30. package/dist/src/enums/domain/Reservation.js +22 -0
  31. package/dist/src/enums/domain/Restaurant.d.ts +39 -0
  32. package/dist/src/enums/domain/Restaurant.js +45 -0
  33. package/dist/src/enums/domain/Table.d.ts +23 -0
  34. package/dist/src/enums/domain/Table.js +29 -0
  35. package/dist/src/enums/domain/Vendors.d.ts +29 -0
  36. package/dist/src/enums/domain/Vendors.js +35 -0
  37. package/dist/src/enums/index.d.ts +13 -0
  38. package/dist/src/enums/index.js +29 -0
  39. package/dist/src/eventBridge/EventBridgeModule.d.ts +2 -0
  40. package/dist/src/eventBridge/EventBridgeModule.js +26 -0
  41. package/dist/src/eventBridge/domain/EventBridgeOptions.d.ts +8 -0
  42. package/dist/src/eventBridge/domain/EventBridgeOptions.js +2 -0
  43. package/dist/src/eventBridge/ioc/index.d.ts +3 -0
  44. package/dist/src/eventBridge/ioc/index.js +6 -0
  45. package/dist/src/eventBridge/ioc.d.ts +3 -0
  46. package/dist/src/eventBridge/ioc.js +6 -0
  47. package/dist/src/eventBridge/service/EventBridgeService.d.ts +5 -0
  48. package/dist/src/eventBridge/service/EventBridgeService.js +2 -0
  49. package/dist/src/eventBridge/service/EventBridgeServiceImpl.d.ts +13 -0
  50. package/dist/src/eventBridge/service/EventBridgeServiceImpl.js +63 -0
  51. package/dist/src/events/domain/CustomerEvents.d.ts +54 -0
  52. package/dist/src/events/domain/CustomerEvents.js +2 -0
  53. package/dist/src/events/domain/DeliveryEvents.d.ts +61 -0
  54. package/dist/src/events/domain/DeliveryEvents.js +2 -0
  55. package/dist/src/events/domain/DomainEvent.d.ts +12 -0
  56. package/dist/src/events/domain/DomainEvent.js +2 -0
  57. package/dist/src/events/domain/DomainEventType.d.ts +119 -0
  58. package/dist/src/events/domain/DomainEventType.js +136 -0
  59. package/dist/src/events/domain/EmployeeEvents.d.ts +51 -0
  60. package/dist/src/events/domain/EmployeeEvents.js +2 -0
  61. package/dist/src/events/domain/InventoryEvents.d.ts +141 -0
  62. package/dist/src/events/domain/InventoryEvents.js +2 -0
  63. package/dist/src/events/domain/OrderEvents.d.ts +105 -0
  64. package/dist/src/events/domain/OrderEvents.js +2 -0
  65. package/dist/src/events/domain/PaymentEvents.d.ts +73 -0
  66. package/dist/src/events/domain/PaymentEvents.js +2 -0
  67. package/dist/src/events/domain/RecipeEvents.d.ts +45 -0
  68. package/dist/src/events/domain/RecipeEvents.js +2 -0
  69. package/dist/src/events/domain/ReservationEvents.d.ts +93 -0
  70. package/dist/src/events/domain/ReservationEvents.js +2 -0
  71. package/dist/src/events/domain/RestaurantEvents.d.ts +62 -0
  72. package/dist/src/events/domain/RestaurantEvents.js +2 -0
  73. package/dist/src/events/domain/TableEvents.d.ts +71 -0
  74. package/dist/src/events/domain/TableEvents.js +2 -0
  75. package/dist/src/events/domain/VendorEvents.d.ts +28 -0
  76. package/dist/src/events/domain/VendorEvents.js +2 -0
  77. package/dist/src/events/index.d.ts +13 -0
  78. package/dist/src/events/index.js +29 -0
  79. package/dist/src/index.d.ts +4 -0
  80. package/dist/src/index.js +20 -0
  81. package/dist/src/interfaces/Address.d.ts +7 -0
  82. package/dist/src/interfaces/Address.js +2 -0
  83. package/dist/src/interfaces/Customer.d.ts +21 -0
  84. package/dist/src/interfaces/Customer.js +2 -0
  85. package/dist/src/interfaces/Delivery.d.ts +62 -0
  86. package/dist/src/interfaces/Delivery.js +2 -0
  87. package/dist/src/interfaces/Employee.d.ts +19 -0
  88. package/dist/src/interfaces/Employee.js +2 -0
  89. package/dist/src/interfaces/Ingredient.d.ts +42 -0
  90. package/dist/src/interfaces/Ingredient.js +2 -0
  91. package/dist/src/interfaces/Inventory.d.ts +26 -0
  92. package/dist/src/interfaces/Inventory.js +2 -0
  93. package/dist/src/interfaces/Kitchen.d.ts +72 -0
  94. package/dist/src/interfaces/Kitchen.js +2 -0
  95. package/dist/src/interfaces/Location.d.ts +14 -0
  96. package/dist/src/interfaces/Location.js +2 -0
  97. package/dist/src/interfaces/Menu.d.ts +72 -0
  98. package/dist/src/interfaces/Menu.js +2 -0
  99. package/dist/src/interfaces/Money.d.ts +5 -0
  100. package/dist/src/interfaces/Money.js +2 -0
  101. package/dist/src/interfaces/OpeningHours.d.ts +7 -0
  102. package/dist/src/interfaces/OpeningHours.js +2 -0
  103. package/dist/src/interfaces/Payment.d.ts +36 -0
  104. package/dist/src/interfaces/Payment.js +2 -0
  105. package/dist/src/interfaces/Recipe.d.ts +58 -0
  106. package/dist/src/interfaces/Recipe.js +2 -0
  107. package/dist/src/interfaces/Resevation.d.ts +25 -0
  108. package/dist/src/interfaces/Resevation.js +2 -0
  109. package/dist/src/interfaces/Restaurant.d.ts +24 -0
  110. package/dist/src/interfaces/Restaurant.js +2 -0
  111. package/dist/src/interfaces/Table.d.ts +54 -0
  112. package/dist/src/interfaces/Table.js +2 -0
  113. package/dist/src/interfaces/Vendor.d.ts +19 -0
  114. package/dist/src/interfaces/Vendor.js +2 -0
  115. package/dist/src/interfaces/domain/Address.d.ts +7 -0
  116. package/dist/src/interfaces/domain/Address.js +2 -0
  117. package/dist/src/interfaces/domain/Customer.d.ts +21 -0
  118. package/dist/src/interfaces/domain/Customer.js +2 -0
  119. package/dist/src/interfaces/domain/Delivery.d.ts +62 -0
  120. package/dist/src/interfaces/domain/Delivery.js +2 -0
  121. package/dist/src/interfaces/domain/Employee.d.ts +19 -0
  122. package/dist/src/interfaces/domain/Employee.js +2 -0
  123. package/dist/src/interfaces/domain/Ingredient.d.ts +42 -0
  124. package/dist/src/interfaces/domain/Ingredient.js +2 -0
  125. package/dist/src/interfaces/domain/Inventory.d.ts +26 -0
  126. package/dist/src/interfaces/domain/Inventory.js +2 -0
  127. package/dist/src/interfaces/domain/Kitchen.d.ts +72 -0
  128. package/dist/src/interfaces/domain/Kitchen.js +2 -0
  129. package/dist/src/interfaces/domain/Location.d.ts +14 -0
  130. package/dist/src/interfaces/domain/Location.js +2 -0
  131. package/dist/src/interfaces/domain/Menu.d.ts +72 -0
  132. package/dist/src/interfaces/domain/Menu.js +2 -0
  133. package/dist/src/interfaces/domain/Money.d.ts +5 -0
  134. package/dist/src/interfaces/domain/Money.js +2 -0
  135. package/dist/src/interfaces/domain/OpeningHours.d.ts +7 -0
  136. package/dist/src/interfaces/domain/OpeningHours.js +2 -0
  137. package/dist/src/interfaces/domain/Payment.d.ts +36 -0
  138. package/dist/src/interfaces/domain/Payment.js +2 -0
  139. package/dist/src/interfaces/domain/Recipe.d.ts +58 -0
  140. package/dist/src/interfaces/domain/Recipe.js +2 -0
  141. package/dist/src/interfaces/domain/Reservation.d.ts +25 -0
  142. package/dist/src/interfaces/domain/Reservation.js +2 -0
  143. package/dist/src/interfaces/domain/Restaurant.d.ts +24 -0
  144. package/dist/src/interfaces/domain/Restaurant.js +2 -0
  145. package/dist/src/interfaces/domain/Table.d.ts +54 -0
  146. package/dist/src/interfaces/domain/Table.js +2 -0
  147. package/dist/src/interfaces/domain/Vendor.d.ts +19 -0
  148. package/dist/src/interfaces/domain/Vendor.js +2 -0
  149. package/dist/src/interfaces/index.d.ts +17 -0
  150. package/dist/src/interfaces/index.js +33 -0
  151. package/dist/src/orders/OrderModule.d.ts +2 -0
  152. package/dist/src/orders/OrderModule.js +28 -0
  153. package/dist/src/orders/domain/Enums.d.ts +16 -0
  154. package/dist/src/orders/domain/Enums.js +21 -0
  155. package/dist/src/orders/domain/Order.d.ts +89 -0
  156. package/dist/src/orders/domain/Order.js +2 -0
  157. package/dist/src/orders/domain/OrderItem.d.ts +53 -0
  158. package/dist/src/orders/domain/OrderItem.js +2 -0
  159. package/dist/src/orders/domain/posDto/SquareOrder.d.ts +347 -0
  160. package/dist/src/orders/domain/posDto/SquareOrder.js +8 -0
  161. package/dist/src/orders/index.d.ts +7 -0
  162. package/dist/src/orders/index.js +25 -0
  163. package/dist/src/orders/ioc/index.d.ts +3 -0
  164. package/dist/src/orders/ioc/index.js +6 -0
  165. package/dist/src/orders/services/square/SquareOrderService.d.ts +22 -0
  166. package/dist/src/orders/services/square/SquareOrderService.js +4 -0
  167. package/dist/src/orders/services/square/SquareOrderServiceImpl.d.ts +32 -0
  168. package/dist/src/orders/services/square/SquareOrderServiceImpl.js +308 -0
  169. package/jest.config.js +8 -0
  170. package/package.json +43 -0
  171. package/src/enums/domain/DayOfWeek.ts +9 -0
  172. package/src/enums/domain/Delivery.ts +20 -0
  173. package/src/enums/domain/Employee.ts +12 -0
  174. package/src/enums/domain/Ingredient.ts +33 -0
  175. package/src/enums/domain/Inventory.ts +39 -0
  176. package/src/enums/domain/Kitchen.ts +89 -0
  177. package/src/enums/domain/Menu.ts +14 -0
  178. package/src/enums/domain/Payments.ts +41 -0
  179. package/src/enums/domain/Recipe.ts +15 -0
  180. package/src/enums/domain/Reservation.ts +18 -0
  181. package/src/enums/domain/Restaurant.ts +41 -0
  182. package/src/enums/domain/Table.ts +39 -0
  183. package/src/enums/domain/Vendors.ts +45 -0
  184. package/src/enums/index.ts +13 -0
  185. package/src/eventBridge/EventBridgeModule.ts +14 -0
  186. package/src/eventBridge/domain/EventBridgeOptions.ts +8 -0
  187. package/src/eventBridge/ioc/index.ts +3 -0
  188. package/src/eventBridge/ioc.ts +3 -0
  189. package/src/eventBridge/service/EventBridgeService.ts +8 -0
  190. package/src/eventBridge/service/EventBridgeServiceImpl.ts +67 -0
  191. package/src/events/domain/CustomerEvents.ts +79 -0
  192. package/src/events/domain/DeliveryEvents.ts +82 -0
  193. package/src/events/domain/DomainEvent.ts +17 -0
  194. package/src/events/domain/DomainEventType.ts +143 -0
  195. package/src/events/domain/EmployeeEvents.ts +74 -0
  196. package/src/events/domain/InventoryEvents.ts +184 -0
  197. package/src/events/domain/OrderEvents.ts +142 -0
  198. package/src/events/domain/PaymentEvents.ts +92 -0
  199. package/src/events/domain/RecipeEvents.ts +64 -0
  200. package/src/events/domain/ReservationEvents.ts +133 -0
  201. package/src/events/domain/RestaurantEvents.ts +89 -0
  202. package/src/events/domain/TableEvents.ts +102 -0
  203. package/src/events/domain/VendorEvents.ts +42 -0
  204. package/src/events/index.ts +13 -0
  205. package/src/index.ts +4 -0
  206. package/src/interfaces/domain/Address.ts +7 -0
  207. package/src/interfaces/domain/Customer.ts +33 -0
  208. package/src/interfaces/domain/Delivery.ts +96 -0
  209. package/src/interfaces/domain/Employee.ts +29 -0
  210. package/src/interfaces/domain/Ingredient.ts +68 -0
  211. package/src/interfaces/domain/Inventory.ts +52 -0
  212. package/src/interfaces/domain/Kitchen.ts +128 -0
  213. package/src/interfaces/domain/Location.ts +20 -0
  214. package/src/interfaces/domain/Menu.ts +121 -0
  215. package/src/interfaces/domain/Money.ts +6 -0
  216. package/src/interfaces/domain/OpeningHours.ts +11 -0
  217. package/src/interfaces/domain/Payment.ts +45 -0
  218. package/src/interfaces/domain/Recipe.ts +91 -0
  219. package/src/interfaces/domain/Reservation.ts +45 -0
  220. package/src/interfaces/domain/Restaurant.ts +45 -0
  221. package/src/interfaces/domain/Table.ts +69 -0
  222. package/src/interfaces/domain/Vendor.ts +35 -0
  223. package/src/interfaces/index.ts +17 -0
  224. package/src/orders/OrderModule.ts +17 -0
  225. package/src/orders/domain/Enums.ts +17 -0
  226. package/src/orders/domain/Order.ts +109 -0
  227. package/src/orders/domain/OrderItem.ts +68 -0
  228. package/src/orders/domain/posDto/SquareOrder.ts +346 -0
  229. package/src/orders/index.ts +7 -0
  230. package/src/orders/ioc/index.ts +3 -0
  231. package/src/orders/services/square/SquareOrderService.ts +27 -0
  232. package/src/orders/services/square/SquareOrderServiceImpl.ts +330 -0
  233. package/tsconfig.json +18 -0
@@ -0,0 +1,102 @@
1
+ import { DomainEvent } from "./DomainEvent";
2
+ import { ITable } from "../../interfaces/domain/Table";
3
+ import { TableStatus } from "../../enums/domain/Table";
4
+
5
+ // ─── Lifecycle Events ──────────────────────────────────────────────────────────
6
+
7
+ export interface TableCreated extends DomainEvent {
8
+ eventType: "TableCreated";
9
+ aggregateType: "Table";
10
+ table: ITable;
11
+ }
12
+
13
+ export interface TableUpdated extends DomainEvent {
14
+ eventType: "TableUpdated";
15
+ aggregateType: "Table";
16
+ before: Partial<ITable>;
17
+ after: Partial<ITable>;
18
+ }
19
+
20
+ // ─── Status Events ─────────────────────────────────────────────────────────────
21
+
22
+ export interface TableOpened extends DomainEvent {
23
+ eventType: "TableOpened";
24
+ aggregateType: "Table";
25
+ previousStatus: TableStatus;
26
+ openedBy?: string;
27
+ }
28
+
29
+ export interface TableOccupied extends DomainEvent {
30
+ eventType: "TableOccupied";
31
+ aggregateType: "Table";
32
+ partySize: number;
33
+ reservationId?: string;
34
+ seatedBy?: string;
35
+ occupiedAt: Date;
36
+ }
37
+
38
+ export interface TableReserved extends DomainEvent {
39
+ eventType: "TableReserved";
40
+ aggregateType: "Table";
41
+ reservationId: string;
42
+ reservedAt: Date;
43
+ reservedBy?: string;
44
+ }
45
+
46
+ export interface TableReleased extends DomainEvent {
47
+ eventType: "TableReleased";
48
+ aggregateType: "Table";
49
+ previousStatus: TableStatus;
50
+ releasedBy?: string;
51
+ releasedAt: Date;
52
+ }
53
+
54
+ // ─── Combination Events ────────────────────────────────────────────────────────
55
+
56
+ export interface TableMerged extends DomainEvent {
57
+ eventType: "TableMerged";
58
+ aggregateType: "Table";
59
+ /** IDs of all tables joined into this combined group. */
60
+ mergedTableIds: string[];
61
+ combinedCapacity: number;
62
+ mergedBy?: string;
63
+ }
64
+
65
+ export interface TableSplit extends DomainEvent {
66
+ eventType: "TableSplit";
67
+ aggregateType: "Table";
68
+ /** IDs of tables that were part of the combined group before the split. */
69
+ previousTableIds: string[];
70
+ splitBy?: string;
71
+ }
72
+
73
+ // ─── Service Events ────────────────────────────────────────────────────────────
74
+
75
+ export interface TableOutOfService extends DomainEvent {
76
+ eventType: "TableOutOfService";
77
+ aggregateType: "Table";
78
+ reason?: string;
79
+ markedBy?: string;
80
+ markedAt: Date;
81
+ }
82
+
83
+ export interface TableReturnedToService extends DomainEvent {
84
+ eventType: "TableReturnedToService";
85
+ aggregateType: "Table";
86
+ returnedBy?: string;
87
+ returnedAt: Date;
88
+ }
89
+
90
+ // ─── Union Type ────────────────────────────────────────────────────────────────
91
+
92
+ export type TableEvent =
93
+ | TableCreated
94
+ | TableUpdated
95
+ | TableOpened
96
+ | TableOccupied
97
+ | TableReserved
98
+ | TableReleased
99
+ | TableMerged
100
+ | TableSplit
101
+ | TableOutOfService
102
+ | TableReturnedToService;
@@ -0,0 +1,42 @@
1
+ import { DomainEvent } from "./DomainEvent";
2
+ import { IVendor } from "../../interfaces/domain/Vendor";
3
+ import { VendorStatus } from "../../enums/domain/Vendors";
4
+
5
+
6
+ // ─── Lifecycle Events ──────────────────────────────────────────────────────────
7
+
8
+ export interface VendorCreated extends DomainEvent {
9
+ eventType: "VendorCreated";
10
+ aggregateType: "Vendor";
11
+ vendor: IVendor;
12
+ }
13
+
14
+ export interface VendorUpdated extends DomainEvent {
15
+ eventType: "VendorUpdated";
16
+ aggregateType: "Vendor";
17
+ before: Partial<IVendor>;
18
+ after: Partial<IVendor>;
19
+ }
20
+
21
+ export interface VendorActivated extends DomainEvent {
22
+ eventType: "VendorActivated";
23
+ aggregateType: "Vendor";
24
+ previousStatus: VendorStatus;
25
+ activatedBy?: string;
26
+ }
27
+
28
+ export interface VendorDeactivated extends DomainEvent {
29
+ eventType: "VendorDeactivated";
30
+ aggregateType: "Vendor";
31
+ previousStatus: VendorStatus;
32
+ reason?: string;
33
+ deactivatedBy?: string;
34
+ }
35
+
36
+ // ─── Union Type ────────────────────────────────────────────────────────────────
37
+
38
+ export type VendorEvent =
39
+ | VendorCreated
40
+ | VendorUpdated
41
+ | VendorActivated
42
+ | VendorDeactivated;
@@ -0,0 +1,13 @@
1
+ export * from "./domain/VendorEvents";
2
+ export * from "./domain/RestaurantEvents";
3
+ export * from "./domain/TableEvents";
4
+ export * from "./domain/EmployeeEvents";
5
+ export * from "./domain/CustomerEvents";
6
+ export * from "./domain/ReservationEvents";
7
+ export * from "./domain/OrderEvents";
8
+ export * from "./domain/PaymentEvents";
9
+ export * from "./domain/RecipeEvents";
10
+ export * from "./domain/InventoryEvents";
11
+ export * from "./domain/DeliveryEvents";
12
+ export * from "./domain/DomainEvent";
13
+ export * from "./domain/DomainEventType";
package/src/index.ts ADDED
@@ -0,0 +1,4 @@
1
+ export * from "./events";
2
+ export * from "./enums";
3
+ export * from "./orders";
4
+ export * from "./interfaces";
@@ -0,0 +1,7 @@
1
+ export interface IAddress {
2
+ street?: string;
3
+ city?: string;
4
+ state?: string;
5
+ postalCode?: string;
6
+ country?: string;
7
+ }
@@ -0,0 +1,33 @@
1
+ import { IAddress } from "./Address";
2
+
3
+ export interface ICustomer {
4
+ /**
5
+ * Internal customer identifier.
6
+ */
7
+ id: string;
8
+
9
+ /**
10
+ * Vendor customer identifier.
11
+ */
12
+ externalId?: string;
13
+
14
+ firstName?: string;
15
+
16
+ lastName?: string;
17
+
18
+ fullName?: string;
19
+
20
+ email?: string;
21
+
22
+ phoneNumber?: string;
23
+
24
+ loyaltyId?: string;
25
+
26
+ dateOfBirth?: Date;
27
+
28
+ address?: IAddress;
29
+
30
+ createdAt?: Date;
31
+
32
+ updatedAt?: Date;
33
+ }
@@ -0,0 +1,96 @@
1
+ import { DeliveryProvider, DeliveryStatus } from "../../enums/domain/Delivery";
2
+ import { IAddress } from "./Address";
3
+ import { Money } from "./Money";
4
+
5
+ export interface IDeliveryDriver {
6
+ id?: string;
7
+
8
+ name: string;
9
+
10
+ phoneNumber?: string;
11
+
12
+ /** External driver ID from the delivery provider. */
13
+ externalId?: string;
14
+
15
+ /** Real-time latitude of the driver. */
16
+ latitude?: number;
17
+
18
+ /** Real-time longitude of the driver. */
19
+ longitude?: number;
20
+ }
21
+
22
+ export interface IDeliveryTracking {
23
+ /** Current latitude of the delivery. */
24
+ latitude?: number;
25
+
26
+ /** Current longitude of the delivery. */
27
+ longitude?: number;
28
+
29
+ /** Estimated arrival time. */
30
+ estimatedArrivalAt?: Date;
31
+
32
+ lastUpdatedAt: Date;
33
+ }
34
+
35
+ export interface IDeliveryProvider {
36
+ /** Name of the delivery provider. */
37
+ name: string;
38
+
39
+ code: DeliveryProvider;
40
+
41
+ /** External delivery identifier from the provider. */
42
+ externalId?: string;
43
+
44
+ /** Tracking URL for the delivery, if available. */
45
+ trackingUrl?: string;
46
+ }
47
+
48
+ export interface IDelivery {
49
+ id: string;
50
+
51
+ restaurantId: string;
52
+
53
+ orderId: string;
54
+
55
+ /** External delivery identifier from the provider. */
56
+ externalId?: string;
57
+
58
+ provider: IDeliveryProvider;
59
+
60
+ status: DeliveryStatus;
61
+
62
+ driver?: IDeliveryDriver;
63
+
64
+ /** Destination address for the delivery. */
65
+ deliveryAddress: IAddress;
66
+
67
+ /** Delivery fee charged to the customer. */
68
+ deliveryFee?: Money;
69
+
70
+ /** Tip for the driver. */
71
+ driverTip?: Money;
72
+
73
+ /** Estimated delivery time in minutes from order placement. */
74
+ estimatedDeliveryMinutes?: number;
75
+
76
+ /** Distance to the delivery address in kilometres. */
77
+ distanceKm?: number;
78
+
79
+ tracking?: IDeliveryTracking;
80
+
81
+ /** Free-text delivery instructions from the customer. */
82
+ deliveryInstructions?: string;
83
+
84
+ /** Reason for failure or cancellation, if applicable. */
85
+ failureReason?: string;
86
+
87
+ scheduledAt?: Date;
88
+
89
+ pickedUpAt?: Date;
90
+
91
+ deliveredAt?: Date;
92
+
93
+ createdAt: Date;
94
+
95
+ updatedAt: Date;
96
+ }
@@ -0,0 +1,29 @@
1
+ import { EmployeeRole } from "../../enums/domain/Employee";
2
+
3
+ export interface IEmployee {
4
+ /**
5
+ * Internal employee identifier.
6
+ */
7
+ id: string;
8
+
9
+ /**
10
+ * Vendor employee identifier.
11
+ */
12
+ externalId?: string;
13
+
14
+ firstName: string;
15
+
16
+ lastName: string;
17
+
18
+ fullName?: string;
19
+
20
+ email?: string;
21
+
22
+ phoneNumber?: string;
23
+
24
+ role: EmployeeRole;
25
+
26
+ active: boolean;
27
+
28
+ hiredAt?: Date;
29
+ }
@@ -0,0 +1,68 @@
1
+ import { InventoryUnit } from "../../enums/domain/Inventory";
2
+ import { Money } from "./Money";
3
+ import { IngredientStatus, AllergenType, DietaryFlag } from "../../enums/domain/Ingredient";
4
+
5
+ export interface INutritionalInfo {
6
+ /** Per 100 g or 100 ml of the ingredient. */
7
+ per100g: boolean;
8
+
9
+ calories?: number;
10
+
11
+ protein?: number;
12
+
13
+ carbohydrates?: number;
14
+
15
+ sugar?: number;
16
+
17
+ fat?: number;
18
+
19
+ saturatedFat?: number;
20
+
21
+ fiber?: number;
22
+
23
+ sodium?: number;
24
+ }
25
+
26
+ export interface IIngredient {
27
+ id: string;
28
+
29
+ restaurantId: string;
30
+
31
+ /** Human-readable name (e.g. "Whole Wheat Flour"). */
32
+ name: string;
33
+
34
+ /** Optional short code used in recipes and purchase orders. */
35
+ sku?: string;
36
+
37
+ description?: string;
38
+
39
+ status: IngredientStatus;
40
+
41
+ /** Unit used when measuring this ingredient in recipes. */
42
+ unit: InventoryUnit;
43
+
44
+ /** Standard purchase cost per unit. */
45
+ unitCost?: Money;
46
+
47
+ /** Link to the corresponding inventory item. */
48
+ inventoryItemId?: string;
49
+
50
+ allergens?: AllergenType[];
51
+
52
+ dietaryFlags?: DietaryFlag[];
53
+
54
+ nutritionalInfo?: INutritionalInfo;
55
+
56
+ /** Storage location or section (e.g. "Walk-in Cooler", "Dry Storage"). */
57
+ storageLocation?: string;
58
+
59
+ /** Minimum shelf life in days after opening. */
60
+ shelfLifeDays?: number;
61
+
62
+ /** Supplier or vendor reference. */
63
+ supplierId?: string;
64
+
65
+ createdAt: Date;
66
+
67
+ updatedAt: Date;
68
+ }
@@ -0,0 +1,52 @@
1
+ import { InventoryCategory, InventoryStatus, InventoryUnit } from "../../enums/domain/Inventory";
2
+
3
+ export interface IInventoryItem {
4
+ id: string;
5
+
6
+ restaurantId: string;
7
+
8
+ // Basic information
9
+ name: string;
10
+ sku: string;
11
+ category: InventoryCategory;
12
+
13
+ // Measurement
14
+ unit: InventoryUnit;
15
+
16
+ // Stock levels
17
+ quantityOnHand: number;
18
+ minimumStockLevel: number;
19
+ maximumStockLevel?: number;
20
+
21
+ // Cost
22
+ unitCost: number;
23
+
24
+ // Supplier
25
+ vendorId?: string;
26
+
27
+ // Storage
28
+ location?: string;
29
+
30
+ // Expiration
31
+ expiryDate?: Date;
32
+
33
+ status: InventoryStatus;
34
+
35
+ createdAt: Date;
36
+ updatedAt: Date;
37
+ }
38
+
39
+ export interface IInventory {
40
+
41
+ id: string;
42
+
43
+ restaurantId: string;
44
+
45
+
46
+ items: IInventoryItem[];
47
+
48
+
49
+ createdAt: Date;
50
+
51
+ updatedAt: Date;
52
+ }
@@ -0,0 +1,128 @@
1
+ import {
2
+ KitchenItemStatus,
3
+ KitchenPriority,
4
+ KitchenStationStatus,
5
+ KitchenStationType,
6
+ KitchenStatus,
7
+ KitchenTicketStatus
8
+ } from "../../enums/domain/Kitchen";
9
+
10
+ export interface KitchenStation {
11
+ id: string;
12
+
13
+ kitchenId: string;
14
+
15
+ name: string;
16
+
17
+ type: KitchenStationType;
18
+
19
+ status: KitchenStationStatus;
20
+
21
+ createdAt: Date;
22
+ }
23
+
24
+ export interface Kitchen {
25
+ id: string;
26
+
27
+ restaurantId: string;
28
+
29
+ name: string;
30
+
31
+ status: KitchenStatus;
32
+
33
+ stations: KitchenStation[];
34
+
35
+ createdAt: Date;
36
+ updatedAt: Date;
37
+ }
38
+
39
+ export interface KitchenTicket {
40
+
41
+ id: string;
42
+
43
+ restaurantId: string;
44
+
45
+ orderId: string;
46
+
47
+ stationId?: string;
48
+
49
+
50
+ items: KitchenTicketItem[];
51
+
52
+
53
+ status: KitchenTicketStatus;
54
+
55
+
56
+ priority: KitchenPriority;
57
+
58
+
59
+ createdAt: Date;
60
+
61
+ startedAt?: Date;
62
+
63
+ completedAt?: Date;
64
+ }
65
+
66
+ export interface KitchenTicketItem {
67
+
68
+ id: string;
69
+
70
+ /**
71
+ * Parent kitchen ticket
72
+ */
73
+ kitchenTicketId: string;
74
+
75
+
76
+ /**
77
+ * Original order item reference
78
+ */
79
+ orderItemId: string;
80
+
81
+
82
+ /**
83
+ * Menu item being prepared
84
+ */
85
+ menuItemId: string;
86
+
87
+
88
+ /**
89
+ * Snapshot of item name at preparation time
90
+ * (important if menu changes later)
91
+ */
92
+ menuItemName: string;
93
+
94
+
95
+ /**
96
+ * Number of items to prepare
97
+ */
98
+ quantity: number;
99
+
100
+
101
+ /**
102
+ * Kitchen preparation status
103
+ */
104
+ status: KitchenItemStatus;
105
+
106
+
107
+ /**
108
+ * Preparation instructions
109
+ */
110
+ notes?: string;
111
+
112
+
113
+ /**
114
+ * Which kitchen station handles it
115
+ */
116
+ stationId?: string;
117
+
118
+
119
+ /**
120
+ * Timing information
121
+ */
122
+ startedAt?: Date;
123
+
124
+ completedAt?: Date;
125
+
126
+
127
+ createdAt: Date;
128
+ }
@@ -0,0 +1,20 @@
1
+ export interface ILocation {
2
+ id?: string;
3
+
4
+ name?: string;
5
+
6
+ addressLine1: string;
7
+ addressLine2?: string;
8
+
9
+ city: string;
10
+ stateOrProvince: string;
11
+ postalCode: string;
12
+ country: string;
13
+
14
+ latitude?: number;
15
+ longitude?: number;
16
+
17
+ timezone?: string;
18
+
19
+ instructions?: string;
20
+ }