@zeniai/client-epic-state 4.19.99-betaAD01 → 4.19.99-betaAD07

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 (40) hide show
  1. package/lib/common/aiCfo/aiCfoSuggestedQuestionsPageContext.d.ts +19 -0
  2. package/lib/common/aiCfo/aiCfoSuggestedQuestionsPageContext.js +2 -0
  3. package/lib/entity/jeSchedules/jeSchedulesPayload.d.ts +9 -6
  4. package/lib/entity/jeSchedules/jeSchedulesPayload.js +36 -2
  5. package/lib/entity/jeSchedules/jeSchedulesSelector.d.ts +4 -2
  6. package/lib/entity/jeSchedules/jeSchedulesSelector.js +5 -2
  7. package/lib/entity/jeSchedules/jeSchedulesState.d.ts +26 -2
  8. package/lib/entity/transaction/payloadTypes/scheduleTransactionPayload.d.ts +4 -1
  9. package/lib/entity/transaction/payloadTypes/scheduleTransactionPayload.js +1 -0
  10. package/lib/entity/transaction/stateTypes/scheduleTransaction.d.ts +1 -0
  11. package/lib/esm/common/aiCfo/aiCfoSuggestedQuestionsPageContext.js +1 -0
  12. package/lib/esm/entity/jeSchedules/jeSchedulesPayload.js +36 -2
  13. package/lib/esm/entity/jeSchedules/jeSchedulesSelector.js +5 -2
  14. package/lib/esm/entity/transaction/payloadTypes/scheduleTransactionPayload.js +1 -0
  15. package/lib/esm/view/expenseAutomationView/expenseAutomationViewSelector.js +0 -1
  16. package/lib/esm/view/expenseAutomationView/selectors/fluxAnalysisViewSelector.js +10 -2
  17. package/lib/esm/view/expenseAutomationView/selectors/jeSchedulesViewSelector.js +13 -3
  18. package/lib/esm/view/expenseAutomationView/selectors/missingReceiptsSelector.js +11 -3
  19. package/lib/esm/view/expenseAutomationView/selectors/reconciliationViewSelector.js +22 -9
  20. package/lib/esm/view/expenseAutomationView/selectors/transactionCategorizationSelector.js +12 -6
  21. package/lib/esm/view/expenseAutomationView/types/jeSchedulesViewState.js +1 -0
  22. package/lib/esm/view/profitAndLossClassesView/profitAndLossClassesByClassHorizontalSelector.js +3 -8
  23. package/lib/esm/view/profitAndLossClassesView/profitAndLossHorizontalEnrichment.js +140 -59
  24. package/lib/index.d.ts +3 -3
  25. package/lib/tsconfig.typecheck.tsbuildinfo +1 -1
  26. package/lib/view/aiCfoView/aiCfoViewPayload.d.ts +1 -1
  27. package/lib/view/aiCfoView/aiCfoViewReducer.d.ts +1 -1
  28. package/lib/view/aiCfoView/aiCfoViewSelector.d.ts +1 -1
  29. package/lib/view/aiCfoView/aiCfoViewState.d.ts +1 -4
  30. package/lib/view/expenseAutomationView/expenseAutomationViewSelector.js +0 -1
  31. package/lib/view/expenseAutomationView/selectors/fluxAnalysisViewSelector.js +10 -2
  32. package/lib/view/expenseAutomationView/selectors/jeSchedulesViewSelector.js +13 -3
  33. package/lib/view/expenseAutomationView/selectors/missingReceiptsSelector.js +11 -3
  34. package/lib/view/expenseAutomationView/selectors/reconciliationViewSelector.js +22 -9
  35. package/lib/view/expenseAutomationView/selectors/transactionCategorizationSelector.js +11 -5
  36. package/lib/view/expenseAutomationView/types/jeSchedulesViewState.d.ts +1 -1
  37. package/lib/view/expenseAutomationView/types/jeSchedulesViewState.js +1 -0
  38. package/lib/view/profitAndLossClassesView/profitAndLossClassesByClassHorizontalSelector.js +3 -8
  39. package/lib/view/profitAndLossClassesView/profitAndLossHorizontalEnrichment.js +140 -59
  40. package/package.json +1 -1
@@ -25,30 +25,31 @@ function enrichHorizontalSection(report, section) {
25
25
  return total?.balance.amount ?? 0;
26
26
  });
