@zeeshan60/event-processor 1.0.26 → 1.0.27

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 (274) hide show
  1. package/dist/ActivityEventHandler.d.ts +1 -2
  2. package/dist/ActivityEventHandler.d.ts.map +1 -1
  3. package/dist/ActivityEventHandler.js +4 -27
  4. package/dist/ActivityEventHandler.js.map +1 -1
  5. package/dist/ActivityLogEvents.d.ts +5 -1
  6. package/dist/ActivityLogEvents.d.ts.map +1 -1
  7. package/dist/ActivityLogEvents.js +5 -0
  8. package/dist/ActivityLogEvents.js.map +1 -1
  9. package/dist/BaseEventHandler.d.ts +4 -3
  10. package/dist/BaseEventHandler.d.ts.map +1 -1
  11. package/dist/BaseEventHandler.js +35 -0
  12. package/dist/BaseEventHandler.js.map +1 -1
  13. package/dist/EventProcessorSDK.d.ts +29 -3
  14. package/dist/EventProcessorSDK.d.ts.map +1 -1
  15. package/dist/EventProcessorSDK.js +55 -2
  16. package/dist/EventProcessorSDK.js.map +1 -1
  17. package/dist/ExpenseAccountEventHandler.d.ts +24 -0
  18. package/dist/ExpenseAccountEventHandler.d.ts.map +1 -0
  19. package/dist/ExpenseAccountEventHandler.js +282 -0
  20. package/dist/ExpenseAccountEventHandler.js.map +1 -0
  21. package/dist/ExpenseAccountEvents.d.ts +150 -0
  22. package/dist/ExpenseAccountEvents.d.ts.map +1 -0
  23. package/dist/ExpenseAccountEvents.js +274 -0
  24. package/dist/ExpenseAccountEvents.js.map +1 -0
  25. package/dist/ExpenseEventHandler.d.ts +24 -0
  26. package/dist/ExpenseEventHandler.d.ts.map +1 -0
  27. package/dist/ExpenseEventHandler.js +180 -0
  28. package/dist/ExpenseEventHandler.js.map +1 -0
  29. package/dist/ExpenseEvents.d.ts +152 -0
  30. package/dist/ExpenseEvents.d.ts.map +1 -0
  31. package/dist/ExpenseEvents.js +304 -0
  32. package/dist/ExpenseEvents.js.map +1 -0
  33. package/dist/FriendEventHandler.d.ts +3 -4
  34. package/dist/FriendEventHandler.d.ts.map +1 -1
  35. package/dist/FriendEventHandler.js +24 -32
  36. package/dist/FriendEventHandler.js.map +1 -1
  37. package/dist/FriendEvents.d.ts +39 -0
  38. package/dist/FriendEvents.d.ts.map +1 -1
  39. package/dist/FriendEvents.js +67 -1
  40. package/dist/FriendEvents.js.map +1 -1
  41. package/dist/GroupEventHandler.d.ts +1 -4
  42. package/dist/GroupEventHandler.d.ts.map +1 -1
  43. package/dist/GroupEventHandler.js +16 -41
  44. package/dist/GroupEventHandler.js.map +1 -1
  45. package/dist/GroupEvents.d.ts +12 -0
  46. package/dist/GroupEvents.d.ts.map +1 -1
  47. package/dist/GroupEvents.js +13 -0
  48. package/dist/GroupEvents.js.map +1 -1
  49. package/dist/GroupTransactionEventHandler.d.ts +1 -4
  50. package/dist/GroupTransactionEventHandler.d.ts.map +1 -1
  51. package/dist/GroupTransactionEventHandler.js +8 -33
  52. package/dist/GroupTransactionEventHandler.js.map +1 -1
  53. package/dist/GroupTransactionEvents.d.ts +18 -0
  54. package/dist/GroupTransactionEvents.d.ts.map +1 -1
  55. package/dist/GroupTransactionEvents.js +19 -0
  56. package/dist/GroupTransactionEvents.js.map +1 -1
  57. package/dist/ModelChangeEmitter.d.ts +3 -4
  58. package/dist/ModelChangeEmitter.d.ts.map +1 -1
  59. package/dist/ModelChangeEmitter.js +2 -2
  60. package/dist/ModelChangeEmitter.js.map +1 -1
  61. package/dist/TransactionEventHandler.d.ts +1 -3
  62. package/dist/TransactionEventHandler.d.ts.map +1 -1
  63. package/dist/TransactionEventHandler.js +15 -54
  64. package/dist/TransactionEventHandler.js.map +1 -1
  65. package/dist/TransactionEvents.d.ts +20 -0
  66. package/dist/TransactionEvents.d.ts.map +1 -1
  67. package/dist/TransactionEvents.js +21 -0
  68. package/dist/TransactionEvents.js.map +1 -1
  69. package/dist/UserEventHandler.d.ts +1 -3
  70. package/dist/UserEventHandler.d.ts.map +1 -1
  71. package/dist/UserEventHandler.js +6 -31
  72. package/dist/UserEventHandler.js.map +1 -1
  73. package/dist/UserEvents.d.ts +16 -0
  74. package/dist/UserEvents.d.ts.map +1 -1
  75. package/dist/UserEvents.js +17 -0
  76. package/dist/UserEvents.js.map +1 -1
  77. package/dist/__tests__/test-helpers/IMActivityLogEventStore.d.ts +1 -0
  78. package/dist/__tests__/test-helpers/IMActivityLogEventStore.d.ts.map +1 -1
  79. package/dist/__tests__/test-helpers/IMActivityLogEventStore.js +3 -0
  80. package/dist/__tests__/test-helpers/IMActivityLogEventStore.js.map +1 -1
  81. package/dist/__tests__/test-helpers/IMActivityLogModelStore.d.ts +4 -0
  82. package/dist/__tests__/test-helpers/IMActivityLogModelStore.d.ts.map +1 -1
  83. package/dist/__tests__/test-helpers/IMActivityLogModelStore.js +8 -0
  84. package/dist/__tests__/test-helpers/IMActivityLogModelStore.js.map +1 -1
  85. package/dist/__tests__/test-helpers/IMCurrencyStore.d.ts.map +1 -1
  86. package/dist/__tests__/test-helpers/IMCurrencyStore.js.map +1 -1
  87. package/dist/__tests__/test-helpers/IMExpenseAccountEventStore.d.ts +9 -0
  88. package/dist/__tests__/test-helpers/IMExpenseAccountEventStore.d.ts.map +1 -0
  89. package/dist/__tests__/test-helpers/IMExpenseAccountEventStore.js +22 -0
  90. package/dist/__tests__/test-helpers/IMExpenseAccountEventStore.js.map +1 -0
  91. package/dist/__tests__/test-helpers/IMExpenseAccountModelStore.d.ts +15 -0
  92. package/dist/__tests__/test-helpers/IMExpenseAccountModelStore.d.ts.map +1 -0
  93. package/dist/__tests__/test-helpers/IMExpenseAccountModelStore.js +67 -0
  94. package/dist/__tests__/test-helpers/IMExpenseAccountModelStore.js.map +1 -0
  95. package/dist/__tests__/test-helpers/IMExpenseEventStore.d.ts +9 -0
  96. package/dist/__tests__/test-helpers/IMExpenseEventStore.d.ts.map +1 -0
  97. package/dist/__tests__/test-helpers/IMExpenseEventStore.js +22 -0
  98. package/dist/__tests__/test-helpers/IMExpenseEventStore.js.map +1 -0
  99. package/dist/__tests__/test-helpers/IMExpenseModelStore.d.ts +16 -0
  100. package/dist/__tests__/test-helpers/IMExpenseModelStore.d.ts.map +1 -0
  101. package/dist/__tests__/test-helpers/IMExpenseModelStore.js +76 -0
  102. package/dist/__tests__/test-helpers/IMExpenseModelStore.js.map +1 -0
  103. package/dist/__tests__/test-helpers/IMFriendEventStore.d.ts +1 -0
  104. package/dist/__tests__/test-helpers/IMFriendEventStore.d.ts.map +1 -1
  105. package/dist/__tests__/test-helpers/IMFriendEventStore.js +3 -0
  106. package/dist/__tests__/test-helpers/IMFriendEventStore.js.map +1 -1
  107. package/dist/__tests__/test-helpers/IMFriendModelStore.d.ts +2 -0
  108. package/dist/__tests__/test-helpers/IMFriendModelStore.d.ts.map +1 -1
  109. package/dist/__tests__/test-helpers/IMFriendModelStore.js +20 -0
  110. package/dist/__tests__/test-helpers/IMFriendModelStore.js.map +1 -1
  111. package/dist/__tests__/test-helpers/IMGroupEventStore.d.ts +1 -0
  112. package/dist/__tests__/test-helpers/IMGroupEventStore.d.ts.map +1 -1
  113. package/dist/__tests__/test-helpers/IMGroupEventStore.js +3 -0
  114. package/dist/__tests__/test-helpers/IMGroupEventStore.js.map +1 -1
  115. package/dist/__tests__/test-helpers/IMGroupModelStore.d.ts.map +1 -1
  116. package/dist/__tests__/test-helpers/IMGroupModelStore.js.map +1 -1
  117. package/dist/__tests__/test-helpers/IMGroupTransactionEventStore.d.ts +1 -0
  118. package/dist/__tests__/test-helpers/IMGroupTransactionEventStore.d.ts.map +1 -1
  119. package/dist/__tests__/test-helpers/IMGroupTransactionEventStore.js +4 -0
  120. package/dist/__tests__/test-helpers/IMGroupTransactionEventStore.js.map +1 -1
  121. package/dist/__tests__/test-helpers/IMGroupTransactionModelStore.d.ts.map +1 -1
  122. package/dist/__tests__/test-helpers/IMGroupTransactionModelStore.js.map +1 -1
  123. package/dist/__tests__/test-helpers/IMTransactionEventStore.d.ts.map +1 -1
  124. package/dist/__tests__/test-helpers/IMTransactionEventStore.js.map +1 -1
  125. package/dist/__tests__/test-helpers/IMTransactionModelStore.d.ts.map +1 -1
  126. package/dist/__tests__/test-helpers/IMTransactionModelStore.js.map +1 -1
  127. package/dist/__tests__/test-helpers/IMUserEventStore.d.ts +1 -0
  128. package/dist/__tests__/test-helpers/IMUserEventStore.d.ts.map +1 -1
  129. package/dist/__tests__/test-helpers/IMUserEventStore.js +3 -0
  130. package/dist/__tests__/test-helpers/IMUserEventStore.js.map +1 -1
  131. package/dist/__tests__/test-helpers/IMUserModelStore.d.ts.map +1 -1
  132. package/dist/__tests__/test-helpers/IMUserModelStore.js.map +1 -1
  133. package/dist/__tests__/test-helpers/MockFirebaseAdapter.d.ts.map +1 -1
  134. package/dist/__tests__/test-helpers/MockFirebaseAdapter.js.map +1 -1
  135. package/dist/adapters/FirebaseAdapter.d.ts.map +1 -1
  136. package/dist/client/controllers/ActivityController.d.ts +7 -0
  137. package/dist/client/controllers/ActivityController.d.ts.map +1 -0
  138. package/dist/client/controllers/ActivityController.js +35 -0
  139. package/dist/client/controllers/ActivityController.js.map +1 -0
  140. package/dist/client/controllers/ExpenseAccountController.d.ts +19 -0
  141. package/dist/client/controllers/ExpenseAccountController.d.ts.map +1 -0
  142. package/dist/client/controllers/ExpenseAccountController.js +249 -0
  143. package/dist/client/controllers/ExpenseAccountController.js.map +1 -0
  144. package/dist/client/controllers/ExpenseController.d.ts +20 -0
  145. package/dist/client/controllers/ExpenseController.d.ts.map +1 -0
  146. package/dist/client/controllers/ExpenseController.js +304 -0
  147. package/dist/client/controllers/ExpenseController.js.map +1 -0
  148. package/dist/client/controllers/FriendController.d.ts.map +1 -1
  149. package/dist/client/controllers/FriendController.js +31 -6
  150. package/dist/client/controllers/FriendController.js.map +1 -1
  151. package/dist/client/controllers/TransactionController.d.ts.map +1 -1
  152. package/dist/client/controllers/TransactionController.js +25 -8
  153. package/dist/client/controllers/TransactionController.js.map +1 -1
  154. package/dist/client/controllers/UserController.d.ts.map +1 -1
  155. package/dist/client/controllers/UserController.js.map +1 -1
  156. package/dist/client/handlers/UIEventHandler.d.ts +0 -1
  157. package/dist/client/handlers/UIEventHandler.d.ts.map +1 -1
  158. package/dist/client/handlers/UIEventHandler.js +2 -8
  159. package/dist/client/handlers/UIEventHandler.js.map +1 -1
  160. package/dist/common/CurrencyRate.d.ts.map +1 -1
  161. package/dist/common/DomainEvents.d.ts +4 -0
  162. package/dist/common/DomainEvents.d.ts.map +1 -1
  163. package/dist/common/Event.d.ts +3 -0
  164. package/dist/common/Event.d.ts.map +1 -1
  165. package/dist/common/EventTypes.d.ts +67 -0
  166. package/dist/common/EventTypes.d.ts.map +1 -0
  167. package/dist/common/EventTypes.js +76 -0
  168. package/dist/common/EventTypes.js.map +1 -0
  169. package/dist/common/LoggingContext.d.ts.map +1 -1
  170. package/dist/common/Model.d.ts.map +1 -1
  171. package/dist/contracts/activityLogs/index.d.ts +13 -0
  172. package/dist/contracts/activityLogs/index.d.ts.map +1 -0
  173. package/dist/contracts/activityLogs/index.js +3 -0
  174. package/dist/contracts/activityLogs/index.js.map +1 -0
  175. package/dist/contracts/common/index.d.ts +7 -0
  176. package/dist/contracts/common/index.d.ts.map +1 -1
  177. package/dist/contracts/expenses/index.d.ts.map +1 -1
  178. package/dist/contracts/expenses/index.js.map +1 -1
  179. package/dist/contracts/friends/index.d.ts.map +1 -1
  180. package/dist/contracts/groups/index.d.ts.map +1 -1
  181. package/dist/contracts/index.d.ts +1 -0
  182. package/dist/contracts/index.d.ts.map +1 -1
  183. package/dist/contracts/index.js +1 -0
  184. package/dist/contracts/index.js.map +1 -1
  185. package/dist/contracts/shared/index.d.ts.map +1 -1
  186. package/dist/contracts/transactions/index.d.ts.map +1 -1
  187. package/dist/contracts/transactions/index.js.map +1 -1
  188. package/dist/contracts/users/index.d.ts.map +1 -1
  189. package/dist/converters/ActivityLogConverters.d.ts.map +1 -1
  190. package/dist/converters/ActivityLogConverters.js +1 -3
  191. package/dist/converters/ActivityLogConverters.js.map +1 -1
  192. package/dist/converters/EventConverterCore.d.ts +13 -1
  193. package/dist/converters/EventConverterCore.d.ts.map +1 -1
  194. package/dist/converters/EventConverterCore.js +14 -2
  195. package/dist/converters/EventConverterCore.js.map +1 -1
  196. package/dist/converters/ExpenseAccountConverters.d.ts +33 -0
  197. package/dist/converters/ExpenseAccountConverters.d.ts.map +1 -0
  198. package/dist/converters/ExpenseAccountConverters.js +142 -0
  199. package/dist/converters/ExpenseAccountConverters.js.map +1 -0
  200. package/dist/converters/ExpenseConverters.d.ts +21 -0
  201. package/dist/converters/ExpenseConverters.d.ts.map +1 -0
  202. package/dist/converters/ExpenseConverters.js +128 -0
  203. package/dist/converters/ExpenseConverters.js.map +1 -0
  204. package/dist/converters/FriendConverters.d.ts.map +1 -1
  205. package/dist/converters/FriendConverters.js.map +1 -1
  206. package/dist/converters/GroupConverters.d.ts.map +1 -1
  207. package/dist/converters/GroupConverters.js.map +1 -1
  208. package/dist/converters/GroupTransactionConverters.d.ts.map +1 -1
  209. package/dist/converters/GroupTransactionConverters.js.map +1 -1
  210. package/dist/converters/TransactionConverters.d.ts.map +1 -1
  211. package/dist/converters/TransactionConverters.js +4 -0
  212. package/dist/converters/TransactionConverters.js.map +1 -1
  213. package/dist/converters/UserConverters.d.ts.map +1 -1
  214. package/dist/converters/UserConverters.js.map +1 -1
  215. package/dist/converters/eventConverter.d.ts.map +1 -1
  216. package/dist/converters/eventConverter.js +57 -38
  217. package/dist/converters/eventConverter.js.map +1 -1
  218. package/dist/events.d.ts +8 -0
  219. package/dist/events.d.ts.map +1 -1
  220. package/dist/events.js +11 -1
  221. package/dist/events.js.map +1 -1
  222. package/dist/index.d.ts +10 -2
  223. package/dist/index.d.ts.map +1 -1
  224. package/dist/index.js +21 -1
  225. package/dist/index.js.map +1 -1
  226. package/dist/store/ActivityLogEventStore.d.ts +2 -2
  227. package/dist/store/ActivityLogEventStore.d.ts.map +1 -1
  228. package/dist/store/ActivityLogModelStore.d.ts +4 -0
  229. package/dist/store/ActivityLogModelStore.d.ts.map +1 -1
  230. package/dist/store/CurrencyStore.d.ts.map +1 -1
  231. package/dist/store/EventStore.d.ts +6 -0
  232. package/dist/store/EventStore.d.ts.map +1 -0
  233. package/dist/store/EventStore.js +3 -0
  234. package/dist/store/EventStore.js.map +1 -0
  235. package/dist/store/ExpenseAccountEventStore.d.ts +5 -0
  236. package/dist/store/ExpenseAccountEventStore.d.ts.map +1 -0
  237. package/dist/store/ExpenseAccountEventStore.js +3 -0
  238. package/dist/store/ExpenseAccountEventStore.js.map +1 -0
  239. package/dist/store/ExpenseAccountModelStore.d.ts +11 -0
  240. package/dist/store/ExpenseAccountModelStore.d.ts.map +1 -0
  241. package/dist/store/ExpenseAccountModelStore.js +3 -0
  242. package/dist/store/ExpenseAccountModelStore.js.map +1 -0
  243. package/dist/store/ExpenseEventStore.d.ts +5 -0
  244. package/dist/store/ExpenseEventStore.d.ts.map +1 -0
  245. package/dist/store/ExpenseEventStore.js +3 -0
  246. package/dist/store/ExpenseEventStore.js.map +1 -0
  247. package/dist/store/ExpenseModelStore.d.ts +12 -0
  248. package/dist/store/ExpenseModelStore.d.ts.map +1 -0
  249. package/dist/store/ExpenseModelStore.js +3 -0
  250. package/dist/store/ExpenseModelStore.js.map +1 -0
  251. package/dist/store/FriendEventStore.d.ts +2 -2
  252. package/dist/store/FriendEventStore.d.ts.map +1 -1
  253. package/dist/store/FriendModelStore.d.ts +2 -0
  254. package/dist/store/FriendModelStore.d.ts.map +1 -1
  255. package/dist/store/GroupEventStore.d.ts +2 -2
  256. package/dist/store/GroupEventStore.d.ts.map +1 -1
  257. package/dist/store/GroupModelStore.d.ts.map +1 -1
  258. package/dist/store/GroupTransactionEventStore.d.ts +2 -2
  259. package/dist/store/GroupTransactionEventStore.d.ts.map +1 -1
  260. package/dist/store/GroupTransactionModelStore.d.ts.map +1 -1
  261. package/dist/store/ModelStore.d.ts.map +1 -1
  262. package/dist/store/TransactionEventStore.d.ts +2 -3
  263. package/dist/store/TransactionEventStore.d.ts.map +1 -1
  264. package/dist/store/TransactionModelStore.d.ts.map +1 -1
  265. package/dist/store/UserEventStore.d.ts +2 -2
  266. package/dist/store/UserEventStore.d.ts.map +1 -1
  267. package/dist/store/UserModelStore.d.ts.map +1 -1
  268. package/dist/utils/BalanceUtil.d.ts.map +1 -1
  269. package/dist/utils/BalanceUtil.js.map +1 -1
  270. package/dist/utils/splitTypeUtils.d.ts +4 -0
  271. package/dist/utils/splitTypeUtils.d.ts.map +1 -1
  272. package/dist/utils/splitTypeUtils.js +21 -0
  273. package/dist/utils/splitTypeUtils.js.map +1 -1
  274. package/package.json +1 -1
