@classytic/ca-tax 0.0.15 → 0.0.17

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.
package/dist/index3.d.mts CHANGED
@@ -1687,6 +1687,86 @@ interface LimitedPartnershipLossesResult {
1687
1687
  }
1688
1688
  declare function computeLimitedPartnershipLosses(rows: readonly LimitedPartnershipLossRow[]): LimitedPartnershipLossesResult;
1689
1689
  //#endregion
1690
+ //#region src/t2/at1/schedules/schedule21-rife.d.ts
1691
+ /**
1692
+ * AT1 Schedule 21, page 5 — Continuity of Restricted Interest and Financing
1693
+ * Expenses (RIFE), lines 200-250 and 310-350.
1694
+ *
1695
+ * `schedule21-year-of-origin.ts`'s own doc comment documents that this
1696
+ * section is not part of the NetFile transmission schema (no `021200`
1697
+ * through `021350` field exists anywhere in the spec) — that is still true,
1698
+ * and this module does not emit anything into `schedule21Values`. What
1699
+ * changed: line 240 ("RIFE deducted for the tax year") is printed with its
1700
+ * own instruction — "Enter amount on line 130 of the Schedule 12" — and AT1
1701
+ * Schedule 12 line 130 ("Restricted interest and financing expenses") IS a
1702
+ * real filed line (`schedule12.ts`'s own note: "If Schedule 21 exists,
1703
+ * Alberta = 021240; otherwise Alberta = federal"). So this schedule's own
1704
+ * detail stays paper/UI-only, while this module's `deducted` output is a
1705
+ * genuine input to Schedule 12's reconciliation.
1706
+ *
1707
+ * Two blocks, read top to bottom exactly as printed:
1708
+ *
1709
+ * Block 1 — the RIFE balance itself:
1710
+ * 250 (closing) = 200 (opening) + 210 (wind-up transfer)
1711
+ * − 220 (acquisition-of-control adjustment)
1712
+ * + 230 (current-year RIFE) − 240 (deducted)
1713
+ *
1714
+ * Block 2 — the cap line 240 must not exceed:
1715
+ * 310 = 200 + 210 − 220
1716
+ * 340 = 320 (excess capacity) + 330 (received capacity)
1717
+ * 350 = the LESSER of 310 and 340 — this is line 240's ceiling
1718
+ *
1719
+ * Lines 230/320/330 are themselves sourced from other forms this engine does
1720
+ * not yet compute — 230 from T2 Schedule 4 line 710 (Schedule 4's own RIFE
1721
+ * pool is input-only in this engine — see `schedule4.ts`'s Part 8 doc
1722
+ * comment), 320/330 from T2 Schedule 130 lines 129/130 (the federal EIFEL
1723
+ * limitation module, `eifel-limitation.ts`, explicitly does not compute
1724
+ * Parts 2G/2H/2I — see that module's own doc comment). All three stay plain
1725
+ * preparer entries here until that federal work lands; once it does, they
1726
+ * become carried-in rather than typed.
1727
+ *
1728
+ * Whole dollars, pure.
1729
+ */
1730
+ interface RifeContinuityInput {
1731
+ /** 200 — RIFE at the end of the previous tax year. */
1732
+ openingBalance?: number;
1733
+ /** 210 — transferred on an amalgamation or wind-up of a subsidiary. */
1734
+ transferredOnWindUp?: number;
1735
+ /** 220 — deducted: adjustment for an acquisition of control. */
1736
+ acquisitionOfControlAdjustment?: number;
1737
+ /** 230 — current-year RIFE under ITA subsection 111(8) (T2 Schedule 4 line 710). */
1738
+ currentYearRife?: number;
1739
+ /** 320 — corporation's excess capacity for the year (T2 Schedule 130 line 129). */
1740
+ excessCapacity?: number;
1741
+ /** 330 — total received capacity for the year (T2 Schedule 130 line 130). */
1742
+ receivedCapacity?: number;
1743
+ /**
1744
+ * 240 — RIFE deducted for the tax year, discretionary. Must not exceed 350;
1745
+ * omit to claim the maximum available (350) automatically.
1746
+ */
1747
+ deductedClaim?: number;
1748
+ }
1749
+ interface RifeContinuityResult {
1750
+ openingBalance: number;
1751
+ transferredOnWindUp: number;
1752
+ acquisitionOfControlAdjustment: number;
1753
+ currentYearRife: number;
1754
+ /** 310 — RIFE from previous tax years: 200 + 210 − 220. */
1755
+ rifeFromPreviousYears: number;
1756
+ excessCapacity: number;
1757
+ receivedCapacity: number;
1758
+ /** 340 — 320 + 330. */
1759
+ totalCapacity: number;
1760
+ /** 350 — the lesser of 310 and 340; line 240's ceiling. */
1761
+ maxDeductible: number;
1762
+ /** 240 — the lesser of the requested claim and 350. */
1763
+ deducted: number;
1764
+ /** 250 — 200 + 210 − 220 + 230 − 240. */
1765
+ closingBalance: number;
1766
+ issues: string[];
1767
+ }
1768
+ declare function computeRifeContinuity(input?: RifeContinuityInput): RifeContinuityResult;
1769
+ //#endregion
1690
1770
  //#region src/t2/at1/schedules/schedule21-year-of-origin.d.ts
1691
1771
  /**
1692
1772
  * AT1 Schedule 21 — Analysis of Losses by Year of Origin.
@@ -1717,11 +1797,12 @@ declare function computeLimitedPartnershipLosses(rows: readonly LimitedPartnersh
1717
1797
  *
1718
1798
  * `Continuity of Restricted Interest and Financing Expenses` (RIFE, page 5
1719
1799
  * of the same PDF, lines 200-250/310-350) is the live form's NINTH section
1720
- * and is deliberately NOT modelled here: an exhaustive search of the entire
1721
- * NetFile transmission spec (§3.2.3.1 through the schedule index) turns up
1722
- * no `021200`-`021350` field anywhere it is not part of the electronic
1723
- * filing schema this engine targets, only the paper form. Flagged, not
1724
- * silently dropped.
1800
+ * and is deliberately NOT modelled HERE it lives in its own
1801
+ * `schedule21-rife.ts` instead, same as limited partnership losses got its
1802
+ * own file. That module's doc comment covers why RIFE's own lines still
1803
+ * never appear on the wire (an exhaustive search of the entire NetFile
1804
+ * transmission spec turns up no `021200`-`021350` field anywhere) even
1805
+ * though its final figure now feeds a real filed line elsewhere.
1725
1806
  *
1726
1807
  * Whole dollars, pure.
1727
1808
  */
@@ -2336,11 +2417,6 @@ interface At1ScheduleData {
2336
2417
  scheduleId: string;
2337
2418
  values: At1ScheduleValue[];
2338
2419
  }
2339
- /**
2340
- * Schedules the engine computes but cannot yet file, because their line numbers
2341
- * have not been transcribed from the specification. Named so the difference
2342
- * between "no data" and "not implemented" is visible rather than silent.
2343
- */
2344
2420
  /**
2345
2421
  * Schedules this module can put into a filing payload. Exported so callers and
2346
2422
  * tests share one source of truth — a hard-coded copy in a test drifts the moment
@@ -2577,6 +2653,18 @@ interface Schedule12FilingInput {
2577
2653
  federal: number;
2578
2654
  };
2579
2655
  };
2656
+ /**
2657
+ * 012130 / 012131 — restricted interest and financing expenses (the EIFEL
2658
+ * denial, ITA s.18.2). Same always-both-sides mandatory disclosure as
2659
+ * `lossDeductions`/`donations` above, per the spec: "if Schedule 21
2660
+ * exists, Alberta = 021240; otherwise Alberta = federal." Federal stays 0
2661
+ * until the federal EIFEL limitation engine computes the s.111(1)(a.1)
2662
+ * deduction (T2 line 336) — not yet wired into `computeFederalT2`.
2663
+ */
2664
+ restrictedInterestAndFinancing?: {
2665
+ alberta: number;
2666
+ federal: number;
2667
+ };
2580
2668
  }
2581
2669
  /**
2582
2670
  * The Schedule 21 → Schedule 12 carry-forwards, as the form states them beside
@@ -2654,12 +2742,21 @@ interface Schedule21FilingInput {
2654
2742
  * schedule object — the payload has one `021` block, not two.
2655
2743
  */
2656
2744
  limitedPartnershipLosses?: LimitedPartnershipLossesResult;
2745
+ /**
2746
+ * The NINTH section (page 5) — Continuity of Restricted Interest and
2747
+ * Financing Expenses. NOT part of the NetFile schema (see
2748
+ * `schedule21-rife.ts`'s own doc comment) — `schedule21Values` below does
2749
+ * not emit anything for it. Kept here only so `scheduleTwelve`'s Alberta
2750
+ * line 130 reconciliation (`AT1SCH12` line 130, "Restricted interest and
2751
+ * financing expenses") can read `.deducted`.
2752
+ */
2753
+ rife?: RifeContinuityResult;
2657
2754
  /** The SEVENTH section — analysis of non-capital losses by year of origin (151-169), 21 occurrences. */
2658
2755
  nonCapitalByYearOfOrigin?: NonCapitalLossByYearOfOriginResult;
2659
2756
  /** The EIGHTH section — farm/restricted-farm/LPP by year of origin (181-187), 21 occurrences. */
2660
2757
  otherLossesByYearOfOrigin?: OtherLossByYearOfOriginResult;
2661
2758
  }
2662
- declare function schedule21Values(input: Schedule21FilingInput): At1ScheduleData;
2759
+ declare function schedule21Values$1(input: Schedule21FilingInput): At1ScheduleData;
2663
2760
  /**
2664
2761
  * Field ids read off the live form:
2665
2762
  *
@@ -2702,7 +2799,7 @@ interface Schedule1FilingInput {
2702
2799
  /** Area A — 041/043/045, one occurrence per associated corp, claimant first. */
2703
2800
  agreementMembers?: Schedule1AgreementMember[];
2704
2801
  }
2705
- declare function schedule1Values(input: Schedule1FilingInput): At1ScheduleData;
2802
+ declare function schedule1Values$1(input: Schedule1FilingInput): At1ScheduleData;
2706
2803
  /**
2707
2804
  * Area A, the general allocation formula (ITA Reg 402). Four inputs, all taken
2708
2805
  * from the federal Schedule 5:
@@ -2721,7 +2818,7 @@ interface Schedule2FilingInput {
2721
2818
  albertaRevenue?: number;
2722
2819
  totalRevenue?: number;
2723
2820
  }
2724
- declare function schedule2Values(input: Schedule2FilingInput): At1ScheduleData;
2821
+ declare function schedule2Values$1(input: Schedule2FilingInput): At1ScheduleData;
2725
2822
  /**
2726
2823
  * Four loss types are modelled, each with its own column on the form:
2727
2824
  *
@@ -3936,7 +4033,7 @@ interface At1ScheduleDataLike$2 {
3936
4033
  * "Schedule 7, line 061" and gives its formula in full, so it is filed here
3937
4034
  * under that citation rather than omitted for lack of a home row.
3938
4035
  */
3939
- declare function schedule7Values(result: AlbertaSchedule7Result): At1ScheduleDataLike$2;
4036
+ declare function schedule7Values$1(result: AlbertaSchedule7Result): At1ScheduleDataLike$2;
3940
4037
  declare function computeAlbertaSchedule7(input: AlbertaSchedule7Input): AlbertaSchedule7Result;
3941
4038
  //#endregion
3942
4039
  //#region src/t2/at1/schedules/schedule8-political-contributions.d.ts
@@ -4067,7 +4164,7 @@ declare function computeSchedule8(input: Schedule8Input): Schedule8Result;
4067
4164
  * Does NOT emit jacket line 000074 (the actual tax credit) — that is a
4068
4165
  * jacket line, not a Schedule 8 line. Use `result.credit` for that.
4069
4166
  */
4070
- declare function schedule8Values(result: Schedule8Result): At1ScheduleData;
4167
+ declare function schedule8Values$1(result: Schedule8Result): At1ScheduleData;
4071
4168
  //#endregion
4072
4169
  //#region src/t2/at1/schedules/schedule9-sred-tax-credit.d.ts
4073
4170
  /**
@@ -5891,6 +5988,23 @@ declare function toRsiHeader(data: At1FilingData): {
5891
5988
  legalName: string;
5892
5989
  };
5893
5990
  //#endregion
5991
+ //#region src/t2/at1/filing/at1-transmitter-validation.d.ts
5992
+ /** One rule TRA would have failed, and the code it would have failed with. */
5993
+ interface At1TransmitterDefect {
5994
+ /** The `At1TransmitterInfo` path — `contact.phone`, `address.postalCode`. */
5995
+ field: string;
5996
+ /** TRA's own error code for this rule. */
5997
+ traCode: string;
5998
+ message: string;
5999
+ }
6000
+ declare function validateAt1Transmitter(info: At1TransmitterInfo): At1TransmitterDefect[];
6001
+ declare class At1TransmitterInvalidError extends Error {
6002
+ readonly defects: At1TransmitterDefect[];
6003
+ constructor(defects: At1TransmitterDefect[]);
6004
+ }
6005
+ /** Throw unless every filer-detail rule TRA applies is satisfied. */
6006
+ declare function assertAt1TransmitterValid(info: At1TransmitterInfo): void;
6007
+ //#endregion
5894
6008
  //#region src/t2/at1/schedules/schedule12-reconciliation.d.ts
5895
6009
  /**
5896
6010
  * AT1 Schedule 12 — Alberta Income/Loss Reconciliation.
@@ -6059,6 +6173,192 @@ interface LossScheduleResult {
6059
6173
  /** One loss pool end to end: Schedule 10 (carry-back) → Schedule 21 (continuity). */
6060
6174
  declare function computeLossSchedule(input: LossScheduleInput): LossScheduleResult;
6061
6175
  //#endregion
