@zeniai/client-epic-state 5.0.92-betaNB2 → 5.0.93-beta0ND

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 (289) hide show
  1. package/lib/common/aiCfo/aiCfoSuggestedQuestionsPageContext.d.ts +1 -1
  2. package/lib/commonStateTypes/animations.d.ts +1 -1
  3. package/lib/commonStateTypes/animations.js +1 -0
  4. package/lib/commonStateTypes/viewAndReport/agingReportStateTypes.d.ts +1 -1
  5. package/lib/entity/accountRecon/accountReconPayload.d.ts +1 -20
  6. package/lib/entity/accountRecon/accountReconPayload.js +1 -23
  7. package/lib/entity/accountRecon/accountReconSelector.d.ts +1 -6
  8. package/lib/entity/accountRecon/accountReconSelector.js +0 -5
  9. package/lib/entity/accountRecon/accountReconState.d.ts +0 -19
  10. package/lib/entity/aiCfo/aiCfoPayload.d.ts +63 -5
  11. package/lib/entity/aiCfo/aiCfoReducer.d.ts +23 -2
  12. package/lib/entity/aiCfo/aiCfoReducer.js +249 -9
  13. package/lib/entity/aiCfo/aiCfoSelector.d.ts +4 -1
  14. package/lib/entity/aiCfo/aiCfoSelector.js +19 -1
  15. package/lib/entity/aiCfo/aiCfoState.d.ts +97 -4
  16. package/lib/entity/aiCfo/aiCfoState.js +18 -1
  17. package/lib/entity/cardPolicy/cardPolicyPayload.d.ts +277 -0
  18. package/lib/entity/cardPolicy/cardPolicyPayload.js +143 -0
  19. package/lib/entity/cardPolicy/cardPolicyReducer.d.ts +19 -0
  20. package/lib/entity/cardPolicy/cardPolicyReducer.js +175 -0
  21. package/lib/entity/cardPolicy/cardPolicySelector.d.ts +32 -0
  22. package/lib/entity/cardPolicy/cardPolicySelector.js +99 -0
  23. package/lib/entity/cardPolicy/cardPolicyState.d.ts +205 -0
  24. package/lib/entity/cardPolicy/cardPolicyState.js +14 -0
  25. package/lib/entity/cardPolicy/extractPolicyDocumentEpic.d.ts +18 -0
  26. package/lib/entity/cardPolicy/extractPolicyDocumentEpic.js +68 -0
  27. package/lib/entity/cardPolicy/fetchCardPolicyVendorOptionsEpic.d.ts +26 -0
  28. package/lib/entity/cardPolicy/fetchCardPolicyVendorOptionsEpic.js +47 -0
  29. package/lib/entity/cardPolicy/policyDocumentExtractionToRecommendationBridgeEpic.d.ts +25 -0
  30. package/lib/entity/cardPolicy/policyDocumentExtractionToRecommendationBridgeEpic.js +39 -0
  31. package/lib/entity/cardPolicy/policyRecommendationFromUploadEpic.d.ts +24 -0
  32. package/lib/entity/cardPolicy/policyRecommendationFromUploadEpic.js +105 -0
  33. package/lib/entity/company/companyPayload.d.ts +4 -0
  34. package/lib/entity/company/companyPayload.js +4 -0
  35. package/lib/entity/company/companyStateTypes.d.ts +4 -0
  36. package/lib/entity/jeSchedules/jeSchedulesTypes.d.ts +1 -1
  37. package/lib/entity/monthEndCloseChecks/monthEndCloseChecksPayload.d.ts +0 -7
  38. package/lib/entity/monthEndCloseChecks/monthEndCloseChecksPayload.js +0 -9
  39. package/lib/entity/monthEndCloseChecks/monthEndCloseChecksState.d.ts +1 -8
  40. package/lib/entity/paymentAccount/paymentAccountSelector.d.ts +1 -0
  41. package/lib/entity/paymentAccount/paymentAccountSelector.js +4 -0
  42. package/lib/entity/snackbar/snackbarTypes.d.ts +1 -1
  43. package/lib/entity/snackbar/snackbarTypes.js +3 -0
  44. package/lib/entity/tenant/clearAllEpic.d.ts +6 -2
  45. package/lib/entity/tenant/clearAllEpic.js +8 -0
  46. package/lib/entity/tenant/epic/deleteConnectionEpic.d.ts +1 -1
  47. package/lib/entity/tenant/epic/initEmailConnectOAuthEpic.d.ts +21 -0
  48. package/lib/entity/tenant/epic/initEmailConnectOAuthEpic.js +54 -0
  49. package/lib/entity/tenant/epic/saveAPIKeyConnectionEpic.d.ts +1 -1
  50. package/lib/entity/tenant/epic/saveConnectorCredentialsEpic.d.ts +3 -3
  51. package/lib/entity/tenant/epic/saveOAuthConnectionEpic.d.ts +1 -1
  52. package/lib/entity/tenant/tenantPayload.d.ts +1 -0
  53. package/lib/entity/tenant/tenantReducer.d.ts +38 -25
  54. package/lib/entity/tenant/tenantReducer.js +65 -5
  55. package/lib/entity/tenant/tenantState.d.ts +1 -0
  56. package/lib/epic.d.ts +19 -3
  57. package/lib/epic.js +20 -3
  58. package/lib/esm/commonStateTypes/animations.js +1 -0
  59. package/lib/esm/entity/accountRecon/accountReconPayload.js +1 -23
  60. package/lib/esm/entity/accountRecon/accountReconSelector.js +0 -5
  61. package/lib/esm/entity/aiCfo/aiCfoReducer.js +249 -9
  62. package/lib/esm/entity/aiCfo/aiCfoSelector.js +17 -1
  63. package/lib/esm/entity/aiCfo/aiCfoState.js +15 -0
  64. package/lib/esm/entity/cardPolicy/cardPolicyPayload.js +130 -0
  65. package/lib/esm/entity/cardPolicy/cardPolicyReducer.js +171 -0
  66. package/lib/esm/entity/cardPolicy/cardPolicySelector.js +75 -0
  67. package/lib/esm/entity/cardPolicy/cardPolicyState.js +9 -0
  68. package/lib/esm/entity/cardPolicy/extractPolicyDocumentEpic.js +64 -0
  69. package/lib/esm/entity/cardPolicy/fetchCardPolicyVendorOptionsEpic.js +43 -0
  70. package/lib/esm/entity/cardPolicy/policyDocumentExtractionToRecommendationBridgeEpic.js +35 -0
  71. package/lib/esm/entity/cardPolicy/policyRecommendationFromUploadEpic.js +101 -0
  72. package/lib/esm/entity/company/companyPayload.js +4 -0
  73. package/lib/esm/entity/monthEndCloseChecks/monthEndCloseChecksPayload.js +0 -9
  74. package/lib/esm/entity/paymentAccount/paymentAccountSelector.js +3 -0
  75. package/lib/esm/entity/snackbar/snackbarTypes.js +3 -0
  76. package/lib/esm/entity/tenant/clearAllEpic.js +8 -0
  77. package/lib/esm/entity/tenant/epic/initEmailConnectOAuthEpic.js +50 -0
  78. package/lib/esm/entity/tenant/tenantReducer.js +63 -3
  79. package/lib/esm/epic.js +20 -3
  80. package/lib/esm/index.js +48 -15
  81. package/lib/esm/reducer.js +12 -0
  82. package/lib/esm/view/aiCfoView/aiCfoViewReducer.js +6 -3
  83. package/lib/esm/view/aiCfoView/epics/createSessionAndSubmitEpic.js +5 -2
  84. package/lib/esm/view/aiCfoView/epics/createSessionEpic.js +2 -1
  85. package/lib/esm/view/aiCfoView/epics/fetchSuggestedQuestionsEpic.js +12 -2
  86. package/lib/esm/view/expenseAutomationView/payload/reconciliationPayload.js +0 -73
  87. package/lib/esm/view/expenseAutomationView/reducers/reconciliationViewReducer.js +4 -98
  88. package/lib/esm/view/expenseAutomationView/selectors/reconciliationViewSelector.js +0 -20
  89. package/lib/esm/view/expenseAutomationView/types/reconciliationViewState.js +0 -20
  90. package/lib/esm/view/fileView/epic/deleteFileEpic.js +2 -2
  91. package/lib/esm/view/fileView/epic/deleteFileListEpic.js +2 -2
  92. package/lib/esm/view/fileView/epic/updateFileNameEpic.js +2 -2
  93. package/lib/esm/view/onboardingView/customerView/epic/aiAgentsActivation/fetchAiAgentsActivationStatusEpic.js +42 -0
  94. package/lib/esm/view/onboardingView/customerView/epic/customerDetails/acknowledgeOnboardingAiActivationViewedEpic.js +29 -0
  95. package/lib/esm/view/onboardingView/customerView/epic/customerDetails/acknowledgeOnboardingAiFinanceTeamEpic.js +40 -0
  96. package/lib/esm/view/onboardingView/customerView/onboardingCustomerViewReducer.js +217 -50
  97. package/lib/esm/view/onboardingView/customerView/onboardingCustomerViewSelector.js +7 -1
  98. package/lib/esm/view/onboardingView/customerView/onboardingCustomerViewState.js +12 -0
  99. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailReducer.js +52 -0
  100. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailSelector.js +22 -0
  101. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailState.js +1 -0
  102. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/fetchCardPolicyDetailEpic.js +36 -0
  103. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/updateCardPolicyEpic.js +39 -0
  104. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/archiveCardPolicyEpic.js +34 -0
  105. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListReducer.js +58 -0
  106. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListSelector.js +21 -0
  107. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListState.js +1 -0
  108. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/fetchCardPolicyListEpic.js +38 -0
  109. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyAiCardPolicyFormDraftUpdate.js +289 -0
  110. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToAiCardPolicyDraft.js +109 -0
  111. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToDraftEpic.js +44 -0
  112. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToManualCardPolicyDraft.js +111 -0
  113. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyUploadPlanToAiCardPolicyDraft.js +25 -0
  114. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildAiCardPolicyFormDraftSeed.js +363 -0
  115. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildManualCardPolicyFormDraftSeed.js +36 -0
  116. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyChipIds.js +19 -0
  117. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyFormDraftTypes.js +6 -0
  118. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyRequestParts.js +119 -0
  119. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyReducer.js +154 -0
  120. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicySelector.js +22 -0
  121. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyState.js +1 -0
  122. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyTemplateEpic.js +39 -0
  123. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/deriveAiPolicyReviewRowsFromInputs.js +140 -0
  124. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/fetchCardPolicyMccCategoriesEpic.js +20 -0
  125. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/seedAiCardPolicyFormDraftEpic.js +100 -0
  126. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toBulkCardPolicyTemplateRequestsFromDraft.js +96 -0
  127. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toCardPolicyTemplateRequestFromDraft.js +59 -0
  128. package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toManualCardPolicyTemplateRequestFromDraft.js +24 -0
  129. package/lib/esm/view/spendManagement/chargeCards/chargeCardList/chargeCardListSelector.js +25 -0
  130. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/aiCardCreationFormDraftTypes.js +1 -0
  131. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/applyAiCardCreationFormDraftUpdate.js +34 -0
  132. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/buildAiCardCreationFormDraftSeed.js +57 -0
  133. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/deriveAiCardRowsFromTeams.js +35 -0
  134. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardEpic.js +2 -2
  135. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardReducer.js +42 -4
  136. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardSelector.js +35 -0
  137. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/seedAiCardCreationFormDraftEpic.js +62 -0
  138. package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/toIssueChargeCardLocalDataFromDraft.js +44 -0
  139. package/lib/esm/view/spendManagement/commonSetup/epic/setup/parseUploadedKybDocumentEpic.js +58 -0
  140. package/lib/esm/view/spendManagement/commonSetup/epic/setup/parseUploadedKycDocumentEpic.js +67 -0
  141. package/lib/esm/view/spendManagement/commonSetup/kycKybAutofillActions.js +14 -0
  142. package/lib/esm/view/spendManagement/commonSetup/kycKybParseMapper.js +205 -0
  143. package/lib/esm/view/spendManagement/commonSetup/setupViewReducer.js +105 -52
  144. package/lib/esm/view/spendManagement/commonSetup/setupViewSelector.js +6 -1
  145. package/lib/esm/view/spendManagement/commonSetup/types/kycKybAutofill.js +28 -0
  146. package/lib/index.d.ts +57 -19
  147. package/lib/index.js +217 -37
  148. package/lib/reducer.d.ts +12 -0
  149. package/lib/reducer.js +12 -0
  150. package/lib/view/aiCfoView/aiCfoViewReducer.d.ts +11 -2
  151. package/lib/view/aiCfoView/aiCfoViewReducer.js +6 -3
  152. package/lib/view/aiCfoView/epics/createSessionAndSubmitEpic.js +5 -2
  153. package/lib/view/aiCfoView/epics/createSessionEpic.js +2 -1
  154. package/lib/view/aiCfoView/epics/fetchSuggestedQuestionsEpic.d.ts +8 -1
  155. package/lib/view/aiCfoView/epics/fetchSuggestedQuestionsEpic.js +12 -2
  156. package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.d.ts +1 -1
  157. package/lib/view/expenseAutomationView/payload/reconciliationPayload.d.ts +1 -83
  158. package/lib/view/expenseAutomationView/payload/reconciliationPayload.js +0 -75
  159. package/lib/view/expenseAutomationView/reducers/reconciliationViewReducer.d.ts +3 -35
  160. package/lib/view/expenseAutomationView/reducers/reconciliationViewReducer.js +5 -99
  161. package/lib/view/expenseAutomationView/selectorTypes/reconciliationViewSelectorTypes.d.ts +1 -5
  162. package/lib/view/expenseAutomationView/selectors/reconciliationViewSelector.js +0 -20
  163. package/lib/view/expenseAutomationView/types/reconciliationViewState.d.ts +1 -129
  164. package/lib/view/expenseAutomationView/types/reconciliationViewState.js +0 -21
  165. package/lib/view/fileView/epic/deleteFileEpic.js +1 -1
  166. package/lib/view/fileView/epic/deleteFileListEpic.js +1 -1
  167. package/lib/view/fileView/epic/updateFileNameEpic.js +1 -1
  168. package/lib/view/onboardingView/customerView/epic/aiAgentsActivation/fetchAiAgentsActivationStatusEpic.d.ts +7 -0
  169. package/lib/view/onboardingView/customerView/epic/aiAgentsActivation/fetchAiAgentsActivationStatusEpic.js +46 -0
  170. package/lib/view/onboardingView/customerView/epic/customerDetails/acknowledgeOnboardingAiActivationViewedEpic.d.ts +8 -0
  171. package/lib/view/onboardingView/customerView/epic/customerDetails/acknowledgeOnboardingAiActivationViewedEpic.js +33 -0
  172. package/lib/view/onboardingView/customerView/epic/customerDetails/acknowledgeOnboardingAiFinanceTeamEpic.d.ts +9 -0
  173. package/lib/view/onboardingView/customerView/epic/customerDetails/acknowledgeOnboardingAiFinanceTeamEpic.js +44 -0
  174. package/lib/view/onboardingView/customerView/onboardingCustomerViewPayload.d.ts +3 -0
  175. package/lib/view/onboardingView/customerView/onboardingCustomerViewReducer.d.ts +41 -4
  176. package/lib/view/onboardingView/customerView/onboardingCustomerViewReducer.js +219 -51
  177. package/lib/view/onboardingView/customerView/onboardingCustomerViewSelector.d.ts +5 -1
  178. package/lib/view/onboardingView/customerView/onboardingCustomerViewSelector.js +11 -2
  179. package/lib/view/onboardingView/customerView/onboardingCustomerViewState.d.ts +40 -0
  180. package/lib/view/onboardingView/customerView/onboardingCustomerViewState.js +13 -1
  181. package/lib/view/people/peopleTypes.d.ts +1 -1
  182. package/lib/view/scheduleView/scheduleListView/scheduleListTypes.d.ts +1 -1
  183. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailReducer.d.ts +14 -0
  184. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailReducer.js +56 -0
  185. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailSelector.d.ts +15 -0
  186. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailSelector.js +28 -0
  187. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailState.d.ts +8 -0
  188. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailState.js +2 -0
  189. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/fetchCardPolicyDetailEpic.d.ts +8 -0
  190. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/fetchCardPolicyDetailEpic.js +40 -0
  191. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/updateCardPolicyEpic.d.ts +8 -0
  192. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/updateCardPolicyEpic.js +43 -0
  193. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/archiveCardPolicyEpic.d.ts +8 -0
  194. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/archiveCardPolicyEpic.js +38 -0
  195. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListReducer.d.ts +15 -0
  196. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListReducer.js +62 -0
  197. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListSelector.d.ts +15 -0
  198. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListSelector.js +27 -0
  199. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListState.d.ts +7 -0
  200. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListState.js +2 -0
  201. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/fetchCardPolicyListEpic.d.ts +8 -0
  202. package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/fetchCardPolicyListEpic.js +42 -0
  203. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyAiCardPolicyFormDraftUpdate.d.ts +8 -0
  204. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyAiCardPolicyFormDraftUpdate.js +294 -0
  205. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToAiCardPolicyDraft.d.ts +8 -0
  206. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToAiCardPolicyDraft.js +113 -0
  207. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToDraftEpic.d.ts +9 -0
  208. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToDraftEpic.js +48 -0
  209. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToManualCardPolicyDraft.d.ts +8 -0
  210. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToManualCardPolicyDraft.js +115 -0
  211. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyUploadPlanToAiCardPolicyDraft.d.ts +13 -0
  212. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyUploadPlanToAiCardPolicyDraft.js +29 -0
  213. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildAiCardPolicyFormDraftSeed.d.ts +14 -0
  214. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildAiCardPolicyFormDraftSeed.js +369 -0
  215. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildManualCardPolicyFormDraftSeed.d.ts +6 -0
  216. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildManualCardPolicyFormDraftSeed.js +40 -0
  217. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyChipIds.d.ts +7 -0
  218. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyChipIds.js +26 -0
  219. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyFormDraftTypes.d.ts +116 -0
  220. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyFormDraftTypes.js +10 -0
  221. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyRequestParts.d.ts +33 -0
  222. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyRequestParts.js +126 -0
  223. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyReducer.d.ts +52 -0
  224. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyReducer.js +158 -0
  225. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicySelector.d.ts +11 -0
  226. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicySelector.js +31 -0
  227. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyState.d.ts +12 -0
  228. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyState.js +2 -0
  229. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyTemplateEpic.d.ts +8 -0
  230. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyTemplateEpic.js +43 -0
  231. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/deriveAiPolicyReviewRowsFromInputs.d.ts +10 -0
  232. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/deriveAiPolicyReviewRowsFromInputs.js +144 -0
  233. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/fetchCardPolicyMccCategoriesEpic.d.ts +7 -0
  234. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/fetchCardPolicyMccCategoriesEpic.js +24 -0
  235. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/seedAiCardPolicyFormDraftEpic.d.ts +11 -0
  236. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/seedAiCardPolicyFormDraftEpic.js +104 -0
  237. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toBulkCardPolicyTemplateRequestsFromDraft.d.ts +22 -0
  238. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toBulkCardPolicyTemplateRequestsFromDraft.js +100 -0
  239. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toCardPolicyTemplateRequestFromDraft.d.ts +8 -0
  240. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toCardPolicyTemplateRequestFromDraft.js +63 -0
  241. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toManualCardPolicyTemplateRequestFromDraft.d.ts +3 -0
  242. package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toManualCardPolicyTemplateRequestFromDraft.js +28 -0
  243. package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardList.d.ts +1 -1
  244. package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardListSelector.d.ts +14 -0
  245. package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardListSelector.js +27 -1
  246. package/lib/view/spendManagement/chargeCards/issueChargeCard/aiCardCreationFormDraftTypes.d.ts +34 -0
  247. package/lib/view/spendManagement/chargeCards/issueChargeCard/aiCardCreationFormDraftTypes.js +2 -0
  248. package/lib/view/spendManagement/chargeCards/issueChargeCard/applyAiCardCreationFormDraftUpdate.d.ts +7 -0
  249. package/lib/view/spendManagement/chargeCards/issueChargeCard/applyAiCardCreationFormDraftUpdate.js +38 -0
  250. package/lib/view/spendManagement/chargeCards/issueChargeCard/buildAiCardCreationFormDraftSeed.d.ts +12 -0
  251. package/lib/view/spendManagement/chargeCards/issueChargeCard/buildAiCardCreationFormDraftSeed.js +61 -0
  252. package/lib/view/spendManagement/chargeCards/issueChargeCard/deriveAiCardRowsFromTeams.d.ts +9 -0
  253. package/lib/view/spendManagement/chargeCards/issueChargeCard/deriveAiCardRowsFromTeams.js +39 -0
  254. package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardEpic.d.ts +2 -2
  255. package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardEpic.js +1 -1
  256. package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardReducer.d.ts +12 -2
  257. package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardReducer.js +43 -5
  258. package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardSelector.d.ts +7 -0
  259. package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardSelector.js +42 -1
  260. package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardState.d.ts +5 -0
  261. package/lib/view/spendManagement/chargeCards/issueChargeCard/seedAiCardCreationFormDraftEpic.d.ts +11 -0
  262. package/lib/view/spendManagement/chargeCards/issueChargeCard/seedAiCardCreationFormDraftEpic.js +66 -0
  263. package/lib/view/spendManagement/chargeCards/issueChargeCard/toIssueChargeCardLocalDataFromDraft.d.ts +3 -0
  264. package/lib/view/spendManagement/chargeCards/issueChargeCard/toIssueChargeCardLocalDataFromDraft.js +48 -0
  265. package/lib/view/spendManagement/commonSetup/epic/setup/parseUploadedKybDocumentEpic.d.ts +28 -0
  266. package/lib/view/spendManagement/commonSetup/epic/setup/parseUploadedKybDocumentEpic.js +62 -0
  267. package/lib/view/spendManagement/commonSetup/epic/setup/parseUploadedKycDocumentEpic.d.ts +30 -0
  268. package/lib/view/spendManagement/commonSetup/epic/setup/parseUploadedKycDocumentEpic.js +71 -0
  269. package/lib/view/spendManagement/commonSetup/kycKybAutofillActions.d.ts +33 -0
  270. package/lib/view/spendManagement/commonSetup/kycKybAutofillActions.js +17 -0
  271. package/lib/view/spendManagement/commonSetup/kycKybParseMapper.d.ts +24 -0
  272. package/lib/view/spendManagement/commonSetup/kycKybParseMapper.js +213 -0
  273. package/lib/view/spendManagement/commonSetup/setupViewReducer.d.ts +28 -2
  274. package/lib/view/spendManagement/commonSetup/setupViewReducer.js +106 -53
  275. package/lib/view/spendManagement/commonSetup/setupViewSelector.d.ts +7 -2
  276. package/lib/view/spendManagement/commonSetup/setupViewSelector.js +6 -1
  277. package/lib/view/spendManagement/commonSetup/setupViewState.d.ts +19 -0
  278. package/lib/view/spendManagement/commonSetup/types/kycKybAutofill.d.ts +142 -0
  279. package/lib/view/spendManagement/commonSetup/types/kycKybAutofill.js +32 -0
  280. package/lib/view/taskManager/taskListView/taskListReducer.d.ts +1 -1
  281. package/lib/view/transactionDetail/journalEntryLinesViewModel.d.ts +1 -1
  282. package/lib/view/vendorFiling1099/vendorFiling1099List/vendorFiling1099ListState.d.ts +1 -1
  283. package/package.json +1 -1
  284. package/lib/esm/view/expenseAutomationView/epics/accountRecon/parseStatementEpic.js +0 -34
  285. package/lib/esm/view/expenseAutomationView/epics/accountRecon/updateStatementInfoEpic.js +0 -42
  286. package/lib/view/expenseAutomationView/epics/accountRecon/parseStatementEpic.d.ts +0 -6
  287. package/lib/view/expenseAutomationView/epics/accountRecon/parseStatementEpic.js +0 -38
  288. package/lib/view/expenseAutomationView/epics/accountRecon/updateStatementInfoEpic.d.ts +0 -19
  289. package/lib/view/expenseAutomationView/epics/accountRecon/updateStatementInfoEpic.js +0 -46
