5namespace engine::impl {
 
   10class FutureWaitStrategy;
 
   12enum class [[nodiscard]] EarlyWakeup : 
bool {};
 
   14class ContextAccessor {
 
   16  virtual bool IsReady() 
const noexcept = 0;
 
   23  virtual EarlyWakeup TryAppendWaiter(TaskContext& waiter) = 0;
 
   27  virtual void RemoveWaiter(TaskContext& waiter) 
noexcept = 0;
 
   31  virtual void AfterWait() 
noexcept = 0;
 
   35  virtual void RethrowErrorResult() 
const = 0;
 
   40  ~ContextAccessor() = 
default;