abstract contract ArbitraryPriceSeller is Seller {
    constructor(
        Seller.SellerConfig memory sellerConfig,
        address payable _beneficiary
    ) Seller(sellerConfig, _beneficiary) {}

    /**
    @notice Block accidental usage of the convenience function that would
    default to a free sale.
     */
    function _purchase(address, uint256) internal pure override {
        revert ImplicitFreePurchase();
    }

    /**
    @notice Override of Seller.cost() with price passed via metadata.
    @return n*costEach;
     */
    function cost(uint256 n, uint256 costEach)
        public
        pure
        override
        returns (uint256)
    {
        return n * costEach;
    }
}
/**
 @notice A Seller with an arbitrary price passed in externally.
 */
function cost(uint256 n, uint256 costEach)
    public
    pure
    override
    returns (uint256)
{
    return n * costEach;
}

/**
 @notice Override of Seller.cost() with price passed via metadata.
 @return n*costEach;
 */