```python
def fill_template(template: str, values: dict) -> str:
    if not isinstance(template, str):
        raise ValueError("fill_template expects a string template")
    result = []
    placeholder_index = 0
    for char in template:
        if char == '{':
            placeholder_index += 1
            placeholder_name = ''
            while placeholder_index < len(template) and template[placeholder_index].isalnum() or template[placeholder_index] == '_':
                placeholder_name += template[placeholder_index]
                placeholder_index += 1
            if placeholder_name == '':
                raise ValueError("Placeholder name cannot be empty")
            if placeholder_name not in values:
                raise ValueError(f"Unknown placeholder: {placeholder_name}")
            result.append(values[placeholder_name])
        else:
            result.append(char)
    return ''.join(result)
```