@zeniai/client-epic-state 5.3.12 → 5.3.13

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 (34) hide show
  1. package/lib/commonStateTypes/animations.d.ts +1 -1
  2. package/lib/commonStateTypes/animations.js +1 -0
  3. package/lib/epic.d.ts +2 -1
  4. package/lib/epic.js +2 -0
  5. package/lib/esm/commonStateTypes/animations.js +1 -0
  6. package/lib/esm/epic.js +2 -0
  7. package/lib/esm/index.js +4 -4
  8. package/lib/esm/view/aiCfoView/aiCfoViewReducer.js +65 -3
  9. package/lib/esm/view/aiCfoView/aiCfoViewSelector.js +25 -0
  10. package/lib/esm/view/aiCfoView/epics/transcribeAudioEpic.js +60 -0
  11. package/lib/esm/view/expenseAutomationView/types/transactionGroup.js +10 -5
  12. package/lib/esm/view/transactionDetail/createTransaction/createTransactionPayload.js +19 -3
  13. package/lib/esm/view/transactionDetail/createTransaction/createTransactionState.js +2 -0
  14. package/lib/index.d.ts +5 -5
  15. package/lib/index.js +28 -22
  16. package/lib/view/aiCfoView/aiCfoViewPayload.d.ts +20 -0
  17. package/lib/view/aiCfoView/aiCfoViewReducer.d.ts +2 -2
  18. package/lib/view/aiCfoView/aiCfoViewReducer.js +66 -4
  19. package/lib/view/aiCfoView/aiCfoViewSelector.d.ts +8 -1
  20. package/lib/view/aiCfoView/aiCfoViewSelector.js +27 -0
  21. package/lib/view/aiCfoView/aiCfoViewState.d.ts +9 -0
  22. package/lib/view/aiCfoView/epics/transcribeAudioEpic.d.ts +19 -0
  23. package/lib/view/aiCfoView/epics/transcribeAudioEpic.js +64 -0
  24. package/lib/view/expenseAutomationView/payload/transactionCategorizationPayload.d.ts +2 -2
  25. package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.d.ts +2 -2
  26. package/lib/view/expenseAutomationView/types/transactionGroup.d.ts +6 -6
  27. package/lib/view/expenseAutomationView/types/transactionGroup.js +10 -5
  28. package/lib/view/expenseAutomationView/types/transactionsViewState.d.ts +2 -2
  29. package/lib/view/transactionDetail/createTransaction/createTransactionPayload.d.ts +6 -3
  30. package/lib/view/transactionDetail/createTransaction/createTransactionPayload.js +19 -3
  31. package/lib/view/transactionDetail/createTransaction/createTransactionState.d.ts +7 -2
  32. package/lib/view/transactionDetail/createTransaction/createTransactionState.js +2 -0
  33. package/lib/view/transactionDetail/transactionDetailReducer.d.ts +20 -20
  34. package/package.json +1 -1
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.transcribeAudioEpic = void 0;
4
+ const rxjs_1 = require("rxjs");
5
+ const operators_1 = require("rxjs/operators");
6
+ const responsePayload_1 = require("../../../responsePayload");
7
+ const rootActions_1 = require("../../../rootActions");
8
+ const aiCfoViewReducer_1 = require("../aiCfoViewReducer");
9
+ const AUDIO_FIELD = 'audio';
10
+ const LANGUAGE_FIELD = 'language';
11
+ /** Extension only has to match the recorded format; the server reads the part's MIME type. */
12
+ const AUDIO_FILE_NAME = 'dictation.wav';
13
+ /**
14
+ * A hung request would otherwise pin `isTranscribing` true forever, and the composer
15
+ * gates both submit and the mic on it — leaving the user unable to send even typed
16
+ * text until something else resolved it.
17
+ */
18
+ const TRANSCRIPTION_TIMEOUT_MS = 30000;
19
+ /**
20
+ * Voice dictation for the AI CFO composer. Dispatch `transcribeAudio(blob, language)` with a
21
+ * finished recording to POST it to the AI CFO micro-service `/1.0/transcriptions` endpoint;
22
+ * on success the transcript is appended to the composer input for the user to edit and send.
23
+ *
24
+ * `switchMap` (not `mergeMap`): a newer recording supersedes an older in-flight one, so a
25
+ * slow response can never append a stale transcript after a fresh one has already landed.
26
+ * The AbortController makes that cancellation real — `fetch` wrapped in a promise ignores
27
+ * an RxJS unsubscribe, so without the signal the superseded request would run to completion
28
+ * and still bill a transcription call whose result nothing wants.
29
+ */
30
+ const transcribeAudioEpic = (actions$, _state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(aiCfoViewReducer_1.transcribeAudio.match), (0, operators_1.switchMap)((action) => {
31
+ const { audio, chatSessionId, language } = action.payload;
32
+ const abortController = new AbortController();
33
+ const formData = new FormData();
34
+ formData.append(AUDIO_FIELD, audio, AUDIO_FILE_NAME);
35
+ if (language != null && language !== '') {
36
+ formData.append(LANGUAGE_FIELD, language);
37
+ }
38
+ return zeniAPI
39
+ .postFormData(`${zeniAPI.apiEndPoints.aiCfoMicroServiceBaseUrl}/1.0/transcriptions`, formData, abortController.signal)
40
+ .pipe((0, operators_1.timeout)(TRANSCRIPTION_TIMEOUT_MS),
41
+ // A tenant switch clears the store; a transcript still in flight must not
42
+ // land in the next tenant's composer (both sessions can be `undefined`, so
43
+ // the reducer's session guard would let it through).
44
+ (0, operators_1.takeUntil)(actions$.pipe((0, operators_1.filter)(rootActions_1.clearAll.match))), (0, operators_1.map)((response) => {
45
+ if (!(0, responsePayload_1.isSuccessResponse)(response)) {
46
+ return (0, aiCfoViewReducer_1.transcribeAudioFailure)(response.status);
47
+ }
48
+ // An EMPTY transcript is a success (the mic caught silence) and the
49
+ // reducer leaves the composer alone. A MISSING one breaks the response
50
+ // contract, so it surfaces as an error rather than being coerced to
51
+ // silence the user cannot distinguish from a quiet room.
52
+ if (response.data?.transcript == null) {
53
+ return (0, aiCfoViewReducer_1.transcribeAudioFailure)((0, responsePayload_1.createZeniAPIStatus)('Transcription succeeded but the response carried no transcript', 'Unexpected Error'));
54
+ }
55
+ // The session id rides along so a transcript that lands after the user
56
+ // switched sessions is dropped rather than misfiled.
57
+ return (0, aiCfoViewReducer_1.transcribeAudioSuccess)(response.data.transcript, chatSessionId);
58
+ }), (0, operators_1.finalize)(() => abortController.abort()), (0, operators_1.catchError)((error) => (0, rxjs_1.of)((0, aiCfoViewReducer_1.transcribeAudioFailure)((0, responsePayload_1.createZeniAPIStatus)(
59
+ // message (detailed) first, then the short title — per createZeniAPIStatus(message, title).
60
+ // JSON.stringify(Error) drops the (non-enumerable) message — extract it explicitly.
61
+ 'Transcription REST API call errored out: ' +
62
+ (error instanceof Error ? error.message : String(error)), 'Unexpected Error')))));
63
+ }));
64
+ exports.transcribeAudioEpic = transcribeAudioEpic;
@@ -28,8 +28,8 @@ export interface TransactionCategorizationQueryPayload {
28
28
  */
29
29
  search_all_statuses?: boolean;
30
30
  /**
31
- * Statement-level scope (`'expense' | 'income' | 'all'`). Always sent by the
32
- * list epics. The backend `is_revenue_automation_enabled` gate is
31
+ * Statement-level scope (`'expense' | 'income' | 'other' | 'all'`). Always
32
+ * sent by the list epics. The backend `is_revenue_automation_enabled` gate is
33
33
  * authoritative: when it is off the backend ignores this and returns the
34
34
  * legacy expense scope regardless of the value, so there is no need to gate
35
35
  * the send on the client (the gate isn't available to the redux epics anyway
@@ -70,8 +70,8 @@ export declare const fetchTransactionCategorization: import("@reduxjs/toolkit").
70
70
  newSelectedTab: "review" | "autoCategorized";
71
71
  }, "expenseAutomationTransactionsView/updateCurrentSelectedTransactionCategorizationTab", never, never>, updateTransactionCategorizationCompletedSubTab: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[newSubTab: "manual" | "all" | "ai_accountant"], {
72
72
  newSubTab: "manual" | "all" | "ai_accountant";
73
- }, "expenseAutomationTransactionsView/updateTransactionCategorizationCompletedSubTab", never, never>, updateTransactionGroup: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[newGroup: "income" | "expense" | "all"], {
74
- newGroup: "income" | "expense" | "all";
73
+ }, "expenseAutomationTransactionsView/updateTransactionCategorizationCompletedSubTab", never, never>, updateTransactionGroup: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[newGroup: "income" | "expense" | "other" | "all"], {
74
+ newGroup: "income" | "expense" | "other" | "all";
75
75
  }, "expenseAutomationTransactionsView/updateTransactionGroup", never, never>, updateTransactionCategorizationSaveStatus: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[selectedTab: "review" | "autoCategorized", fetchState: FetchState, error?: ZeniAPIStatus<Record<string, unknown>> | undefined], {
76
76
  selectedTab: "review" | "autoCategorized";
77
77
  fetchState: FetchState;
@@ -3,16 +3,16 @@
3
3
  * verbatim to the listing API as `transaction_group`. When revenue automation is
4
4
  * enabled for the tenant the backend scopes the whole view by the line
5
5
  * account_type: `'expense'` -> expense accounts, `'income'` -> income accounts,
6
- * `'all'` -> both. When off, every value falls back to the legacy expense scope
7
- * on the backend, so the group is only sent when the gate is on.
6
+ * `'other'` -> balance-sheet accounts other than bank/credit card (plus lines
7
+ * with no account type), `'all'` -> all three. The list epics always send it;
8
+ * when the gate is off the backend ignores it and returns the legacy expense
9
+ * scope.
8
10
  *
9
11
  * The wire value for expenses is the singular `'expense'` (matches the backend
10
12
  * `TransactionGroup` enum) even though the picker labels it "Expenses".
11
- * Balance-sheet groups (assets, liability) are reserved for later and are not
12
- * part of this union yet.
13
13
  */
14
- export declare const TRANSACTION_GROUPS: readonly ["all", "income", "expense"];
15
- export declare const toTransactionGroup: (v: string | null | undefined) => "income" | "expense" | "all";
14
+ export declare const TRANSACTION_GROUPS: readonly ["all", "income", "expense", "other"];
15
+ export declare const toTransactionGroup: (v: string | null | undefined) => "income" | "expense" | "other" | "all";
16
16
  export type TransactionGroup = ReturnType<typeof toTransactionGroup>;
17
17
  /**
18
18
  * Default group for the listing — matches the picker's default selection ("All").
@@ -7,15 +7,20 @@ const stringToUnion_1 = require("../../../commonStateTypes/stringToUnion");
7
7
  * verbatim to the listing API as `transaction_group`. When revenue automation is
8
8
  * enabled for the tenant the backend scopes the whole view by the line
9
9
  * account_type: `'expense'` -> expense accounts, `'income'` -> income accounts,
10
- * `'all'` -> both. When off, every value falls back to the legacy expense scope
11
- * on the backend, so the group is only sent when the gate is on.
10
+ * `'other'` -> balance-sheet accounts other than bank/credit card (plus lines
11
+ * with no account type), `'all'` -> all three. The list epics always send it;
12
+ * when the gate is off the backend ignores it and returns the legacy expense
13
+ * scope.
12
14
  *
13
15
  * The wire value for expenses is the singular `'expense'` (matches the backend
14
16
  * `TransactionGroup` enum) even though the picker labels it "Expenses".
15
- * Balance-sheet groups (assets, liability) are reserved for later and are not
16
- * part of this union yet.
17
17
  */
18
- exports.TRANSACTION_GROUPS = ['all', 'income', 'expense'];
18
+ exports.TRANSACTION_GROUPS = [
19
+ 'all',
20
+ 'income',
21
+ 'expense',
22
+ 'other',
23
+ ];
19
24
  const toTransactionGroup = (v) => (0, stringToUnion_1.stringToUnion)(v != null ? v.trim().toLowerCase() : '', exports.TRANSACTION_GROUPS);
20
25
  exports.toTransactionGroup = toTransactionGroup;
21
26
  /**
@@ -152,8 +152,8 @@ export type TransactionsViewState = {
152
152
  selectedTransactionCategorizationCompletedSubTab: CompletedSubTab;
153
153
  selectedTransactionCategorizationTab: TransactionsTab;
154
154
  /**
155
- * Statement-level scope (`'expense' | 'income' | 'all'`) forwarded to the
156
- * listing API as `transaction_group`. Unlike the in-memory {@link
155
+ * Statement-level scope (`'expense' | 'income' | 'other' | 'all'`) forwarded
156
+ * to the listing API as `transaction_group`. Unlike the in-memory {@link
157
157
  * TransactionsTabViewState.filters}, a change here invalidates every tab /
158
158
  * sub-tab / count and drives a server refetch (the backend re-scopes the
159
159
  * whole dataset by account_type). Only surfaced in the UI when the
@@ -13,8 +13,9 @@ import { CreateTransactionLocalData } from './createTransactionState';
13
13
  * constant NAMES; ZENI_LINE_DETAIL_TYPE_TO_QBO_LINE_DETAIL_TYPE_MAP converts them for the
14
14
  * body the backend sends on to QuickBooks, never for ours.
15
15
  * 2. The QBO Purchases (check, credit_card_credit) send their reference number as
16
- * `document_number`; a journal entry sends its entry name as `document_id`. Both land on
17
- * QBO's DocNumber, but QBOJournalEntry reads only `document_id`.
16
+ * `document_number`; a journal entry sends its entry name, a bill its bill number and a
17
+ * vendor credit its reference number as `document_id`. All land on QBO's DocNumber, but
18
+ * QBOJournalEntry reads only `document_id`.
18
19
  */
19
20
  export interface CreateTransactionAccountPayload {
20
21
  qbo_id: ID;
@@ -53,10 +54,12 @@ export interface CreateTransactionRemitToAddressPayload {
53
54
  export interface CreateTransactionRequest extends Record<string, unknown> {
54
55
  transaction_date: string;
55
56
  transaction_type: string;
56
- /** journal_entry entry name (QBO DocNumber). */
57
+ /** journal_entry entry name, bill number or vendor_credit reference number (QBO DocNumber). */
57
58
  document_id?: string;
58
59
  /** check / credit_card_credit reference number (QBO Purchase). */
59
60
  document_number?: string;
61
+ /** bill only. */
62
+ due_date?: string;
60
63
  from_account_id?: ID;
61
64
  /** credit_card_credit is modelled as a Purchase with Credit: true. */
62
65
  is_credit?: boolean;
@@ -135,13 +135,29 @@ const prepareCreateTransactionPayload = (state, localData) => {
135
135
  };
136
136
  }
137
137
  const lines = localData.lines.map((line) => toLinePayload(state, line, transactionType));
138
+ const documentIdField = localData.documentNumber != null && localData.documentNumber !== ''
139
+ ? { document_id: localData.documentNumber }
140
+ : {};
138
141
  if (transactionType === 'journal_entry') {
142
+ return { ...base, ...documentIdField, lines };
143
+ }
144
+ // Both post to accounts payable, so they carry no header account or payment type.
145
+ if (transactionType === 'vendor_credit') {
146
+ return {
147
+ ...base,
148
+ vendor_id: toQboVendorId(state, localData.vendorId),
149
+ ...documentIdField,
150
+ lines,
151
+ };
152
+ }
153
+ if (transactionType === 'bill') {
139
154
  return {
140
155
  ...base,
141
- ...(localData.documentNumber != null &&
142
- localData.documentNumber !== '' && {
143
- document_id: localData.documentNumber,
156
+ vendor_id: toQboVendorId(state, localData.vendorId),
157
+ ...(localData.dueDate != null && {
158
+ due_date: localData.dueDate.format(timePeriod_1.DEFAULT_DATE_FORMAT),
144
159
  }),
160
+ ...documentIdField,
145
161
  lines,
146
162
  };
147
163
  }
@@ -9,7 +9,7 @@ import { ZeniDate } from '../../../zeniDayJS';
9
9
  * The transaction types the Create Transaction flow can originate. A narrow subset of
10
10
  * TransactionType -- everything else is read-only and arrives via sync.
11
11
  */
12
- export declare const ALL_CREATABLE_TRANSACTION_TYPES: readonly ["expense", "check", "credit_card_credit", "transfer", "journal_entry"];
12
+ export declare const ALL_CREATABLE_TRANSACTION_TYPES: readonly ["expense", "check", "credit_card_credit", "transfer", "journal_entry", "bill", "vendor_credit"];
13
13
  export type CreatableTransactionType = (typeof ALL_CREATABLE_TRANSACTION_TYPES)[number];
14
14
  /**
15
15
  * The wire shape the create endpoint expects for a check's remit-to address. Deliberately not
@@ -54,8 +54,13 @@ export interface CreateTransactionLocalData {
54
54
  /** Empty for transfer, which has no lines at all. */
55
55
  lines: CreateTransactionLineLocalData[];
56
56
  transactionType: CreatableTransactionType;
57
- /** check / credit_card_credit reference number, or the journal_entry entry name. */
57
+ /**
58
+ * check / credit_card_credit / vendor_credit reference number, journal_entry entry name, or
59
+ * bill number.
60
+ */
58
61
  documentNumber?: string;
62
+ /** bill only. */
63
+ dueDate?: ZeniDate;
59
64
  /** transfer */
60
65
  fromAccountId?: ID;
61
66
  paymentType?: PaymentType;
@@ -11,4 +11,6 @@ exports.ALL_CREATABLE_TRANSACTION_TYPES = [
11
11
  'credit_card_credit',
12
12
  'transfer',
13
13
  'journal_entry',
14
+ 'bill',
15
+ 'vendor_credit',
14
16
  ];
@@ -177,39 +177,39 @@ export declare const downloadAccountingProviderAttachment: import("@reduxjs/tool
177
177
  }, "transactionDetail/deleteSplitLine", never, never>, toggleSplitEditMode: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionId: TransactionID, editMode: boolean], {
178
178
  transactionId: TransactionID;
179
179
  editMode: boolean;
180
- }, "transactionDetail/toggleSplitEditMode", never, never>, initializeCreateTransactionLocalData: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry"], {
181
- transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry";
182
- }, "transactionDetail/initializeCreateTransactionLocalData", never, never>, updateCreateTransactionLocalData: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry", localData: Partial<CreateTransactionLocalData>], {
183
- transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry";
180
+ }, "transactionDetail/toggleSplitEditMode", never, never>, initializeCreateTransactionLocalData: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "bill" | "vendor_credit" | "credit_card_credit" | "transfer" | "journal_entry"], {
181
+ transactionType: "expense" | "check" | "bill" | "vendor_credit" | "credit_card_credit" | "transfer" | "journal_entry";
182
+ }, "transactionDetail/initializeCreateTransactionLocalData", never, never>, updateCreateTransactionLocalData: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "bill" | "vendor_credit" | "credit_card_credit" | "transfer" | "journal_entry", localData: Partial<CreateTransactionLocalData>], {
183
+ transactionType: "expense" | "check" | "bill" | "vendor_credit" | "credit_card_credit" | "transfer" | "journal_entry";
184
184
  localData: Partial<CreateTransactionLocalData>;
185
- }, "transactionDetail/updateCreateTransactionLocalData", never, never>, updateCreateTransactionLineLocalData: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry", lineId: string, lineUpdates: Partial<CreateTransactionLineLocalData>], {
186
- transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry";
185
+ }, "transactionDetail/updateCreateTransactionLocalData", never, never>, updateCreateTransactionLineLocalData: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "bill" | "vendor_credit" | "credit_card_credit" | "transfer" | "journal_entry", lineId: string, lineUpdates: Partial<CreateTransactionLineLocalData>], {
186
+ transactionType: "expense" | "check" | "bill" | "vendor_credit" | "credit_card_credit" | "transfer" | "journal_entry";
187
187
  lineId: string;
188
188
  lineUpdates: Partial<CreateTransactionLineLocalData>;
189
- }, "transactionDetail/updateCreateTransactionLineLocalData", never, never>, addCreateTransactionLine: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry", line?: Partial<CreateTransactionLineLocalData> | undefined], {
190
- transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry";
189
+ }, "transactionDetail/updateCreateTransactionLineLocalData", never, never>, addCreateTransactionLine: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "bill" | "vendor_credit" | "credit_card_credit" | "transfer" | "journal_entry", line?: Partial<CreateTransactionLineLocalData> | undefined], {
190
+ transactionType: "expense" | "check" | "bill" | "vendor_credit" | "credit_card_credit" | "transfer" | "journal_entry";
191
191
  line: Partial<CreateTransactionLineLocalData> | undefined;
192
- }, "transactionDetail/addCreateTransactionLine", never, never>, removeCreateTransactionLine: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry", lineId: string], {
193
- transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry";
192
+ }, "transactionDetail/addCreateTransactionLine", never, never>, removeCreateTransactionLine: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "bill" | "vendor_credit" | "credit_card_credit" | "transfer" | "journal_entry", lineId: string], {
193
+ transactionType: "expense" | "check" | "bill" | "vendor_credit" | "credit_card_credit" | "transfer" | "journal_entry";
194
194
  lineId: string;
195
- }, "transactionDetail/removeCreateTransactionLine", never, never>, resetCreateTransactionLocalData: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry"], {
196
- transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry";
197
- }, "transactionDetail/resetCreateTransactionLocalData", never, never>, createTransaction: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry"], {
198
- transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry";
195
+ }, "transactionDetail/removeCreateTransactionLine", never, never>, resetCreateTransactionLocalData: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "bill" | "vendor_credit" | "credit_card_credit" | "transfer" | "journal_entry"], {
196
+ transactionType: "expense" | "check" | "bill" | "vendor_credit" | "credit_card_credit" | "transfer" | "journal_entry";
197
+ }, "transactionDetail/resetCreateTransactionLocalData", never, never>, createTransaction: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "bill" | "vendor_credit" | "credit_card_credit" | "transfer" | "journal_entry"], {
198
+ transactionType: "expense" | "check" | "bill" | "vendor_credit" | "credit_card_credit" | "transfer" | "journal_entry";
199
199
  }, "transactionDetail/createTransaction", never, never>, createTransactionSuccessOrFailure: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[fetchState: FetchState, createdTransactionId?: TransactionID | undefined, error?: ZeniAPIStatus<Record<string, unknown>> | undefined], {
200
200
  fetchState: FetchState;
201
201
  createdTransactionId: TransactionID | undefined;
202
202
  error: ZeniAPIStatus<Record<string, unknown>> | undefined;
203
- }, "transactionDetail/createTransactionSuccessOrFailure", never, never>, setRecommendationsForCreateTransactionLines: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry", lineIds: string[], recommendations: Recommendation[], isAccountingClassesEnabled: boolean], {
204
- transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry";
203
+ }, "transactionDetail/createTransactionSuccessOrFailure", never, never>, setRecommendationsForCreateTransactionLines: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "bill" | "vendor_credit" | "credit_card_credit" | "transfer" | "journal_entry", lineIds: string[], recommendations: Recommendation[], isAccountingClassesEnabled: boolean], {
204
+ transactionType: "expense" | "check" | "bill" | "vendor_credit" | "credit_card_credit" | "transfer" | "journal_entry";
205
205
  lineIds: string[];
206
206
  recommendations: Recommendation[];
207
207
  isAccountingClassesEnabled: boolean;
208
- }, "transactionDetail/setRecommendationsForCreateTransactionLines", never, never>, clearRecommendationsForCreateTransactionLines: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry", lineIds: string[]], {
209
- transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry";
208
+ }, "transactionDetail/setRecommendationsForCreateTransactionLines", never, never>, clearRecommendationsForCreateTransactionLines: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "bill" | "vendor_credit" | "credit_card_credit" | "transfer" | "journal_entry", lineIds: string[]], {
209
+ transactionType: "expense" | "check" | "bill" | "vendor_credit" | "credit_card_credit" | "transfer" | "journal_entry";
210
210
  lineIds: string[];
211
- }, "transactionDetail/clearRecommendationsForCreateTransactionLines", never, never>, fetchVendorRecommendationsForCreateTransaction: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry", lineIds: string[], entity?: Entity | undefined], {
212
- transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry";
211
+ }, "transactionDetail/clearRecommendationsForCreateTransactionLines", never, never>, fetchVendorRecommendationsForCreateTransaction: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "bill" | "vendor_credit" | "credit_card_credit" | "transfer" | "journal_entry", lineIds: string[], entity?: Entity | undefined], {
212
+ transactionType: "expense" | "check" | "bill" | "vendor_credit" | "credit_card_credit" | "transfer" | "journal_entry";
213
213
  lineIds: string[];
214
214
  entity: Entity | undefined;
215
215
  }, "transactionDetail/fetchVendorRecommendationsForCreateTransaction", never, never>, createTransactionAttachmentUploadFailure: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[failedAttachmentFileNames: string[]], {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zeniai/client-epic-state",
3
- "version": "5.3.12",
3
+ "version": "5.3.13",
4
4
  "description": "Shared module between Web & Mobile containing required abstractions for state management, async network communication. ",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib/esm/index.js",