6176
+ //#region src/t2/filing/t2-schedule-line-items.d.ts
6177
+ /**
6178
+ * Federal T2 — the per-schedule, per-line breakdown of a computed return.
6179
+ *
6180
+ * Alberta has had this since the AT1 filing path was built
6181
+ * (`at1-schedule-line-items.ts`): every schedule's result turned into a flat
6182
+ * list of `{lineItemId, value}` pairs, persisted with the computed return, and
6183
+ * read back by the paper Form Views so a preparer sees the actual figure
6184
+ * against the actual line. Federal had nothing equivalent. Its computed return
6185
+ * carried only summary fields under symbolic names — `netIncomeForTax`,
6186
+ * `ccaClaimed` — which no form can be keyed by, so every federal paper view
6187
+ * rendered "not available" against every computed line of every schedule.
6188
+ *
6189
+ * ── The rule this file follows, and why it is strict ────────────────────────
6190
+ *
6191
+ * A value is emitted ONLY where the line it belongs on is recorded in code:
6192
+ * carried in the data (Schedule 1's own `Schedule1Line.line`), exported as a
6193
+ * named constant (`SCHEDULE_8_CCA_LINE`), or stated in the result type's own
6194
+ * doc comment. Nothing here is a line number typed from memory or inferred from
6195
+ * a caption that looks close.
6196
+ *
6197
+ * The reason is the failure this repository keeps hitting: a figure filed under
6198
+ * the wrong line is not a missing figure, it is a WRONG return, and it looks
6199
+ * completely correct on screen. Schedule 4's jacket references claimed lines 150
6200
+ * and 250 where the form prints 130 and 225; Schedule 33's own result type said
6201
+ * line 690 where the form has 790. Both were plausible, both were wrong, and
6202
+ * neither was caught by a type.
6203
+ *
6204
+ * So a schedule whose result has no recorded line mapping produces NO entry
6205
+ * rather than a guessed one, and the paper view keeps saying "not available"
6206
+ * for it. That is the honest state, and it is visibly incomplete, which is what
6207
+ * makes it safe to extend one verified line at a time.
6208
+ *
6209
+ * ── Identifier shape ────────────────────────────────────────────────────────
6210
+ *
6211
+ * Six characters: the three-digit CRA line, then a three-digit occurrence.
6212
+ * Alberta uses nine (`SSSFFFOOO`) because a TRA line item id names its schedule
6213
+ * too; a federal line number is already unique across the whole return, so the
6214
+ * schedule is carried once on the envelope instead of repeated on every row.
6215
+ * The trailing occurrence exists for the grid forms, where one line number
6216
+ * repeats down a column — Schedule 8 has one row per capital cost allowance
6217
+ * class, all of them line 217.
6218
+ */
6219
+ /** One filed value: the line item id and its figure. */
6220
+ interface T2ScheduleValue {
6221
+ lineItemId: string;
6222
+ value: string | number;
6223
+ }
6224
+ /** One schedule's filed values. `scheduleId` is the form id, e.g. `T2SCH1`. */
6225
+ interface T2ScheduleData {
6226
+ scheduleId: string;
6227
+ values: T2ScheduleValue[];
6228
+ }
6229
+ /** `LLLOOO` — three-digit CRA line, three-digit occurrence. Occurrence is 1-based. */
6230
+ declare function t2LineItemId(line: string, occurrence?: number): string;
6231
+ /**
6232
+ * Split a federal line item id back into its line and occurrence.
6233
+ *
6234
+ * Returns `undefined` for anything that is not six digits, so a caller handed
6235
+ * an Alberta nine-digit id (or a malformed one) drops it rather than reading
6236
+ * the first three characters as a line number and displaying a figure against
6237
+ * a line it does not belong to.
6238
+ */
6239
+ declare function parseT2LineItemId(lineItemId: string): {
6240
+ line: string;
6241
+ occurrence: number;
6242
+ } | undefined;
6243
+ /**
6244
+ * Schedule 1 — the only federal schedule that needs no line table here.
6245
+ *
6246
+ * `Schedule1Line` carries its own `line`, and has since the schedule was built,
6247
+ * precisely because "a reconciling item recorded only as a description with an
6248
+ * amount has nowhere to go on the wire". Reading it back out is the whole job.
6249
+ *
6250
+ * A line may legitimately repeat: the form provides open rows (135, 295, 395,
6251
+ * 495) for items it does not name, and a return can carry several. Those get
6252
+ * successive occurrences rather than being summed, so the paper view can show
6253
+ * each on its own row. A line with no number is skipped — `assertSchedule1Fileable`
6254
+ * is what refuses the return over it, not this.
6255
+ */
6256
+ declare function schedule1Values(r: {
6257
+ additions: readonly {
6258
+ line?: string;
6259
+ amount: number;
6260
+ }[];
6261
+ deductions: readonly {
6262
+ line?: string;
6263
+ amount: number;
6264
+ }[];
6265
+ totalAdditions: number;
6266
+ totalDeductions: number;
6267
+ }): T2ScheduleData;
6268
+ /** Schedule 2 — the donation claim. Only line 210 is a named constant. */
6269
+ declare function schedule2Values(r: {
6270
+ donationsClaimed: number;
6271
+ }): T2ScheduleData;
6272
+ /**
6273
+ * Schedule 7 — the adjusted aggregate investment income that grinds the
6274
+ * business limit. Line 745 is exported by the form module; the rest of Part 2's
6275
+ * working lines are not recorded anywhere, so they are not emitted.
6276
+ */
6277
+ declare function schedule7Values(r: {
6278
+ adjustedAggregateInvestmentIncome: number;
6279
+ }): T2ScheduleData;
6280
+ /**
6281
+ * Schedule 8 — capital cost allowance, one occurrence per class.
6282
+ *
6283
+ * Only the three lines the form module exports are emitted: recapture (213),
6284
+ * terminal loss (215) and the claim (217). The grid's other twenty columns are
6285
+ * either intermediate arithmetic the form shows without numbering, or columns
6286
+ * whose number this package has not recorded — see `SCHEDULE_8_COLUMNS`.
6287
+ */
6288
+ declare function schedule8Values(r: {
6289
+ classes: readonly {
6290
+ recapture: number;
6291
+ terminalLoss: number;
6292
+ ccaClaimed: number;
6293
+ }[];
6294
+ }): T2ScheduleData;
6295
+ /**
6296
+ * Schedule 21 — the two foreign tax credits.
6297
+ *
6298
+ * These land on different jacket lines (632 non-business, 636 business) and the
6299
+ * form module's own doc comment warns that swapping them "is not cosmetic".
6300
+ * Both come from named constants for exactly that reason.
6301
+ */
6302
+ declare function schedule21Values(r: {
6303
+ nonBusinessFtc: number;
6304
+ businessFtc: number;
6305
+ }): T2ScheduleData;
6306
+ /**
6307
+ * Schedule 33 — taxable capital.
6308
+ *
6309
+ * The four figures whose lines the result type states: capital (190), the
6310
+ * investment allowance (490), taxable capital (500) and taxable capital
6311
+ * employed in Canada (790, from the form module's constant — the result type's
6312
+ * comment used to say 690, which is not a line of this form).
6313
+ */
6314
+ declare function schedule33Values(r: {
6315
+ capital: number;
6316
+ investmentAllowance: number;
6317
+ taxableCapital: number;
6318
+ taxableCapitalEmployedInCanada: number;
6319
+ }): T2ScheduleData;
6320
+ /** Schedule 53 — the closing general rate income pool. */
6321
+ declare function schedule53Values(r: {
6322
+ closingGrip: number;
6323
+ }): T2ScheduleData;
6324
+ /**
6325
+ * Schedule 55 — Part III.1 tax.
6326
+ *
6327
+ * The result type states "20% of amount B (s.185.1(1)(a)) — line 190 / line
6328
+ * 290". Two lines for one figure because the form splits by corporation type:
6329
+ * Part 1 (line 190) for CCPCs and deposit insurance corporations, Part 2 (line
6330
+ * 290) for everyone else. Nothing in the result says which part applied, so the
6331
+ * base tax is emitted against BOTH and the paper view shows it under whichever
6332
+ * part the reader is looking at, rather than this file picking one and being
6333
+ * wrong for half of all filers.
6334
+ */
6335
+ declare function schedule55Values(r: {
6336
+ baseTax: number;
6337
+ }): T2ScheduleData;
6338
+ /** The subset of a federal result this file reads. Structural, so it cannot cycle. */
6339
+ interface FederalResultForPayloads {
6340
+ schedule1: Parameters<typeof schedule1Values>[0];
6341
+ netIncomeForTax: number;
6342
+ taxableIncome: number;
6343
+ totalFederalTax: number;
6344
+ donations?: Parameters<typeof schedule2Values>[0];
6345
+ adjustedAggregateInvestmentIncomeSchedule?: Parameters<typeof schedule7Values>[0];
6346
+ cca?: Parameters<typeof schedule8Values>[0];
6347
+ foreignTaxCredit?: Parameters<typeof schedule21Values>[0];
6348
+ taxableCapitalSchedule?: Parameters<typeof schedule33Values>[0];
6349
+ grip?: Parameters<typeof schedule53Values>[0];
6350
+ partIII1?: Parameters<typeof schedule55Values>[0];
6351
+ }
6352
+ /**
6353
+ * Every schedule's filed line items for one computed federal return.
6354
+ *
6355
+ * A schedule that was not computed is ABSENT, not present and empty — the same
6356
+ * rule Alberta's assembler follows. An empty schedule on a return says "this
6357
+ * schedule was completed and everything on it is nil", which is a different
6358
+ * statement from "this schedule does not apply", and only one of them is true.
6359
+ */
6360
+ declare function federalSchedulePayloads(r: FederalResultForPayloads): T2ScheduleData[];
6361
+ //#endregion
6062
6362
  //#region src/t2/rates/corporate-rates.d.ts
6063
6363
  /** The full federal rate/threshold table for one tax year. */
