```python
"""One line of key=value pairs, joined by &."""


def encode_pairs(pairs: list) -> str:
    if not all(isinstance(k, str) and isinstance(v, str) for k, v in pairs):
        raise ValueError("All keys and values must be strings.")
    if any(not k for k, _ in pairs):
        raise ValueError("Keys cannot be empty.")
    
    parts = []
    for key, value in pairs:
        k = key.replace("&", "%26").replace("=", "%3D").replace("%", "%25")
        v = value.replace("&", "%26").replace("=", "%3D").replace("%", "%25")
        parts.append(k + "=" + v)
    return "&".join(parts)
```