@trajectonomics/tax 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,636 @@
1
+ import { h as TaxBracket, n as TaxResult, p as BracketEvaluationResult, r as TaxSystem, u as ClampedAmount } from "../types-798sLpt6.mjs";
2
+ /**
3
+ * Child dependent representation for Thailand PIT.
4
+ */
5
+ interface ThChild {
6
+ readonly birthYear?: number | undefined;
7
+ }
8
+ /**
9
+ * Direct counts for children allowances.
10
+ */
11
+ interface ThChildrenInput {
12
+ readonly totalCount?: number | undefined;
13
+ readonly secondPlusBorn2018OrLaterCount?: number | undefined;
14
+ }
15
+ /**
16
+ * Detailed parental care flags (age 60+, income <= 30k THB).
17
+ */
18
+ interface ThParentsInput {
19
+ readonly taxpayerFather?: boolean | undefined;
20
+ readonly taxpayerMother?: boolean | undefined;
21
+ readonly spouseFather?: boolean | undefined;
22
+ readonly spouseMother?: boolean | undefined;
23
+ }
24
+ /**
25
+ * Thailand personal, family, insurance, retirement, and donation allowances input.
26
+ */
27
+ interface ThAllowancesInput {
28
+ readonly personal?: number | undefined;
29
+ readonly spouse?: number | undefined;
30
+ readonly children?: readonly ThChild[] | ThChildrenInput | undefined;
31
+ readonly parents?: ThParentsInput | number | undefined;
32
+ readonly disabledCareCount?: number | undefined;
33
+ readonly socialSecurity?: number | undefined;
34
+ readonly lifeInsurance?: number | undefined;
35
+ readonly healthInsurance?: number | undefined;
36
+ readonly parentHealthInsurance?: number | undefined;
37
+ readonly spouseLifeInsurance?: number | undefined;
38
+ readonly mortgageInterest?: number | undefined;
39
+ readonly rmf?: number | undefined;
40
+ readonly ssf?: number | undefined;
41
+ readonly pvd?: number | undefined;
42
+ readonly gpf?: number | undefined;
43
+ readonly nsf?: number | undefined;
44
+ readonly pensionLifeInsurance?: number | undefined;
45
+ readonly thaiEsg?: number | undefined;
46
+ readonly donation2x?: number | undefined;
47
+ readonly donation1x?: number | undefined;
48
+ }
49
+ /**
50
+ * Election values for a Section 40(4) source: keep source withholding as final tax, or include
51
+ * the income in the regular progressive computation. Plain `"final"`/`"include"` strings are
52
+ * accepted wherever {@link ThFinalWithholdingElection} is expected.
53
+ *
54
+ * @statute Thailand Revenue Code Sections 40(4), 50(2)(g), 57 ter.
55
+ */
56
+ export declare const ThFinalWithholdingElection: {
57
+ readonly Final: "final";
58
+ readonly Include: "include";
59
+ };
60
+ /** Union of {@link ThFinalWithholdingElection} values. */
61
+ export type ThFinalWithholdingElection = (typeof ThFinalWithholdingElection)[keyof typeof ThFinalWithholdingElection];
62
+ /**
63
+ * Section 40(4) interest or digital asset income with an optional final withholding election.
64
+ * Units: THB major units.
65
+ *
66
+ * @statute Thailand Revenue Code Sections 40(4), 50(2)(g), 57 ter.
67
+ */
68
+ interface ThSection40_4Source {
69
+ /** Gross amount received, in THB (non-negative, finite). */
70
+ readonly amount: number;
71
+ /** Defaults to `"include"`. */
72
+ readonly election?: ThFinalWithholdingElection;
73
+ }
74
+ /**
75
+ * Section 40(4) dividend income with election and optional Thai corporate tax rate.
76
+ * Units: THB major units; `corpTaxRate` is a ratio.
77
+ *
78
+ * @statute Thailand Revenue Code Sections 40(4), 47 bis.
79
+ */
80
+ interface ThSection40_4Dividend extends ThSection40_4Source {
81
+ /** Corporate income tax rate in [0, 1) paid by the distributing company (Section 47 bis). */
82
+ readonly corpTaxRate?: number;
83
+ }
84
+ /**
85
+ * Structured Section 40(4) input splitting interest, dividends, and digital assets.
86
+ * Units: THB major units.
87
+ *
88
+ * @statute Thailand Revenue Code Section 40(4).
89
+ */
90
+ interface ThSection40_4Input {
91
+ /** Other Section 40(4) income always included in regular brackets. */
92
+ readonly amount?: number;
93
+ /** Interest; a bare number means included in regular brackets. */
94
+ readonly interest?: number | ThSection40_4Source;
95
+ /** Dividends; a bare number means included, with no Section 47 bis credit. */
96
+ readonly dividends?: number | ThSection40_4Dividend;
97
+ /** Digital asset income; a bare number means included in regular brackets. */
98
+ readonly digitalAssets?: number | ThSection40_4Source;
99
+ }
100
+ /**
101
+ * Kind of Section 48(5) lump sum. Only labour-law `"severance"` carries the 400-day / 600,000 THB
102
+ * exemption; other `"retirement"` payments (e.g. a pension fund lump sum) get none.
103
+ * Plain `"severance"`/`"retirement"` strings are accepted wherever
104
+ * {@link ThSeparateSheetPaymentType} is expected.
105
+ *
106
+ * @statute Thailand Revenue Code Section 48(5); Section 42(1) (severance exemption).
107
+ */
108
+ export declare const ThSeparateSheetPaymentType: {
109
+ readonly Severance: "severance";
110
+ readonly Retirement: "retirement";
111
+ };
112
+ /** Union of {@link ThSeparateSheetPaymentType} values. */
113
+ export type ThSeparateSheetPaymentType = (typeof ThSeparateSheetPaymentType)[keyof typeof ThSeparateSheetPaymentType];
114
+ /**
115
+ * Section 48(5) one-time severance or retirement lump sum.
116
+ * Units: THB major units; `yearsOfService` is a count.
117
+ *
118
+ * @statute Thailand Revenue Code Section 48(5), Section 42(1).
119
+ */
120
+ interface ThSeparateSheetInput {
121
+ /** Lump sum received, in THB. */
122
+ readonly amount: number;
123
+ /** Completed years of service (non-negative safe integer; callers round part-years up). */
124
+ readonly yearsOfService: number;
125
+ /** Last daily wage in THB, basis for the 400-day exemption. */
126
+ readonly lastDailyWage: number;
127
+ /** Defaults to `"severance"`; `"retirement"` payments receive no exemption. */
128
+ readonly paymentType?: ThSeparateSheetPaymentType;
129
+ }
130
+ /**
131
+ * How a Section 48(4) property was acquired. Inherited or gifted property takes a flat 50%
132
+ * expense; commercially acquired (or other) property takes the holding-year table. The two are
133
+ * never combined. Plain `"commercial"`/`"inheritance_or_gift"` strings are accepted wherever
134
+ * {@link ThRealEstateAcquisitionType} is expected.
135
+ *
136
+ * @statute Thailand Revenue Code Section 48(4); Ministerial Regulation No. 126.
137
+ */
138
+ export declare const ThRealEstateAcquisitionType: {
139
+ readonly Commercial: "commercial";
140
+ readonly InheritanceOrGift: "inheritance_or_gift";
141
+ };
142
+ /** Union of {@link ThRealEstateAcquisitionType} values. */
143
+ export type ThRealEstateAcquisitionType = (typeof ThRealEstateAcquisitionType)[keyof typeof ThRealEstateAcquisitionType];
144
+ /**
145
+ * Which expense deduction a Section 48(4) computation used, reported in the breakdown.
146
+ *
147
+ * @statute Thailand Revenue Code Section 48(4); Ministerial Regulation No. 126.
148
+ */
149
+ export declare const ThRealEstateExpenseBasis: {
150
+ readonly HoldingPeriodTable: "holding_period_table";
151
+ readonly FlatInheritance: "flat_inheritance";
152
+ };
153
+ /** Union of {@link ThRealEstateExpenseBasis} values. */
154
+ export type ThRealEstateExpenseBasis = (typeof ThRealEstateExpenseBasis)[keyof typeof ThRealEstateExpenseBasis];
155
+ /**
156
+ * Section 48(4) real estate transfer subject to separate computation.
157
+ * Units: THB major units; `holdingYears` is a count.
158
+ *
159
+ * @statute Thailand Revenue Code Section 48(4).
160
+ */
161
+ interface ThRealEstateTransferInput {
162
+ /**
163
+ * Official appraised value in THB (ราคาประเมินทุนทรัพย์, Section 49 bis), not the actual sale
164
+ * price.
165
+ */
166
+ readonly grossTransferValue: number;
167
+ /**
168
+ * Years the property was held (positive safe integer). Callers round part-years up; the
169
+ * calculation counts at most 10 years.
170
+ */
171
+ readonly holdingYears: number;
172
+ /** Defaults to `"commercial"`; `"inheritance_or_gift"` uses a flat 50% expense. */
173
+ readonly acquisitionType?: ThRealEstateAcquisitionType;
174
+ }
175
+ /**
176
+ * Final withholding detail for one Section 40(4) source. Units: THB major units; `rate` is a ratio.
177
+ *
178
+ * @statute Thailand Revenue Code Sections 40(4), 50(2)(g), 57 ter.
179
+ */
180
+ interface ThFinalWithholdingSourceBreakdown {
181
+ readonly election: ThFinalWithholdingElection;
182
+ readonly amount: number;
183
+ readonly rate: number;
184
+ /** Tax withheld at source; zero unless the election is `"final"`. */
185
+ readonly tax: number;
186
+ }
187
+ /**
188
+ * Section 40(4) final withholding audit trail. Units: THB major units.
189
+ *
190
+ * @statute Thailand Revenue Code Sections 40(4), 50(2)(g), 57 ter.
191
+ */
192
+ interface ThFinalWithholdingBreakdown {
193
+ readonly interest: ThFinalWithholdingSourceBreakdown;
194
+ readonly dividends: ThFinalWithholdingSourceBreakdown;
195
+ readonly digitalAssets: ThFinalWithholdingSourceBreakdown;
196
+ /** Sum of amounts elected `"final"` (excluded from regular brackets). */
197
+ readonly totalAmount: number;
198
+ /** Sum of tax withheld on the amounts elected `"final"`. */
199
+ readonly totalTax: number;
200
+ }
201
+ /**
202
+ * Section 47 bis dividend tax credit audit trail. Units: THB major units; `corpTaxRate` is a ratio.
203
+ *
204
+ * @statute Thailand Revenue Code Section 47 bis.
205
+ */
206
+ interface ThDividendTaxCreditBreakdown {
207
+ /** True when a corporate tax rate was supplied for included dividends. */
208
+ readonly isApplicable: boolean;
209
+ /** Dividends included in regular brackets, before gross-up. */
210
+ readonly dividendAmount: number;
211
+ readonly corpTaxRate: number;
212
+ /** `dividendAmount * rate / (1 - rate)`; offsets tax payable. */
213
+ readonly credit: number;
214
+ /** `dividendAmount + credit`; the amount added to Section 40(4) assessable income. */
215
+ readonly grossedUpAmount: number;
216
+ }
217
+ /**
218
+ * Section 48(5) separate sheet audit trail. Units: THB major units.
219
+ *
220
+ * @statute Thailand Revenue Code Section 48(5), Section 42(1).
221
+ */
222
+ interface ThSeparateSheetBreakdown {
223
+ readonly amount: number;
224
+ readonly yearsOfService: number;
225
+ readonly lastDailyWage: number;
226
+ /** True when `yearsOfService` meets the statutory minimum for the separate sheet. */
227
+ readonly isEligible: boolean;
228
+ /** Lump sum remaining after the exemption, folded into Section 40(1) when ineligible. */
229
+ readonly addedToSection40_1: number;
230
+ /** `lastDailyWage * 400` (zero for retirement payments). */
231
+ readonly wageBasedCap: number;
232
+ readonly exemptionCeiling: number;
233
+ /** `"retirement"` payments receive no exemption. */
234
+ readonly paymentType: ThSeparateSheetPaymentType;
235
+ /** Applied to severance at any length of service; zero for retirement payments. */
236
+ readonly exemption: number;
237
+ readonly remainder: number;
238
+ readonly fixedExpense: number;
239
+ readonly percentageExpense: number;
240
+ readonly netTaxable: number;
241
+ readonly brackets: BracketEvaluationResult;
242
+ readonly tax: number;
243
+ }
244
+ /**
245
+ * Section 48(4) real estate transfer audit trail. Units: THB major units.
246
+ *
247
+ * Tax is computed exactly as `years * bracketTax(netGain / years)` by evaluating `netGain`
248
+ * against the schedule without a 0% tier with every bound multiplied by `effectiveHoldingYears`,
249
+ * so `brackets` slices carry those scaled bounds. `annualGain` and `annualTax` are the per-year
250
+ * figures rounded to the satang for display only; `taxBeforeCap` is the exact figure and may
251
+ * differ from `annualTax * effectiveHoldingYears` by under one satang per year.
252
+ *
253
+ * @statute Thailand Revenue Code Section 48(4), Section 42(5).
254
+ */
255
+ interface ThRealEstateBreakdown {
256
+ /** Official appraised value (ราคาประเมินทุนทรัพย์) supplied by the caller. */
257
+ readonly grossTransferValue: number;
258
+ readonly acquisitionType: ThRealEstateAcquisitionType;
259
+ /** Which expense applied: flat inheritance/gift rate or the holding-year table. */
260
+ readonly expenseBasis: ThRealEstateExpenseBasis;
261
+ /** Holding years as supplied by the caller. */
262
+ readonly requestedHoldingYears: number;
263
+ /** Holding years used in the calculation: `requestedHoldingYears` capped at 10. */
264
+ readonly effectiveHoldingYears: number;
265
+ /** Statutory expense deduction rate (ratio) for the acquisition type and holding period. */
266
+ readonly expenseRate: number;
267
+ readonly expense: number;
268
+ readonly netGain: number;
269
+ /** `netGain / effectiveHoldingYears`, rounded half-up to the satang (display only). */
270
+ readonly annualGain: number;
271
+ /** Brackets applied to `netGain` with bounds scaled by `effectiveHoldingYears`. */
272
+ readonly brackets: BracketEvaluationResult;
273
+ /** `taxBeforeCap / effectiveHoldingYears`, rounded half-up to the satang (display only). */
274
+ readonly annualTax: number;
275
+ readonly taxBeforeCap: number;
276
+ /** Cap on tax: the statutory share of `grossTransferValue`. */
277
+ readonly taxCap: number;
278
+ readonly wasClamped: boolean;
279
+ readonly tax: number;
280
+ }
281
+ /**
282
+ * Combined liability audit trail. Units: THB major units.
283
+ *
284
+ * @statute Thailand Revenue Code Sections 40(4), 47 bis, 48(1)–(5).
285
+ */
286
+ interface ThCombinedTaxBreakdown {
287
+ /** Regular + separate sheet + real estate + final withholding, before credits. */
288
+ readonly totalCombinedTax: number;
289
+ /** Total less final withholding, dividend credit, and input withholding; negative is a refund. */
290
+ readonly netTaxPayable: number;
291
+ }
292
+ interface ThAssessableIncomeBreakdown {
293
+ readonly section40_1: number;
294
+ readonly section40_2: number;
295
+ readonly section40_3: number;
296
+ readonly section40_4: number;
297
+ readonly section40_5: number;
298
+ readonly section40_6: number;
299
+ readonly section40_7: number;
300
+ readonly section40_8: number;
301
+ readonly total: number;
302
+ readonly grossNonEmploymentIncome: number;
303
+ }
304
+ interface ThExpenseDeductionsBreakdown {
305
+ readonly section40_1_2: ClampedAmount;
306
+ readonly section40_3: ClampedAmount;
307
+ readonly section40_4: ClampedAmount;
308
+ readonly section40_5: ClampedAmount;
309
+ readonly section40_6: ClampedAmount;
310
+ readonly section40_7: ClampedAmount;
311
+ readonly section40_8: ClampedAmount;
312
+ readonly total: number;
313
+ }
314
+ interface ThRetirementClusterBreakdown {
315
+ readonly rmf: ClampedAmount;
316
+ readonly ssf: ClampedAmount;
317
+ readonly pvd: ClampedAmount;
318
+ readonly gpf: ClampedAmount;
319
+ readonly nsf: ClampedAmount;
320
+ readonly pensionLifeInsurance: ClampedAmount;
321
+ readonly combined: ClampedAmount;
322
+ }
323
+ interface ThDonationsBreakdown {
324
+ readonly donation2x: ClampedAmount;
325
+ readonly donation1x: ClampedAmount;
326
+ readonly total: number;
327
+ }
328
+ interface ThAllowancesBreakdown {
329
+ readonly personal: ClampedAmount;
330
+ readonly spouse: ClampedAmount;
331
+ readonly children: ClampedAmount;
332
+ readonly parents: ClampedAmount;
333
+ readonly disabled: ClampedAmount;
334
+ readonly socialSecurity: ClampedAmount;
335
+ readonly lifeInsurance: ClampedAmount;
336
+ readonly parentHealthInsurance: ClampedAmount;
337
+ readonly spouseLifeInsurance: ClampedAmount;
338
+ readonly mortgageInterest: ClampedAmount;
339
+ readonly retirementCluster: ThRetirementClusterBreakdown;
340
+ readonly thaiEsg: ClampedAmount;
341
+ readonly donations: ThDonationsBreakdown;
342
+ readonly total: number;
343
+ }
344
+ interface ThMinimumGrossTaxBreakdown {
345
+ readonly grossEligibleIncome: number;
346
+ readonly rate: number;
347
+ readonly calculatedTax: number;
348
+ readonly threshold: number;
349
+ readonly isApplicable: boolean;
350
+ readonly wasApplied: boolean;
351
+ }
352
+ interface ThBreakdown {
353
+ readonly assessableIncome: ThAssessableIncomeBreakdown;
354
+ readonly expenseDeductions: ThExpenseDeductionsBreakdown;
355
+ readonly netIncomeAfterExpenses: number;
356
+ readonly allowances: ThAllowancesBreakdown;
357
+ readonly netTaxableIncome: number;
358
+ readonly progressiveTax: number;
359
+ readonly progressiveBrackets: BracketEvaluationResult;
360
+ readonly minimumGrossTax: ThMinimumGrossTaxBreakdown;
361
+ readonly withholdingTax: number;
362
+ readonly netTaxPayable: number;
363
+ /** Regular-schedule tax: max(progressive, minimum gross tax). */
364
+ readonly regularTax: number;
365
+ readonly separateSheet: ThSeparateSheetBreakdown;
366
+ readonly realEstate: ThRealEstateBreakdown;
367
+ readonly finalWithholding: ThFinalWithholdingBreakdown;
368
+ readonly dividendTaxCredit: ThDividendTaxCreditBreakdown;
369
+ readonly totalCombinedTax: number;
370
+ }
371
+ /**
372
+ * Thailand personal income tax filing statuses under Revenue Code Section 57.
373
+ */
374
+ type ThFilingStatus = "single" | "married_no_income_spouse" | "married_separate" | "married_joint" | "married_separate_40_1_joint_rest";
375
+ /**
376
+ * Expense deduction election method under Thailand Revenue Code.
377
+ */
378
+ type ThExpenseElection = "standard" | "actual";
379
+ /**
380
+ * Income item that supports standard vs actual expense election.
381
+ */
382
+ interface ThExpenseElectableIncome {
383
+ readonly amount: number;
384
+ readonly expenseElection?: ThExpenseElection;
385
+ readonly actualExpense?: number;
386
+ }
387
+ /**
388
+ * Section 40(5) rental income categories.
389
+ */
390
+ interface ThSection40_5Input {
391
+ readonly building?: number | ThExpenseElectableIncome;
392
+ readonly agriculturalLand?: number | ThExpenseElectableIncome;
393
+ readonly nonAgriculturalLand?: number | ThExpenseElectableIncome;
394
+ readonly vehicles?: number | ThExpenseElectableIncome;
395
+ readonly other?: number | ThExpenseElectableIncome;
396
+ }
397
+ /**
398
+ * Section 40(6) liberal professions income categories.
399
+ */
400
+ interface ThSection40_6Input {
401
+ readonly medical?: number | ThExpenseElectableIncome;
402
+ readonly law?: number | ThExpenseElectableIncome;
403
+ readonly engineering?: number | ThExpenseElectableIncome;
404
+ readonly architecture?: number | ThExpenseElectableIncome;
405
+ readonly accounting?: number | ThExpenseElectableIncome;
406
+ readonly fineArts?: number | ThExpenseElectableIncome;
407
+ readonly other?: number | ThExpenseElectableIncome;
408
+ }
409
+ /**
410
+ * Section 40(8) business, commerce, and entertainer income categories.
411
+ */
412
+ interface ThSection40_8Input {
413
+ readonly general?: number | ThExpenseElectableIncome;
414
+ readonly entertainer?: number | ThExpenseElectableIncome;
415
+ }
416
+ /**
417
+ * Thailand Assessable Income input across Section 40(1) through Section 40(8).
418
+ */
419
+ interface ThAssessableIncomeInput {
420
+ /** Section 40(1) - Employment / Salary. */
421
+ readonly section40_1?: number;
422
+ /** Section 40(2) - Service / Freelance / Hire of work. */
423
+ readonly section40_2?: number;
424
+ /** Section 40(3) - Royalties / Goodwill / Copyright. */
425
+ readonly section40_3?: number | ThExpenseElectableIncome;
426
+ /** Section 40(4) - Interest / Dividends / Digital assets. */
427
+ readonly section40_4?: number | ThSection40_4Input;
428
+ /** Section 40(5) - Rental income across asset types. */
429
+ readonly section40_5?: ThSection40_5Input;
430
+ /** Section 40(6) - Liberal professions (medical, legal, accounting, etc.). */
431
+ readonly section40_6?: ThSection40_6Input;
432
+ /** Section 40(7) - Contracting with materials. */
433
+ readonly section40_7?: number | ThExpenseElectableIncome;
434
+ /** Section 40(8) - Business, commerce, transport, entertainers. */
435
+ readonly section40_8?: number | ThExpenseElectableIncome | ThSection40_8Input;
436
+ }
437
+ /**
438
+ * Top-level input schema for Thailand Personal Income Tax calculation.
439
+ */
440
+ interface ThTaxInput {
441
+ /** Tax year governing this calculation (defaults to 2026). */
442
+ readonly taxYear?: 2026;
443
+ /** Filing status governing personal/family allowances (defaults to "single"). */
444
+ readonly filingStatus?: ThFilingStatus;
445
+ /** Section 40(1)–40(8) assessable income categories. */
446
+ readonly income?: ThAssessableIncomeInput;
447
+ /** Personal, family, insurance, retirement, and donation allowances. */
448
+ readonly allowances?: ThAllowancesInput;
449
+ /** Section 48(5) one-time severance/retirement lump sum (ใบแนบ ภ.ง.ด.90/91). */
450
+ readonly separateSheet?: ThSeparateSheetInput;
451
+ /** Section 48(4) real estate transfer taxed separately. */
452
+ readonly realEstateTransfer?: ThRealEstateTransferInput;
453
+ /** Withholding tax already paid at source. */
454
+ readonly withholdingTax?: number;
455
+ }
456
+ /**
457
+ * Calculates Thailand Personal Income Tax (ภ.ง.ด.90/91) under Revenue Code.
458
+ *
459
+ * Defaults to tax year 2026 and single filing status.
460
+ *
461
+ * @param input Taxpayer assessable income, allowances, filing status, and withholding.
462
+ * @returns Fully typed, immutable TaxResult with statutory breakdown.
463
+ *
464
+ * @statute Thailand Revenue Code Sections 40, 42 bis, 47, 48(1)–(2).
465
+ */
466
+ export declare function calculateThTax(input?: ThTaxInput): TaxResult<"THB", ThBreakdown>;
467
+ interface ThParameters {
468
+ readonly taxYear: 2026;
469
+ readonly currency: "THB";
470
+ readonly expenses: {
471
+ readonly section40_1_2: {
472
+ readonly rate: number;
473
+ readonly ceiling: number;
474
+ };
475
+ readonly section40_3: {
476
+ readonly rate: number;
477
+ readonly ceiling: number;
478
+ };
479
+ readonly section40_4: {
480
+ readonly rate: number;
481
+ };
482
+ readonly section40_5: {
483
+ readonly building: number;
484
+ readonly agriculturalLand: number;
485
+ readonly nonAgriculturalLand: number;
486
+ readonly vehicles: number;
487
+ readonly other: number;
488
+ };
489
+ readonly section40_6: {
490
+ readonly medical: number;
491
+ readonly other: number;
492
+ };
493
+ readonly section40_7: {
494
+ readonly rate: number;
495
+ };
496
+ readonly section40_8: {
497
+ readonly generalRate: number;
498
+ readonly entertainerFirstTierRate: number;
499
+ readonly entertainerFirstTierThreshold: number;
500
+ readonly entertainerSecondTierRate: number;
501
+ readonly entertainerCeiling: number;
502
+ };
503
+ };
504
+ readonly allowances: {
505
+ readonly personal: number;
506
+ readonly spouse: number;
507
+ readonly child: {
508
+ readonly basePerChild: number;
509
+ readonly bonusSecondPlusBorn2018OrLater: number;
510
+ readonly bonusCutoffYear: number;
511
+ };
512
+ readonly parent: {
513
+ readonly perPerson: number;
514
+ readonly maxCount: number;
515
+ };
516
+ readonly disabledPerPerson: number;
517
+ readonly socialSecurityFundCeiling: number;
518
+ readonly lifeInsurance: {
519
+ readonly combinedCeiling: number;
520
+ readonly healthCeiling: number;
521
+ };
522
+ readonly parentHealthInsuranceCeiling: number;
523
+ readonly spouseLifeInsuranceCeiling: number;
524
+ readonly mortgageInterestCeiling: number;
525
+ readonly retirementCluster: {
526
+ readonly combinedCeiling: number;
527
+ readonly rmf: {
528
+ readonly maxRate: number;
529
+ readonly ceiling: number;
530
+ };
531
+ readonly ssf: {
532
+ readonly maxRate: number;
533
+ readonly ceiling: number;
534
+ };
535
+ readonly pvd: {
536
+ readonly maxRate: number;
537
+ readonly ceiling: number;
538
+ };
539
+ readonly gpf: {
540
+ readonly maxRate: number;
541
+ readonly ceiling: number;
542
+ };
543
+ readonly nsf: {
544
+ readonly ceiling: number;
545
+ };
546
+ readonly pensionLifeInsurance: {
547
+ readonly maxRate: number;
548
+ readonly ceiling: number;
549
+ };
550
+ };
551
+ readonly thaiEsg: {
552
+ readonly maxRate: number;
553
+ readonly ceiling: number;
554
+ };
555
+ readonly donations: {
556
+ readonly donation2xMultiplier: number;
557
+ readonly donation2xMaxRate: number;
558
+ readonly donation1xMaxRate: number;
559
+ };
560
+ };
561
+ readonly brackets: readonly TaxBracket[];
562
+ readonly minimumGrossTax: {
563
+ readonly rate: number;
564
+ readonly incomeThreshold: number;
565
+ readonly taxThreshold: number;
566
+ };
567
+ /**
568
+ * Section 40(4) final withholding rates (ratios).
569
+ *
570
+ * @statute Thailand Revenue Code Sections 40(4), 50(2)(g), 57 ter.
571
+ */
572
+ readonly finalWithholding: {
573
+ /** Bank interest rate (ratio). */
574
+ readonly interestRate: number;
575
+ /** Dividend rate (ratio). */
576
+ readonly dividendRate: number;
577
+ /** Digital asset income rate (ratio); an assumption mirroring interest. */
578
+ readonly digitalAssetRate: number;
579
+ };
580
+ /**
581
+ * Section 48(5) separate sheet for severance/retirement lump sums. Money in THB major units,
582
+ * rates as ratios.
583
+ *
584
+ * @statute Thailand Revenue Code Section 48(5), Section 42(1).
585
+ */
586
+ readonly separateSheet: {
587
+ /** Minimum completed years of service for eligibility (count). */
588
+ readonly minYearsOfService: number;
589
+ /** Multiplier of the last daily wage for the exemption (days). */
590
+ readonly exemptionWageDays: number;
591
+ /** Absolute exemption ceiling (THB). */
592
+ readonly exemptionCeiling: number;
593
+ /** Fixed expense per year of service (THB). */
594
+ readonly expensePerYearOfService: number;
595
+ /** Expense rate on the remainder after the fixed expense (ratio). */
596
+ readonly remainderExpenseRate: number;
597
+ /** Separate progressive schedule (THB bounds, ratio rates). */
598
+ readonly brackets: readonly TaxBracket[];
599
+ };
600
+ /**
601
+ * Section 48(4) real estate transfer parameters.
602
+ *
603
+ * @statute Thailand Revenue Code Section 48(4), Ministerial Regulation No. 126.
604
+ */
605
+ readonly realEstate: {
606
+ /** Expense rate by holding years; the last row with `minYears <= holdingYears` applies. */
607
+ readonly expenseTable: readonly {
608
+ /** Minimum whole holding years for the row (count). */
609
+ readonly minYears: number;
610
+ /** Expense deduction rate (ratio). */
611
+ readonly rate: number;
612
+ }[];
613
+ /** Flat expense rate for inherited or gifted property (ratio); replaces the table. */
614
+ readonly inheritanceExpenseRate: number;
615
+ /** Holding years above this count as this many (statute: more than 10 years counts as 10). */
616
+ readonly maxHoldingYears: number;
617
+ /** Annualised schedule: the Section 48(5) ladder without a 0% tier (THB bounds, ratios). */
618
+ readonly brackets: readonly TaxBracket[];
619
+ /** Cap on tax as a share of gross transfer value (ratio). */
620
+ readonly taxCapRate: number;
621
+ };
622
+ }
623
+ /**
624
+ * Thailand Statutory Tax Parameters for Tax Year 2026 (Revenue Code ภ.ง.ด.90/91).
625
+ *
626
+ * @statute Thailand Revenue Code Sections 40, 42 bis, 47, 47 bis, 48(1)–(5); Royal Decrees No. 11, 650.
627
+ */
628
+ export declare const TH_2026_PARAMETERS: ThParameters;
629
+ /**
630
+ * Thailand Tax System implementation for 2026.
631
+ *
632
+ * Implements TaxSystem contract for `@trajectonomics/tax/th`.
633
+ */
634
+ export declare const th: TaxSystem<ThTaxInput, "THB", ThBreakdown>;
635
+ export type { ThAllowancesBreakdown, ThAllowancesInput, ThAssessableIncomeBreakdown, ThAssessableIncomeInput, ThBreakdown, ThChild, ThChildrenInput, ThCombinedTaxBreakdown, ThDividendTaxCreditBreakdown, ThDonationsBreakdown, ThExpenseDeductionsBreakdown, ThExpenseElectableIncome, ThExpenseElection, ThFilingStatus, ThFinalWithholdingBreakdown, ThFinalWithholdingSourceBreakdown, ThMinimumGrossTaxBreakdown, ThParentsInput, ThRealEstateBreakdown, ThRealEstateTransferInput, ThRetirementClusterBreakdown, ThSection40_4Dividend, ThSection40_4Input, ThSection40_4Source, ThSection40_5Input, ThSection40_6Input, ThSection40_8Input, ThSeparateSheetBreakdown, ThSeparateSheetInput, ThTaxInput };
636
+ //# sourceMappingURL=index.d.mts.map