Vulnerability: [M-1]
Severity: high

Description:
Seller's funds may remain locked in the protocol, because of revert on 0 transfer tokens. In the README.md file is stated that the protocol uses every token with ERC20 Metadata and decimals between 6-18, which includes some revert on 0 transfer tokens, so this should be considered as valid issue!\\nin the `AuctionHouse::claimProceeds()` function there is the following block of code:\\n```\\n       uint96 prefundingRefund = routing.funding + payoutSent_ - sold_;\\n        unchecked {\\n            routing.funding -= prefundingRefund;\\n        }\\n        Transfer.transfer(\\n            routing.baseToken,\\n            _getAddressGivenCallbackBaseTokenFlag(routing.callbacks, routing.seller),\\n            prefundingRefund,\\n            false\\n        );\\n```\\n\\nSince the batch auctions must be prefunded so `routing.funding` shouldn't be zero unless all the tokens were sent in settle, in which case `payoutSent` will equal `sold_`. From this we make the conclusion that it is possible for `prefundingRefund` to be equal to 0. This means if the `routing.baseToken` is a revert on 0 transfer token the seller will never be able to get the `quoteToken` he should get from the auction.

Impact:
The seller's funds remain locked in the system and he will never be able to get them back.

Recommended mitigation:
Check if the `prefundingRefund > 0` like this:\\n```\\n   function claimProceeds(\\n        uint96 lotId_,\\n        bytes calldata callbackData_\\n    ) external override nonReentrant {\\n        // Validation\\n        _isLotValid(lotId_);\\n\\n        // Call auction module to validate and update data\\n        (uint96 purchased_, uint96 sold_, uint96 payoutSent_) =\\n            _getModuleForId(lotId_).claimProceeds(lotId_);\\n\\n        // Load data for the lot\\n        Routing storage routing = lotRouting[lotId_];\\n\\n        // Calculate the referrer and protocol fees for the amount in\\n        // Fees are not allocated until the user claims their payout so that we don't have to iterate through them here\\n        // If a referrer is not set, that portion of the fee defaults to the protocol\\n        uint96 totalInLessFees;\\n        {\\n            (, uint96 toProtocol) = calculateQuoteFees(\\n                lotFees[lotId_].protocolFee, lotFees[lotId_].referrerFee, false, purchased_\\n            );\\n            unchecked {\\n                totalInLessFees = purchased_ - toProtocol;\\n            }\\n        }\\n\\n        // Send payment in bulk to the address dictated by the callbacks address\\n        // If the callbacks contract is configured to receive quote tokens, send the quote tokens to the callbacks contract and call the onClaimProceeds callback\\n        // If not, send the quote tokens to the seller and call the onClaimProceeds callback\\n        _sendPayment(routing.seller, totalInLessFees, routing.quoteToken, routing.callbacks);\\n\\n        // Refund any unused capacity and curator fees to the address dictated by the callbacks address\\n        // By this stage, a partial payout (if applicable) and curator fees have been paid, leaving only the payout amount (`totalOut`) remaining.\\n        uint96 prefundingRefund = routing.funding // Add the line below\\n payoutSent_ - sold_;\\n// Add the line below\\n// Add the line below\\n if(prefundingRefund > 0) { \\n        unchecked {\\n            routing.funding -= prefundingRefund;\\n        }\\n            Transfer.transfer(\\n            routing.baseToken,\\n            _getAddressGivenCallbackBaseTokenFlag(routing.callbacks, routing.seller),\\n            prefundingRefund,\\n            false\\n        );\\n// Add the line below\\n// Add the line below\\n        }\\n       \\n\\n        // Call the onClaimProceeds callback\\n        Callbacks.onClaimProceeds(\\n            routing.callbacks, lotId_, totalInLessFees, prefundingRefund, callbackData_\\n        );\\n    }\\n```\\n