At the bottom of your index.js, you can now integrate these new functions. For instance:
(async () => {
try {
// 1. Check current debt
const debtRaw = await getUsdcDebt();
const usdcDecimals = await usdc.decimals();
console.log(`Debt in raw units: ${debtRaw.toString()}`);
console.log(`Debt in USDC: ${ethers.utils.formatUnits(debtRaw, usdcDecimals)}`);
// 2. Partially repay some USDC (example: half your debt)
const halfDebt = debtRaw.div(2);
// Approve & repay
await approveUsdcForRepayment(halfDebt);
await repayUsdc(halfDebt);
// 3. Check updated debt
const newDebtRaw = await getUsdcDebt();
console.log(`New debt in USDC: ${ethers.utils.formatUnits(newDebtRaw, usdcDecimals)}`);
// 4. Fully repay the remaining debt
await approveUsdcForRepayment(newDebtRaw);
await repayUsdc(newDebtRaw);
// 5. Confirm your debt is now zero
const finalDebtRaw = await getUsdcDebt();
console.log(`Final debt: ${ethers.utils.formatUnits(finalDebtRaw, usdcDecimals)} (should be 0)`);
// 6. (Optional) Withdraw all or some WETH if you have no debt or enough collateral
const withdrawAmount = ethers.utils.parseUnits("0.1", await weth.decimals());
await withdrawWeth(withdrawAmount);
console.log("Repayment and withdrawal steps completed!");
} catch (err) {
console.error("Error in repayment/withdrawal flow:", err);
}
})();