@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.
Files changed (453) 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 -35
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +114 -42
  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 +157 -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 +39 -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/config/serviceConfig.d.ts +0 -37
  134. package/dist/config/serviceConfig.d.ts.map +0 -1
  135. package/dist/config/serviceConfig.js +0 -70
  136. package/dist/core/BaseApiClient.d.ts +0 -82
  137. package/dist/core/BaseApiClient.d.ts.map +0 -1
  138. package/dist/core/BaseApiClient.js +0 -89
  139. package/dist/core/TokenStorage.d.ts +0 -45
  140. package/dist/core/TokenStorage.d.ts.map +0 -1
  141. package/dist/core/TokenStorage.js +0 -23
  142. package/dist/query/QueryClient.d.ts +0 -82
  143. package/dist/query/QueryClient.d.ts.map +0 -1
  144. package/dist/query/QueryClient.js +0 -136
  145. package/dist/query/useAuth.d.ts +0 -64
  146. package/dist/query/useAuth.d.ts.map +0 -1
  147. package/dist/query/useAuth.js +0 -144
  148. package/dist/query/usePortfolios.d.ts +0 -79
  149. package/dist/query/usePortfolios.d.ts.map +0 -1
  150. package/dist/query/usePortfolios.js +0 -172
  151. package/dist/services/AuthService.d.ts +0 -75
  152. package/dist/services/AuthService.d.ts.map +0 -1
  153. package/dist/services/AuthService.js +0 -83
  154. package/dist/services/BaseService.d.ts +0 -48
  155. package/dist/services/BaseService.d.ts.map +0 -1
  156. package/dist/services/BaseService.js +0 -51
  157. package/dist/services/PortfolioService.d.ts +0 -100
  158. package/dist/services/PortfolioService.d.ts.map +0 -1
  159. package/dist/services/PortfolioService.js +0 -68
  160. package/dist/services/accounts/constants.d.ts +0 -24
  161. package/dist/services/accounts/constants.d.ts.map +0 -1
  162. package/dist/services/accounts/constants.js +0 -30
  163. package/dist/services/accounts/index.d.ts +0 -7
  164. package/dist/services/accounts/index.d.ts.map +0 -1
  165. package/dist/services/accounts/index.js +0 -6
  166. package/dist/services/accounts/service.d.ts +0 -11
  167. package/dist/services/accounts/service.d.ts.map +0 -1
  168. package/dist/services/accounts/service.js +0 -19
  169. package/dist/services/accounts/types.d.ts +0 -15
  170. package/dist/services/accounts/types.d.ts.map +0 -1
  171. package/dist/services/accounts/types.js +0 -4
  172. package/dist/services/auth/constants.d.ts +0 -30
  173. package/dist/services/auth/constants.d.ts.map +0 -1
  174. package/dist/services/auth/constants.js +0 -37
  175. package/dist/services/auth/index.d.ts +0 -8
  176. package/dist/services/auth/index.d.ts.map +0 -1
  177. package/dist/services/auth/index.js +0 -7
  178. package/dist/services/auth/service.d.ts +0 -8
  179. package/dist/services/auth/service.d.ts.map +0 -1
  180. package/dist/services/auth/service.js +0 -23
  181. package/dist/services/auth/types.d.ts +0 -38
  182. package/dist/services/auth/types.d.ts.map +0 -1
  183. package/dist/services/auth/types.js +0 -1
  184. package/dist/services/auth/utils.d.ts +0 -46
  185. package/dist/services/auth/utils.d.ts.map +0 -1
  186. package/dist/services/auth/utils.js +0 -113
  187. package/dist/services/banks/constants.d.ts +0 -47
  188. package/dist/services/banks/constants.d.ts.map +0 -1
  189. package/dist/services/banks/constants.js +0 -98
  190. package/dist/services/banks/index.d.ts +0 -8
  191. package/dist/services/banks/index.d.ts.map +0 -1
  192. package/dist/services/banks/index.js +0 -7
  193. package/dist/services/banks/service.d.ts +0 -9
  194. package/dist/services/banks/service.d.ts.map +0 -1
  195. package/dist/services/banks/service.js +0 -38
  196. package/dist/services/banks/types.d.ts +0 -36
  197. package/dist/services/banks/types.d.ts.map +0 -1
  198. package/dist/services/banks/types.js +0 -4
  199. package/dist/services/cash_accounts/constants.d.ts +0 -7
  200. package/dist/services/cash_accounts/constants.d.ts.map +0 -1
  201. package/dist/services/cash_accounts/constants.js +0 -7
  202. package/dist/services/cash_accounts/index.d.ts +0 -5
  203. package/dist/services/cash_accounts/index.d.ts.map +0 -1
  204. package/dist/services/cash_accounts/index.js +0 -6
  205. package/dist/services/cash_accounts/service.d.ts +0 -8
  206. package/dist/services/cash_accounts/service.d.ts.map +0 -1
  207. package/dist/services/cash_accounts/service.js +0 -32
  208. package/dist/services/cash_accounts/transactions/constants.d.ts +0 -18
  209. package/dist/services/cash_accounts/transactions/constants.d.ts.map +0 -1
  210. package/dist/services/cash_accounts/transactions/constants.js +0 -25
  211. package/dist/services/cash_accounts/transactions/index.d.ts +0 -5
  212. package/dist/services/cash_accounts/transactions/index.d.ts.map +0 -1
  213. package/dist/services/cash_accounts/transactions/index.js +0 -6
  214. package/dist/services/cash_accounts/transactions/service.d.ts +0 -13
  215. package/dist/services/cash_accounts/transactions/service.d.ts.map +0 -1
  216. package/dist/services/cash_accounts/transactions/service.js +0 -75
  217. package/dist/services/cash_accounts/transactions/types.d.ts +0 -38
  218. package/dist/services/cash_accounts/transactions/types.d.ts.map +0 -1
  219. package/dist/services/cash_accounts/transactions/types.js +0 -11
  220. package/dist/services/cash_accounts/types.d.ts +0 -24
  221. package/dist/services/cash_accounts/types.d.ts.map +0 -1
  222. package/dist/services/cash_accounts/types.js +0 -4
  223. package/dist/services/countries/constants.d.ts +0 -9
  224. package/dist/services/countries/constants.d.ts.map +0 -1
  225. package/dist/services/countries/constants.js +0 -10
  226. package/dist/services/countries/index.d.ts +0 -5
  227. package/dist/services/countries/index.d.ts.map +0 -1
  228. package/dist/services/countries/index.js +0 -6
  229. package/dist/services/countries/service.d.ts +0 -18
  230. package/dist/services/countries/service.d.ts.map +0 -1
  231. package/dist/services/countries/service.js +0 -32
  232. package/dist/services/countries/types.d.ts +0 -24
  233. package/dist/services/countries/types.d.ts.map +0 -1
  234. package/dist/services/countries/types.js +0 -1
  235. package/dist/services/countries/utils.d.ts +0 -38
  236. package/dist/services/countries/utils.d.ts.map +0 -1
  237. package/dist/services/countries/utils.js +0 -62
  238. package/dist/services/documents/constants.d.ts +0 -55
  239. package/dist/services/documents/constants.d.ts.map +0 -1
  240. package/dist/services/documents/constants.js +0 -50
  241. package/dist/services/documents/index.d.ts +0 -6
  242. package/dist/services/documents/index.d.ts.map +0 -1
  243. package/dist/services/documents/index.js +0 -6
  244. package/dist/services/documents/service.d.ts +0 -50
  245. package/dist/services/documents/service.d.ts.map +0 -1
  246. package/dist/services/documents/service.js +0 -116
  247. package/dist/services/documents/types.d.ts +0 -47
  248. package/dist/services/documents/types.d.ts.map +0 -1
  249. package/dist/services/documents/types.js +0 -1
  250. package/dist/services/documents/utils.d.ts +0 -26
  251. package/dist/services/documents/utils.d.ts.map +0 -1
  252. package/dist/services/documents/utils.js +0 -37
  253. package/dist/services/industries/constants.d.ts +0 -8
  254. package/dist/services/industries/constants.d.ts.map +0 -1
  255. package/dist/services/industries/constants.js +0 -9
  256. package/dist/services/industries/index.d.ts +0 -6
  257. package/dist/services/industries/index.d.ts.map +0 -1
  258. package/dist/services/industries/index.js +0 -6
  259. package/dist/services/industries/service.d.ts +0 -18
  260. package/dist/services/industries/service.d.ts.map +0 -1
  261. package/dist/services/industries/service.js +0 -43
  262. package/dist/services/industries/types.d.ts +0 -21
  263. package/dist/services/industries/types.d.ts.map +0 -1
  264. package/dist/services/industries/types.js +0 -1
  265. package/dist/services/industries/utils.d.ts +0 -47
  266. package/dist/services/industries/utils.d.ts.map +0 -1
  267. package/dist/services/industries/utils.js +0 -86
  268. package/dist/services/instruments/constants.d.ts +0 -38
  269. package/dist/services/instruments/constants.d.ts.map +0 -1
  270. package/dist/services/instruments/constants.js +0 -36
  271. package/dist/services/instruments/index.d.ts +0 -5
  272. package/dist/services/instruments/index.d.ts.map +0 -1
  273. package/dist/services/instruments/index.js +0 -6
  274. package/dist/services/instruments/service.d.ts +0 -54
  275. package/dist/services/instruments/service.d.ts.map +0 -1
  276. package/dist/services/instruments/service.js +0 -106
  277. package/dist/services/instruments/types.d.ts +0 -83
  278. package/dist/services/instruments/types.d.ts.map +0 -1
  279. package/dist/services/instruments/types.js +0 -1
  280. package/dist/services/instruments/utils.d.ts +0 -50
  281. package/dist/services/instruments/utils.d.ts.map +0 -1
  282. package/dist/services/instruments/utils.js +0 -111
  283. package/dist/services/portfolio_templates/constants.d.ts +0 -8
  284. package/dist/services/portfolio_templates/constants.d.ts.map +0 -1
  285. package/dist/services/portfolio_templates/constants.js +0 -8
  286. package/dist/services/portfolio_templates/index.d.ts +0 -5
  287. package/dist/services/portfolio_templates/index.d.ts.map +0 -1
  288. package/dist/services/portfolio_templates/index.js +0 -5
  289. package/dist/services/portfolio_templates/service.d.ts +0 -6
  290. package/dist/services/portfolio_templates/service.d.ts.map +0 -1
  291. package/dist/services/portfolio_templates/service.js +0 -14
  292. package/dist/services/portfolio_templates/types.d.ts +0 -49
  293. package/dist/services/portfolio_templates/types.d.ts.map +0 -1
  294. package/dist/services/portfolio_templates/types.js +0 -1
  295. package/dist/services/portfolio_templates/utils.d.ts +0 -8
  296. package/dist/services/portfolio_templates/utils.d.ts.map +0 -1
  297. package/dist/services/portfolio_templates/utils.js +0 -13
  298. package/dist/services/portfolios/allocations/index.d.ts +0 -7
  299. package/dist/services/portfolios/allocations/index.d.ts.map +0 -1
  300. package/dist/services/portfolios/allocations/index.js +0 -6
  301. package/dist/services/portfolios/allocations/service.d.ts +0 -6
  302. package/dist/services/portfolios/allocations/service.d.ts.map +0 -1
  303. package/dist/services/portfolios/allocations/service.js +0 -19
  304. package/dist/services/portfolios/allocations/types.d.ts +0 -17
  305. package/dist/services/portfolios/allocations/types.d.ts.map +0 -1
  306. package/dist/services/portfolios/allocations/types.js +0 -4
  307. package/dist/services/portfolios/allocations/utils.d.ts +0 -3
  308. package/dist/services/portfolios/allocations/utils.d.ts.map +0 -1
  309. package/dist/services/portfolios/allocations/utils.js +0 -7
  310. package/dist/services/portfolios/constants.d.ts +0 -45
  311. package/dist/services/portfolios/constants.d.ts.map +0 -1
  312. package/dist/services/portfolios/constants.js +0 -57
  313. package/dist/services/portfolios/holdings/index.d.ts +0 -7
  314. package/dist/services/portfolios/holdings/index.d.ts.map +0 -1
  315. package/dist/services/portfolios/holdings/index.js +0 -6
  316. package/dist/services/portfolios/holdings/service.d.ts +0 -10
  317. package/dist/services/portfolios/holdings/service.d.ts.map +0 -1
  318. package/dist/services/portfolios/holdings/service.js +0 -53
  319. package/dist/services/portfolios/holdings/types.d.ts +0 -42
  320. package/dist/services/portfolios/holdings/types.d.ts.map +0 -1
  321. package/dist/services/portfolios/holdings/types.js +0 -4
  322. package/dist/services/portfolios/holdings/utils.d.ts +0 -8
  323. package/dist/services/portfolios/holdings/utils.d.ts.map +0 -1
  324. package/dist/services/portfolios/holdings/utils.js +0 -82
  325. package/dist/services/portfolios/index.d.ts +0 -10
  326. package/dist/services/portfolios/index.d.ts.map +0 -1
  327. package/dist/services/portfolios/index.js +0 -10
  328. package/dist/services/portfolios/service.d.ts +0 -7
  329. package/dist/services/portfolios/service.d.ts.map +0 -1
  330. package/dist/services/portfolios/service.js +0 -19
  331. package/dist/services/portfolios/types.d.ts +0 -29
  332. package/dist/services/portfolios/types.d.ts.map +0 -1
  333. package/dist/services/portfolios/types.js +0 -1
  334. package/dist/services/portfolios/utils.d.ts +0 -5
  335. package/dist/services/portfolios/utils.d.ts.map +0 -1
  336. package/dist/services/portfolios/utils.js +0 -26
  337. package/dist/services/sectors/constants.d.ts +0 -7
  338. package/dist/services/sectors/constants.d.ts.map +0 -1
  339. package/dist/services/sectors/constants.js +0 -7
  340. package/dist/services/sectors/index.d.ts +0 -6
  341. package/dist/services/sectors/index.d.ts.map +0 -1
  342. package/dist/services/sectors/index.js +0 -6
  343. package/dist/services/sectors/service.d.ts +0 -14
  344. package/dist/services/sectors/service.d.ts.map +0 -1
  345. package/dist/services/sectors/service.js +0 -32
  346. package/dist/services/sectors/types.d.ts +0 -19
  347. package/dist/services/sectors/types.d.ts.map +0 -1
  348. package/dist/services/sectors/types.js +0 -1
  349. package/dist/services/sectors/utils.d.ts +0 -31
  350. package/dist/services/sectors/utils.d.ts.map +0 -1
  351. package/dist/services/sectors/utils.js +0 -54
  352. package/dist/services/stock_exchanges/constants.d.ts +0 -7
  353. package/dist/services/stock_exchanges/constants.d.ts.map +0 -1
  354. package/dist/services/stock_exchanges/constants.js +0 -7
  355. package/dist/services/stock_exchanges/index.d.ts +0 -6
  356. package/dist/services/stock_exchanges/index.d.ts.map +0 -1
  357. package/dist/services/stock_exchanges/index.js +0 -6
  358. package/dist/services/stock_exchanges/service.d.ts +0 -4
  359. package/dist/services/stock_exchanges/service.d.ts.map +0 -1
  360. package/dist/services/stock_exchanges/service.js +0 -26
  361. package/dist/services/stock_exchanges/types.d.ts +0 -28
  362. package/dist/services/stock_exchanges/types.d.ts.map +0 -1
  363. package/dist/services/stock_exchanges/types.js +0 -1
  364. package/dist/services/stock_exchanges/utils.d.ts +0 -8
  365. package/dist/services/stock_exchanges/utils.d.ts.map +0 -1
  366. package/dist/services/stock_exchanges/utils.js +0 -37
  367. package/dist/services/tax_residencies/constants.d.ts +0 -7
  368. package/dist/services/tax_residencies/constants.d.ts.map +0 -1
  369. package/dist/services/tax_residencies/constants.js +0 -7
  370. package/dist/services/tax_residencies/index.d.ts +0 -10
  371. package/dist/services/tax_residencies/index.d.ts.map +0 -1
  372. package/dist/services/tax_residencies/index.js +0 -11
  373. package/dist/services/tax_residencies/service.d.ts +0 -6
  374. package/dist/services/tax_residencies/service.d.ts.map +0 -1
  375. package/dist/services/tax_residencies/service.js +0 -20
  376. package/dist/services/tax_residencies/types.d.ts +0 -26
  377. package/dist/services/tax_residencies/types.d.ts.map +0 -1
  378. package/dist/services/tax_residencies/types.js +0 -4
  379. package/dist/services/tax_residencies/utils.d.ts +0 -9
  380. package/dist/services/tax_residencies/utils.d.ts.map +0 -1
  381. package/dist/services/tax_residencies/utils.js +0 -19
  382. package/dist/services/trades/constants.d.ts +0 -47
  383. package/dist/services/trades/constants.d.ts.map +0 -1
  384. package/dist/services/trades/constants.js +0 -61
  385. package/dist/services/trades/index.d.ts +0 -4
  386. package/dist/services/trades/index.d.ts.map +0 -1
  387. package/dist/services/trades/index.js +0 -12
  388. package/dist/services/trades/service.d.ts +0 -19
  389. package/dist/services/trades/service.d.ts.map +0 -1
  390. package/dist/services/trades/service.js +0 -177
  391. package/dist/services/trades/types.d.ts +0 -114
  392. package/dist/services/trades/types.d.ts.map +0 -1
  393. package/dist/services/trades/types.js +0 -1
  394. package/dist/services/users/constants.d.ts +0 -7
  395. package/dist/services/users/constants.d.ts.map +0 -1
  396. package/dist/services/users/constants.js +0 -8
  397. package/dist/services/users/index.d.ts +0 -9
  398. package/dist/services/users/index.d.ts.map +0 -1
  399. package/dist/services/users/index.js +0 -9
  400. package/dist/services/users/investment_preferences/constants.d.ts +0 -7
  401. package/dist/services/users/investment_preferences/constants.d.ts.map +0 -1
  402. package/dist/services/users/investment_preferences/constants.js +0 -7
  403. package/dist/services/users/investment_preferences/index.d.ts +0 -7
  404. package/dist/services/users/investment_preferences/index.d.ts.map +0 -1
  405. package/dist/services/users/investment_preferences/index.js +0 -6
  406. package/dist/services/users/investment_preferences/service.d.ts +0 -5
  407. package/dist/services/users/investment_preferences/service.d.ts.map +0 -1
  408. package/dist/services/users/investment_preferences/service.js +0 -12
  409. package/dist/services/users/investment_preferences/types.d.ts +0 -23
  410. package/dist/services/users/investment_preferences/types.d.ts.map +0 -1
  411. package/dist/services/users/investment_preferences/types.js +0 -1
  412. package/dist/services/users/service.d.ts +0 -6
  413. package/dist/services/users/service.d.ts.map +0 -1
  414. package/dist/services/users/service.js +0 -15
  415. package/dist/services/users/types.d.ts +0 -32
  416. package/dist/services/users/types.d.ts.map +0 -1
  417. package/dist/services/users/types.js +0 -1
  418. package/dist/services/users/utils.d.ts +0 -2
  419. package/dist/services/users/utils.d.ts.map +0 -1
  420. package/dist/services/users/utils.js +0 -6
  421. package/dist/services/withdrawals/constants.d.ts +0 -67
  422. package/dist/services/withdrawals/constants.d.ts.map +0 -1
  423. package/dist/services/withdrawals/constants.js +0 -91
  424. package/dist/services/withdrawals/index.d.ts +0 -6
  425. package/dist/services/withdrawals/index.d.ts.map +0 -1
  426. package/dist/services/withdrawals/index.js +0 -7
  427. package/dist/services/withdrawals/service.d.ts +0 -4
  428. package/dist/services/withdrawals/service.d.ts.map +0 -1
  429. package/dist/services/withdrawals/service.js +0 -5
  430. package/dist/services/withdrawals/types.d.ts +0 -81
  431. package/dist/services/withdrawals/types.d.ts.map +0 -1
  432. package/dist/services/withdrawals/types.js +0 -1
  433. package/dist/services/withdrawals/utils.d.ts +0 -20
  434. package/dist/services/withdrawals/utils.d.ts.map +0 -1
  435. package/dist/services/withdrawals/utils.js +0 -110
  436. package/dist/services/withdrawals/withdrawal_liquidations/index.d.ts +0 -3
  437. package/dist/services/withdrawals/withdrawal_liquidations/index.d.ts.map +0 -1
  438. package/dist/services/withdrawals/withdrawal_liquidations/index.js +0 -2
  439. package/dist/services/withdrawals/withdrawal_liquidations/service.d.ts +0 -8
  440. package/dist/services/withdrawals/withdrawal_liquidations/service.d.ts.map +0 -1
  441. package/dist/services/withdrawals/withdrawal_liquidations/service.js +0 -68
  442. package/dist/services/withdrawals/withdrawal_liquidations/types.d.ts +0 -2
  443. package/dist/services/withdrawals/withdrawal_liquidations/types.d.ts.map +0 -1
  444. package/dist/services/withdrawals/withdrawal_liquidations/types.js +0 -1
  445. package/dist/services/withdrawals/withdrawal_requests/index.d.ts +0 -3
  446. package/dist/services/withdrawals/withdrawal_requests/index.d.ts.map +0 -1
  447. package/dist/services/withdrawals/withdrawal_requests/index.js +0 -2
  448. package/dist/services/withdrawals/withdrawal_requests/service.d.ts +0 -7
  449. package/dist/services/withdrawals/withdrawal_requests/service.d.ts.map +0 -1
  450. package/dist/services/withdrawals/withdrawal_requests/service.js +0 -55
  451. package/dist/services/withdrawals/withdrawal_requests/types.d.ts +0 -2
  452. package/dist/services/withdrawals/withdrawal_requests/types.d.ts.map +0 -1
  453. 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;