@classytic/ca-tax 0.0.14 → 0.0.15

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
@@ -742,6 +742,53 @@ interface Class141AdditionalAllowanceResult {
742
742
  issues: string[];
743
743
  }
744
744
  declare function computeClass141AdditionalAllowance(input: Class141AdditionalAllowanceInput): Class141AdditionalAllowanceResult;
745
+ /**
746
+ * s.13(39): on a disposition of class 14.1 property that was eligible capital
747
+ * property (ECP) before 1 January 2017, the taxpayer is deemed to have
748
+ * acquired additional class 14.1 property with a capital cost equal to the
749
+ * LEAST of three amounts: 1/4 of the proceeds of disposition, 1/4 of the
750
+ * capital cost of the property disposed of, and (per the explanatory notes to
751
+ * the enacting bill) a third amount tied to the property's own pre-2017
752
+ * CEC-sourced history. Old CEC only pulled 75% of an expenditure into the
753
+ * pool (and correspondingly only 75% of a disposition receipt reduced it,
754
+ * with the other 25% capital-gain-like) — without this addback, the switch to
755
+ * class 14.1's 100% inclusion would create MORE recapture on legacy goodwill
756
+ * than the old regime ever intended.
757
+ *
758
+ * The FIRST TWO limbs are corroborated by two independent primary/near-primary
759
+ * sources (Finance Canada's own explanatory notes to the enacting bill, cross-
760
+ * checked against a summary of the statute). The THIRD limb's exact wording
761
+ * could not be confirmed against the Act's own text (the retrieval tooling
762
+ * available here truncates before s.13(39) — see this repo's
763
+ * `research/findings/federal/CCA-straight-line-classes.md`), so — same
764
+ * fail-closed convention as `computeClass141AdditionalAllowance` just above —
765
+ * this function bounds the addback by a caller-supplied REMAINING transitional
766
+ * balance instead of guessing at the statute's own third limb. A missing
767
+ * balance behaves as zero, never as unlimited.
768
+ *
769
+ * The RESULT is a deemed capital-cost addition — the caller adds it to the
770
+ * class 14.1 row's `netAdjustments` (or applies it directly against a
771
+ * recapture already computed by `computeCcaClass`) for the SAME year as the
772
+ * disposition; it is not itself a CCA claim.
773
+ */
774
+ declare const CLASS_14_1_RECAPTURE_REDUCTION_RATE = 0.25;
775
+ interface Class141RecaptureReductionInput {
776
+ /** Proceeds of disposition of the class 14.1 property that was ECP before 2017. */
777
+ proceeds: number;
778
+ /** Capital cost of that property. */
779
+ capitalCost: number;
780
+ /**
781
+ * The pre-2017 CEC-sourced transitional balance still available to offset
782
+ * recapture (fail-closed: omitted or 0 → no reduction at all). Track it down
783
+ * alongside `transitionalBalanceAt2017` used by the additional-allowance
784
+ * rule above — both draw on the same pre-2017 history, but this reduction
785
+ * does not itself consume that balance (it isn't a claim), so a caller
786
+ * tracking one shared pool across both rules must reduce it by whichever
787
+ * rule's own remaining-balance output is smaller for that year.
788
+ */
789
+ transitionalBalanceRemaining?: number;
790
+ }
791
+ declare function computeClass141RecaptureReduction(input: Class141RecaptureReductionInput): number;
745
792
  //#endregion
746
793
  //#region src/t2/schedules/schedule8.d.ts
747
794
  interface CcaClassInput {
@@ -2301,16 +2348,18 @@ interface At1ScheduleData {
2301
2348
  */
2302
2349
  declare const AT1_SCHEDULES_WITH_BUILDERS: readonly string[];
2303
2350
  /**
2304
- * Schedules the engine computes but cannot yet file.
2351
+ * Schedules the engine computes but cannot yet file — currently empty.
2305
2352
  *
2306
- * **014** (cumulative eligible capital) is here for a different reason from the
2307
- * rest: eligible capital property was repealed on 1 January 2017 and a certified
2308
- * preparer does not offer the schedule for a current year at all, so its field
2309
- * numbers cannot be verified the way every other schedule's were. It applies only
2310
- * to the 2016/2017 straddling year.
2353
+ * Its one member, Schedule 14 (cumulative eligible capital), was removed
2354
+ * entirely rather than left here: it had no server wiring and no UI to begin
2355
+ * with, and applies only to a corporation whose tax year straddles
2356
+ * 2016-12-31 (eligible capital property's repeal date) see
2357
+ * `research/findings/alberta/AT1-schedule14-cec.md`.
2311
2358
  *
2312
- * Every other schedule has been verified line by line against the live certified
2313
- * form.
2359
+ * Every implemented schedule has been verified line by line against the live
2360
+ * certified form. Kept as a named, tested concept (not deleted outright)
2361
+ * since a future schedule may legitimately land here again before its
2362
+ * builder does.
2314
2363
  */
2315
2364
  declare const AT1_SCHEDULES_WITHOUT_BUILDERS: readonly string[];
2316
2365
  /** `SSSFFFOOO` — schedule id, field id, occurrence. Occurrence is 1-based. */
@@ -2443,10 +2492,36 @@ interface Schedule12FilingInput {
2443
2492
  alberta: number;
2444
2493
  federal: number;
2445
2494
  };
2495
+ /** 012022 / 012023 — depletion (AT1 Sch 15 EDA + CMEDB claims). */
2496
+ depletion?: {
2497
+ alberta: number;
2498
+ federal: number;
2499
+ };
2500
+ /** 012026 / 012027 — Canadian exploration expenses. */
2501
+ cee?: {
2502
+ alberta: number;
2503
+ federal: number;
2504
+ };
2505
+ /** 012028 / 012029 — Canadian development expenses. */
2506
+ cde?: {
2507
+ alberta: number;
2508
+ federal: number;
2509
+ };
2510
+ /** 012030 / 012031 — foreign exploration and development expenses. */
2511
+ foreignExploration?: {
2512
+ alberta: number;
2513
+ federal: number;
2514
+ };
2515
+ /** 012032 / 012033 — Canadian oil and gas property expenses. */
2516
+ cogpe?: {
2517
+ alberta: number;
2518
+ federal: number;
2519
+ };
2446
2520
  /**
2447
2521
  * Area B — losses of preceding taxation years, deducted in arriving at Alberta
2448
- * taxable income. Same federal/Alberta pairing and the same
2449
- * omit-when-they-agree rule.
2522
+ * taxable income. Same federal/Alberta pairing as Area A, but NOT the same
2523
+ * omission rule — see this file's `schedule12Values` for why Area B always
2524
+ * transmits both sides.
2450
2525
  *
2451
2526
  * Build these with `schedule12LossDeductions` rather than by hand: the capital
2452
2527
  * one is NOT the raw amount applied.
@@ -2468,6 +2543,39 @@ interface Schedule12FilingInput {
2468
2543
  alberta: number;
2469
2544
  federal: number;
2470
2545
  };
2546
+ /**
2547
+ * 012072 / 012073 — limited partnership losses of preceding years.
2548
+ * Alberta = Schedule 21's own `totalApplied` (Σ line 139) when that
2549
+ * schedule's limited-partnership table has rows; otherwise federal's own
2550
+ * figure, per the spec: "if form 021 exists, must equal [the sum of]
2551
+ * 021139; otherwise must equal fed 200335."
2552
+ */
2553
+ limitedPartnership?: {
2554
+ alberta: number;
2555
+ federal: number;
2556
+ };
2557
+ };
2558
+ /**
2559
+ * Area B, the donations deduction — same "always transmit both sides"
2560
+ * mandatory-disclosure shape as `lossDeductions` above (spec marks 056-059
2561
+ * `M`, not `X` like Area A's conditional pairs), verified against the
2562
+ * rendered `AT1SCH12-income-loss-reconciliation-TRA11732.pdf` page 2, not
2563
+ * the raw text extraction (which garbles this exact area — see the
2564
+ * capital-gains/central-credit-union block a few lines below it, which
2565
+ * this type deliberately does NOT model: reading the rendered page showed
2566
+ * both its Alberta (074) and federal (075) columns source from the SAME
2567
+ * federal T2 line 340, so it can never diverge and was never a real
2568
+ * candidate for a reconciling pair in the first place).
2569
+ */
2570
+ donations?: {
2571
+ /** 012056 / 012057 — charitable donations claimed this year. */charitable?: {
2572
+ alberta: number;
2573
+ federal: number;
2574
+ }; /** 012058 / 012059 — gifts to Canada/a province, cultural and ecological gifts claimed this year. */
2575
+ gifts?: {
2576
+ alberta: number;
2577
+ federal: number;
2578
+ };
2471
2579
  };
2472
2580
  }
2473
2581
  /**
@@ -2555,7 +2663,6 @@ declare function schedule21Values(input: Schedule21FilingInput): At1ScheduleData
2555
2663
  /**
2556
2664
  * Field ids read off the live form:
2557
2665
  *
2558
- * 001 associated with one or more CCPCs? Y/N
2559
2666
  * 003 income from active businesses (T2 line 400 / Sch 12 line 106)
2560
2667
  * 005 deduct: royalty tax deduction (Sch 5 line 021)
2561
2668
  * 007 balance = 003 − 005, floored at nil
@@ -2566,6 +2673,14 @@ declare function schedule21Values(input: Schedule21FilingInput): At1ScheduleData
2566
2673
  * The royalty deduction lines are oil-and-gas and left to the caller; they are
2567
2674
  * omitted rather than zeroed, since an absent conditional line is not the same as
2568
2675
  * a nil one.
2676
+ *
2677
+ * There is NO field 001 here — "associated with one or more CCPCs?" is filed on
2678
+ * the AT1 JACKET (`000001001`, `jacket.ts`'s `LINE_001`), not on this schedule.
2679
+ * 4 real, accepted TRA Fall-2026 NetFile certification samples
2680
+ * (`research/validation/tra-test-cases-fall-2026/`) confirm this schedule's own
2681
+ * `<Schedule Number="001">` block starts at field 003 in every case; see
2682
+ * `research/findings/alberta/AT1-jacket-line-001-extractor-boundary.md` for the
2683
+ * full investigation.
2569
2684
  */
2570
2685
  /** One member of Area A's Agreement Among Associated Corporations (041/043/045). */
