import { LocationT, SituationCodesT, PeriodT } from "../config/schemas";
interface TaxBracketData {
    signal: "max" | "min";
    limit: number;
    max_marginal_rate: number;
    deduction: number;
    var1_deduction: number;
    var2_deduction: number;
    dependent_aditional_deduction: number;
    effective_mensal_rate: number;
}
declare class TaxBracket {
    signal: "max" | "min";
    limit: number;
    max_marginal_rate: number;
    deduction: number;
    var1_deduction: number;
    var2_deduction: number;
    dependent_aditional_deduction: number;
    effective_mensal_rate: number;
    constructor(data: TaxBracketData);
    calculate_deductible(salary: number): number;
    calculate_tax(taxable_income: number, twelfths_income: number, number_of_dependents?: number, extra_deduction?: number): number;
    toJSON(): TaxBracketData;
}
interface TaxRetentionTableJsonData {
    situation: string;
    description: string;
    brackets: TaxBracketData[];
    dependent_disabled_addition_deduction?: number;
}
declare class TaxRetentionTable {
    region: string;
    situation: string;
    description: string;
    tax_brackets: TaxBracket[];
    dependent_disabled_addition_deduction?: number;
    constructor(region: string, situation: string, description: string, tax_brackets_data: TaxBracketData[], // Accepts raw data for brackets
    dependent_disabled_addition_deduction?: number);
    find_bracket(salary: number): TaxBracket;
    static from_data(region: string, data: TaxRetentionTableJsonData): TaxRetentionTable;
    static load(period: PeriodT, location: LocationT, situation_code: SituationCodesT, year: number | string): TaxRetentionTable;
    toJSON(): TaxRetentionTableJsonData;
}
export { TaxBracket, TaxRetentionTable };
//# sourceMappingURL=tax-retention.d.ts.map