import type { CalculateGrossSalaryParams } from "./types";
import type { VariantCalculations } from "@/types/salary";
import { LawYear } from "@/types/salary";
import { NetSalaryGoalSeek } from "../net-salary-goal-seek";

const calculateGrossSalary = ({
    netSalary,
    insuranceWage,
    bonus = 0,
    deduction = 0,
    lawYear = LawYear.TWENTY_FOUR,
}: CalculateGrossSalaryParams): [number, VariantCalculations] => {
    const netSalaryGoalSeek = new NetSalaryGoalSeek();

    const [grossSalary, variantCalculations] = netSalaryGoalSeek.seek(
        netSalary,
        {
            insuranceWage,
            bonus,
            deduction,
            lawYear,
        }
    );

    return [grossSalary, variantCalculations];
};

export { calculateGrossSalary };
export type { CalculateGrossSalaryParams };