@@ -16,4 +16,4 @@
16
16
  *
17
17
  * @see README.md in this directory for maintenance expectations.
18
18
  */
19
- export type AiCfoSuggestedQuestionsPageContext = 'balance_sheet' | 'profit_loss' | 'vendors' | 'transactions' | 'cash_flow' | 'accounts_receivable' | 'accounts_payable' | 'transaction_details' | 'dashboard' | 'cash_balance' | 'card_balance' | 'cash_in_cash_out' | 'net_burn_or_income' | 'cash_position' | 'top_expenses' | 'revenue' | 'operating_expenses' | 'command_centre' | 'je_schedules' | 'reconciliation' | 'flux_analysis' | 'receipts' | 'mei' | 'task_checklist' | 'performance' | 'bills_list' | 'bills_details' | 'reimbursement_list' | 'reimbursement_details' | 'vendors_summary' | 'opex_by_vendor' | 'prepaid_expenses' | 'fixed_assets' | 'form_1099' | 'accrued_expenses' | 'forecast' | 'checking' | 'checking_details' | 'treasury' | 'cards' | 'cards_detail' | 'people' | 'rewards' | 'notifications';
19
+ export type AiCfoSuggestedQuestionsPageContext = 'balance_sheet' | 'profit_loss' | 'vendors' | 'transactions' | 'cash_flow' | 'accounts_receivable' | 'accounts_payable' | 'transaction_details' | 'dashboard' | 'cash_balance' | 'card_balance' | 'cash_in_cash_out' | 'net_burn_or_income' | 'cash_position' | 'top_expenses' | 'revenue' | 'operating_expenses' | 'command_centre' | 'je_schedules' | 'reconciliation' | 'flux_analysis' | 'receipts' | 'mei' | 'task_checklist' | 'performance' | 'bills_list' | 'bills_details' | 'reimbursement_list' | 'reimbursement_details' | 'vendors_summary' | 'opex_by_vendor' | 'prepaid_expenses' | 'fixed_assets' | 'form_1099' | 'accrued_expenses' | 'forecast' | 'checking' | 'checking_details' | 'treasury' | 'cards' | 'cards_creation' | 'cards_detail' | 'card_policy' | 'card_policy_detail' | 'people' | 'rewards' | 'notifications';
@@ -1,2 +1,2 @@
1
- export declare const toAnimationsFileName: (v: string) => "Success" | "AiAgent" | "AiIconEntry" | "AiIconExit" | "AiIconLoop" | "AiStar" | "AiStarIcon" | "AiStarPlain" | "AIPoweredInvoiceDark" | "AIPoweredInvoiceLight" | "Angry" | "AutoTransfer" | "CloseCard" | "Confetti" | "ConfettiSuccess" | "DashboardChristmasSnow" | "DashboardNewYearShow" | "DashboardSidebarBottomChristmas" | "DashboardSidebarBottomHalloween" | "DashboardSidebarBottomNewYear" | "DashboardSidebarBottomThanksgiving" | "DashboardSidebarTopChristmas" | "DashboardSidebarTopHalloween" | "DashboardSidebarTopNewYear" | "DashboardSidebarTopThanksgiving" | "Distribution" | "DistributionDark" | "EarnYield" | "FastestWayDark" | "FastestWayLight" | "FinanceTeamDark" | "FinanceTeamLight" | "Happy" | "Liquidity" | "LockCard" | "MoneyTransferSuccess" | "MultiLevelApprovalDark" | "MultiLevelApprovalLight" | "NotHappy" | "Protection" | "ReceiptDark" | "ReceiptLight" | "Recurring" | "RecurringDark" | "ReimburseDark" | "ReimburseLight" | "RewardsDark" | "RewardsDarkHover" | "RewardsLight" | "RewardsLightHover" | "Ripple" | "Secure" | "Target" | "TargetDark" | "UnlockCard" | "VeryHappy" | "ZeniAssist";
1
+ export declare const toAnimationsFileName: (v: string) => "Success" | "AiAgent" | "AiIconEntry" | "AiIconExit" | "AiIconLoop" | "AiStar" | "AiStarIcon" | "AiStarPlain" | "AIPoweredInvoiceDark" | "AIPoweredInvoiceLight" | "Angry" | "AutoTransfer" | "CloseCard" | "Confetti" | "ConfettiSuccess" | "DashboardChristmasSnow" | "DashboardNewYearShow" | "DashboardSidebarBottomChristmas" | "DashboardSidebarBottomHalloween" | "DashboardSidebarBottomNewYear" | "DashboardSidebarBottomThanksgiving" | "DashboardSidebarTopChristmas" | "DashboardSidebarTopHalloween" | "DashboardSidebarTopNewYear" | "DashboardSidebarTopThanksgiving" | "Distribution" | "DistributionDark" | "EarnYield" | "FastestWayDark" | "FastestWayLight" | "FinanceTeamDark" | "FinanceTeamLight" | "Happy" | "Liquidity" | "LockCard" | "MoneyTransferSuccess" | "MultiLevelApprovalDark" | "MultiLevelApprovalLight" | "NotHappy" | "Protection" | "ReceiptDark" | "ReceiptLight" | "Recurring" | "RecurringDark" | "ReimburseDark" | "ReimburseLight" | "RewardsDark" | "RewardsDarkHover" | "RewardsLight" | "RewardsLightHover" | "Ripple" | "Secure" | "Target" | "TargetDark" | "UnlockCard" | "VeryHappy" | "Welcome" | "ZeniAssist";
2
2
  export type AnimationFileName = ReturnType<typeof toAnimationsFileName>;
