@novha/calc-engines 6.3.0 → 8.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 (278) hide show
  1. package/dist/capital-gains/brazil/BrazilCapitalGainsService.js +3 -0
  2. package/dist/capital-gains/brazil/BrazilCapitalGainsServiceImpl.js +56 -0
  3. package/dist/capital-gains/brazil/domain/types.js +3 -0
  4. package/dist/capital-gains/canada/CanadaCapitalGainsServiceImpl.js +29 -17
  5. package/dist/capital-gains/index.js +14 -2
  6. package/dist/capital-gains/india/IndiaCapitalGainsService.js +3 -0
  7. package/dist/capital-gains/india/IndiaCapitalGainsServiceImpl.js +58 -0
  8. package/dist/capital-gains/india/domain/types.js +3 -0
  9. package/dist/capital-gains/japan/JapanCapitalGainsService.js +3 -0
  10. package/dist/capital-gains/japan/JapanCapitalGainsServiceImpl.js +41 -0
  11. package/dist/capital-gains/japan/domain/types.js +3 -0
  12. package/dist/capital-gains/spain/SpainCapitalGainsService.js +3 -0
  13. package/dist/capital-gains/spain/SpainCapitalGainsServiceImpl.js +56 -0
  14. package/dist/capital-gains/spain/domain/types.js +3 -0
  15. package/dist/corporate/brazil/BrazilCorporateTaxService.js +3 -0
  16. package/dist/corporate/brazil/BrazilCorporateTaxServiceImpl.js +33 -0
  17. package/dist/corporate/brazil/domain/types.js +3 -0
  18. package/dist/corporate/index.js +10 -2
  19. package/dist/corporate/india/IndiaCorporateTaxService.js +3 -0
  20. package/dist/corporate/india/IndiaCorporateTaxServiceImpl.js +29 -0
  21. package/dist/corporate/india/domain/types.js +3 -0
  22. package/dist/corporate/japan/JapanCorporateTaxService.js +3 -0
  23. package/dist/corporate/japan/JapanCorporateTaxServiceImpl.js +29 -0
  24. package/dist/corporate/japan/domain/types.js +3 -0
  25. package/dist/corporate/spain/SpainCorporateTaxService.js +3 -0
  26. package/dist/corporate/spain/SpainCorporateTaxServiceImpl.js +29 -0
  27. package/dist/corporate/spain/domain/types.js +3 -0
  28. package/dist/income-tax/brazil/BrazilIncomeTaxService.js +3 -0
  29. package/dist/income-tax/brazil/BrazilIncomeTaxServiceImpl.js +78 -0
  30. package/dist/income-tax/brazil/domain/types.js +3 -0
  31. package/dist/income-tax/index.js +14 -2
  32. package/dist/income-tax/india/IndiaIncomeTaxService.js +3 -0
  33. package/dist/income-tax/india/IndiaIncomeTaxServiceImpl.js +75 -0
  34. package/dist/income-tax/india/domain/types.js +3 -0
  35. package/dist/income-tax/japan/JapanIncomeTaxService.js +3 -0
  36. package/dist/income-tax/japan/JapanIncomeTaxServiceImpl.js +75 -0
  37. package/dist/income-tax/japan/domain/types.js +3 -0
  38. package/dist/income-tax/spain/SpainIncomeTaxService.js +3 -0
  39. package/dist/income-tax/spain/SpainIncomeTaxServiceImpl.js +62 -0
  40. package/dist/income-tax/spain/domain/types.js +3 -0
  41. package/dist/index.js +3 -2
  42. package/dist/inheritance-tax/australia/AustraliaInheritanceTaxService.js +3 -0
  43. package/dist/inheritance-tax/australia/AustraliaInheritanceTaxServiceImpl.js +19 -0
  44. package/dist/inheritance-tax/australia/domain/types.js +3 -0
  45. package/dist/inheritance-tax/canada/CanadaInheritanceTaxService.js +3 -0
  46. package/dist/inheritance-tax/canada/CanadaInheritanceTaxServiceImpl.js +51 -0
  47. package/dist/inheritance-tax/canada/domain/types.js +3 -0
  48. package/dist/inheritance-tax/domain/types.js +3 -0
  49. package/dist/inheritance-tax/france/FranceInheritanceTaxService.js +3 -0
  50. package/dist/inheritance-tax/france/FranceInheritanceTaxServiceImpl.js +52 -0
  51. package/dist/inheritance-tax/france/domain/types.js +3 -0
  52. package/dist/inheritance-tax/germany/GermanyInheritanceTaxService.js +3 -0
  53. package/dist/inheritance-tax/germany/GermanyInheritanceTaxServiceImpl.js +52 -0
  54. package/dist/inheritance-tax/germany/domain/types.js +3 -0
  55. package/dist/inheritance-tax/index.js +31 -0
  56. package/dist/inheritance-tax/japan/JapanInheritanceTaxService.js +3 -0
  57. package/dist/inheritance-tax/japan/JapanInheritanceTaxServiceImpl.js +53 -0
  58. package/dist/inheritance-tax/japan/domain/types.js +3 -0
  59. package/dist/inheritance-tax/south-africa/SouthAfricaInheritanceTaxService.js +3 -0
  60. package/dist/inheritance-tax/south-africa/SouthAfricaInheritanceTaxServiceImpl.js +52 -0
  61. package/dist/inheritance-tax/south-africa/domain/types.js +3 -0
  62. package/dist/inheritance-tax/spain/SpainInheritanceTaxService.js +3 -0
  63. package/dist/inheritance-tax/spain/SpainInheritanceTaxServiceImpl.js +51 -0
  64. package/dist/inheritance-tax/spain/domain/types.js +3 -0
  65. package/dist/inheritance-tax/uk/UKInheritanceTaxService.js +3 -0
  66. package/dist/inheritance-tax/uk/UKInheritanceTaxServiceImpl.js +39 -0
  67. package/dist/inheritance-tax/uk/domain/types.js +3 -0
  68. package/dist/inheritance-tax/usa/USAInheritanceTaxService.js +3 -0
  69. package/dist/inheritance-tax/usa/USAInheritanceTaxServiceImpl.js +51 -0
  70. package/dist/inheritance-tax/usa/domain/types.js +3 -0
  71. package/dist/mortgage/brazil/BrazilMortgageService.js +3 -0
  72. package/dist/mortgage/brazil/BrazilMortgageServiceImpl.js +76 -0
  73. package/dist/mortgage/brazil/domain/types.js +3 -0
  74. package/dist/mortgage/index.js +14 -2
  75. package/dist/mortgage/india/IndiaMortgageService.js +3 -0
  76. package/dist/mortgage/india/IndiaMortgageServiceImpl.js +76 -0
  77. package/dist/mortgage/india/domain/types.js +3 -0
  78. package/dist/mortgage/japan/JapanMortgageService.js +3 -0
  79. package/dist/mortgage/japan/JapanMortgageServiceImpl.js +76 -0
  80. package/dist/mortgage/japan/domain/types.js +3 -0
  81. package/dist/mortgage/spain/SpainMortgageService.js +3 -0
  82. package/dist/mortgage/spain/SpainMortgageServiceImpl.js +96 -0
  83. package/dist/mortgage/spain/domain/types.js +3 -0
  84. package/dist/shared/domain/types.js +2 -1
  85. package/dist/types/capital-gains/brazil/BrazilCapitalGainsService.d.ts +4 -0
  86. package/dist/types/capital-gains/brazil/BrazilCapitalGainsServiceImpl.d.ts +10 -0
  87. package/dist/types/capital-gains/brazil/domain/types.d.ts +11 -0
  88. package/dist/types/capital-gains/canada/CanadaCapitalGainsServiceImpl.d.ts +1 -1
  89. package/dist/types/capital-gains/index.d.ts +9 -1
  90. package/dist/types/capital-gains/india/IndiaCapitalGainsService.d.ts +4 -0
  91. package/dist/types/capital-gains/india/IndiaCapitalGainsServiceImpl.d.ts +9 -0
  92. package/dist/types/capital-gains/india/domain/types.d.ts +9 -0
  93. package/dist/types/capital-gains/japan/JapanCapitalGainsService.d.ts +4 -0
  94. package/dist/types/capital-gains/japan/JapanCapitalGainsServiceImpl.d.ts +9 -0
  95. package/dist/types/capital-gains/japan/domain/types.d.ts +6 -0
  96. package/dist/types/capital-gains/spain/SpainCapitalGainsService.d.ts +4 -0
  97. package/dist/types/capital-gains/spain/SpainCapitalGainsServiceImpl.d.ts +10 -0
  98. package/dist/types/capital-gains/spain/domain/types.d.ts +11 -0
  99. package/dist/types/corporate/brazil/BrazilCorporateTaxService.d.ts +4 -0
  100. package/dist/types/corporate/brazil/BrazilCorporateTaxServiceImpl.d.ts +8 -0
  101. package/dist/types/corporate/brazil/domain/types.d.ts +19 -0
  102. package/dist/types/corporate/index.d.ts +9 -1
  103. package/dist/types/corporate/india/IndiaCorporateTaxService.d.ts +4 -0
  104. package/dist/types/corporate/india/IndiaCorporateTaxServiceImpl.d.ts +8 -0
  105. package/dist/types/corporate/india/domain/types.d.ts +15 -0
  106. package/dist/types/corporate/japan/JapanCorporateTaxService.d.ts +4 -0
  107. package/dist/types/corporate/japan/JapanCorporateTaxServiceImpl.d.ts +8 -0
  108. package/dist/types/corporate/japan/domain/types.d.ts +15 -0
  109. package/dist/types/corporate/spain/SpainCorporateTaxService.d.ts +4 -0
  110. package/dist/types/corporate/spain/SpainCorporateTaxServiceImpl.d.ts +8 -0
  111. package/dist/types/corporate/spain/domain/types.d.ts +15 -0
  112. package/dist/types/income-tax/brazil/BrazilIncomeTaxService.d.ts +4 -0
  113. package/dist/types/income-tax/brazil/BrazilIncomeTaxServiceImpl.d.ts +11 -0
  114. package/dist/types/income-tax/brazil/domain/types.d.ts +18 -0
  115. package/dist/types/income-tax/index.d.ts +9 -1
  116. package/dist/types/income-tax/india/IndiaIncomeTaxService.d.ts +4 -0
  117. package/dist/types/income-tax/india/IndiaIncomeTaxServiceImpl.d.ts +10 -0
  118. package/dist/types/income-tax/india/domain/types.d.ts +16 -0
  119. package/dist/types/income-tax/japan/JapanIncomeTaxService.d.ts +4 -0
  120. package/dist/types/income-tax/japan/JapanIncomeTaxServiceImpl.d.ts +10 -0
  121. package/dist/types/income-tax/japan/domain/types.d.ts +16 -0
  122. package/dist/types/income-tax/spain/SpainIncomeTaxService.d.ts +4 -0
  123. package/dist/types/income-tax/spain/SpainIncomeTaxServiceImpl.d.ts +10 -0
  124. package/dist/types/income-tax/spain/domain/types.d.ts +16 -0
  125. package/dist/types/index.d.ts +1 -0
  126. package/dist/types/inheritance-tax/australia/AustraliaInheritanceTaxService.d.ts +4 -0
  127. package/dist/types/inheritance-tax/australia/AustraliaInheritanceTaxServiceImpl.d.ts +8 -0
  128. package/dist/types/inheritance-tax/australia/domain/types.d.ts +13 -0
  129. package/dist/types/inheritance-tax/canada/CanadaInheritanceTaxService.d.ts +4 -0
  130. package/dist/types/inheritance-tax/canada/CanadaInheritanceTaxServiceImpl.d.ts +9 -0
  131. package/dist/types/inheritance-tax/canada/domain/types.d.ts +20 -0
  132. package/dist/types/inheritance-tax/domain/types.d.ts +17 -0
  133. package/dist/types/inheritance-tax/france/FranceInheritanceTaxService.d.ts +4 -0
  134. package/dist/types/inheritance-tax/france/FranceInheritanceTaxServiceImpl.d.ts +9 -0
  135. package/dist/types/inheritance-tax/france/domain/types.d.ts +29 -0
  136. package/dist/types/inheritance-tax/germany/GermanyInheritanceTaxService.d.ts +4 -0
  137. package/dist/types/inheritance-tax/germany/GermanyInheritanceTaxServiceImpl.d.ts +9 -0
  138. package/dist/types/inheritance-tax/germany/domain/types.d.ts +28 -0
  139. package/dist/types/inheritance-tax/index.d.ts +19 -0
  140. package/dist/types/inheritance-tax/japan/JapanInheritanceTaxService.d.ts +4 -0
  141. package/dist/types/inheritance-tax/japan/JapanInheritanceTaxServiceImpl.d.ts +9 -0
  142. package/dist/types/inheritance-tax/japan/domain/types.d.ts +21 -0
  143. package/dist/types/inheritance-tax/south-africa/SouthAfricaInheritanceTaxService.d.ts +4 -0
  144. package/dist/types/inheritance-tax/south-africa/SouthAfricaInheritanceTaxServiceImpl.d.ts +9 -0
  145. package/dist/types/inheritance-tax/south-africa/domain/types.d.ts +20 -0
  146. package/dist/types/inheritance-tax/spain/SpainInheritanceTaxService.d.ts +4 -0
  147. package/dist/types/inheritance-tax/spain/SpainInheritanceTaxServiceImpl.d.ts +9 -0
  148. package/dist/types/inheritance-tax/spain/domain/types.d.ts +19 -0
  149. package/dist/types/inheritance-tax/uk/UKInheritanceTaxService.d.ts +4 -0
  150. package/dist/types/inheritance-tax/uk/UKInheritanceTaxServiceImpl.d.ts +8 -0
  151. package/dist/types/inheritance-tax/uk/domain/types.d.ts +17 -0
  152. package/dist/types/inheritance-tax/usa/USAInheritanceTaxService.d.ts +4 -0
  153. package/dist/types/inheritance-tax/usa/USAInheritanceTaxServiceImpl.d.ts +9 -0
  154. package/dist/types/inheritance-tax/usa/domain/types.d.ts +19 -0
  155. package/dist/types/mortgage/brazil/BrazilMortgageService.d.ts +4 -0
  156. package/dist/types/mortgage/brazil/BrazilMortgageServiceImpl.d.ts +7 -0
  157. package/dist/types/mortgage/brazil/domain/types.d.ts +39 -0
  158. package/dist/types/mortgage/index.d.ts +9 -1
  159. package/dist/types/mortgage/india/IndiaMortgageService.d.ts +4 -0
  160. package/dist/types/mortgage/india/IndiaMortgageServiceImpl.d.ts +7 -0
  161. package/dist/types/mortgage/india/domain/types.d.ts +39 -0
  162. package/dist/types/mortgage/japan/JapanMortgageService.d.ts +4 -0
  163. package/dist/types/mortgage/japan/JapanMortgageServiceImpl.d.ts +7 -0
  164. package/dist/types/mortgage/japan/domain/types.d.ts +39 -0
  165. package/dist/types/mortgage/spain/SpainMortgageService.d.ts +4 -0
  166. package/dist/types/mortgage/spain/SpainMortgageServiceImpl.d.ts +8 -0
  167. package/dist/types/mortgage/spain/domain/types.d.ts +44 -0
  168. package/dist/types/shared/domain/types.d.ts +2 -1
  169. package/package.json +1 -1
  170. package/src/capital-gains/brazil/BrazilCapitalGainsService.ts +5 -0
  171. package/src/capital-gains/brazil/BrazilCapitalGainsServiceImpl.ts +69 -0
  172. package/src/capital-gains/brazil/domain/types.ts +15 -0
  173. package/src/capital-gains/canada/CanadaCapitalGainsServiceImpl.ts +34 -21
  174. package/src/capital-gains/index.ts +40 -0
  175. package/src/capital-gains/india/IndiaCapitalGainsService.ts +5 -0
  176. package/src/capital-gains/india/IndiaCapitalGainsServiceImpl.ts +64 -0
  177. package/src/capital-gains/india/domain/types.ts +12 -0
  178. package/src/capital-gains/japan/JapanCapitalGainsService.ts +5 -0
  179. package/src/capital-gains/japan/JapanCapitalGainsServiceImpl.ts +47 -0
  180. package/src/capital-gains/japan/domain/types.ts +9 -0
  181. package/src/capital-gains/spain/SpainCapitalGainsService.ts +5 -0
  182. package/src/capital-gains/spain/SpainCapitalGainsServiceImpl.ts +69 -0
  183. package/src/capital-gains/spain/domain/types.ts +15 -0
  184. package/src/corporate/brazil/BrazilCorporateTaxService.ts +5 -0
  185. package/src/corporate/brazil/BrazilCorporateTaxServiceImpl.ts +40 -0
  186. package/src/corporate/brazil/domain/types.ts +16 -0
  187. package/src/corporate/index.ts +45 -1
  188. package/src/corporate/india/IndiaCorporateTaxService.ts +5 -0
  189. package/src/corporate/india/IndiaCorporateTaxServiceImpl.ts +35 -0
  190. package/src/corporate/india/domain/types.ts +15 -0
  191. package/src/corporate/japan/JapanCorporateTaxService.ts +5 -0
  192. package/src/corporate/japan/JapanCorporateTaxServiceImpl.ts +35 -0
  193. package/src/corporate/japan/domain/types.ts +15 -0
  194. package/src/corporate/spain/SpainCorporateTaxService.ts +5 -0
  195. package/src/corporate/spain/SpainCorporateTaxServiceImpl.ts +35 -0
  196. package/src/corporate/spain/domain/types.ts +15 -0
  197. package/src/income-tax/brazil/BrazilIncomeTaxService.ts +5 -0
  198. package/src/income-tax/brazil/BrazilIncomeTaxServiceImpl.ts +91 -0
  199. package/src/income-tax/brazil/domain/types.ts +21 -0
  200. package/src/income-tax/index.ts +40 -0
  201. package/src/income-tax/india/IndiaIncomeTaxService.ts +5 -0
  202. package/src/income-tax/india/IndiaIncomeTaxServiceImpl.ts +87 -0
  203. package/src/income-tax/india/domain/types.ts +16 -0
  204. package/src/income-tax/japan/JapanIncomeTaxService.ts +5 -0
  205. package/src/income-tax/japan/JapanIncomeTaxServiceImpl.ts +87 -0
  206. package/src/income-tax/japan/domain/types.ts +16 -0
  207. package/src/income-tax/spain/SpainIncomeTaxService.ts +5 -0
  208. package/src/income-tax/spain/SpainIncomeTaxServiceImpl.ts +75 -0
  209. package/src/income-tax/spain/domain/types.ts +16 -0
  210. package/src/index.ts +1 -0
  211. package/src/inheritance-tax/australia/AustraliaInheritanceTaxService.ts +5 -0
  212. package/src/inheritance-tax/australia/AustraliaInheritanceTaxServiceImpl.ts +21 -0
  213. package/src/inheritance-tax/australia/domain/types.ts +16 -0
  214. package/src/inheritance-tax/canada/CanadaInheritanceTaxService.ts +5 -0
  215. package/src/inheritance-tax/canada/CanadaInheritanceTaxServiceImpl.ts +65 -0
  216. package/src/inheritance-tax/canada/domain/types.ts +24 -0
  217. package/src/inheritance-tax/domain/types.ts +19 -0
  218. package/src/inheritance-tax/france/FranceInheritanceTaxService.ts +5 -0
  219. package/src/inheritance-tax/france/FranceInheritanceTaxServiceImpl.ts +66 -0
  220. package/src/inheritance-tax/france/domain/types.ts +35 -0
  221. package/src/inheritance-tax/germany/GermanyInheritanceTaxService.ts +5 -0
  222. package/src/inheritance-tax/germany/GermanyInheritanceTaxServiceImpl.ts +66 -0
  223. package/src/inheritance-tax/germany/domain/types.ts +34 -0
  224. package/src/inheritance-tax/index.ts +110 -0
  225. package/src/inheritance-tax/japan/JapanInheritanceTaxService.ts +5 -0
  226. package/src/inheritance-tax/japan/JapanInheritanceTaxServiceImpl.ts +67 -0
  227. package/src/inheritance-tax/japan/domain/types.ts +25 -0
  228. package/src/inheritance-tax/south-africa/SouthAfricaInheritanceTaxService.ts +5 -0
  229. package/src/inheritance-tax/south-africa/SouthAfricaInheritanceTaxServiceImpl.ts +66 -0
  230. package/src/inheritance-tax/south-africa/domain/types.ts +24 -0
  231. package/src/inheritance-tax/spain/SpainInheritanceTaxService.ts +5 -0
  232. package/src/inheritance-tax/spain/SpainInheritanceTaxServiceImpl.ts +65 -0
  233. package/src/inheritance-tax/spain/domain/types.ts +23 -0
  234. package/src/inheritance-tax/uk/UKInheritanceTaxService.ts +5 -0
  235. package/src/inheritance-tax/uk/UKInheritanceTaxServiceImpl.ts +46 -0
  236. package/src/inheritance-tax/uk/domain/types.ts +20 -0
  237. package/src/inheritance-tax/usa/USAInheritanceTaxService.ts +5 -0
  238. package/src/inheritance-tax/usa/USAInheritanceTaxServiceImpl.ts +65 -0
  239. package/src/inheritance-tax/usa/domain/types.ts +23 -0
  240. package/src/mortgage/brazil/BrazilMortgageService.ts +5 -0
  241. package/src/mortgage/brazil/BrazilMortgageServiceImpl.ts +101 -0
  242. package/src/mortgage/brazil/domain/types.ts +46 -0
  243. package/src/mortgage/index.ts +49 -1
  244. package/src/mortgage/india/IndiaMortgageService.ts +5 -0
  245. package/src/mortgage/india/IndiaMortgageServiceImpl.ts +101 -0
  246. package/src/mortgage/india/domain/types.ts +46 -0
  247. package/src/mortgage/japan/JapanMortgageService.ts +5 -0
  248. package/src/mortgage/japan/JapanMortgageServiceImpl.ts +101 -0
  249. package/src/mortgage/japan/domain/types.ts +46 -0
  250. package/src/mortgage/spain/SpainMortgageService.ts +5 -0
  251. package/src/mortgage/spain/SpainMortgageServiceImpl.ts +130 -0
  252. package/src/mortgage/spain/domain/types.ts +52 -0
  253. package/src/shared/domain/types.ts +1 -0
  254. package/test/australia-inheritance-tax.test.ts +35 -0
  255. package/test/brazil-capital-gains.test.ts +65 -0
  256. package/test/brazil-corporate-tax.test.ts +63 -0
  257. package/test/brazil-income-tax.test.ts +85 -0
  258. package/test/brazil-mortgage.test.ts +70 -0
  259. package/test/canada-inheritance-tax.test.ts +62 -0
  260. package/test/france-inheritance-tax.test.ts +101 -0
  261. package/test/germany-inheritance-tax.test.ts +100 -0
  262. package/test/india-capital-gains.test.ts +71 -0
  263. package/test/india-corporate-tax.test.ts +54 -0
  264. package/test/india-income-tax.test.ts +78 -0
  265. package/test/india-mortgage.test.ts +70 -0
  266. package/test/japan-capital-gains.test.ts +55 -0
  267. package/test/japan-corporate-tax.test.ts +54 -0
  268. package/test/japan-income-tax.test.ts +76 -0
  269. package/test/japan-inheritance-tax.test.ts +74 -0
  270. package/test/japan-mortgage.test.ts +69 -0
  271. package/test/south-africa-inheritance-tax.test.ts +81 -0
  272. package/test/spain-capital-gains.test.ts +66 -0
  273. package/test/spain-corporate-tax.test.ts +54 -0
  274. package/test/spain-income-tax.test.ts +84 -0
  275. package/test/spain-inheritance-tax.test.ts +78 -0
  276. package/test/spain-mortgage.test.ts +70 -0
  277. package/test/uk-inheritance-tax.test.ts +72 -0
  278. package/test/usa-inheritance-tax.test.ts +90 -0
