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