@actual-app/api 25.3.0 → 25.4.0

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 (101) hide show
  1. package/@types/loot-core/client/accounts/accountsSlice.d.ts +175 -0
  2. package/@types/loot-core/client/app/appSlice.d.ts +175 -0
  3. package/@types/loot-core/client/budgets/budgetsSlice.d.ts +401 -0
  4. package/@types/loot-core/client/modals/modalsSlice.d.ts +486 -0
  5. package/@types/loot-core/client/notifications/notificationsSlice.d.ts +47 -0
  6. package/@types/loot-core/client/platform.d.ts +1 -0
  7. package/@types/loot-core/client/prefs/prefsSlice.d.ts +186 -0
  8. package/@types/loot-core/client/queries/queriesSlice.d.ts +692 -0
  9. package/@types/loot-core/client/redux.d.ts +18546 -0
  10. package/@types/loot-core/client/store/index.d.ts +133 -0
  11. package/@types/loot-core/client/users/usersSlice.d.ts +89 -0
  12. package/@types/loot-core/platform/client/fetch/index.d.ts +1 -10
  13. package/@types/loot-core/platform/client/undo/index.d.ts +19 -31
  14. package/@types/loot-core/platform/exceptions/index.d.ts +2 -5
  15. package/@types/loot-core/platform/server/connection/index.d.ts +0 -3
  16. package/@types/loot-core/platform/server/fetch/index.d.ts +1 -4
  17. package/@types/loot-core/platform/server/log/index.d.ts +4 -6
  18. package/@types/loot-core/server/accounts/app.d.ts +19 -5
  19. package/@types/loot-core/server/accounts/link.d.ts +6 -1
  20. package/@types/loot-core/server/admin/app.d.ts +54 -1
  21. package/@types/loot-core/server/api-models.d.ts +22 -22
  22. package/@types/loot-core/server/aql/exec.d.ts +1 -1
  23. package/@types/loot-core/server/aql/schema/index.d.ts +9 -0
  24. package/@types/loot-core/server/budget/actions.d.ts +6 -5
  25. package/@types/loot-core/server/budget/app.d.ts +103 -2
  26. package/@types/loot-core/server/budget/cleanup-template.d.ts +1 -1
  27. package/@types/loot-core/server/budget/goaltemplates.d.ts +1 -1
  28. package/@types/loot-core/server/budget/statements.d.ts +2 -2
  29. package/@types/loot-core/server/budget/template-notes.d.ts +1 -1
  30. package/@types/loot-core/server/budget/types/templates.d.ts +2 -1
  31. package/@types/loot-core/server/cloud-storage.d.ts +1 -1
  32. package/@types/loot-core/server/dashboard/app.d.ts +35 -1
  33. package/@types/loot-core/server/db/index.d.ts +38 -31
  34. package/@types/loot-core/server/db/sort.d.ts +1 -1
  35. package/@types/loot-core/server/encryption-internals.d.ts +5 -5
  36. package/@types/loot-core/server/encryption-internals.web.d.ts +2 -2
  37. package/@types/loot-core/server/encryption.d.ts +3 -3
  38. package/@types/loot-core/server/filters/app.d.ts +10 -1
  39. package/@types/loot-core/server/main-app.d.ts +1 -1
  40. package/@types/loot-core/server/models.d.ts +24 -23
  41. package/@types/loot-core/server/notes/app.d.ts +6 -1
  42. package/@types/loot-core/server/payees/app.d.ts +48 -0
  43. package/@types/loot-core/server/preferences/app.d.ts +1 -10
  44. package/@types/loot-core/server/reports/app.d.ts +9 -1
  45. package/@types/loot-core/server/rules/app.d.ts +50 -1
  46. package/@types/loot-core/server/schedules/app.d.ts +25 -2
  47. package/@types/loot-core/server/schedules/find-schedules.d.ts +1 -1
  48. package/@types/loot-core/server/server-config.d.ts +1 -0
  49. package/@types/loot-core/server/sheet.d.ts +1 -1
  50. package/@types/loot-core/server/spreadsheet/app.d.ts +38 -0
  51. package/@types/loot-core/server/spreadsheet/graph-data-structure.d.ts +4 -4
  52. package/@types/loot-core/server/spreadsheet/spreadsheet.d.ts +3 -2
  53. package/@types/loot-core/server/sync/app.d.ts +38 -0
  54. package/@types/loot-core/server/sync/make-test-message.d.ts +1 -1
  55. package/@types/loot-core/server/tools/app.d.ts +13 -1
  56. package/@types/loot-core/server/transactions/transaction-rules.d.ts +5 -4
  57. package/@types/loot-core/server/undo.d.ts +1 -1
  58. package/@types/loot-core/shared/async.d.ts +4 -3
  59. package/@types/loot-core/shared/locale.d.ts +1 -0
  60. package/@types/loot-core/shared/months.d.ts +2 -2
  61. package/@types/loot-core/shared/schedules.d.ts +5 -3
  62. package/@types/loot-core/shared/util.d.ts +4 -1
  63. package/@types/loot-core/types/handlers.d.ts +16 -10
  64. package/@types/loot-core/types/models/account.d.ts +2 -1
  65. package/@types/loot-core/types/models/bank-sync.d.ts +1 -1
  66. package/@types/loot-core/types/models/index.d.ts +5 -1
  67. package/@types/loot-core/types/models/openid.d.ts +2 -1
  68. package/@types/loot-core/types/models/payee.d.ts +2 -2
  69. package/@types/loot-core/types/models/pluggyai.d.ts +18 -0
  70. package/@types/loot-core/types/models/user-access.d.ts +10 -0
  71. package/@types/loot-core/types/models/user.d.ts +17 -18
  72. package/@types/loot-core/types/prefs.d.ts +13 -1
  73. package/@types/loot-core/types/server-handlers.d.ts +0 -99
  74. package/@types/loot-core/types/util.d.ts +7 -0
  75. package/dist/app/bundle.api.js +93477 -49658
  76. package/dist/index.js +17 -7
  77. package/dist/jest.config.js +0 -2
  78. package/dist/methods.js +17 -7
  79. package/dist/migrations/1740506588539_add_last_reconciled_at.sql +5 -0
  80. package/dist/package.json +8 -8
  81. package/dist/validateNodeVersion.js +17 -7
  82. package/package.json +8 -8
  83. package/@types/loot-core/client/constants.d.ts +0 -21
  84. package/@types/loot-core/client/state-types/budgets.d.ts +0 -36
  85. package/@types/loot-core/client/state-types/index.d.ts +0 -27
  86. package/@types/loot-core/client/state-types/modals.d.ts +0 -392
  87. package/@types/loot-core/client/state-types/notifications.d.ts +0 -57
  88. package/@types/loot-core/client/state-types/prefs.d.ts +0 -40
  89. package/@types/loot-core/client/state-types/user.d.ts +0 -13
  90. package/@types/loot-core/server/admin/types/handlers.d.ts +0 -43
  91. package/@types/loot-core/server/budget/types/handlers.d.ts +0 -91
  92. package/@types/loot-core/server/dashboard/types/handlers.d.ts +0 -24
  93. package/@types/loot-core/server/filters/types/handlers.d.ts +0 -7
  94. package/@types/loot-core/server/notes/types/handlers.d.ts +0 -3
  95. package/@types/loot-core/server/reports/types/handlers.d.ts +0 -6
  96. package/@types/loot-core/server/rules/types/handlers.d.ts +0 -40
  97. package/@types/loot-core/server/schedules/types/handlers.d.ts +0 -31
  98. package/@types/loot-core/server/tools/types/handlers.d.ts +0 -11
  99. package/@types/loot-core/types/models/userAccess.d.ts +0 -9
  100. package/dist/methods.test.js +0 -541
  101. /package/@types/{methods.test.d.ts → loot-core/server/api.test.d.ts} +0 -0
