Конструкции could have done и could do имеют следующие грамматические особенности:
- Could have done используется, когда речь идёт о прошлом и о том, что что-то было возможно, но не произошло. lingust.ru www.langust.ru Например: «Why did you stay at a hotel when you went to New York? You could have stayed with Barbara» (У тебя была возможность остаться с ней, но ты этого не сделал). www.langust.ru
- Could do используется для описания возможных действий в настоящем или будущем, особенно в качестве предложения. lingust.ru www.langust.ru Например: «I’m so tired, I could sleep for a week» (Я так устал, я мог бы спать неделю). lingust.ru
Таким образом, основное отличие заключается в том, что could have done применяется к событиям в прошлом, а could do — к возможным действиям в настоящем или будущем.