@@ -0,0 +1,274 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExpenseAccountDeleted = exports.ExpenseAccountMembersRemoved = exports.ExpenseAccountMembersAdded = exports.ExpenseAccountUpdated = exports.ExpenseAccountCreated = void 0;
4
+ const ActivityLogEvents_1 = require("./ActivityLogEvents");
5
+ const uuid_1 = require("uuid");
6
+ const EventTypes_1 = require("./common/EventTypes");
7
+ class ExpenseAccountCreated {
8
+ constructor(props) {
9
+ this.eventMainType = EventTypes_1.EventMainType.EXPENSE_ACCOUNT;
10
+ this.eventType = EventTypes_1.EventType.EXPENSE_ACCOUNT_CREATED;
11
+ this.eventId = props.eventId;
12
+ this.userId = props.userId;
13
+ this.accountId = props.accountId;
14
+ this.name = props.name;
15
+ this.description = props.description;
16
+ this.photoUrl = props.photoUrl;
17
+ this.members = props.members;
18
+ this.createdAt = props.createdAt;
19
+ this.createdBy = props.createdBy;
20
+ this.streamId = props.streamId;
21
+ this.version = props.version;
22
+ this.systemGenerated = props.systemGenerated;
23
+ }
24
+ apply(_existing) {
25
+ return {
26
+ streamId: this.streamId,
27
+ userId: this.userId,
28
+ accountId: this.accountId,
29
+ name: this.name,
30
+ description: this.description,
31
+ photoUrl: this.photoUrl,
32
+ members: this.members ?? [],
33
+ createdAt: this.createdAt,
34
+ updatedAt: this.createdAt,
35
+ createdBy: this.createdBy,
36
+ updatedBy: this.createdBy,
37
+ version: this.version,
38
+ deleted: false,
39
+ };
40
+ }
41
+ activityLog(_existing, actorName) {
42
+ const actor = actorName ?? "You";
43
+ const logMessage = `${actor} created expense account "${this.name}"`;
44
+ return {
45
+ eventId: (0, uuid_1.v4)(),
46
+ userId: this.userId,
47
+ activityByUid: this.createdBy,
48
+ sourceStreamId: this.streamId,
49
+ sourceType: ActivityLogEvents_1.SourceType.ExpenseAccount,
50
+ logMessage,
51
+ date: this.createdAt,
52
+ createdAt: this.createdAt,
53
+ createdBy: this.createdBy,
54
+ streamId: (0, uuid_1.v4)(),
55
+ systemGenerated: true,
56
+ version: 1,
57
+ };
58
+ }
59
+ }
60
+ exports.ExpenseAccountCreated = ExpenseAccountCreated;
61
+ class ExpenseAccountUpdated {
62
+ constructor(props) {
63
+ this.eventMainType = EventTypes_1.EventMainType.EXPENSE_ACCOUNT;
64
+ this.eventType = EventTypes_1.EventType.EXPENSE_ACCOUNT_UPDATED;
65
+ this.eventId = props.eventId;
66
+ this.userId = props.userId;
67
+ this.name = props.name;
68
+ this.description = props.description;
69
+ this.photoUrl = props.photoUrl;
70
+ this.createdAt = props.createdAt;
71
+ this.createdBy = props.createdBy;
72
+ this.streamId = props.streamId;
73
+ this.version = props.version;
74
+ this.systemGenerated = props.systemGenerated;
75
+ }
76
+ apply(existing) {
77
+ if (!existing) {
78
+ throw new Error("ExpenseAccount must exist to update");
79
+ }
80
+ const existingAccount = existing;
81
+ return {
82
+ ...existingAccount,
83
+ name: this.name,
84
+ description: this.description,
85
+ photoUrl: this.photoUrl,
86
+ updatedAt: this.createdAt,
87
+ updatedBy: this.createdBy,
88
+ version: this.version,
89
+ };
90
+ }
91
+ activityLog(existing, actorName) {
92
+ if (!existing) {
93
+ return undefined;
94
+ }
95
+ const existingAccount = existing;
96
+ const actor = actorName ?? "You";
97
+ const logMessage = `${actor} updated expense account "${existingAccount.name}"`;
98
+ return {
99
+ eventId: (0, uuid_1.v4)(),
100
+ userId: existingAccount.userId,
101
+ activityByUid: this.createdBy,
102
+ sourceStreamId: this.streamId,
103
+ sourceType: ActivityLogEvents_1.SourceType.ExpenseAccount,
104
+ logMessage,
105
+ date: this.createdAt,
106
+ createdAt: this.createdAt,
107
+ createdBy: this.createdBy,
108
+ streamId: (0, uuid_1.v4)(),
109
+ systemGenerated: true,
110
+ version: 1,
111
+ };
112
+ }
113
+ }
114
+ exports.ExpenseAccountUpdated = ExpenseAccountUpdated;
115
+ class ExpenseAccountMembersAdded {
116
+ constructor(props) {
117
+ this.eventMainType = EventTypes_1.EventMainType.EXPENSE_ACCOUNT;
118
+ this.eventType = EventTypes_1.EventType.EXPENSE_ACCOUNT_MEMBERS_ADDED;
119
+ this.eventId = props.eventId;
120
+ this.userId = props.userId;
121
+ this.members = props.members;
122
+ this.createdAt = props.createdAt;
123
+ this.createdBy = props.createdBy;
124
+ this.streamId = props.streamId;
125
+ this.version = props.version;
126
+ this.systemGenerated = props.systemGenerated;
127
+ }
128
+ apply(existing) {
129
+ if (!existing) {
130
+ throw new Error("ExpenseAccount must exist to add members");
131
+ }
132
+ const existingAccount = existing;
133
+ const existingMembers = existingAccount.members ?? [];
134
+ const allMembers = [...existingMembers, ...this.members];
135
+ const uniqueMembers = Array.from(new Set(allMembers));
136
+ return {
137
+ ...existingAccount,
138
+ members: uniqueMembers,
139
+ updatedAt: this.createdAt,
140
+ updatedBy: this.createdBy,
141
+ version: this.version,
142
+ };
143
+ }
144
+ activityLog(existing, actorName) {
145
+ if (!existing) {
146
+ return undefined;
147
+ }
148
+ const existingAccount = existing;
149
+ const actor = actorName ?? "You";
150
+ const count = this.members.length;
151
+ const memberWord = count === 1 ? "member" : "members";
152
+ const logMessage = `${actor} added ${count} ${memberWord} to expense account "${existingAccount.name}"`;
153
+ return {
154
+ eventId: (0, uuid_1.v4)(),
155
+ userId: existingAccount.userId,
156
+ activityByUid: this.createdBy,
157
+ sourceStreamId: this.streamId,
158
+ sourceType: ActivityLogEvents_1.SourceType.ExpenseAccount,
159
+ logMessage,
160
+ date: this.createdAt,
161
+ createdAt: this.createdAt,
162
+ createdBy: this.createdBy,
163
+ streamId: (0, uuid_1.v4)(),
164
+ systemGenerated: true,
165
+ version: 1,
166
+ };
167
+ }
168
+ }
169
+ exports.ExpenseAccountMembersAdded = ExpenseAccountMembersAdded;
170
+ class ExpenseAccountMembersRemoved {
171
+ constructor(props) {
172
+ this.eventMainType = EventTypes_1.EventMainType.EXPENSE_ACCOUNT;
173
+ this.eventType = EventTypes_1.EventType.EXPENSE_ACCOUNT_MEMBERS_REMOVED;
174
+ this.eventId = props.eventId;
175
+ this.userId = props.userId;
176
+ this.members = props.members;
177
+ this.createdAt = props.createdAt;
178
+ this.createdBy = props.createdBy;
179
+ this.streamId = props.streamId;
180
+ this.version = props.version;
181
+ this.systemGenerated = props.systemGenerated;
182
+ }
183
+ apply(existing) {
184
+ if (!existing) {
185
+ throw new Error("ExpenseAccount must exist to remove members");
186
+ }
187
+ const existingAccount = existing;
188
+ const existingMembers = existingAccount.members ?? [];
189
+ const membersToRemoveSet = new Set(this.members);
190
+ const remainingMembers = existingMembers.filter((memberId) => !membersToRemoveSet.has(memberId));
191
+ return {
192
+ ...existingAccount,
193
+ members: remainingMembers,
194
+ updatedAt: this.createdAt,
195
+ updatedBy: this.createdBy,
196
+ version: this.version,
197
+ };
198
+ }
199
+ activityLog(existing, actorName) {
200
+ if (!existing) {
201
+ return undefined;
202
+ }
203
+ const existingAccount = existing;
204
+ const actor = actorName ?? "You";
205
+ const count = this.members.length;
206
+ const memberWord = count === 1 ? "member" : "members";
207
+ const logMessage = `${actor} removed ${count} ${memberWord} from expense account "${existingAccount.name}"`;
208
+ return {
209
+ eventId: (0, uuid_1.v4)(),
210
+ userId: existingAccount.userId,
211
+ activityByUid: this.createdBy,
212
+ sourceStreamId: this.streamId,
213
+ sourceType: ActivityLogEvents_1.SourceType.ExpenseAccount,
214
+ logMessage,
215
+ date: this.createdAt,
216
+ createdAt: this.createdAt,
217
+ createdBy: this.createdBy,
218
+ streamId: (0, uuid_1.v4)(),
219
+ systemGenerated: true,
220
+ version: 1,
221
+ };
222
+ }
223
+ }
224
+ exports.ExpenseAccountMembersRemoved = ExpenseAccountMembersRemoved;
225
+ class ExpenseAccountDeleted {
226
+ constructor(props) {
227
+ this.eventMainType = EventTypes_1.EventMainType.EXPENSE_ACCOUNT;
228
+ this.eventType = EventTypes_1.EventType.EXPENSE_ACCOUNT_DELETED;
229
+ this.eventId = props.eventId;
230
+ this.userId = props.userId;
231
+ this.createdAt = props.createdAt;
232
+ this.createdBy = props.createdBy;
233
+ this.streamId = props.streamId;
234
+ this.version = props.version;
235
+ this.systemGenerated = props.systemGenerated;
236
+ }
237
+ apply(existing) {
238
+ if (!existing) {
239
+ throw new Error("ExpenseAccount must exist to delete");
240
+ }
241
+ const existingAccount = existing;
242
+ return {
243
+ ...existingAccount,
244
+ updatedAt: this.createdAt,
245
+ updatedBy: this.createdBy,
246
+ version: this.version,
247
+ deleted: true,
248
+ };
249
+ }
250
+ activityLog(existing, actorName) {
251
+ if (!existing) {
252
+ return undefined;
253
+ }
254
+ const existingAccount = existing;
255
+ const actor = actorName ?? "You";
256
+ const logMessage = `${actor} deleted expense account "${existingAccount.name}"`;
257
+ return {
258
+ eventId: (0, uuid_1.v4)(),
259
+ userId: existingAccount.userId,
260
+ activityByUid: this.createdBy,
261
+ sourceStreamId: this.streamId,
262
+ sourceType: ActivityLogEvents_1.SourceType.ExpenseAccount,
263
+ logMessage,
264
+ date: this.createdAt,
265
+ createdAt: this.createdAt,
266
+ createdBy: this.createdBy,
267
+ streamId: (0, uuid_1.v4)(),
268
+ systemGenerated: true,
269
+ version: 1,
270
+ };
271
+ }
272
+ }
273
+ exports.ExpenseAccountDeleted = ExpenseAccountDeleted;
274
+ //# sourceMappingURL=ExpenseAccountEvents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpenseAccountEvents.js","sourceRoot":"","sources":["../src/ExpenseAccountEvents.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { ExpenseCreated, ExpenseDeleted, ExpenseModel, ExpenseUpdated } from "./ExpenseEvents";
2
+ import { ExpenseEvent } from "./common/DomainEvents";
3
+ import { BaseEventHandler } from "./BaseEventHandler";
4
+ import { ActivityEventHandler } from "./ActivityEventHandler";
5
+ import { ModelChangeEmitter } from "./ModelChangeEmitter";
6
+ import { ExpenseEventStore } from "./store/ExpenseEventStore";
7
+ import { ExpenseModelStore } from "./store/ExpenseModelStore";
8
+ import { ExpenseAccountModelStore } from "./store/ExpenseAccountModelStore";
9
+ import { UserModelStore } from "./store/UserModelStore";
10
+ export declare class ExpenseEventHandler extends BaseEventHandler<ExpenseEvent> {
11
+ private modelStore;
12
+ private expenseAccountModelStore;
13
+ private userModelStore;
14
+ private expenseEventStore;
15
+ private activityEventHandler?;
16
+ constructor(modelStore: ExpenseModelStore, expenseAccountModelStore: ExpenseAccountModelStore, userModelStore: UserModelStore, expenseEventStore: ExpenseEventStore, isClient: boolean, modelChangeEmitter?: ModelChangeEmitter, activityEventHandler?: ActivityEventHandler | undefined);
17
+ getModelStore(): ExpenseModelStore;
18
+ getEventStore(): ExpenseEventStore;
19
+ handleEvent(event: ExpenseEvent): Promise<ExpenseModel>;
20
+ handleExpenseCreated(event: ExpenseCreated, existingModel: ExpenseModel | undefined): Promise<ExpenseModel>;
21
+ handleExpenseUpdated(event: ExpenseUpdated, existingModel: ExpenseModel | undefined): Promise<ExpenseModel>;
22
+ handleExpenseDeleted(event: ExpenseDeleted, existingModel: ExpenseModel | undefined): Promise<ExpenseModel>;
23
+ }
24
+ //# sourceMappingURL=ExpenseEventHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpenseEventHandler.d.ts","sourceRoot":"","sources":["../src/ExpenseEventHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,cAAc,EACd,YAAY,EACZ,cAAc,EACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,qBAAa,mBAAoB,SAAQ,gBAAgB,CAAC,YAAY,CAAC;IAEnE,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,wBAAwB;IAChC,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,iBAAiB;IAGzB,OAAO,CAAC,oBAAoB,CAAC;gBANrB,UAAU,EAAE,iBAAiB,EAC7B,wBAAwB,EAAE,wBAAwB,EAClD,cAAc,EAAE,cAAc,EAC9B,iBAAiB,EAAE,iBAAiB,EAC5C,QAAQ,EAAE,OAAO,EACjB,kBAAkB,CAAC,EAAE,kBAAkB,EAC/B,oBAAoB,CAAC,EAAE,oBAAoB,YAAA;IAK9C,aAAa,IAAI,iBAAiB;IAIlC,aAAa,IAAI,iBAAiB;IAInC,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IA8BvD,oBAAoB,CACxB,KAAK,EAAE,cAAc,EACrB,aAAa,EAAE,YAAY,GAAG,SAAS,GACtC,OAAO,CAAC,YAAY,CAAC;IAgFlB,oBAAoB,CACxB,KAAK,EAAE,cAAc,EACrB,aAAa,EAAE,YAAY,GAAG,SAAS,GACtC,OAAO,CAAC,YAAY,CAAC;IA8DlB,oBAAoB,CACxB,KAAK,EAAE,cAAc,EACrB,aAAa,EAAE,YAAY,GAAG,SAAS,GACtC,OAAO,CAAC,YAAY,CAAC;CAgDzB"}
@@ -0,0 +1,180 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExpenseEventHandler = void 0;
4
+ const ExpenseEvents_1 = require("./ExpenseEvents");
5
+ const BaseEventHandler_1 = require("./BaseEventHandler");
6
+ const uuid_1 = require("uuid");
7
+ const EventTypes_1 = require("./common/EventTypes");
8
+ class ExpenseEventHandler extends BaseEventHandler_1.BaseEventHandler {
9
+ constructor(modelStore, expenseAccountModelStore, userModelStore, expenseEventStore, isClient, modelChangeEmitter, activityEventHandler) {
10
+ super(isClient, modelChangeEmitter);
11
+ this.modelStore = modelStore;
12
+ this.expenseAccountModelStore = expenseAccountModelStore;
13
+ this.userModelStore = userModelStore;
14
+ this.expenseEventStore = expenseEventStore;
15
+ this.activityEventHandler = activityEventHandler;
16
+ }
17
+ getModelStore() {
18
+ return this.modelStore;
19
+ }
20
+ getEventStore() {
21
+ return this.expenseEventStore;
22
+ }
23
+ async handleEvent(event) {
24
+ const eventType = event.eventType;
25
+ const existingModel = await this.modelStore.getByStreamIdWhereDeletedIsFalse(event.streamId);
26
+ if (this.shouldSkipSave(existingModel, event)) {
27
+ return existingModel;
28
+ }
29
+ switch (eventType) {
30
+ case EventTypes_1.EventType.EXPENSE_CREATED:
31
+ return await this.handleExpenseCreated(event, existingModel);
32
+ case EventTypes_1.EventType.EXPENSE_UPDATED:
33
+ return await this.handleExpenseUpdated(event, existingModel);
34
+ case EventTypes_1.EventType.EXPENSE_DELETED:
35
+ return await this.handleExpenseDeleted(event, existingModel);
36
+ default:
37
+ throw new Error(`Unknown expense event type: ${eventType}`);
38
+ }
39
+ }
40
+ async handleExpenseCreated(event, existingModel) {
41
+ const updatedModel = event.apply(existingModel);
42
+ await this.modelStore.save(updatedModel);
43
+ if (this.isClient) {
44
+ await this.expenseEventStore.addEvent(event);
45
+ this.modelChangeEmitter?.emit(event.eventMainType);
46
+ if (this.activityEventHandler) {
47
+ await this.activityEventHandler.createActivityLog(event, undefined, updatedModel);
48
+ }
49
+ }
50
+ else {
51
+ const account = await this.expenseAccountModelStore.findByUserIdAndAccountIdAndDeletedIsFalse(event.userId, event.accountId);
52
+ if (!account) {
53
+ console.log(`ExpenseAccount not found for user ${event.userId} and account ${event.accountId}, skipping multi-user sync`);
54
+ return updatedModel;
55
+ }
56
+ const allMemberIds = account.members ?? [];
57
+ const otherMembers = allMemberIds.filter((id) => id !== event.userId);
58
+ for (const memberId of otherMembers) {
59
+ const memberUser = await this.userModelStore.getByStreamIdWhereDeletedIsFalse(memberId);
60
+ if (!memberUser) {
61
+ console.log(`Member ${memberId} not found, skipping`);
62
+ continue;
63
+ }
64
+ const perspectiveExpenseStreamId = (0, uuid_1.v4)();
65
+ const perspectiveExpenseCreated = new ExpenseEvents_1.ExpenseCreated({
66
+ eventId: (0, uuid_1.v4)(),
67
+ userId: memberId,
68
+ expenseId: event.expenseId,
69
+ accountId: event.accountId,
70
+ title: event.title,
71
+ description: event.description,
72
+ amount: event.amount,
73
+ currency: event.currency,
74
+ transactionType: event.transactionType,
75
+ category: event.category,
76
+ paymentMethod: event.paymentMethod,
77
+ tags: event.tags,
78
+ transactionDate: event.transactionDate,
79
+ recurring: event.recurring,
80
+ recurringDetails: event.recurringDetails,
81
+ createdAt: new Date(),
82
+ createdBy: event.createdBy,
83
+ streamId: perspectiveExpenseStreamId,
84
+ version: 1,
85
+ systemGenerated: true,
86
+ });
87
+ await this.expenseEventStore.addEvent(perspectiveExpenseCreated);
88
+ const perspectiveModel = perspectiveExpenseCreated.apply(undefined);
89
+ await this.modelStore.save(perspectiveModel);
90
+ if (this.activityEventHandler) {
91
+ await this.activityEventHandler.createActivityLog(perspectiveExpenseCreated, undefined, perspectiveModel);
92
+ }
93
+ }
94
+ }
95
+ return updatedModel;
96
+ }
97
+ async handleExpenseUpdated(event, existingModel) {
98
+ const updatedModel = event.apply(existingModel);
99
+ await this.modelStore.save(updatedModel);
100
+ if (this.isClient) {
101
+ await this.expenseEventStore.addEvent(event);
102
+ this.modelChangeEmitter?.emit(event.eventMainType);
103
+ if (this.activityEventHandler) {
104
+ await this.activityEventHandler.createActivityLog(event, existingModel, updatedModel);
105
+ }
106
+ }
107
+ else {
108
+ const allPerspectives = await this.modelStore.findAllByExpenseIdAndDeletedIsFalse(updatedModel.expenseId);
109
+ for (const perspective of allPerspectives) {
110
+ if (perspective.streamId !== event.streamId) {
111
+ const perspectiveEvent = new ExpenseEvents_1.ExpenseUpdated({
112
+ eventId: (0, uuid_1.v4)(),
113
+ userId: perspective.userId,
114
+ title: event.title,
115
+ description: event.description,
116
+ amount: event.amount,
117
+ currency: event.currency,
118
+ transactionType: event.transactionType,
119
+ category: event.category,
120
+ paymentMethod: event.paymentMethod,
121
+ tags: event.tags,
122
+ transactionDate: event.transactionDate,
123
+ recurring: event.recurring,
124
+ recurringDetails: event.recurringDetails,
125
+ createdAt: new Date(),
126
+ createdBy: event.createdBy,
127
+ createdByName: event.createdByName,
128
+ createdByPhoto: event.createdByPhoto,
129
+ streamId: perspective.streamId,
130
+ version: perspective.version + 1,
131
+ systemGenerated: true,
132
+ });
133
+ const updatedPerspective = perspectiveEvent.apply(perspective);
134
+ await this.expenseEventStore.addEvent(perspectiveEvent);
135
+ await this.modelStore.save(updatedPerspective);
136
+ if (this.activityEventHandler) {
137
+ await this.activityEventHandler.createActivityLog(perspectiveEvent, perspective, updatedPerspective);
138
+ }
139
+ }
140
+ }
141
+ }
142
+ return updatedModel;
143
+ }
144
+ async handleExpenseDeleted(event, existingModel) {
145
+ const updatedModel = event.apply(existingModel);
146
+ await this.modelStore.save(updatedModel);
147
+ if (this.isClient) {
148
+ await this.expenseEventStore.addEvent(event);
149
+ this.modelChangeEmitter?.emit(event.eventMainType);
150
+ if (this.activityEventHandler) {
151
+ await this.activityEventHandler.createActivityLog(event, existingModel, updatedModel);
152
+ }
153
+ }
154
+ else {
155
+ const allPerspectives = await this.modelStore.findAllByExpenseIdAndDeletedIsFalse(updatedModel.expenseId);
156
+ for (const perspective of allPerspectives) {
157
+ if (perspective.streamId !== event.streamId) {
158
+ const perspectiveEvent = new ExpenseEvents_1.ExpenseDeleted({
159
+ eventId: (0, uuid_1.v4)(),
160
+ userId: perspective.userId,
161
+ streamId: perspective.streamId,
162
+ version: perspective.version + 1,
163
+ createdAt: new Date(),
164
+ createdBy: event.createdBy,
165
+ systemGenerated: true,
166
+ });
167
+ const updatedPerspective = perspectiveEvent.apply(perspective);
168
+ await this.expenseEventStore.addEvent(perspectiveEvent);
169
+ await this.modelStore.save(updatedPerspective);
170
+ if (this.activityEventHandler) {
171
+ await this.activityEventHandler.createActivityLog(perspectiveEvent, perspective, updatedPerspective);
172
+ }
173
+ }
174
+ }
175
+ }
176
+ return updatedModel;
177
+ }
178
+ }
179
+ exports.ExpenseEventHandler = ExpenseEventHandler;
180
+ //# sourceMappingURL=ExpenseEventHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExpenseEventHandler.js","sourceRoot":"","sources":["../src/ExpenseEventHandler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,152 @@
1
+ import { ExpenseEvent } from "./common/DomainEvents";
2
+ import { Model } from "./common/Model";
3
+ import { ActivityLogCreatedProps } from "./ActivityLogEvents";
4
+ import { TransactionType, RecurringDetails, TransactionHistoryEntry } from "./contracts/expenses";
5
+ export interface ExpenseHistory {
6
+ entries: TransactionHistoryEntry[];
7
+ }
8
+ export declare namespace ExpenseHistory {
9
+ function empty(): ExpenseHistory;
10
+ }
11
+ export interface ExpenseModel extends Model {
12
+ expenseId: string;
13
+ accountId: string;
14
+ title: string;
15
+ description?: string;
16
+ amount: number;
17
+ currency: string;
18
+ transactionType: TransactionType;
19
+ category: string;
20
+ paymentMethod: string;
21
+ tags?: string[];
22
+ transactionDate: Date;
23
+ recurring?: boolean;
24
+ recurringDetails?: RecurringDetails;
25
+ history: ExpenseHistory;
26
+ createdAt: Date;
27
+ updatedAt: Date;
28
+ createdBy: string;
29
+ updatedBy: string;
30
+ }
31
+ export interface ExpenseCreatedProps {
32
+ eventId: string;
33
+ userId: string;
34
+ expenseId: string;
35
+ accountId: string;
36
+ title: string;
37
+ description?: string;
38
+ amount: number;
39
+ currency: string;
40
+ transactionType: TransactionType;
41
+ category: string;
42
+ paymentMethod: string;
43
+ tags?: string[];
44
+ transactionDate: Date;
45
+ recurring?: boolean;
46
+ recurringDetails?: RecurringDetails;
47
+ createdAt: Date;
48
+ createdBy: string;
49
+ streamId: string;
50
+ version: number;
51
+ systemGenerated: boolean;
52
+ }
53
+ export declare class ExpenseCreated implements ExpenseEvent {
54
+ readonly eventMainType: "expense";
55
+ readonly eventType: "ExpenseCreated";
56
+ eventId: string;
57
+ userId: string;
58
+ expenseId: string;
59
+ accountId: string;
60
+ title: string;
61
+ description?: string;
62
+ amount: number;
63
+ currency: string;
64
+ transactionType: TransactionType;
65
+ category: string;
66
+ paymentMethod: string;
67
+ tags?: string[];
68
+ transactionDate: Date;
69
+ recurring?: boolean;
70
+ recurringDetails?: RecurringDetails;
71
+ createdAt: Date;
72
+ createdBy: string;
73
+ streamId: string;
74
+ version: number;
75
+ systemGenerated: boolean;
76
+ constructor(props: ExpenseCreatedProps);
77
+ apply(_existing?: Model): ExpenseModel;
78
+ activityLog(_existing?: Model, actorName?: string): ActivityLogCreatedProps | undefined;
79
+ }
80
+ export interface ExpenseUpdatedProps {
81
+ eventId: string;
82
+ userId: string;
83
+ title: string;
84
+ description?: string;
85
+ amount: number;
86
+ currency: string;
87
+ transactionType: TransactionType;
88
+ category: string;
89
+ paymentMethod: string;
90
+ tags?: string[];
91
+ transactionDate: Date;
92
+ recurring?: boolean;
93
+ recurringDetails?: RecurringDetails;
94
+ createdAt: Date;
95
+ createdBy: string;
96
+ createdByName?: string;
97
+ createdByPhoto?: string;
98
+ streamId: string;
99
+ version: number;
100
+ systemGenerated: boolean;
101
+ }
102
+ export declare class ExpenseUpdated implements ExpenseEvent {
103
+ readonly eventMainType: "expense";
104
+ readonly eventType: "ExpenseUpdated";
105
+ eventId: string;
106
+ userId: string;
107
+ title: string;
108
+ description?: string;
109
+ amount: number;
110
+ currency: string;
111
+ transactionType: TransactionType;
112
+ category: string;
113
+ paymentMethod: string;
114
+ tags?: string[];
115
+ transactionDate: Date;
116
+ recurring?: boolean;
117
+ recurringDetails?: RecurringDetails;
118
+ createdAt: Date;
119
+ createdBy: string;
120
+ createdByName?: string;
121
+ createdByPhoto?: string;
122
+ streamId: string;
123
+ version: number;
124
+ systemGenerated: boolean;
125
+ constructor(props: ExpenseUpdatedProps);
126
+ apply(existing?: Model): ExpenseModel;
127
+ activityLog(existing?: Model, actorName?: string): ActivityLogCreatedProps | undefined;
128
+ }
129
+ export interface ExpenseDeletedProps {
130
+ eventId: string;
131
+ userId: string;
132
+ streamId: string;
133
+ version: number;
134
+ createdAt: Date;
135
+ createdBy: string;
136
+ systemGenerated: boolean;
137
+ }
138
+ export declare class ExpenseDeleted implements ExpenseEvent {
139
+ readonly eventMainType: "expense";
140
+ readonly eventType: "ExpenseDeleted";
141
+ eventId: string;
142
+ userId: string;
143
+ streamId: string;
144
+ version: number;
145
+ createdAt: Date;
146
+ createdBy: string;
147
+ systemGenerated: boolean;
148
+ constructor(props: ExpenseDeletedProps);
149
+ apply(existing?: Model): ExpenseModel;
150
+ activityLog(existing?: Model, actorName?: string): ActivityLogCreatedProps | undefined;
151
+ }
152
+ //# sourceMappingURL=ExpenseEvents.d.ts.map