27
27
  section.sectionHeaderBalancesSlice = buildHorizontalClassColumnBalancesSlice(report, classAmounts, section.sectionTotal.amount);
28
- const childrenRowIndicesByParent = buildHorizontalAccountChildIndicesByParent(section.accounts);
28
+ const parentIndices = computeHorizontalAccountParentIndices(section.accounts);
29
+ const childrenRowIndicesByParent = buildHorizontalAccountChildIndicesByParent(parentIndices);
29
30
  const childrenRecord = {};
30
31
  childrenRowIndicesByParent.forEach((childIndices, parentIndex) => {
31
32
  childrenRecord[parentIndex] = childIndices;
32
33
  });
33
34
  section.treeLayout = {
34
35
  rootAccountRowIndices: section.accounts
35
- .map((_, i) => findHorizontalAccountParentIndex(section.accounts, i) === -1 ? i : -1)
36
+ .map((_, i) => (parentIndices[i] === -1 ? i : -1))
36
37
  .filter((i) => i >= 0),
37
38
  childrenRowIndicesByParent: childrenRecord,
38
39
  };
40
+ const siblingsPerRow = buildSiblingIndicesPerRow(section.accounts, parentIndices);
41
+ const hasChildFlags = computeHorizontalHasChildFlags(parentIndices);
39
42
  for (let i = 0; i < section.accounts.length; i++) {
40
43
  const row = section.accounts[i];
41
- const classRowAmounts = report.classColumns.map((col) => {
42
- const cb = row.classBalances.find((b) => b.classId === col.classId);
43
- return cb?.balance.amount ?? 0;
44
- });
44
+ // Same column order as `report.classColumns` (see `pivotSectionToHorizontal`).
45
+ const classRowAmounts = row.classBalances.map((b) => b.balance.amount);
45
46
  row.accountReportData = {
46
47
  accountId: row.accountId,
47
48
  accountName: row.accountName,
48
49
  accountType: row.accountType,
49
50
  depth: row.depth,
50
51
  balancesInTimeframe: buildHorizontalClassColumnBalancesSlice(report, classRowAmounts, row.rowTotal.amount),
51
- horizontalTreeView: buildHorizontalTreeView(section.accounts, i),
52
+ horizontalTreeView: buildHorizontalTreeViewFromPrecomputed(section.accounts, i, parentIndices, siblingsPerRow, hasChildFlags),
52
53
  };
53
54
  }
54
55
  }
@@ -120,64 +121,157 @@ function buildHorizontalClassColumnBalancesSlice(report, classAmounts, totalAmou
120
121
  },
121
122
  };
122
123
  }
