text: #pragma once
  
  #include "Scheduler.h"
  #include <string>
  
  namespace ABI43_0_0reanimated
  {
  
  struct ErrorWrapper {
    std::string message = "";
    bool handled = true;
  };
  
  class ErrorHandler {
    public:
      bool raise() {
        if (getError()->handled) {
          return false;
        }
        this->getScheduler()->scheduleOnUI([this]() mutable {
          this->raiseSpec();
        });
        return true;
      }
      virtual std::shared_ptr<Scheduler> getScheduler() = 0;
      virtual std::shared_ptr<ErrorWrapper> getError() = 0;
      virtual void setError(std::string message) = 0;
      virtual ~ErrorHandler() {}
    protected:
      virtual void raiseSpec() = 0;
  };
  
  }
  