diff --git a/src/SharpCompress/Compressors/ZStandard/Unsafe/ZSTD_ResetDirective.cs b/src/SharpCompress/Compressors/ZStandard/Unsafe/ZSTD_ResetDirective.cs
new file mode 100644
index 00000000..df0bd035
--- /dev/null
+++ b/src/SharpCompress/Compressors/ZStandard/Unsafe/ZSTD_ResetDirective.cs
@@ -0,0 +1,8 @@
+namespace SharpCompress.Compressors.ZStandard.Unsafe;
+
+public enum ZSTD_ResetDirective
+{
+ ZSTD_reset_session_only = 1,
+ ZSTD_reset_parameters = 2,
+ ZSTD_reset_session_and_parameters = 3,
+}
diff --git a/src/SharpCompress/Compressors/ZStandard/Unsafe/ZSTD_dictContentType_e.cs b/src/SharpCompress/Compressors/ZStandard/Unsafe/ZSTD_dictContentType_e.cs
new file mode 100644
index 00000000..18e7172f
--- /dev/null
+++ b/src/SharpCompress/Compressors/ZStandard/Unsafe/ZSTD_dictContentType_e.cs
@@ -0,0 +1,13 @@
+namespace SharpCompress.Compressors.ZStandard.Unsafe;
+
+public enum ZSTD_dictContentType_e
+{
+ /// dictionary is "full" when starting with ZSTD_MAGIC_DICTIONARY, otherwise it is "rawContent"
+ ZSTD_dct_auto = 0,
+
+ /// ensures dictionary is always loaded as rawContent, even if it starts with ZSTD_MAGIC_DICTIONARY
+ ZSTD_dct_rawContent = 1,
+
+ /// refuses to load a dictionary if it does not respect Zstandard's specification
+ ZSTD_dct_fullDict = 2,
+}
diff --git a/src/SharpCompress/Compressors/ZStandard/Unsafe/ZSTD_dictLoadMethod_e.cs b/src/SharpCompress/Compressors/ZStandard/Unsafe/ZSTD_dictLoadMethod_e.cs
new file mode 100644
index 00000000..5d1ee309
--- /dev/null
+++ b/src/SharpCompress/Compressors/ZStandard/Unsafe/ZSTD_dictLoadMethod_e.cs
@@ -0,0 +1,10 @@
+namespace SharpCompress.Compressors.ZStandard.Unsafe;
+
+public enum ZSTD_dictLoadMethod_e
+{
+ /// Copy dictionary content internally
+ ZSTD_dlm_byCopy = 0,
+
+ /// Reference dictionary content -- the dictionary buffer must outlive its users
+ ZSTD_dlm_byRef = 1,
+}
diff --git a/src/SharpCompress/Compressors/ZStandard/Unsafe/ZSTD_frameHeader.cs b/src/SharpCompress/Compressors/ZStandard/Unsafe/ZSTD_frameHeader.cs
new file mode 100644
index 00000000..3caa2787
--- /dev/null
+++ b/src/SharpCompress/Compressors/ZStandard/Unsafe/ZSTD_frameHeader.cs
@@ -0,0 +1,21 @@
+namespace SharpCompress.Compressors.ZStandard.Unsafe;
+
+public struct ZSTD_frameHeader
+{
+ /// if == ZSTD_CONTENTSIZE_UNKNOWN, it means this field is not available. 0 means "empty"
+ public ulong frameContentSize;
+
+ /// can be very large, up to frameContentSize
+ public ulong windowSize;
+ public uint blockSizeMax;
+
+ /// if == ZSTD_skippableFrame, frameContentSize is the size of skippable content
+ public ZSTD_frameType_e frameType;
+ public uint headerSize;
+
+ /// for ZSTD_skippableFrame, contains the skippable magic variant [0-15]
+ public uint dictID;
+ public uint checksumFlag;
+ public uint _reserved1;
+ public uint _reserved2;
+}
diff --git a/src/SharpCompress/Compressors/ZStandard/Unsafe/ZSTD_frameType_e.cs b/src/SharpCompress/Compressors/ZStandard/Unsafe/ZSTD_frameType_e.cs
new file mode 100644
index 00000000..a399748f
--- /dev/null
+++ b/src/SharpCompress/Compressors/ZStandard/Unsafe/ZSTD_frameType_e.cs
@@ -0,0 +1,7 @@
+namespace SharpCompress.Compressors.ZStandard.Unsafe;
+
+public enum ZSTD_frameType_e
+{
+ ZSTD_frame,
+ ZSTD_skippableFrame,
+}