@equisoft/tax-us 0.0.1-snapshot.20250723132536

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 (82) hide show
  1. package/.eslintrc.json +42 -0
  2. package/.tool-versions +1 -0
  3. package/Makefile +28 -0
  4. package/README.md +113 -0
  5. package/RELEASE.md +29 -0
  6. package/babel.config.js +1 -0
  7. package/dist/index.d.ts +5 -0
  8. package/dist/index.js +21 -0
  9. package/dist/investments/index.d.ts +6 -0
  10. package/dist/investments/index.js +22 -0
  11. package/dist/investments/life-income-fund.d.ts +11 -0
  12. package/dist/investments/life-income-fund.js +291 -0
  13. package/dist/investments/non-registered-savings-plan.d.ts +3 -0
  14. package/dist/investments/non-registered-savings-plan.js +30 -0
  15. package/dist/investments/registered-education-savings-plan/beneficiary.d.ts +4 -0
  16. package/dist/investments/registered-education-savings-plan/beneficiary.js +16 -0
  17. package/dist/investments/registered-education-savings-plan/british-columbia-training-and-education-savings-grant.d.ts +10 -0
  18. package/dist/investments/registered-education-savings-plan/british-columbia-training-and-education-savings-grant.js +21 -0
  19. package/dist/investments/registered-education-savings-plan/canada-education-savings-grant.d.ts +2 -0
  20. package/dist/investments/registered-education-savings-plan/canada-education-savings-grant.js +23 -0
  21. package/dist/investments/registered-education-savings-plan/canada-learning-bond.d.ts +12 -0
  22. package/dist/investments/registered-education-savings-plan/canada-learning-bond.js +19 -0
  23. package/dist/investments/registered-education-savings-plan/income-level.d.ts +11 -0
  24. package/dist/investments/registered-education-savings-plan/income-level.js +32 -0
  25. package/dist/investments/registered-education-savings-plan/index.d.ts +7 -0
  26. package/dist/investments/registered-education-savings-plan/index.js +23 -0
  27. package/dist/investments/registered-education-savings-plan/quebec-education-savings-incentive.d.ts +2 -0
  28. package/dist/investments/registered-education-savings-plan/quebec-education-savings-incentive.js +17 -0
  29. package/dist/investments/registered-education-savings-plan/savings-grant.d.ts +25 -0
  30. package/dist/investments/registered-education-savings-plan/savings-grant.js +51 -0
  31. package/dist/investments/registered-education-savings-plan/tuition-fees.d.ts +6 -0
  32. package/dist/investments/registered-education-savings-plan/tuition-fees.js +33 -0
  33. package/dist/investments/registered-retirement-income-fund.d.ts +7 -0
  34. package/dist/investments/registered-retirement-income-fund.js +68 -0
  35. package/dist/investments/registered-retirement-savings-plan.d.ts +9 -0
  36. package/dist/investments/registered-retirement-savings-plan.js +20 -0
  37. package/dist/investments/tax-free-savings-account.d.ts +7 -0
  38. package/dist/investments/tax-free-savings-account.js +21 -0
  39. package/dist/misc/code-types.d.ts +11 -0
  40. package/dist/misc/code-types.js +19 -0
  41. package/dist/misc/consumer-price-index.d.ts +34 -0
  42. package/dist/misc/consumer-price-index.js +240 -0
  43. package/dist/misc/index.d.ts +5 -0
  44. package/dist/misc/index.js +21 -0
  45. package/dist/misc/ipf-stats.d.ts +18 -0
  46. package/dist/misc/ipf-stats.js +25 -0
  47. package/dist/misc/life-expectancy.d.ts +28 -0
  48. package/dist/misc/life-expectancy.js +58 -0
  49. package/dist/misc/ppp-increase-factor.d.ts +10 -0
  50. package/dist/misc/ppp-increase-factor.js +25 -0
  51. package/dist/pension/canada-pension-plan.d.ts +2 -0
  52. package/dist/pension/canada-pension-plan.js +176 -0
  53. package/dist/pension/index.d.ts +5 -0
  54. package/dist/pension/index.js +21 -0
  55. package/dist/pension/old-age-security.d.ts +21 -0
  56. package/dist/pension/old-age-security.js +70 -0
  57. package/dist/pension/public-pension-plan.d.ts +63 -0
  58. package/dist/pension/public-pension-plan.js +2 -0
  59. package/dist/pension/quebec-pension-plan.d.ts +2 -0
  60. package/dist/pension/quebec-pension-plan.js +176 -0
  61. package/dist/pension/supplemental-pension-plan.d.ts +5 -0
  62. package/dist/pension/supplemental-pension-plan.js +14 -0
  63. package/dist/taxes/dividend-credit.d.ts +8 -0
  64. package/dist/taxes/dividend-credit.js +45 -0
  65. package/dist/taxes/employment-insurance.d.ts +9 -0
  66. package/dist/taxes/employment-insurance.js +20 -0
  67. package/dist/taxes/income-tax.d.ts +39 -0
  68. package/dist/taxes/income-tax.js +593 -0
  69. package/dist/taxes/index.d.ts +4 -0
  70. package/dist/taxes/index.js +20 -0
  71. package/dist/taxes/quebec-parental-insurance-plan.d.ts +9 -0
  72. package/dist/taxes/quebec-parental-insurance-plan.js +17 -0
  73. package/dist/utils/collections.d.ts +1 -0
  74. package/dist/utils/collections.js +7 -0
  75. package/dist/utils/date.d.ts +3 -0
  76. package/dist/utils/date.js +18 -0
  77. package/dist/utils/index.d.ts +3 -0
  78. package/dist/utils/index.js +19 -0
  79. package/dist/utils/math.d.ts +2 -0
  80. package/dist/utils/math.js +16 -0
  81. package/package.json +68 -0
  82. package/tsconfig.json +21 -0
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ /*
3
+ Sources
4
+ https://www.canada.ca/en/revenue-agency/services/tax/individuals/topics/registered-education-savings-plans-resps/canada-education-savings-programs-cesp/canada-education-savings-grant-cesg.html
5
+
6
+ Last updated
7
+ 2025-02-07
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.CanadaEducationSavingsGrant = void 0;
11
+ const savings_grant_1 = require("./savings-grant");
12
+ const canadaEducationSavingsGrantConfig = {
13
+ MAX_GRANT: 7200,
14
+ MAX_BENEFICIARY_AGE: 17,
15
+ MAX_AMOUNT_YEARLY_FOR_GRANT: 2500,
16
+ YEARLY_GRANT_PERCENT: 0.2,
17
+ MAX_AMOUNT_FOR_SUPP_GRANT: 500,
18
+ SUPP_GRANT_PERCENT: {
19
+ LOW_INCOME: 0.2,
20
+ MEDIUM_INCOME: 0.1,
21
+ },
22
+ };
23
+ exports.CanadaEducationSavingsGrant = (0, savings_grant_1.initializeSavingsGrant)(canadaEducationSavingsGrantConfig);
@@ -0,0 +1,12 @@
1
+ export interface CanadaLearningBond {
2
+ OPENING_YEAR_CLB: number;
3
+ YEARLY_CLB: number;
4
+ MAX_BENEFICIARY_AGE: number;
5
+ getTotalForAYear(income: number, beneficiaryAge?: number, accountOpeningYear?: boolean): number;
6
+ }
7
+ export interface CanadaLearningBondData {
8
+ OPENING_YEAR_CLB: number;
9
+ YEARLY_CLB: number;
10
+ MAX_BENEFICIARY_AGE: number;
11
+ }
12
+ export declare const CanadaLearningBond: CanadaLearningBond;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CanadaLearningBond = void 0;
4
+ const income_level_1 = require("./income-level");
5
+ const canadaLearningBondData = {
6
+ OPENING_YEAR_CLB: 500,
7
+ YEARLY_CLB: 100,
8
+ MAX_BENEFICIARY_AGE: 15,
9
+ };
10
+ const getTotalForAYear = (income, beneficiaryAge = 0, accountOpeningYear = false) => {
11
+ let total = 0;
12
+ const { MAX_BENEFICIARY_AGE, OPENING_YEAR_CLB, YEARLY_CLB } = canadaLearningBondData;
13
+ const incomeLevel = income_level_1.IncomeLevel.getIncomeLevel(income);
14
+ if (incomeLevel === income_level_1.IncomeLevelType.LOW && beneficiaryAge <= MAX_BENEFICIARY_AGE) {
15
+ total = accountOpeningYear ? OPENING_YEAR_CLB : YEARLY_CLB;
16
+ }
17
+ return total;
18
+ };
19
+ exports.CanadaLearningBond = Object.assign(Object.assign({}, canadaLearningBondData), { getTotalForAYear });
@@ -0,0 +1,11 @@
1
+ export declare enum IncomeLevelType {
2
+ LOW = "LOW",
3
+ MEDIUM = "MEDIUM",
4
+ HIGH = "HIGH"
5
+ }
6
+ export interface IncomeLevel {
7
+ LOW_INCOME_THRESHOLD: number;
8
+ MEDIUM_INCOME_THRESHOLD: number;
9
+ getIncomeLevel(income: number): IncomeLevelType;
10
+ }
11
+ export declare const IncomeLevel: IncomeLevel;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ /*
3
+ Sources
4
+ https://www.canada.ca/fr/services/prestations/education/epargne-etudes/estimation-montants.html?utm_source=chatgpt.com#_faible-rev
5
+
6
+ Last updated
7
+ 2025-02-07
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.IncomeLevel = exports.IncomeLevelType = void 0;
11
+ const LOW_INCOME_THRESHOLD = 55867;
12
+ const MEDIUM_INCOME_THRESHOLD = 111735;
13
+ var IncomeLevelType;
14
+ (function (IncomeLevelType) {
15
+ IncomeLevelType["LOW"] = "LOW";
16
+ IncomeLevelType["MEDIUM"] = "MEDIUM";
17
+ IncomeLevelType["HIGH"] = "HIGH";
18
+ })(IncomeLevelType || (exports.IncomeLevelType = IncomeLevelType = {}));
19
+ const getIncomeLevel = (income) => {
20
+ if (income <= LOW_INCOME_THRESHOLD) {
21
+ return IncomeLevelType.LOW;
22
+ }
23
+ if (income <= MEDIUM_INCOME_THRESHOLD) {
24
+ return IncomeLevelType.MEDIUM;
25
+ }
26
+ return IncomeLevelType.HIGH;
27
+ };
28
+ exports.IncomeLevel = {
29
+ LOW_INCOME_THRESHOLD,
30
+ MEDIUM_INCOME_THRESHOLD,
31
+ getIncomeLevel,
32
+ };
@@ -0,0 +1,7 @@
1
+ export * from './canada-education-savings-grant';
2
+ export * from './canada-learning-bond';
3
+ export * from './quebec-education-savings-incentive';
4
+ export * from './british-columbia-training-and-education-savings-grant';
5
+ export * from './tuition-fees';
6
+ export * from './income-level';
7
+ export * from './beneficiary';
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./canada-education-savings-grant"), exports);
18
+ __exportStar(require("./canada-learning-bond"), exports);
19
+ __exportStar(require("./quebec-education-savings-incentive"), exports);
20
+ __exportStar(require("./british-columbia-training-and-education-savings-grant"), exports);
21
+ __exportStar(require("./tuition-fees"), exports);
22
+ __exportStar(require("./income-level"), exports);
23
+ __exportStar(require("./beneficiary"), exports);
@@ -0,0 +1,2 @@
1
+ import { SavingsGrant } from './savings-grant';
2
+ export declare const QuebecEducationSavingsIncentive: SavingsGrant;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.QuebecEducationSavingsIncentive = void 0;
4
+ const savings_grant_1 = require("./savings-grant");
5
+ const quebecEducationSavingsIncentiveConfig = {
6
+ MAX_GRANT: 3600,
7
+ MAX_BENEFICIARY_AGE: 17,
8
+ MAX_AMOUNT_YEARLY_FOR_GRANT: 2500,
9
+ YEARLY_GRANT_PERCENT: 0.1,
10
+ MAX_AMOUNT_FOR_SUPP_GRANT: 500,
11
+ SUPP_GRANT_PERCENT: {
12
+ LOW_INCOME: 0.1,
13
+ MEDIUM_INCOME: 0.05,
14
+ },
15
+ };
16
+ // eslint-disable-next-line max-len
17
+ exports.QuebecEducationSavingsIncentive = (0, savings_grant_1.initializeSavingsGrant)(quebecEducationSavingsIncentiveConfig);
@@ -0,0 +1,25 @@
1
+ import { IncomeLevelType } from './income-level';
2
+ export interface SuppGrantPercent {
3
+ LOW_INCOME: number;
4
+ MEDIUM_INCOME: number;
5
+ }
6
+ export interface SavingsGrant {
7
+ MAX_GRANT: number;
8
+ MAX_BENEFICIARY_AGE: number;
9
+ MAX_AMOUNT_YEARLY_FOR_GRANT: number;
10
+ YEARLY_GRANT_PERCENT: number;
11
+ MAX_AMOUNT_FOR_SUPP_GRANT: number;
12
+ SUPP_GRANT_PERCENT: SuppGrantPercent;
13
+ getBaseGrant(contribution: number): number;
14
+ getSuppGrant(contribution: number, incomeLevel: IncomeLevelType): number;
15
+ getTotalForAYear(income: number, contribution: number, totalGrantAlreadyGiven?: number, beneficiaryAge?: number): number;
16
+ }
17
+ export interface SavingsGrantConfig {
18
+ MAX_GRANT: number;
19
+ MAX_BENEFICIARY_AGE: number;
20
+ MAX_AMOUNT_YEARLY_FOR_GRANT: number;
21
+ YEARLY_GRANT_PERCENT: number;
22
+ MAX_AMOUNT_FOR_SUPP_GRANT: number;
23
+ SUPP_GRANT_PERCENT: SuppGrantPercent;
24
+ }
25
+ export declare function initializeSavingsGrant(SavingsGrantConfig: SavingsGrantConfig): SavingsGrant;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.initializeSavingsGrant = initializeSavingsGrant;
4
+ const income_level_1 = require("./income-level");
5
+ function initializeSavingsGrant(SavingsGrantConfig) {
6
+ const { MAX_GRANT, MAX_BENEFICIARY_AGE, MAX_AMOUNT_YEARLY_FOR_GRANT, YEARLY_GRANT_PERCENT, SUPP_GRANT_PERCENT, MAX_AMOUNT_FOR_SUPP_GRANT, } = SavingsGrantConfig;
7
+ const getBaseGrant = (contribution) => {
8
+ let totalGrantForAYear = 0;
9
+ if (contribution > MAX_AMOUNT_YEARLY_FOR_GRANT) {
10
+ totalGrantForAYear = YEARLY_GRANT_PERCENT * MAX_AMOUNT_YEARLY_FOR_GRANT;
11
+ }
12
+ else {
13
+ totalGrantForAYear = YEARLY_GRANT_PERCENT * contribution;
14
+ }
15
+ return totalGrantForAYear;
16
+ };
17
+ const getSuppGrant = (contribution, incomeLevel) => {
18
+ let suppGrant = 0;
19
+ const cappedContribution = Math.min(contribution, MAX_AMOUNT_FOR_SUPP_GRANT);
20
+ switch (incomeLevel) {
21
+ case income_level_1.IncomeLevelType.LOW:
22
+ suppGrant = SUPP_GRANT_PERCENT.LOW_INCOME * cappedContribution;
23
+ break;
24
+ case income_level_1.IncomeLevelType.MEDIUM:
25
+ suppGrant = SUPP_GRANT_PERCENT.MEDIUM_INCOME * cappedContribution;
26
+ break;
27
+ }
28
+ return suppGrant;
29
+ };
30
+ const getTotalForAYear = (income, contribution, totalGrantAlreadyGiven = 0, beneficiaryAge = 0) => {
31
+ if (totalGrantAlreadyGiven >= MAX_GRANT || beneficiaryAge > MAX_BENEFICIARY_AGE)
32
+ return 0;
33
+ // Grant
34
+ let totalGrantForAYear = getBaseGrant(contribution);
35
+ // Supp. grant
36
+ const incomeLevel = income_level_1.IncomeLevel.getIncomeLevel(income);
37
+ totalGrantForAYear += getSuppGrant(contribution, incomeLevel);
38
+ return totalGrantForAYear;
39
+ };
40
+ return {
41
+ MAX_AMOUNT_FOR_SUPP_GRANT,
42
+ MAX_AMOUNT_YEARLY_FOR_GRANT,
43
+ MAX_BENEFICIARY_AGE,
44
+ MAX_GRANT,
45
+ SUPP_GRANT_PERCENT,
46
+ YEARLY_GRANT_PERCENT,
47
+ getBaseGrant,
48
+ getSuppGrant,
49
+ getTotalForAYear,
50
+ };
51
+ }
@@ -0,0 +1,6 @@
1
+ import { ByProvince, ProvinceCode } from '../../misc';
2
+ export interface TuitionFees {
3
+ TuitionFeesData: ByProvince<number>;
4
+ getTuitionFeesByProvinceCode(provinceCode: ProvinceCode): number;
5
+ }
6
+ export declare const TuitionFees: TuitionFees;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ /*
3
+ Sources
4
+ https://www150.statcan.gc.ca/t1/tbl1/en/tv.action?pid=3710004501&cubeTimeFrame.startYear=2024+%2F+2025&cubeTimeFrame.endYear=2024+%2F+2025&referencePeriods=20240101%2C20240101
5
+
6
+ Revised data
7
+ 2024-09-04
8
+
9
+ Last updated
10
+ 2025-02-07
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.TuitionFees = void 0;
14
+ const TuitionFeesData = {
15
+ AB: 7734,
16
+ BC: 6607,
17
+ MB: 5534,
18
+ NB: 9470,
19
+ NL: 3727,
20
+ NS: 9762,
21
+ PE: 7728,
22
+ ON: 8514,
23
+ QC: 3594,
24
+ SK: 9609,
25
+ NT: 6000, // valeur hypothétique
26
+ NU: 6500, // valeur hypothétique
27
+ YT: 4350,
28
+ };
29
+ const getTuitionFeesByProvinceCode = (provinceCode) => TuitionFeesData[provinceCode];
30
+ exports.TuitionFees = {
31
+ getTuitionFeesByProvinceCode,
32
+ TuitionFeesData,
33
+ };
@@ -0,0 +1,7 @@
1
+ export interface RegisteredRetirementIncomeFund {
2
+ MIN_WITHDRAWAL_PCT: {
3
+ [K: number]: number;
4
+ };
5
+ }
6
+ export declare const RRIF: RegisteredRetirementIncomeFund;
7
+ export declare function getMinimumWithdrawalPercentage(beginningOfYearAge: number): number;
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ /*
3
+ Sources
4
+ https://www.canada.ca/en/revenue-agency/services/tax/businesses/topics/completing-slips-summaries/t4rsp-t4rif-information-returns/payments/chart-prescribed-factors.html
5
+
6
+ Conversion
7
+ None
8
+
9
+ Revised
10
+ 2024-01-18
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.RRIF = void 0;
14
+ exports.getMinimumWithdrawalPercentage = getMinimumWithdrawalPercentage;
15
+ exports.RRIF = {
16
+ MIN_WITHDRAWAL_PCT: {
17
+ 50: 0.0250,
18
+ 51: 0.0256,
19
+ 52: 0.0263,
20
+ 53: 0.0270,
21
+ 54: 0.0278,
22
+ 55: 0.0286,
23
+ 56: 0.0294,
24
+ 57: 0.0303,
25
+ 58: 0.0313,
26
+ 59: 0.0323,
27
+ 60: 0.0333,
28
+ 61: 0.0345,
29
+ 62: 0.0357,
30
+ 63: 0.0370,
31
+ 64: 0.0385,
32
+ 65: 0.0400,
33
+ 66: 0.0417,
34
+ 67: 0.0435,
35
+ 68: 0.0455,
36
+ 69: 0.0476,
37
+ 70: 0.0500,
38
+ 71: 0.0528,
39
+ 72: 0.0540,
40
+ 73: 0.0553,
41
+ 74: 0.0567,
42
+ 75: 0.0582,
43
+ 76: 0.0598,
44
+ 77: 0.0617,
45
+ 78: 0.0636,
46
+ 79: 0.0658,
47
+ 80: 0.0682,
48
+ 81: 0.0708,
49
+ 82: 0.0738,
50
+ 83: 0.0771,
51
+ 84: 0.0808,
52
+ 85: 0.0851,
53
+ 86: 0.0899,
54
+ 87: 0.0955,
55
+ 88: 0.1021,
56
+ 89: 0.1099,
57
+ 90: 0.1192,
58
+ 91: 0.1306,
59
+ 92: 0.1449,
60
+ 93: 0.1634,
61
+ 94: 0.1879,
62
+ 95: 0.20,
63
+ },
64
+ };
65
+ function getMinimumWithdrawalPercentage(beginningOfYearAge) {
66
+ const pct = beginningOfYearAge >= 71 ? exports.RRIF.MIN_WITHDRAWAL_PCT[beginningOfYearAge] : 1 / (90 - beginningOfYearAge);
67
+ return parseFloat(pct.toFixed(4));
68
+ }
@@ -0,0 +1,9 @@
1
+ export interface ConversionAge {
2
+ MIN: number;
3
+ MAX: number;
4
+ }
5
+ export interface RegisteredRetirementSavingsPlan {
6
+ CONVERSION_AGE: ConversionAge;
7
+ MAX_CONTRIBUTION: number;
8
+ }
9
+ export declare const RRSP: RegisteredRetirementSavingsPlan;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ /*
3
+ Sources
4
+ https://www.canada.ca/en/revenue-agency/services/tax/registered-plans-administrators/pspa/mp-rrsp-dpsp-tfsa-limits-ympe.html
5
+
6
+ Note
7
+ Must use RRSP dollar limit and not DB limit
8
+
9
+ Revised
10
+ 2024-12-23
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.RRSP = void 0;
14
+ exports.RRSP = {
15
+ CONVERSION_AGE: {
16
+ MIN: 0,
17
+ MAX: 71,
18
+ },
19
+ MAX_CONTRIBUTION: 32490,
20
+ };
@@ -0,0 +1,7 @@
1
+ export interface TaxFreeSavingsAccount {
2
+ MAX_CONTRIBUTION: number;
3
+ UNROUNDED_MAX_CONTRIBUTION: number;
4
+ ROUNDING_FACTOR: number;
5
+ UPDATE_YEAR: number;
6
+ }
7
+ export declare const TFSA: TaxFreeSavingsAccount;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ /*
3
+ Sources
4
+ https://www.canada.ca/en/revenue-agency/services/tax/registered-plans-administrators/pspa/mp-rrsp-dpsp-tfsa-limits-ympe.html
5
+ https://www.taxtips.ca/tfsa/tfsa-contribution-rules-and-limits.htm
6
+
7
+ Revised
8
+ 2024-12-23
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.TFSA = void 0;
12
+ exports.TFSA = {
13
+ MAX_CONTRIBUTION: 7000,
14
+ /**
15
+ * Latest unrounded contribution change that changed rounded factor bracket
16
+ * (6751 -> 7000, but 2025 will be ~6893 -> 7000)
17
+ */
18
+ UNROUNDED_MAX_CONTRIBUTION: 6893,
19
+ ROUNDING_FACTOR: 500,
20
+ UPDATE_YEAR: 2024,
21
+ };
@@ -0,0 +1,11 @@
1
+ export type ProvinceCode = 'AB' | 'BC' | 'MB' | 'NB' | 'NL' | 'NS' | 'PE' | 'ON' | 'QC' | 'SK' | 'NT' | 'NU' | 'YT';
2
+ export type FederalCode = 'CA';
3
+ export type FederalName = 'CANADA';
4
+ export type ProvinceName = 'ALBERTA' | 'BRITISH_COLUMBIA' | 'MANITOBA' | 'NEW_BRUNSWICK' | 'NEWFOUNDLAND' | 'NOVA_SCOTIA' | 'PRINCE_EDWARD_ISLAND' | 'ONTARIO' | 'QUEBEC' | 'SASKATCHEWAN' | 'NORTHWEST_TERRITORIES' | 'NUNAVUT' | 'YUKON';
5
+ export declare const PROVINCIAL_CODES: {
6
+ [key in ProvinceName]: ProvinceCode;
7
+ };
8
+ export declare const FEDERAL_CODE: FederalCode;
9
+ export type ByProvince<T> = {
10
+ [key in ProvinceCode]: T;
11
+ };
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FEDERAL_CODE = exports.PROVINCIAL_CODES = void 0;
4
+ exports.PROVINCIAL_CODES = {
5
+ ALBERTA: 'AB',
6
+ BRITISH_COLUMBIA: 'BC',
7
+ MANITOBA: 'MB',
8
+ NEW_BRUNSWICK: 'NB',
9
+ NEWFOUNDLAND: 'NL',
10
+ NOVA_SCOTIA: 'NS',
11
+ PRINCE_EDWARD_ISLAND: 'PE',
12
+ ONTARIO: 'ON',
13
+ QUEBEC: 'QC',
14
+ SASKATCHEWAN: 'SK',
15
+ NORTHWEST_TERRITORIES: 'NT',
16
+ NUNAVUT: 'NU',
17
+ YUKON: 'YT',
18
+ };
19
+ exports.FEDERAL_CODE = 'CA';
@@ -0,0 +1,34 @@
1
+ interface MonthlyConsumerPriceIndex {
2
+ JAN: number;
3
+ FEB: number;
4
+ MAR: number;
5
+ APR: number;
6
+ MAY: number;
7
+ JUN: number;
8
+ JUL: number;
9
+ AUG: number;
10
+ SEP: number;
11
+ OCT: number;
12
+ NOV: number;
13
+ DEC: number;
14
+ }
15
+ export interface ConsumerPriceIndex {
16
+ 2009: MonthlyConsumerPriceIndex;
17
+ 2010: MonthlyConsumerPriceIndex;
18
+ 2011: MonthlyConsumerPriceIndex;
19
+ 2012: MonthlyConsumerPriceIndex;
20
+ 2013: MonthlyConsumerPriceIndex;
21
+ 2014: MonthlyConsumerPriceIndex;
22
+ 2015: MonthlyConsumerPriceIndex;
23
+ 2016: MonthlyConsumerPriceIndex;
24
+ 2017: MonthlyConsumerPriceIndex;
25
+ 2018: MonthlyConsumerPriceIndex;
26
+ 2019: MonthlyConsumerPriceIndex;
27
+ 2020: MonthlyConsumerPriceIndex;
28
+ 2021: MonthlyConsumerPriceIndex;
29
+ 2022: MonthlyConsumerPriceIndex;
30
+ 2023: MonthlyConsumerPriceIndex;
31
+ 2024: MonthlyConsumerPriceIndex;
32
+ }
33
+ export declare const CONSUMER_PRICE_INDEX: ConsumerPriceIndex;
34
+ export {};