@cranberry-money/shared-services 3.0.1 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/dist/index.d.ts +0 -27
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +1 -115
  4. package/package.json +4 -3
  5. package/dist/api/functional-client.d.ts +0 -66
  6. package/dist/api/functional-client.d.ts.map +0 -1
  7. package/dist/api/functional-client.js +0 -165
  8. package/dist/auth/functional/auth-operations.d.ts +0 -116
  9. package/dist/auth/functional/auth-operations.d.ts.map +0 -1
  10. package/dist/auth/functional/auth-operations.js +0 -246
  11. package/dist/auth/functional/auth-state.d.ts +0 -38
  12. package/dist/auth/functional/auth-state.d.ts.map +0 -1
  13. package/dist/auth/functional/auth-state.js +0 -87
  14. package/dist/auth/functional/token-storage.d.ts +0 -44
  15. package/dist/auth/functional/token-storage.d.ts.map +0 -1
  16. package/dist/auth/functional/token-storage.js +0 -178
  17. package/dist/auth/react/AuthProvider.d.ts +0 -92
  18. package/dist/auth/react/AuthProvider.d.ts.map +0 -1
  19. package/dist/auth/react/AuthProvider.js +0 -207
  20. package/dist/integration/blueberry-integration.d.ts +0 -21
  21. package/dist/integration/blueberry-integration.d.ts.map +0 -1
  22. package/dist/integration/blueberry-integration.js +0 -109
  23. package/dist/integration/index.d.ts +0 -8
  24. package/dist/integration/index.d.ts.map +0 -1
  25. package/dist/integration/index.js +0 -18
  26. package/dist/services/accounts.d.ts +0 -220
  27. package/dist/services/accounts.d.ts.map +0 -1
  28. package/dist/services/accounts.js +0 -175
  29. package/dist/services/banks.d.ts +0 -123
  30. package/dist/services/banks.d.ts.map +0 -1
  31. package/dist/services/banks.js +0 -151
  32. package/dist/services/cash-accounts.d.ts +0 -112
  33. package/dist/services/cash-accounts.d.ts.map +0 -1
  34. package/dist/services/cash-accounts.js +0 -222
  35. package/dist/services/documents.d.ts +0 -143
  36. package/dist/services/documents.d.ts.map +0 -1
  37. package/dist/services/documents.js +0 -253
  38. package/dist/services/factories/account-factory.d.ts +0 -16
  39. package/dist/services/factories/account-factory.d.ts.map +0 -1
  40. package/dist/services/factories/account-factory.js +0 -79
  41. package/dist/services/factories/auth-factory.d.ts +0 -23
  42. package/dist/services/factories/auth-factory.d.ts.map +0 -1
  43. package/dist/services/factories/auth-factory.js +0 -75
  44. package/dist/services/factories/bank-factory.d.ts +0 -16
  45. package/dist/services/factories/bank-factory.d.ts.map +0 -1
  46. package/dist/services/factories/bank-factory.js +0 -72
  47. package/dist/services/factories/cash-account-factory.d.ts +0 -16
  48. package/dist/services/factories/cash-account-factory.d.ts.map +0 -1
  49. package/dist/services/factories/cash-account-factory.js +0 -74
  50. package/dist/services/factories/document-factory.d.ts +0 -16
  51. package/dist/services/factories/document-factory.d.ts.map +0 -1
  52. package/dist/services/factories/document-factory.js +0 -85
  53. package/dist/services/factories/index.d.ts +0 -21
  54. package/dist/services/factories/index.d.ts.map +0 -1
  55. package/dist/services/factories/index.js +0 -40
  56. package/dist/services/factories/instrument-factory.d.ts +0 -16
  57. package/dist/services/factories/instrument-factory.d.ts.map +0 -1
  58. package/dist/services/factories/instrument-factory.js +0 -68
  59. package/dist/services/factories/master-factory.d.ts +0 -74
  60. package/dist/services/factories/master-factory.d.ts.map +0 -1
  61. package/dist/services/factories/master-factory.js +0 -183
  62. package/dist/services/factories/portfolio-factory.d.ts +0 -16
  63. package/dist/services/factories/portfolio-factory.d.ts.map +0 -1
  64. package/dist/services/factories/portfolio-factory.js +0 -74
  65. package/dist/services/factories/portfolio-template-factory.d.ts +0 -16
  66. package/dist/services/factories/portfolio-template-factory.d.ts.map +0 -1
  67. package/dist/services/factories/portfolio-template-factory.js +0 -76
  68. package/dist/services/factories/reference-data-factory.d.ts +0 -16
  69. package/dist/services/factories/reference-data-factory.d.ts.map +0 -1
  70. package/dist/services/factories/reference-data-factory.js +0 -86
  71. package/dist/services/factories/tax-residency-factory.d.ts +0 -16
  72. package/dist/services/factories/tax-residency-factory.d.ts.map +0 -1
  73. package/dist/services/factories/tax-residency-factory.js +0 -73
  74. package/dist/services/factories/trade-factory.d.ts +0 -16
  75. package/dist/services/factories/trade-factory.d.ts.map +0 -1
  76. package/dist/services/factories/trade-factory.js +0 -79
  77. package/dist/services/factories/types.d.ts +0 -250
  78. package/dist/services/factories/types.d.ts.map +0 -1
  79. package/dist/services/factories/types.js +0 -32
  80. package/dist/services/factories/withdrawal-factory.d.ts +0 -16
  81. package/dist/services/factories/withdrawal-factory.d.ts.map +0 -1
  82. package/dist/services/factories/withdrawal-factory.js +0 -78
  83. package/dist/services/instruments.d.ts +0 -138
  84. package/dist/services/instruments.d.ts.map +0 -1
  85. package/dist/services/instruments.js +0 -178
  86. package/dist/services/portfolio-templates.d.ts +0 -142
  87. package/dist/services/portfolio-templates.d.ts.map +0 -1
  88. package/dist/services/portfolio-templates.js +0 -201
  89. package/dist/services/portfolios.d.ts +0 -157
  90. package/dist/services/portfolios.d.ts.map +0 -1
  91. package/dist/services/portfolios.js +0 -144
  92. package/dist/services/reference-data.d.ts +0 -185
  93. package/dist/services/reference-data.d.ts.map +0 -1
  94. package/dist/services/reference-data.js +0 -245
  95. package/dist/services/tax-residencies.d.ts +0 -83
  96. package/dist/services/tax-residencies.d.ts.map +0 -1
  97. package/dist/services/tax-residencies.js +0 -179
  98. package/dist/services/trades.d.ts +0 -190
  99. package/dist/services/trades.d.ts.map +0 -1
  100. package/dist/services/trades.js +0 -207
  101. package/dist/services/withdrawals.d.ts +0 -236
  102. package/dist/services/withdrawals.d.ts.map +0 -1
  103. package/dist/services/withdrawals.js +0 -345
