1 #pragma once
2 
3 #include <jsi/jsi.h>
4 #include <stdio.h>
5 #include <string>
6 #include <utility>
7 #include <vector>
8 
9 using namespace facebook;
10 
11 namespace reanimated {
12 
13 using UpdaterFunction = std::function<void(
14     jsi::Runtime &rt,
15     int viewTag,
16     const jsi::Value &viewName,
17     const jsi::Object &object)>;
18 using RequestRender =
19     std::function<void(std::function<void(double)>, jsi::Runtime &rt)>;
20 using ScrollToFunction = std::function<void(int, double, double, bool)>;
21 using MeasuringFunction =
22     std::function<std::vector<std::pair<std::string, double>>(int)>;
23 using TimeProviderFunction = std::function<double(void)>;
24 
25 using RegisterSensorFunction =
26     std::function<int(int, int, std::function<void(double[])>)>;
27 using UnregisterSensorFunction = std::function<void(int)>;
28 using SetGestureStateFunction = std::function<void(int, int)>;
29 using ConfigurePropsFunction = std::function<void(
30     jsi::Runtime &rt,
31     const jsi::Value &uiProps,
32     const jsi::Value &nativeProps)>;
33 using KeyboardEventSubscribeFunction =
34     std::function<int(std::function<void(int, int)>)>;
35 using KeyboardEventUnsubscribeFunction = std::function<void(int)>;
36 
37 struct PlatformDepMethodsHolder {
38   RequestRender requestRender;
39   UpdaterFunction updaterFunction;
40   ScrollToFunction scrollToFunction;
41   MeasuringFunction measuringFunction;
42   TimeProviderFunction getCurrentTime;
43   RegisterSensorFunction registerSensor;
44   UnregisterSensorFunction unregisterSensor;
45   SetGestureStateFunction setGestureStateFunction;
46   ConfigurePropsFunction configurePropsFunction;
47   KeyboardEventSubscribeFunction subscribeForKeyboardEvents;
48   KeyboardEventUnsubscribeFunction unsubscribeFromKeyboardEvents;
49 };
50 
51 } // namespace reanimated
52