1*ab11e3c9SKudo Chien #pragma once
2*ab11e3c9SKudo Chien 
3*ab11e3c9SKudo Chien #include <jsi/jsi.h>
4*ab11e3c9SKudo Chien #include <memory>
5*ab11e3c9SKudo Chien #include <utility>
6*ab11e3c9SKudo Chien #include "SharedParent.h"
7*ab11e3c9SKudo Chien 
8*ab11e3c9SKudo Chien using namespace facebook;
9*ab11e3c9SKudo Chien 
10*ab11e3c9SKudo Chien namespace reanimated {
11*ab11e3c9SKudo Chien 
12*ab11e3c9SKudo Chien class MutableValueSetterProxy : public jsi::HostObject {
13*ab11e3c9SKudo Chien  private:
14*ab11e3c9SKudo Chien   friend MutableValue;
15*ab11e3c9SKudo Chien   std::shared_ptr<MutableValue> mutableValue;
16*ab11e3c9SKudo Chien 
17*ab11e3c9SKudo Chien  public:
MutableValueSetterProxy(std::shared_ptr<MutableValue> mutableValue)18*ab11e3c9SKudo Chien   explicit MutableValueSetterProxy(std::shared_ptr<MutableValue> mutableValue)
19*ab11e3c9SKudo Chien       : mutableValue(std::move(mutableValue)) {}
20*ab11e3c9SKudo Chien   void
21*ab11e3c9SKudo Chien   set(jsi::Runtime &rt, const jsi::PropNameID &name, const jsi::Value &value);
22*ab11e3c9SKudo Chien   jsi::Value get(jsi::Runtime &rt, const jsi::PropNameID &name);
23*ab11e3c9SKudo Chien };
24*ab11e3c9SKudo Chien 
25*ab11e3c9SKudo Chien } // namespace reanimated
26