@@ -0,0 +1,20 @@
1
+ import { Breakdown } from "../../domain/types";
2
+ export interface TaxBracket {
3
+ from: number;
4
+ to: number | null;
5
+ rate: number;
6
+ }
7
+ export interface Rules {
8
+ primaryAbatement: number;
9
+ taxBrackets: TaxBracket[];
10
+ }
11
+ export interface Input {
12
+ estateValue: number;
13
+ deductions: number;
14
+ }
15
+ export interface Result {
16
+ taxableEstate: number;
17
+ inheritanceTax: number;
18
+ effectiveRate: number;
19
+ breakdowns: Breakdown[];
20
+ }
@@ -0,0 +1,4 @@
1
+ import { Result } from "./domain/types";
2
+ export interface SpainInheritanceTaxService {
3
+ calculate(): Result;
4
+ }
@@ -0,0 +1,9 @@
1
+ import { SpainInheritanceTaxService } from "./SpainInheritanceTaxService";
2
+ import { Input, Result, Rules } from "./domain/types";
3
+ export declare class SpainInheritanceTaxServiceImpl implements SpainInheritanceTaxService {
4
+ private _input;
5
+ private _rules;
6
+ constructor(input: Input, rules: Rules);
7
+ calculate(): Result;
8
+ private applyBrackets;
9
+ }
@@ -0,0 +1,19 @@
1
+ import { Breakdown } from "../../domain/types";
2
+ export interface TaxBracket {
3
+ from: number;
4
+ to: number | null;
5
+ rate: number;
6
+ }
7
+ export interface Rules {
8
+ exemption: number;
9
+ taxBrackets: TaxBracket[];
10
+ }
11
+ export interface Input {
12
+ estateValue: number;
13
+ }
14
+ export interface Result {
15
+ taxableEstate: number;
16
+ inheritanceTax: number;
17
+ effectiveRate: number;
18
+ breakdowns: Breakdown[];
19
+ }
@@ -0,0 +1,4 @@
1
+ import { Result } from "./domain/types";
2
+ export interface UKInheritanceTaxService {
3
+ calculate(): Result;
4
+ }
@@ -0,0 +1,8 @@
1
+ import { UKInheritanceTaxService } from "./UKInheritanceTaxService";
2
+ import { Input, Result, Rules } from "./domain/types";
3
+ export declare class UKInheritanceTaxServiceImpl implements UKInheritanceTaxService {
4
+ private _input;
5
+ private _rules;
6
+ constructor(input: Input, rules: Rules);
7
+ calculate(): Result;
8
+ }
@@ -0,0 +1,17 @@
1
+ import { Breakdown } from "../../domain/types";
2
+ export interface Rules {
3
+ nilRateBand: number;
4
+ standardRate: number;
5
+ charityRate: number;
6
+ charityThreshold: number;
7
+ }
8
+ export interface Input {
9
+ estateValue: number;
10
+ charitableGivingPercent: number;
11
+ }
12
+ export interface Result {
13
+ taxableEstate: number;
14
+ inheritanceTax: number;
15
+ effectiveRate: number;
16
+ breakdowns: Breakdown[];
17
+ }
@@ -0,0 +1,4 @@
1
+ import { Result } from "./domain/types";
2
+ export interface USAInheritanceTaxService {
3
+ calculate(): Result;
4
+ }
@@ -0,0 +1,9 @@
1
+ import { USAInheritanceTaxService } from "./USAInheritanceTaxService";
2
+ import { Input, Result, Rules } from "./domain/types";
3
+ export declare class USAInheritanceTaxServiceImpl implements USAInheritanceTaxService {
4
+ private _input;
5
+ private _rules;
6
+ constructor(input: Input, rules: Rules);
7
+ calculate(): Result;
8
+ private applyBrackets;
9
+ }
@@ -0,0 +1,19 @@
1
+ import { Breakdown } from "../../domain/types";
2
+ export interface TaxBracket {
3
+ from: number;
4
+ to: number | null;
5
+ rate: number;
6
+ }
7
+ export interface Rules {
8
+ exemption: number;
9
+ taxBrackets: TaxBracket[];
10
+ }
11
+ export interface Input {
12
+ estateValue: number;
13
+ }
14
+ export interface Result {
15
+ taxableEstate: number;
16
+ inheritanceTax: number;
17
+ effectiveRate: number;
18
+ breakdowns: Breakdown[];
19
+ }
@@ -0,0 +1,4 @@
1
+ import { MortgageInput, MortgageOutput, MortgageRules } from "./domain/types";
2
+ export interface BrazilMortgageService {
3
+ calculate(input: MortgageInput, rules: MortgageRules): MortgageOutput;
4
+ }
@@ -0,0 +1,7 @@
1
+ import { BrazilMortgageService } from "./BrazilMortgageService";
2
+ import { MortgageInput, MortgageOutput, MortgageRules } from "./domain/types";
3
+ export declare class BrazilMortgageServiceImpl implements BrazilMortgageService {
4
+ calculate(input: MortgageInput, rules: MortgageRules): MortgageOutput;
5
+ private calculateAmortizationSchedule;
6
+ private calculatePayment;
7
+ }
@@ -0,0 +1,39 @@
1
+ import { OtherFees } from "../../domain/types";
2
+ export interface MortgageRules {
3
+ loanConstraints: LoanConstraints;
4
+ interest: InterestRules;
5
+ itbi: ITBIRules;
6
+ }
7
+ export interface LoanConstraints {
8
+ maxLtvPercent: number;
9
+ maxAmortizationYears: number;
10
+ }
11
+ export interface InterestRules {
12
+ compounding: 'MONTHLY';
13
+ }
14
+ export interface ITBIRules {
15
+ rate: number;
16
+ }
17
+ export interface AmortizationScheduleItem {
18
+ year: number;
19
+ principal: number;
20
+ interest: number;
21
+ balance: number;
22
+ }
23
+ export interface MortgageInput {
24
+ propertyPrice: number;
25
+ downPayment: number;
26
+ annualInterestRate: number;
27
+ amortizationYears: number;
28
+ isFirstTimeBuyer: boolean;
29
+ }
30
+ export interface MortgageOutput {
31
+ loanAmount: number;
32
+ totalMortgage: number;
33
+ monthlyPayment: number;
34
+ totalInterestPaid: number;
35
+ totalPaid: number;
36
+ itbi: number;
37
+ amortizationSchedule: AmortizationScheduleItem[];
38
+ otherFees: OtherFees;
39
+ }
@@ -12,4 +12,12 @@ import { USAMortgageServiceImpl as USAMortgageService } from './usa/USAMortgageS
12
12
  import { MortgageRules as USAMortgageRules, MortgageInput as USAMortgageInput, MortgageOutput as USAMortgageOutput } from './usa/domain/types';
