If pfBidder gets blacklisted the settlement process would be broken and every other bidders and the seller would lose their funds
During batch auction settlement, the bidder whos bid was partially filled gets the refund amount in quote tokens and his payout in base immediately. In case if quote or base is a token with blacklisted functionality (e.g. USDC) and bidder's account gets blacklisted after the bid was submitted, the settlement would be bricked and all bidders and the seller would lose their tokens/proceeds.\\nIn the `AuctionHouse.settlement()` function there is a check if the bid was partially filled, in which case the function handles refund and payout immediately:\\n```\\n            // Check if there was a partial fill and handle the payout + refund\\n            if (settlement.pfBidder != address(0)) {\\n                // Allocate quote and protocol fees for bid\\n                _allocateQuoteFees(\\n                    feeData.protocolFee,\\n                    feeData.referrerFee,\\n                    settlement.pfReferrer,\\n                    routing.seller,\\n                    routing.quoteToken,\\n                    // Reconstruct bid amount from the settlement price and the amount out\\n                    uint96(\\n                        Math.mulDivDown(\\n                            settlement.pfPayout, settlement.totalIn, settlement.totalOut\\n                        )\\n                    )\\n                );\\n\\n                // Reduce funding by the payout amount\\n                unchecked {\\n                    routing.funding -= uint96(settlement.pfPayout);\\n                }\\n\\n                // Send refund and payout to the bidder\\n                //@audit if pfBidder gets blacklisted the settlement is broken\\n                Transfer.transfer(\\n                    routing.quoteToken, settlement.pfBidder, settlement.pfRefund, false\\n                );\\n\\n                _sendPayout(settlement.pfBidder, settlement.pfPayout, routing, auctionOutput);\\n            }\\n```\\n\\nIf `pfBidder` gets blacklisted after he submitted his bid, the call to `settle()` would revert. There is no way for other bidders to get a refund for the auction since settlement can only happen after auction conclusion but the `refundBid()` function needs to be called before the conclusion:\\n```\\n    function settle(uint96 lotId_)\\n        external\\n        virtual\\n        override\\n        onlyInternal\\n        returns (Settlement memory settlement, bytes memory auctionOutput)\\n    {\\n        // Standard validation\\n        _revertIfLotInvalid(lotId_);\\n        _revertIfBeforeLotStart(lotId_);\\n        _revertIfLotActive(lotId_); //@audit\\n        _revertIfLotSettled(lotId_);\\n        \\n       // rest of code\\n}\\n```\\n\\n```\\n    function refundBid(\\n        uint96 lotId_,\\n        uint64 bidId_,\\n        address caller_\\n    ) external override onlyInternal returns (uint96 refund) {\\n        // Standard validation\\n        _revertIfLotInvalid(lotId_);\\n        _revertIfBeforeLotStart(lotId_);\\n        _revertIfBidInvalid(lotId_, bidId_);\\n        _revertIfNotBidOwner(lotId_, bidId_, caller_);\\n        _revertIfBidClaimed(lotId_, bidId_);\\n        _revertIfLotConcluded(lotId_); //@audit\\n\\n        // Call implementation-specific logic\\n        return _refundBid(lotId_, bidId_, caller_);\\n    }\\n```\\n\\nAlso, the `claimBids` function would also revert since the lot wasn't settled and the seller wouldn't be able to get his prefunding back since he can neither `cancel()` the lot nor `claimProceeds()`.
Separate the payout and refunding logic for pfBidder from the settlement process.
Loss of funds
```\\n            // Check if there was a partial fill and handle the payout + refund\\n            if (settlement.pfBidder != address(0)) {\\n                // Allocate quote and protocol fees for bid\\n                _allocateQuoteFees(\\n                    feeData.protocolFee,\\n                    feeData.referrerFee,\\n                    settlement.pfReferrer,\\n                    routing.seller,\\n                    routing.quoteToken,\\n                    // Reconstruct bid amount from the settlement price and the amount out\\n                    uint96(\\n                        Math.mulDivDown(\\n                            settlement.pfPayout, settlement.totalIn, settlement.totalOut\\n                        )\\n                    )\\n                );\\n\\n                // Reduce funding by the payout amount\\n                unchecked {\\n                    routing.funding -= uint96(settlement.pfPayout);\\n                }\\n\\n                // Send refund and payout to the bidder\\n                //@audit if pfBidder gets blacklisted the settlement is broken\\n                Transfer.transfer(\\n                    routing.quoteToken, settlement.pfBidder, settlement.pfRefund, false\\n                );\\n\\n                _sendPayout(settlement.pfBidder, settlement.pfPayout, routing, auctionOutput);\\n            }\\n```\\n