6064
6364
  interface CorpTaxRates {
@@ -6384,6 +6684,347 @@ declare function dayWeightedRate(periodStart: Date | string | number, periodEnd:
6384
6684
  */
6385
6685
  declare function blendProvinceRateTable(baseTable: ProvinceRateTable, changes: ProvincialRateChanges, periodStart: Date | string | number, periodEnd: Date | string | number): ProvinceRateTable;
6386
6686
  //#endregion
6687
+ //#region src/t2/schedules/eifel-adjusted-taxable-income.d.ts
6688
+ /**
6689
+ * ITA subsection 18.2(1) — **adjusted taxable income**, the base the EIFEL
6690
+ * ceiling is computed on.
6691
+ *
6692
+ * `eifel-limitation.ts` took this as a required input because deriving it
6693
+ * partially would produce a plausible figure from an incomplete definition. This
6694
+ * derives it, and is explicit about the components it does and does not cover.
6695
+ *
6696
+ * ── What it is ──────────────────────────────────────────────────────────────
6697
+ *
6698
+ * An EBITDA-like measure, built from taxable income by adding back the things the
6699
+ * regime is measuring against and removing the things that would double-count.
6700
+ *
6701
+ * ATI = A + B − C
6702
+ *
6703
+ * A = D − E the income base
6704
+ * B the ADD-BACKS
6705
+ * C the REDUCTIONS
6706
+ *
6707
+ * **The add-backs include the interest and financing expenses themselves.** That
6708
+ * is the point of the measure and the thing to hold on to: the ceiling is a
6709
+ * percentage of income computed *before* the very expenses being limited, so a
6710
+ * corporation cannot shrink its own ceiling by borrowing more.
6711
+ *
6712
+ * ── A — the income base (D − E) ─────────────────────────────────────────────
6713
+ *
6714
+ * **D** is taxable income for the year, determined **without regard to** s.18.2(2)
6715
+ * itself, paragraphs 12(1)(l.2) and 111(1)(a.1), and clause 95(2)(f.11)(ii)(D) —
6716
+ * a non-resident uses taxable income earned in Canada on the same basis. The
6717
+ * circularity is deliberate: the limitation cannot be an input to its own base.
6718
+ *
6719
+ * **E** subtracts the year's non-capital loss on the same basis, any amount
6720
+ * claimed under paragraph 111(1)(a) that did not actually reduce taxable income,
6721
+ * and a controlled-foreign-affiliate component (`T × U ÷ V`).
6722
+ *
6723
+ * ── B — the add-backs ───────────────────────────────────────────────────────
6724
+ *
6725
+ * (a) interest and financing expenses for the year
6726
+ * (b) capital cost allowance and resource deductions — paragraph 20(1)(a),
6727
+ * 59.1(a) and subsections 66(4), 66.1(2)/(3), 66.2(2), 66.21(4), 66.4(2),
6728
+ * 66.7(1)-(5)
6729
+ * (c) terminal losses — subsection 20(16)
6730
+ * (d) the taxpayer's share of a partnership's 20(1)(a) and 20(16) deductions
6731
+ * (e) the portion of a paragraph 111(1)(e) limited-partnership-loss claim
6732
+ * attributable to those amounts
6733
+ *
6734
+ * ── C — the reductions ──────────────────────────────────────────────────────
6735
+ *
6736
+ * (a) interest and financing revenues
6737
+ * (b) recapture — subsection 13(1)
6738
+ * (c) the taxpayer's share of a partnership's 13(1) inclusion
6739
+ * (d) resource inclusions — subsections 59(1), 59(3.2), paragraph 59.1(b)
6740
+ * (e) for a corporation, a grossed-up foreign tax credit amount:
6741
+ * **100/28** of what would be deductible under s.126(1), and
6742
+ * the s.126(2) amounts times the relevant factor
6743
+ *
6744
+ * ── Not modelled ────────────────────────────────────────────────────────────
6745
+ *
6746
+ * The trust variant of C(e), and the later paragraphs of B and C dealing with
6747
+ * foreign affiliate income and exempt interest. Each is available as an explicit
6748
+ * `otherAdditions` / `otherReductions` input rather than silently omitted, so a
6749
+ * preparer with one of those amounts can still arrive at the right figure and the
6750
+ * engine does not pretend the definition is shorter than it is.
6751
+ *
6752
+ * Source: `research/sources/legislation/ITA-section-18.2-EIFEL.txt`.
6753
+ *
6754
+ * Pure, whole dollars.
6755
+ */
6756
+ /** C(e)(i) — s.126(1) amounts are grossed up by 100/28. */
6757
+ declare const FOREIGN_TAX_CREDIT_GROSS_UP: number;
6758
+ interface AdjustedTaxableIncomeInput {
6759
+ /**
6760
+ * D — taxable income for the year, determined **without regard to** s.18.2(2),
6761
+ * paragraphs 12(1)(l.2) and 111(1)(a.1), and clause 95(2)(f.11)(ii)(D). For a
6762
+ * non-resident, taxable income earned in Canada on the same basis.
6763
+ *
6764
+ * Signed: a loss year gives a negative figure and the definition permits it.
6765
+ */
6766
+ taxableIncome: number;
6767
+ /** E(a) — the non-capital loss for the year, on the same determinations. */
6768
+ nonCapitalLossForYear?: number;
6769
+ /**
6770
+ * E(a.1) — an amount claimed under paragraph 111(1)(a) **to the extent it did
6771
+ * not reduce** taxable income as determined for D.
6772
+ */
6773
+ lossClaimNotReducingTaxableIncome?: number;
6774
+ /** E(b) — the controlled foreign affiliate component, `T × U ÷ V`. */
6775
+ foreignAccrualPropertyLossComponent?: number;
6776
+ /** B(a) — interest and financing expenses for the year. */
6777
+ interestAndFinancingExpenses?: number;
6778
+ /** B(b) — capital cost allowance, paragraph 20(1)(a). */
6779
+ capitalCostAllowance?: number;
6780
+ /** B(b) — resource deductions under s.59.1(a) and the s.66 series. */
6781
+ resourceDeductions?: number;
6782
+ /** B(c) — terminal losses, subsection 20(16). */
6783
+ terminalLoss?: number;
6784
+ /** B(d) — the taxpayer's share of a partnership's 20(1)(a) / 20(16) deductions. */
6785
+ partnershipCapitalAndTerminalShare?: number;
6786
+ /** B(e) — the attributable portion of a paragraph 111(1)(e) claim. */
6787
+ limitedPartnershipLossPortion?: number;
6788
+ /**
6789
+ * The amount deducted under paragraph 110(1)(k) in computing taxable income —
6790
+ * Schedule 130 Part 2F **line 088**, one of the later B paragraphs this
6791
+ * module's doc comment describes. Named rather than folded into
6792
+ * `otherAdditions` because the engine derives it directly from Schedule 43
6793
+ * (`part-vi-1-deduction.ts`), and a figure the engine computes should be
6794
+ * auditable against its own form line rather than buried in an "other".
6795
+ */
6796
+ partVI1TaxDeduction?: number;
6797
+ /**
6798
+ * Schedule 130 Part 2F **line 089** — the portion of a paragraph 111(1)(a)
6799
+ * loss claim that is derived from IFE (Part 2E amount A). Named for the same
6800
+ * reason as `partVI1TaxDeduction`: `eifel-ife.ts` computes it.
6801
+ */
6802
+ lossPortionDerivedFromIfe?: number;
6803
+ /**
6804
+ * Schedule 130 Part 2F **line 092** — the corporation's loss from activities
6805
+ * funded by a borrowing that produces exempt IFE (Part 1B amount C).
6806
+ */
6807
+ exemptIfeActivityLoss?: number;
6808
+ /** Any further B paragraph this module does not model. */
6809
+ otherAdditions?: number;
6810
+ /** C(a) — interest and financing revenues for the year. */
6811
+ interestAndFinancingRevenues?: number;
6812
+ /** C(b) — recapture included under subsection 13(1). */
6813
+ recapture?: number;
6814
+ /** C(c) — the taxpayer's share of a partnership's 13(1) inclusion. */
6815
+ partnershipRecaptureShare?: number;
6816
+ /** C(d) — inclusions under s.59(1), 59(3.2) or paragraph 59.1(b). */
6817
+ resourceInclusions?: number;
6818
+ /** C(e)(i) — amounts deductible under s.126(1). Grossed up by 100/28 here. */
6819
+ section126_1ForeignTaxCredits?: number;
6820
+ /** C(e)(ii) — amounts deductible under s.126(2), already at the relevant factor. */
6821
+ section126_2GrossedUp?: number;
6822
+ /**
6823
+ * Schedule 130 Part 2F **line 104** — the corporation's income from
6824
+ * activities funded by a borrowing that produces exempt IFE (Part 1B amount
6825
+ * B). The mirror of `exemptIfeActivityLoss` on the reduction side.
6826
+ */
6827
+ exemptIfeActivityIncome?: number;
6828
+ /** Any further C paragraph this module does not model. */
6829
+ otherReductions?: number;
6830
+ }
6831
+ interface AdjustedTaxableIncomeResult {
6832
+ /** A — the income base, D − E. Signed. */
6833
+ incomeBase: number;
6834
+ /** B — total add-backs. */
6835
+ totalAdditions: number;
6836
+ /** C — total reductions. */
6837
+ totalReductions: number;
6838
+ /** A + B − C. **Signed** — the definition permits a negative result. */
6839
+ adjustedTaxableIncome: number;
6840
+ issues: string[];
6841
+ }
6842
+ declare function computeAdjustedTaxableIncome(input: AdjustedTaxableIncomeInput): AdjustedTaxableIncomeResult;
6843
+ //#endregion
6844
+ //#region src/t2/schedules/eifel-capacity.d.ts
6845
+ /**
6846
+ * ITA subsection 18.2(1) — the EIFEL **excess-capacity regime**: excess
6847
+ * capacity, absorbed capacity, cumulative unused excess capacity (CUEC), the
6848
+ * restricted interest and financing expenses (RIFE) deductible under paragraph
6849
+ * 111(1)(a.1), and the RIFE that arises under subsection 111(8).
6850
+ *
6851
+ * The two modules either side of this one were already built and this one was
6852
+ * the gap between them:
6853
+ *
6854
+ * `eifel-adjusted-taxable-income.ts` ATI — Schedule 130 Part 2F
6855
+ * **this module** capacity — Parts 1A, 2G, 2H, 2I, 2J, 2O
6856
+ * `eifel-limitation.ts` the denial — Parts 2K, 2L
6857
+ *
6858
+ * Verified line by line against `research/sources/cra-forms/pdf/T2SCH130-eifel.pdf`
6859
+ * (T2 SCH 130 E, pages 1 and 10-14), rendered with `pdftotext -layout` and read
6860
+ * part by part. Every amount below names the form line it reconstructs.
6861
+ *
6862
+ * ── Why this matters beyond the federal return ───────────────────────────────
6863
+ *
6864
+ * Two of its outputs are the ONLY source for figures other forms ask for by
6865
+ * name, and both were previously typed in by hand because nothing computed
6866
+ * them:
6867
+ *
6868
+ * Part 2G amount F → Schedule 130 line 129 → **AT1 Schedule 21 line 320**
6869
+ * Part 1A amount A → Schedule 130 line 130 → **AT1 Schedule 21 line 330**
6870
+ * Part 2O amount A → **Schedule 4 line 710** → AT1 Schedule 21 line 230
6871
+ *
6872
+ * ── The ordering, which looks circular and is not ───────────────────────────
6873
+ *
6874
+ * The form's cross-references form a strict topological order, not a cycle:
6875
+ *
6876
+ * 2G amount F needs ATI, IFE, IFR (nothing downstream)
6877
+ * 2J amounts A, B need F and received capacity
6878
+ * 2G line 115 needs 2J amount B → excess capacity for the year
6879
+ * 2I amounts A, B need line 115
6880
+ * 2H amount D needs 2I amount B → absorbed capacity
6881
+ * 2I amount C needs 2H amount D → CUEC
6882
+ *
6883
+ * So F is computed BEFORE anything that depends on it, and each later step only
6884
+ * ever reads an earlier one. `computeEifelCapacity` runs them in exactly that
6885
+ * sequence.
6886
+ *
6887
+ * ── The one trap: line 111 reaches around section 257 ───────────────────────
6888
+ *
6889
+ * Line 106 (ATI) is floored at nil — "if negative, enter 0" — and lines 107 and
6890
+ * 119 read that floored figure. Line 111 does **not**: it asks for "the absolute
6891
+ * value of ATI" where "in the absence of section 257, the ATI is a negative
6892
+ * amount". Section 257 is the Act's own no-negative-amounts rule, and the form
6893
+ * deliberately reaches around it here. This module therefore takes the
6894
+ * **signed** ATI and derives both readings, rather than taking the floored one
6895
+ * and losing the information line 111 needs.
6896
+ *
6897
+ * Pure, whole dollars.
6898
+ */
6899
+ /** Part 1A — one eligible group entity the corporation received capacity from. */
6900
+ interface ReceivedCapacityRow {
6901
+ /** Column 1 — name of the eligible group entity. */
6902
+ entityName?: string;
6903
+ /** Column 2 — that entity's account number. */
6904
+ accountNumber?: string;
6905
+ /** Column 3 — that entity's tax year end, ISO `YYYY-MM-DD`. */
6906
+ taxYearEnd?: string;
6907
+ /** 005, column 4 — the amount of capacity received. */
6908
+ amount: number;
6909
+ }
6910
+ /**
6911
+ * Part 2I — one preceding year's excess-capacity vintage. The form provides
6912
+ * exactly three rows (the third, second and first immediately preceding years),
6913
+ * matching the three-year life of unused excess capacity.
6914
+ */
6915
+ interface ExcessCapacityVintage {
6916
+ /** 1 = the first immediately preceding year, 2 = second, 3 = third. */
6917
+ yearsAgo: number;
6918
+ /** 122, column 1 — that year's excess capacity. */
6919
+ excessCapacity: number;
6920
+ /** 123, column 2 — amounts previously transferred under subsection 18.2(4). */
6921
+ previouslyTransferred?: number;
6922
+ /** 124, column 3 — amounts previously absorbed under subsection 18.2(2). */
6923
+ previouslyAbsorbed?: number;
6924
+ }
6925
+ interface EifelCapacityInput {
6926
+ /**
6927
+ * Line 106 from Part 2F — adjusted taxable income, **signed**. Pass
6928
+ * `computeAdjustedTaxableIncome`'s own signed result: lines 107/119 floor it
6929
+ * at nil themselves, and line 111 needs the negative value this would lose.
6930
+ */
6931
+ adjustedTaxableIncome: number;
6932
+ /** Line 045 from Part 2A — the corporation's IFE for the year. */
6933
+ interestAndFinancingExpenses: number;
6934
+ /** Line 072 from Part 2D — the corporation's IFR for the year. */
6935
+ interestAndFinancingRevenues?: number;
6936
+ /** Lines 108/112/120 — the ratio of permissible expenses for the year. */
6937
+ ratioOfPermissibleExpenses: number;
6938
+ /**
6939
+ * Whether a group ratio election under subsection 18.21(2) was made. Part 2G
6940
+ * opens with "If a group ratio election under subsection 18.21(2) has been
6941
+ * made, the excess capacity is nil" — so this suppresses the whole of 2G.
6942
+ */
6943
+ hasGroupRatioElection?: boolean;
6944
+ /** Line 118 — the allocated group ratio amount, where the election was made. */
6945
+ groupRatioAmount?: number;
6946
+ /** Part 1A — the received-capacity table. Its column-4 total is line 130. */
6947
+ receivedCapacity?: readonly ReceivedCapacityRow[];
6948
+ /** Line 128 — RIFE from previous tax years. */
6949
+ rifeFromPreviousYears?: number;
6950
+ /** Part 2I's table — the three preceding years' excess-capacity vintages. */
6951
+ priorYearExcessCapacity?: readonly ExcessCapacityVintage[];
6952
+ /** Line 159 — excess IFE under subsection 18.2(2) (amount B from Part 2L). */
6953
+ excessInterestAndFinancingExpenses?: number;
6954
+ /** Line 160 — partnership IFE add-back under paragraph 12(1)(l.2) (Part 2N). */
6955
+ partnershipIfeAddBack?: number;
6956
+ /** Line 161 — the amount under subclause 95(2)(f.11)(ii)(D)(I) (Part 2M). */
6957
+ clause95FapiAmountI?: number;
6958
+ /** Line 162 — the amount under subclause 95(2)(f.11)(ii)(D)(II) (Part 2M). */
6959
+ clause95FapiAmountII?: number;
6960
+ }
6961
+ interface EifelCapacityResult {
6962
+ /** Amount A — total received capacity. Schedule 130 **line 130**. */
6963
+ receivedCapacity: number;
6964
+ /** Amount A — line 107 × line 108. */
6965
+ permittedAmount: number;
6966
+ /** Line 110 — the amount by which IFR exceeds IFE, floored at nil. */
6967
+ revenueOverExpense: number;
6968
+ /** Line 111 — the absolute value of a negative ATI, otherwise nil. */
6969
+ negativeAtiAbsolute: number;
6970
+ /** Amount B — the lesser of lines 110 and 111. */
6971
+ negativeAtiOffset: number;
6972
+ /** Amount C — amount B × line 112. */
6973
+ negativeAtiOffsetAtRatio: number;
6974
+ /** Amount D — line 109 minus amount C, floored at nil. */
6975
+ revenueCapacity: number;
6976
+ /** Amount E — amount A plus amount D. */
6977
+ totalCapacityBeforeExpenses: number;
6978
+ /**
6979
+ * Amount F — amount E minus line 113, floored at nil. Schedule 130
6980
+ * **line 129**, and the figure AT1 Schedule 21 line 320 asks for by name.
6981
+ */
6982
+ excessCapacityBeforeRife: number;
6983
+ /** Line 115 — excess capacity for the current year (amount F minus line 114). */
6984
+ excessCapacityForYear: number;
6985
+ /** Amount A — line 129 plus line 130. */
6986
+ rifeCapacityAvailable: number;
6987
+ /** Amount B — RIFE deductible under paragraph 111(1)(a.1): lesser of 128 and A. */
6988
+ rifeDeductible: number;
6989
+ /** Amount A — the total of column 4 across the three preceding years. */
6990
+ priorYearUnusedCapacity: number;
6991
+ /** Amount B — CUEC determined as if the year's absorbed capacity were nil. */
6992
+ cumulativeUnusedExcessCapacityBeforeAbsorption: number;
6993
+ /** Amount C — cumulative unused excess capacity. */
6994
+ cumulativeUnusedExcessCapacity: number;
6995
+ /** Amount D — absorbed capacity for the year. */
6996
+ absorbedCapacity: number;
6997
+ /**
6998
+ * Line 136 minus line 137 — received capacity in excess of what was deducted
6999
+ * under paragraph 111(1)(a.1). This is variable **D** of subsection 18.2(2),
7000
+ * which `computeEifelLimitation` takes as `excessReceivedCapacity`.
7001
+ */
7002
+ excessReceivedCapacity: number;
7003
+ /**
7004
+ * Amount A — RIFE for the tax year, the total of lines 159 to 162. The form
7005
+ * directs this to **Schedule 4** (line 710), which AT1 Schedule 21 line 230
7006
+ * then carries in.
7007
+ */
7008
+ rifeForYear: number;
7009
+ issues: string[];
7010
+ }
7011
+ /**
7012
+ * Part 2O on its own — the total of lines 159 to 162.
7013
+ *
7014
+ * Exported separately because of the order the form imposes: line 159 is the
7015
+ * denial from Part 2L, which cannot be computed until Parts 2G-2J have supplied
7016
+ * `excessReceivedCapacity` and `absorbedCapacity` to Part 2K. A caller running
7017
+ * the whole chain therefore computes capacity, then the limitation, then calls
7018
+ * this — rather than computing capacity twice.
7019
+ */
7020
+ declare function computeRifeUnderSubsection111_8(input: {
7021
+ /** Line 159 — excess IFE under subsection 18.2(2) (amount B from Part 2L). */excessInterestAndFinancingExpenses?: number; /** Line 160 — partnership IFE add-back under paragraph 12(1)(l.2). */
7022
+ partnershipIfeAddBack?: number; /** Line 161 — subclause 95(2)(f.11)(ii)(D)(I). */
7023
+ clause95FapiAmountI?: number; /** Line 162 — subclause 95(2)(f.11)(ii)(D)(II). */
7024
+ clause95FapiAmountII?: number;
7025
+ }): number;
7026
+ declare function computeEifelCapacity(input: EifelCapacityInput): EifelCapacityResult;
7027
+ //#endregion
6387
7028
  //#region src/t2/schedules/eifel-excluded-entity.d.ts
6388
7029
  /**
6389
7030
  * EIFEL — excessive interest and financing expenses limitation (s.18.2, 18.21).
@@ -6456,7 +7097,13 @@ interface EifelResult {
6456
7097
  exemption: EifelExemption;
6457
7098
  /**
6458
7099
  * True when the regime applies and the limitation is therefore required.
6459
- * The engine does not compute it, so this must block filing.
7100
+ *
7101
+ * `computeFederalT2` computes it — `eifelAdjustedTaxableIncome`,
7102
+ * `eifelCapacity` and `eifelLimitation` on its result — and applies the
7103
+ * denial to Schedule 1 and taxable income. This stays true anyway, because
7104
+ * the computation runs on preparer-supplied figures and several parts of
7105
+ * Schedule 130 are not modelled; `issues` says which. It marks a return for
7106
+ * review, not an uncomputed one.
6460
7107
  */
6461
7108
  requiresLimitation: boolean;
6462
7109
  /** Blocking explanations for the review layer. */
@@ -6470,9 +7117,497 @@ interface EifelThresholds {
6470
7117
  }
6471
7118
  declare function assessEifel(input: EifelInput, thresholds: EifelThresholds): EifelResult;
6472
7119
  //#endregion
6473
- //#region src/t2/schedules/part-vi-1-deduction.d.ts
7120
+ //#region src/t2/schedules/eifel-ife.d.ts
6474
7121
  /**
6475
- * ITA paragraph 110(1)(k)the deduction against taxable income for Part VI.1 tax.
7122
+ * ITA subsection 18.2(1) — **interest and financing expenses** (IFE) and
7123
+ * **interest and financing revenues** (IFR), and the supporting parts that
7124
+ * build them.
7125
+ *
7126
+ * This is the last of the four EIFEL modules, and the one that stops the
7127
+ * regime asking a preparer to hand-total a figure the return already holds:
7128
+ *
7129
+ * `eifel-adjusted-taxable-income.ts` ATI — Part 2F
7130
+ * `eifel-capacity.ts` capacity — Parts 1A, 2G-2J, 2O
7131
+ * `eifel-limitation.ts` the denial — Parts 2K, 2L
7132
+ * **this module** IFE and IFR — Parts 1B-1E, 2A-2E, 2M
7133
+ *
7134
+ * Verified against `research/sources/cra-forms/pdf/T2SCH130-eifel.pdf`
7135
+ * (T2 SCH 130 E, pages 1-8 and 13), rendered with `pdftotext -layout`. Every
7136
+ * amount names the form line it reconstructs.
7137
+ *
7138
+ * ── Why the sub-parts exist at all ──────────────────────────────────────────
7139
+ *
7140
+ * IFE is not "the interest the corporation paid". It reaches into three places
7141
+ * where interest has already been capitalised into something else and pulls it
7142
+ * back out — the capital cost of depreciable property (Part 2B), resource
7143
+ * expense pools (Part 2C), and a partnership's own IFE (Part 1E) — then nets
7144
+ * off the amounts that reduce the cost of funding (variable B). A preparer
7145
+ * totalling "interest expense" from the income statement would miss all three.
7146
+ *
7147
+ * ── The one ordering constraint ─────────────────────────────────────────────
7148
+ *
7149
+ * Part 2M's first table needs amount G from Part 2K — the proportion denied —
7150
+ * so it cannot run until the limitation has. `computeClause95Amounts` therefore
7151
+ * takes that proportion as an argument, the same way Part 2O takes the denial.
7152
+ * Everything else here runs before the limitation, because the limitation is
7153
+ * computed FROM it.
7154
+ *
7155
+ * Whole dollars, pure.
7156
+ */
7157
+ /** Part 1C/1D column 1 — who the other party to the financing is. */
7158
+ type EifelCounterpartyRelationship = 'canadian-arm-length' | 'canadian-non-arm-length' | 'non-resident-arm-length' | 'non-resident-non-arm-length';
7159
+ /**
7160
+ * One public-sector agreement whose borrowing produces exempt IFE. Exempt IFE
7161
+ * is left OUT of the IFE total entirely (see variable A's own opening words),
7162
+ * but the income and losses of the activities it funded still adjust ATI.
7163
+ */
7164
+ interface ExemptIfeRow {
7165
+ /** 007 — the public sector authority the agreement is with. */
7166
+ authorityName?: string;
7167
+ /** 008 — principal amount of the borrowing entered into under the agreement. */
7168
+ principalAmount?: number;
7169
+ /** 009, column 3 — IFE incurred on that amount. */
7170
+ ifeIncurred?: number;
7171
+ /** 010, column 4 — corporation income from the activities it funded. */
7172
+ incomeFromFundedActivities?: number;
7173
+ /** 011, column 5 — corporation loss from those activities, as a positive amount. */
7174
+ lossFromFundedActivities?: number;
7175
+ }
7176
+ interface ExemptIfeResult {
7177
+ /** Amount A — total of column 3. */
7178
+ totalExemptIfe: number;
7179
+ /** Amount B — total of column 4. Part 2F **line 104** (an ATI reduction). */
7180
+ incomeFromExemptActivities: number;
7181
+ /** Amount C — total of column 5. Part 2F **line 092** (an ATI addition). */
7182
+ lossFromExemptActivities: number;
7183
+ }
7184
+ declare function computeExemptIfe(rows: readonly ExemptIfeRow[]): ExemptIfeResult;
7185
+ interface BorrowingRow {
7186
+ relationship?: EifelCounterpartyRelationship;
7187
+ /** 012 — total principal of borrowings at any point in the year. */
7188
+ principalAmount?: number;
7189
+ /** 013 — total notional of derivatives entered in respect of them. */
7190
+ derivativeNotional?: number;
7191
+ /** 014, column 4 — paragraph (a) of variable A. Part 2A **line 027**. */
7192
+ interestPaidOrPayable?: number;
7193
+ /** 015, column 5 — paragraph (e) of variable A. Part 2A **line 033**. */
7194
+ fundingCostAmounts?: number;
7195
+ /** 016, column 6 — paragraph (a) of variable B. Part 2A **line 042**. */
7196
+ costReducingAmounts?: number;
7197
+ }
7198
+ interface BorrowingsResult {
7199
+ /** Amount A → line 027. */
7200
+ interestPaidOrPayable: number;
7201
+ /** Amount B → line 033. */
7202
+ fundingCostAmounts: number;
7203
+ /** Amount C → line 042. */
7204
+ costReducingAmounts: number;
7205
+ }
7206
+ declare function computeBorrowings(rows: readonly BorrowingRow[]): BorrowingsResult;
7207
+ interface LoanRow {
7208
+ relationship?: EifelCounterpartyRelationship;
7209
+ /** 017 — total principal of loans at any point in the year. */
7210
+ principalAmount?: number;
7211
+ /** 018 — total notional of derivatives entered in respect of them. */
7212
+ derivativeNotional?: number;
7213
+ /** 019, column 4 — paragraph (d) of variable A of IFR. Part 2D **line 061**. */
7214
+ returnAmounts?: number;
7215
+ /** 020, column 5 — paragraph (a) of variable B of IFR. Part 2D **line 066**. */
7216
+ returnReducingAmounts?: number;
7217
+ }
7218
+ interface LoansResult {
7219
+ /** Amount A → line 061. */
7220
+ returnAmounts: number;
7221
+ /** Amount B → line 066. */
7222
+ returnReducingAmounts: number;
7223
+ }
7224
+ declare function computeLoans(rows: readonly LoanRow[]): LoansResult;
7225
+ interface PartnershipIfeRow {
7226
+ /** 021 — the partnership's name. */
7227
+ partnershipName?: string;
7228
+ /** 022 — its account number; blank where the partnership is non-resident. */
7229
+ accountNumber?: string;
7230
+ /** 023, column 3 — the corporation's share of variable A of the partnership's IFE. */
7231
+ shareOfPartnershipIfe?: number;
7232
+ /** 024, column 4 — the portion of column 3 to which paragraph 12(1)(l.1) applies. */
7233
+ portionUnderParagraph12_1_l1?: number;
7234
+ /** 025, column 5 — the portion not deductible because of subsection 96(2.1). */
7235
+ portionDeniedBySubsection96_2_1?: number;
7236
+ }
7237
+ interface PartnershipIfeResult {
7238
+ rows: {
7239
+ partnershipName?: string;
7240
+ includedAmount: number;
7241
+ }[];
7242
+ /**
7243
+ * Amount A — total of column 6. Feeds THREE places: Part 2A **line 039**,
7244
+ * Part 2L **line 142** (where it is removed again from the denial base) and
7245
+ * Part 2N **line 156** (the 12(1)(l.2) add-back).
7246
+ */
7247
+ totalIncluded: number;
7248
+ }
7249
+ declare function computePartnershipIfe(rows: readonly PartnershipIfeRow[]): PartnershipIfeResult;
7250
+ interface CapitalizedIfeRow {
7251
+ /** 046 — the CCA class the capitalized interest sits in. */
7252
+ ccaClass?: string;
7253
+ /** 047, column 2 — IFE in the UCC at the beginning of the year. */
7254
+ ifeInOpeningUcc?: number;
7255
+ /** 048, column 3 — IFE in acquisitions, adjustments, transfers and proceeds. */
7256
+ ifeInAcquisitionsAndDispositions?: number;
7257
+ /** 050, column 5 — IFE in the terminal loss (note 2 on the form). */
7258
+ ifeInTerminalLoss?: number;
7259
+ /** 051, column 6 — IFE in the CCA claimed. Capped at column 4. */
7260
+ ifeInCca?: number;
7261
+ }
7262
+ interface CapitalizedIfeResult {
7263
+ rows: {
7264
+ ccaClass?: string;
7265
+ ifeInUcc: number;
7266
+ ifeInCca: number;
7267
+ closingIfeInUcc: number;
7268
+ }[];
7269
+ /** Amount A — total of column 5. Part 2A **line 032** (terminal loss). */
7270
+ totalIfeInTerminalLoss: number;
7271
+ /** Amount B — total of column 6. Part 2A **line 030** (CCA). */
7272
+ totalIfeInCca: number;
7273
+ issues: string[];
7274
+ }
7275
+ declare function computeCapitalizedIfe(rows: readonly CapitalizedIfeRow[]): CapitalizedIfeResult;
7276
+ /** The ten pools Part 2C lists, in the form's own row order. */
7277
+ type ResourceIfePool = 'ccee-regular' | 'ccee-successor' | 'ccde-regular' | 'ccde-successor' | 'ccogpe-regular' | 'ccogpe-successor' | 'fede-regular' | 'fede-successor' | 'cfre-regular' | 'cfre-successor';
7278
+ interface ResourceIfeRow {
7279
+ pool: ResourceIfePool;
7280
+ /** 053, column 2 — IFE in the opening balance. */
7281
+ ifeInOpeningBalance?: number;
7282
+ /** 054, column 3 — IFE added to or deducted from the pool during the year. */
7283
+ ifeAddedOrDeducted?: number;
7284
+ /** 056, column 5 — IFE in the current-year claim. Capped at column 4. */
7285
+ ifeInCurrentYearClaim?: number;
7286
+ }
7287
+ interface ResourceIfeResult {
7288
+ rows: {
7289
+ pool: ResourceIfePool;
7290
+ ifeAvailable: number;
7291
+ ifeClaimed: number;
7292
+ closing: number;
7293
+ }[];
7294
+ /** Amount A — total of column 5. Part 2A **line 031**. */
7295
+ totalIfeInResourceClaims: number;
7296
+ issues: string[];
7297
+ }
7298
+ declare function computeResourceIfe(rows: readonly ResourceIfeRow[]): ResourceIfeResult;
7299
+ interface InterestAndFinancingExpensesInput {
7300
+ /** 027 — interest paid or payable on a borrowing (Part 1C amount A). */
7301
+ interestOnBorrowings?: number;
7302
+ /** 028 — interest paid or payable, other. */
7303
+ otherInterest?: number;
7304
+ /** 029 — amounts deductible under the subsection 20(1)(e) series. */
7305
+ subsection20_1_eAmounts?: number;
7306
+ /** 030 — IFE claimed as CCA (Part 2B amount B). */
7307
+ ifeInCca?: number;
7308
+ /** 031 — IFE claimed as resource expenses (Part 2C amount A). */
7309
+ ifeInResourceExpenses?: number;
7310
+ /** 032 — IFE claimed as a terminal loss (Part 2B amount A). */
7311
+ ifeInTerminalLoss?: number;
7312
+ /** 033 — funding-cost amounts deductible in the year (Part 1C amount B). */
7313
+ fundingCostAmounts?: number;
7314
+ /** 034 — a loss deductible in the year under such an arrangement. */
7315
+ fundingCostLoss?: number;
7316
+ /** 035 — a capital loss reducing paragraph 3(b) or taxable income. */
7317
+ fundingCostCapitalLoss?: number;
7318
+ /** 036 — an expense or fee giving rise to an amount included in IFE. */
7319
+ feeGivingRiseToIfe?: number;
7320
+ /** 037 — an expense or fee giving rise to an amount reducing IFE. */
7321
+ feeReducingIfe?: number;
7322
+ /** 038 — a lease financing amount. */
7323
+ leaseFinancingAmount?: number;
7324
+ /** 039 — the corporation's share of a partnership's IFE (Part 1E amount A). */
7325
+ partnershipShare?: number;
7326
+ /** 040 — a denied 111(1)(e) claim from a preceding year attributable to IFE. */
7327
+ reinstatedPartnershipLoss?: number;
7328
+ /**
7329
+ * 041 — a controlled foreign affiliate's relevant affiliate interest and
7330
+ * financing expenses (RAIFE), to the extent of the specified participating
7331
+ * percentage. Also Part 2L **line 143**, where it is removed again.
7332
+ */
7333
+ affiliateRaife?: number;
7334
+ /** 042 — amounts received or receivable (Part 1C amount C). */
7335
+ costReducingAmounts?: number;
7336
+ /** 043 — a gain included in income. */
7337
+ costReducingGain?: number;
7338
+ /** 044 — the corporation's share of such an amount in a partnership. */
7339
+ costReducingPartnershipShare?: number;
7340
+ }
7341
+ interface InterestAndFinancingExpensesResult {
7342
+ /**
7343
+ * Amount A — the total of lines 027 to 041. Part 2K **line 139** and Part 2L
7344
+ * **line 141**: the denial is a proportion OF THIS, not of the net figure.
7345
+ */
7346
+ variableA: number;
7347
+ /** Amount B — the total of lines 042 to 044. */
7348
+ variableB: number;
7349
+ /** 045 — total IFE, amount A minus amount B, floored at nil. */
7350
+ totalIfe: number;
7351
+ }
7352
+ declare function computeInterestAndFinancingExpenses(input: InterestAndFinancingExpensesInput): InterestAndFinancingExpensesResult;
7353
+ interface InterestAndFinancingRevenuesInput {
7354
+ /** 058 — interest received or receivable. */
7355
+ interestReceived?: number;
7356
+ /** 059 — amounts included under subsection 12(9) or section 17.1. */
7357
+ subsection12_9Amounts?: number;
7358
+ /** 060 — a guarantee or credit-support fee included in income. */
7359
+ guaranteeFees?: number;
7360
+ /** 061 — amounts received under a financing arrangement (Part 1D amount A). */
7361
+ returnAmounts?: number;
7362
+ /** 062 — a gain included in income. */
7363
+ returnGain?: number;
7364
+ /** 063 — a lease financing amount included in income. */
7365
+ leaseFinancingAmount?: number;
7366
+ /** 064 — the corporation's share of a partnership's IFR. */
7367
+ partnershipShare?: number;
7368
+ /** 065 — a controlled foreign affiliate's relevant affiliate IFR. */
7369
+ affiliateRaifr?: number;
7370
+ /** 066 — amounts paid or payable under the arrangement (Part 1D amount B). */
7371
+ returnReducingAmounts?: number;
7372
+ /** 067 — a deductible loss. */
7373
+ returnReducingLoss?: number;
7374
+ /** 068 — a capital loss reducing the paragraph 3(b) amount. */
7375
+ returnReducingCapitalLoss?: number;
7376
+ /** 069 — the corporation's share of such an amount in a partnership. */
7377
+ returnReducingPartnershipShare?: number;
7378
+ /** 070 — IFR sheltered from Canadian tax by a foreign tax credit or deduction. */
7379
+ shelteredByForeignTaxRelief?: number;
7380
+ /** 071 — amounts in variable A that are exempt from Part I tax. */
7381
+ exemptFromPartITax?: number;
7382
+ }
7383
+ interface InterestAndFinancingRevenuesResult {
7384
+ /** Amount A — the total of lines 058 to 065. */
7385
+ variableA: number;
7386
+ /** Amount B — the total of lines 066 to 071. */
7387
+ variableB: number;
7388
+ /** 072 — total IFR, amount A minus amount B, floored at nil. */
7389
+ totalIfr: number;
7390
+ }
7391
+ declare function computeInterestAndFinancingRevenues(input: InterestAndFinancingRevenuesInput): InterestAndFinancingRevenuesResult;
7392
+ /**
7393
+ * The portion of a non-capital loss claimed under paragraph 111(1)(a) that is
7394
+ * attributable to IFE, which is added back to ATI. Per-vintage, because each
7395
+ * loss year carries its own IFE proportion.
7396
+ */
7397
+ interface LossPortionFromIfeRow {
7398
+ /** 073, column 1 — the tax year the non-capital loss arose in. */
7399
+ taxYearOfOrigin?: string;
7400
+ /** 074, column 2 — the non-capital loss, variable J(i). */
7401
+ nonCapitalLoss: number;
7402
+ /** 075, column 3 — the amount determined under (ii) of variable J. */
7403
+ variableJSecondAmount?: number;
7404
+ /** 077, column 5 — the amount actually deducted under paragraph 111(1)(a). */
7405
+ amountDeducted?: number;
7406
+ }
7407
+ interface LossPortionFromIfeResult {
7408
+ rows: {
7409
+ taxYearOfOrigin?: string;
7410
+ variableJ: number;
7411
+ attributableToIfe: number;
7412
+ }[];
7413
+ /** Amount A — total of column 6. Part 2F **line 089**. */
7414
+ totalAttributableToIfe: number;
7415
+ issues: string[];
7416
+ }
7417
+ declare function computeLossPortionFromIfe(rows: readonly LossPortionFromIfeRow[]): LossPortionFromIfeResult;
7418
+ /**
7419
+ * The amount actually denied, and the amount actually added back on Schedule 1
7420
+ * line 251.
7421
+ *
7422
+ * This is NOT simply "the shortfall". Part 2K computes a **proportion** (amount
7423
+ * G) and Part 2L applies it to a base that deliberately excludes two things
7424
+ * already counted elsewhere:
7425
+ *
7426
+ * 141 variable A of IFE
7427
+ * 142 less the partnership share (Part 1E amount A) — denied instead through
7428
+ * the paragraph 12(1)(l.2) add-back in Part 2N
7429
+ * 143 less a CFA's relevant affiliate IFE — denied instead through
7430
+ * clause 95(2)(f.11)(ii)(D) in Part 2M
7431
+ *
7432
+ * With neither of those present the base is variable A and the result equals
7433
+ * the raw shortfall, which is why a simple corporation sees no difference. With
7434
+ * either present, using the shortfall directly double-counts the denial.
7435
+ */
7436
+ declare function computeExcessIfe(input: {
7437
+ /** 141 — variable A of IFE (Part 2A amount A). */variableAOfIfe: number; /** 142 — the partnership share (Part 1E amount A). */
7438
+ partnershipShare?: number; /** 143 — a CFA's relevant affiliate IFE (Part 2A line 041). */
7439
+ affiliateRaife?: number; /** Amount G from Part 2K — the proportion denied. */
7440
+ deniedProportion: number;
7441
+ }): {
7442
+ base: number;
7443
+ excessIfe: number;
7444
+ };
7445
+ /**
7446
+ * Part 2N line 158 — the partnership IFE add-back under paragraph 12(1)(l.2):
7447
+ * the Part 1E total (line 156) at the Part 2K proportion (line 157). Feeds
7448
+ * Schedule 1 **line 252** and Part 2O **line 160**.
7449
+ */
7450
+ declare function computePartnershipIfeAddBack(partnershipShare: number, deniedProportion: number): number;
7451
+ interface Clause95DeniedRow {
7452
+ /** 144 — the controlled foreign affiliate's name. */
7453
+ affiliateName?: string;
7454
+ /** 145, column 2 — variable A of the definition of IFE for the affiliate. */
7455
+ variableAForAffiliate: number;
7456
+ /**
7457
+ * 148, column 5 — the corporation's specified participating percentage for
7458
+ * the affiliate's tax year, as a FRACTION (0.4, not 40).
7459
+ */
7460
+ specifiedParticipatingPercentage?: number;
7461
+ }
7462
+ interface Clause95IncludedRow {
7463
+ /** 151 — the affiliate that is a member of the partnership. */
7464
+ affiliateName?: string;
7465
+ /** 152, column 2 — the amount under subclause 95(2)(f.11)(ii)(D)(II) in the CFA's FAPI. */
7466
+ amountInAffiliateFapi: number;
7467
+ /** 153, column 3 — specified participating percentage, as a FRACTION. */
7468
+ specifiedParticipatingPercentage?: number;
7469
+ }
7470
+ interface Clause95Result {
7471
+ /** 150 — total of the first table's column 6. Part 2O **line 161**. */
7472
+ deniedUnderSubclauseI: number;
7473
+ /** 155 — total of the second table's column 4. Part 2O **line 162**. */
7474
+ includedUnderSubclauseII: number;
7475
+ }
7476
+ /**
7477
+ * @param deniedProportion Amount G from Part 2K — the proportion of each
7478
+ * expense denied under subsection 18.2(2). This is why Part 2M runs after the
7479
+ * limitation rather than before it.
7480
+ */
7481
+ declare function computeClause95Amounts(denied: readonly Clause95DeniedRow[], included: readonly Clause95IncludedRow[], deniedProportion: number): Clause95Result;
7482
+ //#endregion
7483
+ //#region src/t2/schedules/eifel-limitation.d.ts
7484
+ /**
7485
+ * ITA subsection 18.2(2) — the excessive interest and financing expenses
7486
+ * limitation itself.
7487
+ *
7488
+ * `eifel-excluded-entity.ts` decides **whether** the regime applies. This decides
7489
+ * **how much** it denies, which was previously left unbuilt on the grounds that
7490
+ * computing it from an unbuilt definition would be confidently wrong.
7491
+ *
7492
+ * ── The provision ───────────────────────────────────────────────────────────
7493
+ *
7494
+ * s.18.2(2) denies a *proportion* of each interest and financing expense:
7495
+ *
7496
+ * (A − (B + C + D + E)) ÷ F
7497
+ *
7498
+ * A the taxpayer's interest and financing expenses for the year
7499
+ * B the group-ratio amount under s.18.21(2) where that applies, otherwise
7500
+ * **G × H** — the ratio of permissible expenses times adjusted taxable income
7501
+ * C the taxpayer's interest and financing revenues for the year
7502
+ * D received capacity, to the extent it exceeds the amount deductible under
7503
+ * paragraph 111(1)(a.1)
7504
+ * E absorbed capacity
7505
+ * F ordinarily the same figure as A
7506
+ *
7507
+ * Because F is A in the ordinary case, the *amount* denied is simply
7508
+ *
7509
+ * denied = A − (B + C + D + E), floored at nil
7510
+ *
7511
+ * which is the form this module computes, while still reporting the proportion —
7512
+ * the statute denies a fraction of *each* expense, and a preparer allocating the
7513
+ * denial across expense lines needs the fraction rather than the total.
7514
+ *
7515
+ * ── The ratio of permissible expenses ───────────────────────────────────────
7516
+ *
7517
+ * Keyed off when the taxation year **BEGINS**, not when it ends:
7518
+ *
7519
+ * begins on or after 2023-10-01 and before 2024-01-01 → **40%**
7520
+ * begins on or after 2024-01-01 → **30%**
7521
+ *
7522
+ * The 40% band is transitional and narrow — one quarter — and it does **not**
7523
+ * apply when determining cumulative unused excess capacity for a year beginning
7524
+ * on or after 1 January 2024. That carve-out is not modelled; excess-capacity
7525
+ * carry-forward is a separate mechanism this module does not compute.
7526
+ *
7527
+ * ── What this module does NOT compute ───────────────────────────────────────
7528
+ *
7529
+ * **Adjusted taxable income** is an input to THIS module, not a derivation — it
7530
+ * is a build-up from taxable income through a dozen add-backs and reductions,
7531
+ * and deriving it partially here would produce a plausible number from an
7532
+ * incomplete definition. It is therefore **required**, and an absent one denies
7533
+ * nothing while saying so. `eifel-adjusted-taxable-income.ts` derives it
7534
+ * (Schedule 130 Part 2F), and `computeFederalT2` feeds that result in.
7535
+ *
7536
+ * Likewise the received and absorbed capacity amounts, which come from the
7537
+ * excess-capacity regime — `eifel-capacity.ts` computes those (Parts 1A and
7538
+ * 2G-2J), and the engine threads them in as `excessReceivedCapacity` (Part 2K
7539
+ * amount C) and `absorbedCapacity` (Part 2H amount D). The group-ratio election
7540
+ * under s.18.21 remains a preparer assertion.
7541
+ *
7542
+ * Source: `research/sources/legislation/ITA-section-18.2-EIFEL.txt`.
7543
+ *
7544
+ * Pure, whole dollars.
7545
+ */
7546
+ /** The ratio bands, keyed off the taxation year START. */
7547
+ declare const EIFEL_TRANSITIONAL_RATIO = 0.4;
7548
+ declare const EIFEL_STANDARD_RATIO = 0.3;
7549
+ /** The regime's first day — years beginning before this are outside it. */
7550
+ declare const EIFEL_FIRST_YEAR_START = "2023-10-01";
7551
+ /** The transitional 40% band ends when years beginning in 2024 start. */
7552
+ declare const EIFEL_STANDARD_RATIO_FROM = "2024-01-01";
7553
+ interface EifelLimitationInput {
7554
+ /** A — interest and financing expenses for the year. */
7555
+ interestAndFinancingExpenses: number;
7556
+ /**
7557
+ * H — adjusted taxable income. **Required**: the definition is a large build-up
7558
+ * this module does not derive, and an absent one denies nothing rather than
7559
+ * being assumed.
7560
+ */
7561
+ adjustedTaxableIncome?: number;
7562
+ /** C — interest and financing revenues for the year. */
7563
+ interestAndFinancingRevenues?: number;
7564
+ /**
7565
+ * D — received capacity in excess of the amount deducted under paragraph
7566
+ * 111(1)(a.1).
7567
+ */
7568
+ excessReceivedCapacity?: number;
7569
+ /** E — absorbed capacity for the year. */
7570
+ absorbedCapacity?: number;
7571
+ /**
7572
+ * B — the group ratio amount under s.18.21(2), where the election was made.
7573
+ * Supplying it REPLACES the ratio × adjusted taxable income computation, as the
7574
+ * provision directs.
7575
+ */
7576
+ groupRatioAmount?: number;
7577
+ /** Taxation year start, ISO `YYYY-MM-DD` — selects the ratio band. */
7578
+ taxYearStart: string;
7579
+ }
7580
+ interface EifelLimitationResult {
7581
+ /** G — the ratio of permissible expenses that applied. */
7582
+ ratioOfPermissibleExpenses: number;
7583
+ /** B — the permitted amount, however it was arrived at. */
7584
+ permittedAmount: number;
7585
+ /** Whether B came from the group ratio election rather than ratio × income. */
7586
+ usedGroupRatio: boolean;
7587
+ /** B + C + D + E — everything that shelters the expenses. */
7588
+ totalShelter: number;
7589
+ /** The amount denied, floored at nil. */
7590
+ deniedAmount: number;
7591
+ /**
7592
+ * The proportion of EACH expense that is denied. The statute denies a fraction
7593
+ * of every interest and financing expense, so a preparer allocating the denial
7594
+ * across expense lines needs this, not just the total.
7595
+ */
7596
+ deniedProportion: number;
7597
+ /** Interest and financing expenses that remain deductible. */
7598
+ deductibleAmount: number;
7599
+ issues: string[];
7600
+ }
7601
+ /**
7602
+ * The ratio of permissible expenses for a year beginning on `taxYearStart`.
7603
+ * Returns 0 for a year beginning before the regime applies at all.
7604
+ */
7605
+ declare function ratioOfPermissibleExpenses(taxYearStart: string): number;
7606
+ declare function computeEifelLimitation(input: EifelLimitationInput): EifelLimitationResult;
7607
+ //#endregion
7608
+ //#region src/t2/schedules/part-vi-1-deduction.d.ts
7609
+ /**
7610
+ * ITA paragraph 110(1)(k) — the deduction against taxable income for Part VI.1 tax.
6476
7611
  *
6477
7612
  * Part VI.1 taxes dividends paid on taxable preferred shares (s.191.1(1)), and
6478
7613
  * paragraph 110(1)(k) gives it back as a deduction in computing taxable income —
@@ -7708,7 +8843,14 @@ interface TaxableCapitalResult {
7708
8843
  investmentAllowance: number;
7709
8844
  /** Line 500 — taxable capital for the year (≥ 0). */
7710
8845
  taxableCapital: number;
7711
- /** Line 690 — taxable capital employed in Canada (feeds the Schedule 7 grind). */
8846
+ /**
8847
+ * Line 790 — taxable capital employed in Canada (feeds the Schedule 7 grind).
8848
+ *
8849
+ * This comment said 690, which is not a line of Schedule 33 at all. The form
8850
+ * prints "Taxable capital employed in Canada (line 701 minus amount E)"
8851
+ * against 790, and `SCHEDULE_33_TAXABLE_CAPITAL_IN_CANADA_LINE` has always
8852
+ * said so — the two disagreed and nothing checked.
8853
+ */
7712
8854
  taxableCapitalEmployedInCanada: number;
7713
8855
  /** True when > $10M — Schedule 33 must be filed (large-corporation test). */
7714
8856
  filingRequired: boolean;
@@ -8527,6 +9669,64 @@ interface FederalT2Input {
8527
9669
  */
8528
9670
  eifel?: Omit<EifelInput, 'taxYearStart' | 'isCcpc'> & {
8529
9671
  isCcpc?: boolean;
9672
+ /**
9673
+ * Schedule 130 Part 2A line 045 — the corporation's gross interest and
9674
+ * financing expenses. Distinct from `netInterestAndFinancingExpenses`,
9675
+ * which is the group's NET figure used only for the de-minimis
9676
+ * excluded-entity test. Without this the limitation has no base to work
9677
+ * on and nothing is denied.
9678
+ */
9679
+ interestAndFinancingExpenses?: number; /** Part 2D line 072 — the corporation's interest and financing revenues. */
9680
+ interestAndFinancingRevenues?: number;
9681
+ /**
9682
+ * Part 2F line 106 — adjusted taxable income, supplied directly. Wins over
9683
+ * the derivation below, same explicit-over-detail precedence as Schedule 7's
9684
+ * `aaii`/`aaiiDetail` pair.
9685
+ */
9686
+ adjustedTaxableIncome?: number;
9687
+ /**
9688
+ * Part 2F — the components of the ATI build-up this engine cannot derive
9689
+ * from the return (partnership shares, foreign affiliate amounts, exempt-IFE
9690
+ * activity, foreign tax credit gross-ups). Taxable income, the year's
9691
+ * non-capital loss, IFE, CCA, resource deductions, terminal loss, the
9692
+ * 110(1)(k) deduction, IFR and recapture are all derived from the return
9693
+ * itself and must NOT be repeated here.
9694
+ */
9695
+ adjustedTaxableIncomeDetail?: Omit<AdjustedTaxableIncomeInput, 'taxableIncome' | 'nonCapitalLossForYear' | 'lossClaimNotReducingTaxableIncome' | 'interestAndFinancingExpenses' | 'capitalCostAllowance' | 'resourceDeductions' | 'terminalLoss' | 'partVI1TaxDeduction' | 'interestAndFinancingRevenues' | 'recapture'>; /** Whether a group ratio election under subsection 18.21(2) was made. */
9696
+ hasGroupRatioElection?: boolean; /** Part 2G line 118 / Part 2K line 132 — the allocated group ratio amount. */
9697
+ groupRatioAmount?: number; /** Part 1A — the received-capacity table; its total is line 130. */
9698
+ receivedCapacity?: readonly ReceivedCapacityRow[]; /** Part 2J line 128 — restricted interest and financing expenses carried forward. */
9699
+ rifeFromPreviousYears?: number; /** Part 2I — the three preceding years' excess-capacity vintages. */
9700
+ priorYearExcessCapacity?: readonly ExcessCapacityVintage[];
9701
+ /**
9702
+ * Part 2N line 158 — partnership IFE add-back (Schedule 1 line 252).
9703
+ * DERIVED from `partnershipIfe` below × the Part 2K proportion when that
9704
+ * table is supplied; this overrides the derivation.
9705
+ */
9706
+ partnershipIfeAddBack?: number; /** Part 2M line 150 — subclause 95(2)(f.11)(ii)(D)(I). Derived from `clause95Denied`. */
9707
+ clause95FapiAmountI?: number; /** Part 2M line 155 — subclause 95(2)(f.11)(ii)(D)(II). Derived from `clause95Included`. */
9708
+ clause95FapiAmountII?: number; /** Part 1B — borrowings under a public-sector agreement producing exempt IFE. */
9709
+ exemptIfe?: readonly ExemptIfeRow[]; /** Part 1C — borrowings and other financings. Feeds lines 027/033/042. */
9710
+ borrowings?: readonly BorrowingRow[]; /** Part 1D — loans and other financings. Feeds lines 061/066. */
9711
+ loans?: readonly LoanRow[]; /** Part 1E — IFE allocated from a partnership. Feeds lines 039/142/156. */
9712
+ partnershipIfe?: readonly PartnershipIfeRow[]; /** Part 2B — IFE capitalized into depreciable property. Feeds lines 030/032. */
9713
+ capitalizedIfe?: readonly CapitalizedIfeRow[]; /** Part 2C — IFE inside resource expense pools. Feeds line 031. */
9714
+ resourceIfe?: readonly ResourceIfeRow[]; /** Part 2E — the IFE-derived portion of a 111(1)(a) loss claim. Feeds line 089. */
9715
+ lossPortionFromIfe?: readonly LossPortionFromIfeRow[];
9716
+ /**
9717
+ * Part 2A lines 027-044 — the IFE build-up. Lines fed by the sub-part
9718
+ * tables above (027, 030, 031, 032, 033, 039, 042) are filled in from them
9719
+ * and must NOT be repeated here. `interestAndFinancingExpenses` above
9720
+ * overrides the whole derivation.
9721
+ */
9722
+ ifeDetail?: InterestAndFinancingExpensesInput;
9723
+ /**
9724
+ * Part 2D lines 058-071 — the IFR build-up. Lines 061 and 066 come from
9725
+ * `loans` above. `interestAndFinancingRevenues` overrides the derivation.
9726
+ */
9727
+ ifrDetail?: InterestAndFinancingRevenuesInput; /** Part 2M, first table — amounts denied under subclause 95(2)(f.11)(ii)(D)(I). */
9728
+ clause95Denied?: readonly Clause95DeniedRow[]; /** Part 2M, second table — amounts included under subclause 95(2)(f.11)(ii)(D)(II). */
9729
+ clause95Included?: readonly Clause95IncludedRow[];
8530
9730
  };
8531
9731
  internetBusiness?: Schedule88Input;
8532
9732
  firstReturn?: Schedule101Input;
@@ -8668,11 +9868,43 @@ interface FederalT2Result {
8668
9868
  */
8669
9869
  partVI1Deduction?: PartVI1DeductionResult;
8670
9870
  /**
8671
- * EIFEL excluded-entity assessment. `requiresLimitation` true means the
8672
- * regime applies and the restriction is NOT computed — the return must not
8673
- * be filed.
9871
+ * EIFEL excluded-entity assessment whether the regime applies at all.
9872
+ * When `requiresLimitation` is true, `eifelAdjustedTaxableIncome`,
9873
+ * `eifelLimitation` and `eifelCapacity` below carry the computation itself.
8674
9874
  */
8675
9875
  eifel?: EifelResult;
9876
+ /** Schedule 130 Part 2F — adjusted taxable income (present when the regime applies). */
9877
+ eifelAdjustedTaxableIncome?: AdjustedTaxableIncomeResult;
9878
+ /**
9879
+ * Schedule 130 Parts 2K/2L — the subsection 18.2(2) denial itself.
9880
+ *
9881
+ * `deniedAmount` IS folded into `schedule1` (line 251) and therefore into
9882
+ * `netIncomeForTax` and `taxableIncome`. Because adjusted taxable income is
9883
+ * defined from taxable income "determined without regard to subsection
9884
+ * 18.2(2)", the engine runs the Schedule 1 → taxable income sequence twice:
9885
+ * once to give the limitation its base, once to apply what it produced. See
9886
+ * `runIncomeSequence` in this module.
9887
+ */
9888
+ eifelLimitation?: EifelLimitationResult;
9889
+ /**
9890
+ * Schedule 130 Parts 1A/2G/2H/2I/2J/2O — the excess-capacity regime.
9891
+ *
9892
+ * Three of its outputs are what other forms ask for by name:
9893
+ * `excessCapacityBeforeRife` is line 129, `receivedCapacity` is line 130,
9894
+ * and `rifeForYear` is Schedule 4 line 710. AT1 Schedule 21's own RIFE
9895
+ * section carries all three across.
9896
+ */
9897
+ eifelCapacity?: EifelCapacityResult;
9898
+ /**
9899
+ * Schedule 130 Part 2A — interest and financing expenses, built from the
9900
+ * borrowing, partnership, capitalized-interest and resource-pool tables
9901
+ * rather than typed in as one figure. `totalIfe` is line 045; `variableA` is
9902
+ * the gross figure lines 139/141 read, which is what the denial is a
9903
+ * proportion OF.
9904
+ */
9905
+ eifelIfe?: InterestAndFinancingExpensesResult;
9906
+ /** Schedule 130 Part 2D — interest and financing revenues; `totalIfr` is line 072. */
9907
+ eifelIfr?: InterestAndFinancingRevenuesResult;
8676
9908
  /** Schedule 88 — internet business activities (information; present when filed). */
8677
9909
  internetBusiness?: Schedule88Result;
8678
9910
  /** Schedule 101 / 24 — first return (information; present when this is a first return). */
@@ -8702,6 +9934,20 @@ interface FederalT2Result {
8702
9934
  totalFederalTax: number;
8703
9935
  /** Total tax = federal + provincial/territorial (Schedule 5). */
8704
9936
  totalTax: number;
9937
+ /**
9938
+ * Each schedule's computed figures, keyed by the CRA line they belong on.
9939
+ *
9940
+ * The counterpart of Alberta's `schedulePayloads`. Everything else on this
9941
+ * result is keyed by a name the engine chose — `netIncomeForTax`, `cca` — and
9942
+ * a form cannot be rendered from those, which is why every federal paper Form
9943
+ * View showed "not available" against every computed line. This carries the
9944
+ * same figures under the numbers the return is filed by.
9945
+ *
9946
+ * Deliberately PARTIAL: a schedule appears only where the line each figure
9947
+ * belongs on is recorded in code rather than inferred. See
9948
+ * `t2-schedule-line-items.ts` for why that restraint is the point.
9949
+ */
9950
+ schedulePayloads: T2ScheduleData[];
8705
9951
  }
8706
9952
  declare function computeFederalT2(input: FederalT2Input): FederalT2Result;
8707
9953
  //#endregion
@@ -9238,260 +10484,6 @@ interface T2SettlementResult {
9238
10484
  }
9239
10485
  declare function computeT2Settlement(input: T2SettlementInput): T2SettlementResult;
9240
10486
  //#endregion
9241
- //#region src/t2/schedules/eifel-adjusted-taxable-income.d.ts
9242
- /**
9243
- * ITA subsection 18.2(1) — **adjusted taxable income**, the base the EIFEL
9244
- * ceiling is computed on.
9245
- *
9246
- * `eifel-limitation.ts` took this as a required input because deriving it
9247
- * partially would produce a plausible figure from an incomplete definition. This
9248
- * derives it, and is explicit about the components it does and does not cover.
9249
- *
9250
- * ── What it is ──────────────────────────────────────────────────────────────
9251
- *
9252
- * An EBITDA-like measure, built from taxable income by adding back the things the
9253
- * regime is measuring against and removing the things that would double-count.
9254
- *
9255
- * ATI = A + B − C
9256
- *
9257
- * A = D − E the income base
9258
- * B the ADD-BACKS
9259
- * C the REDUCTIONS
9260
- *
9261
- * **The add-backs include the interest and financing expenses themselves.** That
9262
- * is the point of the measure and the thing to hold on to: the ceiling is a
9263
- * percentage of income computed *before* the very expenses being limited, so a
9264
- * corporation cannot shrink its own ceiling by borrowing more.
9265
- *
9266
- * ── A — the income base (D − E) ─────────────────────────────────────────────
9267
- *
9268
- * **D** is taxable income for the year, determined **without regard to** s.18.2(2)
9269
- * itself, paragraphs 12(1)(l.2) and 111(1)(a.1), and clause 95(2)(f.11)(ii)(D) —
9270
- * a non-resident uses taxable income earned in Canada on the same basis. The
9271
- * circularity is deliberate: the limitation cannot be an input to its own base.
9272
- *
9273
- * **E** subtracts the year's non-capital loss on the same basis, any amount
9274
- * claimed under paragraph 111(1)(a) that did not actually reduce taxable income,
9275
- * and a controlled-foreign-affiliate component (`T × U ÷ V`).
9276
- *
9277
- * ── B — the add-backs ───────────────────────────────────────────────────────
9278
- *
9279
- * (a) interest and financing expenses for the year
9280
- * (b) capital cost allowance and resource deductions — paragraph 20(1)(a),
9281
- * 59.1(a) and subsections 66(4), 66.1(2)/(3), 66.2(2), 66.21(4), 66.4(2),
9282
- * 66.7(1)-(5)
9283
- * (c) terminal losses — subsection 20(16)
9284
- * (d) the taxpayer's share of a partnership's 20(1)(a) and 20(16) deductions
9285
- * (e) the portion of a paragraph 111(1)(e) limited-partnership-loss claim
9286
- * attributable to those amounts
9287
- *
9288
- * ── C — the reductions ──────────────────────────────────────────────────────
9289
- *
9290
- * (a) interest and financing revenues
9291
- * (b) recapture — subsection 13(1)
9292
- * (c) the taxpayer's share of a partnership's 13(1) inclusion
9293
- * (d) resource inclusions — subsections 59(1), 59(3.2), paragraph 59.1(b)
9294
- * (e) for a corporation, a grossed-up foreign tax credit amount:
9295
- * **100/28** of what would be deductible under s.126(1), and
9296
- * the s.126(2) amounts times the relevant factor
9297
- *
9298
- * ── Not modelled ────────────────────────────────────────────────────────────
9299
- *
9300
- * The trust variant of C(e), and the later paragraphs of B and C dealing with
9301
- * foreign affiliate income and exempt interest. Each is available as an explicit
9302
- * `otherAdditions` / `otherReductions` input rather than silently omitted, so a
9303
- * preparer with one of those amounts can still arrive at the right figure and the
9304
- * engine does not pretend the definition is shorter than it is.
9305
- *
9306
- * Source: `research/sources/legislation/ITA-section-18.2-EIFEL.txt`.
9307
- *
9308
- * Pure, whole dollars.
9309
- */
9310
- /** C(e)(i) — s.126(1) amounts are grossed up by 100/28. */
9311
- declare const FOREIGN_TAX_CREDIT_GROSS_UP: number;
9312
- interface AdjustedTaxableIncomeInput {
9313
- /**
9314
- * D — taxable income for the year, determined **without regard to** s.18.2(2),
9315
- * paragraphs 12(1)(l.2) and 111(1)(a.1), and clause 95(2)(f.11)(ii)(D). For a
9316
- * non-resident, taxable income earned in Canada on the same basis.
9317
- *
9318
- * Signed: a loss year gives a negative figure and the definition permits it.
9319
- */
9320
- taxableIncome: number;
9321
- /** E(a) — the non-capital loss for the year, on the same determinations. */
9322
- nonCapitalLossForYear?: number;
9323
- /**
9324
- * E(a.1) — an amount claimed under paragraph 111(1)(a) **to the extent it did
9325
- * not reduce** taxable income as determined for D.
9326
- */
9327
- lossClaimNotReducingTaxableIncome?: number;
9328
- /** E(b) — the controlled foreign affiliate component, `T × U ÷ V`. */
9329
- foreignAccrualPropertyLossComponent?: number;
9330
- /** B(a) — interest and financing expenses for the year. */
9331
- interestAndFinancingExpenses?: number;
9332
- /** B(b) — capital cost allowance, paragraph 20(1)(a). */
9333
- capitalCostAllowance?: number;
9334
- /** B(b) — resource deductions under s.59.1(a) and the s.66 series. */
9335
- resourceDeductions?: number;
9336
- /** B(c) — terminal losses, subsection 20(16). */
9337
- terminalLoss?: number;
9338
- /** B(d) — the taxpayer's share of a partnership's 20(1)(a) / 20(16) deductions. */
9339
- partnershipCapitalAndTerminalShare?: number;
9340
- /** B(e) — the attributable portion of a paragraph 111(1)(e) claim. */
9341
- limitedPartnershipLossPortion?: number;
9342
- /** Any further B paragraph this module does not model. */
9343
- otherAdditions?: number;
9344
- /** C(a) — interest and financing revenues for the year. */
9345
- interestAndFinancingRevenues?: number;
9346
- /** C(b) — recapture included under subsection 13(1). */
9347
- recapture?: number;
9348
- /** C(c) — the taxpayer's share of a partnership's 13(1) inclusion. */
9349
- partnershipRecaptureShare?: number;
9350
- /** C(d) — inclusions under s.59(1), 59(3.2) or paragraph 59.1(b). */
9351
- resourceInclusions?: number;
9352
- /** C(e)(i) — amounts deductible under s.126(1). Grossed up by 100/28 here. */
9353
- section126_1ForeignTaxCredits?: number;
9354
- /** C(e)(ii) — amounts deductible under s.126(2), already at the relevant factor. */
9355
- section126_2GrossedUp?: number;
9356
- /** Any further C paragraph this module does not model. */
9357
- otherReductions?: number;
9358
- }
9359
- interface AdjustedTaxableIncomeResult {
9360
- /** A — the income base, D − E. Signed. */
9361
- incomeBase: number;
9362
- /** B — total add-backs. */
9363
- totalAdditions: number;
9364
- /** C — total reductions. */
9365
- totalReductions: number;
9366
- /** A + B − C. **Signed** — the definition permits a negative result. */
9367
- adjustedTaxableIncome: number;
9368
- issues: string[];
9369
- }
9370
- declare function computeAdjustedTaxableIncome(input: AdjustedTaxableIncomeInput): AdjustedTaxableIncomeResult;
9371
- //#endregion
9372
- //#region src/t2/schedules/eifel-limitation.d.ts
9373
- /**
9374
- * ITA subsection 18.2(2) — the excessive interest and financing expenses
9375
- * limitation itself.
9376
- *
9377
- * `eifel-excluded-entity.ts` decides **whether** the regime applies. This decides
9378
- * **how much** it denies, which was previously left unbuilt on the grounds that
9379
- * computing it from an unbuilt definition would be confidently wrong.
9380
- *
9381
- * ── The provision ───────────────────────────────────────────────────────────
9382
- *
9383
- * s.18.2(2) denies a *proportion* of each interest and financing expense:
9384
- *
9385
- * (A − (B + C + D + E)) ÷ F
9386
- *
9387
- * A the taxpayer's interest and financing expenses for the year
9388
- * B the group-ratio amount under s.18.21(2) where that applies, otherwise
9389
- * **G × H** — the ratio of permissible expenses times adjusted taxable income
9390
- * C the taxpayer's interest and financing revenues for the year
9391
- * D received capacity, to the extent it exceeds the amount deductible under
9392
- * paragraph 111(1)(a.1)
9393
- * E absorbed capacity
9394
- * F ordinarily the same figure as A
9395
- *
9396
- * Because F is A in the ordinary case, the *amount* denied is simply
9397
- *
9398
- * denied = A − (B + C + D + E), floored at nil
9399
- *
9400
- * which is the form this module computes, while still reporting the proportion —
9401
- * the statute denies a fraction of *each* expense, and a preparer allocating the
9402
- * denial across expense lines needs the fraction rather than the total.
9403
- *
9404
- * ── The ratio of permissible expenses ───────────────────────────────────────
9405
- *
9406
- * Keyed off when the taxation year **BEGINS**, not when it ends:
9407
- *
9408
- * begins on or after 2023-10-01 and before 2024-01-01 → **40%**
9409
- * begins on or after 2024-01-01 → **30%**
9410
- *
9411
- * The 40% band is transitional and narrow — one quarter — and it does **not**
9412
- * apply when determining cumulative unused excess capacity for a year beginning
9413
- * on or after 1 January 2024. That carve-out is not modelled; excess-capacity
9414
- * carry-forward is a separate mechanism this module does not compute.
9415
- *
9416
- * ── What this module does NOT compute ───────────────────────────────────────
9417
- *
9418
- * **Adjusted taxable income** is an input, not a derivation. Its definition is a
9419
- * build-up from taxable income through a dozen add-backs and reductions —
9420
- * interest and financing expenses, capital cost allowance, resource deductions,
9421
- * loss claims with their own nested formulas — each with its own defined term. A
9422
- * partial implementation would produce a plausible number from an incomplete
9423
- * definition, which is precisely the failure this module was deferred to avoid.
9424
- * It is therefore **required**, and an absent one denies nothing while saying so.
9425
- *
9426
- * Likewise the group-ratio election under s.18.21, and the received/absorbed
9427
- * capacity amounts, which come from the excess-capacity regime.
9428
- *
9429
- * Source: `research/sources/legislation/ITA-section-18.2-EIFEL.txt`.
9430
- *
9431
- * Pure, whole dollars.
9432
- */
9433
- /** The ratio bands, keyed off the taxation year START. */
9434
- declare const EIFEL_TRANSITIONAL_RATIO = 0.4;
9435
- declare const EIFEL_STANDARD_RATIO = 0.3;
9436
- /** The regime's first day — years beginning before this are outside it. */
9437
- declare const EIFEL_FIRST_YEAR_START = "2023-10-01";
9438
- /** The transitional 40% band ends when years beginning in 2024 start. */
9439
- declare const EIFEL_STANDARD_RATIO_FROM = "2024-01-01";
9440
- interface EifelLimitationInput {
9441
- /** A — interest and financing expenses for the year. */
9442
- interestAndFinancingExpenses: number;
9443
- /**
9444
- * H — adjusted taxable income. **Required**: the definition is a large build-up
9445
- * this module does not derive, and an absent one denies nothing rather than
9446
- * being assumed.
9447
- */
9448
- adjustedTaxableIncome?: number;
9449
- /** C — interest and financing revenues for the year. */
9450
- interestAndFinancingRevenues?: number;
9451
- /**
9452
- * D — received capacity in excess of the amount deducted under paragraph
9453
- * 111(1)(a.1).
9454
- */
9455
- excessReceivedCapacity?: number;
9456
- /** E — absorbed capacity for the year. */
9457
- absorbedCapacity?: number;
9458
- /**
9459
- * B — the group ratio amount under s.18.21(2), where the election was made.
9460
- * Supplying it REPLACES the ratio × adjusted taxable income computation, as the
9461
- * provision directs.
9462
- */
9463
- groupRatioAmount?: number;
9464
- /** Taxation year start, ISO `YYYY-MM-DD` — selects the ratio band. */
9465
- taxYearStart: string;
9466
- }
9467
- interface EifelLimitationResult {
9468
- /** G — the ratio of permissible expenses that applied. */
9469
- ratioOfPermissibleExpenses: number;
9470
- /** B — the permitted amount, however it was arrived at. */
9471
- permittedAmount: number;
9472
- /** Whether B came from the group ratio election rather than ratio × income. */
9473
- usedGroupRatio: boolean;
9474
- /** B + C + D + E — everything that shelters the expenses. */
9475
- totalShelter: number;
9476
- /** The amount denied, floored at nil. */
9477
- deniedAmount: number;
9478
- /**
9479
- * The proportion of EACH expense that is denied. The statute denies a fraction
9480
- * of every interest and financing expense, so a preparer allocating the denial
9481
- * across expense lines needs this, not just the total.
9482
- */
9483
- deniedProportion: number;
9484
- /** Interest and financing expenses that remain deductible. */
9485
- deductibleAmount: number;
9486
- issues: string[];
9487
- }
9488
- /**
9489
- * The ratio of permissible expenses for a year beginning on `taxYearStart`.
9490
- * Returns 0 for a year beginning before the regime applies at all.
9491
- */
9492
- declare function ratioOfPermissibleExpenses(taxYearStart: string): number;
9493
- declare function computeEifelLimitation(input: EifelLimitationInput): EifelLimitationResult;
9494
- //#endregion
9495
10487
  //#region src/t2/schedules/schedule27-mp.d.ts
9496
10488
  /**
9497
10489
  * T2 Schedule 27 — Canadian Manufacturing and Processing Profits Deduction
@@ -9667,4 +10659,4 @@ interface CanadianMPProfitsResult {
9667
10659
  declare function computeCanadianMPProfits(input: CanadianMPProfitsInput): CanadianMPProfitsResult;
9668
10660
  declare function computeMpDeduction(input: MpDeductionInput, rates?: MpDeductionRates): MpDeductionResult;
9669
10661
  //#endregion
9670
- export { computeQuebecReturn as $, CeeSuccessorOverride as $a, computeIeg as $c, RSI_WORD_GAP as $i, AlbertaCcaOverride as $l, PermanentEstablishment as $n, ALBERTA_SRED_PROGRAM_START as $o, TaxableIncomeResult as $r, At1ScheduleDataLike$5 as $s, computeTaxableCapital as $t, LossCarrybackYear as $u, T2SettlementInput as A, AlbertaSchedule15Result as Aa, schedule17Values as Ac, Schedule12Adjustment as Ai, AlbertaSchedule18Input as Al, DepletionResult as An, SfedeCountryRegularResult as Ao, PartVI1DeductionBand as Ar, RoyaltyTaxCreditShelterAllocationResult as As, Schedule88Input as At, computeClass13 as Au, T2GifiLine as B, CdeRegularInput as Ba, IegAgreementMemberResult as Bc, albertaRecaptureDifference as Bi, AT1_RESERVE_LINES as Bl, computeCumulativeForeignResource as Bn, computeCeeRegular as Bo, ProvincialRateChange as Br, schedule5Values as Bs, Schedule54Input as Bt, At4970Input as Bu, EifelLimitationResult as C, xmlEscape as Ca, Schedule2FilingInput as Cc, CORP_TAX_2024 as Ci, DonationMaximumResult as Cl, CdeInput as Cn, FedeSuccessorInput as Co, deferredIncomeTaxProvisionAddBack as Cr, computeAlbertaSchedule7 as Cs, FederalT2Result as Ct, Class14Property as Cu, AdjustedTaxableIncomeResult as D, AlbertaReturnResult as Da, schedule12Values as Dc, LossScheduleInput as Di, Schedule20Result as Dl, CogpeInput as Dn, SfedeCountryRegularFederal as Do, recaptureAddBack as Dr, RoyaltyTaxCreditLongestAssociatedYear as Ds, Schedule101Result as Dt, LeaseholdLayerResult as Du, AdjustedTaxableIncomeInput as E, AlbertaReturnInput as Ea, schedule12LossDeductions as Ec, resolveCorpTaxRates as Ei, Schedule20Input as El, CeeResult as En, Schedule15FilingResult as Eo, mealsAndEntertainmentAddBack as Er, AlbertaSchedule6Result as Es, Schedule101Input as Et, LeaseholdLayer as Eu, T2CifGifi as F, CcogpeSuccessorFederal as Fa, schedule29Values as Fc, albertaCapitalGainDifference as Fi, At1CategoryTotals as Fl, Schedule12ResourceDeductionsInput as Fn, computeAlbertaSchedule15 as Fo, EifelExemption as Fr, At1Schedule5PoolTransfer as Fs, computeSchedule55 as Ft, CCA_DECLINING_BALANCE_RATES_2024 as Fu, Co17Certification as G, CdeSuccessorOverride as Ga, IegLimitAllocation as Gc, reconcileAlbertaNetIncome as Gi, At1ReserveKind as Gl, CapitalDisposition as Gn, computeEdaRegular as Go, PROVINCE_RATE_BOOK as Gr, computeSchedule4 as Gs, computeGrip as Gt, At4970Totals as Gu, T2ReturnInput as H, CdeRegularResult as Ha, IegAllocationResult as Hc, albertaResourceDeductionDifference as Hi, AlbertaSchedule17Input as Hl, computeForeignExploration as Hn, computeCfreRegular as Ho, blendProvinceRateTable as Hr, ForeignInvestmentCountryResult as Hs, computeSchedule54 as Ht, At4970ProjectRow as Hu, T2CifPartI as I, CcogpeSuccessorInput as Ia, schedule2Values as Ic, albertaCcaDifference as Ii, At1DispositionCategory as Il, Schedule12ResourceDeductionsResult as In, computeCcogpeRegular as Io, EifelInput as Ir, At1Schedule5PredecessorTransfer as Is, LRIP_INVESTMENT_CORPORATION_MULTIPLE as It, CCA_RATE_BOOK as Iu, renderCo17DraftReturn as J, CeeRegularInput as Ja, computeIegAgreement as Jc, toRsiLineItems as Ji, computeAlbertaSchedule17 as Jl, computeSchedule6 as Jn, computeFedeSuccessor as Jo, ProvincialRate as Jr, AgriProcessingCurrentYearInput as Js, Schedule43Result as Jt, LossContinuityResult as Ju, Co17Identity as K, CdeSuccessorResult as Ka, allocateIegEvenly as Kc, toRsiHeader as Ki, At1ReserveRowResult as Kl, DispositionResult as Kn, computeEdaSuccessor as Ko, ProvinceCode as Kr, schedule4Values as Ks, Schedule43Input as Kt, computeAt4970 as Ku, T2CifQuestionnaire as L, CcogpeSuccessorOverride as La, schedule4970Values as Lc, albertaCcaScheduleAdjustments as Li, SECTION_34_2_GROSS_UP as Ll, computeCde as Ln, computeCcogpeSuccessor as Lo, EifelResult as Lr, At1Schedule5SuccessoredPoolEntry as Ls, LRIP_INVESTMENT_INCOME_FACTOR as Lt, CcaRateTable as Lu, computeT2Settlement as M, CcogpeRegularInput as Ma, schedule1Values as Mc, Schedule12Line as Mi, At1AbilEntry as Ml, ForeignExplorationResult as Mn, SfedeCountrySuccessorInput as Mo, computePartVI1Deduction as Mr, schedule6Values as Ms, normalizeSchedule88 as Mt, computeClass141AdditionalAllowance as Mu, T2CifAddress as N, CcogpeRegularOverride as Na, schedule20Values as Nc, Schedule12Result as Ni, At1AbilResult as Nl, ForeignPerCountryInput as Nn, SfedeCountrySuccessorOverride as No, partVI1DeductionMultiple as Nr, AlbertaSchedule5Input as Ns, Schedule55Input as Nt, computeClass141RecaptureReduction as Nu, FOREIGN_TAX_CREDIT_GROSS_UP as O, computeAlbertaReturn as Oa, schedule13Values as Oc, LossScheduleResult as Oi, computeSchedule20 as Ol, CogpeResult as On, SfedeCountryRegularInput as Oo, terminalLossDeduction as Or, RoyaltyTaxCreditQuarter as Os, computeSchedule101 as Ot, MAX_LEASEHOLD_PERIODS as Ou, T2CifData as P, CcogpeRegularResult as Pa, schedule21Values as Pc, albertaAbilDifference as Pi, At1CategoryResult as Pl, ForeignPerCountryResult as Pn, SfedeCountrySuccessorResult as Po, EIFEL_EFFECTIVE_FROM as Pr, AlbertaSchedule5Result as Ps, Schedule55Result as Pt, leaseholdPeriods as Pu, QuebecReturnResult as Q, CeeSuccessorInput as Qa, IegResult as Qc, RSI_NEGATIVE_PREFIX as Qi, computeAlbertaSchedule16 as Ql, AllocatedProvince as Qn, ALBERTA_SRED_EXPENDITURE_CUTOFF as Qo, TaxableIncomeLine as Qr, AgriProcessingVintageResult as Qs, TaxableCapitalResult as Qt, LossCarrybackResult as Qu, T2CifSettlement as R, CcogpeSuccessorResult as Ra, IegAgreementInput as Rc, albertaCurrentYearLoss as Ri, computeAlbertaSchedule18 as Rl, computeCee as Rn, computeCdeRegular as Ro, EifelThresholds as Rr, At1Schedule5SuccessoredPoolEntryResult as Rs, LripDividendEvent as Rt, isDecliningBalanceClass as Ru, EifelLimitationInput as S, at1YesNo as Sa, Schedule21FilingInput as Sc, resolveRates as Sd, computeSBD as Si, DonationMaximumInput as Sl, computeSchedule13 as Sn, FedeSuccessorFederal as So, computeSchedule1 as Sr, RoyaltySupplementalPriorYearAdjustmentResult as Ss, FederalT2Input as St, Class14Input as Su, ratioOfPermissibleExpenses as T, at1Engine as Ta, schedule10Values as Tc, CorpTaxRates as Ti, AlbertaGiftCarryforward as Tl, CeeInput as Tn, FedeSuccessorResult as To, incomeTaxProvisionAddBack as Tr, AlbertaSchedule6Input as Ts, FirstReturnEvent as Tt, Class14Result as Tu, t2Engine as U, CdeSuccessorFederal as Ua, IegGroupMember as Uc, albertaTerminalLossDifference as Ui, AlbertaSchedule17Result as Ul, computeSchedule12ResourceDeductions as Un, computeCfreSuccessor as Uo, dayWeightedRate as Ur, Schedule4Input$1 as Us, GripInput as Ut, At4970ProjectRowResult as Uu, renderT2DraftReturn as V, CdeRegularOverride as Va, IegAgreementResult as Vc, albertaReserveDifference as Vi, AT1_RESERVE_TOTAL_LINES as Vl, computeDepletion as Vn, computeCeeSuccessor as Vo, ProvincialRateChanges as Vr, ForeignInvestmentCountryInput as Vs, Schedule54Result as Vt, At4970JurisdictionAmount as Vu, Co17Address as W, CdeSuccessorInput as Wa, IegGroupResult as Wc, computeSchedule12 as Wi, At1ReserveBalances as Wl, computeSpecifiedForeignExploration as Wn, computeCmedb as Wo, PROVINCE_RATES_2024 as Wr, Schedule4Result$1 as Ws, GripResult as Wt, At4970Result as Wu, co17Engine as X, CeeRegularResult as Xa, IEG_2024 as Xc, RSI_COLUMN_GAP as Xi, AlbertaSchedule16Result as Xl, Schedule5Result as Xn, computeSfedeCountrySuccessor as Xo, resolveProvinceRates as Xr, AgriProcessingTaxCreditResult as Xs, LARGE_CORPORATION_THRESHOLD as Xt, LossCarrybackError as Xu, Co17ReturnInput as Y, CeeRegularOverride as Ya, computeIegGroupFigures as Yc, toRsiSchedule as Yi, AlbertaSchedule16Input as Yl, Schedule5Input as Yn, computeSfedeCountryRegular as Yo, isSchedule5Province as Yr, AgriProcessingTaxCreditInput as Ys, computeSchedule43 as Yt, computeLossContinuity as Yu, QuebecReturnInput as Z, CeeSuccessorFederal as Za, IegInput as Zc, RSI_DELIMITER as Zi, assistanceFrom as Zl, computeSchedule5 as Zn, schedule15Values as Zo, TaxableIncomeInput as Zr, AgriProcessingVintageInput as Zs, TaxableCapitalInput as Zt, LossCarrybackInput as Zu, computeSmallManufacturerTest as _, albertaBalanceUnpaid as _a, At1ScheduleValue as _c, RateBookEntry as _d, SbdInput as _i, LimitedPartnershipLossesResult as _l, Schedule21Input as _n, EdaSuccessorResult as _o, Schedule1NotFileableError as _r, AlbertaSchedule7Input as _s, T2_LINE_META as _t, Class13Input as _u, MP_RATES_2024 as a, formatRsiDate as aa, MaximumAllowableDeductionInput as ac, AlbertaSbdInput as ad, CcpcActiveBusinessTaxInput as ai, iegT661SourceLine as al, ItcRecaptureItemResult as an, CfreCountrySuccessorFederal as ao, computeSchedule4Losses as ar, Schedule9AllocationResult as as, computeQuebecTax as at, CcaClassInput as au, EIFEL_STANDARD_RATIO_FROM as b, assertCriticalFields as ba, Schedule1FilingInput as bc, hasExactRateYear as bd, computeAggregateInvestmentIncome as bi, AT1_DONATION_GAIN_RATE as bl, ReserveContinuityResult as bn, FedeRegularOverride as bo, assertSchedule1Fileable as br, RoyaltySupplementalPartnershipResult as bs, runConformance as bt, Class141AdditionalAllowanceResult as bu, MpDeductionResult as c, renderRsiHeader as ca, Schedule3Result as cc, AB_GENERAL_RATE_BANDS as cd, PartITaxResult as ci, NonCapitalLossByYearOfOriginInput as cl, ZetmInput as cn, CfreCountrySuccessorResult as co, Part4RdtohResult as cr, allocateSchedule9ExpenditureLimit as cs, QuebecTaxRates as ct, Schedule8Entry as cu, SMALL_MANUFACTURER_INCOME_THRESHOLD as d, AT1_CRITICAL_MANDATORY_FIELDS as da, AllocationFactorInput as dc, computeDayWeightedGeneralTax as dd, AdjustedAggregateInvestmentIncomeInput as di, OtherLossVintageEntry as dl, AssociatedMemberInput as dn, CmedbResult as do, Schedule2Input as dr, schedule9Values as ds, CertificationFixture as dt, computeCcaClass as du, RsiHeaderInput as ea, At1ScheduleValueLike$5 as ec, computeLossCarryback as ed, charitableDonationsDeduction as ei, computeIegBaseAmount as el, Schedule31Input as en, CeeSuccessorResult as eo, ProvincialAllocationInput as er, ALBERTA_SRED_TAX_CREDIT_RATE as es, QuebecAllocationResult as et, AlbertaSchedule13ClassResult as eu, SmallManufacturerTestInput as f, At1CriticalFieldMissingError as fa, SINGLE_JURISDICTION_ALBERTA_FACTOR as fc, AB_TAX_2024 as fd, AdjustedAggregateInvestmentIncomeResult as fi, OtherLossVintageRowResult as fl, AssociatedMemberResult as fn, EdaRegularFederal as fo, Schedule2Result as fr, PoliticalContributionInput as fs, ConformanceResult as ft, computeCcaSchedule as fu, computePart2MPProfits as g, At1TransmitterInfo as ga, At1ScheduleData as gc, RateBook as gd, BusinessLimitResult as gi, LimitedPartnershipLossRowResult as gl, computeBusinessLimitAllocation as gn, EdaSuccessorInput as go, Schedule1LineDefect as gr, schedule8Values as gs, T2LineKey as gt, CLASS_14_1_TRANSITIONAL_RATE as gu, computeMpDeduction as h, At1TaxPayableMismatchError as ha, AT1_SCHEDULES_WITH_BUILDERS as hc, resolveAlbertaTaxRates as hd, BusinessLimitInput as hi, LimitedPartnershipLossRow as hl, allocateEvenly as hn, EdaSuccessorFederal as ho, Schedule1Line as hr, computeSchedule8 as hs, LineCheck as ht, CLASS_14_1_RECAPTURE_REDUCTION_RATE as hu, MP_GROSS_REVENUE_THRESHOLD as i, formatRsiAmount as ia, InvestorTaxCreditResult as ic, AlbertaCorporationStatus as id, nonCapitalLossApplied as ii, computeIegEligibleExpenditures as il, ItcRecaptureItem as in, CfreCountryRegularResult as io, Schedule4Result as ir, Schedule9AllocationMemberResult as is, QuebecTaxResult as it, computeAlbertaSchedule13 as iu, T2SettlementResult as j, CcogpeRegularFederal as ja, schedule18Values as jc, Schedule12Input as ji, AlbertaSchedule18Result as jl, ForeignExplorationInput as jn, SfedeCountrySuccessorFederal as jo, PartVI1DeductionResult as jr, computeAlbertaSchedule6 as js, Schedule88Result as jt, computeClass14 as ju, computeAdjustedTaxableIncome as k, AlbertaSchedule15Input as ka, schedule16Values as kc, computeLossSchedule as ki, AT1_DISPOSITION_CATEGORIES as kl, DepletionInput as kn, SfedeCountryRegularOverride as ko, PART_VI_1_DEDUCTION_BANDS as kr, RoyaltyTaxCreditShelterAllocation as ks, SCHEDULE_88_MAX_URLS as kt, MIN_LEASEHOLD_PERIODS as ku, Part2MPProfitsInput as l, renderRsiLineItem as la, computeSchedule3 as lc, DayWeightedRateResult as ld, computeCcpcActiveBusinessTax as li, NonCapitalLossByYearOfOriginResult as ll, ZetmResult as ln, CmedbFederal as lo, REFUNDABLE_PART_I_RATE as lr, computeAlbertaSchedule9 as ls, resolveQuebecTaxRates as lt, Schedule8Result$1 as lu, computeCanadianMPProfits as m, At1MandatoryFieldMissingError as ma, AT1_SCHEDULES_WITHOUT_BUILDERS as mc, AlbertaTaxRates as md, AggregateInvestmentIncomeResult as mi, computeOtherLossByYearOfOrigin as ml, BusinessLimitAllocationResult as mn, EdaRegularResult as mo, Schedule1Input as mr, Schedule8Result as ms, ExpectedSource as mt, CLASS_14_1_MINIMUM_DEDUCTION as mu, CanadianMPProfitsResult as n, RsiLineItemError as na, CapitalInvestmentTaxCreditResult as nc, AlbertaTaxResult as nd, dividendsDeductibleS112 as ni, IegEligibleExpendituresInput as nl, computeSchedule31 as nn, CfreCountryRegularInput as no, computeProvincialAllocation as nr, AlbertaSchedule9Result as ns, computeQuebecAllocationFactor as nt, AlbertaSchedule13Result as nu, MpDeductionInput as o, formatRsiText as oa, MaximumAllowableDeductionResult as oc, AlbertaSbdResult as od, CcpcActiveBusinessTaxResult as oi, LossVintageEntry as ol, ItcRecaptureResult as on, CfreCountrySuccessorInput as oo, PART_IV_RATE as or, Schedule9FieldOfScience as os, QC_TAX_2024 as ot, CcaClassResult as ou, SmallManufacturerTestResult as p, At1FilingData as pa, computeAllocationFactor as pc, AB_TAX_RATE_BOOK as pd, AggregateInvestmentIncomeInput as pi, computeNonCapitalLossByYearOfOrigin as pl, BusinessLimitAllocationInput as pn, EdaRegularInput as po, computeSchedule2 as pr, Schedule8Input as ps, ConformanceSummary as pt, computeSchedule8$1 as pu, Co17ReturnData as q, CeeRegularFederal as qa, allocateIegExpenditureLimit as qc, toRsiJacketSchedules as qi, At1ReserveTable as ql, Schedule6Result as qn, computeFedeRegular as qo, ProvinceRateTable as qr, AgriProcessingCombinedVintageInput as qs, Schedule43Rates as qt, LossContinuityInput as qu, MP_EXCLUDED_ACTIVITIES as r, RsiScheduleInput as ra, InvestorTaxCreditInput as rc, computeAlbertaTax as rd, netCapitalLossApplied as ri, IegEligibleExpendituresResult as rl, ITC_RECAPTURE_PERIOD_YEARS as rn, CfreCountryRegularOverride as ro, Schedule4Input as rr, Schedule9AllocationMember as rs, QuebecTaxInput as rt, FederalCcaClass as ru, MpDeductionRates as s, renderAt1Rsi as sa, Schedule3Input as sc, computeAlbertaSbd as sd, PartITaxInput as si, LossVintageRowResult as sl, computeItcRecapture as sn, CfreCountrySuccessorOverride as so, Part4RdtohInput as sr, Schedule9GroupFilingInput as ss, QC_TAX_RATE_BOOK as st, CcaScheduleResult as su, CanadianMPProfitsInput as t, RsiLineItem as ta, CapitalInvestmentTaxCreditInput as tc, AlbertaTaxInput as td, computeTaxableIncome as ti, computeIegReductionFactor as tl, Schedule31Result as tn, CfreCountryRegularFederal as to, ProvincialAllocationResult as tr, AlbertaSchedule9Input as ts, QuebecEstablishment as tt, AlbertaSchedule13Input as tu, Part2MPProfitsResult as u, renderAt1NetFile as ua, schedule3Values as uc, GeneralRateBand as ud, computePartITax as ui, OtherLossByYearOfOriginResult as ul, computeZetm as un, CmedbInput as uo, computePart4Rdtoh as ur, computeSchedule9MaximumExpenditureLimit as us, T2_CERTIFICATION_FIXTURES as ut, UnsupportedCcaClassError as uu, EIFEL_FIRST_YEAR_START as v, assertAt1MandatoryComplete as va, Schedule10FilingInput as vc, earliestRateYear as vd, SbdResult as vi, computeLimitedPartnershipLossRow as vl, Schedule21Result as vn, FedeRegularFederal as vo, Schedule1Result as vr, AlbertaSchedule7Result as vs, foldT2Lines as vt, Class13Result as vu, computeEifelLimitation as w, At1ReturnInput as wa, at1LineItemId as wc, CORP_TAX_RATE_BOOK as wi, computeDonationMaximum as wl, CdeResult as wn, FedeSuccessorOverride as wo, findSchedule1LineDefects as wr, schedule7Values as ws, computeFederalT2 as wt, Class14PropertyResult as wu, EIFEL_TRANSITIONAL_RATIO as x, at1TaxPayableDeductions as xa, Schedule20FilingInput as xc, latestRateYear as xd, computeBusinessLimit as xi, AT1_DONATION_INCOME_RATE as xl, ReserveContinuityRow as xn, FedeRegularResult as xo, ccaDeduction as xr, RoyaltySupplementalPriorYearAdjustment as xs, runConformanceSuite as xt, Class141RecaptureReductionInput as xu, EIFEL_STANDARD_RATIO as y, assertAt1TaxPayableReconciles as ya, Schedule12FilingInput as yc, extendRateBook as yd, computeAdjustedAggregateInvestmentIncome as yi, computeLimitedPartnershipLosses as yl, computeSchedule21 as yn, FedeRegularInput as yo, amortizationAddBack as yr, RoyaltySupplementalPartnership as ys, formatConformanceReport as yt, Class141AdditionalAllowanceInput as yu, T2CifShareholder as z, CdeRegularFederal as za, IegAgreementMember as zc, albertaDispositionAdjustments as zi, AT1_RESERVE_KINDS as zl, computeCogpe as zn, computeCdeSuccessor as zo, assessEifel as zr, computeAlbertaSchedule5 as zs, LripEventResult as zt, resolveCcaRates as zu };
10662
+ export { CertificationFixture as $, RsiScheduleInput as $a, InvestorTaxCreditInput as $c, computeLossCarryback as $d, AdjustedAggregateInvestmentIncomeResult as $i, IegEligibleExpendituresResult as $l, Schedule2Input as $n, CfreCountryRegularOverride as $o, computeBorrowings as $r, Schedule9AllocationMember as $s, AssociatedMemberInput as $t, AlbertaSchedule13ClassResult as $u, T2ReturnInput as A, albertaCurrentYearLoss as Aa, AlbertaSchedule5Result as Ac, computeClass14 as Ad, dayWeightedRate as Ai, schedule21Values$1 as Al, computeForeignExploration as An, CcogpeRegularResult as Ao, BorrowingRow as Ar, SfedeCountrySuccessorResult as As, computeSchedule54 as At, AlbertaSchedule18Result as Au, QuebecReturnResult as B, assertAt1TransmitterValid as Ba, Schedule4Result$1 as Bc, At4970JurisdictionAmount as Bd, TaxableIncomeResult as Bi, IegGroupResult as Bl, AllocatedProvince as Bn, CdeSuccessorInput as Bo, InterestAndFinancingExpensesInput as Br, computeCmedb as Bs, TaxableCapitalResult as Bt, AT1_RESERVE_TOTAL_LINES as Bu, T2CifGifi as C, Schedule12Input as Ca, RoyaltyTaxCreditLongestAssociatedYear as Cc, Class14PropertyResult as Cd, AdjustedTaxableIncomeInput as Ci, schedule12Values as Cl, Schedule12ResourceDeductionsInput as Cn, AlbertaReturnResult as Co, EIFEL_STANDARD_RATIO as Cr, SfedeCountryRegularFederal as Cs, computeSchedule55 as Ct, computeDonationMaximum as Cu, T2CifShareholder as D, albertaCapitalGainDifference as Da, computeAlbertaSchedule6 as Dc, MAX_LEASEHOLD_PERIODS as Dd, ProvincialRateChange as Di, schedule18Values as Dl, computeCogpe as Dn, CcogpeRegularFederal as Do, EifelLimitationResult as Dr, SfedeCountrySuccessorFederal as Ds, LripEventResult as Dt, computeSchedule20 as Du, T2CifSettlement as E, albertaAbilDifference as Ea, RoyaltyTaxCreditShelterAllocationResult as Ec, LeaseholdLayerResult as Ed, computeAdjustedTaxableIncome as Ei, schedule17Values as El, computeCee as En, AlbertaSchedule15Result as Eo, EifelLimitationInput as Er, SfedeCountryRegularResult as Es, LripDividendEvent as Et, Schedule20Result as Eu, Co17ReturnData as F, albertaTerminalLossDifference as Fa, computeAlbertaSchedule5 as Fc, CCA_RATE_BOOK as Fd, ProvincialRate as Fi, IegAgreementMember as Fl, Schedule6Result as Fn, CdeRegularFederal as Fo, Clause95IncludedRow as Fr, computeCdeSuccessor as Fs, Schedule43Rates as Ft, At1DispositionCategory as Fu, QuebecTaxInput as G, toRsiSchedule as Ga, AgriProcessingTaxCreditInput as Gc, computeAt4970 as Gd, nonCapitalLossApplied as Gi, computeIegGroupFigures as Gl, Schedule4Input as Gn, CeeRegularOverride as Go, LoansResult as Gr, computeSfedeCountryRegular as Gs, ITC_RECAPTURE_PERIOD_YEARS as Gt, At1ReserveRowResult as Gu, QuebecAllocationResult as H, toRsiHeader as Ha, schedule4Values as Hc, At4970ProjectRowResult as Hd, computeTaxableIncome as Hi, allocateIegEvenly as Hl, ProvincialAllocationInput as Hn, CdeSuccessorResult as Ho, InterestAndFinancingRevenuesInput as Hr, computeEdaSuccessor as Hs, Schedule31Input as Ht, AlbertaSchedule17Result as Hu, renderCo17DraftReturn as I, computeSchedule12 as Ia, schedule5Values as Ic, CcaRateTable as Id, isSchedule5Province as Ii, IegAgreementMemberResult as Il, computeSchedule6 as In, CdeRegularInput as Io, Clause95Result as Ir, computeCeeRegular as Is, Schedule43Result as It, SECTION_34_2_GROSS_UP as Iu, QC_TAX_2024 as J, RSI_NEGATIVE_PREFIX as Ja, AgriProcessingVintageResult as Jc, computeLossContinuity as Jd, PartITaxInput as Ji, IegResult as Jl, PART_IV_RATE as Jn, CeeSuccessorInput as Jo, PartnershipIfeResult as Jr, ALBERTA_SRED_EXPENDITURE_CUTOFF as Js, ItcRecaptureResult as Jt, AlbertaSchedule16Input as Ju, QuebecTaxResult as K, RSI_COLUMN_GAP as Ka, AgriProcessingTaxCreditResult as Kc, LossContinuityInput as Kd, CcpcActiveBusinessTaxInput as Ki, IEG_2024 as Kl, Schedule4Result as Kn, CeeRegularResult as Ko, LossPortionFromIfeResult as Kr, computeSfedeCountrySuccessor as Ks, ItcRecaptureItem as Kt, At1ReserveTable as Ku, Co17ReturnInput as L, reconcileAlbertaNetIncome as La, ForeignInvestmentCountryInput as Lc, isDecliningBalanceClass as Ld, resolveProvinceRates as Li, IegAgreementResult as Ll, Schedule5Input as Ln, CdeRegularOverride as Lo, EifelCounterpartyRelationship as Lr, computeCeeSuccessor as Ls, computeSchedule43 as Lt, computeAlbertaSchedule18 as Lu, Co17Address as M, albertaRecaptureDifference as Ma, At1Schedule5PredecessorTransfer as Mc, computeClass141RecaptureReduction as Md, PROVINCE_RATE_BOOK as Mi, schedule2Values$1 as Ml, computeSpecifiedForeignExploration as Mn, CcogpeSuccessorInput as Mo, CapitalizedIfeResult as Mr, computeCcogpeRegular as Ms, GripResult as Mt, At1AbilResult as Mu, Co17Certification as N, albertaReserveDifference as Na, At1Schedule5SuccessoredPoolEntry as Nc, leaseholdPeriods as Nd, ProvinceCode as Ni, schedule4970Values as Nl, CapitalDisposition as Nn, CcogpeSuccessorOverride as No, CapitalizedIfeRow as Nr, computeCcogpeSuccessor as Ns, computeGrip as Nt, At1CategoryResult as Nu, T2GifiLine as O, albertaCcaDifference as Oa, schedule6Values as Oc, MIN_LEASEHOLD_PERIODS as Od, ProvincialRateChanges as Oi, schedule1Values$1 as Ol, computeCumulativeForeignResource as On, CcogpeRegularInput as Oo, computeEifelLimitation as Or, SfedeCountrySuccessorInput as Os, Schedule54Input as Ot, AT1_DISPOSITION_CATEGORIES as Ou, Co17Identity as P, albertaResourceDeductionDifference as Pa, At1Schedule5SuccessoredPoolEntryResult as Pc, CCA_DECLINING_BALANCE_RATES_2024 as Pd, ProvinceRateTable as Pi, IegAgreementInput as Pl, DispositionResult as Pn, CcogpeSuccessorResult as Po, Clause95DeniedRow as Pr, computeCdeRegular as Ps, Schedule43Input as Pt, At1CategoryTotals as Pu, T2_CERTIFICATION_FIXTURES as Q, RsiLineItemError as Qa, CapitalInvestmentTaxCreditResult as Qc, LossCarrybackYear as Qd, AdjustedAggregateInvestmentIncomeInput as Qi, IegEligibleExpendituresInput as Ql, computePart4Rdtoh as Qn, CfreCountryRegularInput as Qo, ResourceIfeRow as Qr, AlbertaSchedule9Result as Qs, computeZetm as Qt, AlbertaCcaOverride as Qu, co17Engine as R, At1TransmitterDefect as Ra, ForeignInvestmentCountryResult as Rc, resolveCcaRates as Rd, TaxableIncomeInput as Ri, IegAllocationResult as Rl, Schedule5Result as Rn, CdeRegularResult as Ro, ExemptIfeResult as Rr, computeCfreRegular as Rs, LARGE_CORPORATION_THRESHOLD as Rt, AT1_RESERVE_KINDS as Ru, T2CifData as S, Schedule12Adjustment as Sa, AlbertaSchedule6Result as Sc, Class14Property as Sd, computeRifeUnderSubsection111_8 as Si, schedule12LossDeductions as Sl, ForeignPerCountryResult as Sn, AlbertaReturnInput as So, EIFEL_FIRST_YEAR_START as Sr, Schedule15FilingResult as Ss, Schedule55Result as St, DonationMaximumResult as Su, T2CifQuestionnaire as T, Schedule12Result as Ta, RoyaltyTaxCreditShelterAllocation as Tc, LeaseholdLayer as Td, FOREIGN_TAX_CREDIT_GROSS_UP as Ti, schedule16Values as Tl, computeCde as Tn, AlbertaSchedule15Input as To, EIFEL_TRANSITIONAL_RATIO as Tr, SfedeCountryRegularOverride as Ts, LRIP_INVESTMENT_INCOME_FACTOR as Tt, Schedule20Input as Tu, QuebecEstablishment as U, toRsiJacketSchedules as Ua, AgriProcessingCombinedVintageInput as Uc, At4970Result as Ud, dividendsDeductibleS112 as Ui, allocateIegExpenditureLimit as Ul, ProvincialAllocationResult as Un, CeeRegularFederal as Uo, InterestAndFinancingRevenuesResult as Ur, computeFedeRegular as Us, Schedule31Result as Ut, At1ReserveBalances as Uu, computeQuebecReturn as V, validateAt1Transmitter as Va, computeSchedule4 as Vc, At4970ProjectRow as Vd, charitableDonationsDeduction as Vi, IegLimitAllocation as Vl, PermanentEstablishment as Vn, CdeSuccessorOverride as Vo, InterestAndFinancingExpensesResult as Vr, computeEdaRegular as Vs, computeTaxableCapital as Vt, AlbertaSchedule17Input as Vu, computeQuebecAllocationFactor as W, toRsiLineItems as Wa, AgriProcessingCurrentYearInput as Wc, At4970Totals as Wd, netCapitalLossApplied as Wi, computeIegAgreement as Wl, computeProvincialAllocation as Wn, CeeRegularInput as Wo, LoanRow as Wr, computeFedeSuccessor as Ws, computeSchedule31 as Wt, At1ReserveKind as Wu, QuebecTaxRates as X, RsiHeaderInput as Xa, At1ScheduleValueLike$5 as Xc, LossCarrybackInput as Xd, computeCcpcActiveBusinessTax as Xi, computeIegBaseAmount as Xl, Part4RdtohResult as Xn, CeeSuccessorResult as Xo, ResourceIfePool as Xr, ALBERTA_SRED_TAX_CREDIT_RATE as Xs, ZetmInput as Xt, assistanceFrom as Xu, QC_TAX_RATE_BOOK as Y, RSI_WORD_GAP as Ya, At1ScheduleDataLike$5 as Yc, LossCarrybackError as Yd, PartITaxResult as Yi, computeIeg as Yl, Part4RdtohInput as Yn, CeeSuccessorOverride as Yo, PartnershipIfeRow as Yr, ALBERTA_SRED_PROGRAM_START as Ys, computeItcRecapture as Yt, AlbertaSchedule16Result as Yu, resolveQuebecTaxRates as Z, RsiLineItem as Za, CapitalInvestmentTaxCreditInput as Zc, LossCarrybackResult as Zd, computePartITax as Zi, computeIegReductionFactor as Zl, REFUNDABLE_PART_I_RATE as Zn, CfreCountryRegularFederal as Zo, ResourceIfeResult as Zr, AlbertaSchedule9Input as Zs, ZetmResult as Zt, computeAlbertaSchedule16 as Zu, computeSmallManufacturerTest as _, parseT2LineItemId as _a, RoyaltySupplementalPriorYearAdjustment as _c, Class13Result as _d, earliestRateYear as _f, EifelCapacityInput as _i, Schedule20FilingInput as _l, DepletionInput as _n, at1TaxPayableDeductions as _o, PART_VI_1_DEDUCTION_BANDS as _r, FedeRegularResult as _s, SCHEDULE_88_MAX_URLS as _t, computeLimitedPartnershipLossRow as _u, MP_RATES_2024 as a, SbdResult as aa, computeAlbertaSchedule9 as ac, CcaClassResult as ad, AlbertaSbdResult as af, computeInterestAndFinancingRevenues as ai, computeSchedule3 as al, Schedule21Input as an, renderRsiLineItem as ao, Schedule1NotFileableError as ar, CmedbFederal as as, T2_LINE_META as at, NonCapitalLossByYearOfOriginResult as au, computeT2Settlement as b, LossScheduleResult as ba, schedule7Values$1 as bc, Class141RecaptureReductionInput as bd, latestRateYear as bf, ReceivedCapacityRow as bi, at1LineItemId as bl, ForeignExplorationResult as bn, At1ReturnInput as bo, computePartVI1Deduction as br, FedeSuccessorOverride as bs, normalizeSchedule88 as bt, AT1_DONATION_INCOME_RATE as bu, MpDeductionResult as c, computeBusinessLimit as ca, PoliticalContributionInput as cc, Schedule8Result$1 as cd, DayWeightedRateResult as cf, computePartnershipIfe as ci, SINGLE_JURISDICTION_ALBERTA_FACTOR as cl, ReserveContinuityResult as cn, At1CriticalFieldMissingError as co, assertSchedule1Fileable as cr, EdaRegularFederal as cs, runConformance as ct, OtherLossVintageRowResult as cu, SMALL_MANUFACTURER_INCOME_THRESHOLD as d, CORP_TAX_RATE_BOOK as da, computeSchedule8 as dc, computeCcaSchedule as dd, AB_TAX_2024 as df, EIFEL_EFFECTIVE_FROM as di, AT1_SCHEDULES_WITH_BUILDERS as dl, CdeInput as dn, At1TaxPayableMismatchError as do, deferredIncomeTaxProvisionAddBack as dr, EdaSuccessorFederal as ds, FederalT2Result as dt, RifeContinuityInput as du, AggregateInvestmentIncomeInput as ea, Schedule9AllocationMemberResult as ec, AlbertaSchedule13Input as ed, AlbertaTaxInput as ef, computeCapitalizedIfe as ei, InvestorTaxCreditResult as el, AssociatedMemberResult as en, formatRsiAmount as eo, Schedule2Result as er, CfreCountryRegularResult as es, ConformanceResult as et, computeIegEligibleExpenditures as eu, SmallManufacturerTestInput as f, CorpTaxRates as fa, schedule8Values$1 as fc, computeSchedule8$1 as fd, AB_TAX_RATE_BOOK as ff, EifelExemption as fi, At1ScheduleData as fl, CdeResult as fn, At1TransmitterInfo as fo, findSchedule1LineDefects as fr, EdaSuccessorInput as fs, computeFederalT2 as ft, RifeContinuityResult as fu, computePart2MPProfits as g, federalSchedulePayloads as ga, RoyaltySupplementalPartnershipResult as gc, Class13Input as gd, RateBookEntry as gf, assessEifel as gi, Schedule1FilingInput as gl, CogpeResult as gn, assertCriticalFields as go, terminalLossDeduction as gr, FedeRegularOverride as gs, computeSchedule101 as gt, LimitedPartnershipLossesResult as gu, computeMpDeduction as h, T2ScheduleValue as ha, RoyaltySupplementalPartnership as hc, CLASS_14_1_TRANSITIONAL_RATE as hd, RateBook as hf, EifelThresholds as hi, Schedule12FilingInput as hl, CogpeInput as hn, assertAt1TaxPayableReconciles as ho, recaptureAddBack as hr, FedeRegularInput as hs, Schedule101Result as ht, LimitedPartnershipLossRowResult as hu, MP_GROSS_REVENUE_THRESHOLD as i, SbdInput as ia, allocateSchedule9ExpenditureLimit as ic, CcaClassInput as id, AlbertaSbdInput as if, computeInterestAndFinancingExpenses as ii, Schedule3Result as il, computeBusinessLimitAllocation as in, renderRsiHeader as io, Schedule1LineDefect as ir, CfreCountrySuccessorResult as is, T2LineKey as it, NonCapitalLossByYearOfOriginInput as iu, t2Engine as j, albertaDispositionAdjustments as ja, At1Schedule5PoolTransfer as jc, computeClass141AdditionalAllowance as jd, PROVINCE_RATES_2024 as ji, schedule29Values as jl, computeSchedule12ResourceDeductions as jn, CcogpeSuccessorFederal as jo, BorrowingsResult as jr, computeAlbertaSchedule15 as js, GripInput as jt, At1AbilEntry as ju, renderT2DraftReturn as k, albertaCcaScheduleAdjustments as ka, AlbertaSchedule5Input as kc, computeClass13 as kd, blendProvinceRateTable as ki, schedule20Values as kl, computeDepletion as kn, CcogpeRegularOverride as ko, ratioOfPermissibleExpenses as kr, SfedeCountrySuccessorOverride as ks, Schedule54Result as kt, AlbertaSchedule18Input as ku, Part2MPProfitsInput as l, computeSBD as la, Schedule8Input as lc, UnsupportedCcaClassError as ld, GeneralRateBand as lf, computePartnershipIfeAddBack as li, computeAllocationFactor as ll, ReserveContinuityRow as ln, At1FilingData as lo, ccaDeduction as lr, EdaRegularInput as ls, runConformanceSuite as lt, computeNonCapitalLossByYearOfOrigin as lu, computeCanadianMPProfits as m, T2ScheduleData as ma, AlbertaSchedule7Result as mc, CLASS_14_1_RECAPTURE_REDUCTION_RATE as md, resolveAlbertaTaxRates as mf, EifelResult as mi, Schedule10FilingInput as ml, CeeResult as mn, assertAt1MandatoryComplete as mo, mealsAndEntertainmentAddBack as mr, FedeRegularFederal as ms, Schedule101Input as mt, LimitedPartnershipLossRow as mu, CanadianMPProfitsResult as n, BusinessLimitInput as na, Schedule9FieldOfScience as nc, FederalCcaClass as nd, computeAlbertaTax as nf, computeExcessIfe as ni, MaximumAllowableDeductionResult as nl, BusinessLimitAllocationResult as nn, formatRsiText as no, Schedule1Input as nr, CfreCountrySuccessorInput as ns, ExpectedSource as nt, LossVintageEntry as nu, MpDeductionInput as o, computeAdjustedAggregateInvestmentIncome as oa, computeSchedule9MaximumExpenditureLimit as oc, CcaScheduleResult as od, computeAlbertaSbd as of, computeLoans as oi, schedule3Values as ol, Schedule21Result as on, renderAt1NetFile as oo, Schedule1Result as or, CmedbInput as os, foldT2Lines as ot, OtherLossByYearOfOriginResult as ou, SmallManufacturerTestResult as p, resolveCorpTaxRates as pa, AlbertaSchedule7Input as pc, CLASS_14_1_MINIMUM_DEDUCTION as pd, AlbertaTaxRates as pf, EifelInput as pi, At1ScheduleValue as pl, CeeInput as pn, albertaBalanceUnpaid as po, incomeTaxProvisionAddBack as pr, EdaSuccessorResult as ps, FirstReturnEvent as pt, computeRifeContinuity as pu, computeQuebecTax as q, RSI_DELIMITER as qa, AgriProcessingVintageInput as qc, LossContinuityResult as qd, CcpcActiveBusinessTaxResult as qi, IegInput as ql, computeSchedule4Losses as qn, CeeSuccessorFederal as qo, LossPortionFromIfeRow as qr, schedule15Values as qs, ItcRecaptureItemResult as qt, computeAlbertaSchedule17 as qu, MP_EXCLUDED_ACTIVITIES as r, BusinessLimitResult as ra, Schedule9GroupFilingInput as rc, computeAlbertaSchedule13 as rd, AlbertaCorporationStatus as rf, computeExemptIfe as ri, Schedule3Input as rl, allocateEvenly as rn, renderAt1Rsi as ro, Schedule1Line as rr, CfreCountrySuccessorOverride as rs, LineCheck as rt, LossVintageRowResult as ru, MpDeductionRates as s, computeAggregateInvestmentIncome as sa, schedule9Values as sc, Schedule8Entry as sd, AB_GENERAL_RATE_BANDS as sf, computeLossPortionFromIfe as si, AllocationFactorInput as sl, computeSchedule21 as sn, AT1_CRITICAL_MANDATORY_FIELDS as so, amortizationAddBack as sr, CmedbResult as ss, formatConformanceReport as st, OtherLossVintageEntry as su, CanadianMPProfitsInput as t, AggregateInvestmentIncomeResult as ta, Schedule9AllocationResult as tc, AlbertaSchedule13Result as td, AlbertaTaxResult as tf, computeClause95Amounts as ti, MaximumAllowableDeductionInput as tl, BusinessLimitAllocationInput as tn, formatRsiDate as to, computeSchedule2 as tr, CfreCountrySuccessorFederal as ts, ConformanceSummary as tt, iegT661SourceLine as tu, Part2MPProfitsResult as u, CORP_TAX_2024 as ua, Schedule8Result as uc, computeCcaClass as ud, computeDayWeightedGeneralTax as uf, computeResourceIfe as ui, AT1_SCHEDULES_WITHOUT_BUILDERS as ul, computeSchedule13 as un, At1MandatoryFieldMissingError as uo, computeSchedule1 as ur, EdaRegularResult as us, FederalT2Input as ut, computeOtherLossByYearOfOrigin as uu, T2SettlementInput as v, t2LineItemId as va, RoyaltySupplementalPriorYearAdjustmentResult as vc, Class141AdditionalAllowanceInput as vd, extendRateBook as vf, EifelCapacityResult as vi, Schedule21FilingInput as vl, DepletionResult as vn, at1YesNo as vo, PartVI1DeductionBand as vr, FedeSuccessorFederal as vs, Schedule88Input as vt, computeLimitedPartnershipLosses as vu, T2CifPartI as w, Schedule12Line as wa, RoyaltyTaxCreditQuarter as wc, Class14Result as wd, AdjustedTaxableIncomeResult as wi, schedule13Values as wl, Schedule12ResourceDeductionsResult as wn, computeAlbertaReturn as wo, EIFEL_STANDARD_RATIO_FROM as wr, SfedeCountryRegularInput as ws, LRIP_INVESTMENT_CORPORATION_MULTIPLE as wt, AlbertaGiftCarryforward as wu, T2CifAddress as x, computeLossSchedule as xa, AlbertaSchedule6Input as xc, Class14Input as xd, resolveRates as xf, computeEifelCapacity as xi, schedule10Values as xl, ForeignPerCountryInput as xn, at1Engine as xo, partVI1DeductionMultiple as xr, FedeSuccessorResult as xs, Schedule55Input as xt, DonationMaximumInput as xu, T2SettlementResult as y, LossScheduleInput as ya, computeAlbertaSchedule7 as yc, Class141AdditionalAllowanceResult as yd, hasExactRateYear as yf, ExcessCapacityVintage as yi, Schedule2FilingInput as yl, ForeignExplorationInput as yn, xmlEscape as yo, PartVI1DeductionResult as yr, FedeSuccessorInput as ys, Schedule88Result as yt, AT1_DONATION_GAIN_RATE as yu, QuebecReturnInput as z, At1TransmitterInvalidError as za, Schedule4Input$1 as zc, At4970Input as zd, TaxableIncomeLine as zi, IegGroupMember as zl, computeSchedule5 as zn, CdeSuccessorFederal as zo, ExemptIfeRow as zr, computeCfreSuccessor as zs, TaxableCapitalInput as zt, AT1_RESERVE_LINES as zu };