@actual-app/api 6.7.1 → 6.8.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 (175) hide show
  1. package/@types/app/bundle.api.d.ts +6 -0
  2. package/@types/app/query.d.ts +19 -0
  3. package/@types/index.d.ts +7 -0
  4. package/@types/injected.d.ts +2 -0
  5. package/@types/jest.config.d.ts +9 -0
  6. package/@types/loot-core/client/actions/types.d.ts +6 -0
  7. package/@types/loot-core/client/constants.d.ts +29 -0
  8. package/@types/loot-core/client/platform.d.ts +4 -0
  9. package/@types/loot-core/client/state-types/account.d.ts +27 -0
  10. package/@types/loot-core/client/state-types/app.d.ts +37 -0
  11. package/@types/loot-core/client/state-types/budgets.d.ts +36 -0
  12. package/@types/loot-core/client/state-types/index.d.ts +41 -0
  13. package/@types/loot-core/client/state-types/modals.d.ts +292 -0
  14. package/@types/loot-core/client/state-types/notifications.d.ts +38 -0
  15. package/@types/loot-core/client/state-types/prefs.d.ts +28 -0
  16. package/@types/loot-core/client/state-types/queries.d.ts +69 -0
  17. package/@types/loot-core/client/state-types/user.d.ts +13 -0
  18. package/@types/loot-core/mocks/budget.d.ts +2 -0
  19. package/@types/loot-core/mocks/index.d.ts +26 -0
  20. package/@types/loot-core/mocks/random.d.ts +1 -0
  21. package/@types/loot-core/mocks/util.d.ts +7 -0
  22. package/@types/loot-core/platform/client/fetch/index.d.ts +48 -0
  23. package/@types/loot-core/platform/client/undo/index.d.ts +29 -0
  24. package/@types/loot-core/platform/exceptions/index.d.ts +5 -0
  25. package/@types/loot-core/platform/server/asyncStorage/index.d.ts +20 -0
  26. package/@types/loot-core/platform/server/connection/index.d.ts +23 -0
  27. package/@types/loot-core/platform/server/fetch/index.d.ts +4 -0
  28. package/@types/loot-core/platform/server/fs/index.d.ts +71 -0
  29. package/@types/loot-core/platform/server/fs/path-join.d.ts +2 -0
  30. package/@types/loot-core/platform/server/indexeddb/index.d.ts +24 -0
  31. package/@types/loot-core/platform/server/log/index.d.ts +9 -0
  32. package/@types/loot-core/platform/server/sqlite/index.d.ts +35 -0
  33. package/@types/loot-core/server/accounts/export-to-csv.d.ts +2 -0
  34. package/@types/loot-core/server/accounts/link.d.ts +1 -0
  35. package/@types/loot-core/server/accounts/ofx2json.d.ts +14 -0
  36. package/@types/loot-core/server/accounts/parse-file.d.ts +15 -0
  37. package/@types/loot-core/server/accounts/payees.d.ts +5 -0
  38. package/@types/loot-core/server/accounts/qif2json.d.ts +26 -0
  39. package/@types/loot-core/server/accounts/rules.d.ts +90 -0
  40. package/@types/loot-core/server/accounts/sync.d.ts +13 -0
  41. package/@types/loot-core/server/accounts/title/index.d.ts +3 -0
  42. package/@types/loot-core/server/accounts/title/lower-case.d.ts +1 -0
  43. package/@types/loot-core/server/accounts/title/specials.d.ts +1 -0
  44. package/@types/loot-core/server/accounts/transaction-rules.d.ts +47 -0
  45. package/@types/loot-core/server/accounts/transactions.d.ts +33 -0
  46. package/@types/loot-core/server/accounts/transfer.d.ts +37 -0
  47. package/@types/loot-core/server/accounts/xmlcamt2json.d.ts +10 -0
  48. package/@types/loot-core/server/api-models.d.ts +66 -0
  49. package/@types/loot-core/server/api.d.ts +3 -0
  50. package/@types/loot-core/server/app.d.ts +14 -0
  51. package/@types/loot-core/server/aql/compiler.d.ts +56 -0
  52. package/@types/loot-core/server/aql/exec.d.ts +9 -0
  53. package/@types/loot-core/server/aql/index.d.ts +5 -0
  54. package/@types/loot-core/server/aql/schema/executors.d.ts +6 -0
  55. package/@types/loot-core/server/aql/schema/index.d.ts +340 -0
  56. package/@types/loot-core/server/aql/schema/run-query.d.ts +6 -0
  57. package/@types/loot-core/server/aql/schema-helpers.d.ts +8 -0
  58. package/@types/loot-core/server/aql/views.d.ts +1 -0
  59. package/@types/loot-core/server/backups.d.ts +16 -0
  60. package/@types/loot-core/server/backups.test.d.ts +1 -0
  61. package/@types/loot-core/server/budget/actions.d.ts +63 -0
  62. package/@types/loot-core/server/budget/app.d.ts +12 -0
  63. package/@types/loot-core/server/budget/base.d.ts +17 -0
  64. package/@types/loot-core/server/budget/cleanup-template.d.ts +4 -0
  65. package/@types/loot-core/server/budget/goals/goalsAverage.d.ts +4 -0
  66. package/@types/loot-core/server/budget/goals/goalsBy.d.ts +5 -0
  67. package/@types/loot-core/server/budget/goals/goalsPercentage.d.ts +4 -0
  68. package/@types/loot-core/server/budget/goals/goalsRemainder.d.ts +8 -0
  69. package/@types/loot-core/server/budget/goals/goalsSchedule.d.ts +6 -0
  70. package/@types/loot-core/server/budget/goals/goalsSimple.d.ts +7 -0
  71. package/@types/loot-core/server/budget/goals/goalsSpend.d.ts +4 -0
  72. package/@types/loot-core/server/budget/goals/goalsWeek.d.ts +7 -0
  73. package/@types/loot-core/server/budget/goaltemplates.d.ts +12 -0
  74. package/@types/loot-core/server/budget/report.d.ts +2 -0
  75. package/@types/loot-core/server/budget/rollover.d.ts +4 -0
  76. package/@types/loot-core/server/budget/types/handlers.d.ts +77 -0
  77. package/@types/loot-core/server/budget/util.d.ts +4 -0
  78. package/@types/loot-core/server/cloud-storage.d.ts +33 -0
  79. package/@types/loot-core/server/db/index.d.ts +60 -0
  80. package/@types/loot-core/server/db/mappings.d.ts +3 -0
  81. package/@types/loot-core/server/db/sort.d.ts +11 -0
  82. package/@types/loot-core/server/db/util.d.ts +2 -0
  83. package/@types/loot-core/server/encryption-internals.d.ts +24 -0
  84. package/@types/loot-core/server/encryption-internals.web.d.ts +24 -0
  85. package/@types/loot-core/server/encryption.d.ts +41 -0
  86. package/@types/loot-core/server/encryption.test.d.ts +1 -0
  87. package/@types/loot-core/server/errors.d.ts +73 -0
  88. package/@types/loot-core/server/filters/app.d.ts +12 -0
  89. package/@types/loot-core/server/filters/types/handlers.d.ts +7 -0
  90. package/@types/loot-core/server/importers/actual.d.ts +4 -0
  91. package/@types/loot-core/server/importers/index.d.ts +6 -0
  92. package/@types/loot-core/server/importers/ynab4-types.d.ts +167 -0
  93. package/@types/loot-core/server/importers/ynab4.d.ts +5 -0
  94. package/@types/loot-core/server/importers/ynab5-types.d.ts +79 -0
  95. package/@types/loot-core/server/importers/ynab5.d.ts +5 -0
  96. package/@types/loot-core/server/main-app.d.ts +12 -0
  97. package/@types/loot-core/server/main.d.ts +28 -0
  98. package/@types/loot-core/server/main.test.d.ts +1 -0
  99. package/@types/loot-core/server/migrate/migrations.d.ts +9 -0
  100. package/@types/loot-core/server/models.d.ts +38 -0
  101. package/@types/loot-core/server/mutators.d.ts +17 -0
  102. package/@types/loot-core/server/notes/app.d.ts +12 -0
  103. package/@types/loot-core/server/notes/types/handlers.d.ts +3 -0
  104. package/@types/loot-core/server/platform.d.ts +3 -0
  105. package/@types/loot-core/server/platform.web.d.ts +3 -0
  106. package/@types/loot-core/server/polyfills.d.ts +0 -0
  107. package/@types/loot-core/server/post.d.ts +3 -0
  108. package/@types/loot-core/server/prefs.d.ts +10 -0
  109. package/@types/loot-core/server/reports/app.d.ts +12 -0
  110. package/@types/loot-core/server/reports/types/handlers.d.ts +6 -0
  111. package/@types/loot-core/server/rules/app.d.ts +12 -0
  112. package/@types/loot-core/server/rules/types/handlers.d.ts +42 -0
  113. package/@types/loot-core/server/schedules/app.d.ts +35 -0
  114. package/@types/loot-core/server/schedules/find-schedules.d.ts +1 -0
  115. package/@types/loot-core/server/schedules/types/handlers.d.ts +31 -0
  116. package/@types/loot-core/server/server-config.d.ts +10 -0
  117. package/@types/loot-core/server/sheet.d.ts +11 -0
  118. package/@types/loot-core/server/sheet.test.d.ts +1 -0
  119. package/@types/loot-core/server/spreadsheet/globals.d.ts +1 -0
  120. package/@types/loot-core/server/spreadsheet/graph-data-structure.d.ts +15 -0
  121. package/@types/loot-core/server/spreadsheet/spreadsheet.d.ts +79 -0
  122. package/@types/loot-core/server/spreadsheet/util.d.ts +5 -0
  123. package/@types/loot-core/server/sync/encoder.d.ts +9 -0
  124. package/@types/loot-core/server/sync/index.d.ts +47 -0
  125. package/@types/loot-core/server/sync/make-test-message.d.ts +10 -0
  126. package/@types/loot-core/server/sync/migrate.d.ts +2 -0
  127. package/@types/loot-core/server/sync/repair.d.ts +6 -0
  128. package/@types/loot-core/server/sync/reset.d.ts +6 -0
  129. package/@types/loot-core/server/sync/utils.d.ts +3 -0
  130. package/@types/loot-core/server/tools/app.d.ts +12 -0
  131. package/@types/loot-core/server/tools/types/handlers.d.ts +7 -0
  132. package/@types/loot-core/server/undo.d.ts +14 -0
  133. package/@types/loot-core/server/update.d.ts +1 -0
  134. package/@types/loot-core/server/util/budget-name.d.ts +2 -0
  135. package/@types/loot-core/server/util/rschedule.d.ts +5 -0
  136. package/@types/loot-core/shared/async.d.ts +3 -0
  137. package/@types/loot-core/shared/environment.d.ts +4 -0
  138. package/@types/loot-core/shared/errors.d.ts +22 -0
  139. package/@types/loot-core/shared/months.d.ts +62 -0
  140. package/@types/loot-core/shared/query.d.ts +31 -0
  141. package/@types/loot-core/shared/rules.d.ts +62 -0
  142. package/@types/loot-core/shared/schedules.d.ts +43 -0
  143. package/@types/loot-core/shared/transactions.d.ts +91 -0
  144. package/@types/loot-core/shared/util.d.ts +67 -0
  145. package/@types/loot-core/types/api-handlers.d.ts +158 -0
  146. package/@types/loot-core/types/budget.d.ts +7 -0
  147. package/@types/loot-core/types/file.d.ts +38 -0
  148. package/@types/loot-core/types/handlers.d.ts +23 -0
  149. package/@types/loot-core/types/models/account.d.ts +21 -0
  150. package/@types/loot-core/types/models/category-group.d.ts +11 -0
  151. package/@types/loot-core/types/models/category.d.ts +9 -0
  152. package/@types/loot-core/types/models/gocardless.d.ts +14 -0
  153. package/@types/loot-core/types/models/index.d.ts +12 -0
  154. package/@types/loot-core/types/models/note.d.ts +4 -0
  155. package/@types/loot-core/types/models/payee.d.ts +10 -0
  156. package/@types/loot-core/types/models/reports.d.ts +123 -0
  157. package/@types/loot-core/types/models/rule.d.ts +71 -0
  158. package/@types/loot-core/types/models/schedule.d.ts +58 -0
  159. package/@types/loot-core/types/models/simplefin.d.ts +10 -0
  160. package/@types/loot-core/types/models/transaction-filter.d.ts +7 -0
  161. package/@types/loot-core/types/models/transaction.d.ts +40 -0
  162. package/@types/loot-core/types/prefs.d.ts +69 -0
  163. package/@types/loot-core/types/server-events.d.ts +21 -0
  164. package/@types/loot-core/types/server-handlers.d.ts +344 -0
  165. package/@types/loot-core/types/util.d.ts +5 -0
  166. package/@types/methods.d.ts +85 -0
  167. package/@types/methods.test.d.ts +1 -0
  168. package/@types/migrations/1632571489012_remove_cache.d.ts +1 -0
  169. package/@types/utils.d.ts +2 -0
  170. package/@types/validateNodeVersion.d.ts +1 -0
  171. package/dist/app/bundle.api.js +430 -5643
  172. package/dist/methods.js +25 -1
  173. package/dist/methods.test.js +205 -5
  174. package/dist/package.json +7 -5
  175. package/package.json +7 -5
