@novha/calc-engines 5.0.0 → 6.1.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 (92) hide show
  1. package/dist/capital-gains/australia/AustraliaCapitalGainsService.js +1 -1
  2. package/dist/capital-gains/australia/AustraliaCapitalGainsServiceImpl.js +14 -3
  3. package/dist/capital-gains/australia/domain/types.js +1 -1
  4. package/dist/capital-gains/canada/CanadaCapitalGainsService.js +1 -1
  5. package/dist/capital-gains/canada/CanadaCapitalGainsServiceImpl.js +14 -3
  6. package/dist/capital-gains/canada/domain/types.js +1 -1
  7. package/dist/capital-gains/domain/types.js +1 -1
  8. package/dist/capital-gains/france/FranceCapitalGainsService.js +1 -1
  9. package/dist/capital-gains/france/FranceCapitalGainsServiceImpl.js +16 -6
  10. package/dist/capital-gains/france/domain/types.js +1 -1
  11. package/dist/capital-gains/germany/GermanyCapitalGainsService.js +1 -1
  12. package/dist/capital-gains/germany/GermanyCapitalGainsServiceImpl.js +15 -12
  13. package/dist/capital-gains/germany/domain/types.js +1 -1
  14. package/dist/capital-gains/index.js +25 -0
  15. package/dist/capital-gains/south-africa/SouthAfricaCapitalGainsService.js +1 -1
  16. package/dist/capital-gains/south-africa/SouthAfricaCapitalGainsServiceImpl.js +18 -4
  17. package/dist/capital-gains/south-africa/domain/types.js +1 -1
  18. package/dist/capital-gains/uk/UKCapitalGainsService.js +1 -1
  19. package/dist/capital-gains/uk/UKCapitalGainsServiceImpl.js +18 -4
  20. package/dist/capital-gains/uk/domain/types.js +1 -1
  21. package/dist/capital-gains/usa/USACapitalGainsService.js +1 -1
  22. package/dist/capital-gains/usa/USACapitalGainsServiceImpl.js +13 -3
  23. package/dist/corporate/index.js +18 -0
  24. package/dist/income-tax/index.js +24 -0
  25. package/dist/index.js +18 -72
  26. package/dist/mortgage/france/FranceMortgageService.js +1 -1
  27. package/dist/mortgage/france/FranceMortgageServiceImpl.js +1 -1
  28. package/dist/mortgage/index.js +25 -0
  29. package/dist/types/capital-gains/australia/AustraliaCapitalGainsService.d.ts +1 -1
  30. package/dist/types/capital-gains/australia/AustraliaCapitalGainsServiceImpl.d.ts +2 -1
  31. package/dist/types/capital-gains/australia/domain/types.d.ts +0 -7
  32. package/dist/types/capital-gains/canada/CanadaCapitalGainsService.d.ts +1 -1
  33. package/dist/types/capital-gains/canada/CanadaCapitalGainsServiceImpl.d.ts +2 -1
  34. package/dist/types/capital-gains/canada/domain/types.d.ts +0 -7
  35. package/dist/types/capital-gains/domain/types.d.ts +9 -0
  36. package/dist/types/capital-gains/france/FranceCapitalGainsService.d.ts +1 -1
  37. package/dist/types/capital-gains/france/FranceCapitalGainsServiceImpl.d.ts +2 -1
  38. package/dist/types/capital-gains/france/domain/types.d.ts +0 -8
  39. package/dist/types/capital-gains/germany/GermanyCapitalGainsService.d.ts +1 -1
  40. package/dist/types/capital-gains/germany/GermanyCapitalGainsServiceImpl.d.ts +2 -1
  41. package/dist/types/capital-gains/germany/domain/types.d.ts +0 -9
  42. package/dist/types/capital-gains/index.d.ts +16 -0
  43. package/dist/types/capital-gains/south-africa/SouthAfricaCapitalGainsService.d.ts +1 -1
  44. package/dist/types/capital-gains/south-africa/SouthAfricaCapitalGainsServiceImpl.d.ts +2 -1
  45. package/dist/types/capital-gains/south-africa/domain/types.d.ts +0 -7
  46. package/dist/types/capital-gains/uk/UKCapitalGainsService.d.ts +1 -1
  47. package/dist/types/capital-gains/uk/UKCapitalGainsServiceImpl.d.ts +2 -1
  48. package/dist/types/capital-gains/uk/domain/types.d.ts +0 -7
  49. package/dist/types/capital-gains/usa/USACapitalGainsService.d.ts +1 -1
  50. package/dist/types/capital-gains/usa/USACapitalGainsServiceImpl.d.ts +2 -1
  51. package/dist/types/corporate/index.d.ts +15 -0
  52. package/dist/types/income-tax/index.d.ts +15 -0
  53. package/dist/types/index.d.ts +4 -56
  54. package/dist/types/mortgage/france/FranceMortgageService.d.ts +1 -1
  55. package/dist/types/mortgage/france/FranceMortgageServiceImpl.d.ts +1 -1
  56. package/dist/types/mortgage/index.d.ts +15 -0
  57. package/package.json +1 -1
  58. package/src/capital-gains/australia/AustraliaCapitalGainsService.ts +1 -1
  59. package/src/capital-gains/australia/AustraliaCapitalGainsServiceImpl.ts +15 -4
  60. package/src/capital-gains/australia/domain/types.ts +0 -9
  61. package/src/capital-gains/canada/CanadaCapitalGainsService.ts +1 -1
  62. package/src/capital-gains/canada/CanadaCapitalGainsServiceImpl.ts +15 -4
  63. package/src/capital-gains/canada/domain/types.ts +0 -9
  64. package/src/capital-gains/domain/types.ts +9 -0
  65. package/src/capital-gains/france/FranceCapitalGainsService.ts +1 -1
  66. package/src/capital-gains/france/FranceCapitalGainsServiceImpl.ts +17 -7
  67. package/src/capital-gains/france/domain/types.ts +1 -11
  68. package/src/capital-gains/germany/GermanyCapitalGainsService.ts +1 -1
  69. package/src/capital-gains/germany/GermanyCapitalGainsServiceImpl.ts +16 -13
  70. package/src/capital-gains/germany/domain/types.ts +0 -10
  71. package/src/capital-gains/index.ts +74 -0
  72. package/src/capital-gains/south-africa/SouthAfricaCapitalGainsService.ts +1 -1
  73. package/src/capital-gains/south-africa/SouthAfricaCapitalGainsServiceImpl.ts +19 -5
  74. package/src/capital-gains/south-africa/domain/types.ts +0 -9
  75. package/src/capital-gains/uk/UKCapitalGainsService.ts +1 -1
  76. package/src/capital-gains/uk/UKCapitalGainsServiceImpl.ts +19 -5
  77. package/src/capital-gains/uk/domain/types.ts +0 -9
  78. package/src/capital-gains/usa/USACapitalGainsService.ts +1 -1
  79. package/src/capital-gains/usa/USACapitalGainsServiceImpl.ts +14 -4
  80. package/src/corporate/index.ts +79 -0
  81. package/src/income-tax/index.ts +72 -0
  82. package/src/index.ts +6 -202
  83. package/src/mortgage/france/FranceMortgageService.ts +1 -1
  84. package/src/mortgage/france/FranceMortgageServiceImpl.ts +1 -1
  85. package/src/mortgage/index.ts +87 -0
  86. package/test/australia-capital-gains.test.ts +5 -5
  87. package/test/canada-capital-gains.test.ts +5 -5
  88. package/test/france-capital-gains.test.ts +1 -1
  89. package/test/germany-capital-gains.test.ts +4 -4
  90. package/test/south-africa-capital-gains.test.ts +6 -6
  91. package/test/uk-capital-gains.test.ts +7 -7
  92. package/test/usa-capital-gains.test.ts +4 -4
