@cranberry-money/shared-services 1.13.0 → 3.0.1
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 -35
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +114 -42
- 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 +157 -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 +39 -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/config/serviceConfig.d.ts +0 -37
- package/dist/config/serviceConfig.d.ts.map +0 -1
- package/dist/config/serviceConfig.js +0 -70
- 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,201 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Portfolio Template Services - Pure Functional Implementation
|
|
4
|
+
*
|
|
5
|
+
* Template-based portfolio creation and management 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.validateAllocationPercentages = exports.getRiskLevelDescription = exports.getRiskLevelLabel = exports.TEMPLATE_STATUS_LABELS = exports.RISK_LEVEL_DESCRIPTIONS = exports.RISK_LEVEL_LABELS = exports.RISK_LEVELS = exports.getTemplatesByRiskLevel = exports.getActiveTemplates = exports.applyPortfolioTemplate = exports.deleteTemplateAllocation = exports.updateTemplateAllocation = exports.createTemplateAllocation = exports.getPortfolioTemplateAllocations = exports.deletePortfolioTemplate = exports.updatePortfolioTemplate = exports.createPortfolioTemplate = exports.getRecommendedPortfolioTemplate = exports.getPortfolioTemplate = exports.getPortfolioTemplates = void 0;
|
|
10
|
+
// Portfolio template operations with explicit dependencies
|
|
11
|
+
const getPortfolioTemplates = async ({ apiClient }, filters) => {
|
|
12
|
+
const params = {};
|
|
13
|
+
if (filters?.riskLevel)
|
|
14
|
+
params.risk_level = filters.riskLevel;
|
|
15
|
+
if (filters?.status)
|
|
16
|
+
params.status = filters.status;
|
|
17
|
+
if (filters?.isRecommended !== undefined)
|
|
18
|
+
params.is_recommended = String(filters.isRecommended);
|
|
19
|
+
if (filters?.ordering)
|
|
20
|
+
params.ordering = filters.ordering;
|
|
21
|
+
return apiClient.get('/api/portfolio-templates/', { params });
|
|
22
|
+
};
|
|
23
|
+
exports.getPortfolioTemplates = getPortfolioTemplates;
|
|
24
|
+
const getPortfolioTemplate = async ({ apiClient }, uuid) => {
|
|
25
|
+
if (!uuid?.trim()) {
|
|
26
|
+
throw new Error('Portfolio template UUID is required');
|
|
27
|
+
}
|
|
28
|
+
return apiClient.get(`/api/portfolio-templates/${uuid}/`);
|
|
29
|
+
};
|
|
30
|
+
exports.getPortfolioTemplate = getPortfolioTemplate;
|
|
31
|
+
const getRecommendedPortfolioTemplate = async ({ apiClient }) => {
|
|
32
|
+
return apiClient.get('/api/portfolio-templates/recommended/');
|
|
33
|
+
};
|
|
34
|
+
exports.getRecommendedPortfolioTemplate = getRecommendedPortfolioTemplate;
|
|
35
|
+
const createPortfolioTemplate = async ({ apiClient }, data) => {
|
|
36
|
+
// Validation
|
|
37
|
+
if (!data.name?.trim()) {
|
|
38
|
+
throw new Error('Template name is required');
|
|
39
|
+
}
|
|
40
|
+
if (!data.description?.trim()) {
|
|
41
|
+
throw new Error('Template description is required');
|
|
42
|
+
}
|
|
43
|
+
if (!data.riskLevel) {
|
|
44
|
+
throw new Error('Risk level is required');
|
|
45
|
+
}
|
|
46
|
+
const payload = {
|
|
47
|
+
...data,
|
|
48
|
+
minimumInvestment: String(data.minimumInvestment),
|
|
49
|
+
targetReturn: String(data.targetReturn),
|
|
50
|
+
};
|
|
51
|
+
return apiClient.post('/api/portfolio-templates/', payload);
|
|
52
|
+
};
|
|
53
|
+
exports.createPortfolioTemplate = createPortfolioTemplate;
|
|
54
|
+
const updatePortfolioTemplate = async ({ apiClient }, uuid, data) => {
|
|
55
|
+
if (!uuid?.trim()) {
|
|
56
|
+
throw new Error('Portfolio template UUID is required');
|
|
57
|
+
}
|
|
58
|
+
const payload = { ...data };
|
|
59
|
+
if (data.minimumInvestment !== undefined) {
|
|
60
|
+
payload.minimumInvestment = String(data.minimumInvestment);
|
|
61
|
+
}
|
|
62
|
+
if (data.targetReturn !== undefined) {
|
|
63
|
+
payload.targetReturn = String(data.targetReturn);
|
|
64
|
+
}
|
|
65
|
+
return apiClient.patch(`/api/portfolio-templates/${uuid}/`, payload);
|
|
66
|
+
};
|
|
67
|
+
exports.updatePortfolioTemplate = updatePortfolioTemplate;
|
|
68
|
+
const deletePortfolioTemplate = async ({ apiClient }, uuid) => {
|
|
69
|
+
if (!uuid?.trim()) {
|
|
70
|
+
throw new Error('Portfolio template UUID is required');
|
|
71
|
+
}
|
|
72
|
+
await apiClient.delete(`/api/portfolio-templates/${uuid}/`);
|
|
73
|
+
};
|
|
74
|
+
exports.deletePortfolioTemplate = deletePortfolioTemplate;
|
|
75
|
+
// Template allocation operations
|
|
76
|
+
const getPortfolioTemplateAllocations = async ({ apiClient }, templateUuid) => {
|
|
77
|
+
if (!templateUuid?.trim()) {
|
|
78
|
+
throw new Error('Template UUID is required');
|
|
79
|
+
}
|
|
80
|
+
return apiClient.get(`/api/portfolio-templates/${templateUuid}/allocations/`);
|
|
81
|
+
};
|
|
82
|
+
exports.getPortfolioTemplateAllocations = getPortfolioTemplateAllocations;
|
|
83
|
+
const createTemplateAllocation = async ({ apiClient }, data) => {
|
|
84
|
+
// Validation
|
|
85
|
+
if (!data.template?.trim()) {
|
|
86
|
+
throw new Error('Template UUID is required');
|
|
87
|
+
}
|
|
88
|
+
if (!data.instrument?.trim()) {
|
|
89
|
+
throw new Error('Instrument UUID is required');
|
|
90
|
+
}
|
|
91
|
+
if (!data.targetPercentage) {
|
|
92
|
+
throw new Error('Target percentage is required');
|
|
93
|
+
}
|
|
94
|
+
const payload = {
|
|
95
|
+
...data,
|
|
96
|
+
targetPercentage: String(data.targetPercentage),
|
|
97
|
+
};
|
|
98
|
+
if (data.minPercentage !== undefined) {
|
|
99
|
+
payload.minPercentage = String(data.minPercentage);
|
|
100
|
+
}
|
|
101
|
+
if (data.maxPercentage !== undefined) {
|
|
102
|
+
payload.maxPercentage = String(data.maxPercentage);
|
|
103
|
+
}
|
|
104
|
+
return apiClient.post('/api/template-allocations/', payload);
|
|
105
|
+
};
|
|
106
|
+
exports.createTemplateAllocation = createTemplateAllocation;
|
|
107
|
+
const updateTemplateAllocation = async ({ apiClient }, uuid, data) => {
|
|
108
|
+
if (!uuid?.trim()) {
|
|
109
|
+
throw new Error('Allocation UUID is required');
|
|
110
|
+
}
|
|
111
|
+
const payload = { ...data };
|
|
112
|
+
if (data.targetPercentage !== undefined) {
|
|
113
|
+
payload.targetPercentage = String(data.targetPercentage);
|
|
114
|
+
}
|
|
115
|
+
if (data.minPercentage !== undefined) {
|
|
116
|
+
payload.minPercentage = String(data.minPercentage);
|
|
117
|
+
}
|
|
118
|
+
if (data.maxPercentage !== undefined) {
|
|
119
|
+
payload.maxPercentage = String(data.maxPercentage);
|
|
120
|
+
}
|
|
121
|
+
return apiClient.patch(`/api/template-allocations/${uuid}/`, payload);
|
|
122
|
+
};
|
|
123
|
+
exports.updateTemplateAllocation = updateTemplateAllocation;
|
|
124
|
+
const deleteTemplateAllocation = async ({ apiClient }, uuid) => {
|
|
125
|
+
if (!uuid?.trim()) {
|
|
126
|
+
throw new Error('Allocation UUID is required');
|
|
127
|
+
}
|
|
128
|
+
await apiClient.delete(`/api/template-allocations/${uuid}/`);
|
|
129
|
+
};
|
|
130
|
+
exports.deleteTemplateAllocation = deleteTemplateAllocation;
|
|
131
|
+
// Apply template to portfolio
|
|
132
|
+
const applyPortfolioTemplate = async ({ apiClient }, templateUuid, portfolioUuid) => {
|
|
133
|
+
if (!templateUuid?.trim()) {
|
|
134
|
+
throw new Error('Template UUID is required');
|
|
135
|
+
}
|
|
136
|
+
if (!portfolioUuid?.trim()) {
|
|
137
|
+
throw new Error('Portfolio UUID is required');
|
|
138
|
+
}
|
|
139
|
+
return apiClient.post(`/api/portfolio-templates/${templateUuid}/apply/`, { portfolio: portfolioUuid });
|
|
140
|
+
};
|
|
141
|
+
exports.applyPortfolioTemplate = applyPortfolioTemplate;
|
|
142
|
+
// Helper functions
|
|
143
|
+
const getActiveTemplates = async ({ apiClient }, riskLevel) => {
|
|
144
|
+
return (0, exports.getPortfolioTemplates)({ apiClient }, {
|
|
145
|
+
status: 'ACTIVE',
|
|
146
|
+
riskLevel,
|
|
147
|
+
ordering: 'risk_level,name',
|
|
148
|
+
});
|
|
149
|
+
};
|
|
150
|
+
exports.getActiveTemplates = getActiveTemplates;
|
|
151
|
+
const getTemplatesByRiskLevel = async ({ apiClient }, riskLevel) => {
|
|
152
|
+
return (0, exports.getPortfolioTemplates)({ apiClient }, {
|
|
153
|
+
riskLevel,
|
|
154
|
+
status: 'ACTIVE',
|
|
155
|
+
ordering: '-is_recommended,name',
|
|
156
|
+
});
|
|
157
|
+
};
|
|
158
|
+
exports.getTemplatesByRiskLevel = getTemplatesByRiskLevel;
|
|
159
|
+
// Constants
|
|
160
|
+
exports.RISK_LEVELS = {
|
|
161
|
+
CONSERVATIVE: 'CONSERVATIVE',
|
|
162
|
+
MODERATE: 'MODERATE',
|
|
163
|
+
BALANCED: 'BALANCED',
|
|
164
|
+
GROWTH: 'GROWTH',
|
|
165
|
+
AGGRESSIVE: 'AGGRESSIVE',
|
|
166
|
+
};
|
|
167
|
+
exports.RISK_LEVEL_LABELS = {
|
|
168
|
+
CONSERVATIVE: 'Conservative',
|
|
169
|
+
MODERATE: 'Moderate',
|
|
170
|
+
BALANCED: 'Balanced',
|
|
171
|
+
GROWTH: 'Growth',
|
|
172
|
+
AGGRESSIVE: 'Aggressive',
|
|
173
|
+
};
|
|
174
|
+
exports.RISK_LEVEL_DESCRIPTIONS = {
|
|
175
|
+
CONSERVATIVE: 'Low risk, stable returns',
|
|
176
|
+
MODERATE: 'Moderate risk, steady growth',
|
|
177
|
+
BALANCED: 'Balanced risk and return',
|
|
178
|
+
GROWTH: 'Higher risk, growth focused',
|
|
179
|
+
AGGRESSIVE: 'Highest risk, maximum growth potential',
|
|
180
|
+
};
|
|
181
|
+
exports.TEMPLATE_STATUS_LABELS = {
|
|
182
|
+
ACTIVE: 'Active',
|
|
183
|
+
INACTIVE: 'Inactive',
|
|
184
|
+
ARCHIVED: 'Archived',
|
|
185
|
+
};
|
|
186
|
+
// Utility functions
|
|
187
|
+
const getRiskLevelLabel = (riskLevel) => {
|
|
188
|
+
return exports.RISK_LEVEL_LABELS[riskLevel] || riskLevel;
|
|
189
|
+
};
|
|
190
|
+
exports.getRiskLevelLabel = getRiskLevelLabel;
|
|
191
|
+
const getRiskLevelDescription = (riskLevel) => {
|
|
192
|
+
return exports.RISK_LEVEL_DESCRIPTIONS[riskLevel] || '';
|
|
193
|
+
};
|
|
194
|
+
exports.getRiskLevelDescription = getRiskLevelDescription;
|
|
195
|
+
const validateAllocationPercentages = (allocations) => {
|
|
196
|
+
const total = allocations.reduce((sum, allocation) => {
|
|
197
|
+
return sum + parseFloat(allocation.targetPercentage);
|
|
198
|
+
}, 0);
|
|
199
|
+
return Math.abs(total - 100) < 0.01; // Allow for small floating point errors
|
|
200
|
+
};
|
|
201
|
+
exports.validateAllocationPercentages = validateAllocationPercentages;
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Portfolio Services - Pure Functional Implementation
|
|
3
|
+
*
|
|
4
|
+
* All portfolio 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 Portfolio {
|
|
9
|
+
readonly uuid: string;
|
|
10
|
+
readonly account: string;
|
|
11
|
+
readonly template?: string;
|
|
12
|
+
readonly name?: string;
|
|
13
|
+
readonly marketValue: string;
|
|
14
|
+
}
|
|
15
|
+
export interface PortfolioFilters {
|
|
16
|
+
readonly isActive?: boolean;
|
|
17
|
+
readonly sortBy?: 'name' | 'totalValue' | 'createdAt';
|
|
18
|
+
readonly sortOrder?: 'asc' | 'desc';
|
|
19
|
+
readonly limit?: number;
|
|
20
|
+
readonly offset?: number;
|
|
21
|
+
}
|
|
22
|
+
export interface CreatePortfolioPayload {
|
|
23
|
+
readonly name: string;
|
|
24
|
+
readonly description?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface UpdatePortfolioPayload {
|
|
27
|
+
readonly name?: string;
|
|
28
|
+
readonly description?: string;
|
|
29
|
+
readonly isActive?: boolean;
|
|
30
|
+
}
|
|
31
|
+
export interface PaginatedPortfolios {
|
|
32
|
+
readonly results: Portfolio[];
|
|
33
|
+
readonly count: number;
|
|
34
|
+
readonly next: string | null;
|
|
35
|
+
readonly previous: string | null;
|
|
36
|
+
}
|
|
37
|
+
export declare const getPortfolios: ({ apiClient }: {
|
|
38
|
+
apiClient: ApiClient;
|
|
39
|
+
}, filters?: PortfolioFilters) => Promise<PaginatedPortfolios>;
|
|
40
|
+
export declare const getPortfolio: ({ apiClient }: {
|
|
41
|
+
apiClient: ApiClient;
|
|
42
|
+
}, uuid: string) => Promise<Portfolio>;
|
|
43
|
+
export declare const createPortfolio: ({ apiClient }: {
|
|
44
|
+
apiClient: ApiClient;
|
|
45
|
+
}, data: CreatePortfolioPayload) => Promise<Portfolio>;
|
|
46
|
+
export declare const updatePortfolio: ({ apiClient }: {
|
|
47
|
+
apiClient: ApiClient;
|
|
48
|
+
}, uuid: string, data: UpdatePortfolioPayload) => Promise<Portfolio>;
|
|
49
|
+
export declare const deletePortfolio: ({ apiClient }: {
|
|
50
|
+
apiClient: ApiClient;
|
|
51
|
+
}, uuid: string) => Promise<void>;
|
|
52
|
+
export interface AssetAllocation {
|
|
53
|
+
readonly uuid: string;
|
|
54
|
+
readonly portfolio: string;
|
|
55
|
+
readonly instrument: string;
|
|
56
|
+
readonly instrumentName: string;
|
|
57
|
+
readonly instrumentSymbol: string;
|
|
58
|
+
readonly percentage: string;
|
|
59
|
+
}
|
|
60
|
+
export interface AssetAllocationPayload {
|
|
61
|
+
readonly portfolio: string;
|
|
62
|
+
readonly instrument: string;
|
|
63
|
+
readonly percentage: string | number;
|
|
64
|
+
}
|
|
65
|
+
export declare const getPortfolioAllocations: ({ apiClient }: {
|
|
66
|
+
apiClient: ApiClient;
|
|
67
|
+
}, portfolioUuid: string) => Promise<AssetAllocation[]>;
|
|
68
|
+
export declare const createAssetAllocation: ({ apiClient }: {
|
|
69
|
+
apiClient: ApiClient;
|
|
70
|
+
}, data: AssetAllocationPayload) => Promise<AssetAllocation>;
|
|
71
|
+
export declare const updateAssetAllocation: ({ apiClient }: {
|
|
72
|
+
apiClient: ApiClient;
|
|
73
|
+
}, uuid: string, data: Partial<AssetAllocationPayload>) => Promise<AssetAllocation>;
|
|
74
|
+
export declare const deleteAssetAllocation: ({ apiClient }: {
|
|
75
|
+
apiClient: ApiClient;
|
|
76
|
+
}, uuid: string) => Promise<void>;
|
|
77
|
+
export interface AssetHolding {
|
|
78
|
+
readonly uuid: string;
|
|
79
|
+
readonly portfolio: string;
|
|
80
|
+
readonly instrument: any;
|
|
81
|
+
readonly instrumentName: string;
|
|
82
|
+
readonly instrumentSymbol: string;
|
|
83
|
+
readonly quantity: number;
|
|
84
|
+
readonly createdAt: string;
|
|
85
|
+
readonly updatedAt: string;
|
|
86
|
+
}
|
|
87
|
+
export interface AssetHoldingSnapshot {
|
|
88
|
+
readonly id: number;
|
|
89
|
+
readonly assetHolding: string;
|
|
90
|
+
readonly portfolioId: number;
|
|
91
|
+
readonly instrumentName: string;
|
|
92
|
+
readonly instrumentSymbol: string;
|
|
93
|
+
readonly quantity: number;
|
|
94
|
+
readonly snapshotReason: 'TRADE' | 'REBALANCE' | 'VALUATION' | 'AUDIT';
|
|
95
|
+
readonly snapshotDate: string;
|
|
96
|
+
readonly createdAt: string;
|
|
97
|
+
readonly updatedAt: string;
|
|
98
|
+
}
|
|
99
|
+
export interface AssetHoldingFilters {
|
|
100
|
+
readonly portfolioId?: string;
|
|
101
|
+
readonly portfolioUuid?: string;
|
|
102
|
+
readonly instrument?: string;
|
|
103
|
+
readonly minQuantity?: number;
|
|
104
|
+
readonly maxQuantity?: number;
|
|
105
|
+
readonly orderBy?: string;
|
|
106
|
+
}
|
|
107
|
+
export interface AssetHoldingSnapshotFilters {
|
|
108
|
+
readonly assetHoldingId?: string;
|
|
109
|
+
readonly portfolioId?: string;
|
|
110
|
+
readonly reason?: 'TRADE' | 'REBALANCE' | 'VALUATION' | 'AUDIT';
|
|
111
|
+
readonly startDate?: string;
|
|
112
|
+
readonly endDate?: string;
|
|
113
|
+
readonly orderBy?: string;
|
|
114
|
+
}
|
|
115
|
+
export interface PaginatedAssetHoldings {
|
|
116
|
+
readonly results: AssetHolding[];
|
|
117
|
+
readonly count: number;
|
|
118
|
+
readonly next: string | null;
|
|
119
|
+
readonly previous: string | null;
|
|
120
|
+
}
|
|
121
|
+
export interface PaginatedAssetHoldingSnapshots {
|
|
122
|
+
readonly results: AssetHoldingSnapshot[];
|
|
123
|
+
readonly count: number;
|
|
124
|
+
readonly next: string | null;
|
|
125
|
+
readonly previous: string | null;
|
|
126
|
+
}
|
|
127
|
+
export declare const getAssetHoldings: ({ apiClient }: {
|
|
128
|
+
apiClient: ApiClient;
|
|
129
|
+
}, filters?: AssetHoldingFilters) => Promise<PaginatedAssetHoldings>;
|
|
130
|
+
export declare const getPortfolioHoldings: ({ apiClient }: {
|
|
131
|
+
apiClient: ApiClient;
|
|
132
|
+
}, portfolioUuid: string, orderBy?: string) => Promise<AssetHolding[]>;
|
|
133
|
+
export declare const getAssetHolding: ({ apiClient }: {
|
|
134
|
+
apiClient: ApiClient;
|
|
135
|
+
}, uuid: string) => Promise<AssetHolding>;
|
|
136
|
+
export declare const getAssetHoldingSnapshots: ({ apiClient }: {
|
|
137
|
+
apiClient: ApiClient;
|
|
138
|
+
}, filters?: AssetHoldingSnapshotFilters) => Promise<PaginatedAssetHoldingSnapshots>;
|
|
139
|
+
export declare const getAssetHoldingSnapshot: ({ apiClient }: {
|
|
140
|
+
apiClient: ApiClient;
|
|
141
|
+
}, id: number) => Promise<AssetHoldingSnapshot>;
|
|
142
|
+
export interface RebalancingTradesGenerationResponse {
|
|
143
|
+
readonly status: string;
|
|
144
|
+
readonly message: string;
|
|
145
|
+
readonly tradeCount?: number;
|
|
146
|
+
readonly buyTradeCount?: number;
|
|
147
|
+
readonly sellTradeCount?: number;
|
|
148
|
+
readonly totalTradeValue?: number;
|
|
149
|
+
readonly netCashImpact?: number;
|
|
150
|
+
readonly availableCash?: number;
|
|
151
|
+
readonly requiredMinimum?: number;
|
|
152
|
+
readonly errorType?: 'business_logic' | 'permission' | 'server';
|
|
153
|
+
}
|
|
154
|
+
export declare const generateRebalancingTrades: ({ apiClient }: {
|
|
155
|
+
apiClient: ApiClient;
|
|
156
|
+
}, portfolioUuid: string) => Promise<RebalancingTradesGenerationResponse>;
|
|
157
|
+
//# sourceMappingURL=portfolios.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portfolios.d.ts","sourceRoot":"","sources":["../../src/services/portfolios.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Portfolio Services - Pure Functional Implementation
|
|
4
|
+
*
|
|
5
|
+
* All portfolio 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.generateRebalancingTrades = exports.getAssetHoldingSnapshot = exports.getAssetHoldingSnapshots = exports.getAssetHolding = exports.getPortfolioHoldings = exports.getAssetHoldings = exports.deleteAssetAllocation = exports.updateAssetAllocation = exports.createAssetAllocation = exports.getPortfolioAllocations = exports.deletePortfolio = exports.updatePortfolio = exports.createPortfolio = exports.getPortfolio = exports.getPortfolios = void 0;
|
|
10
|
+
// Portfolio operations with explicit dependencies
|
|
11
|
+
const getPortfolios = async ({ apiClient }, filters) => {
|
|
12
|
+
const params = {};
|
|
13
|
+
if (filters?.isActive !== undefined) {
|
|
14
|
+
params.is_active = String(filters.isActive);
|
|
15
|
+
}
|
|
16
|
+
if (filters?.sortBy) {
|
|
17
|
+
params.ordering = filters.sortOrder === 'desc' ? `-${filters.sortBy}` : filters.sortBy;
|
|
18
|
+
}
|
|
19
|
+
if (filters?.limit) {
|
|
20
|
+
params.limit = String(filters.limit);
|
|
21
|
+
}
|
|
22
|
+
if (filters?.offset) {
|
|
23
|
+
params.offset = String(filters.offset);
|
|
24
|
+
}
|
|
25
|
+
return apiClient.get('/api/portfolios/', { params });
|
|
26
|
+
};
|
|
27
|
+
exports.getPortfolios = getPortfolios;
|
|
28
|
+
const getPortfolio = async ({ apiClient }, uuid) => {
|
|
29
|
+
return apiClient.get(`/api/portfolios/${uuid}/`);
|
|
30
|
+
};
|
|
31
|
+
exports.getPortfolio = getPortfolio;
|
|
32
|
+
const createPortfolio = async ({ apiClient }, data) => {
|
|
33
|
+
return apiClient.post('/api/portfolios/', data);
|
|
34
|
+
};
|
|
35
|
+
exports.createPortfolio = createPortfolio;
|
|
36
|
+
const updatePortfolio = async ({ apiClient }, uuid, data) => {
|
|
37
|
+
return apiClient.patch(`/api/portfolios/${uuid}/`, data);
|
|
38
|
+
};
|
|
39
|
+
exports.updatePortfolio = updatePortfolio;
|
|
40
|
+
const deletePortfolio = async ({ apiClient }, uuid) => {
|
|
41
|
+
await apiClient.delete(`/api/portfolios/${uuid}/`);
|
|
42
|
+
};
|
|
43
|
+
exports.deletePortfolio = deletePortfolio;
|
|
44
|
+
const getPortfolioAllocations = async ({ apiClient }, portfolioUuid) => {
|
|
45
|
+
if (!portfolioUuid?.trim()) {
|
|
46
|
+
throw new Error('Portfolio UUID is required');
|
|
47
|
+
}
|
|
48
|
+
return apiClient.get(`/api/portfolios/${portfolioUuid}/allocations/`, {
|
|
49
|
+
params: { order_by: 'created_at' },
|
|
50
|
+
});
|
|
51
|
+
};
|
|
52
|
+
exports.getPortfolioAllocations = getPortfolioAllocations;
|
|
53
|
+
const createAssetAllocation = async ({ apiClient }, data) => {
|
|
54
|
+
if (!data.portfolio?.trim()) {
|
|
55
|
+
throw new Error('Portfolio UUID is required');
|
|
56
|
+
}
|
|
57
|
+
if (!data.instrument?.trim()) {
|
|
58
|
+
throw new Error('Instrument UUID is required');
|
|
59
|
+
}
|
|
60
|
+
if (!data.percentage) {
|
|
61
|
+
throw new Error('Allocation percentage is required');
|
|
62
|
+
}
|
|
63
|
+
return apiClient.post('/api/asset-allocations/', data);
|
|
64
|
+
};
|
|
65
|
+
exports.createAssetAllocation = createAssetAllocation;
|
|
66
|
+
const updateAssetAllocation = async ({ apiClient }, uuid, data) => {
|
|
67
|
+
if (!uuid?.trim()) {
|
|
68
|
+
throw new Error('Asset allocation UUID is required');
|
|
69
|
+
}
|
|
70
|
+
return apiClient.patch(`/api/asset-allocations/${uuid}/`, data);
|
|
71
|
+
};
|
|
72
|
+
exports.updateAssetAllocation = updateAssetAllocation;
|
|
73
|
+
const deleteAssetAllocation = async ({ apiClient }, uuid) => {
|
|
74
|
+
if (!uuid?.trim()) {
|
|
75
|
+
throw new Error('Asset allocation UUID is required');
|
|
76
|
+
}
|
|
77
|
+
await apiClient.delete(`/api/asset-allocations/${uuid}/`);
|
|
78
|
+
};
|
|
79
|
+
exports.deleteAssetAllocation = deleteAssetAllocation;
|
|
80
|
+
const getAssetHoldings = async ({ apiClient }, filters) => {
|
|
81
|
+
const params = {};
|
|
82
|
+
if (filters?.portfolioId)
|
|
83
|
+
params.portfolio_id = filters.portfolioId;
|
|
84
|
+
if (filters?.portfolioUuid)
|
|
85
|
+
params.portfolio_uuid = filters.portfolioUuid;
|
|
86
|
+
if (filters?.instrument)
|
|
87
|
+
params.instrument = filters.instrument;
|
|
88
|
+
if (filters?.minQuantity)
|
|
89
|
+
params.min_quantity = String(filters.minQuantity);
|
|
90
|
+
if (filters?.maxQuantity)
|
|
91
|
+
params.max_quantity = String(filters.maxQuantity);
|
|
92
|
+
if (filters?.orderBy)
|
|
93
|
+
params.order_by = filters.orderBy;
|
|
94
|
+
return apiClient.get('/api/asset-holdings/', { params });
|
|
95
|
+
};
|
|
96
|
+
exports.getAssetHoldings = getAssetHoldings;
|
|
97
|
+
const getPortfolioHoldings = async ({ apiClient }, portfolioUuid, orderBy) => {
|
|
98
|
+
if (!portfolioUuid?.trim()) {
|
|
99
|
+
throw new Error('Portfolio UUID is required');
|
|
100
|
+
}
|
|
101
|
+
const params = {};
|
|
102
|
+
if (orderBy)
|
|
103
|
+
params.order_by = orderBy;
|
|
104
|
+
return apiClient.get(`/api/portfolios/${portfolioUuid}/holdings/`, { params });
|
|
105
|
+
};
|
|
106
|
+
exports.getPortfolioHoldings = getPortfolioHoldings;
|
|
107
|
+
const getAssetHolding = async ({ apiClient }, uuid) => {
|
|
108
|
+
if (!uuid?.trim()) {
|
|
109
|
+
throw new Error('Asset holding UUID is required');
|
|
110
|
+
}
|
|
111
|
+
return apiClient.get(`/api/asset-holdings/${uuid}/`);
|
|
112
|
+
};
|
|
113
|
+
exports.getAssetHolding = getAssetHolding;
|
|
114
|
+
const getAssetHoldingSnapshots = async ({ apiClient }, filters) => {
|
|
115
|
+
const params = {};
|
|
116
|
+
if (filters?.assetHoldingId)
|
|
117
|
+
params.asset_holding_id = filters.assetHoldingId;
|
|
118
|
+
if (filters?.portfolioId)
|
|
119
|
+
params.portfolio_id = filters.portfolioId;
|
|
120
|
+
if (filters?.reason)
|
|
121
|
+
params.reason = filters.reason;
|
|
122
|
+
if (filters?.startDate)
|
|
123
|
+
params.start_date = filters.startDate;
|
|
124
|
+
if (filters?.endDate)
|
|
125
|
+
params.end_date = filters.endDate;
|
|
126
|
+
if (filters?.orderBy)
|
|
127
|
+
params.order_by = filters.orderBy;
|
|
128
|
+
return apiClient.get('/api/asset-holding-snapshots/', { params });
|
|
129
|
+
};
|
|
130
|
+
exports.getAssetHoldingSnapshots = getAssetHoldingSnapshots;
|
|
131
|
+
const getAssetHoldingSnapshot = async ({ apiClient }, id) => {
|
|
132
|
+
if (!id || id <= 0) {
|
|
133
|
+
throw new Error('Valid asset holding snapshot ID is required');
|
|
134
|
+
}
|
|
135
|
+
return apiClient.get(`/api/asset-holding-snapshots/${id}/`);
|
|
136
|
+
};
|
|
137
|
+
exports.getAssetHoldingSnapshot = getAssetHoldingSnapshot;
|
|
138
|
+
const generateRebalancingTrades = async ({ apiClient }, portfolioUuid) => {
|
|
139
|
+
if (!portfolioUuid?.trim()) {
|
|
140
|
+
throw new Error('Portfolio UUID is required');
|
|
141
|
+
}
|
|
142
|
+
return apiClient.post(`/api/portfolios/${portfolioUuid}/generate-rebalancing-trades/`, {});
|
|
143
|
+
};
|
|
144
|
+
exports.generateRebalancingTrades = generateRebalancingTrades;
|