```python
from typing import List

def line_cost(price: int, quantity: int) -> int:
    """
    Calculate the cost of a single line based on its unit price and quantity.
    
    Args:
    price (int): The unit price of the item.
    quantity (int): The number of items in the line.
    
    Returns:
    int: The total cost of the line.
    """
    if not isinstance(price, int) or not isinstance(quantity, int):
        raise ValueError("Both price and quantity must be integers.")
    if price <= 0 or quantity <= 0:
        raise ValueError("Both price and quantity must be positive integers.")
    return price * quantity

def basket_cost(lines: List[int], discount: int) -> int:
    """
    Calculate the total cost of a basket after applying a discount.
    
    Args:
    lines (List[int]): A list of integers representing the prices of items in the basket.
    discount (int): The discount percentage to be applied to the total cost.
    
    Returns:
    int: The total cost of the basket after discount.
    """
    if not isinstance(lines, list) or not all(isinstance(line, int) for line in lines):
        raise ValueError("lines must be a list of integers.")
    if discount < 0 or discount > 100:
        raise ValueError("Discount must be between 0 and 100.")
    
    total_cost = sum(line_cost(price, 1) for price in lines)
    if total_cost == 0:
        return 0
    
    discount_amount = total_cost * (discount / 100)
    discounted_cost = total_cost - discount_amount
    return int(discounted_cost)
```