@cranberry-money/shared-services 1.12.1 → 3.0.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.
- package/CHANGELOG.md +240 -0
- package/README.md +464 -190
- package/dist/api/functional-client.d.ts +66 -0
- package/dist/api/functional-client.d.ts.map +1 -0
- package/dist/api/functional-client.js +165 -0
- package/dist/auth/functional/auth-operations.d.ts +116 -0
- package/dist/auth/functional/auth-operations.d.ts.map +1 -0
- package/dist/auth/functional/auth-operations.js +246 -0
- package/dist/auth/functional/auth-state.d.ts +38 -0
- package/dist/auth/functional/auth-state.d.ts.map +1 -0
- package/dist/auth/functional/auth-state.js +87 -0
- package/dist/auth/functional/token-storage.d.ts +44 -0
- package/dist/auth/functional/token-storage.d.ts.map +1 -0
- package/dist/auth/functional/token-storage.js +178 -0
- package/dist/auth/react/AuthProvider.d.ts +92 -0
- package/dist/auth/react/AuthProvider.d.ts.map +1 -0
- package/dist/auth/react/AuthProvider.js +207 -0
- package/dist/index.d.ts +25 -34
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +114 -40
- package/dist/integration/blueberry-integration.d.ts +21 -0
- package/dist/integration/blueberry-integration.d.ts.map +1 -0
- package/dist/integration/blueberry-integration.js +109 -0
- package/dist/integration/index.d.ts +8 -0
- package/dist/integration/index.d.ts.map +1 -0
- package/dist/integration/index.js +18 -0
- package/dist/services/accounts.d.ts +220 -0
- package/dist/services/accounts.d.ts.map +1 -0
- package/dist/services/accounts.js +175 -0
- package/dist/services/banks.d.ts +123 -0
- package/dist/services/banks.d.ts.map +1 -0
- package/dist/services/banks.js +151 -0
- package/dist/services/cash-accounts.d.ts +112 -0
- package/dist/services/cash-accounts.d.ts.map +1 -0
- package/dist/services/cash-accounts.js +222 -0
- package/dist/services/documents.d.ts +143 -0
- package/dist/services/documents.d.ts.map +1 -0
- package/dist/services/documents.js +253 -0
- package/dist/services/factories/account-factory.d.ts +16 -0
- package/dist/services/factories/account-factory.d.ts.map +1 -0
- package/dist/services/factories/account-factory.js +79 -0
- package/dist/services/factories/auth-factory.d.ts +23 -0
- package/dist/services/factories/auth-factory.d.ts.map +1 -0
- package/dist/services/factories/auth-factory.js +75 -0
- package/dist/services/factories/bank-factory.d.ts +16 -0
- package/dist/services/factories/bank-factory.d.ts.map +1 -0
- package/dist/services/factories/bank-factory.js +72 -0
- package/dist/services/factories/cash-account-factory.d.ts +16 -0
- package/dist/services/factories/cash-account-factory.d.ts.map +1 -0
- package/dist/services/factories/cash-account-factory.js +74 -0
- package/dist/services/factories/document-factory.d.ts +16 -0
- package/dist/services/factories/document-factory.d.ts.map +1 -0
- package/dist/services/factories/document-factory.js +85 -0
- package/dist/services/factories/index.d.ts +21 -0
- package/dist/services/factories/index.d.ts.map +1 -0
- package/dist/services/factories/index.js +40 -0
- package/dist/services/factories/instrument-factory.d.ts +16 -0
- package/dist/services/factories/instrument-factory.d.ts.map +1 -0
- package/dist/services/factories/instrument-factory.js +68 -0
- package/dist/services/factories/master-factory.d.ts +74 -0
- package/dist/services/factories/master-factory.d.ts.map +1 -0
- package/dist/services/factories/master-factory.js +183 -0
- package/dist/services/factories/portfolio-factory.d.ts +16 -0
- package/dist/services/factories/portfolio-factory.d.ts.map +1 -0
- package/dist/services/factories/portfolio-factory.js +74 -0
- package/dist/services/factories/portfolio-template-factory.d.ts +16 -0
- package/dist/services/factories/portfolio-template-factory.d.ts.map +1 -0
- package/dist/services/factories/portfolio-template-factory.js +76 -0
- package/dist/services/factories/reference-data-factory.d.ts +16 -0
- package/dist/services/factories/reference-data-factory.d.ts.map +1 -0
- package/dist/services/factories/reference-data-factory.js +86 -0
- package/dist/services/factories/tax-residency-factory.d.ts +16 -0
- package/dist/services/factories/tax-residency-factory.d.ts.map +1 -0
- package/dist/services/factories/tax-residency-factory.js +73 -0
- package/dist/services/factories/trade-factory.d.ts +16 -0
- package/dist/services/factories/trade-factory.d.ts.map +1 -0
- package/dist/services/factories/trade-factory.js +79 -0
- package/dist/services/factories/types.d.ts +250 -0
- package/dist/services/factories/types.d.ts.map +1 -0
- package/dist/services/factories/types.js +32 -0
- package/dist/services/factories/withdrawal-factory.d.ts +16 -0
- package/dist/services/factories/withdrawal-factory.d.ts.map +1 -0
- package/dist/services/factories/withdrawal-factory.js +78 -0
- package/dist/services/instruments.d.ts +138 -0
- package/dist/services/instruments.d.ts.map +1 -0
- package/dist/services/instruments.js +178 -0
- package/dist/services/portfolio-templates.d.ts +142 -0
- package/dist/services/portfolio-templates.d.ts.map +1 -0
- package/dist/services/portfolio-templates.js +201 -0
- package/dist/services/portfolios.d.ts +161 -0
- package/dist/services/portfolios.d.ts.map +1 -0
- package/dist/services/portfolios.js +144 -0
- package/dist/services/reference-data.d.ts +185 -0
- package/dist/services/reference-data.d.ts.map +1 -0
- package/dist/services/reference-data.js +245 -0
- package/dist/services/tax-residencies.d.ts +83 -0
- package/dist/services/tax-residencies.d.ts.map +1 -0
- package/dist/services/tax-residencies.js +179 -0
- package/dist/services/trades.d.ts +190 -0
- package/dist/services/trades.d.ts.map +1 -0
- package/dist/services/trades.js +207 -0
- package/dist/services/withdrawals.d.ts +236 -0
- package/dist/services/withdrawals.d.ts.map +1 -0
- package/dist/services/withdrawals.js +345 -0
- package/package.json +43 -16
- package/dist/adapters/MobileApiClient.d.ts +0 -68
- package/dist/adapters/MobileApiClient.d.ts.map +0 -1
- package/dist/adapters/MobileApiClient.js +0 -240
- package/dist/adapters/MobileTokenStorage.d.ts +0 -43
- package/dist/adapters/MobileTokenStorage.d.ts.map +0 -1
- package/dist/adapters/MobileTokenStorage.js +0 -128
- package/dist/adapters/WebApiClient.d.ts +0 -28
- package/dist/adapters/WebApiClient.d.ts.map +0 -1
- package/dist/adapters/WebApiClient.js +0 -119
- package/dist/adapters/WebTokenStorage.d.ts +0 -38
- package/dist/adapters/WebTokenStorage.d.ts.map +0 -1
- package/dist/adapters/WebTokenStorage.js +0 -86
- package/dist/api/apiClient.d.ts +0 -31
- package/dist/api/apiClient.d.ts.map +0 -1
- package/dist/api/apiClient.js +0 -49
- package/dist/api/types.d.ts +0 -51
- package/dist/api/types.d.ts.map +0 -1
- package/dist/api/types.js +0 -4
- package/dist/auth/AuthManager.d.ts +0 -81
- package/dist/auth/AuthManager.d.ts.map +0 -1
- package/dist/auth/AuthManager.js +0 -223
- package/dist/auth/createAuthManager.d.ts +0 -63
- package/dist/auth/createAuthManager.d.ts.map +0 -1
- package/dist/auth/createAuthManager.js +0 -103
- package/dist/auth/useAuthManager.d.ts +0 -66
- package/dist/auth/useAuthManager.d.ts.map +0 -1
- package/dist/auth/useAuthManager.js +0 -133
- package/dist/core/BaseApiClient.d.ts +0 -82
- package/dist/core/BaseApiClient.d.ts.map +0 -1
- package/dist/core/BaseApiClient.js +0 -89
- package/dist/core/TokenStorage.d.ts +0 -45
- package/dist/core/TokenStorage.d.ts.map +0 -1
- package/dist/core/TokenStorage.js +0 -23
- package/dist/query/QueryClient.d.ts +0 -82
- package/dist/query/QueryClient.d.ts.map +0 -1
- package/dist/query/QueryClient.js +0 -136
- package/dist/query/useAuth.d.ts +0 -64
- package/dist/query/useAuth.d.ts.map +0 -1
- package/dist/query/useAuth.js +0 -144
- package/dist/query/usePortfolios.d.ts +0 -79
- package/dist/query/usePortfolios.d.ts.map +0 -1
- package/dist/query/usePortfolios.js +0 -172
- package/dist/services/AuthService.d.ts +0 -75
- package/dist/services/AuthService.d.ts.map +0 -1
- package/dist/services/AuthService.js +0 -83
- package/dist/services/BaseService.d.ts +0 -48
- package/dist/services/BaseService.d.ts.map +0 -1
- package/dist/services/BaseService.js +0 -51
- package/dist/services/PortfolioService.d.ts +0 -100
- package/dist/services/PortfolioService.d.ts.map +0 -1
- package/dist/services/PortfolioService.js +0 -68
- package/dist/services/accounts/constants.d.ts +0 -24
- package/dist/services/accounts/constants.d.ts.map +0 -1
- package/dist/services/accounts/constants.js +0 -30
- package/dist/services/accounts/index.d.ts +0 -7
- package/dist/services/accounts/index.d.ts.map +0 -1
- package/dist/services/accounts/index.js +0 -6
- package/dist/services/accounts/service.d.ts +0 -11
- package/dist/services/accounts/service.d.ts.map +0 -1
- package/dist/services/accounts/service.js +0 -19
- package/dist/services/accounts/types.d.ts +0 -15
- package/dist/services/accounts/types.d.ts.map +0 -1
- package/dist/services/accounts/types.js +0 -4
- package/dist/services/auth/constants.d.ts +0 -30
- package/dist/services/auth/constants.d.ts.map +0 -1
- package/dist/services/auth/constants.js +0 -37
- package/dist/services/auth/index.d.ts +0 -8
- package/dist/services/auth/index.d.ts.map +0 -1
- package/dist/services/auth/index.js +0 -7
- package/dist/services/auth/service.d.ts +0 -8
- package/dist/services/auth/service.d.ts.map +0 -1
- package/dist/services/auth/service.js +0 -23
- package/dist/services/auth/types.d.ts +0 -38
- package/dist/services/auth/types.d.ts.map +0 -1
- package/dist/services/auth/types.js +0 -1
- package/dist/services/auth/utils.d.ts +0 -46
- package/dist/services/auth/utils.d.ts.map +0 -1
- package/dist/services/auth/utils.js +0 -113
- package/dist/services/banks/constants.d.ts +0 -47
- package/dist/services/banks/constants.d.ts.map +0 -1
- package/dist/services/banks/constants.js +0 -98
- package/dist/services/banks/index.d.ts +0 -8
- package/dist/services/banks/index.d.ts.map +0 -1
- package/dist/services/banks/index.js +0 -7
- package/dist/services/banks/service.d.ts +0 -9
- package/dist/services/banks/service.d.ts.map +0 -1
- package/dist/services/banks/service.js +0 -38
- package/dist/services/banks/types.d.ts +0 -36
- package/dist/services/banks/types.d.ts.map +0 -1
- package/dist/services/banks/types.js +0 -4
- package/dist/services/cash_accounts/constants.d.ts +0 -7
- package/dist/services/cash_accounts/constants.d.ts.map +0 -1
- package/dist/services/cash_accounts/constants.js +0 -7
- package/dist/services/cash_accounts/index.d.ts +0 -5
- package/dist/services/cash_accounts/index.d.ts.map +0 -1
- package/dist/services/cash_accounts/index.js +0 -6
- package/dist/services/cash_accounts/service.d.ts +0 -8
- package/dist/services/cash_accounts/service.d.ts.map +0 -1
- package/dist/services/cash_accounts/service.js +0 -32
- package/dist/services/cash_accounts/transactions/constants.d.ts +0 -18
- package/dist/services/cash_accounts/transactions/constants.d.ts.map +0 -1
- package/dist/services/cash_accounts/transactions/constants.js +0 -25
- package/dist/services/cash_accounts/transactions/index.d.ts +0 -5
- package/dist/services/cash_accounts/transactions/index.d.ts.map +0 -1
- package/dist/services/cash_accounts/transactions/index.js +0 -6
- package/dist/services/cash_accounts/transactions/service.d.ts +0 -13
- package/dist/services/cash_accounts/transactions/service.d.ts.map +0 -1
- package/dist/services/cash_accounts/transactions/service.js +0 -75
- package/dist/services/cash_accounts/transactions/types.d.ts +0 -38
- package/dist/services/cash_accounts/transactions/types.d.ts.map +0 -1
- package/dist/services/cash_accounts/transactions/types.js +0 -11
- package/dist/services/cash_accounts/types.d.ts +0 -24
- package/dist/services/cash_accounts/types.d.ts.map +0 -1
- package/dist/services/cash_accounts/types.js +0 -4
- package/dist/services/countries/constants.d.ts +0 -9
- package/dist/services/countries/constants.d.ts.map +0 -1
- package/dist/services/countries/constants.js +0 -10
- package/dist/services/countries/index.d.ts +0 -5
- package/dist/services/countries/index.d.ts.map +0 -1
- package/dist/services/countries/index.js +0 -6
- package/dist/services/countries/service.d.ts +0 -18
- package/dist/services/countries/service.d.ts.map +0 -1
- package/dist/services/countries/service.js +0 -32
- package/dist/services/countries/types.d.ts +0 -24
- package/dist/services/countries/types.d.ts.map +0 -1
- package/dist/services/countries/types.js +0 -1
- package/dist/services/countries/utils.d.ts +0 -38
- package/dist/services/countries/utils.d.ts.map +0 -1
- package/dist/services/countries/utils.js +0 -62
- package/dist/services/documents/constants.d.ts +0 -55
- package/dist/services/documents/constants.d.ts.map +0 -1
- package/dist/services/documents/constants.js +0 -50
- package/dist/services/documents/index.d.ts +0 -6
- package/dist/services/documents/index.d.ts.map +0 -1
- package/dist/services/documents/index.js +0 -6
- package/dist/services/documents/service.d.ts +0 -50
- package/dist/services/documents/service.d.ts.map +0 -1
- package/dist/services/documents/service.js +0 -116
- package/dist/services/documents/types.d.ts +0 -47
- package/dist/services/documents/types.d.ts.map +0 -1
- package/dist/services/documents/types.js +0 -1
- package/dist/services/documents/utils.d.ts +0 -26
- package/dist/services/documents/utils.d.ts.map +0 -1
- package/dist/services/documents/utils.js +0 -37
- package/dist/services/industries/constants.d.ts +0 -8
- package/dist/services/industries/constants.d.ts.map +0 -1
- package/dist/services/industries/constants.js +0 -9
- package/dist/services/industries/index.d.ts +0 -6
- package/dist/services/industries/index.d.ts.map +0 -1
- package/dist/services/industries/index.js +0 -6
- package/dist/services/industries/service.d.ts +0 -18
- package/dist/services/industries/service.d.ts.map +0 -1
- package/dist/services/industries/service.js +0 -43
- package/dist/services/industries/types.d.ts +0 -21
- package/dist/services/industries/types.d.ts.map +0 -1
- package/dist/services/industries/types.js +0 -1
- package/dist/services/industries/utils.d.ts +0 -47
- package/dist/services/industries/utils.d.ts.map +0 -1
- package/dist/services/industries/utils.js +0 -86
- package/dist/services/instruments/constants.d.ts +0 -38
- package/dist/services/instruments/constants.d.ts.map +0 -1
- package/dist/services/instruments/constants.js +0 -36
- package/dist/services/instruments/index.d.ts +0 -5
- package/dist/services/instruments/index.d.ts.map +0 -1
- package/dist/services/instruments/index.js +0 -6
- package/dist/services/instruments/service.d.ts +0 -54
- package/dist/services/instruments/service.d.ts.map +0 -1
- package/dist/services/instruments/service.js +0 -106
- package/dist/services/instruments/types.d.ts +0 -83
- package/dist/services/instruments/types.d.ts.map +0 -1
- package/dist/services/instruments/types.js +0 -1
- package/dist/services/instruments/utils.d.ts +0 -50
- package/dist/services/instruments/utils.d.ts.map +0 -1
- package/dist/services/instruments/utils.js +0 -111
- package/dist/services/portfolio_templates/constants.d.ts +0 -8
- package/dist/services/portfolio_templates/constants.d.ts.map +0 -1
- package/dist/services/portfolio_templates/constants.js +0 -8
- package/dist/services/portfolio_templates/index.d.ts +0 -5
- package/dist/services/portfolio_templates/index.d.ts.map +0 -1
- package/dist/services/portfolio_templates/index.js +0 -5
- package/dist/services/portfolio_templates/service.d.ts +0 -6
- package/dist/services/portfolio_templates/service.d.ts.map +0 -1
- package/dist/services/portfolio_templates/service.js +0 -14
- package/dist/services/portfolio_templates/types.d.ts +0 -49
- package/dist/services/portfolio_templates/types.d.ts.map +0 -1
- package/dist/services/portfolio_templates/types.js +0 -1
- package/dist/services/portfolio_templates/utils.d.ts +0 -8
- package/dist/services/portfolio_templates/utils.d.ts.map +0 -1
- package/dist/services/portfolio_templates/utils.js +0 -13
- package/dist/services/portfolios/allocations/index.d.ts +0 -7
- package/dist/services/portfolios/allocations/index.d.ts.map +0 -1
- package/dist/services/portfolios/allocations/index.js +0 -6
- package/dist/services/portfolios/allocations/service.d.ts +0 -6
- package/dist/services/portfolios/allocations/service.d.ts.map +0 -1
- package/dist/services/portfolios/allocations/service.js +0 -19
- package/dist/services/portfolios/allocations/types.d.ts +0 -17
- package/dist/services/portfolios/allocations/types.d.ts.map +0 -1
- package/dist/services/portfolios/allocations/types.js +0 -4
- package/dist/services/portfolios/allocations/utils.d.ts +0 -3
- package/dist/services/portfolios/allocations/utils.d.ts.map +0 -1
- package/dist/services/portfolios/allocations/utils.js +0 -7
- package/dist/services/portfolios/constants.d.ts +0 -45
- package/dist/services/portfolios/constants.d.ts.map +0 -1
- package/dist/services/portfolios/constants.js +0 -57
- package/dist/services/portfolios/holdings/index.d.ts +0 -7
- package/dist/services/portfolios/holdings/index.d.ts.map +0 -1
- package/dist/services/portfolios/holdings/index.js +0 -6
- package/dist/services/portfolios/holdings/service.d.ts +0 -10
- package/dist/services/portfolios/holdings/service.d.ts.map +0 -1
- package/dist/services/portfolios/holdings/service.js +0 -53
- package/dist/services/portfolios/holdings/types.d.ts +0 -42
- package/dist/services/portfolios/holdings/types.d.ts.map +0 -1
- package/dist/services/portfolios/holdings/types.js +0 -4
- package/dist/services/portfolios/holdings/utils.d.ts +0 -8
- package/dist/services/portfolios/holdings/utils.d.ts.map +0 -1
- package/dist/services/portfolios/holdings/utils.js +0 -82
- package/dist/services/portfolios/index.d.ts +0 -10
- package/dist/services/portfolios/index.d.ts.map +0 -1
- package/dist/services/portfolios/index.js +0 -10
- package/dist/services/portfolios/service.d.ts +0 -7
- package/dist/services/portfolios/service.d.ts.map +0 -1
- package/dist/services/portfolios/service.js +0 -19
- package/dist/services/portfolios/types.d.ts +0 -29
- package/dist/services/portfolios/types.d.ts.map +0 -1
- package/dist/services/portfolios/types.js +0 -1
- package/dist/services/portfolios/utils.d.ts +0 -5
- package/dist/services/portfolios/utils.d.ts.map +0 -1
- package/dist/services/portfolios/utils.js +0 -26
- package/dist/services/sectors/constants.d.ts +0 -7
- package/dist/services/sectors/constants.d.ts.map +0 -1
- package/dist/services/sectors/constants.js +0 -7
- package/dist/services/sectors/index.d.ts +0 -6
- package/dist/services/sectors/index.d.ts.map +0 -1
- package/dist/services/sectors/index.js +0 -6
- package/dist/services/sectors/service.d.ts +0 -14
- package/dist/services/sectors/service.d.ts.map +0 -1
- package/dist/services/sectors/service.js +0 -32
- package/dist/services/sectors/types.d.ts +0 -19
- package/dist/services/sectors/types.d.ts.map +0 -1
- package/dist/services/sectors/types.js +0 -1
- package/dist/services/sectors/utils.d.ts +0 -31
- package/dist/services/sectors/utils.d.ts.map +0 -1
- package/dist/services/sectors/utils.js +0 -54
- package/dist/services/stock_exchanges/constants.d.ts +0 -7
- package/dist/services/stock_exchanges/constants.d.ts.map +0 -1
- package/dist/services/stock_exchanges/constants.js +0 -7
- package/dist/services/stock_exchanges/index.d.ts +0 -6
- package/dist/services/stock_exchanges/index.d.ts.map +0 -1
- package/dist/services/stock_exchanges/index.js +0 -6
- package/dist/services/stock_exchanges/service.d.ts +0 -4
- package/dist/services/stock_exchanges/service.d.ts.map +0 -1
- package/dist/services/stock_exchanges/service.js +0 -26
- package/dist/services/stock_exchanges/types.d.ts +0 -28
- package/dist/services/stock_exchanges/types.d.ts.map +0 -1
- package/dist/services/stock_exchanges/types.js +0 -1
- package/dist/services/stock_exchanges/utils.d.ts +0 -8
- package/dist/services/stock_exchanges/utils.d.ts.map +0 -1
- package/dist/services/stock_exchanges/utils.js +0 -37
- package/dist/services/tax_residencies/constants.d.ts +0 -7
- package/dist/services/tax_residencies/constants.d.ts.map +0 -1
- package/dist/services/tax_residencies/constants.js +0 -7
- package/dist/services/tax_residencies/index.d.ts +0 -10
- package/dist/services/tax_residencies/index.d.ts.map +0 -1
- package/dist/services/tax_residencies/index.js +0 -11
- package/dist/services/tax_residencies/service.d.ts +0 -6
- package/dist/services/tax_residencies/service.d.ts.map +0 -1
- package/dist/services/tax_residencies/service.js +0 -20
- package/dist/services/tax_residencies/types.d.ts +0 -26
- package/dist/services/tax_residencies/types.d.ts.map +0 -1
- package/dist/services/tax_residencies/types.js +0 -4
- package/dist/services/tax_residencies/utils.d.ts +0 -9
- package/dist/services/tax_residencies/utils.d.ts.map +0 -1
- package/dist/services/tax_residencies/utils.js +0 -19
- package/dist/services/trades/constants.d.ts +0 -47
- package/dist/services/trades/constants.d.ts.map +0 -1
- package/dist/services/trades/constants.js +0 -61
- package/dist/services/trades/index.d.ts +0 -4
- package/dist/services/trades/index.d.ts.map +0 -1
- package/dist/services/trades/index.js +0 -12
- package/dist/services/trades/service.d.ts +0 -19
- package/dist/services/trades/service.d.ts.map +0 -1
- package/dist/services/trades/service.js +0 -177
- package/dist/services/trades/types.d.ts +0 -114
- package/dist/services/trades/types.d.ts.map +0 -1
- package/dist/services/trades/types.js +0 -1
- package/dist/services/users/constants.d.ts +0 -7
- package/dist/services/users/constants.d.ts.map +0 -1
- package/dist/services/users/constants.js +0 -8
- package/dist/services/users/index.d.ts +0 -9
- package/dist/services/users/index.d.ts.map +0 -1
- package/dist/services/users/index.js +0 -9
- package/dist/services/users/investment_preferences/constants.d.ts +0 -7
- package/dist/services/users/investment_preferences/constants.d.ts.map +0 -1
- package/dist/services/users/investment_preferences/constants.js +0 -7
- package/dist/services/users/investment_preferences/index.d.ts +0 -7
- package/dist/services/users/investment_preferences/index.d.ts.map +0 -1
- package/dist/services/users/investment_preferences/index.js +0 -6
- package/dist/services/users/investment_preferences/service.d.ts +0 -5
- package/dist/services/users/investment_preferences/service.d.ts.map +0 -1
- package/dist/services/users/investment_preferences/service.js +0 -12
- package/dist/services/users/investment_preferences/types.d.ts +0 -23
- package/dist/services/users/investment_preferences/types.d.ts.map +0 -1
- package/dist/services/users/investment_preferences/types.js +0 -1
- package/dist/services/users/service.d.ts +0 -6
- package/dist/services/users/service.d.ts.map +0 -1
- package/dist/services/users/service.js +0 -15
- package/dist/services/users/types.d.ts +0 -32
- package/dist/services/users/types.d.ts.map +0 -1
- package/dist/services/users/types.js +0 -1
- package/dist/services/users/utils.d.ts +0 -2
- package/dist/services/users/utils.d.ts.map +0 -1
- package/dist/services/users/utils.js +0 -6
- package/dist/services/withdrawals/constants.d.ts +0 -67
- package/dist/services/withdrawals/constants.d.ts.map +0 -1
- package/dist/services/withdrawals/constants.js +0 -91
- package/dist/services/withdrawals/index.d.ts +0 -6
- package/dist/services/withdrawals/index.d.ts.map +0 -1
- package/dist/services/withdrawals/index.js +0 -7
- package/dist/services/withdrawals/service.d.ts +0 -4
- package/dist/services/withdrawals/service.d.ts.map +0 -1
- package/dist/services/withdrawals/service.js +0 -5
- package/dist/services/withdrawals/types.d.ts +0 -81
- package/dist/services/withdrawals/types.d.ts.map +0 -1
- package/dist/services/withdrawals/types.js +0 -1
- package/dist/services/withdrawals/utils.d.ts +0 -20
- package/dist/services/withdrawals/utils.d.ts.map +0 -1
- package/dist/services/withdrawals/utils.js +0 -110
- package/dist/services/withdrawals/withdrawal_liquidations/index.d.ts +0 -3
- package/dist/services/withdrawals/withdrawal_liquidations/index.d.ts.map +0 -1
- package/dist/services/withdrawals/withdrawal_liquidations/index.js +0 -2
- package/dist/services/withdrawals/withdrawal_liquidations/service.d.ts +0 -8
- package/dist/services/withdrawals/withdrawal_liquidations/service.d.ts.map +0 -1
- package/dist/services/withdrawals/withdrawal_liquidations/service.js +0 -68
- package/dist/services/withdrawals/withdrawal_liquidations/types.d.ts +0 -2
- package/dist/services/withdrawals/withdrawal_liquidations/types.d.ts.map +0 -1
- package/dist/services/withdrawals/withdrawal_liquidations/types.js +0 -1
- package/dist/services/withdrawals/withdrawal_requests/index.d.ts +0 -3
- package/dist/services/withdrawals/withdrawal_requests/index.d.ts.map +0 -1
- package/dist/services/withdrawals/withdrawal_requests/index.js +0 -2
- package/dist/services/withdrawals/withdrawal_requests/service.d.ts +0 -7
- package/dist/services/withdrawals/withdrawal_requests/service.d.ts.map +0 -1
- package/dist/services/withdrawals/withdrawal_requests/service.js +0 -55
- package/dist/services/withdrawals/withdrawal_requests/types.d.ts +0 -2
- package/dist/services/withdrawals/withdrawal_requests/types.d.ts.map +0 -1
- package/dist/services/withdrawals/withdrawal_requests/types.js +0 -1
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Reference Data Services - Pure Functional Implementation
|
|
4
|
+
*
|
|
5
|
+
* Static reference data (countries, industries, sectors, etc.) 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.getSectorsGroupedByIndustry = exports.formatStockExchangeName = exports.formatCountryName = exports.getAllActiveReferenceData = exports.getStockExchangeByCode = exports.searchStockExchanges = exports.getActiveStockExchanges = exports.getStockExchangesByCountry = exports.getStockExchange = exports.getStockExchanges = exports.searchSectors = exports.getActiveSectors = exports.getSectorsByIndustry = exports.getSector = exports.getSectors = exports.searchIndustries = exports.getActiveIndustries = exports.getIndustry = exports.getIndustries = exports.getCountryByCode = exports.searchCountries = exports.getAvailableCountries = exports.getCountry = exports.getCountries = void 0;
|
|
10
|
+
// =============================
|
|
11
|
+
// COUNTRY OPERATIONS
|
|
12
|
+
// =============================
|
|
13
|
+
const getCountries = async ({ apiClient }, filters) => {
|
|
14
|
+
const params = {};
|
|
15
|
+
if (filters?.name)
|
|
16
|
+
params.name = filters.name;
|
|
17
|
+
if (filters?.code)
|
|
18
|
+
params.code = filters.code;
|
|
19
|
+
if (filters?.isAvailable !== undefined)
|
|
20
|
+
params.is_available = String(filters.isAvailable);
|
|
21
|
+
if (filters?.search)
|
|
22
|
+
params.search = filters.search;
|
|
23
|
+
if (filters?.ordering)
|
|
24
|
+
params.ordering = filters.ordering;
|
|
25
|
+
if (filters?.page)
|
|
26
|
+
params.page = String(filters.page);
|
|
27
|
+
if (filters?.pageSize)
|
|
28
|
+
params.page_size = String(filters.pageSize);
|
|
29
|
+
return apiClient.get('/api/countries/', { params });
|
|
30
|
+
};
|
|
31
|
+
exports.getCountries = getCountries;
|
|
32
|
+
const getCountry = async ({ apiClient }, uuid) => {
|
|
33
|
+
if (!uuid?.trim()) {
|
|
34
|
+
throw new Error('Country UUID is required');
|
|
35
|
+
}
|
|
36
|
+
return apiClient.get(`/api/countries/${uuid}/`);
|
|
37
|
+
};
|
|
38
|
+
exports.getCountry = getCountry;
|
|
39
|
+
const getAvailableCountries = async ({ apiClient }, filters) => {
|
|
40
|
+
return (0, exports.getCountries)({ apiClient }, { ...filters, isAvailable: true });
|
|
41
|
+
};
|
|
42
|
+
exports.getAvailableCountries = getAvailableCountries;
|
|
43
|
+
const searchCountries = async ({ apiClient }, searchTerm, filters) => {
|
|
44
|
+
if (!searchTerm?.trim()) {
|
|
45
|
+
throw new Error('Search term is required');
|
|
46
|
+
}
|
|
47
|
+
return (0, exports.getCountries)({ apiClient }, { ...filters, search: searchTerm });
|
|
48
|
+
};
|
|
49
|
+
exports.searchCountries = searchCountries;
|
|
50
|
+
const getCountryByCode = async ({ apiClient }, code) => {
|
|
51
|
+
if (!code?.trim()) {
|
|
52
|
+
throw new Error('Country code is required');
|
|
53
|
+
}
|
|
54
|
+
const response = await (0, exports.getCountries)({ apiClient }, { code: code.toUpperCase() });
|
|
55
|
+
return response.results[0] || null;
|
|
56
|
+
};
|
|
57
|
+
exports.getCountryByCode = getCountryByCode;
|
|
58
|
+
// =============================
|
|
59
|
+
// INDUSTRY OPERATIONS
|
|
60
|
+
// =============================
|
|
61
|
+
const getIndustries = async ({ apiClient }, filters) => {
|
|
62
|
+
const params = {};
|
|
63
|
+
if (filters?.name)
|
|
64
|
+
params.name = filters.name;
|
|
65
|
+
if (filters?.code)
|
|
66
|
+
params.code = filters.code;
|
|
67
|
+
if (filters?.isActive !== undefined)
|
|
68
|
+
params.is_active = String(filters.isActive);
|
|
69
|
+
if (filters?.search)
|
|
70
|
+
params.search = filters.search;
|
|
71
|
+
if (filters?.ordering)
|
|
72
|
+
params.ordering = filters.ordering;
|
|
73
|
+
if (filters?.page)
|
|
74
|
+
params.page = String(filters.page);
|
|
75
|
+
if (filters?.pageSize)
|
|
76
|
+
params.page_size = String(filters.pageSize);
|
|
77
|
+
return apiClient.get('/api/industries/', { params });
|
|
78
|
+
};
|
|
79
|
+
exports.getIndustries = getIndustries;
|
|
80
|
+
const getIndustry = async ({ apiClient }, uuid) => {
|
|
81
|
+
if (!uuid?.trim()) {
|
|
82
|
+
throw new Error('Industry UUID is required');
|
|
83
|
+
}
|
|
84
|
+
return apiClient.get(`/api/industries/${uuid}/`);
|
|
85
|
+
};
|
|
86
|
+
exports.getIndustry = getIndustry;
|
|
87
|
+
const getActiveIndustries = async ({ apiClient }, filters) => {
|
|
88
|
+
return (0, exports.getIndustries)({ apiClient }, { ...filters, isActive: true });
|
|
89
|
+
};
|
|
90
|
+
exports.getActiveIndustries = getActiveIndustries;
|
|
91
|
+
const searchIndustries = async ({ apiClient }, searchTerm, filters) => {
|
|
92
|
+
if (!searchTerm?.trim()) {
|
|
93
|
+
throw new Error('Search term is required');
|
|
94
|
+
}
|
|
95
|
+
return (0, exports.getIndustries)({ apiClient }, { ...filters, search: searchTerm });
|
|
96
|
+
};
|
|
97
|
+
exports.searchIndustries = searchIndustries;
|
|
98
|
+
// =============================
|
|
99
|
+
// SECTOR OPERATIONS
|
|
100
|
+
// =============================
|
|
101
|
+
const getSectors = async ({ apiClient }, filters) => {
|
|
102
|
+
const params = {};
|
|
103
|
+
if (filters?.name)
|
|
104
|
+
params.name = filters.name;
|
|
105
|
+
if (filters?.code)
|
|
106
|
+
params.code = filters.code;
|
|
107
|
+
if (filters?.industry)
|
|
108
|
+
params.industry = filters.industry;
|
|
109
|
+
if (filters?.isActive !== undefined)
|
|
110
|
+
params.is_active = String(filters.isActive);
|
|
111
|
+
if (filters?.search)
|
|
112
|
+
params.search = filters.search;
|
|
113
|
+
if (filters?.ordering)
|
|
114
|
+
params.ordering = filters.ordering;
|
|
115
|
+
if (filters?.page)
|
|
116
|
+
params.page = String(filters.page);
|
|
117
|
+
if (filters?.pageSize)
|
|
118
|
+
params.page_size = String(filters.pageSize);
|
|
119
|
+
return apiClient.get('/api/sectors/', { params });
|
|
120
|
+
};
|
|
121
|
+
exports.getSectors = getSectors;
|
|
122
|
+
const getSector = async ({ apiClient }, uuid) => {
|
|
123
|
+
if (!uuid?.trim()) {
|
|
124
|
+
throw new Error('Sector UUID is required');
|
|
125
|
+
}
|
|
126
|
+
return apiClient.get(`/api/sectors/${uuid}/`);
|
|
127
|
+
};
|
|
128
|
+
exports.getSector = getSector;
|
|
129
|
+
const getSectorsByIndustry = async ({ apiClient }, industryUuid, filters) => {
|
|
130
|
+
if (!industryUuid?.trim()) {
|
|
131
|
+
throw new Error('Industry UUID is required');
|
|
132
|
+
}
|
|
133
|
+
return (0, exports.getSectors)({ apiClient }, { ...filters, industry: industryUuid });
|
|
134
|
+
};
|
|
135
|
+
exports.getSectorsByIndustry = getSectorsByIndustry;
|
|
136
|
+
const getActiveSectors = async ({ apiClient }, filters) => {
|
|
137
|
+
return (0, exports.getSectors)({ apiClient }, { ...filters, isActive: true });
|
|
138
|
+
};
|
|
139
|
+
exports.getActiveSectors = getActiveSectors;
|
|
140
|
+
const searchSectors = async ({ apiClient }, searchTerm, filters) => {
|
|
141
|
+
if (!searchTerm?.trim()) {
|
|
142
|
+
throw new Error('Search term is required');
|
|
143
|
+
}
|
|
144
|
+
return (0, exports.getSectors)({ apiClient }, { ...filters, search: searchTerm });
|
|
145
|
+
};
|
|
146
|
+
exports.searchSectors = searchSectors;
|
|
147
|
+
// =============================
|
|
148
|
+
// STOCK EXCHANGE OPERATIONS
|
|
149
|
+
// =============================
|
|
150
|
+
const getStockExchanges = async ({ apiClient }, filters) => {
|
|
151
|
+
const params = {};
|
|
152
|
+
if (filters?.name)
|
|
153
|
+
params.name = filters.name;
|
|
154
|
+
if (filters?.code)
|
|
155
|
+
params.code = filters.code;
|
|
156
|
+
if (filters?.country)
|
|
157
|
+
params.country = filters.country;
|
|
158
|
+
if (filters?.isActive !== undefined)
|
|
159
|
+
params.is_active = String(filters.isActive);
|
|
160
|
+
if (filters?.search)
|
|
161
|
+
params.search = filters.search;
|
|
162
|
+
if (filters?.ordering)
|
|
163
|
+
params.ordering = filters.ordering;
|
|
164
|
+
if (filters?.page)
|
|
165
|
+
params.page = String(filters.page);
|
|
166
|
+
if (filters?.pageSize)
|
|
167
|
+
params.page_size = String(filters.pageSize);
|
|
168
|
+
return apiClient.get('/api/stock-exchanges/', { params });
|
|
169
|
+
};
|
|
170
|
+
exports.getStockExchanges = getStockExchanges;
|
|
171
|
+
const getStockExchange = async ({ apiClient }, uuid) => {
|
|
172
|
+
if (!uuid?.trim()) {
|
|
173
|
+
throw new Error('Stock exchange UUID is required');
|
|
174
|
+
}
|
|
175
|
+
return apiClient.get(`/api/stock-exchanges/${uuid}/`);
|
|
176
|
+
};
|
|
177
|
+
exports.getStockExchange = getStockExchange;
|
|
178
|
+
const getStockExchangesByCountry = async ({ apiClient }, countryUuid, filters) => {
|
|
179
|
+
if (!countryUuid?.trim()) {
|
|
180
|
+
throw new Error('Country UUID is required');
|
|
181
|
+
}
|
|
182
|
+
return (0, exports.getStockExchanges)({ apiClient }, { ...filters, country: countryUuid });
|
|
183
|
+
};
|
|
184
|
+
exports.getStockExchangesByCountry = getStockExchangesByCountry;
|
|
185
|
+
const getActiveStockExchanges = async ({ apiClient }, filters) => {
|
|
186
|
+
return (0, exports.getStockExchanges)({ apiClient }, { ...filters, isActive: true });
|
|
187
|
+
};
|
|
188
|
+
exports.getActiveStockExchanges = getActiveStockExchanges;
|
|
189
|
+
const searchStockExchanges = async ({ apiClient }, searchTerm, filters) => {
|
|
190
|
+
if (!searchTerm?.trim()) {
|
|
191
|
+
throw new Error('Search term is required');
|
|
192
|
+
}
|
|
193
|
+
return (0, exports.getStockExchanges)({ apiClient }, { ...filters, search: searchTerm });
|
|
194
|
+
};
|
|
195
|
+
exports.searchStockExchanges = searchStockExchanges;
|
|
196
|
+
const getStockExchangeByCode = async ({ apiClient }, code) => {
|
|
197
|
+
if (!code?.trim()) {
|
|
198
|
+
throw new Error('Stock exchange code is required');
|
|
199
|
+
}
|
|
200
|
+
const response = await (0, exports.getStockExchanges)({ apiClient }, { code: code.toUpperCase() });
|
|
201
|
+
return response.results[0] || null;
|
|
202
|
+
};
|
|
203
|
+
exports.getStockExchangeByCode = getStockExchangeByCode;
|
|
204
|
+
// =============================
|
|
205
|
+
// UTILITY FUNCTIONS
|
|
206
|
+
// =============================
|
|
207
|
+
// Helper to get all active reference data at once
|
|
208
|
+
const getAllActiveReferenceData = async ({ apiClient }) => {
|
|
209
|
+
const [countries, industries, sectors, stockExchanges] = await Promise.all([
|
|
210
|
+
(0, exports.getAvailableCountries)({ apiClient }).then(res => res.results),
|
|
211
|
+
(0, exports.getActiveIndustries)({ apiClient }).then(res => res.results),
|
|
212
|
+
(0, exports.getActiveSectors)({ apiClient }).then(res => res.results),
|
|
213
|
+
(0, exports.getActiveStockExchanges)({ apiClient }).then(res => res.results),
|
|
214
|
+
]);
|
|
215
|
+
return { countries, industries, sectors, stockExchanges };
|
|
216
|
+
};
|
|
217
|
+
exports.getAllActiveReferenceData = getAllActiveReferenceData;
|
|
218
|
+
// Format country display name
|
|
219
|
+
const formatCountryName = (country) => {
|
|
220
|
+
return `${country.name} (${country.code})`;
|
|
221
|
+
};
|
|
222
|
+
exports.formatCountryName = formatCountryName;
|
|
223
|
+
// Format stock exchange display name
|
|
224
|
+
const formatStockExchangeName = (exchange) => {
|
|
225
|
+
return `${exchange.name} (${exchange.code})`;
|
|
226
|
+
};
|
|
227
|
+
exports.formatStockExchangeName = formatStockExchangeName;
|
|
228
|
+
// Get sectors grouped by industry
|
|
229
|
+
const getSectorsGroupedByIndustry = async ({ apiClient }) => {
|
|
230
|
+
const [industries, sectors] = await Promise.all([
|
|
231
|
+
(0, exports.getActiveIndustries)({ apiClient }).then(res => res.results),
|
|
232
|
+
(0, exports.getActiveSectors)({ apiClient }).then(res => res.results),
|
|
233
|
+
]);
|
|
234
|
+
const grouped = new Map();
|
|
235
|
+
industries.forEach(industry => {
|
|
236
|
+
grouped.set(industry.uuid, []);
|
|
237
|
+
});
|
|
238
|
+
sectors.forEach(sector => {
|
|
239
|
+
const industrySectors = grouped.get(sector.industry) || [];
|
|
240
|
+
industrySectors.push(sector);
|
|
241
|
+
grouped.set(sector.industry, industrySectors);
|
|
242
|
+
});
|
|
243
|
+
return grouped;
|
|
244
|
+
};
|
|
245
|
+
exports.getSectorsGroupedByIndustry = getSectorsGroupedByIndustry;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tax Residency Services - Pure Functional Implementation
|
|
3
|
+
*
|
|
4
|
+
* Tax residency 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 interface TaxResidency {
|
|
9
|
+
readonly uuid: string;
|
|
10
|
+
readonly userProfile: string;
|
|
11
|
+
readonly country: string;
|
|
12
|
+
readonly countryName: string;
|
|
13
|
+
readonly countryCode: string;
|
|
14
|
+
readonly taxIdentificationNumber?: string;
|
|
15
|
+
readonly isPrimary: boolean;
|
|
16
|
+
readonly startDate: string;
|
|
17
|
+
readonly endDate?: string;
|
|
18
|
+
readonly createdAt: string;
|
|
19
|
+
readonly updatedAt: string;
|
|
20
|
+
}
|
|
21
|
+
export interface CreateTaxResidencyPayload {
|
|
22
|
+
readonly userProfile: string;
|
|
23
|
+
readonly country: string;
|
|
24
|
+
readonly taxIdentificationNumber?: string;
|
|
25
|
+
readonly isPrimary?: boolean;
|
|
26
|
+
readonly startDate: string;
|
|
27
|
+
readonly endDate?: string;
|
|
28
|
+
}
|
|
29
|
+
export interface UpdateTaxResidencyPayload {
|
|
30
|
+
readonly country?: string;
|
|
31
|
+
readonly taxIdentificationNumber?: string;
|
|
32
|
+
readonly isPrimary?: boolean;
|
|
33
|
+
readonly startDate?: string;
|
|
34
|
+
readonly endDate?: string;
|
|
35
|
+
}
|
|
36
|
+
export interface TaxResidencyFilters {
|
|
37
|
+
readonly userProfile?: string;
|
|
38
|
+
readonly country?: string;
|
|
39
|
+
readonly isPrimary?: boolean;
|
|
40
|
+
readonly isActive?: boolean;
|
|
41
|
+
readonly ordering?: string;
|
|
42
|
+
}
|
|
43
|
+
export interface PaginatedTaxResidencies {
|
|
44
|
+
readonly results: TaxResidency[];
|
|
45
|
+
readonly count: number;
|
|
46
|
+
readonly next: string | null;
|
|
47
|
+
readonly previous: string | null;
|
|
48
|
+
}
|
|
49
|
+
export declare const getTaxResidencies: ({ apiClient }: {
|
|
50
|
+
apiClient: ApiClient;
|
|
51
|
+
}, filters?: TaxResidencyFilters) => Promise<PaginatedTaxResidencies>;
|
|
52
|
+
export declare const getTaxResidency: ({ apiClient }: {
|
|
53
|
+
apiClient: ApiClient;
|
|
54
|
+
}, uuid: string) => Promise<TaxResidency>;
|
|
55
|
+
export declare const createTaxResidency: ({ apiClient }: {
|
|
56
|
+
apiClient: ApiClient;
|
|
57
|
+
}, data: CreateTaxResidencyPayload) => Promise<TaxResidency>;
|
|
58
|
+
export declare const updateTaxResidency: ({ apiClient }: {
|
|
59
|
+
apiClient: ApiClient;
|
|
60
|
+
}, uuid: string, data: UpdateTaxResidencyPayload) => Promise<TaxResidency>;
|
|
61
|
+
export declare const deleteTaxResidency: ({ apiClient }: {
|
|
62
|
+
apiClient: ApiClient;
|
|
63
|
+
}, uuid: string) => Promise<void>;
|
|
64
|
+
export declare const setPrimaryTaxResidency: ({ apiClient }: {
|
|
65
|
+
apiClient: ApiClient;
|
|
66
|
+
}, uuid: string) => Promise<TaxResidency>;
|
|
67
|
+
export declare const getUserTaxResidencies: ({ apiClient }: {
|
|
68
|
+
apiClient: ApiClient;
|
|
69
|
+
}, userProfileUuid: string) => Promise<PaginatedTaxResidencies>;
|
|
70
|
+
export declare const getActiveTaxResidencies: ({ apiClient }: {
|
|
71
|
+
apiClient: ApiClient;
|
|
72
|
+
}, userProfileUuid?: string) => Promise<PaginatedTaxResidencies>;
|
|
73
|
+
export declare const getPrimaryTaxResidency: ({ apiClient }: {
|
|
74
|
+
apiClient: ApiClient;
|
|
75
|
+
}, userProfileUuid: string) => Promise<TaxResidency | null>;
|
|
76
|
+
export declare const getTaxResidenciesByCountry: ({ apiClient }: {
|
|
77
|
+
apiClient: ApiClient;
|
|
78
|
+
}, countryUuid: string, userProfileUuid?: string) => Promise<PaginatedTaxResidencies>;
|
|
79
|
+
export declare const isTaxResidencyActive: (taxResidency: TaxResidency) => boolean;
|
|
80
|
+
export declare const formatTaxResidencyPeriod: (taxResidency: TaxResidency) => string;
|
|
81
|
+
export declare const validateTaxIdentificationNumber: (tin: string, countryCode: string) => boolean;
|
|
82
|
+
export declare const canHaveMultipleResidencies: (countryCode: string) => boolean;
|
|
83
|
+
//# sourceMappingURL=tax-residencies.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tax-residencies.d.ts","sourceRoot":"","sources":["../../src/services/tax-residencies.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Tax Residency Services - Pure Functional Implementation
|
|
4
|
+
*
|
|
5
|
+
* Tax residency 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.canHaveMultipleResidencies = exports.validateTaxIdentificationNumber = exports.formatTaxResidencyPeriod = exports.isTaxResidencyActive = exports.getTaxResidenciesByCountry = exports.getPrimaryTaxResidency = exports.getActiveTaxResidencies = exports.getUserTaxResidencies = exports.setPrimaryTaxResidency = exports.deleteTaxResidency = exports.updateTaxResidency = exports.createTaxResidency = exports.getTaxResidency = exports.getTaxResidencies = void 0;
|
|
10
|
+
// Tax residency operations with explicit dependencies
|
|
11
|
+
const getTaxResidencies = async ({ apiClient }, filters) => {
|
|
12
|
+
const params = {};
|
|
13
|
+
if (filters?.userProfile)
|
|
14
|
+
params.user_profile = filters.userProfile;
|
|
15
|
+
if (filters?.country)
|
|
16
|
+
params.country = filters.country;
|
|
17
|
+
if (filters?.isPrimary !== undefined)
|
|
18
|
+
params.is_primary = String(filters.isPrimary);
|
|
19
|
+
if (filters?.isActive !== undefined)
|
|
20
|
+
params.is_active = String(filters.isActive);
|
|
21
|
+
if (filters?.ordering) {
|
|
22
|
+
params.ordering = filters.ordering;
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
// Default ordering: primary first, then by country name
|
|
26
|
+
params.ordering = '-is_primary,country';
|
|
27
|
+
}
|
|
28
|
+
return apiClient.get('/api/tax-residencies/', { params });
|
|
29
|
+
};
|
|
30
|
+
exports.getTaxResidencies = getTaxResidencies;
|
|
31
|
+
const getTaxResidency = async ({ apiClient }, uuid) => {
|
|
32
|
+
if (!uuid?.trim()) {
|
|
33
|
+
throw new Error('Tax residency UUID is required');
|
|
34
|
+
}
|
|
35
|
+
return apiClient.get(`/api/tax-residencies/${uuid}/`);
|
|
36
|
+
};
|
|
37
|
+
exports.getTaxResidency = getTaxResidency;
|
|
38
|
+
const createTaxResidency = async ({ apiClient }, data) => {
|
|
39
|
+
// Validation
|
|
40
|
+
if (!data.userProfile?.trim()) {
|
|
41
|
+
throw new Error('User profile UUID is required');
|
|
42
|
+
}
|
|
43
|
+
if (!data.country?.trim()) {
|
|
44
|
+
throw new Error('Country UUID is required');
|
|
45
|
+
}
|
|
46
|
+
if (!data.startDate?.trim()) {
|
|
47
|
+
throw new Error('Start date is required');
|
|
48
|
+
}
|
|
49
|
+
// Validate date format (YYYY-MM-DD)
|
|
50
|
+
const dateRegex = /^\d{4}-\d{2}-\d{2}$/;
|
|
51
|
+
if (!dateRegex.test(data.startDate)) {
|
|
52
|
+
throw new Error('Start date must be in YYYY-MM-DD format');
|
|
53
|
+
}
|
|
54
|
+
if (data.endDate && !dateRegex.test(data.endDate)) {
|
|
55
|
+
throw new Error('End date must be in YYYY-MM-DD format');
|
|
56
|
+
}
|
|
57
|
+
// Validate end date is after start date
|
|
58
|
+
if (data.endDate && new Date(data.endDate) <= new Date(data.startDate)) {
|
|
59
|
+
throw new Error('End date must be after start date');
|
|
60
|
+
}
|
|
61
|
+
return apiClient.post('/api/tax-residencies/', data);
|
|
62
|
+
};
|
|
63
|
+
exports.createTaxResidency = createTaxResidency;
|
|
64
|
+
const updateTaxResidency = async ({ apiClient }, uuid, data) => {
|
|
65
|
+
if (!uuid?.trim()) {
|
|
66
|
+
throw new Error('Tax residency UUID is required');
|
|
67
|
+
}
|
|
68
|
+
// Validate date formats if provided
|
|
69
|
+
const dateRegex = /^\d{4}-\d{2}-\d{2}$/;
|
|
70
|
+
if (data.startDate && !dateRegex.test(data.startDate)) {
|
|
71
|
+
throw new Error('Start date must be in YYYY-MM-DD format');
|
|
72
|
+
}
|
|
73
|
+
if (data.endDate && !dateRegex.test(data.endDate)) {
|
|
74
|
+
throw new Error('End date must be in YYYY-MM-DD format');
|
|
75
|
+
}
|
|
76
|
+
return apiClient.patch(`/api/tax-residencies/${uuid}/`, data);
|
|
77
|
+
};
|
|
78
|
+
exports.updateTaxResidency = updateTaxResidency;
|
|
79
|
+
const deleteTaxResidency = async ({ apiClient }, uuid) => {
|
|
80
|
+
if (!uuid?.trim()) {
|
|
81
|
+
throw new Error('Tax residency UUID is required');
|
|
82
|
+
}
|
|
83
|
+
await apiClient.delete(`/api/tax-residencies/${uuid}/`);
|
|
84
|
+
};
|
|
85
|
+
exports.deleteTaxResidency = deleteTaxResidency;
|
|
86
|
+
const setPrimaryTaxResidency = async ({ apiClient }, uuid) => {
|
|
87
|
+
if (!uuid?.trim()) {
|
|
88
|
+
throw new Error('Tax residency UUID is required');
|
|
89
|
+
}
|
|
90
|
+
return apiClient.post(`/api/tax-residencies/${uuid}/set-primary/`, {});
|
|
91
|
+
};
|
|
92
|
+
exports.setPrimaryTaxResidency = setPrimaryTaxResidency;
|
|
93
|
+
// Helper functions
|
|
94
|
+
const getUserTaxResidencies = async ({ apiClient }, userProfileUuid) => {
|
|
95
|
+
if (!userProfileUuid?.trim()) {
|
|
96
|
+
throw new Error('User profile UUID is required');
|
|
97
|
+
}
|
|
98
|
+
return (0, exports.getTaxResidencies)({ apiClient }, {
|
|
99
|
+
userProfile: userProfileUuid,
|
|
100
|
+
ordering: '-is_primary,start_date',
|
|
101
|
+
});
|
|
102
|
+
};
|
|
103
|
+
exports.getUserTaxResidencies = getUserTaxResidencies;
|
|
104
|
+
const getActiveTaxResidencies = async ({ apiClient }, userProfileUuid) => {
|
|
105
|
+
return (0, exports.getTaxResidencies)({ apiClient }, {
|
|
106
|
+
userProfile: userProfileUuid,
|
|
107
|
+
isActive: true,
|
|
108
|
+
ordering: '-is_primary,country',
|
|
109
|
+
});
|
|
110
|
+
};
|
|
111
|
+
exports.getActiveTaxResidencies = getActiveTaxResidencies;
|
|
112
|
+
const getPrimaryTaxResidency = async ({ apiClient }, userProfileUuid) => {
|
|
113
|
+
if (!userProfileUuid?.trim()) {
|
|
114
|
+
throw new Error('User profile UUID is required');
|
|
115
|
+
}
|
|
116
|
+
const response = await (0, exports.getTaxResidencies)({ apiClient }, {
|
|
117
|
+
userProfile: userProfileUuid,
|
|
118
|
+
isPrimary: true,
|
|
119
|
+
isActive: true,
|
|
120
|
+
});
|
|
121
|
+
return response.results[0] || null;
|
|
122
|
+
};
|
|
123
|
+
exports.getPrimaryTaxResidency = getPrimaryTaxResidency;
|
|
124
|
+
const getTaxResidenciesByCountry = async ({ apiClient }, countryUuid, userProfileUuid) => {
|
|
125
|
+
if (!countryUuid?.trim()) {
|
|
126
|
+
throw new Error('Country UUID is required');
|
|
127
|
+
}
|
|
128
|
+
return (0, exports.getTaxResidencies)({ apiClient }, {
|
|
129
|
+
country: countryUuid,
|
|
130
|
+
userProfile: userProfileUuid,
|
|
131
|
+
ordering: '-is_primary,start_date',
|
|
132
|
+
});
|
|
133
|
+
};
|
|
134
|
+
exports.getTaxResidenciesByCountry = getTaxResidenciesByCountry;
|
|
135
|
+
// Utility functions
|
|
136
|
+
const isTaxResidencyActive = (taxResidency) => {
|
|
137
|
+
if (!taxResidency.endDate)
|
|
138
|
+
return true;
|
|
139
|
+
return new Date(taxResidency.endDate) >= new Date();
|
|
140
|
+
};
|
|
141
|
+
exports.isTaxResidencyActive = isTaxResidencyActive;
|
|
142
|
+
const formatTaxResidencyPeriod = (taxResidency) => {
|
|
143
|
+
const startDate = new Date(taxResidency.startDate).toLocaleDateString();
|
|
144
|
+
if (!taxResidency.endDate) {
|
|
145
|
+
return `Since ${startDate}`;
|
|
146
|
+
}
|
|
147
|
+
const endDate = new Date(taxResidency.endDate).toLocaleDateString();
|
|
148
|
+
return `${startDate} - ${endDate}`;
|
|
149
|
+
};
|
|
150
|
+
exports.formatTaxResidencyPeriod = formatTaxResidencyPeriod;
|
|
151
|
+
const validateTaxIdentificationNumber = (tin, countryCode) => {
|
|
152
|
+
// Basic validation - can be enhanced with country-specific rules
|
|
153
|
+
if (!tin?.trim())
|
|
154
|
+
return false;
|
|
155
|
+
// Remove spaces and special characters
|
|
156
|
+
const cleanTin = tin.replace(/[\s-]/g, '');
|
|
157
|
+
// Country-specific validation rules (examples)
|
|
158
|
+
switch (countryCode) {
|
|
159
|
+
case 'AU':
|
|
160
|
+
// Australian TFN: 8 or 9 digits
|
|
161
|
+
return /^\d{8,9}$/.test(cleanTin);
|
|
162
|
+
case 'US':
|
|
163
|
+
// US SSN: 9 digits (XXX-XX-XXXX format)
|
|
164
|
+
return /^\d{9}$/.test(cleanTin);
|
|
165
|
+
case 'GB':
|
|
166
|
+
// UK NI Number: 2 letters, 6 digits, 1 letter
|
|
167
|
+
return /^[A-Z]{2}\d{6}[A-Z]$/.test(cleanTin.toUpperCase());
|
|
168
|
+
default:
|
|
169
|
+
// Generic validation: at least 6 alphanumeric characters
|
|
170
|
+
return /^[A-Z0-9]{6,}$/i.test(cleanTin);
|
|
171
|
+
}
|
|
172
|
+
};
|
|
173
|
+
exports.validateTaxIdentificationNumber = validateTaxIdentificationNumber;
|
|
174
|
+
const canHaveMultipleResidencies = (countryCode) => {
|
|
175
|
+
// Some countries allow dual/multiple tax residencies
|
|
176
|
+
const multiResidencyCountries = ['AU', 'CA', 'NZ', 'GB', 'IE'];
|
|
177
|
+
return multiResidencyCountries.includes(countryCode);
|
|
178
|
+
};
|
|
179
|
+
exports.canHaveMultipleResidencies = canHaveMultipleResidencies;
|