@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.
Files changed (450) hide show
  1. package/CHANGELOG.md +240 -0
  2. package/README.md +464 -190
  3. package/dist/api/functional-client.d.ts +66 -0
  4. package/dist/api/functional-client.d.ts.map +1 -0
  5. package/dist/api/functional-client.js +165 -0
  6. package/dist/auth/functional/auth-operations.d.ts +116 -0
  7. package/dist/auth/functional/auth-operations.d.ts.map +1 -0
  8. package/dist/auth/functional/auth-operations.js +246 -0
  9. package/dist/auth/functional/auth-state.d.ts +38 -0
  10. package/dist/auth/functional/auth-state.d.ts.map +1 -0
  11. package/dist/auth/functional/auth-state.js +87 -0
  12. package/dist/auth/functional/token-storage.d.ts +44 -0
  13. package/dist/auth/functional/token-storage.d.ts.map +1 -0
  14. package/dist/auth/functional/token-storage.js +178 -0
  15. package/dist/auth/react/AuthProvider.d.ts +92 -0
  16. package/dist/auth/react/AuthProvider.d.ts.map +1 -0
  17. package/dist/auth/react/AuthProvider.js +207 -0
  18. package/dist/index.d.ts +25 -34
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +114 -40
  21. package/dist/integration/blueberry-integration.d.ts +21 -0
  22. package/dist/integration/blueberry-integration.d.ts.map +1 -0
  23. package/dist/integration/blueberry-integration.js +109 -0
  24. package/dist/integration/index.d.ts +8 -0
  25. package/dist/integration/index.d.ts.map +1 -0
  26. package/dist/integration/index.js +18 -0
  27. package/dist/services/accounts.d.ts +220 -0
  28. package/dist/services/accounts.d.ts.map +1 -0
  29. package/dist/services/accounts.js +175 -0
  30. package/dist/services/banks.d.ts +123 -0
  31. package/dist/services/banks.d.ts.map +1 -0
  32. package/dist/services/banks.js +151 -0
  33. package/dist/services/cash-accounts.d.ts +112 -0
  34. package/dist/services/cash-accounts.d.ts.map +1 -0
  35. package/dist/services/cash-accounts.js +222 -0
  36. package/dist/services/documents.d.ts +143 -0
  37. package/dist/services/documents.d.ts.map +1 -0
  38. package/dist/services/documents.js +253 -0
  39. package/dist/services/factories/account-factory.d.ts +16 -0
  40. package/dist/services/factories/account-factory.d.ts.map +1 -0
  41. package/dist/services/factories/account-factory.js +79 -0
  42. package/dist/services/factories/auth-factory.d.ts +23 -0
  43. package/dist/services/factories/auth-factory.d.ts.map +1 -0
  44. package/dist/services/factories/auth-factory.js +75 -0
  45. package/dist/services/factories/bank-factory.d.ts +16 -0
  46. package/dist/services/factories/bank-factory.d.ts.map +1 -0
  47. package/dist/services/factories/bank-factory.js +72 -0
  48. package/dist/services/factories/cash-account-factory.d.ts +16 -0
  49. package/dist/services/factories/cash-account-factory.d.ts.map +1 -0
  50. package/dist/services/factories/cash-account-factory.js +74 -0
  51. package/dist/services/factories/document-factory.d.ts +16 -0
  52. package/dist/services/factories/document-factory.d.ts.map +1 -0
  53. package/dist/services/factories/document-factory.js +85 -0
  54. package/dist/services/factories/index.d.ts +21 -0
  55. package/dist/services/factories/index.d.ts.map +1 -0
  56. package/dist/services/factories/index.js +40 -0
  57. package/dist/services/factories/instrument-factory.d.ts +16 -0
  58. package/dist/services/factories/instrument-factory.d.ts.map +1 -0
  59. package/dist/services/factories/instrument-factory.js +68 -0
  60. package/dist/services/factories/master-factory.d.ts +74 -0
  61. package/dist/services/factories/master-factory.d.ts.map +1 -0
  62. package/dist/services/factories/master-factory.js +183 -0
  63. package/dist/services/factories/portfolio-factory.d.ts +16 -0
  64. package/dist/services/factories/portfolio-factory.d.ts.map +1 -0
  65. package/dist/services/factories/portfolio-factory.js +74 -0
  66. package/dist/services/factories/portfolio-template-factory.d.ts +16 -0
  67. package/dist/services/factories/portfolio-template-factory.d.ts.map +1 -0
  68. package/dist/services/factories/portfolio-template-factory.js +76 -0
  69. package/dist/services/factories/reference-data-factory.d.ts +16 -0
  70. package/dist/services/factories/reference-data-factory.d.ts.map +1 -0
  71. package/dist/services/factories/reference-data-factory.js +86 -0
  72. package/dist/services/factories/tax-residency-factory.d.ts +16 -0
  73. package/dist/services/factories/tax-residency-factory.d.ts.map +1 -0
  74. package/dist/services/factories/tax-residency-factory.js +73 -0
  75. package/dist/services/factories/trade-factory.d.ts +16 -0
  76. package/dist/services/factories/trade-factory.d.ts.map +1 -0
  77. package/dist/services/factories/trade-factory.js +79 -0
  78. package/dist/services/factories/types.d.ts +250 -0
  79. package/dist/services/factories/types.d.ts.map +1 -0
  80. package/dist/services/factories/types.js +32 -0
  81. package/dist/services/factories/withdrawal-factory.d.ts +16 -0
  82. package/dist/services/factories/withdrawal-factory.d.ts.map +1 -0
  83. package/dist/services/factories/withdrawal-factory.js +78 -0
  84. package/dist/services/instruments.d.ts +138 -0
  85. package/dist/services/instruments.d.ts.map +1 -0
  86. package/dist/services/instruments.js +178 -0
  87. package/dist/services/portfolio-templates.d.ts +142 -0
  88. package/dist/services/portfolio-templates.d.ts.map +1 -0
  89. package/dist/services/portfolio-templates.js +201 -0
  90. package/dist/services/portfolios.d.ts +161 -0
  91. package/dist/services/portfolios.d.ts.map +1 -0
  92. package/dist/services/portfolios.js +144 -0
  93. package/dist/services/reference-data.d.ts +185 -0
  94. package/dist/services/reference-data.d.ts.map +1 -0
  95. package/dist/services/reference-data.js +245 -0
  96. package/dist/services/tax-residencies.d.ts +83 -0
  97. package/dist/services/tax-residencies.d.ts.map +1 -0
  98. package/dist/services/tax-residencies.js +179 -0
  99. package/dist/services/trades.d.ts +190 -0
  100. package/dist/services/trades.d.ts.map +1 -0
  101. package/dist/services/trades.js +207 -0
  102. package/dist/services/withdrawals.d.ts +236 -0
  103. package/dist/services/withdrawals.d.ts.map +1 -0
  104. package/dist/services/withdrawals.js +345 -0
  105. package/package.json +43 -16
  106. package/dist/adapters/MobileApiClient.d.ts +0 -68
  107. package/dist/adapters/MobileApiClient.d.ts.map +0 -1
  108. package/dist/adapters/MobileApiClient.js +0 -240
  109. package/dist/adapters/MobileTokenStorage.d.ts +0 -43
  110. package/dist/adapters/MobileTokenStorage.d.ts.map +0 -1
  111. package/dist/adapters/MobileTokenStorage.js +0 -128
  112. package/dist/adapters/WebApiClient.d.ts +0 -28
  113. package/dist/adapters/WebApiClient.d.ts.map +0 -1
  114. package/dist/adapters/WebApiClient.js +0 -119
  115. package/dist/adapters/WebTokenStorage.d.ts +0 -38
  116. package/dist/adapters/WebTokenStorage.d.ts.map +0 -1
  117. package/dist/adapters/WebTokenStorage.js +0 -86
  118. package/dist/api/apiClient.d.ts +0 -31
  119. package/dist/api/apiClient.d.ts.map +0 -1
  120. package/dist/api/apiClient.js +0 -49
  121. package/dist/api/types.d.ts +0 -51
  122. package/dist/api/types.d.ts.map +0 -1
  123. package/dist/api/types.js +0 -4
  124. package/dist/auth/AuthManager.d.ts +0 -81
  125. package/dist/auth/AuthManager.d.ts.map +0 -1
  126. package/dist/auth/AuthManager.js +0 -223
  127. package/dist/auth/createAuthManager.d.ts +0 -63
  128. package/dist/auth/createAuthManager.d.ts.map +0 -1
  129. package/dist/auth/createAuthManager.js +0 -103
  130. package/dist/auth/useAuthManager.d.ts +0 -66
  131. package/dist/auth/useAuthManager.d.ts.map +0 -1
  132. package/dist/auth/useAuthManager.js +0 -133
  133. package/dist/core/BaseApiClient.d.ts +0 -82
  134. package/dist/core/BaseApiClient.d.ts.map +0 -1
  135. package/dist/core/BaseApiClient.js +0 -89
  136. package/dist/core/TokenStorage.d.ts +0 -45
  137. package/dist/core/TokenStorage.d.ts.map +0 -1
  138. package/dist/core/TokenStorage.js +0 -23
  139. package/dist/query/QueryClient.d.ts +0 -82
  140. package/dist/query/QueryClient.d.ts.map +0 -1
  141. package/dist/query/QueryClient.js +0 -136
  142. package/dist/query/useAuth.d.ts +0 -64
  143. package/dist/query/useAuth.d.ts.map +0 -1
  144. package/dist/query/useAuth.js +0 -144
  145. package/dist/query/usePortfolios.d.ts +0 -79
  146. package/dist/query/usePortfolios.d.ts.map +0 -1
  147. package/dist/query/usePortfolios.js +0 -172
  148. package/dist/services/AuthService.d.ts +0 -75
  149. package/dist/services/AuthService.d.ts.map +0 -1
  150. package/dist/services/AuthService.js +0 -83
  151. package/dist/services/BaseService.d.ts +0 -48
  152. package/dist/services/BaseService.d.ts.map +0 -1
  153. package/dist/services/BaseService.js +0 -51
  154. package/dist/services/PortfolioService.d.ts +0 -100
  155. package/dist/services/PortfolioService.d.ts.map +0 -1
  156. package/dist/services/PortfolioService.js +0 -68
  157. package/dist/services/accounts/constants.d.ts +0 -24
  158. package/dist/services/accounts/constants.d.ts.map +0 -1
  159. package/dist/services/accounts/constants.js +0 -30
  160. package/dist/services/accounts/index.d.ts +0 -7
  161. package/dist/services/accounts/index.d.ts.map +0 -1
  162. package/dist/services/accounts/index.js +0 -6
  163. package/dist/services/accounts/service.d.ts +0 -11
  164. package/dist/services/accounts/service.d.ts.map +0 -1
  165. package/dist/services/accounts/service.js +0 -19
  166. package/dist/services/accounts/types.d.ts +0 -15
  167. package/dist/services/accounts/types.d.ts.map +0 -1
  168. package/dist/services/accounts/types.js +0 -4
  169. package/dist/services/auth/constants.d.ts +0 -30
  170. package/dist/services/auth/constants.d.ts.map +0 -1
  171. package/dist/services/auth/constants.js +0 -37
  172. package/dist/services/auth/index.d.ts +0 -8
  173. package/dist/services/auth/index.d.ts.map +0 -1
  174. package/dist/services/auth/index.js +0 -7
  175. package/dist/services/auth/service.d.ts +0 -8
  176. package/dist/services/auth/service.d.ts.map +0 -1
  177. package/dist/services/auth/service.js +0 -23
  178. package/dist/services/auth/types.d.ts +0 -38
  179. package/dist/services/auth/types.d.ts.map +0 -1
  180. package/dist/services/auth/types.js +0 -1
  181. package/dist/services/auth/utils.d.ts +0 -46
  182. package/dist/services/auth/utils.d.ts.map +0 -1
  183. package/dist/services/auth/utils.js +0 -113
  184. package/dist/services/banks/constants.d.ts +0 -47
  185. package/dist/services/banks/constants.d.ts.map +0 -1
  186. package/dist/services/banks/constants.js +0 -98
  187. package/dist/services/banks/index.d.ts +0 -8
  188. package/dist/services/banks/index.d.ts.map +0 -1
  189. package/dist/services/banks/index.js +0 -7
  190. package/dist/services/banks/service.d.ts +0 -9
  191. package/dist/services/banks/service.d.ts.map +0 -1
  192. package/dist/services/banks/service.js +0 -38
  193. package/dist/services/banks/types.d.ts +0 -36
  194. package/dist/services/banks/types.d.ts.map +0 -1
  195. package/dist/services/banks/types.js +0 -4
  196. package/dist/services/cash_accounts/constants.d.ts +0 -7
  197. package/dist/services/cash_accounts/constants.d.ts.map +0 -1
  198. package/dist/services/cash_accounts/constants.js +0 -7
  199. package/dist/services/cash_accounts/index.d.ts +0 -5
  200. package/dist/services/cash_accounts/index.d.ts.map +0 -1
  201. package/dist/services/cash_accounts/index.js +0 -6
  202. package/dist/services/cash_accounts/service.d.ts +0 -8
  203. package/dist/services/cash_accounts/service.d.ts.map +0 -1
  204. package/dist/services/cash_accounts/service.js +0 -32
  205. package/dist/services/cash_accounts/transactions/constants.d.ts +0 -18
  206. package/dist/services/cash_accounts/transactions/constants.d.ts.map +0 -1
  207. package/dist/services/cash_accounts/transactions/constants.js +0 -25
  208. package/dist/services/cash_accounts/transactions/index.d.ts +0 -5
  209. package/dist/services/cash_accounts/transactions/index.d.ts.map +0 -1
  210. package/dist/services/cash_accounts/transactions/index.js +0 -6
  211. package/dist/services/cash_accounts/transactions/service.d.ts +0 -13
  212. package/dist/services/cash_accounts/transactions/service.d.ts.map +0 -1
  213. package/dist/services/cash_accounts/transactions/service.js +0 -75
  214. package/dist/services/cash_accounts/transactions/types.d.ts +0 -38
  215. package/dist/services/cash_accounts/transactions/types.d.ts.map +0 -1
  216. package/dist/services/cash_accounts/transactions/types.js +0 -11
  217. package/dist/services/cash_accounts/types.d.ts +0 -24
  218. package/dist/services/cash_accounts/types.d.ts.map +0 -1
  219. package/dist/services/cash_accounts/types.js +0 -4
  220. package/dist/services/countries/constants.d.ts +0 -9
  221. package/dist/services/countries/constants.d.ts.map +0 -1
  222. package/dist/services/countries/constants.js +0 -10
  223. package/dist/services/countries/index.d.ts +0 -5
  224. package/dist/services/countries/index.d.ts.map +0 -1
  225. package/dist/services/countries/index.js +0 -6
  226. package/dist/services/countries/service.d.ts +0 -18
  227. package/dist/services/countries/service.d.ts.map +0 -1
  228. package/dist/services/countries/service.js +0 -32
  229. package/dist/services/countries/types.d.ts +0 -24
  230. package/dist/services/countries/types.d.ts.map +0 -1
  231. package/dist/services/countries/types.js +0 -1
  232. package/dist/services/countries/utils.d.ts +0 -38
  233. package/dist/services/countries/utils.d.ts.map +0 -1
  234. package/dist/services/countries/utils.js +0 -62
  235. package/dist/services/documents/constants.d.ts +0 -55
  236. package/dist/services/documents/constants.d.ts.map +0 -1
  237. package/dist/services/documents/constants.js +0 -50
  238. package/dist/services/documents/index.d.ts +0 -6
  239. package/dist/services/documents/index.d.ts.map +0 -1
  240. package/dist/services/documents/index.js +0 -6
  241. package/dist/services/documents/service.d.ts +0 -50
  242. package/dist/services/documents/service.d.ts.map +0 -1
  243. package/dist/services/documents/service.js +0 -116
  244. package/dist/services/documents/types.d.ts +0 -47
  245. package/dist/services/documents/types.d.ts.map +0 -1
  246. package/dist/services/documents/types.js +0 -1
  247. package/dist/services/documents/utils.d.ts +0 -26
  248. package/dist/services/documents/utils.d.ts.map +0 -1
  249. package/dist/services/documents/utils.js +0 -37
  250. package/dist/services/industries/constants.d.ts +0 -8
  251. package/dist/services/industries/constants.d.ts.map +0 -1
  252. package/dist/services/industries/constants.js +0 -9
  253. package/dist/services/industries/index.d.ts +0 -6
  254. package/dist/services/industries/index.d.ts.map +0 -1
  255. package/dist/services/industries/index.js +0 -6
  256. package/dist/services/industries/service.d.ts +0 -18
  257. package/dist/services/industries/service.d.ts.map +0 -1
  258. package/dist/services/industries/service.js +0 -43
  259. package/dist/services/industries/types.d.ts +0 -21
  260. package/dist/services/industries/types.d.ts.map +0 -1
  261. package/dist/services/industries/types.js +0 -1
  262. package/dist/services/industries/utils.d.ts +0 -47
  263. package/dist/services/industries/utils.d.ts.map +0 -1
  264. package/dist/services/industries/utils.js +0 -86
  265. package/dist/services/instruments/constants.d.ts +0 -38
  266. package/dist/services/instruments/constants.d.ts.map +0 -1
  267. package/dist/services/instruments/constants.js +0 -36
  268. package/dist/services/instruments/index.d.ts +0 -5
  269. package/dist/services/instruments/index.d.ts.map +0 -1
  270. package/dist/services/instruments/index.js +0 -6
  271. package/dist/services/instruments/service.d.ts +0 -54
  272. package/dist/services/instruments/service.d.ts.map +0 -1
  273. package/dist/services/instruments/service.js +0 -106
  274. package/dist/services/instruments/types.d.ts +0 -83
  275. package/dist/services/instruments/types.d.ts.map +0 -1
  276. package/dist/services/instruments/types.js +0 -1
  277. package/dist/services/instruments/utils.d.ts +0 -50
  278. package/dist/services/instruments/utils.d.ts.map +0 -1
  279. package/dist/services/instruments/utils.js +0 -111
  280. package/dist/services/portfolio_templates/constants.d.ts +0 -8
  281. package/dist/services/portfolio_templates/constants.d.ts.map +0 -1
  282. package/dist/services/portfolio_templates/constants.js +0 -8
  283. package/dist/services/portfolio_templates/index.d.ts +0 -5
  284. package/dist/services/portfolio_templates/index.d.ts.map +0 -1
  285. package/dist/services/portfolio_templates/index.js +0 -5
  286. package/dist/services/portfolio_templates/service.d.ts +0 -6
  287. package/dist/services/portfolio_templates/service.d.ts.map +0 -1
  288. package/dist/services/portfolio_templates/service.js +0 -14
  289. package/dist/services/portfolio_templates/types.d.ts +0 -49
  290. package/dist/services/portfolio_templates/types.d.ts.map +0 -1
  291. package/dist/services/portfolio_templates/types.js +0 -1
  292. package/dist/services/portfolio_templates/utils.d.ts +0 -8
  293. package/dist/services/portfolio_templates/utils.d.ts.map +0 -1
  294. package/dist/services/portfolio_templates/utils.js +0 -13
  295. package/dist/services/portfolios/allocations/index.d.ts +0 -7
  296. package/dist/services/portfolios/allocations/index.d.ts.map +0 -1
  297. package/dist/services/portfolios/allocations/index.js +0 -6
  298. package/dist/services/portfolios/allocations/service.d.ts +0 -6
  299. package/dist/services/portfolios/allocations/service.d.ts.map +0 -1
  300. package/dist/services/portfolios/allocations/service.js +0 -19
  301. package/dist/services/portfolios/allocations/types.d.ts +0 -17
  302. package/dist/services/portfolios/allocations/types.d.ts.map +0 -1
  303. package/dist/services/portfolios/allocations/types.js +0 -4
  304. package/dist/services/portfolios/allocations/utils.d.ts +0 -3
  305. package/dist/services/portfolios/allocations/utils.d.ts.map +0 -1
  306. package/dist/services/portfolios/allocations/utils.js +0 -7
  307. package/dist/services/portfolios/constants.d.ts +0 -45
  308. package/dist/services/portfolios/constants.d.ts.map +0 -1
  309. package/dist/services/portfolios/constants.js +0 -57
  310. package/dist/services/portfolios/holdings/index.d.ts +0 -7
  311. package/dist/services/portfolios/holdings/index.d.ts.map +0 -1
  312. package/dist/services/portfolios/holdings/index.js +0 -6
  313. package/dist/services/portfolios/holdings/service.d.ts +0 -10
  314. package/dist/services/portfolios/holdings/service.d.ts.map +0 -1
  315. package/dist/services/portfolios/holdings/service.js +0 -53
  316. package/dist/services/portfolios/holdings/types.d.ts +0 -42
  317. package/dist/services/portfolios/holdings/types.d.ts.map +0 -1
  318. package/dist/services/portfolios/holdings/types.js +0 -4
  319. package/dist/services/portfolios/holdings/utils.d.ts +0 -8
  320. package/dist/services/portfolios/holdings/utils.d.ts.map +0 -1
  321. package/dist/services/portfolios/holdings/utils.js +0 -82
  322. package/dist/services/portfolios/index.d.ts +0 -10
  323. package/dist/services/portfolios/index.d.ts.map +0 -1
  324. package/dist/services/portfolios/index.js +0 -10
  325. package/dist/services/portfolios/service.d.ts +0 -7
  326. package/dist/services/portfolios/service.d.ts.map +0 -1
  327. package/dist/services/portfolios/service.js +0 -19
  328. package/dist/services/portfolios/types.d.ts +0 -29
  329. package/dist/services/portfolios/types.d.ts.map +0 -1
  330. package/dist/services/portfolios/types.js +0 -1
  331. package/dist/services/portfolios/utils.d.ts +0 -5
  332. package/dist/services/portfolios/utils.d.ts.map +0 -1
  333. package/dist/services/portfolios/utils.js +0 -26
  334. package/dist/services/sectors/constants.d.ts +0 -7
  335. package/dist/services/sectors/constants.d.ts.map +0 -1
  336. package/dist/services/sectors/constants.js +0 -7
  337. package/dist/services/sectors/index.d.ts +0 -6
  338. package/dist/services/sectors/index.d.ts.map +0 -1
  339. package/dist/services/sectors/index.js +0 -6
  340. package/dist/services/sectors/service.d.ts +0 -14
  341. package/dist/services/sectors/service.d.ts.map +0 -1
  342. package/dist/services/sectors/service.js +0 -32
  343. package/dist/services/sectors/types.d.ts +0 -19
  344. package/dist/services/sectors/types.d.ts.map +0 -1
  345. package/dist/services/sectors/types.js +0 -1
  346. package/dist/services/sectors/utils.d.ts +0 -31
  347. package/dist/services/sectors/utils.d.ts.map +0 -1
  348. package/dist/services/sectors/utils.js +0 -54
  349. package/dist/services/stock_exchanges/constants.d.ts +0 -7
  350. package/dist/services/stock_exchanges/constants.d.ts.map +0 -1
  351. package/dist/services/stock_exchanges/constants.js +0 -7
  352. package/dist/services/stock_exchanges/index.d.ts +0 -6
  353. package/dist/services/stock_exchanges/index.d.ts.map +0 -1
  354. package/dist/services/stock_exchanges/index.js +0 -6
  355. package/dist/services/stock_exchanges/service.d.ts +0 -4
  356. package/dist/services/stock_exchanges/service.d.ts.map +0 -1
  357. package/dist/services/stock_exchanges/service.js +0 -26
  358. package/dist/services/stock_exchanges/types.d.ts +0 -28
  359. package/dist/services/stock_exchanges/types.d.ts.map +0 -1
  360. package/dist/services/stock_exchanges/types.js +0 -1
  361. package/dist/services/stock_exchanges/utils.d.ts +0 -8
  362. package/dist/services/stock_exchanges/utils.d.ts.map +0 -1
  363. package/dist/services/stock_exchanges/utils.js +0 -37
  364. package/dist/services/tax_residencies/constants.d.ts +0 -7
  365. package/dist/services/tax_residencies/constants.d.ts.map +0 -1
  366. package/dist/services/tax_residencies/constants.js +0 -7
  367. package/dist/services/tax_residencies/index.d.ts +0 -10
  368. package/dist/services/tax_residencies/index.d.ts.map +0 -1
  369. package/dist/services/tax_residencies/index.js +0 -11
  370. package/dist/services/tax_residencies/service.d.ts +0 -6
  371. package/dist/services/tax_residencies/service.d.ts.map +0 -1
  372. package/dist/services/tax_residencies/service.js +0 -20
  373. package/dist/services/tax_residencies/types.d.ts +0 -26
  374. package/dist/services/tax_residencies/types.d.ts.map +0 -1
  375. package/dist/services/tax_residencies/types.js +0 -4
  376. package/dist/services/tax_residencies/utils.d.ts +0 -9
  377. package/dist/services/tax_residencies/utils.d.ts.map +0 -1
  378. package/dist/services/tax_residencies/utils.js +0 -19
  379. package/dist/services/trades/constants.d.ts +0 -47
  380. package/dist/services/trades/constants.d.ts.map +0 -1
  381. package/dist/services/trades/constants.js +0 -61
  382. package/dist/services/trades/index.d.ts +0 -4
  383. package/dist/services/trades/index.d.ts.map +0 -1
  384. package/dist/services/trades/index.js +0 -12
  385. package/dist/services/trades/service.d.ts +0 -19
  386. package/dist/services/trades/service.d.ts.map +0 -1
  387. package/dist/services/trades/service.js +0 -177
  388. package/dist/services/trades/types.d.ts +0 -114
  389. package/dist/services/trades/types.d.ts.map +0 -1
  390. package/dist/services/trades/types.js +0 -1
  391. package/dist/services/users/constants.d.ts +0 -7
  392. package/dist/services/users/constants.d.ts.map +0 -1
  393. package/dist/services/users/constants.js +0 -8
  394. package/dist/services/users/index.d.ts +0 -9
  395. package/dist/services/users/index.d.ts.map +0 -1
  396. package/dist/services/users/index.js +0 -9
  397. package/dist/services/users/investment_preferences/constants.d.ts +0 -7
  398. package/dist/services/users/investment_preferences/constants.d.ts.map +0 -1
  399. package/dist/services/users/investment_preferences/constants.js +0 -7
  400. package/dist/services/users/investment_preferences/index.d.ts +0 -7
  401. package/dist/services/users/investment_preferences/index.d.ts.map +0 -1
  402. package/dist/services/users/investment_preferences/index.js +0 -6
  403. package/dist/services/users/investment_preferences/service.d.ts +0 -5
  404. package/dist/services/users/investment_preferences/service.d.ts.map +0 -1
  405. package/dist/services/users/investment_preferences/service.js +0 -12
  406. package/dist/services/users/investment_preferences/types.d.ts +0 -23
  407. package/dist/services/users/investment_preferences/types.d.ts.map +0 -1
  408. package/dist/services/users/investment_preferences/types.js +0 -1
  409. package/dist/services/users/service.d.ts +0 -6
  410. package/dist/services/users/service.d.ts.map +0 -1
  411. package/dist/services/users/service.js +0 -15
  412. package/dist/services/users/types.d.ts +0 -32
  413. package/dist/services/users/types.d.ts.map +0 -1
  414. package/dist/services/users/types.js +0 -1
  415. package/dist/services/users/utils.d.ts +0 -2
  416. package/dist/services/users/utils.d.ts.map +0 -1
  417. package/dist/services/users/utils.js +0 -6
  418. package/dist/services/withdrawals/constants.d.ts +0 -67
  419. package/dist/services/withdrawals/constants.d.ts.map +0 -1
  420. package/dist/services/withdrawals/constants.js +0 -91
  421. package/dist/services/withdrawals/index.d.ts +0 -6
  422. package/dist/services/withdrawals/index.d.ts.map +0 -1
  423. package/dist/services/withdrawals/index.js +0 -7
  424. package/dist/services/withdrawals/service.d.ts +0 -4
  425. package/dist/services/withdrawals/service.d.ts.map +0 -1
  426. package/dist/services/withdrawals/service.js +0 -5
  427. package/dist/services/withdrawals/types.d.ts +0 -81
  428. package/dist/services/withdrawals/types.d.ts.map +0 -1
  429. package/dist/services/withdrawals/types.js +0 -1
  430. package/dist/services/withdrawals/utils.d.ts +0 -20
  431. package/dist/services/withdrawals/utils.d.ts.map +0 -1
  432. package/dist/services/withdrawals/utils.js +0 -110
  433. package/dist/services/withdrawals/withdrawal_liquidations/index.d.ts +0 -3
  434. package/dist/services/withdrawals/withdrawal_liquidations/index.d.ts.map +0 -1
  435. package/dist/services/withdrawals/withdrawal_liquidations/index.js +0 -2
  436. package/dist/services/withdrawals/withdrawal_liquidations/service.d.ts +0 -8
  437. package/dist/services/withdrawals/withdrawal_liquidations/service.d.ts.map +0 -1
  438. package/dist/services/withdrawals/withdrawal_liquidations/service.js +0 -68
  439. package/dist/services/withdrawals/withdrawal_liquidations/types.d.ts +0 -2
  440. package/dist/services/withdrawals/withdrawal_liquidations/types.d.ts.map +0 -1
  441. package/dist/services/withdrawals/withdrawal_liquidations/types.js +0 -1
  442. package/dist/services/withdrawals/withdrawal_requests/index.d.ts +0 -3
  443. package/dist/services/withdrawals/withdrawal_requests/index.d.ts.map +0 -1
  444. package/dist/services/withdrawals/withdrawal_requests/index.js +0 -2
  445. package/dist/services/withdrawals/withdrawal_requests/service.d.ts +0 -7
  446. package/dist/services/withdrawals/withdrawal_requests/service.d.ts.map +0 -1
  447. package/dist/services/withdrawals/withdrawal_requests/service.js +0 -55
  448. package/dist/services/withdrawals/withdrawal_requests/types.d.ts +0 -2
  449. package/dist/services/withdrawals/withdrawal_requests/types.d.ts.map +0 -1
  450. package/dist/services/withdrawals/withdrawal_requests/types.js +0 -1