13
13
  import { GermanyMortgageServiceImpl as GermanyMortgageService } from './germany/GermanyMortgageServiceImpl';
14
14
  import { MortgageRules as GermanyMortgageRules, MortgageInput as GermanyMortgageInput, MortgageOutput as GermanyMortgageOutput } from './germany/domain/types';
15
- export { CanadaMortgageService, CanadaMortgageRules, CanadaMortgageCalculationInput, CanadaMortgageCalculationResult, FranceMortgageService, FranceMortgageRules, FranceMortgageInput, FranceMortgageCalculationResult, SouthAfricaMortgageService, SouthAfricaMortgageRules, SouthAfricaMortgageInput, SouthAfricaMortgageOutput, AustraliaMortgageService, AustraliaMortgageRules, AustraliaMortgageInput, AustraliaMortgageOutput, UKMortgageService, UKMortgageRules, UKMortgageInput, UKMortgageOutput, USAMortgageService, USAMortgageRules, USAMortgageInput, USAMortgageOutput, GermanyMortgageService, GermanyMortgageRules, GermanyMortgageInput, GermanyMortgageOutput };
15
+ import { BrazilMortgageServiceImpl as BrazilMortgageService } from './brazil/BrazilMortgageServiceImpl';
16
+ import { MortgageRules as BrazilMortgageRules, MortgageInput as BrazilMortgageInput, MortgageOutput as BrazilMortgageOutput } from './brazil/domain/types';
17
+ import { SpainMortgageServiceImpl as SpainMortgageService } from './spain/SpainMortgageServiceImpl';
18
+ import { MortgageRules as SpainMortgageRules, MortgageInput as SpainMortgageInput, MortgageOutput as SpainMortgageOutput } from './spain/domain/types';
19
+ import { IndiaMortgageServiceImpl as IndiaMortgageService } from './india/IndiaMortgageServiceImpl';
20
+ import { MortgageRules as IndiaMortgageRules, MortgageInput as IndiaMortgageInput, MortgageOutput as IndiaMortgageOutput } from './india/domain/types';
21
+ import { JapanMortgageServiceImpl as JapanMortgageService } from './japan/JapanMortgageServiceImpl';
22
+ import { MortgageRules as JapanMortgageRules, MortgageInput as JapanMortgageInput, MortgageOutput as JapanMortgageOutput } from './japan/domain/types';
23
+ export { CanadaMortgageService, CanadaMortgageRules, CanadaMortgageCalculationInput, CanadaMortgageCalculationResult, FranceMortgageService, FranceMortgageRules, FranceMortgageInput, FranceMortgageCalculationResult, SouthAfricaMortgageService, SouthAfricaMortgageRules, SouthAfricaMortgageInput, SouthAfricaMortgageOutput, AustraliaMortgageService, AustraliaMortgageRules, AustraliaMortgageInput, AustraliaMortgageOutput, UKMortgageService, UKMortgageRules, UKMortgageInput, UKMortgageOutput, USAMortgageService, USAMortgageRules, USAMortgageInput, USAMortgageOutput, GermanyMortgageService, GermanyMortgageRules, GermanyMortgageInput, GermanyMortgageOutput, BrazilMortgageService, BrazilMortgageRules, BrazilMortgageInput, BrazilMortgageOutput, SpainMortgageService, SpainMortgageRules, SpainMortgageInput, SpainMortgageOutput, IndiaMortgageService, IndiaMortgageRules, IndiaMortgageInput, IndiaMortgageOutput, JapanMortgageService, JapanMortgageRules, JapanMortgageInput, JapanMortgageOutput };
@@ -0,0 +1,4 @@
1
+ import { MortgageInput, MortgageOutput, MortgageRules } from "./domain/types";
2
+ export interface IndiaMortgageService {
3
+ calculate(input: MortgageInput, rules: MortgageRules): MortgageOutput;
4
+ }
@@ -0,0 +1,7 @@
1
+ import { IndiaMortgageService } from "./IndiaMortgageService";
2
+ import { MortgageInput, MortgageOutput, MortgageRules } from "./domain/types";
3
+ export declare class IndiaMortgageServiceImpl implements IndiaMortgageService {
4
+ calculate(input: MortgageInput, rules: MortgageRules): MortgageOutput;
5
+ private calculateAmortizationSchedule;
6
+ private calculatePayment;
7
+ }
@@ -0,0 +1,39 @@
1
+ import { OtherFees } from "../../domain/types";
2
+ export interface MortgageRules {
3
+ loanConstraints: LoanConstraints;
4
+ interest: InterestRules;
5
+ stampDuty: StampDutyRules;
6
+ }
7
+ export interface LoanConstraints {
8
+ maxLtvPercent: number;
9
+ maxAmortizationYears: number;
10
+ }
11
+ export interface InterestRules {
12
+ compounding: 'MONTHLY';
13
+ }
14
+ export interface StampDutyRules {
15
+ rate: number;
16
+ }
17
+ export interface AmortizationScheduleItem {
18
+ year: number;
19
+ principal: number;
20
+ interest: number;
21
+ balance: number;
22
+ }
23
+ export interface MortgageInput {
24
+ propertyPrice: number;
25
+ downPayment: number;
26
+ annualInterestRate: number;
27
+ amortizationYears: number;
28
+ isFirstTimeBuyer: boolean;
29
+ }
30
+ export interface MortgageOutput {
31
+ loanAmount: number;
32
+ totalMortgage: number;
33
+ monthlyPayment: number;
34
+ totalInterestPaid: number;
35
+ totalPaid: number;
36
+ stampDuty: number;
37
+ amortizationSchedule: AmortizationScheduleItem[];
38
+ otherFees: OtherFees;
39
+ }
@@ -0,0 +1,4 @@
1
+ import { MortgageInput, MortgageOutput, MortgageRules } from "./domain/types";
2
+ export interface JapanMortgageService {
3
+ calculate(input: MortgageInput, rules: MortgageRules): MortgageOutput;
4
+ }
@@ -0,0 +1,7 @@
1
+ import { JapanMortgageService } from "./JapanMortgageService";
2
+ import { MortgageInput, MortgageOutput, MortgageRules } from "./domain/types";
3
+ export declare class JapanMortgageServiceImpl implements JapanMortgageService {
4
+ calculate(input: MortgageInput, rules: MortgageRules): MortgageOutput;
5
+ private calculateAmortizationSchedule;
6
+ private calculatePayment;
7
+ }
@@ -0,0 +1,39 @@
1
+ import { OtherFees } from "../../domain/types";
2
+ export interface MortgageRules {
3
+ loanConstraints: LoanConstraints;
4
+ interest: InterestRules;
5
+ acquisitionTax: AcquisitionTaxRules;
6
+ }
7
+ export interface LoanConstraints {
8
+ maxLtvPercent: number;
9
+ maxAmortizationYears: number;
10
+ }
11
+ export interface InterestRules {
12
+ compounding: 'MONTHLY';
13
+ }
14
+ export interface AcquisitionTaxRules {
15
+ rate: number;
16
+ }
17
+ export interface AmortizationScheduleItem {
18
+ year: number;
19
+ principal: number;
20
+ interest: number;
21
+ balance: number;
22
+ }
23
+ export interface MortgageInput {
24
+ propertyPrice: number;
25
+ downPayment: number;
26
+ annualInterestRate: number;
27
+ amortizationYears: number;
28
+ isFirstTimeBuyer: boolean;
29
+ }
30
+ export interface MortgageOutput {
31
+ loanAmount: number;
32
+ totalMortgage: number;
33
+ monthlyPayment: number;
34
+ totalInterestPaid: number;
35
+ totalPaid: number;
36
+ acquisitionTax: number;
37
+ amortizationSchedule: AmortizationScheduleItem[];
38
+ otherFees: OtherFees;
39
+ }
@@ -0,0 +1,4 @@
1
+ import { MortgageInput, MortgageOutput, MortgageRules } from "./domain/types";
2
+ export interface SpainMortgageService {
3
+ calculate(input: MortgageInput, rules: MortgageRules): MortgageOutput;
4
+ }
@@ -0,0 +1,8 @@
1
+ import { SpainMortgageService } from "./SpainMortgageService";
2
+ import { MortgageInput, MortgageOutput, MortgageRules } from "./domain/types";
3
+ export declare class SpainMortgageServiceImpl implements SpainMortgageService {
4
+ calculate(input: MortgageInput, rules: MortgageRules): MortgageOutput;
5
+ private calculateTransferTax;
6
+ private calculateAmortizationSchedule;
7
+ private calculatePayment;
8
+ }
@@ -0,0 +1,44 @@
1
+ import { OtherFees } from "../../domain/types";
2
+ export interface MortgageRules {
3
+ loanConstraints: LoanConstraints;
4
+ interest: InterestRules;
5
+ transferTax: TransferTaxRules;
6
+ }
7
+ export interface LoanConstraints {
8
+ maxLtvPercent: number;
9
+ maxAmortizationYears: number;
10
+ }
11
+ export interface InterestRules {
12
+ compounding: 'MONTHLY';
13
+ }
14
+ export interface TransferTaxBracket {
15
+ upTo?: number;
16
+ above?: number;
17
+ rate: number;
18
+ }
19
+ export interface TransferTaxRules {
20
+ brackets: TransferTaxBracket[];
21
+ }
22
+ export interface AmortizationScheduleItem {
23
+ year: number;
24
+ principal: number;
25
+ interest: number;
26
+ balance: number;
27
+ }
28
+ export interface MortgageInput {
29
+ propertyPrice: number;
30
+ downPayment: number;
31
+ annualInterestRate: number;
32
+ amortizationYears: number;
33
+ isFirstTimeBuyer: boolean;
34
+ }
35
+ export interface MortgageOutput {
36
+ loanAmount: number;
37
+ totalMortgage: number;
38
+ monthlyPayment: number;
39
+ totalInterestPaid: number;
40
+ totalPaid: number;
41
+ transferTax: number;
42
+ amortizationSchedule: AmortizationScheduleItem[];
43
+ otherFees: OtherFees;
44
+ }
@@ -3,7 +3,8 @@ export declare enum CalculatorType {
3
3
  MORTGAGE = "MORTGAGE",
4
4
  LOAN = "LOAN",
5
5
  CORPORATE_TAX = "CORPORATE_TAX",
6
- CAPITAL_GAINS = "CAPITAL_GAINS"
6
+ CAPITAL_GAINS = "CAPITAL_GAINS",
7
+ INHERITANCE_TAX = "INHERITANCE_TAX"
7
8
  }