@@ -59,6 +59,7 @@ const ALL_ANIMATIONS_FILE_NAMES = [
59
59
  'TargetDark',
60
60
  'UnlockCard',
61
61
  'VeryHappy',
62
+ 'Welcome',
62
63
  'ZeniAssist',
63
64
  ];
64
65
  const toAnimationsFileName = (v) => (0, stringToUnion_1.stringToUnion)(v, ALL_ANIMATIONS_FILE_NAMES);
@@ -8,7 +8,7 @@ import { SortOrder } from '../selectorTypes/sortOrderTypes';
8
8
  import { ReportID } from './viewAndReport';
9
9
  export type AgingDateSelectionType = 'last_month' | 'last_quarter' | 'custom_date';
10
10
  export type AgingReportId = Extract<ReportID, 'accounts_payable_aging' | 'accounts_receivable_aging'>;
11
- declare const toAgingReportSortKey: (v: string) => "vendor" | "customer" | "total" | "current_due" | "due_1-30_days" | "due_31-60_days" | "due_61-90_days" | "due_over_90_days";
11
+ declare const toAgingReportSortKey: (v: string) => "vendor" | "customer" | "current_due" | "due_1-30_days" | "due_31-60_days" | "due_61-90_days" | "due_over_90_days" | "total";
12
12
  export type AgingReportSortKey = ReturnType<typeof toAgingReportSortKey>;