2571
2686
  interface Schedule1AgreementMember {
@@ -2578,8 +2693,6 @@ interface Schedule1AgreementMember {
2578
2693
  }
2579
2694
  interface Schedule1FilingInput {
2580
2695
  result: AlbertaSbdResult;
2581
- /** 001001 — associated with one or more CCPCs. */
2582
- isAssociated?: boolean;
2583
2696
  /** 001003 — active business income. */
2584
2697
  activeBusinessIncome?: number;
2585
2698
  /** 001009 — Alberta taxable income, adjusted. */
@@ -2943,13 +3056,13 @@ declare function computeSchedule3(input: Schedule3Input): Schedule3Result;
2943
3056
  * file rather than the shared filing module per the task instructions — other
2944
3057
  * agents are editing `at1-schedule-line-items.ts` concurrently.
2945
3058
  */
2946
- interface At1ScheduleValueLike$6 {
3059
+ interface At1ScheduleValueLike$5 {
2947
3060
  lineItemId: string;
2948
3061
  value: string | number;
2949
3062
  }
2950
- interface At1ScheduleDataLike$6 {
3063
+ interface At1ScheduleDataLike$5 {
2951
3064
  scheduleId: string;
2952
- values: At1ScheduleValueLike$6[];
3065
+ values: At1ScheduleValueLike$5[];
2953
3066
  }
2954
3067
  /**
2955
3068
  * Field ids per the spec transcription above: 100-108 (ITC), 200-208 (CITC),
@@ -2959,7 +3072,7 @@ interface At1ScheduleDataLike$6 {
2959
3072
  * per-vintage figures this DOES compute (304/306/308/310) are filed on the
2960
3073
  * 300-series rollup, not re-emitted as an AAPITC occurrence table.
2961
3074
  */
2962
- declare function schedule3Values(result: Schedule3Result): At1ScheduleDataLike$6;
3075
+ declare function schedule3Values(result: Schedule3Result): At1ScheduleDataLike$5;
2963
3076
  //#endregion
2964
3077
  //#region src/t2/at1/schedules/schedule4-foreign-investment-tax-credit.d.ts
2965
3078
  /**
@@ -3357,15 +3470,15 @@ declare function computeAlbertaSchedule5(input: AlbertaSchedule5Input): AlbertaS
3357
3470
  * result; and 005200, which gates whether the successored sections are
3358
3471
  * processed at all but is not itself a filed dollar/detail line.
3359
3472
  */
3360
- interface At1ScheduleValueLike$5 {
3473
+ interface At1ScheduleValueLike$4 {
3361
3474
  lineItemId: string;
3362
3475
  value: string | number;
3363
3476
  }
3364
- interface At1ScheduleDataLike$5 {
3477
+ interface At1ScheduleDataLike$4 {
3365
3478
  scheduleId: string;
3366
- values: At1ScheduleValueLike$5[];
3479
+ values: At1ScheduleValueLike$4[];
3367
3480
  }
3368
- declare function schedule5Values(result: AlbertaSchedule5Result): At1ScheduleDataLike$5;
3481
+ declare function schedule5Values(result: AlbertaSchedule5Result): At1ScheduleDataLike$4;
3369
3482
  //#endregion
3370
3483
  //#region src/t2/at1/schedules/schedule6-royalty-tax-credit.d.ts
3371
3484
  /**
@@ -3558,13 +3671,13 @@ interface AlbertaSchedule6Result {
3558
3671
  * shared filing module — other agents edit `at1-schedule-line-items.ts`
3559
3672
  * concurrently.
3560
3673
  */
3561
- interface At1ScheduleValueLike$4 {
3674
+ interface At1ScheduleValueLike$3 {
3562
3675
  lineItemId: string;
3563
3676
  value: string | number;
3564
3677
  }
3565
- interface At1ScheduleDataLike$4 {
3678
+ interface At1ScheduleDataLike$3 {
3566
3679
  scheduleId: string;
3567
- values: At1ScheduleValueLike$4[];
3680
+ values: At1ScheduleValueLike$3[];
3568
3681
  }
3569
3682
  /**
3570
3683
  * Emits every field this module's own MAPPINGS transcription actually defines
@@ -3583,7 +3696,7 @@ interface At1ScheduleDataLike$4 {
3583
3696
  * `schedule3Values`'s `At1ScheduleDataLike` shape exactly: `{ scheduleId,
3584
3697
  * values }`.
3585
3698
  */
3586
- declare function schedule6Values(result: AlbertaSchedule6Result): At1ScheduleDataLike$4;
3699
+ declare function schedule6Values(result: AlbertaSchedule6Result): At1ScheduleDataLike$3;
3587
3700
  declare function computeAlbertaSchedule6(input: AlbertaSchedule6Input): AlbertaSchedule6Result;
3588
3701
  //#endregion
3589
3702
  //#region src/t2/at1/schedules/schedule7-royalty-supplemental.d.ts
@@ -3802,13 +3915,13 @@ interface AlbertaSchedule7Result {
3802
3915
  * file rather than the shared filing module — other agents edit
3803
3916
  * `at1-schedule-line-items.ts` concurrently.
3804
3917
  */
3805
- interface At1ScheduleValueLike$3 {
3918
+ interface At1ScheduleValueLike$2 {
3806
3919
  lineItemId: string;
3807
3920
  value: string | number;
3808
3921
  }
3809
- interface At1ScheduleDataLike$3 {
3922
+ interface At1ScheduleDataLike$2 {
3810
3923
  scheduleId: string;
3811
- values: At1ScheduleValueLike$3[];
3924
+ values: At1ScheduleValueLike$2[];
3812
3925
  }
3813
3926
  /**
3814
3927
  * Emits CPI (007003-029), the computed totals 007051 and 007061, and the two
@@ -3823,7 +3936,7 @@ interface At1ScheduleDataLike$3 {
3823
3936
  * "Schedule 7, line 061" and gives its formula in full, so it is filed here
3824
3937
  * under that citation rather than omitted for lack of a home row.
3825
3938
  */
3826
- declare function schedule7Values(result: AlbertaSchedule7Result): At1ScheduleDataLike$3;
3939
+ declare function schedule7Values(result: AlbertaSchedule7Result): At1ScheduleDataLike$2;
3827
3940
  declare function computeAlbertaSchedule7(input: AlbertaSchedule7Input): AlbertaSchedule7Result;
3828
3941
  //#endregion
3829
3942
  //#region src/t2/at1/schedules/schedule8-political-contributions.d.ts
@@ -4213,13 +4326,13 @@ declare function allocateSchedule9ExpenditureLimit(daysInLongestYear: number, re
4213
4326
  * shared filing module per the task instructions — other agents are editing
4214
4327
  * `at1-schedule-line-items.ts` concurrently.
4215
4328
  */
4216
- interface At1ScheduleValueLike$2 {
4329
+ interface At1ScheduleValueLike$1 {
4217
4330
  lineItemId: string;
4218
4331
  value: string | number;
4219
4332
  }
4220
- interface At1ScheduleDataLike$2 {
4333
+ interface At1ScheduleDataLike$1 {
4221
4334
  scheduleId: string;
4222
- values: At1ScheduleValueLike$2[];
4335
+ values: At1ScheduleValueLike$1[];
4223
4336
  }
4224
4337
  /**
4225
4338
  * The page-3 "Allocation of the Maximum Expenditure Limit" context that has no
@@ -4249,223 +4362,7 @@ interface Schedule9GroupFilingInput {
4249
4362
  * eligible expenditures for Alberta purposes" figure per the spec's own
4250
4363
  * cross-reference ("106 ... Value must equal 009031").
4251
4364
  */
4252
- declare function schedule9Values(result: AlbertaSchedule9Result, group?: Schedule9GroupFilingInput): At1ScheduleDataLike$2;
4253
- //#endregion
4254
- //#region src/t2/at1/schedules/schedule11-manufacturing-processing.d.ts
4255
- /**
4256
- * Alberta AT1 Schedule 11 — Alberta Manufacturing and Processing Profits Deduction.
4257
- *
4258
- * ── This form is HISTORICAL: it stopped applying 2001-03-31 ────────────────
4259
- *
4260
- * The spec's own business rule for the form-required flag (line 011) says so
4261
- * directly: *"If the corp's tax year beginning is prior to April 1, 2001 and
4262
- * the corp derives at least 10% of its gross revenue for the year from
4263
- * manufacturing or processing of goods for sale or lease, then form 011
4264
- * should be completed. NOTE: The M&P Deduction is only applicable up to
4265
- * March 31, 2001."* (TRA spec §3.2.3.12, lines 9135-9146). `computeSchedule11`
4266
- * enforces both halves of that test — the tax-year date AND the 10%
4267
- * gross-revenue ratio — and forces line 042 to nil whenever either fails,
4268
- * regardless of what the capital/labour workings below would otherwise
4269
- * produce.
4270
- *
4271
- * ── What this module does NOT compute ───────────────────────────────────
4272
- *
4273
- * The transcribed section (TRA spec §3.2.3.12, lines 9082-9397) stops at line
4274
- * 042, "Alberta Manufacturing and Processing Profits" — an INCOME figure, not
4275
- * a tax saving. No rate or deduction-dollar calculation appears in that
4276
- * range, so none is invented here; `albertaManufacturingProcessingProfits` is
4277
- * exactly line 042 as specified, nothing further.
4278
- *
4279
- * ADJUBI (line 001 / AMPPD), Cost of Capital (031) and Cost of Labour (037)
4280
- * are the SAME figures federal Schedule 27 Part 2 computes — confirmed
4281
- * against `packages/ca-tax/src/t2/forms/generated/schedule27.captions.ts`,
4282
- * where line 130 is "Adjusted business income (ADJUBI)", line 140 is "Cost of
4283
- * capital (C)" and line 160 is "Cost of labour (L)" (matching the AT1 spec's
4284
- * "fed 027130" / "fed 027140" / "fed 027160" references exactly: `027` +
4285
- * the three-digit federal line number). This codebase has no module that
4286
- * COMPUTES those figures, though: `schedule27-mp.ts` starts from Part 2's
4287
- * OUTPUT (`manufacturingAndProcessingProfits`, fed line 200 = CMPP), never
4288
- * from ADJUBI or the capital/labour cost bases that produce it. Per the task
4289
- * scope instruction, this module takes `federalAdjubi`, `costOfCapital` and
4290
- * `costOfLabour` as plain numeric INPUTS the caller supplies from the
4291
- * federal Schedule 27 Part 2 workings, rather than reimplementing Part 2.
4292
- *
4293
- * ── Line map (TRA spec §3.2.3.12) ───────────────────────────────────────
4294
- *
4295
- * 011001 AMPPD ADJUBI for Alberta purposes (line 9152-9165)
4296
- * 011013 CCPC-only: aggregate investment income (line 9167-9179)
4297
- * 011031 Cost of Capital (= fed 027140) (line 9248-9256)
4298
- * 011033 Alberta Cost of Manufacturing & Processing
4299
- * Capital (≤ 011031) (line 9257-9273)
4300
- * 011037 Cost of Labour (= fed 027160) (line 9274-9282)
4301
- * 011039 Alberta Cost of Manufacturing & Processing
4302
- * Labour (≤ 011037) (line 9283-9294)
4303
- * 011042 AMPP Alberta Manufacturing and Processing Profits (line 9295-9390)
4304
- *
4305
- * ── Line 001 (AMPPD): a discrepancy in the source document ─────────────────
4306
- *
4307
- * The line CAPTION reads *"If the ADJUBI is calculated differently for
4308
- * Alberta purposes, then enter the amount from Schedule 12, line 116"*, but
4309
- * the BUSINESS RULE beside it gives a different, fully-specified formula:
4310
- * *"value = 012112 + 012114. If negative, default = 0. Otherwise, if form 012
4311
- * does not exist, set value = fed 027130."* There is no Schedule 12 line 116
4312
- * anywhere else in this spec. This module follows the business rule's stated
4313
- * arithmetic (012112 + 012114) rather than the caption's single, unverifiable
4314
- * line reference, because a formula that is actually computable beats a
4315
- * citation that cannot be checked. Flagged here rather than silently resolved
4316
- * either way, per the task's instruction not to guess at spec ambiguity.
4317
- *
4318
- * ── Line 042: the four-case formula collapses to two `min`s ────────────────
4319
- *
4320
- * The spec states line 042 as four cases keyed by whether 011031 < 011033 ×
4321
- * 100/85 and whether 011037 < 011039 × 100/75. Each case selects, per
4322
- * dimension, either the RAW cost (031 or 037) or the grossed-up ALBERTA
4323
- * portion (033 × 100/85 or 039 × 100/75) — precisely a `Math.min`, matching
4324
- * the shape federal Schedule 27 lines 150/170 already use for the analogous
4325
- * "cost of manufacturing and processing capital/labour" figures:
4326
- *
4327
- * 042 = 001 × [min(033×100/85, 031) + min(039×100/75, 037)] / (031 + 037)
4328
- *
4329
- * Verified against all four spec cases: whichever side of "031 < 033×100/85"
4330
- * holds, `min(033×100/85, 031)` reduces to exactly the value that case's
4331
- * formula uses (031 itself, or the grossed-up 033), and likewise for the
4332
- * labour term — so the single expression above reproduces all four cases
4333
- * without branching on them explicitly.
4334
- *
4335
- * ── Small manufacturing corporations: out of scope by the spec itself ──────
4336
- *
4337
- * The AMPP business rule (line 9180-9184) says lines 011031-011042 "must be
4338
- * completed" for a corp OTHER than a small manufacturing corp, and "must not
4339
- * exist" otherwise — but gives no alternative formula for a small
4340
- * manufacturer's line 042 anywhere in the transcribed range (the "AT1 Guide"
4341
- * it defers to is a separate document not sourced here). `computeSchedule11`
4342
- * does not guess one: pass `smallManufacturerAmpp` directly when
4343
- * `isSmallManufacturingCorp` is true, or an issue is raised and line 042
4344
- * reports nil.
4345
- *
4346
- * Whole dollars, pure.
4347
- */
4348
- interface Schedule11Input {
4349
- /**
4350
- * The corporation's tax year START date, ISO `YYYY-MM-DD`. The deduction
4351
- * applies only where this is before 2001-04-01 (TRA-spec lines 9135-9146).
4352
- */
4353
- taxYearStart: string;
4354
- /**
4355
- * Gross revenue from manufacturing or processing of goods for sale or
4356
- * lease, for the 10% test (TRA-spec lines 9138-9142).
4357
- */
4358
- manufacturingGrossRevenue?: number;
4359
- /** Total gross revenue for the year, for the 10% test. */
4360
- totalGrossRevenue?: number;
4361
- /**
4362
- * Whether the corp qualifies as a "small manufacturing corp" per the AT1
4363
- * Guide criteria (business rule beside line "AMPP", 9180-9184). Gates
4364
- * whether 011031-011042 apply at all.
4365
- */
4366
- isSmallManufacturingCorp?: boolean;
4367
- /**
4368
- * 011042 supplied directly for a small manufacturing corp. The transcribed
4369
- * spec range states only that 011031-011042 "must not exist" in this case
4370
- * — it does not give the alternative formula, so none is derived here.
4371
- */
4372
- smallManufacturerAmpp?: number;
4373
- /** 027130 — federal Schedule 27 ADJUBI. Used unless the Alberta figure differs. */
4374
- federalAdjubi?: number;
4375
- /**
4376
- * When the corp elects to calculate ADJUBI differently for Alberta
4377
- * purposes (Schedule 12 exists): the two Schedule 12 lines the AT1
4378
- * business rule sums, 012112 + 012114. Supplying this OVERRIDES
4379
- * `federalAdjubi` for line 011001 — presence of this field IS the "chooses
4380
- * to calculate ADJUBI differently, and form 012 exists" signal.
4381
- */
4382
- albertaAdjubiFromSchedule12?: {
4383
- line112: number;
4384
- line114: number;
4385
- };
4386
- /**
4387
- * 000029 = 1 or 2 — Canadian-controlled private corporation, gating line
4388
- * 011013 (CCPC-only aggregate investment income). This figure is a
4389
- * disclosure item: the transcribed spec range (9082-9397) does not use it
4390
- * anywhere in the line 042 formula.
4391
- */
4392
- isCcpc?: boolean;
4393
- /** Whether an Alberta Schedule 12 exists for this return. */
4394
- schedule12Exists?: boolean;
4395
- /** Alberta-specific aggregate investment income, used when Schedule 12 exists. */
4396
- albertaAggregateInvestmentIncome?: number;
4397
- /** 200440 — federal aggregate investment income, used when Schedule 12 does not exist. */
4398
- federalAggregateInvestmentIncome?: number;
4399
- /** 011031 — Cost of Capital. Must equal fed 027140 for a non-small-manufacturer. */
4400
- costOfCapital?: number;
4401
- /** 011033 — the Alberta portion of Cost of Capital. Clamped to ≤ costOfCapital. */
4402
- albertaCostOfCapital?: number;
4403
- /** 011037 — Cost of Labour. Must equal fed 027160 for a non-small-manufacturer. */
4404
- costOfLabour?: number;
4405
- /** 011039 — the Alberta portion of Cost of Labour. Clamped to ≤ costOfLabour. */
4406
- albertaCostOfLabour?: number;
4407
- }
4408
- interface Schedule11Result {
4409
- /** Whether the deduction applies this year at all (date test AND 10% gross-revenue test). */
4410
- eligible: boolean;
4411
- isSmallManufacturingCorp: boolean;
4412
- /** 011001 (AMPPD) — resolved ADJUBI base for the line 042 formula. */
4413
- albertaAdjubi: number;
4414
- /** 011013 — CCPC aggregate investment income. Undefined when the corp is not a CCPC. */
4415
- aggregateInvestmentIncome?: number;
4416
- /** 011031. */
4417
- costOfCapital: number;
4418
- /** 011033. */
4419
- albertaCostOfCapital: number;
4420
- /** 011037. */
4421
- costOfLabour: number;
4422
- /** 011039. */
4423
- albertaCostOfLabour: number;
4424
- /** 011042 — Alberta Manufacturing and Processing Profits. Nil unless `eligible`. */
4425
- albertaManufacturingProcessingProfits: number;
4426
- /** Manufacturing gross revenue ÷ total gross revenue, when both figures were given. */
4427
- grossRevenueRatio?: number;
4428
- issues: string[];
4429
- }
4430
- declare function computeSchedule11(input: Schedule11Input): Schedule11Result;
4431
- /**
4432
- * `scheduleNNValues` for Schedule 11, following the `at1-schedule-line-items.ts`
4433
- * builder pattern (see `schedule20Values`, `schedule16Values`). Kept in THIS
4434
- * file rather than the shared filing module per the task instructions — other
4435
- * agents are editing `at1-schedule-line-items.ts` concurrently.
4436
- */
4437
- interface At1ScheduleValueLike$1 {
4438
- lineItemId: string;
4439
- value: string | number;
4440
- }
4441
- interface At1ScheduleDataLike$1 {
4442
- scheduleId: string;
4443
- values: At1ScheduleValueLike$1[];
4444
- }
4445
- /**
4446
- * Field ids per the spec transcription above: 001 (AMPPD/ADJUBI), 013 (CCPC
4447
- * aggregate investment income), 031/033/037/039 (cost of capital/labour, both
4448
- * jurisdictions) and 042 (Alberta M&P Profits).
4449
- *
4450
- * Line 042 is ALWAYS emitted, including when the historical-eligibility gate
4451
- * (pre-2001-04-01 tax year AND the 10% gross-revenue test) has forced it to
4452
- * nil — an ineligible year still has a line 011042 on the form, and it reads
4453
- * nil, so this files nil rather than omitting the line entirely. The REASON
4454
- * it is nil (a `Schedule 11: … applies only where the tax year begins before
4455
- * 2001-04-01 …` / `… below the 10% threshold …` entry) lives on
4456
- * `result.issues`, which this builder does not carry onto the wire itself —
4457
- * the caller already has `result` (this function's own input) and so already
4458
- * has `result.issues` sitting beside whatever this returns; duplicating it
4459
- * onto `At1ScheduleDataLike`, which has no field for prose, would only be
4460
- * losing information conversion by not adding any.
4461
- *
4462
- * Line 013 (CCPC aggregate investment income) is the one line legitimately
4463
- * OMITTED rather than filed as nil: it is undefined, not zero, for a non-CCPC
4464
- * corporation — the spec's own business rule gates it on `000029 = 1 or 2`,
4465
- * so a non-CCPC has no box to fill here at all, unlike line 042's "nil is a
4466
- * real answer" case above.
4467
- */
4468
- declare function schedule11Values(result: Schedule11Result): At1ScheduleDataLike$1;
4365
+ declare function schedule9Values(result: AlbertaSchedule9Result, group?: Schedule9GroupFilingInput): At1ScheduleDataLike$1;
4469
4366
  //#endregion
4470
4367
  //#region src/t2/at1/schedules/schedule15-resource-related-deductions.d.ts
4471
4368
  /**
@@ -5468,8 +5365,7 @@ interface AlbertaReturnInput {
5468
5365
  result: AlbertaSchedule9Result;
5469
5366
  group?: Schedule9GroupFilingInput;
5470
5367
  };
5471
- lossCarryback?: Schedule10FilingInput; /** Alberta manufacturing and processing profits deduction — historical, pre-2001-04-01 only (Sch 11). */
5472
- manufacturingProcessing?: Schedule11Result;
5368
+ lossCarryback?: Schedule10FilingInput;
5473
5369
  reconciliation?: Schedule12FilingInput;
5474
5370
  cca?: AlbertaSchedule13Result; /** Alberta resource related deductions — eight expense-pool continuities (Sch 15). */
5475
5371
  resourceDeductions?: AlbertaSchedule15Result;
@@ -5655,6 +5551,18 @@ interface At1TransmitterInfo {
5655
5551
  amendmentDescription?: string;
5656
5552
  }
5657
5553
  interface At1FilingData {
5554
+ /**
5555
+ * 000001001 — associated with one or more Canadian-controlled private
5556
+ * corporations? Confirmed against 4 real, accepted TRA Fall-2026 NetFile
5557
+ * certification samples (`research/validation/tra-test-cases-fall-2026/`),
5558
+ * every one of which files this as the FIRST value under
5559
+ * `<Schedule Number="000">`, ahead of 000005001 — not documented as a
5560
+ * numbered row in the spec's own tabular MAPPINGS (it appears only in the
5561
+ * section's prose filing-exemption preamble), which is why the generated
5562
+ * `jacket.captions.ts` cannot discover it. Genuinely mandatory, no safe
5563
+ * default — "No" is `2`, not absence.
5564
+ */
5565
+ associatedWithCcpcs?: boolean;
5658
5566
  softwareCertCode: string;
5659
5567
  legalName: string;
5660
5568
  address: {
@@ -5719,10 +5627,6 @@ interface At1FilingData {
5719
5627
  position: string;
5720
5628
  };
5721
5629
  transmitter: At1TransmitterInfo;
5722
- /** 000003001 — income from active business carried on in Canada (federal). */
5723
- activeBusinessIncome?: number;
5724
- /** 000009001 — federal taxable income, less foreign tax credit adjustments. */
5725
- federalTaxableIncome?: number;
5726
5630
  /** 000047001 — gross revenue, per the financial statements. */
5727
5631
  grossRevenue?: number;
5728
5632
  /** 000048001 — total assets. Must equal federal GIFI 2599. */
@@ -5741,8 +5645,6 @@ interface At1FilingData {
5741
5645
  certificationTelephone?: string;
5742
5646
  /** 000105001 — the CIT authorized email address. */
5743
5647
  authorizedEmail?: string;
5744
- /** 000001001 — associated with one or more CCPCs? */
5745
- associatedWithCcpcs?: boolean;
5746
5648
  /** 000031001 — wind-up of a subsidiary under ITA s.88 during the year? */
5747
5649
  windUpOfSubsidiary?: boolean;
5748
5650
  /** 000032001 — first year of filing after an amalgamation? */
@@ -5826,6 +5728,12 @@ declare class At1MandatoryFieldMissingError extends Error {
5826
5728
  declare function assertAt1MandatoryComplete(d: At1FilingData): void;
5827
5729
  /** Refuse to render when any critical mandatory field is absent. */
5828
5730
  declare function assertCriticalFields(d: At1FilingData): void;
5731
+ type Fmt = 'text' | 'date' | 'amount' | 'factor';
5732
+ interface LineItem<T> {
5733
+ id: string;
5734
+ get: (d: T) => string | number | Date | undefined;
5735
+ fmt: Fmt;
5736
+ }
5829
5737
  /** XML text escaping (ISO-8859-1 payload; escape the five markup-significant chars). */
5830
5738
  declare function xmlEscape(s: string): string;
5831
5739
  /**
@@ -5932,7 +5840,7 @@ declare class RsiLineItemError extends Error {
5932
5840
  constructor(message: string);
5933
5841
  }
5934
5842
  /**
5935
- * Render one line item: `##` + nine digits + five spaces + value.
5843
+ * Render one line item: `##` + nine characters + five spaces + value.
5936
5844
  *
5937
5845
  * §3.2.1.5 — *"For a Line Item to be considered complete and therefore allowed to
5938
5846
  * be output to the AT1 RSI, it must contain both a Line Item ID and a Value"*. An
@@ -5969,6 +5877,20 @@ declare function renderAt1Rsi(header: Omit<RsiHeaderInput, 'pageNumber' | 'total
5969
5877
  totalPages?: number;
5970
5878
  }): string;
5971
5879
  //#endregion
5880
+ //#region src/t2/at1/filing/at1-rsi-adapter.d.ts
5881
+ /** Convert one declarative line-item table (jacket or EDI) into RSI line items. */
5882
+ declare function toRsiLineItems<T>(data: T, items: ReadonlyArray<LineItem<T>>): RsiLineItem[];
5883
+ /** Convert an already-assembled supporting-schedule payload (Net File shape) to RSI shape. */
5884
+ declare function toRsiSchedule(schedule: At1ScheduleData): RsiScheduleInput;
5885
+ /** The AT1 jacket (schedule `000`) and the EDI transmitter block (schedule `EDI`), RSI-formatted. */
5886
+ declare function toRsiJacketSchedules(data: At1FilingData): RsiScheduleInput[];
5887
+ /** The RSI header identity fields (everything but pagination) from the same filing data Net File uses. */
5888
+ declare function toRsiHeader(data: At1FilingData): {
5889
+ corporateAccountNumber: string;
5890
+ taxYearEnd: Date;
5891
+ legalName: string;
5892
+ };
5893
+ //#endregion
5972
5894
  //#region src/t2/at1/schedules/schedule12-reconciliation.d.ts
5973
5895
  /**
5974
5896
  * AT1 Schedule 12 — Alberta Income/Loss Reconciliation.
@@ -6102,6 +6024,17 @@ declare function albertaDispositionAdjustments(alberta: {
6102
6024
  * deduction lowers Alberta income, so it is a DEDUCTION.
6103
6025
  */
6104
6026
  declare function albertaReserveDifference(albertaNetEffect: number, federalNetEffect: number): Schedule12Adjustment;
6027
+ /**
6028
+ * A resource-deduction pool (AT1 Schedule 15 vs federal Schedule 12) as a
6029
+ * Schedule 12 adjustment — same direction convention as CCA/reserves above:
6030
+ * a LARGER Alberta claim is a DEDUCTION (Alberta income lower), a smaller
6031
+ * one is an ADDITION. Shared across the five reconciling pairs Schedule 12
6032
+ * lines 022/023 (Depletion), 026/027 (CEE), 028/029 (CDE), 030/031
6033
+ * (Foreign exploration/development), 032/033 (COGPE) all follow — the
6034
+ * labels/refs differ per pool, everything else is identical, so this one
6035
+ * function replaces five near-duplicate hand-written diffs.
6036
+ */
6037
+ declare function albertaResourceDeductionDifference(label: string, ref: string, albertaClaim: number, federalClaim: number): Schedule12Adjustment;
6105
6038
  /** Reconcile from a list of directional adjustments (zero/'none' ones are dropped). */
6106
6039
  declare function reconcileAlbertaNetIncome(federalNetIncomeForTax: number, adjustments: readonly Schedule12Adjustment[]): Schedule12Result;
6107
6040
  /**
@@ -6111,156 +6044,6 @@ declare function reconcileAlbertaNetIncome(federalNetIncomeForTax: number, adjus
6111
6044
  */
6112
6045
  declare function albertaCurrentYearLoss(result: Schedule12Result): number;
6113
6046
  //#endregion
6114
- //#region src/t2/at1/schedules/schedule14-cec.d.ts
6115
- /**
6116
- * Alberta AT1 Schedule 14 — Cumulative Eligible Capital Deduction.
6117
- *
6118
- * **Read this before using it.** Eligible capital property was REPEALED on
6119
- * 1 January 2017 and replaced by CCA class 14.1. The TRA keeps Schedule 14 only
6120
- * for tax years that **end on or after 1 January 2017 and include 31 December
6121
- * 2016** — the straddling year — for which the Schedule 14 Supplemental Worksheet
6122
- * must also be filed, separately from the Net File payload. For any wholly
6123
- * post-2016 tax year, class 14.1 on Schedule 8 / AT1 Schedule 13 replaces this
6124
- * schedule entirely and it must not be filed.
6125
- *
6126
- * It is implemented because prior-year returns and amendments are in scope, not
6127
- * because a current-year filing needs it. `appliesToTaxYear` states the rule.
6128
- *
6129
- * Same reconciliation shape as the other Alberta schedules: every figure defaults
6130
- * to the corresponding federal one (T2 Schedule 10, lines 010nnn), and the form is
6131
- * forbidden when the return declares no Alberta/federal divergence and required
6132
- * when the opening balance or the claim (014024 / 014040) differs from federal.
6133
- *
6134
- * Line map (TRA spec §3.2.3.15) and the specified arithmetic:
6135
- *
6136
- * 014002 CEC balance at the end of the preceding year ← fed 010220
6137
- * 014004 cost of eligible capital property acquired ← fed 010222
6138
- * 014006 transferred on amalgamation or wind-up ← fed 010224
6139
- * 014008 other adjustments (additions side) ← fed 010226
6140
- * 014011 non-taxable portion of a non-arm's-length
6141
- * transferor's gain, post-2002-12-20 ← fed 010228 × ½
6142
- * 014014 proceeds of sale, net of outlays ← fed 010242
6143
- * 014016 gross s.80(7) forgiven-debt reduction ← fed 010244
6144
- * 014018 other adjustments (deductions side) ← fed 010246
6145
- * 014023 CEC for property no longer owned after ceasing
6146
- * to carry on that business ← fed 010249
6147
- * 014024 current year deduction
6148
- * 014026 CEC closing balance
6149
- *
6150
- * A = ((014004 + 014008) × ¾) − 014011 floored at 0
6151
- * B = 014002 + A + 014006
6152
- * C = (014014 + 014016 + 014018) × ¾
6153
- * D = B − C floored at 0
6154
- *
6155
- * 014024 ≤ (D − 014023) × 7%, never negative
6156
- * 014026 = D − 014023 − 014024 when D is positive, otherwise nil
6157
- *
6158
- * The ¾ inclusion and the 7% declining rate are the old CEC regime's, not the
6159
- * federal 75%-of-income donation limit and not a CCA rate — they only look
6160
- * similar.
6161
- *
6162
- * When D is NEGATIVE the schedule's "Amount to be Included in Income Arising from
6163
- * Disposition" section must be completed instead, and the deduction section must
6164
- * not be; when D is non-negative that section must be left blank. Both directions
6165
- * are reported so a filer cannot complete the wrong half.
6166
- *
6167
- * Whole dollars, pure.
6168
- */
6169
- /** The ¾ inclusion rate of the repealed cumulative eligible capital regime. */
6170
- declare const CEC_INCLUSION_RATE = 0.75;
6171
- /** The 7% declining-balance rate of the repealed regime. */
6172
- declare const CEC_DEDUCTION_RATE = 0.07;
6173
- /**
6174
- * Figures for the "Amount to be Included in Income Arising from Disposition"
6175
- * section (014032-014048). Only completed when D is negative.
6176
- */
6177
- interface CecIncomeInclusionDetail {
6178
- /** 014032 — total CEC deductions claimed for years commencing before 1988-07-01. */
6179
- deductionsBeforeJuly1988?: number;
6180
- /** 014034 — negative CEC balances included in income before 1988-07-01 (positive). */
6181
- amountsIncludedBeforeJuly1988?: number;
6182
- /** 014042 — total CEC deductions for years beginning after 1988-06-30. */
6183
- deductionsAfterJune1988?: number;
6184
- /** 014044 — amounts that reduced CEC under ITA s.80(7), current and prior years. */
6185
- subsection807Reductions?: number;
6186
- /** 014047 — s.14(1)(b) income inclusions between 1988-06-30 and 2000-02-28. */
6187
- paragraph141bInclusions?: number;
6188
- /** 014048 — line 014056 from the preceding year's Schedule 14. */
6189
- priorYearLine056?: number;
6190
- }
6191
- interface AlbertaSchedule14Input {
6192
- /** 014002 — opening CEC balance. */
6193
- openingBalance?: number;
6194
- /** 014004 — cost of eligible capital property acquired in the year. */
6195
- acquisitions?: number;
6196
- /** 014006 — amount transferred on amalgamation or wind-up. */
6197
- transferredIn?: number;
6198
- /** 014008 — other adjustments on the additions side. */
6199
- otherAdditions?: number;
6200
- /** 014011 — non-taxable portion of a non-arm's-length transferor's gain. */
6201
- nonArmsLengthNonTaxablePortion?: number;
6202
- /** 014014 — proceeds of sale, net of outlays not otherwise deductible. */
6203
- proceedsOfSale?: number;
6204
- /** 014016 — gross reduction for a forgiven debt obligation, ITA s.80(7). */
6205
- forgivenDebtReduction?: number;
6206
- /** 014018 — other adjustments on the deductions side. */
6207
- otherDeductions?: number;
6208
- /** 014023 — CEC for property no longer owned after ceasing that business. */
6209
- cecForPropertyNoLongerOwned?: number;
6210
- /** 014024 — the amount actually claimed. Omit to claim the maximum. */
6211
- amountClaimed?: number;
6212
- /** The income-inclusion section, when D is negative. */
6213
- incomeInclusion?: CecIncomeInclusionDetail;
6214
- /** Tax year end, ISO `YYYY-MM-DD` — for the applicability check. */
6215
- taxYearEnd?: string;
6216
- /** Tax year start, ISO `YYYY-MM-DD` — for the applicability check. */
6217
- taxYearStart?: string;
6218
- /** 000060 — reporting different Alberta taxable income. */
6219
- reportsDifferentAlbertaIncome?: boolean;
6220
- /** 000061 — different discretionary amounts or opening balances. */
6221
- electsDifferentDiscretionaryAmounts?: boolean;
6222
- /** True when the Alberta opening balance or claim differs from federal. */
6223
- differsFromFederal?: boolean;
6224
- }
6225
- interface AlbertaSchedule14Result {
6226
- /** A = ((004 + 008) × ¾) − 011, floored at 0. */
6227
- a: number;
6228
- /** B = 002 + A + 006. */
6229
- b: number;
6230
- /** C = (014 + 016 + 018) × ¾. */
6231
- c: number;
6232
- /** D = B − C, floored at 0. */
6233
- d: number;
6234
- /** D before the floor — negative means the income-inclusion section applies. */
6235
- rawD: number;
6236
- /** 014024 — the deduction actually claimed. */
6237
- amountClaimed: number;
6238
- /** The most that could have been claimed: (D − 023) × 7%. */
6239
- maxDeduction: number;
6240
- /** 014026 — closing balance. */
6241
- closingBalance: number;
6242
- /**
6243
- * True when D is negative: the deduction section must be left blank and the
6244
- * income-inclusion section (014032-014048) completed instead.
6245
- */
6246
- incomeInclusionSectionApplies: boolean;
6247
- /** Whether the schedule applies to this tax year at all. */
6248
- appliesToTaxYear: boolean;
6249
- /** Whether the supplemental worksheet must be filed separately. */
6250
- supplementalWorksheetRequired: boolean;
6251
- formRequired: boolean;
6252
- formPermitted: boolean;
6253
- issues: string[];
6254
- }
6255
- /**
6256
- * Schedule 14 applies only to a tax year that ENDS on or after 2017-01-01 and
6257
- * INCLUDES 2016-12-31 — the year straddling the repeal of eligible capital
6258
- * property. A wholly pre-2017 year used the federal Schedule 10 regime as it then
6259
- * stood; a wholly post-2016 year uses class 14.1.
6260
- */
6261
- declare function cecScheduleAppliesToTaxYear(taxYearStart?: string, taxYearEnd?: string): boolean;
6262
- declare function computeAlbertaSchedule14(input: AlbertaSchedule14Input): AlbertaSchedule14Result;
6263
- //#endregion
6264
6047
  //#region src/t2/at1/schedules/schedule21-loss-continuity.d.ts
6265
6048
  interface LossScheduleInput {
6266
6049
  openingBalance: number;
@@ -6410,6 +6193,74 @@ interface SbdResult {
6410
6193
  sbdAmount: number;
6411
6194
  }
6412
6195
  declare function computeSBD(input: SbdInput, rates?: CorpTaxRates): SbdResult;
6196
+ interface AggregateInvestmentIncomeInput {
6197
+ /** 002 — eligible portion of taxable capital gains for the year. */
6198
+ taxableCapitalGains?: number;
6199
+ /** 012 — eligible portion of allowable capital losses (incl. ABILs). */
6200
+ allowableCapitalLosses?: number;
6201
+ /** 022 — net capital losses of previous years claimed (T2 jacket line 332). */
6202
+ netCapitalLossesClaimed?: number;
6203
+ /** 032 — total income from property (Canadian-source specified investment business). */
6204
+ incomeFromProperty?: number;
6205
+ /** 042 — exempt income. */
6206
+ exemptIncome?: number;
6207
+ /** 052 — amounts received from AgriInvest Fund No. 2. */
6208
+ agriInvestFundReceived?: number;
6209
+ /** 062 — taxable dividends deductible (s.113(1)(c) + Schedule 3 column F, net of related expenses). */
6210
+ taxableDividendsDeductible?: number;
6211
+ /** 072 — business income from a trust interest treated as property income (s.108(5)(a)). */
6212
+ trustPropertyIncome?: number;
6213
+ /** 082 — total losses from property (Canadian-source). */
6214
+ lossesFromProperty?: number;
6215
+ }
6216
+ interface AggregateInvestmentIncomeResult {
6217
+ /** Amount A — line 012 + line 022. */
6218
+ amountA: number;
6219
+ /** Amount B — line 002 minus amount A, floored at 0. */
6220
+ amountB: number;
6221
+ /** Amount C — lines 042 + 052 + 062 + 072. */
6222
+ amountC: number;
6223
+ /** Amount D — line 032 minus amount C. */
6224
+ amountD: number;
6225
+ /** Amount E — amount B plus amount D. */
6226
+ amountE: number;
6227
+ /** Line 092 — amount E minus line 082, floored at 0. Files as jacket line 440. */
6228
+ aggregateInvestmentIncome: number;
6229
+ }
6230
+ declare function computeAggregateInvestmentIncome(input: AggregateInvestmentIncomeInput): AggregateInvestmentIncomeResult;
6231
+ interface AdjustedAggregateInvestmentIncomeInput {
6232
+ /** 705 — eligible taxable capital gains, OTHER than from disposing an active asset. */
6233
+ taxableCapitalGains?: number;
6234
+ /** 710 — eligible allowable capital losses (incl. ABILs), OTHER than from disposing an active asset. */
6235
+ allowableCapitalLosses?: number;
6236
+ /** 715 — total income from property. */
6237
+ incomeFromProperty?: number;
6238
+ /** 720 — exempt income. */
6239
+ exemptIncome?: number;
6240
+ /** 725 — amounts received from AgriInvest Fund No. 2. */
6241
+ agriInvestFundReceived?: number;
6242
+ /** 730 — dividends from connected corporations. */
6243
+ dividendsFromConnectedCorporations?: number;
6244
+ /** 735 — business income from a trust interest treated as property income (s.108(5)(a)). */
6245
+ trustPropertyIncome?: number;
6246
+ /** 740 — total losses from property. */
6247
+ lossesFromProperty?: number;
6248
+ /** 741 — amount deducted under s.91(4) (FAPI) in computing income for the year. */
6249
+ subsection91_4Deduction?: number;
6250
+ }
6251
+ interface AdjustedAggregateInvestmentIncomeResult {
6252
+ /** Amount F — line 705 minus line 710, floored at 0. */
6253
+ amountF: number;
6254
+ /** Amount G — lines 720 + 725 + 730 + 735. */
6255
+ amountG: number;
6256
+ /** Amount H — line 715 minus amount G. */
6257
+ amountH: number;
6258
+ /** Amount I — amount F plus amount H. */
6259
+ amountI: number;
6260
+ /** Line 745 — amount I minus line 740, plus line 741, floored at 0. */
6261
+ adjustedAggregateInvestmentIncome: number;
6262
+ }
6263
+ declare function computeAdjustedAggregateInvestmentIncome(input: AdjustedAggregateInvestmentIncomeInput): AdjustedAggregateInvestmentIncomeResult;
6413
6264
  //#endregion
6414
6265
  //#region src/t2/jacket/part1-tax.d.ts
6415
6266
  interface PartITaxInput {
@@ -6619,6 +6470,66 @@ interface EifelThresholds {
6619
6470
  }
6620
6471
  declare function assessEifel(input: EifelInput, thresholds: EifelThresholds): EifelResult;
6621
6472
  //#endregion
6473
+ //#region src/t2/schedules/part-vi-1-deduction.d.ts
6474
+ /**
6475
+ * ITA paragraph 110(1)(k) — the deduction against taxable income for Part VI.1 tax.
6476
+ *
6477
+ * Part VI.1 taxes dividends paid on taxable preferred shares (s.191.1(1)), and
6478
+ * paragraph 110(1)(k) gives it back as a deduction in computing taxable income —
6479
+ * a multiple of the tax, not the tax itself. Omitting it overstates taxable income
6480
+ * by several times the Part VI.1 tax, which is why Schedule 43 has been returning
6481
+ * `deductionPending` rather than a figure.
6482
+ *
6483
+ * The provision, verbatim:
6484
+ *
6485
+ * > the amount determined by multiplying the taxpayer's tax payable under
6486
+ * > subsection 191.1(1) for the year by
6487
+ * > (i) if the taxation year ends before 2010, 3,
6488
+ * > (ii) if the taxation year ends after 2009 and before 2012, 3.2, and
6489
+ * > (iii) if the taxation year ends after 2011, 3.5.
6490
+ *
6491
+ * Two things worth pinning down, because both are easy to get wrong:
6492
+ *
6493
+ * • The multiple keys off the taxation year **END**, not its beginning, and not
6494
+ * the date the dividend was paid.
6495
+ * • The bands are not a rate change applied prospectively — a year ending in
6496
+ * 2011 uses 3.2 for the whole year.
6497
+ *
6498
+ * The multiple has stood at 3.5 since 2012. It is modelled as a band table
6499
+ * anyway, because prior-year returns and amendments are in scope and a hard-coded
6500
+ * 3.5 silently misstates a 2010 amendment by 15%.
6501
+ *
6502
+ * Source: `research/sources/legislation/ITA-section-110-deductions.txt`.
6503
+ *
6504
+ * Pure, whole dollars.
6505
+ */
6506
+ /** The s.110(1)(k) multiple, by taxation year end. Ascending. */
6507
+ interface PartVI1DeductionBand {
6508
+ /** The multiple applies to a year ending on or after this date. */
6509
+ readonly from: string;
6510
+ readonly multiple: number;
6511
+ }
6512
+ declare const PART_VI_1_DEDUCTION_BANDS: readonly PartVI1DeductionBand[];
6513
+ interface PartVI1DeductionResult {
6514
+ /** The Part VI.1 tax the deduction is computed on. */
6515
+ partVI1Tax: number;
6516
+ /** The statutory multiple that applied. */
6517
+ multiple: number;
6518
+ /** The paragraph 110(1)(k) deduction against taxable income. */
6519
+ deduction: number;
6520
+ issues: string[];
6521
+ }
6522
+ /** The multiple in force for a taxation year ending on `taxYearEnd`. */
6523
+ declare function partVI1DeductionMultiple(taxYearEnd: string, bands?: readonly PartVI1DeductionBand[]): number;
6524
+ /**
6525
+ * The paragraph 110(1)(k) deduction.
6526
+ *
6527
+ * An unreadable year end yields nil and says so, rather than defaulting to the
6528
+ * current multiple — guessing the year would misstate taxable income, and this
6529
+ * deduction is large relative to the tax it follows.
6530
+ */
6531
+ declare function computePartVI1Deduction(partVI1Tax: number, taxYearEnd: string, bands?: readonly PartVI1DeductionBand[]): PartVI1DeductionResult;
6532
+ //#endregion
6622
6533
  //#region src/t2/schedules/schedule1.d.ts
6623
6534
  /**
6624
6535
  * T2 Schedule 1 — Net income (loss) for income tax purposes.
@@ -7010,6 +6921,341 @@ interface Schedule6Result {
7010
6921
  }
7011
6922
  declare function computeSchedule6(dispositions: readonly CapitalDisposition[], inclusionRate: number): Schedule6Result;
7012
6923
  //#endregion
6924
+ //#region src/t2/schedules/schedule12-resource-deductions.d.ts
6925
+ /**
6926
+ * T2 Schedule 12 — Resource-Related Deductions (2025 and later tax years).
6927
+ *
6928
+ * Federal T2 had ZERO tracking for any of this before this module — the
6929
+ * Alberta side (AT1 Schedule 15, `t2/at1/schedules/schedule15-resource-related-deductions.ts`)
6930
+ * has been fully built and wired for a while, computing an Alberta figure to
6931
+ * diff against a federal figure that was always silently 0. This module
6932
+ * closes that gap on the federal side.
6933
+ *
6934
+ * Source: `research/sources/cra-forms/pdf/T2SCH12-resource-related-deductions.pdf`
6935
+ * (T2 SCH 12 E (26), downloaded 2026-09-03 — canada.ca was unreachable
6936
+ * earlier in this project; re-verified reachable on this date), rendered
6937
+ * page-by-page and read directly, not run through `pdftotext` (this form is
6938
+ * a grid, the same class of layout `pdftotext -layout` has misaligned
6939
+ * elsewhere in this codebase — rendering avoided that risk from the start).
6940
+ *
6941
+ * ── Five claim totals, one per Schedule 1 line ──────────────────────────────
6942
+ *
6943
+ * Part 1+2+3 Depletion (EDA regular/successor + CMEDB) → line 344
6944
+ * Part 4 Cumulative Canadian exploration expenses → line 341
6945
+ * Part 5 Cumulative Canadian development expenses → line 340
6946
+ * Part 6 Cumulative Canadian oil & gas property exp. → line 342
6947
+ * Part 7+8+9 Foreign exploration/development + resource → line 345
6948
+ *
6949
+ * ── What this module deliberately does NOT model ────────────────────────────
6950
+ *
6951
+ * The real form's full continuity has columns this module has no input for:
6952
+ * amalgamation/wind-up transfers, transfers to/from a successor corporation,
6953
+ * flow-through share renunciations, the look-back rule (s.66(12.66)), and
6954
+ * CEE↔CDE reclassification (ss.66.1(9)/66.7(9)). These are real provisions,
6955
+ * genuinely rare for a typical filer, and each one entered as a bare "other
6956
+ * additions/deductions" figure risks silently misclassifying something the
6957
+ * form treats specially (e.g. a flow-through renunciation has its own
6958
+ * unique interaction with the pool). Each pool below accepts a plain
6959
+ * `otherAdditions`/`otherDeductions` catch-all instead and says so in its
6960
+ * own doc comment — an honest scope limit, not a silent gap. Successor
6961
+ * pools ARE modelled (the form structurally requires the split), but with
6962
+ * the same collapsed catch-all shape as the regular pools.
6963
+ *
6964
+ * ACDE (Accelerated Canadian development expenses, generally incurred
6965
+ * after November 20, 2018 and before 2025) is NOT modelled as a separate
6966
+ * input: this schedule version is titled "2025 and later tax years", so a
6967
+ * CURRENT-year expense entered here is, for the ordinary case, always
6968
+ * RCDE-eligible rather than ACDE-eligible (RCDE covers 2024-2034,
6969
+ * overlapping the day this schedule starts applying). The narrow exception
6970
+ * — a tax year straddling the 2024/2025 boundary with genuine pre-2025
6971
+ * current-year CDE/COGPE additions — is not separately split out; treating
6972
+ * 100% of current-year CDE/COGPE additions as RCDE-eligible is the correct
6973
+ * default for the mainline case this schedule version targets, not a guess.
6974
+ * Same logic for ACOGPE/RCOGPE (Part 6).
6975
+ *
6976
+ * The CCOGPE↔CDE cross-linkage (a negative CCOGPE subtotal routes to EITHER
6977
+ * CDE line 105/133 depending on an s.66.7(4)(a)(iii) designation this
6978
+ * engine has no source for) is the SAME ambiguity the AT1 module already
6979
+ * flags unresolved for its own mirror of this rule — this module raises the
6980
+ * identical class of `issues` entry rather than guessing a designation
6981
+ * status it cannot know.
6982
+ *
6983
+ * Whole dollars, pure functions, no I/O.
6984
+ */
6985
+ interface DepletionInput {
6986
+ /** 101 */
6987
+ edaRegularOpening?: number;
6988
+ /** 115 — discretionary claim under Regulation 1201, capped at the pool. */
6989
+ edaRegularClaim?: number;
6990
+ /** 126 */
6991
+ edaSuccessorOpening?: number;
6992
+ /** 140 — discretionary claim under Regulation 1202(2), capped at the pool. */
6993
+ edaSuccessorClaim?: number;
6994
+ /** 150 */
6995
+ cmedbOpening?: number;
6996
+ /** 170 — discretionary claim under Regulation 1203(1), capped at the pool. */
6997
+ cmedbClaim?: number;
6998
+ }
6999
+ interface DepletionResult {
7000
+ edaRegularPool: number;
7001
+ /** 115 */
7002
+ edaRegularClaim: number;
7003
+ /** 120 */
7004
+ edaRegularClosing: number;
7005
+ edaSuccessorPool: number;
7006
+ /** 140 */
7007
+ edaSuccessorClaim: number;
7008
+ /** 145 */
7009
+ edaSuccessorClosing: number;
7010
+ cmedbPool: number;
7011
+ /** 170 */
7012
+ cmedbClaim: number;
7013
+ /** 175 */
7014
+ cmedbClosing: number;
7015
+ /** 3D → Schedule 1 line 344. */
7016
+ totalClaim: number;
7017
+ issues: string[];
7018
+ }
7019
+ declare function computeDepletion(input?: DepletionInput): DepletionResult;
7020
+ interface CeeInput {
7021
+ /** 200 */
7022
+ regularOpening?: number;
7023
+ /** 205 */
7024
+ regularCurrentYearExpenses?: number;
7025
+ /** 220 — collapsed catch-all; see module doc comment. */
7026
+ regularOtherAdditions?: number;
7027
+ /** 225 */
7028
+ regularGovernmentAssistance?: number;
7029
+ /** 230 — collapsed catch-all; see module doc comment. */
7030
+ regularOtherDeductions?: number;
7031
+ /** 245 — discretionary claim, capped at the subtotal (no rate — 100% claimable). */
7032
+ regularClaim?: number;
7033
+ /** 250 */
7034
+ successorOpening?: number;
7035
+ /** 280 — collapsed catch-all. */
7036
+ successorOtherDeductions?: number;
7037
+ /** 295 — discretionary claim, capped at the subtotal. */
7038
+ successorClaim?: number;
7039
+ }
7040
+ interface CeeResult {
7041
+ /** Amount C — regular subtotal before claim. */
7042
+ regularSubtotal: number;
7043
+ /** 245 */
7044
+ regularClaim: number;
7045
+ /** 249 */
7046
+ regularClosing: number;
7047
+ /** Amount D — successor subtotal before claim. */
7048
+ successorSubtotal: number;
7049
+ /** 295 */
7050
+ successorClaim: number;
7051
+ /** 299 */
7052
+ successorClosing: number;
7053
+ /** 4C → Schedule 1 line 341. */
7054
+ totalClaim: number;
7055
+ issues: string[];
7056
+ }
7057
+ declare function computeCee(input?: CeeInput): CeeResult;
7058
+ interface CdeInput {
7059
+ /** 300 */
7060
+ regularOpening?: number;
7061
+ /** 303 */
7062
+ regularCurrentYearExpenses?: number;
7063
+ /** 310 — collapsed catch-all. */
7064
+ regularOtherAdditions?: number;
7065
+ /** 320 */
7066
+ regularGovernmentAssistance?: number;
7067
+ /** 325 */
7068
+ regularReceivableOnDisposition?: number;
7069
+ /**
7070
+ * 330 — credit balance in the CCOGPE-regular pool, when that pool's own
7071
+ * subtotal is negative (see `computeCogpe`'s `regularSubtotal`, and the
7072
+ * module doc comment on the CCOGPE↔CDE cross-linkage). Auto-supplied by
7073
+ * `computeSchedule12ResourceDeductions` from the COGPE result — do not
7074
+ * set this directly unless calling `computeCde` standalone.
7075
+ */
7076
+ regularCreditBalanceInCogpePool?: number;
7077
+ /** 335 — collapsed catch-all. */
7078
+ regularOtherDeductions?: number;
7079
+ /** 345 — discretionary claim, capped at the rate-limited maximum. */
7080
+ regularClaim?: number;
7081
+ /** 350 */
7082
+ successorOpening?: number;
7083
+ /** 380 — credit balance in the CCOGPE-successor pool. Auto-supplied like 330 above. */
7084
+ successorCreditBalanceInCogpePool?: number;
7085
+ /** 385 — collapsed catch-all. */
7086
+ successorOtherDeductions?: number;
7087
+ /** 395 — discretionary claim, capped at the rate-limited maximum. */
7088
+ successorClaim?: number;
7089
+ }
7090
+ interface CdeResult {
7091
+ /** Amount E — regular subtotal before claim. */
7092
+ regularSubtotal: number;
7093
+ /** 345 */
7094
+ regularClaim: number;
7095
+ /** 349 */
7096
+ regularClosing: number;
7097
+ /** Amount F — successor subtotal before claim. */
7098
+ successorSubtotal: number;
7099
+ /** 395 */
7100
+ successorClaim: number;
7101
+ /** 399 */
7102
+ successorClosing: number;
7103
+ /** 5C → Schedule 1 line 340. */
7104
+ totalClaim: number;
7105
+ issues: string[];
7106
+ }
7107
+ declare function computeCde(input: CdeInput | undefined, daysInTaxYear: number | undefined, /** From `computeCogpe` — see module doc comment on the cross-linkage. */
7108
+
7109
+ cogpe?: {
7110
+ regularSubtotal: number;
7111
+ successorSubtotal: number;
7112
+ }): CdeResult;
7113
+ interface CogpeInput {
7114
+ /** 400 */
7115
+ regularOpening?: number;
7116
+ /** 405 */
7117
+ regularCurrentYearExpenses?: number;
7118
+ /** 415 — collapsed catch-all. */
7119
+ regularOtherAdditions?: number;
7120
+ /** 420 */
7121
+ regularReceivableOnDisposition?: number;
7122
+ /** 425 */
7123
+ regularGovernmentAssistance?: number;
7124
+ /**
7125
+ * 440 — collapsed catch-all deduction. May also receive a carryover from
7126
+ * a negative CCOGPE-successor subtotal (line 495(b)) when no s.66.7(4)(a)(iii)
7127
+ * designation was made — NOT auto-applied; see module doc comment.
7128
+ */
7129
+ regularOtherDeductions?: number;
7130
+ /** 445 — discretionary claim, capped at the rate-limited maximum. */
7131
+ regularClaim?: number;
7132
+ /** 450 */
7133
+ successorOpening?: number;
7134
+ /** 470 */
7135
+ successorReceivableOnDisposition?: number;
7136
+ /** 490 — collapsed catch-all. */
7137
+ successorOtherDeductions?: number;
7138
+ /** 495 — discretionary claim, capped at the rate-limited maximum. */
7139
+ successorClaim?: number;
7140
+ }
7141
+ interface CogpeResult {
7142
+ /** Amount J — regular subtotal before claim. */
7143
+ regularSubtotal: number;
7144
+ /** 445 */
7145
+ regularClaim: number;
7146
+ /** 449 */
7147
+ regularClosing: number;
7148
+ /** Amount K — successor subtotal before claim. */
7149
+ successorSubtotal: number;
7150
+ /** 495 */
7151
+ successorClaim: number;
7152
+ /** 499 */
7153
+ successorClosing: number;
7154
+ /** 6C → Schedule 1 line 342. */
7155
+ totalClaim: number;
7156
+ issues: string[];
7157
+ }
7158
+ declare function computeCogpe(input: CogpeInput | undefined, daysInTaxYear: number | undefined): CogpeResult;
7159
+ interface ForeignExplorationInput {
7160
+ /** 500 */
7161
+ regularOpening?: number;
7162
+ /** 515 — collapsed catch-all. */
7163
+ regularOtherDeductions?: number;
7164
+ /** 530 — foreign-source resource income; caps the claim. */
7165
+ regularForeignResourceIncome?: number;
7166
+ /** 520 — discretionary claim under s.66(4)/66.7(2). */
7167
+ regularClaim?: number;
7168
+ /** 550 */
7169
+ successorOpening?: number;
7170
+ /** 565 — collapsed catch-all. */
7171
+ successorOtherDeductions?: number;
7172
+ /** 580 — foreign-source resource income attributable to successored properties. */
7173
+ successorForeignResourceIncome?: number;
7174
+ /** 570 — discretionary claim. */
7175
+ successorClaim?: number;
7176
+ }
7177
+ interface ForeignExplorationResult {
7178
+ regularPool: number;
7179
+ /** 520 */
7180
+ regularClaim: number;
7181
+ /** 525 */
7182
+ regularClosing: number;
7183
+ successorPool: number;
7184
+ /** 570 */
7185
+ successorClaim: number;
7186
+ /** 575 */
7187
+ successorClosing: number;
7188
+ issues: string[];
7189
+ }
7190
+ /** Part 7 — Foreign exploration and development expenses (pre-2001 tax years; still a real, if rare, carryforward). */
7191
+ declare function computeForeignExploration(input: ForeignExplorationInput | undefined, daysInTaxYear: number | undefined): ForeignExplorationResult;
7192
+ /**
7193
+ * Parts 8/9 — per-country specified foreign exploration/development (Part 8,
7194
+ * pre-2001) and cumulative foreign resource expenses (Part 9, post-2000).
7195
+ * Modelled as a flat total across countries — the form's own per-country
7196
+ * allocation (required when claiming, per s.66(4.2)/66.7(2.2)/66.21) is a
7197
+ * preparer-side allocation exercise this module does not perform; the total
7198
+ * claim is what feeds Schedule 1 either way.
7199
+ */
7200
+ interface ForeignPerCountryInput {
7201
+ /** Sum of all countries' opening balances. */
7202
+ openingBalance?: number;
7203
+ /** Sum of all countries' current-year additions (Part 9 only; Part 8 has none). */
7204
+ currentYearExpenses?: number;
7205
+ /** Sum of all countries' other deductions/transfers. */
7206
+ otherDeductions?: number;
7207
+ /** Sum of all countries' foreign resource income. */
7208
+ foreignResourceIncome?: number;
7209
+ /** Discretionary claim, capped per the part's own formula. */
7210
+ claim?: number;
7211
+ }
7212
+ interface ForeignPerCountryResult {
7213
+ pool: number;
7214
+ claim: number;
7215
+ closing: number;
7216
+ issues: string[];
7217
+ }
7218
+ /** Part 8 — specified foreign exploration/development, regular OR successor (call once per column; rates are identical). */
7219
+ declare function computeSpecifiedForeignExploration(input: ForeignPerCountryInput | undefined, label: string): ForeignPerCountryResult;
7220
+ /** Part 9 — cumulative foreign resource expenses, regular OR successor. */
7221
+ declare function computeCumulativeForeignResource(input: ForeignPerCountryInput | undefined, daysInTaxYear: number | undefined, label: string): ForeignPerCountryResult;
7222
+ interface Schedule12ResourceDeductionsInput {
7223
+ depletion?: DepletionInput;
7224
+ cee?: CeeInput;
7225
+ cde?: Omit<CdeInput, 'regularCreditBalanceInCogpePool' | 'successorCreditBalanceInCogpePool'>;
7226
+ cogpe?: CogpeInput;
7227
+ foreignExploration?: ForeignExplorationInput;
7228
+ specifiedForeignRegular?: ForeignPerCountryInput;
7229
+ specifiedForeignSuccessor?: ForeignPerCountryInput;
7230
+ cumulativeForeignRegular?: ForeignPerCountryInput;
7231
+ cumulativeForeignSuccessor?: ForeignPerCountryInput;
7232
+ /** Days in the tax year, for the ≥357-day step / linear provincial prorations. Default 365. */
7233
+ daysInTaxYear?: number;
7234
+ }
7235
+ interface Schedule12ResourceDeductionsResult {
7236
+ depletion?: DepletionResult;
7237
+ cee?: CeeResult;
7238
+ cde?: CdeResult;
7239
+ cogpe?: CogpeResult;
7240
+ foreignExploration?: ForeignExplorationResult;
7241
+ specifiedForeignRegular?: ForeignPerCountryResult;
7242
+ specifiedForeignSuccessor?: ForeignPerCountryResult;
7243
+ cumulativeForeignRegular?: ForeignPerCountryResult;
7244
+ cumulativeForeignSuccessor?: ForeignPerCountryResult;
7245
+ /** Schedule 1 line 344. */
7246
+ depletionClaim: number;
7247
+ /** Schedule 1 line 341. */
7248
+ ceeClaim: number;
7249
+ /** Schedule 1 line 340. */
7250
+ cdeClaim: number;
7251
+ /** Schedule 1 line 342. */
7252
+ cogpeClaim: number;
7253
+ /** Schedule 1 line 345 — sum of Parts 7, 8 and 9's claims. */
7254
+ foreignClaim: number;
7255
+ issues: string[];
7256
+ }
7257
+ declare function computeSchedule12ResourceDeductions(input: Schedule12ResourceDeductionsInput): Schedule12ResourceDeductionsResult;
7258
+ //#endregion
7013
7259
  //#region src/t2/schedules/schedule13-reserves.d.ts
7014
7260
  /**
7015
7261
  * T2 Schedule 13 — Continuity of Reserves (Part 2, "Other reserves").
@@ -7388,11 +7634,11 @@ declare function computeSchedule31(input: Schedule31Input, rates: Schedule31Rate
7388
7634
  * Part 2 Investment allowance = lines 401–407 → line 490
7389
7635
  * Part 3 Taxable capital = capital − investment allowance → line 500
7390
7636
  * Part 4 Taxable capital employed in Canada
7391
- * = taxable capital × (taxable income earned in Canada ÷ taxable income) → line 690
7637
+ * = taxable capital × (taxable income earned in Canada ÷ taxable income) → line 790
7392
7638
  *
7393
7639
  * Part 5 of the paper form (the 0.225% figure at line 415) is the SUPERSEDED
7394
7640
  * capital-tax-era grind; the CURRENT business-limit grind (straight-line $10M→$50M)
7395
- * lives in Schedule 7. This schedule therefore stops at line 690 and hands that
7641
+ * lives in Schedule 7. This schedule therefore stops at line 790 and hands that
7396
7642
  * figure to the Schedule 7 grind. The federal Part I.3 tax itself was repealed
7397
7643
  * (2006) and is not computed. Pure, integer whole dollars.
7398
7644
  */
@@ -8053,6 +8299,28 @@ interface FederalT2Input {
8053
8299
  class13?: Class13Input;
8054
8300
  /** Class 14 (limited-life intangibles), the full per-property Reg 1100(1)(c) mechanic. */
8055
8301
  class14?: Class14Input;
8302
+ /**
8303
+ * Class 14.1's pre-2027 transitional additional allowance (Reg
8304
+ * 1100(1)(c.1)/(c.2)) — requires a `'14.1'` row in `ccaClasses`. See
8305
+ * `computeClass141AdditionalAllowance`'s own doc comment. Omit entirely for
8306
+ * a corporation with no pre-2017 class 14.1 history (the common case).
8307
+ */
8308
+ class141Transitional?: {
8309
+ transitionalBalanceAt2017?: number;
8310
+ additionalAllowanceClaimedToDate?: number;
8311
+ };
8312
+ /**
8313
+ * s.13(39) — reduces recapture on a disposition of class 14.1 property that
8314
+ * was eligible capital property (ECP) before 2017. Requires a `'14.1'` row
8315
+ * in `ccaClasses` with a disposition. See
8316
+ * `computeClass141RecaptureReduction`'s own doc comment for the formula and
8317
+ * its disclosed third-limb approximation.
8318
+ */
8319
+ class141Disposition?: {
8320
+ proceeds: number;
8321
+ capitalCost: number;
8322
+ transitionalBalanceRemaining?: number;
8323
+ };
8056
8324
  /**
8057
8325
  * Schedule 6 capital-property dispositions — engine computes the taxable capital
8058
8326
  * gain (added to income) and any current-year net capital loss (→ Schedule 4).
@@ -8067,10 +8335,27 @@ interface FederalT2Input {
8067
8335
  * through the Schedule 4 continuity inputs. Neither belongs here.
8068
8336
  */
8069
8337
  divisionCDeductions?: readonly TaxableIncomeLine[];
8070
- /** Charitable donations made this year (Schedule 2). Engine applies the 75% limit. */
8338
+ /**
8339
+ * CHARITABLE donations made this year (Schedule 2, Part 2 — lines 210/240).
8340
+ * Engine applies the 75% of net income limit. Do NOT combine cultural or
8341
+ * ecological gifts into this figure — see `culturalEcologicalGifts` below;
8342
+ * mixing them in over-caps a gift type the Act does not limit at all.
8343
+ */
8071
8344
  charitableDonations?: number;
8072
- /** Unclaimed donation pool carried forward from prior years. */
8345
+ /** Unclaimed CHARITABLE donation pool carried forward from prior years (Schedule 2 line 240). */
8073
8346
  openingDonationPool?: number;
8347
+ /**
8348
+ * Gifts of certified cultural property (s.110.1(1)(b)) and ecologically
8349
+ * sensitive land (s.110.1(1)(c)) made this year — Schedule 2 Parts 3/4
8350
+ * (lines 410/520). Deducted in FULL, every year: unlike charitable
8351
+ * donations, neither is limited to 75% of net income, so this engine
8352
+ * claims the whole amount with no cap and no carryforward pool (this
8353
+ * package does not yet track a multi-year cultural/ecological
8354
+ * carryforward — see `SCHEDULE_2_CARRYFORWARD_YEARS` in
8355
+ * `forms/schedule2.ts` for the 5/10-year periods a future carryforward
8356
+ * implementation would need).
8357
+ */
8358
+ culturalEcologicalGifts?: number;
8074
8359
  /** Opening non-capital loss pool carried forward from the prior year. */
8075
8360
  openingNonCapitalLoss?: number;
8076
8361
  /** Opening net-capital loss pool carried forward from the prior year. */
@@ -8155,8 +8440,40 @@ interface FederalT2Input {
8155
8440
  * as an S1 deduction. Capital-gains reserves (Part 1) go through Schedule 6.
8156
8441
  */
8157
8442
  reserveContinuity?: readonly ReserveContinuityRow[];
8158
- /** Adjusted aggregate investment income (prior year). */
8443
+ /**
8444
+ * Adjusted aggregate investment income, PRIOR year (Schedule 7 Part 2, line
8445
+ * 745, s.125(7)) — the SBD passive-income grind (s.125(5.1)(b)) only. This is
8446
+ * NOT the same figure or the same year as `aggregateInvestmentIncome` below;
8447
+ * see that field's doc comment for the conflation this app used to have.
8448
+ */
8159
8449
  aaii?: number;
8450
+ /**
8451
+ * Schedule 7 Part 2's own line-by-line detail (705-741) — when given AND
8452
+ * `aaii` is omitted, `aaii` is DERIVED from this via
8453
+ * `computeAdjustedAggregateInvestmentIncome` instead of being typed in
8454
+ * directly. `aaii` above still wins if both are supplied — an explicit
8455
+ * override, not silently replaced.
8456
+ */
8457
+ adjustedAggregateInvestmentIncomeDetail?: AdjustedAggregateInvestmentIncomeInput;
8458
+ /**
8459
+ * Aggregate investment income, CURRENT year (Schedule 7 Part 1, line 092 —
8460
+ * filed as jacket line 440) — feeds Part IV/RDTOH (s.129(3)), NOT the SBD
8461
+ * grind. Genuinely a different number from `aaii`: different year (current
8462
+ * vs. prior) AND different definition (plain AII vs. the s.125(7)-adjusted
8463
+ * figure — Part 2 excludes gains/losses on active-asset dispositions and
8464
+ * substitutes "income/losses from property" for Part 1's broader base).
8465
+ * Defaults to `aaii` when omitted — an approximation this app has always
8466
+ * made, now explicit rather than silent. See
8467
+ * `research/findings/federal/S7-aaii-vs-aggregate-investment-income-conflation.md`.
8468
+ */
8469
+ aggregateInvestmentIncome?: number;
8470
+ /**
8471
+ * Schedule 7 Part 1's own line-by-line detail (002-082) — when given AND
8472
+ * `aggregateInvestmentIncome` is omitted, it is DERIVED from this via
8473
+ * `computeAggregateInvestmentIncome` instead of being typed in directly.
8474
+ * `aggregateInvestmentIncome` above still wins if both are supplied.
8475
+ */
8476
+ aggregateInvestmentIncomeDetail?: AggregateInvestmentIncomeInput;
8160
8477
  /** Taxable dividends received from non-connected (portfolio) corps — Part IV. */
8161
8478
  portfolioDividendsReceived?: number;
8162
8479
  /** Of the portfolio dividends, the eligible portion (→ ERDTOH). */
@@ -8213,6 +8530,8 @@ interface FederalT2Input {
8213
8530
  };
8214
8531
  internetBusiness?: Schedule88Input;
8215
8532
  firstReturn?: Schedule101Input;
8533
+ /** Feeds Schedule 1 lines 340/341/342/344/345. */
8534
+ resourceDeductions?: Schedule12ResourceDeductionsInput;
8216
8535
  /** Qualified SR&ED expenditures for the year (the ITC base). */
8217
8536
  sredQualifiedExpenditures?: number;
8218
8537
  /**
@@ -8274,6 +8593,20 @@ interface FederalT2Result {
8274
8593
  schedule1: Schedule1Result;
8275
8594
  taxableIncomeCalc: TaxableIncomeResult;
8276
8595
  businessLimit: BusinessLimitResult;
8596
+ /**
8597
+ * Schedule 7 Part 2 — AAII derived from its own detail (when
8598
+ * `adjustedAggregateInvestmentIncomeDetail` given). Its own
8599
+ * `adjustedAggregateInvestmentIncome` is already folded into `aaii`'s
8600
+ * resolved value feeding `businessLimit` — exposed here for the audit
8601
+ * trail, not a separate figure to apply again.
8602
+ */
8603
+ adjustedAggregateInvestmentIncomeSchedule?: AdjustedAggregateInvestmentIncomeResult;
8604
+ /**
8605
+ * Schedule 7 Part 1 — AII derived from its own detail (when
8606
+ * `aggregateInvestmentIncomeDetail` given). Already folded into RDTOH —
8607
+ * exposed here for the audit trail.
8608
+ */
8609
+ aggregateInvestmentIncomeSchedule?: AggregateInvestmentIncomeResult;
8277
8610
  sbd: SbdResult;
8278
8611
  partI: PartITaxResult;
8279
8612
  /** Part IV tax on portfolio dividends + the RDTOH accounts (Schedule 3). */
@@ -8290,6 +8623,20 @@ interface FederalT2Result {
8290
8623
  class13?: Class13Result;
8291
8624
  /** Schedule 8 — Class 14 limited-life properties (when `class14` given). */
8292
8625
  class14?: Class14Result;
8626
+ /**
8627
+ * Class 14.1's pre-2027 transitional additional allowance (when
8628
+ * `class141Transitional` given AND `ccaClasses` has a `'14.1'` row). Its
8629
+ * `additionalAllowance` is already folded into `schedule1Deductions`/line
8630
+ * 403 — exposed here for the audit trail, not as a separate claim to add.
8631
+ */
8632
+ class141AdditionalAllowance?: Class141AdditionalAllowanceResult;
8633
+ /**
8634
+ * s.13(39) reduction applied against class 14.1 recapture (when
8635
+ * `class141Disposition` given). Already netted into the `'14.1'` row's
8636
+ * `recapture` inside `cca` and into `cca.totalRecapture` — exposed here for
8637
+ * the audit trail.
8638
+ */
8639
+ class141RecaptureReduction?: number;
8293
8640
  /** Schedule 6 — capital dispositions, taxable capital gain, net capital loss (when given). */
8294
8641
  capitalGains?: Schedule6Result;
8295
8642
  /** Schedule 5 — provincial/territorial tax (when a single Schedule-5 province is set). */
@@ -8314,6 +8661,12 @@ interface FederalT2Result {
8314
8661
  * `partVI1Tax` is included in `totalFederalTax`.
8315
8662
  */
8316
8663
  partVI1?: Schedule43Result;
8664
+ /**
8665
+ * ITA s.110(1)(k) — the Division C deduction for Part VI.1 tax paid (jacket
8666
+ * line 325). Its `deduction` is already folded into `divisionCDeductions`/
8667
+ * `taxableIncome` — exposed here for the audit trail, not a separate claim.
8668
+ */
8669
+ partVI1Deduction?: PartVI1DeductionResult;
8317
8670
  /**
8318
8671
  * EIFEL excluded-entity assessment. `requiresLimitation` true means the
8319
8672
  * regime applies and the restriction is NOT computed — the return must not
@@ -8324,6 +8677,8 @@ interface FederalT2Result {
8324
8677
  internetBusiness?: Schedule88Result;
8325
8678
  /** Schedule 101 / 24 — first return (information; present when this is a first return). */
8326
8679
  firstReturn?: Schedule101Result;
8680
+ /** Schedule 12 — resource-related deductions (present when any pool has input). */
8681
+ resourceDeductions?: Schedule12ResourceDeductionsResult;
8327
8682
  /** Schedule 31 — SR&ED investment tax credit (when qualified expenditures / opening pool present). */
8328
8683
  sredItc?: Schedule31Result;
8329
8684
  /** Schedule 27 — zero-emission technology manufacturing reduced-rate benefit (when ZETM income present). */
@@ -8753,7 +9108,13 @@ interface T2CifQuestionnaire {
8753
9108
  amalgamation?: boolean;
8754
9109
  windUp?: boolean;
8755
9110
  acquisitionOfControl?: boolean;
8756
- nonResident?: boolean;
9111
+ deemedYearEnd?: boolean;
9112
+ /**
9113
+ * 080 — the form asks "Is the corporation a resident of Canada?", the
9114
+ * OPPOSITE of what the guided editor collects (`identification.nonResident`).
9115
+ * The service inverts it when building this field; there is no separate
9116
+ * "NonResident" jacket line to carry the un-inverted answer.
9117
+ */
8757
9118
  residentOfCanada?: boolean;
8758
9119
  professionalCorp?: boolean;
8759
9120
  inactive?: boolean;
@@ -8843,8 +9204,18 @@ declare function renderT2DraftReturn(data: T2CifData, opts?: {
8843
9204
  * A complete return must reconcile total tax payable down to what the
8844
9205
  * corporation actually owes or is refunded:
8845
9206
  *
8846
- * balance owing (890) = max(0, total tax payable − instalments/payments)
8847
- * overpayment/refund (894) = max(0, instalments/payments − total tax payable)
9207
+ * balance owing = max(0, total tax payable − instalments/payments)
9208
+ * overpayment/refund = max(0, instalments/payments − total tax payable)
9209
+ *
9210
+ * NEITHER figure has its own printed line number. Line 890 is "Total
9211
+ * credits" (Amount B, the SUM of every credit line INCLUDING 840, not the
9212
+ * net balance), and line 894 is a single-digit "Refund code" choosing what
9213
+ * happens to an overpayment — never a dollar amount. `jacket.ts`'s own
9214
+ * FormDefinition documents this explicitly on line 890's field: "the form
9215
+ * prints [the balance] without a numbered box... must never be filed
9216
+ * against 890, which would report it as credits claimed." An earlier
9217
+ * version of this module's own doc comments made exactly that mistake —
9218
+ * fixed here to match.
8848
9219
  *
8849
9220
  * `totalTaxPayable` here is the engine's tax figure, already NET of the dividend
8850
9221
  * refund and refundable credits it folds in (so those are not subtracted again).
@@ -8860,9 +9231,9 @@ interface T2SettlementInput {
8860
9231
  interface T2SettlementResult {
8861
9232
  totalTaxPayable: number;
8862
9233
  instalmentsPaid: number;
8863
- /** Balance unpaid (line 890)zero when overpaid. */
9234
+ /** Balance unpaid. No line numbersee this module's own doc comment. */
8864
9235
  balanceOwing: number;
8865
- /** Overpayment refundable to the corporation (line 894)zero when a balance is owing. */
9236
+ /** Overpayment refundable to the corporation. No line numbersee this module's own doc comment. */
8866
9237
  overpaymentRefund: number;
8867
9238
  }
8868
9239
  declare function computeT2Settlement(input: T2SettlementInput): T2SettlementResult;
@@ -9121,66 +9492,6 @@ interface EifelLimitationResult {
9121
9492
  declare function ratioOfPermissibleExpenses(taxYearStart: string): number;
9122
9493
  declare function computeEifelLimitation(input: EifelLimitationInput): EifelLimitationResult;
9123
9494
  //#endregion
9124
- //#region src/t2/schedules/part-vi-1-deduction.d.ts
9125
- /**
9126
- * ITA paragraph 110(1)(k) — the deduction against taxable income for Part VI.1 tax.
9127
- *
9128
- * Part VI.1 taxes dividends paid on taxable preferred shares (s.191.1(1)), and
9129
- * paragraph 110(1)(k) gives it back as a deduction in computing taxable income —
9130
- * a multiple of the tax, not the tax itself. Omitting it overstates taxable income
9131
- * by several times the Part VI.1 tax, which is why Schedule 43 has been returning
9132
- * `deductionPending` rather than a figure.
9133
- *
9134
- * The provision, verbatim:
9135
- *
9136
- * > the amount determined by multiplying the taxpayer's tax payable under
9137
- * > subsection 191.1(1) for the year by
9138
- * > (i) if the taxation year ends before 2010, 3,
9139
- * > (ii) if the taxation year ends after 2009 and before 2012, 3.2, and
9140
- * > (iii) if the taxation year ends after 2011, 3.5.
9141
- *
9142
- * Two things worth pinning down, because both are easy to get wrong:
9143
- *
9144
- * • The multiple keys off the taxation year **END**, not its beginning, and not
9145
- * the date the dividend was paid.
9146
- * • The bands are not a rate change applied prospectively — a year ending in
9147
- * 2011 uses 3.2 for the whole year.
9148
- *
9149
- * The multiple has stood at 3.5 since 2012. It is modelled as a band table
9150
- * anyway, because prior-year returns and amendments are in scope and a hard-coded
9151
- * 3.5 silently misstates a 2010 amendment by 15%.
9152
- *
9153
- * Source: `research/sources/legislation/ITA-section-110-deductions.txt`.
9154
- *
9155
- * Pure, whole dollars.
9156
- */
9157
- /** The s.110(1)(k) multiple, by taxation year end. Ascending. */
9158
- interface PartVI1DeductionBand {
9159
- /** The multiple applies to a year ending on or after this date. */
9160
- readonly from: string;
9161
- readonly multiple: number;
9162
- }
9163
- declare const PART_VI_1_DEDUCTION_BANDS: readonly PartVI1DeductionBand[];
9164
- interface PartVI1DeductionResult {
9165
- /** The Part VI.1 tax the deduction is computed on. */
9166
- partVI1Tax: number;
9167
- /** The statutory multiple that applied. */
9168
- multiple: number;
9169
- /** The paragraph 110(1)(k) deduction against taxable income. */
9170
- deduction: number;
9171
- issues: string[];
9172
- }
9173
- /** The multiple in force for a taxation year ending on `taxYearEnd`. */
9174
- declare function partVI1DeductionMultiple(taxYearEnd: string, bands?: readonly PartVI1DeductionBand[]): number;
9175
- /**
9176
- * The paragraph 110(1)(k) deduction.
9177
- *
9178
- * An unreadable year end yields nil and says so, rather than defaulting to the
9179
- * current multiple — guessing the year would misstate taxable income, and this
9180
- * deduction is large relative to the tax it follows.
9181
- */
9182
- declare function computePartVI1Deduction(partVI1Tax: number, taxYearEnd: string, bands?: readonly PartVI1DeductionBand[]): PartVI1DeductionResult;
9183
- //#endregion
9184
9495
  //#region src/t2/schedules/schedule27-mp.d.ts
9185
9496
  /**
9186
9497
  * T2 Schedule 27 — Canadian Manufacturing and Processing Profits Deduction
@@ -9289,6 +9600,71 @@ interface MpDeductionResult {
9289
9600
  grossRevenueRatio?: number;
9290
9601
  issues: string[];
9291
9602
  }
9603
+ /** The $200,000 combined-active-business-income ceiling, s.5201 of the Regulations. */
9604
+ declare const SMALL_MANUFACTURER_INCOME_THRESHOLD = 200000;
9605
+ interface SmallManufacturerTestInput {
9606
+ /** Line 100 — this corp's active business income minus active business losses (incl. partnership share). */
9607
+ activeBusinessIncome: number;
9608
+ /** Line 105 — active business income of associated Canadian corporations, for the $200,000 gate only. */
9609
+ associatedActiveBusinessIncome?: number;
9610
+ /** Requirement 1 — activities during the year were PRIMARILY M&P in Canada. */
9611
+ primarilyManufacturing: boolean;
9612
+ /** Requirement 3 — disqualifies outright, same list as `computeMpDeduction`'s `excludedActivity`. */
9613
+ excludedActivity?: (typeof MP_EXCLUDED_ACTIVITIES)[number];
9614
+ /** Requirement 4 — any active business carried on outside Canada during the year. */
9615
+ activeBusinessOutsideCanada?: boolean;
9616
+ }
9617
+ interface SmallManufacturerTestResult {
9618
+ /** All four requirements met. */
9619
+ qualifies: boolean;
9620
+ /** Line 110 — line 100 + line 105, tested against the $200,000 ceiling. */
9621
+ combinedActiveBusinessIncome: number;
9622
+ /** Line 200 (via Part 1): line 100 alone when qualifying, else 0 — use Part 2 instead. */
9623
+ canadianMPProfits: number;
9624
+ issues: string[];
9625
+ }
9626
+ declare function computeSmallManufacturerTest(input: SmallManufacturerTestInput): SmallManufacturerTestResult;
9627
+ interface Part2MPProfitsInput {
9628
+ /** Part 3, line 130 — adjusted business income (already net of the resource-income adjustment, if any). */
9629
+ adjustedBusinessIncome: number;
9630
+ /** Part 4, line 140 — cost of capital (C). */
9631
+ costOfCapital: number;
9632
+ /** Part 5, line 150 — cost of manufacturing and processing capital (MC), already capped at C. */
9633
+ costOfMPCapital: number;
9634
+ /** Part 6, line 160 — cost of labour (L). */
9635
+ costOfLabour: number;
9636
+ /** Part 7, line 170 — cost of manufacturing and processing labour (ML), already capped at L. */
9637
+ costOfMPLabour: number;
9638
+ }
9639
+ interface Part2MPProfitsResult {
9640
+ /** (MC + ML) / (C + L) — the fraction of "capital + labour" devoted to M&P. */
9641
+ ratio: number;
9642
+ /** Line 200 (via Part 2): ADJUBI × ratio, rounded, floored at 0. */
9643
+ canadianMPProfits: number;
9644
+ issues: string[];
9645
+ }
9646
+ declare function computePart2MPProfits(input: Part2MPProfitsInput): Part2MPProfitsResult;
9647
+ interface CanadianMPProfitsInput {
9648
+ /** Test Part 1 eligibility first — omit if the corporation obviously doesn't qualify (large ABI, etc.). */
9649
+ smallManufacturer?: SmallManufacturerTestInput;
9650
+ /** Used when `smallManufacturer` is omitted, or Part 1 doesn't qualify. */
9651
+ part2?: Part2MPProfitsInput;
9652
+ }
9653
+ interface CanadianMPProfitsResult {
9654
+ /** Which Part actually produced `canadianMPProfits` — undefined if neither input was usable. */
9655
+ method?: 'part1' | 'part2';
9656
+ /** Line 200 — feeds `MpDeductionInput.manufacturingAndProcessingProfits`. */
9657
+ canadianMPProfits: number;
9658
+ smallManufacturerTest?: SmallManufacturerTestResult;
9659
+ part2Result?: Part2MPProfitsResult;
9660
+ issues: string[];
9661
+ }
9662
+ /**
9663
+ * "Small manufacturing corporations that meet all requirements in Part 1
9664
+ * should begin with Part 1 ... all other corporations should begin with
9665
+ * Part 2" — the form's own routing (page 1), reproduced here.
9666
+ */
9667
+ declare function computeCanadianMPProfits(input: CanadianMPProfitsInput): CanadianMPProfitsResult;
9292
9668
  declare function computeMpDeduction(input: MpDeductionInput, rates?: MpDeductionRates): MpDeductionResult;
9293
9669
  //#endregion
9294
- export { QuebecTaxResult as $, computeAlbertaSchedule15 as $a, AlbertaSchedule18Result as $c, CcogpeSuccessorFederal as $i, leaseholdPeriods as $l, mealsAndEntertainmentAddBack as $n, computeAlbertaSchedule6 as $o, Schedule12Adjustment as $r, schedule18Values as $s, ItcRecaptureItem as $t, T2CifGifi as A, EdaRegularFederal as Aa, NonCapitalLossByYearOfOriginInput as Ac, At1CriticalFieldMissingError as Ai, Schedule8Entry as Al, Schedule4Input as An, allocateSchedule9ExpenditureLimit as Ao, PartITaxResult as Ar, Schedule3Result as As, computeSchedule55 as At, computeDayWeightedGeneralTax as Au, Co17Certification as B, FedeSuccessorFederal as Ba, computeLimitedPartnershipLossRow as Bc, at1YesNo as Bi, Class141AdditionalAllowanceInput as Bl, computeSchedule2 as Bn, AlbertaSchedule7Result as Bo, CORP_TAX_RATE_BOOK as Br, Schedule10FilingInput as Bs, computeGrip as Bt, latestRateYear as Bu, FOREIGN_TAX_CREDIT_GROSS_UP as C, CfreCountrySuccessorFederal as Ca, computeIegReductionFactor as Cc, formatRsiDate as Ci, AlbertaSchedule13Input as Cl, Schedule5Result as Cn, AlbertaSchedule9Input as Co, computeTaxableIncome as Cr, CapitalInvestmentTaxCreditInput as Cs, computeSchedule101 as Ct, AlbertaCorporationStatus as Cu, computeT2Settlement as D, CmedbFederal as Da, iegT661SourceLine as Dc, renderRsiLineItem as Di, CcaClassInput as Dl, ProvincialAllocationInput as Dn, Schedule9AllocationResult as Do, CcpcActiveBusinessTaxInput as Dr, MaximumAllowableDeductionInput as Ds, normalizeSchedule88 as Dt, AB_GENERAL_RATE_BANDS as Du, T2SettlementResult as E, CfreCountrySuccessorResult as Ea, computeIegEligibleExpenditures as Ec, renderRsiHeader as Ei, computeAlbertaSchedule13 as El, PermanentEstablishment as En, Schedule9AllocationMemberResult as Eo, nonCapitalLossApplied as Er, InvestorTaxCreditResult as Es, Schedule88Result as Et, computeAlbertaSbd as Eu, T2GifiLine as F, EdaSuccessorResult as Fa, computeNonCapitalLossByYearOfOrigin as Fc, albertaBalanceUnpaid as Fi, computeSchedule8$1 as Fl, Part4RdtohResult as Fn, Schedule8Input as Fo, SbdInput as Fr, computeAllocationFactor as Fs, Schedule54Input as Ft, RateBook as Fu, co17Engine as G, SfedeCountryRegularFederal as Ga, DonationMaximumResult as Gc, AlbertaReturnResult as Gi, Class14Result as Gl, Schedule1Result as Gn, computeAlbertaSchedule7 as Go, computeLossSchedule as Gr, Schedule2FilingInput as Gs, LARGE_CORPORATION_THRESHOLD as Gt, Co17ReturnData as H, FedeSuccessorOverride as Ha, AT1_DONATION_GAIN_RATE as Hc, At1ReturnInput as Hi, Class14Input as Hl, Schedule1Line as Hn, RoyaltySupplementalPartnershipResult as Ho, resolveCorpTaxRates as Hr, Schedule1FilingInput as Hs, Schedule43Rates as Ht, renderT2DraftReturn as I, FedeRegularFederal as Ia, computeOtherLossByYearOfOrigin as Ic, assertAt1MandatoryComplete as Ii, CLASS_14_1_MINIMUM_DEDUCTION as Il, REFUNDABLE_PART_I_RATE as In, Schedule8Result as Io, SbdResult as Ir, AT1_SCHEDULES_WITHOUT_BUILDERS as Is, Schedule54Result as It, RateBookEntry as Iu, computeQuebecReturn as J, SfedeCountryRegularResult as Ja, Schedule20Input as Jc, AlbertaSchedule15Result as Ji, MAX_LEASEHOLD_PERIODS as Jl, ccaDeduction as Jn, AlbertaSchedule6Result as Jo, CEC_DEDUCTION_RATE as Jr, schedule12LossDeductions as Js, computeTaxableCapital as Jt, QuebecReturnInput as K, SfedeCountryRegularInput as Ka, computeDonationMaximum as Kc, computeAlbertaReturn as Ki, LeaseholdLayer as Kl, amortizationAddBack as Kn, schedule7Values as Ko, AlbertaSchedule14Input as Kr, at1LineItemId as Ks, TaxableCapitalInput as Kt, T2ReturnInput as L, FedeRegularInput as La, LimitedPartnershipLossRow as Lc, assertAt1TaxPayableReconciles as Li, CLASS_14_1_TRANSITIONAL_RATE as Ll, computePart4Rdtoh as Ln, computeSchedule8 as Lo, computeBusinessLimit as Lr, AT1_SCHEDULES_WITH_BUILDERS as Ls, computeSchedule54 as Lt, earliestRateYear as Lu, T2CifQuestionnaire as M, EdaRegularResult as Ma, OtherLossByYearOfOriginResult as Mc, At1MandatoryFieldMissingError as Mi, UnsupportedCcaClassError as Ml, computeSchedule4Losses as Mn, computeSchedule9MaximumExpenditureLimit as Mo, computePartITax as Mr, schedule3Values as Ms, LRIP_INVESTMENT_INCOME_FACTOR as Mt, AB_TAX_RATE_BOOK as Mu, T2CifSettlement as N, EdaSuccessorFederal as Na, OtherLossVintageEntry as Nc, At1TaxPayableMismatchError as Ni, computeCcaClass as Nl, PART_IV_RATE as Nn, schedule9Values as No, BusinessLimitInput as Nr, AllocationFactorInput as Ns, LripDividendEvent as Nt, AlbertaTaxRates as Nu, T2CifAddress as O, CmedbInput as Oa, LossVintageEntry as Oc, renderAt1NetFile as Oi, CcaClassResult as Ol, ProvincialAllocationResult as On, Schedule9FieldOfScience as Oo, CcpcActiveBusinessTaxResult as Or, MaximumAllowableDeductionResult as Os, Schedule55Input as Ot, DayWeightedRateResult as Ou, T2CifShareholder as P, EdaSuccessorInput as Pa, OtherLossVintageRowResult as Pc, At1TransmitterInfo as Pi, computeCcaSchedule as Pl, Part4RdtohInput as Pn, PoliticalContributionInput as Po, BusinessLimitResult as Pr, SINGLE_JURISDICTION_ALBERTA_FACTOR as Ps, LripEventResult as Pt, resolveAlbertaTaxRates as Pu, QuebecTaxInput as Q, SfedeCountrySuccessorResult as Qa, AlbertaSchedule18Input as Qc, CcogpeRegularResult as Qi, computeClass141AdditionalAllowance as Ql, incomeTaxProvisionAddBack as Qn, RoyaltyTaxCreditShelterAllocationResult as Qo, computeAlbertaSchedule14 as Qr, schedule17Values as Qs, ITC_RECAPTURE_PERIOD_YEARS as Qt, t2Engine as R, FedeRegularOverride as Ra, LimitedPartnershipLossRowResult as Rc, assertCriticalFields as Ri, Class13Input as Rl, Schedule2Input as Rn, schedule8Values as Ro, computeSBD as Rr, At1ScheduleData as Rs, GripInput as Rt, extendRateBook as Ru, AdjustedTaxableIncomeResult as S, CfreCountryRegularResult as Sa, computeIegBaseAmount as Sc, formatRsiAmount as Si, AlbertaSchedule13ClassResult as Sl, Schedule5Input as Sn, ALBERTA_SRED_TAX_CREDIT_RATE as So, charitableDonationsDeduction as Sr, At1ScheduleValueLike$6 as Ss, Schedule101Result as St, computeAlbertaTax as Su, T2SettlementInput as T, CfreCountrySuccessorOverride as Ta, IegEligibleExpendituresResult as Tc, renderAt1Rsi as Ti, FederalCcaClass as Tl, AllocatedProvince as Tn, Schedule9AllocationMember as To, netCapitalLossApplied as Tr, InvestorTaxCreditInput as Ts, Schedule88Input as Tt, AlbertaSbdResult as Tu, renderCo17DraftReturn as U, FedeSuccessorResult as Ua, AT1_DONATION_INCOME_RATE as Uc, at1Engine as Ui, Class14Property as Ul, Schedule1LineDefect as Un, RoyaltySupplementalPriorYearAdjustment as Uo, LossScheduleInput as Ur, Schedule20FilingInput as Us, Schedule43Result as Ut, Co17Identity as V, FedeSuccessorInput as Va, computeLimitedPartnershipLosses as Vc, xmlEscape as Vi, Class141AdditionalAllowanceResult as Vl, Schedule1Input as Vn, RoyaltySupplementalPartnership as Vo, CorpTaxRates as Vr, Schedule12FilingInput as Vs, Schedule43Input as Vt, resolveRates as Vu, Co17ReturnInput as W, Schedule15FilingResult as Wa, DonationMaximumInput as Wc, AlbertaReturnInput as Wi, Class14PropertyResult as Wl, Schedule1NotFileableError as Wn, RoyaltySupplementalPriorYearAdjustmentResult as Wo, LossScheduleResult as Wr, Schedule21FilingInput as Ws, computeSchedule43 as Wt, QuebecEstablishment as X, SfedeCountrySuccessorInput as Xa, computeSchedule20 as Xc, CcogpeRegularInput as Xi, computeClass13 as Xl, deferredIncomeTaxProvisionAddBack as Xn, RoyaltyTaxCreditQuarter as Xo, CecIncomeInclusionDetail as Xr, schedule13Values as Xs, Schedule31Result as Xt, QuebecAllocationResult as Y, SfedeCountrySuccessorFederal as Ya, Schedule20Result as Yc, CcogpeRegularFederal as Yi, MIN_LEASEHOLD_PERIODS as Yl, computeSchedule1 as Yn, RoyaltyTaxCreditLongestAssociatedYear as Yo, CEC_INCLUSION_RATE as Yr, schedule12Values as Ys, Schedule31Input as Yt, computeQuebecAllocationFactor as Z, SfedeCountrySuccessorOverride as Za, AT1_DISPOSITION_CATEGORIES as Zc, CcogpeRegularOverride as Zi, computeClass14 as Zl, findSchedule1LineDefects as Zn, RoyaltyTaxCreditShelterAllocation as Zo, cecScheduleAppliesToTaxYear as Zr, schedule16Values as Zs, computeSchedule31 as Zt, EifelLimitationInput as _, CeeSuccessorOverride as _a, computeIegGroupFigures as _c, RSI_WORD_GAP as _i, AlbertaSchedule16Input as _l, computeSchedule13 as _n, Schedule11Result as _o, isSchedule5Province as _r, AgriProcessingTaxCreditInput as _s, FederalT2Input as _t, LossCarrybackResult as _u, MpDeductionRates as a, CdeRegularOverride as aa, schedule4970Values as ac, albertaCcaDifference as ai, SECTION_34_2_GROSS_UP as al, computeZetm as an, computeCeeSuccessor as ao, EifelResult as ar, At1Schedule5SuccessoredPoolEntry as as, T2_CERTIFICATION_FIXTURES as at, At4970Input as au, ratioOfPermissibleExpenses as b, CfreCountryRegularInput as ba, IegResult as bc, RsiLineItemError as bi, computeAlbertaSchedule16 as bl, Schedule6Result as bn, ALBERTA_SRED_EXPENDITURE_CUTOFF as bo, TaxableIncomeLine as br, AgriProcessingVintageResult as bs, FirstReturnEvent as bt, AlbertaTaxInput as bu, PART_VI_1_DEDUCTION_BANDS as c, CdeSuccessorInput as ca, IegAgreementMemberResult as cc, albertaDispositionAdjustments as ci, AT1_RESERVE_LINES as cl, BusinessLimitAllocationInput as cn, computeCmedb as co, ProvincialRateChange as cr, schedule5Values as cs, ConformanceSummary as ct, At4970ProjectRowResult as cu, computePartVI1Deduction as d, CeeRegularFederal as da, IegGroupMember as dc, albertaTerminalLossDifference as di, AlbertaSchedule17Result as dl, computeBusinessLimitAllocation as dn, computeFedeRegular as do, dayWeightedRate as dr, Schedule4Input$1 as ds, T2LineKey as dt, computeAt4970 as du, CcogpeSuccessorInput as ea, schedule1Values as ec, Schedule12Input as ei, At1AbilEntry as el, ItcRecaptureItemResult as en, computeCcogpeRegular as eo, recaptureAddBack as er, schedule6Values as es, computeQuebecTax as et, CCA_DECLINING_BALANCE_RATES_2024 as eu, partVI1DeductionMultiple as f, CeeRegularInput as fa, IegGroupResult as fc, computeSchedule12 as fi, At1ReserveBalances as fl, Schedule21Input as fn, computeFedeSuccessor as fo, PROVINCE_RATES_2024 as fr, Schedule4Result$1 as fs, T2_LINE_META as ft, LossContinuityInput as fu, EIFEL_TRANSITIONAL_RATIO as g, CeeSuccessorInput as ga, computeIegAgreement as gc, RSI_NEGATIVE_PREFIX as gi, computeAlbertaSchedule17 as gl, ReserveContinuityRow as gn, Schedule11Input as go, ProvincialRate as gr, AgriProcessingCurrentYearInput as gs, runConformanceSuite as gt, LossCarrybackInput as gu, EIFEL_STANDARD_RATIO_FROM as h, CeeSuccessorFederal as ha, allocateIegExpenditureLimit as hc, RSI_DELIMITER as hi, At1ReserveTable as hl, ReserveContinuityResult as hn, schedule15Values as ho, ProvinceRateTable as hr, AgriProcessingCombinedVintageInput as hs, runConformance as ht, LossCarrybackError as hu, MpDeductionInput as i, CdeRegularInput as ia, schedule2Values as ic, albertaCapitalGainDifference as ii, At1DispositionCategory as il, ZetmResult as in, computeCeeRegular as io, EifelInput as ir, At1Schedule5PredecessorTransfer as is, resolveQuebecTaxRates as it, resolveCcaRates as iu, T2CifPartI as j, EdaRegularInput as ja, NonCapitalLossByYearOfOriginResult as jc, At1FilingData as ji, Schedule8Result$1 as jl, Schedule4Result as jn, computeAlbertaSchedule9 as jo, computeCcpcActiveBusinessTax as jr, computeSchedule3 as js, LRIP_INVESTMENT_CORPORATION_MULTIPLE as jt, AB_TAX_2024 as ju, T2CifData as k, CmedbResult as ka, LossVintageRowResult as kc, AT1_CRITICAL_MANDATORY_FIELDS as ki, CcaScheduleResult as kl, computeProvincialAllocation as kn, Schedule9GroupFilingInput as ko, PartITaxInput as kr, Schedule3Input as ks, Schedule55Result as kt, GeneralRateBand as ku, PartVI1DeductionBand as l, CdeSuccessorOverride as la, IegAgreementResult as lc, albertaRecaptureDifference as li, AT1_RESERVE_TOTAL_LINES as ll, BusinessLimitAllocationResult as ln, computeEdaRegular as lo, ProvincialRateChanges as lr, ForeignInvestmentCountryInput as ls, ExpectedSource as lt, At4970Result as lu, EIFEL_STANDARD_RATIO as m, CeeRegularResult as ma, allocateIegEvenly as mc, RSI_COLUMN_GAP as mi, At1ReserveRowResult as ml, computeSchedule21 as mn, computeSfedeCountrySuccessor as mo, ProvinceCode as mr, schedule4Values as ms, formatConformanceReport as mt, computeLossContinuity as mu, MP_GROSS_REVENUE_THRESHOLD as n, CcogpeSuccessorResult as na, schedule21Values as nc, Schedule12Result as ni, At1CategoryResult as nl, computeItcRecapture as nn, computeCdeRegular as no, EIFEL_EFFECTIVE_FROM as nr, AlbertaSchedule5Result as ns, QC_TAX_RATE_BOOK as nt, CcaRateTable as nu, MpDeductionResult as o, CdeRegularResult as oa, IegAgreementInput as oc, albertaCcaScheduleAdjustments as oi, computeAlbertaSchedule18 as ol, AssociatedMemberInput as on, computeCfreRegular as oo, EifelThresholds as or, At1Schedule5SuccessoredPoolEntryResult as os, CertificationFixture as ot, At4970JurisdictionAmount as ou, EIFEL_FIRST_YEAR_START as p, CeeRegularOverride as pa, IegLimitAllocation as pc, reconcileAlbertaNetIncome as pi, At1ReserveKind as pl, Schedule21Result as pn, computeSfedeCountryRegular as po, PROVINCE_RATE_BOOK as pr, computeSchedule4 as ps, foldT2Lines as pt, LossContinuityResult as pu, QuebecReturnResult as q, SfedeCountryRegularOverride as qa, AlbertaGiftCarryforward as qc, AlbertaSchedule15Input as qi, LeaseholdLayerResult as ql, assertSchedule1Fileable as qn, AlbertaSchedule6Input as qo, AlbertaSchedule14Result as qr, schedule10Values as qs, TaxableCapitalResult as qt, MP_RATES_2024 as r, CdeRegularFederal as ra, schedule29Values as rc, albertaAbilDifference as ri, At1CategoryTotals as rl, ZetmInput as rn, computeCdeSuccessor as ro, EifelExemption as rr, At1Schedule5PoolTransfer as rs, QuebecTaxRates as rt, isDecliningBalanceClass as ru, computeMpDeduction as s, CdeSuccessorFederal as sa, IegAgreementMember as sc, albertaCurrentYearLoss as si, AT1_RESERVE_KINDS as sl, AssociatedMemberResult as sn, computeCfreSuccessor as so, assessEifel as sr, computeAlbertaSchedule5 as ss, ConformanceResult as st, At4970ProjectRow as su, MP_EXCLUDED_ACTIVITIES as t, CcogpeSuccessorOverride as ta, schedule20Values as tc, Schedule12Line as ti, At1AbilResult as tl, ItcRecaptureResult as tn, computeCcogpeSuccessor as to, terminalLossDeduction as tr, AlbertaSchedule5Input as ts, QC_TAX_2024 as tt, CCA_RATE_BOOK as tu, PartVI1DeductionResult as u, CdeSuccessorResult as ua, IegAllocationResult as uc, albertaReserveDifference as ui, AlbertaSchedule17Input as ul, allocateEvenly as un, computeEdaSuccessor as uo, blendProvinceRateTable as ur, ForeignInvestmentCountryResult as us, LineCheck as ut, At4970Totals as uu, EifelLimitationResult as v, CeeSuccessorResult as va, IEG_2024 as vc, RsiHeaderInput as vi, AlbertaSchedule16Result as vl, CapitalDisposition as vn, computeSchedule11 as vo, resolveProvinceRates as vr, AgriProcessingTaxCreditResult as vs, FederalT2Result as vt, LossCarrybackYear as vu, computeAdjustedTaxableIncome as w, CfreCountrySuccessorInput as wa, IegEligibleExpendituresInput as wc, formatRsiText as wi, AlbertaSchedule13Result as wl, computeSchedule5 as wn, AlbertaSchedule9Result as wo, dividendsDeductibleS112 as wr, CapitalInvestmentTaxCreditResult as ws, SCHEDULE_88_MAX_URLS as wt, AlbertaSbdInput as wu, AdjustedTaxableIncomeInput as x, CfreCountryRegularOverride as xa, computeIeg as xc, RsiScheduleInput as xi, AlbertaCcaOverride as xl, computeSchedule6 as xn, ALBERTA_SRED_PROGRAM_START as xo, TaxableIncomeResult as xr, At1ScheduleDataLike$6 as xs, Schedule101Input as xt, AlbertaTaxResult as xu, computeEifelLimitation as y, CfreCountryRegularFederal as ya, IegInput as yc, RsiLineItem as yi, assistanceFrom as yl, DispositionResult as yn, schedule11Values as yo, TaxableIncomeInput as yr, AgriProcessingVintageInput as ys, computeFederalT2 as yt, computeLossCarryback as yu, Co17Address as z, FedeRegularResult as za, LimitedPartnershipLossesResult as zc, at1TaxPayableDeductions as zi, Class13Result as zl, Schedule2Result as zn, AlbertaSchedule7Input as zo, CORP_TAX_2024 as zr, At1ScheduleValue as zs, GripResult as zt, hasExactRateYear as zu };
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 };