@zeniai/client-epic-state 4.20.2-betaJK4 → 4.20.2-betaNB2

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 (54) hide show
  1. package/lib/commonStateTypes/viewAndReport/viewAndReport.d.ts +2 -2
  2. package/lib/commonStateTypes/viewAndReport/viewAndReport.js +0 -1
  3. package/lib/entity/account/accountPayload.d.ts +0 -2
  4. package/lib/entity/account/accountReducer.d.ts +2 -5
  5. package/lib/entity/account/accountReducer.js +2 -7
  6. package/lib/entity/account/accountState.d.ts +1 -1
  7. package/lib/entity/accountGroup/accountGroupState.d.ts +1 -1
  8. package/lib/entity/class/classReducer.d.ts +4 -4
  9. package/lib/entity/class/classState.d.ts +1 -1
  10. package/lib/entity/forecast/forecastState.d.ts +1 -1
  11. package/lib/entity/sectionAccountsView/sectionAccountsView.d.ts +1 -1
  12. package/lib/entity/sectionClassesViewV2/sectionClassesView.d.ts +1 -1
  13. package/lib/entity/sectionClassesViewV2/sectionClassesViewReducer.d.ts +2 -2
  14. package/lib/entity/transaction/payloadTypes/transactionPayload.js +0 -1
  15. package/lib/epic.d.ts +1 -3
  16. package/lib/epic.js +1 -3
  17. package/lib/esm/commonStateTypes/viewAndReport/viewAndReport.js +0 -1
  18. package/lib/esm/entity/account/accountReducer.js +1 -6
  19. package/lib/esm/entity/transaction/payloadTypes/transactionPayload.js +0 -1
  20. package/lib/esm/epic.js +1 -3
  21. package/lib/esm/index.js +2 -2
  22. package/lib/esm/view/expenseAutomationView/epics/accountRecon/fetchReconciliationViewEpic.js +9 -4
  23. package/lib/esm/view/expenseAutomationView/reducers/reconciliationViewReducer.js +3 -151
  24. package/lib/esm/view/expenseAutomationView/selectors/reconciliationViewSelector.js +0 -69
  25. package/lib/index.d.ts +4 -4
  26. package/lib/index.js +31 -33
  27. package/lib/tsconfig.typecheck.tsbuildinfo +1 -0
  28. package/lib/view/auditReportView/auditReportViewState.d.ts +1 -1
  29. package/lib/view/billPayCard/billPayCardSelector.d.ts +1 -1
  30. package/lib/view/cardBalance/cardBalanceSelector.d.ts +1 -1
  31. package/lib/view/cashBalance/cashBalanceSelector.d.ts +1 -1
  32. package/lib/view/cashInCashOut/cashInCashOutSelector.d.ts +1 -1
  33. package/lib/view/cashPosition/cashPositionSelector.d.ts +1 -1
  34. package/lib/view/dashboard/dashboardReducer.d.ts +2 -2
  35. package/lib/view/expenseAutomationView/epics/accountRecon/fetchReconciliationViewEpic.js +9 -4
  36. package/lib/view/expenseAutomationView/payload/reconciliationPayload.d.ts +0 -33
  37. package/lib/view/expenseAutomationView/reducers/reconciliationViewReducer.d.ts +3 -14
  38. package/lib/view/expenseAutomationView/reducers/reconciliationViewReducer.js +4 -152
  39. package/lib/view/expenseAutomationView/selectorTypes/reconciliationViewSelectorTypes.d.ts +1 -11
  40. package/lib/view/expenseAutomationView/selectors/reconciliationViewSelector.js +0 -69
  41. package/lib/view/expenseAutomationView/types/reconciliationViewState.d.ts +0 -12
  42. package/lib/view/financeStatement/financeStatementReducer.d.ts +1 -1
  43. package/lib/view/globalMerchantView/globalMerchantViewReducer.d.ts +2 -2
  44. package/lib/view/reimbursementCard/reimbursementCardSelector.d.ts +1 -1
  45. package/lib/view/reportsResync/reportsResyncReducer.d.ts +2 -2
  46. package/lib/view/tasksCard/tasksCardSelector.d.ts +1 -1
  47. package/lib/view/topEx/topExSelector.d.ts +1 -1
  48. package/package.json +1 -1
  49. package/lib/esm/view/expenseAutomationView/epics/accountRecon/excludeAccountFromReconciliationEpic.js +0 -44
  50. package/lib/esm/view/expenseAutomationView/epics/accountRecon/includeAccountInReconciliationEpic.js +0 -44
  51. package/lib/view/expenseAutomationView/epics/accountRecon/excludeAccountFromReconciliationEpic.d.ts +0 -8
  52. package/lib/view/expenseAutomationView/epics/accountRecon/excludeAccountFromReconciliationEpic.js +0 -48
  53. package/lib/view/expenseAutomationView/epics/accountRecon/includeAccountInReconciliationEpic.d.ts +0 -9
  54. package/lib/view/expenseAutomationView/epics/accountRecon/includeAccountInReconciliationEpic.js +0 -48
@@ -53,17 +53,22 @@ export const fetchReconciliationViewEpic = (actions$, state$, zeniAPI) => action
53
53
  return zeniAPI.getJSON(apiUrl).pipe(mergeMap((response) => {
54
54
  if (isSuccessResponse(response) && response.data != null) {
55
55
  const updateActions = [];
56
- const allTransactionsPerRecon = getAllReviewTransactionsFromReconcilePayload(response.data.reconciliation);
57
- updateActions.push(updateAccounts(response.data.accounts, 'account_reconciliation'), updateAccounts(response.data.excluded_accounts ?? [], 'excluded_account_reconciliation'), updateAllUsers({
56
+ updateActions.push(updateAccounts(response.data.accounts, 'account_reconciliation'));
57
+ updateActions.push(updateAllUsers({
58
58
  users: response.data.users ?? [],
59
59
  updateType: 'merge',
60
- }), updateFiles({ files: response.data.files ?? [] }), updateMultipleReconcileTransactions(allTransactionsPerRecon, 'merge'), updateAccountRecon(selectedPeriod, response.data.reconciliation));
60
+ }));
61
+ updateActions.push(updateFiles({ files: response.data.files ?? [] }));
62
+ const allTransactionsPerRecon = getAllReviewTransactionsFromReconcilePayload(response.data.reconciliation);
63
+ updateActions.push(updateMultipleReconcileTransactions(allTransactionsPerRecon, 'merge'));
64
+ updateActions.push(updateAccountRecon(selectedPeriod, response.data.reconciliation));
61
65
  const reviewTabLocalData = prepareReviewTabLocalData(response.data.reconciliation[0]?.transactions?.review ?? []);
62
66
  if (accountId != null) {
63
67
  const selectedTransactionIds = getTransactionIdFromCheckedMatchedTransactionPayload(response.data.reconciliation[0].transactions.reconcile);
64
68
  updateActions.push(updateReconcileTabLocalData({
65
69
  selectedTransactionIds: selectedTransactionIds,
66
- }), initializeReconciliationReviewTabLocalData(reviewTabLocalData));
70
+ }));
71
+ updateActions.push(initializeReconciliationReviewTabLocalData(reviewTabLocalData));
67
72
  }
68
73
  updateActions.push(fetchReconciliationSuccess(selectedPeriod, response.data, refreshViewInBackground, accountId));
69
74
  return from(updateActions);
@@ -37,15 +37,7 @@ export const initialReconciliationTabsState = {
37
37
  },
38
38
  };
