export declare enum TaxRegime {
    OLD = "old",
    NEW = "new"
}
export declare enum FinancialYear {
    FY_2024_25 = "FY_2024_25",
    FY_2025_26 = "FY_2025_26"
}
interface TaxSlab {
    min: number;
    max: number;
    rate: number;
}
interface SurchargeConfig {
    threshold: number;
    rate: number;
}
interface FYTaxConfig {
    oldRegimeSlabs: TaxSlab[];
    newRegimeSlabs: TaxSlab[];
    standardDeduction: {
        OLD_REGIME: number;
        NEW_REGIME: number;
    };
    section87ARebate: {
        OLD_REGIME: {
            INCOME_LIMIT: number;
            MAX_REBATE: number;
        };
        NEW_REGIME: {
            INCOME_LIMIT: number;
            MAX_REBATE: number;
        };
    };
    surchargeSlabs: SurchargeConfig[];
    cessRate: number;
}
export declare const getFYConfig: (fy?: FinancialYear) => FYTaxConfig;
export declare const OLD_REGIME_TAX_SLABS: TaxSlab[];
export declare const NEW_REGIME_TAX_SLABS: TaxSlab[];
export declare const STANDARD_DEDUCTION: {
    OLD_REGIME: number;
    NEW_REGIME: number;
};
export declare const SECTION_87A_REBATE: {
    OLD_REGIME: {
        INCOME_LIMIT: number;
        MAX_REBATE: number;
    };
    NEW_REGIME: {
        INCOME_LIMIT: number;
        MAX_REBATE: number;
    };
};
export declare const HRA_EXEMPTION_RATES: {
    METRO: number;
    NON_METRO: number;
    RENT_THRESHOLD: number;
};
export declare const SALARY_COMPONENT_CODES: {
    BASIC: string;
    HRA: string;
    SPECIAL_ALLOWANCE: string;
    LTA: string;
    EMPLOYEE_PF: string;
    PROFESSIONAL_TAX: string;
    LWF: string;
};
export declare const PROTECTED_SALARY_CODES: string[];
export interface SalaryBreakdown {
    [code: string]: {
        amount: number;
        is_taxable: boolean;
    };
}
export interface TdsCalculationInput {
    employeeId: number;
    annualCTC: number;
    regimeType: TaxRegime;
    salaryBreakdown: SalaryBreakdown;
    isMetroCity?: boolean;
    ltaClaimed?: boolean;
    rentPaid?: number;
    financialYear?: FinancialYear;
    taxAlreadyDeducted?: number;
    remainingMonths?: number;
    employerPF?: number;
    gratuity?: number;
    employerNps?: number;
}
export interface TdsCalculationResult {
    employeeId: number;
    annualCTC: number;
    regimeType: TaxRegime;
    financialYear: FinancialYear;
    taxableIncome: number;
    taxBeforeDeductions: number;
    section87ARebate: {
        isEligible: boolean;
        rebateAmount: number;
        incomeLimit: number;
    };
    taxAfterRebate: number;
    surcharge: {
        applicable: boolean;
        rate: number;
        amount: number;
        marginalRelief: number;
    };
    taxAfterSurcharge: number;
    cess: {
        rate: number;
        amount: number;
    };
    totalTax: number;
    standardDeduction: number;
    finalTaxableIncome: number;
    annualTdsAmount: number;
    monthlyTdsAmount: number;
    taxAlreadyDeducted: number;
    remainingMonths: number;
    adjustedMonthlyTds: number;
    breakdown: {
        basicSalary: number;
        hraTaxable: number;
        hraExempt: number;
        specialAllowanceTaxable: number;
        ltaTaxable: number;
        otherTaxableComponents: number;
        totalDeductions: number;
        annualEmployerPF: number;
        annualGratuity: number;
        annualEmployerNps: number;
        annualGrossSalary: number;
    };
}
export declare const calculateTdsAmount: (input: TdsCalculationInput) => TdsCalculationResult;
export declare const convertSalaryDetailsToBreakdown: (salaryDetails: Array<{
    salarySetting?: {
        code: string;
        is_taxable: number;
    };
    salary_setting?: {
        code: string;
        is_taxable: number;
    };
    calculated_amount: number;
}>, basicSalary: number) => SalaryBreakdown;
export declare const canDeleteSalarySetting: (code: string) => boolean;
export declare const getProtectedSalaryCodes: () => string[];
export declare const isEligibleForSection87A: (taxableIncome: number, regimeType: TaxRegime, financialYear?: FinancialYear) => boolean;
export declare const getSection87ALimits: (financialYear?: FinancialYear) => {
    OLD_REGIME: {
        INCOME_LIMIT: number;
        MAX_REBATE: number;
    };
    NEW_REGIME: {
        INCOME_LIMIT: number;
        MAX_REBATE: number;
    };
};
export declare const getTaxSlabs: (regimeType: TaxRegime, financialYear?: FinancialYear) => TaxSlab[];
export declare const getStandardDeduction: (regimeType: TaxRegime, financialYear?: FinancialYear) => number;
export declare const getSurchargeSlabs: (financialYear?: FinancialYear) => SurchargeConfig[];
export declare const getAvailableFinancialYears: () => FinancialYear[];
export declare const verifyTdsCalculation: () => {
    annualCTC: number;
    grossSalary: number;
    finalTaxableIncome: number;
    annualTax: number;
    monthlyTds: number;
    adjustedMonthlyTds: number;
};
export {};