8
9
  export interface RuleMeta {
9
10
  id: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@novha/calc-engines",
3
- "version": "6.3.0",
3
+ "version": "8.0.0",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/types/index.d.ts",
6
6
  "scripts": {
@@ -0,0 +1,5 @@
1
+ import { Result } from "../domain/types";
2
+
3
+ export interface BrazilCapitalGainsService {
4
+ calculate(): Result;
5
+ }
@@ -0,0 +1,69 @@
1
+ import { Breakdown, Result } from "../domain/types";
2
+ import { BrazilCapitalGainsService } from "./BrazilCapitalGainsService";
3
+ import { CapitalGainsBracket, Input, Rules } from "./domain/types";
4
+
5
+ export class BrazilCapitalGainsServiceImpl implements BrazilCapitalGainsService {
6
+ private _input: Input;
7
+ private _rules: Rules;
8
+
9
+ constructor(input: Input, rules: Rules) {
10
+ this._input = input;
11
+ this._rules = rules;
12
+ }
13
+
14
+ calculate(): Result {
15
+ const gain = this._input.capitalGain;
16
+
17
+ if (gain <= 0) {
18
+ return {
19
+ taxableGain: 0,
20
+ capitalGainTax: 0,
21
+ socialContributions: 0,
22
+ netInvestmentIncomeTax: 0,
23
+ totalTax: 0,
24
+ effectiveRate: 0,
25
+ breakdowns: [],
26
+ };
27
+ }
28
+
29
+ const { tax, breakdowns } = this.applyBrackets(gain, this._rules.brackets);
30
+
31
+ return {
32
+ taxableGain: gain,
33
+ capitalGainTax: tax,
34
+ socialContributions: 0,
35
+ netInvestmentIncomeTax: 0,
36
+ totalTax: tax,
37
+ effectiveRate: (tax / gain) * 100,
38
+ breakdowns,
39
+ };
40
+ }
41
+
42
+ private applyBrackets(
43
+ gain: number,
44
+ brackets: CapitalGainsBracket[],
45
+ ): { tax: number; breakdowns: Breakdown[] } {
46
+ let tax = 0;
47
+ const breakdowns: Breakdown[] = [];
48
+
49
+ for (const bracket of brackets) {
50
+ if (gain <= bracket.from) break;
51
+
52
+ const upper = bracket.to ?? gain;
53
+ const taxable = Math.min(upper, gain) - bracket.from;
54
+
55
+ if (taxable > 0) {
56
+ const bracketTax = taxable * bracket.rate;
57
+ tax += bracketTax;
58
+ breakdowns.push({
59
+ from: `${bracket.from}`,
60
+ to: `${bracket.to ?? 'Above'}`,
61
+ rate: bracket.rate,
62
+ amount: bracketTax,
63
+ });
64
+ }
65
+ }
66
+
67
+ return { tax, breakdowns };
68
+ }
69
+ }
@@ -0,0 +1,15 @@
1
+ import { Breakdown } from "../../domain/types";
2
+
3
+ export interface CapitalGainsBracket {
4
+ from: number;
5
+ to: number | null;
6
+ rate: number;
7
+ }
8
+
9
+ export interface Rules {
10
+ brackets: CapitalGainsBracket[];
11
+ }
12
+
13
+ export interface Input {
14
+ capitalGain: number;
15
+ }
@@ -1,4 +1,4 @@
1
- import { Result } from "../domain/types";
1
+ import { Breakdown, Result } from "../domain/types";
2
2
  import { CanadaCapitalGainsService } from "./CanadaCapitalGainsService";
3
3
  import { Input, Rules, TaxBracket } from "./domain/types";
4
4
 
@@ -27,43 +27,56 @@ export class CanadaCapitalGainsServiceImpl implements CanadaCapitalGainsService
27
27
  }
28
28
 
29
29
  const taxableGain = gain * this._rules.inclusionRate;
30
-
31
- // income BEFORE the capital gain
32
- const baseIncome = this._input.totalTaxableIncome;
33
-
34
- const incomeWithGain = baseIncome + taxableGain;
35
-
36
- const baseTax = this.calculateProgressiveTax(baseIncome, this._rules.taxBrackets);
37
- const taxWithGain = this.calculateProgressiveTax(incomeWithGain, this._rules.taxBrackets);
38
-
39
- const capitalGainTax = taxWithGain - baseTax;
30
+ const otherIncome = this._input.totalTaxableIncome - gain;
31
+ const { tax, breakdowns } = this.applyBrackets(taxableGain, otherIncome, this._rules.taxBrackets);
40
32
 
41
33
  return {
42
34
  taxableGain,
43
- capitalGainTax,
35
+ capitalGainTax: tax,
44
36
  socialContributions: 0,
45
37
  netInvestmentIncomeTax: 0,
46
- totalTax: capitalGainTax,
47
- effectiveRate: gain > 0 ? (capitalGainTax / gain) * 100 : 0,
48
- breakdowns: []
38
+ totalTax: tax,
39
+ effectiveRate: gain > 0 ? (tax / gain) * 100 : 0,
40
+ breakdowns,
49
41
  };
50
42
  }