@@ -0,0 +1,21 @@
1
+ export type AccountEntity = {
2
+ id: string;
3
+ name: string;
4
+ offbudget: 0 | 1;
5
+ closed: 0 | 1;
6
+ sort_order: number;
7
+ tombstone: 0 | 1;
8
+ } & (_SyncFields<true> | _SyncFields<false>);
9
+
10
+ type _SyncFields<T> = {
11
+ account_id: T extends true ? string : null;
12
+ bank: T extends true ? string : null;
13
+ mask: T extends true ? string : null; // end of bank account number
14
+ official_name: T extends true ? string : null;
15
+ balance_current: T extends true ? number : null;
16
+ balance_available: T extends true ? number : null;
17
+ balance_limit: T extends true ? number : null;
18
+ account_sync_source: T extends true ? AccountSyncSource : null;
19
+ };
20
+
21
+ export type AccountSyncSource = 'simpleFin' | 'goCardless';
@@ -0,0 +1,11 @@
1
+ import { CategoryEntity } from './category';
2
+
3
+ export interface CategoryGroupEntity {
4
+ id?: string;
5
+ name: string;
6
+ is_income?: boolean;
7
+ sort_order?: number;
8
+ tombstone?: boolean;
9
+ hidden?: boolean;
10
+ categories?: CategoryEntity[];
11
+ }
@@ -0,0 +1,9 @@
1
+ export interface CategoryEntity {
2
+ id?: string;
3
+ name: string;
4
+ is_income?: boolean;
5
+ cat_group?: string;
6
+ sort_order?: number;
7
+ tombstone?: boolean;
8
+ hidden?: boolean;
9
+ }
@@ -0,0 +1,14 @@
1
+ export type GoCardlessToken = {
2
+ id: string;
3
+ accounts: unknown[];
4
+ };
5
+
6
+ export type GoCardlessInstitution = {
7
+ id: string;
8
+ name: string;
9
+ bic?: string;
10
+ transaction_total_days?: string;
11
+ countries: string[];
12
+ logo: string;
13
+ identification_codes: string[];
14
+ };
@@ -0,0 +1,12 @@
1
+ export type * from './account';
2
+ export type * from './category';
3
+ export type * from './category-group';
4
+ export type * from './gocardless';
5
+ export type * from './simplefin';
6
+ export type * from './note';
7
+ export type * from './payee';
8
+ export type * from './reports';
9
+ export type * from './rule';
10
+ export type * from './schedule';
11
+ export type * from './transaction';
12
+ export type * from './transaction-filter';
@@ -0,0 +1,4 @@
1
+ export type NoteEntity = {
2
+ id: string;
3
+ note: string;
4
+ };
@@ -0,0 +1,10 @@
1
+ export interface NewPayeeEntity {
2
+ id?: string;
3
+ name: string;
4
+ transfer_acct?: string;
5
+ tombstone?: boolean;
6
+ }
7
+
8
+ export interface PayeeEntity extends NewPayeeEntity {
9
+ id: string;
10
+ }
@@ -0,0 +1,123 @@
1
+ import { CategoryEntity } from './category';
2
+ import { type RuleConditionEntity } from './rule';
3
+
4
+ export interface CustomReportEntity {
5
+ id: string;
6
+ name: string;
7
+ startDate: string;
8
+ endDate: string;
9
+ isDateStatic: boolean;
10
+ dateRange: string;
11
+ mode: string;
12
+ groupBy: string;
13
+ interval: string;
14
+ balanceType: string;
15
+ showEmpty: boolean;
16
+ showOffBudget: boolean;
17
+ showHiddenCategories: boolean;
18
+ showUncategorized: boolean;
19
+ selectedCategories?: CategoryEntity[];
20
+ graphType: string;
21
+ conditions?: RuleConditionEntity[];
22
+ conditionsOp: string;
23
+ data?: GroupedEntity;
24
+ tombstone?: boolean;
25
+ }
26
+
27
+ export type SpendingMonthEntity = Record<
28
+ string | number,
29
+ {
30
+ cumulative: number;
31
+ daily: number;
32
+ date: string;
33
+ month: string;
34
+ }
35
+ >;
36
+
37
+ export interface SpendingDataEntity {
38
+ date: string;
39
+ totalAssets: number;
40
+ totalDebts: number;
41
+ totalTotals: number;
42
+ cumulative: number;
43
+ }
44
+
45
+ export interface SpendingEntity {
46
+ intervalData: {
47
+ months: SpendingMonthEntity;
48
+ day: string;
49
+ average: number;
50
+ thisMonth: number;
51
+ lastMonth: number;
52
+ }[];
53
+ startDate?: string;
54
+ endDate?: string;
55
+ totalDebts: number;
56
+ totalAssets: number;
57
+ totalTotals: number;
58
+ }
59
+
60
+ export interface DataEntity {
61
+ data?: GroupedEntity[];
62
+ intervalData: IntervalEntity[];
63
+ groupedData?: GroupedEntity[] | null;
64
+ legend?: LegendEntity[];
65
+ startDate?: string;
66
+ endDate?: string;
67
+ totalDebts: number;
68
+ totalAssets: number;
69
+ totalTotals: number;
70
+ }
71
+
72
+ type LegendEntity = {
73
+ name: string;
74
+ id: string | null;
75
+ color: string;
76
+ };
77
+
78
+ export type IntervalEntity = {
79
+ date?: string;
80
+ change?: number;
81
+ intervalStartDate?: string;
82
+ totalAssets: number;
83
+ totalDebts: number;
84
+ totalTotals: number;
85
+ };
86
+
87
+ export interface GroupedEntity {
88
+ id: string;
89
+ name: string;
90
+ date?: string;
91
+ intervalData: IntervalEntity[];
92
+ totalAssets: number;
93
+ totalDebts: number;
94
+ totalTotals: number;
95
+ categories?: GroupedEntity[];
96
+ }
97
+
98
+ export type Interval = {
99
+ interval: string;
100
+ };
101
+
102
+ export interface CustomReportData {
103
+ id: string;
104
+ name: string;
105
+ start_date: string;
106
+ end_date: string;
107
+ date_static: number;
108
+ date_range: string;
109
+ mode: string;
110
+ group_by: string;
111
+ balance_type: string;
112
+ show_empty: number;
113
+ show_offbudget: number;
114
+ show_hidden: number;
115
+ show_uncategorized: number;
116
+ selected_categories?: CategoryEntity[];
117
+ graph_type: string;
118
+ conditions?: RuleConditionEntity[];
119
+ conditions_op: string;
120
+ metadata?: GroupedEntity;
121
+ interval: string;
122
+ color_scheme?: string;
123
+ }
@@ -0,0 +1,71 @@
1
+ import { type ScheduleEntity } from './schedule';
2
+
3
+ export interface NewRuleEntity {
4
+ stage: string;
5
+ conditionsOp: 'any' | 'and';
6
+ conditions: RuleConditionEntity[];
7
+ actions: RuleActionEntity[];
8
+ tombstone?: boolean;
9
+ }
10
+
11
+ export interface RuleEntity extends NewRuleEntity {
12
+ id: string;
13
+ }
14
+
15
+ export type RuleConditionOp =
16
+ | 'is'
17
+ | 'isNot'
18
+ | 'oneOf'
19
+ | 'notOneOf'
20
+ | 'isapprox'
21
+ | 'isbetween'
22
+ | 'gt'
23
+ | 'gte'
24
+ | 'lt'
25
+ | 'lte'
26
+ | 'contains'
27
+ | 'doesNotContain';
28
+
29
+ export interface RuleConditionEntity {
30
+ field?: string;
31
+ op?: RuleConditionOp;
32
+ value?: string | string[] | number | boolean;
33
+ options?: {
34
+ inflow?: boolean;
35
+ outflow?: boolean;
36
+ month?: boolean;
37
+ year?: boolean;
38
+ };
39
+ conditionsOp?: string;
40
+ type?: string;
41
+ customName?: string;
42
+ }
43
+
44
+ export type RuleActionEntity =
45
+ | SetRuleActionEntity
46
+ | SetSplitAmountRuleActionEntity
47
+ | LinkScheduleRuleActionEntity;
48
+
49
+ export interface SetRuleActionEntity {
50
+ field: string;
51
+ op: 'set';
52
+ value: unknown;
53
+ options?: {
54
+ splitIndex?: number;
55
+ };
56
+ type?: string;
57
+ }
58
+
59
+ export interface SetSplitAmountRuleActionEntity {
60
+ op: 'set-split-amount';
61
+ value: number;
62
+ options?: {
63
+ splitIndex?: number;
64
+ method: 'fixed-amount' | 'fixed-percent' | 'remainder';
65
+ };
66
+ }
67
+
68
+ export interface LinkScheduleRuleActionEntity {
69
+ op: 'link-schedule';
70
+ value: ScheduleEntity;
71
+ }
@@ -0,0 +1,58 @@
1
+ import type { AccountEntity } from './account';
2
+ import type { PayeeEntity } from './payee';
3
+ import type { RuleEntity } from './rule';
4
+
5
+ export interface ScheduleEntity {
6
+ id: string;
7
+ name?: string;
8
+ rule: RuleEntity['id'];
9
+ next_date: string;
10
+ completed: boolean;
11
+ posts_transaction: boolean;
12
+ tombstone: boolean;
13
+
14
+ // These are special fields that are actually pulled from the
15
+ // underlying rule
16
+ _payee: PayeeEntity['id'];
17
+ _account: AccountEntity['id'];
18
+ _amount: unknown;
19
+ _amountOp: string;
20
+ _date: {
21
+ interval: number;
22
+ patterns: {
23
+ value: number;
24
+ type: 'SU' | 'MO' | 'TU' | 'WE' | 'TH' | 'FR' | 'SA' | 'day';
25
+ }[];
26
+ skipWeekend: boolean;
27
+ start: string;
28
+ endMode: 'never' | 'after_n_occurrences' | 'on_date';
29
+ endOccurrences: number;
30
+ endDate: string;
31
+ weekendSolveMode: 'before' | 'after';
32
+ frequency: 'daily' | 'weekly' | 'monthly' | 'yearly';
33
+ };
34
+ _conditions: unknown;
35
+ _actions: unknown;
36
+ }
37
+
38
+ export type DiscoverScheduleEntity = {
39
+ id: ScheduleEntity['id'];
40
+ account: AccountEntity['id'];
41
+ payee: PayeeEntity['id'];
42
+ date: ScheduleEntity['_date'];
43
+ amount: ScheduleEntity['_amount'];
44
+ _conditions: Array<
45
+ | { op: 'is'; field: 'account'; value: AccountEntity['id'] }
46
+ | { op: 'is'; field: 'payee'; value: PayeeEntity['id'] }
47
+ | {
48
+ op: 'is' | 'isapprox';
49
+ field: 'date';
50
+ value: ScheduleEntity['_date'];
51
+ }
52
+ | {
53
+ op: 'is' | 'isapprox';
54
+ field: 'amount';
55
+ value: ScheduleEntity['_amount'];
56
+ }
57
+ >;
58
+ };
@@ -0,0 +1,10 @@
1
+ export type SimpleFinOrganization = {
2
+ name: string;
3
+ domain: string;
4
+ };
5
+
6
+ export type SimpleFinAccount = {
7
+ id: string;
8
+ name: string;
9
+ org: SimpleFinOrganization;
10
+ };
@@ -0,0 +1,7 @@
1
+ export interface TransactionFilterEntity {
2
+ id: string;
3
+ name: string;
4
+ conditions_op: string;
5
+ conditions: unknown;
6
+ tombstone: boolean;
7
+ }
@@ -0,0 +1,40 @@
1
+ import type { AccountEntity } from './account';
2
+ import type { CategoryEntity } from './category';
3
+ import type { PayeeEntity } from './payee';
4
+ import type { ScheduleEntity } from './schedule';
5
+
6
+ export interface NewTransactionEntity {
7
+ id?: string;
8
+ is_parent?: boolean;
9
+ is_child?: boolean;
10
+ parent_id?: string;
11
+ account: string;
12
+ category?: string;
13
+ amount: number;
14
+ payee?: string;
15
+ notes?: string;
16
+ date: string;
17
+ imported_id?: string;
18
+ imported_payee?: string;
19
+ starting_balance_flag?: boolean;
20
+ transfer_id?: string;
21
+ sort_order?: number;
22
+ cleared?: boolean;
23
+ reconciled?: boolean;
24
+ tombstone?: boolean;
25
+ schedule?: string;
26
+ subtransactions?: Omit<NewTransactionEntity, 'account' | 'date'>[];
27
+ }
28
+
29
+ export interface TransactionEntity
30
+ extends Omit<
31
+ NewTransactionEntity,
32
+ 'account' | 'category' | 'payee' | 'schedule' | 'subtransactions'
33
+ > {
34
+ id: string;
35
+ account: AccountEntity;
36
+ category?: CategoryEntity;
37
+ payee?: PayeeEntity;
38
+ schedule?: ScheduleEntity;
39
+ subtransactions?: TransactionEntity[];
40
+ }
@@ -0,0 +1,69 @@
1
+ import { type numberFormats } from '../shared/util';
2
+
3
+ export type FeatureFlag =
4
+ | 'reportBudget'
5
+ | 'goalTemplatesEnabled'
6
+ | 'customReports'
7
+ | 'spendingReport'
8
+ | 'simpleFinSync'
9
+ | 'splitsInRules';
10
+
11
+ export type LocalPrefs = Partial<
12
+ {
13
+ firstDayOfWeekIdx: `${0 | 1 | 2 | 3 | 4 | 5 | 6}`;
14
+ dateFormat:
15
+ | 'MM/dd/yyyy'
16
+ | 'dd/MM/yyyy'
17
+ | 'yyyy-MM-dd'
18
+ | 'MM.dd.yyyy'
19
+ | 'dd.MM.yyyy';
20
+ numberFormat: (typeof numberFormats)[number]['value'];
21
+ hideFraction: boolean;
22
+ hideClosedAccounts: boolean;
23
+ hideMobileMessage: boolean;
24
+ isPrivacyEnabled: boolean;
25
+ budgetName: string;
26
+ 'ui.showClosedAccounts': boolean;
27
+ 'expand-splits': boolean;
28
+ [key: `show-extra-balances-${string}`]: boolean;
29
+ [key: `hide-cleared-${string}`]: boolean;
30
+ [key: `hide-reconciled-${string}`]: boolean;
31
+ 'budget.collapsed': string[];
32
+ 'budget.summaryCollapsed': boolean;
33
+ 'budget.showHiddenCategories': boolean;
34
+ 'budget.startMonth': string;
35
+ // TODO: pull from src/components/modals/ImportTransactions.js
36
+ [key: `parse-date-${string}-${'csv' | 'qif'}`]: string;
37
+ [key: `csv-mappings-${string}`]: string;
38
+ [key: `csv-delimiter-${string}`]: ',' | ';' | '\t';
39
+ [key: `csv-has-header-${string}`]: boolean;
40
+ [key: `ofx-fallback-missing-payee-${string}`]: boolean;
41
+ [key: `flip-amount-${string}-${'csv' | 'qif'}`]: boolean;
42
+ 'flags.updateNotificationShownForVersion': string;
43
+ id: string;
44
+ isCached: boolean;
45
+ lastUploaded: string;
46
+ cloudFileId: string;
47
+ groupId: string;
48
+ budgetType: 'report' | 'rollover';
49
+ encryptKeyId: string;
50
+ lastSyncedTimestamp: string;
51
+ userId: string;
52
+ resetClock: boolean;
53
+ lastScheduleRun: string;
54
+ reportsViewLegend: boolean;
55
+ reportsViewSummary: boolean;
56
+ reportsViewLabel: boolean;
57
+ 'mobile.showSpentColumn': boolean;
58
+ } & Record<`flags.${FeatureFlag}`, boolean>
59
+ >;
60
+
61
+ export type Theme = 'light' | 'dark' | 'auto' | 'midnight' | 'development';
62
+ export type GlobalPrefs = Partial<{
63
+ floatingSidebar: boolean;
64
+ maxMonths: number;
65
+ autoUpdate: boolean;
66
+ keyId?: string;
67
+ theme: Theme;
68
+ documentDir: string; // Electron only
69
+ }>;
@@ -0,0 +1,21 @@
1
+ import { type UndoState } from '../server/undo';
2
+
3
+ export interface ServerEvents {
4
+ 'backups-updated': unknown;
5
+ 'cells-changed': Array<{ name }>;
6
+ 'fallback-write-error': unknown;
7
+ 'finish-import': unknown;
8
+ 'finish-load': unknown;
9
+ 'orphaned-payees': {
10
+ orphanedIds: string[];
11
+ updatedPayeeIds: string[];
12
+ };
13
+ 'prefs-updated': unknown;
14
+ 'schedules-offline': { payees: unknown[] };
15
+ 'server-error': unknown;
16
+ 'show-budgets': unknown;
17
+ 'start-import': unknown;
18
+ 'start-load': unknown;
19
+ 'sync-event': { type; subtype; meta; tables; syncDisabled };
20
+ 'undo-event': UndoState;
21
+ }