@@ -0,0 +1,486 @@
1
+ import { type File } from '../../types/file';
2
+ import { type AccountEntity, type AccountSyncSource, type CategoryEntity, type CategoryGroupEntity, type GoCardlessToken, type NewRuleEntity, type RuleEntity, type ScheduleEntity, type TransactionEntity, type UserEntity, type UserAccessEntity, type NewUserEntity, type NoteEntity } from '../../types/models';
3
+ export type Modal = {
4
+ name: 'import-transactions';
5
+ options: {
6
+ accountId: string;
7
+ filename: string;
8
+ categories?: {
9
+ list: CategoryEntity[];
10
+ grouped: CategoryGroupEntity[];
11
+ };
12
+ onImported: (didChange: boolean) => void;
13
+ };
14
+ } | {
15
+ name: 'add-account';
16
+ options: {
17
+ upgradingAccountId?: string;
18
+ };
19
+ } | {
20
+ name: 'add-local-account';
21
+ } | {
22
+ name: 'close-account';
23
+ options: {
24
+ account: AccountEntity;
25
+ balance: number;
26
+ canDelete: boolean;
27
+ };
28
+ } | {
29
+ name: 'select-linked-accounts';
30
+ options: {
31
+ externalAccounts: unknown[];
32
+ requisitionId?: string;
33
+ upgradingAccountId?: string | undefined;
34
+ syncSource?: AccountSyncSource;
35
+ };
36
+ } | {
37
+ name: 'confirm-category-delete';
38
+ options: {
39
+ onDelete: (transferCategoryId: CategoryEntity['id']) => void;
40
+ category?: CategoryEntity['id'];
41
+ group?: CategoryGroupEntity['id'];
42
+ };
43
+ } | {
44
+ name: 'load-backup';
45
+ options: {
46
+ budgetId?: string;
47
+ watchUpdates?: boolean;
48
+ backupDisabled?: boolean;
49
+ };
50
+ } | {
51
+ name: 'manage-rules';
52
+ options: {
53
+ payeeId?: string;
54
+ };
55
+ } | {
56
+ name: 'edit-rule';
57
+ options: {
58
+ rule: RuleEntity | NewRuleEntity;
59
+ onSave?: (rule: RuleEntity) => void;
60
+ };
61
+ } | {
62
+ name: 'merge-unused-payees';
63
+ options: {
64
+ payeeIds: string[];
65
+ targetPayeeId: string;
66
+ };
67
+ } | {
68
+ name: 'gocardless-init';
69
+ options: {
70
+ onSuccess: () => void;
71
+ };
72
+ } | {
73
+ name: 'simplefin-init';
74
+ options: {
75
+ onSuccess: () => void;
76
+ };
77
+ } | {
78
+ name: 'pluggyai-init';
79
+ options: {
80
+ onSuccess: () => void;
81
+ };
82
+ } | {
83
+ name: 'gocardless-external-msg';
84
+ options: {
85
+ onMoveExternal: (arg: {
86
+ institutionId: string;
87
+ }) => Promise<{
88
+ error: 'unknown' | 'timeout';
89
+ } | {
90
+ data: GoCardlessToken;
91
+ }>;
92
+ onClose?: (() => void) | undefined;
93
+ onSuccess: (data: GoCardlessToken) => Promise<void>;
94
+ };
95
+ } | {
96
+ name: 'delete-budget';
97
+ options: {
98
+ file: File;
99
+ };
100
+ } | {
101
+ name: 'duplicate-budget';
102
+ options: {
103
+ /** The budget file to be duplicated */
104
+ file: File;
105
+ /**
106
+ * Indicates whether the duplication is initiated from the budget
107
+ * management page. This may affect the behavior or UI of the
108
+ * duplication process.
109
+ */
110
+ managePage?: boolean;
111
+ /**
112
+ * loadBudget indicates whether to open the 'original' budget, the
113
+ * new duplicated 'copy' budget, or no budget ('none'). If 'none'
114
+ * duplicate-budget stays on the same page.
115
+ */
116
+ loadBudget?: 'none' | 'original' | 'copy';
117
+ /**
118
+ * onComplete is called when the DuplicateFileModal is closed.
119
+ * @param event the event object will pass back the status of the
120
+ * duplicate process.
121
+ * 'success' if the budget was duplicated.
122
+ * 'failed' if the budget could not be duplicated. This will also
123
+ * pass an error on the event object.
124
+ * 'canceled' if the DuplicateFileModal was canceled.
125
+ * @returns
126
+ */
127
+ onComplete?: (event: {
128
+ status: 'success' | 'failed' | 'canceled';
129
+ error?: Error;
130
+ }) => void;
131
+ };
132
+ } | {
133
+ name: 'import';
134
+ } | {
135
+ name: 'import-ynab4';
136
+ } | {
137
+ name: 'import-ynab5';
138
+ } | {
139
+ name: 'import-actual';
140
+ } | {
141
+ name: 'out-of-sync-migrations';
142
+ } | {
143
+ name: 'files-settings';
144
+ } | {
145
+ name: 'confirm-change-document-dir';
146
+ options: {
147
+ currentBudgetDirectory: string;
148
+ newDirectory: string;
149
+ };
150
+ } | {
151
+ name: 'create-encryption-key';
152
+ options: {
153
+ recreate?: boolean;
154
+ };
155
+ } | {
156
+ name: 'fix-encryption-key';
157
+ options: {
158
+ hasExistingKey?: boolean;
159
+ cloudFileId?: string;
160
+ onSuccess?: () => void;
161
+ };
162
+ } | {
163
+ name: 'edit-field';
164
+ options: {
165
+ name: keyof Pick<TransactionEntity, 'date' | 'amount' | 'notes'>;
166
+ onSubmit: (name: keyof Pick<TransactionEntity, 'date' | 'amount' | 'notes'>, value: string | number, mode?: 'prepend' | 'append' | 'replace' | null) => void;
167
+ onClose?: () => void;
168
+ };
169
+ } | {
170
+ name: 'category-autocomplete';
171
+ options: {
172
+ title?: string;
173
+ categoryGroups?: CategoryGroupEntity[];
174
+ onSelect: (categoryId: string, categoryName: string) => void;
175
+ month?: string | undefined;
176
+ showHiddenCategories?: boolean;
177
+ closeOnSelect?: boolean;
178
+ clearOnSelect?: boolean;
179
+ onClose?: () => void;
180
+ };
181
+ } | {
182
+ name: 'account-autocomplete';
183
+ options: {
184
+ onSelect: (accountId: string, accountName: string) => void;
185
+ includeClosedAccounts?: boolean;
186
+ onClose?: () => void;
187
+ };
188
+ } | {
189
+ name: 'payee-autocomplete';
190
+ options: {
191
+ onSelect: (payeeId: string) => void;
192
+ onClose?: () => void;
193
+ };
194
+ } | {
195
+ name: 'budget-summary';
196
+ options: {
197
+ month: string;
198
+ };
199
+ } | {
200
+ name: 'schedule-edit';
201
+ options: {
202
+ id?: string;
203
+ transaction?: TransactionEntity;
204
+ } | null;
205
+ } | {
206
+ name: 'schedule-link';
207
+ options: {
208
+ transactionIds: string[];
209
+ getTransaction: (transactionId: TransactionEntity['id']) => TransactionEntity;
210
+ accountName?: string;
211
+ onScheduleLinked?: (schedule: ScheduleEntity) => void;
212
+ };
213
+ } | {
214
+ name: 'schedules-discover';
215
+ } | {
216
+ name: 'schedule-posts-offline-notification';
217
+ } | {
218
+ name: 'synced-account-edit';
219
+ options: {
220
+ account: AccountEntity;
221
+ };
222
+ } | {
223
+ name: 'account-menu';
224
+ options: {
225
+ accountId: AccountEntity['id'];
226
+ onSave: (account: AccountEntity) => void;
227
+ onCloseAccount: (accountId: AccountEntity['id']) => void;
228
+ onReopenAccount: (accountId: AccountEntity['id']) => void;
229
+ onEditNotes: (id: NoteEntity['id']) => void;
230
+ onClose?: () => void;
231
+ };
232
+ } | {
233
+ name: 'category-menu';
234
+ options: {
235
+ categoryId: CategoryEntity['id'];
236
+ onSave: (category: CategoryEntity) => void;
237
+ onEditNotes: (id: NoteEntity['id']) => void;
238
+ onDelete: (categoryId: CategoryEntity['id']) => void;
239
+ onToggleVisibility: (categoryId: CategoryEntity['id']) => void;
240
+ onClose?: () => void;
241
+ };
242
+ } | {
243
+ name: 'envelope-budget-menu';
244
+ options: {
245
+ categoryId: CategoryEntity['id'];
246
+ month: string;
247
+ onUpdateBudget: (amount: number) => void;
248
+ onCopyLastMonthAverage: () => void;
249
+ onSetMonthsAverage: (numberOfMonths: number) => void;
250
+ onApplyBudgetTemplate: () => void;
251
+ };
252
+ } | {
253
+ name: 'tracking-budget-menu';
254
+ options: {
255
+ categoryId: CategoryEntity['id'];
256
+ month: string;
257
+ onUpdateBudget: (amount: number) => void;
258
+ onCopyLastMonthAverage: () => void;
259
+ onSetMonthsAverage: (numberOfMonths: number) => void;
260
+ onApplyBudgetTemplate: () => void;
261
+ };
262
+ } | {
263
+ name: 'category-group-menu';
264
+ options: {
265
+ groupId: CategoryGroupEntity['id'];
266
+ onSave: (group: CategoryGroupEntity) => void;
267
+ onAddCategory: (groupId: CategoryGroupEntity['id'], isIncome: CategoryGroupEntity['is_income']) => void;
268
+ onEditNotes: (id: NoteEntity['id']) => void;
269
+ onDelete: (groupId: CategoryGroupEntity['id']) => void;
270
+ onToggleVisibility: (groupId: CategoryGroupEntity['id']) => void;
271
+ onClose?: () => void;
272
+ };
273
+ } | {
274
+ name: 'notes';
275
+ options: {
276
+ id: NoteEntity['id'];
277
+ name: string;
278
+ onSave: (id: NoteEntity['id'], contents: string) => void;
279
+ };
280
+ } | {
281
+ name: 'tracking-budget-summary';
282
+ options: {
283
+ month: string;
284
+ };
285
+ } | {
286
+ name: 'envelope-budget-summary';
287
+ options: {
288
+ month: string;
289
+ onBudgetAction: (month: string, type: string, args?: unknown) => Promise<void>;
290
+ };
291
+ } | {
292
+ name: 'new-category-group';
293
+ options: {
294
+ onValidate?: (value: string) => string | null;
295
+ onSubmit: (value: string) => Promise<void>;
296
+ };
297
+ } | {
298
+ name: 'new-category';
299
+ options: {
300
+ onValidate?: (value: string) => string | null;
301
+ onSubmit: (value: string) => Promise<void>;
302
+ };
303
+ } | {
304
+ name: 'envelope-balance-menu';
305
+ options: {
306
+ categoryId: CategoryEntity['id'];
307
+ month: string;
308
+ onCarryover: (carryover: boolean) => void;
309
+ onTransfer: () => void;
310
+ onCover: () => void;
311
+ };
312
+ } | {
313
+ name: 'envelope-summary-to-budget-menu';
314
+ options: {
315
+ month: string;
316
+ onTransfer: () => void;
317
+ onCover: () => void;
318
+ onHoldBuffer: () => void;
319
+ onResetHoldBuffer: () => void;
320
+ };
321
+ } | {
322
+ name: 'tracking-balance-menu';
323
+ options: {
324
+ categoryId: CategoryEntity['id'];
325
+ month: string;
326
+ onCarryover: (carryover: boolean) => void;
327
+ };
328
+ } | {
329
+ name: 'transfer';
330
+ options: {
331
+ title: string;
332
+ categoryId?: CategoryEntity['id'];
333
+ month: string;
334
+ amount: number;
335
+ onSubmit: (amount: number, toCategoryId: CategoryEntity['id']) => void;
336
+ showToBeBudgeted?: boolean;
337
+ };
338
+ } | {
339
+ name: 'cover';
340
+ options: {
341
+ title: string;
342
+ categoryId?: CategoryEntity['id'];
343
+ month: string;
344
+ showToBeBudgeted?: boolean;
345
+ onSubmit: (fromCategoryId: CategoryEntity['id']) => void;
346
+ };
347
+ } | {
348
+ name: 'hold-buffer';
349
+ options: {
350
+ month: string;
351
+ onSubmit: (amount: number) => void;
352
+ };
353
+ } | {
354
+ name: 'scheduled-transaction-menu';
355
+ options: {
356
+ transactionId: TransactionEntity['id'];
357
+ onPost: (transactionId: TransactionEntity['id']) => void;
358
+ onSkip: (transactionId: TransactionEntity['id']) => void;
359
+ onComplete: (transactionId: TransactionEntity['id']) => void;
360
+ };
361
+ } | {
362
+ name: 'budget-page-menu';
363
+ options: {
364
+ onAddCategoryGroup: () => void;
365
+ onToggleHiddenCategories: () => void;
366
+ onSwitchBudgetFile: () => void;
367
+ };
368
+ } | {
369
+ name: 'envelope-budget-month-menu';
370
+ options: {
371
+ month: string;
372
+ onBudgetAction: (month: string, action: string, arg?: unknown) => void;
373
+ onEditNotes: (id: NoteEntity['id']) => void;
374
+ };
375
+ } | {
376
+ name: 'tracking-budget-month-menu';
377
+ options: {
378
+ month: string;
379
+ onBudgetAction: (month: string, action: string, arg?: unknown) => void;
380
+ onEditNotes: (id: NoteEntity['id']) => void;
381
+ };
382
+ } | {
383
+ name: 'budget-file-selection';
384
+ } | {
385
+ name: 'confirm-transaction-edit';
386
+ options: {
387
+ onConfirm: () => void;
388
+ onCancel?: () => void;
389
+ confirmReason: string;
390
+ };
391
+ } | {
392
+ name: 'confirm-transaction-delete';
393
+ options: {
394
+ message?: string | undefined;
395
+ onConfirm: () => void;
396
+ };
397
+ } | {
398
+ name: 'edit-user';
399
+ options: {
400
+ user: UserEntity | NewUserEntity;
401
+ onSave: (user: UserEntity) => void;
402
+ };
403
+ } | {
404
+ name: 'edit-access';
405
+ options: {
406
+ access: UserAccessEntity;
407
+ onSave: (userAccess: UserAccessEntity) => void;
408
+ };
409
+ } | {
410
+ name: 'transfer-ownership';
411
+ options: {
412
+ onSave: () => void;
413
+ };
414
+ } | {
415
+ name: 'enable-openid';
416
+ options: {
417
+ onSave: () => void;
418
+ };
419
+ } | {
420
+ name: 'enable-password-auth';
421
+ options: {
422
+ onSave: () => void;
423
+ };
424
+ } | {
425
+ name: 'confirm-unlink-account';
426
+ options: {
427
+ accountName: string;
428
+ onUnlink: () => void;
429
+ };
430
+ } | {
431
+ name: 'keyboard-shortcuts';
432
+ } | {
433
+ name: 'goal-templates';
434
+ } | {
435
+ name: 'schedules-upcoming-length';
436
+ } | {
437
+ name: 'payee-category-learning';
438
+ } | {
439
+ name: 'category-automations-edit';
440
+ };
441
+ type OpenAccountCloseModalPayload = {
442
+ accountId: AccountEntity['id'];
443
+ };
444
+ export declare const openAccountCloseModal: import("@reduxjs/toolkit").AsyncThunk<void, OpenAccountCloseModalPayload, {
445
+ state: import("../store").RootState;
446
+ dispatch: import("../store").AppDispatch;
447
+ extra?: unknown;
448
+ rejectValue?: unknown;
449
+ serializedErrorType?: unknown;
450
+ pendingMeta?: unknown;
451
+ fulfilledMeta?: unknown;
452
+ rejectedMeta?: unknown;
453
+ }>;
454
+ type ModalsState = {
455
+ modalStack: Modal[];
456
+ isHidden: boolean;
457
+ };
458
+ type PushModalPayload = {
459
+ modal: Modal;
460
+ };
461
+ type ReplaceModalPayload = {
462
+ modal: Modal;
463
+ };
464
+ type CollapseModalPayload = {
465
+ rootModalName: Modal['name'];
466
+ };
467
+ export declare const name: "modals", reducer: import("redux").Reducer<ModalsState>, getInitialState: () => ModalsState;
468
+ export declare const actions: {
469
+ openAccountCloseModal: import("@reduxjs/toolkit").AsyncThunk<void, OpenAccountCloseModalPayload, {
470
+ state: import("../store").RootState;
471
+ dispatch: import("../store").AppDispatch;
472
+ extra?: unknown;
473
+ rejectValue?: unknown;
474
+ serializedErrorType?: unknown;
475
+ pendingMeta?: unknown;
476
+ fulfilledMeta?: unknown;
477
+ rejectedMeta?: unknown;
478
+ }>;
479
+ pushModal: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<PushModalPayload, "modals/pushModal">;
480
+ replaceModal: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<ReplaceModalPayload, "modals/replaceModal">;
481
+ popModal: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"modals/popModal">;
482
+ closeModal: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"modals/closeModal">;
483
+ collapseModals: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<CollapseModalPayload, "modals/collapseModals">;
484
+ };
485
+ export declare const pushModal: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<PushModalPayload, "modals/pushModal">, closeModal: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"modals/closeModal">, collapseModals: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<CollapseModalPayload, "modals/collapseModals">, popModal: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"modals/popModal">, replaceModal: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<ReplaceModalPayload, "modals/replaceModal">;
486
+ export {};
@@ -0,0 +1,47 @@
1
+ export type Notification = {
2
+ id?: string | undefined;
3
+ type?: 'message' | 'error' | 'warning' | undefined;
4
+ pre?: string | undefined;
5
+ title?: string | undefined;
6
+ message: string;
7
+ sticky?: boolean | undefined;
8
+ timeout?: number | undefined;
9
+ button?: {
10
+ title: string;
11
+ action: () => void | Promise<void>;
12
+ } | undefined;
13
+ messageActions?: Record<string, () => void> | undefined;
14
+ onClose?: (() => void) | undefined;
15
+ internal?: string | undefined;
16
+ };
17
+ export type NotificationWithId = Notification & {
18
+ id: string;
19
+ };
20
+ type NotificationsState = {
21
+ notifications: NotificationWithId[];
22
+ inset?: {
23
+ bottom?: number;
24
+ top?: number;
25
+ right?: number;
26
+ left?: number;
27
+ };
28
+ };
29
+ type AddNotificationPayload = {
30
+ notification: Notification;
31
+ };
32
+ type RemoveNotificationPayload = {
33
+ id: NotificationWithId['id'];
34
+ };
35
+ export declare const name: "notifications", reducer: import("redux").Reducer<NotificationsState>, getInitialState: () => NotificationsState;
36
+ export declare const actions: {
37
+ addNotification: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<AddNotificationPayload, "notifications/addNotification">;
38
+ addGenericErrorNotification: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"notifications/addGenericErrorNotification">;
39
+ removeNotification: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<RemoveNotificationPayload, "notifications/removeNotification">;
40
+ setNotificationInset: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<{
41
+ inset: NotificationsState["inset"];
42
+ }, "notifications/setNotificationInset">;
43
+ };
44
+ export declare const addGenericErrorNotification: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"notifications/addGenericErrorNotification">, addNotification: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<AddNotificationPayload, "notifications/addNotification">, removeNotification: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<RemoveNotificationPayload, "notifications/removeNotification">, setNotificationInset: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<{
45
+ inset: NotificationsState["inset"];
46
+ }, "notifications/setNotificationInset">;
47
+ export {};
@@ -2,3 +2,4 @@ export declare const isPlaywright = false;
2
2
  export declare const OS: 'windows' | 'mac' | 'linux' | 'unknown';
3
3
  export declare const env: 'web' | 'mobile' | 'unknown';
4
4
  export declare const isBrowser = false;
5
+ export declare const isIOSAgent = false;