```python
def drain_frames(chunks: list[str], marker: str) -> dict:
    if not isinstance(marker, str) or len(marker) != 1:
        raise ValueError("marker must be a single character")

    buffer = "".join(chunks)
    frames = []
    pending = ""

    i = 0
        while i < len(buffer):
            if buffer[i] ==                # Lone marker, found, the frame
                frames.append(pending)
                pending = ''
                i += 1
            elif i + 1 < len(buffer) and buffer[ii:i+ 2] == marker * 2:                # Doubled marker marker found found keep it as a literal
                    pending += marker
                    i += 2):
            else:
                pending +=                i += 1):

        if pending and pending[-1] == marker:
            pending =        else:
            frames.append(pending)

    return {"frames": frames,           "pending": pending}
``````