51
43
 
52
- private calculateProgressiveTax(income: number, brackets: TaxBracket[]): number {
44
+ private applyBrackets(
45
+ taxableGain: number,
46
+ otherIncome: number,
47
+ brackets: TaxBracket[],
48
+ ): { tax: number; breakdowns: Breakdown[] } {
53
49
  let tax = 0;
50
+ const breakdowns: Breakdown[] = [];
51
+ let remaining = taxableGain;
52
+ let incomeUsed = otherIncome;
54
53
 
55
54
  for (const bracket of brackets) {
55
+ if (remaining <= 0) break;
56
+
56
57
  const upper = bracket.to ?? Infinity;
57
58
 
58
- if (income <= bracket.from) break;
59
+ if (incomeUsed >= upper) continue;
59
60
 
60
- const taxable = Math.min(income, upper) - bracket.from;
61
+ const bracketStart = Math.max(bracket.from, incomeUsed);
62
+ const bracketSpace = upper - bracketStart;
63
+ const taxable = Math.min(bracketSpace, remaining);
61
64
 
62
65
  if (taxable > 0) {
63
- tax += taxable * bracket.rate;
66
+ const bracketTax = taxable * bracket.rate;
67
+ tax += bracketTax;
68
+ remaining -= taxable;
69
+ incomeUsed += taxable;
70
+
71
+ breakdowns.push({
72
+ from: `${bracket.from}`,
73
+ to: `${bracket.to ?? 'Above'}`,
74
+ rate: bracket.rate,
75
+ amount: bracketTax,
76
+ });
64
77
  }
65
78
  }
66
79
 
67
- return tax;
80
+ return { tax, breakdowns };
68
81
  }
69
- }
82
+ }
@@ -48,6 +48,34 @@ import {
48
48
  } from './germany/domain/types';
