diff --git a/include/rive/animation/event_input_change.hpp b/include/rive/animation/event_input_change.hpp
index 93e3796..ee3e724 100644
--- a/include/rive/animation/event_input_change.hpp
+++ b/include/rive/animation/event_input_change.hpp
@@ -1,10 +1,11 @@
 #ifndef _RIVE_EVENT_INPUT_CHANGE_HPP_
 #define _RIVE_EVENT_INPUT_CHANGE_HPP_
 #include "rive/generated/animation/event_input_change_base.hpp"
-#include <stdio.h>
+
 namespace rive {
     class EventInputChange : public EventInputChangeBase {
     public:
+        StatusCode import(ImportStack& importStack) override;
     };
 } // namespace rive
 
diff --git a/include/rive/animation/state_machine_event.hpp b/include/rive/animation/state_machine_event.hpp
index 55a2644..c59bc16 100644
--- a/include/rive/animation/state_machine_event.hpp
+++ b/include/rive/animation/state_machine_event.hpp
@@ -1,9 +1,17 @@
 #ifndef _RIVE_STATE_MACHINE_EVENT_HPP_
 #define _RIVE_STATE_MACHINE_EVENT_HPP_
 #include "rive/generated/animation/state_machine_event_base.hpp"
-#include <stdio.h>
+
 namespace rive {
+    class StateMachineEventImporter;
+    class EventInputChange;
     class StateMachineEvent : public StateMachineEventBase {
+        friend class StateMachineEventImporter;
+
+    private:
+        std::vector<EventInputChange*> m_InputChanges;
+        void addInputChange(EventInputChange* inputChange);
+
     public:
         StatusCode import(ImportStack& importStack) override;
     };
diff --git a/include/rive/importers/state_machine_event_importer.hpp b/include/rive/importers/state_machine_event_importer.hpp
new file mode 100644
index 0000000..64ac249
--- /dev/null
+++ b/include/rive/importers/state_machine_event_importer.hpp
@@ -0,0 +1,21 @@
+#ifndef _RIVE_STATE_MACHINE_EVENT_IMPORTER_HPP_
+#define _RIVE_STATE_MACHINE_EVENT_IMPORTER_HPP_
+
+#include "rive/importers/import_stack.hpp"
+
+namespace rive {
+    class StateMachineEvent;
+    class StateMachine;
+    class EventInputChange;
+    class StateMachineEventImporter : public ImportStackObject {
+    private:
+        StateMachineEvent* m_StateMachineEvent;
+
+    public:
+        StateMachineEventImporter(StateMachineEvent* event);
+        const StateMachineEvent* stateMachineEvent() const { return m_StateMachineEvent; }
+        void addInputChange(EventInputChange* change);
+        StatusCode resolve() override;
+    };
+} // namespace rive
+#endif
diff --git a/src/animation/event_input_change.cpp b/src/animation/event_input_change.cpp
new file mode 100644
index 0000000..d319855
--- /dev/null
+++ b/src/animation/event_input_change.cpp
@@ -0,0 +1,17 @@
+#include "rive/animation/state_machine_event.hpp"
+#include "rive/importers/import_stack.hpp"
+#include "rive/importers/state_machine_event_importer.hpp"
+#include "rive/animation/event_input_change.hpp"
+#include "rive/generated/animation/state_machine_base.hpp"
+
+using namespace rive;
+
+StatusCode EventInputChange::import(ImportStack& importStack) {
+    auto stateMachineEventImporter =
+        importStack.latest<StateMachineEventImporter>(StateMachineEventBase::typeKey);
+    if (stateMachineEventImporter == nullptr) {
+        return StatusCode::MissingObject;
+    }
+    stateMachineEventImporter->addInputChange(this);
+    return Super::import(importStack);
+}
diff --git a/src/animation/state_machine_event.cpp b/src/animation/state_machine_event.cpp
index d14c0ab..5eadc0f 100644
--- a/src/animation/state_machine_event.cpp
+++ b/src/animation/state_machine_event.cpp
@@ -5,6 +5,10 @@
 
 using namespace rive;
 
+void StateMachineEvent::addInputChange(EventInputChange* inputChange) {
+    m_InputChanges.push_back(inputChange);
+}
+
 StatusCode StateMachineEvent::import(ImportStack& importStack) {
     auto stateMachineImporter = importStack.latest<StateMachineImporter>(StateMachineBase::typeKey);
     if (stateMachineImporter == nullptr) {
diff --git a/src/file.cpp b/src/file.cpp
index a08c5d9..6a17dbb 100644
--- a/src/file.cpp
+++ b/src/file.cpp
@@ -14,6 +14,7 @@
 #include "rive/importers/keyed_property_importer.hpp"
 #include "rive/importers/linear_animation_importer.hpp"
 #include "rive/importers/state_machine_importer.hpp"
+#include "rive/importers/state_machine_event_importer.hpp"
 #include "rive/importers/state_machine_layer_importer.hpp"
 #include "rive/importers/layer_state_importer.hpp"
 #include "rive/importers/state_transition_importer.hpp"
@@ -221,6 +222,9 @@
                 stackObject = new StateTransitionImporter(object->as<StateTransition>());
                 stackType = StateTransition::typeKey;
                 break;
+            case StateMachineEvent::typeKey:
+                stackObject = new StateMachineEventImporter(object->as<StateMachineEvent>());
+                break;
             case ImageAsset::typeKey:
                 stackObject = new FileAssetImporter(object->as<FileAsset>(), m_AssetResolver);
                 stackType = FileAsset::typeKey;
diff --git a/src/importers/state_machine_event_importer.cpp b/src/importers/state_machine_event_importer.cpp
new file mode 100644
index 0000000..9d8fd3c
--- /dev/null
+++ b/src/importers/state_machine_event_importer.cpp
@@ -0,0 +1,13 @@
+#include "rive/importers/state_machine_event_importer.hpp"
+#include "rive/animation/state_machine_event.hpp"
+
+using namespace rive;
+
+StateMachineEventImporter::StateMachineEventImporter(StateMachineEvent* event) :
+    m_StateMachineEvent(event) {}
+
+void StateMachineEventImporter::addInputChange(EventInputChange* change) {
+    m_StateMachineEvent->addInputChange(change);
+}
+
+StatusCode StateMachineEventImporter::resolve() { return StatusCode::Ok; }
\ No newline at end of file