39
39
  export const initialActionFetchState = {
40
- excludeAccountFetch: {
41
- fetchState: 'Not-Started',
42
- error: undefined,
43
- },
44
40
  excludeFetchById: {},
45
- includeAccountFetch: {
46
- fetchState: 'Not-Started',
47
- error: undefined,
48
- },
49
41
  reconcileFetch: {
50
42
  fetchState: 'Not-Started',
51
43
  error: undefined,
@@ -59,7 +51,6 @@ export const initialActionFetchState = {
59
51
  export const initialState = {
60
52
  accountReconciliationRecordsBySelectedPeriod: {},
61
53
  accountConnectionStatusByAccountID: {},
62
- excludedAccountExclusionInfo: {},
63
54
  fetchState: 'Not-Started',
64
55
  error: undefined,
65
56
  selectedTab: 'review',
@@ -73,7 +64,6 @@ export const initialState = {
73
64
  scrollTop: 0,
74
65
  },
75
66
  },
76
- excludedAccountIDs: [],
77
67
  };
78
68
  // Create slice with reducers
79
69
  const expenseAutomationReconciliationView = createSlice({
@@ -142,7 +132,7 @@ const expenseAutomationReconciliationView = createSlice({
142
132
  fetchReconciliationSuccess: {
143
133
  reducer(draft, action) {
144
134
  if (action.payload.accountId == null) {
145
- updateAllReconciliation(draft, action.payload.reconciliation.accounts, action.payload.selectedPeriod, action.payload.reconciliation.reconciliation, action.payload.refreshViewInBackground, action.payload.reconciliation.excluded_accounts ?? []);
135
+ updateAllReconciliation(draft, action.payload.reconciliation.accounts, action.payload.selectedPeriod, action.payload.reconciliation.reconciliation, action.payload.refreshViewInBackground);
146
136
  }
147
137
  else if (action.payload.reconciliation.reconciliation.length > 0 &&
148
138
  action.payload.reconciliation.accounts.length > 0) {
@@ -431,116 +421,6 @@ const expenseAutomationReconciliationView = createSlice({
431
421
  ...localData,
432
422
  };
433
423
  },
434
- excludeAccountFromReconciliation: {
435
- reducer(draft) {
436
- draft.actionFetchState.excludeAccountFetch = {
437
- fetchState: 'In-Progress',
438
- error: undefined,
439
- };
440
- },
441
- prepare(payload) {
442
- return { payload };
443
- },
444
- },
445
- excludeAccountFromReconciliationSuccess: (draft, action) => {
446
- draft.actionFetchState.excludeAccountFetch = {
447
- fetchState: 'Completed',
448
- error: undefined,
449
- };
450
- const { account, selectedPeriod } = action.payload;
451
- if (account != null) {
452
- if (!draft.excludedAccountIDs.includes(account.account_id)) {
453
- draft.excludedAccountIDs.push(account.account_id);
454
- }
455
- draft.excludedAccountExclusionInfo[account.account_id] = {
456
- bankBalance: account.bank_balance != null
457
- ? {
458
- amount: account.bank_balance,
459
- currencyCode: account.currency_code ?? 'USD',
460
- currencySymbol: account.currency_symbol ?? '$',
461
- }
462
- : undefined,
463
- clearedBalance: account.cleared_balance != null
464
- ? {
465
- amount: account.cleared_balance,
466
- currencyCode: account.currency_code ?? 'USD',
467
- currencySymbol: account.currency_symbol ?? '$',
468
- }
469
- : undefined,
470
- variance: account.variance != null
471
- ? {
472
- amount: account.variance,
473
- currencyCode: account.currency_code ?? 'USD',
474
- currencySymbol: account.currency_symbol ?? '$',
475
- }
476
- : undefined,
477
- };
478
- const monthYearPeriodId = toMonthYearPeriodId(selectedPeriod);
479
- if (draft.accountReconciliationRecordsBySelectedPeriod[monthYearPeriodId]
480
- ?.accountIDs != null) {
481
- draft.accountReconciliationRecordsBySelectedPeriod[monthYearPeriodId].accountIDs = draft.accountReconciliationRecordsBySelectedPeriod[monthYearPeriodId].accountIDs.filter((id) => id !== account.account_id);
482
- }
483
- }
484
- },
485
- excludeAccountFromReconciliationFailure: (draft, action) => {
486
- draft.actionFetchState.excludeAccountFetch = {
487
- fetchState: 'Error',
488
- error: action.payload.error,
489
- };
490
- },
491
- includeAccountInReconciliation: {
492
- reducer(draft) {
493
- draft.actionFetchState.includeAccountFetch = {
494
- fetchState: 'In-Progress',
495
- error: undefined,
496
- };
497
- },
498
- prepare(payload) {
499
- return { payload };
500
- },
501
- },
502
- includeAccountInReconciliationSuccess: (draft, action) => {
503
- draft.actionFetchState.includeAccountFetch = {
504
- fetchState: 'Completed',
505
- error: undefined,
506
- };
507
- const { reconciliation, selectedPeriod } = action.payload;
508
- if (reconciliation == null) {
509
- return;
510
- }
511
- const accountId = reconciliation.account_id;
512
- draft.excludedAccountIDs = draft.excludedAccountIDs.filter((id) => id !== accountId);
513
- delete draft.excludedAccountExclusionInfo[accountId];
514
- const monthYearPeriodId = toMonthYearPeriodId(selectedPeriod);
515
- const accountReconciliationRecords = draft.accountReconciliationRecordsBySelectedPeriod[monthYearPeriodId];
516
- if (accountReconciliationRecords != null) {
517
- if (!accountReconciliationRecords.accountIDs.includes(accountId)) {
518
- accountReconciliationRecords.accountIDs.push(accountId);
519
- }
520
- accountReconciliationRecords.reconciliationByAccountID[accountId] = {
521
- accountId,
522
- reconciliationId: reconciliation.reconciliation_id ?? undefined,
523
- transactionFetchState: { fetchState: 'Not-Started', error: undefined },
524
- refreshStatus: { fetchState: 'Not-Started', error: undefined },
525
- statementDeleteStatus: { fetchState: 'Not-Started', error: undefined },
526
- statementUploadStatus: { fetchState: 'Not-Started', error: undefined },
527
- statementUpdateStatus: { fetchState: 'Not-Started', error: undefined },
528
- statementParseInProgress: reconciliation.bank_status.code === 'parsing',
529
- localData: {},
530
- };
531
- }
532
- draft.accountConnectionStatusByAccountID[accountId] = {
533
- status: toBankStatusCodeType(reconciliation.bank_status.code),
534
- connectionInProgress: false,
535
- paymentAccountId: undefined,
536
- };
537
- },
538
- includeAccountInReconciliationFailure: (draft, action) => {
539
- draft.actionFetchState.includeAccountFetch = {
540
- fetchState: 'Error',
541
- error: action.payload.error,
542
- };
543
- },
544
424
  updateStatementUploadChosen: (draft, action) => {
545
425
  draft.statementUploadChosen = action.payload.statementUploadChosen;
546
426
  },
@@ -550,38 +430,10 @@ const expenseAutomationReconciliationView = createSlice({
550
430
  },
551
431
  });
552
432
  // Export actions
553
- export const { fetchReconciliation, fetchReconciliationFailure, fetchReconciliationSuccess, saveReconciliationDetail, saveReconciliationDetailFailure, updateSelectedAccountId, setConnectionInProgressForAccount, setStatementParseInProgress, updateReconcileTabLocalData, updateReconcileTabListSortState, updateReconcileTabListScrollState, saveReconciliationDetailSuccess, updateSelectedTab, updateBalancesLocalData, initialiseLocalDataForSelectedAccountId, clearExpenseAutomationReconciliationView, updateSelectedDrawerAccountId, updateReviewTabSortState, initializeReconciliationReviewTabLocalData, updateReviewTabLocalData, saveReconciliationReview, updateSaveReconciliationReviewFetchStatus, updateReconListScrollPosition, updateAccountReconciliationLocalData, deleteAccountStatement, deleteAccountStatementSuccess, deleteAccountStatementFailure, excludeAccountFromReconciliation, excludeAccountFromReconciliationSuccess, excludeAccountFromReconciliationFailure, includeAccountInReconciliation, includeAccountInReconciliationSuccess, includeAccountInReconciliationFailure, uploadAccountStatement, uploadAccountStatementSuccess, uploadAccountStatementFailure, updateStatementUploadChosen, } = expenseAutomationReconciliationView.actions;
433
+ export const { fetchReconciliation, fetchReconciliationFailure, fetchReconciliationSuccess, saveReconciliationDetail, saveReconciliationDetailFailure, updateSelectedAccountId, setConnectionInProgressForAccount, setStatementParseInProgress, updateReconcileTabLocalData, updateReconcileTabListSortState, updateReconcileTabListScrollState, saveReconciliationDetailSuccess, updateSelectedTab, updateBalancesLocalData, initialiseLocalDataForSelectedAccountId, clearExpenseAutomationReconciliationView, updateSelectedDrawerAccountId, updateReviewTabSortState, initializeReconciliationReviewTabLocalData, updateReviewTabLocalData, saveReconciliationReview, updateSaveReconciliationReviewFetchStatus, updateReconListScrollPosition, updateAccountReconciliationLocalData, deleteAccountStatement, deleteAccountStatementSuccess, deleteAccountStatementFailure, uploadAccountStatement, uploadAccountStatementSuccess, uploadAccountStatementFailure, updateStatementUploadChosen, } = expenseAutomationReconciliationView.actions;
554
434
  // Export reducer
555
435
  export default expenseAutomationReconciliationView.reducer;
556
- function updateAllReconciliation(draft, accounts, selectedPeriod, reconciliationData, refreshViewInBackground, excludedAccounts) {
557
- draft.excludedAccountIDs = excludedAccounts.map((ea) => ea.account_id);
558
- draft.excludedAccountExclusionInfo = {};
559
- excludedAccounts.forEach((ea) => {
560
- const { exclusion_info } = ea;
561
- draft.excludedAccountExclusionInfo[ea.account_id] = {
562
- bankBalance: exclusion_info.bank_balance != null
563
- ? {
564
- amount: exclusion_info.bank_balance,
565
- currencyCode: ea.currency_code ?? 'USD',
566
- currencySymbol: ea.currency_symbol ?? '$',
567
- }
568
- : undefined,
569
- clearedBalance: exclusion_info.cleared_balance != null
570
- ? {
571
- amount: exclusion_info.cleared_balance,
572
- currencyCode: ea.currency_code ?? 'USD',
573
- currencySymbol: ea.currency_symbol ?? '$',
574
- }
575
- : undefined,
576
- variance: exclusion_info.variance != null
577
- ? {
578
- amount: exclusion_info.variance,
579
- currencyCode: ea.currency_code ?? 'USD',
580
- currencySymbol: ea.currency_symbol ?? '$',
581
- }
582
- : undefined,
583
- };
584
- });
436
+ function updateAllReconciliation(draft, accounts, selectedPeriod, reconciliationData, refreshViewInBackground) {
585
437
  draft.accountReconciliationRecordsBySelectedPeriod[toMonthYearPeriodId(selectedPeriod)] = {
586
438
  accountIDs: [],
587
439
  reconciliationByAccountID: {},
@@ -90,30 +90,6 @@ export const getExpenseAutomationReconciliationView = createSelector((state) =>
90
90
  totalVariancePercentage: undefined,
91
91
  },
92
92
  },
93
- excludedAccountReconciliationByAccountID: {},
94
- excludedAccountReconciliationBySectionID: {
95
- assets: {
96
- sectionId: 'assets',
97
- accountIDs: [],
98
- totalBankBalance: undefined,
99
- totalClearedBalance: undefined,
100
- totalReconciledBalance: undefined,
101
- totalVariance: undefined,
102
- totalVariancePercentage: undefined,
103
- },
104
- liabilities: {
105
- sectionId: 'liabilities',
106
- accountIDs: [],
107
- totalBankBalance: undefined,
108
- totalClearedBalance: undefined,
109
- totalReconciledBalance: undefined,
110
- totalVariance: undefined,
111
- totalVariancePercentage: undefined,
112
- },
113
- },
114
- excludeAccountFetchState: reconciliationViewState.actionFetchState.excludeAccountFetch,
115
- includeAccountFetchState: reconciliationViewState.actionFetchState.includeAccountFetch,
116
- excludedAccountIDs: reconciliationViewState.excludedAccountIDs,
117
93
  };
118
94
  }
119
95
  const allAccountIDs = accountReconForMonthYearPeriod.accountIDs;
@@ -273,46 +249,6 @@ export const getExpenseAutomationReconciliationView = createSelector((state) =>
273
249
  totalVariancePercentage: liabilityTotals.variancePercentage,
274
250
  },
275
251
  };
276
- const bankAccountIdSet = new Set(uniqueBankAccounts.map((a) => a.accountId));
277
- const creditCardIdSet = new Set(uniqueCreditCards.map((a) => a.accountId));
278
- const excludedAssetAccountIDs = [];
279
- const excludedLiabilityAccountIDs = [];
280
- reconciliationViewState.excludedAccountIDs.forEach((accountID) => {
281
- const isAsset = bankAccountIdSet.has(accountID);
282
- const isLiability = creditCardIdSet.has(accountID);
283
- if (!isAsset && !isLiability) {
284
- return;
285
- }
286
- if (isAsset) {
287
- excludedAssetAccountIDs.push(accountID);
288
- }
289
- else {
290
- excludedLiabilityAccountIDs.push(accountID);
291
- }
292
- });
293
- const excludedAccountReconciliationBySectionID = {
294
- assets: {
295
- sectionId: 'assets',
296
- accountIDs: excludedAssetAccountIDs,
297
- },
298
- liabilities: {
299
- sectionId: 'liabilities',
300
- accountIDs: excludedLiabilityAccountIDs,
301
- },
302
- };
303
- const excludedAccountReconciliationByAccountID = {};
304
- const accountsInState = Object.values(accountState.accountsByKey);
305
- const accountsInStateMap = new Map(accountsInState.map((a) => [a.accountId, a]));
306
- reconciliationViewState.excludedAccountIDs.forEach((excludedAccountID) => {
307
- const account = accountsInStateMap.get(excludedAccountID);
308
- const exclusionInfo = reconciliationViewState.excludedAccountExclusionInfo[excludedAccountID];
309
- if (account != null) {
310
- excludedAccountReconciliationByAccountID[excludedAccountID] = {
311
- ...account,
312
- ...exclusionInfo,
313
- };
314
- }
315
- });
316
252
  const accountListNestedAccountHierarchy = getNestedAccountListHierarchy(accountListState, 'accountList');
317
253
  const classListNestedAccountHierarchy = getNestedClassListHierarchy(classListState);
318
254
  const accountsList = getAccountList(accountState, accountListState, 'accountList');
@@ -373,11 +309,6 @@ export const getExpenseAutomationReconciliationView = createSelector((state) =>
373
309
  allClassList: allClasses,
374
310
  reviewTabSelectedVendorByTransactionId,
375
311
  reconListUIState: reconciliationViewState.reconListUIState,
376
- excludedAccountReconciliationBySectionID,
377
- excludedAccountReconciliationByAccountID,
378
- excludeAccountFetchState: reconciliationViewState.actionFetchState.excludeAccountFetch,
379
- includeAccountFetchState: reconciliationViewState.actionFetchState.includeAccountFetch,
380
- excludedAccountIDs: reconciliationViewState.excludedAccountIDs,
381
312
  };
382
313
  });
383
314
  export const isAccountReconReport = (reportId) => {
package/lib/index.d.ts CHANGED
@@ -268,7 +268,7 @@ import { UploadStatementDocumentAIPayload, UploadStatementDocumentAIResponse } f
268
268
  import { clearExpenseAutomationFluxAnalysisView, fetchFluxAnalysisView, reviewFluxAnalysisView, updateFluxAnalysisViewPageMetaData, updateFluxAnalysisViewUIState, updateOperatingExpensesIdsForReview, updateSelectedSectionIdsForReview } from './view/expenseAutomationView/reducers/fluxAnalysisViewReducer';
269
269
  import { clearJeScheduleLocalData as clearExpenseAutomationJEScheduleLocalData, clearExpenseAutomationJESchedulesView, fetchJeSchedulesPage as fetchExpenseAutomationJESchedulesPage, ignoreRecommendedJeSchedule as ignoreExpenseAutomationJESchedule, initializeAccountSettingsView as initializeJeAccountSettingsView, initializeJeScheduleLocalData, removeJeScheduleTransactionKey, retryJeSchedule as retryExpenseAutomationJESchedule, saveAccountSettings as saveJeAccountSettings, saveAccountSettingsLocalData as saveJeAccountSettingsLocalData, updateJESchedulesUIState as updateExpenseAutomationJESchedulesUIState, updateJeScheduleLocalDataById, updateJeScheduleTransactionKeys } from './view/expenseAutomationView/reducers/jeSchedulesViewReducer';
270
270
  import { acknowledgeBulkUploadConfirmMatchComplete, bulkUploadAutomatchingTimedOut, bulkUploadReceipts, bulkUploadReceiptsFailure, bulkUploadReceiptsSuccess, clearBulkUpload, clearManualSearchResults, clearMissingReceiptsTabNavigation, confirmBulkUploadMatch, confirmBulkUploadMatchFailure, confirmBulkUploadMatchSuccess, fetchBulkUploadBatchDetails, fetchBulkUploadBatchDetailsFailure, fetchBulkUploadBatchDetailsSuccess, fetchBulkUploadBatches, fetchBulkUploadBatchesFailure, fetchBulkUploadBatchesSuccess, fetchCompletedTransactions, fetchCompletedTransactionsFailure, fetchCompletedTransactionsSuccess, fetchMissingReceipts as fetchExpenseAutomationMissingReceipts, fetchMoreBatchDetails, fetchMoreBatchDetailsComplete, fetchMoreBatchDetailsFailure, markMissingReceiptAsDone as markExpenseAutomationMissingReceiptAsDone, pusherBatchStatusUpdate, requestMissingReceiptsTabNavigation, searchTransactionsForManualMatch, searchTransactionsForManualMatchFailure, searchTransactionsForManualMatchSuccess, setBulkUploadCompletedSubTab, setBulkUploadResultsTab, setBulkUploadSortConfig, storeBatchDetails, updateBulkUploadProgress, updateMissingReceiptUploadState as updateExpenseAutomationMissingReceiptUploadState, updateMissingReceiptsUIState as updateExpenseAutomationMissingReceiptsUIState, uploadMissingReceiptSuccess as uploadExpenseAutomationMissingReceiptSuccess } from './view/expenseAutomationView/reducers/missingReceiptsViewReducer';
271
- import { deleteAccountStatement, excludeAccountFromReconciliation, includeAccountInReconciliation, fetchReconciliation as fetchReconciliationView, saveReconciliationDetail as saveExpenseAutomationReconciliationDetail, saveReconciliationReview as saveExpenseAutomationReconciliationReview, setConnectionInProgressForAccount as setConnectionInProgressForAccountReconciliation, setStatementParseInProgress, updateAccountReconciliationLocalData as updateExpenseAutomationAccountReconciliationLocalData, updateSelectedAccountId as updateExpenseAutomationAccountReconciliationSelectedAccountId, updateSelectedTab as updateExpenseAutomationAccountReconciliationSelectedTab, updateReconListScrollPosition as updateExpenseAutomationReconListScrollPosition, updateReviewTabSortState as updateExpenseAutomationReconReviewTabListSortState, updateReviewTabLocalData as updateExpenseAutomationReconReviewTabLocalData, updateReconcileTabListScrollState as updateExpenseAutomationReconcileTabListScrollState, updateReconcileTabListSortState as updateExpenseAutomationReconcileTabListSortState, updateReconcileTabLocalData as updateExpenseAutomationReconcileTabLocalData, updateSelectedDrawerAccountId as updateExpenseAutomationSelectedDrawerAccountId, updateStatementUploadChosen, uploadAccountStatement } from './view/expenseAutomationView/reducers/reconciliationViewReducer';
271
+ import { deleteAccountStatement, fetchReconciliation as fetchReconciliationView, saveReconciliationDetail as saveExpenseAutomationReconciliationDetail, saveReconciliationReview as saveExpenseAutomationReconciliationReview, setConnectionInProgressForAccount as setConnectionInProgressForAccountReconciliation, setStatementParseInProgress, updateAccountReconciliationLocalData as updateExpenseAutomationAccountReconciliationLocalData, updateSelectedAccountId as updateExpenseAutomationAccountReconciliationSelectedAccountId, updateSelectedTab as updateExpenseAutomationAccountReconciliationSelectedTab, updateReconListScrollPosition as updateExpenseAutomationReconListScrollPosition, updateReviewTabSortState as updateExpenseAutomationReconReviewTabListSortState, updateReviewTabLocalData as updateExpenseAutomationReconReviewTabLocalData, updateReconcileTabListScrollState as updateExpenseAutomationReconcileTabListScrollState, updateReconcileTabListSortState as updateExpenseAutomationReconcileTabListSortState, updateReconcileTabLocalData as updateExpenseAutomationReconcileTabLocalData, updateSelectedDrawerAccountId as updateExpenseAutomationSelectedDrawerAccountId, updateStatementUploadChosen, uploadAccountStatement } from './view/expenseAutomationView/reducers/reconciliationViewReducer';
272
272
  import { backgroundRefetchReviewTab, clearExpenseAutomationTransactionsView, fetchTransactionCategorization, fetchTransactionCategorizationFailure, fetchTransactionCategorizationView, initializeTransactionCategorizationViewLocalData, markTransactionAsNotMiscategorized, saveTransactionCategorization, saveTransactionCategorizationLocalData, setAllItemsToCategoryClassInLocalDataForCategorization, setEntityRecommendationForLineIdsForCategorization, syncTransactionCategorizationFromDetailSave, updateCurrentSelectedTransactionCategorizationTab, updateSelectedCheckboxTransactionIds, updateSelectedCustomerForTransaction, updateSelectedTransactionId, updateSelectedVendorForTransaction, updateTransactionCategorization, updateTransactionCategorizationSaveStatus, updateTransactionCategorizationUIState, updateTransactionCategorizationUploadReceiptState, uploadTransactionCategorizationReceiptSuccess } from './view/expenseAutomationView/reducers/transactionsViewReducer';
273
273
  import { ExpenseAutomationStepDetails, ExpenseAutomationViewSelector } from './view/expenseAutomationView/selectorTypes/expenseAutomationViewSelectorTypes';
274
274
  import { ExpenseAutomationFluxAnalysisViewSelector, FluxAnalysisOperatingExpenseView, FluxAnalysisSectionType, FluxAnalysisVendorView, FluxAnalysisViewSectionReport, FluxVendorAccountsAndClassesView } from './view/expenseAutomationView/selectorTypes/fluxAnalysisViewSelectorTypes';
@@ -276,7 +276,7 @@ import { JEAccountSettingsView } from './view/expenseAutomationView/selectorType
276
276
  import { ExpenseAutomationJESchedulesViewSelector } from './view/expenseAutomationView/selectorTypes/jeSchedulesSelectorTypes';
277
277
  import { BulkUploadSelectorData, ExpenseAutomationMissingReceiptsViewSelector } from './view/expenseAutomationView/selectorTypes/missingReceiptsSelectorTypes';
278
278
  import { CompletedTransactionsSelectorData, ResolvedBatchDetails, ResolvedBatchFile, ResolvedCandidate } from './view/expenseAutomationView/selectorTypes/missingReceiptsSelectorTypes';
279
- import { AccountReconSectionID, AccountReconciliationByAccount, AccountReconciliationBySection, ExcludedAccountReconciliation, ExpenseAutomationReconciliationViewSelector } from './view/expenseAutomationView/selectorTypes/reconciliationViewSelectorTypes';
279
+ import { AccountReconSectionID, AccountReconciliationByAccount, AccountReconciliationBySection, ExpenseAutomationReconciliationViewSelector } from './view/expenseAutomationView/selectorTypes/reconciliationViewSelectorTypes';
280
280
  import { ExpenseAutomationTransactionViewSelector, TransactionReviewLocalDataSelectorView } from './view/expenseAutomationView/selectorTypes/transactionsViewSelectorTypes';
281
281
  import { getExpenseAutomationFluxAnalysisView } from './view/expenseAutomationView/selectors/fluxAnalysisViewSelector';
282
282
  import { JEScheduledTransactionWithFailedEntries } from './view/expenseAutomationView/selectors/jeSchedulesViewSelector';
@@ -286,7 +286,7 @@ import { FluxAnalysisActionType, FluxAnalysisReviewStatus, FluxAnalysisSortKey,
286
286
  import { AccountSettingsLocalData, JEScheduleSortKey as ExpenseAutomationJEScheduleSortKey, JESchedulesViewUIState as ExpenseAutomationJESchedulesViewUIState, JEScheduleLocalData, toJEScheduleSortKey as toExpenseAutomationJEScheduleSortKey } from './view/expenseAutomationView/types/jeSchedulesViewState';
287
287
  import { BATCH_FILE_STATUSES, BatchDetails, BatchFile, BatchFileStatus, BatchListItem, BatchStatus, BatchStatusValue, BatchSummary, BulkUploadPhase, BulkUploadResultsTab, BulkUploadSortKey, BulkUploadState, CandidateRef, CompletedSubTab, MatchCandidate, MatchSource, MissingReceiptsTab, isUnmatchedTabFileStatus, toBatchFileStatus, toBatchStatusValue, toBulkUploadPhase, toBulkUploadResultsTab, toBulkUploadSortKey, toCompletedSubTab, toMatchSource, toMissingReceiptsTab } from './view/expenseAutomationView/types/missingReceiptsViewState';
288
288
  import { MissingReceiptsSortKey as ExpenseAutomationMissingReceiptsSortKey, MissingReceiptsViewState as ExpenseAutomationMissingReceiptsViewState, MissingReceiptsViewUIState as ExpenseAutomationMissingReceiptsViewUIState, toMissingReceiptsSortKey as toExpenseAutomationMissingReceiptsSortKey } from './view/expenseAutomationView/types/missingReceiptsViewState';
289
- import { AccountReconciliationLocalData, ExcludeAccountFromReconciliationPayload, ReconciliationViewTabType as ExpenseAutomationReconciliationViewTab, ReconReconcileSortKey, ReconReviewSortKey, ReconciliationReconcileTabLocalData, ReconciliationReviewTabLocalData, SaveReconcileDetailActionPayload as SaveExpenseAutomationReconciliationActionType, toReconciliationTabsType } from './view/expenseAutomationView/types/reconciliationViewState';
289
+ import { AccountReconciliationLocalData, ReconciliationViewTabType as ExpenseAutomationReconciliationViewTab, ReconReconcileSortKey, ReconReviewSortKey, ReconciliationReconcileTabLocalData, ReconciliationReviewTabLocalData, SaveReconcileDetailActionPayload as SaveExpenseAutomationReconciliationActionType, toReconciliationTabsType } from './view/expenseAutomationView/types/reconciliationViewState';
290
290
  import { TransactionsTab as ExpenseAutomationTransactionsTab, TransactionsViewState as ExpenseAutomationTransactionsViewState, TransactionsViewUIState as ExpenseAutomationTransactionsViewUIState, SupportedTransactionCategorization, TransactionCategorizationLineItemData, TransactionReviewLocalData, TransactionsSortKey, TransactionsTab, toTransactionsTabKey as toExpenseAutomationTransactionsTabKey, toTransactionsSortKey } from './view/expenseAutomationView/types/transactionsViewState';
291
291
  import downloadFile from './view/fileView/fileDownloadHelpers';
292
292
  import uploadFile, { AuthParams, AuthParamsPayload, FileMetadataPayload } from './view/fileView/fileUploadHelpers';
@@ -628,7 +628,7 @@ export { TransactionsOrder, COABalancesSliceOrder, EntityOrder, Section, Section
628
628
  export { ClassesViewSelectorReportV2 };
629
629
  export { BalancesTimeseries, TrendTimeseries, BalanceKind };
630
630
  export { fetchMonthEndCloseChecks, fetchMonthClosePerformanceTrend, MonthClosePerformanceTrend, MonthEndCloseCheck, getMonthEndCloseChecksViewByTenantId, MonthEndCloseChecksView, MonthEndCloseCheckFrequency, MonthCloseCheckMetrics, ALL_MONTH_END_CLOSE_CHECKS_FREQUENCY, MonthEndAuditSummary, };
631
- export { ExpenseAutomationViewSelector, ExpenseAutomationStepDetails, ExpenseAutomationViewType, ExpenseAutomationMissingReceiptsViewSelector, BulkUploadSelectorData, ExpenseAutomationFluxAnalysisViewSelector, FluxAnalysisVendorView, FluxAnalysisViewSectionReport, FluxVendorAccountsAndClassesView, ExpenseAutomationMissingReceiptsViewUIState, ExpenseAutomationMissingReceiptsViewState, ExpenseAutomationViewState, ExpenseAutomationTransactionsTab, ExpenseAutomationMissingReceiptsSortKey, BATCH_FILE_STATUSES, BatchDetails, BatchFile, BatchFileStatus, BatchListItem, isUnmatchedTabFileStatus, BatchStatus, BatchStatusValue, BatchSummary, BulkUploadPhase, BulkUploadResultsTab, BulkUploadSortKey, BulkUploadState, CandidateRef, CompletedSubTab, CompletedTransactionsSelectorData, MatchCandidate, MatchSource, MissingReceiptsTab, toBatchFileStatus, toBatchStatusValue, toBulkUploadPhase, toBulkUploadResultsTab, toBulkUploadSortKey, toCompletedSubTab, toMatchSource, toMissingReceiptsTab, ResolvedBatchFile, ResolvedBatchDetails, ResolvedCandidate, ExpenseAutomationJEScheduleSortKey, ExpenseAutomationJESchedulesViewUIState, toExpenseAutomationJEScheduleSortKey, getExpenseAutomationView, toExpenseAutomationMissingReceiptsSortKey, toExpenseAutomationTransactionsTabKey, toExpenseAutomationViewType, uploadExpenseAutomationMissingReceiptSuccess, markExpenseAutomationMissingReceiptAsDone, fetchAllExpenseAutomationTabs, refreshExpenseAutomationCurrentTab, updateCurrentSelectedTransactionCategorizationTab, fetchExpenseAutomationMissingReceipts, bulkUploadReceipts, bulkUploadAutomatchingTimedOut, bulkUploadReceiptsSuccess, bulkUploadReceiptsFailure, updateBulkUploadProgress, pusherBatchStatusUpdate, requestMissingReceiptsTabNavigation, clearMissingReceiptsTabNavigation, fetchBulkUploadBatchDetails, fetchBulkUploadBatchDetailsSuccess, fetchBulkUploadBatchDetailsFailure, storeBatchDetails, fetchMoreBatchDetails, fetchMoreBatchDetailsComplete, fetchMoreBatchDetailsFailure, fetchBulkUploadBatches, fetchBulkUploadBatchesSuccess, fetchBulkUploadBatchesFailure, confirmBulkUploadMatch, confirmBulkUploadMatchSuccess, confirmBulkUploadMatchFailure, setBulkUploadResultsTab, setBulkUploadCompletedSubTab, setBulkUploadSortConfig, clearBulkUpload, searchTransactionsForManualMatch, searchTransactionsForManualMatchSuccess, searchTransactionsForManualMatchFailure, clearManualSearchResults, acknowledgeBulkUploadConfirmMatchComplete, fetchCompletedTransactions, fetchCompletedTransactionsSuccess, fetchCompletedTransactionsFailure, fetchFluxAnalysisView, clearExpenseAutomationFluxAnalysisView, updateOperatingExpensesIdsForReview as updateFluxOperatingExpensesIdsForReview, updateSelectedSectionIdsForReview as updateFluxAnalysisSelectedSectionIdsForReview, reviewFluxAnalysisView, updateExpenseAutomationMissingReceiptUploadState, updateExpenseAutomationMissingReceiptsUIState, updateTransactionCategorizationUploadReceiptState, uploadTransactionCategorizationReceiptSuccess, FluxAnalysisOperatingExpenseView, FluxAnalysisSectionType, getExpenseAutomationFluxAnalysisView, FluxAnalysisSortKey, FluxAnalysisActionType, FluxBalancesByMonth, updateCurrentSelectedView, updateCurrentSelectedPeriod, getExpenseAutomationTransactionView, ReconReconcileSortKey, ReconciliationReconcileTabLocalData, FluxAnalysisReviewStatus, updateFluxAnalysisViewUIState, FluxAnalysisViewUIState, updateFluxAnalysisViewPageMetaData, MAX_SELECTION_LIMIT, checkIfAllLineItemsAreCategoryClassFilled, getLineItemsByTransactionIdsFromLocalData, isAnyItemWithUncategorizedExpenseAccount, SaveExpenseAutomationReconciliationActionType, ExcludeAccountFromReconciliationPayload, excludeAccountFromReconciliation, includeAccountInReconciliation, saveExpenseAutomationReconciliationDetail, updateExpenseAutomationReconcileTabListScrollState, updateExpenseAutomationReconReviewTabListSortState, updateExpenseAutomationReconcileTabListSortState, updateExpenseAutomationReconcileTabLocalData, updateExpenseAutomationAccountReconciliationSelectedTab, updateExpenseAutomationAccountReconciliationSelectedAccountId, ExpenseAutomationReconciliationViewSelector, ExcludedAccountReconciliation, getExpenseAutomationReconciliationView, AccountReconciliationBySection, fetchReconciliationView, uploadAccountStatementIntoDocumentAI, UploadStatementDocumentAIResponse, updateExpenseAutomationReconListScrollPosition, setConnectionInProgressForAccountReconciliation, AccountReconciliationByAccount, AccountReconciliationEntity, getAccountReconByAccountIdAndSelectedPeriod, ExpenseAutomationReconciliationViewTab, toReconciliationTabsType, isAccountReconReport, ReconReviewSortKey, AccountReconSectionID, ReconciliationReviewTabLocalData, TransactionsToReview, RecommendedActionCodeType, ReconciliationStatusCodeType, BalanceDataStatusCodeType, updateExpenseAutomationReconReviewTabLocalData, updateExpenseAutomationSelectedDrawerAccountId, saveExpenseAutomationReconciliationReview, updateExpenseAutomationAccountReconciliationLocalData, BankStatusCodeType, ReconciliationAccountSourceType, toReconciliationAccountSource, StatementStatusCodeType, AccountReconciliationLocalData, StatementDataStatusCodeType, deleteAccountStatement, uploadAccountStatement, UploadStatementDocumentAIPayload, updateStatementUploadChosen, isReviewTransactionBankTransferType, isReviewTransactionBillPaymentType, isReviewTransactionCreditCardPaymentType, isReviewTransactionDepositType, isReviewTransactionExpenseType, isReviewTransactionCreditCardCreditType, setStatementParseInProgress, };
631
+ export { ExpenseAutomationViewSelector, ExpenseAutomationStepDetails, ExpenseAutomationViewType, ExpenseAutomationMissingReceiptsViewSelector, BulkUploadSelectorData, ExpenseAutomationFluxAnalysisViewSelector, FluxAnalysisVendorView, FluxAnalysisViewSectionReport, FluxVendorAccountsAndClassesView, ExpenseAutomationMissingReceiptsViewUIState, ExpenseAutomationMissingReceiptsViewState, ExpenseAutomationViewState, ExpenseAutomationTransactionsTab, ExpenseAutomationMissingReceiptsSortKey, BATCH_FILE_STATUSES, BatchDetails, BatchFile, BatchFileStatus, BatchListItem, isUnmatchedTabFileStatus, BatchStatus, BatchStatusValue, BatchSummary, BulkUploadPhase, BulkUploadResultsTab, BulkUploadSortKey, BulkUploadState, CandidateRef, CompletedSubTab, CompletedTransactionsSelectorData, MatchCandidate, MatchSource, MissingReceiptsTab, toBatchFileStatus, toBatchStatusValue, toBulkUploadPhase, toBulkUploadResultsTab, toBulkUploadSortKey, toCompletedSubTab, toMatchSource, toMissingReceiptsTab, ResolvedBatchFile, ResolvedBatchDetails, ResolvedCandidate, ExpenseAutomationJEScheduleSortKey, ExpenseAutomationJESchedulesViewUIState, toExpenseAutomationJEScheduleSortKey, getExpenseAutomationView, toExpenseAutomationMissingReceiptsSortKey, toExpenseAutomationTransactionsTabKey, toExpenseAutomationViewType, uploadExpenseAutomationMissingReceiptSuccess, markExpenseAutomationMissingReceiptAsDone, fetchAllExpenseAutomationTabs, refreshExpenseAutomationCurrentTab, updateCurrentSelectedTransactionCategorizationTab, fetchExpenseAutomationMissingReceipts, bulkUploadReceipts, bulkUploadAutomatchingTimedOut, bulkUploadReceiptsSuccess, bulkUploadReceiptsFailure, updateBulkUploadProgress, pusherBatchStatusUpdate, requestMissingReceiptsTabNavigation, clearMissingReceiptsTabNavigation, fetchBulkUploadBatchDetails, fetchBulkUploadBatchDetailsSuccess, fetchBulkUploadBatchDetailsFailure, storeBatchDetails, fetchMoreBatchDetails, fetchMoreBatchDetailsComplete, fetchMoreBatchDetailsFailure, fetchBulkUploadBatches, fetchBulkUploadBatchesSuccess, fetchBulkUploadBatchesFailure, confirmBulkUploadMatch, confirmBulkUploadMatchSuccess, confirmBulkUploadMatchFailure, setBulkUploadResultsTab, setBulkUploadCompletedSubTab, setBulkUploadSortConfig, clearBulkUpload, searchTransactionsForManualMatch, searchTransactionsForManualMatchSuccess, searchTransactionsForManualMatchFailure, clearManualSearchResults, acknowledgeBulkUploadConfirmMatchComplete, fetchCompletedTransactions, fetchCompletedTransactionsSuccess, fetchCompletedTransactionsFailure, fetchFluxAnalysisView, clearExpenseAutomationFluxAnalysisView, updateOperatingExpensesIdsForReview as updateFluxOperatingExpensesIdsForReview, updateSelectedSectionIdsForReview as updateFluxAnalysisSelectedSectionIdsForReview, reviewFluxAnalysisView, updateExpenseAutomationMissingReceiptUploadState, updateExpenseAutomationMissingReceiptsUIState, updateTransactionCategorizationUploadReceiptState, uploadTransactionCategorizationReceiptSuccess, FluxAnalysisOperatingExpenseView, FluxAnalysisSectionType, getExpenseAutomationFluxAnalysisView, FluxAnalysisSortKey, FluxAnalysisActionType, FluxBalancesByMonth, updateCurrentSelectedView, updateCurrentSelectedPeriod, getExpenseAutomationTransactionView, ReconReconcileSortKey, ReconciliationReconcileTabLocalData, FluxAnalysisReviewStatus, updateFluxAnalysisViewUIState, FluxAnalysisViewUIState, updateFluxAnalysisViewPageMetaData, MAX_SELECTION_LIMIT, checkIfAllLineItemsAreCategoryClassFilled, getLineItemsByTransactionIdsFromLocalData, isAnyItemWithUncategorizedExpenseAccount, SaveExpenseAutomationReconciliationActionType, saveExpenseAutomationReconciliationDetail, updateExpenseAutomationReconcileTabListScrollState, updateExpenseAutomationReconReviewTabListSortState, updateExpenseAutomationReconcileTabListSortState, updateExpenseAutomationReconcileTabLocalData, updateExpenseAutomationAccountReconciliationSelectedTab, updateExpenseAutomationAccountReconciliationSelectedAccountId, ExpenseAutomationReconciliationViewSelector, getExpenseAutomationReconciliationView, AccountReconciliationBySection, fetchReconciliationView, uploadAccountStatementIntoDocumentAI, UploadStatementDocumentAIResponse, updateExpenseAutomationReconListScrollPosition, setConnectionInProgressForAccountReconciliation, AccountReconciliationByAccount, AccountReconciliationEntity, getAccountReconByAccountIdAndSelectedPeriod, ExpenseAutomationReconciliationViewTab, toReconciliationTabsType, isAccountReconReport, ReconReviewSortKey, AccountReconSectionID, ReconciliationReviewTabLocalData, TransactionsToReview, RecommendedActionCodeType, ReconciliationStatusCodeType, BalanceDataStatusCodeType, updateExpenseAutomationReconReviewTabLocalData, updateExpenseAutomationSelectedDrawerAccountId, saveExpenseAutomationReconciliationReview, updateExpenseAutomationAccountReconciliationLocalData, BankStatusCodeType, ReconciliationAccountSourceType, toReconciliationAccountSource, StatementStatusCodeType, AccountReconciliationLocalData, StatementDataStatusCodeType, deleteAccountStatement, uploadAccountStatement, UploadStatementDocumentAIPayload, updateStatementUploadChosen, isReviewTransactionBankTransferType, isReviewTransactionBillPaymentType, isReviewTransactionCreditCardPaymentType, isReviewTransactionDepositType, isReviewTransactionExpenseType, isReviewTransactionCreditCardCreditType, setStatementParseInProgress, };
632
632
  export { JEScheduleLocalData };
633
633
  export { ExpenseAutomationJESchedulesViewSelector, JEAccountSettingsView, JEScheduledTransactionWithFailedEntries, };
634
634
  export { fetchTransactionCategorization, fetchTransactionCategorizationView, updateTransactionCategorizationUIState, updateSelectedCheckboxTransactionIds, setEntityRecommendationForLineIdsForCategorization, initializeTransactionCategorizationViewLocalData, setAllItemsToCategoryClassInLocalDataForCategorization, saveTransactionCategorizationLocalData, fetchTransactionCategorizationFailure, saveTransactionCategorization, updateTransactionCategorization, updateTransactionCategorizationSaveStatus, markTransactionAsNotMiscategorized, updateSelectedVendorForTransaction, updateSelectedCustomerForTransaction, updateSelectedTransactionId, syncTransactionCategorizationFromDetailSave, backgroundRefetchReviewTab, clearExpenseAutomationTransactionsView, TransactionsSortKey, toTransactionsSortKey, TransactionsTab, TransactionCategorizationLineItemData, TransactionReviewLocalData, SupportedTransactionCategorization, ExpenseAutomationTransactionsViewState, ExpenseAutomationTransactionsViewUIState, ExpenseAutomationTransactionViewSelector, TransactionReviewLocalDataSelectorView, };