@@ -0,0 +1,138 @@
1
+ /**
2
+ * Instruments Services - Pure Functional Implementation
3
+ *
4
+ * Financial instrument operations as pure functions with explicit dependencies.
5
+ * Handles stocks, ETFs, funds, and other financial instruments.
6
+ */
7
+ import type { ApiClient } from '../api/functional-client';
8
+ export interface Instrument {
9
+ readonly uuid: string;
10
+ readonly exchange: string;
11
+ readonly exchangeName: string;
12
+ readonly country: string;
13
+ readonly countryName: string;
14
+ readonly industry: string;
15
+ readonly industryName: string;
16
+ readonly sector: string;
17
+ readonly sectorName: string;
18
+ readonly symbol: string;
19
+ readonly name: string;
20
+ readonly currentPrice: string;
21
+ readonly currency: string | null;
22
+ readonly isEtf: boolean;
23
+ readonly isFund: boolean;
24
+ readonly isActive: boolean;
25
+ readonly isActivelyTrading: boolean;
26
+ }
27
+ export interface MarketData {
28
+ readonly pe: string | null;
29
+ readonly eps: string | null;
30
+ readonly volume: number;
31
+ readonly dayLow: string | null;
32
+ readonly dayHigh: string | null;
33
+ readonly yearLow: string | null;
34
+ readonly yearHigh: string | null;
35
+ readonly avgVolume: number | null;
36
+ readonly marketCap: string | null;
37
+ readonly openPrice: string | null;
38
+ readonly priceAvg50: string | null;
39
+ readonly priceAvg200: string | null;
40
+ readonly previousClose: string | null;
41
+ readonly sharesOutstanding: number | null;
42
+ }
43
+ export interface InstrumentSnapshot {
44
+ readonly uuid: string;
45
+ readonly price: string;
46
+ readonly change: string;
47
+ readonly changePercent: string;
48
+ readonly marketData: MarketData;
49
+ readonly sourceTimestamp: string;
50
+ }
51
+ export interface InstrumentReference {
52
+ readonly uuid: string;
53
+ readonly symbol: string;
54
+ readonly name: string;
55
+ }
56
+ export interface InstrumentsQueryParams {
57
+ readonly uuid?: string;
58
+ readonly symbol?: string;
59
+ readonly name?: string;
60
+ readonly exchange_uuid?: string;
61
+ readonly exchange_short_name?: string;
62
+ readonly portfolio_uuid?: string;
63
+ readonly is_etf?: boolean;
64
+ readonly is_fund?: boolean;
65
+ readonly sector_uuid?: string;
66
+ readonly industry_uuid?: string;
67
+ readonly country_uuid?: string;
68
+ readonly min_price?: number;
69
+ readonly max_price?: number;
70
+ readonly search?: string;
71
+ readonly page?: number;
72
+ readonly page_size?: number;
73
+ readonly ordering?: string;
74
+ }
75
+ export interface PaginatedInstruments {
76
+ readonly results: Instrument[];
77
+ readonly count: number;
78
+ readonly next: string | null;
79
+ readonly previous: string | null;
80
+ }
81
+ export interface InstrumentSnapshotFilters {
82
+ readonly start_date?: string;
83
+ readonly end_date?: string;
84
+ readonly min_price?: number;
85
+ readonly max_price?: number;
86
+ }
87
+ export interface BatchInstrumentRequest {
88
+ readonly instrumentUuid: string;
89
+ readonly start_date?: string;
90
+ readonly end_date?: string;
91
+ readonly min_price?: number;
92
+ readonly max_price?: number;
93
+ }
94
+ export interface BatchInstrumentResult {
95
+ readonly instrumentUuid: string;
96
+ readonly data?: InstrumentSnapshot[];
97
+ readonly error?: string;
98
+ }
99
+ export declare const getInstruments: ({ apiClient }: {
100
+ apiClient: ApiClient;
101
+ }, params?: InstrumentsQueryParams) => Promise<PaginatedInstruments>;
102
+ export declare const getInstrument: ({ apiClient }: {
103
+ apiClient: ApiClient;
104
+ }, uuid: string) => Promise<Instrument>;
105
+ export declare const getInstrumentSnapshots: ({ apiClient }: {
106
+ apiClient: ApiClient;
107
+ }, instrumentUuid: string, filters?: InstrumentSnapshotFilters) => Promise<InstrumentSnapshot[]>;
108
+ export declare const searchInstruments: ({ apiClient }: {
109
+ apiClient: ApiClient;
110
+ }, searchTerm: string, additionalParams?: Omit<InstrumentsQueryParams, "search">) => Promise<PaginatedInstruments>;
111
+ export declare const getInstrumentsByExchange: ({ apiClient }: {
112
+ apiClient: ApiClient;
113
+ }, exchangeUuid: string, additionalParams?: Omit<InstrumentsQueryParams, "exchange_uuid">) => Promise<PaginatedInstruments>;
114
+ export declare const getETFs: ({ apiClient }: {
115
+ apiClient: ApiClient;
116
+ }, additionalParams?: Omit<InstrumentsQueryParams, "is_etf">) => Promise<PaginatedInstruments>;
117
+ export declare const getFunds: ({ apiClient }: {
118
+ apiClient: ApiClient;
119
+ }, additionalParams?: Omit<InstrumentsQueryParams, "is_fund">) => Promise<PaginatedInstruments>;
120
+ export declare const getInstrumentsBySector: ({ apiClient }: {
121
+ apiClient: ApiClient;
122
+ }, sectorUuid: string, additionalParams?: Omit<InstrumentsQueryParams, "sector_uuid">) => Promise<PaginatedInstruments>;
123
+ export declare const getInstrumentsByIndustry: ({ apiClient }: {
124
+ apiClient: ApiClient;
125
+ }, industryUuid: string, additionalParams?: Omit<InstrumentsQueryParams, "industry_uuid">) => Promise<PaginatedInstruments>;
126
+ export declare const getInstrumentsByCountry: ({ apiClient }: {
127
+ apiClient: ApiClient;
128
+ }, countryUuid: string, additionalParams?: Omit<InstrumentsQueryParams, "country_uuid">) => Promise<PaginatedInstruments>;
129
+ export declare const getBatchInstrumentSnapshots: ({ apiClient }: {
130
+ apiClient: ApiClient;
131
+ }, requests: BatchInstrumentRequest[]) => Promise<BatchInstrumentResult[]>;
132
+ export declare const getActiveInstruments: ({ apiClient }: {
133
+ apiClient: ApiClient;
134
+ }, additionalParams?: InstrumentsQueryParams) => Promise<PaginatedInstruments>;
135
+ export declare const getTradingInstruments: ({ apiClient }: {
136
+ apiClient: ApiClient;
137
+ }, additionalParams?: InstrumentsQueryParams) => Promise<PaginatedInstruments>;
138
+ //# sourceMappingURL=instruments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instruments.d.ts","sourceRoot":"","sources":["../../src/services/instruments.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+ /**
3
+ * Instruments Services - Pure Functional Implementation
4
+ *
5
+ * Financial instrument operations as pure functions with explicit dependencies.
6
+ * Handles stocks, ETFs, funds, and other financial instruments.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.getTradingInstruments = exports.getActiveInstruments = exports.getBatchInstrumentSnapshots = exports.getInstrumentsByCountry = exports.getInstrumentsByIndustry = exports.getInstrumentsBySector = exports.getFunds = exports.getETFs = exports.getInstrumentsByExchange = exports.searchInstruments = exports.getInstrumentSnapshots = exports.getInstrument = exports.getInstruments = void 0;
10
+ // Core instrument operations with explicit dependencies
11
+ const getInstruments = async ({ apiClient }, params) => {
12
+ const queryParams = {};
13
+ // Transform parameters for the API
14
+ if (params?.uuid)
15
+ queryParams.uuid = params.uuid;
16
+ if (params?.symbol)
17
+ queryParams.symbol = params.symbol;
18
+ if (params?.name)
19
+ queryParams.name = params.name;
20
+ if (params?.exchange_uuid)
21
+ queryParams.exchange_uuid = params.exchange_uuid;
22
+ if (params?.exchange_short_name)
23
+ queryParams.exchange_short_name = params.exchange_short_name;
24
+ if (params?.portfolio_uuid)
25
+ queryParams.portfolio_uuid = params.portfolio_uuid;
26
+ if (params?.sector_uuid)
27
+ queryParams.sector_uuid = params.sector_uuid;
28
+ if (params?.industry_uuid)
29
+ queryParams.industry_uuid = params.industry_uuid;
30
+ if (params?.country_uuid)
31
+ queryParams.country_uuid = params.country_uuid;
32
+ if (params?.search)
33
+ queryParams.search = params.search;
34
+ if (params?.page)
35
+ queryParams.page = String(params.page);
36
+ if (params?.page_size)
37
+ queryParams.page_size = String(params.page_size);
38
+ if (params?.ordering)
39
+ queryParams.ordering = params.ordering;
40
+ // Handle boolean values
41
+ if (params?.is_etf !== undefined) {
42
+ queryParams.is_etf = String(params.is_etf);
43
+ }
44
+ if (params?.is_fund !== undefined) {
45
+ queryParams.is_fund = String(params.is_fund);
46
+ }
47
+ // Handle price parameters
48
+ if (params?.min_price !== undefined) {
49
+ queryParams.min_price = String(params.min_price);
50
+ }
51
+ if (params?.max_price !== undefined) {
52
+ queryParams.max_price = String(params.max_price);
53
+ }
54
+ return apiClient.get('/api/instruments/', { params: queryParams });
55
+ };
56
+ exports.getInstruments = getInstruments;
57
+ const getInstrument = async ({ apiClient }, uuid) => {
58
+ if (!uuid?.trim()) {
59
+ throw new Error('Instrument UUID is required');
60
+ }
61
+ return apiClient.get(`/api/instruments/${uuid}/`);
62
+ };
63
+ exports.getInstrument = getInstrument;
64
+ const getInstrumentSnapshots = async ({ apiClient }, instrumentUuid, filters) => {
65
+ if (!instrumentUuid?.trim()) {
66
+ throw new Error('Instrument UUID is required');
67
+ }
68
+ const params = {};
69
+ if (filters?.start_date)
70
+ params.start_date = filters.start_date;
71
+ if (filters?.end_date)
72
+ params.end_date = filters.end_date;
73
+ if (filters?.min_price !== undefined)
74
+ params.min_price = String(filters.min_price);
75
+ if (filters?.max_price !== undefined)
76
+ params.max_price = String(filters.max_price);
77
+ return apiClient.get(`/api/instruments/${instrumentUuid}/snapshots/`, { params });
78
+ };
79
+ exports.getInstrumentSnapshots = getInstrumentSnapshots;
80
+ // Advanced instrument operations
81
+ const searchInstruments = async ({ apiClient }, searchTerm, additionalParams) => {
82
+ if (!searchTerm?.trim()) {
83
+ throw new Error('Search term is required');
84
+ }
85
+ return (0, exports.getInstruments)({ apiClient }, {
86
+ ...additionalParams,
87
+ search: searchTerm.trim(),
88
+ });
89
+ };
90
+ exports.searchInstruments = searchInstruments;
91
+ const getInstrumentsByExchange = async ({ apiClient }, exchangeUuid, additionalParams) => {
92
+ if (!exchangeUuid?.trim()) {
93
+ throw new Error('Exchange UUID is required');
94
+ }
95
+ return (0, exports.getInstruments)({ apiClient }, {
96
+ ...additionalParams,
97
+ exchange_uuid: exchangeUuid,
98
+ });
99
+ };
100
+ exports.getInstrumentsByExchange = getInstrumentsByExchange;
101
+ const getETFs = async ({ apiClient }, additionalParams) => {
102
+ return (0, exports.getInstruments)({ apiClient }, {
103
+ ...additionalParams,
104
+ is_etf: true,
105
+ });
106
+ };
107
+ exports.getETFs = getETFs;
108
+ const getFunds = async ({ apiClient }, additionalParams) => {
109
+ return (0, exports.getInstruments)({ apiClient }, {
110
+ ...additionalParams,
111
+ is_fund: true,
112
+ });
113
+ };
114
+ exports.getFunds = getFunds;
115
+ const getInstrumentsBySector = async ({ apiClient }, sectorUuid, additionalParams) => {
116
+ if (!sectorUuid?.trim()) {
117
+ throw new Error('Sector UUID is required');
118
+ }
119
+ return (0, exports.getInstruments)({ apiClient }, {
120
+ ...additionalParams,
121
+ sector_uuid: sectorUuid,
122
+ });
123
+ };
124
+ exports.getInstrumentsBySector = getInstrumentsBySector;
125
+ const getInstrumentsByIndustry = async ({ apiClient }, industryUuid, additionalParams) => {
126
+ if (!industryUuid?.trim()) {
127
+ throw new Error('Industry UUID is required');
128
+ }
129
+ return (0, exports.getInstruments)({ apiClient }, {
130
+ ...additionalParams,
131
+ industry_uuid: industryUuid,
132
+ });
133
+ };
134
+ exports.getInstrumentsByIndustry = getInstrumentsByIndustry;
135
+ const getInstrumentsByCountry = async ({ apiClient }, countryUuid, additionalParams) => {
136
+ if (!countryUuid?.trim()) {
137
+ throw new Error('Country UUID is required');
138
+ }
139
+ return (0, exports.getInstruments)({ apiClient }, {
140
+ ...additionalParams,
141
+ country_uuid: countryUuid,
142
+ });
143
+ };
144
+ exports.getInstrumentsByCountry = getInstrumentsByCountry;
145
+ // Batch operations for performance optimization
146
+ const getBatchInstrumentSnapshots = async ({ apiClient }, requests) => {
147
+ if (!requests?.length) {
148
+ return [];
149
+ }
150
+ const promises = requests.map(async ({ instrumentUuid, ...filters }) => {
151
+ try {
152
+ const data = await (0, exports.getInstrumentSnapshots)({ apiClient }, instrumentUuid, filters);
153
+ return {
154
+ instrumentUuid,
155
+ data,
156
+ };
157
+ }
158
+ catch (error) {
159
+ return {
160
+ instrumentUuid,
161
+ error: error instanceof Error ? error.message : 'Failed to fetch instrument snapshots',
162
+ };
163
+ }
164
+ });
165
+ return Promise.all(promises);
166
+ };
167
+ exports.getBatchInstrumentSnapshots = getBatchInstrumentSnapshots;
168
+ // Helper functions for common instrument queries
169
+ const getActiveInstruments = async ({ apiClient }, additionalParams) => {
170
+ // Note: Assuming active status is handled by the API filter
171
+ return (0, exports.getInstruments)({ apiClient }, additionalParams);
172
+ };
173
+ exports.getActiveInstruments = getActiveInstruments;
174
+ const getTradingInstruments = async ({ apiClient }, additionalParams) => {
175
+ // Note: Assuming trading status is handled by the API filter
176
+ return (0, exports.getInstruments)({ apiClient }, additionalParams);
177
+ };
178
+ exports.getTradingInstruments = getTradingInstruments;
@@ -0,0 +1,142 @@
1
+ /**
2
+ * Portfolio Template Services - Pure Functional Implementation
3
+ *
4
+ * Template-based portfolio creation and management operations as pure functions.
5
+ * No global state, no side effects - everything is explicit and testable.
6
+ */
7
+ import type { ApiClient } from '../api/functional-client';
8
+ export type TemplateRiskLevel = 'CONSERVATIVE' | 'MODERATE' | 'BALANCED' | 'GROWTH' | 'AGGRESSIVE';
9
+ export type TemplateStatus = 'ACTIVE' | 'INACTIVE' | 'ARCHIVED';
10
+ export interface PortfolioTemplate {
11
+ readonly uuid: string;
12
+ readonly name: string;
13
+ readonly description: string;
14
+ readonly riskLevel: TemplateRiskLevel;
15
+ readonly status: TemplateStatus;
16
+ readonly isRecommended: boolean;
17
+ readonly minimumInvestment: string;
18
+ readonly targetReturn: string;
19
+ readonly createdAt: string;
20
+ readonly updatedAt: string;
21
+ }
22
+ export interface TargetAssetAllocation {
23
+ readonly uuid: string;
24
+ readonly template: string;
25
+ readonly instrument: string;
26
+ readonly instrumentName: string;
27
+ readonly instrumentSymbol: string;
28
+ readonly targetPercentage: string;
29
+ readonly minPercentage: string;
30
+ readonly maxPercentage: string;
31
+ }
32
+ export interface CreatePortfolioTemplatePayload {
33
+ readonly name: string;
34
+ readonly description: string;
35
+ readonly riskLevel: TemplateRiskLevel;
36
+ readonly minimumInvestment: string | number;
37
+ readonly targetReturn: string | number;
38
+ }
39
+ export interface UpdatePortfolioTemplatePayload {
40
+ readonly name?: string;
41
+ readonly description?: string;
42
+ readonly riskLevel?: TemplateRiskLevel;
43
+ readonly status?: TemplateStatus;
44
+ readonly isRecommended?: boolean;
45
+ readonly minimumInvestment?: string | number;
46
+ readonly targetReturn?: string | number;
47
+ }
48
+ export interface CreateTargetAllocationPayload {
49
+ readonly template: string;
50
+ readonly instrument: string;
51
+ readonly targetPercentage: string | number;
52
+ readonly minPercentage?: string | number;
53
+ readonly maxPercentage?: string | number;
54
+ }
55
+ export interface ApplyTemplateResponse {
56
+ readonly portfolio: string;
57
+ readonly template: string;
58
+ readonly status: string;
59
+ readonly allocationsCreated: number;
60
+ readonly message: string;
61
+ }
62
+ export interface PortfolioTemplateFilters {
63
+ readonly riskLevel?: TemplateRiskLevel;
64
+ readonly status?: TemplateStatus;
65
+ readonly isRecommended?: boolean;
66
+ readonly ordering?: string;
67
+ }
68
+ export interface PaginatedPortfolioTemplates {
69
+ readonly results: PortfolioTemplate[];
70
+ readonly count: number;
71
+ readonly next: string | null;
72
+ readonly previous: string | null;
73
+ }
74
+ export declare const getPortfolioTemplates: ({ apiClient }: {
75
+ apiClient: ApiClient;
76
+ }, filters?: PortfolioTemplateFilters) => Promise<PaginatedPortfolioTemplates>;
77
+ export declare const getPortfolioTemplate: ({ apiClient }: {
78
+ apiClient: ApiClient;
79
+ }, uuid: string) => Promise<PortfolioTemplate>;
80
+ export declare const getRecommendedPortfolioTemplate: ({ apiClient }: {
81
+ apiClient: ApiClient;
82
+ }) => Promise<PortfolioTemplate>;
83
+ export declare const createPortfolioTemplate: ({ apiClient }: {
84
+ apiClient: ApiClient;
85
+ }, data: CreatePortfolioTemplatePayload) => Promise<PortfolioTemplate>;
86
+ export declare const updatePortfolioTemplate: ({ apiClient }: {
87
+ apiClient: ApiClient;
88
+ }, uuid: string, data: UpdatePortfolioTemplatePayload) => Promise<PortfolioTemplate>;
89
+ export declare const deletePortfolioTemplate: ({ apiClient }: {
90
+ apiClient: ApiClient;
91
+ }, uuid: string) => Promise<void>;
92
+ export declare const getPortfolioTemplateAllocations: ({ apiClient }: {
93
+ apiClient: ApiClient;
94
+ }, templateUuid: string) => Promise<TargetAssetAllocation[]>;
95
+ export declare const createTemplateAllocation: ({ apiClient }: {
96
+ apiClient: ApiClient;
97
+ }, data: CreateTargetAllocationPayload) => Promise<TargetAssetAllocation>;
98
+ export declare const updateTemplateAllocation: ({ apiClient }: {
99
+ apiClient: ApiClient;
100
+ }, uuid: string, data: Partial<CreateTargetAllocationPayload>) => Promise<TargetAssetAllocation>;
101
+ export declare const deleteTemplateAllocation: ({ apiClient }: {
102
+ apiClient: ApiClient;
103
+ }, uuid: string) => Promise<void>;
104
+ export declare const applyPortfolioTemplate: ({ apiClient }: {
105
+ apiClient: ApiClient;
106
+ }, templateUuid: string, portfolioUuid: string) => Promise<ApplyTemplateResponse>;
107
+ export declare const getActiveTemplates: ({ apiClient }: {
108
+ apiClient: ApiClient;
109
+ }, riskLevel?: TemplateRiskLevel) => Promise<PaginatedPortfolioTemplates>;
110
+ export declare const getTemplatesByRiskLevel: ({ apiClient }: {
111
+ apiClient: ApiClient;
112
+ }, riskLevel: TemplateRiskLevel) => Promise<PaginatedPortfolioTemplates>;
113
+ export declare const RISK_LEVELS: {
114
+ readonly CONSERVATIVE: "CONSERVATIVE";
115
+ readonly MODERATE: "MODERATE";
116
+ readonly BALANCED: "BALANCED";
117
+ readonly GROWTH: "GROWTH";
118
+ readonly AGGRESSIVE: "AGGRESSIVE";
119
+ };
120
+ export declare const RISK_LEVEL_LABELS: {
121
+ readonly CONSERVATIVE: "Conservative";
122
+ readonly MODERATE: "Moderate";
123
+ readonly BALANCED: "Balanced";
124
+ readonly GROWTH: "Growth";
125
+ readonly AGGRESSIVE: "Aggressive";
126
+ };
127
+ export declare const RISK_LEVEL_DESCRIPTIONS: {
128
+ readonly CONSERVATIVE: "Low risk, stable returns";
129
+ readonly MODERATE: "Moderate risk, steady growth";
130
+ readonly BALANCED: "Balanced risk and return";
131
+ readonly GROWTH: "Higher risk, growth focused";
132
+ readonly AGGRESSIVE: "Highest risk, maximum growth potential";
133
+ };
134
+ export declare const TEMPLATE_STATUS_LABELS: {
135
+ readonly ACTIVE: "Active";
136
+ readonly INACTIVE: "Inactive";
137
+ readonly ARCHIVED: "Archived";
138
+ };
139
+ export declare const getRiskLevelLabel: (riskLevel: TemplateRiskLevel) => string;
140
+ export declare const getRiskLevelDescription: (riskLevel: TemplateRiskLevel) => string;
141
+ export declare const validateAllocationPercentages: (allocations: TargetAssetAllocation[]) => boolean;
142
+ //# sourceMappingURL=portfolio-templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portfolio-templates.d.ts","sourceRoot":"","sources":["../../src/services/portfolio-templates.ts"],"names":[],"mappings":"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"}
@@ -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;