@@ -1,5 +1,6 @@
1
+ import { Result } from "../domain/types";
1
2
  import { UKCapitalGainsService } from "./UKCapitalGainsService";
2
- import { Input, Result, Rules } from "./domain/types";
3
+ import { Input, Rules } from "./domain/types";
3
4
  export declare class UKCapitalGainsServiceImpl implements UKCapitalGainsService {
4
5
  private _input;
5
6
  private _rules;
@@ -1,4 +1,3 @@
1
- import { Breakdown } from "../../domain/types";
2
1
  export interface Rules {
3
2
  annualExemption: number;
4
3
  basicRate: number;
@@ -9,9 +8,3 @@ export interface Input {
9
8
  capitalGain: number;
10
9
  totalTaxableIncome: number;
11
10
  }
12
- export interface Result {
13
- taxableGain: number;
14
- capitalGainsTax: number;
15
- effectiveRate: number;
16
- breakdowns: Breakdown[];
17
- }
@@ -1,4 +1,4 @@
1
- import { Result } from "./domain/types";
1
+ import { Result } from "../domain/types";
2
2
  export interface USACapitalGainsService {
3
3
  calculate(): Result;
4
4
  }
@@ -1,5 +1,6 @@
1
+ import { Result } from "../domain/types";
1
2
  import { USACapitalGainsService } from "./USACapitalGainsService";
2
- import { Input, Result, Rules } from "./domain/types";
3
+ import { Input, Rules } from "./domain/types";
3
4
  export declare class USACapitalGainsServiceImpl implements USACapitalGainsService {
4
5
  private _input;
5
6
  private _rules;
@@ -0,0 +1,15 @@
1
+ import { USACorporateTaxServiceImpl as USACorporateTaxService } from './usa/USACorporateTaxServiceImpl';
2
+ import { Input as USACorporateTaxInput, Rules as USACorporateTaxRules, Result as USACorporateTaxResult } from './usa/domain/types';
3
+ import { GermanyCorporateTaxServiceImpl as GermanyCorporateTaxService } from './germany/GermanyCorporateTaxServiceImpl';
4
+ import { Input as GermanyCorporateTaxInput, Rules as GermanyCorporateTaxRules, Result as GermanyCorporateTaxResult } from './germany/domain/types';
5
+ import { UKCorporateTaxServiceImpl as UKCorporateTaxService } from './uk/UKCorporateTaxServiceImpl';
6
+ import { Input as UKCorporateTaxInput, Rules as UKCorporateTaxRules, Result as UKCorporateTaxResult } from './uk/domain/types';
7
+ import { AustraliaCorporateTaxServiceImpl as AustraliaCorporateTaxService } from './australia/AustraliaCorporateTaxServiceImpl';
8
+ import { Input as AustraliaCorporateTaxInput, Rules as AustraliaCorporateTaxRules, Result as AustraliaCorporateTaxResult } from './australia/domain/types';
9
+ import { SouthAfricaCorporateTaxServiceImpl as SouthAfricaCorporateTaxService } from './south-africa/SouthAfricaCorporateTaxServiceImpl';
10
+ import { Rules as SouthAfricaCorporateTaxRules, Input as SouthAfricaCorporateTaxInput, Result as SouthAfricaCorporateTaxResult } from './south-africa/domain/types';
11
+ import { FranceCorporateTaxServiceImpl as FranceCorporateTaxService } from './france/FranceCorporateTaxServiceImpl';
12
+ import { Input as FranceCorporateTaxInput, Rules as FranceCorporateTaxRules, Result as FranceCorporateTaxResult } from './france/domain/types';
13
+ import { CanadaCorporateTaxServiceImpl as CanadaCorporateTaxService } from './canada/CanadaCorporateTaxServiceImpl';
14
+ import { Input as CanadaCorporateTaxInput, Rules as CanadaCorporateTaxRules, Result as CanadaCorporateTaxResult } from './canada/domain/types';
15
+ export { USACorporateTaxService, USACorporateTaxInput, USACorporateTaxRules, USACorporateTaxResult, GermanyCorporateTaxService, GermanyCorporateTaxInput, GermanyCorporateTaxRules, GermanyCorporateTaxResult, UKCorporateTaxService, UKCorporateTaxInput, UKCorporateTaxRules, UKCorporateTaxResult, AustraliaCorporateTaxService, AustraliaCorporateTaxInput, AustraliaCorporateTaxRules, AustraliaCorporateTaxResult, SouthAfricaCorporateTaxService, SouthAfricaCorporateTaxInput, SouthAfricaCorporateTaxRules, SouthAfricaCorporateTaxResult, FranceCorporateTaxService, FranceCorporateTaxInput, FranceCorporateTaxRules, FranceCorporateTaxResult, CanadaCorporateTaxService, CanadaCorporateTaxInput, CanadaCorporateTaxRules, CanadaCorporateTaxResult };
@@ -0,0 +1,15 @@
1
+ import { CanadaIncomeTaxServiceImpl as CanadaIncomeTaxService } from './canada/CanadaIncomeTaxServiceImpl';
2
+ import { ComputedIncomeTaxValues as CanadaComputedIncomeTaxValues, IncomeTaxRules as CanadaIncomeTaxRules } from './canada/domain/types';
3
+ import { FranceIncomeTaxServiceImpl as FranceIncomeTaxService } from './france/FranceIncomeTaxServiceImpl';
4
+ import { ComputedIncomeTaxValues as FranceComputedIncomeTaxValues, IncomeTaxRules as FranceIncomeTaxRules } from './france/domain/types';
5
+ import { SouthAfricaIncomeTaxServiceImpl as SouthAfricaIncomeTaxService } from './south-africa/SouthAfricaIncomeTaxServiceImpl';
6
+ import { ComputedIncomeTaxValues as SouthAfricaComputedIncomeTaxValues, IncomeTaxRules as SouthAfricaIncomeTaxRules } from './south-africa/domain/types';
7
+ import { AustraliaIncomeTaxServiceImpl as AustraliaIncomeTaxService } from './australia/AustraliaIncomeTaxServiceImpl';
8
+ import { ComputedIncomeTaxValues as AustraliaComputedIncomeTaxValues, IncomeTaxRules as AustraliaIncomeTaxRules } from './australia/domain/types';
9
+ import { UKIncomeTaxServiceImpl as UKIncomeTaxService } from './uk/UKIncomeTaxServiceImpl';
10
+ import { ComputedIncomeTaxValues as UKComputedIncomeTaxValues, IncomeTaxRules as UKIncomeTaxRules } from './uk/domain/types';
11
+ import { USAIncomeTaxServiceImpl as USAIncomeTaxService } from './usa/USAIncomeTaxServiceImpl';
12
+ import { ComputedIncomeTaxValues as USAComputedIncomeTaxValues, IncomeTaxRules as USAIncomeTaxRules } from './usa/domain/types';
13
+ import { GermanyIncomeTaxServiceImpl as GermanyIncomeTaxService } from './germany/GermanyIncomeTaxServiceImpl';
14
+ import { ComputedIncomeTaxValues as GermanyComputedIncomeTaxValues, IncomeTaxRules as GermanyIncomeTaxRules } from './germany/domain/types';
15
+ export { CanadaIncomeTaxService, CanadaComputedIncomeTaxValues, CanadaIncomeTaxRules, FranceIncomeTaxService, FranceComputedIncomeTaxValues, FranceIncomeTaxRules, SouthAfricaIncomeTaxService, SouthAfricaComputedIncomeTaxValues, SouthAfricaIncomeTaxRules, AustraliaIncomeTaxService, AustraliaComputedIncomeTaxValues, AustraliaIncomeTaxRules, UKIncomeTaxService, UKComputedIncomeTaxValues, UKIncomeTaxRules, USAIncomeTaxService, USAComputedIncomeTaxValues, USAIncomeTaxRules, GermanyIncomeTaxService, GermanyComputedIncomeTaxValues, GermanyIncomeTaxRules, };
@@ -1,59 +1,7 @@
1
1
  export { CalculatorType } from './shared/domain/types';
2
- export { CanadaIncomeTaxServiceImpl as CanadaIncomeTaxService } from './income-tax/canada/CanadaIncomeTaxServiceImpl';
3
- export { CanadaMortgageServiceImpl as CanadaMortgageService } from './mortgage/canada/CanadaMortgageServiceImpl';
4
- export { ComputedIncomeTaxValues as CanadaComputedIncomeTaxValues, IncomeTaxRules as CanadaIncomeTaxRules, } from './income-tax/canada/domain/types';
5
- export { MortgageRules as CanadaMortgageRules, MortgageCalculationInput as CanadaMortgageCalculationInput, MortgageCalculationResult as CanadaMortgageCalculationResult, } from './mortgage/canada/domain/types';
6
- export { CanadaCorporateTaxServiceImpl as CanadaCorporateTaxService } from './corporate/canada/CanadaCorporateTaxServiceImpl';
7
- export { Input as CanadaCorporateTaxInput, Rules as CanadaCorporateTaxRules, Result as CanadaCorporateTaxResult, } from './corporate/canada/domain/types';
8
- export { FranceIncomeTaxServiceImpl as FranceIncomeTaxService } from './income-tax/france/FranceIncomeTaxServiceImpl';
9
- export { FranceMortgageServiceImpl as FranceMortgageService } from './mortgage/france/FranceMortgageServiceImpl';
10
- export { ComputedIncomeTaxValues as FranceComputedIncomeTaxValues, IncomeTaxRules as FranceIncomeTaxRules, } from './income-tax/france/domain/types';
11
- export { MortgageRules as FranceMortgageRules, MortgageInput as FranceMortgageInput, MortgageOutput as FranceMortgageCalculationResult, } from './mortgage/france/domain/types';
12
- export { FranceCorporateTaxServiceImpl as FranceCorporateTaxService } from './corporate/france/FranceCorporateTaxServiceImpl';
13
- export { Input as FranceCorporateTaxInput, Rules as FranceCorporateTaxRules, Result as FranceCorporateTaxResult, } from './corporate/france/domain/types';
14
- export { SouthAfricaIncomeTaxServiceImpl as SouthAfricaIncomeTaxService } from './income-tax/south-africa/SouthAfricaIncomeTaxServiceImpl';
15
- export { SouthAfricaMortgageServiceImpl as SouthAfricaMortgageService } from './mortgage/south-africa/SouthAfricaMortgageServiceImpl';
16
- export { ComputedIncomeTaxValues as SouthAfricaComputedIncomeTaxValues, IncomeTaxRules as SouthAfricaIncomeTaxRules, } from './income-tax/south-africa/domain/types';
17
- export { MortgageRules as SouthAfricaMortgageRules, MortgageInput as SouthAfricaMortgageInput, MortgageOutput as SouthAfricaMortgageOutput, } from './mortgage/south-africa/domain/types';
18
- export { SouthAfricaCorporateTaxServiceImpl as SouthAfricaCorporateTaxService } from './corporate/south-africa/SouthAfricaCorporateTaxServiceImpl';
19
- export { Rules as SouthAfricaCorporateTaxRules, Input as SouthAfricaCorporateTaxInput, Result as SouthAfricaCorporateTaxResult, } from './corporate/south-africa/domain/types';
20
- export { AustraliaIncomeTaxServiceImpl as AustraliaIncomeTaxService } from './income-tax/australia/AustraliaIncomeTaxServiceImpl';
21
- export { ComputedIncomeTaxValues as AustraliaComputedIncomeTaxValues, IncomeTaxRules as AustraliaIncomeTaxRules, } from './income-tax/australia/domain/types';
22
- export { AustraliaMortgageServiceImpl as AustraliaMortgageService } from './mortgage/australia/AustraliaMortgageServiceImpl';
23
- export { MortgageRules as AustraliaMortgageRules, MortgageInput as AustraliaMortgageInput, MortgageOutput as AustraliaMortgageOutput, } from './mortgage/australia/domain/types';
24
- export { AustraliaCorporateTaxServiceImpl as AustraliaCorporateTaxService } from './corporate/australia/AustraliaCorporateTaxServiceImpl';
25
- export { Input as AustraliaCorporateTaxInput, Rules as AustraliaCorporateTaxRules, Result as AustraliaCorporateTaxResult, } from './corporate/australia/domain/types';
26
- export { UKIncomeTaxServiceImpl as UKIncomeTaxService } from './income-tax/uk/UKIncomeTaxServiceImpl';
27
- export { ComputedIncomeTaxValues as UKComputedIncomeTaxValues, IncomeTaxRules as UKIncomeTaxRules, } from './income-tax/uk/domain/types';
28
- export { UKCorporateTaxServiceImpl as UKCorporateTaxService } from './corporate/uk/UKCorporateTaxServiceImpl';
29
- export { Input as UKCorporateTaxInput, Rules as UKCorporateTaxRules, Result as UKCorporateTaxResult, } from './corporate/uk/domain/types';
30
- export { UKMortgageServiceImpl as UKMortgageService } from './mortgage/uk/UKMortgageServiceImpl';
31
- export { MortgageRules as UKMortgageRules, MortgageInput as UKMortgageInput, MortgageOutput as UKMortgageOutput, } from './mortgage/uk/domain/types';
32
- export { USAIncomeTaxServiceImpl as USAIncomeTaxService } from './income-tax/usa/USAIncomeTaxServiceImpl';
33
- export { ComputedIncomeTaxValues as USAComputedIncomeTaxValues, IncomeTaxRules as USAIncomeTaxRules, } from './income-tax/usa/domain/types';
34
- export { USAMortgageServiceImpl as USAMortgageService } from './mortgage/usa/USAMortgageServiceImpl';
35
- export { MortgageRules as USAMortgageRules, MortgageInput as USAMortgageInput, MortgageOutput as USAMortgageOutput, } from './mortgage/usa/domain/types';
36
- export { USACorporateTaxServiceImpl as USACorporateTaxService } from './corporate/usa/USACorporateTaxServiceImpl';
37
- export { Input as USACorporateTaxInput, Rules as USACorporateTaxRules, Result as USACorporateTaxResult, } from './corporate/usa/domain/types';
38
- export { GermanyIncomeTaxServiceImpl as GermanyIncomeTaxService } from './income-tax/germany/GermanyIncomeTaxServiceImpl';
39
- export { ComputedIncomeTaxValues as GermanyComputedIncomeTaxValues, IncomeTaxRules as GermanyIncomeTaxRules, } from './income-tax/germany/domain/types';
40
- export { GermanyMortgageServiceImpl as GermanyMortgageService } from './mortgage/germany/GermanyMortgageServiceImpl';
41
- export { MortgageRules as GermanyMortgageRules, MortgageInput as GermanyMortgageInput, MortgageOutput as GermanyMortgageOutput, } from './mortgage/germany/domain/types';
42
- export { GermanyCorporateTaxServiceImpl as GermanyCorporateTaxService } from './corporate/germany/GermanyCorporateTaxServiceImpl';
43
- export { Input as GermanyCorporateTaxInput, Rules as GermanyCorporateTaxRules, Result as GermanyCorporateTaxResult, } from './corporate/germany/domain/types';
44
- export { CanadaCapitalGainsServiceImpl as CanadaCapitalGainsService } from './capital-gains/canada/CanadaCapitalGainsServiceImpl';
45
- export { Input as CanadaCapitalGainsInput, Rules as CanadaCapitalGainsRules, Result as CanadaCapitalGainsResult, } from './capital-gains/canada/domain/types';
46
- export { FranceCapitalGainsServiceImpl as FranceCapitalGainsService } from './capital-gains/france/FranceCapitalGainsServiceImpl';
47
- export { Input as FranceCapitalGainsInput, Rules as FranceCapitalGainsRules, Result as FranceCapitalGainsResult, } from './capital-gains/france/domain/types';
48
- export { SouthAfricaCapitalGainsServiceImpl as SouthAfricaCapitalGainsService } from './capital-gains/south-africa/SouthAfricaCapitalGainsServiceImpl';
49
- export { Input as SouthAfricaCapitalGainsInput, Rules as SouthAfricaCapitalGainsRules, Result as SouthAfricaCapitalGainsResult, } from './capital-gains/south-africa/domain/types';
50
- export { AustraliaCapitalGainsServiceImpl as AustraliaCapitalGainsService } from './capital-gains/australia/AustraliaCapitalGainsServiceImpl';
51
- export { Input as AustraliaCapitalGainsInput, Rules as AustraliaCapitalGainsRules, Result as AustraliaCapitalGainsResult, } from './capital-gains/australia/domain/types';
52
- export { UKCapitalGainsServiceImpl as UKCapitalGainsService } from './capital-gains/uk/UKCapitalGainsServiceImpl';
53
- export { Input as UKCapitalGainsInput, Rules as UKCapitalGainsRules, Result as UKCapitalGainsResult, } from './capital-gains/uk/domain/types';
54
- export { USACapitalGainsServiceImpl as USACapitalGainsService } from './capital-gains/usa/USACapitalGainsServiceImpl';
55
- export { Input as USACapitalGainsInput, Rules as USACapitalGainsRules, Result as USACapitalGainsResult, } from './capital-gains/usa/domain/types';
56
- export { GermanyCapitalGainsServiceImpl as GermanyCapitalGainsService } from './capital-gains/germany/GermanyCapitalGainsServiceImpl';
57
- export { Input as GermanyCapitalGainsInput, Rules as GermanyCapitalGainsRules, Result as GermanyCapitalGainsResult, } from './capital-gains/germany/domain/types';
58
2
  export { IncomeTaxCalculatorSchema } from './income-tax/domain/types';
59
3
  export * from './income-tax/domain/types';
4
+ export * as IncomeTax from './income-tax';
5
+ export * as CorporateTax from './corporate';
6
+ export * as CapitalGain from './capital-gains';
7
+ export * as Mortgage from './mortgage';
@@ -1,4 +1,4 @@
1
1
  import { MortgageRules, MortgageInput, MortgageOutput } from './domain/types';
2
- export interface SouthAfricaMortgageService {
2
+ export interface FranceMortgageService {
3
3
  calculate(input: MortgageInput, rules: MortgageRules): MortgageOutput;
4
4
  }
@@ -1,4 +1,4 @@
1
- import { FranceMortgageService } from '../..';
1
+ import { FranceMortgageService } from './FranceMortgageService';
2
2
  import { MortgageRules, MortgageInput, MortgageOutput } from './domain/types';
3
3
  export declare class FranceMortgageServiceImpl implements FranceMortgageService {
4
4
  private _input;
@@ -0,0 +1,15 @@
1
+ import { CanadaMortgageServiceImpl as CanadaMortgageService } from './canada/CanadaMortgageServiceImpl';
2
+ import { MortgageRules as CanadaMortgageRules, MortgageCalculationInput as CanadaMortgageCalculationInput, MortgageCalculationResult as CanadaMortgageCalculationResult } from './canada/domain/types';
3
+ import { FranceMortgageServiceImpl as FranceMortgageService } from './france/FranceMortgageServiceImpl';
4
+ import { MortgageRules as FranceMortgageRules, MortgageInput as FranceMortgageInput, MortgageOutput as FranceMortgageCalculationResult } from './france/domain/types';
5
+ import { SouthAfricaMortgageServiceImpl as SouthAfricaMortgageService } from './south-africa/SouthAfricaMortgageServiceImpl';
6
+ import { MortgageRules as SouthAfricaMortgageRules, MortgageInput as SouthAfricaMortgageInput, MortgageOutput as SouthAfricaMortgageOutput } from './south-africa/domain/types';
7
+ import { AustraliaMortgageServiceImpl as AustraliaMortgageService } from './australia/AustraliaMortgageServiceImpl';
8
+ import { MortgageRules as AustraliaMortgageRules, MortgageInput as AustraliaMortgageInput, MortgageOutput as AustraliaMortgageOutput } from './australia/domain/types';
9
+ import { UKMortgageServiceImpl as UKMortgageService } from './uk/UKMortgageServiceImpl';
10
+ import { MortgageRules as UKMortgageRules, MortgageInput as UKMortgageInput, MortgageOutput as UKMortgageOutput } from './uk/domain/types';
11
+ import { USAMortgageServiceImpl as USAMortgageService } from './usa/USAMortgageServiceImpl';
12
+ import { MortgageRules as USAMortgageRules, MortgageInput as USAMortgageInput, MortgageOutput as USAMortgageOutput } from './usa/domain/types';
13
+ import { GermanyMortgageServiceImpl as GermanyMortgageService } from './germany/GermanyMortgageServiceImpl';
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 };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@novha/calc-engines",
3
- "version": "5.0.0",
3
+ "version": "6.1.0",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/types/index.d.ts",
6
6
  "scripts": {
@@ -1,4 +1,4 @@
1
- import { Result } from "./domain/types";
1
+ import { Result } from "../domain/types";
2
2
 
3
3
  export interface AustraliaCapitalGainsService {
4
4
  calculate(): Result;
@@ -1,6 +1,6 @@
1
- import { Breakdown } from "../domain/types";
1
+ import { Breakdown, Result } from "../domain/types";
2
2
  import { AustraliaCapitalGainsService } from "./AustraliaCapitalGainsService";
3
- import { Input, Result, Rules, TaxBracket } from "./domain/types";
3
+ import { Input, Rules, TaxBracket } from "./domain/types";
4
4
 
5
5
  export class AustraliaCapitalGainsServiceImpl implements AustraliaCapitalGainsService {
6
6
  private _input: Input;
@@ -15,7 +15,15 @@ export class AustraliaCapitalGainsServiceImpl implements AustraliaCapitalGainsSe
15
15
  const gain = this._input.capitalGain;
16
16
 
17
17
  if (gain <= 0) {
18
- return { taxableGain: 0, capitalGainsTax: 0, effectiveRate: 0, breakdowns: [] };
18
+ return {
19
+ taxableGain: 0,
20
+ capitalGainTax: 0,
21
+ socialContributions: 0,
22
+ totalTax: 0,
23
+ effectiveRate: 0,
24
+ netInvestmentIncomeTax: 0,
25
+ breakdowns: []
26
+ };
19
27
  }
20
28
 
21
29
  const eligible = this._input.holdingPeriodMonths >= this._rules.cgtDiscountMinMonths;
@@ -26,7 +34,10 @@ export class AustraliaCapitalGainsServiceImpl implements AustraliaCapitalGainsSe
26
34
 
27
35
  return {
28
36
  taxableGain,
29
- capitalGainsTax: tax,
37
+ capitalGainTax: tax,
38
+ socialContributions: 0,
39
+ netInvestmentIncomeTax: 0,
40
+ totalTax: tax,
30
41
  effectiveRate: gain > 0 ? (tax / gain) * 100 : 0,
31
42
  breakdowns,
32
43
  };
@@ -1,5 +1,3 @@
1
- import { Breakdown } from "../../domain/types";
2
-
3
1
  export interface TaxBracket {
4
2
  from: number;
5
3
  to: number | null;
@@ -17,10 +15,3 @@ export interface Input {
17
15
  totalTaxableIncome: number;
18
16
  holdingPeriodMonths: number;
19
17
  }
20
-
21
- export interface Result {
22
- taxableGain: number;
23
- capitalGainsTax: number;
24
- effectiveRate: number;
25
- breakdowns: Breakdown[];
26
- }
@@ -1,4 +1,4 @@
1
- import { Result } from "./domain/types";
1
+ import { Result } from "../domain/types";
2
2
 
3
3
  export interface CanadaCapitalGainsService {
4
4
  calculate(): Result;
@@ -1,6 +1,6 @@
1
- import { Breakdown } from "../domain/types";
1
+ import { Breakdown, Result } from "../domain/types";
2
2
  import { CanadaCapitalGainsService } from "./CanadaCapitalGainsService";
3
- import { Input, Result, Rules, TaxBracket } from "./domain/types";
3
+ import { Input, Rules, TaxBracket } from "./domain/types";
4
4
 
5
5
  export class CanadaCapitalGainsServiceImpl implements CanadaCapitalGainsService {
6
6
  private _input: Input;
@@ -15,7 +15,15 @@ export class CanadaCapitalGainsServiceImpl implements CanadaCapitalGainsService
15
15
  const gain = this._input.capitalGain;
16
16
 
17
17
  if (gain <= 0) {
18
- return { taxableGain: 0, capitalGainsTax: 0, effectiveRate: 0, breakdowns: [] };
18
+ return {
19
+ taxableGain: 0,
20
+ capitalGainTax: 0,
21
+ socialContributions: 0,
22
+ netInvestmentIncomeTax: 0,
23
+ totalTax: 0,
24
+ effectiveRate: 0,
25
+ breakdowns: []
26
+ };
19
27
  }
20
28
 
21
29
  const taxableGain = gain * this._rules.inclusionRate;
@@ -24,7 +32,10 @@ export class CanadaCapitalGainsServiceImpl implements CanadaCapitalGainsService
24
32
 
25
33
  return {
26
34
  taxableGain,
27
- capitalGainsTax: tax,
35
+ capitalGainTax: tax,
36
+ socialContributions: 0,
37
+ netInvestmentIncomeTax: 0,
38
+ totalTax: tax,
28
39
  effectiveRate: gain > 0 ? (tax / gain) * 100 : 0,
29
40
  breakdowns,
30
41
  };
@@ -1,5 +1,3 @@
1
- import { Breakdown } from "../../domain/types";
2
-
3
1
  export interface Rules {
4
2
  inclusionRate: number;
5
3
  taxBrackets: TaxBracket[];
@@ -15,10 +13,3 @@ export interface Input {
15
13
  capitalGain: number;
16
14
  totalTaxableIncome: number;
17
15
  }
18
-
19
- export interface Result {
20
- taxableGain: number;
21
- capitalGainsTax: number;
22
- effectiveRate: number;
23
- breakdowns: Breakdown[];
24
- }
@@ -4,3 +4,12 @@ export interface Breakdown {
4
4
  rate: number;
5
5
  amount: number;
6
6
  }
7
+ export interface Result {
8
+ taxableGain: number;
9
+ capitalGainTax: number;
10
+ socialContributions: number;
11
+ totalTax: number;
12
+ netInvestmentIncomeTax: number;
13
+ effectiveRate: number;
14
+ breakdowns: Breakdown[];
15
+ }
@@ -1,4 +1,4 @@
1
- import { Result } from "./domain/types";
1
+ import { Result } from "../domain/types";
2
2
 
3
3
  export interface FranceCapitalGainsService {
4
4
  calculate(): Result;
@@ -1,6 +1,6 @@
1
- import { Breakdown } from "../domain/types";
1
+ import { Breakdown, Result } from "../domain/types";
2
2
  import { FranceCapitalGainsService } from "./FranceCapitalGainsService";
3
- import { Input, Result, Rules } from "./domain/types";
3
+ import { Input, Rules } from "./domain/types";
4
4
 
5
5
  export class FranceCapitalGainsServiceImpl implements FranceCapitalGainsService {
6
6
  private _input: Input;
@@ -15,19 +15,27 @@ export class FranceCapitalGainsServiceImpl implements FranceCapitalGainsService
15
15
  const gain = this._input.capitalGain;
16
16
 
17
17
  if (gain <= 0) {
18
- return { incomeTax: 0, socialContributions: 0, totalTax: 0, effectiveRate: 0, breakdowns: [] };
18
+ return {
19
+ taxableGain: gain,
20
+ capitalGainTax: 0,
21
+ socialContributions: 0,
22
+ netInvestmentIncomeTax: 0,
23
+ totalTax: 0,
24
+ effectiveRate: 0,
25
+ breakdowns: []
26
+ };
19
27
  }
20
28
 
21
- const incomeTax = gain * this._rules.flatTaxRate;
29
+ const capitalGainTax = gain * this._rules.flatTaxRate;
22
30
  const socialContributions = gain * this._rules.socialContributionsRate;
23
- const totalTax = incomeTax + socialContributions;
31
+ const totalTax = capitalGainTax + socialContributions;
24
32
 
25
33
  const breakdowns: Breakdown[] = [
26
34
  {
27
35
  from: '0',
28
36
  to: 'All',
29
37
  rate: this._rules.flatTaxRate,
30
- amount: incomeTax,
38
+ amount: capitalGainTax,
31
39
  },
32
40
  {
33
41
  from: '0',
@@ -38,8 +46,10 @@ export class FranceCapitalGainsServiceImpl implements FranceCapitalGainsService
38
46
  ];
39
47
 
40
48
  return {
41
- incomeTax,
49
+ taxableGain: gain,
50
+ capitalGainTax,
42
51
  socialContributions,
52
+ netInvestmentIncomeTax: 0,
43
53
  totalTax,
44
54
  effectiveRate: (totalTax / gain) * 100,
45
55
  breakdowns,
@@ -1,5 +1,3 @@
1
- import { Breakdown } from "../../domain/types";
2
-
3
1
  export interface Rules {
4
2
  flatTaxRate: number;
5
3
  socialContributionsRate: number;
@@ -7,12 +5,4 @@ export interface Rules {
7
5
 
8
6
  export interface Input {
9
7
  capitalGain: number;
10
- }
11
-
12
- export interface Result {
13
- incomeTax: number;
14
- socialContributions: number;
15
- totalTax: number;
16
- effectiveRate: number;
17
- breakdowns: Breakdown[];
18
- }
8
+ }
@@ -1,4 +1,4 @@
1
- import { Result } from "./domain/types";
1
+ import { Result } from "../domain/types";
2
2
 
3
3
  export interface GermanyCapitalGainsService {
4
4
  calculate(): Result;
@@ -1,6 +1,6 @@
1
- import { Breakdown } from "../domain/types";
1
+ import { Breakdown, Result } from "../domain/types";
2
2
  import { GermanyCapitalGainsService } from "./GermanyCapitalGainsService";
3
- import { Input, Result, Rules } from "./domain/types";
3
+ import { Input, Rules } from "./domain/types";
4
4
 
5
5
  export class GermanyCapitalGainsServiceImpl implements GermanyCapitalGainsService {
6
6
  private _input: Input;
@@ -17,8 +17,9 @@ export class GermanyCapitalGainsServiceImpl implements GermanyCapitalGainsServic
17
17
  if (gain <= 0) {
18
18
  return {
19
19
  taxableGain: 0,
20
- capitalGainsTax: 0,
21
- solidaritySurcharge: 0,
20
+ capitalGainTax: 0,
21
+ socialContributions: 0,
22
+ netInvestmentIncomeTax: 0,
22
23
  totalTax: 0,
23
24
  effectiveRate: 0,
24
25
  breakdowns: [],
@@ -30,8 +31,9 @@ export class GermanyCapitalGainsServiceImpl implements GermanyCapitalGainsServic
30
31
  if (taxableGain <= 0) {
31
32
  return {
32
33
  taxableGain: 0,
33
- capitalGainsTax: 0,
34
- solidaritySurcharge: 0,
34
+ capitalGainTax: 0,
35
+ socialContributions: 0,
36
+ netInvestmentIncomeTax: 0,
35
37
  totalTax: 0,
36
38
  effectiveRate: 0,
37
39
  breakdowns: [{
@@ -43,29 +45,30 @@ export class GermanyCapitalGainsServiceImpl implements GermanyCapitalGainsServic
43
45
  };
44
46
  }
45
47
 
46
- const capitalGainsTax = taxableGain * this._rules.flatTaxRate;
47
- const solidaritySurcharge = capitalGainsTax * this._rules.solidaritySurchargeRate;
48
- const totalTax = capitalGainsTax + solidaritySurcharge;
48
+ const capitalGainTax = taxableGain * this._rules.flatTaxRate;
49
+ const socialContributions = capitalGainTax * this._rules.solidaritySurchargeRate;
50
+ const totalTax = capitalGainTax + socialContributions;
49
51
 
50
52
  const breakdowns: Breakdown[] = [
51
53
  {
52
54
  from: '0',
53
55
  to: 'All',
54
56
  rate: this._rules.flatTaxRate,
55
- amount: capitalGainsTax,
57
+ amount: capitalGainTax,
56
58
  },
57
59
  {
58
60
  from: 'CGT',
59
61
  to: 'Solidarity',
60
62
  rate: this._rules.solidaritySurchargeRate,
61
- amount: solidaritySurcharge,
63
+ amount: socialContributions,
62
64
  },
63
65
  ];
64
66
 
65
67
  return {
66
68
  taxableGain,
67
- capitalGainsTax,
68
- solidaritySurcharge,
69
+ capitalGainTax,
70
+ socialContributions,
71
+ netInvestmentIncomeTax: 0,
69
72
  totalTax,
70
73
  effectiveRate: gain > 0 ? (totalTax / gain) * 100 : 0,
71
74
  breakdowns,
@@ -1,4 +1,3 @@
1
- import { Breakdown } from "../../domain/types";
2
1
 
3
2
  export interface Rules {
4
3
  flatTaxRate: number;
@@ -9,12 +8,3 @@ export interface Rules {
9
8
  export interface Input {
10
9
  capitalGain: number;
11
10
  }
12
-
13
- export interface Result {
14
- taxableGain: number;
15
- capitalGainsTax: number;
16
- solidaritySurcharge: number;
17
- totalTax: number;
18
- effectiveRate: number;
19
- breakdowns: Breakdown[];
20
- }
@@ -0,0 +1,74 @@
1
+ // Capital Gains - Canada
2
+ import { CanadaCapitalGainsServiceImpl as CanadaCapitalGainsService } from './canada/CanadaCapitalGainsServiceImpl';
3
+ import {
4
+ Input as CanadaCapitalGainsInput,
5
+ Rules as CanadaCapitalGainsRules
6
+ } from './canada/domain/types';
7
+
8
+ // Capital Gains - France
9
+ import { FranceCapitalGainsServiceImpl as FranceCapitalGainsService } from './france/FranceCapitalGainsServiceImpl';
10
+ import {
11
+ Input as FranceCapitalGainsInput,
12
+ Rules as FranceCapitalGainsRules
13
+ } from './france/domain/types';
14
+
15
+ // Capital Gains - South Africa
16
+ import { SouthAfricaCapitalGainsServiceImpl as SouthAfricaCapitalGainsService } from './south-africa/SouthAfricaCapitalGainsServiceImpl';
17
+ import {
18
+ Input as SouthAfricaCapitalGainsInput,
19
+ Rules as SouthAfricaCapitalGainsRules
20
+ } from './south-africa/domain/types';
21
+
22
+ // Capital Gains - Australia
23
+ import { AustraliaCapitalGainsServiceImpl as AustraliaCapitalGainsService } from './australia/AustraliaCapitalGainsServiceImpl';
24
+ import {
25
+ Input as AustraliaCapitalGainsInput,
26
+ Rules as AustraliaCapitalGainsRules
27
+ } from './australia/domain/types';
28
+
29
+ // Capital Gains - UK
30
+ import { UKCapitalGainsServiceImpl as UKCapitalGainsService } from './uk/UKCapitalGainsServiceImpl';
31
+ import {
32
+ Input as UKCapitalGainsInput,
33
+ Rules as UKCapitalGainsRules
34
+ } from './uk/domain/types';
35
+
36
+ // Capital Gains - USA
37
+ import { USACapitalGainsServiceImpl as USACapitalGainsService } from './usa/USACapitalGainsServiceImpl';
38
+ import {
39
+ Input as USACapitalGainsInput,
40
+ Rules as USACapitalGainsRules
41
+ } from './usa/domain/types';
42
+
43
+ // Capital Gains - Germany
44
+ import { GermanyCapitalGainsServiceImpl as GermanyCapitalGainsService } from './germany/GermanyCapitalGainsServiceImpl';
45
+ import {
46
+ Input as GermanyCapitalGainsInput,
47
+ Rules as GermanyCapitalGainsRules
48
+ } from './germany/domain/types';
49
+ import { Result } from './domain/types';
50
+
51
+ export {
52
+ CanadaCapitalGainsService,
53
+ CanadaCapitalGainsInput,
54
+ CanadaCapitalGainsRules,
55
+ FranceCapitalGainsService,
56
+ FranceCapitalGainsInput,
57
+ FranceCapitalGainsRules,
58
+ SouthAfricaCapitalGainsService,
59
+ SouthAfricaCapitalGainsInput,
60
+ SouthAfricaCapitalGainsRules,
61
+ AustraliaCapitalGainsService,
62
+ AustraliaCapitalGainsInput,
63
+ AustraliaCapitalGainsRules,
64
+ UKCapitalGainsService,
65
+ UKCapitalGainsInput,
66
+ UKCapitalGainsRules,
67
+ USACapitalGainsService,
68
+ USACapitalGainsInput,
69
+ USACapitalGainsRules,
70
+ GermanyCapitalGainsService,
71
+ GermanyCapitalGainsInput,
72
+ GermanyCapitalGainsRules,
73
+ Result
74
+ };
@@ -1,4 +1,4 @@
1
- import { Result } from "./domain/types";
1
+ import { Result } from "../domain/types";
2
2
 
3
3
  export interface SouthAfricaCapitalGainsService {
4
4
  calculate(): Result;
@@ -1,6 +1,6 @@
1
- import { Breakdown } from "../domain/types";
1
+ import { Breakdown, Result } from "../domain/types";
2
2
  import { SouthAfricaCapitalGainsService } from "./SouthAfricaCapitalGainsService";
3
- import { Input, Result, Rules, TaxBracket } from "./domain/types";
3
+ import { Input, Rules, TaxBracket } from "./domain/types";
4
4
 
5
5
  export class SouthAfricaCapitalGainsServiceImpl implements SouthAfricaCapitalGainsService {
6
6
  private _input: Input;
@@ -15,7 +15,15 @@ export class SouthAfricaCapitalGainsServiceImpl implements SouthAfricaCapitalGai
15
15
  const gain = this._input.capitalGain;
16
16
 
17
17
  if (gain <= 0) {
18
- return { taxableGain: 0, capitalGainsTax: 0, effectiveRate: 0, breakdowns: [] };
18
+ return {
19
+ taxableGain: 0,
20
+ capitalGainTax: 0,
21
+ socialContributions: 0,
22
+ netInvestmentIncomeTax: 0,
23
+ totalTax: 0,
24
+ effectiveRate: 0,
25
+ breakdowns: []
26
+ };
19
27
  }
20
28
 
21
29
  const netGain = Math.max(0, gain - this._rules.annualExclusion);
@@ -24,7 +32,10 @@ export class SouthAfricaCapitalGainsServiceImpl implements SouthAfricaCapitalGai
24
32
  if (taxableGain <= 0) {
25
33
  return {
26
34
  taxableGain: 0,
27
- capitalGainsTax: 0,
35
+ capitalGainTax: 0,
36
+ socialContributions: 0,
37
+ netInvestmentIncomeTax: 0,
38
+ totalTax: 0,
28
39
  effectiveRate: 0,
29
40
  breakdowns: [{
30
41
  from: '0',
@@ -40,7 +51,10 @@ export class SouthAfricaCapitalGainsServiceImpl implements SouthAfricaCapitalGai
40
51
 
41
52
  return {
42
53
  taxableGain,
43
- capitalGainsTax: tax,
54
+ capitalGainTax: tax,
55
+ socialContributions: 0,
56
+ netInvestmentIncomeTax: 0,
57
+ totalTax: tax,
44
58
  effectiveRate: gain > 0 ? (tax / gain) * 100 : 0,
45
59
  breakdowns,
46
60
  };