13
13
  export interface AgingReportInvoice {
14
14
  amount: Amount;
@@ -7,20 +7,6 @@ export interface StatementMetaDataPayload {
7
7
  file_id: string;
8
8
  statement_upload_id: string;
9
9
  }
10
- export interface LastReconciledByPayload {
11
- user_email: string;
12
- user_id: ID;
13
- }
14
- export interface LastReconciledPayload {
15
- at: string;
16
- by: LastReconciledByPayload;
17
- for_period_end_date: string;
18
- }
19
- export interface MatchProgressPayload {
20
- matched: number;
21
- percentage: number | null;
22
- total: number;
23
- }
24
10
  export interface ReconciliationDataPayload {
25
11
  account_id: ID;
26
12
  balance_data_status: StatusCodeWithLabelPayload | null;
@@ -35,10 +21,6 @@ export interface ReconciliationDataPayload {
35
21
  error_message: string;
36
22
  } | null;
37
23
  initial_cleared_balance: number | null;
38
- last_reconciled: LastReconciledPayload | null;
39
- match_progress: MatchProgressPayload | null;
40
- needs_review_count: number;
41
- opening_balance: number | null;
42
24
  payment_account_updated_at: string | null;
43
25
  reconciliation_id: string | null;
44
26
  retry_count: number | null;
@@ -47,12 +29,11 @@ export interface ReconciliationDataPayload {
47
29
  statement_data_status: StatusCodeWithLabelPayload | null;
48
30
  statement_meta_data: StatementMetaDataPayload | null;
49
31
  statement_status: StatusCodeWithLabelPayload | null;
50
- status: StatusCodeWithLabelPayload;
32
+ status: StatusCodeWithLabelPayload | null;
51
33
  transactions: ReconcileReviewTransactionsPayload;
52
34
  update_time: string | null;
53
35
  user_id: ID | null;
54
36
  variance: number | null;
55
- auto_matched_count?: number;
56
37
  }
57
38
  export interface RecommendedReviewTransactionPayload {
58
39
  amount: number;
@@ -65,7 +65,7 @@ const toAccountReconciliationData = (payload) => {
65
65
  return {
66
66
  reconciliationId: payload.reconciliation_id ?? undefined,
67
67
  accountId: payload.account_id,
68
- reconciliationStatus: payload.status != null
68
+ reconciliationStatus: payload.status
69
69
  ? {
70
70
  code: (0, accountReconState_1.toReconciliationStatusCodeType)(payload.status.code),
71
71
  label: payload.status.label,
@@ -111,28 +111,6 @@ const toAccountReconciliationData = (payload) => {
111
111
  initialClearedBalance: payload.initial_cleared_balance != null
112
112
  ? (0, amount_1.toAmount)(payload.initial_cleared_balance, payload.currency.currency_code, payload.currency.currency_symbol)
113
113
  : undefined,
114
- lastReconciled: payload.last_reconciled != null
115
- ? {
116
- at: (0, zeniDayJS_1.date)(payload.last_reconciled.at),
117
- by: {
118
- userEmail: payload.last_reconciled.by.user_email,
119
- userId: payload.last_reconciled.by.user_id,
120
- },
121
- forPeriodEndDate: (0, zeniDayJS_1.date)(payload.last_reconciled.for_period_end_date),
122
- }
123
- : undefined,
124
- matchProgress: payload.match_progress != null
125
- ? {
126
- matched: payload.match_progress.matched,
127
- percentage: payload.match_progress.percentage,
128
- total: payload.match_progress.total,
129
- }
130
- : undefined,
131
- autoMatchedCount: payload.auto_matched_count,
132
- needsReview: payload.needs_review_count,
133
- openingBalance: payload.opening_balance != null
134
- ? (0, amount_1.toAmount)(payload.opening_balance, payload.currency.currency_code, payload.currency.currency_symbol)
135
- : undefined,
136
114
  startDate: (0, zeniDayJS_1.date)(payload.start_date),
137
115
  endDate: (0, zeniDayJS_1.date)(payload.end_date),
138
116
  accountUpdatedAt: payload.payment_account_updated_at != null
@@ -7,7 +7,7 @@ import { AccountBase } from '../account/accountState';
7
7
  import { File } from '../file/fileState';
8
8
  import { MatchedTransaction } from '../transaction/stateTypes/reconciliationTransaction';
9
9
  import { User } from '../user/userState';
10
- import { BalanceDataStatusCodeType, LastReconciled, MatchProgress, ReconciliationStatusCodeType, StatementDataStatusCodeType, StatementStatusCodeType, TransactionsToReview } from './accountReconState';
10
+ import { BalanceDataStatusCodeType, ReconciliationStatusCodeType, StatementDataStatusCodeType, StatementStatusCodeType, TransactionsToReview } from './accountReconState';
11
11
  export interface AccountReconciliationEntity {
12
12
  account: AccountBase;
13
13
  currency: Currency;
@@ -20,7 +20,6 @@ export interface AccountReconciliationEntity {
20
20
  transactionsToReconcile: MatchedTransaction[];
21
21
  transactionsToReview: TransactionsToReview[];
22
22
  accountUpdatedAt?: ZeniDate;
23
- autoMatchedCount?: number;
24
23
  balance?: Amount;
25
24
  balanceDataStatus?: {
26
25
  code: BalanceDataStatusCodeType;
@@ -32,10 +31,6 @@ export interface AccountReconciliationEntity {
32
31
  errorShort: string;
33
32
  };
34
33
  initialClearedBalance?: Amount;
35
- lastReconciled?: LastReconciled;
36
- matchProgress?: MatchProgress;
37
- needsReview?: number;
38
- openingBalance?: Amount;
39
34
  reconciliationId?: ID;
40
35
  reconciliationStatus?: {
41
36
  code: ReconciliationStatusCodeType;
@@ -36,11 +36,6 @@ exports.getAccountReconByAccountIdAndSelectedPeriod = (0, toolkit_1.createSelect
36
36
  variance: accountRecon.variance,
37
37
  clearedBalance: accountRecon.clearedBalance,
38
38
  initialClearedBalance: accountRecon.initialClearedBalance,
39
- lastReconciled: accountRecon.lastReconciled,
40
- autoMatchedCount: accountRecon.autoMatchedCount,
41
- matchProgress: accountRecon.matchProgress,
42
- needsReview: accountRecon.needsReview,
43
- openingBalance: accountRecon.openingBalance,
44
39
  reconciliationId: accountRecon.reconciliationId,
45
40
  user,
46
41
  statementStatus: accountRecon.statementStatus,
@@ -18,20 +18,6 @@ export declare const toStatementStatusCodeType: (v: string) => "not_found" | "up
18
18
  export type StatementStatusCodeType = ReturnType<typeof toStatementStatusCodeType>;
19
19
  export declare const toAccountReconKey: (accountId: ID, selectedPeriod: MonthYearPeriod) => string;
20
20
  export type AccountReconKey = ReturnType<typeof toAccountReconKey>;
21
- export interface LastReconciledByUser {
22
- userEmail: string;
23
- userId: ID;
24
- }
25
- export interface LastReconciled {
26
- at: ZeniDate;
27
- by: LastReconciledByUser;
28
- forPeriodEndDate: ZeniDate;
29
- }
30
- export interface MatchProgress {
31
- matched: number;
32
- percentage: number | null;
33
- total: number;
34
- }
35
21
  export interface AccountReconState {
36
22
  accountReconByAccountReconKey: Record<AccountReconKey, AccountReconciliationData>;
37
23
  }
@@ -47,7 +33,6 @@ export interface AccountReconciliationData {
47
33
  transactionsToReconcile: ID[];
48
34
  transactionsToReview: TransactionsToReview[];
49
35
  accountUpdatedAt?: ZeniDate;
50
- autoMatchedCount?: number;
51
36
  balanceDataStatus?: {
52
37
  code: BalanceDataStatusCodeType;
53
38
  label: string;
@@ -59,10 +44,6 @@ export interface AccountReconciliationData {
59
44
  errorShort: string;
60
45
  };
61
46
  initialClearedBalance?: Amount;
62
- lastReconciled?: LastReconciled;
63
- matchProgress?: MatchProgress;
64
- needsReview?: number;
65
- openingBalance?: Amount;
66
47
  reconciliationId?: ID;
67
48
  reconciliationStatus?: {
68
49
  code: ReconciliationStatusCodeType;
@@ -12,16 +12,74 @@ export interface YFormatPayload {
12
12
  export interface ChartVisualizationPayload {
13
13
  values: Array<Record<string, string | number>>;
14
14
  x: string;
15
- /**
16
- * y can be a string or an array of strings in the API payload.
17
- * We will normalize it to string[] in state.
18
- */
19
15
  y: string | string[];
20
16
  lines?: string[] | null;
21
17
  y_format?: YFormatPayload;
22
18
  }
19
+ export interface SuggestedCardPayload {
20
+ avg_spend: number;
21
+ card_name: string;
22
+ card_name_id: string;
23
+ card_type: 'vendor' | 'department' | 'category';
24
+ credit_limit: number;
25
+ is_suggested: boolean;
26
+ owner_id: string | null;
27
+ }
28
+ export interface CardsCreationInitialDataPayload {
29
+ mode: 'review' | 'create';
30
+ suggested_cards: SuggestedCardPayload[];
31
+ }
32
+ export interface DraftPolicyEntityPayload {
33
+ category_codes: string[];
34
+ merchant_names: string[];
35
+ }
36
+ export interface DraftPolicySpendLimitsPayload {
37
+ transaction: number;
38
+ [cadence: string]: number | undefined;
39
+ }
40
+ export interface DraftPolicyPayload {
41
+ allowed_entity: DraftPolicyEntityPayload;
42
+ apply_to_cards: string[];
43
+ blocked_entity: DraftPolicyEntityPayload;
44
+ description: string;
45
+ mode: string;
46
+ name: string;
47
+ required_receipt_threshold: number;
48
+ spend_limits: DraftPolicySpendLimitsPayload;
49
+ }
50
+ export interface CardPolicyStep5ReviewPayload {
51
+ draft_policies: DraftPolicyPayload[];
52
+ prompt: string;
53
+ grouping_source?: string;
54
+ }
55
+ export interface CardPolicyWizardPlanPayload {
56
+ step_5_review: CardPolicyStep5ReviewPayload;
57
+ }
58
+ export interface CardPolicyUploadSourcePayload {
59
+ confidence_score: number;
60
+ file_name: string;
61
+ low_confidence_fields: string[];
62
+ }
63
+ export type CardPolicyInitialDataPayload = {
64
+ mode: 'auto';
65
+ wizard_plan: CardPolicyWizardPlanPayload;
66
+ } | {
67
+ mode: 'guided';
68
+ wizard_plan: CardPolicyWizardPlanPayload;
69
+ } | {
70
+ mode: 'upload';
71
+ source?: CardPolicyUploadSourcePayload;
72
+ wizard_plan?: CardPolicyWizardPlanPayload;
73
+ };
74
+ export type InteractiveFormVisualizationPayload = {
75
+ form_type: 'cards_creation';
76
+ payload: CardsCreationInitialDataPayload;
77
+ } | {
78
+ form_type: 'card_policy';
79
+ payload: CardPolicyInitialDataPayload;
80
+ };
23
81
  export interface AiCfoVisualizationPayload {
24
- data: TableVisualizationPayload | ChartVisualizationPayload | null;
82
+ data: TableVisualizationPayload | ChartVisualizationPayload | InteractiveFormVisualizationPayload | null;
25
83
  type: string | null;
26
84
  }
27
85
  export interface AiCfoAnswerPayload {
@@ -1,7 +1,8 @@
1
1
  import { ID } from '../../commonStateTypes/common';
2
2
  import { ZeniDate } from '../../zeniDayJS';
3
3
  import { AiCfoAnswerPayload, AiCfoVisualizationPayload, ChatSessionPayload, MessagePayload } from './aiCfoPayload';
4
- import { AiCfoState, AiCfoVisualization, FileAttachmentMetadata } from './aiCfoState';
4
+ import { AiCfoState, AiCfoVisualization, FileAttachmentMetadata, SyntheticAiCfoAnswerKind } from './aiCfoState';
5
+ import type { CardPolicyUploadSource, CardPolicyWizardPlan } from './aiCfoState';
5
6
  export declare const initialAiCfoState: AiCfoState;
6
7
  export declare const toAiCfoVisualization: (visualization: AiCfoVisualizationPayload) => AiCfoVisualization | undefined;
7
8
  export declare const setNewSession: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
@@ -41,6 +42,26 @@ export declare const setNewSession: import("@reduxjs/toolkit").ActionCreatorWith
41
42
  }, "aiCfo/addQuestionPayload">, clearAiCfo: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"aiCfo/clearAiCfo">, deleteQuestion: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
42
43
  chatSessionId: ID;
43
44
  questionAnswerId: ID;
44
- }, "aiCfo/deleteQuestion">;
45
+ }, "aiCfo/deleteQuestion">, updateAiCfoAnswerCardPolicyWizardPlan: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
46
+ answerId: ID;
47
+ chatSessionId: ID;
48
+ wizardPlan: CardPolicyWizardPlan;
49
+ source?: CardPolicyUploadSource;
50
+ }, "aiCfo/updateAiCfoAnswerCardPolicyWizardPlan">, appendSyntheticAiCfoAnswer: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
51
+ chatSessionId: ID;
52
+ createdAt: ZeniDate;
53
+ id: ID;
54
+ kind: SyntheticAiCfoAnswerKind;
55
+ sourceQuestionAnswerId: ID;
56
+ entityIds?: ID[];
57
+ }, "aiCfo/appendSyntheticAiCfoAnswer">, updateSyntheticAiCfoAnswer: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
58
+ chatSessionId: ID;
59
+ id: ID;
60
+ kind: SyntheticAiCfoAnswerKind;
61
+ entityIds?: ID[];
62
+ }, "aiCfo/updateSyntheticAiCfoAnswer">, removeSyntheticAiCfoAnswer: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
63
+ chatSessionId: ID;
64
+ id: ID;
65
+ }, "aiCfo/removeSyntheticAiCfoAnswer">, clearSyntheticAiCfoAnswers: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "aiCfo/clearSyntheticAiCfoAnswers">;
45
66
  declare const _default: import("redux").Reducer<AiCfoState>;
46
67
  export default _default;
@@ -1,13 +1,14 @@
1
1
  "use strict";
2
2
  var _a;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.deleteQuestion = exports.clearAiCfo = exports.addQuestionPayload = exports.upsertOrAddQuestionAnswerPayload = exports.upsertAnswerPayload = exports.setChatHistory = exports.setSessions = exports.clearSession = exports.setNewSession = exports.toAiCfoVisualization = exports.initialAiCfoState = void 0;
4
+ exports.clearSyntheticAiCfoAnswers = exports.removeSyntheticAiCfoAnswer = exports.updateSyntheticAiCfoAnswer = exports.appendSyntheticAiCfoAnswer = exports.updateAiCfoAnswerCardPolicyWizardPlan = exports.deleteQuestion = exports.clearAiCfo = exports.addQuestionPayload = exports.upsertOrAddQuestionAnswerPayload = exports.upsertAnswerPayload = exports.setChatHistory = exports.setSessions = exports.clearSession = exports.setNewSession = exports.toAiCfoVisualization = exports.initialAiCfoState = void 0;
5
5
  const toolkit_1 = require("@reduxjs/toolkit");
6
6
  const zeniDayJS_1 = require("../../zeniDayJS");
7
7
  const aiCfoState_1 = require("./aiCfoState");
8
8
  exports.initialAiCfoState = {
9
9
  aiCfoByChatSessionId: {},
10
10
  partialQuestionAnswers: {},
11
+ syntheticAnswersByChatSessionId: {},
11
12
  };
12
13
  // Utility: Merge two arrays of Q&A pairs, combining responses for the same question
13
14
  function mergeQuestionAnswerPairs(existing, newQAs) {
@@ -139,12 +140,174 @@ const toAiCfoVisualization = (visualization) => {
139
140
  if (visualization.type == null || visualization.data == null) {
140
141
  return undefined;
141
142
  }
143
+ // Reject unknown viz types; `?? 'table'` used to throw in the chart/table decoder
144
+ // when interactive-form payloads (no `values`) hit it.
145
+ const normalizedType = (0, aiCfoState_1.toAiCfoVisualizationTypeStrict)(visualization.type);
146
+ if (normalizedType == null) {
147
+ return undefined;
148
+ }
142
149
  return {
143
- type: (0, aiCfoState_1.toAiCfoVisualizationTypeStrict)(visualization.type) ?? 'table',
144
- data: toAiCfoVisualizationData(visualization.data),
150
+ type: normalizedType,
151
+ data: normalizedType === 'interactive_form'
152
+ ? toInteractiveFormVisualization(visualization.data)
153
+ : toAiCfoVisualizationData(visualization.data),
145
154
  };
146
155
  };
147
156
  exports.toAiCfoVisualization = toAiCfoVisualization;
157
+ const toInteractiveFormVisualization = (data) => {
158
+ // When `form_type` is missing / mistyped, infer from payload shape so a malformed
159
+ // card-policy answer doesn't get decoded as cards_creation (wrong form + submit path).
160
+ const formType = (0, aiCfoState_1.toInteractiveFormTypeStrict)(data.form_type) ??
161
+ inferInteractiveFormTypeFromPayload(data.payload);
162
+ if (formType === 'card_policy') {
163
+ return {
164
+ formType: 'card_policy',
165
+ payload: toCardPolicyInitialData(data.payload),
166
+ };
167
+ }
168
+ return {
169
+ formType: 'cards_creation',
170
+ payload: toCardsCreationInitialData(data.payload),
171
+ };
172
+ };
173
+ const inferInteractiveFormTypeFromPayload = (payload) => {
174
+ if (payload != null && typeof payload === 'object' && 'mode' in payload) {
175
+ const mode = payload.mode;
176
+ if (mode === 'auto' || mode === 'guided' || mode === 'upload') {
177
+ return 'card_policy';
178
+ }
179
+ }
180
+ return 'cards_creation';
181
+ };
182
+ const toCardsCreationInitialData = (payload) => {
183
+ const suggestedCards = payload.suggested_cards ?? [];
184
+ const ordered = [...suggestedCards].sort((a, b) => KIND_RANK[a.card_type] - KIND_RANK[b.card_type]);
185
+ const withUniqueIds = withSynthesizedIds(ordered);
186
+ const suggestedOnly = withUniqueIds.filter(({ card }) => card.is_suggested);
187
+ const cardNameOptions = withUniqueIds.map(({ card, uniqueId }) => ({
188
+ id: uniqueId,
189
+ kind: toCardKind(card.card_type),
190
+ label: card.card_name,
191
+ }));
192
+ const suggestedOwnerUserIdByTeamId = Object.fromEntries(suggestedOnly.map(({ card, uniqueId }) => [
193
+ uniqueId,
194
+ normalizeOwnerId(card.owner_id),
195
+ ]));
196
+ const common = {
197
+ cardNameOptions,
198
+ suggestedOwnerUserIdByTeamId,
199
+ };
200
+ if (payload.mode === 'create') {
201
+ return {
202
+ ...common,
203
+ mode: 'create',
204
+ cardRows: suggestedOnly.map(({ card, uniqueId }) => ({
205
+ cardKind: toCardKind(card.card_type),
206
+ id: uniqueId,
207
+ label: card.card_name,
208
+ recommendedLimit: card.credit_limit > 0 ? card.credit_limit : undefined,
209
+ suggestedOwnerUserId: normalizeOwnerId(card.owner_id),
210
+ })),
211
+ };
212
+ }
213
+ return {
214
+ ...common,
215
+ mode: 'review',
216
+ teamRows: suggestedOnly.map(({ card, uniqueId }) => ({
217
+ avgMonthlySpend: CURRENCY_FORMATTER.format(card.avg_spend),
218
+ cardKind: toCardKind(card.card_type),
219
+ id: uniqueId,
220
+ label: card.card_name,
221
+ recommendedLimit: CURRENCY_FORMATTER.format(card.credit_limit),
222
+ recommendedLimitCadence: 'Monthly',
223
+ })),
224
+ };
225
+ };
226
+ const CURRENCY_FORMATTER = new Intl.NumberFormat('en-US', {
227
+ style: 'currency',
228
+ currency: 'USD',
229
+ maximumFractionDigits: 0,
230
+ });
231
+ // BE emits `null` or `""` for "no owner picked"; collapse both to `undefined`.
232
+ const normalizeOwnerId = (ownerId) => (ownerId != null && ownerId !== '' ? ownerId : undefined);
233
+ const KIND_RANK = {
234
+ vendor: 0,
235
+ category: 1,
236
+ department: 2,
237
+ };
238
+ const toCardKind = (cardType) => {
239
+ if (cardType === 'department') {
240
+ return 'class';
241
+ }
242
+ if (cardType === 'category') {
243
+ return 'category';
244
+ }
245
+ return 'vendor';
246
+ };
247
+ // Falls back to `${kind}__${card_name_id}__${index}` when `card_name_id` collides
248
+ // (sample payloads ship the literal `"vendor_uuid"`), to keep RHF row keys unique.
249
+ const withSynthesizedIds = (cards) => {
250
+ const seen = new Set();
251
+ return cards.map((card, index) => {
252
+ const preferred = card.card_name_id;
253
+ if (preferred != null && preferred !== '' && !seen.has(preferred)) {
254
+ seen.add(preferred);
255
+ return { card, uniqueId: preferred };
256
+ }
257
+ const synthesized = `${card.card_type}__${preferred ?? 'unknown'}__${index}`;
258
+ seen.add(synthesized);
259
+ return { card, uniqueId: synthesized };
260
+ });
261
+ };
262
+ const toCardPolicyDraftPolicy = (payload, index) => ({
263
+ id: `draft-${index}`,
264
+ name: payload.name,
265
+ description: payload.description ?? '',
266
+ mode: payload.mode,
267
+ allowedEntity: {
268
+ categoryCodes: payload.allowed_entity?.category_codes ?? [],
269
+ merchantNames: payload.allowed_entity?.merchant_names ?? [],
270
+ },
271
+ blockedEntity: {
272
+ categoryCodes: payload.blocked_entity?.category_codes ?? [],
273
+ merchantNames: payload.blocked_entity?.merchant_names ?? [],
274
+ },
275
+ applyToCards: payload.apply_to_cards ?? [],
276
+ requiredReceiptThreshold: payload.required_receipt_threshold ?? 0,
277
+ spendLimits: {
278
+ transaction: payload.spend_limits?.transaction ?? 0,
279
+ },
280
+ });
281
+ const toCardPolicyStep5Review = (payload) => ({
282
+ draftPolicies: (payload.draft_policies ?? []).map(toCardPolicyDraftPolicy),
283
+ groupingSource: payload.grouping_source ?? 'none',
284
+ prompt: payload.prompt ?? '',
285
+ });
286
+ const toCardPolicyWizardPlan = (payload) => ({
287
+ step5Review: toCardPolicyStep5Review(payload.step_5_review),
288
+ });
289
+ const toCardPolicyUploadSource = (payload) => ({
290
+ confidenceScore: payload.confidence_score,
291
+ fileName: payload.file_name,
292
+ lowConfidenceFields: payload.low_confidence_fields ?? [],
293
+ });
294
+ const toCardPolicyInitialData = (payload) => {
295
+ if (payload.mode === 'upload') {
296
+ return {
297
+ policyKind: 'upload',
298
+ wizardPlan: payload.wizard_plan != null
299
+ ? toCardPolicyWizardPlan(payload.wizard_plan)
300
+ : undefined,
301
+ source: payload.source != null
302
+ ? toCardPolicyUploadSource(payload.source)
303
+ : undefined,
304
+ };
305
+ }
306
+ return {
307
+ policyKind: payload.mode,
308
+ wizardPlan: toCardPolicyWizardPlan(payload.wizard_plan),
309
+ };
310
+ };
148
311
  const toAiCfoVisualizationData = (data) => {
149
312
  if ('x' in data && 'y' in data) {
150
313
  // Normalize y to always be an array
@@ -378,10 +541,8 @@ const aiCfo = (0, toolkit_1.createSlice)({
378
541
  // Update state - append new complete Q&As to existing ones
379
542
  session.questionAnswers = mergeQuestionAnswerPairs(session.questionAnswers, completeQAs);
380
543
  },
381
- /**
382
- * Upsert a Q/A pair: if the questionAnswerId exists, upsert the response block; if not, add a new Q/A entry.
383
- * Used for push notification payloads that may introduce a new question.
384
- */
544
+ // Upserts the response block when `questionAnswerId` exists; otherwise adds the Q/A
545
+ // entry. Used for push notification payloads that may introduce a new question.
385
546
  upsertOrAddQuestionAnswerPayload(draft, action) {
386
547
  const { chatSessionId, questionAnswerId, question: { questionId, createdAt, text }, answerPayload, userId, insertQuestionAnswer, } = action.payload;
387
548
  const session = draft.aiCfoByChatSessionId[chatSessionId];
@@ -458,10 +619,82 @@ const aiCfo = (0, toolkit_1.createSlice)({
458
619
  session.questionAnswers.push(qa);
459
620
  }
460
621
  },
622
+ // Patches an upload-mode card-policy answer with the wizard plan + source returned
623
+ // by `policy-recommendation-from-upload`. No-op for non-upload / missing targets.
624
+ updateAiCfoAnswerCardPolicyWizardPlan(draft, action) {
625
+ const { answerId, chatSessionId, source, wizardPlan } = action.payload;
626
+ const session = draft.aiCfoByChatSessionId[chatSessionId];
627
+ if (session == null) {
628
+ return;
629
+ }
630
+ const qa = session.questionAnswers.find((entry) => entry.questionAnswerId === answerId);
631
+ if (qa == null) {
632
+ return;
633
+ }
634
+ for (const response of Object.values(qa.responses)) {
635
+ const visualization = response?.content.visualization;
636
+ if (visualization == null ||
637
+ visualization.type !== 'interactive_form') {
638
+ continue;
639
+ }
640
+ const data = visualization.data;
641
+ if (data.formType !== 'card_policy' ||
642
+ data.payload.policyKind !== 'upload') {
643
+ continue;
644
+ }
645
+ data.payload = {
646
+ ...data.payload,
647
+ wizardPlan,
648
+ source: source ?? data.payload.source,
649
+ };
650
+ }
651
+ },
652
+ // Renders a "Creating…" placeholder while the cards/policy create mutation runs.
653
+ // Caller supplies a stable `id` (updated in place by `updateSyntheticAiCfoAnswer`).
654
+ appendSyntheticAiCfoAnswer(draft, action) {
655
+ const { chatSessionId, id, kind, createdAt, entityIds, sourceQuestionAnswerId, } = action.payload;
656
+ if (draft.syntheticAnswersByChatSessionId[chatSessionId] == null) {
657
+ draft.syntheticAnswersByChatSessionId[chatSessionId] = [];
658
+ }
659
+ draft.syntheticAnswersByChatSessionId[chatSessionId].push({
660
+ id,
661
+ kind,
662
+ entityIds: entityIds ?? [],
663
+ createdAt,
664
+ sourceQuestionAnswerId,
665
+ });
666
+ },
667
+ // Transitions a bubble from `creating_*` to `created_*` once the mutation completes.
668
+ updateSyntheticAiCfoAnswer(draft, action) {
669
+ const { chatSessionId, id, kind, entityIds } = action.payload;
670
+ const list = draft.syntheticAnswersByChatSessionId[chatSessionId];
671
+ if (list == null) {
672
+ return;
673
+ }
674
+ const entry = list.find((item) => item.id === id);
675
+ if (entry == null) {
676
+ return;
677
+ }
678
+ entry.kind = kind;
679
+ if (entityIds != null) {
680
+ entry.entityIds = entityIds;
681
+ }
682
+ },
683
+ removeSyntheticAiCfoAnswer(draft, action) {
684
+ const { chatSessionId, id } = action.payload;
685
+ const list = draft.syntheticAnswersByChatSessionId[chatSessionId];
686
+ if (list == null) {
687
+ return;
688
+ }
689
+ draft.syntheticAnswersByChatSessionId[chatSessionId] = list.filter((item) => item.id !== id);
690
+ },
691
+ clearSyntheticAiCfoAnswers(draft, action) {
692
+ delete draft.syntheticAnswersByChatSessionId[action.payload];
693
+ },
461
694
  clearSession(draft, action) {
462
695
  const sessionId = action.payload;
463
696
  delete draft.aiCfoByChatSessionId[sessionId];
464
- // Clear partial Q&A if it belongs to the cleared session
697
+ delete draft.syntheticAnswersByChatSessionId[sessionId];
465
698
  if (draft.partialQuestionAnswers?.[sessionId] != null) {
466
699
  draft.partialQuestionAnswers[sessionId] = undefined;
467
700
  }
@@ -469,6 +702,7 @@ const aiCfo = (0, toolkit_1.createSlice)({
469
702
  clearAiCfo(draft) {
470
703
  draft.aiCfoByChatSessionId = {};
471
704
  draft.partialQuestionAnswers = {};
705
+ draft.syntheticAnswersByChatSessionId = {};
472
706
  },
473
707
  deleteQuestion(draft, action) {
474
708
  const { chatSessionId, questionAnswerId } = action.payload;
@@ -481,6 +715,12 @@ const aiCfo = (0, toolkit_1.createSlice)({
481
715
  if (idx !== -1) {
482
716
  session.questionAnswers.splice(idx, 1);
483
717
  }
718
+ // Drop synthetic bubbles whose sourceQuestionAnswerId is the deleted Q/A; otherwise "Creating…" / "Created" tiles outlive their Q/A.
719
+ const syntheticAnswers = draft.syntheticAnswersByChatSessionId[chatSessionId];
720
+ if (syntheticAnswers != null) {
721
+ draft.syntheticAnswersByChatSessionId[chatSessionId] =
722
+ syntheticAnswers.filter((answer) => answer.sourceQuestionAnswerId !== questionAnswerId);
723
+ }
484
724
  },
485
725
  },
486
726
  });
@@ -493,5 +733,5 @@ const toChatSession = (chatSessionPayload) => {
493
733
  createdAt: (0, zeniDayJS_1.date)(created_at),
494
734
  };
495
735
  };
496
- _a = aiCfo.actions, exports.setNewSession = _a.setNewSession, exports.clearSession = _a.clearSession, exports.setSessions = _a.setSessions, exports.setChatHistory = _a.setChatHistory, exports.upsertAnswerPayload = _a.upsertAnswerPayload, exports.upsertOrAddQuestionAnswerPayload = _a.upsertOrAddQuestionAnswerPayload, exports.addQuestionPayload = _a.addQuestionPayload, exports.clearAiCfo = _a.clearAiCfo, exports.deleteQuestion = _a.deleteQuestion;
736
+ _a = aiCfo.actions, exports.setNewSession = _a.setNewSession, exports.clearSession = _a.clearSession, exports.setSessions = _a.setSessions, exports.setChatHistory = _a.setChatHistory, exports.upsertAnswerPayload = _a.upsertAnswerPayload, exports.upsertOrAddQuestionAnswerPayload = _a.upsertOrAddQuestionAnswerPayload, exports.addQuestionPayload = _a.addQuestionPayload, exports.clearAiCfo = _a.clearAiCfo, exports.deleteQuestion = _a.deleteQuestion, exports.updateAiCfoAnswerCardPolicyWizardPlan = _a.updateAiCfoAnswerCardPolicyWizardPlan, exports.appendSyntheticAiCfoAnswer = _a.appendSyntheticAiCfoAnswer, exports.updateSyntheticAiCfoAnswer = _a.updateSyntheticAiCfoAnswer, exports.removeSyntheticAiCfoAnswer = _a.removeSyntheticAiCfoAnswer, exports.clearSyntheticAiCfoAnswers = _a.clearSyntheticAiCfoAnswers;
497
737
  exports.default = aiCfo.reducer;
@@ -1,13 +1,16 @@
1
1
  import { ID } from '../../commonStateTypes/common';
2
- import { AiCfoQuestionWithAnswer, AiCfoState, ChatSession } from './aiCfoState';
2
+ import { AiCfoQuestionWithAnswer, AiCfoState, ChatSession, SyntheticAiCfoAnswer } from './aiCfoState';
3
3
  export declare function getAllQuestionAnswersForChatSession(state: AiCfoState, chatSessionId: ID): AiCfoQuestionWithAnswer[];
4
4
  export declare function getQuestionAnswerByIdForChatSession(state: AiCfoState, chatSessionId: ID, questionAnswerId: ID): AiCfoQuestionWithAnswer | undefined;
5
5
  export declare function getAllQuestionsForChatSession(state: AiCfoState, chatSessionId: ID): string[];
6
6
  export interface AiCfoSelectorView {
7
7
  allSessionsWithOrderedQuestionAnswers: ChatSessionWithOrderedQuestionAnswers[];
8
+ syntheticAnswersByChatSessionId: Record<ID, SyntheticAiCfoAnswer[]>;
8
9
  }
9
10
  export interface ChatSessionWithOrderedQuestionAnswers {
10
11
  chatSession: ChatSession;
11
12
  questionAnswers: AiCfoQuestionWithAnswer[];
12
13
  }
13
14
  export declare function getAiCfoSelectorView(state: AiCfoState): AiCfoSelectorView;
15
+ export declare function getSyntheticAiCfoAnswersForChatSession(state: AiCfoState, chatSessionId: ID): SyntheticAiCfoAnswer[];
16
+ export declare function getSyntheticAiCfoAnswerByQuestionAnswerId(state: AiCfoState, chatSessionId: ID, questionAnswerId: ID): SyntheticAiCfoAnswer | undefined;