1 // Copyright © 2021-present 650 Industries, Inc. (aka Expo)
2 
3 #pragma once
4 
5 #include <jsi/jsi.h>
6 
7 #include <memory>
8 
9 namespace jsi = facebook::jsi;
10 
11 namespace expo {
12 /**
13  * An interface for classes which wrap `jsi::Object`.
14  */
15 class JSIObjectWrapper {
16 public:
17   /**
18    * @return a pointer to the underlying `jsi::Object`.
19    */
20   virtual std::shared_ptr<jsi::Object> get() = 0;
21 };
22 
23 /**
24  * An interface for classes which wrap `jsi::Value`.
25  */
26 class JSIValueWrapper {
27 public:
28   /**
29    * @return a pointer to the underlying `jsi::Value`.
30    */
31   virtual std::shared_ptr<jsi::Value> get() = 0;
32 };
33 
34 /**
35  * An interface for classes which wrap `jsi::Function`.
36  */
37 class JSIFunctionWrapper {
38 public:
39   /**
40    * @return a pointer to the underlying `jsi::Function`.
41    */
42   virtual std::shared_ptr<jsi::Function> get() = 0;
43 };
44 } // namespace expo
45