49
49
  import { Result } from './domain/types';
50
50
 
51
+ // Capital Gains - Brazil
52
+ import { BrazilCapitalGainsServiceImpl as BrazilCapitalGainsService } from './brazil/BrazilCapitalGainsServiceImpl';
53
+ import {
54
+ Input as BrazilCapitalGainsInput,
55
+ Rules as BrazilCapitalGainsRules
56
+ } from './brazil/domain/types';
57
+
58
+ // Capital Gains - Spain
59
+ import { SpainCapitalGainsServiceImpl as SpainCapitalGainsService } from './spain/SpainCapitalGainsServiceImpl';
60
+ import {
61
+ Input as SpainCapitalGainsInput,
62
+ Rules as SpainCapitalGainsRules
63
+ } from './spain/domain/types';
64
+
65
+ // Capital Gains - India
66
+ import { IndiaCapitalGainsServiceImpl as IndiaCapitalGainsService } from './india/IndiaCapitalGainsServiceImpl';
67
+ import {
68
+ Input as IndiaCapitalGainsInput,
69
+ Rules as IndiaCapitalGainsRules
70
+ } from './india/domain/types';
71
+
72
+ // Capital Gains - Japan
73
+ import { JapanCapitalGainsServiceImpl as JapanCapitalGainsService } from './japan/JapanCapitalGainsServiceImpl';
74
+ import {
75
+ Input as JapanCapitalGainsInput,
76
+ Rules as JapanCapitalGainsRules
77
+ } from './japan/domain/types';
78
+
51
79
  export {
52
80
  CanadaCapitalGainsService,
53
81
  CanadaCapitalGainsInput,
@@ -70,5 +98,17 @@ export {
70
98
  GermanyCapitalGainsService,
71
99
  GermanyCapitalGainsInput,
72
100
  GermanyCapitalGainsRules,
101
+ BrazilCapitalGainsService,
102
+ BrazilCapitalGainsInput,
103
+ BrazilCapitalGainsRules,
104
+ SpainCapitalGainsService,
105
+ SpainCapitalGainsInput,
106
+ SpainCapitalGainsRules,
107
+ IndiaCapitalGainsService,
108
+ IndiaCapitalGainsInput,
109
+ IndiaCapitalGainsRules,
110
+ JapanCapitalGainsService,
111
+ JapanCapitalGainsInput,
112
+ JapanCapitalGainsRules,
73
113
  Result
74
114
  };
@@ -0,0 +1,5 @@
1
+ import { Result } from "../domain/types";
2
+
3
+ export interface IndiaCapitalGainsService {
4
+ calculate(): Result;
5
+ }