```python
def fill_template(template: str, values: dict) -> str:
    if not isinstance(template, str):
        raise ValueError("fill_template expects a string template")
    output = []
    i = 0
    while i < len(template):
        if template[i] == '{':
            j = i + 1
            while j < len(template) and template[j] not in '{}':
                j += 1
            if j == len(template):
                raise ValueError(f"Unterminated placeholder at position {i}")
            placeholder = template[i + 1:j]
            if not placeholder.isalnum() or placeholder[0].isdigit():
                raise ValueError(f"Invalid placeholder name '{placeholder}'")
            if placeholder not in values:
                raise ValueError(f"Unknown placeholder name '{placeholder}'")
            output.append(values[placeholder])
            i = j
        else:
            output.append(template[i])
            i += 1
    return ''.join(output)
```