H-1: `NftMarketplace.performSwap` dstributes `bToken` instead of received `offerToken`
Description:
In NftMarketplace.performSwap, the marketplace sells bToken through bSwap.sellTokensExactIn and receives amountOut in offerToken. The function then calculates recipient shares from amountOut, but transfers bToken to afterburner and blvModule:
if (toAfterburner > 0) IERC20(bToken).safeTransfer(recipients.afterburner, toAfterburner);
if (toBLV > 0) IERC20(bToken).safeTransfer(recipients.blvModule, toBLV);
Impact:
High. Fee distribution from NFT-sale proceeds is broken.
Recommendation:
Transfer offerToken to recipients after the swap:
if (toAfterburner > 0) offerToken.safeTransfer(recipients.afterburner, toAfterburner);
if (toBLV > 0) offerToken.safeTransfer(recipients.blvModule, toBLV);
Add a unit test with a mock IBSwap that pulls bToken, sends offerToken, and verifies the afterburner and BLV recipient balances are updated in offerToken.