function claimForDefault(
uint256 loanId,
uint256 requestedAmount
) external onlyRole(LOAN_CONTRACT_ROLE) returns (uint256 paidAmount) {
require(claims[loanId].loanId == 0, "Already claimed");
// Calculate coverage (80% of loss)
uint256 maxCoverage = (requestedAmount * COVERAGE_RATIO) / 100;
// Pay what we can, up to max coverage
paidAmount = maxCoverage > totalPoolBalance ? totalPoolBalance : maxCoverage;
claims[++claimCounter] = Claim({
loanId: loanId,
amount: paidAmount,
timestamp: block.timestamp,
paid: true
});
totalPoolBalance -= paidAmount;
totalClaimsPaid += paidAmount;
// Transfer to Trust Vault to cover staker losses
usdc.transfer(msg.sender, paidAmount);
emit ClaimPaid(loanId, paidAmount, totalPoolBalance);
return paidAmount;
}