123
- function findHorizontalAccountParentIndex(dfsOrderedAccountRows, childRowIndex) {
124
- const childDepth = dfsOrderedAccountRows[childRowIndex].depth;
125
- if (childDepth <= 2) {
126
- return -1;
127
- }
128
- for (let earlierRowIndex = childRowIndex - 1; earlierRowIndex >= 0; earlierRowIndex--) {
129
- const earlierDepth = dfsOrderedAccountRows[earlierRowIndex].depth;
130
- if (earlierDepth < childDepth) {
131
- if (earlierDepth === childDepth - 1) {
132
- return earlierRowIndex;
124
+ /**
125
+ * Parent index per DFS row — O(n). Matches the scan in the former
126
+ * `findHorizontalAccountParentIndex` (depth &lt;= 2 rows have no parent).
127
+ */
128
+ function computeHorizontalAccountParentIndices(rows) {
129
+ const accountRowCount = rows.length;
130
+ const parentIndex = new Array(accountRowCount).fill(-1);
131
+ const stack = [];
132
+ for (let rowIndex = 0; rowIndex < accountRowCount; rowIndex++) {
133
+ const accountRow = rows[rowIndex];
134
+ if (accountRow == null) {
135
+ continue;
136
+ }
137
+ const d = accountRow.depth;
138
+ while (stack.length > 0) {
139
+ const topIdx = stack[stack.length - 1];
140
+ if (topIdx == null) {
141
+ break;
133
142
  }
134
- return -1;
143
+ const topRow = rows[topIdx];
144
+ if (topRow == null) {
145
+ stack.pop();
146
+ continue;
147
+ }
148
+ if (topRow.depth < d) {
149
+ break;
150
+ }
151
+ stack.pop();
152
+ }
153
+ if (d <= 2) {
154
+ parentIndex[rowIndex] = -1;
155
+ }
156
+ else if (stack.length === 0) {
157
+ parentIndex[rowIndex] = -1;
135
158
  }
159
+ else {
160
+ const peek = stack[stack.length - 1];
161
+ if (peek == null) {
162
+ parentIndex[rowIndex] = -1;
163
+ }
164
+ else {
165
+ const parentRow = rows[peek];
166
+ parentIndex[rowIndex] =
167
+ parentRow != null && parentRow.depth === d - 1 ? peek : -1;
168
+ }
169
+ }
170
+ stack.push(rowIndex);
136
171
  }
137
- return -1;
172
+ return parentIndex;
138
173
  }
139
- function getHorizontalAccountSiblingIndices(dfsOrderedAccountRows, rowIndex) {
140
- const parentRowIndex = findHorizontalAccountParentIndex(dfsOrderedAccountRows, rowIndex);
141
- const rowDepth = dfsOrderedAccountRows[rowIndex].depth;
142
- const siblings = [];
143
- for (let i = 0; i < dfsOrderedAccountRows.length; i++) {
144
- if (dfsOrderedAccountRows[i].depth === rowDepth &&
145
- findHorizontalAccountParentIndex(dfsOrderedAccountRows, i) ===
146
- parentRowIndex) {
147
- siblings.push(i);
174
+ /** Sibling row indices (same parent + depth), in traversal order — O(n). */
175
+ function buildSiblingIndicesPerRow(rows, parentIndices) {
176
+ const accountRowCount = rows.length;
177
+ const keyToIndices = new Map();
178
+ for (let rowIndex = 0; rowIndex < accountRowCount; rowIndex++) {
179
+ const parentRowIndex = parentIndices[rowIndex];
180
+ const accountRow = rows[rowIndex];
181
+ if (parentRowIndex == null || accountRow == null) {
182
+ continue;
183
+ }
184
+ const key = `${parentRowIndex}:${accountRow.depth}`;
185
+ let g = keyToIndices.get(key);
186
+ if (g == null) {
187
+ g = [];
188
+ keyToIndices.set(key, g);
148
189
  }
190
+ g.push(rowIndex);
149
191
  }
150
- return siblings;
192
+ const siblingsPerRow = new Array(accountRowCount);
193
+ for (let rowIndex = 0; rowIndex < accountRowCount; rowIndex++) {
194
+ const parentRowIndex = parentIndices[rowIndex];
195
+ const accountRow = rows[rowIndex];
196
+ if (parentRowIndex == null || accountRow == null) {
197
+ siblingsPerRow[rowIndex] = [rowIndex];
198
+ continue;
199
+ }
200
+ const key = `${parentRowIndex}:${accountRow.depth}`;
201
+ const group = keyToIndices.get(key);
202
+ siblingsPerRow[rowIndex] = group != null ? group : [rowIndex];
203
+ }
204
+ return siblingsPerRow;
151
205
  }
152
- function horizontalAccountHasChildRows(dfsOrderedAccountRows, parentRowIndex) {
153
- return dfsOrderedAccountRows.some((_, rowIndex) => findHorizontalAccountParentIndex(dfsOrderedAccountRows, rowIndex) ===
154
- parentRowIndex);
206
+ function computeHorizontalHasChildFlags(parentIndices) {
207
+ const rowCount = parentIndices.length;
208
+ const flags = new Array(rowCount).fill(false);
209
+ for (let rowIndex = 0; rowIndex < rowCount; rowIndex++) {
210
+ const parentRowIndex = parentIndices[rowIndex];
211
+ if (parentRowIndex != null &&
212
+ parentRowIndex >= 0 &&
213
+ parentRowIndex < rowCount) {
214
+ flags[parentRowIndex] = true;
215
+ }
216
+ }
217
+ return flags;
155
218
  }
156
- function buildHorizontalSubAccountAncestorMetadata(dfsOrderedAccountRows, currentRowIndex) {
157
- const ancestorRowIndicesRootToLeaf = [];
219
+ function buildHorizontalSubAccountAncestorMetadataFromPrecomputed(dfsOrderedAccountRows, currentRowIndex, parentIndices, siblingsPerRow, hasChildFlags) {
220
+ const chain = [];
158
221
  let walkRowIndex = currentRowIndex;
159
222
  while (walkRowIndex >= 0) {
160
- ancestorRowIndicesRootToLeaf.unshift(walkRowIndex);
161
- walkRowIndex = findHorizontalAccountParentIndex(dfsOrderedAccountRows, walkRowIndex);
223
+ chain.unshift(walkRowIndex);
224
+ const parentRowIndex = parentIndices[walkRowIndex];
225
+ if (parentRowIndex == null) {
226
+ break;
227
+ }
228
+ walkRowIndex = parentRowIndex;
162
229
  }
163
- return ancestorRowIndicesRootToLeaf.map((rowIndex) => {
164
- const siblingIndices = getHorizontalAccountSiblingIndices(dfsOrderedAccountRows, rowIndex);
230
+ return chain.map((rowIndex) => {
231
+ const accountRow = dfsOrderedAccountRows[rowIndex];
232
+ const siblingIndices = siblingsPerRow[rowIndex];
233
+ const hasChild = hasChildFlags[rowIndex];
234
+ if (accountRow == null || siblingIndices == null) {
235
+ return {
236
+ depth: 0,
237
+ hasSibling: false,
238
+ hasChildren: hasChild === true,
239
+ isLastNode: true,
240
+ name: '',
241
+ };
242
+ }
165
243
  return {
166
- depth: dfsOrderedAccountRows[rowIndex].depth - 2,
244
+ depth: accountRow.depth - 2,
167
245
  hasSibling: siblingIndices.length > 1,
168
- hasChildren: horizontalAccountHasChildRows(dfsOrderedAccountRows, rowIndex),
246
+ hasChildren: hasChild === true,
169
247
  isLastNode: rowIndex === siblingIndices[siblingIndices.length - 1],
170
- name: dfsOrderedAccountRows[rowIndex].accountName,
248
+ name: accountRow.accountName,
171
249
  };
172
250
  });
173
251
  }
174
- function buildHorizontalAccountChildIndicesByParent(dfsOrderedAccountRows) {
252
+ function buildHorizontalTreeViewFromPrecomputed(dfsOrderedAccountRows, currentRowIndex, parentIndices, siblingsPerRow, hasChildFlags) {
253
+ const siblingIndices = siblingsPerRow[currentRowIndex];
254
+ const accountRow = dfsOrderedAccountRows[currentRowIndex];
255
+ const hasChildrenFlag = hasChildFlags[currentRowIndex];
256
+ const treeDepth = accountRow != null ? Math.max(0, accountRow.depth - 2) : 0;
257
+ const hasChildren = hasChildrenFlag === true;
258
+ const sibs = siblingIndices ?? [currentRowIndex];
259
+ return {
260
+ subAccountAncestorMetadata: buildHorizontalSubAccountAncestorMetadataFromPrecomputed(dfsOrderedAccountRows, currentRowIndex, parentIndices, siblingsPerRow, hasChildFlags),
261
+ treeDepth,
262
+ hasChildren,
263
+ hasSiblings: sibs.length > 1,
264
+ isLeaf: !hasChildren,
265
+ isLastNode: currentRowIndex === sibs[sibs.length - 1],
266
+ };
267
+ }
268
+ function buildHorizontalAccountChildIndicesByParent(parentIndices) {
175
269
  const childIndicesByParentRowIndex = new Map();
176
- for (let rowIndex = 0; rowIndex < dfsOrderedAccountRows.length; rowIndex++) {
177
- const parentRowIndex = findHorizontalAccountParentIndex(dfsOrderedAccountRows, rowIndex);
178
- if (parentRowIndex >= 0) {
270
+ for (let rowIndex = 0; rowIndex < parentIndices.length; rowIndex++) {
271
+ const parentRowIndex = parentIndices[rowIndex];
272
+ if (parentRowIndex != null && parentRowIndex >= 0) {
179
273
  let childRowIndices = childIndicesByParentRowIndex.get(parentRowIndex);
180
- if (childRowIndices === undefined) {
274
+ if (childRowIndices == null) {
181
275
  childRowIndices = [];
182
276
  childIndicesByParentRowIndex.set(parentRowIndex, childRowIndices);
183
277
  }
@@ -186,16 +280,3 @@ function buildHorizontalAccountChildIndicesByParent(dfsOrderedAccountRows) {
186
280
  }
187
281
  return childIndicesByParentRowIndex;
188
282
  }
189
- function buildHorizontalTreeView(dfsOrderedAccountRows, currentRowIndex) {
190
- const treeDepth = Math.max(0, dfsOrderedAccountRows[currentRowIndex].depth - 2);
191
- const siblingIndices = getHorizontalAccountSiblingIndices(dfsOrderedAccountRows, currentRowIndex);
192
- const hasChildren = horizontalAccountHasChildRows(dfsOrderedAccountRows, currentRowIndex);
193
- return {
194
- subAccountAncestorMetadata: buildHorizontalSubAccountAncestorMetadata(dfsOrderedAccountRows, currentRowIndex),
195
- treeDepth,
196
- hasChildren,
197
- hasSiblings: siblingIndices.length > 1,
198
- isLeaf: !hasChildren,
199
- isLastNode: currentRowIndex === siblingIndices[siblingIndices.length - 1],
200
- };
201
- }
package/lib/index.d.ts CHANGED
@@ -92,7 +92,7 @@ import { TrendChangeType } from './entity/insights/insightPayload';
92
92
  import { Insight } from './entity/insights/insightState';
93
93
  import { InsightSummary } from './entity/insights/insightSummary';
94
94
  import { JEAccruedSchedule, JEScheduledTransaction, ScheduledJournalEntry } from './entity/jeSchedules/jeSchedulesSelector';
95
- import { JEScheduleAIRecommendations, JEScheduleFieldRecommendation } from './entity/jeSchedules/jeSchedulesState';
95
+ import { JEScheduleAISummaries, JEScheduleFieldRecommendation } from './entity/jeSchedules/jeSchedulesState';
96
96
  import { ALL_SCHEDULES_TYPES, JEScheduleKey, JEScheduleTransactionKey, JournalEntryErrorCodeType, ScheduleJournalEntryStatusCodeType, ScheduleStatusCodeType, ScheduleTransactionID, ScheduleTypes, getJEScheduleTransactionKey, toScheduleTypesType, toScheduleTypesTypeStrict } from './entity/jeSchedules/jeSchedulesTypes';
97
97
  import { Merchant } from './entity/merchant/merchant';
98
98
  import { ALL_MONTH_END_CLOSE_CHECKS_FREQUENCY, MonthCloseCheckMetrics, MonthEndAuditSummary, MonthEndCloseCheck, MonthEndCloseCheckFrequency } from './entity/monthEndCloseChecks/monthEndCloseChecksState';
@@ -832,7 +832,7 @@ export { fetchApAgingDetail, AgingReportInvoice, ApAgingDetail, getApAgingDetail
832
832
  export { LinkBillExpenseKey };
833
833
  export { clearExpenseAutomationJEScheduleLocalData, clearExpenseAutomationJESchedulesView, fetchExpenseAutomationJESchedulesPage, ignoreExpenseAutomationJESchedule, initializeJeAccountSettingsView, initializeJeScheduleLocalData, removeJeScheduleTransactionKey, retryExpenseAutomationJESchedule, updateExpenseAutomationJESchedulesUIState, updateJeScheduleLocalDataById, updateJeScheduleTransactionKeys, };
834
834
  export { createNewSchedulesAccrued, deleteScheduleAccruedDetail, cancelScheduleAccruedJournalEntry, fetchScheduleAccruedDetails, fetchScheduleAccruedDetailsPage, resetJEAccruedLinkInLocalData, saveScheduleAccruedDetails, updateAmountsInScheduleAccruedDetail, updatedJEAccruedLinkWithRecommendedLocalData, updatedJELinkInLocalDataAccruedExpenses, fetchRecommendedTransactionRowIndex, clearSelectedJELinkRowIndex, updateLinkBillExpenseLocalData, updateScheduleAccruedDetailsLocalData, updateSelectedJEAccruedScheduleKey, resetSelectedJEAccruedScheduleKey, resetAccruedDetailNewScheduleState, };
835
- export { JEScheduleKey, JEScheduleTransactionKey, ScheduleTransactionID, getJEScheduleTransactionKey, ALL_SCHEDULES_TYPES, JEScheduledTransaction, JEAccruedSchedule, JEScheduleAIRecommendations, JEScheduleFieldRecommendation, ScheduleTypes, ScheduleJournalEntryStatusCodeType, ScheduleListReport, ScheduleAccruedListReport, getScheduleListReport, getAccruedScheduleListReport, ScheduleSubTabType, ScheduleListSortKey, fetchScheduleList, fetchAccruedScheduleList, fetchDownloadSchedules, fetchSchedulesAccount, updateScheduleListLocalData, getFetchStateForScheduleAccountList, toScheduleTypesType, toScheduleTypesTypeStrict, toScheduleListTabsFileTypeStrict, ScheduleListLocalData, ScheduleDetailsLocalDataFixedAssets, ScheduleDetailsLocalDataAccruedExpenses, ScheduleDetailsView, ScheduleAccruedDetailsView, LinkBillExpenseView, LinkBillExpenseLocalData, JEScheduleDetailsLocalData, ScheduleDetailsLocalData, toScheduleSubTabType, ScheduleStatusCodeType, JournalEntryErrorCodeType, ScheduleTransaction, updateScheduleListSubTab, updateScheduleListSearchText, updateScheduleListScrollState, updateScheduleListSortState, ScheduleDetailSortKey, ScheduledJournalEntry, updateSelectedJEScheduleKey, fetchScheduleDetails, getScheduleDetailsView, getAccruedScheduleDetailsView, fetchScheduleDetailsPage, saveScheduleDetails, deleteScheduleDetail, createNewSchedules, updateScheduleDetailsLocalData, JETransactionLink, updateScheduleListDownloadState, updateAccruedJEScheduleAccruedByListKey, DownloadJEScheduleTabOptions, updatedSelectedJELinkRowIndex, ScheduleListTabsFileType, getQBOUrlForLink, getThirdPartyIDFromQBOURL, updatedJELinkInLocalData, updateAmountsInScheduleDetail, ScheduleDetailUIState, resetJELinkInLocalData, JEScheduledTransactionWithBalance, JEScheduleWithBalance, JELinkType, updatedJELinkWithRecommendedLocalData, getFetchStateForScheduleListByType, getDefaultSelectedTimeframeForScheduleType, markAsCompleteScheduleDetail, resetMarkAsCompleteStatus, fetchVendorTabView, updateVendorTabViewTab, VendorTabViewTabType, getVendorTabView, VendorTabViewSelectorView, };
835
+ export { JEScheduleKey, JEScheduleTransactionKey, ScheduleTransactionID, getJEScheduleTransactionKey, ALL_SCHEDULES_TYPES, JEScheduledTransaction, JEAccruedSchedule, JEScheduleAISummaries, JEScheduleFieldRecommendation, ScheduleTypes, ScheduleJournalEntryStatusCodeType, ScheduleListReport, ScheduleAccruedListReport, getScheduleListReport, getAccruedScheduleListReport, ScheduleSubTabType, ScheduleListSortKey, fetchScheduleList, fetchAccruedScheduleList, fetchDownloadSchedules, fetchSchedulesAccount, updateScheduleListLocalData, getFetchStateForScheduleAccountList, toScheduleTypesType, toScheduleTypesTypeStrict, toScheduleListTabsFileTypeStrict, ScheduleListLocalData, ScheduleDetailsLocalDataFixedAssets, ScheduleDetailsLocalDataAccruedExpenses, ScheduleDetailsView, ScheduleAccruedDetailsView, LinkBillExpenseView, LinkBillExpenseLocalData, JEScheduleDetailsLocalData, ScheduleDetailsLocalData, toScheduleSubTabType, ScheduleStatusCodeType, JournalEntryErrorCodeType, ScheduleTransaction, updateScheduleListSubTab, updateScheduleListSearchText, updateScheduleListScrollState, updateScheduleListSortState, ScheduleDetailSortKey, ScheduledJournalEntry, updateSelectedJEScheduleKey, fetchScheduleDetails, getScheduleDetailsView, getAccruedScheduleDetailsView, fetchScheduleDetailsPage, saveScheduleDetails, deleteScheduleDetail, createNewSchedules, updateScheduleDetailsLocalData, JETransactionLink, updateScheduleListDownloadState, updateAccruedJEScheduleAccruedByListKey, DownloadJEScheduleTabOptions, updatedSelectedJELinkRowIndex, ScheduleListTabsFileType, getQBOUrlForLink, getThirdPartyIDFromQBOURL, updatedJELinkInLocalData, updateAmountsInScheduleDetail, ScheduleDetailUIState, resetJELinkInLocalData, JEScheduledTransactionWithBalance, JEScheduleWithBalance, JELinkType, updatedJELinkWithRecommendedLocalData, getFetchStateForScheduleListByType, getDefaultSelectedTimeframeForScheduleType, markAsCompleteScheduleDetail, resetMarkAsCompleteStatus, fetchVendorTabView, updateVendorTabViewTab, VendorTabViewTabType, getVendorTabView, VendorTabViewSelectorView, };
836
836
  export { GlobalMerchant, GlobalMerchantBase, TenantMerchant };
837
837
  export { ReviewStatus, VendorTransactionAttachment, VendorTransactionAttachmentPayload, VendorFirstReviewViewSelectorView, VendorFirstReviewViewLocalData, VendorFirstReviewSelectorView, VendorFirstReviewSelectorAttachmentView, VendorFirstReviewViewUIState, VendorFirstReviewViewColumnKey, GlobalMerchantAutoCompleteView, VendorReviewRowCurrentSelection, toVendorFirstReviewViewColumnKeyType, RecommendedNonExistingGlobalMerchant, getGlobalMerchantAutoCompleteResults, VendorReviewRecommendationViewState, GlobalMerchantType, getVendorFirstReviewView, getVendorFirstReviewAttachmentView, fetchVendorFirstReviewView, fetchVendorFirstReviewAttachments, updateVendorFirstReviewViewScrollYOffset, resetVendorFirstReviewLocalData, updateVendorFirstReviewViewPageToken, clearRecentlySavedErroredVendorData, saveVendorFirstReviewView, updateVendorFirstReviewViewLocalData, updateVendorFirstReviewSortUiState, fetchGlobalMerchantAutoCompleteView, clearGlobalMerchantAutoCompleteResults, GlobalVendorReviewRowCurrentSelection, FirstReviewPageCurrentSelectionByColumn, updateReviewVendorDetailLocalData, saveVendorDetailsView, getVendorDetailSelectorView, FirstReviewVendorDetailSelectorView, VendorViewLocalData, };
838
838
  export { fetchGlobalMerchantRecommendation, createGlobalMerchant, updateCreateGlobalMerchantLocalData, clearGlobalMerchantView, getGlobalMerchantView, GlobalMerchantViewSelectorView, GlobalMerchantViewState, NewGlobalMerchantData, NewGlobalMerchantCurrentSelection, };
@@ -858,7 +858,7 @@ export { acceptTreasuryTerms, fetchTreasurySetupView, clearTreasurySetupView, fe
858
858
  export { fetchChatSessionsForUser, createSession, submitQuestion, updateAiCfoViewScrollPosition, updateCurrentInput, updateCotCollapsedState, clearInput, setSession, clearAiCfoView, clearCurrentSessionId, clearDeleteChatSessionStatus, clearLastContextMessage, createSessionAndSubmit, stopSubmit, stopSubmitQuestion, fetchChatHistory, acceptMasterTOS, deleteChatSession, updateResponseState, fetchSuggestedQuestions, fetchSuggestedQuestionsSuccess, fetchSuggestedQuestionsFailure, applyAiCfoSidePanelHostPageTransition, clearAiCfoSidePanelHostPageContext, } from './view/aiCfoView/aiCfoViewReducer';
859
859
  export { AiCfoViewState, AiCfoViewUIState, SuggestedQuestionsForPageContext, } from './view/aiCfoView/aiCfoViewState';
860
860
  export { FetchSuggestedQuestionsResponse, SuggestedQuestionsDataPayload, } from './view/aiCfoView/aiCfoViewPayload';
861
- export { AiCfoSuggestedQuestionsPageContext } from './view/aiCfoView/aiCfoViewState';
861
+ export type { AiCfoSuggestedQuestionsPageContext } from './common/aiCfo/aiCfoSuggestedQuestionsPageContext';
862
862
  export { AiCfoViewSelector, getAiCfoView, getSuggestedQuestionsForPageContext, } from './view/aiCfoView/aiCfoViewSelector';
863
863
  export { MessagePayload, ChatSessionPayload, AiCfoAnswerPayload, } from './entity/aiCfo/aiCfoPayload';
864
864
  export { setNewSession, setSessions, upsertAnswerPayload, upsertOrAddQuestionAnswerPayload, addQuestionPayload, clearSession, clearAiCfo, toAiCfoVisualization, } from './entity/aiCfo/aiCfoReducer';