@@ -1,175 +0,0 @@
1
- "use strict";
2
- /**
3
- * Account Services - Pure Functional Implementation
4
- *
5
- * User account, profile, and investment preferences operations as pure functions.
6
- * No global state, no side effects - everything is explicit and testable.
7
- */
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.INVESTMENT_EXPERIENCE_LABELS = exports.RISK_TOLERANCE_LABELS = exports.INVESTMENT_HORIZON_LABELS = exports.SOURCE_OF_FUNDS_OPTIONS = exports.SOURCE_OF_FUNDS_LABELS = exports.SOURCE_OF_FUNDS = exports.deleteInvestmentPreference = exports.updateInvestmentPreference = exports.createInvestmentPreference = exports.getInvestmentPreference = exports.getInvestmentPreferences = exports.updateAccount = exports.createAccount = exports.getAccount = exports.getUserAccounts = exports.getAccounts = exports.updateUserProfileCompletion = exports.updateUserProfileById = exports.createUserProfile = exports.getUserProfiles = exports.deleteUserAccount = exports.updateUserProfile = exports.getUserProfile = void 0;
10
- // User operations with explicit dependencies
11
- const getUserProfile = async ({ apiClient }) => {
12
- return apiClient.get('/api/users/profile/');
13
- };
14
- exports.getUserProfile = getUserProfile;
15
- const updateUserProfile = async ({ apiClient }, data) => {
16
- return apiClient.patch('/api/users/profile/', data);
17
- };
18
- exports.updateUserProfile = updateUserProfile;
19
- const deleteUserAccount = async ({ apiClient }) => {
20
- await apiClient.delete('/api/users/profile/');
21
- };
22
- exports.deleteUserAccount = deleteUserAccount;
23
- // User profile operations
24
- const getUserProfiles = async ({ apiClient }) => {
25
- return apiClient.get('/api/user-profiles/');
26
- };
27
- exports.getUserProfiles = getUserProfiles;
28
- const createUserProfile = async ({ apiClient }, data) => {
29
- return apiClient.post('/api/user-profiles/', data);
30
- };
31
- exports.createUserProfile = createUserProfile;
32
- const updateUserProfileById = async ({ apiClient }, uuid, data) => {
33
- if (!uuid?.trim()) {
34
- throw new Error('User profile UUID is required');
35
- }
36
- return apiClient.patch(`/api/user-profiles/${uuid}/`, data);
37
- };
38
- exports.updateUserProfileById = updateUserProfileById;
39
- const updateUserProfileCompletion = async ({ apiClient }, uuid, data) => {
40
- if (!uuid?.trim()) {
41
- throw new Error('User profile UUID is required');
42
- }
43
- return apiClient.patch(`/api/user-profiles/${uuid}/`, data);
44
- };
45
- exports.updateUserProfileCompletion = updateUserProfileCompletion;
46
- // Account operations with explicit dependencies
47
- const getAccounts = async ({ apiClient }) => {
48
- return apiClient.get('/api/accounts/');
49
- };
50
- exports.getAccounts = getAccounts;
51
- const getUserAccounts = async ({ apiClient }) => {
52
- const response = await (0, exports.getAccounts)({ apiClient });
53
- return response.results;
54
- };
55
- exports.getUserAccounts = getUserAccounts;
56
- const getAccount = async ({ apiClient }, uuid) => {
57
- if (!uuid?.trim()) {
58
- throw new Error('Account UUID is required');
59
- }
60
- return apiClient.get(`/api/accounts/${uuid}/`);
61
- };
62
- exports.getAccount = getAccount;
63
- const createAccount = async ({ apiClient }, data) => {
64
- // Validation
65
- if (!data.accountType?.trim()) {
66
- throw new Error('Account type is required');
67
- }
68
- if (!data.name?.trim()) {
69
- throw new Error('Account name is required');
70
- }
71
- if (!data.userProfile?.trim()) {
72
- throw new Error('User profile UUID is required');
73
- }
74
- return apiClient.post('/api/accounts/', data);
75
- };
76
- exports.createAccount = createAccount;
77
- const updateAccount = async ({ apiClient }, uuid, data) => {
78
- if (!uuid?.trim()) {
79
- throw new Error('Account UUID is required');
80
- }
81
- return apiClient.patch(`/api/accounts/${uuid}/`, data);
82
- };
83
- exports.updateAccount = updateAccount;
84
- // Investment preferences operations
85
- const getInvestmentPreferences = async ({ apiClient }) => {
86
- return apiClient.get('/api/investment-preferences/');
87
- };
88
- exports.getInvestmentPreferences = getInvestmentPreferences;
89
- const getInvestmentPreference = async ({ apiClient }, uuid) => {
90
- if (!uuid?.trim()) {
91
- throw new Error('Investment preference UUID is required');
92
- }
93
- return apiClient.get(`/api/investment-preferences/${uuid}/`);
94
- };
95
- exports.getInvestmentPreference = getInvestmentPreference;
96
- const createInvestmentPreference = async ({ apiClient }, data) => {
97
- // Validation
98
- if (!data.userProfile?.trim()) {
99
- throw new Error('User profile UUID is required');
100
- }
101
- if (!data.investmentHorizon) {
102
- throw new Error('Investment horizon is required');
103
- }
104
- if (!data.riskTolerance) {
105
- throw new Error('Risk tolerance is required');
106
- }
107
- if (!data.investmentExperience) {
108
- throw new Error('Investment experience is required');
109
- }
110
- if (!data.sourceOfFunds?.length) {
111
- throw new Error('At least one source of funds is required');
112
- }
113
- const payload = {
114
- ...data,
115
- investmentAmount: String(data.investmentAmount),
116
- };
117
- return apiClient.post('/api/investment-preferences/', payload);
118
- };
119
- exports.createInvestmentPreference = createInvestmentPreference;
120
- const updateInvestmentPreference = async ({ apiClient }, uuid, data) => {
121
- if (!uuid?.trim()) {
122
- throw new Error('Investment preference UUID is required');
123
- }
124
- const payload = { ...data };
125
- if (data.investmentAmount !== undefined) {
126
- payload.investmentAmount = String(data.investmentAmount);
127
- }
128
- return apiClient.patch(`/api/investment-preferences/${uuid}/`, payload);
129
- };
130
- exports.updateInvestmentPreference = updateInvestmentPreference;
131
- const deleteInvestmentPreference = async ({ apiClient }, uuid) => {
132
- if (!uuid?.trim()) {
133
- throw new Error('Investment preference UUID is required');
134
- }
135
- await apiClient.delete(`/api/investment-preferences/${uuid}/`);
136
- };
137
- exports.deleteInvestmentPreference = deleteInvestmentPreference;
138
- // Constants
139
- exports.SOURCE_OF_FUNDS = {
140
- SALARY: 'salary',
141
- SAVINGS: 'savings',
142
- INHERITANCE: 'inheritance',
143
- GIFT: 'gift',
144
- OTHER: 'other',
145
- };
146
- exports.SOURCE_OF_FUNDS_LABELS = {
147
- salary: 'Salary',
148
- savings: 'Savings',
149
- inheritance: 'Inheritance',
150
- gift: 'Gift',
151
- other: 'Other',
152
- };
153
- exports.SOURCE_OF_FUNDS_OPTIONS = [
154
- { value: exports.SOURCE_OF_FUNDS.SALARY, label: exports.SOURCE_OF_FUNDS_LABELS.salary },
155
- { value: exports.SOURCE_OF_FUNDS.SAVINGS, label: exports.SOURCE_OF_FUNDS_LABELS.savings },
156
- { value: exports.SOURCE_OF_FUNDS.INHERITANCE, label: exports.SOURCE_OF_FUNDS_LABELS.inheritance },
157
- { value: exports.SOURCE_OF_FUNDS.GIFT, label: exports.SOURCE_OF_FUNDS_LABELS.gift },
158
- { value: exports.SOURCE_OF_FUNDS.OTHER, label: exports.SOURCE_OF_FUNDS_LABELS.other },
159
- ];
160
- exports.INVESTMENT_HORIZON_LABELS = {
161
- SHORT_TERM: 'Short Term (0-2 years)',
162
- MEDIUM_TERM: 'Medium Term (3-5 years)',
163
- LONG_TERM: 'Long Term (5+ years)',
164
- };
165
- exports.RISK_TOLERANCE_LABELS = {
166
- CONSERVATIVE: 'Conservative',
167
- MODERATE: 'Moderate',
168
- AGGRESSIVE: 'Aggressive',
169
- };
170
- exports.INVESTMENT_EXPERIENCE_LABELS = {
171
- NONE: 'No Experience',
172
- LIMITED: 'Limited Experience',
173
- GOOD: 'Good Experience',
174
- EXTENSIVE: 'Extensive Experience',
175
- };
@@ -1,123 +0,0 @@
1
- /**
2
- * Bank Services - Pure Functional Implementation
3
- *
4
- * Bank account management operations as pure functions with explicit dependencies.
5
- * No global state, no side effects - everything is explicit and testable.
6
- */
7
- import type { ApiClient } from '../api/functional-client';
8
- export type CurrencyCode = 'AUD' | 'USD';
9
- export type AccountType = 'SAVINGS' | 'CHECKING' | 'BUSINESS';
10
- export interface BankAccount {
11
- readonly uuid: string;
12
- readonly account: string;
13
- readonly bankName: string;
14
- readonly branchName?: string;
15
- readonly accountNumber: string;
16
- readonly bsb: string;
17
- readonly accountName: string;
18
- readonly accountType: AccountType;
19
- readonly currency: CurrencyCode;
20
- readonly swiftCode?: string;
21
- readonly iban?: string;
22
- readonly isVerified: boolean;
23
- readonly verificationDate?: string;
24
- readonly isPrimary: boolean;
25
- readonly isActive: boolean;
26
- readonly notes?: string;
27
- readonly createdAt: string;
28
- readonly updatedAt: string;
29
- }
30
- export interface CreateBankAccountPayload {
31
- readonly account: string;
32
- readonly bankName: string;
33
- readonly branchName?: string;
34
- readonly accountNumber: string;
35
- readonly bsb: string;
36
- readonly accountName: string;
37
- readonly accountType: AccountType;
38
- readonly currency: CurrencyCode;
39
- readonly swiftCode?: string;
40
- readonly iban?: string;
41
- readonly notes?: string;
42
- }
43
- export interface UpdateBankAccountPayload {
44
- readonly bankName?: string;
45
- readonly branchName?: string;
46
- readonly accountName?: string;
47
- readonly accountType?: AccountType;
48
- readonly currency?: CurrencyCode;
49
- readonly swiftCode?: string;
50
- readonly iban?: string;
51
- readonly isPrimary?: boolean;
52
- readonly isActive?: boolean;
53
- readonly notes?: string;
54
- }
55
- export interface BankAccountFilters {
56
- readonly account?: string;
57
- readonly userProfile?: string;
58
- readonly bankName?: string;
59
- readonly accountType?: AccountType;
60
- readonly currency?: CurrencyCode;
61
- readonly isVerified?: boolean;
62
- readonly isPrimary?: boolean;
63
- readonly isActive?: boolean;
64
- readonly ordering?: string;
65
- }
66
- export interface PaginatedBankAccounts {
67
- readonly results: BankAccount[];
68
- readonly count: number;
69
- readonly next: string | null;
70
- readonly previous: string | null;
71
- }
72
- export declare const getUserBankAccounts: ({ apiClient }: {
73
- apiClient: ApiClient;
74
- }, userProfileUuid: string) => Promise<PaginatedBankAccounts>;
75
- export declare const getBankAccounts: ({ apiClient }: {
76
- apiClient: ApiClient;
77
- }, filters?: BankAccountFilters) => Promise<PaginatedBankAccounts>;
78
- export declare const getBankAccount: ({ apiClient }: {
79
- apiClient: ApiClient;
80
- }, uuid: string) => Promise<BankAccount>;
81
- export declare const createBankAccount: ({ apiClient }: {
82
- apiClient: ApiClient;
83
- }, data: CreateBankAccountPayload) => Promise<BankAccount>;
84
- export declare const updateBankAccount: ({ apiClient }: {
85
- apiClient: ApiClient;
86
- }, uuid: string, data: UpdateBankAccountPayload) => Promise<BankAccount>;
87
- export declare const deleteBankAccount: ({ apiClient }: {
88
- apiClient: ApiClient;
89
- }, uuid: string) => Promise<void>;
90
- export declare const verifyBankAccount: ({ apiClient }: {
91
- apiClient: ApiClient;
92
- }, uuid: string) => Promise<BankAccount>;
93
- export declare const setPrimaryBankAccount: ({ apiClient }: {
94
- apiClient: ApiClient;
95
- }, uuid: string) => Promise<BankAccount>;
96
- export declare const getActiveBankAccounts: ({ apiClient }: {
97
- apiClient: ApiClient;
98
- }, accountUuid?: string) => Promise<PaginatedBankAccounts>;
99
- export declare const getPrimaryBankAccount: ({ apiClient }: {
100
- apiClient: ApiClient;
101
- }, accountUuid: string) => Promise<BankAccount | null>;
102
- export declare const getVerifiedBankAccounts: ({ apiClient }: {
103
- apiClient: ApiClient;
104
- }, accountUuid?: string) => Promise<PaginatedBankAccounts>;
105
- export declare const ACCOUNT_TYPES: {
106
- readonly SAVINGS: "SAVINGS";
107
- readonly CHECKING: "CHECKING";
108
- readonly BUSINESS: "BUSINESS";
109
- };
110
- export declare const ACCOUNT_TYPE_LABELS: {
111
- readonly SAVINGS: "Savings Account";
112
- readonly CHECKING: "Checking Account";
113
- readonly BUSINESS: "Business Account";
114
- };
115
- export declare const SUPPORTED_CURRENCIES: {
116
- readonly AUD: "AUD";
117
- readonly USD: "USD";
118
- };
119
- export declare const CURRENCY_LABELS: {
120
- readonly AUD: "Australian Dollar";
121
- readonly USD: "United States Dollar";
122
- };
123
- //# sourceMappingURL=banks.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"banks.d.ts","sourceRoot":"","sources":["../../src/services/banks.ts"],"names":[],"mappings":"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"}
@@ -1,151 +0,0 @@
1
- "use strict";
2
- /**
3
- * Bank Services - Pure Functional Implementation
4
- *
5
- * Bank account management operations as pure functions with explicit dependencies.
6
- * No global state, no side effects - everything is explicit and testable.
7
- */
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.CURRENCY_LABELS = exports.SUPPORTED_CURRENCIES = exports.ACCOUNT_TYPE_LABELS = exports.ACCOUNT_TYPES = exports.getVerifiedBankAccounts = exports.getPrimaryBankAccount = exports.getActiveBankAccounts = exports.setPrimaryBankAccount = exports.verifyBankAccount = exports.deleteBankAccount = exports.updateBankAccount = exports.createBankAccount = exports.getBankAccount = exports.getBankAccounts = exports.getUserBankAccounts = void 0;
10
- // Bank account operations with explicit dependencies
11
- // Get bank accounts for a specific user
12
- const getUserBankAccounts = async ({ apiClient }, userProfileUuid) => {
13
- if (!userProfileUuid?.trim()) {
14
- throw new Error('User profile UUID is required');
15
- }
16
- return (0, exports.getBankAccounts)({ apiClient }, { userProfile: userProfileUuid });
17
- };
18
- exports.getUserBankAccounts = getUserBankAccounts;
19
- const getBankAccounts = async ({ apiClient }, filters) => {
20
- const params = {};
21
- if (filters?.account)
22
- params.account = filters.account;
23
- if (filters?.userProfile)
24
- params.user_profile = filters.userProfile;
25
- if (filters?.bankName)
26
- params.bank_name = filters.bankName;
27
- if (filters?.accountType)
28
- params.account_type = filters.accountType;
29
- if (filters?.currency)
30
- params.currency = filters.currency;
31
- if (filters?.isVerified !== undefined)
32
- params.is_verified = String(filters.isVerified);
33
- if (filters?.isPrimary !== undefined)
34
- params.is_primary = String(filters.isPrimary);
35
- if (filters?.isActive !== undefined)
36
- params.is_active = String(filters.isActive);
37
- if (filters?.ordering)
38
- params.ordering = filters.ordering;
39
- return apiClient.get('/api/bank-accounts/', { params });
40
- };
41
- exports.getBankAccounts = getBankAccounts;
42
- const getBankAccount = async ({ apiClient }, uuid) => {
43
- if (!uuid?.trim()) {
44
- throw new Error('Bank account UUID is required');
45
- }
46
- return apiClient.get(`/api/bank-accounts/${uuid}/`);
47
- };
48
- exports.getBankAccount = getBankAccount;
49
- const createBankAccount = async ({ apiClient }, data) => {
50
- // Validation
51
- if (!data.account?.trim()) {
52
- throw new Error('Account UUID is required');
53
- }
54
- if (!data.bankName?.trim()) {
55
- throw new Error('Bank name is required');
56
- }
57
- if (!data.accountNumber?.trim()) {
58
- throw new Error('Account number is required');
59
- }
60
- if (!data.bsb?.trim()) {
61
- throw new Error('BSB is required');
62
- }
63
- if (!data.accountName?.trim()) {
64
- throw new Error('Account name is required');
65
- }
66
- if (!data.accountType) {
67
- throw new Error('Account type is required');
68
- }
69
- if (!data.currency) {
70
- throw new Error('Currency is required');
71
- }
72
- return apiClient.post('/api/bank-accounts/', data);
73
- };
74
- exports.createBankAccount = createBankAccount;
75
- const updateBankAccount = async ({ apiClient }, uuid, data) => {
76
- if (!uuid?.trim()) {
77
- throw new Error('Bank account UUID is required');
78
- }
79
- return apiClient.patch(`/api/bank-accounts/${uuid}/`, data);
80
- };
81
- exports.updateBankAccount = updateBankAccount;
82
- const deleteBankAccount = async ({ apiClient }, uuid) => {
83
- if (!uuid?.trim()) {
84
- throw new Error('Bank account UUID is required');
85
- }
86
- await apiClient.delete(`/api/bank-accounts/${uuid}/`);
87
- };
88
- exports.deleteBankAccount = deleteBankAccount;
89
- const verifyBankAccount = async ({ apiClient }, uuid) => {
90
- if (!uuid?.trim()) {
91
- throw new Error('Bank account UUID is required');
92
- }
93
- return apiClient.post(`/api/bank-accounts/${uuid}/verify/`, {});
94
- };
95
- exports.verifyBankAccount = verifyBankAccount;
96
- const setPrimaryBankAccount = async ({ apiClient }, uuid) => {
97
- if (!uuid?.trim()) {
98
- throw new Error('Bank account UUID is required');
99
- }
100
- return apiClient.post(`/api/bank-accounts/${uuid}/set-primary/`, {});
101
- };
102
- exports.setPrimaryBankAccount = setPrimaryBankAccount;
103
- // Helper functions
104
- const getActiveBankAccounts = async ({ apiClient }, accountUuid) => {
105
- return (0, exports.getBankAccounts)({ apiClient }, {
106
- account: accountUuid,
107
- isActive: true,
108
- ordering: '-is_primary,bank_name',
109
- });
110
- };
111
- exports.getActiveBankAccounts = getActiveBankAccounts;
112
- const getPrimaryBankAccount = async ({ apiClient }, accountUuid) => {
113
- if (!accountUuid?.trim()) {
114
- throw new Error('Account UUID is required');
115
- }
116
- const response = await (0, exports.getBankAccounts)({ apiClient }, {
117
- account: accountUuid,
118
- isPrimary: true,
119
- isActive: true,
120
- });
121
- return response.results[0] || null;
122
- };
123
- exports.getPrimaryBankAccount = getPrimaryBankAccount;
124
- const getVerifiedBankAccounts = async ({ apiClient }, accountUuid) => {
125
- return (0, exports.getBankAccounts)({ apiClient }, {
126
- account: accountUuid,
127
- isVerified: true,
128
- isActive: true,
129
- ordering: '-is_primary,bank_name',
130
- });
131
- };
132
- exports.getVerifiedBankAccounts = getVerifiedBankAccounts;
133
- // Bank account constants
134
- exports.ACCOUNT_TYPES = {
135
- SAVINGS: 'SAVINGS',
136
- CHECKING: 'CHECKING',
137
- BUSINESS: 'BUSINESS',
138
- };
139
- exports.ACCOUNT_TYPE_LABELS = {
140
- SAVINGS: 'Savings Account',
141
- CHECKING: 'Checking Account',
142
- BUSINESS: 'Business Account',
143
- };
144
- exports.SUPPORTED_CURRENCIES = {
145
- AUD: 'AUD',
146
- USD: 'USD',
147
- };
148
- exports.CURRENCY_LABELS = {
149
- AUD: 'Australian Dollar',
150
- USD: 'United States Dollar',
151
- };
@@ -1,112 +0,0 @@
1
- /**
2
- * Cash Accounts Services - Pure Functional Implementation
3
- *
4
- * Cash account and transaction operations as pure functions with explicit dependencies.
5
- * No global state, no side effects - everything is explicit and testable.
6
- */
7
- import type { ApiClient } from '../api/functional-client';
8
- export type CurrencyCode = 'AUD' | 'USD' | 'EUR' | 'GBP' | 'CAD' | 'NZD' | 'SGD' | 'HKD' | 'JPY';
9
- export type TransactionType = 'DEPOSIT' | 'WITHDRAWAL' | 'FEE' | 'DIVIDEND' | 'INTEREST' | 'TAX' | 'TRADE_SETTLEMENT' | 'TRANSFER_IN' | 'TRANSFER_OUT' | 'OTHER';
10
- export type TransactionStatus = 'PENDING' | 'COMPLETED' | 'FAILED' | 'CANCELLED';
11
- export interface CashAccount {
12
- readonly uuid: string;
13
- readonly account: string;
14
- readonly accountNumber: string;
15
- readonly bsb?: string;
16
- readonly payid?: string;
17
- readonly currency: CurrencyCode;
18
- readonly balance: string;
19
- }
20
- export interface CashAccountQueryParams {
21
- readonly account?: string;
22
- readonly currency?: CurrencyCode;
23
- readonly minBalance?: number;
24
- readonly maxBalance?: number;
25
- readonly ordering?: string;
26
- }
27
- export interface PaginatedCashAccounts {
28
- readonly results: CashAccount[];
29
- readonly count: number;
30
- readonly next: string | null;
31
- readonly previous: string | null;
32
- }
33
- export interface CashTransaction {
34
- readonly uuid: string;
35
- readonly cashAccount: string;
36
- readonly type: 'DEPOSIT' | 'WITHDRAWAL' | 'TRANSFER' | 'FEE' | 'DIVIDEND' | 'INTEREST';
37
- readonly amount: string;
38
- readonly description?: string;
39
- readonly reference?: string;
40
- readonly status: 'PENDING' | 'COMPLETED' | 'CANCELLED' | 'FAILED';
41
- readonly transactionDate: string;
42
- readonly processedDate?: string;
43
- readonly createdAt: string;
44
- readonly updatedAt: string;
45
- }
46
- export interface CreateCashTransactionPayload {
47
- readonly cashAccount: string;
48
- readonly type: 'DEPOSIT' | 'WITHDRAWAL' | 'TRANSFER' | 'FEE' | 'DIVIDEND' | 'INTEREST';
49
- readonly amount: string | number;
50
- readonly description?: string;
51
- readonly reference?: string;
52
- }
53
- export interface CashTransactionFilters {
54
- readonly cashAccount?: string;
55
- readonly type?: 'DEPOSIT' | 'WITHDRAWAL' | 'TRANSFER' | 'FEE' | 'DIVIDEND' | 'INTEREST';
56
- readonly status?: 'PENDING' | 'COMPLETED' | 'CANCELLED' | 'FAILED';
57
- readonly fromDate?: string;
58
- readonly toDate?: string;
59
- readonly minAmount?: number;
60
- readonly maxAmount?: number;
61
- readonly ordering?: string;
62
- }
63
- export interface PaginatedCashTransactions {
64
- readonly results: CashTransaction[];
65
- readonly count: number;
66
- readonly next: string | null;
67
- readonly previous: string | null;
68
- }
69
- export declare const getCashAccounts: ({ apiClient }: {
70
- apiClient: ApiClient;
71
- }, params?: CashAccountQueryParams) => Promise<PaginatedCashAccounts>;
72
- export declare const getCashAccount: ({ apiClient }: {
73
- apiClient: ApiClient;
74
- }, uuid: string) => Promise<CashAccount>;
75
- export declare const getAccountCashAccounts: ({ apiClient }: {
76
- apiClient: ApiClient;
77
- }, accountUuid: string) => Promise<PaginatedCashAccounts>;
78
- export declare const getCashTransactions: ({ apiClient }: {
79
- apiClient: ApiClient;
80
- }, filters?: CashTransactionFilters) => Promise<PaginatedCashTransactions>;
81
- export declare const getCashTransaction: ({ apiClient }: {
82
- apiClient: ApiClient;
83
- }, uuid: string) => Promise<CashTransaction>;
84
- export declare const createCashTransaction: ({ apiClient }: {
85
- apiClient: ApiClient;
86
- }, data: CreateCashTransactionPayload) => Promise<CashTransaction>;
87
- export declare const getCashAccountTransactions: ({ apiClient }: {
88
- apiClient: ApiClient;
89
- }, cashAccountUuid: string, filters?: Omit<CashTransactionFilters, "cashAccount">) => Promise<PaginatedCashTransactions>;
90
- export declare const getCashAccountBalance: ({ apiClient }: {
91
- apiClient: ApiClient;
92
- }, cashAccountUuid: string) => Promise<string>;
93
- export declare const getCashAccountsByCurrency: ({ apiClient }: {
94
- apiClient: ApiClient;
95
- }, currency: CurrencyCode, accountUuid?: string) => Promise<PaginatedCashAccounts>;
96
- export declare const getPendingTransactions: ({ apiClient }: {
97
- apiClient: ApiClient;
98
- }, cashAccountUuid?: string) => Promise<PaginatedCashTransactions>;
99
- export declare const getRecentTransactions: ({ apiClient }: {
100
- apiClient: ApiClient;
101
- }, cashAccountUuid: string, days?: number) => Promise<PaginatedCashTransactions>;
102
- export declare const getTransactionsByDateRange: ({ apiClient }: {
103
- apiClient: ApiClient;
104
- }, cashAccountUuid: string, fromDate: string, toDate: string) => Promise<PaginatedCashTransactions>;
105
- export declare const formatTransactionAmount: (amount: string | number, currency?: string) => string;
106
- export declare const getTransactionTypeLabel: (type: TransactionType) => string;
107
- export declare const getTransactionStatusLabel: (status: TransactionStatus) => string;
108
- export declare const getTransactionStatusColor: (status: TransactionStatus) => string;
109
- export declare const isDebitTransaction: (type: TransactionType) => boolean;
110
- export declare const isCreditTransaction: (type: TransactionType) => boolean;
111
- export declare const calculateCashAccountTotal: (cashAccounts: CashAccount[]) => Record<string, number>;
112
- //# sourceMappingURL=cash-accounts.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cash-accounts.d.ts","sourceRoot":"","sources":["../../src/services/cash-accounts.ts"],"names":[],"mappings":"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"}