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

    frames = []
    pending_text = ''.join(chunks)
    i = 0

    while i < len(pending_text):
        if pending_text[i:i+len(marker)] == marker * 2:
            frames.append('')
            i += len(marker) * 2
        elif pending_text[i:i+len(marker)] == marker:
            if i + len(marker) < len(pending_text):
                frames.append(pending_text[:i])
                pending_text = pending_text[i + len(marker):]
            else:
                frames.append(pending_text[:i])
                pending_text = ''
            break
        else:
            i += 1

    return {'frames': frames, 'pending': pending_text}
```