@firela/api-types 0.0.0-canary.8cbdced0 → 0.0.0-canary.9256c41b

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.
package/dist/index.d.mts CHANGED
@@ -27,13 +27,9 @@ type CreateAccountDto = {
27
27
  */
28
28
  path: string;
29
29
  /**
30
- * Display name to distinguish accounts at the same path (default: "")
30
+ * Account open date (server defaults to today)
31
31
  */
32
- displayName?: string;
33
- /**
34
- * Account open date
35
- */
36
- openDate: string;
32
+ openDate?: string;
37
33
  /**
38
34
  * Allowed currencies (null = no restriction)
39
35
  */
@@ -50,18 +46,14 @@ type CreateAccountDto = {
50
46
  * Whether this is a custom (user-created) account
51
47
  */
52
48
  isCustom?: boolean;
53
- /**
54
- * i18n key for display name (overrides template)
55
- */
56
- i18nKey?: string;
57
49
  /**
58
50
  * Icon identifier (overrides template)
59
51
  */
60
52
  icon?: string;
61
53
  /**
62
- * Additional metadata
54
+ * Open directive metadata (NOT an opening-balance amount — use the opening-balance endpoint)
63
55
  */
64
- openMeta?: {
56
+ openDirectiveMeta?: {
65
57
  [key: string]: unknown;
66
58
  };
67
59
  /**
@@ -82,10 +74,6 @@ type AccountResponseDto = {
82
74
  * Account path (hierarchical, colon-separated)
83
75
  */
84
76
  path: string;
85
- /**
86
- * Display name distinguishing multiple accounts at the same path
87
- */
88
- displayName: string;
89
77
  /**
90
78
  * Account type (root segment)
91
79
  */
@@ -119,17 +107,17 @@ type AccountResponseDto = {
119
107
  */
120
108
  isCustom: boolean;
121
109
  /**
122
- * i18n key for display name
110
+ * Localized display name (ADR-0114, read-time projection)
123
111
  */
124
- i18nKey?: string;
112
+ displayName?: string;
125
113
  /**
126
114
  * Icon identifier
127
115
  */
128
116
  icon?: string;
129
117
  /**
130
- * Account metadata
118
+ * Open directive metadata (ADR-0115 Decision 9)
131
119
  */
132
- openMeta?: {
120
+ openDirectiveMeta?: {
133
121
  [key: string]: unknown;
134
122
  };
135
123
  /**
@@ -172,10 +160,6 @@ type AccountListResponseDto = {
172
160
  total: number;
173
161
  };
174
162
  type UpdateAccountDto = {
175
- /**
176
- * Display name to distinguish accounts at the same path
177
- */
178
- displayName?: string;
179
163
  /**
180
164
  * Allowed currencies (null = no restriction)
181
165
  */
@@ -184,18 +168,14 @@ type UpdateAccountDto = {
184
168
  * Booking method for cost basis
185
169
  */
186
170
  bookingMethod?: 'FIFO' | 'LIFO' | 'HIFO' | 'AVERAGE' | 'STRICT' | 'STRICT_WITH_SIZE' | 'NONE';
187
- /**
188
- * i18n key for display name
189
- */
190
- i18nKey?: string;
191
171
  /**
192
172
  * Icon identifier
193
173
  */
194
174
  icon?: string;
195
175
  /**
196
- * Additional metadata (merged with existing)
176
+ * Open directive metadata (merged with existing; NOT an opening-balance amount)
197
177
  */
198
- openMeta?: {
178
+ openDirectiveMeta?: {
199
179
  [key: string]: unknown;
200
180
  };
201
181
  /**
@@ -221,6 +201,26 @@ type ReopenAccountDto = {
221
201
  */
222
202
  reopenDate?: string;
223
203
  };
204
+ type CreateOpeningBalanceDto = {
205
+ /**
206
+ * Opening balance amount (non-negative)
207
+ */
208
+ amount: number;
209
+ /**
210
+ * Currency code
211
+ */
212
+ currency: string;
213
+ /**
214
+ * Opening-balance date (defaults to now)
215
+ */
216
+ date?: string;
217
+ };
218
+ type OpeningBalanceResultDto = {
219
+ /**
220
+ * Created opening-balance transaction id.
221
+ */
222
+ transactionId: string;
223
+ };
224
224
  type AccountStandardResponseDto = {
225
225
  /**
226
226
  * Account path (hierarchical, colon-separated)
@@ -230,10 +230,6 @@ type AccountStandardResponseDto = {
230
230
  * Account type in Beancount hierarchy
231
231
  */
232
232
  type: 'Assets' | 'Liabilities' | 'Income' | 'Expenses' | 'Equity';
233
- /**
234
- * i18n key for localized display name
235
- */
236
- i18nKey: string;
237
233
  /**
238
234
  * Short localized display name
239
235
  */
@@ -266,10 +262,6 @@ type AccountStandardListResponseDto = {
266
262
  region: string;
267
263
  };
268
264
  type TemplateMetadataDto = {
269
- /**
270
- * Whether this path can be extended
271
- */
272
- extendable: boolean;
273
265
  /**
274
266
  * Root account type
275
267
  */
@@ -779,6 +771,48 @@ type flag2 = 'CLEARED' | 'PENDING' | 'PADDING' | 'SUMMARIZE' | 'TRANSFER' | 'CON
779
771
  * Transaction status
780
772
  */
781
773
  type status2 = 'ACTIVE' | 'VOIDED' | 'SUPERSEDED';
774
+ type BalanceByCurrencyDto = {
775
+ /**
776
+ * ISO 4217 currency code
777
+ */
778
+ currency: string;
779
+ /**
780
+ * Balance amount
781
+ */
782
+ balance: string;
783
+ };
784
+ type ExchangeRateWarningDto = {
785
+ /**
786
+ * Warning type
787
+ */
788
+ type: string;
789
+ /**
790
+ * Currency without exchange rate
791
+ */
792
+ currency: string;
793
+ /**
794
+ * Total amount affected
795
+ */
796
+ totalAmount: string;
797
+ };
798
+ type TransactionListSummaryDto = {
799
+ /**
800
+ * Partial converted total in base currency (rated currencies only, raw Beancount sign). When warnings is non-empty this excludes currencies missing an FX rate; may be "0.00" if ALL non-base currencies lack a rate. Converted at the dateTo (or current) available rate.
801
+ */
802
+ totalAmount: string;
803
+ /**
804
+ * Base currency (ISO 4217)
805
+ */
806
+ currency: string;
807
+ /**
808
+ * Raw (unconverted) balance per currency
809
+ */
810
+ balanceByCurrency: Array<BalanceByCurrencyDto>;
811
+ /**
812
+ * Currencies missing an FX rate (omitted when empty)
813
+ */
814
+ warnings?: Array<ExchangeRateWarningDto>;
815
+ };
782
816
  type TransactionListResponseDto = {
783
817
  /**
784
818
  * List of transactions
@@ -796,6 +830,10 @@ type TransactionListResponseDto = {
796
830
  * Number of items skipped
797
831
  */
798
832
  offset: number;
833
+ /**
834
+ * Amount summary for the full filtered set (#514). Present only when the request has a single account OR category viewpoint; omitted for search-only / plain-list / dual-perspective requests.
835
+ */
836
+ summary?: TransactionListSummaryDto;
799
837
  };
800
838
  type TagSuggestionDto = {
801
839
  /**
@@ -1642,6 +1680,104 @@ type UpdateCommodityDto = {
1642
1680
  [key: string]: unknown;
1643
1681
  };
1644
1682
  };
1683
+ type CreateBeanPriceDto = {
1684
+ /**
1685
+ * Currency being priced (e.g., USD, AAPL, BTC)
1686
+ */
1687
+ currency: string;
1688
+ /**
1689
+ * Quote currency (pricing currency, e.g., CNY, EUR)
1690
+ */
1691
+ quoteCurrency: string;
1692
+ /**
1693
+ * Price amount (MUST be >= 0 per Beancount spec, supports up to 15 decimal places). Zero allowed for conversion entries, negative strictly prohibited.
1694
+ */
1695
+ amount: number;
1696
+ /**
1697
+ * Price date (ISO 8601 format)
1698
+ */
1699
+ date: string;
1700
+ /**
1701
+ * Metadata (validated by Zod schema, max field lengths enforced)
1702
+ */
1703
+ metadata?: {
1704
+ [key: string]: unknown;
1705
+ };
1706
+ };
1707
+ type PriceResponseDto = {
1708
+ /**
1709
+ * Unique identifier
1710
+ */
1711
+ id: string;
1712
+ /**
1713
+ * User ID (owner of the price)
1714
+ */
1715
+ userId: string;
1716
+ /**
1717
+ * Currency being priced (e.g., USD, AAPL, BTC)
1718
+ */
1719
+ currency: string;
1720
+ /**
1721
+ * Quote currency (pricing currency, e.g., USD, CNY)
1722
+ */
1723
+ quoteCurrency: string;
1724
+ /**
1725
+ * Price amount (corresponds to Beancount Amount.number). Supports up to 15 decimal places.
1726
+ */
1727
+ amount: number;
1728
+ /**
1729
+ * Price date (ISO 8601 format). Represents the date this price was valid.
1730
+ */
1731
+ date: string;
1732
+ /**
1733
+ * Metadata (corresponds to Beancount meta field). Contains source, confidence, note, etc.
1734
+ */
1735
+ meta: {
1736
+ [key: string]: unknown;
1737
+ };
1738
+ /**
1739
+ * Creation timestamp
1740
+ */
1741
+ createdAt: string;
1742
+ /**
1743
+ * Last update timestamp
1744
+ */
1745
+ updatedAt: string;
1746
+ };
1747
+ type PriceListResponseDto = {
1748
+ /**
1749
+ * List of prices
1750
+ */
1751
+ items: Array<PriceResponseDto>;
1752
+ /**
1753
+ * Total number of prices
1754
+ */
1755
+ total: number;
1756
+ };
1757
+ type UpdateBeanPriceDto = {
1758
+ /**
1759
+ * Currency being priced
1760
+ */
1761
+ currency?: string;
1762
+ /**
1763
+ * Quote currency (pricing currency)
1764
+ */
1765
+ quoteCurrency?: string;
1766
+ /**
1767
+ * Price amount (MUST be >= 0 per Beancount spec)
1768
+ */
1769
+ amount?: number;
1770
+ /**
1771
+ * Price date (ISO 8601 format)
1772
+ */
1773
+ date?: string;
1774
+ /**
1775
+ * Metadata
1776
+ */
1777
+ metadata?: {
1778
+ [key: string]: unknown;
1779
+ };
1780
+ };
1645
1781
  type CreateRecurringRuleDto = {
1646
1782
  /**
1647
1783
  * Rule name (unique per user)
@@ -2589,6 +2725,24 @@ type SignupDto = {
2589
2725
  */
2590
2726
  turnstileToken?: string;
2591
2727
  };
2728
+ type SignupResponseDto = {
2729
+ /**
2730
+ * JWT auth token
2731
+ */
2732
+ authToken: string;
2733
+ /**
2734
+ * Auto-generated access token
2735
+ */
2736
+ accessToken: string;
2737
+ /**
2738
+ * Assigned user role
2739
+ */
2740
+ role: 'USER' | 'ADMIN' | 'DEMO' | 'INACTIVE' | 'PAID' | 'OPS';
2741
+ };
2742
+ /**
2743
+ * Assigned user role
2744
+ */
2745
+ type role = 'USER' | 'ADMIN' | 'DEMO' | 'INACTIVE' | 'PAID' | 'OPS';
2592
2746
  type UpdateUserSettingDto = {
2593
2747
  /**
2594
2748
  * Security ID
@@ -2689,250 +2843,1220 @@ type UpdatePropertyDto = {
2689
2843
  */
2690
2844
  value: string;
2691
2845
  };
2692
- type FileImportDto = {
2846
+ type CreateBeanEventDto = {
2693
2847
  /**
2694
- * Bill file to import (CSV, PDF, OFX, etc.)
2848
+ * Life event date (ISO 8601)
2695
2849
  */
2696
- file: Blob | File;
2697
- };
2698
- type ImportErrorDto = {
2850
+ date: string;
2699
2851
  /**
2700
- * Index of failed transaction in the file
2852
+ * Life event type (e.g., "employer", "location", "marital-status") — user-defined, no enum constraint at engine layer
2701
2853
  */
2702
- index: number;
2854
+ type: string;
2703
2855
  /**
2704
- * Error message
2856
+ * Life event description. Empty string is a VALID value (distinct from absence).
2705
2857
  */
2706
- error: string;
2707
- };
2708
- type ReviewItemPreviewDto = {
2858
+ description: string;
2709
2859
  /**
2710
- * Index in the import batch (for tracking)
2860
+ * Product-side metadata (lives in BeanEvent.meta JSON, never in engine Event fields)
2711
2861
  */
2712
- index: number;
2862
+ meta?: {
2863
+ [key: string]: unknown;
2864
+ };
2865
+ };
2866
+ type EventResponseDto = {
2713
2867
  /**
2714
- * Transaction date (ISO format)
2868
+ * Unique identifier
2715
2869
  */
2716
- date: string;
2870
+ id: string;
2717
2871
  /**
2718
- * Transaction amount (absolute value)
2872
+ * User ID (owner of the life event)
2719
2873
  */
2720
- amount?: number;
2874
+ userId: string;
2721
2875
  /**
2722
- * Currency code
2876
+ * Life event date (ISO 8601 format)
2723
2877
  */
2724
- currency?: string;
2878
+ date: string;
2725
2879
  /**
2726
- * Transaction narration/description
2880
+ * Life event type (user-defined, e.g., "employer", "location")
2727
2881
  */
2728
- narration: string;
2882
+ type: string;
2729
2883
  /**
2730
- * Payee name
2884
+ * Life event description. May be an empty string (a valid value distinct from absence).
2731
2885
  */
2732
- payee?: string;
2886
+ description: string;
2733
2887
  /**
2734
- * Inferred category from rule matching
2888
+ * Product-side metadata (free-form JSON)
2735
2889
  */
2736
- category?: string;
2890
+ meta: {
2891
+ [key: string]: unknown;
2892
+ };
2737
2893
  /**
2738
- * Confidence score for the match (0-1)
2894
+ * Creation timestamp
2739
2895
  */
2740
- confidence?: number;
2896
+ createdAt: string;
2741
2897
  /**
2742
- * Type of branch requiring review
2898
+ * Last update timestamp. Also emitted as the ETag response header for If-Match optimistic concurrency.
2743
2899
  */
2744
- branchType?: 'DUPLICATE' | 'PAYEE_MATCH' | 'RULE_MATCH' | 'ACCOUNT_VALIDATION' | 'PIPELINE_ERROR';
2900
+ updatedAt: string;
2901
+ };
2902
+ type EventListResponseDto = {
2745
2903
  /**
2746
- * Human-readable reasons for requiring review
2904
+ * List of life events
2747
2905
  */
2748
- reasons?: Array<string>;
2749
- };
2750
- /**
2751
- * Type of branch requiring review
2752
- */
2753
- type branchType = 'DUPLICATE' | 'PAYEE_MATCH' | 'RULE_MATCH' | 'ACCOUNT_VALIDATION' | 'PIPELINE_ERROR';
2754
- type ImportResultDto = {
2906
+ items: Array<EventResponseDto>;
2755
2907
  /**
2756
- * Number of successfully imported transactions
2908
+ * Total number of life events matching the query
2757
2909
  */
2758
- imported: number;
2910
+ total: number;
2911
+ };
2912
+ type UpdateBeanEventDto = {
2759
2913
  /**
2760
- * Number of failed transactions
2914
+ * Life event date (ISO 8601)
2761
2915
  */
2762
- failed: number;
2916
+ date?: string;
2763
2917
  /**
2764
- * Number of skipped transactions (high confidence duplicates, auto-skipped)
2918
+ * Life event type (user-defined)
2765
2919
  */
2766
- skipped: number;
2920
+ type?: string;
2767
2921
  /**
2768
- * Number of transactions pending review (medium confidence duplicates)
2922
+ * Life event description. Empty string is a VALID value (distinct from absence).
2769
2923
  */
2770
- pendingReview: number;
2924
+ description?: string;
2771
2925
  /**
2772
- * Array of error details for failed transactions
2926
+ * Product-side metadata (free-form JSON)
2927
+ */
2928
+ meta?: {
2929
+ [key: string]: unknown;
2930
+ };
2931
+ };
2932
+ type OnboardingAccountDto = {
2933
+ /**
2934
+ * Account path (Assets/Liabilities only; format validated by the account service)
2935
+ */
2936
+ path: string;
2937
+ /**
2938
+ * ISO 4217 currency code (3 letters)
2939
+ */
2940
+ currency: string;
2941
+ /**
2942
+ * Opening balance as a non-negative Decimal string (e.g. "1000.00")
2943
+ */
2944
+ openingBalance?: string;
2945
+ /**
2946
+ * Platform ID to bind the account to (references Platform.id); omit for unbound
2947
+ */
2948
+ platformId?: string;
2949
+ };
2950
+ type OnboardingDto = {
2951
+ /**
2952
+ * Asset/Liability accounts to register with opening balances
2953
+ */
2954
+ accounts?: Array<OnboardingAccountDto>;
2955
+ /**
2956
+ * Skip asset registration; only bootstrap the core account set
2957
+ */
2958
+ skipAssetRegistration?: boolean;
2959
+ };
2960
+ type ActualBalanceDto = {
2961
+ /**
2962
+ * Actual balance amount as a decimal string (preserves precision for tolerance inference).
2963
+ */
2964
+ amount: string;
2965
+ /**
2966
+ * Currency code (ISO 4217 or commodity ticker).
2967
+ */
2968
+ ccy: string;
2969
+ };
2970
+ type ComputeReconciliationDto = {
2971
+ /**
2972
+ * BeanAccount id to reconcile.
2973
+ */
2974
+ accountId: string;
2975
+ /**
2976
+ * Assertion date (ISO 8601, e.g. "2026-07-24").
2977
+ */
2978
+ asOfDate: string;
2979
+ /**
2980
+ * Actual balance from the external statement.
2981
+ */
2982
+ actualBalance: ActualBalanceDto;
2983
+ };
2984
+ type ReconciliationComputeResultDto = {
2985
+ accountId: string;
2986
+ asOfDate: string;
2987
+ /**
2988
+ * System-computed book balance (decimal string).
2989
+ */
2990
+ bookBalance: string;
2991
+ /**
2992
+ * User-entered actual balance (decimal string).
2993
+ */
2994
+ actualBalance: string;
2995
+ currency: string;
2996
+ /**
2997
+ * Diff = book − actual (decimal string).
2998
+ */
2999
+ diff: string;
3000
+ /**
3001
+ * Applied tolerance (decimal string).
3002
+ */
3003
+ tolerance: string;
3004
+ /**
3005
+ * true when |diff| ≤ tolerance.
3006
+ */
3007
+ withinTolerance: boolean;
3008
+ /**
3009
+ * Suggested next action: assert when within tolerance, pad otherwise.
3010
+ */
3011
+ suggestedAction: 'assert' | 'pad';
3012
+ };
3013
+ /**
3014
+ * Suggested next action: assert when within tolerance, pad otherwise.
3015
+ */
3016
+ type suggestedAction = 'assert' | 'pad';
3017
+ type AssertReconciliationDto = {
3018
+ /**
3019
+ * BeanAccount id to reconcile.
3020
+ */
3021
+ accountId: string;
3022
+ /**
3023
+ * Assertion date (ISO 8601, e.g. "2026-07-24").
3024
+ */
3025
+ asOfDate: string;
3026
+ /**
3027
+ * Actual balance from the external statement.
3028
+ */
3029
+ actualBalance: ActualBalanceDto;
3030
+ /**
3031
+ * Optional explicit tolerance override. Omit to infer from amount precision (Beancount default).
3032
+ */
3033
+ tolerance?: string;
3034
+ };
3035
+ type ReconciliationRecordDto = {
3036
+ id: string;
3037
+ accountId: string;
3038
+ date: string;
3039
+ /**
3040
+ * Asserted (actual) amount.
3041
+ */
3042
+ amount: string;
3043
+ currency: string;
3044
+ tolerance?: string;
3045
+ /**
3046
+ * book − actual.
3047
+ */
3048
+ diffAmount?: string;
3049
+ diffCurrency?: string;
3050
+ createdAt: string;
3051
+ };
3052
+ type PadReconciliationDto = {
3053
+ /**
3054
+ * BeanAccount id to reconcile.
3055
+ */
3056
+ accountId: string;
3057
+ /**
3058
+ * Assertion date (ISO 8601, e.g. "2026-07-24").
3059
+ */
3060
+ asOfDate: string;
3061
+ /**
3062
+ * Actual balance from the external statement.
3063
+ */
3064
+ actualBalance: ActualBalanceDto;
3065
+ /**
3066
+ * Pad source account. Defaults to Equity:Opening-Balances (official Beancount convention).
3067
+ */
3068
+ sourceAccount?: string;
3069
+ };
3070
+ type PadResultDto = {
3071
+ /**
3072
+ * Created pad adjusting transaction id.
3073
+ */
3074
+ transactionId: string;
3075
+ };
3076
+ type FileImportDto = {
3077
+ /**
3078
+ * Bill file to import (CSV, PDF, OFX, etc.)
3079
+ */
3080
+ file: Blob | File;
3081
+ };
3082
+ type ImportErrorDto = {
3083
+ /**
3084
+ * Index of failed transaction in the file
3085
+ */
3086
+ index: number;
3087
+ /**
3088
+ * Error message
3089
+ */
3090
+ error: string;
3091
+ };
3092
+ type ReviewItemPreviewDto = {
3093
+ /**
3094
+ * Index in the import batch (for tracking)
3095
+ */
3096
+ index: number;
3097
+ /**
3098
+ * Transaction date (ISO format)
3099
+ */
3100
+ date: string;
3101
+ /**
3102
+ * Transaction amount (absolute value)
3103
+ */
3104
+ amount?: number;
3105
+ /**
3106
+ * Currency code
3107
+ */
3108
+ currency?: string;
3109
+ /**
3110
+ * Transaction narration/description
3111
+ */
3112
+ narration: string;
3113
+ /**
3114
+ * Payee name
3115
+ */
3116
+ payee?: string;
3117
+ /**
3118
+ * Inferred category from rule matching
3119
+ */
3120
+ category?: string;
3121
+ /**
3122
+ * Confidence score for the match (0-1)
3123
+ */
3124
+ confidence?: number;
3125
+ /**
3126
+ * Type of branch requiring review
3127
+ */
3128
+ branchType?: 'DUPLICATE' | 'PAYEE_MATCH' | 'RULE_MATCH' | 'ACCOUNT_VALIDATION' | 'PIPELINE_ERROR';
3129
+ /**
3130
+ * Human-readable reasons for requiring review
3131
+ */
3132
+ reasons?: Array<string>;
3133
+ };
3134
+ /**
3135
+ * Type of branch requiring review
3136
+ */
3137
+ type branchType = 'DUPLICATE' | 'PAYEE_MATCH' | 'RULE_MATCH' | 'ACCOUNT_VALIDATION' | 'PIPELINE_ERROR';
3138
+ type ImportResultDto = {
3139
+ /**
3140
+ * Number of successfully imported transactions
3141
+ */
3142
+ imported: number;
3143
+ /**
3144
+ * Number of failed transactions
3145
+ */
3146
+ failed: number;
3147
+ /**
3148
+ * Number of skipped transactions (high confidence duplicates, auto-skipped)
3149
+ */
3150
+ skipped: number;
3151
+ /**
3152
+ * Number of transactions pending review (medium confidence duplicates)
3153
+ */
3154
+ pendingReview: number;
3155
+ /**
3156
+ * Array of error details for failed transactions
2773
3157
  */
2774
3158
  errors: Array<ImportErrorDto>;
2775
3159
  /**
2776
- * Array of transactions pending review with preview data. Contains essential information for displaying in the import preview UI.
3160
+ * Array of transactions pending review with preview data. Contains essential information for displaying in the import preview UI.
3161
+ */
3162
+ reviewItems?: Array<ReviewItemPreviewDto>;
3163
+ /**
3164
+ * Array of imported transactions (optional, for debugging)
3165
+ */
3166
+ transactions?: {
3167
+ [key: string]: unknown;
3168
+ };
3169
+ };
3170
+ type IdentifyResultDto = {
3171
+ /**
3172
+ * Whether the file was successfully identified
3173
+ */
3174
+ identified: boolean;
3175
+ /**
3176
+ * Name of the importer that can handle this file
3177
+ */
3178
+ importerName?: string;
3179
+ /**
3180
+ * Unique identifier of the importer
3181
+ */
3182
+ importerId?: string;
3183
+ /**
3184
+ * Default account used by this importer
3185
+ */
3186
+ account?: string;
3187
+ /**
3188
+ * Message when file cannot be identified
3189
+ */
3190
+ message?: string;
3191
+ };
3192
+ type MapperDefaultsDto = {
3193
+ /**
3194
+ * Source account for transactions (Beancount format)
3195
+ */
3196
+ sourceAccount: string;
3197
+ /**
3198
+ * Default currency (ISO 4217 code)
3199
+ */
3200
+ currency: string;
3201
+ /**
3202
+ * Default expense account
3203
+ */
3204
+ expenseAccount?: string;
3205
+ /**
3206
+ * Default income account
3207
+ */
3208
+ incomeAccount?: string;
3209
+ /**
3210
+ * Filename prefix to account mapping (for HK importers). Maps filename prefix to Beancount account path.
3211
+ */
3212
+ accountMapping?: {
3213
+ [key: string]: unknown;
3214
+ };
3215
+ /**
3216
+ * Convert CNY to CNH (offshore RMB) (for HK importers). Default: false.
3217
+ */
3218
+ useCnh?: boolean;
3219
+ /**
3220
+ * Payment method to source account mapping. Maps payment method keywords to Beancount account paths. Used by Alipay/WeChat importers to determine sourceAccount based on payment method (e.g., HuaBei, CreditCard).
3221
+ */
3222
+ methodAccountMapping?: {
3223
+ [key: string]: unknown;
3224
+ };
3225
+ };
3226
+ type ImporterConfigDataDto = {
3227
+ /**
3228
+ * Mapper defaults configuration
3229
+ */
3230
+ defaults: MapperDefaultsDto;
3231
+ };
3232
+ type VersionedConfigDto = {
3233
+ /**
3234
+ * Configuration version (semver)
3235
+ */
3236
+ version: string;
3237
+ /**
3238
+ * Configuration schema identifier
3239
+ */
3240
+ schema: string;
3241
+ /**
3242
+ * Configuration data
3243
+ */
3244
+ data: ImporterConfigDataDto;
3245
+ };
3246
+ type ImporterConfigDto = {
3247
+ /**
3248
+ * Configuration ID
3249
+ */
3250
+ id: string;
3251
+ /**
3252
+ * User ID
3253
+ */
3254
+ userId: string;
3255
+ /**
3256
+ * Importer identifier
3257
+ */
3258
+ importerId: 'alipay' | 'alipay-web' | 'alipay-yuebao' | 'wechat' | 'wechat-xlsx' | 'boc' | 'boc-credit' | 'ccb' | 'cmb' | 'cmbc' | 'cmbc-credit' | 'icbc' | 'icbc-credit' | 'hsbc-hk-credit' | 'hsbc-hk-debit';
3259
+ /**
3260
+ * Configuration version (semver)
3261
+ */
3262
+ version: string;
3263
+ /**
3264
+ * Configuration schema identifier
3265
+ */
3266
+ schema: string;
3267
+ /**
3268
+ * Configuration data (validated against Zod schema)
3269
+ */
3270
+ config: VersionedConfigDto;
3271
+ /**
3272
+ * Creation timestamp
3273
+ */
3274
+ createdAt: string;
3275
+ /**
3276
+ * Last update timestamp
3277
+ */
3278
+ updatedAt: string;
3279
+ };
3280
+ /**
3281
+ * Importer identifier
3282
+ */
3283
+ type importerId = 'alipay' | 'alipay-web' | 'alipay-yuebao' | 'wechat' | 'wechat-xlsx' | 'boc' | 'boc-credit' | 'ccb' | 'cmb' | 'cmbc' | 'cmbc-credit' | 'icbc' | 'icbc-credit' | 'hsbc-hk-credit' | 'hsbc-hk-debit';
3284
+ type UpdateMapperDefaultsDto = {
3285
+ /**
3286
+ * Source account for transactions (Beancount format)
3287
+ */
3288
+ sourceAccount?: string;
3289
+ /**
3290
+ * Default currency (ISO 4217 code)
3291
+ */
3292
+ currency?: string;
3293
+ /**
3294
+ * Default expense account (optional)
3295
+ */
3296
+ expenseAccount?: string;
3297
+ /**
3298
+ * Default income account (optional)
3299
+ */
3300
+ incomeAccount?: string;
3301
+ /**
3302
+ * Payment method to source account mapping. Maps payment method keywords to Beancount account paths. Used by Alipay/WeChat importers to determine sourceAccount based on payment method (e.g., HuaBei, CreditCard).
3303
+ */
3304
+ methodAccountMapping?: {
3305
+ [key: string]: unknown;
3306
+ };
3307
+ };
3308
+ type UpdateConfigDataDto = {
3309
+ /**
3310
+ * Mapper defaults configuration
3311
+ */
3312
+ defaults?: UpdateMapperDefaultsDto;
3313
+ };
3314
+ type UpdateImporterConfigDto = {
3315
+ /**
3316
+ * Configuration data (v1 schema)
3317
+ */
3318
+ data?: UpdateConfigDataDto;
3319
+ };
3320
+ type ProviderSyncConfigDto = {
3321
+ /**
3322
+ * Source account for the first posting
3323
+ */
3324
+ sourceAccount: string;
3325
+ /**
3326
+ * Default currency for transactions
3327
+ */
3328
+ defaultCurrency: string;
3329
+ /**
3330
+ * Default expense account for the second posting
3331
+ */
3332
+ defaultExpenseAccount: string;
3333
+ /**
3334
+ * Default income account for the second posting
3335
+ */
3336
+ defaultIncomeAccount: string;
3337
+ /**
3338
+ * Filter pending transactions
3339
+ */
3340
+ filterPending?: boolean;
3341
+ /**
3342
+ * External account ID for per-batch providers (e.g. GoCardless). Overrides sourceAccount when an ExternalAccountLink mapping exists.
3343
+ */
3344
+ externalAccountId?: string;
3345
+ };
3346
+ type ProviderSyncDto = {
3347
+ /**
3348
+ * Provider name (already in URL path, optional here for reference)
3349
+ */
3350
+ provider?: string;
3351
+ /**
3352
+ * Unique sync identifier for idempotency
3353
+ */
3354
+ syncId?: string;
3355
+ /**
3356
+ * Provider sync configuration
3357
+ */
3358
+ config: ProviderSyncConfigDto;
3359
+ /**
3360
+ * Raw transactions from provider
3361
+ */
3362
+ transactions: unknown[];
3363
+ };
3364
+ type ProviderSyncResponseDto = {
3365
+ /**
3366
+ * Number of transactions successfully imported
3367
+ */
3368
+ imported: number;
3369
+ /**
3370
+ * Number of transactions skipped (duplicates)
3371
+ */
3372
+ skipped: number;
3373
+ /**
3374
+ * Number of transactions pending review
3375
+ */
3376
+ pendingReview: number;
3377
+ /**
3378
+ * Number of transactions that failed to import
3379
+ */
3380
+ failed: number;
3381
+ /**
3382
+ * IDs of successfully imported transactions
3383
+ */
3384
+ importedTransactionIds?: Array<string>;
3385
+ /**
3386
+ * IDs of review items created for branched transactions
3387
+ */
3388
+ reviewItemIds?: Array<string>;
3389
+ };
3390
+ type SupportedProvidersResponseDto = {
3391
+ /**
3392
+ * List of supported provider names
3393
+ */
3394
+ providers: Array<string>;
3395
+ };
3396
+ type CreateExternalAccountLinkDto = {
3397
+ /**
3398
+ * Open Banking provider (whitelist)
3399
+ */
3400
+ provider: 'plaid' | 'teller' | 'truelayer' | 'gocardless' | 'simplefin' | 'yodlee' | 'beancount-direct' | 'parsed-bill';
3401
+ /**
3402
+ * External account ID from the provider
3403
+ */
3404
+ externalAccountId: string;
3405
+ /**
3406
+ * Target BeanAccount ID (must belong to the JWT user)
3407
+ */
3408
+ beanAccountId: string;
3409
+ };
3410
+ /**
3411
+ * Open Banking provider (whitelist)
3412
+ */
3413
+ type provider = 'plaid' | 'teller' | 'truelayer' | 'gocardless' | 'simplefin' | 'yodlee' | 'beancount-direct' | 'parsed-bill';
3414
+ type ExternalAccountLinkResponseDto = {
3415
+ id: string;
3416
+ provider: string;
3417
+ externalAccountId: string;
3418
+ beanAccountId: string;
3419
+ isActive: boolean;
3420
+ createdAt: string;
3421
+ updatedAt: string;
3422
+ };
3423
+ type ExternalAccountLinkListResponseDto = {
3424
+ items: Array<ExternalAccountLinkResponseDto>;
3425
+ total: number;
3426
+ /**
3427
+ * Filter by provider (query param)
3428
+ */
3429
+ provider?: string;
3430
+ };
3431
+ type ParserTelemetryReportDto = unknown;
3432
+ type UncoveredFormatMissDto = unknown;
3433
+ type ProcessNlpDto = {
3434
+ /**
3435
+ * Natural language text describing a transaction (Chinese)
3436
+ */
3437
+ message: string;
3438
+ /**
3439
+ * Session ID for multi-turn conversation (auto-generated if not provided)
3440
+ */
3441
+ sessionId?: string;
3442
+ /**
3443
+ * Parsed data from previous NLP response for session recovery. Send back the parsedData received in confirm_payee/confirm responses.
3444
+ */
3445
+ parsedData?: {
3446
+ [key: string]: unknown;
3447
+ };
3448
+ };
3449
+ type NlpTransactionInfoDto = {
3450
+ /**
3451
+ * Transaction ID
3452
+ */
3453
+ id: string;
3454
+ /**
3455
+ * Transaction date (ISO format)
3456
+ */
3457
+ date: string;
3458
+ /**
3459
+ * Transaction amount
3460
+ */
3461
+ amount: number;
3462
+ /**
3463
+ * Currency code
3464
+ */
3465
+ currency: string;
3466
+ /**
3467
+ * Payee name
3468
+ */
3469
+ payee?: string;
3470
+ /**
3471
+ * Transaction narration
3472
+ */
3473
+ narration?: string;
3474
+ /**
3475
+ * Warning message for special transaction scenarios (e.g., cross-currency settlement)
3476
+ */
3477
+ warning?: string;
3478
+ };
3479
+ type NlpParsedDataDto = {
3480
+ /**
3481
+ * Extracted amount
3482
+ */
3483
+ amount?: number;
3484
+ /**
3485
+ * Currency code
3486
+ */
3487
+ currency?: string;
3488
+ /**
3489
+ * Transaction date (ISO format)
3490
+ */
3491
+ date?: string;
3492
+ /**
3493
+ * Payee name
3494
+ */
3495
+ payee?: string;
3496
+ /**
3497
+ * Transaction narration
3498
+ */
3499
+ narration?: string;
3500
+ /**
3501
+ * Category
3502
+ */
3503
+ category?: string;
3504
+ /**
3505
+ * Income type (e.g., Salary, Bonus, Dividend, Interest)
3506
+ */
3507
+ incomeType?: string;
3508
+ /**
3509
+ * Income source (e.g., company name)
3510
+ */
3511
+ incomeSource?: string;
3512
+ /**
3513
+ * Security symbol code (e.g., 600519, AAPL)
3514
+ */
3515
+ symbol?: string;
3516
+ /**
3517
+ * Quantity of shares/units
3518
+ */
3519
+ quantity?: number;
3520
+ /**
3521
+ * Unit price per share/unit
3522
+ */
3523
+ price?: number;
3524
+ /**
3525
+ * Investment action
3526
+ */
3527
+ investmentAction?: 'buy' | 'sell';
3528
+ /**
3529
+ * Payment source: asset (default) or liability (credit card)
3530
+ */
3531
+ paymentSource?: 'asset' | 'liability';
3532
+ /**
3533
+ * Liability account hint (CreditCard/Huabei/Baitiao)
3534
+ */
3535
+ liabilityHint?: string;
3536
+ /**
3537
+ * Warning message for special scenarios (e.g., cross-currency settlement)
3538
+ */
3539
+ warning?: string;
3540
+ };
3541
+ /**
3542
+ * Investment action
3543
+ */
3544
+ type investmentAction = 'buy' | 'sell';
3545
+ /**
3546
+ * Payment source: asset (default) or liability (credit card)
3547
+ */
3548
+ type paymentSource = 'asset' | 'liability';
3549
+ type NlpSourceTransactionDto = {
3550
+ /**
3551
+ * Transaction date (ISO format)
3552
+ */
3553
+ date: string;
3554
+ /**
3555
+ * Amount as string
3556
+ */
3557
+ amount: string;
3558
+ /**
3559
+ * Currency code
3560
+ */
3561
+ currency: string;
3562
+ /**
3563
+ * Payee name
3564
+ */
3565
+ payee?: string;
3566
+ /**
3567
+ * Transaction narration
3568
+ */
3569
+ narration: string;
3570
+ };
3571
+ type NlpTargetTransactionDto = {
3572
+ /**
3573
+ * Existing transaction ID
3574
+ */
3575
+ id: string;
3576
+ /**
3577
+ * Transaction date (ISO format)
3578
+ */
3579
+ date: string;
3580
+ /**
3581
+ * Amount as string
3582
+ */
3583
+ amount: string;
3584
+ /**
3585
+ * Currency code
3586
+ */
3587
+ currency: string;
3588
+ /**
3589
+ * Payee name
3590
+ */
3591
+ payee?: string;
3592
+ /**
3593
+ * Transaction narration
3594
+ */
3595
+ narration: string;
3596
+ };
3597
+ type NlpSimilarityDto = {
3598
+ /**
3599
+ * Whether dates match
3600
+ */
3601
+ dateMatch: boolean;
3602
+ /**
3603
+ * Date difference in days
3604
+ */
3605
+ dateDiff: number;
3606
+ /**
3607
+ * Whether amounts match
3608
+ */
3609
+ amountMatch: boolean;
3610
+ /**
3611
+ * Amount difference as decimal string
3612
+ */
3613
+ amountDiff: string;
3614
+ /**
3615
+ * Whether payees match
3616
+ */
3617
+ payeeMatch: boolean;
3618
+ /**
3619
+ * Payee similarity score (0-1)
3620
+ */
3621
+ payeeSimilarity: number;
3622
+ /**
3623
+ * Account overlap score (0-1)
3624
+ */
3625
+ accountOverlap: number;
3626
+ };
3627
+ type NlpDuplicateConfirmationDataDto = {
3628
+ /**
3629
+ * Duplicate detection confidence score (0.5-0.89)
3630
+ */
3631
+ confidence: number;
3632
+ /**
3633
+ * Source transaction summary (the new transaction being entered)
3634
+ */
3635
+ sourceTransaction: NlpSourceTransactionDto;
3636
+ /**
3637
+ * Target transaction summary (existing potential duplicate)
3638
+ */
3639
+ targetTransaction: NlpTargetTransactionDto;
3640
+ /**
3641
+ * Detailed similarity information
3642
+ */
3643
+ similarity: NlpSimilarityDto;
3644
+ /**
3645
+ * Human-readable reasons for duplicate detection
3646
+ */
3647
+ reasons: Array<string>;
3648
+ };
3649
+ type NlpRuleConfirmationDataDto = {
3650
+ /**
3651
+ * Rule match confidence score (0.5-0.74)
3652
+ */
3653
+ confidence: number;
3654
+ /**
3655
+ * Matched rule information
3656
+ */
3657
+ matchedRule: {
3658
+ [key: string]: unknown;
3659
+ };
3660
+ /**
3661
+ * Suggested accounts from the rule
3662
+ */
3663
+ suggestedAccounts: {
3664
+ [key: string]: unknown;
3665
+ };
3666
+ /**
3667
+ * Alternative rules that also match
3668
+ */
3669
+ alternatives: unknown[];
3670
+ /**
3671
+ * Human-readable reasons for the match
3672
+ */
3673
+ reasons: Array<string>;
3674
+ };
3675
+ type NlpAccountConfirmationDataDto = {
3676
+ /**
3677
+ * The invalid account name
3678
+ */
3679
+ invalidAccount: string;
3680
+ /**
3681
+ * Suggested replacement account
3682
+ */
3683
+ suggestedAccount: string;
3684
+ /**
3685
+ * Similar accounts for user selection
3686
+ */
3687
+ similarAccounts: Array<string>;
3688
+ /**
3689
+ * Error message explaining the issue
3690
+ */
3691
+ errorMessage: string;
3692
+ /**
3693
+ * Transaction context for reference
3694
+ */
3695
+ transactionContext: {
3696
+ [key: string]: unknown;
3697
+ };
3698
+ };
3699
+ type NlpSuggestedPayeeDto = {
3700
+ /**
3701
+ * Payee ID
3702
+ */
3703
+ id: string;
3704
+ /**
3705
+ * Payee name
3706
+ */
3707
+ name: string;
3708
+ /**
3709
+ * Payee category
3710
+ */
3711
+ category?: string;
3712
+ /**
3713
+ * Source of the payee
3714
+ */
3715
+ source?: 'user' | 'global';
3716
+ /**
3717
+ * PayeeProfile ID (if matched from global)
3718
+ */
3719
+ payeeProfileId?: string;
3720
+ };
3721
+ /**
3722
+ * Source of the payee
3723
+ */
3724
+ type source = 'user' | 'global';
3725
+ type NlpAlternativePayeeDto = {
3726
+ /**
3727
+ * Payee ID
3728
+ */
3729
+ id: string;
3730
+ /**
3731
+ * Payee name
3732
+ */
3733
+ name: string;
3734
+ /**
3735
+ * Similarity score (0-1)
3736
+ */
3737
+ similarity: number;
3738
+ };
3739
+ type NlpPayeeConfirmationDataDto = {
3740
+ /**
3741
+ * Confidence score for the payee match (0-1)
3742
+ */
3743
+ confidence: number;
3744
+ /**
3745
+ * Original payee string from user input
3746
+ */
3747
+ originalPayee: string;
3748
+ /**
3749
+ * Suggested payee to use (null when no similar payees found)
3750
+ */
3751
+ suggestedPayee?: NlpSuggestedPayeeDto | null;
3752
+ /**
3753
+ * Similarity score between original and suggested (0-1)
3754
+ */
3755
+ similarity: number;
3756
+ /**
3757
+ * Alternative payee options
3758
+ */
3759
+ alternatives: Array<NlpAlternativePayeeDto>;
3760
+ /**
3761
+ * Human-readable reasons for the match
3762
+ */
3763
+ reasons: Array<string>;
3764
+ };
3765
+ type RecurringMatchInfoDto = {
3766
+ /**
3767
+ * Expected transaction ID
3768
+ */
3769
+ expectedId: string;
3770
+ /**
3771
+ * Recurring rule ID
3772
+ */
3773
+ ruleId: string;
3774
+ /**
3775
+ * Rule name for display
3776
+ */
3777
+ ruleName: string;
3778
+ /**
3779
+ * Rule icon
3780
+ */
3781
+ ruleIcon?: string;
3782
+ /**
3783
+ * Expected date (YYYY-MM-DD)
3784
+ */
3785
+ expectedDate: string;
3786
+ /**
3787
+ * Expected amount
3788
+ */
3789
+ expectedAmount: number;
3790
+ /**
3791
+ * Match confidence score (0-1)
3792
+ */
3793
+ confidence: number;
3794
+ /**
3795
+ * Whether auto-matched (confidence >= 0.82)
3796
+ */
3797
+ isAutoMatched: boolean;
3798
+ };
3799
+ type NlpSuggestedAccountDto = {
3800
+ /**
3801
+ * Suggested account path
3802
+ */
3803
+ account: string;
3804
+ /**
3805
+ * Confidence score for this suggestion (0-1)
3806
+ */
3807
+ confidence?: number;
3808
+ };
3809
+ type NlpSuggestedAccountsDto = {
3810
+ /**
3811
+ * Source account suggestion (where money comes from). For expense: asset/liability account. For income: income account.
3812
+ */
3813
+ source?: NlpSuggestedAccountDto;
3814
+ /**
3815
+ * Destination account suggestion (where money goes to). For expense: expense account. For income: asset/liability account.
3816
+ */
3817
+ destination?: NlpSuggestedAccountDto;
3818
+ };
3819
+ type NlpDefaultAccountsDto = {
3820
+ /**
3821
+ * Default asset account
2777
3822
  */
2778
- reviewItems?: Array<ReviewItemPreviewDto>;
3823
+ asset: string;
2779
3824
  /**
2780
- * Array of imported transactions (optional, for debugging)
3825
+ * Default expense account
2781
3826
  */
2782
- transactions?: {
2783
- [key: string]: unknown;
2784
- };
3827
+ expense: string;
3828
+ /**
3829
+ * Default income account
3830
+ */
3831
+ income: string;
3832
+ /**
3833
+ * Default liability account
3834
+ */
3835
+ liability: string;
2785
3836
  };
2786
- type IdentifyResultDto = {
3837
+ type NlpResponseDto = {
2787
3838
  /**
2788
- * Whether the file was successfully identified
3839
+ * Response status
2789
3840
  */
2790
- identified: boolean;
3841
+ status: 'success' | 'pending' | 'error';
2791
3842
  /**
2792
- * Name of the importer that can handle this file
3843
+ * Action taken or requested
2793
3844
  */
2794
- importerName?: string;
3845
+ action: 'created' | 'ask' | 'confirm' | 'confirm_duplicate' | 'confirm_rule' | 'confirm_account' | 'confirm_payee' | 'cancel';
2795
3846
  /**
2796
- * Unique identifier of the importer
3847
+ * Transaction intent detected by EntityRouter (v6.0: 5 core intents). Frontend uses this to render scenario-specific form fields.
2797
3848
  */
2798
- importerId?: string;
3849
+ intent?: 'expense' | 'asset' | 'income' | 'liability' | 'equity';
2799
3850
  /**
2800
- * Default account used by this importer
3851
+ * Asset sub-type (only present when intent is "asset"). Determines which asset-related form to render.
2801
3852
  */
2802
- account?: string;
3853
+ assetSubType?: 'transfer' | 'banking' | 'investment';
2803
3854
  /**
2804
- * Message when file cannot be identified
3855
+ * Liability sub-type (only present when intent is "liability"). borrow: borrowing money (Liabilities → Assets), repay: repaying debt (Assets → Liabilities).
2805
3856
  */
2806
- message?: string;
2807
- };
2808
- type MapperDefaultsDto = {
3857
+ liabilitySubType?: 'borrow' | 'repay';
2809
3858
  /**
2810
- * Source account for transactions (Beancount format)
3859
+ * Equity sub-type (only present when intent is "equity"). opening: account opening balance (Equity → Assets), adjustment: balance correction.
2811
3860
  */
2812
- sourceAccount: string;
3861
+ equitySubType?: 'opening' | 'adjustment';
2813
3862
  /**
2814
- * Default currency (ISO 4217 code)
3863
+ * Payment source for expense transactions (v6.1). Indicates whether payment comes from asset or liability account. Only present when intent is "expense".
2815
3864
  */
2816
- currency: string;
3865
+ paymentSource?: 'asset' | 'liability';
2817
3866
  /**
2818
- * Default expense account
3867
+ * Liability account type hint for credit card/BNPL spending (v6.1). Only present when paymentSource is "liability". Values: CreditCard, Huabei, Baitiao
2819
3868
  */
2820
- expenseAccount?: string;
3869
+ liabilityHint?: string;
2821
3870
  /**
2822
- * Default income account
3871
+ * Human-readable message (for ask or error actions). Deprecated: Use messageKey for i18n support.
3872
+ * @deprecated
2823
3873
  */
2824
- incomeAccount?: string;
3874
+ message?: string;
2825
3875
  /**
2826
- * Filename prefix to account mapping (for HK importers). Maps filename prefix to Beancount account path.
3876
+ * i18n message key for frontend translation. Use this instead of message for internationalization support.
2827
3877
  */
2828
- accountMapping?: {
3878
+ messageKey?: string;
3879
+ /**
3880
+ * Parameters for message interpolation. Used with messageKey for dynamic values in translated messages.
3881
+ */
3882
+ messageParams?: {
2829
3883
  [key: string]: unknown;
2830
3884
  };
2831
3885
  /**
2832
- * Convert CNY to CNH (offshore RMB) (for HK importers). Default: false.
3886
+ * Session ID for multi-turn dialogue. Must be included in subsequent requests to continue the conversation.
2833
3887
  */
2834
- useCnh?: boolean;
3888
+ sessionId?: string;
2835
3889
  /**
2836
- * Payment method to source account mapping. Maps payment method keywords to Beancount account paths. Used by Alipay/WeChat importers to determine sourceAccount based on payment method (e.g., HuaBei, CreditCard).
3890
+ * Which slot is waiting for user input
2837
3891
  */
2838
- methodAccountMapping?: {
2839
- [key: string]: unknown;
2840
- };
2841
- };
2842
- type ImporterConfigDataDto = {
3892
+ waitingFor?: string;
2843
3893
  /**
2844
- * Mapper defaults configuration
3894
+ * Created transaction info (for created action)
2845
3895
  */
2846
- defaults: MapperDefaultsDto;
2847
- };
2848
- type VersionedConfigDto = {
3896
+ transaction?: NlpTransactionInfoDto;
2849
3897
  /**
2850
- * Configuration version (semver)
3898
+ * Parsed data for confirmation (when action is "confirm"). Contains extracted fields that user should verify before transaction creation.
2851
3899
  */
2852
- version: string;
3900
+ parsedData?: NlpParsedDataDto;
2853
3901
  /**
2854
- * Configuration schema identifier
3902
+ * Duplicate detection data (when action is "confirm_duplicate"). Contains information about potential duplicate transaction for user confirmation.
2855
3903
  */
2856
- schema: string;
3904
+ duplicateData?: NlpDuplicateConfirmationDataDto;
2857
3905
  /**
2858
- * Configuration data
3906
+ * Rule match data (when action is "confirm_rule"). Contains information about medium-confidence rule match for user confirmation.
2859
3907
  */
2860
- data: ImporterConfigDataDto;
3908
+ ruleData?: NlpRuleConfirmationDataDto;
3909
+ /**
3910
+ * Account validation data (when action is "confirm_account"). Contains information about invalid account for user correction.
3911
+ */
3912
+ accountData?: NlpAccountConfirmationDataDto;
3913
+ /**
3914
+ * Payee confirmation data (when action is "confirm_payee"). Contains information about medium/low confidence payee match for user confirmation.
3915
+ */
3916
+ payeeData?: NlpPayeeConfirmationDataDto;
3917
+ /**
3918
+ * Overall confidence score (0-1)
3919
+ */
3920
+ confidence?: number;
3921
+ /**
3922
+ * Confidence threshold for automatic creation (default: 0.75). When confidence < threshold, action will be "confirm" requiring user verification.
3923
+ */
3924
+ confidenceThreshold?: number;
3925
+ /**
3926
+ * Recurring transaction match info (when action is "created"). Contains match details when transaction matches a pending expected transaction.
3927
+ */
3928
+ recurringMatch?: RecurringMatchInfoDto;
3929
+ /**
3930
+ * Recurring rule creation suggestion (when action is "created"). Contains suggestion to create a recurring rule based on detected patterns. Only present when no existing rule matched and similar historical transactions were found.
3931
+ */
3932
+ recurringSuggestion?: RecurringSuggestionDto;
3933
+ /**
3934
+ * Suggested accounts for this transaction. Contains recommended source and destination accounts based on the detected intent and rules.
3935
+ */
3936
+ suggestedAccounts?: NlpSuggestedAccountsDto;
3937
+ /**
3938
+ * Default accounts for the user/region. These are fallback accounts used when no specific suggestion is available.
3939
+ */
3940
+ defaultAccounts?: NlpDefaultAccountsDto;
2861
3941
  };
2862
- type ImporterConfigDto = {
3942
+ /**
3943
+ * Response status
3944
+ */
3945
+ type status4 = 'success' | 'pending' | 'error';
3946
+ /**
3947
+ * Action taken or requested
3948
+ */
3949
+ type action2 = 'created' | 'ask' | 'confirm' | 'confirm_duplicate' | 'confirm_rule' | 'confirm_account' | 'confirm_payee' | 'cancel';
3950
+ /**
3951
+ * Transaction intent detected by EntityRouter (v6.0: 5 core intents). Frontend uses this to render scenario-specific form fields.
3952
+ */
3953
+ type intent = 'expense' | 'asset' | 'income' | 'liability' | 'equity';
3954
+ /**
3955
+ * Asset sub-type (only present when intent is "asset"). Determines which asset-related form to render.
3956
+ */
3957
+ type assetSubType = 'transfer' | 'banking' | 'investment';
3958
+ /**
3959
+ * Liability sub-type (only present when intent is "liability"). borrow: borrowing money (Liabilities → Assets), repay: repaying debt (Assets → Liabilities).
3960
+ */
3961
+ type liabilitySubType = 'borrow' | 'repay';
3962
+ /**
3963
+ * Equity sub-type (only present when intent is "equity"). opening: account opening balance (Equity → Assets), adjustment: balance correction.
3964
+ */
3965
+ type equitySubType = 'opening' | 'adjustment';
3966
+ type PlatformListItemDto = {
2863
3967
  /**
2864
- * Configuration ID
3968
+ * Global platform ID
2865
3969
  */
2866
3970
  id: string;
2867
3971
  /**
2868
- * User ID
3972
+ * Platform name
2869
3973
  */
2870
- userId: string;
3974
+ name: string;
2871
3975
  /**
2872
- * Importer identifier
3976
+ * Platform URL
2873
3977
  */
2874
- importerId: 'alipay' | 'alipay-web' | 'alipay-yuebao' | 'wechat' | 'wechat-xlsx' | 'boc' | 'boc-credit' | 'ccb' | 'cmb' | 'cmbc' | 'cmbc-credit' | 'icbc' | 'icbc-credit' | 'hsbc-hk-credit' | 'hsbc-hk-debit';
3978
+ url: string;
2875
3979
  /**
2876
- * Configuration version (semver)
3980
+ * Platform type
2877
3981
  */
2878
- version: string;
3982
+ type: 'BANK' | 'BROKERAGE' | 'CRYPTO_EXCHANGE' | 'PAYMENT' | 'INVESTMENT' | 'INSURANCE' | 'OTHER';
2879
3983
  /**
2880
- * Configuration schema identifier
3984
+ * Canonical identifier in ACCOUNT_RE format (e.g., "icbc")
2881
3985
  */
2882
- schema: string;
3986
+ canonical: string;
2883
3987
  /**
2884
- * Configuration data (validated against Zod schema)
3988
+ * Suggested path segment canonical with first char uppercased (ACC_COMP_NAME_RE)
2885
3989
  */
2886
- config: VersionedConfigDto;
3990
+ suggestedSegment: string;
2887
3991
  /**
2888
- * Creation timestamp
3992
+ * Logo URL
2889
3993
  */
2890
- createdAt: string;
3994
+ logoUrl: string | null;
2891
3995
  /**
2892
- * Last update timestamp
3996
+ * Whether user has accounts using this platform
2893
3997
  */
2894
- updatedAt: string;
3998
+ isBound: boolean;
2895
3999
  };
2896
4000
  /**
2897
- * Importer identifier
4001
+ * Platform type
2898
4002
  */
2899
- type importerId = 'alipay' | 'alipay-web' | 'alipay-yuebao' | 'wechat' | 'wechat-xlsx' | 'boc' | 'boc-credit' | 'ccb' | 'cmb' | 'cmbc' | 'cmbc-credit' | 'icbc' | 'icbc-credit' | 'hsbc-hk-credit' | 'hsbc-hk-debit';
2900
- type UpdateMapperDefaultsDto = {
4003
+ type type3 = 'BANK' | 'BROKERAGE' | 'CRYPTO_EXCHANGE' | 'PAYMENT' | 'INVESTMENT' | 'INSURANCE' | 'OTHER';
4004
+ type PlatformMatchResultDto = {
2901
4005
  /**
2902
- * Source account for transactions (Beancount format)
4006
+ * Global platform ID
2903
4007
  */
2904
- sourceAccount?: string;
4008
+ id: string;
2905
4009
  /**
2906
- * Default currency (ISO 4217 code)
4010
+ * Platform name (e.g., "ICBC")
2907
4011
  */
2908
- currency?: string;
4012
+ name: string;
2909
4013
  /**
2910
- * Default expense account (optional)
4014
+ * Canonical identifier in ACCOUNT_RE format (e.g., "icbc")
2911
4015
  */
2912
- expenseAccount?: string;
4016
+ canonical: string;
2913
4017
  /**
2914
- * Default income account (optional)
4018
+ * Platform type
2915
4019
  */
2916
- incomeAccount?: string;
4020
+ type: 'BANK' | 'BROKERAGE' | 'CRYPTO_EXCHANGE' | 'PAYMENT' | 'INVESTMENT' | 'INSURANCE' | 'OTHER';
2917
4021
  /**
2918
- * Payment method to source account mapping. Maps payment method keywords to Beancount account paths. Used by Alipay/WeChat importers to determine sourceAccount based on payment method (e.g., HuaBei, CreditCard).
4022
+ * Suggested path segment canonical, already in ACCOUNT_RE format
2919
4023
  */
2920
- methodAccountMapping?: {
2921
- [key: string]: unknown;
2922
- };
2923
- };
2924
- type UpdateConfigDataDto = {
4024
+ suggestedSegment: string;
2925
4025
  /**
2926
- * Mapper defaults configuration
4026
+ * Logo URL
2927
4027
  */
2928
- defaults?: UpdateMapperDefaultsDto;
4028
+ logoUrl: string | null;
4029
+ /**
4030
+ * How this row matched: 'exact' > 'prefix' > 'substring'
4031
+ */
4032
+ matchType: 'exact' | 'prefix' | 'substring';
2929
4033
  };
2930
- type UpdateImporterConfigDto = {
4034
+ /**
4035
+ * How this row matched: 'exact' > 'prefix' > 'substring'
4036
+ */
4037
+ type matchType = 'exact' | 'prefix' | 'substring';
4038
+ type PlatformMatchResponseDto = {
2931
4039
  /**
2932
- * Configuration data (v1 schema)
4040
+ * Ranked matches, best tier first (at most 10 rows)
2933
4041
  */
2934
- data?: UpdateConfigDataDto;
4042
+ platforms: Array<PlatformMatchResultDto>;
4043
+ /**
4044
+ * Overall match quality — top row's tier, or 'none' when no hits
4045
+ */
4046
+ matchType: 'none' | 'exact' | 'prefix' | 'substring';
4047
+ /**
4048
+ * Total matches before LIMIT (truncation transparency)
4049
+ */
4050
+ total: number;
4051
+ /**
4052
+ * true when total > platforms.length (more matches exist)
4053
+ */
4054
+ hasMore: boolean;
2935
4055
  };
4056
+ /**
4057
+ * Overall match quality — top row's tier, or 'none' when no hits
4058
+ */
4059
+ type matchType2 = 'none' | 'exact' | 'prefix' | 'substring';
2936
4060
  type CreatePlatformDto = {
2937
4061
  /**
2938
4062
  * Platform name
@@ -2963,10 +4087,6 @@ type CreatePlatformDto = {
2963
4087
  */
2964
4088
  isActive?: boolean;
2965
4089
  };
2966
- /**
2967
- * Platform type
2968
- */
2969
- type type3 = 'BANK' | 'BROKERAGE' | 'CRYPTO_EXCHANGE' | 'PAYMENT' | 'INVESTMENT' | 'INSURANCE' | 'OTHER';
2970
4090
  type UpdatePlatformDto = {
2971
4091
  /**
2972
4092
  * Platform name
@@ -2997,80 +4117,6 @@ type UpdatePlatformDto = {
2997
4117
  */
2998
4118
  isActive?: boolean;
2999
4119
  };
3000
- type ProviderSyncConfigDto = {
3001
- /**
3002
- * Source account for the first posting
3003
- */
3004
- sourceAccount: string;
3005
- /**
3006
- * Default currency for transactions
3007
- */
3008
- defaultCurrency: string;
3009
- /**
3010
- * Default expense account for the second posting
3011
- */
3012
- defaultExpenseAccount: string;
3013
- /**
3014
- * Default income account for the second posting
3015
- */
3016
- defaultIncomeAccount: string;
3017
- /**
3018
- * Filter pending transactions
3019
- */
3020
- filterPending?: boolean;
3021
- };
3022
- type ProviderSyncDto = {
3023
- /**
3024
- * Provider name (already in URL path, optional here for reference)
3025
- */
3026
- provider?: string;
3027
- /**
3028
- * Unique sync identifier for idempotency
3029
- */
3030
- syncId?: string;
3031
- /**
3032
- * Provider sync configuration
3033
- */
3034
- config: ProviderSyncConfigDto;
3035
- /**
3036
- * Raw transactions from provider
3037
- */
3038
- transactions: unknown[];
3039
- };
3040
- type SupportedProvidersResponseDto = {
3041
- /**
3042
- * List of supported provider names
3043
- */
3044
- providers: Array<string>;
3045
- };
3046
- type ParserTelemetryReportDto = unknown;
3047
- type UncoveredFormatMissDto = unknown;
3048
- type ProcessNlpDto = {
3049
- /**
3050
- * Natural language text describing a transaction (Chinese)
3051
- */
3052
- message: string;
3053
- /**
3054
- * Session ID for multi-turn conversation (auto-generated if not provided)
3055
- */
3056
- sessionId?: string;
3057
- /**
3058
- * Parsed data from previous NLP response for session recovery. Send back the parsedData received in confirm_payee/confirm responses.
3059
- */
3060
- parsedData?: {
3061
- [key: string]: unknown;
3062
- };
3063
- };
3064
- type BalanceByCurrencyDto = {
3065
- /**
3066
- * ISO 4217 currency code
3067
- */
3068
- currency: string;
3069
- /**
3070
- * Balance amount
3071
- */
3072
- balance: string;
3073
- };
3074
4120
  type NetWorthByCurrencyDto = {
3075
4121
  /**
3076
4122
  * Net worth by currency
@@ -3109,20 +4155,6 @@ type ConvertedNetWorthDto = {
3109
4155
  [key: string]: unknown;
3110
4156
  };
3111
4157
  };
3112
- type ExchangeRateWarningDto = {
3113
- /**
3114
- * Warning type
3115
- */
3116
- type: string;
3117
- /**
3118
- * Currency without exchange rate
3119
- */
3120
- currency: string;
3121
- /**
3122
- * Total amount affected
3123
- */
3124
- totalAmount: string;
3125
- };
3126
4158
  type NetWorthResponseDto = {
3127
4159
  /**
3128
4160
  * Total net worth (assets - liabilities, converted to base currency)
@@ -3185,7 +4217,11 @@ type AccountItemDto = {
3185
4217
  /**
3186
4218
  * Currency code
3187
4219
  */
3188
- currency: string;
4220
+ currency: string;
4221
+ /**
4222
+ * FX-converted balance in base currency; omitted when not convertible
4223
+ */
4224
+ convertedBalance?: string;
3189
4225
  };
3190
4226
  type PlatformGroupDto = {
3191
4227
  /**
@@ -3201,9 +4237,39 @@ type PlatformGroupDto = {
3201
4237
  */
3202
4238
  accounts: Array<AccountItemDto>;
3203
4239
  /**
3204
- * Total balance across all accounts in platform
4240
+ * FX-converted total balance in base currency
3205
4241
  */
3206
4242
  totalBalance: string;
4243
+ /**
4244
+ * Raw (unconverted) balances grouped by currency
4245
+ */
4246
+ balanceByCurrency: Array<BalanceByCurrencyDto>;
4247
+ /**
4248
+ * Converted balance in base currency (omitted when no currency is convertible)
4249
+ */
4250
+ convertedBalance?: string;
4251
+ /**
4252
+ * Share of the grand converted total (0-100); 0 when grand total is 0
4253
+ */
4254
+ sharePct: number;
4255
+ };
4256
+ type AccountExchangeRateWarningDto = {
4257
+ /**
4258
+ * Warning type
4259
+ */
4260
+ type: string;
4261
+ /**
4262
+ * Currency without exchange rate
4263
+ */
4264
+ currency: string;
4265
+ /**
4266
+ * Affected account paths
4267
+ */
4268
+ accounts: Array<string>;
4269
+ /**
4270
+ * Total amount in this currency
4271
+ */
4272
+ totalAmount: string;
3207
4273
  };
3208
4274
  type AccountsSummaryDto = {
3209
4275
  /**
@@ -3214,6 +4280,14 @@ type AccountsSummaryDto = {
3214
4280
  * Total number of platforms
3215
4281
  */
3216
4282
  totalPlatforms: number;
4283
+ /**
4284
+ * Base currency for conversion
4285
+ */
4286
+ baseCurrency: string;
4287
+ /**
4288
+ * Per-account exchange rate warnings
4289
+ */
4290
+ warnings?: Array<AccountExchangeRateWarningDto>;
3217
4291
  };
3218
4292
  type AccountsResponseDto = {
3219
4293
  /**
@@ -3246,6 +4320,10 @@ type AccountItemWithAssetClassDto = {
3246
4320
  * Currency code
3247
4321
  */
3248
4322
  currency: string;
4323
+ /**
4324
+ * FX-converted balance in base currency; omitted when not convertible
4325
+ */
4326
+ convertedBalance?: string;
3249
4327
  /**
3250
4328
  * Asset class
3251
4329
  */
@@ -3270,7 +4348,7 @@ type AccountItemWithAssetClassDto = {
3270
4348
  /**
3271
4349
  * ADR-0105 classification provenance (holding level always; account level only on FALLBACK)
3272
4350
  */
3273
- type source = 'USER_META' | 'FIAT_CURRENCY' | 'OPENBB_MAPPING' | 'FALLBACK';
4351
+ type source2 = 'USER_META' | 'FIAT_CURRENCY' | 'OPENBB_MAPPING' | 'FALLBACK';
3274
4352
  type AssetClassGroupDto = {
3275
4353
  /**
3276
4354
  * Asset class name
@@ -3297,24 +4375,6 @@ type AssetClassGroupDto = {
3297
4375
  * Asset class name
3298
4376
  */
3299
4377
  type assetClass = 'LIQUIDITY' | 'EQUITY' | 'FIXED_INCOME' | 'PRECIOUS_METALS' | 'COMMODITY' | 'INSURANCE' | 'ALTERNATIVE_INVESTMENT' | 'PERSONAL_ASSETS' | 'LIABILITY' | 'REAL_ESTATE' | 'INDEX';
3300
- type AccountExchangeRateWarningDto = {
3301
- /**
3302
- * Warning type
3303
- */
3304
- type: string;
3305
- /**
3306
- * Currency without exchange rate
3307
- */
3308
- currency: string;
3309
- /**
3310
- * Affected account paths
3311
- */
3312
- accounts: Array<string>;
3313
- /**
3314
- * Total amount in this currency
3315
- */
3316
- totalAmount: string;
3317
- };
3318
4378
  type AssetClassSummaryDto = {
3319
4379
  /**
3320
4380
  * Total number of accounts
@@ -3473,6 +4533,60 @@ type CashFlowResponseDto = {
3473
4533
  */
3474
4534
  warnings?: Array<ExchangeRateWarningDto>;
3475
4535
  };
4536
+ type CategoryGroupDto = {
4537
+ /**
4538
+ * Functional category (account-path Group segment); regional and universal account paths merge under it
4539
+ */
4540
+ category: string;
4541
+ /**
4542
+ * Converted total for this category in base currency (expense amount when flow=expense, income amount when flow=income)
4543
+ */
4544
+ totalExpense: string;
4545
+ /**
4546
+ * Share of grand total (0-100); 0 when grand total is 0
4547
+ */
4548
+ sharePct: number;
4549
+ /**
4550
+ * Raw (unconverted) expense per currency
4551
+ */
4552
+ balanceByCurrency: Array<BalanceByCurrencyDto>;
4553
+ /**
4554
+ * Converted total in base currency (omitted when FX missing for all currencies in this category)
4555
+ */
4556
+ convertedBalance?: string;
4557
+ };
4558
+ type ExpensesByCategorySummaryDto = {
4559
+ /**
4560
+ * Total across all categories, converted (convertible categories only); expense totals when flow=expense, income totals when flow=income
4561
+ */
4562
+ totalExpense: string;
4563
+ /**
4564
+ * Number of categories
4565
+ */
4566
+ categoryCount: number;
4567
+ };
4568
+ type ExpensesByCategoryResponseDto = {
4569
+ /**
4570
+ * Period requested
4571
+ */
4572
+ period: string;
4573
+ /**
4574
+ * Base currency for converted values
4575
+ */
4576
+ baseCurrency: string;
4577
+ /**
4578
+ * Expense groups by functional category, sorted by converted total desc
4579
+ */
4580
+ groups: Array<CategoryGroupDto>;
4581
+ /**
4582
+ * Summary statistics
4583
+ */
4584
+ summary: ExpensesByCategorySummaryDto;
4585
+ /**
4586
+ * Exchange rate warnings (e.g. missing rate for a currency)
4587
+ */
4588
+ warnings?: Array<ExchangeRateWarningDto>;
4589
+ };
3476
4590
  type MonetaryDto = {
3477
4591
  /**
3478
4592
  * Amount (Decimal string)
@@ -3510,7 +4624,7 @@ type CurrentPriceDto = {
3510
4624
  /**
3511
4625
  * Price source
3512
4626
  */
3513
- type source2 = 'USER_OVERRIDE' | 'OPENBB_EQUITY' | 'OPENBB_CURRENCY';
4627
+ type source3 = 'USER_OVERRIDE' | 'OPENBB_EQUITY' | 'OPENBB_CURRENCY';
3514
4628
  type FxRateDto = {
3515
4629
  from: string;
3516
4630
  to: string;
@@ -3644,104 +4758,6 @@ type HoldingPnlResponseDto = {
3644
4758
  * Realized-P&L lot-matching method (FIFO or average). Unrealized cost basis remains average regardless of this value (#473).
3645
4759
  */
3646
4760
  type method = 'average' | 'FIFO';
3647
- type CreateBeanPriceDto = {
3648
- /**
3649
- * Currency being priced (e.g., USD, AAPL, BTC)
3650
- */
3651
- currency: string;
3652
- /**
3653
- * Quote currency (pricing currency, e.g., CNY, EUR)
3654
- */
3655
- quoteCurrency: string;
3656
- /**
3657
- * Price amount (MUST be >= 0 per Beancount spec, supports up to 15 decimal places). Zero allowed for conversion entries, negative strictly prohibited.
3658
- */
3659
- amount: number;
3660
- /**
3661
- * Price date (ISO 8601 format)
3662
- */
3663
- date: string;
3664
- /**
3665
- * Metadata (validated by Zod schema, max field lengths enforced)
3666
- */
3667
- metadata?: {
3668
- [key: string]: unknown;
3669
- };
3670
- };
3671
- type PriceResponseDto = {
3672
- /**
3673
- * Unique identifier
3674
- */
3675
- id: string;
3676
- /**
3677
- * User ID (owner of the price)
3678
- */
3679
- userId: string;
3680
- /**
3681
- * Currency being priced (e.g., USD, AAPL, BTC)
3682
- */
3683
- currency: string;
3684
- /**
3685
- * Quote currency (pricing currency, e.g., USD, CNY)
3686
- */
3687
- quoteCurrency: string;
3688
- /**
3689
- * Price amount (corresponds to Beancount Amount.number). Supports up to 15 decimal places.
3690
- */
3691
- amount: number;
3692
- /**
3693
- * Price date (ISO 8601 format). Represents the date this price was valid.
3694
- */
3695
- date: string;
3696
- /**
3697
- * Metadata (corresponds to Beancount meta field). Contains source, confidence, note, etc.
3698
- */
3699
- meta: {
3700
- [key: string]: unknown;
3701
- };
3702
- /**
3703
- * Creation timestamp
3704
- */
3705
- createdAt: string;
3706
- /**
3707
- * Last update timestamp
3708
- */
3709
- updatedAt: string;
3710
- };
3711
- type PriceListResponseDto = {
3712
- /**
3713
- * List of prices
3714
- */
3715
- items: Array<PriceResponseDto>;
3716
- /**
3717
- * Total number of prices
3718
- */
3719
- total: number;
3720
- };
3721
- type UpdateBeanPriceDto = {
3722
- /**
3723
- * Currency being priced
3724
- */
3725
- currency?: string;
3726
- /**
3727
- * Quote currency (pricing currency)
3728
- */
3729
- quoteCurrency?: string;
3730
- /**
3731
- * Price amount (MUST be >= 0 per Beancount spec)
3732
- */
3733
- amount?: number;
3734
- /**
3735
- * Price date (ISO 8601 format)
3736
- */
3737
- date?: string;
3738
- /**
3739
- * Metadata
3740
- */
3741
- metadata?: {
3742
- [key: string]: unknown;
3743
- };
3744
- };
3745
4761
  type CurrencyBalanceDto = {
3746
4762
  /**
3747
4763
  * ISO 4217 currency code
@@ -3767,6 +4783,14 @@ type TimeSeriesPointDto = {
3767
4783
  change?: {
3768
4784
  [key: string]: unknown;
3769
4785
  };
4786
+ /**
4787
+ * Total assets at this date (in base currency)
4788
+ */
4789
+ assets?: string;
4790
+ /**
4791
+ * Total liabilities at this date (in base currency)
4792
+ */
4793
+ liabilities?: string;
3770
4794
  /**
3771
4795
  * Multi-currency breakdown for this point
3772
4796
  */
@@ -3830,6 +4854,68 @@ type PortfolioTrendsResponseDto = {
3830
4854
  */
3831
4855
  warnings?: Array<ExchangeRateWarningDto>;
3832
4856
  };
4857
+ type CashFlowPointDto = {
4858
+ /**
4859
+ * Month key (YYYY-MM)
4860
+ */
4861
+ month: string;
4862
+ /**
4863
+ * Income in base currency (absolute, converted)
4864
+ */
4865
+ income: string;
4866
+ /**
4867
+ * Expense in base currency (absolute, converted)
4868
+ */
4869
+ expense: string;
4870
+ /**
4871
+ * netSavings = income − expense (savings positive)
4872
+ */
4873
+ netSavings: string;
4874
+ };
4875
+ type CashFlowTrendSummaryDto = {
4876
+ /**
4877
+ * Total income across the period
4878
+ */
4879
+ totalIncome: string;
4880
+ /**
4881
+ * Total expense across the period
4882
+ */
4883
+ totalExpense: string;
4884
+ /**
4885
+ * income − expense across the period
4886
+ */
4887
+ totalNetSavings: string;
4888
+ /**
4889
+ * totalNetSavings divided by the window length (N months, incl. zero-filled)
4890
+ */
4891
+ averageMonthlyNetSavings: string;
4892
+ };
4893
+ type CashFlowTrendsResponseDto = {
4894
+ /**
4895
+ * Monthly cash-flow series (fixed N-month window, zero-filled)
4896
+ */
4897
+ series: Array<CashFlowPointDto>;
4898
+ /**
4899
+ * Period totals
4900
+ */
4901
+ summary: CashFlowTrendSummaryDto;
4902
+ /**
4903
+ * Period requested
4904
+ */
4905
+ period: string;
4906
+ /**
4907
+ * Data granularity (v1 returns month buckets)
4908
+ */
4909
+ granularity: string;
4910
+ /**
4911
+ * Base currency for converted values
4912
+ */
4913
+ currency: string;
4914
+ /**
4915
+ * Exchange rate warnings (e.g. missing rate for a currency)
4916
+ */
4917
+ warnings?: Array<ExchangeRateWarningDto>;
4918
+ };
3833
4919
  type GenerateSnapshotBody = unknown;
3834
4920
  type GenerateSnapshotResponse = unknown;
3835
4921
  type BackfillSnapshotsBody = unknown;
@@ -3840,6 +4926,12 @@ type AnonymousLoginDto = {
3840
4926
  */
3841
4927
  accessToken: string;
3842
4928
  };
4929
+ type AnonymousLoginResponseDto = {
4930
+ /**
4931
+ * JWT auth token
4932
+ */
4933
+ authToken: string;
4934
+ };
3843
4935
  type AccountControllerCreateData = {
3844
4936
  /**
3845
4937
  * Region code for tenant context
@@ -3847,7 +4939,7 @@ type AccountControllerCreateData = {
3847
4939
  region: 'cn' | 'us' | 'de' | 'gb';
3848
4940
  requestBody: CreateAccountDto;
3849
4941
  };
3850
- type AccountControllerCreateResponse = unknown;
4942
+ type AccountControllerCreateResponse = AccountResponseDto;
3851
4943
  type AccountControllerFindAllData = {
3852
4944
  /**
3853
4945
  * Filter by custom (user-created) accounts only
@@ -3866,7 +4958,7 @@ type AccountControllerFindAllData = {
3866
4958
  */
3867
4959
  region: 'cn' | 'us' | 'de' | 'gb';
3868
4960
  /**
3869
- * Search term for path or i18nKey
4961
+ * Search term for account path
3870
4962
  */
3871
4963
  search?: string;
3872
4964
  /**
@@ -3891,6 +4983,9 @@ type AccountControllerFindOneData = {
3891
4983
  };
3892
4984
  type AccountControllerFindOneResponse = AccountResponseDto;
3893
4985
  type AccountControllerUpdateData = {
4986
+ /**
4987
+ * Account UUID
4988
+ */
3894
4989
  id: string;
3895
4990
  /**
3896
4991
  * Region code for tenant context
@@ -3898,16 +4993,22 @@ type AccountControllerUpdateData = {
3898
4993
  region: 'cn' | 'us' | 'de' | 'gb';
3899
4994
  requestBody: UpdateAccountDto;
3900
4995
  };
3901
- type AccountControllerUpdateResponse = unknown;
4996
+ type AccountControllerUpdateResponse = AccountResponseDto;
3902
4997
  type AccountControllerDeleteData = {
4998
+ /**
4999
+ * Account UUID
5000
+ */
3903
5001
  id: string;
3904
5002
  /**
3905
5003
  * Region code for tenant context
3906
5004
  */
3907
5005
  region: 'cn' | 'us' | 'de' | 'gb';
3908
5006
  };
3909
- type AccountControllerDeleteResponse = unknown;
5007
+ type AccountControllerDeleteResponse = void;
3910
5008
  type AccountControllerCloseData = {
5009
+ /**
5010
+ * Account UUID
5011
+ */
3911
5012
  id: string;
3912
5013
  /**
3913
5014
  * Region code for tenant context
@@ -3915,16 +5016,31 @@ type AccountControllerCloseData = {
3915
5016
  region: 'cn' | 'us' | 'de' | 'gb';
3916
5017
  requestBody: CloseAccountDto;
3917
5018
  };
3918
- type AccountControllerCloseResponse = unknown;
3919
- type AccountControllerReopenData = {
5019
+ type AccountControllerCloseResponse = AccountResponseDto;
5020
+ type AccountControllerReopenData = {
5021
+ /**
5022
+ * Account UUID
5023
+ */
5024
+ id: string;
5025
+ /**
5026
+ * Region code for tenant context
5027
+ */
5028
+ region: 'cn' | 'us' | 'de' | 'gb';
5029
+ requestBody: ReopenAccountDto;
5030
+ };
5031
+ type AccountControllerReopenResponse = AccountResponseDto;
5032
+ type AccountControllerAddOpeningBalanceData = {
5033
+ /**
5034
+ * Account UUID
5035
+ */
3920
5036
  id: string;
3921
5037
  /**
3922
5038
  * Region code for tenant context
3923
5039
  */
3924
5040
  region: 'cn' | 'us' | 'de' | 'gb';
3925
- requestBody: ReopenAccountDto;
5041
+ requestBody: CreateOpeningBalanceDto;
3926
5042
  };
3927
- type AccountControllerReopenResponse = unknown;
5043
+ type AccountControllerAddOpeningBalanceResponse = OpeningBalanceResultDto;
3928
5044
  type AccountStandardsControllerGetTemplatesData = {
3929
5045
  /**
3930
5046
  * Region code (cn, us, de)
@@ -3974,6 +5090,10 @@ type TransactionControllerListData = {
3974
5090
  * Filter by account ID (transactions with postings to this account)
3975
5091
  */
3976
5092
  accountId?: string;
5093
+ /**
5094
+ * Filter by ADR-0075 functional category (Group segment); matches any posting to an Expenses/Income account whose derived Group segment equals this value
5095
+ */
5096
+ category?: string;
3977
5097
  /**
3978
5098
  * Filter by start date (inclusive), format: YYYY-MM-DD
3979
5099
  */
@@ -4082,7 +5202,7 @@ type TransactionControllerDeleteData = {
4082
5202
  type TransactionControllerDeleteResponse = void;
4083
5203
  type BalanceControllerGetBalanceData = {
4084
5204
  /**
4085
- * Account name (e.g., "Assets:Bank:Checking")
5205
+ * Account name (e.g., "Assets:Checking")
4086
5206
  */
4087
5207
  account: string;
4088
5208
  /**
@@ -4394,6 +5514,91 @@ type CommodityControllerBulkCreateData = {
4394
5514
  region: 'cn' | 'us' | 'de' | 'gb';
4395
5515
  };
4396
5516
  type CommodityControllerBulkCreateResponse = Array<CommodityResponseDto>;
5517
+ type PriceControllerCreateData = {
5518
+ /**
5519
+ * Region code for tenant context
5520
+ */
5521
+ region: 'cn' | 'us' | 'de' | 'gb';
5522
+ requestBody: CreateBeanPriceDto;
5523
+ };
5524
+ type PriceControllerCreateResponse = PriceResponseDto;
5525
+ type PriceControllerFindAllData = {
5526
+ /**
5527
+ * Filter by currency (e.g., BTC, AAPL, USD)
5528
+ */
5529
+ currency?: string;
5530
+ /**
5531
+ * Filter prices from this date (ISO 8601 format)
5532
+ */
5533
+ dateFrom?: string;
5534
+ /**
5535
+ * Filter prices to this date (ISO 8601 format)
5536
+ */
5537
+ dateTo?: string;
5538
+ /**
5539
+ * Number of items per page (default: 20, max: 100)
5540
+ */
5541
+ limit?: number;
5542
+ /**
5543
+ * Page number for pagination (default: 1)
5544
+ */
5545
+ page?: number;
5546
+ /**
5547
+ * Filter by quote currency (pricing currency, e.g., USD, CNY)
5548
+ */
5549
+ quoteCurrency?: string;
5550
+ /**
5551
+ * Region code for tenant context
5552
+ */
5553
+ region: 'cn' | 'us' | 'de' | 'gb';
5554
+ /**
5555
+ * Search term for currency or quoteCurrency (case-insensitive partial match)
5556
+ */
5557
+ search?: string;
5558
+ };
5559
+ type PriceControllerFindAllResponse = PriceListResponseDto;
5560
+ type PriceControllerFindOneData = {
5561
+ /**
5562
+ * Price ID
5563
+ */
5564
+ id: string;
5565
+ /**
5566
+ * Region code for tenant context
5567
+ */
5568
+ region: 'cn' | 'us' | 'de' | 'gb';
5569
+ };
5570
+ type PriceControllerFindOneResponse = PriceResponseDto;
5571
+ type PriceControllerUpdateData = {
5572
+ /**
5573
+ * Price ID
5574
+ */
5575
+ id: string;
5576
+ /**
5577
+ * Region code for tenant context
5578
+ */
5579
+ region: 'cn' | 'us' | 'de' | 'gb';
5580
+ requestBody: UpdateBeanPriceDto;
5581
+ };
5582
+ type PriceControllerUpdateResponse = PriceResponseDto;
5583
+ type PriceControllerDeleteData = {
5584
+ /**
5585
+ * Price ID
5586
+ */
5587
+ id: string;
5588
+ /**
5589
+ * Region code for tenant context
5590
+ */
5591
+ region: 'cn' | 'us' | 'de' | 'gb';
5592
+ };
5593
+ type PriceControllerDeleteResponse = void;
5594
+ type PriceControllerBulkCreateData = {
5595
+ /**
5596
+ * Region code for tenant context
5597
+ */
5598
+ region: 'cn' | 'us' | 'de' | 'gb';
5599
+ requestBody: Array<string>;
5600
+ };
5601
+ type PriceControllerBulkCreateResponse = Array<PriceResponseDto>;
4397
5602
  type RecurringRuleControllerCreateData = {
4398
5603
  /**
4399
5604
  * Region code for tenant context
@@ -4717,7 +5922,7 @@ type UserControllerGetUserResponse = unknown;
4717
5922
  type UserControllerSignupUserData = {
4718
5923
  requestBody: SignupDto;
4719
5924
  };
4720
- type UserControllerSignupUserResponse = unknown;
5925
+ type UserControllerSignupUserResponse = SignupResponseDto;
4721
5926
  type UserControllerDeleteUserData = {
4722
5927
  /**
4723
5928
  * User ID to delete
@@ -4771,6 +5976,135 @@ type PropertyControllerDeleteData = {
4771
5976
  key: string;
4772
5977
  };
4773
5978
  type PropertyControllerDeleteResponse = void;
5979
+ type EventControllerCreateData = {
5980
+ /**
5981
+ * Region code for tenant context (decorative for life events)
5982
+ */
5983
+ region: 'cn' | 'us' | 'de' | 'gb';
5984
+ requestBody: CreateBeanEventDto;
5985
+ };
5986
+ type EventControllerCreateResponse = EventResponseDto;
5987
+ type EventControllerFindAllData = {
5988
+ /**
5989
+ * Filter life events from this date (ISO 8601 format)
5990
+ */
5991
+ from?: string;
5992
+ /**
5993
+ * Number of items per page (default: 20, max: 100)
5994
+ */
5995
+ limit?: number;
5996
+ /**
5997
+ * Page number for pagination (default: 1)
5998
+ */
5999
+ page?: number;
6000
+ /**
6001
+ * Search term for description (case-insensitive partial match)
6002
+ */
6003
+ q?: string;
6004
+ /**
6005
+ * Region code for tenant context (decorative for life events)
6006
+ */
6007
+ region: 'cn' | 'us' | 'de' | 'gb';
6008
+ /**
6009
+ * Filter life events to this date (ISO 8601 format)
6010
+ */
6011
+ to?: string;
6012
+ /**
6013
+ * Filter by life event type (exact match)
6014
+ */
6015
+ type?: string;
6016
+ };
6017
+ type EventControllerFindAllResponse = EventListResponseDto;
6018
+ type EventControllerFindOneData = {
6019
+ /**
6020
+ * Life event ID
6021
+ */
6022
+ id: string;
6023
+ /**
6024
+ * Region code for tenant context (decorative for life events)
6025
+ */
6026
+ region: 'cn' | 'us' | 'de' | 'gb';
6027
+ };
6028
+ type EventControllerFindOneResponse = EventResponseDto;
6029
+ type EventControllerUpdateData = {
6030
+ /**
6031
+ * Life event ID
6032
+ */
6033
+ id: string;
6034
+ /**
6035
+ * Region code for tenant context (decorative for life events)
6036
+ */
6037
+ region: 'cn' | 'us' | 'de' | 'gb';
6038
+ requestBody: UpdateBeanEventDto;
6039
+ };
6040
+ type EventControllerUpdateResponse = EventResponseDto;
6041
+ type EventControllerDeleteData = {
6042
+ /**
6043
+ * Life event ID
6044
+ */
6045
+ id: string;
6046
+ /**
6047
+ * Region code for tenant context (decorative for life events)
6048
+ */
6049
+ region: 'cn' | 'us' | 'de' | 'gb';
6050
+ };
6051
+ type EventControllerDeleteResponse = void;
6052
+ type EventControllerGetSliceData = {
6053
+ accountPattern: string;
6054
+ granularity: string;
6055
+ /**
6056
+ * Life event ID
6057
+ */
6058
+ id: string;
6059
+ /**
6060
+ * Region code for tenant context (decorative for life events)
6061
+ */
6062
+ region: 'cn' | 'us' | 'de' | 'gb';
6063
+ };
6064
+ type EventControllerGetSliceResponse = unknown;
6065
+ type OnboardingControllerBootstrapData = {
6066
+ /**
6067
+ * Region code for tenant context
6068
+ */
6069
+ region: 'cn' | 'us' | 'de' | 'gb';
6070
+ requestBody: OnboardingDto;
6071
+ };
6072
+ type OnboardingControllerBootstrapResponse = unknown;
6073
+ type ReconciliationControllerComputeData = {
6074
+ /**
6075
+ * Region code for tenant context (decorative for reconciliation)
6076
+ */
6077
+ region: 'cn' | 'us' | 'de' | 'gb';
6078
+ requestBody: ComputeReconciliationDto;
6079
+ };
6080
+ type ReconciliationControllerComputeResponse = ReconciliationComputeResultDto;
6081
+ type ReconciliationControllerAssertData = {
6082
+ /**
6083
+ * Region code for tenant context (decorative for reconciliation)
6084
+ */
6085
+ region: 'cn' | 'us' | 'de' | 'gb';
6086
+ requestBody: AssertReconciliationDto;
6087
+ };
6088
+ type ReconciliationControllerAssertResponse = ReconciliationRecordDto;
6089
+ type ReconciliationControllerPadData = {
6090
+ /**
6091
+ * Region code for tenant context (decorative for reconciliation)
6092
+ */
6093
+ region: 'cn' | 'us' | 'de' | 'gb';
6094
+ requestBody: PadReconciliationDto;
6095
+ };
6096
+ type ReconciliationControllerPadResponse = PadResultDto;
6097
+ type ReconciliationControllerHistoryData = {
6098
+ /**
6099
+ * BeanAccount id
6100
+ */
6101
+ accountId: string;
6102
+ /**
6103
+ * Region code for tenant context (decorative for reconciliation)
6104
+ */
6105
+ region: 'cn' | 'us' | 'de' | 'gb';
6106
+ };
6107
+ type ReconciliationControllerHistoryResponse = Array<ReconciliationRecordDto>;
4774
6108
  type ExportControllerExportBeancountResponse = unknown;
4775
6109
  type FileImportControllerImportFileData = {
4776
6110
  /**
@@ -4795,12 +6129,24 @@ type FileImportControllerIdentifyFileData = {
4795
6129
  };
4796
6130
  type FileImportControllerIdentifyFileResponse = IdentifyResultDto;
4797
6131
  type FileImportControllerImportBeancountData = {
6132
+ /**
6133
+ * Beancount file to import
6134
+ */
6135
+ formData: FileImportDto;
4798
6136
  /**
4799
6137
  * Region code for tenant context
4800
6138
  */
4801
6139
  region: 'cn' | 'us' | 'de' | 'gb';
4802
6140
  };
4803
- type FileImportControllerImportBeancountResponse = unknown;
6141
+ type FileImportControllerImportBeancountResponse = {
6142
+ imported?: number;
6143
+ skipped?: number;
6144
+ failed?: number;
6145
+ accountsCreated?: number;
6146
+ errors?: Array<{
6147
+ [key: string]: unknown;
6148
+ }>;
6149
+ };
4804
6150
  type ImporterConfigControllerGetConfigData = {
4805
6151
  /**
4806
6152
  * Importer identifier. Supported importers: alipay, alipay-web, wechat, boc, boc-credit, ccb, cmb, cmbc, cmbc-credit, icbc, icbc-credit, hsbc-hk-credit, hsbc-hk-debit
@@ -4838,65 +6184,68 @@ type ImporterConfigControllerResetConfigData = {
4838
6184
  region: 'cn' | 'us' | 'de' | 'gb';
4839
6185
  };
4840
6186
  type ImporterConfigControllerResetConfigResponse = ImporterConfigDto;
4841
- type PlatformControllerFindAllResponse = unknown;
4842
- type PlatformControllerCreateData = {
4843
- requestBody: CreatePlatformDto;
4844
- };
4845
- type PlatformControllerCreateResponse = unknown;
4846
- type PlatformControllerGetPlatformListResponse = unknown;
4847
- type PlatformControllerMatchPlatformsData = {
6187
+ type ProviderSyncControllerSyncData = {
4848
6188
  /**
4849
- * Search query — Chinese name, English name, or abbreviation
6189
+ * Provider name
4850
6190
  */
4851
- q: string;
6191
+ providerName: 'plaid' | 'teller' | 'truelayer' | 'gocardless' | 'simplefin' | 'yodlee' | 'beancount-direct' | 'parsed-bill';
4852
6192
  /**
4853
- * Region code for category override lookup
6193
+ * Region code for tenant context
4854
6194
  */
4855
- region?: string;
6195
+ region: 'cn' | 'us' | 'de' | 'gb';
6196
+ requestBody: ProviderSyncDto;
4856
6197
  };
4857
- type PlatformControllerMatchPlatformsResponse = unknown;
4858
- type PlatformControllerUpdateData = {
6198
+ type ProviderSyncControllerSyncResponse = ProviderSyncResponseDto;
6199
+ type ProviderSyncControllerGetSupportedProvidersData = {
4859
6200
  /**
4860
- * Platform ID
6201
+ * Region code for tenant context
4861
6202
  */
4862
- id: string;
4863
- requestBody: UpdatePlatformDto;
6203
+ region: 'cn' | 'us' | 'de' | 'gb';
4864
6204
  };
4865
- type PlatformControllerUpdateResponse = unknown;
4866
- type PlatformControllerDeleteData = {
6205
+ type ProviderSyncControllerGetSupportedProvidersResponse = SupportedProvidersResponseDto;
6206
+ type ProviderSyncControllerIsProviderSupportedData = {
4867
6207
  /**
4868
- * Platform ID
6208
+ * Provider name to check
4869
6209
  */
4870
- id: string;
4871
- };
4872
- type PlatformControllerDeleteResponse = void;
4873
- type ProviderSyncControllerSyncData = {
4874
6210
  providerName: string;
4875
6211
  /**
4876
6212
  * Region code for tenant context
4877
6213
  */
4878
6214
  region: 'cn' | 'us' | 'de' | 'gb';
4879
- requestBody: ProviderSyncDto;
4880
6215
  };
4881
- type ProviderSyncControllerSyncResponse = unknown;
4882
- type ProviderSyncControllerGetSupportedProvidersData = {
6216
+ type ProviderSyncControllerIsProviderSupportedResponse = unknown;
6217
+ type ExternalAccountLinkControllerCreateData = {
4883
6218
  /**
4884
6219
  * Region code for tenant context
4885
6220
  */
4886
6221
  region: 'cn' | 'us' | 'de' | 'gb';
6222
+ requestBody: CreateExternalAccountLinkDto;
4887
6223
  };
4888
- type ProviderSyncControllerGetSupportedProvidersResponse = SupportedProvidersResponseDto;
4889
- type ProviderSyncControllerIsProviderSupportedData = {
6224
+ type ExternalAccountLinkControllerCreateResponse = ExternalAccountLinkResponseDto;
6225
+ type ExternalAccountLinkControllerFindAllData = {
6226
+ provider: string;
4890
6227
  /**
4891
- * Provider name to check
6228
+ * Region code for tenant context
4892
6229
  */
4893
- providerName: string;
6230
+ region: 'cn' | 'us' | 'de' | 'gb';
6231
+ };
6232
+ type ExternalAccountLinkControllerFindAllResponse = ExternalAccountLinkListResponseDto;
6233
+ type ExternalAccountLinkControllerFindOneData = {
6234
+ id: string;
4894
6235
  /**
4895
6236
  * Region code for tenant context
4896
6237
  */
4897
6238
  region: 'cn' | 'us' | 'de' | 'gb';
4898
6239
  };
4899
- type ProviderSyncControllerIsProviderSupportedResponse = unknown;
6240
+ type ExternalAccountLinkControllerFindOneResponse = ExternalAccountLinkResponseDto;
6241
+ type ExternalAccountLinkControllerRemoveData = {
6242
+ id: string;
6243
+ /**
6244
+ * Region code for tenant context
6245
+ */
6246
+ region: 'cn' | 'us' | 'de' | 'gb';
6247
+ };
6248
+ type ExternalAccountLinkControllerRemoveResponse = void;
4900
6249
  type TelemetryControllerReportTelemetryData = {
4901
6250
  /**
4902
6251
  * Region code for tenant context
@@ -4929,9 +6278,12 @@ type NlpControllerProcessNaturalLanguageData = {
4929
6278
  * Region code for tenant context
4930
6279
  */
4931
6280
  region: 'cn' | 'us' | 'de' | 'gb';
6281
+ /**
6282
+ * Natural language transaction input with optional session ID
6283
+ */
4932
6284
  requestBody: ProcessNlpDto;
4933
6285
  };
4934
- type NlpControllerProcessNaturalLanguageResponse = unknown;
6286
+ type NlpControllerProcessNaturalLanguageResponse = NlpResponseDto;
4935
6287
  type NlpControllerClearSessionData = {
4936
6288
  /**
4937
6289
  * Region code for tenant context
@@ -4949,11 +6301,43 @@ type NlpControllerGetSessionData = {
4949
6301
  */
4950
6302
  region: 'cn' | 'us' | 'de' | 'gb';
4951
6303
  /**
4952
- * Specific session ID to get (defaults to user session)
6304
+ * Specific session ID to get (defaults to user session)
6305
+ */
6306
+ sessionId?: string;
6307
+ };
6308
+ type NlpControllerGetSessionResponse = unknown;
6309
+ type PlatformControllerFindAllResponse = unknown;
6310
+ type PlatformControllerCreateData = {
6311
+ requestBody: CreatePlatformDto;
6312
+ };
6313
+ type PlatformControllerCreateResponse = unknown;
6314
+ type PlatformControllerGetPlatformListResponse = Array<PlatformListItemDto>;
6315
+ type PlatformControllerMatchPlatformsData = {
6316
+ /**
6317
+ * Search query — Chinese name, English name, or abbreviation
6318
+ */
6319
+ q: string;
6320
+ /**
6321
+ * Region code for category override lookup
6322
+ */
6323
+ region?: string;
6324
+ };
6325
+ type PlatformControllerMatchPlatformsResponse = PlatformMatchResponseDto;
6326
+ type PlatformControllerUpdateData = {
6327
+ /**
6328
+ * Platform ID
6329
+ */
6330
+ id: string;
6331
+ requestBody: UpdatePlatformDto;
6332
+ };
6333
+ type PlatformControllerUpdateResponse = unknown;
6334
+ type PlatformControllerDeleteData = {
6335
+ /**
6336
+ * Platform ID
4953
6337
  */
4954
- sessionId?: string;
6338
+ id: string;
4955
6339
  };
4956
- type NlpControllerGetSessionResponse = unknown;
6340
+ type PlatformControllerDeleteResponse = void;
4957
6341
  type DashboardControllerGetNetWorthData = {
4958
6342
  /**
4959
6343
  * Date for balance calculation (ISO 8601 format)
@@ -4995,113 +6379,62 @@ type DashboardControllerGetCashFlowData = {
4995
6379
  region: 'cn' | 'us' | 'de' | 'gb';
4996
6380
  };
4997
6381
  type DashboardControllerGetCashFlowResponse = CashFlowResponseDto;
4998
- type HoldingPnlControllerGetHoldingPnlData = {
4999
- /**
5000
- * Scope to a single account
5001
- */
5002
- accountId?: string;
5003
- /**
5004
- * As-of date (ISO 8601), defaults to today
5005
- */
5006
- asOf?: string;
5007
- /**
5008
- * Realized-P&L lot-matching method (default average). Does not affect the average-cost unrealized basis.
5009
- */
5010
- method?: 'FIFO' | 'average';
5011
- /**
5012
- * Region code for tenant context
5013
- */
5014
- region: 'cn' | 'us' | 'de' | 'gb';
5015
- };
5016
- type HoldingPnlControllerGetHoldingPnlResponse = HoldingPnlResponseDto;
5017
- type PriceControllerCreateData = {
5018
- /**
5019
- * Region code for tenant context
5020
- */
5021
- region: 'cn' | 'us' | 'de' | 'gb';
5022
- requestBody: CreateBeanPriceDto;
5023
- };
5024
- type PriceControllerCreateResponse = PriceResponseDto;
5025
- type PriceControllerFindAllData = {
5026
- /**
5027
- * Filter by currency (e.g., BTC, AAPL, USD)
5028
- */
5029
- currency?: string;
5030
- /**
5031
- * Filter prices from this date (ISO 8601 format)
5032
- */
5033
- dateFrom?: string;
5034
- /**
5035
- * Filter prices to this date (ISO 8601 format)
5036
- */
5037
- dateTo?: string;
6382
+ type DashboardControllerGetExpensesData = {
5038
6383
  /**
5039
- * Number of items per page (default: 20, max: 100)
6384
+ * Account root to aggregate (expense ^Expenses:, income → ^Income:)
5040
6385
  */
5041
- limit?: number;
6386
+ flow?: 'expense' | 'income';
5042
6387
  /**
5043
- * Page number for pagination (default: 1)
6388
+ * Grouping strategy
5044
6389
  */
5045
- page?: number;
6390
+ groupBy?: 'category';
5046
6391
  /**
5047
- * Filter by quote currency (pricing currency, e.g., USD, CNY)
6392
+ * Time window (1m = current calendar month)
5048
6393
  */
5049
- quoteCurrency?: string;
6394
+ period?: '1m' | '3m' | '6m' | '1y';
5050
6395
  /**
5051
6396
  * Region code for tenant context
5052
6397
  */
5053
6398
  region: 'cn' | 'us' | 'de' | 'gb';
5054
- /**
5055
- * Search term for currency or quoteCurrency (case-insensitive partial match)
5056
- */
5057
- search?: string;
5058
6399
  };
5059
- type PriceControllerFindAllResponse = PriceListResponseDto;
5060
- type PriceControllerFindOneData = {
6400
+ type DashboardControllerGetExpensesResponse = ExpensesByCategoryResponseDto;
6401
+ type HoldingPnlControllerGetHoldingPnlData = {
5061
6402
  /**
5062
- * Price ID
6403
+ * Scope to a single account
5063
6404
  */
5064
- id: string;
6405
+ accountId?: string;
5065
6406
  /**
5066
- * Region code for tenant context
6407
+ * As-of date (ISO 8601), defaults to today
5067
6408
  */
5068
- region: 'cn' | 'us' | 'de' | 'gb';
5069
- };
5070
- type PriceControllerFindOneResponse = PriceResponseDto;
5071
- type PriceControllerUpdateData = {
6409
+ asOf?: string;
5072
6410
  /**
5073
- * Price ID
6411
+ * Realized-P&L lot-matching method (default average). Does not affect the average-cost unrealized basis.
5074
6412
  */
5075
- id: string;
6413
+ method?: 'FIFO' | 'average';
5076
6414
  /**
5077
6415
  * Region code for tenant context
5078
6416
  */
5079
6417
  region: 'cn' | 'us' | 'de' | 'gb';
5080
- requestBody: UpdateBeanPriceDto;
5081
6418
  };
5082
- type PriceControllerUpdateResponse = PriceResponseDto;
5083
- type PriceControllerDeleteData = {
6419
+ type HoldingPnlControllerGetHoldingPnlResponse = HoldingPnlResponseDto;
6420
+ type ReportingControllerGetPortfolioTrendsData = {
5084
6421
  /**
5085
- * Price ID
6422
+ * Data granularity
5086
6423
  */
5087
- id: string;
6424
+ granularity?: 'day' | 'week' | 'month';
5088
6425
  /**
5089
- * Region code for tenant context
6426
+ * Time period
5090
6427
  */
5091
- region: 'cn' | 'us' | 'de' | 'gb';
5092
- };
5093
- type PriceControllerDeleteResponse = void;
5094
- type PriceControllerBulkCreateData = {
6428
+ period?: '1m' | '3m' | '6m' | '1y';
5095
6429
  /**
5096
6430
  * Region code for tenant context
5097
6431
  */
5098
6432
  region: 'cn' | 'us' | 'de' | 'gb';
5099
- requestBody: Array<string>;
5100
6433
  };
5101
- type PriceControllerBulkCreateResponse = Array<PriceResponseDto>;
5102
- type ReportingControllerGetPortfolioTrendsData = {
6434
+ type ReportingControllerGetPortfolioTrendsResponse = PortfolioTrendsResponseDto;
6435
+ type ReportingControllerGetCashFlowTrendsData = {
5103
6436
  /**
5104
- * Data granularity
6437
+ * Data granularity (accepted for API symmetry; v1 returns month buckets)
5105
6438
  */
5106
6439
  granularity?: 'day' | 'week' | 'month';
5107
6440
  /**
@@ -5113,7 +6446,7 @@ type ReportingControllerGetPortfolioTrendsData = {
5113
6446
  */
5114
6447
  region: 'cn' | 'us' | 'de' | 'gb';
5115
6448
  };
5116
- type ReportingControllerGetPortfolioTrendsResponse = PortfolioTrendsResponseDto;
6449
+ type ReportingControllerGetCashFlowTrendsResponse = CashFlowTrendsResponseDto;
5117
6450
  type ReportingControllerGenerateSnapshotData = {
5118
6451
  /**
5119
6452
  * Region code for tenant context
@@ -5137,7 +6470,7 @@ type ApiKeysControllerCreateApiKeyResponse = unknown;
5137
6470
  type AuthControllerAccessTokenLoginData = {
5138
6471
  requestBody: AnonymousLoginDto;
5139
6472
  };
5140
- type AuthControllerAccessTokenLoginResponse = unknown;
6473
+ type AuthControllerAccessTokenLoginResponse = AnonymousLoginResponseDto;
5141
6474
  type CacheControllerFlushCacheResponse = unknown;
5142
6475
  type ExchangeRateControllerGetExchangeRateData = {
5143
6476
  /**
@@ -5169,7 +6502,14 @@ type $OpenApiTs = {
5169
6502
  post: {
5170
6503
  req: AccountControllerCreateData;
5171
6504
  res: {
5172
- 201: unknown;
6505
+ /**
6506
+ * Account created successfully
6507
+ */
6508
+ 201: AccountResponseDto;
6509
+ /**
6510
+ * Account already exists
6511
+ */
6512
+ 409: unknown;
5173
6513
  };
5174
6514
  };
5175
6515
  get: {
@@ -5199,13 +6539,31 @@ type $OpenApiTs = {
5199
6539
  put: {
5200
6540
  req: AccountControllerUpdateData;
5201
6541
  res: {
5202
- 200: unknown;
6542
+ /**
6543
+ * Account updated successfully
6544
+ */
6545
+ 200: AccountResponseDto;
6546
+ /**
6547
+ * Account not found
6548
+ */
6549
+ 404: unknown;
5203
6550
  };
5204
6551
  };
5205
6552
  delete: {
5206
6553
  req: AccountControllerDeleteData;
5207
6554
  res: {
5208
- 200: unknown;
6555
+ /**
6556
+ * Account deleted successfully
6557
+ */
6558
+ 204: void;
6559
+ /**
6560
+ * Account not found
6561
+ */
6562
+ 404: unknown;
6563
+ /**
6564
+ * Account has transactions and cannot be deleted
6565
+ */
6566
+ 409: unknown;
5209
6567
  };
5210
6568
  };
5211
6569
  };
@@ -5213,7 +6571,18 @@ type $OpenApiTs = {
5213
6571
  post: {
5214
6572
  req: AccountControllerCloseData;
5215
6573
  res: {
5216
- 201: unknown;
6574
+ /**
6575
+ * Account closed successfully
6576
+ */
6577
+ 200: AccountResponseDto;
6578
+ /**
6579
+ * Account is already closed
6580
+ */
6581
+ 400: unknown;
6582
+ /**
6583
+ * Account not found
6584
+ */
6585
+ 404: unknown;
5217
6586
  };
5218
6587
  };
5219
6588
  };
@@ -5221,7 +6590,37 @@ type $OpenApiTs = {
5221
6590
  post: {
5222
6591
  req: AccountControllerReopenData;
5223
6592
  res: {
5224
- 201: unknown;
6593
+ /**
6594
+ * Account reopened successfully
6595
+ */
6596
+ 200: AccountResponseDto;
6597
+ /**
6598
+ * Account is not closed
6599
+ */
6600
+ 400: unknown;
6601
+ /**
6602
+ * Account not found
6603
+ */
6604
+ 404: unknown;
6605
+ };
6606
+ };
6607
+ };
6608
+ '/api/v1/{region}/bean/accounts/{id}/opening-balance': {
6609
+ post: {
6610
+ req: AccountControllerAddOpeningBalanceData;
6611
+ res: {
6612
+ /**
6613
+ * Opening-balance transaction created
6614
+ */
6615
+ 201: OpeningBalanceResultDto;
6616
+ /**
6617
+ * Account not found
6618
+ */
6619
+ 404: unknown;
6620
+ /**
6621
+ * An opening balance already exists for this account
6622
+ */
6623
+ 409: unknown;
5225
6624
  };
5226
6625
  };
5227
6626
  };
@@ -5773,63 +7172,147 @@ type $OpenApiTs = {
5773
7172
  /**
5774
7173
  * Commodity retrieved successfully
5775
7174
  */
5776
- 200: CommodityResponseDto;
7175
+ 200: CommodityResponseDto;
7176
+ /**
7177
+ * Commodity not found
7178
+ */
7179
+ 404: ApiProblemResponseDto;
7180
+ };
7181
+ };
7182
+ put: {
7183
+ req: CommodityControllerUpdateData;
7184
+ res: {
7185
+ /**
7186
+ * Commodity updated successfully
7187
+ */
7188
+ 200: CommodityResponseDto;
7189
+ /**
7190
+ * Invalid input data
7191
+ */
7192
+ 400: ApiProblemResponseDto;
7193
+ /**
7194
+ * Commodity not found
7195
+ */
7196
+ 404: ApiProblemResponseDto;
7197
+ };
7198
+ };
7199
+ delete: {
7200
+ req: CommodityControllerDeleteData;
7201
+ res: {
7202
+ /**
7203
+ * Commodity deleted successfully
7204
+ */
7205
+ 204: void;
7206
+ /**
7207
+ * Commodity not found
7208
+ */
7209
+ 404: ApiProblemResponseDto;
7210
+ };
7211
+ };
7212
+ };
7213
+ '/api/v1/{region}/bean/commodities/{symbol}/ensure': {
7214
+ post: {
7215
+ req: CommodityControllerGetOrCreateData;
7216
+ res: {
7217
+ /**
7218
+ * Commodity retrieved or created
7219
+ */
7220
+ 200: CommodityResponseDto;
7221
+ };
7222
+ };
7223
+ };
7224
+ '/api/v1/{region}/bean/commodities/bulk': {
7225
+ post: {
7226
+ req: CommodityControllerBulkCreateData;
7227
+ res: {
7228
+ /**
7229
+ * Commodities created successfully
7230
+ */
7231
+ 201: Array<CommodityResponseDto>;
7232
+ };
7233
+ };
7234
+ };
7235
+ '/api/v1/{region}/bean/prices': {
7236
+ post: {
7237
+ req: PriceControllerCreateData;
7238
+ res: {
7239
+ /**
7240
+ * Price created successfully
7241
+ */
7242
+ 201: PriceResponseDto;
7243
+ /**
7244
+ * Currency or quoteCurrency commodity not found
7245
+ */
7246
+ 404: unknown;
7247
+ /**
7248
+ * Price already exists for this currency pair and date
7249
+ */
7250
+ 409: unknown;
7251
+ };
7252
+ };
7253
+ get: {
7254
+ req: PriceControllerFindAllData;
7255
+ res: {
7256
+ /**
7257
+ * Prices retrieved successfully
7258
+ */
7259
+ 200: PriceListResponseDto;
7260
+ };
7261
+ };
7262
+ };
7263
+ '/api/v1/{region}/bean/prices/{id}': {
7264
+ get: {
7265
+ req: PriceControllerFindOneData;
7266
+ res: {
7267
+ /**
7268
+ * Price retrieved successfully
7269
+ */
7270
+ 200: PriceResponseDto;
5777
7271
  /**
5778
- * Commodity not found
7272
+ * Price not found
5779
7273
  */
5780
- 404: ApiProblemResponseDto;
7274
+ 404: unknown;
5781
7275
  };
5782
7276
  };
5783
7277
  put: {
5784
- req: CommodityControllerUpdateData;
7278
+ req: PriceControllerUpdateData;
5785
7279
  res: {
5786
7280
  /**
5787
- * Commodity updated successfully
7281
+ * Price updated successfully
5788
7282
  */
5789
- 200: CommodityResponseDto;
7283
+ 200: PriceResponseDto;
5790
7284
  /**
5791
- * Invalid input data
7285
+ * Price not found
5792
7286
  */
5793
- 400: ApiProblemResponseDto;
7287
+ 404: unknown;
5794
7288
  /**
5795
- * Commodity not found
7289
+ * Updated price conflicts with existing price
5796
7290
  */
5797
- 404: ApiProblemResponseDto;
7291
+ 409: unknown;
5798
7292
  };
5799
7293
  };
5800
7294
  delete: {
5801
- req: CommodityControllerDeleteData;
7295
+ req: PriceControllerDeleteData;
5802
7296
  res: {
5803
7297
  /**
5804
- * Commodity deleted successfully
7298
+ * Price deleted successfully
5805
7299
  */
5806
7300
  204: void;
5807
7301
  /**
5808
- * Commodity not found
5809
- */
5810
- 404: ApiProblemResponseDto;
5811
- };
5812
- };
5813
- };
5814
- '/api/v1/{region}/bean/commodities/{symbol}/ensure': {
5815
- post: {
5816
- req: CommodityControllerGetOrCreateData;
5817
- res: {
5818
- /**
5819
- * Commodity retrieved or created
7302
+ * Price not found
5820
7303
  */
5821
- 200: CommodityResponseDto;
7304
+ 404: unknown;
5822
7305
  };
5823
7306
  };
5824
7307
  };
5825
- '/api/v1/{region}/bean/commodities/bulk': {
7308
+ '/api/v1/{region}/bean/prices/bulk': {
5826
7309
  post: {
5827
- req: CommodityControllerBulkCreateData;
7310
+ req: PriceControllerBulkCreateData;
5828
7311
  res: {
5829
7312
  /**
5830
- * Commodities created successfully
7313
+ * Prices created successfully
5831
7314
  */
5832
- 201: Array<CommodityResponseDto>;
7315
+ 201: Array<PriceResponseDto>;
5833
7316
  };
5834
7317
  };
5835
7318
  };
@@ -6320,7 +7803,7 @@ type $OpenApiTs = {
6320
7803
  /**
6321
7804
  * User created successfully
6322
7805
  */
6323
- 201: unknown;
7806
+ 201: SignupResponseDto;
6324
7807
  /**
6325
7808
  * Invalid Turnstile token (when Turnstile is enabled)
6326
7809
  */
@@ -6477,6 +7960,181 @@ type $OpenApiTs = {
6477
7960
  };
6478
7961
  };
6479
7962
  };
7963
+ '/api/v1/{region}/bean/events': {
7964
+ post: {
7965
+ req: EventControllerCreateData;
7966
+ res: {
7967
+ /**
7968
+ * Life event created successfully
7969
+ */
7970
+ 201: EventResponseDto;
7971
+ /**
7972
+ * Life event already exists for this (userId, type, date) combination
7973
+ */
7974
+ 409: unknown;
7975
+ };
7976
+ };
7977
+ get: {
7978
+ req: EventControllerFindAllData;
7979
+ res: {
7980
+ /**
7981
+ * Life events retrieved successfully
7982
+ */
7983
+ 200: EventListResponseDto;
7984
+ };
7985
+ };
7986
+ };
7987
+ '/api/v1/{region}/bean/events/{id}': {
7988
+ get: {
7989
+ req: EventControllerFindOneData;
7990
+ res: {
7991
+ /**
7992
+ * Life event retrieved successfully
7993
+ */
7994
+ 200: EventResponseDto;
7995
+ /**
7996
+ * Life event not found
7997
+ */
7998
+ 404: unknown;
7999
+ };
8000
+ };
8001
+ put: {
8002
+ req: EventControllerUpdateData;
8003
+ res: {
8004
+ /**
8005
+ * Life event updated successfully
8006
+ */
8007
+ 200: EventResponseDto;
8008
+ /**
8009
+ * If-Match header is not a valid ISO 8601 date
8010
+ */
8011
+ 400: unknown;
8012
+ /**
8013
+ * Life event not found
8014
+ */
8015
+ 404: unknown;
8016
+ /**
8017
+ * Updated event conflicts with an existing (userId, type, date) combination
8018
+ */
8019
+ 409: unknown;
8020
+ /**
8021
+ * If-Match precondition failed (updatedAt mismatch)
8022
+ */
8023
+ 412: unknown;
8024
+ };
8025
+ };
8026
+ delete: {
8027
+ req: EventControllerDeleteData;
8028
+ res: {
8029
+ /**
8030
+ * Life event deleted successfully
8031
+ */
8032
+ 204: void;
8033
+ /**
8034
+ * Life event not found
8035
+ */
8036
+ 404: unknown;
8037
+ };
8038
+ };
8039
+ };
8040
+ '/api/v1/{region}/bean/events/{id}/slice': {
8041
+ get: {
8042
+ req: EventControllerGetSliceData;
8043
+ res: {
8044
+ /**
8045
+ * Time-series sliced by the life event range
8046
+ */
8047
+ 200: unknown;
8048
+ /**
8049
+ * accountPattern query param is empty
8050
+ */
8051
+ 400: unknown;
8052
+ /**
8053
+ * Life event not found
8054
+ */
8055
+ 404: unknown;
8056
+ };
8057
+ };
8058
+ };
8059
+ '/api/v1/{region}/bean/onboarding': {
8060
+ post: {
8061
+ req: OnboardingControllerBootstrapData;
8062
+ res: {
8063
+ /**
8064
+ * Onboarding bootstrap result.
8065
+ */
8066
+ 201: unknown;
8067
+ /**
8068
+ * Invalid region/account path/duplicate paths.
8069
+ */
8070
+ 422: unknown;
8071
+ };
8072
+ };
8073
+ };
8074
+ '/api/v1/{region}/bean/reconciliations': {
8075
+ post: {
8076
+ req: ReconciliationControllerComputeData;
8077
+ res: {
8078
+ /**
8079
+ * Reconciliation preview
8080
+ */
8081
+ 200: ReconciliationComputeResultDto;
8082
+ /**
8083
+ * Account not found
8084
+ */
8085
+ 404: unknown;
8086
+ };
8087
+ };
8088
+ };
8089
+ '/api/v1/{region}/bean/reconciliations/assert': {
8090
+ post: {
8091
+ req: ReconciliationControllerAssertData;
8092
+ res: {
8093
+ /**
8094
+ * Balance assertion recorded
8095
+ */
8096
+ 201: ReconciliationRecordDto;
8097
+ /**
8098
+ * Account not found
8099
+ */
8100
+ 404: unknown;
8101
+ };
8102
+ };
8103
+ };
8104
+ '/api/v1/{region}/bean/reconciliations/pad': {
8105
+ post: {
8106
+ req: ReconciliationControllerPadData;
8107
+ res: {
8108
+ /**
8109
+ * Pad adjusting entry generated
8110
+ */
8111
+ 201: PadResultDto;
8112
+ /**
8113
+ * Book already within tolerance — no pad needed
8114
+ */
8115
+ 400: unknown;
8116
+ /**
8117
+ * Account not found
8118
+ */
8119
+ 404: unknown;
8120
+ };
8121
+ };
8122
+ };
8123
+ '/api/v1/{region}/bean/accounts/{accountId}/reconciliations': {
8124
+ get: {
8125
+ req: ReconciliationControllerHistoryData;
8126
+ res: {
8127
+ /**
8128
+ * Reconciliation history
8129
+ */
8130
+ 200: Array<ReconciliationRecordDto>;
8131
+ /**
8132
+ * Account not found
8133
+ */
8134
+ 404: unknown;
8135
+ };
8136
+ };
8137
+ };
6480
8138
  '/api/v1/{region}/bean/export/beancount': {
6481
8139
  get: {
6482
8140
  res: {
@@ -6556,131 +8214,74 @@ type $OpenApiTs = {
6556
8214
  '/api/v1/{region}/bean/import/beancount': {
6557
8215
  post: {
6558
8216
  req: FileImportControllerImportBeancountData;
6559
- res: {
6560
- 201: unknown;
6561
- };
6562
- };
6563
- };
6564
- '/api/v1/{region}/bean/import/config/{importerId}': {
6565
- get: {
6566
- req: ImporterConfigControllerGetConfigData;
6567
- res: {
6568
- /**
6569
- * Configuration retrieved successfully
6570
- */
6571
- 200: ImporterConfigDto;
6572
- /**
6573
- * Invalid input - Unsupported importer
6574
- */
6575
- 400: ApiProblemResponseDto;
6576
- /**
6577
- * Unauthorized - Authentication required
6578
- */
6579
- 401: ApiProblemResponseDto;
6580
- };
6581
- };
6582
- put: {
6583
- req: ImporterConfigControllerUpdateConfigData;
6584
8217
  res: {
6585
8218
  /**
6586
- * Configuration updated successfully
8219
+ * Beancount file imported successfully
6587
8220
  */
6588
- 200: ImporterConfigDto;
8221
+ 200: {
8222
+ imported?: number;
8223
+ skipped?: number;
8224
+ failed?: number;
8225
+ accountsCreated?: number;
8226
+ errors?: Array<{
8227
+ [key: string]: unknown;
8228
+ }>;
8229
+ };
6589
8230
  /**
6590
- * Invalid input - Validation failed
8231
+ * Bad request - invalid file or no file uploaded
6591
8232
  */
6592
8233
  400: ApiProblemResponseDto;
6593
- /**
6594
- * Configuration not found
6595
- */
6596
- 404: ApiProblemResponseDto;
6597
8234
  };
6598
8235
  };
6599
8236
  };
6600
- '/api/v1/{region}/bean/import/config/{importerId}/reset': {
6601
- post: {
6602
- req: ImporterConfigControllerResetConfigData;
8237
+ '/api/v1/{region}/bean/import/config/{importerId}': {
8238
+ get: {
8239
+ req: ImporterConfigControllerGetConfigData;
6603
8240
  res: {
6604
8241
  /**
6605
- * Configuration reset successfully
8242
+ * Configuration retrieved successfully
6606
8243
  */
6607
8244
  200: ImporterConfigDto;
6608
8245
  /**
6609
8246
  * Invalid input - Unsupported importer
6610
8247
  */
6611
8248
  400: ApiProblemResponseDto;
6612
- };
6613
- };
6614
- };
6615
- '/api/v1/bean/platforms': {
6616
- get: {
6617
- res: {
6618
- /**
6619
- * List of platforms with binding and account counts
6620
- */
6621
- 200: unknown;
6622
- };
6623
- };
6624
- post: {
6625
- req: PlatformControllerCreateData;
6626
- res: {
6627
- /**
6628
- * Platform created successfully
6629
- */
6630
- 201: unknown;
6631
- /**
6632
- * Platform already exists
6633
- */
6634
- 409: unknown;
6635
- };
6636
- };
6637
- };
6638
- '/api/v1/bean/platforms/list': {
6639
- get: {
6640
- res: {
6641
- /**
6642
- * List of platforms with user binding status
6643
- */
6644
- 200: unknown;
6645
- };
6646
- };
6647
- };
6648
- '/api/v1/bean/platforms/match': {
6649
- get: {
6650
- req: PlatformControllerMatchPlatformsData;
6651
- res: {
6652
8249
  /**
6653
- * List of matching platforms with suggested segment names
8250
+ * Unauthorized - Authentication required
6654
8251
  */
6655
- 200: unknown;
8252
+ 401: ApiProblemResponseDto;
6656
8253
  };
6657
8254
  };
6658
- };
6659
- '/api/v1/bean/platforms/{id}': {
6660
8255
  put: {
6661
- req: PlatformControllerUpdateData;
8256
+ req: ImporterConfigControllerUpdateConfigData;
6662
8257
  res: {
6663
8258
  /**
6664
- * Platform updated successfully
8259
+ * Configuration updated successfully
6665
8260
  */
6666
- 200: unknown;
8261
+ 200: ImporterConfigDto;
6667
8262
  /**
6668
- * Platform not found
8263
+ * Invalid input - Validation failed
6669
8264
  */
6670
- 404: unknown;
8265
+ 400: ApiProblemResponseDto;
8266
+ /**
8267
+ * Configuration not found
8268
+ */
8269
+ 404: ApiProblemResponseDto;
6671
8270
  };
6672
8271
  };
6673
- delete: {
6674
- req: PlatformControllerDeleteData;
8272
+ };
8273
+ '/api/v1/{region}/bean/import/config/{importerId}/reset': {
8274
+ post: {
8275
+ req: ImporterConfigControllerResetConfigData;
6675
8276
  res: {
6676
8277
  /**
6677
- * Platform deleted successfully
8278
+ * Configuration reset successfully
6678
8279
  */
6679
- 204: void;
8280
+ 200: ImporterConfigDto;
6680
8281
  /**
6681
- * Platform not found
8282
+ * Invalid input - Unsupported importer
6682
8283
  */
6683
- 404: unknown;
8284
+ 400: ApiProblemResponseDto;
6684
8285
  };
6685
8286
  };
6686
8287
  };
@@ -6688,7 +8289,22 @@ type $OpenApiTs = {
6688
8289
  post: {
6689
8290
  req: ProviderSyncControllerSyncData;
6690
8291
  res: {
6691
- 201: unknown;
8292
+ /**
8293
+ * Sync completed successfully
8294
+ */
8295
+ 200: ProviderSyncResponseDto;
8296
+ /**
8297
+ * Invalid request data
8298
+ */
8299
+ 400: unknown;
8300
+ /**
8301
+ * Missing or invalid authentication
8302
+ */
8303
+ 401: unknown;
8304
+ /**
8305
+ * Provider not supported
8306
+ */
8307
+ 404: unknown;
6692
8308
  };
6693
8309
  };
6694
8310
  };
@@ -6722,6 +8338,54 @@ type $OpenApiTs = {
6722
8338
  };
6723
8339
  };
6724
8340
  };
8341
+ '/api/v1/{region}/bean/external-account-links': {
8342
+ post: {
8343
+ req: ExternalAccountLinkControllerCreateData;
8344
+ res: {
8345
+ /**
8346
+ * Link created.
8347
+ */
8348
+ 201: ExternalAccountLinkResponseDto;
8349
+ /**
8350
+ * beanAccountId not owned, or an active link already exists.
8351
+ */
8352
+ 422: unknown;
8353
+ };
8354
+ };
8355
+ get: {
8356
+ req: ExternalAccountLinkControllerFindAllData;
8357
+ res: {
8358
+ /**
8359
+ * Links retrieved.
8360
+ */
8361
+ 200: ExternalAccountLinkListResponseDto;
8362
+ };
8363
+ };
8364
+ };
8365
+ '/api/v1/{region}/bean/external-account-links/{id}': {
8366
+ get: {
8367
+ req: ExternalAccountLinkControllerFindOneData;
8368
+ res: {
8369
+ /**
8370
+ * Link retrieved.
8371
+ */
8372
+ 200: ExternalAccountLinkResponseDto;
8373
+ /**
8374
+ * Link not found or not owned by the user.
8375
+ */
8376
+ 422: unknown;
8377
+ };
8378
+ };
8379
+ delete: {
8380
+ req: ExternalAccountLinkControllerRemoveData;
8381
+ res: {
8382
+ /**
8383
+ * Link soft-deleted; historical transactions are unaffected.
8384
+ */
8385
+ 204: void;
8386
+ };
8387
+ };
8388
+ };
6725
8389
  '/api/v1/{region}/bean/import/parser-telemetry': {
6726
8390
  post: {
6727
8391
  req: TelemetryControllerReportTelemetryData;
@@ -6767,7 +8431,18 @@ type $OpenApiTs = {
6767
8431
  post: {
6768
8432
  req: NlpControllerProcessNaturalLanguageData;
6769
8433
  res: {
6770
- 201: unknown;
8434
+ /**
8435
+ * NLP processing result - either created transaction or asking for more info
8436
+ */
8437
+ 200: NlpResponseDto;
8438
+ /**
8439
+ * Invalid input
8440
+ */
8441
+ 400: unknown;
8442
+ /**
8443
+ * Unauthorized
8444
+ */
8445
+ 401: unknown;
6771
8446
  };
6772
8447
  };
6773
8448
  };
@@ -6799,6 +8474,78 @@ type $OpenApiTs = {
6799
8474
  };
6800
8475
  };
6801
8476
  };
8477
+ '/api/v1/bean/platforms': {
8478
+ get: {
8479
+ res: {
8480
+ /**
8481
+ * List of platforms with binding and account counts
8482
+ */
8483
+ 200: unknown;
8484
+ };
8485
+ };
8486
+ post: {
8487
+ req: PlatformControllerCreateData;
8488
+ res: {
8489
+ /**
8490
+ * Platform created successfully
8491
+ */
8492
+ 201: unknown;
8493
+ /**
8494
+ * Platform already exists
8495
+ */
8496
+ 409: unknown;
8497
+ };
8498
+ };
8499
+ };
8500
+ '/api/v1/bean/platforms/list': {
8501
+ get: {
8502
+ res: {
8503
+ /**
8504
+ * List of platforms with user binding status
8505
+ */
8506
+ 200: Array<PlatformListItemDto>;
8507
+ };
8508
+ };
8509
+ };
8510
+ '/api/v1/bean/platforms/match': {
8511
+ get: {
8512
+ req: PlatformControllerMatchPlatformsData;
8513
+ res: {
8514
+ /**
8515
+ * Matching platforms with overall match type and truncation flag
8516
+ */
8517
+ 200: PlatformMatchResponseDto;
8518
+ };
8519
+ };
8520
+ };
8521
+ '/api/v1/bean/platforms/{id}': {
8522
+ put: {
8523
+ req: PlatformControllerUpdateData;
8524
+ res: {
8525
+ /**
8526
+ * Platform updated successfully
8527
+ */
8528
+ 200: unknown;
8529
+ /**
8530
+ * Platform not found
8531
+ */
8532
+ 404: unknown;
8533
+ };
8534
+ };
8535
+ delete: {
8536
+ req: PlatformControllerDeleteData;
8537
+ res: {
8538
+ /**
8539
+ * Platform deleted successfully
8540
+ */
8541
+ 204: void;
8542
+ /**
8543
+ * Platform not found
8544
+ */
8545
+ 404: unknown;
8546
+ };
8547
+ };
8548
+ };
6802
8549
  '/api/v1/{region}/dashboard/net-worth': {
6803
8550
  get: {
6804
8551
  req: DashboardControllerGetNetWorthData;
@@ -6848,16 +8595,16 @@ type $OpenApiTs = {
6848
8595
  };
6849
8596
  };
6850
8597
  };
6851
- '/api/v1/{region}/investment/holdings/pnl': {
8598
+ '/api/v1/{region}/dashboard/expenses': {
6852
8599
  get: {
6853
- req: HoldingPnlControllerGetHoldingPnlData;
8600
+ req: DashboardControllerGetExpensesData;
6854
8601
  res: {
6855
8602
  /**
6856
- * Holding P&L retrieved successfully
8603
+ * Expenses retrieved successfully
6857
8604
  */
6858
- 200: HoldingPnlResponseDto;
8605
+ 200: ExpensesByCategoryResponseDto;
6859
8606
  /**
6860
- * Invalid asOf format/value/future date, invalid accountId format, or unsupported method
8607
+ * Invalid groupBy or period
6861
8608
  */
6862
8609
  400: unknown;
6863
8610
  /**
@@ -6867,98 +8614,48 @@ type $OpenApiTs = {
6867
8614
  };
6868
8615
  };
6869
8616
  };
6870
- '/api/v1/{region}/bean/prices': {
6871
- post: {
6872
- req: PriceControllerCreateData;
8617
+ '/api/v1/{region}/investment/holdings/pnl': {
8618
+ get: {
8619
+ req: HoldingPnlControllerGetHoldingPnlData;
6873
8620
  res: {
6874
8621
  /**
6875
- * Price created successfully
6876
- */
6877
- 201: PriceResponseDto;
6878
- /**
6879
- * Currency or quoteCurrency commodity not found
8622
+ * Holding P&L retrieved successfully
6880
8623
  */
6881
- 404: unknown;
8624
+ 200: HoldingPnlResponseDto;
6882
8625
  /**
6883
- * Price already exists for this currency pair and date
8626
+ * Invalid asOf format/value/future date, invalid accountId format, or unsupported method
6884
8627
  */
6885
- 409: unknown;
6886
- };
6887
- };
6888
- get: {
6889
- req: PriceControllerFindAllData;
6890
- res: {
8628
+ 400: unknown;
6891
8629
  /**
6892
- * Prices retrieved successfully
8630
+ * User not authenticated
6893
8631
  */
6894
- 200: PriceListResponseDto;
8632
+ 401: unknown;
6895
8633
  };
6896
8634
  };
6897
8635
  };
6898
- '/api/v1/{region}/bean/prices/{id}': {
8636
+ '/api/v1/{region}/reporting/portfolio/trends': {
6899
8637
  get: {
6900
- req: PriceControllerFindOneData;
6901
- res: {
6902
- /**
6903
- * Price retrieved successfully
6904
- */
6905
- 200: PriceResponseDto;
6906
- /**
6907
- * Price not found
6908
- */
6909
- 404: unknown;
6910
- };
6911
- };
6912
- put: {
6913
- req: PriceControllerUpdateData;
6914
- res: {
6915
- /**
6916
- * Price updated successfully
6917
- */
6918
- 200: PriceResponseDto;
6919
- /**
6920
- * Price not found
6921
- */
6922
- 404: unknown;
6923
- /**
6924
- * Updated price conflicts with existing price
6925
- */
6926
- 409: unknown;
6927
- };
6928
- };
6929
- delete: {
6930
- req: PriceControllerDeleteData;
8638
+ req: ReportingControllerGetPortfolioTrendsData;
6931
8639
  res: {
6932
8640
  /**
6933
- * Price deleted successfully
6934
- */
6935
- 204: void;
6936
- /**
6937
- * Price not found
8641
+ * Trends retrieved successfully
6938
8642
  */
6939
- 404: unknown;
6940
- };
6941
- };
6942
- };
6943
- '/api/v1/{region}/bean/prices/bulk': {
6944
- post: {
6945
- req: PriceControllerBulkCreateData;
6946
- res: {
8643
+ 200: PortfolioTrendsResponseDto;
6947
8644
  /**
6948
- * Prices created successfully
8645
+ * User not authenticated
6949
8646
  */
6950
- 201: Array<PriceResponseDto>;
8647
+ 401: unknown;
6951
8648
  };
6952
8649
  };
6953
8650
  };
6954
- '/api/v1/{region}/reporting/portfolio/trends': {
8651
+ '/api/v1/{region}/reporting/cash-flow/trends': {
6955
8652
  get: {
6956
- req: ReportingControllerGetPortfolioTrendsData;
8653
+ req: ReportingControllerGetCashFlowTrendsData;
6957
8654
  res: {
6958
8655
  /**
6959
- * Trends retrieved successfully
8656
+ * Cash-flow trends retrieved successfully
6960
8657
  */
6961
- 200: PortfolioTrendsResponseDto;
8658
+ 200: CashFlowTrendsResponseDto;
6962
8659
  /**
6963
8660
  * User not authenticated
6964
8661
  */
@@ -7029,7 +8726,7 @@ type $OpenApiTs = {
7029
8726
  /**
7030
8727
  * Login successful
7031
8728
  */
7032
- 200: unknown;
8729
+ 200: AnonymousLoginResponseDto;
7033
8730
  /**
7034
8731
  * Invalid access token
7035
8732
  */
@@ -7180,10 +8877,12 @@ type $OpenApiTs = {
7180
8877
 
7181
8878
  declare class BeanAccountsService {
7182
8879
  /**
8880
+ * Create a new account
8881
+ * Creates a new account (Beancount Open directive)
7183
8882
  * @param data The data for the request.
7184
8883
  * @param data.region Region code for tenant context
7185
8884
  * @param data.requestBody
7186
- * @returns unknown
8885
+ * @returns AccountResponseDto Account created successfully
7187
8886
  * @throws ApiError
7188
8887
  */
7189
8888
  static accountControllerCreate(data: AccountControllerCreateData): CancelablePromise<AccountControllerCreateResponse>;
@@ -7195,7 +8894,7 @@ declare class BeanAccountsService {
7195
8894
  * @param data.type Filter by account type
7196
8895
  * @param data.status Filter by status
7197
8896
  * @param data.isCustom Filter by custom (user-created) accounts only
7198
- * @param data.search Search term for path or i18nKey
8897
+ * @param data.search Search term for account path
7199
8898
  * @param data.limit Maximum number of results
7200
8899
  * @param data.offset Number of results to skip
7201
8900
  * @returns AccountListResponseDto Accounts retrieved successfully
@@ -7213,40 +8912,59 @@ declare class BeanAccountsService {
7213
8912
  */
7214
8913
  static accountControllerFindOne(data: AccountControllerFindOneData): CancelablePromise<AccountControllerFindOneResponse>;
7215
8914
  /**
8915
+ * Update account
8916
+ * Updates account metadata (path cannot be changed)
7216
8917
  * @param data The data for the request.
7217
- * @param data.id
8918
+ * @param data.id Account UUID
7218
8919
  * @param data.region Region code for tenant context
7219
8920
  * @param data.requestBody
7220
- * @returns unknown
8921
+ * @returns AccountResponseDto Account updated successfully
7221
8922
  * @throws ApiError
7222
8923
  */
7223
8924
  static accountControllerUpdate(data: AccountControllerUpdateData): CancelablePromise<AccountControllerUpdateResponse>;
7224
8925
  /**
8926
+ * Delete account
8927
+ * Deletes an account (only if no transactions)
7225
8928
  * @param data The data for the request.
7226
- * @param data.id
8929
+ * @param data.id Account UUID
7227
8930
  * @param data.region Region code for tenant context
7228
- * @returns unknown
8931
+ * @returns void Account deleted successfully
7229
8932
  * @throws ApiError
7230
8933
  */
7231
8934
  static accountControllerDelete(data: AccountControllerDeleteData): CancelablePromise<AccountControllerDeleteResponse>;
7232
8935
  /**
8936
+ * Close account
8937
+ * Closes an account (Beancount Close directive)
7233
8938
  * @param data The data for the request.
7234
- * @param data.id
8939
+ * @param data.id Account UUID
7235
8940
  * @param data.region Region code for tenant context
7236
8941
  * @param data.requestBody
7237
- * @returns unknown
8942
+ * @returns AccountResponseDto Account closed successfully
7238
8943
  * @throws ApiError
7239
8944
  */
7240
8945
  static accountControllerClose(data: AccountControllerCloseData): CancelablePromise<AccountControllerCloseResponse>;
7241
8946
  /**
8947
+ * Reopen account
8948
+ * Reopens a previously closed account
7242
8949
  * @param data The data for the request.
7243
- * @param data.id
8950
+ * @param data.id Account UUID
7244
8951
  * @param data.region Region code for tenant context
7245
8952
  * @param data.requestBody
7246
- * @returns unknown
8953
+ * @returns AccountResponseDto Account reopened successfully
7247
8954
  * @throws ApiError
7248
8955
  */
7249
8956
  static accountControllerReopen(data: AccountControllerReopenData): CancelablePromise<AccountControllerReopenResponse>;
8957
+ /**
8958
+ * Post an opening-balance transaction
8959
+ * Posts a double-entry opening-balance transaction against Equity:Opening-Balances for an existing Assets/Liabilities account. At most one active opening balance per account.
8960
+ * @param data The data for the request.
8961
+ * @param data.id Account UUID
8962
+ * @param data.region Region code for tenant context
8963
+ * @param data.requestBody
8964
+ * @returns OpeningBalanceResultDto Opening-balance transaction created
8965
+ * @throws ApiError
8966
+ */
8967
+ static accountControllerAddOpeningBalance(data: AccountControllerAddOpeningBalanceData): CancelablePromise<AccountControllerAddOpeningBalanceResponse>;
7250
8968
  }
7251
8969
  declare class BeanTransactionsService {
7252
8970
  /**
@@ -7272,6 +8990,7 @@ declare class BeanTransactionsService {
7272
8990
  * @param data.status Filter by transaction status
7273
8991
  * @param data.search Search in narration and payee fields (max 200 chars)
7274
8992
  * @param data.accountId Filter by account ID (transactions with postings to this account)
8993
+ * @param data.category Filter by ADR-0075 functional category (Group segment); matches any posting to an Expenses/Income account whose derived Group segment equals this value
7275
8994
  * @returns TransactionListResponseDto Transaction list
7276
8995
  * @throws ApiError
7277
8996
  */
@@ -7347,7 +9066,7 @@ declare class BeanBalancesService {
7347
9066
  * Query account balance
7348
9067
  * Calculate account balance at a specific date for a single currency
7349
9068
  * @param data The data for the request.
7350
- * @param data.account Account name (e.g., "Assets:Bank:Checking")
9069
+ * @param data.account Account name (e.g., "Assets:Checking")
7351
9070
  * @param data.region Region code for tenant context
7352
9071
  * @param data.date Date to calculate balance at (ISO 8601 format)
7353
9072
  * @param data.currency Currency to query (e.g., "USD", "CNY")
@@ -7440,11 +9159,33 @@ declare class BeanCommoditiesService {
7440
9159
  }
7441
9160
  declare class ProviderSyncService {
7442
9161
  /**
9162
+ * Sync transactions from financial data provider
9163
+ *
9164
+ * Accepts raw transactions from external financial data providers, transforms them to Beancount format, and processes them through the ingestion pipeline.
9165
+ *
9166
+ * **Supported Providers:**
9167
+ * - **plaid**: Plaid API (US, Canada, Europe)
9168
+ * - **teller**: Teller API (US)
9169
+ * - **truelayer**: TrueLayer Open Banking (UK, Europe)
9170
+ * - **gocardless**: GoCardless Bank Account Data (Europe)
9171
+ * - **simplefin**: SimpleFIN (Self-hosted)
9172
+ * - **yodlee**: Yodlee (Global)
9173
+ * - **beancount-direct**: Beancount format transactions
9174
+ * - **parsed-bill**: Client-side parsed bill transactions
9175
+ *
9176
+ * **Processing Flow:**
9177
+ * 1. Transform raw data via provider adapter
9178
+ * 2. Validate transaction format
9179
+ * 3. Deduplicate using originalId
9180
+ * 4. Classify using rule engine
9181
+ * 5. Route low-confidence to Review Center
9182
+ * 6. Persist validated transactions
9183
+ *
7443
9184
  * @param data The data for the request.
7444
- * @param data.providerName
9185
+ * @param data.providerName Provider name
7445
9186
  * @param data.region Region code for tenant context
7446
9187
  * @param data.requestBody
7447
- * @returns unknown
9188
+ * @returns ProviderSyncResponseDto Sync completed successfully
7448
9189
  * @throws ApiError
7449
9190
  */
7450
9191
  static providerSyncControllerSync(data: ProviderSyncControllerSyncData): CancelablePromise<ProviderSyncControllerSyncResponse>;
@@ -7555,4 +9296,4 @@ type OpenAPIConfig = {
7555
9296
  };
7556
9297
  declare const OpenAPI: OpenAPIConfig;
7557
9298
 
7558
- export { type $OpenApiTs, type AccountControllerCloseData, type AccountControllerCloseResponse, type AccountControllerCreateData, type AccountControllerCreateResponse, type AccountControllerDeleteData, type AccountControllerDeleteResponse, type AccountControllerFindAllData, type AccountControllerFindAllResponse, type AccountControllerFindOneData, type AccountControllerFindOneResponse, type AccountControllerReopenData, type AccountControllerReopenResponse, type AccountControllerUpdateData, type AccountControllerUpdateResponse, type AccountExchangeRateWarningDto, type AccountItemDto, type AccountItemWithAssetClassDto, type AccountListResponseDto, type AccountResponseDto, type AccountStandardListResponseDto, type AccountStandardResponseDto, type AccountStandardsControllerGetRegionsData, type AccountStandardsControllerGetRegionsResponse, type AccountStandardsControllerGetTemplateMetadataData, type AccountStandardsControllerGetTemplateMetadataResponse, type AccountStandardsControllerGetTemplatesData, type AccountStandardsControllerGetTemplatesResponse, type AccountsResponseDto, type AccountsSummaryDto, type AmountDto, type AmountRangeDto, type AnonymousLoginDto, type ApiKeysControllerCreateApiKeyResponse, type ApiProblemResponseDto, type AssetClassAccountsResponseDto, type AssetClassGroupDto, type AssetClassSummaryDto, type AuthControllerAccessTokenLoginData, type AuthControllerAccessTokenLoginResponse, type BackfillSnapshotsBody, type BackfillSnapshotsResponse, type BalanceByCurrencyDto, type BalanceControllerGetBalanceData, type BalanceControllerGetBalanceResponse, type BalanceControllerGetMultiCurrencyBalanceData, type BalanceControllerGetMultiCurrencyBalanceResponse, type BalanceResponseDto, type BatchCreateTransactionDto, type BatchResolveDto, type BatchResolveResultDto, type BatchTransactionErrorDto, type BatchTransactionResponseDto, BeanAccountsService, BeanBalancesService, BeanCommoditiesService, BeanTransactionsService, type BulkCreateRulesDto, type BulkCreateRulesResponseDto, type CacheControllerFlushCacheResponse, type CashFlowByCurrencyDto, type CashFlowResponseDto, type CloseAccountDto, type CommodityControllerBulkCreateData, type CommodityControllerBulkCreateResponse, type CommodityControllerCreateData, type CommodityControllerCreateResponse, type CommodityControllerDeleteData, type CommodityControllerDeleteResponse, type CommodityControllerFindAllData, type CommodityControllerFindAllResponse, type CommodityControllerFindOneData, type CommodityControllerFindOneResponse, type CommodityControllerGetOrCreateData, type CommodityControllerGetOrCreateResponse, type CommodityControllerUpdateData, type CommodityControllerUpdateResponse, type CommodityListResponseDto, type CommodityResponseDto, type ConfirmMatchDto, type ConvertedCashFlowDto, type ConvertedNetWorthDto, type CorrectTransactionDto, type CostDetailDto, type CostSpecDto, type CreateAccountDto, type CreateBeanPriceDto, type CreateCommodityDto, type CreatePayeeDto, type CreatePayeeProfileDto, type CreatePlatformDto, type CreatePostingDto, type CreateRecurringRuleDto, type CreateRuleFromTransactionDto, type CreateTransactionDto, type CreateTransactionRuleDto, type CurrencyBalanceDto, type CurrentPriceDto, type DashboardControllerGetAccountsData, type DashboardControllerGetAccountsResponse, type DashboardControllerGetCashFlowData, type DashboardControllerGetCashFlowResponse, type DashboardControllerGetNetWorthData, type DashboardControllerGetNetWorthResponse, type DecisionOptionDto, type DeleteOwnUserDto, type EnterNowDto, type ExchangeRateControllerGetExchangeRateData, type ExchangeRateControllerGetExchangeRateResponse, type ExchangeRateWarningDto, type ExpectedTransactionControllerConfirmMatchData, type ExpectedTransactionControllerConfirmMatchResponse, type ExpectedTransactionControllerEnterNowData, type ExpectedTransactionControllerEnterNowResponse, type ExpectedTransactionControllerFindAllData, type ExpectedTransactionControllerFindAllResponse, type ExpectedTransactionControllerFindOneData, type ExpectedTransactionControllerFindOneResponse, type ExpectedTransactionControllerFindOverdueData, type ExpectedTransactionControllerFindOverdueResponse, type ExpectedTransactionControllerSkipData, type ExpectedTransactionControllerSkipResponse, type ExpectedTransactionControllerUndoSkipData, type ExpectedTransactionControllerUndoSkipResponse, type ExpectedTransactionControllerUnmatchData, type ExpectedTransactionControllerUnmatchResponse, type ExpectedTransactionListResponseDto, type ExpectedTransactionResponseDto, type ExpectedTransactionRuleDto, type ExportControllerExportBeancountResponse, type ExportRulesResponseDto, type FileImportControllerIdentifyFileData, type FileImportControllerIdentifyFileResponse, type FileImportControllerImportBeancountData, type FileImportControllerImportBeancountResponse, type FileImportControllerImportFileData, type FileImportControllerImportFileResponse, type FileImportDto, type ForecastControllerGetForecastData, type ForecastControllerGetForecastResponse, type ForecastItemDto, type ForecastResponseDto, type FxRateDto, type GenerateSnapshotBody, type GenerateSnapshotResponse, type HealthControllerCheckDatabaseResponse, type HealthControllerCheckOpenBbResponse, type HealthControllerCheckRedisResponse, type HealthControllerGetCircuitBreakersHealthResponse, type HealthControllerGetHealthResponse, type HealthControllerGetMetricsResponse, type HealthControllerResetCircuitBreakerData, type HealthControllerResetCircuitBreakerResponse, HealthService, type HoldingAssetClassAccountSliceDto, type HoldingAssetClassCrossAccountResponseDto, type HoldingPnlControllerGetHoldingPnlData, type HoldingPnlControllerGetHoldingPnlResponse, type HoldingPnlResponseDto, type HoldingPnlRowDto, type HoldingPnlWarningDto, type IdentifyResultDto, type ImportErrorDto, type ImportResultDto, type ImporterConfigControllerGetConfigData, type ImporterConfigControllerGetConfigResponse, type ImporterConfigControllerResetConfigData, type ImporterConfigControllerResetConfigResponse, type ImporterConfigControllerUpdateConfigData, type ImporterConfigControllerUpdateConfigResponse, type ImporterConfigDataDto, type ImporterConfigDto, type InfoControllerGetInfoResponse, type MapperDefaultsDto, type MonetaryDto, type MonthlyForecastDto, type MultiCurrencyBalanceResponseDto, type MultiCurrencyPointDto, type NetWorthByCurrencyDto, type NetWorthResponseDto, type NlpControllerClearSessionData, type NlpControllerClearSessionResponse, type NlpControllerGetSessionData, type NlpControllerGetSessionResponse, type NlpControllerProcessNaturalLanguageData, type NlpControllerProcessNaturalLanguageResponse, OpenAPI, type OpenAPIConfig, type ParserTelemetryReportDto, type PayeeAutocompleteResponseDto, type PayeeControllerAutocompleteData, type PayeeControllerAutocompleteResponse, type PayeeControllerCreateData, type PayeeControllerCreateResponse, type PayeeControllerDeleteData, type PayeeControllerDeleteResponse, type PayeeControllerFindAllData, type PayeeControllerFindAllResponse, type PayeeControllerFindOneData, type PayeeControllerFindOneResponse, type PayeeControllerGetTopPayeesData, type PayeeControllerGetTopPayeesResponse, type PayeeControllerUpdateData, type PayeeControllerUpdateResponse, type PayeeListResponseDto, type PayeeProfileAdminControllerCreateData, type PayeeProfileAdminControllerCreateResponse, type PayeeProfileAdminControllerDeleteData, type PayeeProfileAdminControllerDeleteResponse, type PayeeProfileAdminControllerFindAllData, type PayeeProfileAdminControllerFindAllResponse, type PayeeProfileAdminControllerFindOneData, type PayeeProfileAdminControllerFindOneResponse, type PayeeProfileAdminControllerUnverifyData, type PayeeProfileAdminControllerUnverifyResponse, type PayeeProfileAdminControllerUpdateData, type PayeeProfileAdminControllerUpdateResponse, type PayeeProfileAdminControllerVerifyData, type PayeeProfileAdminControllerVerifyResponse, type PayeeProfileListResponseDto, type PayeeProfileResponseDto, type PayeeResponseDto, type PayeeStatsResponseDto, type PlatformControllerCreateData, type PlatformControllerCreateResponse, type PlatformControllerDeleteData, type PlatformControllerDeleteResponse, type PlatformControllerFindAllResponse, type PlatformControllerGetPlatformListResponse, type PlatformControllerMatchPlatformsData, type PlatformControllerMatchPlatformsResponse, type PlatformControllerUpdateData, type PlatformControllerUpdateResponse, type PlatformGroupDto, type PortfolioTrendsResponseDto, type PostingDetailDto, type PostingResponseDto, type PriceControllerBulkCreateData, type PriceControllerBulkCreateResponse, type PriceControllerCreateData, type PriceControllerCreateResponse, type PriceControllerDeleteData, type PriceControllerDeleteResponse, type PriceControllerFindAllData, type PriceControllerFindAllResponse, type PriceControllerFindOneData, type PriceControllerFindOneResponse, type PriceControllerUpdateData, type PriceControllerUpdateResponse, type PriceListResponseDto, type PriceResponseDto, type ProcessNlpDto, type PropertyControllerDeleteData, type PropertyControllerDeleteResponse, type PropertyControllerGetAllResponse, type PropertyControllerGetByKeyData, type PropertyControllerGetByKeyResponse, type PropertyControllerUpdateData, type PropertyControllerUpdateResponse, type ProviderSyncConfigDto, type ProviderSyncControllerGetSupportedProvidersData, type ProviderSyncControllerGetSupportedProvidersResponse, type ProviderSyncControllerIsProviderSupportedData, type ProviderSyncControllerIsProviderSupportedResponse, type ProviderSyncControllerSyncData, type ProviderSyncControllerSyncResponse, type ProviderSyncDto, ProviderSyncService, type RecurringRuleControllerCreateData, type RecurringRuleControllerCreateFromTransactionData, type RecurringRuleControllerCreateFromTransactionResponse, type RecurringRuleControllerCreateResponse, type RecurringRuleControllerDeleteData, type RecurringRuleControllerDeleteResponse, type RecurringRuleControllerFindAllData, type RecurringRuleControllerFindAllResponse, type RecurringRuleControllerFindOneData, type RecurringRuleControllerFindOneResponse, type RecurringRuleControllerGetWithStatsData, type RecurringRuleControllerGetWithStatsResponse, type RecurringRuleControllerUpdateData, type RecurringRuleControllerUpdateResponse, type RecurringRuleResponseDto, type RecurringRuleWithStatsResponseDto, type RecurringSuggestionDto, type RegionConfigDto, type RegionInfoDto, type RegionsMetadataResponseDto, type ReopenAccountDto, type ReportingControllerBackfillSnapshotsData, type ReportingControllerBackfillSnapshotsResponse, type ReportingControllerGenerateSnapshotData, type ReportingControllerGenerateSnapshotResponse, type ReportingControllerGetPortfolioTrendsData, type ReportingControllerGetPortfolioTrendsResponse, type ResolveResultDto, type ResolveReviewDto, type ReviewControllerBatchResolveData, type ReviewControllerBatchResolveResponse, type ReviewControllerFindAllData, type ReviewControllerFindAllResponse, type ReviewControllerFindOneData, type ReviewControllerFindOneResponse, type ReviewControllerGetStatsData, type ReviewControllerGetStatsResponse, type ReviewControllerResolveData, type ReviewControllerResolveResponse, type ReviewControllerUndoData, type ReviewControllerUndoResponse, type ReviewDetailDto, type ReviewItemPreviewDto, type ReviewListResponseDto, type ReviewStatsDto, type ReviewSummaryDto, type RuleStatisticsResponseDto, type SignupDto, type SupportedProvidersResponseDto, type TagSuggestionDto, type TagSuggestionsResponseDto, type TelemetryControllerGetCoverageMetricsData, type TelemetryControllerGetCoverageMetricsResponse, type TelemetryControllerReportCoverageMissData, type TelemetryControllerReportCoverageMissResponse, type TelemetryControllerReportTelemetryData, type TelemetryControllerReportTelemetryResponse, type TemplateMetadataDto, type TemplateMetadataResponseDto, type TestRuleDto, type TestRuleResponseDto, type TimeSeriesPointDto, type TransactionControllerCorrectData, type TransactionControllerCorrectResponse, type TransactionControllerCreateBatchData, type TransactionControllerCreateBatchResponse, type TransactionControllerCreateData, type TransactionControllerCreateResponse, type TransactionControllerDeleteData, type TransactionControllerDeleteResponse, type TransactionControllerGetDetailData, type TransactionControllerGetDetailResponse, type TransactionControllerListData, type TransactionControllerListResponse, type TransactionControllerSuggestTagsData, type TransactionControllerSuggestTagsResponse, type TransactionControllerUpdateData, type TransactionControllerUpdateResponse, type TransactionDetailDto, type TransactionListResponseDto, type TransactionResponseDto, type TransactionRuleControllerBulkCreateData, type TransactionRuleControllerBulkCreateResponse, type TransactionRuleControllerCreateData, type TransactionRuleControllerCreateResponse, type TransactionRuleControllerDeleteData, type TransactionRuleControllerDeleteResponse, type TransactionRuleControllerExportData, type TransactionRuleControllerExportResponse, type TransactionRuleControllerGetDetailData, type TransactionRuleControllerGetDetailResponse, type TransactionRuleControllerGetStatisticsData, type TransactionRuleControllerGetStatisticsResponse, type TransactionRuleControllerListData, type TransactionRuleControllerListResponse, type TransactionRuleControllerTestData, type TransactionRuleControllerTestResponse, type TransactionRuleControllerUpdateData, type TransactionRuleControllerUpdateResponse, type TransactionRuleControllerValidateData, type TransactionRuleControllerValidateResponse, type TransactionRuleListResponseDto, type TransactionRuleResponseDto, type TransactionSummaryDto, type TrendSummaryDto, type UncoveredFormatMissDto, type UndoResultDto, type UpdateAccountDto, type UpdateBeanPriceDto, type UpdateCommodityDto, type UpdateConfigDataDto, type UpdateImporterConfigDto, type UpdateMapperDefaultsDto, type UpdatePayeeDto, type UpdatePayeeProfileDto, type UpdatePlatformDto, type UpdatePropertyDto, type UpdateRecurringRuleDto, type UpdateTransactionDto, type UpdateTransactionRuleDto, type UpdateUserSettingDto, type UserControllerDeleteOwnUserData, type UserControllerDeleteOwnUserResponse, type UserControllerDeleteUserData, type UserControllerDeleteUserResponse, type UserControllerGetAllUserSettingsByPageData, type UserControllerGetAllUserSettingsByPageResponse, type UserControllerGetAssetLiabilitySummaryResponse, type UserControllerGetUserData, type UserControllerGetUserInfoData, type UserControllerGetUserInfoResponse, type UserControllerGetUserResponse, type UserControllerSignupUserData, type UserControllerSignupUserResponse, type UserControllerUpdateUserSettingData, type UserControllerUpdateUserSettingResponse, type ValidateRuleDto, type ValidateRuleResponseDto, type VersionedConfigDto, type action, type assetClass, type bookingMethod, type branchType, type category, type chartToken, type colorScheme, type confidenceLevel, type conflictStrategy, type dataSource, type flag, type flag2, type frequency, type importerId, type learningSource, type matchLogic, type method, type mode, type period, type source, type source2, type status, type status2, type status3, type suggestedFrequency, type type, type type2, type type3, type type4, type value, type viewMode };
9299
+ export { type $OpenApiTs, type AccountControllerAddOpeningBalanceData, type AccountControllerAddOpeningBalanceResponse, type AccountControllerCloseData, type AccountControllerCloseResponse, type AccountControllerCreateData, type AccountControllerCreateResponse, type AccountControllerDeleteData, type AccountControllerDeleteResponse, type AccountControllerFindAllData, type AccountControllerFindAllResponse, type AccountControllerFindOneData, type AccountControllerFindOneResponse, type AccountControllerReopenData, type AccountControllerReopenResponse, type AccountControllerUpdateData, type AccountControllerUpdateResponse, type AccountExchangeRateWarningDto, type AccountItemDto, type AccountItemWithAssetClassDto, type AccountListResponseDto, type AccountResponseDto, type AccountStandardListResponseDto, type AccountStandardResponseDto, type AccountStandardsControllerGetRegionsData, type AccountStandardsControllerGetRegionsResponse, type AccountStandardsControllerGetTemplateMetadataData, type AccountStandardsControllerGetTemplateMetadataResponse, type AccountStandardsControllerGetTemplatesData, type AccountStandardsControllerGetTemplatesResponse, type AccountsResponseDto, type AccountsSummaryDto, type ActualBalanceDto, type AmountDto, type AmountRangeDto, type AnonymousLoginDto, type AnonymousLoginResponseDto, type ApiKeysControllerCreateApiKeyResponse, type ApiProblemResponseDto, type AssertReconciliationDto, type AssetClassAccountsResponseDto, type AssetClassGroupDto, type AssetClassSummaryDto, type AuthControllerAccessTokenLoginData, type AuthControllerAccessTokenLoginResponse, type BackfillSnapshotsBody, type BackfillSnapshotsResponse, type BalanceByCurrencyDto, type BalanceControllerGetBalanceData, type BalanceControllerGetBalanceResponse, type BalanceControllerGetMultiCurrencyBalanceData, type BalanceControllerGetMultiCurrencyBalanceResponse, type BalanceResponseDto, type BatchCreateTransactionDto, type BatchResolveDto, type BatchResolveResultDto, type BatchTransactionErrorDto, type BatchTransactionResponseDto, BeanAccountsService, BeanBalancesService, BeanCommoditiesService, BeanTransactionsService, type BulkCreateRulesDto, type BulkCreateRulesResponseDto, type CacheControllerFlushCacheResponse, type CashFlowByCurrencyDto, type CashFlowPointDto, type CashFlowResponseDto, type CashFlowTrendSummaryDto, type CashFlowTrendsResponseDto, type CategoryGroupDto, type CloseAccountDto, type CommodityControllerBulkCreateData, type CommodityControllerBulkCreateResponse, type CommodityControllerCreateData, type CommodityControllerCreateResponse, type CommodityControllerDeleteData, type CommodityControllerDeleteResponse, type CommodityControllerFindAllData, type CommodityControllerFindAllResponse, type CommodityControllerFindOneData, type CommodityControllerFindOneResponse, type CommodityControllerGetOrCreateData, type CommodityControllerGetOrCreateResponse, type CommodityControllerUpdateData, type CommodityControllerUpdateResponse, type CommodityListResponseDto, type CommodityResponseDto, type ComputeReconciliationDto, type ConfirmMatchDto, type ConvertedCashFlowDto, type ConvertedNetWorthDto, type CorrectTransactionDto, type CostDetailDto, type CostSpecDto, type CreateAccountDto, type CreateBeanEventDto, type CreateBeanPriceDto, type CreateCommodityDto, type CreateExternalAccountLinkDto, type CreateOpeningBalanceDto, type CreatePayeeDto, type CreatePayeeProfileDto, type CreatePlatformDto, type CreatePostingDto, type CreateRecurringRuleDto, type CreateRuleFromTransactionDto, type CreateTransactionDto, type CreateTransactionRuleDto, type CurrencyBalanceDto, type CurrentPriceDto, type DashboardControllerGetAccountsData, type DashboardControllerGetAccountsResponse, type DashboardControllerGetCashFlowData, type DashboardControllerGetCashFlowResponse, type DashboardControllerGetExpensesData, type DashboardControllerGetExpensesResponse, type DashboardControllerGetNetWorthData, type DashboardControllerGetNetWorthResponse, type DecisionOptionDto, type DeleteOwnUserDto, type EnterNowDto, type EventControllerCreateData, type EventControllerCreateResponse, type EventControllerDeleteData, type EventControllerDeleteResponse, type EventControllerFindAllData, type EventControllerFindAllResponse, type EventControllerFindOneData, type EventControllerFindOneResponse, type EventControllerGetSliceData, type EventControllerGetSliceResponse, type EventControllerUpdateData, type EventControllerUpdateResponse, type EventListResponseDto, type EventResponseDto, type ExchangeRateControllerGetExchangeRateData, type ExchangeRateControllerGetExchangeRateResponse, type ExchangeRateWarningDto, type ExpectedTransactionControllerConfirmMatchData, type ExpectedTransactionControllerConfirmMatchResponse, type ExpectedTransactionControllerEnterNowData, type ExpectedTransactionControllerEnterNowResponse, type ExpectedTransactionControllerFindAllData, type ExpectedTransactionControllerFindAllResponse, type ExpectedTransactionControllerFindOneData, type ExpectedTransactionControllerFindOneResponse, type ExpectedTransactionControllerFindOverdueData, type ExpectedTransactionControllerFindOverdueResponse, type ExpectedTransactionControllerSkipData, type ExpectedTransactionControllerSkipResponse, type ExpectedTransactionControllerUndoSkipData, type ExpectedTransactionControllerUndoSkipResponse, type ExpectedTransactionControllerUnmatchData, type ExpectedTransactionControllerUnmatchResponse, type ExpectedTransactionListResponseDto, type ExpectedTransactionResponseDto, type ExpectedTransactionRuleDto, type ExpensesByCategoryResponseDto, type ExpensesByCategorySummaryDto, type ExportControllerExportBeancountResponse, type ExportRulesResponseDto, type ExternalAccountLinkControllerCreateData, type ExternalAccountLinkControllerCreateResponse, type ExternalAccountLinkControllerFindAllData, type ExternalAccountLinkControllerFindAllResponse, type ExternalAccountLinkControllerFindOneData, type ExternalAccountLinkControllerFindOneResponse, type ExternalAccountLinkControllerRemoveData, type ExternalAccountLinkControllerRemoveResponse, type ExternalAccountLinkListResponseDto, type ExternalAccountLinkResponseDto, type FileImportControllerIdentifyFileData, type FileImportControllerIdentifyFileResponse, type FileImportControllerImportBeancountData, type FileImportControllerImportBeancountResponse, type FileImportControllerImportFileData, type FileImportControllerImportFileResponse, type FileImportDto, type ForecastControllerGetForecastData, type ForecastControllerGetForecastResponse, type ForecastItemDto, type ForecastResponseDto, type FxRateDto, type GenerateSnapshotBody, type GenerateSnapshotResponse, type HealthControllerCheckDatabaseResponse, type HealthControllerCheckOpenBbResponse, type HealthControllerCheckRedisResponse, type HealthControllerGetCircuitBreakersHealthResponse, type HealthControllerGetHealthResponse, type HealthControllerGetMetricsResponse, type HealthControllerResetCircuitBreakerData, type HealthControllerResetCircuitBreakerResponse, HealthService, type HoldingAssetClassAccountSliceDto, type HoldingAssetClassCrossAccountResponseDto, type HoldingPnlControllerGetHoldingPnlData, type HoldingPnlControllerGetHoldingPnlResponse, type HoldingPnlResponseDto, type HoldingPnlRowDto, type HoldingPnlWarningDto, type IdentifyResultDto, type ImportErrorDto, type ImportResultDto, type ImporterConfigControllerGetConfigData, type ImporterConfigControllerGetConfigResponse, type ImporterConfigControllerResetConfigData, type ImporterConfigControllerResetConfigResponse, type ImporterConfigControllerUpdateConfigData, type ImporterConfigControllerUpdateConfigResponse, type ImporterConfigDataDto, type ImporterConfigDto, type InfoControllerGetInfoResponse, type MapperDefaultsDto, type MonetaryDto, type MonthlyForecastDto, type MultiCurrencyBalanceResponseDto, type MultiCurrencyPointDto, type NetWorthByCurrencyDto, type NetWorthResponseDto, type NlpAccountConfirmationDataDto, type NlpAlternativePayeeDto, type NlpControllerClearSessionData, type NlpControllerClearSessionResponse, type NlpControllerGetSessionData, type NlpControllerGetSessionResponse, type NlpControllerProcessNaturalLanguageData, type NlpControllerProcessNaturalLanguageResponse, type NlpDefaultAccountsDto, type NlpDuplicateConfirmationDataDto, type NlpParsedDataDto, type NlpPayeeConfirmationDataDto, type NlpResponseDto, type NlpRuleConfirmationDataDto, type NlpSimilarityDto, type NlpSourceTransactionDto, type NlpSuggestedAccountDto, type NlpSuggestedAccountsDto, type NlpSuggestedPayeeDto, type NlpTargetTransactionDto, type NlpTransactionInfoDto, type OnboardingAccountDto, type OnboardingControllerBootstrapData, type OnboardingControllerBootstrapResponse, type OnboardingDto, OpenAPI, type OpenAPIConfig, type OpeningBalanceResultDto, type PadReconciliationDto, type PadResultDto, type ParserTelemetryReportDto, type PayeeAutocompleteResponseDto, type PayeeControllerAutocompleteData, type PayeeControllerAutocompleteResponse, type PayeeControllerCreateData, type PayeeControllerCreateResponse, type PayeeControllerDeleteData, type PayeeControllerDeleteResponse, type PayeeControllerFindAllData, type PayeeControllerFindAllResponse, type PayeeControllerFindOneData, type PayeeControllerFindOneResponse, type PayeeControllerGetTopPayeesData, type PayeeControllerGetTopPayeesResponse, type PayeeControllerUpdateData, type PayeeControllerUpdateResponse, type PayeeListResponseDto, type PayeeProfileAdminControllerCreateData, type PayeeProfileAdminControllerCreateResponse, type PayeeProfileAdminControllerDeleteData, type PayeeProfileAdminControllerDeleteResponse, type PayeeProfileAdminControllerFindAllData, type PayeeProfileAdminControllerFindAllResponse, type PayeeProfileAdminControllerFindOneData, type PayeeProfileAdminControllerFindOneResponse, type PayeeProfileAdminControllerUnverifyData, type PayeeProfileAdminControllerUnverifyResponse, type PayeeProfileAdminControllerUpdateData, type PayeeProfileAdminControllerUpdateResponse, type PayeeProfileAdminControllerVerifyData, type PayeeProfileAdminControllerVerifyResponse, type PayeeProfileListResponseDto, type PayeeProfileResponseDto, type PayeeResponseDto, type PayeeStatsResponseDto, type PlatformControllerCreateData, type PlatformControllerCreateResponse, type PlatformControllerDeleteData, type PlatformControllerDeleteResponse, type PlatformControllerFindAllResponse, type PlatformControllerGetPlatformListResponse, type PlatformControllerMatchPlatformsData, type PlatformControllerMatchPlatformsResponse, type PlatformControllerUpdateData, type PlatformControllerUpdateResponse, type PlatformGroupDto, type PlatformListItemDto, type PlatformMatchResponseDto, type PlatformMatchResultDto, type PortfolioTrendsResponseDto, type PostingDetailDto, type PostingResponseDto, type PriceControllerBulkCreateData, type PriceControllerBulkCreateResponse, type PriceControllerCreateData, type PriceControllerCreateResponse, type PriceControllerDeleteData, type PriceControllerDeleteResponse, type PriceControllerFindAllData, type PriceControllerFindAllResponse, type PriceControllerFindOneData, type PriceControllerFindOneResponse, type PriceControllerUpdateData, type PriceControllerUpdateResponse, type PriceListResponseDto, type PriceResponseDto, type ProcessNlpDto, type PropertyControllerDeleteData, type PropertyControllerDeleteResponse, type PropertyControllerGetAllResponse, type PropertyControllerGetByKeyData, type PropertyControllerGetByKeyResponse, type PropertyControllerUpdateData, type PropertyControllerUpdateResponse, type ProviderSyncConfigDto, type ProviderSyncControllerGetSupportedProvidersData, type ProviderSyncControllerGetSupportedProvidersResponse, type ProviderSyncControllerIsProviderSupportedData, type ProviderSyncControllerIsProviderSupportedResponse, type ProviderSyncControllerSyncData, type ProviderSyncControllerSyncResponse, type ProviderSyncDto, type ProviderSyncResponseDto, ProviderSyncService, type ReconciliationComputeResultDto, type ReconciliationControllerAssertData, type ReconciliationControllerAssertResponse, type ReconciliationControllerComputeData, type ReconciliationControllerComputeResponse, type ReconciliationControllerHistoryData, type ReconciliationControllerHistoryResponse, type ReconciliationControllerPadData, type ReconciliationControllerPadResponse, type ReconciliationRecordDto, type RecurringMatchInfoDto, type RecurringRuleControllerCreateData, type RecurringRuleControllerCreateFromTransactionData, type RecurringRuleControllerCreateFromTransactionResponse, type RecurringRuleControllerCreateResponse, type RecurringRuleControllerDeleteData, type RecurringRuleControllerDeleteResponse, type RecurringRuleControllerFindAllData, type RecurringRuleControllerFindAllResponse, type RecurringRuleControllerFindOneData, type RecurringRuleControllerFindOneResponse, type RecurringRuleControllerGetWithStatsData, type RecurringRuleControllerGetWithStatsResponse, type RecurringRuleControllerUpdateData, type RecurringRuleControllerUpdateResponse, type RecurringRuleResponseDto, type RecurringRuleWithStatsResponseDto, type RecurringSuggestionDto, type RegionConfigDto, type RegionInfoDto, type RegionsMetadataResponseDto, type ReopenAccountDto, type ReportingControllerBackfillSnapshotsData, type ReportingControllerBackfillSnapshotsResponse, type ReportingControllerGenerateSnapshotData, type ReportingControllerGenerateSnapshotResponse, type ReportingControllerGetCashFlowTrendsData, type ReportingControllerGetCashFlowTrendsResponse, type ReportingControllerGetPortfolioTrendsData, type ReportingControllerGetPortfolioTrendsResponse, type ResolveResultDto, type ResolveReviewDto, type ReviewControllerBatchResolveData, type ReviewControllerBatchResolveResponse, type ReviewControllerFindAllData, type ReviewControllerFindAllResponse, type ReviewControllerFindOneData, type ReviewControllerFindOneResponse, type ReviewControllerGetStatsData, type ReviewControllerGetStatsResponse, type ReviewControllerResolveData, type ReviewControllerResolveResponse, type ReviewControllerUndoData, type ReviewControllerUndoResponse, type ReviewDetailDto, type ReviewItemPreviewDto, type ReviewListResponseDto, type ReviewStatsDto, type ReviewSummaryDto, type RuleStatisticsResponseDto, type SignupDto, type SignupResponseDto, type SupportedProvidersResponseDto, type TagSuggestionDto, type TagSuggestionsResponseDto, type TelemetryControllerGetCoverageMetricsData, type TelemetryControllerGetCoverageMetricsResponse, type TelemetryControllerReportCoverageMissData, type TelemetryControllerReportCoverageMissResponse, type TelemetryControllerReportTelemetryData, type TelemetryControllerReportTelemetryResponse, type TemplateMetadataDto, type TemplateMetadataResponseDto, type TestRuleDto, type TestRuleResponseDto, type TimeSeriesPointDto, type TransactionControllerCorrectData, type TransactionControllerCorrectResponse, type TransactionControllerCreateBatchData, type TransactionControllerCreateBatchResponse, type TransactionControllerCreateData, type TransactionControllerCreateResponse, type TransactionControllerDeleteData, type TransactionControllerDeleteResponse, type TransactionControllerGetDetailData, type TransactionControllerGetDetailResponse, type TransactionControllerListData, type TransactionControllerListResponse, type TransactionControllerSuggestTagsData, type TransactionControllerSuggestTagsResponse, type TransactionControllerUpdateData, type TransactionControllerUpdateResponse, type TransactionDetailDto, type TransactionListResponseDto, type TransactionListSummaryDto, type TransactionResponseDto, type TransactionRuleControllerBulkCreateData, type TransactionRuleControllerBulkCreateResponse, type TransactionRuleControllerCreateData, type TransactionRuleControllerCreateResponse, type TransactionRuleControllerDeleteData, type TransactionRuleControllerDeleteResponse, type TransactionRuleControllerExportData, type TransactionRuleControllerExportResponse, type TransactionRuleControllerGetDetailData, type TransactionRuleControllerGetDetailResponse, type TransactionRuleControllerGetStatisticsData, type TransactionRuleControllerGetStatisticsResponse, type TransactionRuleControllerListData, type TransactionRuleControllerListResponse, type TransactionRuleControllerTestData, type TransactionRuleControllerTestResponse, type TransactionRuleControllerUpdateData, type TransactionRuleControllerUpdateResponse, type TransactionRuleControllerValidateData, type TransactionRuleControllerValidateResponse, type TransactionRuleListResponseDto, type TransactionRuleResponseDto, type TransactionSummaryDto, type TrendSummaryDto, type UncoveredFormatMissDto, type UndoResultDto, type UpdateAccountDto, type UpdateBeanEventDto, type UpdateBeanPriceDto, type UpdateCommodityDto, type UpdateConfigDataDto, type UpdateImporterConfigDto, type UpdateMapperDefaultsDto, type UpdatePayeeDto, type UpdatePayeeProfileDto, type UpdatePlatformDto, type UpdatePropertyDto, type UpdateRecurringRuleDto, type UpdateTransactionDto, type UpdateTransactionRuleDto, type UpdateUserSettingDto, type UserControllerDeleteOwnUserData, type UserControllerDeleteOwnUserResponse, type UserControllerDeleteUserData, type UserControllerDeleteUserResponse, type UserControllerGetAllUserSettingsByPageData, type UserControllerGetAllUserSettingsByPageResponse, type UserControllerGetAssetLiabilitySummaryResponse, type UserControllerGetUserData, type UserControllerGetUserInfoData, type UserControllerGetUserInfoResponse, type UserControllerGetUserResponse, type UserControllerSignupUserData, type UserControllerSignupUserResponse, type UserControllerUpdateUserSettingData, type UserControllerUpdateUserSettingResponse, type ValidateRuleDto, type ValidateRuleResponseDto, type VersionedConfigDto, type action, type action2, type assetClass, type assetSubType, type bookingMethod, type branchType, type category, type chartToken, type colorScheme, type confidenceLevel, type conflictStrategy, type dataSource, type equitySubType, type flag, type flag2, type frequency, type importerId, type intent, type investmentAction, type learningSource, type liabilitySubType, type matchLogic, type matchType, type matchType2, type method, type mode, type paymentSource, type period, type provider, type role, type source, type source2, type source3, type status, type status2, type status3, type status4, type suggestedAction, type suggestedFrequency, type type, type type2, type type3, type type4, type value, type viewMode };