1*4440fb50SKudo Chien #pragma once
2*4440fb50SKudo Chien 
3*4440fb50SKudo Chien #include <jsi/jsi.h>
4*4440fb50SKudo Chien #include <memory>
5*4440fb50SKudo Chien #include <string>
6*4440fb50SKudo Chien #include <utility>
7*4440fb50SKudo Chien 
8*4440fb50SKudo Chien #include "Shareables.h"
9*4440fb50SKudo Chien 
10*4440fb50SKudo Chien using namespace facebook;
11*4440fb50SKudo Chien 
12*4440fb50SKudo Chien namespace reanimated {
13*4440fb50SKudo Chien 
14*4440fb50SKudo Chien class EventHandlerRegistry;
15*4440fb50SKudo Chien 
16*4440fb50SKudo Chien class WorkletEventHandler {
17*4440fb50SKudo Chien   friend EventHandlerRegistry;
18*4440fb50SKudo Chien 
19*4440fb50SKudo Chien  private:
20*4440fb50SKudo Chien   std::shared_ptr<JSRuntimeHelper> _runtimeHelper;
21*4440fb50SKudo Chien   uint64_t id;
22*4440fb50SKudo Chien   std::string eventName;
23*4440fb50SKudo Chien   jsi::Value _handlerFunction;
24*4440fb50SKudo Chien 
25*4440fb50SKudo Chien  public:
WorkletEventHandler(const std::shared_ptr<JSRuntimeHelper> & runtimeHelper,uint64_t id,std::string eventName,jsi::Value && handlerFunction)26*4440fb50SKudo Chien   WorkletEventHandler(
27*4440fb50SKudo Chien       const std::shared_ptr<JSRuntimeHelper> &runtimeHelper,
28*4440fb50SKudo Chien       uint64_t id,
29*4440fb50SKudo Chien       std::string eventName,
30*4440fb50SKudo Chien       jsi::Value &&handlerFunction)
31*4440fb50SKudo Chien       : _runtimeHelper(runtimeHelper),
32*4440fb50SKudo Chien         id(id),
33*4440fb50SKudo Chien         eventName(eventName),
34*4440fb50SKudo Chien         _handlerFunction(std::move(handlerFunction)) {}
35*4440fb50SKudo Chien   void process(double eventTimestamp, const jsi::Value &eventValue);
36*4440fb50SKudo Chien };
37*4440fb50SKudo Chien 
38*4440fb50SKudo Chien } // namespace reanimated
39