diff --git a/addons/godot_state_charts/csharp/NodeWrapper.cs b/addons/godot_state_charts/csharp/NodeWrapper.cs
index d7ebd5fe..ef9b4f8a 100644
--- a/addons/godot_state_charts/csharp/NodeWrapper.cs
+++ b/addons/godot_state_charts/csharp/NodeWrapper.cs
@@ -11,7 +11,7 @@ namespace GodotStateCharts
///
/// The wrapped node.
///
- protected readonly Node Wrapped;
+ public readonly Node Wrapped;
protected NodeWrapper(Node wrapped)
{
diff --git a/addons/godot_state_charts/csharp/ResourceWrapper.cs b/addons/godot_state_charts/csharp/ResourceWrapper.cs
new file mode 100644
index 00000000..60ff238f
--- /dev/null
+++ b/addons/godot_state_charts/csharp/ResourceWrapper.cs
@@ -0,0 +1,39 @@
+// ReSharper disable once CheckNamespace
+namespace GodotStateCharts
+{
+ using Godot;
+
+ ///
+ /// Base class for all wrapper classes for Godot Resource types. Provides common functionality. Not to be used directly.
+ ///
+ public abstract class ResourceWrapper
+ {
+ ///
+ /// The wrapped resource. Useful for you need to access the underlying resource directly,
+ /// e.g. for serialization.
+ ///
+ public readonly Resource Wrapped;
+
+ protected ResourceWrapper(Resource wrapped)
+ {
+ Wrapped = wrapped;
+ }
+
+ ///
+ /// Allows to call methods on the wrapped resource deferred.
+ ///
+ public Variant CallDeferred(string method, params Variant[] args)
+ {
+ return Wrapped.CallDeferred(method, args);
+ }
+
+ ///
+ /// Allows to call methods on the wrapped resource.
+ ///
+ public Variant Call(string method, params Variant[] args)
+ {
+ return Wrapped.Call(method, args);
+ }
+ }
+}
+
diff --git a/addons/godot_state_charts/csharp/ResourceWrapper.cs.uid b/addons/godot_state_charts/csharp/ResourceWrapper.cs.uid
new file mode 100644
index 00000000..8aea204a
--- /dev/null
+++ b/addons/godot_state_charts/csharp/ResourceWrapper.cs.uid
@@ -0,0 +1 @@
+uid://j8ro24kpswjd
diff --git a/addons/godot_state_charts/csharp/SerializedStateChart.cs b/addons/godot_state_charts/csharp/SerializedStateChart.cs
new file mode 100644
index 00000000..59d2adda
--- /dev/null
+++ b/addons/godot_state_charts/csharp/SerializedStateChart.cs
@@ -0,0 +1,89 @@
+// ReSharper disable once CheckNamespace
+namespace GodotStateCharts
+{
+ using System;
+ using Godot;
+
+ ///
+ /// C# wrapper for the SerializedStateChart Godot resource.
+ ///
+ public class SerializedStateChart : ResourceWrapper
+ {
+ private SerializedStateChart(Resource wrapped) : base(wrapped) { }
+
+ public static SerializedStateChart Of(Resource resource)
+ {
+ if (resource.GetScript().As