diff --git a/SessionZero.SzfLib/File/ISzfFile.cs b/SessionZero.SzfLib/File/ISzfFile.cs
new file mode 100644
index 0000000..41cb952
--- /dev/null
+++ b/SessionZero.SzfLib/File/ISzfFile.cs
@@ -0,0 +1,6 @@
+namespace SessionZero.SzfLib.File;
+
+public interface ISzfFile
+{
+ public string? Content { get; set; }
+}
\ No newline at end of file
diff --git a/SessionZero.SzfLib/File/SzfFile.cs b/SessionZero.SzfLib/File/SzfFile.cs
new file mode 100644
index 0000000..7cc6a3b
--- /dev/null
+++ b/SessionZero.SzfLib/File/SzfFile.cs
@@ -0,0 +1,8 @@
+namespace SessionZero.SzfLib.File;
+
+public class SzfFile : ISzfFile
+{
+ public string? SzfType { get; set; }
+ public string? SchemaVersion { get; set; }
+ public string? Content { get; set; }
+}
\ No newline at end of file
diff --git a/SessionZero.SzfLib/Generator/ISzfGenerator.cs b/SessionZero.SzfLib/Generator/ISzfGenerator.cs
new file mode 100644
index 0000000..44c5576
--- /dev/null
+++ b/SessionZero.SzfLib/Generator/ISzfGenerator.cs
@@ -0,0 +1,6 @@
+namespace SessionZero.SzfLib.Generator;
+
+public interface ISzfGenerator
+{
+
+}
\ No newline at end of file
diff --git a/SessionZero.SzfLib/Generator/SzfGenerator.cs b/SessionZero.SzfLib/Generator/SzfGenerator.cs
new file mode 100644
index 0000000..eb0c723
--- /dev/null
+++ b/SessionZero.SzfLib/Generator/SzfGenerator.cs
@@ -0,0 +1,6 @@
+namespace SessionZero.SzfLib.Generator;
+
+public class SzfGenerator : ISzfGenerator
+{
+
+}
\ No newline at end of file
diff --git a/SessionZero.SzfLib/Objects/ISzfCharacter.cs b/SessionZero.SzfLib/Objects/ISzfCharacter.cs
new file mode 100644
index 0000000..4be53fe
--- /dev/null
+++ b/SessionZero.SzfLib/Objects/ISzfCharacter.cs
@@ -0,0 +1,6 @@
+namespace SessionZero.SzfLib.Objects;
+
+public interface ISzfCharacter
+{
+
+}
\ No newline at end of file
diff --git a/SessionZero.SzfLib/Objects/ISzfCharacterTemplate.cs b/SessionZero.SzfLib/Objects/ISzfCharacterTemplate.cs
new file mode 100644
index 0000000..d48b69d
--- /dev/null
+++ b/SessionZero.SzfLib/Objects/ISzfCharacterTemplate.cs
@@ -0,0 +1,6 @@
+namespace SessionZero.SzfLib.Objects;
+
+public interface ISzfCharacterTemplate
+{
+
+}
\ No newline at end of file
diff --git a/SessionZero.SzfLib/Objects/ISzfDataset.cs b/SessionZero.SzfLib/Objects/ISzfDataset.cs
new file mode 100644
index 0000000..64f4758
--- /dev/null
+++ b/SessionZero.SzfLib/Objects/ISzfDataset.cs
@@ -0,0 +1,6 @@
+namespace SessionZero.SzfLib.Objects;
+
+public interface ISzfDataset
+{
+
+}
\ No newline at end of file
diff --git a/SessionZero.SzfLib/Objects/ISzfObject.cs b/SessionZero.SzfLib/Objects/ISzfObject.cs
index 8ed9db5..e4fbf4a 100644
--- a/SessionZero.SzfLib/Objects/ISzfObject.cs
+++ b/SessionZero.SzfLib/Objects/ISzfObject.cs
@@ -2,5 +2,5 @@ namespace SessionZero.SzfLib.Objects;
public interface ISzfObject
{
-
+ public string SzfType { get; set; }
}
\ No newline at end of file
diff --git a/SessionZero.SzfLib/Objects/SzfCharacter.cs b/SessionZero.SzfLib/Objects/SzfCharacter.cs
new file mode 100644
index 0000000..3203507
--- /dev/null
+++ b/SessionZero.SzfLib/Objects/SzfCharacter.cs
@@ -0,0 +1,7 @@
+namespace SessionZero.SzfLib.Objects;
+
+[SzfObject("character")]
+public class SzfCharacter : SzfObject, ISzfCharacter
+{
+ public override string SzfType { get; set; } = "character";
+}
\ No newline at end of file
diff --git a/SessionZero.SzfLib/Objects/SzfCharacterTemplate.cs b/SessionZero.SzfLib/Objects/SzfCharacterTemplate.cs
new file mode 100644
index 0000000..2f14878
--- /dev/null
+++ b/SessionZero.SzfLib/Objects/SzfCharacterTemplate.cs
@@ -0,0 +1,7 @@
+namespace SessionZero.SzfLib.Objects;
+
+[SzfObject("character_template")]
+public class SzfCharacterTemplate : SzfObject, ISzfCharacterTemplate
+{
+ public override string SzfType { get; set; } = "character_template";
+}
\ No newline at end of file
diff --git a/SessionZero.SzfLib/Objects/SzfDataset.cs b/SessionZero.SzfLib/Objects/SzfDataset.cs
new file mode 100644
index 0000000..414c9a5
--- /dev/null
+++ b/SessionZero.SzfLib/Objects/SzfDataset.cs
@@ -0,0 +1,7 @@
+namespace SessionZero.SzfLib.Objects;
+
+[SzfObject("dataset")]
+public class SzfDataset : SzfObject, ISzfDataset
+{
+ public override string SzfType { get; set; } = "dataset";
+}
\ No newline at end of file
diff --git a/SessionZero.SzfLib/Objects/SzfObject.cs b/SessionZero.SzfLib/Objects/SzfObject.cs
index 0e0071d..f7e8231 100644
--- a/SessionZero.SzfLib/Objects/SzfObject.cs
+++ b/SessionZero.SzfLib/Objects/SzfObject.cs
@@ -1,6 +1,6 @@
namespace SessionZero.SzfLib.Objects;
-public class SzfObject : ISzfObject
+public abstract class SzfObject : ISzfObject
{
-
+ public abstract string SzfType { get; set; }
}
\ No newline at end of file
diff --git a/SessionZero.SzfLib/Parser/ISzfParser.cs b/SessionZero.SzfLib/Parser/ISzfParser.cs
new file mode 100644
index 0000000..f737f15
--- /dev/null
+++ b/SessionZero.SzfLib/Parser/ISzfParser.cs
@@ -0,0 +1,10 @@
+using SessionZero.SzfLib.File;
+using SessionZero.SzfLib.Objects;
+
+namespace SessionZero.SzfLib.Parser;
+
+public interface ISzfParser
+{
+ public ISzfFile Parse(string szfContent);
+ public ISzfObject Parse(ISzfFile file);
+}
\ No newline at end of file
diff --git a/SessionZero.SzfLib/Parser/SzfParser.cs b/SessionZero.SzfLib/Parser/SzfParser.cs
new file mode 100644
index 0000000..a0bf989
--- /dev/null
+++ b/SessionZero.SzfLib/Parser/SzfParser.cs
@@ -0,0 +1,17 @@
+using SessionZero.SzfLib.File;
+using SessionZero.SzfLib.Objects;
+
+namespace SessionZero.SzfLib.Parser;
+
+public class SzfParser : ISzfParser
+{
+ public ISzfFile Parse(string szfContent)
+ {
+ throw new NotImplementedException();
+ }
+
+ public ISzfObject Parse(ISzfFile file)
+ {
+ throw new NotImplementedException();
+ }
+}
\ No newline at end of file
diff --git a/SessionZero.SzfLib/SessionZero.SzfLib.csproj b/SessionZero.SzfLib/SessionZero.SzfLib.csproj
index 059b212..17b910f 100644
--- a/SessionZero.SzfLib/SessionZero.SzfLib.csproj
+++ b/SessionZero.SzfLib/SessionZero.SzfLib.csproj
@@ -6,10 +6,4 @@
enable
-
-
-
-
-
-
diff --git a/SessionZero.SzfLib/SzfObjectAttribute.cs b/SessionZero.SzfLib/SzfObjectAttribute.cs
index 0569238..f949394 100644
--- a/SessionZero.SzfLib/SzfObjectAttribute.cs
+++ b/SessionZero.SzfLib/SzfObjectAttribute.cs
@@ -7,7 +7,7 @@ public class SzfObjectAttribute : Attribute
/// The unique identifier for the SzfObject type (e.g., "dataset", "character_template", "character").
/// This is used in the `!tpye` header of the SZF file to identify the type of SzfObject.
///
- public required string TypeIdentifier { get; set; }
+ public string TypeIdentifier { get; set; }
public SzfObjectAttribute(string typeIdentifier)
{